:root{
  --plum:#4f2d68;--purple:#674582;--lilac:#8f6cad;--soft:#f5f0f8;--soft2:#fbf9fc;--ink:#292331;--muted:#746d7b;--line:#e6ddec;--white:#fff;--danger:#a93f55;--ok:#39755e;--warning:#9a6b22;
  --shadow:0 12px 34px rgba(62,39,78,.10);--radius:18px;
}
*{box-sizing:border-box}html,body{margin:0;padding:0;background:#f6f3f8;color:var(--ink);font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif}body{min-height:100vh}
a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}.app-shell{min-height:100vh;display:flex}.sidebar{width:268px;background:linear-gradient(180deg,#432359 0%,#5c3974 54%,#4c2c64 100%);color:#fff;position:fixed;left:0;top:0;bottom:0;z-index:40;padding:22px 16px;display:flex;flex-direction:column;box-shadow:14px 0 40px rgba(44,25,58,.14)}.brand{display:flex;gap:12px;align-items:center;padding:5px 7px 24px}.brand img{width:46px;height:46px;flex:none}.brand strong{font-size:15px;line-height:1.15;display:block}.brand small{opacity:.72;font-size:11px}.sidebar nav{display:flex;flex-direction:column;gap:5px;overflow:auto}.sidebar nav a{padding:12px 14px;border-radius:12px;color:rgba(255,255,255,.86);font-weight:650;font-size:14px}.sidebar nav a:hover,.sidebar nav a.active{background:rgba(255,255,255,.14);color:#fff}.nav-section{font-size:10px;text-transform:uppercase;letter-spacing:.12em;opacity:.58;margin:18px 12px 5px}.sidebar-user{margin-top:auto;padding:16px 12px 4px;border-top:1px solid rgba(255,255,255,.14);display:grid;gap:2px}.sidebar-user span{font-size:13px;font-weight:700}.sidebar-user small{font-size:11px;opacity:.68}.sidebar-user a{font-size:12px;margin-top:8px;color:#f5ddff}.main{margin-left:268px;min-width:0;width:calc(100% - 268px)}.topbar{height:68px;position:sticky;top:0;z-index:30;background:rgba(250,248,251,.92);backdrop-filter:blur(15px);border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 26px;justify-content:space-between}.topbar-title{font-weight:800;display:flex;align-items:center;gap:9px}.dot{width:10px;height:10px;border-radius:50%;background:var(--lilac);box-shadow:0 0 0 6px rgba(143,108,173,.13)}.topbar-user{font-size:13px;color:var(--muted)}.menu-btn{display:none;border:0;background:var(--soft);border-radius:10px;padding:9px 11px;font-size:18px}.content{padding:28px;max-width:1600px;margin:0 auto}.page-head{display:flex;align-items:end;justify-content:space-between;gap:16px;margin-bottom:22px}.page-head h1{margin:0;font-size:28px;letter-spacing:-.03em}.page-head p{margin:5px 0 0;color:var(--muted);font-size:14px}.card{background:var(--white);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px}.grid{display:grid;gap:18px}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}.stat{padding:20px}.stat small{display:block;color:var(--muted);font-weight:650;margin-bottom:8px}.stat strong{font-size:30px;letter-spacing:-.03em}.stat .sub{font-size:12px;color:var(--muted);margin-top:6px}.quick-actions{display:flex;gap:10px;flex-wrap:wrap}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;border:1px solid transparent;border-radius:11px;padding:10px 14px;font-weight:750;font-size:13px;cursor:pointer;transition:.18s ease}.btn-primary{background:var(--plum);color:#fff}.btn-primary:hover{background:#3f2355}.btn-soft{background:var(--soft);color:var(--plum);border-color:#e2d4ea}.btn-danger{background:#fff2f4;color:var(--danger);border-color:#f0ccd4}.btn-outline{background:#fff;color:var(--purple);border-color:#d8c8e1}.btn-sm{padding:7px 10px;font-size:12px}.form-section{margin-bottom:22px}.form-section h2{font-size:15px;margin:0 0 14px;color:var(--plum)}.form-grid{display:grid;grid-template-columns:repeat(12,1fr);gap:14px}.field{grid-column:span 4;min-width:0}.field.half{grid-column:span 6}.field.full{grid-column:1/-1}.field.quarter{grid-column:span 3}.field label{display:block;font-size:12px;font-weight:750;margin:0 0 6px;color:#4f4756}.field input,.field select,.field textarea{width:100%;border:1px solid #d9cfdf;border-radius:11px;background:#fff;padding:11px 12px;color:var(--ink);outline:none;min-height:43px}.field textarea{min-height:88px;resize:vertical}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--lilac);box-shadow:0 0 0 4px rgba(143,108,173,.12)}.actions-row{display:flex;gap:10px;justify-content:flex-end;margin-top:18px;flex-wrap:wrap}.alert{padding:13px 15px;border-radius:12px;margin-bottom:16px;font-size:13px;font-weight:650}.alert.success{background:#edf8f3;color:#2d684f;border:1px solid #cfe8dc}.alert.error{background:#fff0f2;color:#934256;border:1px solid #efcfd6}.filter-bar{display:grid;grid-template-columns:minmax(210px,2fr) repeat(2,minmax(150px,1fr)) auto;gap:10px;align-items:end}.filter-bar input,.filter-bar select{width:100%;border:1px solid #d9cfdf;border-radius:11px;padding:10px 12px;background:#fff}.advanced{margin-top:12px}.advanced summary{cursor:pointer;color:var(--purple);font-weight:750;font-size:13px}.advanced .form-grid{margin-top:14px}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:14px;background:#fff}.data-table{width:100%;border-collapse:separate;border-spacing:0;min-width:1200px}.data-table th{position:sticky;top:0;background:#f0e8f5;color:#4a3158;text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.04em;padding:11px 10px;border-bottom:1px solid #d9cbe2;white-space:nowrap}.data-table td{font-size:12.5px;padding:11px 10px;border-bottom:1px solid #eee8f1;vertical-align:top;max-width:260px}.data-table tr:hover td{background:#fcfafd}.actions-cell{display:flex;gap:6px;white-space:nowrap}.empty{text-align:center;padding:34px;color:var(--muted)}.badge{display:inline-flex;align-items:center;padding:5px 8px;border-radius:999px;font-size:11px;font-weight:800;background:var(--soft);color:var(--purple)}.badge.yes{background:#efe7f5;color:#5a3374}.badge.no{background:#f1eff2;color:#6d6770}.detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:14px;overflow:hidden}.detail-item{background:#fff;padding:14px}.detail-item.full{grid-column:1/-1}.detail-item small{display:block;color:var(--muted);font-size:11px;font-weight:750;margin-bottom:5px}.detail-item div{font-size:14px;white-space:pre-wrap}.chart-box{min-height:310px}.toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:end}.toolbar .field{grid-column:auto;min-width:160px}.permission-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.check-card{border:1px solid var(--line);border-radius:12px;padding:11px;background:#fcfafd}.check-card label{display:flex;gap:8px;align-items:center;font-size:13px}.login-body{min-height:100vh;background:radial-gradient(circle at 20% 15%,#efe5f5 0,#f7f3f9 34%,#f1ebf5 100%);display:grid;place-items:center;padding:20px}.login-card{width:min(440px,100%);background:rgba(255,255,255,.96);border:1px solid #e2d8e8;border-radius:26px;padding:30px;box-shadow:0 24px 70px rgba(63,35,81,.16)}.login-brand{text-align:center;margin-bottom:24px}.login-brand img{width:72px}.login-brand h1{font-size:24px;margin:12px 0 4px}.login-brand p{margin:0;color:var(--muted);font-size:13px}.login-card .field{margin-bottom:14px}.privacy-note{font-size:11px;color:var(--muted);line-height:1.45;margin-top:14px}.mobile-overlay{display:none}.mini-muted{font-size:11px;color:var(--muted)}
@media(max-width:1100px){.grid-4{grid-template-columns:repeat(2,1fr)}.field{grid-column:span 6}.field.quarter{grid-column:span 6}.permission-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:900px){.sidebar{transform:translateX(-102%);transition:.2s ease;width:min(82vw,300px)}.sidebar.open{transform:translateX(0)}.main{margin-left:0;width:100%}.menu-btn{display:inline-flex}.topbar{padding:0 16px}.topbar-user{display:none}.content{padding:18px 14px 84px}.mobile-overlay.show{display:block;position:fixed;inset:0;background:rgba(28,18,34,.34);z-index:35}.page-head{align-items:flex-start;flex-direction:column}.page-head h1{font-size:24px}.filter-bar{grid-template-columns:1fr 1fr}.filter-bar>div:first-child{grid-column:1/-1}}
@media(max-width:620px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr}.field,.field.half,.field.full,.field.quarter{grid-column:1}.card{padding:15px;border-radius:15px}.filter-bar{grid-template-columns:1fr}.filter-bar>div:first-child{grid-column:auto}.detail-grid{grid-template-columns:1fr}.detail-item.full{grid-column:1}.permission-grid{grid-template-columns:1fr}.actions-row{justify-content:stretch}.actions-row .btn{flex:1}.quick-actions .btn{flex:1 1 45%}.stat strong{font-size:27px}}
@media print{.sidebar,.topbar,.no-print,.mobile-overlay{display:none!important}.main{margin:0;width:100%}.content{padding:0}.card{box-shadow:none;border:0;padding:0}@page{size:letter landscape;margin:8mm}body{background:white}.data-table{min-width:0;font-size:7pt}.data-table th,.data-table td{font-size:6.5pt;padding:3px 4px}.page-head{margin-bottom:8px}.page-head h1{font-size:14pt}.page-head p{font-size:8pt}}

/* v2: secciones de captura, desplazamiento de tablas y gráficas sin dependencias externas */
.section-panel{background:#fbf8fd;border:1px solid #eadff0;border-radius:15px;padding:16px;margin-bottom:18px}
.section-panel h2{display:flex;align-items:center;gap:8px;margin-bottom:14px}
.section-panel h2:before{content:"";width:7px;height:7px;border-radius:50%;background:var(--lilac);box-shadow:0 0 0 4px rgba(143,108,173,.10)}
.table-scroll-top{overflow-x:auto;overflow-y:hidden;height:18px;margin:0 0 7px;border:1px solid var(--line);border-radius:9px;background:#faf7fc;scrollbar-gutter:stable}
.table-scroll-top>div{height:1px}
.drag-scroll{cursor:grab;scrollbar-gutter:stable}
.drag-scroll.is-dragging{cursor:grabbing;user-select:none}
.drag-scroll::-webkit-scrollbar,.table-scroll-top::-webkit-scrollbar{height:13px}
.drag-scroll::-webkit-scrollbar-thumb,.table-scroll-top::-webkit-scrollbar-thumb{background:#bca7c9;border-radius:999px;border:3px solid #f7f2fa}
.drag-scroll::-webkit-scrollbar-track,.table-scroll-top::-webkit-scrollbar-track{background:#f7f2fa}
.chart-title{font-size:15px;margin:0 0 18px;color:var(--plum)}
.native-chart{height:280px;display:flex;align-items:stretch;gap:10px;overflow-x:auto;padding:8px 4px 0}
.chart-column{min-width:58px;flex:1;display:grid;grid-template-rows:22px 1fr 35px;align-items:end;text-align:center}
.chart-number{font-size:12px;font-weight:800;color:var(--purple);align-self:center}
.chart-track{height:100%;min-height:170px;border-bottom:1px solid #d9cde1;display:flex;align-items:flex-end;justify-content:center;background:linear-gradient(to top,rgba(143,108,173,.035),transparent)}
.chart-bar{width:min(42px,70%);min-height:8px;background:linear-gradient(180deg,#9a75b7,#5b3a72);border-radius:8px 8px 2px 2px;box-shadow:0 5px 14px rgba(91,58,114,.12)}
.chart-label{font-size:10px;color:var(--muted);line-height:1.2;padding-top:7px;white-space:nowrap}
.horizontal-chart{display:flex;flex-direction:column;gap:13px}
.hchart-row{display:grid;grid-template-columns:minmax(100px,160px) 1fr;gap:10px;align-items:center}
.hchart-label{font-size:11px;color:#544b59;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hchart-track{height:24px;background:#f3edf6;border-radius:999px;overflow:hidden;border:1px solid #eadff0}
.hchart-bar{height:100%;min-width:26px;background:linear-gradient(90deg,#8f6cad,#5b3a72);border-radius:999px;display:flex;align-items:center;justify-content:flex-end;padding-right:8px;color:#fff;font-size:10px;font-weight:800}
@media(max-width:620px){.section-panel{padding:13px}.native-chart{height:240px}.hchart-row{grid-template-columns:95px 1fr}.table-scroll-top{height:20px}}
@media print{
  @page{size:letter landscape;margin:7mm}
  body{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .section-panel{border:0;padding:0;background:#fff}
  .native-chart{height:210px;overflow:visible}
  .chart-track{min-height:130px}
  .horizontal-chart{gap:8px}
  .hchart-row{grid-template-columns:120px 1fr}
  .print-record .detail-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .print-record .detail-item{padding:7px}
  .print-record .detail-item small{font-size:7pt}
  .print-record .detail-item div{font-size:8pt}
}

/* v3: trazabilidad de capturas, modificaciones y registros eliminados */
.required-mark{color:#9a3f62;font-weight:900}
.field-help{font-size:11px;color:var(--muted);margin-top:6px;line-height:1.4}
.modification-reason{background:#f7f0fa;border:1px solid #dfcfe8;border-radius:15px;padding:16px;margin-top:20px}
.modification-reason h2{margin-top:0}
.audit-cell{display:flex;flex-direction:column;gap:3px;min-width:150px}
.audit-cell strong{font-size:12px;color:#4b3159}
.audit-cell span{font-size:11px;color:var(--muted)}
.change-summary{min-width:220px;max-width:380px;white-space:normal;line-height:1.35}
.section-title{font-size:15px;margin:0 0 14px;color:var(--plum)}
.history-list{display:flex;flex-direction:column;gap:14px}
.history-item{border:1px solid #e6dbe9;border-radius:14px;padding:14px;background:#fcfafd;break-inside:avoid}
.history-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:10px}
.history-head>div{display:flex;flex-direction:column;gap:3px}
.history-head strong{font-size:13px;color:#3f284c}
.history-head span{font-size:11px;color:var(--muted)}
.history-reason{background:#fff;border:1px solid #eee5f1;border-radius:11px;padding:10px 12px;margin-bottom:10px}
.history-reason small{display:block;font-weight:800;color:#6c5777;margin-bottom:4px}
.history-reason div{font-size:12.5px;white-space:pre-wrap}
.history-table{min-width:700px}
.history-table th,.history-table td{white-space:normal;max-width:none}
.page-head.compact{margin-bottom:14px}.page-head.compact h2{margin:0;font-size:20px}
.deleted-detail{margin-top:18px}
@media(max-width:620px){.change-summary{min-width:180px}.history-item{padding:11px}.history-head{flex-direction:column}.modification-reason{padding:13px}}
@media print{
  @page{size:letter landscape;margin:7mm}
  .history-item{padding:7px;border-color:#bbb;background:#fff}
  .history-table{min-width:0!important;table-layout:fixed}
  .history-table th,.history-table td{font-size:6.5pt!important;padding:3px!important}
  .deleted-detail{margin-top:8px}
}

/* V4 - Historial administrativo del sistema */
.history-filters{display:grid;grid-template-columns:repeat(5,minmax(140px,1fr));gap:12px;align-items:end}.history-filters .field{grid-column:auto}.history-filters .history-search{grid-column:span 2}.history-filter-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:end}.history-card{padding-top:14px}.history-table-note{margin-bottom:10px}.system-history-table{min-width:1650px}.system-history-table .nowrap{white-space:nowrap}.system-history-table .history-details{min-width:280px;max-width:420px;white-space:normal}.event-badge{display:inline-flex;align-items:center;padding:5px 8px;border-radius:999px;font-size:11px;font-weight:800;white-space:nowrap}.event-access{background:#eee6f5;color:#54306d}.event-action{background:#f4eff7;color:#5d3a79}.event-security{background:#fff0f2;color:#963e55}
@media(max-width:1100px){.history-filters{grid-template-columns:repeat(2,minmax(0,1fr))}.history-filters .history-search{grid-column:1/-1}.history-filter-actions{grid-column:1/-1}}
@media(max-width:640px){.history-filters{grid-template-columns:1fr}.history-filters .history-search,.history-filter-actions{grid-column:1}.history-filter-actions .btn{flex:1}}
@media print{.system-history-table{min-width:0;font-size:8px}.system-history-table th,.system-history-table td{padding:4px 5px;font-size:8px}.event-badge{padding:2px 4px;font-size:7px}.history-card{box-shadow:none;border:0;padding:0}.history-table-note{display:none}}
