:root{--primary: #0066FF;--primary-dark: #0052CC;--primary-light: #3385FF;--primary-bg: rgba(0, 102, 255, .08);--success: #00C853;--success-bg: rgba(0, 200, 83, .1);--warning: #FF9500;--warning-bg: rgba(255, 149, 0, .1);--danger: #FF3B30;--danger-bg: rgba(255, 59, 48, .1);--gray-50: #FAFAFA;--gray-100: #F5F5F5;--gray-200: #EEEEEE;--gray-300: #E0E0E0;--gray-400: #BDBDBD;--gray-500: #9E9E9E;--gray-600: #757575;--gray-700: #616161;--gray-800: #424242;--gray-900: #212121;--background: #FFFFFF;--surface: #FAFBFC;--surface-elevated: #FFFFFF;--text-primary: #1A1A2E;--text-secondary: #4A5568;--text-muted: #A0AEC0;--text-inverse: #FFFFFF;--border: #E8ECF0;--border-light: #F0F4F8;--shadow-xs: 0 1px 2px rgba(0, 0, 0, .04);--shadow-sm: 0 2px 4px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .06);--shadow-md: 0 4px 8px rgba(0, 0, 0, .04), 0 2px 4px rgba(0, 0, 0, .06);--shadow-lg: 0 12px 24px rgba(0, 0, 0, .08), 0 4px 8px rgba(0, 0, 0, .04);--shadow-xl: 0 20px 40px rgba(0, 0, 0, .12), 0 8px 16px rgba(0, 0, 0, .06);--radius-sm: 6px;--radius: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-2xl: 24px;--spacing-xs: .25rem;--spacing-sm: .5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--spacing-2xl: 3rem;--gradient-primary: linear-gradient(135deg, #0066FF 0%, #0052CC 100%);--gradient-hero: linear-gradient(135deg, #0F172A 0%, #1E293B 100%);--gradient-card: linear-gradient(180deg, rgba(0, 102, 255, .02) 0%, transparent 100%)}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:16px;line-height:1.6;color:var(--text-primary);background-color:var(--background);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:var(--primary);text-decoration:none;transition:color .2s ease}a:hover{color:var(--primary-dark)}img{max-width:100%;height:auto}.container{max-width:1280px;margin:0 auto;padding:0 var(--spacing-lg)}.page{min-height:calc(100vh - 72px);padding:var(--spacing-2xl) 0}.navbar{position:fixed;top:0;left:0;right:0;z-index:100;height:72px;background:#fffffff2;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--border-light);transition:all .3s ease}.navbar-content{display:flex;align-items:center;justify-content:space-between;height:100%;max-width:1280px;margin:0 auto;padding:0 var(--spacing-lg)}.navbar-logo{display:flex;align-items:center;gap:var(--spacing-sm);font-size:1.375rem;font-weight:700;color:var(--text-primary)}.navbar-logo-icon{width:36px;height:36px;background:var(--gradient-primary);border-radius:var(--radius);display:flex;align-items:center;justify-content:center;color:#fff;box-shadow:var(--shadow-sm)}.navbar-menu{display:flex;align-items:center;gap:var(--spacing-xl)}.navbar-link{position:relative;color:var(--text-secondary);font-weight:500;font-size:.9375rem;padding:var(--spacing-sm) 0;transition:color .2s ease}.navbar-link:hover,.navbar-link.active{color:var(--primary)}.navbar-link.active:after{content:"";position:absolute;bottom:-4px;left:0;right:0;height:2px;background:var(--primary);border-radius:2px}.navbar-actions{display:flex;align-items:center;gap:var(--spacing-md)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-sm);padding:.75rem 1.5rem;font-size:.9375rem;font-weight:600;border-radius:var(--radius);border:none;cursor:pointer;transition:all .2s ease;white-space:nowrap}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--gradient-primary);color:#fff;box-shadow:var(--shadow-sm)}.btn-primary:hover:not(:disabled){transform:translateY(-1px);box-shadow:var(--shadow-md)}.btn-secondary{background:var(--surface);color:var(--text-primary);border:1px solid var(--border)}.btn-secondary:hover:not(:disabled){background:var(--gray-100);border-color:var(--gray-300)}.btn-ghost{background:transparent;color:var(--text-secondary)}.btn-ghost:hover:not(:disabled){background:var(--surface);color:var(--text-primary)}.btn-outline{background:transparent;color:var(--primary);border:1.5px solid var(--primary)}.btn-outline:hover:not(:disabled){background:var(--primary-bg)}.btn-success{background:var(--success);color:#fff}.btn-danger{background:var(--danger);color:#fff}.btn-sm{padding:.5rem 1rem;font-size:.875rem}.btn-lg{padding:1rem 2rem;font-size:1.0625rem}.btn-xl{padding:1.25rem 2.5rem;font-size:1.125rem}.btn-full{width:100%}.card{background:var(--background);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--spacing-xl);box-shadow:var(--shadow-xs);transition:all .3s ease}.card:hover{box-shadow:var(--shadow-md)}.card-elevated{border:none;box-shadow:var(--shadow-md)}.card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--spacing-lg);padding-bottom:var(--spacing-lg);border-bottom:1px solid var(--border-light)}.card-title{font-size:1.25rem;font-weight:700;color:var(--text-primary)}.card-subtitle{font-size:.875rem;color:var(--text-muted);margin-top:var(--spacing-xs)}.card-body{flex:1}.card-footer{margin-top:var(--spacing-lg);padding-top:var(--spacing-lg);border-top:1px solid var(--border-light)}.form-group{margin-bottom:var(--spacing-lg)}.form-label{display:block;font-size:.875rem;font-weight:600;color:var(--text-secondary);margin-bottom:var(--spacing-sm)}.form-input{width:100%;padding:.875rem 1rem;font-size:1rem;color:var(--text-primary);background:var(--surface);border:1.5px solid var(--border);border-radius:var(--radius);transition:all .2s ease}.form-input:focus{outline:none;border-color:var(--primary);background:var(--background);box-shadow:0 0 0 4px var(--primary-bg)}.form-input::placeholder{color:var(--text-muted)}.form-error{display:flex;align-items:center;gap:var(--spacing-xs);color:var(--danger);font-size:.8125rem;margin-top:var(--spacing-xs)}.form-hint{font-size:.8125rem;color:var(--text-muted);margin-top:var(--spacing-xs)}.table-container{overflow-x:auto;border-radius:var(--radius-lg);border:1px solid var(--border)}.table{width:100%;border-collapse:collapse;font-size:.9375rem}.table th{padding:1rem 1.25rem;text-align:left;font-weight:600;color:var(--text-secondary);background:var(--surface);border-bottom:1px solid var(--border);white-space:nowrap}.table td{padding:1rem 1.25rem;border-bottom:1px solid var(--border-light)}.table tbody tr:last-child td{border-bottom:none}.table tbody tr:hover{background:var(--surface)}.badge{display:inline-flex;align-items:center;gap:var(--spacing-xs);padding:.375rem .75rem;font-size:.75rem;font-weight:600;border-radius:9999px;white-space:nowrap}.badge-primary{background:var(--primary-bg);color:var(--primary)}.badge-success{background:var(--success-bg);color:var(--success)}.badge-warning{background:var(--warning-bg);color:var(--warning)}.badge-danger{background:var(--danger-bg);color:var(--danger)}.badge-gray{background:var(--gray-100);color:var(--gray-700)}.signal-buy{color:var(--success)}.signal-sell{color:var(--danger)}.signal-neutral{color:var(--text-muted)}.signal-support{color:var(--success)}.signal-resistance{color:var(--danger)}.loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--spacing-2xl);color:var(--text-muted)}.spinner{width:32px;height:32px;border:3px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.skeleton{background:linear-gradient(90deg,var(--gray-100) 25%,var(--gray-50) 50%,var(--gray-100) 75%);background-size:200% 100%;animation:skeleton-loading 1.5s infinite;border-radius:var(--radius)}@keyframes skeleton-loading{0%{background-position:200% 0}to{background-position:-200% 0}}.text-sm{font-size:.875rem}.text-base{font-size:1rem}.text-lg{font-size:1.125rem}.text-xl{font-size:1.25rem}.text-2xl{font-size:1.5rem}.text-3xl{font-size:2rem}.text-4xl{font-size:2.5rem}.text-muted{color:var(--text-muted)}.text-secondary{color:var(--text-secondary)}.text-primary{color:var(--text-primary)}.text-success{color:var(--success)}.text-danger{color:var(--danger)}.text-warning{color:var(--warning)}.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-bold{font-weight:700}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.flex{display:flex}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-end{justify-content:flex-end}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-8{padding-top:2rem;padding-bottom:2rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.grid{display:grid}.grid-cols-2{grid-template-columns:repeat(2,1fr)}.grid-cols-3{grid-template-columns:repeat(3,1fr)}.grid-cols-4{grid-template-columns:repeat(4,1fr)}@media(max-width:1024px){.navbar-menu{display:none}.grid-cols-4,.grid-cols-3{grid-template-columns:repeat(2,1fr)}}@media(max-width:768px){.container{padding:0 var(--spacing-md)}.page{padding:var(--spacing-xl) 0}.grid-cols-2,.grid-cols-3,.grid-cols-4{grid-template-columns:1fr}.btn-lg{padding:.875rem 1.5rem;font-size:1rem}.card{padding:var(--spacing-lg)}.navbar{height:64px}}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:var(--spacing-lg);background:linear-gradient(135deg,var(--gray-50) 0%,var(--gray-100) 100%)}.auth-container{width:100%;max-width:420px}.auth-card{background:var(--background);padding:var(--spacing-2xl);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl)}.auth-logo{display:flex;align-items:center;justify-content:center;gap:var(--spacing-sm);margin-bottom:var(--spacing-xl)}.auth-title{font-size:1.5rem;font-weight:700;text-align:center;margin-bottom:var(--spacing-sm)}.auth-subtitle{text-align:center;color:var(--text-muted);margin-bottom:var(--spacing-xl)}.pricing-card{background:var(--background);border:2px solid var(--border);border-radius:var(--radius-xl);padding:var(--spacing-2xl);text-align:center;transition:all .3s ease;display:flex;flex-direction:column}.pricing-card:hover{border-color:var(--primary-light);transform:translateY(-4px);box-shadow:var(--shadow-lg)}.pricing-card.featured{border-color:var(--primary);position:relative;box-shadow:var(--shadow-md)}.pricing-card.featured:before{content:"推荐";position:absolute;top:-12px;left:50%;transform:translate(-50%);background:var(--gradient-primary);color:#fff;padding:.375rem 1.25rem;border-radius:9999px;font-size:.75rem;font-weight:700}.pricing-header{margin-bottom:var(--spacing-lg)}.pricing-name{font-size:1.125rem;font-weight:600;color:var(--text-secondary);margin-bottom:var(--spacing-sm)}.pricing-price{display:flex;align-items:baseline;justify-content:center;gap:var(--spacing-xs)}.pricing-amount{font-size:3rem;font-weight:800;color:var(--text-primary);line-height:1}.pricing-currency{font-size:1.25rem;font-weight:600;color:var(--text-secondary)}.pricing-period{font-size:.875rem;color:var(--text-muted)}.pricing-description{color:var(--text-muted);font-size:.875rem;margin-bottom:var(--spacing-lg)}.pricing-features{list-style:none;text-align:left;margin-bottom:var(--spacing-xl);flex:1}.pricing-features li{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) 0;color:var(--text-secondary);font-size:.9375rem}.pricing-features li svg{color:var(--success);flex-shrink:0}.hero{position:relative;padding:8rem 0 6rem;background:var(--gradient-hero);overflow:hidden}.hero-content{position:relative;z-index:1;text-align:center}.hero-badge{display:inline-flex;align-items:center;gap:var(--spacing-sm);background:#ffffff1a;border:1px solid rgba(255,255,255,.2);border-radius:9999px;padding:.5rem 1rem;margin-bottom:var(--spacing-lg);font-size:.875rem;color:#ffffffe6}.hero-title{font-size:3.5rem;font-weight:800;color:#fff;margin-bottom:var(--spacing-lg);line-height:1.1}.hero-title-gradient{background:linear-gradient(135deg,#60a5fa,#a78bfa);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.hero-subtitle{font-size:1.25rem;color:#ffffffb3;max-width:600px;margin:0 auto var(--spacing-xl);line-height:1.7}.hero-actions{display:flex;align-items:center;justify-content:center;gap:var(--spacing-md);margin-bottom:var(--spacing-2xl)}.hero-stats{display:flex;align-items:center;justify-content:center;gap:var(--spacing-2xl);padding-top:var(--spacing-xl);border-top:1px solid rgba(255,255,255,.1)}.hero-stat{text-align:center}.hero-stat-value{font-size:2rem;font-weight:700;color:#fff}.hero-stat-label{font-size:.875rem;color:#fff9;margin-top:var(--spacing-xs)}.empty-state{text-align:center;padding:var(--spacing-2xl)}.empty-state-icon{width:64px;height:64px;margin:0 auto var(--spacing-lg);color:var(--text-muted)}.empty-state-title{font-size:1.125rem;font-weight:600;color:var(--text-primary);margin-bottom:var(--spacing-sm)}.empty-state-description{color:var(--text-muted);margin-bottom:var(--spacing-lg)}.companies-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--spacing-lg);margin-bottom:var(--spacing-xl)}.company-card{display:flex;flex-direction:column;background:var(--background);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--spacing-lg);text-decoration:none;color:inherit;transition:all .2s ease}.company-card:hover{border-color:var(--primary);box-shadow:var(--shadow-md);transform:translateY(-2px)}.company-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-sm)}.company-symbol{font-size:1.25rem;font-weight:700;color:var(--text-primary)}.risk-badge{display:flex;align-items:center;gap:4px;padding:4px 10px;border-radius:9999px;font-size:.75rem;font-weight:600;color:#fff}.company-name{font-size:.875rem;color:var(--text-secondary);margin-bottom:var(--spacing-md);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.company-price{display:flex;align-items:baseline;gap:var(--spacing-sm);margin-bottom:var(--spacing-sm)}.price-value{font-size:1.5rem;font-weight:700;color:var(--text-primary)}.price-change{font-size:.875rem;font-weight:600}.company-support{display:flex;justify-content:space-between;padding:var(--spacing-sm) var(--spacing-md);background:var(--surface);border-radius:var(--radius);margin-bottom:var(--spacing-md)}.support-label{font-size:.8125rem;color:var(--text-muted)}.support-value{font-size:.9375rem;font-weight:600;color:var(--text-primary)}.company-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--spacing-sm);padding-top:var(--spacing-md);border-top:1px solid var(--border-light)}.stat-item{text-align:center}.stat-label{display:block;font-size:.75rem;color:var(--text-muted);margin-bottom:2px}.stat-value{font-size:.9375rem;font-weight:600;color:var(--text-primary)}.stat-value.grade{font-size:1.125rem;font-weight:700}.company-footer{display:flex;justify-content:space-between;margin-top:var(--spacing-md);padding-top:var(--spacing-sm);border-top:1px solid var(--border-light);font-size:.75rem;color:var(--text-muted)}.signals-page .stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--spacing-lg);margin-bottom:var(--spacing-xl)}.signals-page .stat-card{display:flex;align-items:center;gap:var(--spacing-md);background:var(--background);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--spacing-lg)}.signals-page .stat-icon{width:48px;height:48px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius)}.signals-page .stat-icon.safe{background:var(--success-bg);color:var(--success)}.signals-page .stat-icon.warning{background:var(--warning-bg);color:var(--warning)}.signals-page .stat-icon.danger{background:var(--danger-bg);color:var(--danger)}.signals-page .stat-icon.total{background:var(--primary-bg);color:var(--primary)}.signals-page .stat-content .stat-value{font-size:1.75rem;font-weight:700}.signals-page .stat-content .stat-label{font-size:.875rem;color:var(--text-muted)}.filter-chip{padding:.5rem 1rem;border:1px solid var(--border);border-radius:9999px;background:transparent;font-size:.875rem;color:var(--text-secondary);cursor:pointer;transition:all .2s ease}.filter-chip:hover{border-color:var(--primary);color:var(--primary)}.filter-chip.active{background:var(--primary);border-color:var(--primary);color:#fff}.filter-chip.danger.active{background:var(--danger);border-color:var(--danger)}.filter-chip.warning.active{background:var(--warning);border-color:var(--warning)}.filter-chip.safe.active{background:var(--success);border-color:var(--success)}.signals-list{display:flex;flex-direction:column;gap:var(--spacing-md)}.signal-card{display:grid;grid-template-columns:auto 1fr auto auto;gap:var(--spacing-lg);align-items:center;background:var(--background);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--spacing-lg);text-decoration:none;color:inherit;transition:all .2s ease}.signal-card:hover{border-color:var(--primary);box-shadow:var(--shadow-sm)}.signal-icon{width:48px;height:48px;display:flex;align-items:center;justify-content:center;background:var(--surface);border-radius:var(--radius)}.signal-body{min-width:0}.signal-company{display:flex;align-items:baseline;gap:var(--spacing-sm);margin-bottom:4px}.signal-company .company-name{font-size:1rem;font-weight:600;margin:0}.signal-company .company-symbol{font-size:.875rem;color:var(--text-muted)}.signal-description{font-size:.875rem;color:var(--text-secondary)}.signal-data{display:flex;gap:var(--spacing-lg)}.data-row{text-align:center}.data-label{display:block;font-size:.75rem;color:var(--text-muted);margin-bottom:2px}.data-value{font-size:.9375rem;font-weight:600}.signal-footer{display:flex;flex-direction:column;gap:var(--spacing-sm);align-items:flex-end}.risk-tag{display:flex;align-items:center;gap:4px;padding:4px 12px;border-radius:9999px;font-size:.75rem;font-weight:600;color:#fff}.strength-tag{font-size:.75rem;color:var(--text-muted)}
