:root{--bg-primary:#f0f4f8;--bg-secondary:#fff;--bg-card:#ffffffbf;--bg-glass:#fff9;--bg-input:#f8fafc;--bg-hover:#eef2ff;--text-primary:#1e293b;--text-secondary:#475569;--text-tertiary:#94a3b8;--text-inverse:#fff;--accent-blue:#3b82f6;--accent-indigo:#6366f1;--accent-purple:#8b5cf6;--accent-teal:#14b8a6;--accent-green:#22c55e;--accent-orange:#f59e0b;--accent-red:#ef4444;--accent-pink:#ec4899;--gradient-primary:linear-gradient(135deg, #3b82f6, #8b5cf6);--gradient-hero:linear-gradient(135deg, #eef2ff 0%, #e0e7ff 50%, #f0f4f8 100%);--gradient-card:linear-gradient(135deg, #ffffffe6, #fff9);--gradient-accent:linear-gradient(135deg, #3b82f6, #6366f1);--border-light:#94a3b833;--border-medium:#94a3b84d;--shadow-sm:0 1px 3px #0000000f, 0 1px 2px #0000000a;--shadow-md:0 4px 12px #0000000f, 0 2px 6px #0000000a;--shadow-lg:0 10px 30px #00000014, 0 4px 12px #0000000a;--shadow-xl:0 20px 50px #0000001a;--shadow-glow:0 0 20px #3b82f626;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--radius-xl:24px;--radius-full:9999px;--transition-fast:.15s ease;--transition-base:.25s ease;--transition-slow:.4s ease;--font-sans:"Inter", "Noto Sans SC", -apple-system, BlinkMacSystemFont, sans-serif}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;font-size:16px}body{font-family:var(--font-sans);background:var(--bg-primary);color:var(--text-primary);-webkit-font-smoothing:antialiased;min-height:100vh;line-height:1.6;overflow-x:hidden}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border-medium);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-tertiary)}.nav-bar{z-index:1000;-webkit-backdrop-filter:blur(20px);border-bottom:1px solid var(--border-light);height:64px;box-shadow:var(--shadow-sm);background:#ffffffd9;justify-content:space-between;align-items:center;padding:0 24px;display:flex;position:fixed;top:0;left:0;right:0}.nav-left{align-items:center;display:flex}.nav-logo{align-items:center;gap:12px;display:flex}.logo-icon{align-items:center;display:flex}.logo-text{flex-direction:column;display:flex}.logo-title{background:var(--gradient-primary);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:15px;font-weight:700;line-height:1.2}.logo-sub{color:var(--text-tertiary);letter-spacing:.5px;font-size:10px;line-height:1.2}.nav-center{align-items:center;gap:4px;display:flex}.nav-link{border-radius:var(--radius-full);color:var(--text-secondary);transition:all var(--transition-base);align-items:center;gap:6px;padding:8px 16px;font-size:13px;font-weight:500;text-decoration:none;display:flex;position:relative}.nav-link:hover{color:var(--accent-blue);background:var(--bg-hover)}.nav-link.active{color:var(--text-inverse);background:var(--gradient-accent);box-shadow:0 2px 8px #3b82f64d}.nav-link svg{flex-shrink:0}.nav-right{align-items:center;display:flex}.avatar-circle{background:var(--gradient-primary);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:36px;height:36px;font-size:14px;font-weight:600;display:flex}#app-container{min-height:calc(100vh - 64px);margin-top:64px}.page{animation:.4s fadeInUp}@keyframes fadeInUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.demand-page{background:var(--gradient-hero);flex-direction:column;justify-content:center;align-items:center;min-height:calc(100vh - 64px);display:flex;position:relative;overflow:hidden}.demand-page:before{content:"";pointer-events:none;background:radial-gradient(circle,#3b82f614 0%,#0000 70%);border-radius:50%;width:500px;height:500px;position:absolute;top:-200px;right:-200px}.demand-page:after{content:"";pointer-events:none;background:radial-gradient(circle,#8b5cf60f 0%,#0000 70%);border-radius:50%;width:400px;height:400px;position:absolute;bottom:-150px;left:-150px}.demand-hero{text-align:center;z-index:1;max-width:700px;padding:0 24px}.demand-hero h1{background:var(--gradient-primary);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;margin-bottom:12px;font-size:36px;font-weight:700}.demand-hero p{color:var(--text-secondary);margin-bottom:40px;font-size:16px;line-height:1.7}.chat-input-wrapper{background:var(--bg-secondary);border-radius:var(--radius-xl);width:100%;max-width:680px;box-shadow:var(--shadow-lg), var(--shadow-glow);border:1px solid var(--border-light);transition:all var(--transition-base);z-index:1;padding:6px}.chat-input-wrapper:focus-within{box-shadow:var(--shadow-xl), 0 0 30px #3b82f633;border-color:var(--accent-blue)}.chat-input-inner{align-items:flex-end;gap:8px;padding:10px 14px;display:flex}.chat-textarea{font-family:var(--font-sans);color:var(--text-primary);resize:none;background:0 0;border:none;outline:none;flex:1;min-height:24px;max-height:120px;font-size:15px;line-height:1.5}.chat-textarea::placeholder{color:var(--text-tertiary)}.chat-actions{flex-shrink:0;align-items:center;gap:6px;display:flex}.btn-icon{border-radius:var(--radius-md);cursor:pointer;width:38px;height:38px;color:var(--text-tertiary);transition:all var(--transition-fast);background:0 0;border:none;justify-content:center;align-items:center;display:flex}.btn-icon:hover{background:var(--bg-hover);color:var(--accent-blue)}.btn-send{border-radius:var(--radius-md);cursor:pointer;background:var(--gradient-accent);color:#fff;width:38px;height:38px;transition:all var(--transition-fast);border:none;justify-content:center;align-items:center;display:flex;box-shadow:0 2px 8px #3b82f64d}.btn-send:hover{transform:scale(1.05);box-shadow:0 4px 12px #3b82f666}.btn-send:disabled{opacity:.5;cursor:not-allowed;transform:none}.quick-tags{z-index:1;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:20px;display:flex}.quick-tag{border-radius:var(--radius-full);background:var(--bg-secondary);border:1px solid var(--border-light);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast);box-shadow:var(--shadow-sm);padding:6px 14px;font-size:12px}.quick-tag:hover{border-color:var(--accent-blue);color:var(--accent-blue);box-shadow:var(--shadow-md)}.demand-result-page{max-width:1200px;margin:0 auto;padding:24px;animation:.5s fadeInUp}.result-header{justify-content:space-between;align-items:center;margin-bottom:24px;display:flex}.result-header h2{font-size:22px;font-weight:600}.btn-back{border-radius:var(--radius-full);border:1px solid var(--border-medium);background:var(--bg-secondary);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast);align-items:center;gap:6px;padding:8px 16px;font-size:13px;display:flex}.btn-back:hover{border-color:var(--accent-blue);color:var(--accent-blue)}.result-grid{grid-template-columns:1fr 1fr;gap:24px;display:grid}.template-card{background:var(--bg-card);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:var(--radius-lg);border:1px solid var(--border-light);box-shadow:var(--shadow-md);padding:24px}.template-card h3{align-items:center;gap:8px;margin-bottom:20px;font-size:16px;font-weight:600;display:flex}.template-card h3 .icon-dot{background:var(--gradient-accent);border-radius:50%;width:8px;height:8px}.form-group{margin-bottom:16px}.form-label{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px;font-size:12px;font-weight:500;display:block}.form-input,.form-select,.form-textarea-field{border:1px solid var(--border-light);border-radius:var(--radius-sm);background:var(--bg-input);width:100%;font-family:var(--font-sans);color:var(--text-primary);transition:all var(--transition-fast);outline:none;padding:10px 14px;font-size:14px}.form-input:focus,.form-select:focus,.form-textarea-field:focus{border-color:var(--accent-blue);box-shadow:0 0 0 3px #3b82f61a}.form-textarea-field{resize:vertical;min-height:80px}.form-select{cursor:pointer}.btn-primary{border-radius:var(--radius-full);cursor:pointer;background:var(--gradient-accent);color:#fff;font-family:var(--font-sans);transition:all var(--transition-base);border:none;align-items:center;gap:8px;padding:10px 24px;font-size:14px;font-weight:500;display:inline-flex;box-shadow:0 2px 8px #3b82f64d}.btn-primary:hover{transform:translateY(-1px);box-shadow:0 4px 16px #3b82f666}.btn-secondary{border-radius:var(--radius-full);border:1px solid var(--border-medium);background:var(--bg-secondary);color:var(--text-primary);font-family:var(--font-sans);cursor:pointer;transition:all var(--transition-base);align-items:center;gap:8px;padding:10px 24px;font-size:14px;font-weight:500;display:inline-flex}.btn-secondary:hover{border-color:var(--accent-blue);color:var(--accent-blue)}.match-section{margin-top:32px}.match-section h3{margin-bottom:16px;font-size:18px;font-weight:600}.match-list{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;display:grid}.match-card{background:var(--bg-card);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:var(--radius-md);border:1px solid var(--border-light);transition:all var(--transition-base);cursor:pointer;padding:20px;position:relative;overflow:hidden}.match-card:before{content:"";background:var(--gradient-primary);opacity:0;width:4px;height:100%;transition:opacity var(--transition-fast);position:absolute;top:0;left:0}.match-card:hover{box-shadow:var(--shadow-lg);border-color:#3b82f633;transform:translateY(-4px)}.match-card:hover:before{opacity:1}.match-rank{background:var(--gradient-accent);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:28px;height:28px;font-size:12px;font-weight:700;display:flex;position:absolute;top:12px;right:12px}.match-card-name{margin-bottom:6px;padding-right:36px;font-size:15px;font-weight:600}.match-card-field{color:var(--text-tertiary);margin-bottom:10px;font-size:12px}.match-score-bar{background:#e2e8f0;border-radius:3px;height:6px;margin-bottom:6px;overflow:hidden}.match-score-fill{background:var(--gradient-primary);border-radius:3px;height:100%;transition:width .8s}.match-score-text{color:var(--accent-blue);font-size:12px;font-weight:600}.match-card-tags{flex-wrap:wrap;gap:4px;margin-top:10px;display:flex}.match-tag{border-radius:var(--radius-full);color:var(--accent-indigo);background:#eef2ff;padding:2px 8px;font-size:11px}.loading-overlay{flex-direction:column;justify-content:center;align-items:center;gap:16px;padding:60px;display:flex}.spinner{border:3px solid #e2e8f0;border-top:3px solid var(--accent-blue);border-radius:50%;width:40px;height:40px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.loading-text{color:var(--text-secondary);font-size:14px;animation:1.5s infinite pulse}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.supply-page{max-width:1280px;margin:0 auto;padding:24px}.supply-header{justify-content:space-between;align-items:center;margin-bottom:24px;display:flex}.supply-header h2{font-size:22px;font-weight:600}.supply-stats{grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:24px;display:grid}.stat-card{background:var(--bg-card);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--border-light);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);transition:all var(--transition-base);padding:20px}.stat-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.stat-label{color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.5px;margin-bottom:8px;font-size:12px}.stat-value{background:var(--gradient-primary);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:28px;font-weight:700}.stat-change{margin-top:4px;font-size:12px}.stat-change.up{color:var(--accent-green)}.stat-change.down{color:var(--accent-red)}.tabs{gap:4px;margin-bottom:24px;display:flex}.tab-btn{border-radius:var(--radius-full);border:1px solid var(--border-light);background:var(--bg-secondary);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast);padding:8px 20px;font-size:13px;font-weight:500}.tab-btn:hover{border-color:var(--accent-blue);color:var(--accent-blue)}.tab-btn.active{background:var(--gradient-accent);color:#fff;border-color:#0000;box-shadow:0 2px 8px #3b82f64d}.data-table-wrapper{background:var(--bg-card);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--border-light);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);overflow:hidden}.data-table{border-collapse:collapse;width:100%}.data-table th{text-align:left;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.5px;border-bottom:1px solid var(--border-light);background:#f8fafc;padding:14px 16px;font-size:12px;font-weight:600}.data-table td{border-bottom:1px solid #f1f5f9;padding:14px 16px;font-size:14px}.data-table tr:last-child td{border-bottom:none}.data-table tr:hover td{background:#fafbfe}.badge{border-radius:var(--radius-full);padding:2px 10px;font-size:11px;font-weight:500;display:inline-block}.badge-blue{color:#1d4ed8;background:#dbeafe}.badge-green{color:#15803d;background:#dcfce7}.badge-purple{color:#7c3aed;background:#f3e8ff}.badge-orange{color:#d97706;background:#fef3c7}.btn-sm{border-radius:var(--radius-sm);border:1px solid var(--border-light);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast);background:0 0;padding:4px 12px;font-size:12px}.btn-sm:hover{border-color:var(--accent-blue);color:var(--accent-blue)}.btn-sm.danger:hover{border-color:var(--accent-red);color:var(--accent-red)}.modal-overlay{z-index:2000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0000004d;justify-content:center;align-items:center;animation:.2s fadeIn;display:flex;position:fixed;inset:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal-card{background:var(--bg-secondary);border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);width:90%;max-width:640px;max-height:85vh;padding:28px;animation:.3s modalSlideIn;overflow-y:auto}@keyframes modalSlideIn{0%{opacity:0;transform:translateY(20px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.modal-header{justify-content:space-between;align-items:center;margin-bottom:24px;display:flex}.modal-header h3{font-size:18px;font-weight:600}.modal-close{cursor:pointer;width:32px;height:32px;color:var(--text-secondary);transition:all var(--transition-fast);background:#f1f5f9;border:none;border-radius:50%;justify-content:center;align-items:center;display:flex}.modal-close:hover{background:#e2e8f0}.modal-actions{border-top:1px solid var(--border-light);justify-content:flex-end;gap:12px;margin-top:24px;padding-top:16px;display:flex}.dynamic-list{flex-direction:column;gap:8px;margin-bottom:12px;display:flex}.dynamic-item{align-items:center;gap:8px;display:flex}.dynamic-item input{flex:1}.btn-add-item{border-radius:var(--radius-sm);border:1px dashed var(--border-medium);color:var(--text-tertiary);cursor:pointer;transition:all var(--transition-fast);background:0 0;padding:6px 14px;font-size:12px}.btn-add-item:hover{border-color:var(--accent-blue);color:var(--accent-blue)}.dashboard-page{max-width:1400px;margin:0 auto;padding:24px}.dashboard-header{justify-content:space-between;align-items:center;margin-bottom:24px;display:flex}.dashboard-header h2{font-size:22px;font-weight:600}.dashboard-time{color:var(--text-tertiary);font-size:13px}.kpi-row{grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:24px;display:grid}.kpi-card{background:var(--bg-card);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--border-light);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);transition:all var(--transition-base);padding:20px 24px;position:relative;overflow:hidden}.kpi-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.kpi-card:after{content:"";opacity:.06;border-radius:50%;width:80px;height:80px;position:absolute;top:0;right:0;transform:translate(20px,-20px)}.kpi-card:first-child:after{background:var(--accent-blue)}.kpi-card:nth-child(2):after{background:var(--accent-green)}.kpi-card:nth-child(3):after{background:var(--accent-purple)}.kpi-card:nth-child(4):after{background:var(--accent-orange)}.kpi-label{color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.5px;margin-bottom:8px;font-size:12px}.kpi-value{font-size:32px;font-weight:700;line-height:1}.kpi-card:first-child .kpi-value{color:var(--accent-blue)}.kpi-card:nth-child(2) .kpi-value{color:var(--accent-green)}.kpi-card:nth-child(3) .kpi-value{color:var(--accent-purple)}.kpi-card:nth-child(4) .kpi-value{color:var(--accent-orange)}.kpi-sub{color:var(--text-tertiary);margin-top:4px;font-size:12px}.charts-grid{grid-template-columns:repeat(3,1fr);gap:20px;display:grid}.chart-card{background:var(--bg-card);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--border-light);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);transition:all var(--transition-base);padding:20px}.chart-card:hover{box-shadow:var(--shadow-md)}.chart-card.span-2{grid-column:span 2}.chart-title{align-items:center;gap:8px;margin-bottom:16px;font-size:14px;font-weight:600;display:flex}.chart-title .dot{border-radius:50%;width:6px;height:6px}.chart-title .dot.blue{background:var(--accent-blue)}.chart-title .dot.green{background:var(--accent-green)}.chart-title .dot.purple{background:var(--accent-purple)}.chart-title .dot.orange{background:var(--accent-orange)}.chart-title .dot.teal{background:var(--accent-teal)}.chart-title .dot.pink{background:var(--accent-pink)}.chart-container{width:100%;height:220px;position:relative}.chart-card.span-2 .chart-container{height:260px}.top-list{list-style:none}.top-item{border-bottom:1px solid #f1f5f9;align-items:center;gap:10px;padding:8px 0;font-size:13px;display:flex}.top-item:last-child{border-bottom:none}.top-num{color:#fff;border-radius:6px;justify-content:center;align-items:center;width:22px;height:22px;font-size:11px;font-weight:700;display:flex}.top-num.gold{background:linear-gradient(135deg,#f59e0b,#d97706)}.top-num.silver{background:linear-gradient(135deg,#94a3b8,#64748b)}.top-num.bronze{background:linear-gradient(135deg,#d97706,#b45309)}.top-num.normal{color:var(--text-secondary);background:#e2e8f0}.top-name{flex:1;font-weight:500}.top-value{color:var(--accent-blue);font-weight:600}@media (width<=1024px){.charts-grid,.kpi-row,.supply-stats{grid-template-columns:repeat(2,1fr)}.result-grid{grid-template-columns:1fr}}@media (width<=768px){.nav-bar{padding:0 12px}.logo-text,.nav-link span{display:none}.charts-grid{grid-template-columns:1fr}.chart-card.span-2{grid-column:span 1}.kpi-row,.supply-stats{grid-template-columns:1fr}.demand-hero h1{font-size:26px}.match-list{grid-template-columns:1fr}}
