.login-container{display:flex;justify-content:center;align-items:center;min-height:100vh;background-color:var(--white)}.login-card{background:var(--white);border:1px solid var(--border-color);border-radius:8px;padding:40px;width:100%;max-width:400px;box-shadow:0 2px 8px #0000001a}.login-title{font-size:28px;font-weight:600;color:var(--primary-red);text-align:center;margin-bottom:30px}.login-form{display:flex;flex-direction:column;gap:20px}.form-group{display:flex;flex-direction:column;gap:8px}.form-group label{font-size:14px;font-weight:500;color:var(--text-dark)}.form-group input{width:100%}.password-wrapper{position:relative;display:flex;align-items:center}.password-wrapper input{width:100%;padding-right:42px}.password-toggle{position:absolute;right:10px;background:none;border:none;cursor:pointer;padding:0;font-size:16px;line-height:1;color:var(--text-dark);opacity:.6;transition:opacity .2s}.password-toggle:hover{opacity:1}.error-message{padding:10px;background-color:#fee;border:1px solid var(--error-color);border-radius:4px;color:var(--error-color);font-size:14px;text-align:center}.login-button{width:100%;padding:12px;font-size:16px;font-weight:600;margin-top:10px}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000}.modal-content{background:var(--white);border-radius:8px;width:90%;max-width:500px;box-shadow:0 4px 12px #00000026}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;border-bottom:1px solid var(--border-color)}.modal-header h2{font-size:20px;color:var(--text-dark)}.close-button{background:none;border:none;font-size:32px;color:var(--dark-gray);cursor:pointer;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;line-height:1}.close-button:hover{color:var(--text-dark);background:none}.modal-form{padding:24px}.modal-form .form-group{margin-bottom:20px}.modal-form .form-group label{display:block;margin-bottom:8px;font-weight:500;color:var(--text-dark)}.modal-form .form-group input{width:100%}.modal-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:24px}.cancel-button{background-color:transparent;border:1px solid var(--border-color);color:var(--text-dark)}.cancel-button:hover:not(:disabled){background-color:var(--light-gray)}.submit-button{background-color:var(--primary-red)}.toast{position:fixed;bottom:32px;right:32px;display:flex;align-items:center;gap:10px;padding:14px 18px;border-radius:10px;box-shadow:0 4px 20px #0000001f;font-size:14px;font-weight:500;max-width:420px;z-index:9999;animation:toast-in .25s ease}@keyframes toast-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.toast--success{background-color:#f0fdf4;border:1px solid #bbf7d0;color:#15803d}.toast--error{background-color:#fff0f0;border:1px solid #fecaca;color:#b91c1c}.toast-icon{flex-shrink:0;display:flex;align-items:center}.toast-message{flex:1;line-height:1.4}.toast-close{flex-shrink:0;background:none;border:none;cursor:pointer;padding:0;color:inherit;opacity:.6;display:flex;align-items:center;transition:opacity .2s}.toast-close:hover{opacity:1}.dashboard-container{min-height:100vh;background-color:var(--white)}.dashboard-header{background-color:var(--primary-red);color:var(--white);padding:20px 40px;display:flex;justify-content:space-between;align-items:center;box-shadow:0 2px 4px #0000001a}.dashboard-header h1{font-size:24px;font-weight:600}.logout-button{background-color:transparent;border:2px solid var(--white);color:var(--white);padding:8px 16px}.logout-button:hover{background-color:#ffffff1a}.dashboard-content{max-width:1200px;margin:0 auto;padding:40px 20px}.content-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px}.content-header h2{font-size:28px;color:var(--text-dark)}.create-batch-button{padding:12px 24px;font-size:16px;font-weight:600}.loading-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:80px 20px}.loading-spinner{width:44px;height:44px;border:3px solid var(--border-color);border-top-color:var(--primary-red);border-radius:50%;animation:spin .75s linear infinite}.loading-text{font-size:15px;color:var(--dark-gray);margin:0}.empty-state{display:flex;justify-content:center;padding:60px 20px}.empty-state-card{display:flex;flex-direction:column;align-items:center;gap:16px;background:var(--white);border:1px solid var(--border-color);border-radius:16px;padding:56px 48px;max-width:460px;width:100%;box-shadow:0 2px 12px #0000000f;text-align:center}.empty-state-icon{display:flex;align-items:center;justify-content:center;width:88px;height:88px;border-radius:50%;background-color:#fff0f0;color:var(--primary-red);margin-bottom:8px}.empty-state-title{font-size:20px;font-weight:600;color:var(--text-dark);margin:0}.empty-state-text{font-size:15px;color:var(--dark-gray);line-height:1.6;margin:0}.status-badge{display:inline-block;padding:3px 10px;border-radius:20px;font-size:12px;font-weight:600;text-transform:capitalize;letter-spacing:.3px}.status-badge--pending{background-color:#fef9c3;color:#854d0e;border:1px solid #fde68a}.status-badge--processed{background-color:#f0fdf4;color:#15803d;border:1px solid #bbf7d0}.status-badge--failed{background-color:#fff0f0;color:#b91c1c;border:1px solid #fecaca}.table-container{background:var(--white);border:1px solid var(--border-color);border-radius:8px;overflow:hidden;box-shadow:0 1px 3px #0000001a}.batches-table{width:100%}.batches-table thead{background-color:var(--light-gray)}.batches-table th{text-align:left;padding:16px;font-weight:600;color:var(--text-dark);border-bottom:2px solid var(--border-color)}.batches-table td{padding:16px;border-bottom:1px solid var(--border-color)}.batches-table tbody tr:hover{background-color:var(--light-gray)}.batches-table tbody tr:last-child td{border-bottom:none}.action-buttons{display:flex;gap:10px}.view-button{background-color:var(--primary-red);padding:6px 16px;font-size:14px}.delete-button{background-color:var(--error-color);padding:6px 16px;font-size:14px}.delete-button:hover:not(:disabled){background-color:#c82333}.pagination{display:flex;justify-content:center;align-items:center;gap:20px;margin-top:30px}.pagination-button{padding:8px 16px;font-size:14px}.pagination-info{color:var(--text-dark);font-size:14px;font-weight:500}.view-batch-container{min-height:100vh;background-color:var(--white)}.view-batch-header{background-color:var(--primary-red);color:var(--white);padding:20px 40px;box-shadow:0 2px 4px #0000001a}.back-button{background-color:transparent;border:none;color:var(--white);padding:8px 0;margin-bottom:10px;font-size:14px;cursor:pointer;display:inline-flex;align-items:center;gap:5px}.back-button:hover{background-color:transparent;opacity:.8}.view-batch-header h1{font-size:28px;font-weight:600}.vb-loading-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;min-height:100vh}.vb-spinner{width:40px;height:40px;border:3px solid var(--border-color);border-top-color:var(--primary-red);border-radius:50%;animation:vb-spin .75s linear infinite}@keyframes vb-spin{to{transform:rotate(360deg)}}.vb-loading-text{font-size:15px;color:var(--dark-gray);margin:0}.view-batch-content{max-width:1000px;margin:0 auto;padding:40px 20px;display:flex;flex-direction:column;gap:24px}.vb-card{background:var(--white);border:1px solid var(--border-color);border-radius:10px;padding:24px;box-shadow:0 1px 3px #00000014}.vb-card-header{display:flex;align-items:center;gap:10px;margin-bottom:20px;color:var(--primary-red)}.vb-card-header h2{font-size:18px;font-weight:600;color:var(--text-dark);margin:0}.upload-area{display:flex;flex-direction:column;align-items:center;gap:12px;padding:28px 20px;border:2px dashed var(--border-color);border-radius:8px;background-color:var(--light-gray);transition:border-color .2s}.upload-area:hover{border-color:var(--primary-red)}.upload-button{padding:12px 28px;font-size:15px}.upload-hint{font-size:13px;color:var(--dark-gray);font-style:italic;text-align:center;margin:0}.vb-table-loading{display:flex;justify-content:center;padding:32px}.empty-message{text-align:center;color:var(--dark-gray);padding:24px;margin:0}.uploads-table{overflow-x:auto}.uploads-table table{width:100%}.uploads-table thead{background-color:var(--light-gray)}.uploads-table th{text-align:left;padding:12px;font-weight:600;color:var(--text-dark);border-bottom:2px solid var(--border-color)}.uploads-table td{padding:12px;border-bottom:1px solid var(--border-color)}.uploads-table tbody tr:last-child td{border-bottom:none}.uploads-table tbody tr:hover{background-color:var(--light-gray)}.uploads-table th:last-child,.uploads-table td:last-child{width:40px;text-align:right;padding-right:8px}.upload-delete-btn{display:inline-flex;align-items:center;justify-content:center;background:none;border:none;padding:6px;border-radius:6px;color:var(--dark-gray);cursor:pointer;transition:color .15s,background-color .15s}.upload-delete-btn:hover:not(:disabled){color:#b91c1c;background-color:#fff0f0}.upload-delete-btn:disabled{opacity:.5;cursor:not-allowed}.upload-delete-confirm{display:flex;align-items:center;gap:6px;justify-content:flex-end}.upload-confirm-yes,.upload-confirm-cancel{font-size:12px;font-weight:600;padding:4px 10px;border-radius:5px;border:none;cursor:pointer;white-space:nowrap;display:inline-flex;align-items:center;gap:4px;transition:opacity .15s}.upload-confirm-yes{background-color:#b91c1c;color:#fff}.upload-confirm-yes:hover:not(:disabled){background-color:#991b1b}.upload-confirm-cancel{background-color:var(--light-gray);color:var(--text-dark);border:1px solid var(--border-color)}.upload-confirm-cancel:hover{background-color:var(--border-color)}.report-hint{font-size:14px;color:var(--dark-gray);margin:0 0 16px;padding:10px 14px;background:#fff8f8;border:1px solid #fde8e8;border-radius:6px}.report-actions{display:flex;gap:16px;flex-wrap:wrap}.generate-button{flex:1;min-width:200px;padding:14px 24px;font-size:15px;font-weight:600}.download-button{flex:1;min-width:200px;padding:14px 24px;font-size:15px;font-weight:600;background-color:#1d6f42;display:inline-flex;align-items:center;justify-content:center;gap:8px}.download-button:hover:not(:disabled){background-color:#155233}.download-button:disabled,.generate-button:disabled{opacity:.45;cursor:not-allowed}.progress-box{margin-bottom:20px;padding:14px 16px;background:#f8f9ff;border:1px solid #dde3ff;border-radius:8px}.progress-header{display:flex;align-items:center;gap:8px;margin-bottom:10px;font-size:14px}.progress-spin{color:var(--primary-red);animation:vb-spin 1s linear infinite;flex-shrink:0}.progress-step{flex:1;color:var(--text-dark)}.progress-pct{font-weight:700;color:var(--primary-red)}.progress-track{height:6px;background:var(--border-color);border-radius:99px;overflow:hidden}.progress-fill{height:100%;background:var(--primary-red);border-radius:99px;transition:width .4s ease}.report-cards{display:flex;flex-direction:column;gap:28px}.report-item{padding:20px;border:1px solid var(--border-color);border-radius:10px;background:#fafafa}.report-item-category{font-size:16px;font-weight:600;color:var(--text-dark);margin:0 0 12px;line-height:1.4}.report-item-meta{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.report-meta-pill{font-size:13px;padding:3px 10px;background:var(--white);border:1px solid var(--border-color);border-radius:20px;color:var(--text-dark)}.report-badge{font-size:12px;font-weight:600;padding:3px 10px;border-radius:20px;text-transform:capitalize}.report-badge--sentiment-positive{background:#f0fdf4;color:#15803d;border:1px solid #bbf7d0}.report-badge--sentiment-negative{background:#fff0f0;color:#b91c1c;border:1px solid #fecaca}.report-badge--sentiment-neutral{background:#fef9c3;color:#854d0e;border:1px solid #fde68a}.report-badge--risk-low{background:#f0fdf4;color:#15803d;border:1px solid #bbf7d0}.report-badge--risk-medium{background:#fef9c3;color:#854d0e;border:1px solid #fde68a}.report-badge--risk-high{background:#fff0f0;color:#b91c1c;border:1px solid #fecaca}.report-item-summary{font-size:14px;color:var(--dark-gray);line-height:1.6;margin:0 0 16px}.report-breakdown-table{margin-bottom:16px}.breakdown-bar-track{height:8px;background:var(--border-color);border-radius:99px;overflow:hidden;min-width:80px}.breakdown-bar-fill{height:100%;background:var(--primary-red);border-radius:99px;transition:width .4s ease}.report-item-lists{display:grid;grid-template-columns:1fr 1fr;gap:16px}@media (max-width: 600px){.report-item-lists{grid-template-columns:1fr}}.report-list-block h4{font-size:14px;font-weight:600;color:var(--text-dark);margin:0 0 8px}.report-list-block ul{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:4px}.report-list-block li{font-size:13px;color:var(--dark-gray);line-height:1.5}:root{--primary-red: #8B0000;--primary-red-hover: #A00000;--primary-red-dark: #6B0000;--white: #FFFFFF;--light-gray: #F5F5F5;--gray: #E0E0E0;--dark-gray: #666666;--text-dark: #333333;--border-color: #DDDDDD;--error-color: #DC3545;--success-color: #28A745;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;line-height:1.5;font-weight:400;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box;margin:0;padding:0}body{margin:0;min-height:100vh;background-color:var(--white);color:var(--text-dark)}#root{min-height:100vh}h1,h2,h3,h4,h5,h6{margin:0;font-weight:600}button{border-radius:4px;border:none;padding:10px 20px;font-size:14px;font-weight:500;font-family:inherit;background-color:var(--primary-red);color:var(--white);cursor:pointer;transition:background-color .2s ease}button:hover:not(:disabled){background-color:var(--primary-red-hover)}button:active:not(:disabled){background-color:var(--primary-red-dark)}button:disabled{opacity:.5;cursor:not-allowed}input,textarea{font-family:inherit;font-size:14px;padding:10px;border:1px solid var(--border-color);border-radius:4px;outline:none;transition:border-color .2s ease}input:focus,textarea:focus{border-color:var(--primary-red)}table{width:100%;border-collapse:collapse}.loading-screen{display:flex;justify-content:center;align-items:center;min-height:100vh;background-color:var(--white)}.spinner{width:40px;height:40px;border:4px solid var(--gray);border-top-color:var(--primary-red);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
