:root{--text:#6b6375;--text-h:#08060d;--bg:#fff;--border:#e5e4e7;--code-bg:#f4f3ec;--accent:#aa3bff;--accent-bg:#aa3bff1a;--accent-border:#aa3bff80;--social-bg:#f4f3ec80;--shadow:#0000001a 0 10px 15px -3px, #0000000d 0 4px 6px -2px;--sans:system-ui, "Segoe UI", Roboto, sans-serif;--heading:system-ui, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, Consolas, monospace;font:18px/145% var(--sans);letter-spacing:.18px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}@media (width<=1024px){:root{font-size:16px}}@media (prefers-color-scheme:dark){:root{--text:#9ca3af;--text-h:#f3f4f6;--bg:#16171d;--border:#2e303a;--code-bg:#1f2028;--accent:#c084fc;--accent-bg:#c084fc26;--accent-border:#c084fc80;--social-bg:#2f303a80;--shadow:#0006 0 10px 15px -3px, #00000040 0 4px 6px -2px}#social .button-icon{filter:invert()brightness(2)}}body{margin:0}#root{text-align:center;border-inline:1px solid var(--border);box-sizing:border-box;flex-direction:column;width:1126px;max-width:100%;min-height:100svh;margin:0 auto;display:flex}h1,h2{font-family:var(--heading);color:var(--text-h);font-weight:500}h1{letter-spacing:-1.68px;margin:32px 0;font-size:56px}@media (width<=1024px){h1{margin:20px 0;font-size:36px}}h2{letter-spacing:-.24px;margin:0 0 8px;font-size:24px;line-height:118%}@media (width<=1024px){h2{font-size:20px}}p{margin:0}code,.counter{font-family:var(--mono);color:var(--text-h);border-radius:4px;display:inline-flex}code{background:var(--code-bg);padding:4px 8px;font-size:15px;line-height:135%}.crear-alumno-overlay{z-index:1000;background-color:#00000080;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.crear-alumno-modal{background:#fff;border-radius:12px;width:100%;max-width:550px;max-height:90vh;animation:.3s ease-out slideIn;overflow-y:auto;box-shadow:0 10px 40px #0000004d}@keyframes slideIn{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.modal-header{background:linear-gradient(135deg,#f5f7fa,#c3cfe2);border-bottom:1px solid #e5e7eb;justify-content:space-between;align-items:center;padding:25px;display:flex}.modal-header h2{color:#1f2937;margin:0;font-size:22px}.btn-cerrar{cursor:pointer;background:#fff;border:1px solid #e5e7eb;border-radius:50%;justify-content:center;align-items:center;width:35px;height:35px;font-size:18px;transition:all .2s;display:flex}.btn-cerrar:hover{background:#f3f4f6;border-color:#d1d5db}.modal-form{padding:30px}.error-message{color:#991b1b;background:#fee;border-left:4px solid #dc2626;border-radius:8px;margin-bottom:20px;padding:12px 16px;font-size:14px}.form-group{margin-bottom:20px}.form-group label{color:#1f2937;margin-bottom:8px;font-size:14px;font-weight:600;display:block}.form-group input{color:#1f2937;background:#fff;border:2px solid #e5e7eb;border-radius:8px;width:100%;padding:12px 14px;font-family:inherit;font-size:14px;transition:all .2s}.form-group input:focus{background:#f0fdf4;border-color:#10b981;outline:none}.form-group input:disabled{color:#9ca3af;cursor:not-allowed;background:#f9fafb}.form-group small{color:#6b7280;margin-top:5px;font-size:12px;display:block}.form-row{grid-template-columns:1fr 1fr;gap:15px;display:grid}.input-group{gap:8px;display:flex}.input-group input{flex:1}.password-input{letter-spacing:1px;font-family:Courier New,monospace;font-weight:700;color:#10b981!important}.code-input{text-transform:uppercase;font-family:Courier New,monospace;font-weight:700;color:#0ea5e9!important}.btn-regenerar{cursor:pointer;background:#f3f4f6;border:2px solid #e5e7eb;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:45px;height:45px;font-size:16px;transition:all .2s;display:flex}.btn-regenerar:hover:not(:disabled){background:#e5e7eb;border-color:#d1d5db;transform:rotate(180deg)}.btn-regenerar:disabled{opacity:.5;cursor:not-allowed}.modal-actions{border-top:1px solid #e5e7eb;gap:12px;margin-top:30px;padding-top:20px;display:flex}.btn-cancelar,.btn-crear{cursor:pointer;border:none;border-radius:8px;flex:1;padding:12px 20px;font-size:14px;font-weight:600;transition:all .2s}.btn-cancelar{color:#374151;background:#e5e7eb}.btn-cancelar:hover:not(:disabled){background:#d1d5db}.btn-crear{color:#fff;background:linear-gradient(135deg,#10b981,#059669)}.btn-crear:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 4px 12px #10b9814d}.btn-cancelar:disabled,.btn-crear:disabled{opacity:.7;cursor:not-allowed}.btn-eliminar{color:#dc2626;cursor:pointer;background:#fee2e2;border:none;border-radius:8px;padding:12px 20px;font-size:14px;font-weight:600;transition:all .2s}.btn-eliminar:hover:not(:disabled){background:#fecaca}.btn-eliminar-confirmar{color:#fff;cursor:pointer;background:#dc2626;border:none;border-radius:8px;padding:12px 20px;font-size:14px;font-weight:600;transition:all .2s}.btn-eliminar-confirmar:hover:not(:disabled){background:#b91c1c}.confirmar-eliminar{color:#92400e;background:#fff7ed;border:1px solid #fed7aa;border-radius:8px;width:100%;padding:16px;font-size:14px}@media (width<=600px){.crear-alumno-modal{max-width:95%}.form-row{grid-template-columns:1fr}.modal-form{padding:20px}.modal-header{padding:15px 20px}.modal-header h2{font-size:18px}}.credenciales-overlay{z-index:1000;background-color:#00000080;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.credenciales-container{background:#fff;border-radius:12px;width:100%;max-width:700px;max-height:90vh;position:relative;overflow-y:auto;box-shadow:0 10px 40px #0000004d}.btn-cerrar{cursor:pointer;z-index:1001;background:#f0f0f0;border:none;border-radius:50%;justify-content:center;align-items:center;width:35px;height:35px;font-size:20px;transition:background .2s;display:flex;position:absolute;top:15px;right:15px}.btn-cerrar:hover{background:#e0e0e0}.credenciales-content{background:linear-gradient(135deg,#f5f7fa 0%,#c3cfe2 100%);min-height:100%;padding:40px}.credenciales-header{text-align:center;border-bottom:3px solid #10b981;margin-bottom:30px;padding-bottom:20px}.credenciales-header h1{color:#1f2937;margin:0 0 10px;font-size:28px}.credenciales-header .subtitle{color:#6b7280;margin:0;font-size:16px}.credenciales-seccion{background:#fff;border-left:5px solid #10b981;border-radius:10px;margin-bottom:20px;padding:25px}.credenciales-seccion h2{color:#1f2937;align-items:center;gap:8px;margin:0 0 20px;font-size:20px;display:flex}.credencial-item{margin-bottom:18px}.credencial-item:last-child{margin-bottom:0}.credencial-item label{color:#6b7280;text-transform:uppercase;letter-spacing:.5px;margin-bottom:8px;font-size:12px;font-weight:600;display:block}.credencial-valor{color:#1f2937;word-break:break-all;background:#f9fafb;border:2px solid #e5e7eb;border-radius:8px;padding:12px 16px;font-family:Courier New,monospace;font-size:16px;font-weight:500;transition:background .2s,border-color .2s}.credencial-valor:hover{background:#f3f4f6;border-color:#10b981}.credencial-email{color:#0ea5e9}.credencial-password{color:#10b981;letter-spacing:2px;font-size:18px;font-weight:700}.instrucciones{border-left-color:#3b82f6}.instrucciones h2{border-bottom:2px solid #3b82f6;padding-bottom:15px}.paso{align-items:flex-start;gap:15px;margin-bottom:18px;display:flex}.paso:last-child{margin-bottom:0}.numero-paso{color:#fff;background:linear-gradient(135deg,#3b82f6,#1e40af);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;font-size:18px;font-weight:700;display:flex}.contenido-paso strong{color:#1f2937;margin-bottom:5px;font-size:15px;display:block}.contenido-paso p{color:#6b7280;margin:0;font-size:14px}.tips{border-left-color:#f59e0b}.tips h2{border-bottom:2px solid #f59e0b;padding-bottom:15px}.tips ul{margin:0;padding:0;list-style:none}.tips li{color:#92400e;background:#fffbeb;border-left:3px solid #f59e0b;border-radius:4px;margin-bottom:12px;padding:12px;font-size:14px}.tips li:last-child{margin-bottom:0}.tips li strong{color:#d97706;font-weight:600}.credenciales-acciones{background:#fff;border-top:1px solid #e5e7eb;flex-wrap:wrap;justify-content:center;gap:12px;padding:20px 40px 40px;display:flex}.credenciales-acciones button{cursor:pointer;border:none;border-radius:8px;flex:1;min-width:150px;padding:12px 20px;font-size:14px;font-weight:600;transition:all .2s}.btn-descargar{color:#fff;background:linear-gradient(135deg,#10b981,#059669);flex:1.2}.btn-descargar:hover{transform:translateY(-2px);box-shadow:0 4px 12px #10b9814d}.btn-copiar{color:#fff;background:linear-gradient(135deg,#3b82f6,#1e40af)}.btn-copiar:hover{transform:translateY(-2px);box-shadow:0 4px 12px #3b82f64d}.btn-cerrar-principal{color:#374151;background:#e5e7eb}.btn-cerrar-principal:hover{background:#d1d5db}@media (width<=600px){.credenciales-content{padding:25px}.credenciales-header h1{font-size:22px}.credenciales-seccion{padding:18px}.credenciales-acciones{flex-direction:column;gap:10px;padding:15px 25px 25px}.credenciales-acciones button{min-width:unset;width:100%}.credencial-password{font-size:16px}}@media print{.credenciales-overlay{background:#fff}.btn-cerrar,.credenciales-acciones{display:none}}:root{--primary:#4f46e5;--primary-dark:#4338ca;--primary-light:#818cf8;--success:#10b981;--danger:#ef4444;--bg:#f8fafc;--bg-dark:#0f172a;--card:#fff;--text:#1e293b;--text-light:#64748b;--text-muted:#94a3b8;--border:#e2e8f0}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg-dark);color:var(--text);min-height:100vh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.login-page{background:radial-gradient(ellipse at top, #1e1b4b 0%, transparent 50%), radial-gradient(ellipse at bottom right, #312e81 0%, transparent 50%), var(--bg-dark);justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex;position:relative;overflow:hidden}.login-page:before{content:"";pointer-events:none;background:linear-gradient(135deg,#4f46e51a 0%,#0000 50%),linear-gradient(225deg,#8b5cf61a 0%,#0000 50%);position:absolute;inset:0}.login-card{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);text-align:center;z-index:1;background:#fffffff2;border-radius:24px;width:100%;max-width:400px;padding:48px 40px;position:relative;box-shadow:0 25px 50px -12px #00000080,0 0 0 1px #ffffff1a}.login-card .logo{background:linear-gradient(135deg, var(--primary) 0%, var(--primary-light) 100%);border-radius:20px;justify-content:center;align-items:center;width:80px;height:80px;margin:0 auto 24px;font-size:36px;display:flex;box-shadow:0 10px 30px #4f46e54d}.login-card h1{color:var(--bg-dark);letter-spacing:-.5px;margin-bottom:8px;font-size:32px;font-weight:800}.login-card .subtitle{color:var(--text-light);margin-bottom:40px;font-size:16px;font-weight:500}.login-card form{flex-direction:column;gap:20px;display:flex}.login-card .input-group{position:relative}.login-card input{border:2px solid var(--border);width:100%;color:var(--text);background:#f8fafc;border-radius:16px;padding:18px 20px;font-size:16px;transition:all .3s}.login-card input:focus{border-color:var(--primary);background:#fff;outline:none;box-shadow:0 0 0 4px #4f46e51a}.login-card input::placeholder{color:var(--text-muted)}.login-card button{background:linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);color:#fff;cursor:pointer;border:none;border-radius:16px;width:100%;margin-top:8px;padding:18px;font-size:17px;font-weight:700;transition:all .3s;box-shadow:0 10px 25px #4f46e54d}.login-card button:hover{transform:translateY(-2px);box-shadow:0 15px 35px #4f46e566}.login-card button:active{transform:translateY(0)}.login-card .error{color:var(--danger);background:#fef2f2;border-radius:12px;padding:12px;font-size:14px;font-weight:500}.login-card .footer-text{color:var(--text-muted);margin-top:32px;font-size:13px}.dashboard-modern{background:var(--bg-dark);color:#fff;flex-direction:column;min-height:100vh;display:flex}.top-bar{justify-content:space-between;align-items:center;padding:20px 24px;display:flex}.user-info{align-items:center;gap:12px;display:flex}.user-avatar{background:#ffffff1a;border-radius:12px;justify-content:center;align-items:center;width:44px;height:44px;font-size:20px;display:flex}.user-name{font-size:16px;font-weight:600}.logout-btn{color:#fff;cursor:pointer;background:#ffffff1a;border:none;border-radius:12px;width:44px;height:44px;font-size:18px}.header-actions{gap:8px;display:flex}.export-btn{color:#fff;cursor:pointer;background:#10b981;border:none;border-radius:12px;padding:10px 16px;font-size:14px;font-weight:600;transition:transform .2s,background .2s}.export-btn:hover{background:#059669;transform:scale(1.05)}.create-btn{color:#fff;cursor:pointer;background:linear-gradient(135deg,#3b82f6,#1e40af);border:none;border-radius:12px;padding:10px 16px;font-size:14px;font-weight:600;transition:transform .2s,background .2s}.create-btn:hover{background:linear-gradient(135deg,#2563eb,#1e3a8a);transform:scale(1.05)}.modal-overlay{z-index:1000;background:#000000b3;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.export-modal{background:#1e293b;border-radius:24px;width:100%;max-width:400px;padding:32px;animation:.3s fadeIn}.export-modal h3{text-align:center;margin-bottom:8px;font-size:24px;font-weight:700}.modal-desc{text-align:center;opacity:.7;margin-bottom:24px}.modal-dates{gap:16px;margin-bottom:24px;display:flex}.modal-date{flex-direction:column;flex:1;gap:8px;display:flex}.modal-date label{opacity:.7;font-size:14px;font-weight:600}.modal-date input{color:#fff;background:#ffffff1a;border:1px solid #fff3;border-radius:12px;padding:14px;font-size:16px}.modal-date input::-webkit-calendar-picker-indicator{filter:invert()}.modal-actions{gap:12px;display:flex}.btn-cancel{color:#fff;cursor:pointer;background:#ffffff1a;border:none;border-radius:12px;flex:1;padding:14px;font-size:16px;font-weight:600}.btn-export{color:#fff;cursor:pointer;background:#10b981;border:none;border-radius:12px;flex:1;padding:14px;font-size:16px;font-weight:600;transition:background .2s}.btn-export:hover{background:#059669}.hero-section{text-align:center;background:linear-gradient(#4f46e54d 0%,#0000 100%);padding:40px 24px}.greeting{opacity:.8;margin-bottom:8px;font-size:18px}.clock{letter-spacing:-1px;background:linear-gradient(135deg,#fff 0%,#a5b4fc 100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;padding:10px 0;font-size:48px;font-weight:800;line-height:1.2}.date{opacity:.7;text-transform:capitalize;margin-top:8px;font-size:16px}.main-content{flex-direction:column;flex:1;padding:24px;display:flex}.prompt-section{text-align:center;margin-bottom:32px}.prompt-text{margin-bottom:12px;font-size:24px;font-weight:700}.ultimo-registro{opacity:.7;justify-content:center;align-items:center;gap:8px;font-size:14px;display:flex}.ultimo-registro .dot{background:#10b981;border-radius:50%;width:8px;height:8px}.button-grid{grid-template-columns:1fr 1fr;gap:16px;width:100%;max-width:400px;margin:0 auto;display:grid}.big-btn{cursor:pointer;border:none;border-radius:24px;padding:32px 20px;transition:all .3s;position:relative;overflow:hidden}.big-btn:before{content:"";background:linear-gradient(135deg,#ffffff26 0%,#0000 50%);position:absolute;inset:0}.big-btn.entrada{background:linear-gradient(135deg,#10b981 0%,#059669 100%);box-shadow:0 10px 40px #10b98166}.big-btn.salida{background:linear-gradient(135deg,#f59e0b 0%,#d97706 100%);box-shadow:0 10px 40px #f59e0b66}.big-btn:active:not(.disabled){transform:scale(.96)}.big-btn.disabled{opacity:.4;cursor:not-allowed;box-shadow:none}.btn-content{z-index:1;flex-direction:column;align-items:center;gap:8px;display:flex;position:relative}.btn-icon{font-size:48px}.btn-label{font-size:24px;font-weight:800}.btn-desc{opacity:.9;font-size:13px}.btn-time{margin-top:8px;font-size:14px;font-weight:500;display:block;color:#fff!important}.success-overlay{flex:1;justify-content:center;align-items:center;display:flex}.success-content{text-align:center;padding:40px 20px;animation:.4s fadeIn}.success-icon-large{margin-bottom:40px;font-size:100px;animation:.6s bounce}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-20px)}}.success-content h2{color:#10b981;margin-bottom:32px;font-size:36px;font-weight:800}.success-time{margin-bottom:32px;font-size:72px;font-weight:800}.success-msg{opacity:.9;margin-bottom:48px;font-size:20px}.btn-new{color:#fff;cursor:pointer;background:#fff3;border:none;border-radius:16px;padding:16px 32px;font-size:16px;font-weight:600}.bottom-bar{background:#ffffff0d;border-top:1px solid #ffffff1a;justify-content:center;padding:16px;display:flex}.bottom-bar.double{gap:12px}.bottom-bar .nav-link{color:#fff;background:#ffffff1a;border-radius:16px;flex:1;justify-content:center;align-items:center;gap:8px;max-width:180px;padding:16px;font-size:16px;text-decoration:none;display:flex}.nav-icon{font-size:20px}.profesor-page{background:var(--bg-dark);color:#fff;flex-direction:column;min-height:100vh;display:flex}.clase-titulo{margin:8px 0;font-size:36px;font-weight:800}.date-range{flex-wrap:wrap;justify-content:center;gap:16px;margin-top:20px;display:flex}.date-input{background:#ffffff1a;border-radius:10px;align-items:center;gap:8px;padding:8px 12px;display:flex}.date-input label{opacity:.7;font-size:13px}.date-input input{color:#fff;background:0 0;border:none;font-size:14px;font-weight:600}.date-input input::-webkit-calendar-picker-indicator{filter:invert()}.stats-row{grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:32px;display:grid}.stat-card{text-align:center;background:#ffffff1a;border-radius:16px;padding:20px 16px}.stat-num{color:var(--primary-light);font-size:32px;font-weight:800}.stat-label{opacity:.7;margin-top:4px;font-size:13px}.section{margin-bottom:32px}.section-title{margin-bottom:16px;padding-left:4px;font-size:18px;font-weight:700}.alumnos-list{flex-direction:column;gap:12px;display:flex}.alumno-card{background:#ffffff14;border-radius:16px;justify-content:space-between;align-items:center;padding:16px;display:flex}.alumno-info{flex-direction:column;display:flex}.alumno-nombre{font-size:16px;font-weight:600}.alumno-codigo{opacity:.6;font-size:13px}.alumno-status{align-items:center;gap:8px;display:flex}.btn-editar-alumno{cursor:pointer;opacity:.5;background:0 0;border:none;border-radius:6px;margin-left:4px;padding:4px 6px;font-size:14px;transition:opacity .2s,background .2s}.btn-editar-alumno:hover{opacity:1;background:#6366f126}.status-badge{border-radius:8px;padding:6px 10px;font-size:12px;font-weight:600}.status-badge.entrada{color:#10b981;background:#10b98133}.status-badge.salida{color:#f59e0b;background:#f59e0b33}.status-badge.pendiente{color:#94a3b8;background:#94a3b833}.ultima-hora{opacity:.7;margin-left:8px;font-size:13px}.registro-item{background:#ffffff14;border-radius:12px;align-items:center;gap:12px;padding:14px 16px;display:flex}.registro-icon{font-size:24px}.registro-alumno{flex:1;font-weight:500}.registro-tipo{text-transform:capitalize;opacity:.7;font-size:13px}.registro-hora{font-size:14px;font-weight:600}.empty-msg{text-align:center;opacity:.5;padding:40px}.gestion-page{background:var(--bg-dark);color:#fff;flex-direction:column;min-height:100vh;display:flex}.gestion-content{flex:1;padding:24px}.gestion-content h3{margin-bottom:20px}.registros-list{flex-direction:column;gap:12px;display:flex}.registro-card{background:#ffffff14;border-radius:12px;justify-content:space-between;align-items:center;padding:16px;display:flex}.registro-info{align-items:center;gap:12px;display:flex}.tipo-badge{border-radius:8px;padding:6px 12px;font-size:13px;font-weight:600}.tipo-badge.entrada{color:#10b981;background:#10b98133}.tipo-badge.salida{color:#f59e0b;background:#f59e0b33}.registro-card .fecha{color:var(--text-muted)}.registro-card .hora{font-size:16px;font-weight:700}.registro-card .origen{color:var(--text-muted);background:#ffffff1a;border-radius:4px;padding:4px 8px;font-size:12px}.btn-editar{color:#818cf8;cursor:pointer;background:#6366f133;border:none;border-radius:8px;padding:8px 16px;font-size:14px}.btn-editar:hover{background:#6366f166}.edit-modal{background:#1e293b;border-radius:20px;width:100%;max-width:420px;padding:32px}.edit-modal h3{margin-bottom:24px;font-size:22px}.modal-field{margin-bottom:20px}.modal-field label{color:var(--text-muted);margin-bottom:8px;font-size:14px;display:block}.modal-field input,.modal-field textarea{color:#fff;background:#ffffff1a;border:1px solid #fff3;border-radius:12px;width:100%;padding:14px;font-size:16px}.modal-field textarea{resize:vertical;min-height:100px}.modal-field input[type=time]{text-align:center;font-size:24px}.modal-field span{font-weight:600}.btn-save{color:#fff;cursor:pointer;background:#10b981;border:none;border-radius:12px;padding:14px 24px;font-size:16px;font-weight:600}.btn-save:hover{background:#059669}.selector-simple{flex:1;position:relative}.selector-trigger{color:#fff;cursor:pointer;background:#ffffff1a;border:1px solid #fff3;border-radius:12px;justify-content:space-between;align-items:center;padding:14px 16px;display:flex}.selector-trigger .arrow{opacity:.6;font-size:10px}.selector-dropdown{z-index:100;background:#1e293b;border:1px solid #fff3;border-radius:12px;max-height:300px;margin-top:8px;position:absolute;top:100%;left:0;right:0;overflow-y:auto}.selector-option{cursor:pointer;color:#94a3b8;border-bottom:1px solid #ffffff0d;padding:14px 16px}.selector-option:hover{color:#fff;background:#ffffff1a}.selector-option.selected{color:#fff;background:#6366f133}.reports-page{background:var(--bg-dark);color:#fff;flex-direction:column;min-height:100vh;display:flex}.back-link{color:var(--primary-light);font-size:14px;text-decoration:none}.filtro-section{background:#ffffff0d;border-bottom:1px solid #ffffff1a;flex-direction:column;gap:16px;padding:20px 24px;display:flex}.date-filters{align-items:center;gap:12px;display:flex}.date-filters input{color:#fff;background:#ffffff1a;border:1px solid #fff3;border-radius:10px;padding:10px 14px;font-size:14px}.date-filters input::-webkit-calendar-picker-indicator{filter:invert()}.date-filters span{color:var(--text-muted)}.multi-select{position:relative}.selected-tags{cursor:pointer;background:#ffffff1a;border:1px solid #fff3;border-radius:12px;flex-wrap:wrap;align-items:center;gap:8px;min-height:46px;padding:10px;display:flex}.selected-tags .placeholder{color:var(--text-muted);font-size:14px}.tag{background:var(--primary);cursor:pointer;border-radius:8px;align-items:center;gap:6px;padding:6px 12px;font-size:13px;display:flex}.tag:hover{background:var(--primary-dark)}.dropdown-options{z-index:100;background:#1e293b;border:1px solid #fff3;border-radius:12px;max-height:300px;margin-top:8px;position:absolute;top:100%;left:0;right:0;overflow-y:auto}.clear-all{color:#f59e0b;cursor:pointer;margin-left:auto;font-size:12px}.clear-all:hover{text-decoration:underline}.option{cursor:pointer;color:#94a3b8;align-items:center;gap:10px;padding:12px 16px;display:flex}.option:hover{color:#fff;background:#ffffff1a}.option.selected{color:#fff;background:#6366f133}.option input{width:18px;height:18px}.reports-content{flex:1;padding:24px;overflow-y:auto}.report-section{background:#ffffff0d;border-radius:20px;margin-bottom:24px;padding:24px}.report-section h3{margin-bottom:20px;font-size:18px;font-weight:700}.chart-container{width:100%}.heatmap-container{overflow-x:auto}.heatmap-grid{min-width:400px}.heatmap-header{grid-template-columns:60px repeat(5,1fr);gap:8px;margin-bottom:8px;display:grid}.heatmap-header span{text-align:center;color:var(--text-muted);font-size:12px;font-weight:600}.heatmap-row{grid-template-columns:60px repeat(5,1fr);gap:8px;margin-bottom:8px;display:grid}.hora-label{color:var(--text-muted);align-items:center;font-size:12px;display:flex}.heatmap-cell{cursor:pointer;border-radius:6px;height:32px;transition:transform .2s}.heatmap-cell:hover{transform:scale(1.1)}.dashboard .btn-entrada{color:#fff;background:linear-gradient(135deg,#10b981 0%,#059669 100%);box-shadow:0 8px 20px #10b9814d}.dashboard .btn-salida{color:#fff;background:linear-gradient(135deg,#f59e0b 0%,#d97706 100%);box-shadow:0 8px 20px #f59e0b4d}.dashboard .buttons .icon{font-size:32px}.success-card{text-align:center;flex-direction:column;justify-content:center;min-height:60vh;padding:60px 30px;animation:.3s fadeIn;display:flex}.success-icon{margin-bottom:48px;font-size:96px;display:block}.success-card h3{color:var(--success);margin-bottom:32px;font-size:36px}.success-card .hora{color:var(--text);margin-bottom:64px;font-size:64px;font-weight:700;display:block}.success-card button{background:var(--primary);color:#fff;cursor:pointer;border:none;border-radius:10px;padding:14px 32px;font-size:16px}.bottom-nav{background:var(--card);text-align:center;border-top:1px solid var(--border);padding:12px}.bottom-nav .nav-item{color:var(--text-light);font-size:14px;text-decoration:none}.history-page{background:var(--bg);min-height:100vh}.history-page header{background:var(--card);padding:16px 20px;box-shadow:0 2px 8px #0000000d}.history-page header .back{color:var(--primary);margin-bottom:8px;font-size:14px;text-decoration:none;display:inline-block}.history-page header h2{font-size:20px}.history-page.wide main{padding:16px;overflow-x:auto}.tabla-presencia{border-collapse:collapse;background:var(--card);border-radius:12px;min-width:100%;overflow:hidden}.tabla-header{background:var(--primary);color:#fff;display:flex}.tabla-header .celda-fecha{text-align:center;border:1px solid #fff3;min-width:90px;padding:12px 8px;font-weight:600}.tabla-header .celda-hora{text-align:center;border:1px solid #fff3;flex:1;min-width:40px;padding:12px 4px;font-size:12px}.tabla-fila{display:flex}.tabla-fila.fin-semana{opacity:.7;background:#f1f5f9}.tabla-fila.fin-semana .celda-fecha{background:#e2e8f0;font-style:italic}.tabla-fila .celda-fecha{background:#f1f5f9;border:1px solid #e2e8f0;justify-content:center;align-items:center;min-width:90px;padding:12px 8px;font-size:13px;font-weight:600;display:flex}.tabla-fila .celda-presencia{border:1px solid #e2e8f0;flex:1;min-width:40px;height:40px}.celda-presencia.presencia{background:var(--success)}.celda-presencia.ausencia{background:#fee2e2}.tooltip-bloque{background:var(--text);color:#fff;z-index:1000;border-radius:10px;min-width:180px;padding:14px 20px;font-size:14px;animation:.2s fadeIn;position:fixed;box-shadow:0 4px 12px #0003}.tooltip-bloque:before{content:"";border-style:solid;border-width:0 8px 8px;border-color:transparent transparent var(--text) transparent;position:absolute;top:-8px;left:20px}.tooltip-bloque div{margin:6px 0}.tooltip-bloque .cerrar{cursor:pointer;opacity:.7;font-size:16px;position:absolute;top:6px;right:10px}.tooltip-bloque .cerrar:hover{opacity:1}.tooltip-bloque .total{color:#10b981;border-top:1px solid #fff3;margin-top:8px;padding-top:8px;font-weight:700}.tooltip-bloque .total-dia{color:#f59e0b;border-top:1px solid #fff3;margin-top:6px;padding-top:6px;font-weight:600}.tooltip-bloque .cerrar{cursor:pointer;font-size:18px;position:absolute;top:8px;right:12px}.history-page main{list-style:none}.history-list .fichaje{background:var(--card);border-radius:12px;align-items:center;gap:12px;margin-bottom:12px;padding:16px;display:flex;box-shadow:0 2px 4px #0000000d}.history-list .fichaje.entrada{border-left:4px solid var(--success)}.history-list .fichaje.salida{border-left:4px solid #f59e0b}.history-list .fichaje .tipo{flex:1;font-weight:600}.history-list .fichaje .fecha{color:var(--text-light);font-size:14px}.history-list .fichaje .hora{color:var(--text);font-weight:700}.history-list .empty{text-align:center;color:var(--text-light);padding:40px}.dia-card{background:var(--card);border-radius:16px;margin-bottom:20px;overflow:hidden;box-shadow:0 2px 8px #00000014}.dia-titulo{background:var(--primary);color:#fff;text-transform:capitalize;padding:16px 20px;font-size:16px}.dia-timeline{flex-direction:column;gap:12px;padding:20px;display:flex}.timeline-item{border-radius:12px;align-items:center;gap:12px;padding:16px;display:flex}.timeline-item.entrada{border-left:4px solid var(--success);background:linear-gradient(90deg,#10b98126 0%,#10b9810d 100%)}.timeline-item.salida{background:linear-gradient(90deg,#f59e0b26 0%,#f59e0b0d 100%);border-left:4px solid #f59e0b}.timeline-icon{font-size:24px}.timeline-label{color:var(--text);flex:1;font-weight:600}.timeline-hora{color:var(--text);font-size:18px;font-weight:700}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@media (width>=768px){.dashboard .buttons{flex-direction:row;max-width:500px}.dashboard .buttons button{flex:1}}
