.product-user-entry{display:inline-flex;align-items:center;gap:8px;flex-shrink:0;padding:0 0 0 6px;height:36px;color:#fff;font-size:14px;white-space:nowrap}.product-user-entry .ant-avatar{width:32px;height:32px;background:#2563eb}.product-user-entry:focus-visible{outline:2px solid #fff;outline-offset:3px;border-radius:4px}.product-user-name{max-width:120px;overflow:hidden;text-overflow:ellipsis}html:not([data-state=ready]) .app{visibility:hidden}html:not([data-state=ready]) .topbar-stat,html:not([data-state=ready]) .btn-week,html:not([data-state=ready]) .btn-save,html:not([data-state=ready]) .btn-export{visibility:hidden}#load-status{position:fixed;top:110px;right:16px;bottom:16px;left:16px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;z-index:10;color:#64748b}html[data-state=ready] #load-status{display:none}.load-spinner{width:28px;height:28px;border:3px solid #e2e8f0;border-top-color:#2563eb;border-radius:50%;animation:load-spin .9s linear infinite}html[data-state=error] .load-spinner{display:none}#reload-data{background:#2563eb;color:#fff;padding:8px 16px;border-radius:6px}@keyframes load-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.load-spinner{animation:none}}:root{--bg:#f0f2f5;--panel:#fff;--border:#e5e7eb;--text:#1f2937;--text2:#6b7280;--text3:#9ca3af;--primary:#2563eb;--primary-l:#dbeafe;--primary-d:#1d4ed8;--supply:#ef4444;--supply-bg:#fef2f2;--demand:#3b82f6;--demand-bg:#eff6ff;--green:#10b981;--green-bg:#ecfdf5;--orange:#f59e0b;--orange-bg:#fffbeb;--purple:#8b5cf6;--radius:10px;--shadow:0 1px 3px rgba(0,0,0,.08)}*{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei,sans-serif;background:var(--bg);color:var(--text);font-size:13px;line-height:1.5;overflow-x:hidden}button{cursor:pointer;border:none;background:none;font-family:inherit;font-size:inherit}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-thumb{background:#d1d5db;border-radius:3px}::-webkit-scrollbar-track{background:transparent}.topbar{background:linear-gradient(135deg,#1e3a5f,#2563eb);color:#fff;padding:0 20px;height:52px;display:flex;align-items:center;gap:24px;box-shadow:0 2px 8px #2563eb4d;position:sticky;top:0;z-index:100}.logo{font-size:17px;font-weight:700;letter-spacing:.5px;display:flex;align-items:center;gap:8px}.logo span{font-size:11px;font-weight:400;opacity:.85;background:#ffffff26;padding:2px 8px;border-radius:10px}.breadcrumb{display:flex;align-items:center;gap:6px;font-size:12px}.breadcrumb select{background:#ffffff26;border:1px solid rgba(255,255,255,.2);color:#fff;padding:4px 8px;border-radius:6px;font-size:12px;outline:none}.breadcrumb select option{color:#333}.breadcrumb select:disabled{opacity:.55}.breadcrumb-reset{width:28px;height:28px;border:1px solid rgba(255,255,255,.25);border-radius:6px;color:#fff;background:#ffffff1f;font-size:17px;line-height:1}.breadcrumb-reset:hover{background:#ffffff38}.topbar-spacer{flex:1}.topbar-stat{display:flex;gap:16px;font-size:12px}.topbar-stat .ts{display:flex;flex-direction:column;align-items:flex-end}.topbar-stat .ts b{font-size:15px;font-weight:600}.topbar-stat .ts span{font-size:10px;opacity:.7}.btn-week{background:#ffffff26;border:1px solid rgba(255,255,255,.25);color:#fff;padding:6px 14px;border-radius:8px;font-size:12px;display:flex;align-items:center;gap:6px}.btn-export{background:#10b981;color:#fff;padding:7px 16px;border-radius:8px;font-size:12px;font-weight:600;display:flex;align-items:center;gap:6px}.btn-save{background:#fff;color:var(--primary);padding:7px 16px;border-radius:8px;font-size:12px;font-weight:600;display:flex;align-items:center;gap:6px}.app{display:grid;grid-template-columns:280px 1fr 340px;gap:12px;padding:12px;height:calc(100vh - 52px);overflow:hidden}.panel{background:var(--panel);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;display:flex;flex-direction:column}.panel-head{padding:12px 14px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between}.panel-head h3{font-size:14px;font-weight:600;display:flex;align-items:center;gap:6px}.panel-head .badge{background:var(--supply);color:#fff;font-size:10px;padding:1px 7px;border-radius:10px}.panel-head .badge.demand{background:var(--demand)}.panel-body{flex:1;overflow-y:auto;padding:10px 14px}.filter-group{margin-bottom:14px}.filter-label{font-size:11px;font-weight:600;color:var(--text2);text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px;display:flex;align-items:center;gap:5px}.filter-label .dot{width:6px;height:6px;border-radius:50%}.filter-label .dot.supply{background:var(--supply)}.filter-label .dot.demand{background:var(--demand)}.chip-group{display:flex;flex-wrap:wrap;gap:5px}.chip{padding:4px 10px;border:1px solid var(--border);border-radius:14px;font-size:11px;color:var(--text2);background:#fafafa;transition:all .15s;-webkit-user-select:none;user-select:none}.chip:hover{border-color:var(--primary);color:var(--primary)}.chip.active{background:var(--primary);color:#fff;border-color:var(--primary)}.chip.active.demand{background:var(--demand);border-color:var(--demand)}select.fselect{width:100%;padding:6px 8px;border:1px solid var(--border);border-radius:7px;font-size:12px;color:var(--text);background:#fafafa;outline:none;margin-bottom:5px}select.fselect:focus{border-color:var(--primary)}.weight-stores{margin-top:8px}.ws-item{display:flex;align-items:center;gap:8px;padding:8px;border-radius:8px;margin-bottom:5px;background:#fafafa;border:1px solid transparent;transition:all .15s;cursor:pointer}.ws-item:hover,.ws-item.active{border-color:var(--primary);background:var(--primary-l)}.ws-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.ws-info{flex:1;min-width:0}.ws-name{font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ws-meta{font-size:10px;color:var(--text2)}.center{display:flex;flex-direction:column;gap:12px;overflow-y:auto;padding-right:2px}.stats-row{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.stat-card{background:var(--panel);border-radius:var(--radius);padding:14px;box-shadow:var(--shadow);position:relative;overflow:hidden}.stat-card:before{content:"";position:absolute;top:0;left:0;width:3px;height:100%}.stat-card.s1:before{background:var(--supply)}.stat-card.s2:before{background:var(--primary)}.stat-card.s3:before{background:var(--green)}.stat-card.s4:before{background:var(--orange)}.stat-label{font-size:11px;color:var(--text2);margin-bottom:4px}.stat-val{font-size:24px;font-weight:700;line-height:1.2}.stat-val small{font-size:12px;font-weight:400;color:var(--text2);margin-left:3px}.stat-sub{font-size:10px;color:var(--green);margin-top:3px}.stat-sub.down{color:var(--supply)}.stores-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.store-panel{background:var(--panel);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.store-header{padding:10px 12px;display:flex;align-items:center;justify-content:space-between;background:#fafbfc}.store-title{display:flex;align-items:center;gap:6px;min-width:0}.store-brand{font-size:13px;font-weight:700;color:var(--primary)}.store-name{font-size:12px;color:var(--text2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.store-stats{display:flex;gap:8px;align-items:center;font-size:11px;color:var(--text2)}.store-stats b{color:var(--text);font-weight:600}.weight-tag{background:linear-gradient(135deg,#fef3c7,#fde68a);color:#92400e;font-size:10px;padding:2px 7px;border-radius:10px;font-weight:600}.store-addr{padding:5px 12px;font-size:10px;color:var(--text3);border-bottom:1px solid #f3f4f6}.prod-list{max-height:380px;overflow-y:auto}.prod-row{display:grid;grid-template-columns:24px 1fr 50px 72px;gap:8px;padding:8px 12px;align-items:center;border-bottom:1px solid #f9fafb;transition:background .1s}.prod-row:hover{background:#f8fafc}.prod-rank-num{width:20px;height:20px;border-radius:50%;background:#f3f4f6;color:var(--text2);font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center}.prod-row:nth-child(1) .prod-rank-num{background:#fef2f2;color:var(--supply)}.prod-row:nth-child(2) .prod-rank-num{background:#fff7ed;color:#ea580c}.prod-row:nth-child(3) .prod-rank-num{background:#fefce8;color:#ca8a04}.prod-info{min-width:0}.prod-name{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:3px}.prod-meta{display:flex;align-items:center;gap:5px;flex-wrap:wrap}.cat-badge{font-size:9px;padding:1px 5px;border-radius:4px;background:#f0fdf4;color:#16a34a}.prod-rank{font-size:9px;color:#ef4444;background:#fef2f2;padding:1px 5px;border-radius:4px}.sales-bar-wrap{flex:1;height:4px;background:#f3f4f6;border-radius:2px;min-width:40px}.sales-bar{height:100%;background:linear-gradient(90deg,var(--supply),#fb923c);border-radius:2px}.prod-sales{text-align:center}.prod-sales b{font-size:14px;font-weight:700;color:var(--supply);display:block}.prod-sales span{font-size:9px;color:var(--text3)}.prod-price{text-align:right;white-space:nowrap}.price-current{font-size:13px;font-weight:700;color:var(--text)}.price-free{font-size:10px;font-weight:700;color:var(--green);background:#ecfdf5;padding:2px 5px;border-radius:4px}.price-orig{font-size:10px;color:var(--text3);text-decoration:line-through;margin-left:3px}.rec-panel{display:flex;flex-direction:column;overflow:hidden}.rec-head{padding:12px 14px;border-bottom:1px solid var(--border)}.rec-head h3{font-size:14px;font-weight:700;display:flex;align-items:center;gap:6px;margin-bottom:4px}.rec-head .sub{font-size:11px;color:var(--text2)}.rec-cat-filter{display:flex;gap:4px;padding:8px 14px;overflow-x:auto;border-bottom:1px solid #f3f4f6}.rec-cat-filter .chip{font-size:10px;padding:3px 8px;white-space:nowrap}.rec-list{flex:1;overflow-y:auto;padding:8px}.rec-card{display:grid;grid-template-columns:28px 36px 1fr;gap:8px;padding:10px;border-radius:10px;margin-bottom:7px;background:#fafbfc;border:1px solid transparent;transition:all .15s;position:relative}.rec-card:hover{border-color:var(--primary);background:#fff;box-shadow:0 2px 8px #2563eb1a}.rec-rank{font-size:18px;font-weight:800;color:var(--text3);line-height:1}.rec-card:nth-child(1) .rec-rank{color:var(--supply)}.rec-card:nth-child(2) .rec-rank{color:#f97316}.rec-card:nth-child(3) .rec-rank{color:#eab308}.rec-emoji{font-size:28px;text-align:center;line-height:1.2}.rec-body{min-width:0}.rec-title{font-size:13px;font-weight:600;margin-bottom:4px;display:flex;align-items:center;gap:4px}.heat{font-size:11px}.rec-tags{display:flex;gap:4px;flex-wrap:wrap;margin-bottom:6px}.tag{font-size:9px;padding:1px 6px;border-radius:4px}.tag-cat{background:#f0fdf4;color:#16a34a}.tag-cover{background:#eff6ff;color:#2563eb}.tag-heat{background:#fef2f2;color:#ef4444}.rec-matched{font-size:10px;color:var(--text2)}.match-item{display:flex;gap:6px;padding:2px 0}.match-store{width:60px;color:var(--text)}.match-sales{flex:1}.match-price{font-weight:600;color:var(--text)}.rec-action{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;padding-top:7px;border-top:1px dashed #e5e7eb;margin-top:5px}.rec-price{font-size:15px;font-weight:700;color:var(--supply)}.rec-coverage{display:flex;align-items:center;gap:5px;font-size:10px;color:var(--text2)}.coverage-bar{width:50px;height:5px;background:#e5e7eb;border-radius:3px;overflow:hidden}.coverage-fill{height:100%;background:linear-gradient(90deg,var(--green),var(--primary));border-radius:3px}.btn-add{background:var(--primary);color:#fff;padding:4px 12px;border-radius:6px;font-size:11px;font-weight:600;transition:all .15s}.btn-add:hover{background:var(--primary-d)}.btn-add.added{background:var(--green)}.cat-section{border-top:1px solid var(--border);padding:10px 14px;background:#fafbfc;max-height:200px;overflow-y:auto}.cat-row{display:grid;grid-template-columns:70px 1fr 50px 45px 35px;gap:6px;align-items:center;padding:4px 0;font-size:11px}.cat-name{font-size:11px;white-space:nowrap}.cat-bar-wrap{height:8px;background:#e5e7eb;border-radius:4px;overflow:hidden}.cat-bar{height:100%;border-radius:4px;min-width:3px}.cat-sales b{color:var(--supply);font-weight:600}.cat-skus,.cat-stores{font-size:10px;color:var(--text3)}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%) translateY(80px);background:#1f2937;color:#fff;padding:10px 22px;border-radius:10px;font-size:13px;z-index:999;opacity:0;transition:all .3s;box-shadow:0 4px 20px #0003}.toast.show{opacity:1;transform:translate(-50%) translateY(0)}.tooltip{position:fixed;background:#1f2937;color:#fff;padding:6px 12px;border-radius:6px;font-size:11px;z-index:500;pointer-events:none;opacity:0;transition:opacity .15s;white-space:nowrap}.tooltip.show{opacity:1}@media (max-width:1400px){.app{grid-template-columns:240px 1fr 300px}.stores-grid{grid-template-columns:1fr}}@media (max-width:1100px){.app{grid-template-columns:1fr;overflow-y:auto;height:auto}.panel{max-height:none}.stores-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width:700px){.stores-grid{grid-template-columns:1fr}.stats-row{grid-template-columns:repeat(2,1fr)}}@media print{.topbar{position:static;box-shadow:none}.app{height:auto;overflow:visible;display:block}.panel{break-inside:avoid;box-shadow:none;border:1px solid #ddd;margin-bottom:10px}.btn-add,.btn-export,.btn-save,.btn-week,.rec-cat-filter{display:none}}a:focus-visible,button:focus-visible,select:focus-visible,.chip:focus-visible,.ws-item:focus-visible{outline:2px solid var(--primary);outline-offset:2px}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.map-wrap{flex:1;min-height:480px;position:relative;overflow:hidden;background:#e8edf2}.map-svg{width:100%;height:100%;display:block}.street-poly{cursor:pointer;transition:opacity .15s}.street-poly:hover{opacity:.75}.pin{cursor:pointer;transition:transform .15s;transform-box:fill-box;transform-origin:center bottom}.pin:hover{transform:scale(1.25)}.pin.w-pin{filter:drop-shadow(0 2px 4px rgba(0,0,0,.25))}.pin-tooltip{position:absolute;z-index:30;background:#fff;border-radius:10px;box-shadow:0 4px 16px #0000001f;padding:10px 12px;min-width:220px;font-size:12px;display:none;pointer-events:none;border:1px solid #e5e7eb}.pin-tooltip.show{display:block}.pin-tooltip .tt-name{font-weight:700;font-size:13px;margin-bottom:6px;color:#1f2937}.pin-tooltip .tt-row{color:#6b7280;margin:3px 0;display:flex;justify-content:space-between}.bottom-bar{position:absolute;bottom:0;left:0;right:0;background:#fffffffa;border-top:1px solid var(--border);z-index:40;box-shadow:0 -2px 8px #0000000f;max-height:42%;transition:max-height .3s}.bottom-bar.collapsed{max-height:36px}.bottom-header{height:36px;display:flex;align-items:center;padding:0 16px;cursor:pointer;-webkit-user-select:none;user-select:none}.bottom-header .bh-title{font-size:12px;font-weight:600;color:#374151}.bottom-header .bh-count{color:var(--primary);margin-left:8px;font-weight:600}.bottom-header .bh-arrow{margin-left:auto;transition:transform .3s;color:#9ca3af}.table-wrap{overflow:auto;max-height:calc(42vh - 36px)}.prod-table{width:100%;border-collapse:collapse;font-size:12px}.prod-table th{background:#f9fafb;padding:8px 12px;text-align:left;font-weight:600;color:#6b7280;border-bottom:1px solid #e5e7eb;position:sticky;top:0;white-space:nowrap;font-size:11px}.prod-table td{padding:7px 12px;border-bottom:1px solid #f3f4f6;white-space:nowrap}.prod-table tr:hover td{background:#f9fafb}.brand-tag{display:inline-block;padding:2px 8px;border-radius:10px;font-size:10px;font-weight:600}.brand-众买果园{background:#fef2f2;color:#ef4444}.brand-优鲜果品{background:#fff7ed;color:#f97316}.brand-百果园{background:#f0fdf4;color:#16a34a}.cat-tag{display:inline-block;padding:1px 6px;border-radius:4px;font-size:10px;background:#eff6ff;color:#2563eb}.map-card-panel{background:var(--panel);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;display:flex;flex-direction:column;flex:1;min-height:0}.map-card-head{padding:10px 16px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.mch-left{display:flex;align-items:center;gap:8px}.mch-icon{font-size:16px}.mch-title{font-size:14px;font-weight:600;color:var(--text)}.mch-sub{font-size:11px;color:var(--text2);background:#f3f4f6;padding:2px 8px;border-radius:10px}.mch-right{display:flex;align-items:center;gap:8px}.mch-hint{font-size:11px;color:var(--text3)}.street-poly.dimmed{opacity:.15!important;transition:opacity .3s}.pin.dimmed{opacity:.2!important;transition:opacity .2s}.pulse-ring.dimmed{opacity:.1!important}.rec-title,.ws-name{overflow-wrap:anywhere;letter-spacing:0}.rec-card{min-width:0}.rec-matched{overflow-wrap:anywhere}.prod-table td{white-space:normal!important}.data-note{font-size:11px;color:#64748b;padding:6px 12px;background:#f8fafc}.selection-summary{padding:10px;border-top:1px solid #e2e8f0}.map-mode{cursor:pointer;border:1px solid #cbd5e1;background:#fff;border-radius:4px;padding:4px 8px}.map-wrap{position:relative}#amap{position:absolute;top:0;right:0;bottom:0;left:0;display:none;z-index:2}.error-banner{padding:16px;color:#b91c1c;background:#fee2e2}@media (max-width:1100px){.topbar{flex-wrap:wrap;height:auto!important;min-height:64px}.app{grid-template-columns:240px minmax(400px,1fr)!important}.rec-panel{grid-column:1/-1;max-height:600px}.stats-row{flex-wrap:wrap}.stat-card{min-width:100px}}@media (max-width:700px){body{overflow:auto!important}.app{display:block!important;height:auto!important}.panel,.center{width:100%!important;height:auto!important;max-height:none!important}.map-wrap{min-height:400px}.topbar-stat,.topbar .breadcrumb{display:none}.stats-row{display:grid!important;grid-template-columns:1fr 1fr}.rec-card{overflow:hidden}.map-card-head{flex-wrap:wrap}.rec-action{min-width:85px}.rec-title{font-size:14px}}.rec-cat-filter{flex-wrap:wrap;overflow:visible}.map-mode{margin-bottom:6px}.rec-title,.filter-label,.logo{letter-spacing:0!important}.selection-summary{flex-shrink:0}.rec-list{min-height:0}.cat-section{flex-shrink:0;max-height:230px;overflow-y:auto}.selection-summary{max-height:160px;overflow-y:auto}.selection-summary button{color:#dc2626;font-size:18px;min-width:24px}.map-region-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:9px 12px;border-bottom:1px solid #e5e7eb;background:#fff}.map-region-toolbar label{display:flex;align-items:center;gap:5px;font-size:11px;color:#64748b}.map-region-toolbar select{width:122px;height:30px;padding:0 26px 0 9px;border:1px solid #dbe2ea;border-radius:5px;background:#fff;color:#1f2937;font-size:12px;outline:none}.map-region-toolbar select:focus{border-color:#2563eb;box-shadow:0 0 0 2px #2563eb1a}.map-region-toolbar select:disabled{background:#f8fafc;color:#94a3b8}.map-region-toolbar button{height:30px;padding:0 13px;border:1px solid #dbe2ea;border-radius:5px;background:#fff;color:#475569;font-size:12px}.map-region-toolbar button:hover{border-color:#2563eb;color:#2563eb}#mapBoundaryStatus{font-size:11px;color:#64748b}#amap{position:absolute;top:0;right:0;bottom:0;left:0;display:block;z-index:2;background:#eef2f6}.legacy-map,.map-stats,.legend,.zoom-ctrl,.scale-bar,.scale-brand,.pin-tooltip{display:none!important}.map-store-legend{position:absolute;right:14px;bottom:52px;z-index:12;display:flex;flex-direction:column;gap:7px;padding:10px 12px;border:1px solid #e2e8f0;border-radius:6px;background:#fffffff0;box-shadow:0 3px 12px #0f172a1f;font-size:11px;color:#64748b}.map-store-legend strong{font-size:12px;color:#1f2937}.map-store-legend span{display:flex;align-items:center;gap:7px}.map-dot{width:8px;height:8px;border-radius:50%;display:inline-block}.map-dot.verified{background:#2563eb}.map-dot.approximate{background:#f97316}.verified-store-marker{position:relative;width:36px;height:48px;border:0;padding:0;background:transparent;cursor:pointer;overflow:visible;transition:opacity .15s,filter .15s,transform .15s}.verified-store-marker svg{display:block;width:36px;height:48px;filter:drop-shadow(0 3px 3px rgba(15,23,42,.28))}.verified-store-marker path{fill:var(--marker-color);stroke:#fff;stroke-width:2.4}.verified-store-marker circle{fill:#fff}.verified-store-marker:hover,.verified-store-marker:focus-visible{transform:translateY(-2px)}.verified-store-marker.is-inactive{opacity:.38;filter:grayscale(.8)}.marker-pulse{position:absolute;left:18px;top:14px;width:32px;height:32px;border:2px solid var(--marker-color);border-radius:50%;transform:translate(-50%,-50%) scale(.45);opacity:.7;animation:marker-pulse 1.8s ease-out infinite;pointer-events:none}.verified-store-marker.is-inactive .marker-pulse{display:none}@keyframes marker-pulse{0%{transform:translate(-50%,-50%) scale(.45);opacity:.75}75%,to{transform:translate(-50%,-50%) scale(1.55);opacity:0}}.map-store-tooltip{display:none;position:absolute;z-index:100;width:276px;padding:14px 16px;border:1px solid #dbe3ee;border-radius:7px;background:#fffffffa;box-shadow:0 8px 24px #0f172a33;color:#4b5563;font-size:12px;pointer-events:none}.map-store-tooltip.show{display:block}.map-store-tooltip strong{display:block;margin-bottom:10px;color:#1f2937;font-size:14px}.map-store-tooltip dl{display:grid;grid-template-columns:80px 1fr;gap:5px 12px}.map-store-tooltip dt{color:#64748b}.map-store-tooltip dd{text-align:right;font-weight:600}.map-store-tooltip .tooltip-sales{color:#ef4444}.map-store-tooltip p{margin-top:8px;color:#64748b}.map-store-tooltip>div{margin-top:2px;color:#1f2937}.map-store-tooltip small{display:block;margin-top:9px;padding-top:7px;border-top:1px solid #e5e7eb;color:#94a3b8}@media (prefers-reduced-motion:reduce){.marker-pulse{animation:none}}@media (max-width:700px){.map-store-legend{right:8px;bottom:45px}.map-store-tooltip{width:min(276px,calc(100% - 24px))}}.product-detail{text-align:left;color:inherit;white-space:normal;font-size:inherit}.product-detail:hover{text-decoration:underline;color:#2563eb}.sku-status{display:block;font-size:10px;color:#64748b}#product-dialog{margin:auto;width:min(760px,94vw);max-height:85vh;overflow:auto;border:1px solid #e2e8f0;border-radius:8px;padding:20px}#product-dialog::backdrop{background:#00000059}.detail-head{display:flex;gap:16px;justify-content:space-between;align-items:flex-start}.detail-head h3{font-size:16px;overflow-wrap:anywhere}.detail-head button{font-size:22px;min-width:28px}#product-dialog p{margin:12px 0;font-size:12px;overflow-wrap:anywhere}.detail-table{overflow:auto}.detail-table table{min-width:450px}#prodTableWrap .product-summary-table{table-layout:fixed;min-width:650px}#prodTableWrap .column-brand{width:88px}#prodTableWrap .column-category{width:96px}#prodTableWrap .column-sales{width:76px}#prodTableWrap .column-price{width:156px}#prodTableWrap .product-summary-table th{padding:10px 12px}#prodTableWrap .product-summary-table td{height:36px;padding:8px 12px;vertical-align:middle;white-space:nowrap!important}#prodTableWrap .brand-tag{white-space:nowrap}#prodTableWrap .product-name-cell{overflow:hidden}#prodTableWrap .product-detail{display:block;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left;font-size:12px;line-height:20px}#prodTableWrap .monthly-sales{color:#ef4444;font-weight:700;text-align:center;font-variant-numeric:tabular-nums}#prodTableWrap .sales-heading{text-align:center}#prodTableWrap .price-heading,#prodTableWrap .product-price{text-align:right}#prodTableWrap .product-price{font-variant-numeric:tabular-nums}#prodTableWrap .promotional-price{color:#10b981;font-weight:700}#prodTableWrap .original-price{margin-left:7px;font-size:11px;color:#9ca3af;text-decoration:line-through}.rec-evidence-label,.price-kind{font-size:10px;color:#64748b;margin:5px 0}.evidence-button{color:#2563eb;font-size:11px;padding:4px 0}.rec-price{overflow-wrap:anywhere}.mapped-id{display:block;color:#64748b;font-size:10px}#evidence-dialog{margin:auto;width:min(900px,94vw);max-height:85vh;overflow:auto;border:1px solid #e2e8f0;border-radius:8px;padding:20px}#evidence-dialog::backdrop{background:#00000059}#evidence-dialog p{margin:12px 0;font-size:12px;line-height:1.7}#evidence-dialog .detail-table{max-height:320px;overflow:auto}.rec-card{grid-template-columns:40px minmax(0,1fr);gap:8px 10px;border-radius:8px}.rec-rank{grid-column:1;grid-row:1;font-size:16px;white-space:nowrap;line-height:1.5}.rec-body{grid-column:2;min-width:0}.rec-title{display:block;line-height:1.5;word-break:normal;overflow-wrap:anywhere}.rec-tags .tag{white-space:nowrap;line-height:1.6}.match-item{display:grid;grid-template-columns:76px minmax(0,1fr) auto;gap:6px;align-items:center;line-height:1.6}.match-store{width:auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.match-sales,.match-price{white-space:nowrap;min-width:0}.match-sales{text-align:right}.rec-action{grid-column:1/-1;display:grid;grid-template-columns:minmax(0,1fr) 88px;gap:4px 12px;align-items:center}.rec-action .rec-price{grid-column:1;grid-row:1;font-size:14px;line-height:1.5}.rec-action .price-kind{grid-column:1;grid-row:2;margin:0}.rec-action .evidence-button{grid-column:2;grid-row:1;white-space:nowrap}.rec-action .btn-add{grid-column:2;grid-row:2;min-height:28px;width:88px;white-space:nowrap}.rec-evidence-label{line-height:1.5}.price-mode{display:inline-flex;margin-top:8px;border:1px solid #cbd5e1;border-radius:4px;overflow:hidden}.price-mode button{padding:4px 10px;font-size:11px;color:#64748b;background:#fff}.price-mode button[aria-pressed=true]{color:#2563eb;background:#eff6ff}.rec-action .rec-price{font-size:13px;overflow-wrap:anywhere}.selection-nav{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:12px;border-bottom:1px solid #e5e7eb;flex-shrink:0}.selection-nav button{display:flex;gap:5px;align-items:center;justify-content:center;min-height:36px;padding:6px;border:1px solid #dbe3ef;border-radius:6px;color:#334155;background:#fff;font-size:11px;white-space:nowrap}.selection-nav button:hover{border-color:#2563eb;color:#2563eb;background:#eff6ff}.selection-nav b{color:#2563eb}.lucide{width:16px;height:16px;flex-shrink:0;stroke-width:1.8}.selection-summary-open{width:100%;display:flex;gap:7px;align-items:center;color:#334155;font-size:12px;text-align:left}.draft-status{margin-left:auto;color:#64748b;font-size:10px}.selection-dialog,.history-dialog{border:1px solid #e2e8f0;background:#fff;color:#1f2937;padding:0}.selection-dialog{margin:auto;width:min(1000px,96vw);max-width:96vw;max-height:88vh;border-radius:8px}.selection-dialog::backdrop,.history-dialog::backdrop{background:#0f172a40}.list-dialog-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 22px;border-bottom:1px solid #e5e7eb}.list-dialog-head>div{display:flex;align-items:center;gap:10px;min-width:0}.list-dialog-head h2{font-size:18px;line-height:1.4;white-space:nowrap}.list-dialog-head>div>.lucide{width:21px;height:21px;color:#2563eb}.list-count{font-size:12px;color:#64748b}.icon-button{width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;border:1px solid #e2e8f0;border-radius:6px;color:#64748b;background:#fff;flex-shrink:0}.icon-button:hover{background:#f1f5f9}.icon-button:disabled{opacity:.4;cursor:default}.selection-toolbar{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;padding:18px 22px 10px}.selection-toolbar label{display:flex;flex-direction:column;gap:6px;font-size:11px;color:#64748b;flex:1;min-width:0}.selection-toolbar input{height:36px;border:1px solid #cbd5e1;border-radius:6px;padding:7px 10px;font:inherit;font-size:13px;color:#1f2937;width:100%;outline:none}.selection-toolbar input:focus{border-color:#2563eb}.selection-toolbar-buttons{display:flex;gap:8px;align-items:center}.list-primary,.list-secondary{display:inline-flex;justify-content:center;align-items:center;gap:7px;border-radius:6px;min-height:34px;padding:7px 12px;font-size:12px;white-space:nowrap}.list-primary{background:#2563eb;color:#fff;border:1px solid #2563eb}.list-secondary{background:#fff;color:#2563eb;border:1px solid #bfdbfe}.list-primary:disabled{opacity:.4;cursor:default}.selection-meta{padding:0 22px 14px;font-size:11px;color:#64748b}.selection-items-wrap{max-height:52vh;overflow:auto}.selection-items{width:100%;min-width:760px;border-collapse:collapse;font-size:12px}.selection-items th{text-align:left;background:#f8fafc;color:#64748b;position:sticky;top:0;z-index:1;padding:10px 16px;border-bottom:1px solid #e2e8f0;white-space:nowrap}.selection-items td{padding:12px 16px;vertical-align:middle;border-bottom:1px solid #f1f5f9}.selection-items td:first-child{min-width:190px;max-width:280px}.selection-items strong{font-weight:600;overflow-wrap:anywhere}.selection-items small{display:block;color:#64748b;margin-top:4px;font-size:10px}.text-action{display:block;color:#2563eb;font-size:11px;margin-top:5px}.selection-footer{padding:14px 22px;display:flex;justify-content:space-between;align-items:center;gap:10px;border-top:1px solid #e5e7eb;color:#64748b;font-size:11px}.list-empty{padding:55px 24px;text-align:center;color:#94a3b8}.list-empty .lucide{width:32px;height:32px;margin-bottom:10px}.list-empty p{font-size:14px;color:#64748b;margin-bottom:5px}.history-dialog{position:fixed;inset:0 0 0 auto;margin:0;height:100dvh;max-height:100dvh;width:520px;max-width:100vw;border-radius:0;overflow:auto}.history-dialog .list-dialog-head{position:sticky;top:0;background:#fff;z-index:1}.history-body{padding:20px}.history-item{border:1px solid #e2e8f0;border-radius:8px;background:#f8fafc;padding:18px;margin-bottom:14px}.history-item-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.history-item h3{font-size:15px;line-height:1.5;overflow-wrap:anywhere;min-width:0}.history-item time{font-size:11px;color:#94a3b8;white-space:nowrap;padding-top:3px}.history-stats{display:flex;gap:12px;flex-wrap:wrap;font-size:12px;color:#64748b;margin:10px 0}.current-list-tag{color:#2563eb}.history-tags{display:flex;gap:5px;flex-wrap:wrap}.history-tags span{padding:2px 7px;font-size:11px;line-height:1.5;border-radius:4px;color:#2563eb;background:#e8f0ff}.history-actions{display:flex;gap:9px;align-items:center;margin-top:16px;padding-top:14px;border-top:1px dashed #dbe3ef}.danger-button{margin-left:auto;color:#ef4444;border-color:#fecaca}@media (max-width:700px){.selection-toolbar{flex-wrap:wrap;padding:14px}.selection-toolbar label{flex-basis:100%}.selection-toolbar-buttons{margin-left:auto}.list-dialog-head{padding:14px}.selection-meta{padding:0 14px 12px}.selection-footer{padding:12px 14px}.history-body,.history-item{padding:14px}.selection-dialog{max-height:92vh}.selection-nav{grid-template-columns:1fr 1fr}}#save-name-dialog{width:560px}.selection-toolbar-buttons{flex-wrap:wrap}.selection-toolbar label{min-width:0}.selection-toolbar input{max-width:100%;box-sizing:border-box}.rec-action .rec-coverage{grid-column:1;grid-row:3;min-width:0;gap:5px;font-size:10px;line-height:1.5;flex-wrap:wrap}.rec-action .coverage-bar{flex:0 0 50px;width:50px;height:5px;background:#e5e7eb;border-radius:3px;overflow:hidden}.rec-action .coverage-fill{height:100%;background:linear-gradient(90deg,var(--green),var(--primary));border-radius:3px}.rec-action .rec-coverage span{white-space:nowrap}.rec-action .btn-add{grid-row:3}#weight-stores .ws-meta{white-space:normal;overflow-wrap:anywhere;line-height:1.5;margin-top:2px}select.btn-week{cursor:pointer;min-width:150px;max-width:100%;font-family:inherit}select.btn-week option{background:#fff;color:#1f2937}#product-dialog{width:min(860px,94vw);padding:0;overflow:auto}#product-dialog .detail-content{padding:18px 22px 22px}.product-detail-hero{display:grid;grid-template-columns:176px minmax(0,1fr);gap:18px;align-items:stretch;margin-bottom:14px}.product-image-frame{position:relative;display:flex;align-items:center;justify-content:center;width:176px;aspect-ratio:1;border:1px solid #e2e8f0;border-radius:8px;background:linear-gradient(180deg,#f8fafc,#fff);overflow:hidden}.product-image-frame img{display:block;width:100%;height:100%;object-fit:contain;padding:10px;box-sizing:border-box}.product-image-frame span,.product-image-frame.is-missing:after{color:#94a3b8;font-size:12px}.product-image-frame.is-missing:after{content:"图片加载失败"}.product-detail-main{min-width:0;display:flex;flex-direction:column;gap:12px;padding:2px 0}.product-detail-title{font-size:16px;font-weight:700;line-height:1.55;color:#111827;overflow-wrap:anywhere}.product-detail-tags{display:flex;gap:7px;flex-wrap:wrap}.product-detail-tags span{display:inline-flex;align-items:center;min-height:24px;padding:2px 8px;border:1px solid #bfdbfe;border-radius:999px;background:#eff6ff;color:#2563eb;font-size:12px;line-height:1.5}.product-detail-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px 10px;margin:0}.product-detail-stats div{min-width:0;padding:9px 11px;border:1px solid #eef2f7;border-radius:7px;background:#f8fafc}.product-detail-stats dt{margin-bottom:4px;color:#64748b;font-size:11px}.product-detail-stats dd{margin:0;color:#111827;font-size:13px;font-weight:700;overflow-wrap:anywhere}.product-format-tags{margin:0 0 12px!important;padding:8px 10px;border:1px solid #e2e8f0;border-radius:7px;background:#fff;color:#64748b}#product-dialog .detail-table{max-height:330px;border:1px solid #eef2f7;border-radius:7px}#product-dialog .detail-table table{min-width:560px}#product-dialog .detail-table th{background:#f8fafc}@media (max-width:700px){.product-detail-hero{grid-template-columns:1fr}.product-image-frame{width:100%;max-width:260px;margin:0 auto}.product-detail-stats{grid-template-columns:1fr}}#root{min-height:100vh}.topbar{gap:16px}.logo,.btn-export,.btn-save,.topbar-stat .ts span{white-space:nowrap;flex-shrink:0}.breadcrumb{min-width:0}#mapProvince,#mapCity{width:96px}#mapDistrict{width:108px}#mapStreet{width:120px}.region-control{display:inline-flex;align-items:center;gap:6px;min-width:0}.region-separator{opacity:.5}.breadcrumb-reset{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.filters-panel .demand-filters{flex:0 0 auto;max-height:260px}.filters-panel .supply-filters{min-height:0}.ws-item{width:100%;text-align:left}.ws-info,.ws-name,.ws-meta{display:block}.center{min-width:0}.map-card-panel{display:flex;flex-direction:column;flex:1;min-height:520px;overflow:hidden;background:#fff;border-radius:10px;box-shadow:var(--shadow)}.map-card-panel .map-wrap{flex:1;min-height:340px;overflow:hidden}.map-fallback{position:absolute;top:0;right:0;bottom:0;left:0;z-index:3;background:#eef2f6}.map-fallback>img{width:100%;height:100%;object-fit:cover}.map-failure{position:absolute;top:15px;left:15px;right:15px;display:flex;gap:8px;align-items:center;justify-content:space-between;padding:8px 12px;color:#64748b;font-size:11px;background:#fffffff0;border:1px solid #e2e8f0;border-radius:4px}.fallback-marker{position:absolute;width:26px;height:34px;color:#fff;border:2px solid white;border-radius:16px 16px 16px 0;transform:rotate(-45deg);box-shadow:0 2px 6px #0003;font-weight:600}.fallback-marker.inactive{opacity:.35}.react-map-tools{position:absolute;top:14px;right:12px;z-index:6;display:flex;flex-direction:column;gap:5px}.bottom-bar{position:relative;flex-shrink:0;max-height:290px;display:flex;flex-direction:column;background:#fff;border-top:1px solid #e2e8f0}.bottom-header{width:100%;flex-shrink:0;text-align:left;background:#fff;min-height:38px}.bottom-bar .table-wrap{overflow:auto;max-height:250px}.bottom-bar.collapsed .table-wrap{display:none}.bottom-bar.collapsed .bh-arrow{transform:rotate(180deg)}.category-heading{font-size:11px;font-weight:600;margin-bottom:6px}.evidence-dialog,.product-dialog{margin:auto;width:min(900px,94vw);max-height:88vh;border:1px solid #e2e8f0;border-radius:8px;padding:0;overflow:auto;color:#1f2937}.evidence-dialog::backdrop,.product-dialog::backdrop{background:#0f172a40}#evidence-dialog{padding:0}.evidence-dialog .list-dialog-head h2,.product-dialog .list-dialog-head h2{font-size:15px;white-space:normal;overflow-wrap:anywhere}.detail-content{padding:16px 20px}.detail-content p{margin:10px 0;font-size:12px;line-height:1.7}.detail-table{overflow:auto;max-height:380px}.list-secondary:disabled{opacity:.4;cursor:default}.lucide{letter-spacing:0}@media (max-width:1100px){.topbar{gap:12px;padding:10px 14px}.breadcrumb{flex-wrap:wrap}.rec-panel{min-height:400px}.topbar-spacer{display:none}.map-card-panel{min-height:550px}}@media (max-width:700px){.topbar{gap:10px}.topbar .logo{margin-right:auto}.btn-export,.btn-save{padding:7px 10px}.map-card-panel{min-height:500px}.map-failure{flex-wrap:wrap}.filters-panel .demand-filters{max-height:none}.app{padding:8px}.app>.panel,.app>.center{margin-bottom:10px}.rec-panel{max-height:800px!important}.map-card-head{gap:6px}.mch-left{flex-wrap:wrap}.list-dialog-head h2{font-size:16px}.topbar .breadcrumb{display:none}.btn-week{min-width:135px!important}.selection-dialog .selection-toolbar-buttons{flex-wrap:wrap}}.map-loading-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:4;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:12px;background:#eef2f6;color:#64748b;font-size:12px}#amap .amap-logo,#amap .amap-copyright{display:none!important}
