@import"https://fonts.googleapis.com/css2?family=DM+Serif+Display&family=IBM+Plex+Mono:wght@400;500&family=IBM+Plex+Sans:wght@300;400;500;600&display=swap";*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{height:100%}body{height:100%;min-height:100vh;-webkit-font-smoothing:antialiased}svg{display:block}button{cursor:pointer;border:none;background:none;font:inherit}input,select{font:inherit}:root{--color-bg: #f8f9fa;--color-surface: #ffffff;--color-surface-alt: #f1f3f5;--color-surface-hover:#e9ecef;--color-border: #dee2e6;--color-border-strong: #ced4da;--color-text-primary: #1a1a2e;--color-text-secondary: #495057;--color-text-muted: #868e96;--color-text-inverse: #ffffff;--color-brand: #e63946;--color-brand-dark: #c1121f;--color-brand-soft: #fff1f2;--color-accent: #1971c2;--color-accent-dark: #1864ab;--color-accent-soft: #e7f5ff;--color-success: #2f9e44;--color-success-soft: #ebfbee;--color-warning: #e67700;--color-danger: #e63946;--color-grid: rgba(0,0,0,.06);--color-axis: #868e96;--sp-1: .25rem;--sp-2: .5rem;--sp-3: .75rem;--sp-4: 1rem;--sp-5: 1.25rem;--sp-6: 1.5rem;--sp-8: 2rem;--sp-10: 2.5rem;--sp-12: 3rem;--font-body: "IBM Plex Sans", system-ui, sans-serif;--font-display: "DM Serif Display", "Georgia", serif;--font-mono: "IBM Plex Mono", "Courier New", monospace;--font-size-xs: .6875rem;--font-size-sm: .75rem;--font-size-base: .875rem;--font-size-md: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.375rem;--font-size-2xl: 1.75rem;--font-size-3xl: 2.5rem;--font-size-kpi: 3rem;--sidebar-width: 220px;--header-height: 56px;--page-max-width: 1440px;--radius-sm: 4px;--radius: 8px;--radius-lg: 12px;--shadow-card: 0 1px 3px rgba(26, 26, 46, .06), 0 1px 2px rgba(26, 26, 46, .04);--shadow-card-hover: 0 4px 12px rgba(26, 26, 46, .1), 0 2px 4px rgba(26, 26, 46, .06);--shadow-dropdown: 0 8px 24px rgba(26, 26, 46, .12);--transition-fast: .12s ease;--transition-base: .2s ease}body{font-family:var(--font-body);font-size:var(--font-size-base);color:var(--color-text-secondary);background:var(--color-bg);line-height:1.5}.app{display:flex;flex-direction:column;min-height:100vh}.header{height:var(--header-height);background:var(--color-surface);border-bottom:1px solid var(--color-border);display:flex;align-items:center;padding:0 var(--sp-6);gap:var(--sp-6);position:sticky;top:0;z-index:100;box-shadow:0 1px 0 var(--color-border)}.header-brand{display:flex;align-items:center;gap:var(--sp-3);text-decoration:none;flex-shrink:0}.header-logo{width:28px;height:28px;background:var(--color-brand);border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;color:#fff;font-size:var(--font-size-sm);font-weight:600}.header-title{font-size:var(--font-size-base);font-weight:600;color:var(--color-text-primary);white-space:nowrap}.header-subtitle{font-size:var(--font-size-xs);color:var(--color-text-muted);margin-top:1px}.header-nav{display:flex;gap:var(--sp-1);margin-left:auto}.header-tab{padding:var(--sp-2) var(--sp-4);border-radius:var(--radius);font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-muted);text-decoration:none;transition:all var(--transition-fast);border:1px solid transparent}.header-tab:hover{background:var(--color-surface-alt);color:var(--color-text-secondary)}.header-tab.active{background:var(--color-brand-soft);color:var(--color-brand);border-color:#e6394633;font-weight:600}.header-badge{margin-left:var(--sp-6);font-size:var(--font-size-xs);color:var(--color-text-muted);font-family:var(--font-mono);white-space:nowrap}.main{display:flex;flex:1;min-height:0}.sidebar{width:var(--sidebar-width);flex-shrink:0;background:var(--color-surface);border-right:1px solid var(--color-border);padding:var(--sp-5) var(--sp-4);display:flex;flex-direction:column;gap:var(--sp-5);overflow-y:auto}.sidebar-section-title{font-size:var(--font-size-xs);font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-muted);margin-bottom:var(--sp-2)}.filter-group{display:flex;flex-direction:column;gap:var(--sp-2)}.filter-label{font-size:var(--font-size-xs);font-weight:500;color:var(--color-text-secondary)}.filter-select{width:100%;padding:var(--sp-2) var(--sp-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);font-size:var(--font-size-xs);color:var(--color-text-secondary);appearance:none;cursor:pointer;transition:border-color var(--transition-fast);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath d='M2 4l4 4 4-4' stroke='%23868e96' fill='none' stroke-width='1.5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center;padding-right:28px}.filter-select:focus{outline:none;border-color:var(--color-accent);box-shadow:0 0 0 3px #1971c21f}.filter-checkboxes{display:flex;flex-direction:column;gap:var(--sp-1)}.filter-checkbox-item{display:flex;align-items:center;gap:var(--sp-2);cursor:pointer;padding:var(--sp-1) var(--sp-2);border-radius:var(--radius-sm);transition:background var(--transition-fast)}.filter-checkbox-item:hover{background:var(--color-surface-alt)}.filter-checkbox-item input[type=checkbox]{accent-color:var(--color-brand);width:13px;height:13px;cursor:pointer}.filter-checkbox-item span{font-size:var(--font-size-xs);color:var(--color-text-secondary)}.sidebar-reset{margin-top:auto;padding:var(--sp-2) var(--sp-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--font-size-xs);font-weight:500;color:var(--color-text-muted);background:var(--color-surface);transition:all var(--transition-fast);text-align:center}.sidebar-reset:hover{background:var(--color-surface-alt);color:var(--color-text-secondary);border-color:var(--color-border-strong)}.filter-count-badge{margin-left:auto;font-size:var(--font-size-xs);font-family:var(--font-mono);color:var(--color-text-muted);background:var(--color-surface-alt);padding:1px 6px;border-radius:10px}#page{flex:1;overflow-y:auto;padding:var(--sp-6);max-width:calc(var(--page-max-width) - var(--sidebar-width))}.page-section{margin-bottom:var(--sp-6)}.page-section-title{font-size:var(--font-size-xs);font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-muted);margin-bottom:var(--sp-4);padding-left:var(--sp-1);border-left:3px solid var(--color-brand);padding-left:var(--sp-3)}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);overflow:hidden;transition:box-shadow var(--transition-base)}.card:hover{box-shadow:var(--shadow-card-hover)}.card-header{padding:var(--sp-4) var(--sp-5);border-bottom:1px solid var(--color-border);display:flex;align-items:baseline;gap:var(--sp-3)}.card-title{font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-primary)}.card-subtitle{font-size:var(--font-size-xs);color:var(--color-text-muted)}.card-body{padding:var(--sp-5)}.kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--sp-4);margin-bottom:var(--sp-6)}.kpi-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--sp-5);box-shadow:var(--shadow-card);position:relative;overflow:hidden;transition:box-shadow var(--transition-base)}.kpi-card:hover{box-shadow:var(--shadow-card-hover)}.kpi-card:after{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--kpi-accent, var(--color-brand))}.kpi-label{font-size:var(--font-size-xs);font-weight:600;text-transform:uppercase;letter-spacing:.07em;color:var(--color-text-muted);margin-bottom:var(--sp-2)}.kpi-value{font-family:var(--font-display);font-size:var(--font-size-kpi);line-height:1;color:var(--color-text-primary);margin-bottom:var(--sp-2)}.kpi-trend{font-size:var(--font-size-xs);font-weight:500;display:flex;align-items:center;gap:var(--sp-1)}.kpi-trend.up{color:var(--color-success)}.kpi-trend.down{color:var(--color-danger)}.kpi-trend.neutral{color:var(--color-text-muted)}.kpi-icon{position:absolute;top:var(--sp-4);right:var(--sp-4);width:32px;height:32px;border-radius:var(--radius-sm);background:var(--kpi-accent-soft, var(--color-brand-soft));display:flex;align-items:center;justify-content:center;font-size:14px;color:var(--kpi-accent, var(--color-brand))}.chart-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-4);margin-bottom:var(--sp-4)}.chart-full{margin-bottom:var(--sp-4)}.chart-grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-4)}.chart-container{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);overflow:hidden}.chart-container .chart-head{padding:var(--sp-4) var(--sp-5) var(--sp-3);display:flex;align-items:flex-start;justify-content:space-between}.chart-head-left h3{font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-primary)}.chart-head-left p{font-size:var(--font-size-xs);color:var(--color-text-muted);margin-top:2px}.chart-body{padding:0 var(--sp-4) var(--sp-4)}.chart-svg{width:100%;overflow:visible}.axis line,.axis path{stroke:var(--color-border-strong);stroke-width:1}.axis text{font-family:var(--font-body);font-size:11px;fill:var(--color-text-muted)}.grid line{stroke:var(--color-grid);stroke-width:1}.chart-tooltip{position:fixed;pointer-events:none;background:var(--color-text-primary);color:var(--color-text-inverse);border-radius:var(--radius);padding:var(--sp-3) var(--sp-4);font-size:var(--font-size-xs);font-family:var(--font-body);line-height:1.6;box-shadow:var(--shadow-dropdown);max-width:220px;z-index:9999;opacity:0;transition:opacity var(--transition-fast)}.chart-tooltip.visible{opacity:1}.tooltip-title{font-weight:600;font-size:var(--font-size-sm);margin-bottom:var(--sp-1);color:#fff}.tooltip-row{display:flex;justify-content:space-between;gap:var(--sp-4)}.tooltip-key{color:#ffffffa6}.tooltip-val{font-family:var(--font-mono);font-weight:500}.selection{fill:#e6394614;stroke:var(--color-brand);stroke-width:1;stroke-dasharray:3 2}.data-table{width:100%;border-collapse:collapse;font-size:var(--font-size-xs)}.data-table thead tr{border-bottom:2px solid var(--color-border);background:var(--color-surface-alt)}.data-table th{padding:var(--sp-2) var(--sp-4);font-weight:600;font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted);text-align:left;cursor:pointer;user-select:none;white-space:nowrap}.data-table th:hover{color:var(--color-text-secondary)}.data-table th.sorted{color:var(--color-brand)}.data-table th .sort-icon{margin-left:4px}.data-table tbody tr{border-bottom:1px solid var(--color-border);transition:background var(--transition-fast)}.data-table tbody tr:hover{background:var(--color-surface-alt)}.data-table td{padding:var(--sp-2) var(--sp-4);color:var(--color-text-secondary)}.data-table .mono{font-family:var(--font-mono);font-size:var(--font-size-xs)}.segment-badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:12px;font-size:var(--font-size-xs);font-weight:500}.prob-bar{display:flex;align-items:center;gap:var(--sp-2)}.prob-bar-track{flex:1;height:4px;background:var(--color-surface-alt);border-radius:2px;overflow:hidden}.prob-bar-fill{height:100%;background:var(--color-brand);border-radius:2px}.pagination{display:flex;align-items:center;justify-content:flex-end;gap:var(--sp-2);padding:var(--sp-3) var(--sp-4);border-top:1px solid var(--color-border)}.pagination-tam{display:inline-flex;align-items:center;gap:var(--sp-2);font-size:var(--font-size-xs);color:var(--color-text-muted)}.pagination-tam select{font-family:var(--font-mono);font-size:var(--font-size-xs);color:var(--color-text-secondary);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:3px 6px;cursor:pointer;transition:border-color var(--transition-fast)}.pagination-tam select:hover{border-color:var(--color-border-strong)}.pagination-info{font-size:var(--font-size-xs);color:var(--color-text-muted);margin-right:auto;font-family:var(--font-mono)}.pagination-btn{padding:var(--sp-1) var(--sp-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--font-size-xs);color:var(--color-text-secondary);background:var(--color-surface);transition:all var(--transition-fast)}.pagination-btn:hover:not(:disabled){background:var(--color-surface-alt);border-color:var(--color-border-strong)}.pagination-btn:disabled{opacity:.4;cursor:not-allowed}.legend{display:flex;flex-wrap:wrap;gap:var(--sp-3);font-size:var(--font-size-xs);color:var(--color-text-muted)}.legend-item{display:flex;align-items:center;gap:var(--sp-2)}.legend-swatch{width:10px;height:10px;border-radius:2px;flex-shrink:0}.chart-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:200px;color:var(--color-text-muted);font-size:var(--font-size-sm);gap:var(--sp-2)}.chart-error{padding:var(--sp-4);background:#fff5f5;border:1px solid #fcc;border-radius:var(--radius);font-size:var(--font-size-xs);color:#c1121f;font-family:var(--font-mono)}.swim-lane-label{font-size:11px;fill:var(--color-text-muted);font-family:var(--font-body)}.threshold-line{stroke:var(--color-text-muted);stroke-dasharray:4 3;stroke-width:1}.radar-grid{stroke:var(--color-border);fill:none}.radar-axis{stroke:var(--color-border-strong)}.radar-label{font-size:11px;fill:var(--color-text-secondary);font-family:var(--font-body)}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--color-border-strong);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--color-text-muted)}@media (max-width: 1200px){.kpi-grid{grid-template-columns:repeat(2,1fr)}.chart-grid-2{grid-template-columns:1fr}}@media print{.sidebar,.header-nav{display:none}.main{display:block}#page{padding:0}.card,.kpi-card,.chart-container{page-break-inside:avoid}}.kpi-grid--sobrio .kpi-value{font-family:var(--font-body);font-weight:650;letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-size:2.75rem}.kpi-grid--sobrio .kpi-label,.kpi-grid--sobrio .kpi-value{padding-right:0}.kpi-card{transition:box-shadow var(--transition-base),transform var(--transition-base),border-color var(--transition-base)}.kpi-card:hover{transform:translateY(-3px);border-color:var(--kpi-accent, var(--color-brand));box-shadow:0 12px 28px #0f172a21,0 2px 6px #0f172a14}.kpi-card:after{transition:height var(--transition-base)}.kpi-card:hover:after{height:5px}@media (prefers-reduced-motion: reduce){.kpi-card:hover{transform:none}}.info-btn{position:relative;flex:0 0 auto;width:30px;height:30px;display:grid;place-items:center;border:1px solid var(--color-border);border-radius:999px;background:var(--color-surface);color:var(--color-text-muted);cursor:pointer;transition:color .18s ease,border-color .18s ease,background .18s ease}.info-btn:hover,.info-btn:focus-visible{color:var(--color-text-primary);border-color:var(--color-text-muted);background:var(--color-surface-alt)}.info-btn svg{width:17px;height:17px;position:relative;z-index:1}.info-btn svg circle,.info-btn svg path{fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round}.info-pulso{position:absolute;inset:-1px;border-radius:999px;border:1px solid currentColor;animation:info-latido 2.2s ease-out infinite;pointer-events:none}@keyframes info-latido{0%{transform:scale(1);opacity:.55}70%{transform:scale(1.75);opacity:0}to{transform:scale(1.75);opacity:0}}.info-btn:hover .info-pulso{animation:none;opacity:0}@media (prefers-reduced-motion: reduce){.info-pulso{animation:none;opacity:.4}}.modal-capa[hidden]{display:none}.modal-capa{position:fixed;inset:0;z-index:200;display:grid;place-items:center;padding:24px;background:#0f172a73;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);opacity:0;transition:opacity .2s ease}.modal-capa.abierto{opacity:1}.modal-panel{position:relative;width:100%;max-width:560px;max-height:100%;overflow-y:auto;padding:28px 32px 30px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:0 24px 60px #0f172a47;transform:scale(.96);transition:transform .22s cubic-bezier(.2,.8,.3,1)}.modal-capa.abierto .modal-panel{transform:none}.modal-cuerpo h2{font-size:1.25rem;font-weight:650;letter-spacing:-.01em;line-height:1.25;color:var(--color-text-primary);margin-bottom:10px;padding-right:32px}.modal-cuerpo p{font-size:var(--font-size-base);line-height:1.6;color:var(--color-text-secondary)}.modal-cuerpo strong{color:var(--color-brand);font-weight:600}.modal-x{position:absolute;top:14px;right:14px;width:30px;height:30px;display:grid;place-items:center;border:1px solid var(--color-border);border-radius:999px;background:var(--color-surface);color:var(--color-text-muted);cursor:pointer;transition:color .18s ease,border-color .18s ease}.modal-x:hover{color:var(--color-text-primary);border-color:var(--color-text-muted)}.modal-x svg{width:15px;height:15px}.modal-x svg path{fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}.chart-svg .marcable{transition:opacity .2s ease}.chart-svg.con-marcado .marcable:not(.marcada){opacity:.13!important}.chart-svg.con-marcado .marcable.marcada{opacity:1!important}.chart-svg.con-marcado>g>.axis,.chart-svg.con-marcado>g>.grid,.chart-svg.con-marcado .radar-grid,.chart-svg.con-marcado .radar-axis,.chart-svg.con-marcado .radar-label,.chart-svg.con-marcado .swim-lane-label{opacity:.45;transition:opacity .2s ease}@media (prefers-reduced-motion: reduce){.chart-svg .marcable{transition:none}}.radar-svg{max-width:min(360px,100%);margin:0 auto}.canal-chip{display:inline-block;padding:2px 8px;border-radius:var(--radius-sm);border:1px solid var(--color-border);background:var(--color-surface-alt);font-size:var(--font-size-xs);color:var(--color-text-secondary);white-space:nowrap}.data-table tbody tr[data-id]{cursor:pointer;transition:opacity .18s ease,background .18s ease,box-shadow .18s ease}.data-table.con-marcadas tbody tr[data-id]{opacity:.32}.data-table.con-marcadas tbody tr.fila-marcada,.data-table tbody tr.fila-marcada{opacity:1;background:var(--color-brand-soft, rgba(230, 57, 70, .07));box-shadow:inset 3px 0 0 var(--color-brand)}.data-table.con-marcadas tbody tr[data-id]:hover{opacity:.7}@media (prefers-reduced-motion: reduce){.data-table tbody tr[data-id]{transition:none}}
