.image-upload{display:flex;flex-direction:column;gap:12px}.image-upload-label{font-weight:600;color:var(--text-primary);font-size:.9375rem}.image-upload-container{position:relative;width:100%;min-height:200px;border:2px dashed var(--border);border-radius:10px;overflow:hidden;background:#fafafa;transition:all .3s ease}.image-upload-container:hover{border-color:var(--primary);background:#f5f5f5}.image-upload-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:40px 20px;cursor:pointer;color:var(--text-secondary);text-align:center;min-height:200px}.image-upload-placeholder svg{color:var(--primary);opacity:.6}.image-upload-placeholder span{font-weight:600;color:var(--text-primary)}.image-upload-placeholder small{font-size:.8125rem;color:var(--text-secondary)}.image-preview{position:relative;width:100%;height:200px;overflow:hidden}.image-preview img{width:100%;height:100%;object-fit:cover}.remove-image-button{position:absolute;top:8px;right:8px;width:32px;height:32px;border-radius:50%;background:#000000b3;color:#fff;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:18px;transition:all .2s}.remove-image-button:hover:not(:disabled){background:#dc2626e6;transform:scale(1.1)}.remove-image-button:disabled{opacity:.5;cursor:not-allowed}.upload-spinner{display:flex;flex-direction:column;align-items:center;gap:12px;color:var(--primary)}.image-upload-options{display:flex;gap:8px}.url-input{flex:1;padding:12px 16px;font-size:.9375rem;border:2px solid var(--border);border-radius:8px;transition:all .3s ease;font-family:inherit}.url-input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 4px #1e40af1a}.url-input:disabled{background:var(--bg-gray);cursor:not-allowed;opacity:.7}.image-upload-hint{color:var(--text-secondary);font-size:.8125rem}.form-card{background:var(--bg-card);border-radius:16px;box-shadow:0 4px 20px #00000014,0 1px 3px #0000000d;overflow:hidden;margin-bottom:0;border:1px solid rgba(0,0,0,.05);transition:box-shadow .3s ease}.form-card:hover{box-shadow:0 8px 30px #0000001f,0 2px 6px #00000014}.form-card-header{background:linear-gradient(135deg,#f9fafb,#f3f4f6);padding:32px 40px;border-bottom:2px solid var(--border);position:relative}.form-card-header:after{content:"";position:absolute;bottom:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--primary-light) 0%,var(--primary) 100%)}.form-card-header h2{font-size:1.5rem;font-weight:700;color:var(--text-primary);margin:0;letter-spacing:-.02em;display:flex;align-items:center;gap:10px}.form-card-header h2:before{content:"✨";font-size:1.5rem}.scraper-form{padding:48px 40px;display:flex;flex-direction:column;gap:36px;background:#fff}.form-group{display:flex;flex-direction:column;gap:12px}.form-group small{color:var(--text-secondary);font-size:.8125rem;margin-top:4px;line-height:1.5;font-weight:400}.form-group label{font-weight:600;color:var(--text-primary);font-size:.9375rem;display:flex;align-items:center;gap:6px;letter-spacing:-.01em}.required{color:var(--error);font-size:1rem}.form-input,.form-textarea{padding:14px 18px;font-size:.9375rem;border:2px solid var(--border);border-radius:10px;transition:all .3s ease;font-family:inherit;width:100%;background:#fff;color:var(--text-primary)}.form-input:hover,.form-textarea:hover{border-color:#d1d5db}.form-input:focus,.form-textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 4px #1e40af1a;transform:translateY(-1px)}.form-input:disabled,.form-textarea:disabled{background:var(--bg-gray);cursor:not-allowed;opacity:.7}.form-textarea{resize:vertical;min-height:180px;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:.875rem;line-height:1.7;padding:16px 18px;background:#fafafa}.form-textarea:focus{background:#fff}.add-url-button{background:none;border:none;color:var(--primary);font-size:.875rem;font-weight:600;cursor:pointer;padding:10px 0;text-align:left;transition:all .2s;width:fit-content;margin-top:8px;display:flex;align-items:center;gap:6px}.add-url-button:before{content:"+";font-size:1.2rem;font-weight:700;line-height:1}.add-url-button:hover:not(:disabled){color:var(--primary-dark);transform:translate(4px)}.add-url-button:disabled{opacity:.5;cursor:not-allowed}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:36px;align-items:start}.checkbox-wrapper{display:flex;align-items:center;gap:12px;cursor:pointer;-webkit-user-select:none;user-select:none;padding:12px 0;transition:color .2s}.checkbox-wrapper:hover{color:var(--primary)}.checkbox-input{position:absolute;opacity:0;width:0;height:0}.checkbox-custom{width:18px;height:18px;border:2px solid var(--border);border-radius:4px;position:relative;transition:all .2s;flex-shrink:0}.checkbox-input:checked+.checkbox-custom{background:var(--primary);border-color:var(--primary)}.checkbox-input:checked+.checkbox-custom:after{content:"✓";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:#fff;font-size:12px;font-weight:700}.form-actions{padding-top:28px;border-top:2px solid var(--border);margin-top:8px}.submit-button{padding:16px 32px;font-size:1.0625rem;font-weight:700;color:#fff;background:linear-gradient(135deg,var(--primary) 0%,var(--primary-dark) 100%);border:none;border-radius:10px;cursor:pointer;transition:all .3s ease;display:flex;align-items:center;justify-content:center;gap:10px;width:100%;box-shadow:0 4px 12px #1e40af4d;letter-spacing:.01em}.submit-button:hover:not(:disabled){background:linear-gradient(135deg,var(--primary-dark) 0%,#1e3a8a 100%);box-shadow:0 6px 20px #1e40af66;transform:translateY(-2px)}.submit-button:active:not(:disabled){transform:translateY(0);box-shadow:0 2px 8px #1e40af4d}.submit-button:disabled{opacity:.7;cursor:not-allowed}@media(max-width:1024px){.form-card-header{padding:28px 36px}.form-card-header h2{font-size:1.375rem}.scraper-form{padding:40px 36px;gap:32px}}@media(max-width:768px){.form-card{border-radius:12px}.form-card-header{padding:24px 28px}.form-card-header h2{font-size:1.25rem}.form-card-header h2:before{font-size:1.25rem}.scraper-form{padding:32px 28px;gap:28px}.form-group{gap:10px}.form-group label{font-size:.875rem}.form-input,.form-textarea{padding:12px 16px;font-size:.9375rem}.form-row{grid-template-columns:1fr;gap:28px}.submit-button{padding:14px 28px;font-size:1rem}}.campaign-list{width:100%}.campaign-list-loading,.campaign-list-error,.campaign-list-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center;color:var(--text-secondary)}.campaign-list-loading .spinner{width:40px;height:40px;border:4px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin .8s linear infinite;margin-bottom:16px}.campaign-list-error p{color:var(--error);font-size:1.125rem;margin-bottom:16px}.retry-button{padding:10px 20px;background:var(--primary);color:#fff;border:none;border-radius:8px;font-weight:600;cursor:pointer;transition:all .3s ease}.retry-button:hover{background:var(--primary-dark);transform:translateY(-1px)}.campaign-list-empty p{font-size:1.125rem;margin-bottom:8px}.empty-subtitle{font-size:.9375rem;color:var(--text-secondary)}.rescrape-result{background:linear-gradient(135deg,#1e3a8a,#1e40af);border:2px solid var(--primary-light);border-radius:12px;padding:24px;margin-bottom:32px}.rescrape-result h3{margin:0 0 16px;color:#fff;font-size:1.25rem}.result-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:16px;margin-bottom:16px}.stat-item{display:flex;flex-direction:column;gap:4px}.stat-label{font-size:.875rem;color:#fffc;font-weight:500}.stat-value{font-size:1.5rem;font-weight:700;color:#fff}.stat-value.updated{color:#fff}.stat-value.added{color:#10b981}.stat-value.removed{color:#ef4444}.result-errors{margin-top:16px;padding:12px;background:#fee2e2;border-radius:8px;font-size:.875rem}.result-errors strong{color:#dc2626;display:block;margin-bottom:8px}.result-errors ul{margin:0;padding-left:20px;color:#991b1b}.result-errors li{margin-bottom:4px}.close-result-button{margin-top:16px;padding:8px 16px;background:#fff;border:1px solid var(--border);border-radius:6px;font-weight:600;cursor:pointer;transition:all .2s ease}.close-result-button:hover{background:var(--bg-gray)}.campaign-list-error-inline{background:#fee2e2;border:1px solid #fca5a5;border-radius:8px;padding:12px 16px;margin-bottom:24px;color:#991b1b;font-size:.9375rem}.campaigns-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:24px}.campaign-card{background:#fff;border:2px solid var(--border);border-radius:12px;padding:24px;transition:all .3s ease;display:flex;flex-direction:column;gap:16px}.campaign-card:hover{border-color:var(--primary-light);box-shadow:0 4px 12px #1e40af1a;transform:translateY(-2px)}.campaign-header{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.campaign-name{font-size:1.25rem;font-weight:700;color:var(--text-primary);margin:0;flex:1}.campaign-badge{padding:4px 12px;border-radius:12px;font-size:.75rem;font-weight:600;white-space:nowrap}.campaign-badge.active{background:#d1fae5;color:#065f46}.campaign-badge.inactive{background:#f3f4f6;color:#6b7280}.campaign-description{color:var(--text-secondary);font-size:.9375rem;line-height:1.5;margin:0}.campaign-info{display:flex;flex-direction:column;gap:8px;padding-top:12px;border-top:1px solid var(--border)}.info-item{display:flex;justify-content:space-between;align-items:center}.info-label{font-size:.875rem;color:var(--text-secondary)}.info-value{font-size:.9375rem;font-weight:600;color:var(--text-primary)}.rescrape-button{padding:12px 24px;font-size:1rem;font-weight:700;color:#fff;background:linear-gradient(135deg,var(--primary) 0%,var(--primary-dark) 100%);border:none;border-radius:8px;cursor:pointer;transition:all .3s ease;display:flex;align-items:center;justify-content:center;gap:8px;width:100%;box-shadow:0 2px 8px #1e40af33;margin-top:auto}.rescrape-button:hover:not(:disabled){background:linear-gradient(135deg,var(--primary-dark) 0%,#1e3a8a 100%);box-shadow:0 4px 12px #1e40af4d;transform:translateY(-1px)}.rescrape-button:disabled{opacity:.7;cursor:not-allowed}@media(max-width:768px){.campaigns-grid{grid-template-columns:1fr}.result-stats{grid-template-columns:repeat(2,1fr)}}.campaign-tabs{width:100%}.tabs-header{display:flex;gap:8px;margin-bottom:24px;border-bottom:2px solid var(--border);padding-bottom:0}.tab-button{padding:14px 24px;font-size:1rem;font-weight:600;color:var(--text-secondary);background:transparent;border:none;border-bottom:3px solid transparent;cursor:pointer;transition:all .3s ease;position:relative;bottom:-2px}.tab-button:hover:not(:disabled){color:var(--primary);background:#1e40af0d}.tab-button.active{color:var(--primary);border-bottom-color:var(--primary)}.tab-button:disabled{opacity:.5;cursor:not-allowed}.tabs-content{width:100%}@media(max-width:768px){.tabs-header{gap:4px}.tab-button{padding:12px 16px;font-size:.9375rem}}.products-section{background:var(--bg-card);border-radius:12px;box-shadow:var(--shadow);padding:40px;margin-top:0}.section-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:40px;padding-bottom:28px;border-bottom:2px solid var(--border);flex-wrap:wrap;gap:24px}.section-header h2{font-size:1.25rem;font-weight:600;color:var(--text-primary);margin:0 0 4px}.section-subtitle{font-size:.875rem;color:var(--text-secondary);margin:0}.open-new-tab-button{padding:8px 16px;font-size:.875rem;font-weight:500;color:var(--primary);background:#fff;border:1px solid var(--border);border-radius:6px;cursor:pointer;transition:all .2s}.open-new-tab-button:hover{background:var(--bg-gray);border-color:var(--primary)}.products-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:28px;margin-top:12px}.product-card{background:#fff;border-radius:8px;overflow:hidden;transition:all .2s;cursor:pointer;border:1px solid var(--border);display:flex;flex-direction:column;box-shadow:var(--shadow)}.product-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-md);border-color:var(--primary-light)}.product-image-wrapper{width:100%;height:200px;overflow:hidden;background:var(--bg-gray)}.product-image{width:100%;height:100%;object-fit:cover;transition:transform .3s}.product-card:hover .product-image{transform:scale(1.05)}.product-image-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:var(--bg-gray);color:var(--text-light);font-size:.875rem;font-weight:500}.product-info{padding:20px;flex:1;display:flex;flex-direction:column;gap:12px;background:linear-gradient(135deg,#1e3a8a,#1e40af)}.product-name{font-size:.9375rem;font-weight:600;color:#fff;margin:0;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:1.4;min-height:40px}.product-price{font-size:1.125rem;font-weight:700;color:#fff;margin:0}.product-url{font-size:.75rem;color:#fffc;word-break:break-all;overflow-wrap:break-word;line-height:1.4;margin-top:auto;padding-top:12px;border-top:1px solid rgba(255,255,255,.2);font-family:Monaco,Menlo,Ubuntu Mono,monospace}@media(max-width:768px){.products-section{padding:20px}.section-header{flex-direction:column;align-items:stretch}.products-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:16px}.product-image-wrapper{height:180px}}.loading-card{background:var(--bg-card);border-radius:12px;box-shadow:var(--shadow);padding:80px 40px;text-align:center;margin-top:0}.loading-content{max-width:300px;margin:0 auto}.spinner{width:48px;height:48px;border:4px solid var(--bg-gray);border-top:4px solid var(--primary);border-radius:50%;animation:spin 1s linear infinite;margin:0 auto 20px}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.loading-text{color:var(--text-primary);font-size:1rem;font-weight:600;margin-bottom:8px}.loading-subtext{color:var(--text-secondary);font-size:.875rem;margin:0}.message-card{background:var(--bg-card);border-radius:12px;box-shadow:var(--shadow);padding:24px 28px;display:flex;align-items:flex-start;justify-content:space-between;gap:24px;border-left:4px solid var(--error);margin-top:0}.message-card.error{border-left-color:var(--error)}.message-card{background:var(--bg-card);border-radius:12px;box-shadow:var(--shadow);padding:24px 28px;display:flex;align-items:flex-start;justify-content:space-between;gap:24px;margin-top:0}.message-card.success{border-left:4px solid var(--success)}.message-card.warning{border-left:4px solid var(--warning)}.message-content{display:flex;align-items:flex-start;gap:12px;flex:1}.message-icon{font-size:20px;flex-shrink:0}.message-content h4{margin:0 0 4px;font-size:.9375rem;font-weight:600;color:var(--text-primary)}.message-content p{margin:0;font-size:.875rem;color:var(--text-secondary);line-height:1.5}.message-content strong{font-size:1rem;font-weight:700;color:var(--success)}.message-card.warning .message-content strong{color:var(--warning)}.message-detail{font-size:.8125rem!important;opacity:.8;margin-top:4px!important}.message-close{background:none;border:none;color:var(--text-secondary);font-size:24px;cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;line-height:1;flex-shrink:0;transition:color .2s}.message-close:hover{color:var(--text-primary)}.login-container{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#667eea,#764ba2);padding:20px}.login-card{background:#fff;border-radius:16px;box-shadow:0 20px 60px #0000004d;padding:48px;width:100%;max-width:420px;animation:slideUp .4s ease-out}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.login-header{text-align:center;margin-bottom:32px}.login-header h1{font-size:2rem;font-weight:700;color:#1a202c;margin:0 0 8px}.login-header p{color:#718096;font-size:.9375rem;margin:0}.login-form{display:flex;flex-direction:column;gap:24px}.login-form .form-group{display:flex;flex-direction:column;gap:8px}.login-form label{font-weight:600;color:#2d3748;font-size:.9375rem}.login-form .form-input{padding:14px 18px;font-size:1rem;border:2px solid #e2e8f0;border-radius:10px;transition:all .3s ease;font-family:inherit;width:100%;background:#fff;color:#1a202c}.login-form .form-input:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 4px #667eea1a}.login-form .form-input:disabled{background:#f7fafc;cursor:not-allowed;opacity:.7}.error-message{background:#fed7d7;color:#c53030;padding:12px 16px;border-radius:8px;font-size:.875rem;border:1px solid #fc8181}.login-button{padding:16px 32px;font-size:1.0625rem;font-weight:700;color:#fff;background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:10px;cursor:pointer;transition:all .3s ease;display:flex;align-items:center;justify-content:center;gap:10px;width:100%;box-shadow:0 4px 12px #667eea4d}.login-button:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 20px #667eea66}.login-button:active:not(:disabled){transform:translateY(0)}.login-button:disabled{opacity:.7;cursor:not-allowed}.button-spinner{width:16px;height:16px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.app{width:100%;min-height:100vh;display:flex;flex-direction:column;background:linear-gradient(135deg,#f3f4f6,#e5e7eb)}.app-header{background:linear-gradient(135deg,#0f172a,#1e293b);color:#fff;padding:48px 40px;box-shadow:0 4px 20px #00000026;border-bottom:4px solid var(--primary-light);position:relative;overflow:hidden}.app-header:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,#3b82f61a,#1e40af0d);pointer-events:none}.header-content{max-width:1400px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:24px;position:relative;z-index:1}.header-content h1{font-size:2.25rem;font-weight:800;margin:0;color:#fff;letter-spacing:-.03em;text-shadow:0 2px 10px rgba(0,0,0,.2);display:flex;align-items:center;gap:12px}.header-content h1:before{content:"🛍️";font-size:2.5rem;filter:drop-shadow(0 2px 4px rgba(0,0,0,.2))}.header-content p{font-size:1.125rem;color:#cbd5e1;margin:0;font-weight:400;line-height:1.6;max-width:600px}.logout-button{padding:10px 20px;background:#ffffff1a;border:1px solid rgba(255,255,255,.2);border-radius:8px;color:#fff;font-weight:600;cursor:pointer;transition:all .3s ease;font-size:.9375rem}.logout-button:hover{background:#fff3;border-color:#ffffff4d;transform:translateY(-1px)}.app-main{flex:1;padding:48px;background:transparent}.main-container{max-width:1400px;margin:0 auto;display:flex;flex-direction:column;gap:32px;animation:fadeIn .5s ease-in}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@media(max-width:1024px){.app-header{padding:40px 36px}.header-content h1{font-size:2rem}.app-main{padding:40px 32px}.main-container{gap:32px}}@media(max-width:768px){.app-header{padding:32px 24px}.header-content{flex-direction:column;align-items:flex-start;gap:16px}.header-content h1{font-size:1.75rem}.header-content h1:before{font-size:2rem}.header-content p{font-size:1rem}.app-main{padding:32px 20px}.main-container{gap:28px}}*{margin:0;padding:0;box-sizing:border-box}:root{--primary: #1e40af;--primary-dark: #1e3a8a;--primary-light: #3b82f6;--secondary: #6366f1;--success: #10b981;--error: #ef4444;--warning: #f59e0b;--bg-dark: #0f172a;--bg-card: #ffffff;--text-primary: #1f2937;--text-secondary: #6b7280;--text-light: #9ca3af;--border: #e5e7eb;--bg-gray: #f9fafb;--shadow: 0 1px 3px 0 rgba(0, 0, 0, .1), 0 1px 2px 0 rgba(0, 0, 0, .06);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -1px rgba(0, 0, 0, .06);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -2px rgba(0, 0, 0, .05)}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#f3f4f6;min-height:100vh;padding:0;margin:0;color:var(--text-primary)}#root{width:100%;min-height:100vh}*{scrollbar-width:thin;scrollbar-color:var(--primary-light) transparent}*::-webkit-scrollbar{width:8px}*::-webkit-scrollbar-track{background:transparent}*::-webkit-scrollbar-thumb{background-color:var(--primary-light);border-radius:4px}*::-webkit-scrollbar-thumb:hover{background-color:var(--primary)}
