:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:#18212f;background:#f5f7fb;font-family:Inter,PingFang SC,Microsoft YaHei,system-ui,sans-serif}*{box-sizing:border-box}body{min-width:320px;margin:0}button,select,input{font:inherit}button{cursor:pointer}.app{min-height:100vh}.auth-loading{color:#657287;place-items:center;min-height:100vh;display:grid}.loading-state{color:#526174;background:#fff;border:1px dashed #cfd8e5;border-radius:8px;justify-items:center;gap:12px;padding:34px 28px;display:grid}.loading-spinner{border:3px solid #dbe4ef;border-top-color:#2364aa;border-radius:50%;width:34px;height:34px;animation:.8s linear infinite spin}.loading-state i{background:#e8eef6;border-radius:999px;width:min(220px,64vw);height:4px;display:block;position:relative;overflow:hidden}.loading-state i:after{border-radius:inherit;content:"";background:#2364aa;width:35%;height:100%;animation:1.1s ease-in-out infinite loading-bar;position:absolute;top:0;left:-35%}.login-page{place-items:center;width:100%;min-height:100vh;padding:24px;display:grid}.login-panel{background:#fff;border:1px solid #dfe5ef;border-radius:8px;gap:14px;width:min(420px,100%);padding:22px;display:grid;box-shadow:0 18px 44px #18212f14}.login-brand{margin-bottom:8px}.login-panel label{color:#42526a;gap:7px;font-size:14px;display:grid}.login-panel input{color:#18212f;border:1px solid #cfd8e5;border-radius:8px;outline:0;width:100%;height:42px;padding:0 11px}.login-panel input:focus{border-color:#2364aa;box-shadow:0 0 0 3px #2364aa1f}.login-error{color:#b43f27;background:#fff1ed;border:1px solid #f1b5a7;border-radius:8px;padding:9px 10px;font-size:13px}.login-button{color:#fff;background:#2364aa;border:0;border-radius:8px;height:42px}.login-button:disabled{opacity:.58;cursor:not-allowed}.topbar{z-index:5;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#fffffff0;border-bottom:1px solid #dfe5ef;justify-content:space-between;align-items:center;gap:16px;padding:14px 22px;display:flex;position:sticky;top:0}.brand{align-items:center;gap:12px;min-width:260px;display:flex}.brand>span{color:#fff;background:#1b3a57;border-radius:8px;place-items:center;width:42px;height:42px;display:grid}h1{letter-spacing:0;margin:0;font-size:20px}h2{margin:0;font-size:17px}small{color:#657287}.toolbar,.period-row,.section-head,.compare-controls{flex-wrap:wrap;align-items:center;gap:10px;display:flex}main{width:min(1440px,100%);margin:0 auto;padding:18px 22px 40px}.seg{background:#fff;border:1px solid #d8e0eb;border-radius:8px;gap:4px;padding:4px;display:inline-flex}.seg button{color:#42526a;white-space:nowrap;background:0 0;border:0;border-radius:6px;align-items:center;gap:6px;padding:8px 12px;display:inline-flex}.seg.small button{padding:6px 10px;font-size:13px}.seg button.active{color:#fff;background:#2364aa}.period-row{margin-bottom:14px}.select-label{background:#fff;border:1px solid #d8e0eb;border-radius:8px;align-items:center;gap:8px;padding:7px 10px;display:inline-flex}select{color:#18212f;background:0 0;border:0;outline:0}.sync-btn,.icon-text{color:#23384d;background:#fff;border:1px solid #cfd8e5;border-radius:8px;align-items:center;gap:7px;padding:9px 12px;display:inline-flex}.sync-btn:disabled{opacity:.55;cursor:wait}.notice{color:#214d75;background:#edf6ff;border:1px solid #d4e4f7;border-radius:8px;margin-bottom:14px;padding:10px 12px}.quick-stats,.stats-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:14px;display:grid}.stats-grid.five{grid-template-columns:repeat(5,minmax(0,1fr))}.stat-card{background:#fff;border:1px solid #dfe5ef;border-radius:8px;min-height:96px;padding:14px}.stat-card span{color:#66758a;font-size:13px;display:block}.stat-card strong{letter-spacing:0;margin-top:8px;font-size:28px;line-height:1.05;display:block}.stat-card small{margin-top:8px;display:block}.stat-card.good{border-left:4px solid #2a9d8f}.stat-card.warn{border-left:4px solid #e0a82e}.stat-card.danger{border-left:4px solid #d95d39}.tabs{gap:8px;margin:2px 0 14px;padding-bottom:2px;display:flex;overflow-x:auto}.tabs button{color:#42526a;white-space:nowrap;background:#fff;border:1px solid #d8e0eb;border-radius:8px;padding:10px 14px}.tabs button.active{color:#fff;background:#18212f;border-color:#18212f}.panel{background:#fff;border:1px solid #dfe5ef;border-radius:8px;padding:16px}.section-head{justify-content:space-between;margin:4px 0 14px}.insight-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:18px;display:grid}.insight{background:#fbfcfe;border:1px solid #dfe5ef;border-radius:8px;min-height:132px;padding:13px}.insight strong{margin-bottom:8px;display:block}.insight p{color:#475569;margin:0;line-height:1.55}.insight.good{background:#effaf7;border-color:#9ad4ca}.insight.warn{background:#fff8e5;border-color:#ecd18a}.insight.danger{background:#fff1ed;border-color:#e5a08c}.core-reason{margin-bottom:18px}.core-reason .insight{min-height:0;margin-bottom:10px}.reason-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;display:grid}.reason-item{background:#fbfcfe;border:1px solid #dfe5ef;border-radius:8px;min-height:106px;padding:12px}.reason-item.positive{border-left:4px solid #2a9d8f}.reason-item.negative{border-left:4px solid #d95d39}.reason-item span,.reason-item small{color:#66758a;display:block}.reason-item strong{letter-spacing:0;margin:7px 0;font-size:22px;display:block}.task-list,.list,.flow-list,.suggestions{gap:8px;display:grid}.task,.list-row,.flow-path,.detail-pop,.suggestions span{background:#fbfcfe;border:1px solid #e1e7f0;border-radius:8px;align-items:center;gap:10px;min-height:44px;padding:10px 12px;display:flex}.list-row{flex-wrap:wrap;align-items:flex-start}.task span,.list-row span,.flow-path span{flex:1;min-width:0}.task b,.list-row b,.flow-path b{color:#2364aa}.list-row em{flex:none;font-style:normal}.list-row small{color:#66758a;overflow-wrap:anywhere;flex:100%;min-width:0;line-height:1.55}.flow-path{flex-wrap:wrap;align-items:flex-start}.flow-path small{color:#66758a;overflow-wrap:anywhere;flex:100%;min-width:0;line-height:1.55}.table-wrap{border:1px solid #e1e7f0;border-radius:8px;overflow:auto}table{border-collapse:collapse;width:100%;min-width:820px}th,td{text-align:left;white-space:nowrap;border-bottom:1px solid #edf1f6;padding:11px 12px;font-size:13px}th{color:#5f6f85;background:#f7f9fc;font-weight:600}td.wrap-cell{white-space:normal;overflow-wrap:anywhere;min-width:180px;max-width:320px;line-height:1.5}tr:last-child td{border-bottom:0}.table-sub{color:#66758a;margin-top:4px;font-size:12px;display:block}.top-row{background:#fffaf0}.table-wrap tbody tr{cursor:pointer}.table-wrap tbody tr:hover{background:#f3f7fd}.table-wrap tbody tr.selected-row{background:#eaf3ff;box-shadow:inset 3px 0 #2364aa}.barber-reason{margin-top:18px;margin-bottom:0}.positive{color:#1c8c77}.negative{color:#c84b31}.pill{background:#edf1f6;border-radius:999px;align-items:center;min-height:24px;padding:3px 8px;font-size:12px;display:inline-flex}.pill.good{color:#137564;background:#e5f7f2}.pill.warn{color:#8a5b00;background:#fff4d8}.pill.danger{color:#b43f27;background:#ffe8e1}.pill-list{flex-wrap:wrap;gap:5px;min-width:180px;display:flex}.hint{color:#66758a;align-items:center;gap:6px;margin-top:10px;font-size:13px;display:flex}.bar{vertical-align:middle;background:#e7ecf4;border-radius:999px;width:72px;height:7px;margin-left:8px;display:inline-block;overflow:hidden}.bar i{background:#2a9d8f;height:100%;display:block}.trend-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.chart-box{border:1px solid #dfe5ef;border-radius:8px;padding:12px}.chart-box.focus{background:#fff8f5;border-color:#d95d39}.chart-title{margin-bottom:8px;font-weight:700}.stack-bar{background:#e9eef5;border-radius:999px;height:18px;margin:8px 0 18px;display:flex;overflow:hidden}.stack-bar i{min-width:2px}.stage-新客{background:#70c1b3}.stage-活跃客{background:#2a9d8f}.stage-预警客{background:#f2c14e}.stage-沉睡客{background:#f4a261}.stage-流失客{background:#d95d39}.heatmap{grid-template-columns:76px repeat(15,minmax(68px,1fr));gap:6px;padding-bottom:4px;display:grid;overflow-x:auto}.heat-row{display:contents}.heat-day,.heat-hour{color:#5f6f85;place-items:center;min-height:42px;font-size:12px;display:grid}.heat-day{align-content:center;gap:2px}.heat-day b,.heat-day small{line-height:1.15;display:block}.heat-cell{background:color-mix(in srgb, #2364aa calc(var(--heat) * 70%), #eef4fb);color:#132234;border:1px solid #2364aa1f;border-radius:7px;min-width:68px;min-height:54px}.heat-cell.over{outline:2px solid #d95d39}.heat-cell.active{border-color:#2364aa;box-shadow:0 0 0 2px #2364aa33}.heat-cell b,.heat-cell small{display:block}.heat-cell small{color:#516177;margin-top:3px}.detail-pop{margin-top:12px}.heat-detail{gap:10px;margin-top:12px;display:grid}.heat-detail .detail-pop{margin-top:0}.heat-detail-summary{color:#66758a;flex-wrap:wrap;align-items:center;gap:8px 14px;font-size:13px;display:flex}.heat-detail-summary b{color:#132234}.heat-orders table{min-width:1320px}.heat-orders tbody tr{cursor:default}.heat-orders tbody tr:hover{background:0 0}.suggestions{margin-top:10px}.radar-grid{grid-template-columns:minmax(0,1.4fr) minmax(260px,.8fr);align-items:center;gap:18px;display:grid}.compare-bars{gap:12px;display:grid}.compare-row{grid-template-columns:48px 1fr 1fr;align-items:center;gap:8px;display:grid}.compare-row i{background:#e7ecf4;border-radius:999px;height:10px;overflow:hidden}.compare-row b{background:#2364aa;height:100%;display:block}.compare-row .alt b{background:#d95d39}.empty{color:#66758a;background:#fff;border:1px dashed #cfd8e5;border-radius:8px;padding:28px}@keyframes spin{to{transform:rotate(360deg)}}@keyframes loading-bar{0%{left:-35%}55%,to{left:100%}}@media (prefers-reduced-motion:reduce){.loading-spinner,.loading-state i:after{animation:none}}@media (width<=960px){.topbar{flex-direction:column;align-items:flex-start}.toolbar{width:100%}.quick-stats,.stats-grid,.stats-grid.five,.insight-grid,.reason-grid,.trend-grid,.radar-grid{grid-template-columns:1fr}.stat-card strong{font-size:24px}}@media (width<=640px){main{padding:14px 12px 32px}.topbar{padding:12px}.brand{min-width:0}h1{font-size:17px}.seg.period{width:100%;overflow-x:auto}.sync-btn{flex:1;justify-content:center}}
