/* ProtoTech Machining V6 — 金属高端黑 */
:root {
  --bg: #0a0a0a; --bg-card: #141414; --bg-input: #1a1a1a;
  --text: #e0e0e0; --text-dim: #888; --text-bright: #fff;
  --gold: #d4af37; --gold-dim: #a08020; --silver: #c0c0c0;
  --primary: #d4af37; --danger: #e74c3c; --success: #27ae60;
  --border: #2a2a2a; --radius: 12px; --radius-sm: 8px;
  --font: -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
}

/* 浅色主题（白天模式） */
:root[data-theme="light"] {
  --bg: #f5f5f5; --bg-card: #ffffff; --bg-input: #f0f0f0;
  --text: #333333; --text-dim: #888888; --text-bright: #111111;
  --gold: #b8960f; --gold-dim: #a08020; --silver: #666666;
  --primary: #b8960f; --danger: #e74c3c; --success: #27ae60;
  --border: #e0e0e0;
}

/* 浅色主题下的关键硬编码背景覆盖 */
:root[data-theme="light"] .app-header { background:rgba(255,255,255,0.95); }
:root[data-theme="light"] .home-banner { background:linear-gradient(135deg, #ffffff 0%, #f0f0f0 100%); }
:root[data-theme="light"] .pt-login-hero-fallback { background:linear-gradient(135deg, #fff8e0, #ffffff); }
:root[data-theme="light"] .stmt-form-actions { background:rgba(255,255,255,0.95); }
:root[data-theme="light"] .tab-bar { background:rgba(255,255,255,0.95); }
:root[data-theme="light"] #page-statement-form,
:root[data-theme="light"] #page-rfq-quote-upload { background:#f2f3f5; }
:root[data-theme="light"] #page-pt-login,
:root[data-theme="light"] #page-login { background:#edeff2; }
:root[data-theme="light"] .pt-login-vignette { background:radial-gradient(ellipse at center, transparent 40%, rgba(0,0,0,0.06) 100%); }
:root[data-theme="light"] .pt-login-bg-glow { background:radial-gradient(ellipse at 50% 20%, rgba(212,175,55,0.16) 0%, rgba(212,175,55,0.05) 18%, transparent 45%), radial-gradient(ellipse at 50% 100%, rgba(212,175,55,0.08) 0%, transparent 35%); }
:root[data-theme="light"] .pt-login-bg-grid { background-image:linear-gradient(rgba(180,150,15,0.08) 1px, transparent 1px), linear-gradient(90deg, rgba(180,150,15,0.08) 1px, transparent 1px); }
:root[data-theme="light"] .pt-login-glass-card { background:rgba(255,255,255,0.92); box-shadow:0 16px 48px rgba(0,0,0,0.12); }
:root[data-theme="light"] .pt-login-title { background:linear-gradient(180deg, #333 0%, #b8960f 45%, #8a6d10 100%); -webkit-background-clip:text; background-clip:text; }
:root[data-theme="light"] .pt-login-hero-logo-wrap { box-shadow:0 0 0 2px rgba(180,150,15,0.7), 0 0 30px rgba(212,175,55,0.35), 0 12px 32px rgba(0,0,0,0.25); }
:root[data-theme="light"] .pt-login-card-shine { background:linear-gradient(90deg, transparent, rgba(0,0,0,0.04), transparent); }
:root[data-theme="light"] .pt-login-particles .pt-particle { background:radial-gradient(circle at 30% 30%, rgba(255,255,255,0.95), rgba(180,150,15,0.55)); box-shadow:0 0 8px rgba(180,150,15,0.35); }

/* 主题切换按钮 */
.theme-toggle {
  width:36px; height:36px; border-radius:50%;
  background:var(--bg-card); border:1px solid var(--border);
  display:flex; align-items:center; justify-content:center;
  font-size:18px; cursor:pointer; flex-shrink:0;
  transition:all .2s;
}
.theme-toggle:hover { border-color:var(--gold); }
.theme-toggle:active { transform:scale(0.9); }

* { box-sizing:border-box; margin:0; padding:0; }
body { background:var(--bg); color:var(--text); font-family:var(--font); font-size:15px; line-height:1.5; -webkit-font-smoothing:antialiased; }
#app { max-width:480px; margin:0 auto; min-height:100vh; padding-bottom:72px; position:relative; background:var(--bg); }

/* Header */
.app-header { position:sticky; top:0; z-index:100; background:rgba(10,10,10,0.95); backdrop-filter:blur(10px); display:flex; align-items:center; padding:12px 16px; border-bottom:1px solid var(--border); height:50px; }
.header-left { width:48px; }
.header-right { width:auto; display:flex; align-items:center; gap:8px; }
.header-center { flex:1; text-align:center; }
.header-title { font-size:16px; font-weight:700; color:var(--text-bright); letter-spacing:0.5px; }
.back-btn { color:var(--gold); cursor:pointer; font-size:18px; }
.admin-btn { color:var(--gold); cursor:pointer; font-size:13px; padding:4px 10px; border:1px solid var(--gold); border-radius:4px; }

/* 登录页顶栏主题按钮（小尺寸） */
.pt-login-topbar .theme-toggle { width:30px; height:30px; font-size:15px; }

/* Login */
.login-container { display:flex; flex-direction:column; align-items:center; justify-content:center; min-height:100vh; padding:40px 20px; }
.login-logo { text-align:center; margin-bottom:32px; }
.logo-text { font-size:24px; font-weight:800; color:var(--gold); letter-spacing:1px; }
.logo-slogan { font-size:11px; color:var(--text-dim); margin-top:6px; letter-spacing:2px; text-transform:uppercase; }
.login-card { width:100%; padding:24px 20px; }
.login-card h3 { color:var(--text-bright); margin-bottom:20px; font-size:18px; }
.login-hint { text-align:center; color:var(--text-dim); font-size:12px; margin-top:12px; }
.login-footer { color:var(--text-dim); font-size:11px; margin-top:40px; }

/* PROTOTECH Team 入口链接 */
.pt-entry-link { margin-top:16px; text-align:center; padding:14px 12px; border:1px solid rgba(212,175,55,0.35); border-radius:10px; cursor:pointer; -webkit-tap-highlight-color:rgba(212,175,55,0.2); transition:background .2s; }
.pt-entry-link:active { background:rgba(212,175,55,0.12); }
.pt-entry-link:hover { background:rgba(212,175,55,0.08); }

/* ===== PROTOTECH Team 登录页 — 沉浸式电影感 ===== */
#page-pt-login { position:relative; min-height:100vh; overflow:hidden; background:#050505; }
.pt-login-cinematic-bg { position:fixed; inset:0; z-index:0; pointer-events:none; }
.pt-login-bg-glow { position:absolute; width:140%; height:140%; top:-20%; left:-20%; background:radial-gradient(ellipse at 50% 20%, rgba(212,175,55,0.15) 0%, rgba(212,175,55,0.05) 18%, transparent 45%), radial-gradient(ellipse at 50% 100%, rgba(212,175,55,0.08) 0%, transparent 35%); animation:bgGlowPulse 8s ease-in-out infinite; }
.pt-login-bg-grid { position:absolute; inset:0; background-image:linear-gradient(rgba(212,175,55,0.04) 1px, transparent 1px), linear-gradient(90deg, rgba(212,175,55,0.04) 1px, transparent 1px); background-size:60px 60px; mask-image:linear-gradient(180deg, transparent 0%, rgba(0,0,0,0.6) 25%, rgba(0,0,0,0.2) 70%, transparent 100%); -webkit-mask-image:linear-gradient(180deg, transparent 0%, rgba(0,0,0,0.6) 25%, rgba(0,0,0,0.2) 70%, transparent 100%); animation:bgGridMove 20s linear infinite; }
.pt-login-particles { position:absolute; inset:0; overflow:hidden; }
.pt-particle { position:absolute; border-radius:50%; background:radial-gradient(circle at 30% 30%, rgba(255,255,255,0.9), rgba(212,175,55,0.6)); box-shadow:0 0 8px rgba(212,175,55,0.4); animation:particleFloat 8s ease-in-out infinite, particlePulse 4s ease-in-out infinite; pointer-events:none; }
.pt-login-vignette { position:absolute; inset:0; background:radial-gradient(ellipse at center, transparent 30%, rgba(0,0,0,0.7) 100%); }

.pt-login-cinematic { position:relative; z-index:1; display:flex; flex-direction:column; align-items:center; justify-content:flex-start; min-height:100vh; padding:env(safe-area-inset-top) 20px 40px; }

/* 供应商登录页共用沉浸式风格 */
#page-login { position:relative; min-height:100vh; overflow:hidden; background:#050505; }
.supplier-login-cinematic { position:relative; z-index:1; display:flex; flex-direction:column; align-items:center; justify-content:flex-start; min-height:100vh; padding:env(safe-area-inset-top) 20px 40px; }
.pt-login-internal-link { position:relative; z-index:10; display:inline-block; font-size:12px; color:var(--gold); text-decoration:none; font-weight:700; padding:5px 12px; border:1px solid rgba(212,175,55,0.3); border-radius:20px; background:rgba(212,175,55,0.08); transition:background .2s, transform .2s; letter-spacing:0.3px; cursor:pointer; -webkit-tap-highlight-color:rgba(212,175,55,0.3); touch-action:manipulation; user-select:none; -webkit-user-select:none; }
.pt-login-internal-link:hover { background:rgba(212,175,55,0.15); }
.pt-login-internal-link:active { transform:scale(0.96); }

/* 顶部栏 */
.pt-login-topbar { width:100%; max-width:480px; display:flex; align-items:center; justify-content:space-between; padding:14px 4px 10px; animation:ptFadeDown 0.8s ease-out both; }
.pt-login-back { position:relative; z-index:10; display:inline-block; font-size:13px; color:var(--text-dim); text-decoration:none; transition:color .2s, transform .2s; cursor:pointer; -webkit-tap-highlight-color:rgba(212,175,55,0.2); touch-action:manipulation; user-select:none; -webkit-user-select:none; }
.pt-login-back:hover { color:var(--gold); }
.pt-login-back:active { transform:translateX(-2px); }
.pt-login-secure-badge { font-size:11px; font-weight:700; color:var(--gold); background:rgba(212,175,55,0.1); border:1px solid rgba(212,175,55,0.25); padding:4px 10px; border-radius:20px; letter-spacing:0.5px; }

/* 品牌英雄区 */
.pt-login-brand-hero { position:relative; width:180px; height:180px; display:flex; align-items:center; justify-content:center; margin-top:18px; animation:ptFadeScale 1s ease-out 0.1s both; }
.pt-login-orbit { position:absolute; inset:0; display:flex; align-items:center; justify-content:center; }
.pt-login-orbit-ring { position:absolute; border:1px solid rgba(212,175,55,0.12); border-radius:50%; }
.pt-login-orbit-ring:nth-child(1) { width:100%; height:100%; animation:orbitSpin 12s linear infinite; border-top-color:rgba(212,175,55,0.5); }
.pt-login-orbit-ring:nth-child(2) { width:78%; height:78%; animation:orbitSpin 16s linear infinite reverse; border-bottom-color:rgba(212,175,55,0.35); }
.pt-login-orbit-ring:nth-child(3) { width:56%; height:56%; animation:orbitSpin 10s linear infinite; border-left-color:rgba(212,175,55,0.25); }

.pt-login-hero-logo-wrap { width:110px; height:110px; border-radius:28px; position:relative; overflow:hidden; cursor:pointer; -webkit-tap-highlight-color:rgba(212,175,55,0.2); box-shadow:0 0 0 2px rgba(212,175,55,0.7), 0 0 40px rgba(212,175,55,0.45), 0 12px 40px rgba(0,0,0,0.5), inset 0 0 30px rgba(212,175,55,0.1); animation:logoFloat 4s ease-in-out infinite, logoFadeIn 1s ease-out; transition:transform .2s, box-shadow .2s; background:#0a0a0a; }
.pt-login-hero-logo-wrap:hover { transform:scale(1.04); box-shadow:0 0 0 2px rgba(212,175,55,0.9), 0 0 60px rgba(212,175,55,0.6), 0 16px 48px rgba(0,0,0,0.5), inset 0 0 30px rgba(212,175,55,0.15); }
.pt-login-hero-logo-wrap:active { transform:scale(0.97); }
.pt-login-hero-logo { width:100%; height:100%; object-fit:cover; display:block; border-radius:28px; }
.pt-login-hero-shimmer { position:absolute; inset:0; z-index:2; background:linear-gradient(120deg, transparent 30%, rgba(255,255,255,0.5) 50%, transparent 70%); background-size:200% 100%; animation:logoShimmer 3s infinite; pointer-events:none; }
.pt-login-hero-fallback { position:absolute; inset:0; display:none; align-items:center; justify-content:center; font-size:42px; font-weight:800; color:var(--gold); letter-spacing:1px; background:linear-gradient(135deg, #1a1200, #0a0a0a); }
.pt-login-hero-logo-wrap.fallback-logo .pt-login-hero-fallback { display:flex; }
.pt-login-hero-logo-wrap.fallback-logo img { display:none; }

/* 大标题 */
.pt-login-title-block { text-align:center; margin:22px 0 26px; animation:ptFadeUp 0.9s ease-out 0.25s both; }
.pt-login-badge-wrap { display:inline-block; position:relative; margin-bottom:14px; }
.pt-login-badge-wrap::before { content:''; position:absolute; inset:-2px; background:linear-gradient(90deg, transparent, var(--gold), transparent); border-radius:6px; opacity:0.4; animation:ptBadgeGlow 3s ease-in-out infinite; }
.pt-login-badge { position:relative; display:inline-block; font-size:12px; font-weight:900; color:#0a0a0a; background:linear-gradient(135deg, #d4af37, #f4d062, #d4af37); padding:5px 18px; border-radius:4px; letter-spacing:4px; }
.pt-login-title { font-size:32px; font-weight:900; letter-spacing:4px; color:transparent; background:linear-gradient(180deg, #fff 0%, #f4d062 40%, #d4af37 70%, #a08020 100%); -webkit-background-clip:text; background-clip:text; text-shadow:0 2px 30px rgba(212,175,55,0.2); margin:0 0 10px; position:relative; }
.pt-login-title-line { width:80px; height:2px; margin:0 auto 12px; background:linear-gradient(90deg, transparent, var(--gold), transparent); border-radius:2px; animation:ptLineExpand 1.2s ease-out 0.6s both; }
.pt-login-slogan { font-size:11px; color:var(--text-dim); letter-spacing:3px; text-transform:uppercase; }

/* 玻璃拟态登录卡片 */
.pt-login-glass-card { position:relative; width:100%; max-width:420px; padding:30px 24px; border-radius:var(--radius); border:1px solid rgba(212,175,55,0.25); background:linear-gradient(180deg, rgba(28,28,28,0.55), rgba(14,14,14,0.65)); backdrop-filter:blur(20px); -webkit-backdrop-filter:blur(20px); box-shadow:0 20px 60px rgba(0,0,0,0.5), 0 0 0 1px rgba(255,255,255,0.04) inset, 0 0 40px rgba(212,175,55,0.08); overflow:hidden; animation:ptFadeUp 0.9s ease-out 0.45s both; }
.pt-login-card-shine { position:absolute; top:0; left:-100%; width:50%; height:100%; background:linear-gradient(90deg, transparent, rgba(255,255,255,0.08), transparent); transform:skewX(-20deg); animation:cardShine 5s infinite; pointer-events:none; }
.pt-login-card-header { text-align:center; margin-bottom:24px; position:relative; z-index:1; }
.pt-login-card-icon { font-size:38px; display:block; margin-bottom:8px; animation:ptIconPulse 2s ease-in-out infinite; }
.pt-login-card-header h3 { color:var(--gold); font-size:19px; margin:0 0 6px; letter-spacing:1px; }
.pt-login-card-header p { font-size:12px; color:var(--text-dim); margin:0; }
.pt-login-btn { background:linear-gradient(135deg, #e6c34a, #d4af37, #b8941d) !important; color:#0a0a0a !important; font-weight:800; letter-spacing:1px; margin-top:8px; box-shadow:0 4px 18px rgba(212,175,55,0.25); transition:transform .2s, box-shadow .2s; }
.pt-login-btn:active { transform:translateY(1px); box-shadow:0 2px 10px rgba(212,175,55,0.2); }
.pt-login-warning { margin-top:14px; padding:12px; background:rgba(212,175,55,0.08); border:1px solid rgba(212,175,55,0.22); border-radius:8px; font-size:12px; color:var(--gold); text-align:center; }

.pt-login-footer { color:var(--text-dim); font-size:10px; margin-top:auto; padding-top:36px; letter-spacing:1px; text-align:center; opacity:0.7; animation:ptFadeIn 1s ease-out 0.7s both; }

/* PT 登录页动画关键帧 */
@keyframes ptFadeIn { from { opacity:0; } to { opacity:1; } }
@keyframes ptFadeUp { from { opacity:0; transform:translateY(28px); } to { opacity:1; transform:translateY(0); } }
@keyframes ptFadeDown { from { opacity:0; transform:translateY(-12px); } to { opacity:1; transform:translateY(0); } }
@keyframes ptFadeScale { from { opacity:0; transform:scale(0.85); } to { opacity:1; transform:scale(1); } }
@keyframes ptLineExpand { from { width:0; opacity:0; } to { width:80px; opacity:1; } }
@keyframes ptBadgeGlow { 0%,100% { opacity:0.3; } 50% { opacity:0.7; } }
@keyframes ptIconPulse { 0%,100% { transform:scale(1); } 50% { transform:scale(1.08); } }
@keyframes bgGlowPulse { 0%,100% { transform:scale(1); opacity:1; } 50% { transform:scale(1.05); opacity:0.85; } }
@keyframes bgGridMove { 0% { transform:translateY(0); } 100% { transform:translateY(60px); } }
@keyframes particleFloat { 0%,100% { transform:translateY(0) translateX(0); } 25% { transform:translateY(-20px) translateX(8px); } 50% { transform:translateY(-8px) translateX(-6px); } 75% { transform:translateY(-24px) translateX(4px); } }
@keyframes particlePulse { 0%,100% { opacity:0.15; transform:scale(1); } 50% { opacity:0.6; transform:scale(1.2); } }
@keyframes orbitSpin { from { transform:rotate(0deg); } to { transform:rotate(360deg); } }

/* PROTOTECH Team 首页横幅 */
.pt-team-banner { display:flex; align-items:center; gap:10px; padding:10px 16px; background:linear-gradient(90deg, rgba(212,175,55,0.15), rgba(212,175,55,0.05)); border-bottom:1px solid rgba(212,175,55,0.3); font-size:13px; }
.pt-team-badge { display:inline-block; font-size:10px; font-weight:800; color:#0a0a0a; background:linear-gradient(135deg, #d4af37, #f4d062); padding:2px 8px; border-radius:3px; letter-spacing:1px; }
.pt-team-name { color:var(--gold); font-weight:700; }
.pt-team-title { color:var(--text-dim); font-size:12px; flex:1; }
.pt-team-logout { color:#e74c3c; font-size:12px; cursor:pointer; padding:4px 10px; border:1px solid rgba(231,76,60,0.4); border-radius:6px; }

/* ===== PROTOTECH 内部管理首页 ===== */
.pt-home-hero { background:linear-gradient(135deg, #0f0f0f 0%, #1a1200 50%, #0f0f0f 100%); padding:28px 20px 24px; text-align:center; border-bottom:1px solid rgba(212,175,55,0.25); }
.pt-home-badge { display:inline-block; font-size:12px; font-weight:800; color:#0a0a0a; background:linear-gradient(135deg, #d4af37, #f4d062, #d4af37); padding:4px 16px; border-radius:4px; letter-spacing:3px; margin-bottom:12px; }
.pt-home-title { font-size:22px; font-weight:800; color:var(--gold); margin-bottom:6px; letter-spacing:1px; }
.pt-home-subtitle { font-size:13px; color:var(--text-dim); }
#page-pt-home .home-section-title { margin:20px 16px 12px; font-size:14px; font-weight:700; color:var(--text-bright); letter-spacing:1px; }
#page-pt-home .feature-card { margin:10px 16px; }
#page-pt-home .shortcut-row { margin:0 16px 16px; }

/* Card */
.card { background:var(--bg-card); border-radius:var(--radius); padding:20px 16px; margin:12px 16px; border:1px solid var(--border); }
.card-title { font-size:17px; font-weight:700; color:var(--text-bright); margin-bottom:4px; }
.card-subtitle { font-size:12px; color:var(--text-dim); margin-bottom:16px; }

/* Home */
.home-banner { background:linear-gradient(135deg, #1a1a1a 0%, #0d0d0d 100%); padding:24px 20px; text-align:center; border-bottom:1px solid var(--border); }
.banner-logo { font-size:20px; font-weight:800; color:var(--gold); margin-bottom:6px; }
.banner-sub { font-size:13px; color:var(--text-dim); }
.home-progress { padding:16px 20px; }
.progress-header { display:flex; justify-content:space-between; align-items:center; margin-bottom:8px; font-size:13px; }
.progress-percent { color:var(--gold); font-weight:700; }
.progress-bar { height:6px; background:var(--bg-input); border-radius:3px; overflow:hidden; }
.progress-fill { height:100%; background:linear-gradient(90deg, var(--gold), var(--gold-dim)); border-radius:3px; transition:width .4s; width:0; }

.completeness-bar { margin:0 16px 12px; padding:10px 14px; border-radius:var(--radius-sm); font-size:12px; }
.completeness-bar.low { background:rgba(231,76,60,0.15); color:#e74c3c; border:1px solid rgba(231,76,60,0.3); }
.completeness-bar.medium { background:rgba(243,156,18,0.15); color:#f39c12; border:1px solid rgba(243,156,18,0.3); }
.completeness-bar.high { background:rgba(39,174,96,0.15); color:#27ae60; border:1px solid rgba(39,174,96,0.3); }

.home-quick-tools { display:flex; gap:8px; padding:0 16px 16px; overflow-x:auto; }
.quick-tool { flex:0 0 auto; padding:8px 16px; background:var(--bg-card); border:1px solid var(--border); border-radius:20px; font-size:13px; color:var(--text); cursor:pointer; white-space:nowrap; }
.quick-tool:hover { border-color:var(--gold); color:var(--gold); }

.module-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:10px; padding:0 16px 20px; }
.module-card { background:var(--bg-card); border-radius:var(--radius-sm); padding:16px 8px; text-align:center; border:1px solid var(--border); cursor:pointer; transition:border-color .2s; }
.module-card:hover { border-color:var(--gold); }
.module-card.completed { border-color:var(--success); }
.module-icon { font-size:24px; margin-bottom:6px; }
.module-name { font-size:12px; color:var(--text-dim); }

.home-footer { text-align:center; color:var(--text-dim); font-size:11px; padding:20px 0; }

/* Home V2 — 卡片式入口 */
.home-section-title { font-size:14px; color:var(--text-bright); font-weight:700; margin:20px 16px 12px; display:flex; align-items:center; gap:8px; }
.home-section-title::before { content:''; width:3px; height:14px; background:var(--gold); border-radius:2px; }

/* Hero */
.home-hero { text-align:center; padding:28px 20px 16px; position:relative; overflow:hidden; }
.hero-logo-wrap { width:96px; height:96px; margin:0 auto 16px; border-radius:24px; position:relative; overflow:hidden; box-shadow:0 0 40px rgba(212,175,55,0.25), 0 8px 24px rgba(0,0,0,0.4); animation:logoFloat 4s ease-in-out infinite, logoFadeIn 1s ease-out; }
.hero-logo { width:100%; height:100%; object-fit:cover; display:block; border-radius:24px; }
.hero-logo-shimmer { position:absolute; inset:0; z-index:2; background:linear-gradient(120deg, transparent 30%, rgba(255,255,255,0.35) 50%, transparent 70%); background-size:200% 100%; animation:logoShimmer 3s infinite; pointer-events:none; }
.hero-title { font-size:22px; font-weight:800; background:linear-gradient(90deg, #fff, var(--gold), #fff); background-size:200% auto; -webkit-background-clip:text; -webkit-text-fill-color:transparent; background-clip:text; animation:textShine 4s linear infinite; letter-spacing:0.5px; }
.hero-slogan { font-size:10px; color:var(--text-dim); margin-top:6px; letter-spacing:3px; text-transform:uppercase; animation:fadeIn 1.2s ease-out 0.3s both; }

@keyframes logoFloat { 0%,100% { transform:translateY(0); } 50% { transform:translateY(-6px); } }
@keyframes logoFadeIn { from { opacity:0; transform:scale(0.85); } to { opacity:1; transform:scale(1); } }
@keyframes logoShimmer { 0% { background-position:200% 0; } 100% { background-position:-200% 0; } }
@keyframes textShine { to { background-position:200% center; } }

/* Welcome Card */
.welcome-card { background:linear-gradient(145deg, #1a1a1a 0%, #101010 100%); border:1px solid var(--border); border-radius:var(--radius); margin:0 16px 20px; padding:28px 20px; text-align:center; position:relative; overflow:hidden; }
.welcome-card::before { content:''; position:absolute; top:0; left:-100%; width:100%; height:100%; background:linear-gradient(90deg, transparent, rgba(212,175,55,0.08), transparent); animation:cardShine 5s infinite; }
.welcome-icon { font-size:44px; margin-bottom:12px; animation:shakeHands 2.5s ease-in-out infinite; }
.welcome-title { font-size:18px; font-weight:700; color:var(--text-bright); margin-bottom:8px; }
.welcome-title span { color:var(--gold); }
.welcome-desc { font-size:13px; color:var(--text-dim); margin-bottom:20px; }
.btn-partner { width:100%; padding:14px 20px; border:none; border-radius:var(--radius); background:linear-gradient(90deg, var(--gold), var(--gold-dim)); color:#0a0a0a; font-size:16px; font-weight:800; cursor:pointer; position:relative; overflow:hidden; transition:transform .2s, box-shadow .2s; animation:pulseGold 2.5s infinite; }
.btn-partner:hover { transform:translateY(-2px); box-shadow:0 8px 24px rgba(212,175,55,0.35); }
.btn-partner::after { content:''; position:absolute; top:0; left:-100%; width:100%; height:100%; background:linear-gradient(90deg, transparent, rgba(255,255,255,0.4), transparent); animation:btnShine 3s infinite; }

@keyframes cardShine { 0% { left:-100%; } 50%,100% { left:100%; } }
@keyframes shakeHands { 0%,100% { transform:rotate(0); } 10% { transform:rotate(-8deg); } 20% { transform:rotate(6deg); } 30% { transform:rotate(-4deg); } 40% { transform:rotate(0); } }
@keyframes pulseGold { 0%,100% { box-shadow:0 0 0 0 rgba(212,175,55,0.3); } 50% { box-shadow:0 0 0 10px rgba(212,175,55,0); } }
@keyframes btnShine { 0% { left:-100%; } 50%,100% { left:100%; } }

/* Shortcuts */
.shortcut-row { display:flex; justify-content:center; gap:28px; margin:0 16px 24px; }
.shortcut-item { text-align:center; cursor:pointer; transition:transform .2s; }
.shortcut-item:hover { transform:translateY(-4px); }
.shortcut-icon { width:58px; height:58px; border-radius:16px; display:flex; align-items:center; justify-content:center; font-size:20px; font-weight:800; margin:0 auto 8px; background:var(--bg-card); border:1px solid var(--border); box-shadow:0 4px 12px rgba(0,0,0,0.25); }
.shortcut-label { font-size:12px; color:var(--text-dim); }

.feature-card { background:var(--bg-card); border:1px solid var(--border); border-radius:var(--radius); margin:0 16px 12px; padding:16px; display:flex; align-items:center; gap:14px; cursor:pointer; transition:all .2s; }
.feature-card:hover { border-color:var(--gold); transform:translateY(-1px); }
.feature-card-icon { width:48px; height:48px; border-radius:var(--radius-sm); background:rgba(212,175,55,0.1); display:flex; align-items:center; justify-content:center; font-size:22px; color:var(--gold); flex:0 0 auto; }
.feature-card-body { flex:1; }
.feature-card-title { font-size:16px; font-weight:700; color:var(--text-bright); margin-bottom:4px; }
.feature-card-desc { font-size:12px; color:var(--text-dim); }
.feature-card-arrow { color:var(--text-dim); font-size:14px; }

/* Animations */
.fade-in-up { opacity:0; transform:translateY(16px); animation:fadeInUp .6s ease-out forwards; }
@keyframes fadeInUp { to { opacity:1; transform:translateY(0); } }
@keyframes fadeIn { from { opacity:0; } to { opacity:1; } }

.progress-card { background:var(--bg-card); border:1px solid var(--border); border-radius:var(--radius); margin:0 16px 20px; padding:16px; }
.progress-card-header { display:flex; justify-content:space-between; align-items:center; margin-bottom:10px; }
.progress-card-title { font-size:14px; color:var(--text-bright); font-weight:600; }
.progress-card-val { font-size:18px; font-weight:800; color:var(--gold); }
.progress-card-bar { height:8px; background:var(--bg-input); border-radius:4px; overflow:hidden; margin-bottom:10px; }
.progress-card-fill { height:100%; background:linear-gradient(90deg, var(--gold), var(--gold-dim)); border-radius:4px; transition:width .4s; width:0; }
.progress-card-hint { font-size:12px; color:var(--text-dim); }

.module-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:10px; padding:0 16px 20px; }
.module-card { background:var(--bg-card); border-radius:var(--radius-sm); padding:14px 6px; text-align:center; border:1px solid var(--border); cursor:pointer; transition:border-color .2s; }
.module-card:hover { border-color:var(--gold); }
.module-card.completed { border-color:var(--success); }
.module-card.completed .module-icon { color:var(--success); }
.module-card .step-num { width:22px; height:22px; border-radius:50%; background:var(--bg-input); border:1px solid var(--border); display:flex; align-items:center; justify-content:center; font-size:11px; color:var(--text-dim); margin:0 auto 8px; }
.module-card.completed .step-num { background:var(--success); border-color:var(--success); color:#fff; }
.module-icon { font-size:20px; margin-bottom:6px; color:var(--text-dim); }
.module-name { font-size:11px; color:var(--text-dim); }

.home-footer { margin-top:10px; }

/* Notice */
.notice-filter { display:flex; gap:8px; padding:0 16px 12px; overflow-x:auto; }
.notice-filter span { flex:0 0 auto; padding:6px 14px; background:var(--bg-card); border:1px solid var(--border); border-radius:20px; font-size:13px; color:var(--text-dim); cursor:pointer; }
.notice-filter span.active { background:rgba(212,175,55,0.15); border-color:var(--gold); color:var(--gold); }
.notice-list { padding:0 16px; }
.notice-card { background:var(--bg-card); border:1px solid var(--border); border-radius:var(--radius); padding:16px; margin-bottom:12px; cursor:pointer; transition:border-color .2s; }
.notice-card:hover { border-color:var(--gold); }
.notice-card.unread { border-left:3px solid var(--gold); }
.notice-card-head { display:flex; justify-content:space-between; align-items:flex-start; margin-bottom:8px; }
.notice-card-title { font-size:15px; font-weight:700; color:var(--text-bright); flex:1; margin-right:8px; }
.notice-card-badge { background:var(--danger); color:#fff; font-size:10px; padding:2px 6px; border-radius:10px; flex:0 0 auto; }
.notice-card-summary { font-size:13px; color:var(--text-dim); margin-bottom:10px; line-height:1.5; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.notice-card-meta { display:flex; justify-content:space-between; font-size:12px; color:var(--text-dim); }
.notice-detail { padding:16px; }
.notice-detail-title { font-size:18px; font-weight:700; color:var(--text-bright); margin-bottom:12px; }
.notice-detail-meta { font-size:12px; color:var(--text-dim); margin-bottom:16px; padding-bottom:12px; border-bottom:1px solid var(--border); }
.notice-detail-body { font-size:15px; line-height:1.8; color:var(--text); white-space:pre-wrap; }
.notice-empty { text-align:center; padding:60px 20px; color:var(--text-dim); }
.notice-empty-icon { font-size:48px; margin-bottom:12px; }

/* Form */
.form-page { padding:0 16px 20px; }
.form-group { margin-bottom:14px; }
.form-group label { display:block; font-size:13px; color:var(--text-dim); margin-bottom:5px; }
.form-group input, .form-group textarea, .form-group select {
  width:100%; padding:10px 12px; background:var(--bg-input); border:1px solid var(--border);
  border-radius:var(--radius-sm); color:var(--text-bright); font-size:14px; font-family:var(--font);
  transition:border-color .2s; outline:none;
}
.form-group input:focus, .form-group textarea:focus { border-color:var(--gold); }
.form-group textarea { resize:vertical; min-height:80px; }

/* Checkbox / Radio */
.check-group { display:flex; flex-wrap:wrap; gap:8px; margin-bottom:14px; }
.check-item { padding:8px 14px; background:var(--bg-input); border:1px solid var(--border); border-radius:20px; font-size:13px; cursor:pointer; transition:all .2s; user-select:none; }
.check-item.checked { background:rgba(212,175,55,0.15); border-color:var(--gold); color:var(--gold); }

.radio-group { display:flex; gap:12px; }
.radio-item { padding:8px 20px; background:var(--bg-input); border:1px solid var(--border); border-radius:var(--radius-sm); cursor:pointer; font-size:13px; text-align:center; flex:1; }
.radio-item.checked { border-color:var(--gold); color:var(--gold); background:rgba(212,175,55,0.1); }

/* Upload */
.upload-group { display:grid; grid-template-columns:repeat(3,1fr); gap:10px; margin-bottom:14px; }
.upload-item { background:var(--bg-input); border:1px dashed var(--border); border-radius:var(--radius-sm); padding:20px 8px; text-align:center; cursor:pointer; transition:all .2s; position:relative; overflow:hidden; }
.upload-item:hover { border-color:var(--gold); }
.upload-item input[type="file"] { position:absolute; inset:0; opacity:0; cursor:pointer; }
.upload-icon { font-size:22px; margin-bottom:4px; }
.upload-text { font-size:11px; color:var(--text-dim); }
.upload-item.has-file { border-style:solid; border-color:var(--success); background:rgba(39,174,96,0.1); }
.upload-preview { width:100%; aspect-ratio:1; object-fit:cover; border-radius:4px; margin-bottom:4px; display:none; }
.upload-item.has-file .upload-preview { display:block; }
.upload-item.has-file .upload-icon { display:none; }

/* Buttons */
.btn-primary { background:linear-gradient(135deg, var(--gold), #b8960f); color:#000; border:none; padding:12px 24px; border-radius:var(--radius-sm); font-size:15px; font-weight:600; cursor:pointer; transition:opacity .2s; }
.btn-primary:hover { opacity:0.9; }
.btn-primary:disabled { opacity:0.4; cursor:not-allowed; }
.btn-block { display:block; width:100%; }
.btn-outline { background:transparent; border:1px solid var(--gold); color:var(--gold); padding:10px 20px; border-radius:var(--radius-sm); font-size:14px; cursor:pointer; }
.btn-sms { background:transparent; border:1px solid var(--gold); color:var(--gold); padding:8px 14px; border-radius:var(--radius-sm); font-size:12px; cursor:pointer; white-space:nowrap; }
.btn-sms:disabled { border-color:var(--border); color:var(--text-dim); }

/* SMS Row */
.sms-row { display:flex; gap:8px; }
.sms-row input { flex:1; }

/* Dynamic List */
.dynamic-list { margin-bottom:14px; }
.dynamic-item { background:var(--bg-input); border:1px solid var(--border); border-radius:var(--radius-sm); padding:12px; margin-bottom:8px; position:relative; }
.dynamic-item .remove-btn { position:absolute; top:8px; right:8px; color:var(--danger); cursor:pointer; font-size:18px; }
.dynamic-add { background:transparent; border:1px dashed var(--border); color:var(--gold); padding:10px; border-radius:var(--radius-sm); text-align:center; cursor:pointer; font-size:14px; width:100%; }

/* Step Bar */
.step-bar { display:flex; align-items:center; padding:16px 0; margin-bottom:12px; overflow-x:auto; }
.step-dot { flex:0 0 auto; }
.step-dot .dot { width:28px; height:28px; border-radius:50%; background:var(--bg-input); border:2px solid var(--border); display:flex; align-items:center; justify-content:center; font-size:11px; color:var(--text-dim); }
.step-dot .step-label { font-size:10px; color:var(--text-dim); text-align:center; margin-top:4px; white-space:nowrap; }
.step-dot.active .dot { background:var(--gold); border-color:var(--gold); color:#000; font-weight:700; }
.step-dot.done .dot { background:var(--success); border-color:var(--success); color:#fff; }
.step-line { flex:1; height:2px; background:var(--border); min-width:12px; }
.step-line.done { background:var(--success); }

/* Save Draft */
.step-save-draft { text-align:center; padding:4px 0 8px; }
.step-save-draft span { font-size:12px; color:var(--text-dim); cursor:pointer; padding:4px 12px; border:1px dashed var(--border); border-radius:20px; display:inline-block; transition:all .2s; }
.step-save-draft span:hover { border-color:var(--gold); color:var(--gold); }

/* Draft Modal */
.draft-modal { position:fixed; top:0; left:0; width:100%; height:100%; background:rgba(0,0,0,0.7); z-index:9999; display:flex; align-items:center; justify-content:center; }
.draft-modal-card { background:var(--bg-card); border:1px solid var(--border); border-radius:var(--radius); padding:24px 20px; margin:20px; max-width:320px; text-align:center; }
.draft-modal-icon { font-size:40px; margin-bottom:12px; }
.draft-modal-title { font-size:17px; font-weight:700; color:var(--text-bright); margin-bottom:8px; }
.draft-modal-desc { font-size:13px; color:var(--text-dim); margin-bottom:8px; }
.draft-modal-time { font-size:12px; color:var(--gold); margin-bottom:20px; }
.draft-modal-btns { display:flex; gap:10px; }
.draft-modal-btns button { flex:1; padding:12px; border-radius:var(--radius-sm); font-size:14px; font-weight:600; cursor:pointer; border:none; }
.draft-modal-btns .btn-restore { background:linear-gradient(135deg, var(--gold), var(--gold-dim)); color:#000; }
.draft-modal-btns .btn-discard { background:var(--bg-input); color:var(--text-dim); border:1px solid var(--border); }
.draft-modal-btns .btn-restore:hover { opacity:0.9; }
.draft-modal-btns .btn-discard:hover { color:var(--danger); border-color:var(--danger); }

/* Agreement */
.agreement-box { padding:12px; background:rgba(212,175,55,0.08); border:1px solid rgba(212,175,55,0.2); border-radius:var(--radius-sm); }
.agree-text { font-size:12px; color:var(--text-dim); }

/* Review */
.review-section { margin-bottom:16px; }
.review-section h4 { color:var(--gold); font-size:14px; margin-bottom:8px; padding-bottom:4px; border-bottom:1px solid var(--border); }
.review-row { display:flex; justify-content:space-between; padding:6px 0; font-size:13px; border-bottom:1px solid rgba(42,42,42,0.5); }
.review-row .label { color:var(--text-dim); }
.review-row .value { color:var(--text-bright); text-align:right; max-width:60%; }
.review-tags { display:flex; flex-wrap:wrap; gap:4px; }
.review-tags span { background:var(--bg-input); padding:2px 8px; border-radius:4px; font-size:11px; color:var(--gold); border:1px solid var(--border); }

/* Admin Portal */
.admin-portal { display:grid; grid-template-columns:repeat(3,1fr); gap:10px; padding:16px; }
.admin-portal-card { background:var(--bg-card); border:1px solid var(--border); border-radius:var(--radius-sm); padding:16px 8px; text-align:center; cursor:pointer; }
.admin-portal-card:hover { border-color:var(--gold); }
.portal-icon { font-size:28px; margin-bottom:6px; }
.portal-label { font-size:12px; color:var(--text-dim); }

.admin-tabs { display:flex; gap:4px; margin-bottom:14px; }
.admin-tab { padding:8px 16px; background:var(--bg-input); border-radius:20px; font-size:12px; cursor:pointer; color:var(--text-dim); }
.admin-tab.active { background:rgba(212,175,55,0.15); color:var(--gold); }

.admin-list { max-height:60vh; overflow-y:auto; }
.admin-item { background:var(--bg-input); border:1px solid var(--border); border-radius:var(--radius-sm); padding:12px; margin-bottom:8px; }
.admin-item-header { display:flex; justify-content:space-between; align-items:center; margin-bottom:6px; }
.admin-item-name { font-weight:600; color:var(--text-bright); font-size:14px; }
.admin-item-status { font-size:11px; padding:3px 8px; border-radius:10px; }
.admin-item-status.pending { background:rgba(243,156,18,0.2); color:#f39c12; }
.admin-item-status.approved { background:rgba(39,174,96,0.2); color:#27ae60; }
.admin-item-status.rejected { background:rgba(231,76,60,0.2); color:#e74c3c; }
.admin-item-info { font-size:12px; color:var(--text-dim); }
.admin-item-actions { display:flex; gap:8px; margin-top:8px; }

/* Toast */
.toast { position:fixed; top:60px; left:50%; transform:translateX(-50%); background:rgba(0,0,0,0.85); color:#fff; padding:10px 24px; border-radius:20px; font-size:13px; z-index:9999; display:none; backdrop-filter:blur(6px); border:1px solid var(--border); }

/* TabBar */
.tab-bar { position:fixed; bottom:0; left:50%; transform:translateX(-50%); width:100%; max-width:480px; background:rgba(10,10,10,0.95); backdrop-filter:blur(10px); display:flex; border-top:1px solid var(--border); z-index:100; }
.tab-item { flex:1; display:flex; flex-direction:column; align-items:center; padding:8px 0 6px; cursor:pointer; color:var(--text-dim); font-size:10px; transition:color .2s; }
.tab-item.active { color:var(--gold); }
.tab-item svg { margin-bottom:2px; }

/* Contact save btn */
.contact-save-btn { margin-top:12px; background:rgba(212,175,55,0.1); border:1px solid var(--gold); color:var(--gold); border-radius:var(--radius-sm); padding:10px; text-align:center; cursor:pointer; width:100%; font-size:14px; }

/* Submit Result */
.submit-result { text-align:center; padding:40px 20px; }
.submit-result .result-icon { font-size:64px; margin-bottom:16px; }
.submit-result .result-title { font-size:22px; font-weight:700; color:var(--text-bright); margin-bottom:8px; }
.submit-result .result-desc { font-size:14px; color:var(--text-dim); line-height:1.8; }

/* ===== RFQ 每日报价 ===== */
.quote-filter { display:flex; gap:8px; padding:0 16px 12px; align-items:center; }
.quote-filter select { background:var(--bg-input); border:1px solid var(--border); border-radius:20px; color:var(--text); padding:6px 12px; font-size:12px; outline:none; }
.quote-summary { display:flex; gap:8px; padding:0 16px 16px; }
.quote-summary-item { flex:1; background:var(--bg-card); border:1px solid var(--border); border-radius:var(--radius-sm); padding:12px 8px; text-align:center; }
.quote-summary-item .qs-val { font-size:20px; font-weight:700; color:var(--gold); }
.quote-summary-item .qs-label { font-size:10px; color:var(--text-dim); margin-top:2px; }

.quote-card { background:var(--bg-card); border:1px solid var(--border); border-radius:var(--radius-sm); padding:14px; margin:0 16px 10px; cursor:pointer; transition:border-color .2s; }
.quote-card:hover { border-color:var(--gold); }
.quote-card-header { display:flex; justify-content:space-between; align-items:flex-start; margin-bottom:8px; }
.quote-card-no { font-size:12px; color:var(--text-dim); }
.quote-card-product { font-size:15px; font-weight:600; color:var(--text-bright); margin-bottom:6px; }
.quote-card-info { display:flex; gap:16px; flex-wrap:wrap; font-size:12px; color:var(--text-dim); margin-bottom:4px; }
.quote-card-info span { white-space:nowrap; }
.quote-card-footer { display:flex; justify-content:space-between; align-items:center; margin-top:8px; padding-top:8px; border-top:1px solid var(--border); }
.quote-card-price { font-size:20px; font-weight:700; color:var(--gold); }
.quote-card-price .currency { font-size:13px; font-weight:400; }
.quote-card-actions { display:flex; gap:6px; }

/* Status badges */
.status-badge { font-size:11px; padding:3px 10px; border-radius:10px; font-weight:600; }
.status-badge.draft { background:rgba(136,136,136,0.2); color:#888; }
.status-badge.submitted { background:rgba(52,152,219,0.2); color:#3498db; }
.status-badge.accepted { background:rgba(39,174,96,0.2); color:#27ae60; }
.status-badge.rejected { background:rgba(231,76,60,0.2); color:#e74c3c; }
.status-badge.expired { background:rgba(149,165,166,0.2); color:#95a5a6; }
.status-badge.pending { background:rgba(243,156,18,0.2); color:#f39c12; }
.status-badge.confirmed { background:rgba(39,174,96,0.2); color:#27ae60; }
.status-badge.disputed { background:rgba(231,76,60,0.2); color:#e74c3c; }
.status-badge.settled { background:rgba(212,175,55,0.2); color:#d4af37; }
.status-badge.returned { background:rgba(231,76,60,0.15); color:#e74c3c; border:1px solid rgba(231,76,60,0.3); animation: pulse-return 2s infinite; }
.status-badge.exception { background:rgba(231,76,60,0.15); color:#e74c3c; border:1px solid rgba(231,76,60,0.3); }
.status-badge.reviewing { background:rgba(52,152,219,0.15); color:#3498db; border:1px solid rgba(52,152,219,0.3); }
.status-badge.supplier_confirmed { background:rgba(52,152,219,0.2); color:#3498db; border:1px solid rgba(52,152,219,0.3); }
.status-badge.payment_pending { background:rgba(243,156,18,0.2); color:#f39c12; border:1px solid rgba(243,156,18,0.3); }
.status-badge.paid { background:rgba(39,174,96,0.2); color:#27ae60; border:1px solid rgba(39,174,96,0.3); }
.status-badge.disputed { background:rgba(231,76,60,0.15); color:#e74c3c; border:1px solid rgba(231,76,60,0.3); animation: pulse-return 2s infinite; }

/* PROTOTECH 首页付款提醒 */
.pt-pay-alert {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0 16px 14px;
  padding: 14px 16px;
  background: linear-gradient(135deg, rgba(243,156,18,0.15), rgba(212,175,55,0.1));
  border: 1px solid rgba(243,156,18,0.3);
  border-radius: 10px;
  cursor: pointer;
  transition: all 0.25s;
}
.pt-pay-alert:hover {
  background: linear-gradient(135deg, rgba(243,156,18,0.22), rgba(212,175,55,0.15));
  border-color: rgba(243,156,18,0.5);
}
.pt-pay-icon { font-size: 20px; }
.pt-pay-text { flex: 1; font-size: 14px; color: #fff; font-weight: 500; }
.pt-pay-amount { font-size: 18px; font-weight: 700; color: var(--gold); }
@keyframes pulse-return {
  0%,100% { box-shadow: 0 0 0 0 rgba(231,76,60,0.2); }
  50% { box-shadow: 0 0 8px 2px rgba(231,76,60,0.15); }
}

/* 打回状态的报价卡片 */
.quote-card-returned {
  border-color: rgba(231,76,60,0.4) !important;
  background: linear-gradient(135deg, rgba(231,76,60,0.04), var(--bg-card)) !important;
}
.quote-card-returned:hover {
  border-color: #e74c3c !important;
}

/* Quote form modal */
.quote-modal { display:none; position:fixed; top:0; left:0; right:0; bottom:0; background:rgba(0,0,0,0.8); z-index:200; overflow-y:auto; }
.quote-modal.show { display:block; }
.quote-modal-inner { max-width:480px; margin:50px auto 20px; padding:0 16px 80px; }
.quote-modal .card { margin:12px 0; }

/* Statement cards */
.stmt-summary { display:flex; gap:8px; padding:0 16px 16px; }
.stmt-summary-item { flex:1; background:var(--bg-card); border:1px solid var(--border); border-radius:var(--radius-sm); padding:12px 8px; text-align:center; }
.stmt-summary-item .ss-val { font-size:18px; font-weight:700; }
.stmt-summary-item .ss-label { font-size:10px; color:var(--text-dim); margin-top:2px; }
.stmt-summary-item.total .ss-val { color:var(--gold); }
.stmt-summary-item.paid .ss-val { color:var(--success); }
.stmt-summary-item.unpaid .ss-val { color:var(--danger); }

.stmt-card { background:var(--bg-card); border:1px solid var(--border); border-radius:var(--radius-sm); padding:14px; margin:0 16px 10px; cursor:pointer; transition:border-color .2s; }
.stmt-card:hover { border-color:var(--gold); }
.stmt-card-returned { border-color:rgba(231,76,60,0.5) !important; background:linear-gradient(135deg, rgba(231,76,60,0.05), var(--bg-card)) !important; }
.stmt-card-returned:hover { border-color:#e74c3c !important; }
.stmt-card-header { display:flex; justify-content:space-between; align-items:flex-start; margin-bottom:8px; }
.stmt-card-month { font-size:16px; font-weight:700; color:var(--text-bright); }
.stmt-card-no { font-size:11px; color:var(--text-dim); }
.stmt-card-amounts { display:flex; gap:12px; margin:8px 0; }
.stmt-card-amount { text-align:center; }
.stmt-card-amount .amount-val { font-size:16px; font-weight:600; }
.stmt-card-amount .amount-label { font-size:10px; color:var(--text-dim); }
.stmt-card-footer { display:flex; gap:8px; margin-top:8px; padding-top:8px; border-top:1px solid var(--border); }

.btn-sm { padding:6px 14px; font-size:12px; border-radius:var(--radius-sm); cursor:pointer; border:1px solid; transition:all .2s; background:transparent; }
.btn-sm.btn-gold { border-color:var(--gold); color:var(--gold); }
.btn-sm.btn-gold:hover { background:rgba(212,175,55,0.15); }
.btn-sm.btn-red { border-color:var(--danger); color:var(--danger); }
.btn-sm.btn-red:hover { background:rgba(231,76,60,0.15); }
.btn-sm.btn-green { border-color:var(--success); color:var(--success); }
.btn-sm.btn-green:hover { background:rgba(39,174,96,0.15); }

/* Empty state */
.empty-state { text-align:center; padding:40px 20px; color:var(--text-dim); }
.empty-state .empty-icon { font-size:48px; margin-bottom:12px; opacity:0.5; }
.empty-state .empty-text { font-size:14px; }
.empty-state .empty-sub { font-size:12px; margin-top:4px; opacity:0.6; }

/* Quote detail panel */
.quote-detail { padding:0 16px 20px; display:none; }
.quote-detail.show { display:block; }
.quote-detail .detail-section { margin-bottom:16px; }
.quote-detail .detail-section h4 { color:var(--gold); font-size:13px; margin-bottom:8px; padding-bottom:4px; border-bottom:1px solid var(--border); }
.quote-detail .detail-row { display:flex; justify-content:space-between; padding:5px 0; font-size:13px; }
.quote-detail .detail-row .d-label { color:var(--text-dim); }
.quote-detail .detail-row .d-value { color:var(--text-bright); }

/* ========== 对账管理 V2（完整版）========== */

/* 月度标题栏 */
.stmt-month-header { background:linear-gradient(135deg,rgba(212,175,55,0.12),rgba(212,175,55,0.04)); border:1px solid rgba(212,175,55,0.25); border-radius:var(--radius); margin:12px 16px; padding:14px 16px; }
.stmt-month-title { font-size:18px; font-weight:700; color:var(--text-bright); }
.stmt-status-row { display:flex; gap:12px; margin-top:10px; flex-wrap:wrap; }
.stmt-status-dot { display:inline-flex; align-items:center; gap:4px; font-size:12px; color:var(--text-dim); padding:3px 10px; border-radius:20px; background:rgba(255,255,255,0.04); border:1px solid var(--border); cursor:default; }
.stmt-status-dot.returned { color:#e74c3c; border-color:rgba(231,76,60,0.4); background:rgba(231,76,60,0.08); }

/* 创建按钮 */
.stmt-create-btn-wrap { padding:8px 16px 16px; }
.btn-create-stmt { width:100%; display:flex; align-items:center; justify-content:center; gap:8px; padding:14px 20px; background:linear-gradient(135deg,var(--gold),#b8960f); color:#000; border:none; border-radius:var(--radius); font-size:15px; font-weight:700; cursor:pointer; transition:all .2s; box-shadow:0 4px 16px rgba(212,175,55,0.3); }
.btn-create-stmt:hover { transform:translateY(-1px); box-shadow:0 6px 20px rgba(212,175,55,0.45); }
.btn-create-icon { font-size:20px; line-height:1; }

/* 对账表单页面 */
#page-statement-form { position:fixed; top:0; left:0; right:0; bottom:0; z-index:200; background:#0a0a0a; overflow:hidden; display:flex; flex-direction:column; }
.stmt-form-scroll { flex:1; overflow-y:auto; padding-bottom:80px; -webkit-overflow-scrolling:touch; }
.stmt-form-section { margin:0 16px 16px; background:var(--bg-card); border:1px solid var(--border); border-radius:var(--radius); overflow:hidden; }
.stmt-form-section-title { font-size:13px; font-weight:700; color:var(--gold); padding:12px 14px 0; letter-spacing:0.5px; }
.form-row-2 { display:flex; gap:10px; }
.form-row-2 .form-group { flex:1; }
.form-textarea { width:100%; background:rgba(255,255,255,0.05); border:1px solid var(--border); border-radius:var(--radius-sm); padding:10px 12px; color:var(--text-bright); font-size:14px; resize:vertical; box-sizing:border-box; font-family:inherit; outline:none; transition:border-color .2s; }
.form-textarea:focus { border-color:var(--gold); }

/* 金额表格 */
.stmt-amount-table { padding:12px 14px; }
.stmt-at-header { display:flex; padding:8px 0; border-bottom:1px solid var(--border); font-size:11px; color:var(--text-dim); text-transform:uppercase; letter-spacing:1px; }
.stmt-at-col-item { flex:1; }
.stmt-at-col-amount { width:120px; text-align:right; }
.stmt-at-row { display:flex; align-items:center; padding:10px 0; border-bottom:1px solid rgba(255,255,255,0.04); font-size:14px; }
.stmt-at-row:last-child { border-bottom:none; }
.stmt-at-total { background:rgba(212,175,55,0.06); margin:8px -14px -12px; padding:12px 14px !important; border-radius:0 0 var(--radius-sm) var(--radius-sm); border-top:1px solid rgba(212,175,55,0.25); }
.stmt-at-total .stmt-at-col-item { font-weight:700; color:var(--gold); font-size:15px; }
.stmt-at-total .stmt-at-col-amount { font-weight:700; color:var(--gold); font-size:18px; }
.stmt-amount-input { width:100%; background:transparent; border:1px solid var(--border); border-radius:6px; padding:6px 10px; color:var(--text-bright); font-size:15px; text-align:right; outline:none; transition:border-color .2s; box-sizing:border-box; font-family:inherit; }
.stmt-amount-input:focus { border-color:var(--gold); }
.stmt-amount-input.deduction { color:var(--danger); }

/* 必填标识 */
label.required::after { content:' *'; color:var(--danger); }
.required-tag { background:rgba(231,76,60,0.15); color:var(--danger); font-size:10px; padding:1px 5px; border-radius:4px; margin-left:4px; font-weight:600; }
.optional-tag { background:rgba(255,255,255,0.08); color:var(--text-dim); font-size:10px; padding:1px 5px; border-radius:4px; margin-left:4px; }

/* 只读信息展示 */
.stmt-info-readonly { padding:12px 14px; }
.stmt-info-row { display:flex; justify-content:space-between; padding:8px 0; border-bottom:1px solid rgba(255,255,255,0.04); font-size:13px; }
.stmt-info-row:last-child { border-bottom:none; }
.stmt-info-label { color:var(--text-dim); }
.stmt-info-val { color:var(--text-bright); font-weight:500; }

/* 金额输入 */
.stmt-money-input { display:flex; align-items:center; background:rgba(255,255,255,0.05); border:1px solid var(--border); border-radius:var(--radius-sm); padding:0 12px; }
.stmt-money-input:focus-within { border-color:var(--gold); }
.stmt-money-input .stmt-currency { color:var(--gold); font-weight:700; margin-right:8px; font-size:15px; }
.stmt-money-input .form-input { flex:1; background:transparent; border:none; padding:10px 0; color:var(--text-bright); font-size:15px; outline:none; }

/* 扣款区域 */
.stmt-deduction-box { background:rgba(255,255,255,0.03); border:1px solid var(--border); border-radius:10px; padding:12px; margin:12px 14px; }
.stmt-deduction-title { font-size:13px; color:var(--text-bright); font-weight:600; margin-bottom:10px; }

/* 单选/多选 */
.stmt-radio-group { display:flex; gap:16px; }
.stmt-radio { display:flex; align-items:center; gap:6px; font-size:13px; color:var(--text); cursor:pointer; }
.stmt-radio input { width:16px; height:16px; accent-color:var(--gold); cursor:pointer; }
.stmt-checkbox-group { display:flex; flex-wrap:wrap; gap:10px; }
.stmt-checkbox { display:flex; align-items:center; gap:5px; font-size:12px; color:var(--text); cursor:pointer; background:rgba(255,255,255,0.04); padding:6px 10px; border-radius:8px; border:1px solid var(--border); }
.stmt-checkbox input { width:15px; height:15px; accent-color:var(--gold); cursor:pointer; }

/* 实际付款金额 */
.stmt-actual-pay { background:rgba(212,175,55,0.08); border:1px solid rgba(212,175,55,0.25); border-radius:10px; padding:14px; margin:14px; text-align:center; }
.stmt-actual-label { display:block; font-size:12px; color:var(--text-dim); margin-bottom:4px; }
.stmt-actual-val { display:block; font-size:26px; font-weight:700; color:var(--gold); font-family:'Courier New',monospace; }
.stmt-actual-formula { display:block; font-size:11px; color:var(--text-dim); margin-top:4px; }

/* 文件上传区域 */
.stmt-upload-hint { font-size:11px; color:var(--text-dim); padding:8px 14px 0; }
.stmt-upload-zone { margin:10px 14px 0; border:2px dashed rgba(212,175,55,0.35); border-radius:var(--radius); padding:28px 16px; text-align:center; cursor:pointer; transition:all .2s; background:rgba(212,175,55,0.03); }
.stmt-upload-zone:hover { border-color:var(--gold); background:rgba(212,175,55,0.07); }
.stmt-upload-zone.dragover { border-color:var(--gold); background:rgba(212,175,55,0.12); transform:scale(1.01); }
.stmt-upload-icon { font-size:32px; margin-bottom:6px; }
.stmt-upload-text { font-size:13px; color:var(--text-dim); }
.stmt-upload-types { font-size:11px; color:var(--text-dim); opacity:0.7; margin-top:4px; }

/* 附件分类上传 */
.stmt-attach-type { padding:12px 14px; border-bottom:1px solid rgba(255,255,255,0.04); }
.stmt-attach-type:last-child { border-bottom:none; }
.stmt-attach-type-head { display:flex; align-items:center; gap:8px; margin-bottom:8px; }
.stmt-attach-type-icon { font-size:20px; }
.stmt-attach-type-name { flex:1; font-size:13px; font-weight:600; color:var(--text-bright); }
.stmt-attach-upload-btn { padding:5px 12px; border-radius:6px; border:1px solid var(--gold); background:rgba(212,175,55,0.08); color:var(--gold); font-size:12px; cursor:pointer; }
.stmt-attach-tip { font-size:11px; color:var(--text-dim); margin-top:6px; }
.stmt-attach-files { margin-top:6px; }
.stmt-attach-file-item { display:flex; align-items:center; gap:8px; padding:8px 10px; background:rgba(255,255,255,0.04); border:1px solid var(--border); border-radius:8px; margin-bottom:6px; font-size:12px; }
.stmt-attach-file-icon { font-size:16px; }
.stmt-attach-file-name { flex:1; color:var(--text-bright); word-break:break-all; }
.stmt-attach-file-size { color:var(--text-dim); font-size:11px; white-space:nowrap; }
.stmt-attach-file-actions { display:flex; gap:8px; flex-shrink:0; }
.stmt-attach-file-actions span { color:var(--gold); cursor:pointer; font-size:11px; }
.stmt-attach-file-actions span.del { color:var(--danger); }

/* 付款账户选择 */
.stmt-pay-acct-hint { font-size:11px; color:var(--text-dim); padding:6px 14px 0; line-height:1.5; }
.stmt-pay-acct-tabs { display:flex; gap:8px; padding:10px 14px 0; }
.stmt-pay-acct-tab {
  flex:1; text-align:center; padding:10px 8px; border-radius:10px; cursor:pointer;
  background:rgba(255,255,255,0.04); border:1px solid var(--border);
  font-size:13px; color:var(--text-dim); font-weight:600; transition:all .2s;
}
.stmt-pay-acct-tab.active {
  background:rgba(212,175,55,0.1); border-color:var(--gold); color:var(--gold);
}
.stmt-pay-acct-tab:active { transform:scale(0.97); }
.stmt-pay-acct-body { padding:12px 14px; }
.stmt-pay-acct-saved {
  background:rgba(39,174,96,0.06); border:1px solid rgba(39,174,96,0.25); border-radius:10px;
  padding:12px; margin-bottom:10px;
}
.stmt-pay-acct-saved-label { font-size:11px; color:var(--success); margin-bottom:6px; font-weight:600; }
.stmt-pay-acct-saved-row { font-size:13px; color:var(--text); line-height:1.7; }
.stmt-pay-acct-saved-row span { color:var(--text-dim); font-size:12px; }
.stmt-pay-acct-edit-toggle {
  font-size:12px; color:var(--gold); cursor:pointer; margin-top:8px;
  text-decoration:underline; display:inline-block;
}
.stmt-pay-acct-missing {
  background:rgba(231,76,60,0.06); border:1px solid rgba(231,76,60,0.25); border-radius:10px;
  padding:10px 12px; margin-bottom:10px; font-size:12px; color:var(--danger); line-height:1.5;
}

/* 已上传文件列表 */
.stmt-file-list { padding:10px 14px 14px; }
.stmt-file-item { display:flex; align-items:center; gap:10px; padding:10px 12px; background:rgba(255,255,255,0.03); border:1px solid var(--border); border-radius:var(--radius-sm); margin-bottom:8px; transition:background .15s; }
.stmt-file-item:hover { background:rgba(255,255,255,0.05); }
.stmt-file-icon { font-size:20px; width:36px; height:36px; display:flex; align-items:center; justify-content:center; background:rgba(212,175,55,0.1); border-radius:6px; flex-shrink:0; }
.stmt-file-info { flex:1; min-width:0; }
.stmt-file-name { font-size:13px; color:var(--text-bright); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.stmt-file-meta { font-size:11px; color:var(--text-dim); margin-top:2px; }
.stmt-file-actions { display:flex; gap:6px; flex-shrink:0; }
.stmt-file-actions button { padding:4px 10px; font-size:11px; border:1px solid var(--border); background:transparent; color:var(--text-dim); border-radius:4px; cursor:pointer; transition:all .15s; }
.stmt-file-actions button:hover { border-color:var(--gold); color:var(--gold); }
.stmt-file-actions .btn-del:hover { border-color:var(--danger); color:var(--danger); }

/* 表单底部操作栏 */
.stmt-form-actions { position:fixed; bottom:0; left:0; right:0; display:flex; gap:8px; padding:12px 16px; background:rgba(10,10,10,0.95); backdrop-filter:blur(10px); border-top:1px solid var(--border); z-index:201; }
.stmt-form-actions .btn-secondary { flex:0 0 auto; padding:10px 18px; background:transparent; border:1px solid var(--border); color:var(--text-dim); border-radius:var(--radius-sm); font-size:14px; cursor:pointer; }
.stmt-form-actions .btn-draft { flex:0 0 auto; padding:10px 18px; background:rgba(52,152,219,0.1); border:1px solid rgba(52,152,219,0.3); color:#3498db; border-radius:var(--radius-sm); font-size:14px; cursor:pointer; }
.stmt-form-actions .btn-submit-stmt { flex:1; padding:12px 20px; background:linear-gradient(135deg,var(--gold),#b8960f); color:#000; border:none; border-radius:var(--radius-sm); font-size:15px; font-weight:700; cursor:pointer; }

/* 管理端对账 */
.admin-page-header { display:flex; justify-content:space-between; align-items:center; padding:14px 16px; border-bottom:1px solid var(--border); }
.admin-page-title { font-size:17px; font-weight:700; color:var(--text-bright); }
.stmt-admin-summary { display:flex; gap:8px; padding:12px 16px; overflow-x:auto; }
.stmt-admin-sum-card { flex:1; min-width:90px; background:var(--bg-card); border:1px solid var(--border); border-radius:var(--radius-sm); padding:10px; text-align:center; }
.stmt-admin-sum-card .sum-val { font-size:18px; font-weight:700; color:var(--gold); }
.stmt-admin-sum-card .sum-label { font-size:10px; color:var(--text-dim); margin-top:2px; }
.stmt-admin-table-wrap { padding:0 16px; overflow-x:auto; -webkit-overflow-scrolling:touch; }
.stmt-admin-table { width:100%; border-collapse:collapse; font-size:13px; }
.stmt-admin-table th { background:rgba(212,175,55,0.08); color:var(--text-dim); font-size:11px; font-weight:600; text-transform:uppercase; letter-spacing:0.5px; padding:10px 8px; text-align:left; border-bottom:1px solid var(--border); white-space:nowrap; }
.stmt-admin-table td { padding:10px 8px; border-bottom:1px solid rgba(255,255,255,0.04); color:var(--text-bright); white-space:nowrap; }
.stmt-admin-table tr:hover td { background:rgba(255,255,255,0.02); }
.stmt-admin-table .col-amount { color:var(--gold); font-weight:600; }
.stmt-admin-table .col-action { white-space:normal; }

/* 管理端对账详情 */
.stmt-ad-detail { padding:16px; }
.stmt-ad-layout { display:flex; gap:16px; flex-wrap:wrap; }
.stmt-ad-sidebar { flex:0 0 220px; max-width:100%; }
.stmt-ad-main { flex:1; min-width:260px; }
.stmt-ad-card { background:var(--bg-card); border:1px solid var(--border); border-radius:var(--radius); padding:14px; margin-bottom:12px; }
.stmt-ad-card-title { font-size:13px; font-weight:700; color:var(--gold); margin-bottom:10px; padding-bottom:8px; border-bottom:1px solid var(--border); }
.stmt-ad-info-row { display:flex; justify-content:space-between; padding:5px 0; font-size:13px; }
.stmt-ad-info-label { color:var(--text-dim); }
.stmt-ad-info-val { color:var(--text-bright); font-weight:500; }
.stmt-ad-stats-grid { display:grid; grid-template-columns:1fr 1fr; gap:8px; }
.stmt-ad-stat { background:rgba(255,255,255,0.03); border-radius:6px; padding:10px; text-align:center; }
.stmt-ad-stat-val { font-size:18px; font-weight:700; color:var(--text-bright); }
.stmt-ad-stat-label { font-size:10px; color:var(--text-dim); margin-top:2px; }
.stmt-ad-attach-list { margin-top:8px; }
.stmt-ad-attach-item { display:flex; align-items:center; gap:8px; padding:8px 10px; background:rgba(255,255,255,0.02); border:1px solid var(--border); border-radius:6px; margin-bottom:6px; font-size:13px; }
.stmt-ad-attach-name { flex:1; color:var(--text-bright); word-break:break-all; }
.stmt-ad-attach-group { font-size:12px; color:var(--gold); font-weight:600; margin-top:10px; margin-bottom:4px; }
.stmt-ad-review-bar { display:flex; gap:8px; margin-top:16px; padding-top:14px; border-top:1px solid var(--border); }
.stmt-ad-review-bar button { flex:1; padding:10px; border-radius:var(--radius-sm); font-size:14px; font-weight:600; cursor:pointer; border:none; transition:opacity .2s; }
.stmt-ad-review-bar button:hover { opacity:0.85; }
.btn-review-pass { background:linear-gradient(135deg,#27ae60,#1e8449); color:#fff; }
.btn-review-reject { background:linear-gradient(135deg,#e74c3c,#c0392b); color:#fff; }
.btn-review-exception { background:linear-gradient(135deg,#f39c12,#d68910); color:#fff; }

/* Floating action button */
.fab { position:fixed; bottom:90px; right:calc(50% - 220px); width:48px; height:48px; background:linear-gradient(135deg,var(--gold),#b8960f); border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:24px; color:#000; box-shadow:0 4px 16px rgba(212,175,55,0.4); cursor:pointer; z-index:90; transition:transform .2s; }
.fab:hover { transform:scale(1.1); }
@media (max-width:480px) { .fab { right:16px; } }

/* Tab filter */
.filter-tabs { display:flex; gap:4px; padding:0 16px 12px; overflow-x:auto; }
.filter-tab { padding:6px 14px; background:var(--bg-input); border-radius:16px; font-size:12px; color:var(--text-dim); cursor:pointer; white-space:nowrap; border:1px solid transparent; }
.filter-tab.active { background:rgba(212,175,55,0.15); color:var(--gold); border-color:var(--gold); }

/* Responsive */
@media (max-width:380px) {
  .module-grid { grid-template-columns:repeat(2,1fr); }
  .upload-group { grid-template-columns:repeat(2,1fr); }
  .admin-portal { grid-template-columns:repeat(2,1fr); }
}

/* ========== 询价系统 RFQ ========== */

/* 供应商端：询价列表 */
.rfq-summary { display:flex; gap:8px; padding:0 16px 16px; }
.rfq-summary-item { flex:1; background:var(--bg-card); border:1px solid var(--border); border-radius:var(--radius-sm); padding:12px 8px; text-align:center; }
.rfq-summary-item .rqs-val { font-size:20px; font-weight:700; color:var(--gold); }
.rfq-summary-item .rqs-label { font-size:10px; color:var(--text-dim); margin-top:2px; }

/* 询价卡片（微信通知风格） */
.rfq-card { background:var(--bg-card); border:1px solid var(--border); border-radius:var(--radius); margin:0 16px 12px; padding:16px; cursor:pointer; transition:all .2s; position:relative; overflow:hidden; }
.rfq-card:hover { border-color:#3498db; transform:translateY(-1px); }
.rfq-card.urgent::before { content:''; position:absolute;top:0;left:0;width:4px;height:100%;background:#e74c3c; }
.rfq-card.urgent { border-left:none; }
.rfq-card.targeted { border-color:rgba(231,76,60,0.5); box-shadow:0 0 0 1px rgba(231,76,60,0.1), 0 4px 16px rgba(231,76,60,0.08); }
.rfq-card.targeted::before { content:''; position:absolute;top:0;left:0;width:4px;height:100%;background:#e74c3c; }
.rfq-card.targeted:hover { border-color:rgba(231,76,60,0.7); }
.rfq-card-head { display:flex; justify-content:space-between; align-items:flex-start; margin-bottom:10px; }
.rfq-card-no { font-size:15px; font-weight:800; color:var(--text-bright); font-family:'Courier New',monospace; letter-spacing:0.5px; }
.rfq-card-status { font-size:11px; padding:3px 10px; border-radius:10px; font-weight:600; }
.rfq-card-status.pending { background:rgba(243,156,18,0.2); color:#f39c12; }
.rfq-card-status.quoted { background:rgba(39,174,96,0.2); color:#27ae60; }
.rfq-card-status.expired { background:rgba(149,165,166,0.2); color:#95a5a6; }
.rfq-card-body { font-size:13px; color:var(--text-dim); line-height:1.6; margin-bottom:10px; }
.rfq-card-deadline { display:inline-flex; align-items:center; gap:4px; font-size:12px; color:#e74c3c; font-weight:600; }
.rfq-card-deadline.ok { color:var(--success); }
.rfq-card-attachments { display:flex; gap:8px; flex-wrap:wrap; margin-top:8px; padding-top:8px; border-top:1px solid rgba(255,255,255,0.04); }
.rfq-attach-tag { display:inline-flex; align-items:center; gap:4px; padding:4px 10px; background:rgba(52,152,219,0.1); border-radius:12px; font-size:11px; color:#3498db; }

/* 询价详情面板 */
.rfq-detail-panel { padding:0 16px 20px; display:none; }
.rfq-detail-panel.show { display:block; }
.rfq-detail-header { display:flex; justify-content:space-between; align-items:center; margin-bottom:14px; }
.rfq-info-card { background:linear-gradient(145deg,#1a1a1a 0%,#101010 100%); border:1px solid var(--border); border-radius:var(--radius); margin:12px 16px; overflow:hidden; }
.rfq-info-card-head { background:rgba(212,175,55,0.08); padding:14px 16px; border-bottom:1px solid var(--border); }
.rfq-info-card-head h3 { font-size:17px; font-weight:800; color:var(--gold); font-family:'Courier New',monospace; }
.rfq-info-card-body { padding:14px 16px; }
.rfq-info-row { display:flex; justify-content:space-between; padding:6px 0; font-size:13px; border-bottom:1px solid rgba(255,255,255,0.03); }
.rfq-info-row:last-child { border-bottom:none; }
.rfq-info-label { color:var(--text-dim); }
.rfq-info-val { color:var(--text-bright); font-weight:500; text-align:right; max-width:60%; }

/* 报价方式提示 */
.rfq-method-card { background:var(--bg-card); border:1px solid var(--border); border-radius:var(--radius); margin:0 16px 16px; padding:16px; }
.rfq-method-title { font-size:14px; font-weight:700; color:var(--gold); margin-bottom:12px; }
.rfq-method-steps { margin-bottom:8px; }
.rfq-step { display:flex; align-items:center; gap:10px; padding:8px 0; font-size:13px; color:var(--text-dim); }
.rfq-step-num { width:22px; height:22px; border-radius:50%; background:rgba(52,152,219,0.2); color:#3498db; display:flex; align-items:center; justify-content:center; font-size:11px; font-weight:700; flex-shrink:0; }
.rfq-method-card code { background:rgba(212,175,55,0.15); color:var(--gold); padding:2px 6px; border-radius:4px; font-size:11px; word-break:break-all; }

/* 表单区块复用 */
.rfq-form-section { margin:0 16px 16px; background:var(--bg-card); border:1px solid var(--border); border-radius:var(--radius); overflow:hidden; }

/* 上传页面滚动区 */
#page-rfq-quote-upload { position:fixed; top:0; left:0; right:0; bottom:0; z-index:200; background:#0a0a0a; overflow:hidden; display:flex; flex-direction:column; }
.rfq-upload-scroll { flex:1; overflow-y:auto; padding-bottom:80px; -webkit-overflow-scrolling:touch; }

/* 管理端：询价管理 */
#page-rfq-admin { min-height:100vh; }

/* 比价表格 */
.rfq-compare-header { background:var(--bg-card); border:1px solid var(--border); border-radius:var(--radius); margin-bottom:12px; padding:14px 16px; }
.rfq-compare-table-wrap { overflow-x:auto; -webkit-overflow-scrolling:touch; border-radius:var(--radius); }
.rfq-compare-table { width:100%; border-collapse:collapse; font-size:13px; min-width:500px; }
.rfq-compare-table th { background:rgba(212,175,55,0.1); color:var(--gold); font-size:11px; font-weight:600; text-transform:uppercase; letter-spacing:0.5px; padding:10px 8px; text-align:left; border-bottom:2px solid var(--border); white-space:nowrap; position:sticky; top:0; }
.rfq-compare-table td { padding:10px 8px; border-bottom:1px solid rgba(255,255,255,0.04); color:var(--text-bright); vertical-align:middle; }
.rfq-compare-table tr:hover td { background:rgba(255,255,255,0.02); }
.rfq-compare-table .col-best { color:var(--success); font-weight:700; }
.rfq-compare-table .col-price { color:var(--gold); font-weight:600; }
.rfq-compare-table .col-select { text-align:center; white-space:normal; }

/* PO操作栏 */
.rfq-po-actions { margin-top:16px; padding:16px; background:var(--bg-card); border:1px solid var(--border); border-radius:var(--radius); }
.rfq-po-actions h4 { color:var(--gold); font-size:14px; margin-bottom:10px; }
.rfq-po-form { display:flex; flex-direction:column; gap:10px; }
.rfq-po-form .form-group { margin-bottom:0; }

/* ========== 供应商质量履历模块 ========== */

/* 通用容器 */
.quality-upload-container,
.quality-list-container,
.part-history-container,
.reorder-container {
  padding: 16px;
  padding-bottom: 80px;
}

/* 质检上传页 - 头部 */
.quality-header {
  text-align: center;
  margin-bottom: 24px;
}
.quality-header .quality-icon {
  font-size: 48px;
  margin-bottom: 8px;
}
.quality-header h2 {
  font-size: 20px;
  color: var(--gold);
  margin: 0 0 4px;
}
.quality-subtitle {
  font-size: 13px;
  color: var(--text-dim);
}

/* 步骤条 */
.quality-steps {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  margin-bottom: 24px;
  padding: 16px;
  background: var(--bg-card);
  border-radius: var(--radius);
}
.q-step {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  opacity: 0.5;
  transition: all 0.3s;
}
.q-step.active {
  opacity: 1;
}
.q-step.done {
  opacity: 1;
}
.q-step-num {
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: var(--border);
  color: var(--text-dim);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 13px;
  font-weight: 600;
}
.q-step.active .q-step-num {
  background: var(--gold);
  color: #000;
}
.q-step.done .q-step-num {
  background: var(--success);
  color: #fff;
}
.q-step span:last-child {
  font-size: 11px;
  color: var(--text-dim);
}
.q-step-line {
  width: 40px;
  height: 2px;
  background: var(--border);
  flex-shrink: 0;
}

/* 质量卡片通用 */
.q-card {
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 16px;
  margin-bottom: 12px;
}
.q-card h3 {
  font-size: 15px;
  color: #fff;
  margin: 0 0 12px;
  display: flex;
  align-items: center;
  gap: 6px;
}
.card-icon { font-size: 16px; }
.card-icon.warning { color: var(--danger); }

/* 上传区域 */
.upload-zone {
  border: 2px dashed var(--border);
  border-radius: var(--radius);
  padding: 32px 16px;
  text-align: center;
  cursor: pointer;
  transition: all 0.3s;
  background: rgba(212,175,55,0.03);
}
.upload-zone:hover, .upload-zone.dragover {
  border-color: var(--gold);
  background: rgba(212,175,55,0.08);
}
.upload-zone .upload-icon {
  font-size: 40px;
  margin-bottom: 8px;
}
.upload-zone div {
  color: var(--text-dim);
  font-size: 14px;
}
.upload-formats {
  font-size: 12px !important;
  color: var(--text-dim);
  margin-top: 4px;
  letter-spacing: 1px;
}
.q-hint {
  font-size: 12px;
  color: var(--text-dim);
  margin-bottom: 10px;
}

/* 文件信息展示 */
.qu-file-info {
  margin-top: 12px;
  padding: 12px;
  background: rgba(212,175,55,0.1);
  border-radius: 8px;
  display: flex;
  align-items: center;
  gap: 10px;
}
.qu-file-info .file-icon {
  font-size: 28px;
}
.qu-file-info .file-details {
  flex: 1;
}
.qu-file-info .file-name {
  font-weight: 600;
  color: #fff;
  font-size: 14px;
}
.qu-file-info .file-size {
  font-size: 12px;
  color: var(--text-dim);
}

/* AI解析状态 */
.ai-parse-status {
  text-align: center;
  padding: 40px 16px;
}
.ai-loading .ai-spinner {
  width: 48px;
  height: 48px;
  border: 3px solid var(--border);
  border-top-color: var(--gold);
  border-radius: 50%;
  animation: spin 0.8s linear infinite;
  margin: 0 auto 16px;
}
@keyframes spin { to { transform: rotate(360deg); } }

/* 信息网格 */
.q-info-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
}
.q-info-item {
  padding: 8px;
  background: rgba(255,255,255,0.03);
  border-radius: 6px;
}
.q-info-item .label {
  font-size: 11px;
  color: var(--text-dim);
  margin-bottom: 2px;
}
.q-info-item .value {
  font-size: 14px;
  color: #fff;
  font-weight: 500;
}

/* 异常列表 */
.issue-count {
  background: var(--danger);
  color: #fff;
  font-size: 12px;
  padding: 2px 8px;
  border-radius: 10px;
  margin-left: auto;
}
.issues-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.issue-item {
  padding: 12px;
  background: rgba(231,76,60,0.1);
  border-left: 3px solid var(--danger);
  border-radius: 0 6px 6px 0;
}
.issue-type {
  font-weight: 600;
  color: var(--danger);
  font-size: 14px;
  margin-bottom: 6px;
  display: flex;
  align-items: center;
  gap: 6px;
}
.issue-severity {
  font-size: 11px;
  padding: 2px 6px;
  border-radius: 4px;
  background: var(--danger);
  color: #fff;
  margin-left: auto;
}
.issue-severity.minor {
  background: #f39c12;
}
.issue-detail {
  font-size: 13px;
  color: var(--text-secondary);
  line-height: 1.5;
}
.issue-detail span {
  display: block;
  margin-top: 2px;
}
.issue-detail .dim {
  color: var(--gold);
  font-family: monospace;
}

/* 检验结论 */
.conclusion {
  border-color: var(--success);
}
.conclusion-content {
  padding: 16px;
  background: linear-gradient(135deg, rgba(39,174,96,0.1), transparent);
  border-radius: 8px;
  text-align: center;
}
.conclusion-rate {
  font-size: 36px;
  font-weight: 700;
  color: var(--success);
  margin-bottom: 4px;
}
.conclusion-text {
  font-size: 15px;
  color: #fff;
}

/* 操作按钮组 */
.q-actions {
  display: flex;
  gap: 10px;
  margin-top: 16px;
}
.q-actions .btn {
  flex: 1;
}

/* 成功结果 */
.success-result {
  text-align: center;
  padding: 40px 16px;
}
.success-result .success-icon {
  font-size: 64px;
  margin-bottom: 16px;
  animation: bounceIn 0.6s ease;
}
@keyframes bounceIn {
  0% { transform: scale(0); opacity: 0; }
  50% { transform: scale(1.2); }
  100% { transform: scale(1); opacity: 1; }
}
.success-result h3 {
  font-size: 20px;
  color: var(--success);
  margin-bottom: 8px;
}
.success-result p {
  color: var(--text-dim);
  margin-bottom: 20px;
}
.success-details {
  text-align: left;
  background: var(--bg-card);
  border-radius: var(--radius);
  padding: 16px;
  margin-bottom: 24px;
}
.success-actions {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

/* ====== 质量记录列表页 ====== */

/* 搜索栏 */
.ql-filter-bar {
  margin-bottom: 16px;
}
.ql-filter-bar .search-box {
  position: relative;
}
.ql-filter-bar input {
  width: 100%;
  padding: 12px 16px 12px 40px;
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  color: #fff;
  font-size: 14px;
  box-sizing: border-box;
}
.ql-filter-bar .search-box::before {
  content: '🔍';
  position: absolute;
  left: 14px;
  top: 50%;
  transform: translateY(-50%);
  font-size: 14px;
}

/* 统计汇总 */
.ql-summary {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px;
  margin-bottom: 16px;
}
.ql-sum-item {
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 14px 10px;
  text-align: center;
}
.ql-sum-item.warning {
  border-color: var(--danger);
  background: rgba(231,76,60,0.05);
}
.ql-sum-value {
  font-size: 24px;
  font-weight: 700;
  color: var(--gold);
}
.ql-sum-item.warning .ql-sum-value {
  color: var(--danger);
}
.ql-sum-label {
  font-size: 11px;
  color: var(--text-dim);
  margin-top: 2px;
}

/* 记录卡片 */
.ql-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.ql-card {
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 14px;
  cursor: pointer;
  transition: all 0.2s;
}
.ql-card:hover, .ql-card:active {
  border-color: var(--gold);
  background: rgba(212,175,55,0.05);
}
.ql-card.has-issues {
  border-left: 3px solid var(--danger);
}
.ql-card-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  margin-bottom: 8px;
}
.ql-card-title {
  font-size: 14px;
  font-weight: 600;
  color: #fff;
  flex: 1;
  margin-right: 8px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.ql-card-type {
  font-size: 11px;
  padding: 3px 8px;
  border-radius: 4px;
  background: var(--border);
  color: var(--text-dim);
}
.ql-card-body {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 6px;
}
.ql-card-row {
  font-size: 12px;
  color: var(--text-secondary);
}
.ql-card-row .val {
  color: #fff;
  font-weight: 500;
}
.ql-card-footer {
  margin-top: 8px;
  padding-top: 8px;
  border-top: 1px solid var(--border);
  display: flex;
  justify-content: space-between;
  align-items: center;
}
.ql-pass-rate {
  font-size: 13px;
  font-weight: 600;
}
.ql-pass-rate.good { color: var(--success); }
.ql-pass-rate.warn { color: #f39c12; }
.ql-pass-rate.bad { color: var(--danger); }
.ql-date {
  font-size: 11px;
  color: var(--text-dim);
}

/* 详情面板 */
.quality-detail-panel {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: var(--bg);
  z-index: 100;
  overflow-y: auto;
}
.qd-header {
  position: sticky;
  top: 0;
  background: var(--bg);
  padding: 16px;
  display: flex;
  align-items: center;
  gap: 12px;
  border-bottom: 1px solid var(--border);
  z-index: 1;
}
.qd-header h3 {
  margin: 0;
  font-size: 16px;
}
.btn-back {
  background: none;
  border: none;
  color: var(--gold);
  font-size: 14px;
  cursor: pointer;
  padding: 4px 8px;
}
.qd-scroll {
  padding: 16px;
  padding-bottom: 80px;
}

/* 附件列表 */
.attachments-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.attachment-item {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px;
  background: rgba(255,255,255,0.03);
  border-radius: 6px;
  cursor: pointer;
}
.attachment-item:hover {
  background: rgba(212,175,55,0.08);
}
.att-icon { font-size: 20px; }
.att-name {
  flex: 1;
  font-size: 13px;
  color: #fff;
}
.att-size {
  font-size: 11px;
  color: var(--text-dim);
}

/* 零件历史迷你版 */
.part-history-mini {
  max-height: 200px;
  overflow-y: auto;
}
.ph-mini-item {
  display: flex;
  justify-content: space-between;
  padding: 8px 0;
  border-bottom: 1px solid var(--border);
  font-size: 12px;
}
.ph-mini-item:last-child { border-bottom: none; }
.ph-mini-date { color: var(--text-dim); }
.ph-mini-supplier { color: var(--gold); }
.ph-mini-status { 
  font-size: 11px; 
  padding: 2px 6px; 
  border-radius: 4px;
}
.ph-mini-status.pass { background: rgba(39,174,96,0.2); color: var(--success); }
.ph-mini-status.fail { background: rgba(231,76,60,0.2); color: var(--danger); }

/* ====== 零件历史查询页 ====== */

.ph-header {
  text-align: center;
  margin-bottom: 24px;
}
.ph-header h2 {
  font-size: 20px;
  color: var(--gold);
  margin: 0 0 4px;
}
.ph-header p {
  font-size: 13px;
  color: var(--text-dim);
}

/* 搜索框 */
.ph-search-box {
  display: flex;
  gap: 10px;
  margin-bottom: 20px;
}
.ph-search-box input {
  flex: 1;
}

/* 零件概览 */
.ph-overview {
  margin-bottom: 20px;
}
.ph-overview-card {
  background: linear-gradient(135deg, var(--bg-card), rgba(212,175,55,0.1));
  border: 1px solid var(--gold);
  border-radius: var(--radius);
  padding: 20px;
  text-align: center;
}
.ph-part-title {
  font-size: 18px;
  font-weight: 700;
  color: var(--gold);
  margin-bottom: 16px;
}
.ph-stats-row {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
}
.ph-stat {
  padding: 12px;
  background: rgba(0,0,0,0.3);
  border-radius: 8px;
}
.ph-stat-value {
  font-size: 24px;
  font-weight: 700;
  color: #fff;
}
.ph-stat-label {
  font-size: 11px;
  color: var(--text-dim);
  margin-top: 2px;
}

/* 供应商对比卡片 */
.ph-suppliers h3,
.ph-records h3 {
  font-size: 15px;
  color: #fff;
  margin: 0 0 12px;
}
.supplier-cards {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-bottom: 20px;
}
.supplier-compare-card {
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 14px;
  transition: all 0.2s;
}
.supplier-compare-card.recommended {
  border-color: var(--success);
  background: rgba(39,174,96,0.05);
}
.scc-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 10px;
}
.scc-name {
  font-size: 15px;
  font-weight: 600;
  color: #fff;
}
.scc-badge {
  font-size: 11px;
  padding: 3px 8px;
  border-radius: 4px;
}
.scc-badge.best { background: var(--success); color: #fff; }
.scc-badge.good { background: var(--gold); color: #000; }
.scc-stats {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
}
.scc-stat {
  text-align: center;
  padding: 8px;
  background: rgba(255,255,255,0.03);
  border-radius: 6px;
}
.scc-stat-val {
  font-size: 16px;
  font-weight: 600;
  color: var(--gold);
}
.scc-stat-lbl {
  font-size: 10px;
  color: var(--text-dim);
}

/* 时间线 */
.record-timeline {
  position: relative;
  padding-left: 20px;
}
.record-timeline::before {
  content: '';
  position: absolute;
  left: 6px;
  top: 0;
  bottom: 0;
  width: 2px;
  background: var(--border);
}
.timeline-item {
  position: relative;
  padding: 12px 0;
  padding-left: 16px;
}
.timeline-item::before {
  content: '';
  position: absolute;
  left: -18px;
  top: 18px;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: var(--border);
  border: 2px solid var(--gold);
}
.timeline-item.has-issue::before {
  background: var(--danger);
  border-color: var(--danger);
}
.ti-date {
  font-size: 12px;
  color: var(--text-dim);
  margin-bottom: 4px;
}
.ti-content {
  font-size: 13px;
  color: #fff;
}
.ti-supplier {
  color: var(--gold);
  font-weight: 500;
}
.ti-issue {
  font-size: 12px;
  color: var(--danger);
  margin-top: 4px;
}

/* ====== 返单推荐页 ====== */

.reorder-header {
  text-align: center;
  margin-bottom: 24px;
}
.reorder-header h2 {
  font-size: 20px;
  color: var(--gold);
  margin: 0 0 4px;
}
.reorder-header p {
  font-size: 13px;
  color: var(--text-dim);
}

.ro-input-section {
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 16px;
  margin-bottom: 20px;
}

/* 推荐结果区 */
.ro-recommended {
  margin-bottom: 20px;
}
.ro-rec-badge {
  text-align: center;
  font-size: 12px;
  color: var(--gold);
  margin-bottom: 8px;
  letter-spacing: 2px;
}
.ro-rec-card {
  background: linear-gradient(135deg, rgba(212,175,55,0.15), rgba(212,175,55,0.02));
  border: 2px solid var(--gold);
  border-radius: var(--radius);
  padding: 20px;
  position: relative;
  overflow: hidden;
}
.ro-rec-card::before {
  content: '★';
  position: absolute;
  top: 10px;
  right: 10px;
  font-size: 24px;
  color: var(--gold);
  opacity: 0.3;
}
.ro-rec-name {
  font-size: 20px;
  font-weight: 700;
  color: #fff;
  margin-bottom: 12px;
}
.ro-rec-score {
  display: inline-block;
  font-size: 36px;
  font-weight: 800;
  color: var(--gold);
  margin-right: 8px;
}
.ro-rec-level {
  display: inline-block;
  font-size: 14px;
  padding: 4px 12px;
  border-radius: 20px;
  background: var(--success);
  color: #fff;
  vertical-align: middle;
}
.ro-rec-reasons {
  margin-top: 16px;
}
.ro-rec-reasons h4 {
  font-size: 14px;
  color: var(--text-dim);
  margin: 0 0 8px;
}
.reason-item {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 6px 0;
  font-size: 13px;
  color: #fff;
}
.reason-check { color: var(--success); }

/* 风险提示 */
.ro-risks {
  margin-top: 16px;
  padding: 12px;
  background: rgba(231,76,60,0.1);
  border-radius: 8px;
  border-left: 3px solid var(--danger);
}
.ro-risks h4 {
  font-size: 13px;
  color: var(--danger);
  margin: 0 0 8px;
}
.risk-item {
  font-size: 12px;
  color: var(--text-secondary);
  padding: 3px 0;
  line-height: 1.5;
}

/* 总结 */
.ro-summary {
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 16px;
  margin-bottom: 20px;
}
.ro-summary p {
  font-size: 14px;
  color: var(--text-secondary);
  line-height: 1.6;
  margin: 0;
}
.ro-key-points {
  list-style: none;
  padding: 0;
  margin: 12px 0 0;
}
.ro-key-points li {
  padding: 6px 0;
  font-size: 13px;
  color: #fff;
  padding-left: 20px;
  position: relative;
}
.ro-key-points li::before {
  content: '✓';
  position: absolute;
  left: 0;
  color: var(--success);
}

/* 备选供应商 */
.ro-alternatives {
  margin-bottom: 20px;
}
.ro-alternatives h3 {
  font-size: 15px;
  color: #fff;
  margin: 0 0 12px;
}
.alt-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.alt-item {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 12px;
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: 8px;
}
.alt-name {
  font-size: 14px;
  font-weight: 500;
  color: #fff;
}
.alt-score {
  font-size: 16px;
  font-weight: 600;
  color: var(--gold);
}
.alt-level {
  font-size: 11px;
  padding: 2px 8px;
  border-radius: 4px;
  background: var(--border);
  color: var(--text-dim);
}

/* 操作按钮 */
.ro-actions {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

/* ====== 管理端询价单详情页 ====== */

.rfq-admin-detail {
  position: relative;
  max-width: 100%;
}

.rfq-detail-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 20px;
  padding-bottom: 12px;
  border-bottom: 1px solid var(--border);
}

/* 状态矩阵表格优化 */
.rfq-admin-detail table thead th {
  font-size: 12px;
  text-transform: uppercase;
  letter-spacing: 0.5px;
}

.rfq-admin-detail table tbody tr:hover {
  background: rgba(255, 255, 255, 0.03);
}

/* 最优报价行高亮 */
.rfq-admin-detail table tbody tr[style*="background:rgba(212,175,55"] {
  transition: background 0.2s ease;
}

.rfq-admin-detail table tbody tr[style*="background:rgba(212,175,55"]:hover {
  background: rgba(212, 175, 55, 0.15) !important;
}

/* 附件项悬停效果 */
.rfq-att-item:hover {
  background: rgba(212, 175, 55, 0.1) !important;
  border-color: var(--gold) !important;
}

/* 提示信息卡片 */
.rfq-admin-detail .rfq-info-card:last-of-type {
  margin-bottom: 20px;
}

/* ===== 演示模式横幅 ===== */
.demo-banner {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 14px 16px;
  margin-bottom: 16px;
  background: linear-gradient(135deg, rgba(155, 89, 182, 0.15), rgba(142, 68, 173, 0.1));
  border: 1px solid rgba(155, 89, 182, 0.35);
  border-radius: 10px;
  position: relative;
  animation: demoBannerPulse 3s ease-in-out infinite;
}

@keyframes demoBannerPulse {
  0%, 100% { border-color: rgba(155, 89, 182, 0.35); }
  50% { border-color: rgba(155, 89, 182, 0.6); }
}

.demo-banner-icon {
  font-size: 24px;
  line-height: 1;
  flex-shrink: 0;
}

.demo-banner-text {
  flex: 1;
  min-width: 0;
}

.demo-banner-text strong {
  color: #ce93d8;
  font-size: 14px;
  display: block;
  margin-bottom: 4px;
}

.demo-banner-text span {
  color: var(--text-secondary);
  font-size: 12px;
  line-height: 1.5;
  display: block;
}

.demo-banner-close {
  cursor: pointer;
  font-size: 20px;
  color: var(--text-dim);
  line-height: 1;
  padding: 2px 6px;
  transition: color 0.2s;
  flex-shrink: 0;
}

.demo-banner-close:hover {
  color: var(--danger);
}

/* ===== 零件清单表格 ===== */
.part-list-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 12px;
}

.part-list-table th {
  background: rgba(212, 175, 55, 0.12);
  color: var(--gold);
  font-weight: 600;
  padding: 8px 6px;
  text-align: left;
  border-bottom: 1px solid rgba(212, 175, 55, 0.25);
  white-space: nowrap;
}

.part-list-table td {
  padding: 8px 6px;
  border-bottom: 1px solid var(--border);
  color: var(--text-bright);
  vertical-align: middle;
}

.part-list-table tbody tr:hover {
  background: rgba(255, 255, 255, 0.03);
}

.part-list-table tbody tr:last-child td {
  border-bottom: none;
}

/* ====== 历史报价查询页 ====== */

/* 筛选标签 */
.hq-filter-tags {
  display: flex;
  gap: 8px;
  margin-bottom: 16px;
  flex-wrap: wrap;
}
.hq-tag {
  padding: 6px 14px;
  border-radius: 20px;
  font-size: 12px;
  background: rgba(255,255,255,0.05);
  color: var(--text-dim);
  cursor: pointer;
  transition: all 0.2s;
  border: 1px solid transparent;
}
.hq-tag:hover { background: rgba(212,175,55,0.1); color: var(--gold); }
.hq-tag.active {
  background: rgba(212,175,55,0.15);
  color: var(--gold);
  border-color: var(--gold);
}

/* 统计汇总 */
.hq-summary {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 10px;
  margin-bottom: 20px;
}
.hq-summary-item {
  background: linear-gradient(135deg, rgba(212,175,55,0.08), rgba(0,0,0,0.3));
  border: 1px solid rgba(212,175,55,0.2);
  border-radius: 10px;
  padding: 14px 10px;
  text-align: center;
}
.hq-summary-value {
  font-size: 22px;
  font-weight: 700;
  color: #fff;
}
.hq-summary-value.gold { color: var(--gold); }
.hq-summary-label {
  font-size: 11px;
  color: var(--text-dim);
  margin-top: 4px;
}

/* 零件报价卡片 */
.hq-part-card {
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  margin-bottom: 12px;
  overflow: hidden;
  transition: all 0.2s;
}
.hq-part-card:hover {
  border-color: rgba(212,175,55,0.4);
  box-shadow: 0 4px 16px rgba(0,0,0,0.3);
}
.hq-part-header {
  padding: 14px 16px;
  cursor: pointer;
  display: flex;
  justify-content: space-between;
  align-items: center;
  background: rgba(255,255,255,0.02);
}
.hq-part-header:hover { background: rgba(212,175,55,0.05); }
.hq-part-no {
  font-size: 15px;
  font-weight: 600;
  color: var(--gold);
  font-family: 'Courier New', monospace;
}
.hq-part-name {
  font-size: 13px;
  color: var(--text-secondary);
  margin-top: 2px;
}
.hq-part-price-info {
  text-align: right;
}
.hq-part-latest-price {
  font-size: 18px;
  font-weight: 700;
  color: var(--success);
}
.hq-part-price-count {
  font-size: 11px;
  color: var(--text-dim);
  margin-top: 2px;
}
.hq-part-body {
  padding: 12px 16px;
  border-top: 1px solid var(--border);
}
.hq-quote-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 10px 0;
  border-bottom: 1px dashed rgba(255,255,255,0.06);
  cursor: pointer;
  transition: background 0.15s;
}
.hq-quote-row:last-child { border-bottom: none; }
.hq-quote-row:hover { background: rgba(212,175,55,0.05); border-radius: 6px; padding-left: 8px; padding-right: 8px; }
.hq-quote-date {
  font-size: 12px;
  color: var(--text-dim);
  min-width: 80px;
}
.hq-quote-supplier {
  font-size: 13px;
  color: #fff;
  font-weight: 500;
  min-width: 100px;
}
.hq-quote-price {
  font-size: 14px;
  font-weight: 600;
  color: var(--gold);
  min-width: 80px;
  text-align: right;
}
.hq-quote-status {
  font-size: 11px;
  padding: 2px 8px;
  border-radius: 10px;
  min-width: 60px;
  text-align: center;
}
.hq-quote-status.quoted { background: rgba(52,152,219,0.2); color: #3498db; }
.hq-quote-status.po { background: rgba(39,174,96,0.2); color: var(--success); }
.hq-quote-status.expired { background: rgba(149,165,166,0.2); color: #95a5a6; }

/* 报价单明细弹窗 */
.hq-detail-modal {
  position: fixed;
  top: 0; left: 0; right: 0; bottom: 0;
  background: rgba(0,0,0,0.7);
  z-index: 1000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 16px;
  backdrop-filter: blur(4px);
}
.hq-detail-inner {
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: 16px;
  width: 100%;
  max-width: 650px;
  max-height: 85vh;
  overflow-y: auto;
  box-shadow: 0 20px 60px rgba(0,0,0,0.5);
}
.hq-detail-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 18px 20px;
  border-bottom: 1px solid var(--border);
  position: sticky;
  top: 0;
  background: var(--bg-card);
  z-index: 1;
}
.hq-detail-header h3 {
  margin: 0;
  font-size: 17px;
  color: var(--gold);
}
.hq-detail-close {
  font-size: 28px;
  color: var(--text-dim);
  cursor: pointer;
  line-height: 1;
  transition: color 0.2s;
}
.hq-detail-close:hover { color: var(--danger); }

/* 报价单基本信息 */
.hq-quote-info {
  padding: 16px 20px;
  background: rgba(212,175,55,0.05);
  border-bottom: 1px solid var(--border);
}
.hq-qi-row {
  display: flex;
  justify-content: space-between;
  padding: 6px 0;
  font-size: 13px;
}
.hq-qi-label { color: var(--text-dim); }
.hq-qi-value { color: #fff; font-weight: 500; }
.hq-qi-value.gold { color: var(--gold); }

/* 零件行项目表格 */
.hq-items-section {
  padding: 16px 20px;
}
.hq-items-section h4 {
  margin: 0 0 12px;
  font-size: 14px;
  color: #fff;
}
.hq-items-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 12px;
}
.hq-items-table th {
  background: rgba(212,175,55,0.1);
  padding: 10px 8px;
  text-align: left;
  border-bottom: 2px solid var(--gold);
  color: var(--gold);
  font-weight: 600;
  white-space: nowrap;
}
.hq-items-table td {
  padding: 10px 8px;
  border-bottom: 1px solid var(--border);
  color: #fff;
  vertical-align: middle;
}
.hq-items-table tbody tr:hover { background: rgba(255,255,255,0.03); }
.hq-items-table .mono { font-family: 'Courier New', monospace; font-size: 11px; }
.hq-items-table .price-cell { text-align: right; font-weight: 600; color: var(--gold); }
.hq-items-table .total-cell { text-align: right; font-weight: 700; color: #fff; }

/* 价格汇总 */
.hq-price-summary {
  padding: 16px 20px;
  background: rgba(39,174,96,0.05);
  border-top: 1px solid var(--border);
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
}
.hq-ps-item { text-align: center; }
.hq-ps-label { font-size: 11px; color: var(--text-dim); margin-bottom: 4px; }
.hq-ps-value { font-size: 18px; font-weight: 700; color: #fff; }
.hq-ps-value.total { font-size: 22px; color: var(--success); }

/* 操作按钮 */
.hq-detail-actions {
  padding: 16px 20px;
  display: flex;
  gap: 12px;
  border-top: 1px solid var(--border);
}
.hq-detail-actions .btn { flex: 1; }

/* ===== 质量档案管理 - Tab切换 ===== */
.quality-tabs {
  display: flex;
  gap: 12px;
  margin-bottom: 20px;
}
.quality-tab {
  flex: 1;
  background: var(--bg-card);
  border: 2px solid var(--border);
  border-radius: var(--radius);
  padding: 14px 12px;
  cursor: pointer;
  transition: all 0.3s;
  text-align: center;
}
.quality-tab:hover {
  border-color: var(--gold);
  background: rgba(212,175,55,0.05);
}
.quality-tab.active {
  border-color: var(--gold);
  background: rgba(212,175,55,0.12);
  box-shadow: 0 0 16px rgba(212,175,55,0.15);
}
.quality-tab .tab-icon {
  font-size: 24px;
  display: block;
  margin-bottom: 6px;
}
.quality-tab .tab-text {
  font-size: 14px;
  font-weight: 600;
  color: #fff;
  display: block;
  margin-bottom: 2px;
}
.quality-tab .tab-desc {
  font-size: 11px;
  color: var(--text-dim);
  display: block;
}
.quality-tab.active .tab-desc {
  color: var(--gold);
}

/* Tab内容区 */
.quality-tab-content {
  animation: fadeIn 0.3s ease;
}
@keyframes fadeIn { from{opacity:0;transform:translateY(8px)} to{opacity:1;transform:translateY(0)} }

/* ===== 特采记录表单 ===== */
.form-row-2 {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}
.waiver-section .form-group {
  margin-bottom: 14px;
}
.waiver-section .form-group label {
  display: block;
  font-size: 13px;
  color: var(--text-dim);
  margin-bottom: 4px;
  font-weight: 500;
}
.waiver-section .form-group label.required::before {
  content: '*';
  color: var(--danger);
  margin-right: 2px;
}
.waiver-section .form-input,
.waiver-section .form-select {
  width: 100%;
  padding: 10px 12px;
  background: rgba(255,255,255,0.05);
  border: 1px solid var(--border);
  border-radius: 8px;
  color: #fff;
  font-size: 14px;
  outline: none;
  transition: border-color 0.3s;
  box-sizing: border-box;
}
.waiver-section .form-input:focus,
.waiver-section .form-select:focus {
  border-color: var(--gold);
}
.waiver-section .form-textarea {
  width: 100%;
  min-height: 80px;
  padding: 10px 12px;
  background: rgba(255,255,255,0.05);
  border: 1px solid var(--border);
  border-radius: 8px;
  color: #fff;
  font-size: 14px;
  outline: none;
  resize: vertical;
  box-sizing: border-box;
  font-family: inherit;
}
.waiver-section .form-textarea:focus {
  border-color: var(--gold);
}

/* 特采附件上传 */
.label-hint {
  font-size: 11px;
  color: var(--text-dim);
  font-weight: 400;
  margin-left: 6px;
}
.waiver-attach-zone {
  border: 1.5px dashed rgba(212,175,55,0.4);
  border-radius: 10px;
  padding: 18px 12px;
  text-align: center;
  background: rgba(212,175,55,0.04);
  cursor: pointer;
  transition: all 0.25s;
}
.waiver-attach-zone:hover {
  background: rgba(212,175,55,0.08);
  border-color: var(--gold);
}
.waiver-attach-zone.active {
  background: rgba(212,175,55,0.1);
  border-color: var(--gold);
  border-style: solid;
}
.waiver-attach-icon { font-size: 28px; margin-bottom: 6px; }
.waiver-attach-title { font-size: 14px; color: var(--gold); font-weight: 600; }
.waiver-attach-hint { font-size: 11px; color: var(--text-dim); margin-top: 4px; }
.waiver-attach-input { display: none; }
.waiver-attach-list {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 10px;
}
.waiver-attach-item {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: rgba(255,255,255,0.06);
  border: 1px solid var(--border);
  border-radius: 6px;
  padding: 6px 10px;
  font-size: 12px;
  color: #fff;
  max-width: 100%;
  box-sizing: border-box;
}
.waiver-attach-item.preview-img {
  padding: 4px;
  flex-direction: column;
  align-items: flex-start;
  width: 84px;
}
.waiver-attach-item.preview-img img {
  width: 76px;
  height: 76px;
  object-fit: cover;
  border-radius: 4px;
  background: #000;
}
.waiver-attach-thumb-name {
  width: 76px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 10px;
  color: var(--text-dim);
  margin-top: 3px;
}
.waiver-attach-name {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  flex: 1;
  min-width: 0;
}
.waiver-attach-remove {
  color: #e74c3c;
  cursor: pointer;
  font-weight: 700;
  font-size: 13px;
  padding: 0 2px;
}
.waiver-attach-remove:hover { color: #ff6b6b; }

/* 特采历史附件标签 */
.waiver-attach-badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  background: rgba(212,175,55,0.12);
  border: 1px solid rgba(212,175,55,0.3);
  color: var(--gold);
  font-size: 11px;
  padding: 3px 8px;
  border-radius: 12px;
  margin-top: 6px;
  cursor: pointer;
}

/* 特采附件预览弹窗 */
.waiver-attach-modal {
  position: fixed;
  top: 0; left: 0; right: 0; bottom: 0;
  z-index: 1000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 16px;
}
.waiver-attach-modal-mask {
  position: absolute;
  top: 0; left: 0; right: 0; bottom: 0;
  background: rgba(0,0,0,0.85);
}
.waiver-attach-modal-content {
  position: relative;
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: 12px;
  width: 100%;
  max-width: 640px;
  max-height: 90vh;
  overflow-y: auto;
  z-index: 1001;
  box-shadow: 0 20px 60px rgba(0,0,0,0.6);
}
.waiver-attach-modal-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 14px 16px;
  border-bottom: 1px solid var(--border);
}
.waiver-attach-modal-title {
  font-size: 14px;
  color: #fff;
  font-weight: 600;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  max-width: 80%;
}
.waiver-attach-modal-close {
  font-size: 24px;
  color: var(--text-dim);
  cursor: pointer;
  line-height: 1;
}
.waiver-attach-modal-close:hover { color: #fff; }
.waiver-attach-modal-body {
  padding: 16px;
  min-height: 160px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.waiver-attach-modal-actions {
  display: flex;
  justify-content: flex-end;
  gap: 10px;
  padding: 12px 16px;
  border-top: 1px solid var(--border);
}
.waiver-modal-thumbs {
  display: flex;
  gap: 8px;
  padding: 10px 16px;
  overflow-x: auto;
  border-top: 1px solid var(--border);
}
.waiver-modal-thumb {
  width: 48px;
  height: 48px;
  border-radius: 6px;
  object-fit: cover;
  border: 2px solid transparent;
  cursor: pointer;
  flex-shrink: 0;
  background: rgba(255,255,255,0.05);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 20px;
}
.waiver-modal-thumb.active { border-color: var(--gold); }
.waiver-modal-thumb.file { font-size: 18px; }

/* 特采历史列表 */
.badge {
  display: inline-block;
  background: var(--gold);
  color: #000;
  font-size: 11px;
  font-weight: 700;
  padding: 2px 8px;
  border-radius: 10px;
  margin-left: 6px;
}
.waiver-list {
  max-height: 400px;
  overflow-y: auto;
}
.waiver-item {
  padding: 12px;
  background: rgba(255,255,255,0.02);
  border: 1px solid var(--border);
  border-radius: 8px;
  margin-bottom: 8px;
  transition: all 0.3s;
}
.waiver-item:hover {
  background: rgba(255,255,255,0.04);
  border-color: rgba(212,175,55,0.3);
}
.waiver-item-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 6px;
}
.waiver-item-part {
  font-size: 15px;
  font-weight: 600;
  color: #fff;
}
.waiver-item-partno {
  font-size: 12px;
  color: var(--text-dim);
  margin-left: 6px;
}
.waiver-item-date {
  font-size: 11px;
  color: var(--text-dim);
}
.waiver-item-body {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 6px;
  font-size: 12px;
}
.waiver-item-field {
  color: var(--text-dim);
}
.waiver-item-field span {
  color: #fff;
  font-weight: 500;
}
.waiver-item-reason {
  grid-column: 1 / -1;
  margin-top: 4px;
  padding-top: 6px;
  border-top: 1px dashed var(--border);
  color: #e74c3c;
  font-size: 12px;
}
.empty-hint {
  text-align: center;
  padding: 32px;
  color: var(--text-dim);
  font-size: 13px;
}

/* ===== 评价与建议 - 供应商端 ===== */
.feedback-container {
  padding: 16px;
  padding-bottom: 80px;
}
.feedback-header {
  text-align: center;
  margin-bottom: 24px;
}
.feedback-header .feedback-icon { font-size: 44px; margin-bottom: 8px; }
.feedback-header h2 {
  font-size: 20px; color: #9b59b6; margin: 0 0 4px;
}
.feedback-subtitle { font-size: 13px; color: var(--text-dim); }

.fb-card {
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 16px;
  margin-bottom: 14px;
}
.fb-card h3 { font-size: 15px; color: #fff; margin: 0 0 12px; }

/* 匿名开关 */
.fb-anonymous-row {
  display: flex; justify-content: space-between; align-items: center;
}
.fb-switch {
  position: relative; width: 48px; height: 26px; cursor: pointer;
}
.fb-switch input { opacity: 0; width: 0; height: 0; }
.fb-slider {
  position: absolute; inset: 0; background: var(--border);
  border-radius: 26px; transition: 0.3s;
}
.fb-slider::before {
  content: ''; position: absolute; height: 20px; width: 20px;
  left: 3px; bottom: 3px; background: #fff;
  border-radius: 50%; transition: 0.3s;
}
.fb-switch input:checked + .fb-slider { background: #9b59b6; }
.fb-switch input:checked + .fb-slider::before { transform: translateX(22px); }
.fb-hint { font-size: 12px; color: #9b59b6; margin-top: 8px; text-align: center; }

/* 星级评分 */
.fb-stars { display: flex; justify-content: center; gap: 8px; margin: 10px 0; }
.fb-star {
  font-size: 36px; color: var(--border); cursor: pointer;
  transition: all 0.15s; user-select: none;
}
.fb-star:hover, .fb-star.active { color: #f1c40f; transform: scale(1.1); }
.fb-star.active { text-shadow: 0 0 12px rgba(241,196,15,0.4); }
.fb-star-label {
  text-align: center; font-size: 13px; color: var(--text-dim); min-height: 20px;
}

/* 分类评分 */
.fb-categories { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.fb-cat-item {
  display: flex; align-items: center; justify-content: space-between;
  padding: 8px 10px; background: rgba(255,255,255,0.02); border-radius: 8px;
}
.fb-cat-label { font-size: 13px; color: var(--text-dim); }
.fb-mini-stars { display: flex; gap: 2px; }
.fb-mini-stars .fb-mini-star {
  font-size: 18px; color: var(--border); cursor: pointer; transition: 0.15s;
}
.fb-mini-stars .fb-mini-star.active { color: #f1c40f; }
.fb-mini-stars .fb-mini-star:hover { color: #f39c12; }

/* 文字输入 */
.fb-textarea {
  width: 100%; min-height: 140px; padding: 12px;
  background: rgba(255,255,255,0.05); border: 1px solid var(--border);
  border-radius: 10px; color: #fff; font-size: 14px;
  resize: vertical; outline: none; box-sizing: border-box; font-family: inherit; line-height: 1.6;
}
.fb-textarea:focus { border-color: #9b59b6; }
.fb-textarea::placeholder { color: var(--text-dim); }
.fb-char-count { text-align: right; font-size: 11px; color: var(--text-dim); margin-top: 4px; }

/* 提交成功 */
.fb-success {
  text-align: center; padding: 48px 20px;
}
.fb-success-icon { font-size: 56px; margin-bottom: 12px; }
.fb-success h3 { font-size: 20px; color: var(--success); margin: 0 0 8px; }
.fb-success p { font-size: 14px; color: var(--text-dim); line-height: 1.6; margin-bottom: 20px; }
.fb-footer-note {
  text-align: center; font-size: 11px; color: var(--text-dim);
  padding: 12px; margin-top: 4px;
}

/* ===== 反馈查看 - 管理端 ===== */
.fba-container { padding: 16px; padding-bottom: 80px; }
.fba-header { text-align: center; margin-bottom: 20px; }
.fba-header h2 { font-size: 20px; color: #9b59b6; margin: 0 0 4px; }
.fba-subtitle { font-size: 12px; color: var(--text-dim); }

.fba-stats {
  display: grid; grid-template-columns: 1fr 1fr 1fr 1fr; gap: 8px; margin-bottom: 16px;
}
.fba-stat-card {
  background: var(--bg-card); border: 1px solid var(--border);
  border-radius: var(--radius); padding: 12px 8px; text-align: center;
}
.fba-stat-num { font-size: 24px; font-weight: 700; color: #fff; }
.fba-stat-label { font-size: 11px; color: var(--text-dim); margin-top: 2px; }

.fba-filters {
  display: flex; gap: 8px; margin-bottom: 14px;
}
.fba-filters .form-select {
  flex: 1; padding: 8px 10px; background: var(--bg-card);
  border: 1px solid var(--border); border-radius: 8px;
  color: #fff; font-size: 13px; outline: none;
}

.fba-list { display: flex; flex-direction: column; gap: 10px; }

.fba-item {
  background: var(--bg-card); border: 1px solid var(--border);
  border-radius: var(--radius); padding: 14px; cursor: pointer;
  transition: all 0.2s;
}
.fba-item:hover { border-color: rgba(155,89,182,0.4); background: rgba(155,89,182,0.04); }
.fba-item-top {
  display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 8px;
}
.fba-item-meta { display: flex; align-items: center; gap: 8px; }
.fba-item-badge {
  font-size: 11px; padding: 2px 8px; border-radius: 10px; font-weight: 600;
}
.fba-item-badge.anonymous { background: rgba(149,165,166,0.15); color: #95a5a6; }
.fba-item-badge.named { background: rgba(52,152,219,0.15); color: #3498db; }
.fba-item-time { font-size: 11px; color: var(--text-dim); }
.fba-item-stars { color: #f1c40f; font-size: 14px; letter-spacing: 1px; }
.fba-item-preview {
  font-size: 13px; color: var(--text-dim); line-height: 1.5;
  overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
}

/* 详情弹窗 */
.fba-detail-modal {
  position: fixed; inset: 0; background: rgba(0,0,0,0.7);
  z-index: 1000; display: flex; align-items: center; justify-content: center; padding: 16px;
}
.fba-detail-content {
  background: var(--bg-card); border-radius: 16px; width: 100%; max-width: 480px;
  max-height: 85vh; overflow-y: auto;
}
.fba-detail-header {
  display: flex; justify-content: space-between; align-items: center;
  padding: 16px 20px; border-bottom: 1px solid var(--border);
}
.fba-detail-title { font-size: 17px; font-weight: 600; color: #fff; }
.fba-detail-close {
  font-size: 28px; color: var(--text-dim); cursor: pointer; line-height: 1;
}
.fba-detail-close:hover { color: #e74c3c; }
.fba-detail-body { padding: 20px; }
.fba-detail-section { margin-bottom: 16px; }
.fba-detail-label { font-size: 12px; color: var(--text-dim); margin-bottom: 4px; }
.fba-detail-value { font-size: 14px; color: #fff; line-height: 1.7; }
.fba-detail-content-text {
  background: rgba(255,255,255,0.03); border-radius: 10px;
  padding: 14px; font-size: 14px; line-height: 1.8; color: #fff; white-space: pre-wrap;
}

/* ========== 供应商绩效评级 ========== */
.rt-stat-bar {
  display: flex; flex-wrap: wrap; gap: 8px; padding: 14px 12px;
  background: rgba(255,255,255,0.03); margin: 12px; border-radius: 12px;
}
.rt-stat-item { flex: 1; min-width: 70px; text-align: center; }
.rt-stat-val { font-size: 22px; font-weight: 700; color: #fff; line-height: 1.2; }
.rt-stat-label { font-size: 11px; color: var(--text-dim); margin-top: 2px; }

.rt-filter-bar {
  display: flex; justify-content: space-between; align-items: center;
  padding: 0 12px; margin-bottom: 8px; gap: 8px; flex-wrap: wrap;
}
.rt-filter-group { display: flex; gap: 6px; }
.rt-filter-btn {
  padding: 5px 14px; border-radius: 16px; font-size: 12px; font-weight: 600;
  background: rgba(255,255,255,0.05); color: var(--text-dim); border: 1px solid var(--border);
  cursor: pointer; transition: all .2s;
}
.rt-filter-btn.active { background: var(--gold); color: #0a0a0a; border-color: var(--gold); }
.rt-filter-btn.grade-a.active { background: var(--success); border-color: var(--success); color: #fff; }
.rt-filter-btn.grade-b.active { background: #3498db; border-color: #3498db; color: #fff; }
.rt-filter-btn.grade-c.active { background: var(--gold); border-color: var(--gold); color: #0a0a0a; }
.rt-filter-btn.grade-d.active { background: var(--danger); border-color: var(--danger); color: #fff; }
.rt-sort-sel {
  background: rgba(255,255,255,0.05); color: var(--text); border: 1px solid var(--border);
  border-radius: 8px; padding: 5px 8px; font-size: 12px;
}

.rt-list { padding: 0 12px 24px; }
.rt-card {
  background: rgba(255,255,255,0.04); border-radius: 14px; padding: 14px;
  margin-bottom: 10px; border-left: 3px solid var(--border); cursor: pointer; transition: all .2s;
}
.rt-card:active { transform: scale(0.99); }
.rt-card.grade-a { border-left-color: var(--success); }
.rt-card.grade-b { border-left-color: #3498db; }
.rt-card.grade-c { border-left-color: var(--gold); }
.rt-card.grade-d { border-left-color: var(--danger); }
.rt-card-top { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; }
.rt-supplier-name { font-size: 15px; font-weight: 600; color: #fff; }
.rt-supplier-phone { font-size: 12px; color: var(--text-dim); margin-left: 8px; font-weight: 400; }
.rt-grade-badge {
  width: 32px; height: 32px; border-radius: 50%; display: flex; align-items: center; justify-content: center;
  font-size: 16px; font-weight: 700; color: #fff; flex-shrink: 0;
}
.rt-grade-badge.grade-a { background: var(--success); }
.rt-grade-badge.grade-b { background: #3498db; }
.rt-grade-badge.grade-c { background: var(--gold); color: #0a0a0a; }
.rt-grade-badge.grade-d { background: var(--danger); }
.rt-score-row { display: flex; align-items: baseline; gap: 3px; margin-bottom: 10px; }
.rt-score-val { font-size: 26px; font-weight: 700; color: var(--gold); }
.rt-score-unit { font-size: 12px; color: var(--text-dim); }
.rt-adjust-tag {
  margin-left: 8px; font-size: 11px; padding: 1px 6px; border-radius: 8px;
  background: rgba(212,175,55,0.15); color: var(--gold); font-weight: 600;
}
.rt-dim-row { display: grid; grid-template-columns: 1fr 1fr; gap: 6px 14px; margin-bottom: 8px; }
.rt-dim { display: flex; align-items: center; gap: 6px; }
.rt-dim-label { font-size: 11px; color: var(--text-dim); width: 28px; flex-shrink: 0; }
.rt-dim-bar { flex: 1; height: 6px; background: rgba(255,255,255,0.08); border-radius: 3px; overflow: hidden; }
.rt-dim-fill { height: 100%; border-radius: 3px; transition: width .4s; }
.rt-dim-val { font-size: 11px; color: var(--text-dim); width: 24px; text-align: right; flex-shrink: 0; }
.rt-meta { font-size: 11px; color: var(--text-dim); padding-top: 8px; border-top: 1px solid rgba(255,255,255,0.05); }

/* 评级详情 */
.rt-detail-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 16px; }
.rt-grade-badge-large {
  width: 52px; height: 52px; border-radius: 50%; display: flex; align-items: center; justify-content: center;
  font-size: 26px; font-weight: 700; color: #fff;
}
.rt-grade-badge-large.grade-a { background: var(--success); }
.rt-grade-badge-large.grade-b { background: #3498db; }
.rt-grade-badge-large.grade-c { background: var(--gold); color: #0a0a0a; }
.rt-grade-badge-large.grade-d { background: var(--danger); }
.rt-detail-name { font-size: 18px; font-weight: 600; color: #fff; margin-bottom: 6px; padding: 0 4px; }
.rt-detail-score { font-size: 38px; font-weight: 700; color: var(--gold); padding: 0 4px; margin-bottom: 4px; }
.rt-detail-score span { font-size: 14px; color: var(--text-dim); font-weight: 400; }
.rt-detail-grade-desc { font-size: 13px; color: var(--text-dim); font-weight: 400; margin-left: 8px; }
.rt-detail-adj { font-size: 12px; color: var(--gold); padding: 0 4px 16px; }
.rt-detail-section { background: rgba(255,255,255,0.03); border-radius: 12px; padding: 16px; margin: 12px; }
.rt-detail-section-title { font-size: 14px; font-weight: 600; color: #fff; margin-bottom: 14px; }
.rt-dim-detail { margin-bottom: 14px; }
.rt-dim-detail:last-child { margin-bottom: 0; }
.rt-dim-detail-head { display: flex; justify-content: space-between; font-size: 13px; color: var(--text); margin-bottom: 5px; }
.rt-dim-bar-lg { height: 8px; background: rgba(255,255,255,0.08); border-radius: 4px; overflow: hidden; }
.rt-dim-fill-lg { height: 100%; border-radius: 4px; transition: width .4s; }
.rt-dim-detail-desc { font-size: 11px; color: var(--text-dim); margin-top: 4px; }
.rt-detail-data-grid { display: grid; grid-template-columns: 1fr 1fr 1fr 1fr; gap: 8px; }
.rt-detail-data-item { text-align: center; }
.rt-detail-data-val { font-size: 22px; font-weight: 700; color: #fff; }
.rt-detail-data-label { font-size: 11px; color: var(--text-dim); margin-top: 2px; }
.rt-adjust-tip { font-size: 12px; color: var(--text-dim); margin-bottom: 12px; line-height: 1.6; }
.rt-adjust-form { display: flex; flex-direction: column; gap: 8px; }
.rt-adjust-form label { font-size: 12px; color: var(--text-dim); }
.rt-adjust-row { display: flex; align-items: center; gap: 10px; }
.rt-adjust-row label { width: auto; }
.rt-adjust-form textarea { resize: vertical; }
.rt-adjust-form .btn-gold { align-self: flex-start; }

/* ========== 天气条 ========== */
.weather-bar {
  display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
  margin: 0 16px 12px; padding: 10px 14px;
  background: linear-gradient(135deg, rgba(52,152,219,0.06), rgba(255,255,255,0.02));
  border-radius: 12px; border: 1px solid rgba(52,152,219,0.12);
  font-size: 13px;
}
.weather-loading { color: var(--text-dim); font-size: 12px; }
.weather-icon { font-size: 18px; }
.weather-temp { font-size: 16px; font-weight: 700; color: var(--text-bright); }
.weather-desc { color: var(--text); font-size: 13px; }
.weather-divider { color: var(--text-dim); opacity: 0.4; }
.weather-extra { font-size: 12px; color: var(--text-dim); }
.weather-city { margin-left: auto; font-size: 12px; color: var(--text-dim); }

/* ========== 今日待办卡片 ========== */
.todo-card {
  margin: 0 16px 16px; padding: 14px;
  background: rgba(255,255,255,0.02); border-radius: 14px;
  border: 1px solid var(--border);
}
.todo-header {
  display: flex; justify-content: space-between; align-items: center;
  margin-bottom: 12px;
}
.todo-title { font-size: 15px; font-weight: 700; color: var(--text-bright); }
.todo-date { font-size: 12px; color: var(--text-dim); }
.todo-stats {
  display: flex; gap: 8px; margin-bottom: 12px;
}
.todo-stat-item {
  flex: 1; text-align: center; padding: 10px 4px;
  border-radius: 10px; background: rgba(255,255,255,0.03);
  cursor: pointer; transition: all .2s;
}
.todo-stat-item:hover { background: rgba(212,175,55,0.06); transform: translateY(-1px); }
.todo-stat-num {
  display: block; font-size: 22px; font-weight: 700;
  font-family: 'Courier New', monospace; line-height: 1.2;
}
.todo-stat-label { font-size: 11px; color: var(--text-dim); margin-top: 2px; display: block; }

.todo-add-row {
  display: flex; gap: 8px; margin-top: 10px;
}
.todo-input {
  flex: 1; background: rgba(255,255,255,0.04); border: 1px solid var(--border);
  border-radius: 10px; padding: 8px 12px; font-size: 13px; color: var(--text);
  outline: none; transition: border-color .2s;
}
.todo-input:focus { border-color: var(--gold); }
.todo-input::placeholder { color: var(--text-dim); }
.todo-add-btn {
  width: 36px; height: 36px; border-radius: 10px; border: none;
  background: rgba(212,175,55,0.12); color: var(--gold); font-size: 20px;
  cursor: pointer; transition: all .2s; flex-shrink: 0;
}
.todo-add-btn:hover { background: rgba(212,175,55,0.2); }
.todo-add-btn:active { transform: scale(0.92); }

.todo-custom-list { margin-top: 8px; }

/* 今日记录 / 活动日志 */
.activity-log-section {
  margin-top: 12px; padding-top: 10px;
  border-top: 1px dashed rgba(255,255,255,0.08);
}
.activity-log-header {
  display: flex; align-items: center; gap: 8px;
  margin-bottom: 8px;
}
.activity-log-title {
  font-size: 13px; font-weight: 700; color: var(--gold);
  flex: 1;
}
.activity-log-meta {
  font-size: 11px; color: var(--text-dim);
  padding: 1px 6px; background: rgba(255,255,255,0.04);
  border-radius: 8px;
}
.activity-log-more {
  font-size: 12px; color: var(--gold); cursor: pointer;
  text-decoration: underline;
}
.activity-log-list {
  display: flex; flex-direction: column; gap: 4px;
}
.activity-log-item {
  display: flex; align-items: center; gap: 8px;
  padding: 5px 4px;
  font-size: 12px;
  color: var(--text);
  border-bottom: 1px solid rgba(255,255,255,0.02);
}
.activity-log-item:last-child { border-bottom: none; }
.activity-log-time {
  color: var(--text-dim); font-size: 11px;
  font-family: 'Courier New', monospace; min-width: 36px;
  flex-shrink: 0;
}
.activity-log-icon { font-size: 12px; flex-shrink: 0; }
.activity-log-text {
  flex: 1; overflow: hidden;
  text-overflow: ellipsis; white-space: nowrap;
}
.activity-log-actor {
  font-size: 11px; color: var(--text-dim);
  flex-shrink: 0;
}
.activity-log-empty {
  text-align: center; padding: 14px 0;
  font-size: 12px; color: var(--text-dim);
  font-style: italic;
}

/* 历史日志弹窗 */
.activity-history-day {
  font-size: 12px; font-weight: 700; color: var(--gold);
  padding: 8px 0 4px; margin-top: 6px;
  border-bottom: 1px solid var(--border);
}
.activity-history-day:first-child { margin-top: 0; }
.activity-history-item {
  display: flex; align-items: center; gap: 8px;
  padding: 6px 0; font-size: 12px;
}

.todo-custom-item {
  display: flex; align-items: center; gap: 10px;
  padding: 8px 4px; border-bottom: 1px solid rgba(255,255,255,0.03);
  transition: all .2s;
}
.todo-custom-item.done { opacity: 0.5; }
.todo-check {
  width: 20px; height: 20px; border-radius: 6px; border: 2px solid var(--border);
  display: flex; align-items: center; justify-content: center;
  cursor: pointer; flex-shrink: 0; font-size: 12px; transition: all .2s;
}
.todo-check:hover { border-color: var(--gold); }
.todo-custom-text {
  flex: 1; font-size: 13px; color: var(--text); line-height: 1.4;
  word-break: break-all;
}
.todo-custom-text.done { text-decoration: line-through; color: var(--text-dim); }
.todo-del {
  font-size: 12px; color: var(--text-dim); cursor: pointer;
  padding: 4px 6px; border-radius: 4px; transition: all .2s; flex-shrink: 0;
}
.todo-del:hover { color: var(--danger); background: rgba(231,76,60,0.1); }

/* ========== 快捷工具 ========== */
.pt-tools-grid {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px;
  margin: 0 16px 16px; padding: 14px;
  background: rgba(255,255,255,0.02); border-radius: 14px;
  border: 1px solid var(--border);
}
.pt-tool-item {
  text-align: center; cursor: pointer; padding: 14px 6px;
  border-radius: 12px; transition: all .2s;
  background: rgba(255,255,255,0.02);
}
.pt-tool-item:hover {
  background: rgba(212,175,55,0.06);
  transform: translateY(-2px);
}
.pt-tool-icon {
  width: 48px; height: 48px; border-radius: 14px;
  display: flex; align-items: center; justify-content: center;
  font-size: 22px; margin: 0 auto 8px;
  border: 1px solid rgba(255,255,255,0.06);
}
.pt-tool-name { font-size: 12px; color: var(--text); font-weight: 500; }

/* ========== 工程工具箱（PT 端与供应商端统一） ========== */
.pt-toolbox-grid {
  display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px;
  margin: 0 16px 16px; padding: 12px;
  background: rgba(255,255,255,0.02); border-radius: 14px;
  border: 1px solid var(--border);
}
.pt-toolbox-card {
  text-align: center; cursor: pointer; padding: 16px 10px;
  border-radius: 12px; transition: all .2s;
  background: #1a1a1a; border: 1px solid #2a2a2a;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  min-height: 96px;
}
.pt-toolbox-card:hover {
  background: #222; border-color: var(--gold);
  transform: translateY(-2px);
}
.pt-toolbox-card:active { transform: scale(0.97); }
.pt-toolbox-icon {
  font-size: 28px; margin-bottom: 6px;
}
.pt-toolbox-name {
  font-size: 13px; color: var(--text); font-weight: 600;
}
.pt-toolbox-desc {
  font-size: 10px; color: var(--text-dim); margin-top: 3px;
}

/* 工具弹窗内容样式 */
.tool-desc { font-size: 12px; color: var(--text-dim); margin-bottom: 14px; line-height: 1.6; }
.tool-input-group { margin-bottom: 8px; }
.tool-input-group label { font-size: 12px; color: var(--text-dim); display: block; }
.tool-calc-row { display: flex; gap: 8px; align-items: flex-start; }
.tool-calc-col { flex: 1; }
.tool-calc-col label { font-size: 11px; color: var(--text-dim); display: block; margin-bottom: 4px; }
.tool-calc-col .form-input { font-size: 14px; padding: 8px 10px; }

.tool-express-grid {
  display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-top: 8px;
}
.tool-express-btn {
  padding: 12px 8px; border-radius: 10px; text-align: center; cursor: pointer;
  background: rgba(255,255,255,0.04); border: 1px solid var(--border);
  font-size: 13px; color: var(--text); transition: all .2s;
}
.tool-express-btn:hover {
  background: rgba(212,175,55,0.08); border-color: var(--gold); color: var(--gold);
}
.tool-express-btn:active { transform: scale(0.97); }

.tool-tip { margin-top: 12px; font-size: 13px; text-align: center; min-height: 20px; }

.tool-result-box {
  margin-top: 16px; padding: 16px;
  background: rgba(212,175,55,0.06); border-radius: 10px;
  border: 1px solid rgba(212,175,55,0.15);
}
.tool-result-big { font-size: 16px; color: var(--text-bright); font-weight: 600; }
.tool-result-sub { font-size: 13px; color: var(--text-dim); margin-top: 6px; }

.tool-rate-table { margin-top: 14px; }
.tool-rate-title { font-size: 12px; color: var(--text-dim); margin-bottom: 8px; }
.tool-rate-row {
  display: flex; justify-content: space-between; align-items: center;
  padding: 6px 10px; border-bottom: 1px solid rgba(255,255,255,0.04);
  font-size: 13px;
}

/* 颜色转换工具 */
.tool-color-preview {
  width: 100%; height: 60px; border-radius: 10px;
  border: 1px solid var(--border); transition: background .2s;
}
.tool-color-swatches {
  display: flex; gap: 8px; flex-wrap: wrap;
}
.tool-color-swatch {
  width: 32px; height: 32px; border-radius: 8px; cursor: pointer;
  border: 2px solid transparent; transition: all .2s;
}
.tool-color-swatch:hover { transform: scale(1.15); border-color: var(--gold); }

/* 倒计时日工具 */
.tool-cd-item {
  display: flex; justify-content: space-between; align-items: center;
  padding: 12px; border-radius: 10px; margin-bottom: 8px;
  background: rgba(255,255,255,0.04); border: 1px solid var(--border);
  transition: all .2s;
}
.tool-cd-item.urgent {
  border-left: 3px solid var(--danger);
  background: rgba(231,76,60,0.06);
}
.tool-cd-item.today {
  border-left: 3px solid var(--gold);
  background: rgba(212,175,55,0.08);
}
.tool-cd-item.expired {
  opacity: 0.55; border-left: 3px solid var(--text-dim);
}
.tool-cd-left { display: flex; align-items: center; gap: 10px; }
.tool-cd-icon { font-size: 20px; }
.tool-cd-name { font-size: 14px; color: var(--text); font-weight: 500; }
.tool-cd-date { font-size: 11px; color: var(--text-dim); margin-top: 2px; }
.tool-cd-right { display: flex; flex-direction: column; align-items: flex-end; gap: 4px; }
.tool-cd-label { font-size: 13px; font-weight: 600; color: var(--gold); }
.tool-cd-item.urgent .tool-cd-label { color: var(--danger); }
.tool-cd-item.expired .tool-cd-label { color: var(--text-dim); }
.tool-cd-del {
  font-size: 14px; color: var(--text-dim); cursor: pointer;
  padding: 2px 6px; border-radius: 4px; transition: all .2s;
}
.tool-cd-del:hover { color: var(--danger); background: rgba(231,76,60,0.1); }

/* 密码生成器工具 */
.tool-pw-opts { display: flex; flex-wrap: wrap; gap: 12px; }
.tool-pw-opt {
  font-size: 13px; color: var(--text); cursor: pointer;
  display: flex; align-items: center; gap: 5px;
}
.tool-pw-opt input { width: 16px; height: 16px; accent-color: var(--gold); cursor: pointer; }
.tool-pw-result {
  padding: 16px; border-radius: 10px;
  background: rgba(255,255,255,0.04); border: 1px solid var(--border);
}
.tool-pw-code {
  font-family: 'Courier New', monospace; font-size: 18px;
  color: var(--gold); word-break: break-all; line-height: 1.5;
  letter-spacing: 1px; text-align: center; padding: 8px 0;
  user-select: all;
}

/* 智能装箱计算器 */
.packing-grid {
  display: grid; grid-template-columns: 1fr 1fr; gap: 12px;
  margin-bottom: 12px;
}
.packing-col {
  background: rgba(255,255,255,0.02); border-radius: 10px;
  border: 1px solid var(--border); padding: 10px;
}
.packing-col-head {
  display: flex; justify-content: space-between; align-items: center;
  margin-bottom: 8px;
}
.packing-col-title {
  font-size: 13px; font-weight: 700; color: var(--gold);
}
.packing-add-btn {
  padding: 4px 10px; border-radius: 6px; border: 1px solid var(--gold);
  background: rgba(212,175,55,0.08); color: var(--gold);
  font-size: 11px; cursor: pointer;
}
.packing-sample-btn {
  width: 100%; margin-top: 8px; padding: 6px;
  background: transparent; border: 1px dashed var(--border);
  border-radius: 8px; color: var(--text-dim); font-size: 12px;
  cursor: pointer;
}
.packing-sample-btn:hover { color: var(--gold); border-color: var(--gold); }
.packing-empty {
  text-align: center; padding: 20px 0;
  font-size: 12px; color: var(--text-dim);
  font-style: italic;
}
.pack-item-card {
  background: rgba(255,255,255,0.04); border: 1px solid var(--border);
  border-radius: 8px; padding: 8px; margin-bottom: 6px;
}
.pack-item-head {
  display: flex; justify-content: space-between; align-items: center;
  margin-bottom: 6px;
}
.pack-item-name {
  flex: 1; background: transparent; border: none;
  font-size: 13px; font-weight: 600; color: var(--text-bright);
  padding: 2px 4px; border-radius: 4px;
}
.pack-item-name:hover, .pack-item-name:focus {
  background: rgba(255,255,255,0.06); outline: none;
}
.pack-item-del {
  font-size: 14px; color: var(--text-dim); cursor: pointer;
  padding: 2px 6px;
}
.pack-item-del:hover { color: var(--danger); }
.pack-item-dims {
  display: grid; grid-template-columns: auto 1fr auto 1fr auto 1fr auto;
  align-items: center; gap: 4px; margin-bottom: 6px;
  font-size: 11px;
}
.pack-item-dims label { color: var(--text-dim); }
.pack-item-dims input {
  background: rgba(255,255,255,0.06); border: 1px solid var(--border);
  border-radius: 4px; padding: 3px 6px; color: var(--text-bright);
  font-size: 12px; text-align: center; outline: none;
  font-family: 'Courier New', monospace;
}
.pack-item-dims input:focus { border-color: var(--gold); }
.pack-dim-unit { color: var(--text-dim); font-size: 10px; }
.pack-item-meta {
  display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 6px;
  align-items: center;
  font-size: 11px;
}
.pack-item-meta > div { display: flex; align-items: center; gap: 3px; }
.pack-item-meta label { color: var(--text-dim); white-space: nowrap; }
.pack-item-meta input {
  width: 100%; background: rgba(255,255,255,0.06);
  border: 1px solid var(--border); border-radius: 4px;
  padding: 3px 6px; color: var(--text-bright); font-size: 12px;
  text-align: center; outline: none;
}
.pack-item-meta input:focus { border-color: var(--gold); }
.pack-item-meta span { color: var(--text-dim); font-size: 10px; }
.pack-stackable {
  display: flex; align-items: center; gap: 3px;
  font-size: 11px; color: var(--text); cursor: pointer;
  justify-self: end;
}
.pack-stackable input { width: 14px; height: 14px; accent-color: var(--gold); }
.packing-actions {
  display: flex; gap: 8px; margin: 12px 0;
}
.packing-clear-btn {
  flex: 0 0 auto; padding: 10px 16px;
  background: transparent; border: 1px solid var(--border);
  color: var(--text-dim); border-radius: 8px;
  font-size: 13px; cursor: pointer;
}
.packing-calc-btn {
  flex: 1; padding: 10px 16px;
  background: linear-gradient(135deg, var(--gold), #b8960f);
  color: #000; border: none; border-radius: 8px;
  font-size: 14px; font-weight: 700; cursor: pointer;
}
.pack-empty-tip {
  padding: 14px; text-align: center;
  background: rgba(231,76,60,0.08); color: var(--danger);
  border-radius: 8px; font-size: 13px;
}
.pack-result-summary {
  display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 8px;
  margin-bottom: 12px;
}
.pack-sum-item {
  text-align: center; padding: 10px 4px;
  background: rgba(255,255,255,0.04); border-radius: 8px;
  border: 1px solid var(--border);
}
.pack-sum-val {
  font-size: 18px; font-weight: 700; color: var(--text-bright);
  font-family: 'Courier New', monospace;
}
.pack-sum-label { font-size: 11px; color: var(--text-dim); margin-top: 2px; }
.pack-warn {
  padding: 8px 12px; background: rgba(231,76,60,0.08);
  border: 1px solid rgba(231,76,60,0.25); border-radius: 8px;
  color: var(--danger); font-size: 12px; margin-bottom: 12px;
}
.pack-box-list { margin-top: 8px; }
.pack-result-box {
  background: rgba(212,175,55,0.04); border: 1px solid rgba(212,175,55,0.2);
  border-radius: 10px; padding: 10px; margin-bottom: 10px;
}
.pack-result-box-head {
  display: flex; justify-content: space-between; align-items: center;
  margin-bottom: 6px;
}
.pack-result-box-title {
  font-size: 13px; font-weight: 700; color: var(--text-bright);
}
.pack-result-box-rate { font-size: 12px; font-weight: 600; }
.pack-result-box-info {
  display: flex; gap: 10px; font-size: 11px;
  color: var(--text-dim); margin-bottom: 8px;
  flex-wrap: wrap;
}
.pack-result-box-items, .pack-unplaced-list {
  background: rgba(0,0,0,0.2); border-radius: 6px;
  padding: 6px 8px; margin-top: 4px;
}
.pack-result-item {
  display: flex; justify-content: space-between; align-items: center;
  padding: 4px 0; font-size: 12px;
  border-bottom: 1px solid rgba(255,255,255,0.04);
}
.pack-result-item:last-child { border-bottom: none; }
.pack-result-item-dim, .pack-result-item-wt {
  color: var(--text-dim); font-family: 'Courier New', monospace;
  font-size: 11px;
}
.pack-unplaced-title {
  font-size: 12px; color: var(--danger); font-weight: 700;
  margin-bottom: 4px;
}

/* 通讯录工具 */
.contacts-search { margin-bottom: 4px; }
.contacts-search .form-input { font-size: 13px; padding: 8px 12px; }
.contact-item {
  display: flex; align-items: flex-start; gap: 10px;
  padding: 12px; border-radius: 10px; margin-bottom: 8px;
  background: rgba(255,255,255,0.04); border: 1px solid var(--border);
  transition: all .2s;
}
.contact-item:hover { background: rgba(255,255,255,0.06); }
.contact-info { flex: 1; min-width: 0; }
.contact-name {
  font-size: 14px; font-weight: 600; color: var(--text-bright);
  display: flex; align-items: center; gap: 6px;
}
.contact-status {
  font-size: 10px; padding: 1px 5px; border-radius: 4px; font-weight: 500;
}
.contact-status.approved { background: rgba(39,174,96,0.15); color: var(--success); }
.contact-status.pending { background: rgba(243,156,18,0.15); color: #f39c12; }
.contact-sub {
  font-size: 12px; color: var(--text-dim); margin-top: 3px;
}
.contact-actions {
  display: flex; gap: 8px; margin-top: 8px; flex-wrap: wrap;
}
.contact-btn {
  font-size: 12px; padding: 5px 10px; border-radius: 8px;
  display: inline-flex; align-items: center; gap: 4px;
  cursor: pointer; transition: all .2s; text-decoration: none;
}
.contact-btn.call {
  background: rgba(39,174,96,0.1); color: var(--success);
  border: 1px solid rgba(39,174,96,0.2);
}
.contact-btn.call:hover { background: rgba(39,174,96,0.15); }
.contact-btn.wechat {
  background: rgba(39,174,96,0.08); color: #07c160;
  border: 1px solid rgba(7,193,96,0.15);
}
.contact-btn.wechat:hover { background: rgba(7,193,96,0.12); }
.contact-btn.none {
  background: rgba(255,255,255,0.03); color: var(--text-dim);
  border: 1px solid var(--border);
}

.tool-tab-row { display: flex; gap: 8px; margin-bottom: 14px; }
.tool-tab {
  flex: 1; text-align: center; padding: 10px;
  border-radius: 10px; cursor: pointer; font-size: 14px;
  background: rgba(255,255,255,0.04); border: 1px solid var(--border);
  color: var(--text-dim); transition: all .2s;
}
.tool-tab.active {
  background: rgba(212,175,55,0.12); border-color: var(--gold);
  color: var(--gold); font-weight: 600;
}

.tool-shape-row { display: flex; gap: 8px; margin: 12px 0; }
.tool-shape-btn {
  flex: 1; text-align: center; padding: 10px;
  border-radius: 10px; cursor: pointer; font-size: 13px;
  background: rgba(255,255,255,0.04); border: 1px solid var(--border);
  color: var(--text-dim); transition: all .2s;
}
.tool-shape-btn.active {
  background: rgba(212,175,55,0.12); border-color: var(--gold);
  color: var(--gold); font-weight: 600;
}

.tool-cost-row {
  display: flex; justify-content: space-between; align-items: center;
  padding: 6px 0; font-size: 14px; color: var(--text);
}
