:root { color-scheme: light; --bg: #eef2f7; --phone: #f7f9fc; --text: #172033; --muted: #758197; --line: #e4e9f0; --primary: #0b8f71; --primary-dark: #087158; --accent: #f2b84b; --soft: #e8f6f1; --card: #ffffff; --danger: #d85f45; } * { box-sizing: border-box; } body { margin: 0; min-height: 100vh; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Microsoft YaHei", sans-serif; color: var(--text); background: linear-gradient(135deg, rgba(11, 143, 113, 0.10), rgba(242, 184, 75, 0.14)), var(--bg); } button, input, select, textarea { font: inherit; } button { cursor: pointer; } .preview-shell { min-height: 100vh; display: grid; place-items: center; padding: 24px; } .phone { position: relative; width: min(390px, 100%); height: min(844px, calc(100vh - 48px)); min-height: 700px; display: flex; flex-direction: column; overflow: hidden; border: 10px solid #111827; border-radius: 34px; background: var(--phone); box-shadow: 0 28px 80px rgba(17, 24, 39, 0.22); } .status-bar { height: 34px; display: flex; align-items: center; justify-content: space-between; padding: 0 20px; font-size: 12px; font-weight: 700; background: #ffffff; } .status-icons { letter-spacing: 0; } .miniapp-top { height: 48px; display: grid; grid-template-columns: 40px 1fr 72px; align-items: center; gap: 6px; padding: 0 12px; border-bottom: 1px solid var(--line); background: #ffffff; } .miniapp-top strong { text-align: center; font-size: 16px; } .icon-btn { width: 32px; height: 32px; border: 0; border-radius: 50%; background: transparent; color: var(--text); font-size: 26px; line-height: 1; } .capsule { justify-self: end; width: 66px; height: 30px; display: flex; align-items: center; justify-content: space-around; border: 1px solid var(--line); border-radius: 18px; background: #fff; } .capsule span, .capsule i { width: 5px; height: 5px; border-radius: 50%; background: #111827; } .capsule i { width: 14px; height: 14px; border: 2px solid #111827; background: transparent; } .page-stack { position: relative; flex: 1; overflow: hidden; } .page { position: absolute; inset: 0; display: none; overflow-y: auto; padding: 16px 14px 96px; } .page.active { display: block; } .hero-panel { padding: 20px; border-radius: 20px; color: #fff; background: linear-gradient(145deg, rgba(8, 113, 88, 0.96), rgba(17, 38, 67, 0.94)), #0b8f71; } .hero-panel p, .page-heading p, .content-block p, .customer-card p, .pipeline p, .board-summary p, .form-card .toast { margin: 0; color: var(--muted); font-size: 12px; line-height: 1.5; } .hero-panel p { color: rgba(255, 255, 255, 0.78); } .hero-panel h1, .page-heading h1, .customer-main h1 { margin: 6px 0 0; font-size: 24px; line-height: 1.2; } .metric-row { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin-top: 18px; } .metric-row article { min-width: 0; padding: 12px 8px; border-radius: 14px; background: rgba(255, 255, 255, 0.14); } .metric-row strong { display: block; font-size: 22px; } .metric-row span { display: block; margin-top: 2px; color: rgba(255, 255, 255, 0.76); font-size: 12px; } .quick-actions { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin: 14px 0; } .quick-actions button, .block-title button, .segmented button { min-height: 38px; border: 1px solid var(--line); border-radius: 12px; background: #ffffff; color: var(--text); font-size: 13px; } .content-block, .form-card, .customer-card, .pipeline article, .board-summary article { border: 1px solid var(--line); border-radius: 16px; background: var(--card); box-shadow: 0 8px 24px rgba(31, 41, 55, 0.05); } .content-block { padding: 14px; margin-top: 12px; } .content-block.compact { margin-top: 14px; } .block-title, .stage-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 12px; } .block-title h2 { margin: 0; font-size: 16px; } .block-title span, .stage-head span { color: var(--primary); font-size: 12px; font-weight: 700; } .task-list { display: grid; gap: 12px; margin: 0; padding: 0; list-style: none; } .task-list li, .feed-item, .reminder-row, .rank-row { display: flex; align-items: flex-start; gap: 10px; } .task-list b, .reminder-row b, .rank-row b { flex: 0 0 auto; min-width: 46px; padding: 5px 8px; border-radius: 10px; background: var(--soft); color: var(--primary-dark); text-align: center; font-size: 12px; } .task-list strong, .feed-item strong, .reminder-row strong, .timeline strong { display: block; margin-bottom: 3px; font-size: 14px; } .feed-item + .feed-item, .rank-row + .rank-row { margin-top: 12px; } .avatar { flex: 0 0 auto; width: 34px; height: 34px; display: grid; place-items: center; border-radius: 50%; background: #e9f0ff; color: #31579f; font-weight: 800; } .avatar.green { background: var(--soft); color: var(--primary-dark); } .avatar.large { width: 52px; height: 52px; font-size: 20px; } .page-heading { padding: 4px 4px 14px; } .form-card, .customer-card { padding: 16px; } .form-card { display: grid; gap: 13px; } label { display: grid; gap: 7px; } label span { color: #4a5568; font-size: 13px; font-weight: 700; } input, select, textarea { width: 100%; border: 1px solid var(--line); border-radius: 12px; background: #fbfcfe; color: var(--text); padding: 11px 12px; outline: none; } textarea { resize: vertical; } input:focus, select:focus, textarea:focus { border-color: var(--primary); box-shadow: 0 0 0 3px rgba(11, 143, 113, 0.12); } .primary-btn { min-height: 46px; border: 0; border-radius: 14px; background: var(--primary); color: #fff; font-weight: 800; } .customer-main { display: flex; align-items: center; gap: 12px; } .customer-main > div { flex: 1; min-width: 0; } .customer-main em { padding: 5px 9px; border-radius: 999px; background: #fff4d8; color: #94620c; font-size: 12px; font-style: normal; font-weight: 800; } .tag-row { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 14px; } .tag-row span { padding: 6px 10px; border-radius: 999px; background: #f1f4f8; color: #526071; font-size: 12px; } .info-list { display: grid; gap: 10px; margin: 0; } .info-list div { display: flex; justify-content: space-between; gap: 12px; } .info-list dt { color: var(--muted); font-size: 13px; } .info-list dd { margin: 0; font-size: 13px; font-weight: 700; } .timeline { position: relative; display: grid; gap: 14px; margin: 0; padding-left: 20px; } .timeline li::marker { color: var(--primary); } .timeline span { display: block; margin-top: 4px; color: var(--muted); font-size: 12px; } .segmented { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; } .segmented button.selected { border-color: var(--primary); background: var(--soft); color: var(--primary-dark); font-weight: 800; } .toast { position: absolute; left: 18px; right: 18px; bottom: 84px; z-index: 10; min-height: 18px; padding: 10px 12px; border-radius: 12px; background: rgba(17, 24, 39, 0.9); color: #fff; text-align: center; opacity: 0; transform: translateY(8px); pointer-events: none; transition: 0.18s ease; } .toast.show { opacity: 1; transform: translateY(0); color: #fff; font-weight: 700; } .board-summary { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-bottom: 12px; } .board-summary article { padding: 14px; } .board-summary span { color: var(--muted); font-size: 12px; } .board-summary strong { display: block; margin: 6px 0 2px; font-size: 20px; } .pipeline { display: grid; gap: 10px; } .pipeline article { padding: 14px; } .stage-head { margin-bottom: 9px; } .bar { height: 8px; overflow: hidden; border-radius: 999px; background: #edf1f5; } .bar i { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, var(--primary), var(--accent)); } .pipeline p { margin-top: 8px; } .rank-row { align-items: center; } .rank-row span { flex: 1; font-size: 14px; } .rank-row strong { color: var(--primary-dark); font-size: 14px; } .tabbar { height: 76px; display: grid; grid-template-columns: repeat(5, 1fr); gap: 2px; padding: 8px 8px 10px; border-top: 1px solid var(--line); background: rgba(255, 255, 255, 0.96); } .tabbar button { display: grid; place-items: center; gap: 2px; border: 0; border-radius: 12px; background: transparent; color: #7b8797; font-size: 11px; } .tabbar span { font-size: 19px; line-height: 1; } .tabbar button.active { background: var(--soft); color: var(--primary-dark); font-weight: 800; } @media (max-width: 430px) { .preview-shell { padding: 0; } .phone { width: 100vw; height: 100svh; min-height: 0; border: 0; border-radius: 0; } .status-bar { height: 28px; padding: 0 16px; } .miniapp-top { height: 44px; } .page { padding: 12px 12px 86px; } .hero-panel { padding: 16px; border-radius: 16px; } .hero-panel h1, .page-heading h1, .customer-main h1 { font-size: 22px; } .metric-row { gap: 8px; margin-top: 14px; } .metric-row article { padding: 10px 6px; border-radius: 12px; } .metric-row strong { font-size: 20px; } .quick-actions { gap: 8px; margin: 12px 0; } .quick-actions button, .block-title button, .segmented button { min-height: 42px; } .content-block, .form-card, .customer-card { border-radius: 14px; } .content-block { padding: 12px; } .form-card, .customer-card { padding: 14px; } .task-list { gap: 10px; } .task-list b, .reminder-row b, .rank-row b { min-width: 42px; } .customer-main { align-items: flex-start; } .board-summary { gap: 8px; } .pipeline { gap: 8px; } .tabbar { height: 68px; padding: 6px 6px 8px; } .tabbar button { border-radius: 10px; } .toast { bottom: 76px; } }