:root { color-scheme: light; --bg: #f7fbf4; --bg-ink: #123c34; --paper: #fffdf5; --paper-strong: #ffffff; --paper-soft: #edf7ef; --tray: #dcebe3; --text: #211810; --muted: #65766a; --line: #c7d9cc; --line-strong: #628f7f; --accent: #0d6a54; --accent-strong: #073c31; --turquoise: #249b90; --gold: #a56f18; --gold-soft: #fff0bd; --warning: #8d5f14; --danger: #b33b31; --danger-soft: #ffe1dc; --blush: #c9544a; --blush-soft: #ffe8e3; --success: #257948; --success-soft: #dff3df; --ds-jade-900: #073c31; --ds-jade-700: #0d6a54; --ds-jade-500: #158064; --ds-turquoise-600: #249b90; --ds-turquoise-100: #ddf2ef; --ds-brass-700: #a56f18; --ds-brass-100: #fff0bd; --ds-cinnabar-700: #b33b31; --ds-cinnabar-100: #ffe1dc; --ds-paper-000: #fffdf5; --ds-paper-100: #f7fbf4; --ds-paper-200: #edf7ef; --space-1: 4px; --space-2: 8px; --space-3: 12px; --space-4: 16px; --space-6: 24px; --space-8: 32px; --control-h: 40px; --touch-h: 44px; --motion-fast: 140ms; --motion-medium: 220ms; --shadow: 0 18px 34px rgba(13, 90, 72, 0.1); --shadow-strong: 0 28px 64px rgba(13, 72, 60, 0.19); --radius: 8px; --display-font: "Songti SC", "STSong", "Noto Serif CJK SC", "Source Han Serif SC", Georgia, serif; --body-font: "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif; --num-font: Georgia, "Times New Roman", serif; } * { box-sizing: border-box; } [hidden] { display: none !important; } .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; } body { margin: 0; min-height: 100vh; background: radial-gradient(circle at 8% 7%, rgba(36, 155, 144, 0.2), transparent 25%), radial-gradient(circle at 89% 9%, rgba(255, 230, 172, 0.58), transparent 23%), radial-gradient(circle at 78% 82%, rgba(201, 84, 74, 0.1), transparent 30%), linear-gradient(90deg, rgba(18, 60, 52, 0.035) 1px, transparent 1px) 0 0 / 32px 32px, linear-gradient(0deg, rgba(36, 155, 144, 0.04) 1px, transparent 1px) 0 0 / 32px 32px, linear-gradient(135deg, #fbfff9 0%, #eff8f1 48%, #fffaf0 100%); color: var(--text); font-family: var(--body-font); letter-spacing: 0; } body::before { position: fixed; inset: 0; z-index: -1; pointer-events: none; content: ""; background-image: repeating-linear-gradient(0deg, rgba(36, 26, 20, 0.022) 0, rgba(36, 26, 20, 0.022) 1px, transparent 1px, transparent 5px); mix-blend-mode: multiply; } .mobile-header, .mobile-tabbar { display: none; } .startup-screen { position: fixed; inset: 0; z-index: 1000; display: none; place-items: center; align-content: center; gap: 12px; padding: 24px; background: radial-gradient(circle at 52% 42%, rgba(255, 241, 201, 0.52), transparent 26%), linear-gradient(135deg, #fbfffd 0%, #edf8f3 52%, #fff9ef 100%); color: var(--accent-strong); text-align: center; } .startup-screen span { display: grid; width: 58px; height: 58px; place-items: center; border-radius: var(--radius); background: linear-gradient(145deg, #1d8069, #0a4e3f); color: #fff8e8; font-family: var(--display-font); font-size: 28px; font-weight: 700; box-shadow: 0 14px 30px rgba(13, 107, 88, 0.22); } .startup-screen span img, .landing-logo span img, .brand-mark img { display: block; width: 100%; height: 100%; object-fit: contain; } .startup-screen strong { font-family: var(--display-font); font-size: 18px; } .auth-pending .startup-screen { display: grid; } .auth-pending .auth-gate, .auth-pending .app-shell, .auth-pending .mobile-tabbar { display: none !important; } button, input, select, textarea { font: inherit; } button, a, input, select, textarea { -webkit-tap-highlight-color: transparent; } .app-shell { display: grid; grid-template-columns: 292px minmax(0, 1fr); min-height: 100vh; min-width: 0; } .sidebar { position: sticky; top: 0; height: 100vh; padding: 24px 20px; overflow-y: auto; background: linear-gradient(180deg, rgba(255, 253, 245, 0.98), rgba(232, 246, 238, 0.94)), radial-gradient(circle at 28% 9%, rgba(255, 240, 189, 0.9), transparent 22%); border-right: 1px solid rgba(13, 106, 84, 0.22); box-shadow: 14px 0 42px rgba(13, 90, 72, 0.08); } .brand { position: relative; display: flex; align-items: start; gap: 12px; margin-bottom: 26px; padding: 10px 8px 18px 0; border-bottom: 1px solid rgba(13, 106, 84, 0.18); } .brand::after { position: absolute; right: 0; bottom: -1px; width: 74px; height: 2px; content: ""; background: var(--accent); } .brand-mark { display: grid; width: 50px; height: 50px; place-items: center; border: 1px solid rgba(255, 255, 255, 0.76); border-radius: var(--radius); background: radial-gradient(circle at 30% 22%, rgba(255, 255, 255, 0.42), transparent 28%), linear-gradient(145deg, #238673, #083f34), var(--accent); color: #fff8e8; font-family: var(--display-font); font-size: 24px; font-weight: 700; box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.18), 0 12px 28px rgba(13, 107, 88, 0.24); overflow: hidden; } .brand h1 { margin: 0; color: var(--accent-strong); font-family: var(--display-font); font-size: 18px; line-height: 1.25; } .brand p { margin: 5px 0 0; color: var(--muted); font-size: 12px; line-height: 1.45; } .nav-stack { display: grid; gap: 16px; } .nav-section { display: grid; gap: 7px; } .nav-section-title { margin: 0 0 2px; padding: 0 4px; color: rgba(49, 95, 85, 0.76); font-size: 11px; font-weight: 900; letter-spacing: 0.08em; text-transform: uppercase; } .nav-admin { padding-top: 14px; border-top: 1px solid rgba(13, 107, 88, 0.16); } .nav-button { position: relative; width: 100%; min-height: 44px; padding: 0 13px 0 38px; border: 1px solid transparent; border-radius: var(--radius); background: transparent; color: #514739; text-align: left; cursor: pointer; transition: background 0.16s ease, border-color 0.16s ease, color 0.16s ease, transform 0.16s ease; } .nav-button::before { position: absolute; top: 50%; left: 14px; width: 11px; height: 11px; border: 1px solid rgba(13, 107, 88, 0.48); border-radius: 50%; content: ""; transform: translateY(-50%); } .nav-button:hover, .nav-button.active { border-color: rgba(13, 106, 84, 0.28); background: linear-gradient(90deg, rgba(255, 240, 189, 0.62), rgba(255, 255, 255, 0.92)); color: var(--accent-strong); transform: translateX(2px); } .nav-button.active::before { background: var(--accent); box-shadow: 0 0 0 4px rgba(13, 107, 88, 0.1); } .nav-admin .nav-button { min-height: 38px; color: #665b4d; } .install-panel { position: relative; margin-top: 28px; padding: 15px; border: 1px dashed rgba(165, 111, 24, 0.42); border-radius: var(--radius); background: linear-gradient(135deg, rgba(255, 253, 245, 0.95), rgba(237, 247, 239, 0.9)); } .install-panel h2 { margin: 0 0 10px; color: var(--accent-strong); font-family: var(--display-font); font-size: 15px; } .install-panel ol { margin: 0; padding-left: 18px; color: #675644; font-size: 12px; line-height: 1.8; } .install-panel code { display: block; margin-top: 12px; padding: 10px; border: 1px solid rgba(13, 107, 88, 0.2); border-radius: 6px; background: rgba(13, 107, 88, 0.08); color: var(--accent-strong); font-size: 11px; overflow-wrap: anywhere; } .install-panel .button { width: 100%; min-height: 38px; margin-top: 12px; font-size: 12px; font-weight: 900; } .main { min-width: 0; padding: 22px 24px 28px; } .topbar { position: relative; display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: flex-start; justify-content: space-between; gap: 18px; margin-bottom: 18px; padding: 20px 22px; border: 1px solid rgba(13, 106, 84, 0.18); border-radius: var(--radius); background: linear-gradient(110deg, rgba(255, 253, 245, 0.98), rgba(235, 248, 240, 0.9)), var(--paper); box-shadow: var(--shadow); overflow: hidden; } body[data-view="capture"] .topbar, body[data-view="competitors"] .topbar, body[data-view="suppliers"] .topbar, body[data-view="testing"] .topbar, body[data-view="decisions"] .topbar { margin-bottom: 14px; padding: 16px 20px; } body[data-view="capture"] .topbar h2, body[data-view="competitors"] .topbar h2, body[data-view="suppliers"] .topbar h2, body[data-view="testing"] .topbar h2, body[data-view="decisions"] .topbar h2 { font-size: 29px; } .topbar::before { position: absolute; top: -24px; left: 18px; width: 220px; height: 180px; pointer-events: none; content: ""; background: radial-gradient(circle at 28px 28px, rgba(255, 255, 255, 0.88) 0 8px, rgba(207, 184, 146, 0.3) 9px 10px, transparent 11px), radial-gradient(circle at 92px 78px, rgba(255, 255, 255, 0.7) 0 6px, rgba(207, 184, 146, 0.22) 7px 8px, transparent 9px); opacity: 0.48; } .topbar > * { position: relative; } .eyebrow { margin: 0 0 6px; color: var(--accent); font-size: 11px; font-weight: 800; letter-spacing: 0.09em; text-transform: uppercase; } .topbar h2 { margin: 0; max-width: 680px; color: var(--text); font-family: var(--display-font); font-size: 34px; line-height: 1.18; letter-spacing: 0; } .topbar-subtitle { margin: 8px 0 0; max-width: 590px; color: var(--muted); font-size: 14px; line-height: 1.5; } .topbar-signals { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 13px; } .topbar-signals span { display: inline-flex; align-items: center; min-height: 26px; padding: 0 9px; border: 1px solid rgba(13, 106, 84, 0.15); border-radius: var(--radius); background: rgba(255, 255, 255, 0.72); color: #315f55; font-size: 11px; font-weight: 900; } .topbar-signals span:nth-child(2) { border-color: rgba(165, 111, 24, 0.26); background: var(--ds-brass-100); color: var(--ds-brass-700); } .topbar-actions { display: flex; gap: 8px; flex-wrap: wrap; justify-content: flex-end; } .session-badge { display: inline-flex; align-items: center; min-height: 38px; max-width: 172px; padding: 0 10px; border: 1px solid rgba(13, 107, 88, 0.18); border-radius: var(--radius); background: rgba(255, 255, 255, 0.76); color: var(--accent-strong); font-size: 12px; font-weight: 800; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .button { display: inline-flex; align-items: center; justify-content: center; min-height: 40px; padding: 0 13px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--paper-strong); color: var(--text); text-decoration: none; cursor: pointer; white-space: nowrap; box-shadow: 0 4px 0 rgba(13, 90, 72, 0.09); transition: transform 0.16s ease, box-shadow 0.16s ease, background 0.16s ease, border-color 0.16s ease; } .topbar .button { min-height: 38px; padding: 0 12px; } .button:hover, .icon-button:hover, .card-actions button:hover, .card-actions a:hover, .compact-item:hover { transform: translateY(-1px); } .button.primary { border-color: var(--ds-jade-700); background: linear-gradient(180deg, var(--ds-jade-500), #0a5b49); color: #fffaf0; box-shadow: 0 8px 18px rgba(13, 107, 88, 0.18); } .button.primary:hover { background: var(--accent-strong); } .button.secondary { background: rgba(255, 255, 255, 0.92); color: var(--text); } .button.danger { border-color: var(--ds-cinnabar-700); background: var(--ds-cinnabar-700); color: #fffaf0; } .button.danger:hover { background: #8d2b24; } .icon-button { display: inline-flex; align-items: center; justify-content: center; min-height: 36px; padding: 0 11px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--paper-strong); color: var(--text); box-shadow: 0 4px 0 rgba(13, 107, 88, 0.1); } .button:focus-visible, .icon-button:focus-visible, .nav-button:focus-visible, .mobile-tab:focus-visible, .compact-item:focus-visible, .card-actions button:focus-visible, .card-actions a:focus-visible { outline: 3px solid rgba(42, 156, 145, 0.28); outline-offset: 2px; } .button:disabled { cursor: not-allowed; opacity: 0.46; transform: none; } .auth-gate { display: grid; min-height: 100vh; padding: 18px 20px 26px; background: radial-gradient(circle at 86% 16%, rgba(255, 240, 189, 0.82), transparent 24%), radial-gradient(circle at 8% 14%, rgba(36, 155, 144, 0.2), transparent 24%), linear-gradient(90deg, rgba(18, 60, 52, 0.035) 1px, transparent 1px) 0 0 / 32px 32px, linear-gradient(0deg, rgba(36, 155, 144, 0.04) 1px, transparent 1px) 0 0 / 32px 32px, linear-gradient(135deg, #fbfff9 0%, #eff8f1 50%, #fff7e5 100%); } .landing-open .app-shell { display: none; } .landing-open .mobile-tabbar { display: none !important; } .landing-nav { display: flex; align-items: center; justify-content: space-between; gap: 16px; max-width: 1320px; width: 100%; margin: 0 auto 14px; padding: 6px 0; } .landing-logo { display: inline-flex; align-items: center; gap: 10px; color: var(--accent-strong); text-decoration: none; } .landing-logo span { display: grid; width: 44px; height: 44px; place-items: center; border-radius: var(--radius); background: radial-gradient(circle at 30% 20%, rgba(255, 255, 255, 0.44), transparent 28%), linear-gradient(145deg, #238673, #083f34); color: #fff8e8; font-family: var(--display-font); font-size: 22px; font-weight: 700; box-shadow: 0 12px 28px rgba(13, 107, 88, 0.22); overflow: hidden; } .landing-logo strong { font-family: var(--display-font); font-size: 18px; } .landing-links { display: flex; gap: 18px; margin: 0 auto; } .landing-links a, .landing-links button { border: 0; background: transparent; color: var(--muted); font-size: 13px; font-weight: 800; font-family: inherit; text-decoration: none; cursor: pointer; } .landing-links a:hover, .landing-links button:hover { color: var(--accent-strong); } .landing-nav-actions, .landing-actions { display: flex; flex-wrap: wrap; gap: 10px; justify-content: flex-end; } .landing-main { display: grid; gap: 14px; max-width: 1320px; width: 100%; margin: 0 auto; } .landing-hero, .landing-flow, .landing-signals { border: 1px solid rgba(13, 106, 84, 0.18); border-radius: var(--radius); background: rgba(255, 253, 247, 0.93); box-shadow: var(--shadow); } .landing-hero { position: relative; display: grid; grid-template-columns: minmax(0, 0.96fr) minmax(420px, 0.84fr); gap: 26px; align-items: start; min-height: min(590px, calc(100vh - 142px)); padding: 30px 34px 28px; overflow: hidden; } .landing-hero::after { position: absolute; left: 33%; bottom: -110px; color: rgba(13, 106, 84, 0.055); font-family: var(--display-font); font-size: 410px; line-height: 1; content: "饰"; } .landing-hero > * { position: relative; z-index: 1; } .landing-hero-copy { display: grid; align-content: start; min-width: 0; padding: 8px 4px 8px 6px; } .landing-hero h1 { max-width: 720px; margin: 12px 0 0; color: var(--accent-strong); font-family: var(--display-font); font-size: clamp(50px, 4.72vw, 74px); line-height: 1.01; } .landing-route { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; max-width: 720px; margin: 4px 0 0; } .landing-route span { display: inline-flex; align-items: center; min-height: 30px; padding: 0 10px; border: 1px solid rgba(13, 106, 84, 0.14); border-radius: var(--radius); background: rgba(255, 255, 255, 0.76); color: #315f55; font-size: 12px; font-weight: 900; } .landing-route span:nth-child(5) { border-color: rgba(165, 111, 24, 0.28); background: var(--gold-soft); color: var(--gold); } .landing-route i { width: 18px; height: 1px; background: rgba(13, 106, 84, 0.34); } .landing-lead { max-width: 690px; margin: 17px 0 0; color: #4d655b; font-size: 17px; line-height: 1.72; } .landing-signal-panel { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; max-width: 720px; margin-top: 22px; } .landing-signal-panel div { min-width: 0; padding: 12px 13px; border: 1px solid rgba(13, 106, 84, 0.14); border-radius: var(--radius); background: linear-gradient(180deg, rgba(255, 255, 255, 0.92), rgba(237, 247, 239, 0.76)), var(--paper-strong); } .landing-signal-panel span, .landing-signal-panel em { display: block; color: var(--muted); font-size: 11px; font-style: normal; line-height: 1.45; } .landing-signal-panel strong { display: block; margin: 5px 0 3px; color: var(--accent-strong); font-family: var(--display-font); font-size: 19px; line-height: 1.2; } .landing-actions { justify-content: flex-start; margin-top: 22px; } .landing-metrics { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin-top: 22px; } .landing-metrics div { min-width: 0; padding: 14px; border: 1px solid rgba(13, 106, 84, 0.14); border-radius: var(--radius); background: linear-gradient(90deg, rgba(36, 155, 144, 0.08), transparent), rgba(237, 247, 239, 0.86); } .landing-metrics strong { display: block; color: var(--accent-strong); font-family: var(--display-font); font-size: 17px; } .landing-metrics span { display: block; margin-top: 5px; color: var(--muted); font-size: 12px; line-height: 1.45; } .landing-product-shot { position: relative; z-index: 1; display: grid; gap: 10px; align-content: start; min-width: 0; padding: 12px; border: 1px solid rgba(13, 106, 84, 0.18); border-radius: var(--radius); background: linear-gradient(180deg, rgba(247, 255, 250, 0.94), rgba(255, 251, 238, 0.92)), var(--paper); box-shadow: var(--shadow-strong); } .buyer-board-image { display: block; width: 100%; aspect-ratio: 1.52; object-fit: cover; border: 1px solid rgba(13, 106, 84, 0.16); border-radius: var(--radius); box-shadow: 0 18px 34px rgba(13, 90, 72, 0.13); } .product-shot-top { display: flex; align-items: center; justify-content: space-between; gap: 12px; color: var(--muted); font-size: 12px; } .product-shot-top strong { color: var(--accent-strong); font-family: var(--display-font); font-size: 18px; } .product-shot-stats { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; } .product-shot-stats div, .product-shot-table div { padding: 10px; border: 1px solid rgba(13, 106, 84, 0.13); border-radius: var(--radius); background: rgba(237, 247, 239, 0.84); } .product-shot-stats span, .product-shot-table span { display: block; color: var(--muted); font-size: 11px; } .product-shot-stats strong, .product-shot-table strong { display: block; margin-top: 4px; color: var(--accent-strong); font-family: var(--num-font); font-size: 22px; } .product-shot-card { display: grid; grid-template-columns: 92px minmax(0, 1fr); gap: 12px; align-items: center; padding: 12px; border: 1px solid rgba(165, 111, 24, 0.28); border-radius: var(--radius); background: var(--gold-soft); } .shot-image { display: grid; width: 92px; aspect-ratio: 1; place-items: center; border-radius: var(--radius); background: radial-gradient(circle at 36% 30%, rgba(255, 255, 255, 0.9), transparent 26%), linear-gradient(145deg, #249b90, #0d6a54); color: rgba(255, 255, 255, 0.9); font-family: var(--display-font); font-size: 44px; } .product-shot-card p { margin: 0; color: var(--text); font-family: var(--display-font); font-size: 18px; line-height: 1.25; } .product-shot-card strong, .product-shot-card span { display: block; margin-top: 4px; color: var(--accent-strong); font-size: 12px; } .product-shot-card span { color: var(--muted); } .product-shot-table { display: grid; gap: 8px; } .product-shot-table div { display: flex; align-items: center; justify-content: space-between; } .product-shot-table strong { margin: 0; font-size: 13px; text-align: right; } .landing-flow, .landing-signals { display: grid; gap: 16px; padding: 24px; } .landing-section-head { display: flex; align-items: end; justify-content: space-between; gap: 16px; } .landing-section-head h2 { max-width: 720px; margin: 0; color: var(--accent-strong); font-family: var(--display-font); font-size: 30px; line-height: 1.25; } .flow-rail, .signal-board { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; } .flow-rail article, .signal-board article { min-width: 0; min-height: 164px; padding: 15px; border: 1px solid rgba(13, 106, 84, 0.15); border-radius: var(--radius); background: linear-gradient(180deg, rgba(255, 255, 255, 0.95), rgba(237, 247, 239, 0.76)); } .flow-rail span, .signal-board span { color: var(--gold); font-family: var(--num-font); font-size: 13px; } .flow-rail h3, .signal-board strong { display: block; margin: 10px 0 0; color: var(--text); font-family: var(--display-font); font-size: 20px; } .flow-rail p, .signal-board p { margin: 10px 0 0; color: var(--muted); font-size: 13px; line-height: 1.65; } .signal-board span { display: block; margin-top: 7px; } .auth-dialog { width: min(500px, calc(100vw - 32px)); overflow: hidden; border-color: rgba(13, 107, 88, 0.24); background: linear-gradient(160deg, rgba(255, 255, 255, 0.98), rgba(246, 255, 250, 0.96)), var(--paper-strong); box-shadow: 0 34px 90px rgba(13, 72, 60, 0.26); } .auth-dialog-card { display: grid; gap: 16px; padding: 28px; } .auth-dialog-copy { position: relative; display: grid; align-content: center; padding-right: 34px; } .auth-dialog-copy::after { position: absolute; right: 0; top: 5px; display: grid; width: 46px; height: 46px; place-items: center; border: 1px solid rgba(177, 120, 25, 0.24); border-radius: var(--radius); background: var(--gold-soft); color: var(--gold); font-family: var(--display-font); font-size: 23px; content: "饰"; } .auth-dialog-copy h2 { margin: 0; color: var(--accent-strong); font-family: var(--display-font); font-size: 28px; line-height: 1.2; } .auth-dialog-copy p:last-child { margin: 8px 0 0; color: var(--muted); font-size: 14px; line-height: 1.6; } .auth-card { display: grid; align-content: start; gap: 14px; min-width: 0; padding: 16px; border: 1px solid rgba(13, 107, 88, 0.14); border-radius: var(--radius); background: linear-gradient(180deg, rgba(234, 246, 241, 0.58), rgba(255, 255, 255, 0.9)), var(--paper-strong); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.78); } .auth-card h3 { margin: 0; font-family: var(--display-font); font-size: 20px; } .auth-card label, .settings-panel label, .plugin-config label, .rule-block label { display: grid; gap: 6px; color: var(--muted); font-size: 12px; } .auth-card span, .settings-panel label span, .plugin-config label span, .rule-block label span { color: #315f55; font-weight: 800; } .auth-card input, .settings-panel input, .settings-panel textarea, .plugin-config input, .rule-block input, .rule-block textarea { width: 100%; min-height: 39px; border: 1px solid rgba(13, 107, 88, 0.2); border-radius: var(--radius); background: #fff; color: var(--text); padding: 8px 10px; } .auth-card input:focus, .settings-panel input:focus, .settings-panel textarea:focus, .plugin-config input:focus, .rule-block input:focus, .rule-block textarea:focus { border-color: var(--turquoise); outline: 3px solid rgba(42, 156, 145, 0.16); } .auth-card .button { min-height: 46px; margin-top: 2px; font-weight: 900; } .auth-switch-line { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 6px; min-height: 24px; margin: 0; color: var(--muted); font-size: 13px; } .auth-switch-line button { border: 0; background: transparent; color: var(--accent-strong); cursor: pointer; font: inherit; font-weight: 900; text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 4px; } .auth-switch-line button:focus-visible { border-radius: 4px; outline: 3px solid rgba(42, 156, 145, 0.22); outline-offset: 2px; } .auth-message { min-height: 18px; margin: 0; text-align: center; color: var(--danger); font-size: 12px; } .stats-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin-bottom: 18px; } .stat-card { position: relative; min-height: 108px; padding: 16px 16px 15px; border: 1px solid rgba(13, 106, 84, 0.16); border-radius: var(--radius); background: linear-gradient(180deg, rgba(255, 253, 245, 0.96), rgba(238, 249, 242, 0.92)); box-shadow: var(--shadow); overflow: hidden; } .stat-card::after { position: absolute; right: 13px; bottom: 10px; color: rgba(13, 106, 84, 0.1); font-family: var(--display-font); font-size: 42px; content: "采"; } .stat-card:nth-child(2)::after { content: "样"; } .stat-card:nth-child(3)::after { content: "源"; } .stat-card:nth-child(4)::after { content: "配"; } .stat-card span { display: block; margin-bottom: 11px; color: var(--muted); font-size: 12px; } .stat-card strong { position: relative; z-index: 1; color: var(--accent-strong); font-family: var(--num-font); font-size: 38px; line-height: 1; } body[data-view="capture"] .stats-grid, body[data-view="competitors"] .stats-grid, body[data-view="suppliers"] .stats-grid, body[data-view="testing"] .stats-grid, body[data-view="decisions"] .stats-grid { gap: 9px; margin-bottom: 12px; } body[data-view="capture"] .stat-card, body[data-view="competitors"] .stat-card, body[data-view="suppliers"] .stat-card, body[data-view="testing"] .stat-card, body[data-view="decisions"] .stat-card { min-height: 78px; padding: 12px 14px; } body[data-view="capture"] .stat-card span, body[data-view="competitors"] .stat-card span, body[data-view="suppliers"] .stat-card span, body[data-view="testing"] .stat-card span, body[data-view="decisions"] .stat-card span { margin-bottom: 6px; } body[data-view="capture"] .stat-card strong, body[data-view="competitors"] .stat-card strong, body[data-view="suppliers"] .stat-card strong, body[data-view="testing"] .stat-card strong, body[data-view="decisions"] .stat-card strong { font-size: 31px; } body[data-view="capture"] .stat-card::after, body[data-view="competitors"] .stat-card::after, body[data-view="suppliers"] .stat-card::after, body[data-view="testing"] .stat-card::after, body[data-view="decisions"] .stat-card::after { font-size: 34px; } .workbench-panel { margin-bottom: 16px; min-width: 0; } .module-hero { position: relative; display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 18px; align-items: end; min-width: 0; margin-bottom: 14px; padding: 20px 22px; border: 1px solid rgba(13, 106, 84, 0.18); border-radius: var(--radius); background: linear-gradient(115deg, rgba(255, 253, 245, 0.98), rgba(235, 248, 240, 0.92) 58%, rgba(255, 240, 189, 0.68)), var(--paper); box-shadow: var(--shadow); overflow: hidden; } .module-hero::after { position: absolute; right: 18px; top: 14px; width: 126px; height: 104px; pointer-events: none; content: ""; background: radial-gradient(circle, rgba(255, 255, 255, 0.92) 0 7px, rgba(177, 120, 25, 0.22) 8px 10px, transparent 11px), radial-gradient(circle at 68px 52px, rgba(42, 156, 145, 0.18) 0 9px, transparent 10px); opacity: 0.74; } .module-hero > * { position: relative; z-index: 1; } .module-hero h3 { margin: 0; color: var(--accent-strong); font-family: var(--display-font); font-size: 30px; line-height: 1.18; } .module-hero p:not(.eyebrow) { max-width: 780px; margin: 8px 0 0; color: var(--muted); font-size: 14px; line-height: 1.65; } .hero-command { display: flex; align-items: center; justify-content: flex-end; gap: 10px; min-width: 0; flex-wrap: wrap; } .hero-chip { display: inline-flex; align-items: center; min-height: 34px; padding: 0 10px; border: 1px solid rgba(36, 155, 144, 0.2); border-radius: var(--radius); background: #ddf2ef; color: #0b5f54; font-size: 12px; font-weight: 900; white-space: nowrap; } .hero-chip.gold { border-color: rgba(165, 111, 24, 0.3); background: var(--gold-soft); color: var(--gold); } .hero-command strong { color: var(--accent-strong); font-family: var(--num-font); font-size: 36px; line-height: 1; } .hero-command span { color: var(--muted); font-size: 12px; font-weight: 800; } .rule-save-card { display: grid; justify-items: end; min-width: min(320px, 100%); max-width: 380px; padding: 12px; border: 1px solid rgba(13, 106, 84, 0.16); border-radius: var(--radius); background: linear-gradient(135deg, rgba(255, 255, 255, 0.82), rgba(255, 240, 189, 0.42)), rgba(255, 255, 255, 0.68); box-shadow: 0 12px 26px rgba(13, 90, 72, 0.08); } .rule-save-card > div { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; } .rule-save-card p { max-width: 280px; margin: 8px 0 10px; color: #315f55; font-size: 12px; line-height: 1.45; text-align: right; } .workflow-strip { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 10px; margin-bottom: 14px; } .workflow-step { position: relative; min-width: 0; min-height: 84px; padding: 13px 13px 12px; border: 1px solid rgba(13, 106, 84, 0.16); border-radius: var(--radius); background: rgba(255, 253, 247, 0.92); box-shadow: var(--shadow); overflow: hidden; } .workflow-step::after { position: absolute; right: -10px; bottom: -18px; color: rgba(13, 107, 88, 0.08); font-family: var(--display-font); font-size: 76px; content: "饰"; } .workflow-step span, .workflow-step strong, .workflow-step em { position: relative; z-index: 1; } .workflow-step span { display: block; color: var(--gold); font-family: var(--num-font); font-size: 13px; } .workflow-step strong { display: block; margin-top: 8px; color: var(--text); font-size: 14px; } .workflow-step em { display: block; margin-top: 4px; color: var(--accent-strong); font-family: var(--num-font); font-size: 22px; font-style: normal; } .capture-command { display: grid; grid-template-columns: 1fr 1fr 1.1fr; gap: 12px; margin-bottom: 14px; } .capture-steps { display: grid; gap: 8px; margin-top: 12px; } .capture-steps .workflow-step { min-height: 68px; box-shadow: none; } .decision-kpis { display: grid; grid-template-columns: repeat(3, minmax(96px, 1fr)); gap: 8px; min-width: 330px; } .decision-panel { margin-bottom: 14px; } .decision-table { display: grid; gap: 8px; } .decision-row { display: grid; grid-template-columns: minmax(220px, 1fr) 78px 150px 96px; gap: 12px; align-items: center; width: 100%; min-height: 58px; padding: 10px 12px; border: 1px solid rgba(13, 107, 88, 0.15); border-radius: var(--radius); background: #fff; color: var(--text); text-align: left; cursor: pointer; box-shadow: 0 5px 14px rgba(13, 107, 88, 0.07); transition: border-color 0.16s ease, transform 0.16s ease, box-shadow 0.16s ease; } .decision-row:hover { border-color: rgba(13, 107, 88, 0.42); transform: translateY(-1px); box-shadow: 0 12px 24px rgba(13, 107, 88, 0.12); } .decision-row > span:not(.decision-main) { color: var(--accent-strong); font-size: 12px; font-weight: 800; text-align: right; } .decision-main { display: grid; gap: 4px; min-width: 0; } .decision-main strong { overflow: hidden; color: var(--text); font-family: var(--display-font); font-size: 15px; text-overflow: ellipsis; white-space: nowrap; } .decision-main small { overflow: hidden; color: var(--muted); font-size: 12px; text-overflow: ellipsis; white-space: nowrap; } .admin-layout { grid-template-columns: 1fr; } .panel-grid { display: grid; grid-template-columns: 1.2fr 1fr 1fr; gap: 12px; margin-bottom: 12px; min-width: 0; } .decision-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } .panel { min-width: 0; padding: 16px; border: 1px solid rgba(13, 106, 84, 0.16); border-radius: var(--radius); background: rgba(255, 253, 247, 0.93); box-shadow: var(--shadow); overflow-wrap: anywhere; } .panel-risk { border-color: rgba(179, 59, 49, 0.28); background: linear-gradient(180deg, #fffefe, var(--blush-soft)); } .settings-grid { display: grid; gap: 14px; } .settings-panel { overflow: visible; } .settings-empty { display: flex; align-items: center; justify-content: space-between; gap: 16px; } .admin-kpi-grid { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 12px; margin-bottom: 14px; } .admin-kpi-card { position: relative; min-width: 0; min-height: 112px; padding: 15px; border: 1px solid rgba(13, 106, 84, 0.16); border-radius: var(--radius); background: linear-gradient(135deg, rgba(255, 253, 245, 0.98), rgba(221, 242, 239, 0.78)), var(--paper-strong); box-shadow: var(--shadow); overflow: hidden; } .admin-kpi-card::after { position: absolute; right: 10px; bottom: -12px; color: rgba(13, 106, 84, 0.08); font-family: var(--display-font); font-size: 76px; content: "管"; } .admin-kpi-card:nth-child(2)::after { content: "户"; } .admin-kpi-card:nth-child(3)::after { content: "停"; } .admin-kpi-card:nth-child(4)::after { content: "采"; } .admin-kpi-card:nth-child(5)::after { content: "分"; } .admin-kpi-card:nth-child(6)::after { content: "AI"; } .admin-kpi-card span, .admin-kpi-card strong, .admin-kpi-card em { position: relative; z-index: 1; display: block; } .admin-kpi-card span { color: var(--muted); font-size: 12px; font-weight: 800; } .admin-kpi-card strong { margin-top: 12px; color: var(--accent-strong); font-family: var(--num-font); font-size: 36px; line-height: 1; } .admin-kpi-card em { margin-top: 8px; color: #315f55; font-size: 12px; font-style: normal; line-height: 1.45; } .admin-center-panel { margin-bottom: 14px; } .ai-engine-panel { position: relative; overflow: hidden; border-color: rgba(36, 155, 144, 0.24); background: linear-gradient(135deg, rgba(255, 253, 245, 0.98), rgba(221, 242, 239, 0.84) 54%, rgba(255, 240, 189, 0.52)), var(--paper); } .ai-engine-panel::after { position: absolute; right: 16px; bottom: -28px; color: rgba(13, 106, 84, 0.06); font-family: var(--display-font); font-size: 140px; line-height: 1; content: "智"; pointer-events: none; } .ai-engine-panel > * { position: relative; z-index: 1; } .ai-settings-grid { display: grid; grid-template-columns: 1.1fr repeat(4, minmax(150px, 1fr)); gap: 10px; margin-top: 14px; } .ai-settings-grid label, .ai-prompt-label { display: grid; gap: 6px; color: var(--muted); font-size: 12px; } .ai-settings-grid label span, .ai-prompt-label span { color: #315f55; font-weight: 900; } .ai-settings-grid input, .ai-prompt-label textarea { width: 100%; min-height: 40px; padding: 8px 10px; border: 1px solid rgba(13, 107, 88, 0.2); border-radius: var(--radius); background: rgba(255, 255, 255, 0.94); color: var(--text); } .ai-prompt-label textarea { min-height: 132px; resize: vertical; line-height: 1.6; } .ai-settings-grid input:focus, .ai-prompt-label textarea:focus { border-color: var(--turquoise); outline: 3px solid rgba(42, 156, 145, 0.16); } .ai-toggle-card { grid-row: span 2; align-content: stretch; min-height: 118px; padding: 13px; border: 1px solid rgba(13, 106, 84, 0.18); border-radius: var(--radius); background: linear-gradient(180deg, rgba(255, 255, 255, 0.94), rgba(221, 242, 239, 0.74)); } .ai-toggle-card input { width: 22px; min-height: 22px; accent-color: var(--accent); } .ai-toggle-card strong, .ai-toggle-card em { display: block; } .ai-toggle-card strong { margin-top: 8px; color: var(--accent-strong); font-family: var(--display-font); font-size: 18px; } .ai-toggle-card em { margin-top: 6px; color: var(--muted); font-size: 12px; font-style: normal; line-height: 1.55; } .ai-prompt-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin-top: 12px; } .ai-admin-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-top: 13px; } .ai-admin-actions span { color: #315f55; font-size: 12px; font-weight: 800; } .admin-sync-state { display: inline-flex; align-items: center; min-height: 32px; padding: 0 10px; border: 1px solid rgba(13, 106, 84, 0.16); border-radius: var(--radius); background: var(--paper-soft); color: var(--accent-strong); font-size: 12px; font-weight: 900; white-space: nowrap; } .admin-user-table, .token-list, .credit-code-list { display: grid; gap: 9px; } .admin-user-row, .token-card, .credit-code-row { display: grid; gap: 12px; align-items: center; min-width: 0; padding: 12px; border: 1px solid rgba(13, 106, 84, 0.14); border-radius: var(--radius); background: linear-gradient(90deg, rgba(255, 255, 255, 0.95), rgba(237, 247, 239, 0.7)), var(--paper-strong); box-shadow: 0 8px 18px rgba(13, 107, 88, 0.07); } .admin-user-row { grid-template-columns: minmax(220px, 1.15fr) minmax(130px, 0.6fr) minmax(160px, 0.72fr) minmax(160px, 0.76fr) auto; } .token-card { grid-template-columns: minmax(220px, 1fr) minmax(190px, 0.9fr) auto; } .credit-code-row { grid-template-columns: minmax(240px, 1fr) auto minmax(170px, 0.6fr) auto; } .admin-user-row.is-disabled, .token-card.is-disabled, .credit-code-row.is-disabled { border-color: rgba(179, 59, 49, 0.2); background: linear-gradient(90deg, rgba(255, 246, 243, 0.98), rgba(255, 253, 245, 0.86)), var(--paper-strong); } .admin-user-main, .token-card-main { display: grid; grid-template-columns: 12px minmax(0, 1fr); gap: 10px; align-items: center; min-width: 0; } .admin-user-main strong, .token-card-main strong { display: block; overflow: hidden; color: var(--text); font-family: var(--display-font); font-size: 16px; text-overflow: ellipsis; white-space: nowrap; } .admin-user-main small, .token-card-main small { display: block; margin-top: 4px; overflow: hidden; color: var(--muted); font-size: 12px; text-overflow: ellipsis; white-space: nowrap; } .status-dot { width: 10px; height: 10px; border-radius: 50%; background: var(--success); box-shadow: 0 0 0 4px rgba(37, 121, 72, 0.12); } .status-dot.danger { background: var(--danger); box-shadow: 0 0 0 4px rgba(179, 59, 49, 0.12); } .status-dot.success { background: var(--success); } .admin-user-meta, .token-card-actions { display: flex; flex-wrap: wrap; gap: 7px; align-items: center; } .role-chip { display: inline-flex; align-items: center; min-height: 26px; padding: 0 8px; border: 1px solid rgba(36, 155, 144, 0.2); border-radius: var(--radius); background: var(--ds-turquoise-100); color: #0b5f54; font-size: 12px; font-weight: 900; } .role-chip.gold { border-color: rgba(165, 111, 24, 0.28); background: var(--gold-soft); color: var(--gold); } .role-chip.success { border-color: rgba(37, 121, 72, 0.2); background: var(--success-soft); color: var(--success); } .role-chip.danger { border-color: rgba(179, 59, 49, 0.22); background: var(--danger-soft); color: var(--danger); } .admin-user-counts, .token-card-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(70px, 1fr)); gap: 7px; } .admin-user-counts div, .token-card-stats div { min-width: 0; padding: 8px; border: 1px solid rgba(13, 106, 84, 0.12); border-radius: var(--radius); background: rgba(237, 247, 239, 0.78); } .admin-user-counts span, .token-card-stats span { display: block; color: var(--muted); font-size: 11px; } .admin-user-counts strong, .token-card-stats strong { display: block; margin-top: 4px; overflow: hidden; color: var(--accent-strong); font-family: var(--num-font); font-size: 15px; text-overflow: ellipsis; white-space: nowrap; } .admin-user-time { display: grid; gap: 4px; color: var(--muted); font-size: 11px; line-height: 1.4; } .admin-empty-state { display: grid; justify-items: center; gap: 8px; min-height: 220px; padding: 34px 18px; border: 1px dashed rgba(13, 107, 88, 0.26); border-radius: var(--radius); background: radial-gradient(circle at 50% 0%, rgba(255, 240, 189, 0.48), transparent 28%), rgba(237, 247, 239, 0.62); text-align: center; } .admin-empty-state span { display: grid; width: 48px; height: 48px; place-items: center; border-radius: var(--radius); background: linear-gradient(145deg, #238673, #083f34); color: #fff8e8; font-family: var(--display-font); font-size: 24px; } .admin-empty-state strong { color: var(--accent-strong); font-family: var(--display-font); font-size: 20px; } .admin-empty-state p { margin: 0; color: var(--muted); font-size: 13px; } .credit-code-form, .credit-redeem-form { display: grid; grid-template-columns: minmax(150px, 0.34fr) minmax(220px, 1fr) auto; gap: 10px; align-items: end; } .credit-code-form label { display: grid; gap: 6px; color: var(--muted); font-size: 12px; } .credit-code-form label span { color: #315f55; font-weight: 800; } .credit-code-form input, .credit-redeem-form input { width: 100%; min-height: 39px; border: 1px solid rgba(13, 107, 88, 0.2); border-radius: var(--radius); background: #fff; color: var(--text); padding: 8px 10px; } .credit-code-list { margin-top: 12px; } .credit-code-row > div { min-width: 0; } .credit-code-row strong:first-child { display: block; overflow: hidden; color: var(--accent-strong); font-family: var(--num-font); font-size: 15px; text-overflow: ellipsis; white-space: nowrap; } .credit-code-row small { display: block; margin-top: 4px; overflow: hidden; color: var(--muted); font-size: 12px; text-overflow: ellipsis; white-space: nowrap; } .credit-code-row > strong:last-of-type { color: var(--accent-strong); font-family: var(--num-font); text-align: right; } .credit-redeem-panel { display: grid; gap: 12px; margin-top: 16px; padding: 14px; border: 1px solid rgba(165, 111, 24, 0.24); border-radius: var(--radius); background: linear-gradient(90deg, rgba(255, 240, 189, 0.48), rgba(221, 242, 239, 0.38)), rgba(255, 253, 247, 0.92); } .credit-redeem-panel h3 { margin: 0; } .credit-redeem-form { grid-template-columns: minmax(220px, 1fr) auto; } .account-actions { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 14px; } .settings-empty-actions { display: flex; flex-wrap: wrap; gap: 10px; justify-content: flex-end; } .extension-package-panel { display: grid; gap: 14px; } .extension-package-card { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 12px; align-items: center; padding: 14px; border: 1px solid rgba(13, 107, 88, 0.16); border-radius: var(--radius); background: linear-gradient(90deg, rgba(237, 247, 239, 0.84), rgba(255, 253, 245, 0.86)); } .extension-package-card span, .extension-package-card small { display: block; color: var(--muted); font-size: 12px; line-height: 1.45; } .extension-package-card strong { display: block; margin: 3px 0; color: var(--accent-strong); font-family: var(--display-font); font-size: 22px; } .extension-package-card small { overflow-wrap: anywhere; } .extension-install-steps { margin: 0; padding-left: 18px; color: #4d655b; font-size: 13px; line-height: 1.8; } .extension-install-steps code { padding: 2px 5px; border-radius: 5px; background: rgba(13, 107, 88, 0.08); color: var(--accent-strong); } .plugin-config { display: grid; grid-template-columns: minmax(220px, 1fr) minmax(220px, 1fr) auto; gap: 10px; align-items: end; margin: 12px 0; } .rules-layout { display: grid; grid-template-columns: minmax(360px, 1.2fr) minmax(260px, 0.8fr); gap: 12px; } .rule-block { min-width: 0; padding: 12px; border: 1px solid rgba(13, 107, 88, 0.14); border-radius: var(--radius); background: #f8fffc; } .track-rules-editor { display: grid; gap: 9px; margin-top: 10px; } .track-rule-row { display: grid; grid-template-columns: minmax(110px, 0.42fr) minmax(180px, 1fr) auto; gap: 8px; align-items: end; min-width: 0; } .compact-button { min-height: 34px; padding: 0 10px; font-size: 12px; box-shadow: none; } .profit-rule-grid { grid-template-columns: repeat(5, minmax(110px, 1fr)); grid-column: 1 / -1; } .panel h3, .panel h4 { margin: 0; color: var(--text); font-family: var(--display-font); } .panel h3 { font-size: 20px; } .panel-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; margin-bottom: 12px; } .panel-head p, .muted { margin: 4px 0 0; color: var(--muted); font-size: 13px; line-height: 1.55; } .mini-stats { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin-top: 12px; } .mini-stat, .metric-row { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 9px 10px; border: 1px solid rgba(13, 106, 84, 0.12); border-radius: var(--radius); background: linear-gradient(90deg, rgba(36, 155, 144, 0.08), transparent), var(--paper-soft); } .mini-stat span, .metric-row span { color: var(--muted); font-size: 12px; } .mini-stat strong, .metric-row strong { color: var(--text); font-family: var(--num-font); font-size: 18px; } .action-list { margin: 12px 0 0; padding-left: 18px; color: var(--text); font-size: 14px; line-height: 1.75; } .compact-list, .pipeline-list, .group-list, .metric-list { display: grid; gap: 8px; margin-top: 12px; } .compact-item { display: flex; align-items: center; justify-content: space-between; gap: 12px; width: 100%; min-width: 0; min-height: 44px; padding: 9px 11px; border: 1px solid rgba(13, 106, 84, 0.16); border-radius: var(--radius); background: var(--paper-strong); color: var(--text); text-align: left; cursor: pointer; box-shadow: 0 5px 12px rgba(13, 107, 88, 0.07); } .compact-item span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .compact-item strong { flex: none; color: var(--accent-strong); font-family: var(--num-font); font-size: 13px; } .pipeline-item, .group-card { display: grid; gap: 12px; padding: 13px; border: 1px solid rgba(13, 107, 88, 0.16); border-radius: var(--radius); background: var(--paper-strong); } .pipeline-item { grid-template-columns: minmax(0, 1fr) auto; align-items: center; } .pipeline-item h4 { margin: 0 0 4px; font-family: var(--display-font); font-size: 16px; } .pipeline-item p { margin: 0; color: var(--muted); font-size: 13px; } .pipeline-actions { display: flex; flex-wrap: wrap; gap: 8px; justify-content: flex-end; } .group-items { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 8px; } .group-summary { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; } .group-summary span, .group-summary strong { display: inline-flex; align-items: center; min-height: 26px; padding: 0 8px; border: 1px solid rgba(13, 107, 88, 0.16); border-radius: var(--radius); background: var(--paper-soft); color: var(--muted); font-size: 12px; } .group-summary strong { border-color: rgba(177, 120, 25, 0.26); background: var(--gold-soft); color: var(--gold); } .toolbar { display: grid; grid-template-columns: minmax(260px, 1.4fr) repeat(4, minmax(132px, 1fr)); gap: 12px; margin-bottom: 18px; padding: 14px; border: 1px solid rgba(13, 106, 84, 0.18); border-radius: var(--radius); background: linear-gradient(180deg, rgba(255, 253, 247, 0.98), rgba(236, 248, 242, 0.95)); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.8), var(--shadow); } body[data-view="capture"] .toolbar, body[data-view="competitors"] .toolbar, body[data-view="suppliers"] .toolbar, body[data-view="testing"] .toolbar, body[data-view="decisions"] .toolbar { gap: 9px; margin-bottom: 14px; padding: 10px 12px; } body[data-view="capture"] .module-hero, body[data-view="competitors"] .module-hero, body[data-view="suppliers"] .module-hero, body[data-view="testing"] .module-hero, body[data-view="decisions"] .module-hero { margin-bottom: 12px; padding: 16px 20px; } body[data-view="capture"] .filter-bench-head, body[data-view="competitors"] .filter-bench-head, body[data-view="suppliers"] .filter-bench-head, body[data-view="testing"] .filter-bench-head, body[data-view="decisions"] .filter-bench-head { padding-bottom: 7px; } body[data-view="capture"] .filter-bench-head h3, body[data-view="competitors"] .filter-bench-head h3, body[data-view="suppliers"] .filter-bench-head h3, body[data-view="testing"] .filter-bench-head h3, body[data-view="decisions"] .filter-bench-head h3 { font-size: 21px; } body[data-view="capture"] .toolbar input, body[data-view="capture"] .toolbar select, body[data-view="competitors"] .toolbar input, body[data-view="competitors"] .toolbar select, body[data-view="suppliers"] .toolbar input, body[data-view="suppliers"] .toolbar select, body[data-view="testing"] .toolbar input, body[data-view="testing"] .toolbar select, body[data-view="decisions"] .toolbar input, body[data-view="decisions"] .toolbar select { min-height: 36px; } .filter-bench { position: relative; overflow: hidden; } .filter-bench::before { position: absolute; right: 18px; top: 18px; width: 160px; height: 112px; pointer-events: none; content: ""; background: linear-gradient(90deg, rgba(13, 106, 84, 0.06) 1px, transparent 1px) 0 0 / 18px 18px, linear-gradient(0deg, rgba(165, 111, 24, 0.06) 1px, transparent 1px) 0 0 / 18px 18px; opacity: 0.8; } .filter-bench > * { position: relative; z-index: 1; } .filter-bench-head { display: flex; grid-column: 1 / -1; align-items: end; justify-content: space-between; gap: 14px; min-width: 0; padding: 2px 2px 10px; border-bottom: 1px solid rgba(13, 106, 84, 0.13); } .filter-bench-head h3 { margin: 0; color: var(--accent-strong); font-family: var(--display-font); font-size: 23px; line-height: 1.2; } .filter-bench-head p:not(.eyebrow) { margin: 6px 0 0; max-width: 760px; color: var(--muted); font-size: 13px; line-height: 1.55; } .filter-bench-status { display: grid; grid-template-columns: auto auto; gap: 3px 10px; align-items: center; flex: none; min-width: 168px; padding: 10px 12px; border: 1px solid rgba(13, 106, 84, 0.15); border-radius: var(--radius); background: linear-gradient(90deg, rgba(221, 242, 239, 0.72), rgba(255, 240, 189, 0.44)), rgba(255, 255, 255, 0.78); } .filter-bench-status span { color: var(--muted); font-size: 11px; font-weight: 900; } .filter-bench-status strong { color: var(--accent-strong); font-family: var(--num-font); font-size: 28px; line-height: 1; text-align: right; } .filter-bench-status em { grid-column: 1 / -1; min-width: 0; overflow: hidden; color: #315f55; font-size: 11px; font-style: normal; font-weight: 800; text-overflow: ellipsis; white-space: nowrap; } .toolbar label:first-child, .toolbar label:nth-child(6) { min-width: 0; } .toolbar label, .dialog-fields label, .filter-sheet-body label { display: grid; gap: 6px; color: var(--muted); font-size: 12px; } .toolbar label span, .dialog-fields label span, .filter-sheet-body label span { color: #315f55; font-weight: 700; } .toolbar input, .toolbar select, .dialog-card textarea, .dialog-card select, .dialog-fields input, .filter-sheet-body input, .filter-sheet-body select, .mobile-search-field input { width: 100%; max-width: 100%; min-height: 40px; border: 1px solid rgba(13, 106, 84, 0.18); border-radius: var(--radius); background: #ffffff; color: var(--text); padding: 8px 10px; box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.9); } .toolbar input:focus, .toolbar select:focus, .dialog-card textarea:focus, .dialog-card select:focus, .dialog-fields input:focus, .filter-sheet-body input:focus, .filter-sheet-body select:focus, .mobile-search-field input:focus { border-color: var(--turquoise); outline: 3px solid rgba(42, 156, 145, 0.16); } .bulk-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 18px; padding: 12px 14px; border: 1px solid rgba(13, 107, 88, 0.32); border-radius: var(--radius); background: linear-gradient(90deg, #e6f2df, #fff8e9); box-shadow: var(--shadow); } .bulk-toolbar.confirming { border-color: rgba(179, 59, 49, 0.32); background: linear-gradient(90deg, #ffe7df, #fff8e9); } .bulk-status { color: var(--muted); font-size: 14px; } .bulk-status strong { color: var(--accent-strong); font-family: var(--num-font); font-size: 22px; } .bulk-actions { display: flex; flex-wrap: wrap; gap: 8px; } .mobile-bulk-status { display: none; } .items-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(318px, 1fr)); gap: 18px; min-width: 0; } .item-card { position: relative; overflow: hidden; border: 1px solid rgba(13, 106, 84, 0.18); border-radius: var(--radius); background: rgba(255, 253, 247, 0.96); box-shadow: var(--shadow); transition: border-color 0.18s ease, box-shadow 0.18s ease, transform 0.18s ease; } .item-card::before { position: absolute; inset: 0; z-index: 0; pointer-events: none; content: ""; background: linear-gradient(90deg, rgba(13, 106, 84, 0.045) 0 1px, transparent 1px 100%) 0 0 / 100% 100%, linear-gradient(180deg, transparent 0, rgba(36, 155, 144, 0.055) 100%); opacity: 0.45; } .item-card::after { position: absolute; top: 0; right: 0; left: 0; z-index: 2; height: 4px; content: ""; background: var(--ds-turquoise-600); } .item-card[data-profit="可跑量"]::after { background: var(--success); } .item-card[data-profit="可测试"]::after { background: var(--ds-brass-700); } .item-card[data-risk="high"] { border-color: rgba(179, 59, 49, 0.42); } .item-card[data-risk="high"]::after { background: var(--ds-cinnabar-700); } .item-card > * { position: relative; z-index: 1; } .item-card:hover { border-color: rgba(13, 106, 84, 0.44); transform: translateY(-3px) rotate(-0.15deg); box-shadow: 0 26px 44px rgba(13, 107, 88, 0.14); } .item-card.selected { border-color: var(--accent); box-shadow: 0 0 0 3px rgba(42, 156, 145, 0.14), var(--shadow-strong); } .select-box { position: absolute; top: 10px; left: 10px; z-index: 3; display: inline-flex; align-items: center; gap: 6px; min-height: 32px; padding: 0 10px; border: 1px solid rgba(36, 26, 20, 0.14); border-radius: 999px; background: rgba(255, 255, 255, 0.92); color: var(--text); font-size: 12px; font-weight: 800; box-shadow: 0 8px 18px rgba(13, 107, 88, 0.14); cursor: pointer; backdrop-filter: blur(8px); } .select-box input { width: 16px; height: 16px; accent-color: var(--accent); } .item-image { display: block; width: 100%; aspect-ratio: 4 / 3; object-fit: cover; background: var(--tray); filter: saturate(1.06) contrast(1.02); } .item-placeholder { display: grid; width: 100%; aspect-ratio: 4 / 3; place-items: center; align-content: center; gap: 8px; background: radial-gradient(circle at 48% 36%, rgba(255, 255, 255, 0.82), transparent 22%), linear-gradient(135deg, rgba(255, 255, 255, 0.45), transparent), var(--tray); color: var(--accent-strong); } .item-placeholder span { display: grid; width: 72px; height: 72px; place-items: center; border: 1px solid rgba(255, 255, 255, 0.72); border-radius: var(--radius); background: radial-gradient(circle at 30% 20%, rgba(255, 255, 255, 0.4), transparent 28%), linear-gradient(145deg, #249b90, #0d6a54); color: #fff8e8; font-family: var(--display-font); font-size: 38px; box-shadow: 0 12px 28px rgba(13, 90, 72, 0.18); } .item-placeholder strong { color: var(--muted); font-size: 12px; } .item-body { padding: 14px; } .item-meta { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 10px; } .pill { display: inline-flex; align-items: center; min-height: 24px; padding: 0 8px; border: 1px solid rgba(13, 106, 84, 0.14); border-radius: 999px; background: rgba(255, 255, 255, 0.86); color: var(--muted); font-size: 12px; white-space: nowrap; } .pill.sample { border-color: rgba(37, 121, 72, 0.24); background: var(--success-soft); color: var(--success); } .pill.watch { border-color: rgba(177, 120, 25, 0.3); background: var(--gold-soft); color: var(--warning); } .pill.reject { border-color: rgba(179, 59, 49, 0.24); background: var(--danger-soft); color: var(--danger); } .signal-row { display: flex; flex-wrap: wrap; gap: 6px; margin: -2px 0 12px; } .signal { display: inline-flex; align-items: center; min-height: 24px; padding: 0 8px; border-radius: var(--radius); font-size: 11px; font-weight: 800; white-space: nowrap; } .signal.success { border: 1px solid rgba(37, 121, 72, 0.2); background: var(--success-soft); color: var(--success); } .signal.warning { border: 1px solid rgba(165, 111, 24, 0.3); background: var(--ds-brass-100); color: var(--ds-brass-700); } .signal.danger { border: 1px solid rgba(179, 59, 49, 0.24); background: var(--ds-cinnabar-100); color: var(--ds-cinnabar-700); } .signal.source { border: 1px solid rgba(36, 155, 144, 0.24); background: var(--ds-turquoise-100); color: #0c6157; } .supplier-line { display: flex; align-items: center; justify-content: space-between; gap: 10px; min-height: 34px; margin: -2px 0 10px; padding: 7px 9px; border: 1px solid rgba(13, 106, 84, 0.12); border-radius: var(--radius); background: linear-gradient(90deg, rgba(255, 240, 189, 0.42), rgba(221, 242, 239, 0.38)), rgba(255, 255, 255, 0.76); } .supplier-line span, .supplier-line strong { min-width: 0; overflow: hidden; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; } .supplier-line span { color: #5d665f; } .supplier-line strong { flex: none; max-width: 48%; color: var(--accent-strong); font-family: var(--num-font); } .item-title { display: -webkit-box; min-height: 46px; margin: 0 0 12px; overflow: hidden; color: var(--text); font-family: var(--display-font); font-size: 17px; line-height: 1.42; -webkit-box-orient: vertical; -webkit-line-clamp: 2; } .tag-row { display: flex; flex-wrap: wrap; gap: 6px; min-height: 24px; margin: -2px 0 10px; } .tag { display: inline-flex; align-items: center; min-height: 22px; padding: 0 7px; border: 1px solid rgba(36, 155, 144, 0.2); border-radius: var(--radius); background: #ddf2ef; color: #0c6157; font-size: 11px; } .tag:nth-child(2n) { border-color: rgba(177, 120, 25, 0.24); background: var(--gold-soft); color: var(--gold); } .item-facts { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-bottom: 12px; } .fact { padding: 9px; border: 1px solid rgba(13, 106, 84, 0.12); border-radius: var(--radius); background: rgba(237, 247, 239, 0.82); } .fact span { display: block; color: var(--muted); font-size: 11px; } .fact strong { display: block; margin-top: 4px; color: var(--text); font-family: var(--num-font); font-size: 15px; } .card-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; } .card-actions button, .card-actions a { display: inline-flex; align-items: center; justify-content: center; min-height: 36px; border: 1px solid rgba(13, 106, 84, 0.18); border-radius: var(--radius); background: var(--paper-strong); color: var(--text); text-align: center; text-decoration: none; cursor: pointer; box-shadow: 0 4px 0 rgba(13, 107, 88, 0.09); } .card-actions button { color: var(--accent-strong); font-weight: 800; } .empty-state { position: relative; display: grid; justify-items: center; gap: 10px; min-height: 296px; padding: 42px 24px; border: 1px dashed rgba(13, 107, 88, 0.28); border-radius: var(--radius); background: radial-gradient(circle at 50% 8%, rgba(255, 240, 189, 0.58), transparent 28%), linear-gradient(180deg, rgba(255, 253, 247, 0.96), rgba(237, 247, 239, 0.9)), var(--paper-strong); text-align: center; box-shadow: var(--shadow); overflow: hidden; } .empty-state::after { position: absolute; right: -18px; bottom: -58px; color: rgba(13, 106, 84, 0.06); font-family: var(--display-font); font-size: 210px; line-height: 1; content: "样"; } .empty-state > * { position: relative; z-index: 1; } .empty-mark { display: grid; width: 62px; height: 62px; place-items: center; border: 1px solid rgba(255, 255, 255, 0.8); border-radius: var(--radius); background: radial-gradient(circle at 30% 22%, rgba(255, 255, 255, 0.42), transparent 28%), linear-gradient(145deg, #238673, #083f34); color: #fff8e8; font-family: var(--display-font); font-size: 30px; font-weight: 700; box-shadow: 0 14px 28px rgba(13, 90, 72, 0.18); } .empty-state h3 { margin: 4px 0 0; color: var(--accent-strong); font-family: var(--display-font); font-size: 23px; } .empty-state p { max-width: 520px; margin: 0; color: var(--muted); font-size: 14px; line-height: 1.65; } .empty-actions { display: flex; flex-wrap: wrap; gap: 10px; justify-content: center; margin-top: 6px; } dialog { width: min(940px, calc(100vw - 32px)); border: 1px solid rgba(13, 107, 88, 0.2); border-radius: var(--radius); padding: 0; background: var(--paper-strong); box-shadow: var(--shadow-strong); } dialog::backdrop { background: rgba(36, 26, 20, 0.42); backdrop-filter: blur(2px); } .dialog-card { position: relative; padding: 20px; } .dialog-close { position: absolute; top: 12px; right: 12px; z-index: 2; width: 32px; height: 32px; border: 1px solid rgba(13, 107, 88, 0.2); border-radius: 50%; background: var(--paper-strong); cursor: pointer; } .dialog-grid { display: grid; grid-template-columns: 290px minmax(0, 1fr); gap: 18px; } .dialog-media { position: sticky; top: 0; align-self: start; } .dialog-grid img { width: 100%; border: 1px solid rgba(13, 107, 88, 0.16); border-radius: var(--radius); background: var(--tray); } .dialog-quick-signals { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; } .dialog-fields { display: grid; gap: 12px; } .dialog-fields h2 { margin: 0; padding-right: 28px; color: var(--text); font-family: var(--display-font); font-size: 24px; line-height: 1.35; letter-spacing: 0; } .detail-section { padding: 12px; border: 1px solid rgba(13, 107, 88, 0.16); border-radius: var(--radius); background: #f8fffc; } .risk-section { border-color: rgba(179, 59, 49, 0.24); background: #fff0ed; } .ai-detail-section { border-color: rgba(36, 155, 144, 0.24); background: linear-gradient(135deg, rgba(221, 242, 239, 0.62), rgba(255, 253, 245, 0.96)), var(--paper-strong); } .ai-empty-state { padding: 12px; border: 1px dashed rgba(13, 107, 88, 0.26); border-radius: var(--radius); background: rgba(255, 255, 255, 0.72); } .ai-empty-state strong { display: block; color: var(--accent-strong); font-family: var(--display-font); font-size: 18px; } .ai-empty-state p { margin: 6px 0 0; color: var(--muted); font-size: 13px; line-height: 1.6; } .ai-detail-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-top: 12px; } .ai-detail-actions span { color: #315f55; font-size: 12px; font-weight: 800; } .ai-analysis-result { display: grid; gap: 10px; } .ai-analysis-result > p { margin: 0; padding: 12px; border-left: 3px solid var(--accent); border-radius: var(--radius); background: rgba(255, 255, 255, 0.78); color: var(--text); font-size: 14px; line-height: 1.65; } .ai-analysis-result > div, .ai-result-list { padding: 10px 12px; border: 1px solid rgba(13, 107, 88, 0.15); border-radius: var(--radius); background: rgba(255, 255, 255, 0.7); } .ai-analysis-result span, .ai-result-list span { display: block; margin-bottom: 6px; color: var(--muted); font-size: 11px; font-weight: 900; } .ai-analysis-result strong { color: var(--accent-strong); font-family: var(--display-font); font-size: 17px; line-height: 1.35; } .ai-result-list ul { display: grid; gap: 5px; margin: 0; padding-left: 18px; color: var(--text); font-size: 13px; line-height: 1.55; } .ai-result-list.is-danger { border-color: rgba(179, 59, 49, 0.24); background: rgba(255, 232, 227, 0.64); } .ai-analysis-result small { color: var(--gold); font-size: 12px; font-weight: 900; } .section-title { display: flex; align-items: center; justify-content: space-between; gap: 10px; } .section-title strong { font-family: var(--display-font); font-size: 15px; } .section-title span { color: var(--muted); font-size: 12px; text-align: right; } .profit-breakdown { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; margin-top: 10px; } .profit-breakdown div { padding: 8px; border-radius: var(--radius); background: var(--paper-soft); } .profit-breakdown span { display: block; color: var(--muted); font-size: 11px; } .profit-breakdown strong { display: block; margin-top: 4px; color: var(--accent-strong); font-family: var(--num-font); font-size: 14px; } .risk-list, .reason-list { margin: 8px 0 0; padding-left: 18px; color: #66513a; font-size: 13px; line-height: 1.65; } .action-sheet-dialog { width: min(420px, calc(100vw - 32px)); } .action-sheet h2, .filter-sheet h2 { margin: 0 0 14px; font-family: var(--display-font); font-size: 20px; } .action-sheet-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; } @media (prefers-reduced-motion: reduce) { *, *::before, *::after { scroll-behavior: auto !important; transition-duration: 0.01ms !important; animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; } .button:hover, .icon-button:hover, .card-actions button:hover, .card-actions a:hover, .compact-item:hover, .item-card:hover { transform: none; } } @media (max-width: 1120px) { .app-shell { grid-template-columns: 252px minmax(0, 1fr); } .topbar { grid-template-columns: 1fr; } .topbar-actions { justify-content: flex-start; } .toolbar { grid-template-columns: repeat(3, minmax(0, 1fr)); } .filter-bench-head { align-items: start; display: grid; } .filter-bench-status { width: 100%; } .stats-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .workflow-strip, .capture-command, .admin-layout, .admin-user-row, .token-card, .credit-code-row, .credit-code-form, .credit-redeem-form { grid-template-columns: 1fr; } .admin-kpi-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .ai-settings-grid, .ai-prompt-grid { grid-template-columns: 1fr 1fr; } .ai-toggle-card { grid-row: auto; grid-column: 1 / -1; } .decision-kpis { min-width: 0; } .decision-row { grid-template-columns: minmax(190px, 1fr) 70px 136px 90px; } .extension-package-card, .plugin-config, .rules-layout, .profit-rule-grid { grid-template-columns: 1fr; } .profit-rule-grid { grid-column: auto; } } @media (max-width: 900px) { body { padding-bottom: 74px; } .landing-open { padding-bottom: 0; } .app-shell { grid-template-columns: 1fr; } .sidebar, .topbar, .toolbar { display: none; } .mobile-header { position: sticky; top: 0; z-index: 20; display: grid; gap: 12px; min-width: 0; padding: 12px 14px; border-bottom: 1px solid rgba(13, 107, 88, 0.2); background: rgba(255, 253, 247, 0.95); backdrop-filter: blur(14px); box-shadow: 0 10px 28px rgba(13, 107, 88, 0.08); } .mobile-title-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-width: 0; } .mobile-title-row > div:first-child { min-width: 0; } .mobile-header h1 { margin: 0; color: var(--accent-strong); font-family: var(--display-font); font-size: 22px; line-height: 1.2; } .mobile-header .eyebrow { margin-bottom: 3px; } .mobile-header-actions { display: flex; flex: none; gap: 8px; } .mobile-search-field { min-width: 0; } .main { min-width: 0; padding: 13px; } .stats-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; } .module-hero { grid-template-columns: 1fr; gap: 14px; padding: 15px; } .module-hero h3 { font-size: 24px; } .hero-command { justify-content: flex-start; } .rule-save-card { justify-items: stretch; max-width: none; } .rule-save-card > div { justify-content: flex-start; } .rule-save-card p { max-width: none; text-align: left; } .workflow-strip { grid-template-columns: 1fr; } .workflow-step { min-height: 68px; } .decision-kpis { grid-template-columns: 1fr; } .decision-table { overflow-x: auto; padding-bottom: 2px; } .decision-row { min-width: 680px; } .stat-card { min-height: 88px; padding: 12px; } .stat-card strong { font-size: 30px; } .panel-grid, .decision-grid, .ai-settings-grid, .ai-prompt-grid { grid-template-columns: 1fr; } .ai-admin-actions .button, .ai-detail-actions .button { width: 100%; } .auth-gate { padding: 12px; } .landing-nav, .landing-main, .landing-hero { grid-template-columns: 1fr; } .landing-nav { display: grid; gap: 12px; } .landing-links { order: 3; justify-content: space-between; margin: 0; } .landing-nav-actions { justify-content: stretch; } .landing-nav-actions .button, .landing-actions .button { flex: 1 1 auto; } .landing-hero { min-height: auto; padding: 24px 18px; gap: 22px; } .landing-hero-copy { padding: 0; } .landing-hero h1 { font-size: 42px; } .landing-route { gap: 6px; } .landing-route span { min-height: 28px; padding: 0 8px; font-size: 11px; } .landing-route i { display: none; } .landing-lead { font-size: 15px; line-height: 1.75; } .landing-signal-panel { grid-template-columns: 1fr; gap: 8px; margin-top: 16px; } .landing-signal-panel div { padding: 11px 12px; } .landing-metrics, .flow-rail, .signal-board, .product-shot-stats { grid-template-columns: 1fr; } .buyer-board-image { aspect-ratio: 1.1; } .landing-section-head { display: grid; } .landing-section-head h2 { font-size: 24px; } .product-shot-card { grid-template-columns: 84px minmax(0, 1fr); } .shot-image { width: 84px; font-size: 40px; } .track-rule-row { grid-template-columns: 1fr; } .settings-empty { display: grid; } .admin-kpi-grid { grid-template-columns: 1fr; gap: 9px; } .admin-kpi-card { min-height: 94px; } .admin-user-row, .token-card, .credit-code-row { align-items: stretch; } .admin-user-meta, .token-card-actions { justify-content: flex-start; } .panel { padding: 14px; } .bulk-toolbar, .bulk-actions { align-items: stretch; flex-direction: column; } .bulk-toolbar { position: fixed; right: 12px; bottom: 82px; left: 12px; z-index: 30; max-width: calc(100vw - 24px); margin: 0; padding: 10px; box-shadow: var(--shadow-strong); } .bulk-actions { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); } .bulk-actions .button { min-width: 0; padding: 0 8px; font-size: 12px; } .bulk-actions [data-bulk-status] { display: none; } .mobile-bulk-status { display: inline-flex; } .bulk-toolbar.confirming .bulk-actions { grid-template-columns: repeat(2, minmax(0, 1fr)); } .items-grid { grid-template-columns: 1fr; gap: 14px; } .item-card:hover { transform: none; } .item-title { min-height: 0; } .dialog-grid { grid-template-columns: 1fr; } .dialog-media { position: static; } dialog { width: 100vw; max-width: none; max-height: 92vh; margin: auto 0 0; border-radius: 14px 14px 0 0; } .dialog-card { max-height: 92vh; overflow-y: auto; padding: 18px 16px 24px; } .auth-dialog { width: min(440px, calc(100vw - 28px)); max-width: calc(100vw - 28px); max-height: calc(100dvh - 28px); margin: auto; border-radius: var(--radius); } .auth-dialog .auth-dialog-card { max-height: calc(100dvh - 28px); overflow-y: auto; padding: 22px 18px 20px; } .auth-dialog-copy { padding-right: 52px; } .dialog-fields h2 { font-size: 20px; } .profit-breakdown { grid-template-columns: repeat(2, minmax(0, 1fr)); } .pipeline-item, .panel-head { grid-template-columns: 1fr; } .pipeline-item { align-items: stretch; } .pipeline-actions { justify-content: stretch; } .filter-dialog { width: 100vw; max-width: none; max-height: 86vh; margin: auto 0 0; border-radius: 16px 16px 0 0; } .filter-sheet-body { display: grid; gap: 12px; max-height: min(58vh, 520px); margin-bottom: 16px; overflow-y: auto; padding-right: 2px; } .filter-sheet-body label { min-width: 0; } .empty-state { min-height: 260px; padding: 34px 18px; } .mobile-tabbar { position: fixed; right: 0; bottom: 0; left: 0; z-index: 25; display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 4px; padding: 8px 10px calc(8px + env(safe-area-inset-bottom)); border-top: 1px solid rgba(13, 107, 88, 0.2); background: rgba(255, 255, 255, 0.96); backdrop-filter: blur(14px); box-shadow: 0 -12px 34px rgba(13, 107, 88, 0.1); } .mobile-tab { min-height: 44px; border: 0; border-radius: var(--radius); background: transparent; color: var(--muted); font-size: 11px; } .mobile-tab.active { border: 1px solid rgba(13, 107, 88, 0.22); background: #e2f1e7; color: var(--accent-strong); font-weight: 800; box-shadow: 0 6px 18px rgba(13, 107, 88, 0.12); } } @media (max-width: 520px) { .main { padding: 12px; } .mobile-header .eyebrow { display: none; } .item-body { padding: 12px; } .item-facts { grid-template-columns: 1fr; } .supplier-line { display: grid; gap: 4px; } .supplier-line strong { max-width: 100%; } .empty-actions { width: 100%; } .empty-actions .button { flex: 1 1 136px; } .bulk-actions { grid-template-columns: repeat(3, minmax(0, 1fr)); } .bulk-actions .button { min-height: 36px; } .action-sheet-dialog { width: 100vw; max-width: none; margin: auto 0 0; border-radius: 16px 16px 0 0; } .auth-dialog { width: calc(100vw - 24px); max-width: 420px; } .auth-dialog-copy h2 { font-size: 25px; } .auth-card { padding: 14px; } } /* UI/UX Pro Max refresh: productized buyer workbench */ :root { --bg: #f8fbf2; --paper-warm: #fff7e7; --ink-soft: #4a3a2b; --shadow: 0 14px 34px rgba(15, 90, 70, 0.1); --shadow-soft: 0 8px 22px rgba(15, 90, 70, 0.07); --shadow-strong: 0 26px 60px rgba(13, 72, 60, 0.18); --radius-sm: 6px; --sidebar-w: 304px; } html { scroll-behavior: smooth; } body { overflow-x: hidden; background: radial-gradient(circle at 9% 8%, rgba(37, 150, 133, 0.16), transparent 25%), radial-gradient(circle at 90% 7%, rgba(255, 219, 142, 0.52), transparent 22%), radial-gradient(circle at 78% 82%, rgba(179, 59, 49, 0.08), transparent 28%), linear-gradient(90deg, rgba(18, 60, 52, 0.03) 1px, transparent 1px) 0 0 / 34px 34px, linear-gradient(0deg, rgba(36, 155, 144, 0.035) 1px, transparent 1px) 0 0 / 34px 34px, linear-gradient(135deg, #fcfff8 0%, #eff8f2 46%, #fff7e8 100%); } button, a { touch-action: manipulation; } .app-shell { grid-template-columns: var(--sidebar-w) minmax(0, 1fr); } .sidebar { padding: 24px 18px; background: linear-gradient(180deg, rgba(255, 253, 245, 0.99), rgba(235, 248, 241, 0.96)), radial-gradient(circle at 26% 8%, rgba(255, 240, 189, 0.78), transparent 23%); box-shadow: 16px 0 44px rgba(13, 90, 72, 0.08); } .brand { margin-bottom: 22px; } .nav-stack { gap: 14px; } .nav-button { display: grid; grid-template-columns: 30px minmax(0, 1fr); align-items: center; gap: 10px; min-height: 44px; padding: 0 11px; } .nav-button::before { display: none; } .nav-icon { display: grid; width: 28px; height: 28px; place-items: center; border: 1px solid rgba(13, 107, 88, 0.18); border-radius: var(--radius-sm); background: rgba(255, 255, 255, 0.72); color: var(--accent); font-family: var(--num-font); font-size: 11px; font-weight: 900; } .nav-button > span:last-child { min-width: 0; overflow: hidden; font-weight: 800; text-overflow: ellipsis; white-space: nowrap; } .nav-button.active .nav-icon, .nav-button:hover .nav-icon { border-color: rgba(13, 107, 88, 0.32); background: var(--accent); color: #fffaf0; box-shadow: 0 0 0 4px rgba(13, 107, 88, 0.1); } .nav-admin .nav-button { min-height: 42px; } .side-brief { display: grid; gap: 6px; margin-top: 22px; padding: 14px; border: 1px solid rgba(165, 111, 24, 0.3); border-radius: var(--radius); background: radial-gradient(circle at 84% 12%, rgba(255, 255, 255, 0.82), transparent 18%), linear-gradient(135deg, rgba(255, 240, 189, 0.78), rgba(221, 242, 239, 0.68)); box-shadow: var(--shadow-soft); } .side-brief span { color: var(--gold); font-size: 11px; font-weight: 900; letter-spacing: 0.08em; text-transform: uppercase; } .side-brief strong { color: var(--accent-strong); font-family: var(--display-font); font-size: 17px; line-height: 1.25; } .side-brief p { margin: 0; color: #4d655b; font-size: 12px; line-height: 1.55; } .install-panel { margin-top: 18px; } .main { padding: 20px 24px 32px; } .topbar { margin-bottom: 12px; padding: 18px 20px; } .topbar h2 { font-size: 32px; } .topbar-actions { max-width: 560px; } .button { min-height: 42px; padding: 0 14px; font-weight: 800; } .button:active, .icon-button:active, .nav-button:active, .compact-item:active { transform: translateY(1px) scale(0.99); } .command-strip { display: grid; grid-template-columns: 1.1fr 0.95fr 0.95fr; gap: 10px; margin-bottom: 14px; } .command-strip article { min-width: 0; padding: 12px 14px; border: 1px solid rgba(13, 106, 84, 0.14); border-radius: var(--radius); background: linear-gradient(90deg, rgba(255, 255, 255, 0.94), rgba(237, 247, 239, 0.82)), var(--paper-strong); box-shadow: var(--shadow-soft); } .command-strip span { display: block; color: var(--muted); font-size: 11px; font-weight: 900; } .command-strip strong { display: block; margin-top: 5px; overflow: hidden; color: var(--accent-strong); font-family: var(--display-font); font-size: 16px; line-height: 1.25; text-overflow: ellipsis; white-space: nowrap; } .stats-grid { gap: 10px; } .stat-card { min-height: 98px; padding: 15px; } .module-hero, .panel, .toolbar, .stat-card, .item-card, .admin-kpi-card { box-shadow: var(--shadow-soft); } .module-hero { background: linear-gradient(115deg, rgba(255, 253, 245, 0.99), rgba(235, 248, 240, 0.94) 56%, rgba(255, 240, 189, 0.72)), var(--paper); } .panel { background: linear-gradient(180deg, rgba(255, 253, 247, 0.98), rgba(246, 255, 250, 0.9)), var(--paper-strong); } .toolbar { grid-template-columns: minmax(260px, 1.4fr) repeat(4, minmax(126px, 1fr)); } .toolbar input, .toolbar select, .dialog-card textarea, .dialog-card select, .dialog-fields input, .filter-sheet-body input, .filter-sheet-body select, .mobile-search-field input, .auth-card input, .settings-panel input, .settings-panel textarea, .plugin-config input, .rule-block input, .rule-block textarea { min-height: 44px; } .bulk-toolbar { border-color: rgba(13, 107, 88, 0.24); background: linear-gradient(90deg, rgba(221, 242, 239, 0.96), rgba(255, 248, 233, 0.96)), var(--paper-strong); } .items-grid { grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 14px; } .item-card { background: linear-gradient(180deg, rgba(255, 253, 247, 0.98), rgba(246, 255, 250, 0.9)), var(--paper-strong); } .item-card:hover { transform: translateY(-2px); box-shadow: 0 20px 38px rgba(13, 107, 88, 0.13); } .item-image, .item-placeholder { aspect-ratio: 1.08; } .item-body { padding: 13px; } .item-title { min-height: 44px; } .item-facts { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 7px; } .fact { padding: 8px; } .card-actions button, .card-actions a { min-height: 40px; font-weight: 800; } .admin-kpi-grid { gap: 10px; } .admin-user-row, .token-card, .credit-code-row { box-shadow: var(--shadow-soft); } .credit-code-form input, .credit-redeem-form input { min-height: 44px; } dialog::backdrop { background: rgba(36, 26, 20, 0.52); } @media (max-width: 1180px) { .app-shell { grid-template-columns: 270px minmax(0, 1fr); } .command-strip { grid-template-columns: 1fr; } .command-strip strong { white-space: normal; } } @media (max-width: 900px) { body { overscroll-behavior-y: contain; } .app-shell { grid-template-columns: 1fr; } .sidebar, .topbar, .toolbar { display: none; } .command-strip { display: none; } .mobile-header { padding-top: calc(12px + env(safe-area-inset-top)); } .icon-button { min-width: 44px; min-height: 44px; padding: 0 10px; } .main { padding: 12px 12px 92px; } .stats-grid { grid-template-columns: repeat(4, minmax(118px, 1fr)); overflow-x: auto; padding-bottom: 2px; scroll-snap-type: x proximity; } .stat-card { scroll-snap-align: start; } .bulk-toolbar { bottom: calc(82px + env(safe-area-inset-bottom)); } .mobile-tabbar { grid-template-columns: repeat(6, minmax(0, 1fr)); } } @media (max-width: 520px) { .mobile-header-actions { gap: 6px; } .icon-button { padding: 0 8px; font-size: 12px; } .module-hero h3 { font-size: 23px; } .stats-grid { grid-template-columns: repeat(4, minmax(112px, 1fr)); } .items-grid { gap: 12px; } .item-image, .item-placeholder { aspect-ratio: 1.18; } .mobile-tab { min-width: 0; padding: 0 2px; } } /* Account center and rule studio refinement */ .profile-dashboard { display: grid; gap: 14px; } .profile-identity-panel { position: relative; display: grid; grid-template-columns: 72px minmax(0, 1fr) auto; gap: 16px; align-items: center; min-height: 164px; padding: 22px; border: 1px solid rgba(13, 106, 84, 0.16); border-radius: var(--radius); background: radial-gradient(circle at 92% 14%, rgba(255, 240, 189, 0.84), transparent 24%), linear-gradient(115deg, rgba(255, 253, 245, 0.99), rgba(235, 248, 240, 0.92)), var(--paper-strong); box-shadow: var(--shadow-soft); overflow: hidden; } .profile-identity-panel::after { position: absolute; right: 26px; bottom: -72px; color: rgba(13, 106, 84, 0.06); font-family: var(--display-font); font-size: 220px; line-height: 1; content: "账"; } .profile-identity-panel > * { position: relative; z-index: 1; } .profile-avatar { display: grid; width: 72px; height: 72px; place-items: center; border: 1px solid rgba(255, 255, 255, 0.78); border-radius: var(--radius); background: radial-gradient(circle at 30% 20%, rgba(255, 255, 255, 0.44), transparent 28%), linear-gradient(145deg, #238673, #083f34); color: #fff8e8; font-family: var(--display-font); font-size: 34px; font-weight: 800; box-shadow: 0 16px 30px rgba(13, 90, 72, 0.2); } .profile-identity-copy { min-width: 0; } .profile-identity-copy h3 { margin: 0; color: var(--accent-strong); font-family: var(--display-font); font-size: clamp(30px, 3vw, 44px); line-height: 1.08; } .profile-identity-copy p:not(.eyebrow) { margin: 8px 0 0; color: var(--muted); font-size: 14px; overflow-wrap: anywhere; } .profile-badges { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 14px; } .profile-badges span { display: inline-flex; align-items: center; min-height: 28px; padding: 0 9px; border: 1px solid rgba(13, 106, 84, 0.16); border-radius: var(--radius); background: rgba(255, 255, 255, 0.76); color: var(--accent-strong); font-size: 12px; font-weight: 900; } .profile-badges span:nth-child(2) { border-color: rgba(37, 121, 72, 0.2); background: var(--success-soft); color: var(--success); } .profile-badges span:nth-child(3) { border-color: rgba(165, 111, 24, 0.26); background: var(--gold-soft); color: var(--gold); } .profile-primary-actions { display: grid; gap: 10px; justify-self: end; min-width: 148px; } .profile-primary-actions .button { width: 100%; min-height: 44px; padding-inline: 16px; } .profile-stat-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; } .profile-stat { position: relative; min-width: 0; min-height: 118px; padding: 16px; border: 1px solid rgba(13, 106, 84, 0.14); border-radius: var(--radius); background: linear-gradient(180deg, rgba(255, 253, 247, 0.98), rgba(237, 247, 239, 0.84)), var(--paper-strong); box-shadow: var(--shadow-soft); overflow: hidden; } .profile-stat::after { position: absolute; right: 10px; bottom: -22px; color: rgba(13, 106, 84, 0.07); font-family: var(--display-font); font-size: 88px; content: "户"; } .profile-stat.is-gold { border-color: rgba(165, 111, 24, 0.26); background: linear-gradient(135deg, rgba(255, 240, 189, 0.78), rgba(255, 253, 247, 0.94)), var(--paper-strong); } .profile-stat.is-jade { border-color: rgba(36, 155, 144, 0.25); background: linear-gradient(135deg, rgba(221, 242, 239, 0.96), rgba(255, 253, 247, 0.9)), var(--paper-strong); } .profile-stat span, .profile-stat strong, .profile-stat em { position: relative; z-index: 1; display: block; } .profile-stat span { color: var(--muted); font-size: 12px; font-weight: 900; } .profile-stat strong { margin-top: 12px; overflow: hidden; color: var(--accent-strong); font-family: var(--num-font); font-size: clamp(25px, 2.1vw, 32px); line-height: 1; text-overflow: ellipsis; white-space: nowrap; } .profile-stat em { margin-top: 9px; color: #315f55; font-size: 12px; font-style: normal; line-height: 1.45; } .profile-content-grid { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(320px, 0.8fr); gap: 14px; } .account-service-panel, .profile-action-panel { min-height: 100%; } .profile-info-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; } .profile-info-row { display: grid; grid-template-columns: minmax(118px, 0.32fr) minmax(0, 1fr); gap: 12px; align-items: center; min-height: 48px; padding: 10px 12px; border: 1px solid rgba(13, 106, 84, 0.12); border-radius: var(--radius); background: linear-gradient(90deg, rgba(221, 242, 239, 0.68), rgba(255, 255, 255, 0.74)), var(--paper-strong); } .profile-info-row span { color: var(--muted); font-size: 12px; font-weight: 900; } .profile-info-row strong { min-width: 0; overflow: hidden; color: var(--text); font-family: var(--num-font); font-size: 16px; text-align: right; text-overflow: ellipsis; white-space: nowrap; } .profile-action-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; } .profile-action-card { display: grid; align-content: space-between; gap: 10px; min-height: 112px; padding: 14px; border: 1px solid rgba(13, 106, 84, 0.15); border-radius: var(--radius); background: linear-gradient(180deg, rgba(255, 255, 255, 0.94), rgba(237, 247, 239, 0.74)), var(--paper-strong); color: var(--text); text-align: left; cursor: pointer; box-shadow: var(--shadow-soft); transition: transform var(--motion-fast) ease, border-color var(--motion-fast) ease, box-shadow var(--motion-fast) ease; } .profile-action-card:hover { border-color: rgba(13, 106, 84, 0.34); transform: translateY(-2px); box-shadow: 0 16px 30px rgba(13, 107, 88, 0.12); } .profile-action-card span { color: var(--muted); font-size: 12px; font-weight: 900; } .profile-action-card strong { color: var(--accent-strong); font-family: var(--display-font); font-size: 18px; line-height: 1.25; } .profile-action-card.is-primary { border-color: rgba(13, 106, 84, 0.34); background: linear-gradient(145deg, #238673, #083f34); } .profile-action-card.is-primary span, .profile-action-card.is-primary strong { color: #fff8e8; } .profile-action-card.is-gold { border-color: rgba(165, 111, 24, 0.28); background: linear-gradient(135deg, rgba(255, 240, 189, 0.9), rgba(255, 253, 247, 0.86)), var(--paper-strong); } .profile-credit-panel { display: grid; grid-template-columns: minmax(260px, 0.72fr) minmax(320px, 1fr); gap: 18px; align-items: end; margin-top: 0; padding: 18px; } .credit-copy h3 { margin: 0; color: var(--accent-strong); font-family: var(--display-font); font-size: 22px; } .profile-credit-panel .credit-redeem-form { grid-template-columns: minmax(220px, 1fr) auto; } .rule-hero .hero-command { align-items: center; } .rule-summary-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin-bottom: 14px; } .rule-summary-card { min-width: 0; min-height: 126px; padding: 15px; border: 1px solid rgba(13, 106, 84, 0.14); border-radius: var(--radius); background: linear-gradient(180deg, rgba(255, 253, 247, 0.98), rgba(237, 247, 239, 0.82)), var(--paper-strong); box-shadow: var(--shadow-soft); } .rule-summary-card.is-danger { border-color: rgba(179, 59, 49, 0.24); background: linear-gradient(180deg, rgba(255, 253, 247, 0.98), rgba(255, 232, 227, 0.72)), var(--paper-strong); } .rule-summary-card.is-gold { border-color: rgba(165, 111, 24, 0.28); background: linear-gradient(180deg, rgba(255, 253, 247, 0.98), rgba(255, 240, 189, 0.7)), var(--paper-strong); } .rule-summary-card span { display: block; color: var(--muted); font-size: 12px; font-weight: 900; } .rule-summary-card strong { display: block; margin-top: 10px; color: var(--accent-strong); font-family: var(--num-font); font-size: 31px; line-height: 1; } .rule-summary-card p { margin: 10px 0 0; color: #4d655b; font-size: 12px; line-height: 1.55; } .rules-workbench { display: grid; grid-template-columns: minmax(520px, 1.18fr) minmax(380px, 0.82fr); gap: 14px; align-items: start; } .rule-panel { overflow: visible; } .rule-panel-head { display: flex; justify-content: space-between; gap: 14px; margin-bottom: 14px; } .rule-panel-head.compact { display: block; } .rule-panel-head h3 { margin: 0; color: var(--accent-strong); font-family: var(--display-font); font-size: 22px; } .rule-panel-head p:not(.eyebrow) { max-width: 720px; margin: 6px 0 0; color: var(--muted); font-size: 13px; line-height: 1.55; } .rules-side-stack { display: grid; gap: 14px; min-width: 0; } .track-rules-editor { gap: 10px; margin-top: 0; } .track-rule-row { grid-template-columns: 44px minmax(126px, 0.42fr) minmax(220px, 1fr) auto; align-items: end; padding: 12px; border: 1px solid rgba(13, 106, 84, 0.12); border-radius: var(--radius); background: linear-gradient(90deg, rgba(255, 255, 255, 0.96), rgba(237, 247, 239, 0.72)), var(--paper-strong); box-shadow: var(--shadow-soft); } .track-rule-index { display: grid; align-self: stretch; min-height: 44px; place-items: center; } .track-rule-index span { display: grid; width: 32px; height: 32px; place-items: center; border: 1px solid rgba(13, 106, 84, 0.18); border-radius: var(--radius-sm); background: var(--ds-turquoise-100); color: var(--accent); font-family: var(--num-font); font-size: 12px; font-weight: 900; } .track-rule-row label, .rule-textarea-label { display: grid; gap: 7px; min-width: 0; } .track-rule-row label span, .rule-textarea-label span, .profit-rule-grid label span { color: #315f55; font-size: 12px; font-weight: 900; } .profit-rule-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin-top: 12px; } .profit-rule-grid label:last-child { grid-column: 1 / -1; } .risk-panel { border-color: rgba(179, 59, 49, 0.22); } .helper-panel .dual-rule-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; } .rule-textarea-label textarea { min-height: 132px; resize: vertical; } @media (max-width: 1180px) { .profile-stat-grid, .rule-summary-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .profile-content-grid, .profile-credit-panel, .rules-workbench { grid-template-columns: 1fr; } .rules-side-stack { grid-template-columns: 1fr; } } @media (max-width: 900px) { .profile-identity-panel { grid-template-columns: 58px minmax(0, 1fr); padding: 16px; } .profile-identity-panel > .profile-primary-actions { grid-column: 1 / -1; justify-self: stretch; min-width: 0; } .profile-avatar { width: 58px; height: 58px; font-size: 28px; } .profile-identity-copy h3 { font-size: 30px; } .profile-stat-grid, .rule-summary-grid, .profile-action-grid, .helper-panel .dual-rule-grid, .profit-rule-grid { grid-template-columns: 1fr; } .profile-info-row { grid-template-columns: 1fr; gap: 4px; } .profile-info-list { grid-template-columns: 1fr; } .profile-info-row strong { text-align: left; white-space: normal; } .profile-credit-panel .credit-redeem-form { grid-template-columns: 1fr; } .rule-panel-head { display: grid; } .track-rule-row { grid-template-columns: 38px minmax(0, 1fr); } .track-rule-row label, .track-rule-row button { grid-column: 1 / -1; } }