@import"https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap";:root{--color-bg: rgb(13, 17, 23);--color-bg-surface: rgb(22, 28, 38);--color-bg-card: rgb(22, 28, 38);--color-bg-elevated: rgb(30, 38, 52);--color-accent: rgb(255, 0, 76);--color-accent-soft: rgb(210, 0, 63);--color-accent-glow: rgba(255, 0, 76, .28);--color-text: rgb(230, 237, 243);--color-text-muted: rgb(125, 139, 163);--color-text-faint: rgb(70, 85, 110);--color-border: rgba(255, 255, 255, .08);--color-border-soft: rgba(255, 255, 255, .04);--color-grid: rgb(22, 28, 38);--color-grid-line: rgba(255, 0, 76, .07);--color-success: #22c55e;--color-warning: #f59e0b;--color-danger: #ef4444;--color-info: #38bdf8;--color-role-admin: #f59e0b;--color-role-docente: #38bdf8;--color-role-student: #a78bfa;--color-role-investigador: #34d399;--font-family: "Inter", system-ui, -apple-system, sans-serif;--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-size-3xl: 1.875rem;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--radius-sm: .375rem;--radius-md: .625rem;--radius-lg: 1rem;--radius-xl: 1.5rem;--radius-full: 9999px;--shadow-sm: 0 1px 3px rgba(0,0,0,.5);--shadow-md: 0 4px 16px rgba(0,0,0,.5);--shadow-lg: 0 8px 32px rgba(0,0,0,.6);--shadow-accent: 0 0 24px var(--color-accent-glow);--transition-fast: .15s ease;--transition-normal: .25s ease;--transition-slow: .4s ease}[data-theme=light]{--color-bg: rgb(248, 249, 250);--color-bg-surface: rgb(255, 255, 255);--color-bg-card: rgb(255, 255, 255);--color-bg-elevated: rgb(240, 242, 245);--color-accent: rgb(237, 5, 77);--color-accent-soft: rgb(200, 0, 60);--color-accent-glow: rgba(237, 5, 77, .2);--color-text: rgb(13, 17, 23);--color-text-muted: rgb(80, 95, 120);--color-text-faint: rgb(150, 165, 185);--color-border: rgba(0, 0, 0, .09);--color-border-soft: rgba(0, 0, 0, .05);--color-grid: rgb(255, 255, 255);--color-grid-line: rgba(237, 5, 77, .07);--shadow-sm: 0 1px 3px rgba(0,0,0,.08);--shadow-md: 0 4px 16px rgba(0,0,0,.1);--shadow-lg: 0 8px 32px rgba(0,0,0,.12)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;scroll-behavior:smooth}body{font-family:var(--font-family);font-size:var(--font-size-base);color:var(--color-text);background-color:var(--color-bg);line-height:1.6;-webkit-font-smoothing:antialiased;min-height:100vh}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:var(--color-bg-surface)}::-webkit-scrollbar-thumb{background:var(--color-bg-elevated);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--color-accent-soft)}h1,h2,h3,h4,h5,h6{font-weight:700;line-height:1.25;color:var(--color-text)}p{color:var(--color-text-muted)}a{color:var(--color-accent);text-decoration:none;transition:opacity var(--transition-fast)}a:hover{opacity:.8}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-3) var(--space-5);border:none;border-radius:var(--radius-md);font-family:var(--font-family);font-size:var(--font-size-sm);font-weight:600;cursor:pointer;transition:all var(--transition-fast);white-space:nowrap;text-decoration:none}.btn-primary{background:linear-gradient(135deg,var(--color-accent),var(--color-accent-soft));color:#fff;box-shadow:var(--shadow-accent)}.btn-primary:hover{transform:translateY(-1px);box-shadow:0 0 32px var(--color-accent-glow)}.btn-primary:active{transform:translateY(0)}.btn-secondary{background:var(--color-bg-elevated);color:var(--color-text);border:1px solid var(--color-border)}.btn-secondary:hover{background:var(--color-bg-card);border-color:var(--color-accent)}.btn-danger{background:#ef444426;color:var(--color-danger);border:1px solid rgba(239,68,68,.3)}.btn-danger:hover{background:#ef444440}.btn-ghost{background:transparent;color:var(--color-text-muted);border:1px solid transparent}.btn-ghost:hover{background:var(--color-bg-elevated);color:var(--color-text)}.btn-sm{padding:var(--space-2) var(--space-3);font-size:var(--font-size-xs)}.btn-lg{padding:var(--space-4) var(--space-8);font-size:var(--font-size-base)}.btn:disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.form-group{display:flex;flex-direction:column;gap:var(--space-2)}.form-label{font-size:var(--font-size-sm);font-weight:600;color:var(--color-text);letter-spacing:.02em}.form-input,.form-select{width:100%;padding:var(--space-3) var(--space-4);background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text);font-family:var(--font-family);font-size:var(--font-size-base);transition:border-color var(--transition-fast),box-shadow var(--transition-fast);outline:none}.form-input::placeholder{color:var(--color-text-faint)}.form-input:focus,.form-select:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-glow)}.form-input.error{border-color:var(--color-danger)}.form-error{font-size:var(--font-size-xs);color:var(--color-danger)}.card{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-6)}.card-glass{background:#161c26d1;backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);border:1px solid rgba(255,255,255,.09);border-radius:var(--radius-lg)}[data-theme=light] .card-glass{background:#ffffffe0;border:1px solid rgba(0,0,0,.08)}.badge{display:inline-flex;align-items:center;padding:var(--space-1) var(--space-3);border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:600;letter-spacing:.05em;text-transform:uppercase}.badge-admin{background:#f59e0b26;color:var(--color-role-admin);border:1px solid rgba(245,158,11,.3)}.badge-docente{background:#38bdf826;color:var(--color-role-docente);border:1px solid rgba(56,189,248,.3)}.badge-estudiante{background:#a78bfa26;color:var(--color-role-student);border:1px solid rgba(167,139,250,.3)}.badge-investigador{background:#34d39926;color:var(--color-role-investigador);border:1px solid rgba(52,211,153,.3)}.badge-active{background:#22c55e26;color:var(--color-success);border:1px solid rgba(34,197,94,.3)}.badge-inactive{background:#ef444426;color:var(--color-danger);border:1px solid rgba(239,68,68,.3)}.alert{padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);font-size:var(--font-size-sm);border:1px solid}.alert-error{background:#ef44441a;border-color:#ef44444d;color:#fca5a5}.alert-success{background:#22c55e1a;border-color:#22c55e4d;color:#86efac}.alert-warning{background:#fbbf241a;border-color:#fbbf244d;color:#fcd34d}.table-wrapper{overflow-x:auto}.table{width:100%;border-collapse:collapse;font-size:var(--font-size-sm)}.table thead tr{border-bottom:1px solid var(--color-border)}.table th{padding:var(--space-3) var(--space-4);text-align:left;font-size:var(--font-size-xs);font-weight:600;color:var(--color-text-muted);letter-spacing:.08em;text-transform:uppercase;white-space:nowrap}.table td{padding:var(--space-4);border-bottom:1px solid var(--color-border-soft);color:var(--color-text)}.table tbody tr:hover{background:var(--color-bg-elevated)}.table tbody tr:last-child td{border-bottom:none}.text-muted{color:var(--color-text-muted)}.text-faint{color:var(--color-text-faint)}.text-accent{color:var(--color-accent)}.text-sm{font-size:var(--font-size-sm)}.text-xs{font-size:var(--font-size-xs)}.font-semibold{font-weight:600}.font-bold{font-weight:700}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-2{gap:var(--space-2)}.gap-3{gap:var(--space-3)}.gap-4{gap:var(--space-4)}.gap-6{gap:var(--space-6)}.w-full{width:100%}.mt-1{margin-top:var(--space-1)}.mt-2{margin-top:var(--space-2)}.mt-4{margin-top:var(--space-4)}.mb-4{margin-bottom:var(--space-4)}.mb-6{margin-bottom:var(--space-6)}.spinner{width:20px;height:20px;border:2px solid rgba(255,255,255,.2);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.fade-enter-active,.fade-leave-active{transition:opacity var(--transition-normal)}.fade-enter-from,.fade-leave-to{opacity:0}.slide-up-enter-active{animation:slideUp var(--transition-normal) ease}@keyframes slideUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}
