:root{--bg:#f5f6f8;--panel:#fff;--text:#1d2129;--muted:#6b7280;--line:#e5e7eb;--brand:#2563eb;--good:#16a34a;--bad:#dc2626;--warn:#d97706}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0;font:14px/1.5 -apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei,Segoe UI,sans-serif}a{color:var(--brand);text-decoration:none}h1,h2,h3{margin:0}.shell{grid-template-columns:220px 1fr;min-height:100vh;display:grid}.side{color:#cbd5e1;background:#111827;flex-direction:column;gap:4px;padding:20px 14px;display:flex}.side__brand{color:#fff;padding:0 10px 18px;font-size:16px;font-weight:700}.side a,.side button{text-align:left;color:#cbd5e1;width:100%;font:inherit;cursor:pointer;background:0 0;border:0;border-radius:6px;justify-content:space-between;align-items:center;gap:8px;padding:8px 10px;display:flex}.side a.side__label{color:#6b7280;border-radius:0;padding:14px 10px 4px;font-size:12px;display:block}.side a.side__label:hover,.side a.side__label.is-active{color:#e5e7eb;background:0 0}.side__badge{color:#fff;text-align:center;background:#dc2626;border-radius:999px;min-width:18px;height:18px;padding:0 5px;font-size:11px;line-height:18px}.side a:hover,.side button:hover,.side a.is-active{color:#fff;background:#1f2937}.side__label{color:#6b7280;padding:14px 10px 4px;font-size:12px}.side__foot{margin-top:auto}.main{min-width:0;padding:24px 28px 60px}.head{justify-content:space-between;align-items:center;gap:16px;margin-bottom:20px;display:flex}.head h1{font-size:22px}.head p{color:var(--muted);margin:4px 0 0}.tabs{background:#e9ecf1;border-radius:8px;padding:3px;display:inline-flex}.tabs a{color:var(--text);border-radius:6px;padding:5px 14px}.tabs a.is-active{background:#fff;box-shadow:0 1px 2px #00000014}.cards{grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:12px;margin-bottom:20px;display:grid}.card,.panel{background:var(--panel);border:1px solid var(--line);border-radius:10px}.card{padding:14px 16px}.card__label{color:var(--muted);font-size:13px}.card__value{margin-top:4px;font-size:24px;font-weight:700}.card__sub{color:var(--muted);font-size:12px}.panel{margin-bottom:20px;padding:18px 20px}.panel h2{margin-bottom:14px;font-size:16px}.grid2{grid-template-columns:1fr 1fr;gap:20px;display:grid}table{border-collapse:collapse;width:100%}th,td{text-align:left;border-bottom:1px solid var(--line);white-space:nowrap;padding:9px 10px}th{color:var(--muted);font-size:13px;font-weight:500}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}.table-wrap{overflow-x:auto}.badge{color:#3730a3;background:#eef2ff;border-radius:999px;padding:1px 8px;font-size:12px;display:inline-block}.badge.paid{color:#166534;background:#dcfce7}.badge.pending_payment{color:#92400e;background:#fef3c7}.badge.payment_failed{color:#991b1b;background:#fee2e2}.badge.off{color:var(--muted);background:#f3f4f6}.chart{align-items:flex-end;gap:4px;height:160px;padding-top:10px;display:flex}.chart__col{flex-direction:column;flex:1;justify-content:flex-end;align-items:center;min-width:0;height:100%;display:flex}.chart__bar{background:var(--brand);border-radius:4px 4px 0 0;width:100%;max-width:34px;min-height:2px}.chart__x{color:var(--muted);margin-top:4px;font-size:11px}.funnel{gap:10px;display:grid}.funnel__row{grid-template-columns:90px 1fr 110px;align-items:center;gap:10px;display:grid}.funnel__track{background:#eef2f7;border-radius:6px;height:22px;overflow:hidden}.funnel__fill{background:#60a5fa;height:100%}form.stack{gap:12px;max-width:520px;display:grid}label.field{color:var(--muted);gap:5px;font-size:13px;display:grid}input,select,textarea{font:inherit;color:var(--text);background:#fff;border:1px solid #d1d5db;border-radius:6px;padding:8px 10px}input,select{height:36px;padding:0 10px}textarea{resize:vertical;width:100%}input:focus,select:focus,textarea:focus{border-color:var(--brand);outline:2px solid #bfdbfe}.btn{background:var(--brand);color:#fff;height:36px;font:inherit;cursor:pointer;border:0;border-radius:6px;justify-content:center;align-items:center;padding:0 16px;font-weight:600;display:inline-flex}.btn.secondary{color:var(--text);background:#fff;border:1px solid #d1d5db}.btn.danger{color:var(--bad);background:#fff;border:1px solid #fecaca}.hint{color:var(--muted);font-size:12px}.notice{color:#065f46;background:#ecfdf5;border:1px solid #a7f3d0;border-radius:8px;padding:12px 14px}.notice.error{color:#991b1b;background:#fef2f2;border-color:#fecaca}.notice.warn{color:#92400e;white-space:pre-line;background:#fffbeb;border-color:#fde68a}code,pre{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12.5px}pre{color:#e2e8f0;white-space:pre-wrap;word-break:break-all;background:#0f172a;border-radius:8px;padding:12px 14px;overflow-x:auto}.login{place-items:center;min-height:100vh;display:grid}.login .panel{width:360px}.empty{color:var(--muted);text-align:center;padding:30px 0}.inbox{grid-template-columns:300px 1fr;align-items:stretch;gap:16px;display:grid}.inbox__list,.inbox__chat{background:var(--panel);border:1px solid var(--line);border-radius:10px;flex-direction:column;height:calc(100vh - 150px);min-height:520px;display:flex;overflow:hidden}.inbox__list{overflow:auto}.thread{border-bottom:1px solid var(--line);color:inherit;padding:12px 14px;display:block}.thread.is-active{background:#eff6ff}.thread__top{justify-content:space-between;align-items:center;gap:8px;display:flex}.thread__who{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.thread__preview{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.chat__head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:12px;padding:14px 16px;display:flex}.chat__head h2{font-size:16px}.chat__head p{margin:4px 0 0}.msgs{background:#f8fafc;flex-direction:column;flex:1;gap:10px;padding:16px;display:flex;overflow:auto}.bubble{white-space:pre-wrap;word-break:break-word;border-radius:10px;max-width:80%;padding:8px 12px}.bubble.visitor{border:1px solid var(--line);background:#fff;align-self:flex-start}.bubble.agent{background:#dbeafe;align-self:flex-end}.bubble time{color:var(--muted);margin-top:4px;font-size:11px;display:block}.reply{border-top:1px solid var(--line);gap:8px;padding:12px;display:grid}.reply__row{justify-content:space-between;align-items:center;gap:8px;display:flex}@media (max-width:800px){.inbox{grid-template-columns:1fr}.inbox__list{height:auto;min-height:0;max-height:280px}}
