:root { --primary: #3b82f6; --bg: #f6f7f9; --text: #111827; --muted: #6b7280; --card: #ffffff; --danger: #ef4444; --success: #10b981; } * { box-sizing: border-box; } html, body { margin: 0; padding: 0; height: 100%; background: var(--bg); color: var(--text); font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica, Arial, PingFang SC, Microsoft YaHei, sans-serif; } .app { display: flex; flex-direction: column; min-height: 100vh; } .topbar { height: 56px; display: flex; align-items: center; justify-content: space-between; padding: 0 16px; background: var(--card); border-bottom: 1px solid #e5e7eb; position: sticky; top: 0; z-index: 10; } .topbar .title { font-size: 18px; font-weight: 600; } .topbar .badge { background: var(--primary); color: #fff; border-radius: 999px; padding: 4px 10px; font-size: 12px; } .search { padding: 10px 16px; background: var(--card); border-bottom: 1px solid #e5e7eb; display: flex; gap: 8px; } .search input { flex: 1; height: 36px; border: 1px solid #e5e7eb; border-radius: 8px; padding: 0 12px; font-size: 14px; } .search button { height: 36px; padding: 0 12px; border: none; border-radius: 8px; background: var(--primary); color: #fff; font-size: 14px; } .list { flex: 1; overflow: auto; padding: 12px; } .card { background: var(--card); border: 1px solid #e5e7eb; border-radius: 12px; padding: 12px; margin-bottom: 10px; display: flex; gap: 12px; align-items: flex-start; } .avatar { width: 36px; height: 36px; border-radius: 999px; background: #dbeafe; color: #1e40af; display: flex; align-items: center; justify-content: center; font-weight: 600; } .content { flex: 1; min-width: 0; } .row { display: flex; align-items: center; justify-content: space-between; gap: 8px; } .subject { font-size: 15px; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .meta { font-size: 12px; color: var(--muted); display: flex; gap: 8px; } .preview { font-size: 13px; color: #374151; margin-top: 6px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .actions { display: flex; align-items: center; gap: 8px; } .btn { border: none; background: #eef2ff; color: #3730a3; padding: 6px 10px; border-radius: 8px; font-size: 12px; } .btn.danger { background: #fee2e2; color: #b91c1c; } .btn.starred { background: #fff7ed; color: #c2410c; } .btn.read { background: #ecfeff; color: #0e7490; } .fab { position: fixed; right: 16px; bottom: 84px; width: 56px; height: 56px; border-radius: 999px; background: var(--primary); color: #fff; display: flex; align-items: center; justify-content: center; font-size: 24px; box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15); border: none; } .tabs { position: sticky; bottom: 0; background: var(--card); border-top: 1px solid #e5e7eb; height: 64px; display: flex; } .tab { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; font-size: 12px; color: var(--muted); } .tab.active { color: var(--primary); } .drawer { position: fixed; inset: 0; background: rgba(0, 0, 0, 0.12); display: flex; justify-content: center; align-items: flex-end; padding: 16px; } .panel { width: 100%; max-width: 640px; background: var(--card); border-radius: 16px; border: 1px solid #e5e7eb; padding: 16px; max-height: 80vh; overflow: auto; } .panel h3 { margin: 0 0 8px; font-size: 16px; } .panel .field { display: flex; flex-direction: column; gap: 6px; margin-bottom: 12px; } .panel input, .panel textarea { width: 100%; border: 1px solid #e5e7eb; border-radius: 8px; padding: 10px 12px; font-size: 14px; } .panel textarea { min-height: 120px; resize: vertical; } .panel .row { margin-top: 8px; } .panel .row .btn { font-size: 14px; padding: 10px 14px; } .badge.small { font-size: 11px; padding: 2px 8px; border-radius: 999px; background: #f3f4f6; color: #374151; }