*{margin:0;padding:0;box-sizing:border-box}body{font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;background-color:#f5f7fa;color:#333;line-height:1.6}#app{min-height:100vh}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:#f0f2f5}*{box-sizing:border-box}.app-header{background:linear-gradient(135deg,#1a237e,#283593);color:#fff;padding:0 16px;display:flex;align-items:center;gap:12px;box-shadow:0 2px 8px #00000026;height:56px;flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch}.app-header h1{font-size:1.1rem;font-weight:700;margin:0;white-space:nowrap;flex-shrink:0}.nav-links{display:flex;gap:2px;height:100%;flex-shrink:0}.nav-link{display:flex;align-items:center;padding:0 12px;color:#ffffffb3;text-decoration:none;font-size:.82rem;font-weight:500;white-space:nowrap;border-bottom:3px solid transparent;transition:all .2s}.nav-link:hover{color:#fff;background:#ffffff14}.nav-link.active{color:#fff;border-bottom-color:#7986cb}.app-main{width:min(1600px,calc(100vw - 24px));max-width:1600px;margin:20px auto;padding:0;overflow-x:hidden}.layout{display:grid;grid-template-columns:420px 1fr;gap:20px}.panel{background:#fff;border-radius:8px;box-shadow:0 1px 4px #00000014;overflow:hidden}.panel-header{display:flex;justify-content:space-between;align-items:center;padding:14px 16px;border-bottom:1px solid #eee}.panel-header h2{font-size:1rem;font-weight:600;margin:0}.tab-bar{display:flex;border-bottom:1px solid #eee}.tab{flex:1;padding:10px;border:none;background:none;cursor:pointer;font-size:.88rem;color:#666;transition:all .2s}.tab.active{color:#1a237e;font-weight:600;border-bottom:2px solid #1a237e}.tab:hover{background:#f5f5f5}.search-sort-bar{padding:10px 12px;border-bottom:1px solid #eee;display:flex;gap:8px}.search-input{flex:1;padding:8px 12px;border:1px solid #ddd;border-radius:6px;font-size:.88rem;outline:none}.search-input:focus{border-color:#1a237e}.sort-select{width:100px;padding:8px 6px;border:1px solid #ddd;border-radius:6px;font-size:.82rem;outline:none;background:#fff;cursor:pointer}.sort-select:focus{border-color:#1a237e}.stock-list-header{padding:8px 12px;border-bottom:1px solid #eee;background:#fafafa}.check-all{display:flex;align-items:center;gap:8px;cursor:pointer;font-size:.82rem;color:#666}.stock-list{max-height:520px;overflow-y:auto}.stock-item{display:flex;align-items:center;gap:10px;padding:7px 12px;cursor:pointer;font-size:.85rem;border-bottom:1px solid #f5f5f5;transition:background .15s}.stock-item:hover{background:#f0f4ff}.stock-item .code{width:65px;color:#1a237e;font-weight:500;font-family:monospace}.stock-item .name{flex:1}.stock-item .meta{font-size:.73rem;color:#888;white-space:nowrap;font-family:monospace}.config-panel{display:flex;flex-direction:column}.config-section{padding:16px;border-bottom:1px solid #eee}.config-section h3{font-size:.92rem;font-weight:600;margin:0 0 10px}.collect-modes{padding:20px 16px}.collect-card{padding:16px;border:1px solid #e0e0e0;border-radius:10px;background:#fafbff}.card-header{display:flex;align-items:center;gap:10px;margin-bottom:8px}.card-badge{font-size:.7rem;font-weight:700;padding:3px 8px;border-radius:4px;text-transform:uppercase;letter-spacing:.5px}.card-badge.all{background:#e8eaf6;color:#1a237e}.card-badge.daily{background:#e8f5e9;color:#2e7d32}.card-title{font-size:.95rem;font-weight:600;color:#333}.card-desc{font-size:.8rem;color:#777;margin:0 0 12px}.collect-card .btn{width:100%}.collect-divider{display:flex;align-items:center;gap:12px;margin:14px 0;color:#bbb;font-size:.78rem}.collect-divider:before,.collect-divider:after{content:"";flex:1;height:1px;background:#e0e0e0}.daily-row{display:flex;gap:10px}.year-select{width:110px;padding:9px 10px;border:1px solid #ddd;border-radius:6px;font-size:.88rem;outline:none;background:#fff;cursor:pointer}.year-select:focus{border-color:#2e7d32}.btn-daily{flex:1;background:#2e7d32;color:#fff}.btn-daily:hover:not(:disabled){background:#388e3c}.action-section{background:#fafafa;display:flex;flex-direction:column;gap:8px}.btn-stop{width:100%}.btn{padding:10px 24px;border:none;border-radius:6px;font-size:.9rem;font-weight:500;cursor:pointer;transition:all .2s}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:#1a237e;color:#fff}.btn-primary:hover:not(:disabled){background:#283593}.btn-danger{background:#c62828;color:#fff}.btn-danger:hover:not(:disabled){background:#d32f2f}.btn-sm{padding:6px 12px;font-size:.8rem}.btn-outline{background:none;border:1px solid #1a237e;color:#1a237e}.btn-outline:hover:not(:disabled){background:#e8eaf6}.progress-bar{height:22px;background:#e0e0e0;border-radius:11px;overflow:hidden;position:relative}.progress-fill{height:100%;background:linear-gradient(90deg,#1a237e,#3f51b5);border-radius:11px;transition:width .5s}.progress-text{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:.75rem;font-weight:600;color:#333}.status-msg{font-size:.85rem;font-weight:500}.status-success{color:#2e7d32}.status-error{color:#c62828}.status-warning{color:#ef6c00}.log-section{flex:1;display:flex;flex-direction:column;border-bottom:none}.log-box{flex:1;min-height:200px;max-height:340px;overflow-y:auto;background:#1e1e1e;border-radius:6px;padding:10px;font-family:Consolas,Courier New,monospace;font-size:.8rem}.log-item{padding:3px 0;display:flex;gap:10px}.log-time{color:#888;white-space:nowrap}.log-msg{word-break:break-all}.log-info .log-msg{color:#90caf9}.log-success .log-msg{color:#a5d6a7}.log-warning .log-msg{color:#ffe082}.log-error .log-msg{color:#ef9a9a}.empty{padding:20px;text-align:center;color:#999;font-size:.85rem}@media(max-width:900px){.layout{grid-template-columns:1fr}.app-header{height:auto;min-height:48px;flex-wrap:wrap;padding:8px 12px;gap:4px}.app-header h1{font-size:1rem;width:100%}.nav-links{width:100%;gap:0}.nav-link{flex:1;justify-content:center;padding:8px 4px;font-size:.78rem;border-bottom-width:2px}}.upload-section[data-v-077a8276]{padding:16px}.upload-header[data-v-077a8276]{display:flex;align-items:center;gap:8px;margin-bottom:6px}.upload-header h3[data-v-077a8276]{font-size:.92rem;font-weight:600;margin:0}.upload-badge[data-v-077a8276]{font-size:.65rem;font-weight:800;padding:2px 7px;border-radius:4px;background:#e8eaf6;color:#1a237e;letter-spacing:.5px}.upload-desc[data-v-077a8276]{font-size:.78rem;color:#888;margin:0 0 12px;line-height:1.5}.upload-drop[data-v-077a8276]{border:2px dashed #ccc;border-radius:10px;padding:28px 16px;text-align:center;cursor:pointer;transition:all .2s;background:#fafafa}.upload-drop[data-v-077a8276]:hover{border-color:#1a237e;background:#f5f6ff}.upload-drop.dragover[data-v-077a8276]{border-color:#1a237e;background:#e8eaf6}.upload-drop.uploading[data-v-077a8276]{border-color:#2e7d32;background:#f1f8e9;cursor:default}.drop-icon[data-v-077a8276]{font-size:2rem;margin-bottom:8px}.drop-text[data-v-077a8276]{font-size:.88rem;color:#555;font-weight:500}.drop-hint[data-v-077a8276]{font-size:.75rem;color:#999;margin-top:6px}.uploading-text[data-v-077a8276]{color:#2e7d32;font-weight:600;margin-bottom:10px}.upload-progress-bar[data-v-077a8276]{height:20px;background:#e0e0e0;border-radius:10px;overflow:hidden;position:relative;margin:0 20px}.upload-progress-fill[data-v-077a8276]{height:100%;background:linear-gradient(90deg,#2e7d32,#66bb6a);border-radius:10px;transition:width .5s}.upload-progress-text[data-v-077a8276]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:.72rem;font-weight:600;color:#333}.collect-modes[data-v-077a8276]{padding:20px 16px;display:flex;flex-direction:column;gap:12px}.collect-card[data-v-077a8276]{padding:16px;border:1px solid #e0e0e0;border-radius:10px;background:#fafbff}.collect-card.featured[data-v-077a8276]{border-color:#c8d7ff;background:linear-gradient(135deg,#f7f9ff,#eef5ff)}.collect-card.daily-card[data-v-077a8276]{border-color:#cfe7dc;background:#f7fcfa}.card-header[data-v-077a8276]{display:flex;align-items:center;gap:10px;margin-bottom:8px}.card-badge[data-v-077a8276]{font-size:.7rem;font-weight:700;padding:3px 8px;border-radius:4px;text-transform:uppercase;letter-spacing:.5px}.card-badge.minute[data-v-077a8276]{background:#e3f2fd;color:#1565c0}.card-badge.daily[data-v-077a8276]{background:#e0f2f1;color:#00695c}.card-title[data-v-077a8276]{font-size:.95rem;font-weight:600;color:#333}.card-desc[data-v-077a8276]{font-size:.8rem;color:#777;margin:0 0 12px;line-height:1.5}.collect-card .btn[data-v-077a8276]{width:100%}.range-limit-row[data-v-077a8276]{margin:0 0 8px;font-size:.78rem;font-weight:800;color:#2f6fa8}.range-row[data-v-077a8276]{display:grid;grid-template-columns:minmax(135px,170px) 18px minmax(135px,170px) 1fr;align-items:center;gap:8px;margin-bottom:8px}.latest-row[data-v-077a8276]{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:2px 0 10px;font-size:.78rem;color:#4b5563}.latest-label[data-v-077a8276]{font-weight:800;color:#1f2937}.latest-row b[data-v-077a8276]{margin-left:6px;color:#1565c0}.btn-use-next[data-v-077a8276],.btn-refresh-latest[data-v-077a8276]{border:1px solid #bbdefb;border-radius:5px;background:#fff;color:#1565c0;padding:4px 8px;font-size:.72rem;font-weight:800;cursor:pointer}.btn-use-next[data-v-077a8276]:hover:not(:disabled),.btn-refresh-latest[data-v-077a8276]:hover:not(:disabled){background:#e3f2fd}.btn-use-next[data-v-077a8276]:disabled,.btn-refresh-latest[data-v-077a8276]:disabled{opacity:.55;cursor:not-allowed}.quick-row[data-v-077a8276]{display:flex;flex-wrap:wrap;gap:7px}.date-input[data-v-077a8276]{min-width:0;padding:9px 10px;border:1px solid #ddd;border-radius:6px;font-size:.88rem;outline:none;background:#fff}.date-input[data-v-077a8276]:focus{border-color:#1565c0}.btn-minute[data-v-077a8276]{background:#2f6fa8;color:#fff}.btn-minute[data-v-077a8276]:hover:not(:disabled){background:#245d91}.btn-daily[data-v-077a8276]{background:#00796b;color:#fff}.btn-daily[data-v-077a8276]:hover:not(:disabled){background:#00695c}.btn-quick[data-v-077a8276]{width:auto!important;padding:7px 12px;background:#fff;color:#1565c0;border:1px solid #bbdefb;font-size:.78rem}.inventory-section[data-v-077a8276]{padding:16px;border-top:1px solid #eee}.inventory-header[data-v-077a8276]{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}.inventory-header h3[data-v-077a8276]{font-size:.92rem;font-weight:700;margin:0 0 4px;color:#222}.inventory-header p[data-v-077a8276]{font-size:.76rem;color:#777;margin:0}.inventory-status[data-v-077a8276]{display:inline-block;margin-left:5px;color:#2563eb;font-weight:700}.inventory-grid[data-v-077a8276]{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.inventory-item[data-v-077a8276]{border:1px solid #e0e0e0;border-radius:8px;background:#fff;padding:10px}.inventory-title[data-v-077a8276]{font-size:.78rem;font-weight:800;color:#374151;margin-bottom:6px}.inventory-range[data-v-077a8276]{font-size:.9rem;font-weight:800;color:#111827;margin-bottom:8px}.inventory-range.empty[data-v-077a8276]{color:#9ca3af;font-weight:700}.inventory-meta[data-v-077a8276]{display:flex;flex-wrap:wrap;gap:6px;font-size:.72rem;color:#6b7280}.action-section[data-v-077a8276]{background:#fafafa;display:flex;flex-direction:column;gap:8px}.collection-summary[data-v-077a8276]{display:flex;flex-wrap:wrap;gap:6px 12px;padding:8px 10px;border:1px solid #e0e0e0;border-radius:6px;background:#fff;color:#424242;font-size:.8rem;font-weight:700}.btn-stop[data-v-077a8276]{width:100%}.btn[data-v-077a8276]{padding:10px 24px;border:none;border-radius:6px;font-size:.9rem;font-weight:500;cursor:pointer;transition:all .2s}.btn[data-v-077a8276]:disabled{opacity:.5;cursor:not-allowed}.btn-danger[data-v-077a8276]{background:#c62828;color:#fff}.btn-danger[data-v-077a8276]:hover:not(:disabled){background:#d32f2f}.btn-resume[data-v-077a8276]{width:100%;background:#1565c0;color:#fff}.btn-resume[data-v-077a8276]:hover:not(:disabled){background:#0d47a1}.btn-sm[data-v-077a8276]{padding:6px 12px;font-size:.8rem}.btn-outline[data-v-077a8276]{background:none;border:1px solid #1a237e;color:#1a237e}.btn-outline[data-v-077a8276]:hover:not(:disabled){background:#e8eaf6}.status-msg[data-v-077a8276]{font-size:.85rem;font-weight:500;margin-top:8px}.status-success[data-v-077a8276]{color:#2e7d32}.status-error[data-v-077a8276]{color:#c62828}.status-warning[data-v-077a8276]{color:#ef6c00}.polling-page[data-v-1f334100]{display:flex;flex-direction:column;gap:16px;color:#182033}.polling-hero[data-v-1f334100],.daemon-panel[data-v-1f334100],.market-card[data-v-1f334100],.pipeline-panel[data-v-1f334100],.log-panel[data-v-1f334100]{background:#fff;border:1px solid #e4e8f0;border-radius:14px;box-shadow:0 4px 18px #19233a0d}.polling-hero[data-v-1f334100]{padding:24px 26px;display:flex;align-items:center;justify-content:space-between;gap:20px}.eyebrow[data-v-1f334100]{color:#4f46e5;font-size:.68rem;font-weight:800;letter-spacing:.12em;margin-bottom:5px}.polling-hero h2[data-v-1f334100]{margin:0 0 6px;font-size:1.35rem}.polling-hero p[data-v-1f334100],.section-heading p[data-v-1f334100]{margin:0;color:#728096;font-size:.82rem;line-height:1.55}.hero-actions[data-v-1f334100]{display:flex;gap:8px;flex-shrink:0}.action[data-v-1f334100],.market-run[data-v-1f334100],.log-controls button[data-v-1f334100]{border:0;border-radius:8px;padding:10px 18px;font-weight:700;cursor:pointer}.action[data-v-1f334100]:disabled,.market-run[data-v-1f334100]:disabled,.log-controls button[data-v-1f334100]:disabled{opacity:.45;cursor:not-allowed}.action.start[data-v-1f334100]{background:#2563eb;color:#fff}.action.stop[data-v-1f334100]{background:#fee2e2;color:#b91c1c}.action.run[data-v-1f334100]{background:#eef2ff;color:#4338ca}.error-banner[data-v-1f334100]{border:1px solid #fecaca;background:#fff1f2;color:#be123c;padding:11px 14px;border-radius:9px;font-size:.82rem}.daemon-panel[data-v-1f334100]{padding:16px 20px;display:flex;justify-content:space-between;align-items:center;gap:16px}.daemon-main[data-v-1f334100]{display:flex;align-items:center;gap:12px}.daemon-main strong[data-v-1f334100]{font-size:.92rem}.daemon-main p[data-v-1f334100]{margin:3px 0 0;color:#7b879b;font-size:.75rem}.status-dot[data-v-1f334100]{width:12px;height:12px;border-radius:50%;box-shadow:0 0 0 5px #94a3b824}.status-dot.online[data-v-1f334100]{background:#10b981;box-shadow:0 0 0 5px #10b98124}.status-dot.offline[data-v-1f334100]{background:#ef4444}.daemon-badges[data-v-1f334100]{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:6px}.pill[data-v-1f334100]{padding:5px 9px;border-radius:999px;font-size:.68rem;font-weight:700}.pill.green[data-v-1f334100]{color:#047857;background:#d1fae5}.pill.gray[data-v-1f334100]{color:#64748b;background:#f1f5f9}.pill.blue[data-v-1f334100]{color:#1d4ed8;background:#dbeafe}.pill.violet[data-v-1f334100]{color:#6d28d9;background:#ede9fe}.market-grid[data-v-1f334100]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.market-card[data-v-1f334100]{padding:20px;overflow:hidden;position:relative}.market-card[data-v-1f334100]:before{content:"";position:absolute;inset:0 0 auto;height:4px;background:#2563eb}.market-card.overseas[data-v-1f334100]:before{background:#7c3aed}.market-card header[data-v-1f334100]{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.market-title[data-v-1f334100]{display:flex;align-items:center;gap:11px}.market-icon[data-v-1f334100]{width:42px;height:42px;border-radius:11px;display:grid;place-items:center;background:#dbeafe;color:#1d4ed8;font-weight:900;font-size:.78rem}.overseas .market-icon[data-v-1f334100]{color:#6d28d9;background:#ede9fe}.market-title h3[data-v-1f334100]{margin:0;font-size:1rem}.market-title p[data-v-1f334100]{margin:4px 0 0;color:#7b879b;font-size:.72rem}.state-badge[data-v-1f334100]{font-size:.7rem;font-weight:800;padding:5px 9px;border-radius:999px;background:#f1f5f9;color:#64748b}.state-badge.running[data-v-1f334100]{background:#dcfce7;color:#15803d}.state-badge.error[data-v-1f334100]{background:#fee2e2;color:#b91c1c}.state-badge.stopped[data-v-1f334100],.state-badge.stopping[data-v-1f334100]{background:#fff7ed;color:#c2410c}.progress-wrap[data-v-1f334100]{margin:20px 0 16px}.progress-info[data-v-1f334100],.progress-caption[data-v-1f334100]{display:flex;justify-content:space-between;gap:12px;font-size:.73rem}.progress-info strong[data-v-1f334100]{color:#1d4ed8}.progress-caption[data-v-1f334100]{color:#8490a3;margin-top:6px}.progress-caption span[data-v-1f334100]:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.poll-progress[data-v-1f334100]{height:9px;border-radius:999px;background:#edf0f5;overflow:hidden;margin-top:7px}.poll-progress div[data-v-1f334100]{height:100%;border-radius:inherit;background:linear-gradient(90deg,#2563eb,#60a5fa);transition:width .4s}.overseas .poll-progress div[data-v-1f334100]{background:linear-gradient(90deg,#7c3aed,#a78bfa)}.metric-grid[data-v-1f334100]{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.metric[data-v-1f334100]{padding:10px;border:1px solid #edf0f5;border-radius:9px;background:#fafbfc}.metric span[data-v-1f334100]{display:block;color:#7b879b;font-size:.66rem;margin-bottom:4px}.metric strong[data-v-1f334100]{font-size:.9rem}.metric.success strong[data-v-1f334100]{color:#059669}.metric.warning strong[data-v-1f334100]{color:#d97706}.metric.error strong[data-v-1f334100]{color:#dc2626}.metric.muted strong[data-v-1f334100]{color:#64748b}.market-detail[data-v-1f334100]{margin:16px 0;border-top:1px solid #edf0f5}.market-detail div[data-v-1f334100]{display:grid;grid-template-columns:90px 1fr;gap:8px;padding:8px 0;border-bottom:1px solid #f1f3f7;font-size:.73rem}.market-detail dt[data-v-1f334100]{color:#7b879b}.market-detail dd[data-v-1f334100]{margin:0;font-weight:600;text-align:right;word-break:break-all}.market-run[data-v-1f334100]{width:100%;color:#1d4ed8;background:#eff6ff}.overseas .market-run[data-v-1f334100]{color:#6d28d9;background:#f5f3ff}.pipeline-panel[data-v-1f334100],.log-panel[data-v-1f334100]{padding:20px}.section-heading[data-v-1f334100]{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px}.section-heading h3[data-v-1f334100]{margin:0 0 3px;font-size:.95rem}.pipeline[data-v-1f334100]{display:flex;align-items:center;justify-content:center;gap:10px;overflow-x:auto;padding:6px 0}.pipeline-node[data-v-1f334100]{min-width:86px;padding:12px;border:1px solid #e2e8f0;border-radius:10px;text-align:center;background:#f8fafc}.pipeline-node span[data-v-1f334100]{display:block;color:#4f46e5;font-size:.72rem;font-weight:900}.pipeline-node strong[data-v-1f334100]{font-size:.75rem}.pipeline-arrow[data-v-1f334100]{color:#94a3b8;font-weight:800}.log-heading[data-v-1f334100]{margin-bottom:12px}.log-controls[data-v-1f334100]{display:flex;gap:7px}.log-controls select[data-v-1f334100],.log-controls button[data-v-1f334100]{border:1px solid #dce1e9;background:#fff;border-radius:7px;padding:7px 10px;font-size:.75rem}.log-controls button[data-v-1f334100]{cursor:pointer;color:#334155}.terminal[data-v-1f334100]{height:330px;overflow-y:auto;padding:12px;border-radius:9px;background:#0b1220;color:#cbd5e1;font:.75rem/1.55 Consolas,monospace}.terminal-line[data-v-1f334100]{display:grid;grid-template-columns:130px 32px 1fr;gap:8px;padding:1px 0}.log-time[data-v-1f334100]{color:#64748b}.log-market[data-v-1f334100]{color:#60a5fa;font-weight:800}.log-success .log-message[data-v-1f334100]{color:#86efac}.log-warning .log-message[data-v-1f334100]{color:#fde68a}.log-error .log-message[data-v-1f334100]{color:#fca5a5}.terminal-empty[data-v-1f334100]{color:#64748b;text-align:center;padding:30px}@media(max-width:900px){.polling-hero[data-v-1f334100],.daemon-panel[data-v-1f334100]{align-items:flex-start;flex-direction:column}.market-grid[data-v-1f334100]{grid-template-columns:1fr}.hero-actions[data-v-1f334100]{width:100%}.action[data-v-1f334100]{flex:1;padding:9px 8px}.daemon-badges[data-v-1f334100]{justify-content:flex-start}.metric-grid[data-v-1f334100]{grid-template-columns:repeat(2,1fr)}.pipeline[data-v-1f334100]{justify-content:flex-start}.terminal-line[data-v-1f334100]{grid-template-columns:105px 28px 1fr}.polling-hero[data-v-1f334100]{padding:18px}}
