.data-source-stats{background-color:#fff;border:1px solid #e5e7eb;border-radius:8px;box-shadow:0 2px 8px #0000001a;margin-bottom:24px;padding:20px}.data-source-stats h3{color:#1a1a1a;font-size:18px;font-weight:600;margin:0 0 20px}.stats-grid{margin-bottom:24px}.stat-card{background-color:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;padding:16px;text-align:center}.stat-card.highlight{background-color:#f0fdf4;border-color:#bbf7d0}.stat-number{color:#1a1a1a;font-size:24px}.stat-card.highlight .stat-number{color:#059669}.stat-label{color:#6b7280}.breakdown-section{grid-gap:24px;display:grid;gap:24px;grid-template-columns:1fr 1fr;margin-bottom:20px}.breakdown-group h4{color:#374151;font-size:14px;font-weight:600;margin:0 0 12px}.breakdown-bars{gap:8px}.breakdown-bar,.breakdown-bars{display:flex;flex-direction:column}.breakdown-bar{gap:4px}.bar-info{align-items:center;display:flex;justify-content:space-between}.quality-indicator,.risk-indicator{border-radius:4px;font-size:12px;font-weight:500;padding:2px 6px}.quality-indicator.tốt{background-color:#fef3c7;color:#92400e}.quality-indicator.rất-tốt{background-color:#dcfce7;color:#166534}.quality-indicator.trung-bình{background-color:#fde68a;color:#d97706}.risk-indicator.thấp{background-color:#dcfce7;color:#166534}.risk-indicator.trung-bình{background-color:#fef3c7;color:#92400e}.risk-indicator.cao{background-color:#fecaca;color:#dc2626}.bar-count{color:#374151;font-size:12px;font-weight:600}.bar-container{background-color:#e5e7eb;border-radius:4px;height:8px;overflow:hidden}.bar-fill{border-radius:4px;height:100%;transition:width .3s ease}.bar-fill.quality-tốt{background-color:#f59e0b}.bar-fill.quality-rất-tốt{background-color:#10b981}.bar-fill.quality-trung-bình{background-color:#fbbf24}.bar-fill.risk-thấp{background-color:#10b981}.bar-fill.risk-trung-bình{background-color:#f59e0b}.bar-fill.risk-cao{background-color:#ef4444}.last-updated{border-top:1px solid #e5e7eb;color:#6b7280;font-size:12px;padding-top:16px;text-align:center}@media (max-width:768px){.breakdown-section{gap:16px}.breakdown-section,.stats-grid{grid-template-columns:1fr}}.stock-table-container{background-color:#fff;border-radius:8px;box-shadow:0 2px 8px #0000001a;margin:0 auto;max-width:1400px;padding:20px}.header{margin-bottom:24px}.header-top{align-items:center;display:flex;justify-content:space-between;margin-bottom:20px}.header h1{color:#1a1a1a;font-size:28px;font-weight:600;margin:0}.user-info{align-items:center;display:flex;font-size:14px;gap:12px}.welcome-text{color:#4a5568}.welcome-text strong{color:#2d3748}.login-duration{color:#718096;font-size:13px}.logout-btn{background:#e53e3e;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:13px;padding:6px 12px;transition:all .2s}.logout-btn:hover{background:#c53030;transform:translateY(-1px)}.market-stats{display:flex;gap:32px;margin-bottom:24px}.filters{background-color:#f8fafc;border:1px solid #e5e7eb;border-radius:8px;flex-wrap:wrap;gap:16px;justify-content:space-between;margin-bottom:20px;padding:16px}.filter-group,.filters{align-items:center;display:flex}.filter-group{gap:12px}.filter-group label{color:#374151;font-size:14px;font-weight:500}.data-source-filter,.quality-filter{background-color:#fff;border:1px solid #d1d5db;border-radius:6px;color:#374151;cursor:pointer;font-size:14px;padding:8px 12px}.data-source-filter:focus,.quality-filter:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a;outline:none}.data-source-filter{min-width:200px}.filter-info{color:#6b7280;font-size:14px;font-weight:500;text-align:right}.scraped-info{color:#059669;font-size:12px;font-weight:600;margin-top:4px}.stat{display:flex;flex-direction:column;gap:4px}.stat-label{color:#666;font-size:12px;font-weight:500}.stat-value{color:#1a1a1a;font-size:18px;font-weight:600}.refresh-btn{align-items:center;background:#4caf50;border:none;border-radius:4px;color:#fff;cursor:pointer;display:flex;font-size:14px;gap:5px;padding:8px 16px;transition:all .3s ease}.refresh-btn:hover:not(:disabled){background:#45a049;transform:translateY(-1px)}.refresh-btn:disabled{background:#ccc;cursor:not-allowed;opacity:.7}.refresh-btn.refreshing{animation:pulse 1.5s infinite;background:#ff9800}.last-refresh{color:#666;display:block;font-size:11px;margin-top:4px;text-align:center}.table-wrapper{border:1px solid #e5e7eb;border-radius:8px;overflow-x:auto}.stock-table{background-color:#fff;border-collapse:collapse;font-size:14px;width:100%}.stock-table thead{background-color:#f8fafc;border-bottom:1px solid #e5e7eb}.stock-table th{color:#374151;font-size:13px;font-weight:600;padding:12px 16px;position:relative;text-align:left;white-space:nowrap}.stock-table th.sortable{cursor:pointer;transition:background-color .2s;-webkit-user-select:none;user-select:none}.stock-table th.sortable:hover{background-color:#f1f5f9}.sort-icon{color:#9ca3af;font-size:12px;margin-left:4px;transition:color .2s}.sort-icon.active{color:#3b82f6}.stock-table tbody tr{border-bottom:1px solid #f3f4f6;transition:background-color .2s}.stock-table tbody tr:hover{background-color:#fafbfc}.stock-table td{padding:12px 16px;vertical-align:top}.symbol-cell{min-width:250px}.symbol-info{display:flex;flex-direction:column;gap:2px}.symbol{color:#1a1a1a;font-size:14px;font-weight:600}.company-name{color:#6b7280;font-size:12px;line-height:1.3}.price-cell{color:#1a1a1a;font-weight:600;min-width:100px;text-align:right}.change-cell,.ytd-cell{font-weight:600;min-width:80px;text-align:right}.positive{color:#059669}.negative{color:#dc2626}.neutral{color:#6b7280}.volume-cell{color:#6b7280}.market-cap-cell,.volume-cell{min-width:100px;text-align:right}.market-cap-cell{color:#1a1a1a;font-weight:500}.pb-cell,.pe-cell{color:#6b7280;min-width:60px;text-align:right}.dividend-cell,.roe-cell{color:#6b7280;min-width:80px;text-align:right}.exchange-cell{min-width:80px}.exchange-badge{border-radius:12px;display:inline-block;font-size:11px;font-weight:500;padding:2px 8px;text-transform:uppercase}.exchange-badge.hose{background-color:#eff6ff;color:#2563eb}.exchange-badge.upcom{background-color:#f0fdf4;color:#16a34a}.exchange-badge.hnx{background-color:#fef3c7;color:#d97706}.sector-cell{color:#6b7280;font-size:12px;line-height:1.3;min-width:180px}.quality-cell,.risk-cell,.valuation-cell{min-width:120px;text-align:center}.quality-badge,.risk-badge,.valuation-badge{border-radius:16px;display:inline-block;font-size:11px;font-weight:600;letter-spacing:.5px;padding:4px 12px;text-transform:uppercase}.quality-badge.rất-tốt{background-color:#dcfce7;color:#166534}.quality-badge.tốt{background-color:#fef3c7;color:#92400e}.quality-badge.trung-bình{background-color:#fde68a;color:#d97706}.risk-badge.thấp{background-color:#dcfce7;color:#166534}.risk-badge.trung-bình{background-color:#fef3c7;color:#92400e}.risk-badge.cao{background-color:#fecaca;color:#dc2626}.valuation-badge.hấp-dẫn{background-color:#dcfce7;color:#166534}.valuation-badge.trung-bình{background-color:#fef3c7;color:#92400e}.valuation-badge.cao{background-color:#fecaca;color:#dc2626}@media (max-width:1200px){.stock-table-container{margin:0 16px;padding:16px}.market-stats{flex-wrap:wrap;gap:16px}}@media (max-width:768px){.header h1{font-size:24px}.header-top{align-items:flex-start;flex-direction:column;gap:16px}.user-info{flex-wrap:wrap;font-size:13px;gap:8px}.market-stats{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(2,1fr)}.stock-table{font-size:13px}.stock-table td,.stock-table th{padding:8px 12px}.symbol-cell{min-width:200px}.company-name{font-size:11px}}.login-container{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);display:flex;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;justify-content:center;min-height:100vh;padding:20px}.login-box{animation:slideUp .5s ease-out;background:#fff!important;border-radius:12px;box-shadow:0 20px 40px #0000001a;max-width:420px;padding:40px;position:relative;width:100%}@keyframes slideUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.login-header{margin-bottom:32px;text-align:center}.login-header h1{color:#2d3748!important;font-size:28px;font-weight:700;margin:0 0 8px;text-align:center}.version-info{background:#f3f4f6;border-radius:4px;color:#6b7280;font-family:Monaco,Courier New,monospace;font-size:12px;font-weight:400;margin-left:12px;padding:2px 8px}.login-header p{color:#718096!important;font-size:16px;margin:0;text-align:center}.login-form{gap:20px}.form-group,.login-form{display:flex;flex-direction:column}.form-group label{color:#4a5568!important;font-size:14px;text-align:left}.form-group input[type=password],.form-group input[type=text]{background:#f7fafc!important;border:2px solid #e2e8f0;border-radius:8px;color:#2d3748!important;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:16px;line-height:1.5;min-height:48px;padding:12px 16px;transition:all .2s;width:100%}.form-group input[type=password]::placeholder,.form-group input[type=text]::placeholder{color:#a0aec0;opacity:1}.form-group input[type=password]:focus,.form-group input[type=text]:focus{background:#fff;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a;color:#2d3748;outline:none}.form-group input:disabled{background:#edf2f7;cursor:not-allowed;opacity:.6}.checkbox-group{margin:8px 0}.checkbox-label{align-items:center;color:#4a5568;cursor:pointer;display:flex;font-size:14px;-webkit-user-select:none;user-select:none}.checkbox-label input[type=checkbox]{accent-color:#667eea;cursor:pointer;height:18px;margin-right:12px;width:18px}.checkbox-label input[type=checkbox]:disabled{cursor:not-allowed;opacity:.5}.error-message{animation:shake .5s ease-in-out;background:#feb2b2;border:1px solid #fed7d7;border-radius:8px;color:#c53030;font-size:14px;padding:12px 16px}@keyframes shake{0%,to{transform:translateX(0)}25%{transform:translateX(-5px)}75%{transform:translateX(5px)}}.login-btn{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:8px;color:#fff;cursor:pointer;display:flex;font-size:16px;font-weight:600;gap:8px;justify-content:center;min-height:50px;padding:14px 20px;transition:all .3s}.login-btn:hover:not(:disabled){box-shadow:0 8px 25px #667eea4d;transform:translateY(-2px)}.login-btn:active:not(:disabled){transform:translateY(0)}.login-btn:disabled{cursor:not-allowed;opacity:.7;transform:none}.login-btn.loading{background:#a0aec0}.spinner{animation:spin 1s linear infinite;border:2px solid #0000;border-radius:50%;border-top-color:#fff;height:18px;width:18px}.login-footer{margin-top:32px;text-align:center}.demo-credentials{background:#f7fafc;border:1px solid #e2e8f0;border-radius:8px;color:#4a5568;font-size:14px;line-height:1.5;padding:16px}.demo-credentials strong{color:#2d3748}.demo-credentials code{background:#edf2f7;border:1px solid #e2e8f0;border-radius:4px;color:#d53f8c;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:13px;padding:2px 6px}@media (max-width:480px){.login-container{padding:16px}.login-box{padding:24px}.login-header h1{font-size:24px}.login-header p{font-size:14px}}.scraper-config-overlay{align-items:center;animation:fadeIn .3s ease;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#000000b3;bottom:0;display:flex;justify-content:center;left:0;padding:20px;position:fixed;right:0;top:0;z-index:1000}.scraper-config-modal{animation:slideInUp .4s ease;background:linear-gradient(135deg,#667eea,#764ba2);border:1px solid #ffffff1a;border-radius:16px;box-shadow:0 25px 50px #0000004d;color:#fff;max-height:90vh;max-width:900px;overflow:hidden;position:relative;width:100%}.config-header{align-items:center;border-bottom:1px solid #ffffff1a;display:flex;justify-content:space-between;margin-bottom:24px;padding:24px 24px 0}.config-header h2{-webkit-text-fill-color:#0000;background:linear-gradient(45deg,#fff,#f0f0f0);-webkit-background-clip:text;background-clip:text;font-size:1.5rem;font-weight:600;margin:0}.close-btn{align-items:center;background:#ffffff1a;border:none;border-radius:50%;color:#fff;cursor:pointer;display:flex;font-size:18px;height:40px;justify-content:center;transition:all .3s ease;width:40px}.close-btn:hover{background:#fff3;transform:rotate(90deg)}.error-section{animation:slideInDown .3s ease;background:#f4433633;border:1px solid #f443364d;border-radius:8px;margin:0 24px 24px;padding:16px}.error-section h4{color:#ff6b6b;margin:0 0 12px}.error-section ul{margin:0;padding-left:20px}.error-section li{margin-bottom:4px}.loading-section{padding:60px 24px;text-align:center}.loading-spinner{border:4px solid #fff3;margin:0 auto 16px}.config-tabs{border-bottom:1px solid #ffffff1a;display:flex;margin:0 24px;overflow-x:auto}.tab-btn{background:none;border:none;border-bottom:3px solid #0000;color:#ffffffb3;cursor:pointer;font-size:14px;font-weight:500;padding:12px 20px;transition:all .3s ease;white-space:nowrap}.tab-btn:hover{background:#ffffff0d;color:#fff}.tab-btn.active{background:#ffffff1a;border-bottom-color:#4caf50;color:#fff}.config-content{height:400px;margin-bottom:24px;overflow-y:auto;padding:0 24px}.tab-panel{animation:fadeInTab .3s ease}@keyframes fadeInTab{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.tab-panel h3{color:#fff;font-size:1.2rem;margin:0 0 24px}.form-group{margin-bottom:24px}.form-group label{align-items:center;color:#ffffffe6;display:block;display:flex;font-weight:600;gap:8px;margin-bottom:8px}.form-group input[type=checkbox]{accent-color:#4caf50;height:18px;width:18px}.form-group input[type=number],.form-group input[type=text],.form-group textarea{background:#ffffff1a;border:1px solid #fff3;border-radius:8px;color:#fff;font-size:14px;padding:12px 16px;transition:all .3s ease;width:100%}.form-group input:focus,.form-group textarea:focus{background:#ffffff26;border-color:#fff6;box-shadow:0 0 0 3px #ffffff1a;outline:none}.form-group input::placeholder,.form-group textarea::placeholder{color:#ffffff80}.form-group small{color:#ffffffb3;display:block;font-size:12px;font-style:italic;margin-top:6px}.form-group textarea{font-family:Monaco,Menlo,Ubuntu Mono,monospace;line-height:1.4;min-height:120px;resize:vertical}.performance-presets,.symbol-presets{margin-top:32px}.performance-presets h4,.symbol-presets h4{color:#fff;font-size:1rem;margin:0 0 16px}.preset-buttons{grid-gap:12px;display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.preset-btn{background:#ffffff1a;border:1px solid #fff3;border-radius:8px;color:#fff;cursor:pointer;display:flex;flex-direction:column;gap:4px;padding:16px;text-align:center;transition:all .3s ease}.preset-btn:hover{background:#ffffff26;box-shadow:0 4px 12px #0003;transform:translateY(-2px)}.preset-btn.conservative{background:#ffc1071a;border-color:#ffc10780}.preset-btn.balanced{background:#4caf501a;border-color:#4caf5080}.preset-btn.aggressive{background:#f443361a;border-color:#f4433680}.preset-btn small{color:#ffffffb3;font-size:11px}.symbols-stats{margin-bottom:24px;text-align:center}.symbols-stats .stat-item{background:#ffffff1a;border:1px solid #ffffff1a;border-radius:8px;display:inline-block;padding:16px 24px}.symbols-stats .stat-number{color:#fff;display:block;font-size:2rem;font-weight:700;margin-bottom:4px}.symbols-stats .stat-label{color:#fffc;font-size:.9rem}.config-info{margin-bottom:32px}.config-info .info-item{align-items:center;background:#ffffff0d;border-radius:6px;display:flex;font-size:14px;justify-content:space-between;margin-bottom:8px;padding:12px 16px}.config-info .info-item label{color:#fffc;font-weight:500}.config-info .info-item span{color:#fff;font-weight:600}.danger-zone{background:#f443361a;border:1px solid #f443364d;border-radius:8px;margin:32px 0;padding:20px}.danger-zone h4{color:#ff6b6b;margin:0 0 12px}.danger-zone p{color:#fffc;font-size:14px;margin:0 0 16px}.danger-btn{background:linear-gradient(45deg,#f44336,#ef5350);border:none;border-radius:6px;color:#fff;cursor:pointer;font-weight:600;padding:12px 20px;transition:all .3s ease}.danger-btn:hover:not(:disabled){box-shadow:0 4px 12px #f443364d;transform:translateY(-2px)}.danger-btn:disabled{cursor:not-allowed;opacity:.6}.config-export{margin:24px 0}.config-export h4{color:#fff;margin:0 0 12px}.export-btn{background:linear-gradient(45deg,#2196f3,#64b5f6);border:none;border-radius:6px;color:#fff;cursor:pointer;font-weight:600;padding:12px 20px;transition:all .3s ease}.export-btn:hover{box-shadow:0 4px 12px #2196f34d;transform:translateY(-2px)}.config-actions{background:#0000001a;border-top:1px solid #ffffff1a;display:flex;gap:12px;justify-content:flex-end;padding:24px}.cancel-btn{background:#ffffff1a;border:1px solid #fff3;border-radius:8px;color:#fff;cursor:pointer;font-weight:600;padding:12px 24px;transition:all .3s ease}.cancel-btn:hover:not(:disabled){background:#ffffff26}.save-btn{background:linear-gradient(45deg,#4caf50,#66bb6a);border:none;border-radius:8px;box-shadow:0 4px 15px #4caf504d;color:#fff;cursor:pointer;font-weight:600;padding:12px 24px;transition:all .3s ease}.save-btn:hover:not(:disabled){box-shadow:0 6px 20px #4caf5066;transform:translateY(-2px)}.save-btn:disabled{box-shadow:none;cursor:not-allowed;opacity:.6;transform:none}.changes-indicator{animation:pulse 2s infinite;background:#ff980033;border:1px solid #ff98004d;border-radius:16px;color:#ffb74d;font-size:12px;font-weight:600;padding:6px 12px;position:absolute;right:60px;top:16px}.config-content::-webkit-scrollbar{width:8px}.config-content::-webkit-scrollbar-track{background:#ffffff1a;border-radius:4px}.config-content::-webkit-scrollbar-thumb{background:#ffffff4d;border-radius:4px}.config-content::-webkit-scrollbar-thumb:hover{background:#fff6}@media (max-width:768px){.scraper-config-overlay{padding:10px}.scraper-config-modal{max-height:95vh}.config-header{padding:16px 16px 0}.config-header h2{font-size:1.3rem}.config-tabs{margin:0 16px}.tab-btn{font-size:13px;padding:10px 16px}.config-content{height:350px;padding:0 16px}.config-actions{flex-direction:column;padding:16px}.config-actions button{width:100%}.preset-buttons{grid-template-columns:1fr}.changes-indicator{margin:16px 16px 0;position:static;text-align:center}}@media (max-width:480px){.config-header h2{font-size:1.1rem}.tab-btn{font-size:12px;padding:8px 12px}.config-content{height:300px}.form-group input,.form-group textarea{font-size:16px}}@media (prefers-color-scheme:dark){.scraper-config-overlay{background:#000c}.scraper-config-modal{background:linear-gradient(135deg,#2c3e50,#34495e)}}.scraper-status{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:linear-gradient(135deg,#667eea,#764ba2);border:1px solid #ffffff1a;border-radius:12px;box-shadow:0 8px 32px #0000001a;color:#fff;margin:20px 0;overflow:hidden;padding:24px;position:relative}.scraper-status:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg width='60' height='60' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='30' cy='30' r='2' fill='%23fff' fill-opacity='.03' fill-rule='evenodd'/%3E%3C/svg%3E") repeat;bottom:0;content:"";left:0;pointer-events:none;position:absolute;right:0;top:0}.scraper-status>*{position:relative;z-index:1}.scraper-header{flex-wrap:wrap;gap:15px;justify-content:space-between;margin-bottom:20px}.scraper-header,.scraper-title{align-items:center;display:flex}.scraper-title{gap:12px}.scraper-title h3{-webkit-text-fill-color:#0000;background:linear-gradient(45deg,#fff,#f0f0f0);-webkit-background-clip:text;background-clip:text;font-size:1.4rem;font-weight:600;margin:0}.status-indicator{animation:pulse 2s infinite;border-radius:50%;box-shadow:0 0 10px #ffffff4d;height:16px;width:16px}.status-indicator.running{animation:pulse-green 1.5s infinite}.status-indicator.idle{animation:pulse 2s infinite}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.7;transform:scale(1.1)}}@keyframes pulse-green{0%,to{box-shadow:0 0 10px #4caf5099;opacity:1;transform:scale(1)}50%{box-shadow:0 0 20px #4caf50cc;opacity:.8;transform:scale(1.15)}}.scraper-controls{display:flex;flex-wrap:wrap;gap:10px}.scraper-controls button{align-items:center;border:none;border-radius:8px;cursor:pointer;display:flex;font-size:14px;font-weight:600;gap:6px;overflow:hidden;padding:10px 20px;position:relative;transition:all .3s ease}.btn-start{background:linear-gradient(45deg,#4caf50,#66bb6a);box-shadow:0 4px 15px #4caf504d;color:#fff}.btn-start:hover:not(:disabled){box-shadow:0 6px 20px #4caf5066;transform:translateY(-2px)}.btn-stop{background:linear-gradient(45deg,#f44336,#ef5350);box-shadow:0 4px 15px #f443364d;color:#fff}.btn-stop:hover:not(:disabled){box-shadow:0 6px 20px #f4433666;transform:translateY(-2px)}.btn-restart{background:linear-gradient(45deg,#ff9800,#ffb74d);box-shadow:0 4px 15px #ff98004d;color:#fff}.btn-restart:hover:not(:disabled){box-shadow:0 6px 20px #ff980066;transform:translateY(-2px)}.btn-toggle{background:linear-gradient(45deg,#9c27b0,#ba68c8);box-shadow:0 4px 15px #9c27b04d;color:#fff}.btn-toggle:hover:not(:disabled){box-shadow:0 6px 20px #9c27b066;transform:translateY(-2px)}.btn-test{background:linear-gradient(45deg,#2196f3,#64b5f6);box-shadow:0 4px 15px #2196f34d;color:#fff}.btn-config{background:linear-gradient(45deg,#607d8b,#90a4ae);box-shadow:0 4px 15px #607d8b4d;color:#fff}.btn-danger{background:linear-gradient(45deg,#e91e63,#f06292);box-shadow:0 4px 15px #e91e634d;color:#fff}.btn-logout{background:linear-gradient(45deg,#e53e3e,#c53030);box-shadow:0 4px 15px #e53e3e4d;color:#fff;margin-left:auto}.btn-logout:hover:not(:disabled){box-shadow:0 6px 20px #e53e3e66;transform:translateY(-2px)}.scraper-controls button:disabled{cursor:not-allowed;opacity:.6;transform:none!important}.error-banner{animation:slideInDown .3s ease;background:linear-gradient(45deg,#f44336,#ef5350);border-radius:8px;box-shadow:0 4px 15px #f443364d;color:#fff;font-weight:500;margin-bottom:16px;padding:12px 16px}@keyframes slideInDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.progress-section{animation:fadeIn .5s ease;margin:20px 0}.progress-bar{background:#fff3;box-shadow:inset 0 2px 4px #0000001a;height:12px;width:100%}.progress-bar,.progress-fill{border-radius:6px;overflow:hidden}.progress-fill{background:linear-gradient(90deg,#4caf50,#66bb6a,#81c784);height:100%;position:relative;transition:width .5s ease}.progress-fill:after{animation:shimmer 2s infinite;background:linear-gradient(90deg,#0000,#ffffff4d,#0000);bottom:0;content:"";left:0;position:absolute;right:0;top:0}@keyframes shimmer{0%{transform:translateX(-100%)}to{transform:translateX(100%)}}.progress-details{align-items:center;display:flex;font-size:14px;justify-content:space-between;margin-top:8px}.progress-text{font-weight:600}.eta-text{color:#fffc;font-style:italic}.scraper-info{margin:20px 0}.info-grid{grid-gap:15px;display:grid;gap:15px;grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}.info-item{align-items:center;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#ffffff1a;border:1px solid #ffffff1a;border-radius:8px;display:flex;justify-content:space-between;padding:12px 16px;transition:all .3s ease}.info-item:hover{background:#ffffff26;transform:translateY(-1px)}.info-item.error{background:#f4433633;border-color:#f443364d}.info-label{color:#ffffffe6;font-weight:600}.info-value{color:#fff;font-weight:500;text-align:right}.stats-section{background:#ffffff0d;border:1px solid #ffffff1a;border-radius:12px;margin:24px 0;padding:20px}.stats-section h4{color:#fff;font-size:1.1rem;margin:0 0 16px}.stats-grid{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.stat-item{background:#ffffff1a;border-radius:8px;padding:16px;text-align:center;transition:all .3s ease}.stat-item:hover{background:#ffffff26;transform:translateY(-2px)}.stat-number{font-size:1.5rem;margin-bottom:4px}.scraper-details{animation:fadeIn .5s ease;margin:20px 0}.detail-stats{grid-gap:15px;display:grid;gap:15px;grid-template-columns:repeat(auto-fit,minmax(100px,1fr))}.stat{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#ffffff1a;border:1px solid #ffffff1a;border-radius:8px;padding:15px;text-align:center;transition:all .3s ease}.stat:hover{background:#ffffff26;transform:translateY(-2px)}.stat-number{color:#fff;font-size:1.8rem;font-weight:700;margin-bottom:5px}.stat-label{color:#fffc;font-size:.9rem;letter-spacing:.5px;text-transform:uppercase}.advanced-section{animation:slideInUp .3s ease;background:#0000001a;border:1px solid #ffffff1a;border-radius:12px;margin-top:24px;padding:20px}@keyframes slideInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.advanced-section h4,.advanced-section h5{color:#fff;margin:0 0 16px}.control-group{margin-bottom:20px}.control-group label{color:#ffffffe6;display:block;font-weight:600;margin-bottom:8px}.input-group input{background:#ffffff1a;border:1px solid #fff3;border-radius:8px;color:#fff;font-size:14px;padding:12px 16px;transition:all .3s ease;width:100%}.input-group input:focus{background:#ffffff26;border-color:#fff6;box-shadow:0 0 0 3px #ffffff1a;outline:none}.input-group input::placeholder{color:#ffffff80}.input-group small{color:#ffffffb3;display:block;font-size:12px;font-style:italic;margin-top:6px}.control-buttons{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:24px}.control-buttons button{border:none;border-radius:6px;cursor:pointer;font-size:13px;font-weight:600;padding:10px 16px;transition:all .3s ease}.config-panel{background:#ffffff0d;border:1px solid #ffffff1a;border-radius:8px;margin:20px 0;padding:16px}.config-grid{grid-gap:12px;display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.config-item{align-items:center;background:#ffffff0d;border-radius:6px;display:flex;font-size:14px;justify-content:space-between;padding:8px 12px}.config-item label{color:#fffc;font-weight:500}.config-item span{color:#fff;font-weight:600}.logs-section{margin:20px 0}.logs-list{background:#ffffff0d;border:1px solid #ffffff1a;border-radius:8px;max-height:200px;overflow-y:auto}.log-item{align-items:center;border-bottom:1px solid #ffffff0d;display:flex;gap:12px;padding:10px 16px;transition:background .2s ease}.log-item:last-child{border-bottom:none}.log-item:hover{background:#ffffff14}.log-icon{flex-shrink:0;font-size:16px}.log-message{color:#fff;flex:1 1;font-size:14px}.log-time{color:#fff9;flex-shrink:0;font-size:12px}.log-item.error{background:#f443361a;border-left:3px solid #f44336}.log-item.warning{background:#ff98001a;border-left:3px solid #ff9800}.log-item.info{background:#2196f31a;border-left:3px solid #2196f3}@media (max-width:768px){.scraper-status{margin:10px 0;padding:16px}.scraper-header{align-items:stretch;flex-direction:column;gap:12px}.scraper-controls{justify-content:center}.info-grid{grid-template-columns:1fr}.detail-stats,.stats-grid{grid-template-columns:repeat(2,1fr)}.config-grid{grid-template-columns:1fr}.control-buttons{justify-content:center}.control-buttons button{flex:1 1;min-width:0}}@media (max-width:480px){.scraper-title h3{font-size:1.2rem}.scraper-controls button{font-size:12px;padding:8px 16px}.detail-stats,.stats-grid{grid-template-columns:1fr}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.fade-in{animation:fadeIn .5s ease}.logs-list::-webkit-scrollbar{width:6px}.logs-list::-webkit-scrollbar-track{background:#ffffff1a;border-radius:3px}.logs-list::-webkit-scrollbar-thumb{background:#ffffff4d;border-radius:3px}.logs-list::-webkit-scrollbar-thumb:hover{background:#fff6}.App{background-color:#f8f9fa;min-height:100vh;padding:20px 0}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0}*{box-sizing:border-box}.app-loading{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;display:flex;flex-direction:column;gap:20px;justify-content:center;min-height:100vh}.loading-spinner{animation:spin 1s linear infinite;border:4px solid #ffffff4d;border-radius:50%;border-top-color:#fff;height:40px;width:40px}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.app-loading p{font-size:16px;margin:0;text-align:center}
/*# sourceMappingURL=main.0cf7e954.css.map*/