.login-container{display:flex;justify-content:center;align-items:center;min-height:100vh;background:linear-gradient(135deg,var(--color-primary) 0%,var(--color-primary-hover) 100%)}.login-card{background:var(--color-surface);padding:var(--spacing-xl);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);width:100%;max-width:400px}.login-card h1{margin:0 0 var(--spacing-sm) 0;color:var(--color-text-primary);font-size:var(--font-size-h1)}.login-subtitle{margin:0 0 var(--spacing-xl) 0;color:var(--color-text-secondary);font-size:var(--font-size-small)}.form-group{margin-bottom:var(--spacing-lg)}.form-group label{display:block;margin-bottom:var(--spacing-sm);color:var(--color-text-primary);font-weight:var(--font-weight-medium)}.form-group input{width:100%;padding:12px var(--spacing-md);border:1px solid var(--color-border-dark);border-radius:var(--radius-sm);font-size:var(--font-size-body);box-sizing:border-box}.form-group input:focus{outline:none;border-color:var(--color-primary);box-shadow:var(--shadow-focus)}.form-group input:disabled{background-color:var(--color-background);cursor:not-allowed}.error-message{padding:12px var(--spacing-md);background-color:#fee2e2;color:var(--color-error);border-radius:var(--radius-sm);margin-bottom:var(--spacing-md);font-size:var(--font-size-small)}.login-button{width:100%;padding:12px;background:var(--color-primary);color:#fff;border:none;border-radius:var(--radius-sm);font-size:var(--font-size-body);font-weight:var(--font-weight-semibold);cursor:pointer;transition:all var(--transition-normal)}.login-button:hover:not(:disabled){background:var(--color-primary-hover)}.login-button:disabled{opacity:.5;cursor:not-allowed}.dashboard-container{min-height:100vh;background-color:var(--color-background)}.dashboard-header{position:sticky;top:0;z-index:var(--z-header);background-color:var(--color-primary);color:#fff;padding:0 var(--spacing-xl);height:64px;display:flex;justify-content:space-between;align-items:center;box-shadow:var(--shadow-sm)}.dashboard-header h1{margin:0;font-size:var(--font-size-h1)}.user-info{display:flex;align-items:center;gap:var(--spacing-md)}.logout-button{padding:var(--spacing-sm) var(--spacing-md);background-color:#fff3;color:#fff;border:1px solid rgba(255,255,255,.3);border-radius:var(--radius-sm);cursor:pointer;transition:background-color var(--transition-normal)}.logout-button:hover{background-color:#ffffff4d}.dashboard-content{max-width:1200px;margin:0 auto;padding:var(--spacing-xl)}.dashboard-content h2{margin:0 0 var(--spacing-sm) 0;color:var(--color-text-primary)}.welcome-message{margin:0 0 var(--spacing-xl) 0;color:var(--color-text-secondary)}.card-section{margin-bottom:var(--spacing-xl)}.section-title{font-size:var(--font-size-body);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);margin:0 0 var(--spacing-md) 0;padding:var(--spacing-sm) 0 var(--spacing-sm) 12px;border-left:4px solid var(--color-border-dark);letter-spacing:.03em}.section-title.section-prediction{border-left-color:var(--color-primary);color:var(--color-primary-hover)}.section-title.section-upload{border-left-color:var(--color-success);color:#16a34a}.section-title.section-master{border-left-color:var(--color-warning);color:#d97706}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:var(--spacing-md)}.feature-card{background:var(--color-surface);padding:20px var(--spacing-lg);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);cursor:pointer;transition:transform var(--transition-normal),box-shadow var(--transition-normal);position:relative}.feature-card:not(.disabled):hover{transform:translateY(-4px);box-shadow:var(--shadow-md)}.feature-card.disabled{opacity:.6;cursor:not-allowed}.card-icon{margin-bottom:var(--spacing-sm);color:var(--color-text-secondary);line-height:0}.feature-card h3{margin:0 0 var(--spacing-xs) 0;color:var(--color-text-primary);font-size:var(--font-size-body)}.feature-card p{margin:0;color:var(--color-text-muted);font-size:var(--font-size-xs);line-height:1.4}.feature-card .badge{position:absolute;top:12px;right:12px;color:#fff;padding:2px 8px;border-radius:var(--radius-sm);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium)}.feature-card .badge.admin{background-color:#6c757d}.info-section{background:var(--color-surface);padding:var(--spacing-xl);border-radius:var(--radius-md);box-shadow:var(--shadow-md)}.info-section h3{margin:0 0 var(--spacing-md) 0;color:var(--color-text-primary)}.info-grid{display:grid;gap:var(--spacing-md)}.info-item{display:flex;padding:12px;background-color:var(--color-background);border-radius:var(--radius-sm)}.info-label{font-weight:var(--font-weight-medium);color:var(--color-text-secondary);margin-right:var(--spacing-md);min-width:120px}.info-value{color:var(--color-text-primary)}.prediction-container{min-height:100vh;background-color:var(--color-background)}.prediction-header{position:sticky;top:0;z-index:var(--z-header);background-color:var(--color-primary);color:#fff;padding:0 var(--spacing-xl);height:64px;display:flex;flex-direction:column;justify-content:center;box-shadow:var(--shadow-sm)}.prediction-header h1{margin:var(--spacing-xs) 0 0 0;font-size:var(--font-size-h1)}.back-button{background:none;border:none;color:#fff;cursor:pointer;font-size:var(--font-size-body);padding:0;margin-bottom:var(--spacing-xs)}.back-button:hover{text-decoration:underline}.prediction-content{max-width:1000px;margin:0 auto;padding:var(--spacing-xl)}.upload-section{background:var(--color-surface);padding:var(--spacing-xl);border-radius:var(--radius-md);box-shadow:var(--shadow-md);margin-bottom:var(--spacing-xl)}.upload-section h2{margin:0 0 var(--spacing-lg) 0;color:var(--color-text-primary)}.file-input-wrapper{margin-bottom:var(--spacing-md)}.file-input-wrapper input[type=file]{display:none}.file-input-label{display:inline-block;padding:12px var(--spacing-lg);background-color:var(--color-background);border:2px dashed var(--color-border-dark);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-normal)}.file-input-label:hover{background-color:var(--color-primary-light);border-color:var(--color-primary)}.upload-button{width:100%;padding:12px;background:var(--color-primary);color:#fff;border:none;border-radius:var(--radius-sm);font-size:var(--font-size-body);font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--transition-normal)}.upload-button:hover:not(:disabled){background:var(--color-primary-hover)}.upload-button:disabled{opacity:.5;cursor:not-allowed}.error-message{margin-top:var(--spacing-md);padding:12px;background-color:#fee2e2;color:var(--color-error);border-radius:var(--radius-sm);font-size:var(--font-size-small)}.result-section{background:var(--color-surface);padding:var(--spacing-xl);border-radius:var(--radius-md);box-shadow:var(--shadow-md)}.result-section h2{margin:0 0 var(--spacing-lg) 0;color:var(--color-text-primary)}.validation-errors,.validation-warnings{padding:var(--spacing-md);border-radius:var(--radius-sm);margin-bottom:var(--spacing-lg)}.validation-errors{background-color:#fee2e2;border-left:4px solid var(--color-error)}.validation-warnings{background-color:#fef3c7;border-left:4px solid var(--color-warning)}.validation-errors h3,.validation-warnings h3{margin:0 0 var(--spacing-sm) 0;font-size:var(--font-size-body)}.error-item,.warning-item{margin-top:var(--spacing-sm);font-size:var(--font-size-small)}.result-summary{margin-bottom:var(--spacing-xl)}.result-card{background-color:var(--color-background);padding:var(--spacing-lg);border-radius:var(--radius-md);margin-bottom:var(--spacing-md)}.result-card.total{background:linear-gradient(135deg,var(--color-primary) 0%,var(--color-primary-hover) 100%);color:#fff;text-align:center}.result-card h3,.result-card h4{margin:0 0 var(--spacing-sm) 0}.result-value{font-size:2rem;font-weight:var(--font-weight-bold);margin:var(--spacing-sm) 0}.result-value.large{font-size:3rem}.result-seconds,.result-detail{font-size:var(--font-size-small);opacity:.8}.result-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--spacing-md)}.predictions-table-wrapper{margin:var(--spacing-xl) 0}.predictions-table-wrapper h3{margin:0 0 var(--spacing-md) 0;color:var(--color-text-primary)}.predictions-table{width:100%;border-collapse:collapse;background:var(--color-surface)}.predictions-table th,.predictions-table td{padding:12px;text-align:left;border-bottom:1px solid var(--color-border)}.predictions-table th{background-color:var(--color-background);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:.05em}.predictions-table tbody tr:hover{background-color:var(--color-background)}.import-info{margin-top:var(--spacing-xl);padding-top:var(--spacing-md);border-top:1px solid var(--color-border);color:var(--color-text-secondary);font-size:var(--font-size-small)}.import-info p{margin:var(--spacing-xs) 0}.breakdown-section{margin:var(--spacing-xl) 0}.breakdown-section h3{margin:0 0 var(--spacing-md) 0;color:var(--color-text-primary)}.breakdown-table{width:100%;border-collapse:collapse;background:var(--color-surface)}.breakdown-table th,.breakdown-table td{padding:12px;text-align:left;border-bottom:1px solid var(--color-border)}.breakdown-table th{background-color:var(--color-background);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:.05em}.breakdown-table td:nth-child(2),.breakdown-table td:nth-child(3){text-align:right}.breakdown-table tbody tr:hover{background-color:var(--color-background)}.masters-page{max-width:1400px;margin:0 auto;padding:var(--spacing-lg)}.masters-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-xl)}.masters-header h1{font-size:var(--font-size-h1);color:var(--color-text-primary);margin:0}.masters-filters{display:flex;gap:var(--spacing-md);align-items:flex-end;margin-bottom:var(--spacing-lg);padding:var(--spacing-lg);background:var(--color-background);border-radius:var(--radius-md);flex-wrap:wrap}.filter-group{display:flex;flex-direction:column;gap:var(--spacing-xs);min-width:150px}.filter-group label{font-size:var(--font-size-small);font-weight:var(--font-weight-medium);color:var(--color-text-secondary)}.filter-group input,.filter-group select{padding:var(--spacing-sm) 12px;border:1px solid var(--color-border-dark);border-radius:var(--radius-sm);font-size:var(--font-size-small)}.filter-group input:focus,.filter-group select:focus{outline:none;border-color:var(--color-primary);box-shadow:var(--shadow-focus)}.filter-actions{display:flex;gap:10px;margin-top:auto}.master-table-container{overflow-x:auto;background:var(--color-surface);border-radius:var(--radius-md);box-shadow:var(--shadow-md);margin-bottom:var(--spacing-lg)}.master-table{width:100%;border-collapse:collapse;font-size:var(--font-size-small)}.master-table thead{background:var(--color-background);border-bottom:2px solid var(--color-border)}.master-table th{padding:12px var(--spacing-md);text-align:left;font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);white-space:nowrap;font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:.05em}.master-table td{padding:12px var(--spacing-md);border-bottom:1px solid var(--color-border);color:var(--color-text-secondary)}.master-table tbody tr:hover{background:var(--color-background)}.master-table tbody tr:last-child td{border-bottom:none}.table-loading,.table-empty{padding:60px var(--spacing-lg);text-align:center;color:var(--color-text-muted);background:var(--color-surface);border-radius:var(--radius-md);box-shadow:var(--shadow-md)}.table-loading p,.table-empty p{margin:0;font-size:var(--font-size-body)}.badge{display:inline-block;padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--radius-sm);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium)}.badge-yes{background:#dcfce7;color:#16a34a}.badge-no{background:#fee2e2;color:#dc2626}.badge-admin{background:var(--color-primary-light);color:var(--color-primary-hover)}.badge-user{background:#f1f5f9;color:var(--color-text-secondary)}.masters-info{margin-bottom:10px;color:var(--color-text-secondary);font-size:var(--font-size-small)}.masters-info p{margin:0}.pagination{display:flex;justify-content:center;gap:var(--spacing-xs);margin:var(--spacing-lg) 0}.pagination-btn{padding:var(--spacing-sm) 12px;border:1px solid var(--color-border-dark);background:var(--color-surface);border-radius:var(--radius-sm);cursor:pointer;font-size:var(--font-size-small);color:var(--color-text-primary);transition:all var(--transition-normal)}.pagination-btn:hover:not(:disabled){background:var(--color-background);border-color:var(--color-primary)}.pagination-btn.active{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.pagination-btn:disabled{cursor:not-allowed;opacity:.5}.pagination-ellipsis{padding:var(--spacing-sm) 12px;color:var(--color-text-muted)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;justify-content:center;align-items:center;z-index:var(--z-modal)}.modal-content{background:var(--color-surface);border-radius:var(--radius-lg);padding:0;max-width:900px;width:90%;max-height:90vh;overflow-y:auto;box-shadow:var(--shadow-xl);animation:modal-enter .3s ease}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-lg);border-bottom:1px solid var(--color-border)}.modal-header h2{margin:0;font-size:var(--font-size-h2);color:var(--color-text-primary)}.modal-close-btn{background:none;border:none;font-size:28px;color:var(--color-text-muted);cursor:pointer;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;transition:color var(--transition-normal)}.modal-close-btn:hover{color:var(--color-text-primary)}.modal-body{padding:var(--spacing-lg)}.modal-footer{display:flex;justify-content:flex-end;gap:10px;padding:var(--spacing-lg);border-top:1px solid var(--color-border)}.template-download{margin-bottom:var(--spacing-lg);padding:12px;background:var(--color-background);border-radius:var(--radius-sm)}.download-link{color:var(--color-primary);text-decoration:none;font-weight:var(--font-weight-medium)}.download-link:hover{text-decoration:underline}.file-input-section{margin-bottom:var(--spacing-lg)}.file-input-section input[type=file]{width:100%;padding:10px;border:2px dashed var(--color-border-dark);border-radius:var(--radius-sm);cursor:pointer}.selected-file{margin-top:10px;padding:var(--spacing-sm);background:var(--color-primary-light);border-radius:var(--radius-sm);font-size:var(--font-size-small);color:var(--color-primary-hover)}.import-result{margin-top:var(--spacing-lg)}.import-result h3{font-size:var(--font-size-h3);margin-bottom:var(--spacing-md);color:var(--color-text-primary)}.result-summary{display:flex;gap:var(--spacing-lg);margin-bottom:var(--spacing-lg);padding:var(--spacing-md);background:var(--color-background);border-radius:var(--radius-sm)}.result-summary p{margin:0;font-size:var(--font-size-small);font-weight:var(--font-weight-medium)}.warnings,.errors{margin-top:var(--spacing-md);padding:12px;border-radius:var(--radius-sm)}.warnings{background:#fef3c7;border-left:4px solid var(--color-warning)}.errors{background:#fee2e2;border-left:4px solid var(--color-error)}.warnings h4,.errors h4{margin:0 0 10px;font-size:var(--font-size-small);font-weight:var(--font-weight-semibold)}.warnings ul,.errors ul{margin:0;padding-left:var(--spacing-lg);font-size:var(--font-size-small)}.warnings li,.errors li{margin-bottom:var(--spacing-xs)}.import-details{margin-top:var(--spacing-lg)}.import-details h4{font-size:var(--font-size-body);margin-bottom:10px;color:var(--color-text-primary)}.details-table{overflow-x:auto;max-height:300px;overflow-y:auto;border:1px solid var(--color-border-dark);border-radius:var(--radius-sm)}.details-table table{width:100%;border-collapse:collapse;font-size:var(--font-size-xs)}.details-table thead{background:var(--color-background);position:sticky;top:0}.details-table th{padding:var(--spacing-sm) 12px;text-align:left;font-weight:var(--font-weight-semibold);border-bottom:2px solid var(--color-border)}.details-table td{padding:var(--spacing-sm) 12px;border-bottom:1px solid var(--color-border)}.details-note{margin-top:10px;font-size:var(--font-size-xs);color:var(--color-text-secondary);text-align:center}.status-badge{display:inline-block;padding:3px var(--spacing-sm);border-radius:var(--radius-sm);font-size:11px;font-weight:var(--font-weight-medium)}.status-created{background:#dcfce7;color:#16a34a}.status-updated{background:var(--color-primary-light);color:var(--color-primary-hover)}.status-skipped{background:#f1f5f9;color:var(--color-text-secondary)}.status-error{background:#fee2e2;color:#dc2626}.btn-primary{padding:10px var(--spacing-lg);background:var(--color-primary);color:#fff;border:none;border-radius:var(--radius-sm);cursor:pointer;font-size:var(--font-size-small);font-weight:var(--font-weight-medium);transition:background var(--transition-normal)}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover)}.btn-primary:disabled{background:var(--color-border-dark);cursor:not-allowed}.btn-secondary{padding:10px var(--spacing-lg);background:var(--color-surface);color:var(--color-primary);border:1px solid var(--color-primary);border-radius:var(--radius-sm);cursor:pointer;font-size:var(--font-size-small);font-weight:var(--font-weight-medium);transition:all var(--transition-normal)}.btn-secondary:hover{background:var(--color-primary-light)}.error-message{padding:12px var(--spacing-md);background:#fee2e2;border:1px solid #fecaca;border-radius:var(--radius-sm);color:var(--color-error);margin-bottom:var(--spacing-lg);font-size:var(--font-size-small)}.success-message{padding:12px var(--spacing-md);background:#dcfce7;border:1px solid #bbf7d0;border-radius:var(--radius-sm);color:#16a34a;margin-bottom:var(--spacing-lg);font-size:var(--font-size-small)}.coeff-center-selector{display:flex;align-items:center;gap:12px;margin-bottom:var(--spacing-lg);padding:var(--spacing-md) var(--spacing-lg);background:var(--color-background);border-radius:var(--radius-md)}.coeff-center-selector label{font-weight:var(--font-weight-medium);color:var(--color-text-secondary);white-space:nowrap}.coeff-center-selector select{padding:var(--spacing-sm) 12px;border:1px solid var(--color-border-dark);border-radius:var(--radius-sm);font-size:var(--font-size-small);min-width:250px}.coeff-center-selector select:focus{outline:none;border-color:var(--color-primary);box-shadow:var(--shadow-focus)}.coeff-center-info{color:var(--color-text-secondary);font-size:var(--font-size-small)}.coeff-form{display:flex;flex-direction:column;gap:var(--spacing-lg)}.coeff-category-title{font-size:var(--font-size-h2);color:var(--color-text-primary);margin:0 0 var(--spacing-sm) 0;padding-bottom:var(--spacing-sm);border-left:4px solid var(--color-primary);padding-left:12px}.coeff-section{background:var(--color-surface);border-radius:var(--radius-md);box-shadow:var(--shadow-md);padding:var(--spacing-lg)}.coeff-section-title{font-size:var(--font-size-h3);color:var(--color-text-primary);margin:0 0 var(--spacing-md) 0;padding-bottom:var(--spacing-sm);border-bottom:2px solid var(--color-border)}.coeff-fields{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:var(--spacing-md)}.coeff-field{display:flex;flex-direction:column;gap:var(--spacing-xs)}.coeff-label{font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);color:var(--color-text-secondary)}.coeff-input{padding:var(--spacing-sm) 12px;border:1px solid var(--color-border-dark);border-radius:var(--radius-sm);font-size:var(--font-size-small);width:100%;box-sizing:border-box}.coeff-input:focus{outline:none;border-color:var(--color-primary);box-shadow:var(--shadow-focus)}.coeff-input:disabled{background:var(--color-background);color:var(--color-text-secondary);cursor:not-allowed}.coeff-actions{display:flex;gap:12px;padding-top:var(--spacing-sm)}.coeff-readonly-notice{padding:12px var(--spacing-md);background:#fef3c7;border:1px solid var(--color-warning);border-radius:var(--radius-sm);color:#d97706;font-size:var(--font-size-small)}.btn-edit{padding:var(--spacing-xs) 12px;background:var(--color-background);color:var(--color-text-secondary);border:1px solid var(--color-border-dark);border-radius:var(--radius-sm);cursor:pointer;font-size:var(--font-size-xs);transition:all var(--transition-normal)}.btn-edit:hover{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.edit-readonly-info{display:flex;gap:var(--spacing-lg);padding:12px var(--spacing-md);background:var(--color-background);border-radius:var(--radius-sm);margin-bottom:12px;font-size:var(--font-size-small);color:var(--color-text-primary)}.edit-readonly-item strong{margin-right:var(--spacing-sm)}.edit-notice{padding:10px var(--spacing-md);background:#fef3c7;border:1px solid var(--color-warning);border-radius:var(--radius-sm);color:#d97706;font-size:var(--font-size-xs);margin-bottom:var(--spacing-md)}.edit-form{display:flex;flex-direction:column;gap:var(--spacing-md)}.edit-field{display:flex;flex-direction:column;gap:var(--spacing-xs)}.edit-field label{font-size:var(--font-size-small);font-weight:var(--font-weight-medium);color:var(--color-text-secondary)}.edit-field input[type=text],.edit-field input[type=number]{padding:var(--spacing-sm) 12px;border:1px solid var(--color-border-dark);border-radius:var(--radius-sm);font-size:var(--font-size-small)}.edit-field input[type=text]:focus,.edit-field input[type=number]:focus{outline:none;border-color:var(--color-primary);box-shadow:var(--shadow-focus)}.edit-field-row{display:flex;gap:var(--spacing-md)}.edit-field-row .edit-field{flex:1}.edit-checkbox-label{display:flex;align-items:center;gap:var(--spacing-sm);cursor:pointer;font-size:var(--font-size-small);font-weight:var(--font-weight-medium);color:var(--color-text-secondary)}.edit-checkbox-label input[type=checkbox]{width:18px;height:18px;cursor:pointer}.upload-container{min-height:100vh;background-color:var(--color-background)}.upload-header{position:sticky;top:0;z-index:var(--z-header);background-color:var(--color-surface);padding:0 var(--spacing-xl);height:64px;box-shadow:var(--shadow-sm);border-bottom:1px solid var(--color-border);display:flex;justify-content:space-between;align-items:center}.upload-header h1{margin:0;color:var(--color-text-primary);font-size:var(--font-size-h1)}.upload-content{max-width:800px;margin:var(--spacing-xl) auto;padding:0 var(--spacing-xl)}.upload-form{background:var(--color-surface);padding:var(--spacing-xl);border-radius:var(--radius-lg);box-shadow:var(--shadow-md)}.form-group{margin-bottom:var(--spacing-xl)}.form-group label{display:block;margin-bottom:var(--spacing-sm);color:var(--color-text-primary);font-weight:var(--font-weight-semibold);font-size:var(--font-size-body)}.date-picker{width:100%;padding:12px var(--spacing-md);border:1px solid var(--color-border-dark);border-radius:var(--radius-sm);font-size:var(--font-size-body);transition:border-color var(--transition-normal)}.hint{display:inline-block;margin-left:var(--spacing-md);color:var(--color-text-muted);font-size:var(--font-size-small)}.drop-zone{border:3px dashed var(--color-border-dark);border-radius:var(--radius-md);padding:var(--spacing-2xl) var(--spacing-xl);text-align:center;background:var(--color-background);transition:all var(--transition-normal);cursor:pointer;margin-bottom:var(--spacing-lg)}.drop-zone:hover{border-color:var(--color-primary);background:var(--color-primary-light)}.drop-zone-content{display:flex;flex-direction:column;align-items:center;gap:var(--spacing-md)}.upload-icon,.file-icon{font-size:4rem}.drop-zone p{margin:var(--spacing-xs) 0;color:var(--color-text-secondary);font-size:var(--font-size-body)}.sub-text{color:var(--color-text-muted);font-size:var(--font-size-small)}.file-name{font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.file-size{color:var(--color-text-muted);font-size:var(--font-size-small)}.file-select-button{display:inline-block;padding:12px var(--spacing-xl);background:var(--color-primary);color:#fff;border-radius:var(--radius-sm);cursor:pointer;font-weight:var(--font-weight-semibold);transition:all var(--transition-normal)}.file-select-button:hover{background:var(--color-primary-hover)}.warning-message{background:#fef3c7;border:1px solid var(--color-warning);border-radius:var(--radius-sm);padding:var(--spacing-md);margin-bottom:var(--spacing-md);color:#d97706}.warning-message ul{margin:var(--spacing-sm) 0 0 var(--spacing-lg);padding:0}.duplicate-warning{background:#fef3c7;border:2px solid var(--color-warning);border-radius:var(--radius-md);padding:var(--spacing-xl);margin-bottom:var(--spacing-lg);text-align:center}.warning-icon{font-size:3rem;margin-bottom:var(--spacing-md)}.warning-content{margin-bottom:var(--spacing-lg)}.warning-content strong{display:block;font-size:var(--font-size-h2);color:#d97706;margin-bottom:var(--spacing-sm)}.warning-content p{color:#d97706;margin:var(--spacing-sm) 0}.warning-list{text-align:left;margin:var(--spacing-md) 0;padding-left:var(--spacing-xl);color:#d97706}.warning-actions{display:flex;gap:var(--spacing-md);justify-content:center}.cancel-button,.confirm-button{padding:12px var(--spacing-xl);border:none;border-radius:var(--radius-sm);cursor:pointer;font-weight:var(--font-weight-semibold);font-size:var(--font-size-body);transition:all var(--transition-normal)}.cancel-button{background:var(--color-border);color:var(--color-text-secondary)}.cancel-button:hover{background:var(--color-border-dark)}.confirm-button{background:var(--color-warning);color:var(--color-text-primary)}.confirm-button:hover{background:#d97706;color:#fff}.upload-actions{text-align:center}.upload-button{padding:var(--spacing-md) var(--spacing-2xl);background:var(--color-primary);color:#fff;border:none;border-radius:var(--radius-sm);cursor:pointer;font-size:var(--font-size-body);font-weight:var(--font-weight-semibold);transition:all var(--transition-normal)}.upload-button:hover:not(:disabled){background:var(--color-primary-hover);box-shadow:var(--shadow-md)}.upload-button:disabled{background:var(--color-border-dark);cursor:not-allowed}.file-list-container{min-height:100vh;background-color:var(--color-background)}.file-list-header{position:sticky;top:0;z-index:var(--z-header);background-color:var(--color-surface);padding:0 var(--spacing-xl);height:64px;box-shadow:var(--shadow-sm);border-bottom:1px solid var(--color-border);display:flex;justify-content:space-between;align-items:center}.file-list-header h1{margin:0;color:var(--color-text-primary);font-size:var(--font-size-h1)}.header-actions{display:flex;gap:var(--spacing-md)}.new-upload-button,.back-button{padding:var(--spacing-sm) var(--spacing-md);border:none;border-radius:var(--radius-sm);cursor:pointer;font-size:var(--font-size-small);font-weight:var(--font-weight-semibold);transition:all var(--transition-normal)}.new-upload-button{background:var(--color-success);color:#fff}.new-upload-button:hover{background:#16a34a}.back-button{background:var(--color-primary);color:#fff}.file-list-content{max-width:1200px;margin:var(--spacing-xl) auto;padding:0 var(--spacing-xl)}.tab-container{display:flex;gap:var(--spacing-md);margin-bottom:var(--spacing-xl)}.tab{flex:1;padding:var(--spacing-md);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;font-size:var(--font-size-body);font-weight:var(--font-weight-semibold);transition:all var(--transition-normal);color:var(--color-text-secondary)}.tab:hover{background:var(--color-primary-light);border-color:var(--color-primary)}.tab.active{background:var(--color-surface);color:var(--color-primary);border-color:var(--color-primary);box-shadow:var(--shadow-md)}.error-message{background:#fee2e2;border:1px solid #fecaca;border-radius:var(--radius-sm);padding:var(--spacing-md);margin-bottom:var(--spacing-md);color:var(--color-error)}.file-table-wrapper{background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);padding:var(--spacing-xl)}.loading,.empty-message{text-align:center;padding:var(--spacing-2xl);color:var(--color-text-muted);font-size:var(--font-size-body)}.file-table{width:100%;border-collapse:collapse;margin-bottom:var(--spacing-lg)}.file-table th,.file-table td{padding:var(--spacing-md);text-align:left;border-bottom:1px solid var(--color-border)}.file-table th{background:var(--color-background);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:.05em}.file-table tbody tr:hover{background:var(--color-background)}.file-table tbody tr.clickable-row{cursor:pointer}.file-table tbody tr.clickable-row:hover{background:var(--color-primary-light)}.detail-file-info{background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);padding:var(--spacing-lg) var(--spacing-xl);margin-bottom:var(--spacing-lg);display:flex;gap:var(--spacing-xl);flex-wrap:wrap}.info-row{display:flex;flex-direction:column;gap:var(--spacing-xs)}.info-label{font-size:var(--font-size-xs);color:var(--color-text-muted);font-weight:var(--font-weight-semibold)}.info-value{font-size:var(--font-size-body);color:var(--color-text-primary);font-weight:var(--font-weight-semibold)}.file-table input[type=checkbox]{width:18px;height:18px;cursor:pointer}.table-footer{display:flex;justify-content:space-between;align-items:center;padding-top:var(--spacing-md);border-top:2px solid var(--color-border)}.selection-info{display:flex;align-items:center;gap:var(--spacing-md);color:var(--color-text-secondary);font-weight:var(--font-weight-semibold)}.delete-button{padding:var(--spacing-sm) var(--spacing-lg);background:var(--color-error);color:#fff;border:none;border-radius:var(--radius-sm);cursor:pointer;font-weight:var(--font-weight-semibold);transition:all var(--transition-normal)}.delete-button:hover:not(:disabled){background:#e00000}.delete-button:disabled{background:var(--color-border-dark);cursor:not-allowed}.pagination{display:flex;align-items:center;gap:var(--spacing-md)}.page-button{padding:var(--spacing-sm) var(--spacing-md);background:var(--color-primary);color:#fff;border:none;border-radius:var(--radius-sm);cursor:pointer;font-weight:var(--font-weight-semibold);transition:all var(--transition-normal)}.page-button:hover:not(:disabled){background:var(--color-primary-hover)}.page-button:disabled{background:var(--color-border-dark);cursor:not-allowed}.page-info{color:var(--color-text-secondary);font-weight:var(--font-weight-semibold);min-width:60px;text-align:center}.prediction-summary-container{min-height:100vh;background-color:var(--color-background)}.prediction-summary-header{position:sticky;top:0;z-index:var(--z-header);background-color:var(--color-surface);padding:0 var(--spacing-xl);height:64px;box-shadow:var(--shadow-sm);border-bottom:1px solid var(--color-border);display:flex;justify-content:space-between;align-items:center}.prediction-summary-header h1{margin:0;color:var(--color-text-primary);font-size:var(--font-size-h1)}.back-button{padding:var(--spacing-sm) var(--spacing-md);background:var(--color-primary);color:#fff;border:none;border-radius:var(--radius-sm);cursor:pointer;font-size:var(--font-size-small);font-weight:var(--font-weight-semibold);transition:all var(--transition-normal)}.back-button:hover{background:var(--color-primary-hover)}.prediction-summary-content{max-width:1000px;margin:var(--spacing-xl) auto;padding:0 var(--spacing-xl)}.date-selector{background:var(--color-surface);padding:var(--spacing-lg) var(--spacing-xl);border-radius:var(--radius-md);box-shadow:var(--shadow-md);display:flex;align-items:center;gap:var(--spacing-md);margin-bottom:var(--spacing-xl)}.date-selector label{font-weight:var(--font-weight-semibold);color:var(--color-text-primary);font-size:var(--font-size-body)}.date-picker{flex:1;padding:12px;border:1px solid var(--color-border-dark);border-radius:var(--radius-sm);font-size:var(--font-size-body);transition:border-color var(--transition-normal)}.date-picker:focus{outline:none;border-color:var(--color-primary);box-shadow:var(--shadow-focus)}.available-dates{background:var(--color-surface);padding:var(--spacing-md) var(--spacing-xl);border-radius:var(--radius-md);box-shadow:var(--shadow-md);margin-bottom:var(--spacing-lg)}.available-dates-label{margin:0 0 var(--spacing-sm) 0;font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);font-size:var(--font-size-small)}.date-chips{display:flex;flex-wrap:wrap;gap:var(--spacing-sm)}.date-chip{display:flex;align-items:center;gap:var(--spacing-xs);padding:var(--spacing-xs) var(--spacing-sm);background:var(--color-background);border:2px solid transparent;border-radius:var(--radius-sm);cursor:pointer;font-size:var(--font-size-small);transition:all var(--transition-normal)}.date-chip:hover{background:var(--color-primary-light);border-color:var(--color-primary)}.date-chip.selected{background:var(--color-primary-light);border-color:var(--color-primary);font-weight:var(--font-weight-semibold)}.date-chip-text{color:var(--color-text-primary)}.date-chip-badges{display:flex;gap:2px}.date-chip .badge{display:inline-block;padding:1px 6px;border-radius:var(--radius-sm);font-size:var(--font-size-xs);font-weight:var(--font-weight-bold);color:#fff}.date-chip .badge-inbound{background:var(--color-success)}.date-chip .badge-outbound{background:var(--color-warning);color:var(--color-text-primary)}.error-message{background:#fee2e2;border:1px solid #fecaca;border-radius:var(--radius-sm);padding:var(--spacing-md);margin-bottom:var(--spacing-md);color:var(--color-error);text-align:center}.no-data-message{background:#fef3c7;border:1px solid var(--color-warning);border-radius:var(--radius-md);padding:var(--spacing-xl);color:#d97706;text-align:center;font-size:var(--font-size-body);box-shadow:var(--shadow-md)}.initial-message{background:var(--color-surface);border-radius:var(--radius-md);padding:var(--spacing-2xl);text-align:center;color:var(--color-text-muted);font-size:var(--font-size-body);box-shadow:var(--shadow-md)}.loading{background:var(--color-surface);padding:var(--spacing-2xl);border-radius:var(--radius-md);text-align:center;color:var(--color-text-muted);font-size:var(--font-size-body);box-shadow:var(--shadow-md)}.summary-cards{display:flex;flex-direction:column;gap:var(--spacing-lg)}.prediction-three-columns{display:grid;grid-template-columns:1fr 1fr 1fr;gap:var(--spacing-md)}.prediction-three-columns .summary-card{padding:var(--spacing-md)}.prediction-three-columns .summary-card h2{font-size:var(--font-size-body)}.prediction-three-columns .time-item .label,.prediction-three-columns .time-item .value,.prediction-three-columns .total-time{font-size:var(--font-size-small)}.summary-card{background:var(--color-surface);padding:var(--spacing-xl);border-radius:var(--radius-lg);box-shadow:var(--shadow-md)}.summary-card h2{margin:0 0 var(--spacing-md) 0;color:var(--color-text-primary);font-size:var(--font-size-h2);padding-bottom:var(--spacing-sm);border-bottom:3px solid var(--color-border)}.summary-card.inbound h2{border-bottom-color:var(--color-success)}.summary-card.outbound h2{border-bottom-color:var(--color-warning)}.summary-card.fixed-work h2{border-bottom-color:var(--color-primary)}.summary-card.attendance h2{border-bottom-color:var(--color-primary-hover)}.location-picker{padding:12px;border:1px solid var(--color-border-dark);border-radius:var(--radius-sm);font-size:var(--font-size-body);transition:border-color var(--transition-normal);min-width:140px}.location-picker:focus{outline:none;border-color:var(--color-primary);box-shadow:var(--shadow-focus)}.variance-card{padding:var(--spacing-xl);border-radius:var(--radius-lg);box-shadow:var(--shadow-md)}.variance-card h2{margin:0 0 var(--spacing-lg) 0;font-size:var(--font-size-h2);color:#fff}.variance-card.within{background:linear-gradient(135deg,var(--color-success) 0%,#16a34a 100%);color:#fff}.variance-card.exceeded{background:linear-gradient(135deg,var(--color-warning) 0%,#d97706 100%);color:#fff}.variance-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--spacing-md);margin-bottom:var(--spacing-md)}.variance-item{text-align:center;padding:var(--spacing-md);background:#ffffff26;border-radius:var(--radius-md)}.variance-item.highlight{background:#ffffff40}.variance-label{display:block;font-size:var(--font-size-small);opacity:.9;margin-bottom:var(--spacing-sm)}.variance-value{display:block;font-size:var(--font-size-h1);font-weight:var(--font-weight-bold);font-family:Courier New,monospace}.variance-breakdown{margin-top:var(--spacing-sm);display:flex;flex-direction:column;gap:2px;font-size:var(--font-size-xs);font-family:Courier New,monospace;opacity:.85}.variance-note{text-align:center;font-size:var(--font-size-small);margin:0;opacity:.9}.summary-card.empty{text-align:center;padding:var(--spacing-2xl)}.file-info{color:var(--color-text-muted);font-size:var(--font-size-small);margin-bottom:var(--spacing-lg)}.no-data{color:var(--color-text-muted);font-size:var(--font-size-body);margin:var(--spacing-xl) 0}.time-breakdown{margin:var(--spacing-lg) 0}.time-item{display:flex;justify-content:space-between;padding:var(--spacing-sm) 0;border-bottom:1px solid var(--color-border)}.time-item:last-child{border-bottom:none}.time-item .label{color:var(--color-text-secondary);font-weight:var(--font-weight-medium)}.time-item .value{color:var(--color-text-primary);font-weight:var(--font-weight-semibold);font-family:Courier New,monospace;font-size:var(--font-size-body)}.total-time{margin-top:var(--spacing-lg);padding-top:var(--spacing-lg);border-top:2px solid var(--color-border);text-align:right;font-size:var(--font-size-body);color:var(--color-text-secondary)}.total-time strong{color:var(--color-text-primary);font-size:var(--font-size-h2);font-family:Courier New,monospace;margin-left:var(--spacing-md)}.grand-total-card{background:linear-gradient(135deg,var(--color-primary) 0%,var(--color-primary-hover) 100%);padding:var(--spacing-xl);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);text-align:center;color:#fff}.grand-total-card h2{margin:0 0 var(--spacing-md) 0;font-size:var(--font-size-h1);border:none}.grand-total-value{font-size:3rem;font-weight:var(--font-weight-bold);font-family:Courier New,monospace;margin:var(--spacing-md) 0;text-shadow:0 2px 4px rgba(0,0,0,.2)}.breakdown-toggle-section{margin-top:var(--spacing-md);border-top:1px dashed var(--color-border-dark);padding-top:var(--spacing-md)}.breakdown-toggle-btn{background:none;border:1px solid var(--color-border-dark);border-radius:var(--radius-sm);padding:var(--spacing-sm) var(--spacing-md);cursor:pointer;color:var(--color-text-secondary);font-size:var(--font-size-small);transition:all var(--transition-normal)}.breakdown-toggle-btn:hover{background:var(--color-background);border-color:var(--color-text-muted)}.breakdown-details{margin-top:var(--spacing-md);display:flex;flex-direction:column;gap:var(--spacing-md)}.breakdown-group{background:var(--color-background);border-radius:var(--radius-sm);padding:var(--spacing-md)}.breakdown-group h4{margin:0 0 var(--spacing-sm) 0;font-size:var(--font-size-small);color:var(--color-text-primary);border-bottom:1px solid var(--color-border);padding-bottom:var(--spacing-xs)}.breakdown-item{display:flex;justify-content:space-between;padding:var(--spacing-xs) 0;font-size:var(--font-size-small)}.breakdown-label{color:var(--color-text-secondary)}.breakdown-value{color:var(--color-text-primary);font-family:Courier New,monospace;font-weight:var(--font-weight-medium)}.overtime-validation{margin-top:var(--spacing-lg);padding-top:var(--spacing-lg);border-top:1px solid rgba(255,255,255,.3)}.overtime-validation h3{margin:0 0 var(--spacing-md) 0;font-size:var(--font-size-body);opacity:.95}.overtime-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--spacing-sm);margin-bottom:var(--spacing-md)}.overtime-item{text-align:center;padding:var(--spacing-sm);background:#ffffff1f;border-radius:var(--radius-sm)}.overtime-label{display:block;font-size:var(--font-size-xs);opacity:.85;margin-bottom:var(--spacing-xs)}.overtime-value{display:block;font-size:var(--font-size-body);font-weight:var(--font-weight-bold);font-family:Courier New,monospace}.overtime-badge{display:inline-block;padding:2px var(--spacing-sm);border-radius:var(--radius-sm);font-size:var(--font-size-xs);font-weight:var(--font-weight-bold);margin-left:var(--spacing-sm);font-family:sans-serif}.overtime-badge-excess{background:#ff0303d9;color:#fff}.overtime-badge-normal{background:#22c55ed9;color:#fff}.overtime-badge-shortage{background:#f59e0bd9;color:var(--color-text-primary)}.overtime-badge-no_overtime{background:#6c757db3;color:#fff}.overtime-bar-chart{display:flex;flex-direction:column;gap:var(--spacing-sm)}.overtime-bar-row{display:flex;align-items:center;gap:var(--spacing-sm)}.overtime-bar-label{width:36px;font-size:var(--font-size-xs);text-align:right;opacity:.85}.overtime-bar-track{flex:1;height:24px;background:#ffffff26;border-radius:var(--radius-sm);overflow:hidden}.overtime-bar{height:100%;border-radius:var(--radius-sm);min-width:2px;transition:width .5s ease}.overtime-bar-theoretical{background:#ffffff80}.overtime-bar-actual.overtime-bar-excess{background:#ff0303d9}.overtime-bar-actual.overtime-bar-normal{background:#22c55ed9}.overtime-bar-actual.overtime-bar-shortage{background:#f59e0bd9}.overtime-bar-actual.overtime-bar-no_overtime{background:#6c757d99}.overtime-bar-value{width:70px;font-size:var(--font-size-xs);font-family:Courier New,monospace;opacity:.9}.confirm-section{margin-top:var(--spacing-md);padding-top:var(--spacing-md);border-top:1px solid rgba(255,255,255,.15)}.confirmed-badge{display:inline-block;background:#22c55e33;color:var(--color-success);padding:var(--spacing-xs) 12px;border-radius:var(--radius-md);font-size:var(--font-size-small);margin-bottom:10px;border:1px solid rgba(34,197,94,.4)}.memo-section{margin-bottom:12px}.memo-label{display:block;font-size:var(--font-size-small);color:#fffc;margin-bottom:var(--spacing-xs)}.memo-input{width:100%;padding:var(--spacing-sm) 10px;border-radius:var(--radius-sm);border:1px solid rgba(255,255,255,.2);background:#ffffff1a;color:#fff;font-size:var(--font-size-small);resize:vertical;box-sizing:border-box}.memo-input::placeholder{color:#fff6}.memo-input:focus{outline:none;border-color:#ffffff80}.memo-actions{display:flex;align-items:center;gap:10px;margin-top:var(--spacing-sm)}.memo-save-btn{padding:var(--spacing-xs) var(--spacing-md);border-radius:var(--radius-sm);border:1px solid rgba(255,255,255,.3);background:#ffffff26;color:#fff;cursor:pointer;font-size:var(--font-size-small);transition:background var(--transition-normal)}.memo-save-btn:hover:not(:disabled){background:#ffffff40}.memo-save-btn:disabled{opacity:.5;cursor:not-allowed}.memo-saved-msg{color:var(--color-success);font-size:var(--font-size-small)}.confirm-actions{display:flex;gap:10px}.confirm-btn{padding:var(--spacing-sm) var(--spacing-lg);border-radius:var(--radius-sm);border:none;background:var(--color-success);color:#fff;cursor:pointer;font-size:var(--font-size-small);transition:background var(--transition-normal)}.confirm-btn:hover:not(:disabled){background:#16a34a}.confirm-btn:disabled{opacity:.5;cursor:not-allowed}.unconfirm-btn{padding:var(--spacing-sm) var(--spacing-lg);border-radius:var(--radius-sm);border:1px solid var(--color-warning);background:transparent;color:var(--color-warning);cursor:pointer;font-size:var(--font-size-small);transition:all var(--transition-normal)}.unconfirm-btn:hover:not(:disabled){background:#f59e0b26}.unconfirm-btn:disabled{opacity:.5;cursor:not-allowed}.analysis-report{min-height:100vh;background-color:var(--color-background);padding:var(--spacing-xl)}.report-header{display:flex;justify-content:space-between;align-items:center;background:var(--color-surface);padding:var(--spacing-md) var(--spacing-xl);border-radius:var(--radius-md);box-shadow:var(--shadow-md);margin-bottom:var(--spacing-lg)}.report-header h1{margin:0;color:var(--color-text-primary);font-size:var(--font-size-h1)}.btn-back{padding:var(--spacing-sm) var(--spacing-md);background:var(--color-primary);color:#fff;border:none;border-radius:var(--radius-sm);cursor:pointer;font-size:var(--font-size-small);font-weight:var(--font-weight-semibold);transition:background var(--transition-normal)}.btn-back:hover{background:var(--color-primary-hover)}.report-main{max-width:1200px;margin:0 auto}.report-filters{display:flex;gap:var(--spacing-lg);align-items:center;background:var(--color-surface);padding:var(--spacing-md) var(--spacing-xl);border-radius:var(--radius-md);box-shadow:var(--shadow-md);margin-bottom:var(--spacing-lg);flex-wrap:wrap}.report-filters label{display:flex;align-items:center;gap:var(--spacing-sm);font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.report-filters select,.report-filters input[type=month]{padding:var(--spacing-sm) 12px;border:1px solid var(--color-border-dark);border-radius:var(--radius-sm);font-size:var(--font-size-small)}.btn-display{padding:var(--spacing-sm) var(--spacing-lg);background:var(--color-primary);color:#fff;border:none;border-radius:var(--radius-sm);cursor:pointer;font-size:var(--font-size-small);font-weight:var(--font-weight-semibold);transition:background var(--transition-normal)}.btn-display:hover:not(:disabled){background:var(--color-primary-hover)}.btn-display:disabled{opacity:.5;cursor:not-allowed}.btn-csv-export{padding:var(--spacing-sm) var(--spacing-lg);background:var(--color-success);color:#fff;border:none;border-radius:var(--radius-sm);cursor:pointer;font-size:var(--font-size-small);font-weight:var(--font-weight-semibold);transition:background var(--transition-normal)}.btn-csv-export:hover{background:#059669}.btn-cancel{padding:var(--spacing-sm) var(--spacing-lg);background:var(--color-error);color:#fff;border:none;border-radius:var(--radius-sm);cursor:pointer;font-size:var(--font-size-small);font-weight:var(--font-weight-semibold);transition:background var(--transition-normal)}.btn-cancel:hover{background:#e00000}.progress-section{background:var(--color-surface);padding:var(--spacing-md) var(--spacing-xl);border-radius:var(--radius-md);box-shadow:var(--shadow-md);margin-bottom:var(--spacing-lg)}.progress-info{display:flex;justify-content:space-between;margin-bottom:var(--spacing-sm);font-size:var(--font-size-small);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary)}.progress-bar-track{width:100%;height:10px;background:var(--color-border);border-radius:var(--radius-full);overflow:hidden}.progress-bar-fill{height:100%;background:var(--color-primary);border-radius:var(--radius-full);transition:width var(--transition-slow)}.report-error{background:#fee2e2;color:var(--color-error);padding:var(--spacing-md);border-radius:var(--radius-sm);margin-bottom:var(--spacing-lg)}.report-chart-card{background:var(--color-surface);padding:var(--spacing-lg);border-radius:var(--radius-md);box-shadow:var(--shadow-md);margin-bottom:var(--spacing-lg)}.chart-container{height:400px;position:relative}.report-summary{background:var(--color-surface);padding:var(--spacing-lg) var(--spacing-xl);border-radius:var(--radius-md);box-shadow:var(--shadow-md)}.report-summary h2{margin:0 0 var(--spacing-md) 0;color:var(--color-text-primary);font-size:var(--font-size-h2)}.summary-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--spacing-md)}.summary-item{display:flex;flex-direction:column;padding:var(--spacing-md);background:var(--color-background);border-radius:var(--radius-sm);text-align:center}.summary-label{font-size:var(--font-size-small);color:var(--color-text-secondary);margin-bottom:var(--spacing-sm)}.summary-value{font-size:var(--font-size-h2);font-weight:var(--font-weight-bold);color:var(--color-text-primary)}.summary-value.prediction{color:#7c3aed}.summary-value.actual,.summary-value.variance-good{color:var(--color-success)}.summary-value.variance-over{color:var(--color-warning)}@media (max-width: 768px){.report-filters{flex-direction:column;align-items:stretch}.summary-grid{grid-template-columns:repeat(2,1fr)}.chart-container{height:300px}}.config-settings-container{min-height:100vh;background-color:var(--color-background)}.config-settings-header{position:sticky;top:0;z-index:var(--z-header);height:56px;background-color:var(--color-primary);display:flex;justify-content:space-between;align-items:center;padding:0 var(--spacing-lg)}.config-settings-header h1{margin:0;color:#fff;font-size:var(--font-size-h2);font-weight:var(--font-weight-bold)}.back-button{padding:var(--spacing-sm) var(--spacing-md);background:#fff;color:var(--color-primary);border:none;border-radius:var(--radius-sm);cursor:pointer;font-size:var(--font-size-small);font-weight:var(--font-weight-semibold);transition:all var(--transition-normal)}.back-button:hover{background:var(--color-primary-light)}.config-settings-content{max-width:1200px;margin:var(--spacing-lg) auto;padding:0 var(--spacing-lg) var(--spacing-lg)}.center-selector{background:#fff;padding:var(--spacing-md);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);display:flex;align-items:center;gap:var(--spacing-md);margin-bottom:var(--spacing-lg)}.center-selector label{font-weight:var(--font-weight-semibold);color:var(--color-text-primary);font-size:var(--font-size-small);white-space:nowrap}.center-selector select{flex:1;max-width:300px;padding:10px var(--spacing-md);border:1px solid var(--color-border-dark);border-radius:var(--radius-sm);font-size:var(--font-size-body)}.center-selector select:focus{outline:none;border-color:var(--color-primary);box-shadow:var(--shadow-focus)}.office-name{color:var(--color-text-muted);font-size:var(--font-size-small)}.error-message{background:#fee2e2;border:1px solid #fecaca;border-radius:var(--radius-sm);padding:var(--spacing-sm) var(--spacing-md);margin-bottom:var(--spacing-md);color:var(--color-error);font-size:var(--font-size-small)}.success-message{background:#dcfce7;border:1px solid #bbf7d0;border-radius:var(--radius-sm);padding:var(--spacing-sm) var(--spacing-md);margin-bottom:var(--spacing-md);color:var(--color-success);font-size:var(--font-size-small)}.loading{background:#fff;padding:var(--spacing-xl);border-radius:var(--radius-md);text-align:center;color:var(--color-text-muted);box-shadow:var(--shadow-sm)}.config-section{background:#fff;padding:var(--spacing-lg);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);margin-bottom:var(--spacing-md)}.config-section h2{margin:0 0 var(--spacing-md) 0;color:var(--color-text-primary);font-size:var(--font-size-h3);font-weight:var(--font-weight-semibold);padding-bottom:var(--spacing-sm);border-bottom:2px solid var(--color-primary)}.config-group{margin-bottom:var(--spacing-md);padding-bottom:var(--spacing-md);border-bottom:1px solid var(--color-border)}.config-group:last-child{margin-bottom:0;padding-bottom:0;border-bottom:none}.config-group h3{margin:0 0 var(--spacing-sm) 0;color:var(--color-primary);font-size:var(--font-size-small);font-weight:var(--font-weight-semibold);text-transform:uppercase;letter-spacing:.05em}.config-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--spacing-sm) var(--spacing-lg)}@media (max-width: 768px){.config-grid{grid-template-columns:1fr}}.config-row{display:flex;align-items:center;gap:var(--spacing-sm);padding:4px 0}.config-row label{flex:1;color:var(--color-text-secondary);font-size:var(--font-size-small);font-weight:var(--font-weight-normal);margin:0}.config-row input[type=number],.config-row input[type=text]{width:100px;padding:6px 8px;border:1px solid var(--color-border-dark);border-radius:var(--radius-sm);font-size:var(--font-size-small);text-align:right;font-family:Courier New,monospace}.config-row input[type=text]{width:150px;text-align:left}.config-row input:focus{outline:none;border-color:var(--color-primary);box-shadow:var(--shadow-focus)}.config-row input:disabled{background-color:#f8fafc;color:var(--color-text-muted);cursor:not-allowed}.config-row .unit{width:60px;color:var(--color-text-muted);font-size:var(--font-size-xs)}.action-buttons{display:flex;justify-content:center;gap:var(--spacing-md);margin-top:var(--spacing-lg);padding-top:var(--spacing-lg);border-top:1px solid var(--color-border)}.save-button{padding:var(--spacing-sm) var(--spacing-xl);background:var(--color-primary);color:#fff;border:none;border-radius:var(--radius-sm);cursor:pointer;font-size:var(--font-size-small);font-weight:var(--font-weight-semibold);transition:all var(--transition-normal)}.save-button:hover{background:var(--color-primary-hover)}.save-button:disabled{background:var(--color-text-muted);cursor:not-allowed}.reset-button{padding:var(--spacing-sm) var(--spacing-xl);background:#fff;color:var(--color-text-secondary);border:1px solid var(--color-border-dark);border-radius:var(--radius-sm);cursor:pointer;font-size:var(--font-size-small);font-weight:var(--font-weight-semibold);transition:all var(--transition-normal)}.reset-button:hover{background:var(--color-background)}.reset-button:disabled{color:var(--color-text-muted);cursor:not-allowed}.tooltip-label{position:relative;display:inline-flex;align-items:center;gap:4px}.tooltip-trigger{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;border:1px solid var(--color-text-muted);background:transparent;color:var(--color-text-muted);font-size:11px;font-weight:var(--font-weight-bold);cursor:pointer;padding:0;line-height:1;flex-shrink:0}.tooltip-trigger:hover{border-color:var(--color-primary);color:var(--color-primary)}.tooltip-bubble{position:absolute;left:0;bottom:calc(100% + 8px);background:var(--color-text-primary);color:#fff;padding:8px 28px 8px 10px;border-radius:var(--radius-sm);font-size:var(--font-size-xs);white-space:nowrap;z-index:10;box-shadow:var(--shadow-md, 0 4px 6px rgba(0,0,0,.1))}.tooltip-close{position:absolute;top:2px;right:4px;background:transparent;border:none;color:#ffffffb3;font-size:14px;cursor:pointer;padding:0 2px;line-height:1}.tooltip-close:hover{color:#fff}.admin-notice{text-align:center;padding:var(--spacing-md);color:var(--color-text-muted);font-size:var(--font-size-small);background:var(--color-background);border-radius:var(--radius-sm);margin-top:var(--spacing-lg)}.customer-summary{min-height:100vh;background-color:var(--color-background);padding:var(--spacing-xl)}.cs-header{display:flex;justify-content:space-between;align-items:center;background:var(--color-surface);padding:var(--spacing-md) var(--spacing-xl);border-radius:var(--radius-md);box-shadow:var(--shadow-md);margin-bottom:var(--spacing-lg)}.cs-header h1{margin:0;color:var(--color-text-primary);font-size:var(--font-size-h1)}.cs-filters{display:flex;gap:var(--spacing-lg);align-items:center;background:var(--color-surface);padding:var(--spacing-md) var(--spacing-xl);border-radius:var(--radius-md);box-shadow:var(--shadow-md);margin-bottom:var(--spacing-lg);flex-wrap:wrap}.cs-filters label{display:flex;align-items:center;gap:var(--spacing-sm);font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.cs-filters select,.cs-filters input[type=date],.cs-filters input[type=month]{padding:var(--spacing-sm) 12px;border:1px solid var(--color-border-dark);border-radius:var(--radius-sm);font-size:var(--font-size-small)}.period-toggle{display:flex;gap:0}.period-toggle button{padding:var(--spacing-sm) var(--spacing-md);border:1px solid var(--color-border-dark);background:var(--color-surface);cursor:pointer;font-size:var(--font-size-small);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);transition:all var(--transition-normal)}.period-toggle button:first-child{border-radius:var(--radius-sm) 0 0 var(--radius-sm)}.period-toggle button:last-child{border-radius:0 var(--radius-sm) var(--radius-sm) 0;border-left:none}.period-toggle button.active{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.btn-fetch{padding:var(--spacing-sm) var(--spacing-lg);background:var(--color-primary);color:#fff;border:none;border-radius:var(--radius-sm);cursor:pointer;font-size:var(--font-size-small);font-weight:var(--font-weight-semibold);transition:background var(--transition-normal)}.btn-fetch:hover:not(:disabled){background:var(--color-primary-hover)}.btn-fetch:disabled{opacity:.5;cursor:not-allowed}.cs-error{background:#fee2e2;color:var(--color-error);padding:var(--spacing-md);border-radius:var(--radius-sm);margin-bottom:var(--spacing-lg)}.cs-main{max-width:1400px;margin:0 auto}.cs-table-card{background:var(--color-surface);border-radius:var(--radius-md);box-shadow:var(--shadow-md);overflow:auto;max-height:calc(100vh - 220px);margin-bottom:var(--spacing-lg)}.cs-table{width:100%;border-collapse:collapse;font-size:var(--font-size-small)}.cs-table thead{position:sticky;top:0;z-index:10;background:var(--color-background)}.cs-table th{padding:var(--spacing-sm) var(--spacing-md);text-align:right;font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);border-bottom:2px solid var(--color-border);white-space:nowrap;background:var(--color-background)}.cs-table th:first-child{text-align:left}.cs-table th.group-header{text-align:center;border-bottom:1px solid var(--color-border);color:var(--color-text-primary);font-size:var(--font-size-body)}.cs-table td{padding:var(--spacing-sm) var(--spacing-md);text-align:right;border-bottom:1px solid var(--color-border);color:var(--color-text-primary)}.cs-table td:first-child{text-align:left;font-weight:var(--font-weight-medium)}.cs-table tr:hover{background:var(--color-background)}.cs-table .row-total{font-weight:var(--font-weight-bold);background:var(--color-background);border-top:2px solid var(--color-border-dark)}.cs-table .row-unregistered{color:var(--color-text-tertiary);font-style:italic}.cs-table .row-unregistered td{color:var(--color-text-tertiary)}.variance-positive{color:var(--color-primary)}.variance-negative{color:var(--color-error)}.cs-empty{text-align:center;padding:var(--spacing-xl);color:var(--color-text-secondary)}.row-clickable{cursor:pointer;transition:background var(--transition-normal)}.row-clickable:hover,.row-expanded{background:var(--color-background)}.expand-icon{display:inline-block;width:1.2em;font-size:.7em;color:var(--color-text-tertiary)}.row-employee-detail>td{padding:0;background:var(--color-background)}.emp-table{width:100%;border-collapse:collapse;font-size:var(--font-size-small);margin:var(--spacing-sm) 0}.emp-table th{padding:var(--spacing-xs) var(--spacing-md);text-align:right;font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);border-bottom:1px solid var(--color-border);font-size:.85em}.emp-table th:first-child{text-align:left;padding-left:var(--spacing-xl)}.emp-table td{padding:var(--spacing-xs) var(--spacing-md);text-align:right;border-bottom:1px solid var(--color-border);color:var(--color-text-primary)}.emp-table td:first-child{text-align:left;padding-left:var(--spacing-xl)}.emp-name{font-weight:var(--font-weight-medium)}.emp-total{font-weight:var(--font-weight-bold);border-top:1px solid var(--color-border-dark)}.emp-loading,.emp-empty{text-align:center;padding:var(--spacing-md);color:var(--color-text-secondary);font-size:var(--font-size-small)}.row-group-header{cursor:pointer;background:#f0f4f8;font-weight:var(--font-weight-semibold);border-top:2px solid var(--color-border);transition:background var(--transition-normal)}.row-group-header:hover{background:#e2e8f0}.row-group-header td{font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.group-count{margin-left:var(--spacing-sm);font-size:var(--font-size-xs);font-weight:var(--font-weight-normal);color:var(--color-text-secondary)}.row-group-child td:first-child{color:var(--color-text-secondary)}.cs-table th.section-start,.cs-table td.section-start{border-left:2px solid var(--color-border-dark)}@media (max-width: 768px){.cs-filters{flex-direction:column;align-items:stretch}}:root{--color-primary: #0ea5e9;--color-primary-hover: #0284c7;--color-primary-light: #e0f2fe;--color-success: #22c55e;--color-warning: #f59e0b;--color-error: #ff0303;--color-background: #f8fafc;--color-surface: #ffffff;--color-text-primary: #1e293b;--color-text-secondary: #64748b;--color-text-muted: #94a3b8;--color-border: #e2e8f0;--color-border-dark: #cbd5e1;--font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-size-h1: 1.5rem;--font-size-h2: 1.25rem;--font-size-h3: 1.125rem;--font-size-body: 1rem;--font-size-small: .875rem;--font-size-xs: .75rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 16px;--spacing-lg: 24px;--spacing-xl: 32px;--spacing-2xl: 48px;--radius-sm: 6px;--radius-md: 12px;--radius-lg: 16px;--radius-full: 9999px;--shadow-sm: 0 1px 2px rgba(0,0,0,.05);--shadow-md: 0 4px 6px rgba(0,0,0,.07);--shadow-lg: 0 10px 25px rgba(0,0,0,.1);--shadow-xl: 0 20px 40px rgba(0,0,0,.15);--shadow-focus: 0 0 0 3px rgba(14, 165, 233, .15);--shadow-focus-error: 0 0 0 3px rgba(255, 3, 3, .15);--transition-fast: .15s ease;--transition-normal: .2s ease;--transition-slow: .3s ease;--z-dropdown: 10;--z-sticky: 20;--z-header: 50;--z-modal: 100;--z-toast: 200;--z-tooltip: 300}*,*:before,*:after{box-sizing:border-box}body{margin:0;font-family:var(--font-family);font-size:var(--font-size-body);color:var(--color-text-primary);background-color:var(--color-background);line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:8px 16px;font-size:var(--font-size-small);font-weight:var(--font-weight-semibold);border-radius:var(--radius-sm);border:1px solid transparent;cursor:pointer;transition:all var(--transition-normal)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background-color:var(--color-primary);color:#fff;border-color:transparent}.btn-primary:hover:not(:disabled){background-color:var(--color-primary-hover)}.btn-primary:focus{box-shadow:var(--shadow-focus)}.btn-secondary{background-color:#fff;color:var(--color-primary);border-color:var(--color-primary)}.btn-secondary:hover:not(:disabled){background-color:var(--color-primary-light)}.btn-danger{background-color:var(--color-error);color:#fff;border-color:transparent}.btn-danger:hover:not(:disabled){background-color:#e00000}.btn-danger:focus{box-shadow:var(--shadow-focus-error)}.btn-text{background-color:transparent;color:var(--color-text-secondary);border:none}.btn-text:hover:not(:disabled){background-color:#0000000d;color:var(--color-primary)}.btn-ghost{background-color:transparent;color:var(--color-text-secondary);border:none;padding:8px}.btn-ghost:hover:not(:disabled){background-color:#f1f5f9;color:var(--color-text-primary)}.btn-sm{padding:4px 12px;font-size:var(--font-size-xs)}.btn-lg{padding:12px 24px;font-size:var(--font-size-body)}input[type=text],input[type=email],input[type=password],input[type=number],input[type=date],input[type=time],textarea,select{width:100%;padding:12px 16px;font-size:var(--font-size-body);color:var(--color-text-primary);background-color:#fff;border:1px solid var(--color-border-dark);border-radius:var(--radius-sm);outline:none;transition:all var(--transition-normal)}input:hover,textarea:hover,select:hover{border-color:var(--color-text-muted)}input:focus,textarea:focus,select:focus{border-color:var(--color-primary);box-shadow:var(--shadow-focus)}input:disabled,textarea:disabled,select:disabled{background-color:#f1f5f9;color:var(--color-text-muted);cursor:not-allowed}input.error,textarea.error,select.error{border-color:var(--color-error);background-color:#fef2f2}input.error:focus,textarea.error:focus,select.error:focus{box-shadow:var(--shadow-focus-error)}label{display:block;font-size:var(--font-size-small);font-weight:var(--font-weight-bold);color:#374151;margin-bottom:4px}label.required:after{content:" *";color:var(--color-error)}.card{background-color:#fff;border-radius:var(--radius-md);box-shadow:var(--shadow-md);overflow:hidden}.card-header{padding:var(--spacing-md) var(--spacing-lg);border-bottom:1px solid var(--color-border)}.card-title{font-size:var(--font-size-h3);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);margin:0}.card-body{padding:var(--spacing-lg)}.card-footer{padding:var(--spacing-md) var(--spacing-lg);border-top:1px solid var(--color-border);background-color:var(--color-background)}.badge{display:inline-flex;align-items:center;padding:2px 8px;font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);border-radius:var(--radius-full)}.badge-default{background-color:#f1f5f9;color:var(--color-text-secondary)}.badge-primary{background-color:var(--color-primary-light);color:var(--color-primary-hover)}.badge-success{background-color:#dcfce7;color:#16a34a}.badge-warning{background-color:#fef3c7;color:#d97706}.badge-error{background-color:#fee2e2;color:#dc2626}.table-container{overflow-x:auto;border-radius:var(--radius-md);box-shadow:var(--shadow-md)}table{width:100%;border-collapse:collapse;background-color:#fff}thead{background-color:var(--color-background)}th{padding:12px 16px;text-align:left;font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.05em;border-bottom:2px solid var(--color-border)}td{padding:16px;font-size:var(--font-size-small);color:var(--color-text-primary);border-bottom:1px solid var(--color-border)}tbody tr:hover{background-color:var(--color-background)}tbody tr:last-child td{border-bottom:none}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background-color:#00000080;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:var(--z-modal)}.modal{background-color:#fff;border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);width:100%;max-width:500px;max-height:90vh;overflow:hidden;animation:modal-enter .3s ease}@keyframes modal-enter{0%{opacity:0;transform:scale(.95) translateY(-10px)}to{opacity:1;transform:scale(1) translateY(0)}}.modal-header{padding:24px 24px 16px;border-bottom:1px solid var(--color-border)}.modal-title{font-size:var(--font-size-h2);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);margin:0}.modal-body{padding:var(--spacing-lg);overflow-y:auto}.modal-footer{padding:var(--spacing-md) var(--spacing-lg);border-top:1px solid var(--color-border);display:flex;justify-content:flex-end;gap:12px}.modal-close{position:absolute;top:16px;right:16px;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);color:var(--color-text-muted);cursor:pointer;transition:all var(--transition-normal);background:none;border:none}.modal-close:hover{background-color:#f1f5f9;color:var(--color-text-primary)}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.animate-fade-in{animation:fade-in .2s ease}@keyframes slide-up{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.animate-slide-up{animation:slide-up .3s ease}
