:root{--bg:#0f172a;--panel:#0b1220;--muted:#94a3b8;--text:#e5e7eb;--accent:#22d3ee;--border:#1f2937;--ok:#22c55e;--warn:#f59e0b;--bad:#ef4444}
    *{box-sizing:border-box}
    body{margin:0;background:#0b1020;color:var(--text);font-family:Inter,system-ui,sans-serif}
    .wrap{max-width:1200px;margin:20px auto;padding:12px}
    header{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px}
    header img.logo{height:100px;object-fit:contain}
    .toolbar{display:flex;gap:8px;flex-wrap:wrap}
    button{background:#111827;border:1px solid var(--border);color:var(--text);padding:8px 12px;border-radius:10px;cursor:pointer}
    button.primary{background:linear-gradient(180deg,#1cbad1,#1599b3);border:none}

    .card{background:var(--panel);border:1px solid rgba(148,163,184,.15);border-radius:14px;padding:12px;margin-bottom:12px}
    .card h2{margin:0 0 10px;font-size:15px;color:#cbd5e1}
    .form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px}
    .form-grid label{display:flex;flex-direction:column;gap:6px;font-size:12px}
    .form-grid input,.form-grid select{background:#0a0f1d;border:1px solid var(--border);color:var(--text);border-radius:10px;padding:8px 10px;font-size:14px}
    .form-grid input:focus,.form-grid select:focus{outline:2px solid var(--accent)}
    .hint{font-size:11px;color:#aab4c3;margin-top:4px}

    .table-wrap{overflow:auto;border:1px solid #253046;border-radius:12px;max-height:60vh}
    table{min-width:100%;border-collapse:separate;border-spacing:0 6px;font-size:13px;table-layout:auto}
    thead th{position:sticky;top:0;background:#0b1424;border-bottom:1px solid #223;padding:8px;text-align:left}
    thead .group{background:#0a1222;color:#cbd5e1;text-transform:uppercase;font-size:11px;letter-spacing:.08em}
    tbody tr{background:#0c1426;border:1px solid rgba(148,163,184,.15)}
    tbody td{padding:8px;vertical-align:middle}
    td input,td select{width:100%;background:#071024;border:1px solid #182135;border-radius:8px;padding:8px 10px;color:#fff}
    td[data-col="inc"] input{width:auto;margin:0 auto;display:block}
    td input[data-key="fuente"]{min-width:140px}
    td input[data-key="direccion"]{min-width:210px}
    td input[data-key="area"],td input[data-key="piso"],td input[data-key="ant"]{min-width:80px}
    td input[data-key="precio"]{min-width:120px}
    td select[data-key="asc"],td select[data-key="vista"],td select[data-key="coch"],td select[data-key="estado"]{min-width:90px}
    .num{text-align:right}
    .info-icon{margin-left:4px;color:#94a3b8;cursor:help;font-size:12px}

    thead th[data-col],tbody td[data-col]{white-space:nowrap}
    thead th[data-col="inc"],tbody td[data-col="inc"]{text-align:center;width:64px}
    thead th[data-col="fuente"],tbody td[data-col="fuente"]{min-width:150px}
    thead th[data-col="direccion"],tbody td[data-col="direccion"]{min-width:220px}
    thead th[data-col="precio"],thead th[data-col="precioAdj"],thead th[data-col="pm2"],tbody td[data-col="precio"],tbody td[data-col="precioAdj"],tbody td[data-col="pm2"]{text-align:right}
    tbody td[data-col="precio"],tbody td[data-col="precioAdj"],tbody td[data-col="pm2"]{min-width:120px}
    tbody td[data-col="acciones"]{text-align:center;width:60px}
    tbody td[data-col="acciones"] button{min-width:36px}

    .col-ajustes,.group-ajustes{display:table-cell}
    .compact .col-ajustes{display:none}
    .compact .group-ajustes{display:none}
    .togglebar{display:flex;gap:8px;align-items:center;margin:8px 0}
    .chip{background:#0e162a;border:1px solid #24324a;padding:6px 10px;border-radius:999px;font-size:12px;cursor:pointer;color:#c9d3e2}
    .chip.active{background:#1b2740;border-color:#2f4163}

    /* Secciones del resumen */
    .summary-section{margin-bottom:16px}
    .section-title{margin:0 0 10px;font-size:14px;color:#cbd5e1;font-weight:600;text-transform:uppercase;letter-spacing:0.05em}
    
    /* Grid layouts para diferentes jerarquías */
    .summary{display:grid;gap:10px;margin-bottom:8px}
    .summary.primary{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px}
    .summary.secondary{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:10px}
    .summary.tertiary{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:8px}
    
    /* KPI Cards base */
    .kpi{background:#0b1220;border:1px solid #253046;border-radius:12px;padding:12px;position:relative;transition:all 0.2s ease}
    .kpi:hover{border-color:#3b82f6;transform:translateY(-1px)}
    
    /* Jerarquía de KPIs */
    .kpi.primary{background:#0d1424;border:2px solid #1d4ed8;padding:16px}
    .kpi.primary h3{font-size:13px;color:#ddd6fe;font-weight:600}
    .kpi.primary .val{font-size:24px;color:#e0e7ff;font-weight:800}
    
    .kpi.primary.critical{background:linear-gradient(135deg, #1e1b4b 0%, #312e81 100%);border-color:#6366f1;box-shadow:0 4px 12px rgba(99, 102, 241, 0.25)}
    .kpi.primary.critical .val{color:#a5b4fc;font-size:28px}
    
    /* KPIs normales */
    .kpi h3{margin:0 0 6px;font-size:12px;color:#aab4c3;font-weight:500}
    .kpi .val{font-weight:700;font-size:18px;color:#e5e7eb}
    
    /* KPIs terciarios (más pequeños) */
    .summary.tertiary .kpi{padding:10px}
    .summary.tertiary .kpi h3{font-size:11px}
    .summary.tertiary .kpi .val{font-size:16px}
    
    /* Colores semánticos para diferentes tipos de métricas */
    .kpi.profit .val{color:#22c55e}
    .kpi.profit{border-color:#166534}
    .kpi.loss .val{color:#ef4444}
    .kpi.loss{border-color:#991b1b}
    .kpi.warning .val{color:#f59e0b}
    .kpi.warning{border-color:#92400e}
    .kpi.neutral .val{color:#6b7280}
    
    /* Secciones colapsables */
    .collapsible .toggle-section{cursor:pointer;user-select:none;display:flex;align-items:center;justify-content:space-between}
    .collapsible .toggle-section:hover{color:#3b82f6}
    .toggle-icon{transition:transform 0.2s ease;font-size:12px}
    .collapsible.collapsed .toggle-icon{transform:rotate(-90deg)}
    .collapsible.collapsed .summary{display:none}
    .pill{display:inline-block;padding:6px 12px;border-radius:999px;font-size:13px;border:1px solid #2b374f;font-weight:600;text-transform:uppercase;letter-spacing:0.05em}
    .pill.ok{background:rgba(34,197,94,.15);border-color:rgba(34,197,94,.4);color:#22c55e}
    .pill.warn{background:rgba(245,158,11,.15);border-color:rgba(245,158,11,.4);color:#f59e0b}
    .pill.bad{background:rgba(239,68,68,.15);border-color:rgba(239,68,68,.4);color:#ef4444}
    .pill.neutral{background:rgba(107,114,128,.15);border-color:rgba(107,114,128,.4);color:#9ca3af}
    .analysis{white-space:pre-wrap;background:#0b1220;border:1px solid #253046;border-radius:12px;padding:12px;margin-top:10px;font-size:13px;color:#d6dee9}

    .charts{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}
    .chart-card{background:#0b1220;border:1px solid #253046;border-radius:12px;padding:12px;display:flex;min-height:320px}
    .chart-card canvas{flex:1;width:100%;height:100%;max-width:100%;min-height:0}
    .charts .chart-card:nth-child(3){grid-column:1/-1}
    @media (min-width:768px){
      .charts{grid-template-columns:repeat(2,minmax(0,1fr))}
    }

    .charts{display:grid;grid-template-columns:1fr;gap:16px}
    .charts canvas{display:block;width:100%;height:300px;max-width:100%;background:#0b1220;border:1px solid rgba(148,163,184,.18);border-radius:12px}


    .charts{display:grid;grid-template-columns:1fr;gap:16px}
    .charts canvas{width:100%;max-width:100%;min-height:300px}

    @media (min-width:768px){
      .charts{grid-template-columns:repeat(2,minmax(0,1fr))}
      .charts canvas:nth-of-type(3){grid-column:1/-1}
    }

    .charts{display:grid;grid-template-columns:1fr;gap:12px}
    @media (min-width:768px){
      .charts{grid-template-columns:repeat(2,minmax(0,1fr))}
    }
    .charts canvas{width:100%;max-width:100%}


    tbody tr.outlier{outline:1px solid rgba(245,158,11,.75);background:rgba(245,158,11,.08)}
    tbody tr.outlier td[data-col="pm2"]{color:#f59e0b;font-weight:800}

    /* Cabecera de impresión (oculta en pantalla) */
    .print-header{display:none;align-items:center;gap:20px;padding-bottom:16px;border-bottom:2px solid #1d4ed8;margin-bottom:20px}
    .print-header .logo{height:70px;object-fit:contain}
    .print-header-text{}
    .print-title-text{margin:0 0 4px;font-size:20pt;color:#0f172a;font-weight:800}
    .print-subtitle{margin:0;font-size:10pt;color:#475569}

    @media print{
      *{-webkit-print-color-adjust:exact;print-color-adjust:exact}
      body{background:white!important;color:#111!important;font-size:10pt;margin:0}
      .wrap{max-width:100%;margin:0;padding:12px}

      /* Elementos ocultos al imprimir */
      header,
      #card-param,
      .togglebar,
      .modal-overlay,
      th[data-col="inc"],td[data-col="inc"],
      th[data-col="acciones"],td[data-col="acciones"],
      #btn-clear,
      .collapsible .toggle-section .toggle-icon{display:none!important}

      /* Cabecera de impresión visible */
      .print-header{display:flex!important}

      /* Cards */
      .card{background:white!important;border:1px solid #cbd5e1!important;border-radius:8px;padding:12px;margin-bottom:10px;box-shadow:none}
      .card h2{color:#1e293b!important;font-size:12pt;border-bottom:1px solid #e2e8f0;padding-bottom:6px;margin-bottom:10px}

      /* Formulario en modo solo-lectura visual */
      .form-grid{gap:6px}
      .form-grid label{color:#475569!important;font-size:9pt}
      .form-grid input,.form-grid select{background:transparent!important;border:none!important;border-bottom:1px solid #e2e8f0!important;color:#0f172a!important;padding:2px 0!important;font-size:10pt;border-radius:0!important}
      .hint{color:#64748b!important}

      /* KPIs */
      .kpi{background:#f8fafc!important;border:1px solid #cbd5e1!important;border-radius:8px;transition:none}
      .kpi:hover{transform:none!important}
      .kpi h3{color:#475569!important;font-size:8pt}
      .kpi .val{color:#0f172a!important;font-size:14pt}
      .kpi.primary{background:#eff6ff!important;border:2px solid #bfdbfe!important}
      .kpi.primary h3{color:#1d4ed8!important}
      .kpi.primary .val{color:#1e3a8a!important;font-size:18pt}
      .kpi.primary.critical{background:#eef2ff!important;border-color:#c7d2fe!important;box-shadow:none!important}
      .kpi.primary.critical .val{color:#3730a3!important}
      .kpi.profit .val{color:#15803d!important}
      .kpi.profit{border-color:#bbf7d0!important}
      .kpi.loss .val{color:#b91c1c!important}
      .kpi.loss{border-color:#fecaca!important}
      .kpi.warning .val{color:#b45309!important}
      .kpi.warning{border-color:#fde68a!important}
      .section-title{color:#1e293b!important;border-bottom:1px solid #e2e8f0;padding-bottom:4px}

      /* Pills */
      .pill{border:1px solid #cbd5e1!important;background:#f1f5f9!important;color:#475569!important}
      .pill.ok{background:#dcfce7!important;border-color:#86efac!important;color:#15803d!important}
      .pill.warn{background:#fef9c3!important;border-color:#fde047!important;color:#b45309!important}
      .pill.bad{background:#fee2e2!important;border-color:#fca5a5!important;color:#b91c1c!important}

      /* Tabla de comparables */
      .table-wrap{max-height:none!important;overflow:visible!important;border:1px solid #cbd5e1!important;border-radius:8px}
      table{font-size:8pt}
      thead th{position:static!important;background:#f1f5f9!important;color:#334155!important;border-bottom:2px solid #cbd5e1!important;padding:6px 8px}
      thead .group{background:#e2e8f0!important;color:#475569!important}
      tbody tr{background:white!important}
      tbody td{color:#0f172a!important;padding:5px 8px;border-bottom:1px solid #f1f5f9}
      tbody tr.outlier{outline:1px solid #f59e0b!important;background:#fffbeb!important}
      tbody tr.outlier td[data-col="pm2"]{color:#b45309!important}
      td input,td select{background:transparent!important;border:none!important;color:#0f172a!important;font-size:8pt;padding:0!important;width:auto}
      .col-ajustes,.group-ajustes{display:table-cell!important}

      /* Análisis */
      .analysis{background:#f8fafc!important;border:1px solid #cbd5e1!important;color:#0f172a!important;font-size:9pt;line-height:1.6}

      /* Gráficos */
      .chart-card{background:white!important;border:1px solid #cbd5e1!important}
      .charts{grid-template-columns:repeat(2,1fr)!important;gap:8px}

      /* Saltos de página */
      #card-prop{page-break-after:avoid}
      #card-comp{page-break-before:always}
      #card-resumen{page-break-before:always}
      .summary-section{page-break-inside:avoid}
      .chart-card{page-break-inside:avoid}

      /* Secciones colapsadas se muestran al imprimir */
      .collapsible.collapsed .summary{display:grid!important}
    }

    /* Modales */
    .modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.65);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:1000;padding:16px}
    .modal-overlay[hidden]{display:none}
    .modal{background:#0d1424;border:1px solid #253046;border-radius:16px;padding:24px;width:100%;max-width:440px;box-shadow:0 20px 60px rgba(0,0,0,.6)}
    .modal.modal-sm{max-width:360px}
    .modal-title{margin:0 0 20px;font-size:16px;color:#e5e7eb;font-weight:700}
    .modal-body{display:flex;flex-direction:column;gap:14px;margin-bottom:20px}
    .modal-label{display:flex;flex-direction:column;gap:6px;font-size:12px;color:#94a3b8}
    .modal-input{background:#070e1f;border:1px solid #253046;color:#e5e7eb;border-radius:10px;padding:10px 12px;font-size:14px;width:100%}
    .modal-input:focus{outline:2px solid var(--accent)}
    .modal-confirm-text{margin:0 0 20px;font-size:14px;color:#cbd5e1;line-height:1.6}
    .modal-actions{display:flex;gap:8px;justify-content:flex-end}
    .modal-btn{padding:10px 18px;border-radius:10px;font-size:13px;cursor:pointer;border:1px solid #253046;background:#111827;color:#e5e7eb;transition:opacity .15s}
    .modal-btn:hover{opacity:.85}
    .modal-btn.primary{background:linear-gradient(180deg,#1cbad1,#1599b3);border:none;color:#fff}
    .modal-btn.danger{background:#7f1d1d;border-color:#991b1b;color:#fca5a5}
    .modal-list{display:flex;flex-direction:column;gap:8px;max-height:320px;overflow-y:auto;margin-bottom:16px}
    .modal-load-row{display:flex;justify-content:space-between;align-items:center;background:#0b1220;border:1px solid #253046;border-radius:10px;padding:10px 14px;gap:10px}
    .modal-load-row span{flex:1;font-size:13px;color:#cbd5e1}
    .modal-load-row small{color:#64748b;margin-left:6px;font-size:11px}
    .modal-load-row .row-actions{display:flex;gap:6px;flex-shrink:0}
    .btn-load-report{background:linear-gradient(180deg,#1cbad1,#1599b3);border:none;color:#fff;padding:6px 12px;border-radius:8px;font-size:12px;cursor:pointer}
    .btn-del-report{background:#0f172a;border:1px solid #7f1d1d;color:#f87171;padding:6px 10px;border-radius:8px;font-size:12px;cursor:pointer}
    .modal-empty{color:#64748b;font-size:13px;padding:8px 0;text-align:center}

    td input[data-key="fecha"]{min-width:130px}
    td input[data-key="url"]{min-width:180px}
    tbody td[data-col="score"].score-low{color:#f59e0b;font-weight:800}

    .section-actions{margin:8px 0 10px}
    button.danger{border-color:rgba(239,68,68,.45);color:#fecaca;background:rgba(239,68,68,.12)}
    thead th[data-col="acciones"],tbody td[data-col="acciones"]{position:sticky;right:0;background:#0b1424;z-index:2}
    tbody td[data-col="acciones"]{background:#0c1426}