:root{--primary: #3b82f6;--primary-dark: #2563eb;--danger: #ef4444;--success: #22c55e;--warning: #f59e0b;--gray-50: #f9fafb;--gray-100: #f3f4f6;--gray-200: #e5e7eb;--gray-300: #d1d5db;--gray-400: #9ca3af;--gray-500: #6b7280;--gray-600: #4b5563;--gray-700: #374151;--gray-800: #1f2937;--gray-900: #111827;--sidebar-width: 240px}*{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--gray-100);color:var(--gray-800);line-height:1.5}.layout{display:flex;min-height:100vh}.sidebar{width:var(--sidebar-width);background:var(--gray-900);color:#fff;display:flex;flex-direction:column;position:fixed;height:100vh}.sidebar-header{padding:1.5rem;border-bottom:1px solid var(--gray-700)}.sidebar-header h1{font-size:1.25rem;font-weight:600;margin-bottom:.5rem}.user-badge{font-size:.75rem;background:var(--primary);padding:.25rem .5rem;border-radius:4px;text-transform:uppercase}.sidebar-nav{flex:1;padding:1rem 0}.sidebar-nav a{display:block;padding:.75rem 1.5rem;color:var(--gray-300);text-decoration:none;transition:all .2s}.sidebar-nav a:hover{background:var(--gray-800);color:#fff}.sidebar-nav a.active{background:var(--primary);color:#fff}.sidebar-footer{padding:1rem 1.5rem;border-top:1px solid var(--gray-700)}.btn-logout{width:100%;padding:.5rem;background:transparent;border:1px solid var(--gray-600);color:var(--gray-400);border-radius:4px;cursor:pointer;transition:all .2s}.btn-logout:hover{background:var(--gray-800);color:#fff}.main-content{flex:1;margin-left:var(--sidebar-width);padding:2rem;min-height:100vh}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--gray-900),var(--gray-800))}.login-card{background:#fff;padding:2.5rem;border-radius:8px;box-shadow:0 10px 40px #0003;width:100%;max-width:400px}.login-card h1{font-size:1.5rem;color:var(--gray-900);margin-bottom:.25rem}.login-card h2{font-size:.875rem;color:var(--gray-500);font-weight:400;margin-bottom:2rem}.form-group{margin-bottom:1rem}.form-group label{display:block;font-size:.875rem;font-weight:500;color:var(--gray-700);margin-bottom:.375rem}.form-group input,.form-group select,.form-group textarea{width:100%;padding:.625rem .75rem;border:1px solid var(--gray-300);border-radius:6px;font-size:.875rem;transition:border-color .2s,box-shadow .2s}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #3b82f61a}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.form-card{background:#fff;padding:1.5rem;border-radius:8px;box-shadow:0 1px 3px #0000001a;margin-bottom:1.5rem}.form-card h2{font-size:1.125rem;margin-bottom:1rem}.code-textarea{font-family:Monaco,Menlo,monospace;font-size:.8125rem}.btn-primary{width:100%;padding:.75rem;background:var(--primary);color:#fff;border:none;border-radius:6px;font-size:.875rem;font-weight:500;cursor:pointer;transition:background .2s}.btn-primary:hover{background:var(--primary-dark)}.btn-primary:disabled{background:var(--gray-400);cursor:not-allowed}.btn-secondary{background:var(--gray-200);color:var(--gray-700)}.btn-secondary:hover{background:var(--gray-300)}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover{background:#dc2626}.btn-small{padding:.375rem .75rem;font-size:.75rem;width:auto;border-radius:4px}.page{max-width:1200px}.page h1{font-size:1.5rem;font-weight:600;margin-bottom:1.5rem}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.page-header h1{margin-bottom:0}.page-header .btn-primary{width:auto;padding:.5rem 1rem}.section{margin-top:2rem}.section h2{font-size:1.125rem;margin-bottom:1rem}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1rem;margin-bottom:2rem}.stat-card{background:#fff;padding:1.25rem;border-radius:8px;box-shadow:0 1px 3px #0000001a;text-align:center}.stat-value{font-size:2rem;font-weight:700;color:var(--primary)}.stat-label{font-size:.875rem;color:var(--gray-500);margin-top:.25rem}.quick-links{display:flex;gap:1rem}.quick-link{padding:.75rem 1.25rem;background:#fff;border:1px solid var(--gray-200);border-radius:6px;color:var(--gray-700);text-decoration:none;font-size:.875rem;transition:all .2s}.quick-link:hover{border-color:var(--primary);color:var(--primary)}.data-table{width:100%;background:#fff;border-radius:8px;box-shadow:0 1px 3px #0000001a;border-collapse:collapse;overflow:hidden}.data-table th,.data-table td{padding:.875rem 1rem;text-align:left;border-bottom:1px solid var(--gray-200)}.data-table th{background:var(--gray-50);font-size:.75rem;font-weight:600;text-transform:uppercase;color:var(--gray-500)}.data-table td{font-size:.875rem}.data-table tbody tr:hover{background:var(--gray-50)}.data-table tbody tr:last-child td{border-bottom:none}.empty-state{text-align:center;color:var(--gray-500);padding:2rem!important}.content-preview{max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--gray-500);font-size:.8125rem}.topics-cell{max-width:300px;font-size:.8125rem;color:var(--gray-600)}.actions-cell{display:flex;gap:.5rem}.cards-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem}.card{background:#fff;padding:1.25rem;border-radius:8px;box-shadow:0 1px 3px #0000001a}.card h3{font-size:1rem;margin-bottom:.5rem}.card-description{font-size:.875rem;color:var(--gray-500);margin-bottom:.75rem}.card-meta{display:flex;justify-content:space-between;align-items:center}.card-date{font-size:.75rem;color:var(--gray-500)}.badge{display:inline-block;padding:.25rem .5rem;font-size:.75rem;font-weight:500;border-radius:4px;background:var(--gray-100);color:var(--gray-700)}.badge-admin{background:#fef3c7;color:#92400e}.badge-profesor{background:#dbeafe;color:#1e40af}.badge-alumno{background:#dcfce7;color:#166534}.badge-formal{background:#f3e8ff;color:#6b21a8}.badge-informal{background:#fef9c3;color:#854d0e}.status{display:inline-block;padding:.25rem .5rem;font-size:.75rem;border-radius:9999px}.status-active{background:#dcfce7;color:#166534}.status-inactive{background:#fee2e2;color:#991b1b}.error-message{background:#fee2e2;color:#991b1b;padding:.75rem 1rem;border-radius:6px;margin-bottom:1rem;font-size:.875rem}.loading{text-align:center;padding:3rem;color:var(--gray-600);display:flex;flex-direction:column;align-items:center;gap:1rem}.spinner{width:32px;height:32px;border:3px solid var(--gray-200);border-top-color:var(--primary);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.success-message{background:#dcfce7;color:#166534;padding:.75rem 1rem;border-radius:6px;margin-bottom:1rem;font-size:.875rem}.checkbox-group{display:flex;flex-wrap:wrap;gap:.75rem;padding:.5rem;background:var(--gray-50);border:1px solid var(--gray-200);border-radius:6px;min-height:42px;align-items:center}.checkbox-label{display:flex;align-items:center;gap:.5rem;font-size:.875rem;color:var(--gray-700);cursor:pointer;padding:.25rem .5rem;border-radius:4px;transition:background .2s}.checkbox-label:hover{background:var(--gray-200)}.checkbox-label input[type=checkbox]{width:16px;height:16px;accent-color:var(--primary)}.text-muted{color:var(--gray-500);font-size:.875rem}.text-warning{color:var(--warning);font-size:.8125rem;display:block;margin-top:.5rem}.toast-container{position:fixed;top:1rem;right:1rem;z-index:1000;display:flex;flex-direction:column;gap:.5rem}.toast{padding:.75rem 1rem;border-radius:6px;font-size:.875rem;box-shadow:0 4px 12px #00000026;animation:slideIn .3s ease;min-width:250px}.toast-success{background:#dcfce7;color:#166534;border-left:4px solid var(--success)}.toast-error{background:#fee2e2;color:#991b1b;border-left:4px solid var(--danger)}.toast-warning{background:#fef3c7;color:#92400e;border-left:4px solid var(--warning)}@keyframes slideIn{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}.modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.modal{background:#fff;padding:1.5rem;border-radius:8px;min-width:350px;max-width:90vw;box-shadow:0 10px 40px #0003}.modal h3{margin:0 0 1rem;font-size:1.125rem}.modal-actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:1rem}.card-actions{display:flex;gap:.5rem;margin-top:1rem;padding-top:.75rem;border-top:1px solid var(--gray-200)}.actions-cell{display:flex;flex-wrap:wrap;gap:.25rem}.pagination{display:flex;justify-content:space-between;align-items:center;margin-top:1rem;padding:.75rem 0}.pagination-info{font-size:.875rem;color:var(--gray-500)}.pagination-controls{display:flex;align-items:center;gap:.25rem}.pagination-btn{display:flex;align-items:center;justify-content:center;min-width:32px;height:32px;padding:0 .5rem;border:1px solid var(--gray-300);border-radius:4px;background:#fff;font-size:.875rem;color:var(--gray-700);cursor:pointer;transition:all .2s}.pagination-btn:hover:not(:disabled){background:var(--gray-100);border-color:var(--gray-400)}.pagination-btn:disabled{opacity:.5;cursor:not-allowed}.pagination-btn.active{background:var(--primary);border-color:var(--primary);color:#fff}.pagination-ellipsis{padding:0 .5rem;color:var(--gray-400)}@media(max-width:768px){.sidebar{width:100%;height:auto;position:relative}.main-content{margin-left:0}.layout{flex-direction:column}.form-row{grid-template-columns:1fr}.stats-grid{grid-template-columns:repeat(2,1fr)}}
