:root{--color-primary: #2563eb;--color-secondary: #64748b;--color-success: #10b981;--color-warning: #f59e0b;--color-error: #ef4444;--color-bg: #f8fafc;--color-surface: #ffffff;--color-border: #e2e8f0;--color-text: #1e293b;--color-text-secondary: #64748b;--spacing-xs: .5rem;--spacing-sm: 1rem;--spacing-md: 1.5rem;--spacing-lg: 2rem;--spacing-xl: 3rem;--border-radius: .5rem;--shadow: 0 1px 3px 0 rgba(0, 0, 0, .1), 0 1px 2px -1px rgba(0, 0, 0, .1);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -4px rgba(0, 0, 0, .1)}*{margin:0;padding:0;box-sizing:border-box}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-color:var(--color-bg);color:var(--color-text);line-height:1.6}.app-layout{min-height:100vh;display:flex;flex-direction:column}.header{background-color:var(--color-surface);border-bottom:1px solid var(--color-border);padding:var(--spacing-sm) 0;box-shadow:var(--shadow)}.header .container{max-width:1200px;margin:0 auto;padding:0 var(--spacing-md);display:flex;justify-content:space-between;align-items:center}.logo{font-size:1.5rem;font-weight:600;color:var(--color-primary)}.nav{display:flex;gap:var(--spacing-sm)}.nav-link{padding:var(--spacing-xs) var(--spacing-sm);text-decoration:none;color:var(--color-text-secondary);border-radius:var(--border-radius);transition:all .2s}.nav-link:hover{background-color:var(--color-bg);color:var(--color-text)}.nav-link.active{background-color:var(--color-primary);color:#fff}.main{flex:1;padding:var(--spacing-lg) 0}.container{max-width:1200px;margin:0 auto;padding:0 var(--spacing-md)}h1{font-size:2rem;font-weight:700;margin-bottom:var(--spacing-sm)}h2{font-size:1.5rem;font-weight:600;margin-bottom:var(--spacing-sm)}h3{font-size:1.25rem;font-weight:600}.subtitle{color:var(--color-text-secondary);margin-bottom:var(--spacing-md)}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-lg)}.controls{display:flex;gap:var(--spacing-sm)}.stats-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:var(--spacing-md);margin-bottom:var(--spacing-lg)}.stat-card{background-color:var(--color-surface);border-radius:var(--border-radius);padding:var(--spacing-md);box-shadow:var(--shadow)}.stat-card h3{color:var(--color-text-secondary);font-size:.875rem;font-weight:500;text-transform:uppercase;margin-bottom:var(--spacing-xs)}.stat-value{font-size:2.5rem;font-weight:700;color:var(--color-primary);margin-bottom:var(--spacing-xs)}.stat-label{color:var(--color-text-secondary);font-size:.875rem}.stat-details{color:var(--color-text-secondary);font-size:.875rem;margin-top:var(--spacing-xs)}.stats-summary{display:flex;gap:var(--spacing-lg);padding:var(--spacing-md);background-color:var(--color-surface);border-radius:var(--border-radius);margin-bottom:var(--spacing-md);box-shadow:var(--shadow)}.stat{display:flex;gap:var(--spacing-xs);align-items:baseline}.stat .stat-label{color:var(--color-text-secondary);font-size:.875rem}.stat .stat-value{font-size:1.5rem;font-weight:600;color:var(--color-text)}.summary-block{background-color:var(--color-surface);border-radius:var(--border-radius);padding:var(--spacing-md);margin-bottom:var(--spacing-lg);box-shadow:var(--shadow)}.summary-stats{display:flex;gap:var(--spacing-lg);margin-top:var(--spacing-md)}table{width:100%;background-color:var(--color-surface);border-radius:var(--border-radius);overflow:hidden;box-shadow:var(--shadow)}thead{background-color:var(--color-bg)}th{text-align:left;padding:var(--spacing-sm) var(--spacing-md);font-weight:600;color:var(--color-text-secondary);font-size:.875rem;text-transform:uppercase}td{padding:var(--spacing-sm) var(--spacing-md);border-top:1px solid var(--color-border)}tbody tr:hover{background-color:var(--color-bg)}tr.discrepancy{background-color:#fef2f2}tr.discrepancy:hover{background-color:#fee2e2}tr.discrepancy-warning{background-color:#fef3c7}tr.discrepancy-warning:hover{background-color:#fde68a}tr.discrepancy-critical{background-color:#fee2e2}tr.discrepancy-critical:hover{background-color:#fecaca}tr.clickable{cursor:pointer}.highlight{font-weight:600;color:var(--color-error)}.badge{display:inline-block;padding:.25rem .5rem;border-radius:.25rem;font-size:.75rem;font-weight:600;text-transform:uppercase}.badge-warning{background-color:#fef3c7;color:#92400e}.badge-OK_FACTURADO{background-color:#d1fae5;color:#065f46}.badge-PENDING_FACTURA{background-color:#dbeafe;color:#1e40af}.badge-DISCREPANCIA_COBRO_SIN_FACTURA{background-color:#fee2e2;color:#991b1b}.badge-paid{background-color:#d1fae5;color:#065f46}.badge-pending{background-color:#dbeafe;color:#1e40af}.badge-refunded{background-color:#f3f4f6;color:#374151}.badge-failed{background-color:#fee2e2;color:#991b1b}.badge-UNKNOWN{background-color:#f3f4f6;color:#6b7280}label{display:flex;flex-direction:column;gap:var(--spacing-xs);font-size:.875rem;font-weight:500;color:var(--color-text)}input[type=month],input[type=text],input[type=number],select{padding:var(--spacing-xs) var(--spacing-sm);border:1px solid var(--color-border);border-radius:var(--border-radius);font-size:.875rem;background-color:var(--color-surface);color:var(--color-text)}input:focus,select:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px #2563eb1a}.loading,.error,.no-data{padding:var(--spacing-lg);text-align:center;background-color:var(--color-surface);border-radius:var(--border-radius);box-shadow:var(--shadow)}.error{color:var(--color-error);background-color:#fef2f2}.no-data{color:var(--color-text-secondary);margin-top:var(--spacing-md)}.breakdown-table{background-color:var(--color-surface);border-radius:var(--border-radius);padding:var(--spacing-md);box-shadow:var(--shadow)}.breakdown-table h2{margin-bottom:var(--spacing-md)}.payment-detail{max-width:900px}.back-link{display:inline-block;color:var(--color-primary);text-decoration:none;margin-bottom:var(--spacing-sm);font-size:.875rem}.back-link:hover{text-decoration:underline}.payment-state{display:flex;gap:var(--spacing-xs)}.detail-section{background-color:var(--color-surface);border-radius:var(--border-radius);padding:var(--spacing-md);margin-bottom:var(--spacing-md);box-shadow:var(--shadow)}.detail-section h2{font-size:1.25rem;margin-bottom:var(--spacing-md);color:var(--color-text)}.detail-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:var(--spacing-md)}.detail-item{display:flex;flex-direction:column;gap:var(--spacing-xs)}.detail-label{font-size:.75rem;font-weight:600;text-transform:uppercase;color:var(--color-text-secondary);letter-spacing:.05em}.detail-value{font-size:1rem;color:var(--color-text)}.detail-section-alert{border-left:4px solid var(--color-error)}.detail-section-success{border-left:4px solid var(--color-success)}.alert{padding:var(--spacing-md);border-radius:var(--border-radius)}.alert p{margin-bottom:var(--spacing-xs)}.alert p:last-child{margin-bottom:0}.alert-error{background-color:#fef2f2;color:#991b1b}.alert-success{background-color:#f0fdf4;color:#166534}.badge-error{background-color:#fee2e2;color:#991b1b}tbody tr[style*="cursor: pointer"]:hover{background-color:var(--color-bg);transition:background-color .15s}.status-pending{color:#888}.status-running{color:#06c}.status-completed{color:#0c0}.status-failed{color:#c00}.error-details{background:#ffe6e6;border:1px solid #cc0000;padding:1rem;border-radius:4px;margin-top:1rem}.error-details pre{white-space:pre-wrap;word-wrap:break-word}.error-details h4{margin-bottom:.5rem;color:#c00}.error-details summary{cursor:pointer;margin-top:.5rem;font-weight:600}.job-status{margin-bottom:1rem}.sync-controls{background-color:var(--color-surface);border-radius:var(--border-radius);padding:var(--spacing-md);margin-bottom:var(--spacing-lg);box-shadow:var(--shadow)}.sync-buttons{display:flex;gap:var(--spacing-sm);margin-top:var(--spacing-md)}.sync-results{background-color:var(--color-surface);border-radius:var(--border-radius);padding:var(--spacing-md);box-shadow:var(--shadow)}.sync-results h3{margin-bottom:var(--spacing-md)}.stat-card.error{border-left:4px solid var(--color-error)}button{padding:var(--spacing-xs) var(--spacing-md);border:none;border-radius:var(--border-radius);background-color:var(--color-primary);color:#fff;font-size:.875rem;font-weight:500;cursor:pointer;transition:background-color .2s}button:hover:not(:disabled){background-color:#1d4ed8}button:disabled{background-color:var(--color-border);color:var(--color-text-secondary);cursor:not-allowed}.errors-section{margin-top:var(--spacing-md)}.btn-show-errors{background:#f0f0f0;border:1px solid #ccc;padding:.5rem 1rem;cursor:pointer;border-radius:4px;margin-top:.5rem;font-size:.875rem;color:var(--color-text)}.btn-show-errors:hover{background:#e0e0e0}.errors-list{margin-top:var(--spacing-md)}.errors-list h4{margin-bottom:var(--spacing-md);font-size:1.125rem;color:var(--color-text)}.errors-table{width:100%;border-collapse:collapse;margin-top:1rem;background-color:var(--color-surface)}.errors-table th,.errors-table td{padding:.5rem;border:1px solid #ddd;text-align:left}.errors-table th{background:#f5f5f5;font-weight:600;font-size:.875rem}.errors-table code{background:#f5f5f5;padding:.125rem .25rem;border-radius:3px;font-family:Courier New,monospace;font-size:.875rem}.errors-table details{cursor:pointer}.errors-table details summary{color:var(--color-primary);font-size:.875rem}.errors-table details pre{margin-top:.5rem;background:#f5f5f5;padding:.5rem;border-radius:3px;overflow-x:auto;font-size:.75rem}.error-type{padding:.25rem .5rem;border-radius:3px;font-size:.85rem;font-weight:600;display:inline-block}.error-type.missing_id{background:#ffe6e6;color:#c00}.error-type.parse_error,.error-type.invalid_amount{background:#fff4e6;color:#c60}.error-type.db_error{background:#f0f0f0;color:#666}.pagination{display:flex;justify-content:space-between;align-items:center;margin-top:1rem;padding:1rem;background:#f5f5f5;border-radius:4px}.pagination button{background:var(--color-surface);border:1px solid var(--color-border);padding:.5rem 1rem;border-radius:var(--border-radius);cursor:pointer;font-size:.875rem}.pagination button:hover:not(:disabled){background:var(--color-bg)}.pagination button:disabled{opacity:.5;cursor:not-allowed}.pagination span{font-size:.875rem;color:var(--color-text-secondary)}.sync-history{max-width:1200px;margin:0 auto}.sync-history .page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-lg)}.btn-refresh{background-color:var(--color-surface);color:var(--color-primary);border:1px solid var(--color-primary);padding:var(--spacing-xs) var(--spacing-md);border-radius:var(--border-radius);cursor:pointer;font-size:.875rem;font-weight:500;transition:all .2s}.btn-refresh:hover{background-color:var(--color-primary);color:#fff}.history-stats{background-color:var(--color-surface);border-radius:var(--border-radius);padding:var(--spacing-md);margin-bottom:var(--spacing-lg);box-shadow:var(--shadow)}.stats-summary{margin:0;color:var(--color-text-secondary);font-size:.875rem}.history-grid{display:grid;gap:var(--spacing-lg)}.history-card{background-color:var(--color-surface);border-radius:var(--border-radius);padding:var(--spacing-md);box-shadow:var(--shadow)}.history-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-md);padding-bottom:var(--spacing-sm);border-bottom:2px solid var(--color-border)}.history-header h3{margin:0;font-size:1.25rem;color:var(--color-text)}.history-header .updated{font-size:.75rem;color:var(--color-text-secondary)}.history-table{width:100%;border-collapse:collapse}.history-table th,.history-table td{padding:var(--spacing-xs) var(--spacing-sm);text-align:left;border-bottom:1px solid var(--color-border)}.history-table th{font-weight:600;font-size:.875rem;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.05em}.history-table td{font-size:.875rem;color:var(--color-text)}.history-table td.number{text-align:right;font-variant-numeric:tabular-nums;font-weight:500}.history-table tr.section-header td{background-color:var(--color-bg);padding-top:var(--spacing-sm);padding-bottom:var(--spacing-xs);font-weight:600}.history-table tr.section-header .last-sync{font-weight:400;color:var(--color-text-secondary);font-size:.75rem}.empty-state{background-color:var(--color-surface);border-radius:var(--border-radius);padding:var(--spacing-xl);text-align:center;box-shadow:var(--shadow)}.empty-state p{margin:var(--spacing-sm) 0;color:var(--color-text-secondary)}.empty-state a{color:var(--color-primary);text-decoration:none;font-weight:500}.empty-state a:hover{text-decoration:underline}
