:root{--brand: #2a78d6;--brand-dark: #184f95;--brand-ink: #ffffff;--surface: #fcfcfb;--page: #f4f5f7;--border: rgba(11, 11, 11, .1);--text-primary: #0b0b0b;--text-secondary: #52514e;--text-muted: #898781;--good: #0ca30c;--good-bg: #e7f8e7;--bueno: #d9631f;--bueno-bg: #fdece0;--mejorar: #a67200;--mejorar-bg: #fdf1d6;--deficiente: #d03b3b;--deficiente-bg: #fbe6e6;--danger: #d03b3b;--shadow: 0 1px 2px rgba(11, 11, 11, .06), 0 4px 12px rgba(11, 11, 11, .06);--radius: 10px}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,sans-serif;background:var(--page);color:var(--text-primary);-webkit-font-smoothing:antialiased}button,input,select,textarea{font-family:inherit;font-size:14px}a{color:var(--brand);text-decoration:none}.app-shell{min-height:100%;display:flex;flex-direction:column}.topbar{background:linear-gradient(180deg,var(--brand-dark),var(--brand));color:var(--brand-ink);display:flex;align-items:center;gap:24px;padding:0 24px;height:60px;box-shadow:var(--shadow);position:sticky;top:0;z-index:20}.topbar-brand{font-weight:700;font-size:16px;white-space:nowrap;display:flex;align-items:center;gap:8px}.topbar-brand .badge-cca-logo{height:32px;padding:3px 8px;border-radius:8px;background:#fff;display:flex;align-items:center}.topbar-brand .badge-cca-logo img{height:100%;width:auto;display:block}.topbar-nav{display:flex;gap:4px;flex:1;overflow-x:auto}.topbar-nav a{color:#ffffffd9;padding:10px 14px;border-radius:8px;font-weight:600;font-size:13.5px;white-space:nowrap;transition:background .15s ease,color .15s ease}.topbar-nav a:hover{background:#ffffff1f;color:#fff}.topbar-nav a.active{background:#ffffff38;color:#fff}.topbar-user{display:flex;align-items:center;gap:10px;white-space:nowrap}.topbar-user .role-pill{background:#ffffff2e;padding:4px 10px;border-radius:999px;font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.topbar-user button{background:#ffffff24;border:none;color:#fff;padding:7px 12px;border-radius:8px;cursor:pointer;font-weight:600}.topbar-user button:hover{background:#ffffff3d}.page{flex:1;padding:28px 32px 60px;max-width:1200px;width:100%;margin:0 auto}.page-header{margin-bottom:20px}.page-header h1{margin:0 0 4px;font-size:22px}.page-header p{margin:0;color:var(--text-secondary);font-size:14px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px}.card+.card{margin-top:16px}.card{overflow-x:auto}.card-title{font-size:14px;font-weight:700;margin:0 0 14px;color:var(--text-primary)}.grid{display:grid;gap:16px}.grid-2{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.grid-3{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.grid-4{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.stat-tile{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px 18px}.stat-tile .label{font-size:12.5px;color:var(--text-secondary);font-weight:600;margin-bottom:6px}.stat-tile .value{font-size:28px;font-weight:800;color:var(--text-primary);line-height:1.1}.stat-tile .value.accent{color:var(--brand)}.stat-tile .value.good{color:var(--good)}.stat-tile .value.deficiente{color:var(--deficiente)}.bar-row{display:grid;grid-template-columns:140px 1fr 40px;align-items:center;gap:10px;font-size:13px;margin-bottom:10px}.bar-row .bar-label{color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bar-track{background:#eceef1;border-radius:999px;height:10px;overflow:hidden}.bar-fill{height:100%;background:var(--brand);border-radius:999px}.bar-row .bar-value{text-align:right;font-variant-numeric:tabular-nums;font-weight:700}.badge{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;border-radius:999px;font-size:12.5px;font-weight:700}.badge-excelente{background:var(--good-bg);color:var(--good)}.badge-bueno{background:var(--bueno-bg);color:var(--bueno)}.badge-mejorar{background:var(--mejorar-bg);color:var(--mejorar)}.badge-deficiente{background:var(--deficiente-bg);color:var(--deficiente)}.badge-neutral{background:#eceef1;color:var(--text-secondary)}table{width:100%;border-collapse:collapse;font-size:13.5px}thead th{text-align:left;font-size:11.5px;text-transform:uppercase;letter-spacing:.03em;color:var(--text-muted);border-bottom:1px solid var(--border);padding:8px 10px}tbody td{padding:10px;border-bottom:1px solid var(--border)}tbody tr:last-child td{border-bottom:none}tbody tr:hover{background:#2a78d60a}.field{margin-bottom:14px}.field label{display:block;font-size:12.5px;font-weight:700;color:var(--text-secondary);margin-bottom:5px}.field input,.field select,.field textarea{width:100%;padding:9px 11px;border:1px solid var(--border);border-radius:8px;background:#fff;color:var(--text-primary)}.field input:focus,.field select:focus,.field textarea:focus{outline:2px solid var(--brand);outline-offset:1px}.btn{display:inline-flex;align-items:center;gap:6px;padding:9px 16px;border-radius:8px;border:none;font-weight:700;font-size:13.5px;cursor:pointer;background:var(--brand);color:#fff}.btn:hover{background:var(--brand-dark)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-secondary{background:#eceef1;color:var(--text-primary)}.btn-secondary:hover{background:#dfe2e7}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover{background:#a92e2e}.btn-sm{padding:6px 10px;font-size:12.5px}.btn-row{display:flex;gap:10px;flex-wrap:wrap}.pill-group{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:18px}.pill{padding:8px 16px;border-radius:999px;border:1px solid var(--border);background:#fff;font-weight:700;font-size:13px;cursor:pointer;color:var(--text-secondary)}.pill:hover{background:#f1f3f5}.pill.active{background:var(--brand);border-color:var(--brand);color:#fff}.alert{padding:10px 14px;border-radius:8px;font-size:13.5px;margin-bottom:14px}.alert-error{background:var(--deficiente-bg);color:var(--deficiente)}.alert-success{background:var(--good-bg);color:var(--good)}.login-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at top,#eef3fb,var(--page));padding:20px}.login-card{background:var(--surface);border-radius:16px;box-shadow:var(--shadow);padding:36px;width:100%;max-width:380px}.login-card h1{font-size:20px;margin:0 0 4px;text-align:center}.login-card p.subtitle{text-align:center;color:var(--text-secondary);font-size:13.5px;margin:0 0 24px}.login-logo{display:block;max-width:220px;width:100%;height:auto;margin:0 auto 16px}.login-demo{margin-top:22px;border-top:1px solid var(--border);padding-top:16px;font-size:12px;color:var(--text-muted)}.login-demo table{font-size:12px}.login-demo td{padding:4px 6px}.zona-table-wrap{overflow-x:auto}.zona-table{min-width:900px}.zona-table th,.zona-table td{text-align:center}.zona-table th:first-child,.zona-table td:first-child{text-align:left;position:sticky;left:0;background:var(--surface)}.zona-table input{width:48px;padding:6px;text-align:center}.zona-table .total-cell{font-weight:800;color:var(--brand-dark)}.zona-table th.zona-exam-col{background:var(--brand-dark);color:#fff;border-left:2px solid var(--brand-dark)}.zona-table td.zona-exam-col{background:#1536690f;border-left:2px solid var(--brand-dark)}.zona-table-compact{min-width:700px;font-size:12px}.zona-table-compact th,.zona-table-compact td{padding:5px 8px}.profile-header{display:flex;gap:20px;align-items:center;margin-bottom:22px}.profile-photo{width:96px;height:96px;border-radius:16px;object-fit:cover;background:#eceef1;display:flex;align-items:center;justify-content:center;color:var(--text-muted);font-weight:800;font-size:28px;border:1px solid var(--border)}.profile-name{font-size:20px;font-weight:800;margin:0}.profile-sub{color:var(--text-secondary);font-size:13.5px;margin-top:2px}.empty-state{text-align:center;padding:40px 20px;color:var(--text-muted);font-size:13.5px}.loading{padding:40px;text-align:center;color:var(--text-muted)}@media (max-width: 720px){.topbar{padding:0 12px;gap:10px;height:52px}.topbar-brand{font-size:14px}.topbar-brand .badge-cca-logo{height:26px}.topbar-nav{gap:2px;-webkit-overflow-scrolling:touch}.topbar-nav a{padding:8px 10px;font-size:12.5px}.topbar-user{gap:6px}.topbar-user .role-pill,.topbar-user>span{display:none}.topbar-user button{padding:7px 10px;font-size:12.5px}.page{padding:16px 14px 40px}.page-header h1{font-size:19px}.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}.profile-header{flex-wrap:wrap}.login-card{padding:26px 22px}.btn-row{flex-direction:column;align-items:stretch!important}.btn-row>.field{max-width:none!important}}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0b0b0b73;display:flex;align-items:center;justify-content:center;padding:20px;z-index:50}.modal-card{background:var(--surface);border-radius:16px;box-shadow:var(--shadow);padding:28px;width:100%;max-width:520px;max-height:90vh;overflow-y:auto}.modal-card.modal-card-wide{max-width:680px}.modal-card .modal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:16px}.modal-card .modal-close{background:transparent;border:none;font-size:20px;line-height:1;cursor:pointer;color:var(--text-muted);padding:4px 8px}.detail-row{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid var(--border);font-size:13.5px}.detail-row .detail-label{color:var(--text-muted)}.detail-row .detail-value{font-weight:600;text-align:right}.badge-solvente{background:var(--good-bg);color:var(--good)}.badge-insolvente{background:var(--deficiente-bg);color:var(--deficiente)}
