:root{--bg: #eaeefb;--panel: #f8f8ff;--panel-2: #f1f1fb;--border: #ece9f6;--text: #113a44;--text-muted: #6c8891;--primary: #8b5cf6;--primary-dark: #f8f8ff;--accent: #ec4899;--accent-dark: #be185d;--success: #10b981;--success-dark: #047857;--info: #3b82f6;--danger: #ef4444;--warning: #f59e0b;--gradient-brand: linear-gradient(135deg, #8b5cf6, #ec4899);--radius: 18px;--shadow: 0 10px 28px rgba(139, 92, 246, .1);--sidebar-w: 240px;color-scheme:light}*{box-sizing:border-box}html,body,#root{height:100%}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--text);font-family:Montserrat,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:14px}::selection{background:#8b5cf633;color:var(--text)}*{scrollbar-color:rgba(139,92,246,.35) rgba(139,92,246,.06);scrollbar-width:thin}::-webkit-scrollbar{width:12px;height:12px}::-webkit-scrollbar-track{background:#8b5cf60d}::-webkit-scrollbar-thumb{background:#8b5cf64d;border-radius:999px;border:3px solid transparent;background-clip:padding-box}::-webkit-scrollbar-thumb:hover{background:#8b5cf673;background-clip:padding-box}a{color:var(--primary)}button{font-family:inherit;cursor:pointer}.app-shell{display:flex;height:100vh;overflow:hidden}.sidebar{width:var(--sidebar-w);flex-shrink:0;background:var(--primary-dark);color:var(--text);display:flex;flex-direction:column;padding:16px 0;border-right:1px solid var(--border)}.sidebar-brand{padding:0 20px 16px;font-weight:700;font-size:16px;border-bottom:1px solid var(--border);margin-bottom:8px;display:flex;align-items:center;gap:10px}.sidebar nav{display:flex;flex-direction:column;gap:2px;overflow-y:auto;padding:4px 10px;flex:1}.sidebar-ayuda{margin:10px;padding:14px;border-radius:14px;background:var(--gradient-brand);color:#fff}.sidebar-ayuda strong{display:block;font-size:13px}.sidebar-ayuda p{font-size:11.5px;color:#ffffffd9;margin:4px 0 10px}.sidebar-ayuda .btn.small{display:block;text-align:center;background:#ffffff2e;box-shadow:none}.sidebar a{color:var(--text-muted);text-decoration:none;padding:9px 12px;font-size:13.5px;border-radius:10px;transition:background .12s,color .12s}.sidebar a:hover{background:#8b5cf612;color:var(--text)}.sidebar a.active{background:var(--gradient-brand);color:#fff;font-weight:600;box-shadow:0 6px 16px #8b5cf64d}.main-area{flex:1;min-width:0;height:100%;display:flex;flex-direction:column;overflow:hidden}.topbar{flex-shrink:0;background:var(--bg);border-bottom:1px solid var(--border);padding:12px 20px;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.topbar select,.topbar .btn{font-size:13px}.topbar-search{position:relative;min-width:220px}.topbar-search input{padding-left:36px;background:var(--panel);border-radius:999px}.topbar-search .icono-lupa{position:absolute;left:13px;top:50%;transform:translateY(-50%);color:var(--text-muted);pointer-events:none}.topbar-search-resultados{position:absolute;z-index:30;top:calc(100% + 4px);left:0;right:0;background:var(--panel);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow);overflow:hidden}.topbar-search-resultados a{display:block;padding:9px 14px;font-size:13px;color:var(--text);text-decoration:none}.topbar-search-resultados a:hover{background:var(--panel-2)}.topbar-icon-btn{position:relative;width:38px;height:38px;border-radius:50%;border:1px solid var(--border);background:var(--panel);display:flex;align-items:center;justify-content:center;font-size:15px;color:var(--text-muted);flex-shrink:0}.topbar-icon-btn .badge-num{position:absolute;top:-4px;right:-4px;min-width:16px;height:16px;padding:0 3px;border-radius:999px;background:var(--danger);color:#fff;font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center}.topbar-perfil{display:flex;align-items:center;gap:10px}.topbar-avatar{width:36px;height:36px;border-radius:50%;background:var(--gradient-brand);color:#fff;font-weight:700;font-size:13px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.topbar-perfil .nombre{font-size:13px;font-weight:700;line-height:1.3}.topbar-perfil .rol{font-size:11.5px;color:var(--text-muted)}.content{padding:20px;flex:1;overflow-y:auto;overflow-x:auto}.hamburger{display:none;background:none;border:none;font-size:20px;color:var(--text)}.app-footer{padding:10px 20px;text-align:center;font-size:11px;color:var(--text-muted);border-top:1px solid var(--border)}.login-footer{margin-top:16px;text-align:center;font-size:11px;color:var(--text-muted)}@media (max-width: 860px){.sidebar{position:fixed;inset:0 auto 0 0;z-index:40;transform:translate(-100%);transition:transform .2s ease}.sidebar.open{transform:translate(0)}.hamburger{display:block}.content{padding:14px}}.card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px;margin-bottom:16px}.card h2,.card h3{margin-top:0}.grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.stat{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px 18px;position:relative;transition:box-shadow .15s,border-color .15s}.stat .label{color:var(--text-muted);font-size:12px;text-transform:uppercase;letter-spacing:.03em}.stat .value{font-size:22px;font-weight:700;margin-top:6px}.stat-icono{position:absolute;top:16px;right:16px;width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:700}.dash-row-2-1{display:grid;grid-template-columns:2fr 1fr;gap:16px;margin-bottom:16px}.dash-row-1-1{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px}.dash-row-3{display:grid;grid-template-columns:1.5fr 1fr 1fr;gap:16px;margin-bottom:16px}.dash-row-1-1-1{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px;margin-bottom:16px}@media (max-width: 1080px){.dash-row-3,.dash-row-1-1-1{grid-template-columns:1fr 1fr}}@media (max-width: 860px){.dash-row-2-1,.dash-row-1-1,.dash-row-3,.dash-row-1-1-1{grid-template-columns:1fr}}.dash-periodo{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:16px}.dash-periodo>span{font-size:12.5px;color:var(--text-muted);white-space:nowrap}.dash-periodo .btn.small{border-radius:999px}.dash-toggle{display:inline-flex;background:var(--panel-2);border-radius:999px;padding:3px;gap:2px}.dash-toggle button{border:none;background:none;padding:5px 14px;border-radius:999px;font-size:12.5px;font-weight:600;color:var(--text-muted)}.dash-toggle button.activo{background:var(--gradient-brand);color:#fff}.dash-tag{font-size:10.5px;font-weight:700;padding:2px 9px;border-radius:999px;background:var(--panel-2);color:var(--text-muted);white-space:nowrap}.dash-flecha{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:13px;flex-shrink:0}.dash-panel-item{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--border)}.dash-panel-item:last-child{border-bottom:none}.dash-panel-dot{width:9px;height:9px;border-radius:999px;flex-shrink:0}.dash-panel-avatar{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:#fff;flex-shrink:0}.dash-panel-item .nombre{flex:1;font-size:13.5px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dash-panel-item .detalle{font-size:12px;color:var(--text-muted)}.dash-donut-card{display:flex;flex-direction:column;align-items:center;text-align:center}.dash-card-destacada{background:var(--gradient-brand);color:#fff;box-shadow:0 14px 30px #8b5cf64d}.dash-card-destacada h3{color:#fff}.dash-card-destacada .dash-panel-item{border-bottom-color:#fff3}.dash-card-destacada .nombre{color:#ffffffeb}.dash-card-destacada .detalle{color:#fff;font-weight:600}.dash-card-destacada .btn.secondary{background:#ffffff29;color:#fff;border-color:#ffffff4d}.dash-card-destacada .btn.secondary:hover{background:#ffffff42}.dash-donut-leyenda{display:flex;gap:14px;margin-top:12px;flex-wrap:wrap;justify-content:center;font-size:12px;color:var(--text-muted)}.dash-donut-leyenda span{display:inline-flex;align-items:center;gap:5px}.dash-donut-leyenda i{width:8px;height:8px;border-radius:999px;display:inline-block}.stat .value.negativo{color:var(--danger)}.stat .value.positivo{color:var(--success)}.dash-alert{display:flex;align-items:center;justify-content:space-between;gap:12px;background:#f59e0b1a;border:1px solid rgba(245,158,11,.25);color:#92610a;padding:12px 16px;border-radius:var(--radius);margin-bottom:16px;font-size:13px;flex-wrap:wrap}.dash-alert a{color:#92610a;font-weight:700;text-decoration:none;white-space:nowrap}.dash-alert a:hover{text-decoration:underline}.dash-hero{display:grid;grid-template-columns:1.3fr 1fr;gap:16px;margin-bottom:16px}@media (max-width: 760px){.dash-hero{grid-template-columns:1fr}}.dash-hero-main{background:linear-gradient(160deg,rgba(139,92,246,.1),var(--panel) 55%);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:22px 24px;display:flex;flex-direction:column;justify-content:center}.dash-hero-main .label{color:var(--text-muted);font-size:13px;text-transform:uppercase;letter-spacing:.04em}.dash-hero-main .value{font-size:38px;font-weight:800;margin-top:6px;line-height:1.1}.dash-hero-main .value.negativo{color:var(--danger)}.dash-hero-breakdown{display:flex;gap:18px;margin-top:14px;flex-wrap:wrap;font-size:12.5px;color:var(--text-muted)}.dash-hero-breakdown strong{color:var(--text);font-weight:600}.dash-hero-side{display:grid;gap:16px;grid-template-rows:1fr 1fr}.delta-badge{display:inline-flex;align-items:center;gap:3px;font-size:11px;font-weight:700;padding:2px 7px;border-radius:999px;margin-left:8px;vertical-align:middle}.delta-badge.up{background:#10b9811f;color:var(--success)}.delta-badge.down{background:#ef44441f;color:var(--danger)}.dash-detalle summary{cursor:pointer;font-weight:700;font-size:15px;padding:2px 0;color:var(--text)}.dash-detalle summary::marker{color:var(--primary)}.dash-detalle[open] summary{margin-bottom:14px}.dash-detalle+.dash-detalle{margin-top:12px}table{width:100%;border-collapse:collapse;font-size:13px}th,td{text-align:left;padding:10px;border-bottom:1px solid var(--border);white-space:nowrap}th{color:var(--text-muted);font-weight:600;font-size:11.5px;text-transform:uppercase;letter-spacing:.02em}tr:hover td{background:#8b5cf609}.table-wrap{overflow-x:auto}.scroll-espejo{overflow-x:auto;overflow-y:hidden;height:14px;margin-bottom:2px;display:none}.scroll-espejo>div{height:1px}.form-grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}label{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--text-muted)}input,select,textarea{font-family:inherit;font-size:14px;padding:9px 11px;border:1px solid var(--border);border-radius:10px;background:var(--panel-2);color:var(--text);width:100%}input::placeholder,textarea::placeholder{color:var(--text-muted)}input:focus,select:focus,textarea:focus{outline:2px solid var(--primary);outline-offset:1px;border-color:var(--primary)}select option{background:#fff;color:var(--text)}.btn{display:inline-flex;align-items:center;gap:6px;padding:9px 16px;border-radius:10px;border:none;background:var(--gradient-brand);color:#fff;font-size:13.5px;font-weight:700;box-shadow:0 6px 16px #8b5cf640;transition:filter .12s,opacity .12s}.btn:hover{filter:brightness(1.06)}.btn.secondary{background:var(--panel);color:var(--text);border:1px solid var(--border);box-shadow:none}.btn.secondary:hover{background:var(--panel-2)}.btn.danger{background:var(--danger);color:#fff;box-shadow:0 6px 16px #ef444440}.btn.small{padding:5px 11px;font-size:12.5px}.btn:disabled{opacity:.5;cursor:not-allowed}.badge{display:inline-block;padding:3px 10px;border-radius:999px;font-size:11.5px;font-weight:600}.badge.ok{background:#10b9811f;color:var(--success)}.badge.warn{background:#f59e0b1f;color:var(--warning)}.badge.danger{background:#ef44441f;color:var(--danger)}.badge.info{background:#3b82f61f;color:var(--info)}.badge.muted{background:#8884a01f;color:var(--text-muted)}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--border);margin-bottom:16px;flex-wrap:wrap}.tabs button{background:none;border:none;padding:8px 14px;font-size:13.5px;color:var(--text-muted);border-bottom:2px solid transparent}.tabs button.active{color:var(--primary);border-color:var(--primary);font-weight:600}.error-box{background:#ef444414;color:#b91c1c;padding:10px 14px;border-radius:10px;font-size:13px;margin-bottom:12px}.ok-box{background:#10b9811a;color:var(--success-dark);padding:10px 14px;border-radius:10px;font-size:13px;margin-bottom:12px}.center-screen{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:20px;position:relative;overflow:hidden;background:radial-gradient(480px circle at 12% 15%,rgba(139,92,246,.16),transparent 60%),radial-gradient(520px circle at 88% 85%,rgba(236,72,153,.14),transparent 60%),var(--bg)}.auth-card{width:100%;max-width:380px;padding:36px 30px 30px;text-align:center;position:relative;z-index:1;border-top:4px solid transparent;border-image:var(--gradient-brand) 1}.auth-card label{text-align:left}.auth-card h2{font-size:19px}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.spread{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}.muted{color:var(--text-muted)}.mt-0{margin-top:0}.brand-gradient-text{background:var(--gradient-brand);-webkit-background-clip:text;background-clip:text;color:transparent;font-weight:800}.acerca-hero{text-align:center;padding:24px 16px}.acerca-hero .wordmark{font-size:26px;letter-spacing:.02em}.acerca-hero .tagline{color:var(--text-muted);font-style:italic;margin-top:4px}.acrostico-grid{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.acrostico-chip{display:flex;gap:12px;align-items:flex-start}.acrostico-letra{flex-shrink:0;width:36px;height:36px;border-radius:50%;background:var(--gradient-brand);color:#fff;font-weight:800;display:flex;align-items:center;justify-content:center;font-size:15px}.acrostico-chip .principio{font-weight:700;color:var(--primary)}.acrostico-chip .descripcion{color:var(--text-muted);font-size:12.5px}.servicios-grid{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.servicio-card{border:1px solid var(--border);border-radius:var(--radius);padding:14px;background:var(--panel);border-top:3px solid var(--primary)}.servicio-card h4{margin:0 0 4px;color:var(--primary)}.servicio-card p{margin:0;color:var(--text-muted);font-size:12.5px}
