:root{--color-fondo:#f4f3ef;--color-superficie:#fff;--color-superficie-hover:#f9f8f5;--color-borde:#e3e1d9;--color-borde-fuerte:#cfccc0;--color-texto:#211f1c;--color-texto-secundario:#6b6a63;--color-texto-tenue:#94928a;--color-acento:#1d6f5c;--color-acento-oscuro:#14503f;--color-acento-suave:#e6f2ef;--color-acento-texto:#fff;--color-error:#b3261e;--color-error-fondo:#fbeae9;--color-exito:#1d6f5c;--color-exito-fondo:#e6f2ef;--radio:8px;--radio-tarjeta:12px;--sombra-sm:0 1px 2px #211f1c0f;--sombra-md:0 4px 12px #211f1c14;--ease-out:cubic-bezier(.23, 1, .32, 1);--ease-in-out:cubic-bezier(.77, 0, .175, 1);color:var(--color-texto);font-family:-apple-system,Segoe UI,Roboto,Arial,sans-serif}*{box-sizing:border-box}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}body{background:var(--color-fondo);margin:0}h1{margin:0;font-size:20px;font-weight:500}h2{align-items:center;gap:8px;margin:0 0 12px;font-size:15px;font-weight:500;display:flex}p{line-height:1.5}label{color:var(--color-texto-secundario);margin:12px 0 4px;font-size:13px;display:block}input,select{border:1px solid var(--color-borde);border-radius:var(--radio);background:var(--color-superficie);width:100%;height:38px;color:var(--color-texto);transition:border-color .16s var(--ease-out), box-shadow .16s var(--ease-out);padding:0 10px;font-size:14px}input:hover,select:hover{border-color:var(--color-borde-fuerte)}input:focus,select:focus{border-color:var(--color-acento);box-shadow:0 0 0 3px var(--color-acento-suave);outline:none}button{border:1px solid var(--color-borde);border-radius:var(--radio);background:var(--color-superficie);height:38px;color:var(--color-texto);cursor:pointer;transition:background .16s var(--ease-out), border-color .16s var(--ease-out), transform .12s var(--ease-out);padding:0 16px;font-size:14px;font-weight:500}button:hover{background:var(--color-superficie-hover);border-color:var(--color-borde-fuerte)}button:active{transition-duration:60ms;transform:scale(.97)}button:disabled{opacity:.55;cursor:not-allowed;transform:none}.boton-primario{background:var(--color-acento);width:100%;color:var(--color-acento-texto);border-color:var(--color-acento);margin-top:16px}.boton-primario:hover:not(:disabled){background:var(--color-acento-oscuro);border-color:var(--color-acento-oscuro)}.boton-quitar{color:var(--color-error);background:var(--color-error-fondo);border-color:#0000;align-self:end}.boton-quitar:hover{background:#f6d9d7}.pantalla-centrada{background:linear-gradient(180deg, var(--color-fondo), #ece9e1);justify-content:center;align-items:center;min-height:100vh;padding:16px;display:flex}.tarjeta-login{background:var(--color-superficie);border:1px solid var(--color-borde);border-radius:var(--radio-tarjeta);width:100%;max-width:340px;box-shadow:var(--sombra-md);padding:28px 24px}.logo-login{flex-direction:column;align-items:center;gap:10px;margin-bottom:20px;display:flex}.logo-login .marca-icono{background:var(--color-acento-suave);width:48px;height:48px;color:var(--color-acento);border-radius:12px;justify-content:center;align-items:center;display:flex}.tarjeta-login h1{text-align:center}.mensaje-error,.mensaje-exito{border-radius:var(--radio);opacity:1;transition:opacity .2s var(--ease-out), transform .2s var(--ease-out);margin:12px 0 0;padding:8px 12px;font-size:13px;transform:translateY(0)scale(1)}@starting-style{.mensaje-error,.mensaje-exito{opacity:0;transform:translateY(-4px)scale(.98)}}.mensaje-error{color:var(--color-error);background:var(--color-error-fondo)}.mensaje-exito{color:var(--color-exito);background:var(--color-exito-fondo)}.panel-exito{background:var(--color-acento-suave);border:1px solid var(--color-acento);border-radius:var(--radio-tarjeta);opacity:1;transition:opacity .2s var(--ease-out), transform .2s var(--ease-out);margin:12px 0 0;padding:12px 16px;transform:translateY(0)scale(1)}@starting-style{.panel-exito{opacity:0;transform:translateY(-4px)scale(.98)}}.panel-exito-titulo{color:var(--color-acento-oscuro);align-items:center;gap:8px;font-size:14px;font-weight:500;display:flex}.panel-exito-datos{color:var(--color-acento-oscuro);flex-wrap:wrap;gap:4px 16px;margin-top:6px;font-size:13px;display:flex}.panel-exito-datos b{font-variant-numeric:tabular-nums}.mensaje-carga{color:var(--color-texto-secundario);justify-content:center;align-items:center;gap:10px;padding:48px 16px;font-size:14px;display:flex}.girador{border:2px solid var(--color-borde);border-top-color:var(--color-acento);border-radius:50%;flex-shrink:0;width:18px;height:18px;animation:.6s linear infinite girar}@keyframes girar{to{transform:rotate(360deg)}}.app-layout{min-height:100vh}.app-header{background:var(--color-superficie);border-bottom:1px solid var(--color-borde);z-index:10;flex-wrap:wrap;align-items:center;gap:24px;height:58px;padding:0 20px;display:flex;position:sticky;top:0}.app-marca{color:var(--color-acento);white-space:nowrap;align-items:center;gap:8px;font-weight:500;display:flex}.app-header nav{flex:1;gap:4px;display:flex}.app-header nav a{color:var(--color-texto-secundario);border-radius:var(--radio);transition:background .16s var(--ease-out), color .16s var(--ease-out);align-items:center;gap:6px;padding:8px 12px;font-size:14px;font-weight:500;text-decoration:none;display:flex}.app-header nav a:hover{background:var(--color-superficie-hover);color:var(--color-texto)}.app-header nav a.active{color:var(--color-acento);background:var(--color-acento-suave)}.app-usuario{color:var(--color-texto-secundario);align-items:center;gap:10px;font-size:14px;display:flex}.avatar-usuario{background:var(--color-acento-suave);width:28px;height:28px;color:var(--color-acento-oscuro);border-radius:50%;justify-content:center;align-items:center;font-size:12px;font-weight:500;display:flex}.app-usuario button{height:32px;color:var(--color-texto-secundario);align-items:center;gap:6px;padding:0 10px;display:flex}main{padding:24px 20px 64px}.pantalla-placeholder{text-align:center;max-width:640px;color:var(--color-texto-secundario);margin:0 auto;padding:64px 16px}.pantalla-captura{max-width:640px;margin:0 auto}.pantalla-captura section{background:var(--color-superficie);border:1px solid var(--color-borde);border-radius:var(--radio-tarjeta);box-shadow:var(--sombra-sm);opacity:0;animation:entrarSuave .26s var(--ease-out) forwards;margin-top:16px;padding:16px}@keyframes entrarSuave{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.pantalla-captura section:first-of-type{animation-delay:0s}.pantalla-captura section:nth-of-type(2){animation-delay:40ms}.pantalla-captura section:nth-of-type(3){animation-delay:80ms}.pantalla-captura section:nth-of-type(4){animation-delay:.12s}.pantalla-captura section:nth-of-type(5){animation-delay:.16s}.pantalla-captura section:nth-of-type(6){animation-delay:.2s}.pantalla-captura section:nth-of-type(7){animation-delay:.24s}.encabezado-captura{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.etiqueta-dia{background:var(--color-acento-suave);color:var(--color-acento-oscuro);border-radius:var(--radio);padding:5px 12px;font-size:13px;font-weight:500}.fila-doble{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));align-items:end;gap:0 12px;display:grid}.dato-automatico{background:var(--color-fondo);border-radius:var(--radio);color:var(--color-texto-secundario);margin:12px 0 0;padding:8px 12px;font-size:13px}.dato-automatico b{color:var(--color-texto);font-variant-numeric:tabular-nums}.lista-asistencia{flex-direction:column;gap:4px;display:flex}.fila-asistencia{border-radius:var(--radio);justify-content:space-between;align-items:center;padding:8px 10px;display:flex}.fila-asistencia:hover{background:var(--color-fondo)}.opcion-asistencia{color:var(--color-texto);cursor:pointer;align-items:center;gap:10px;margin:0;font-size:14px;display:flex}.boton-baja{height:30px;color:var(--color-texto-secundario);background:0 0;border-color:#0000;padding:0 10px;font-size:12px}.boton-baja:hover{color:var(--color-error);background:var(--color-error-fondo)}.separador-gestion{color:var(--color-texto-tenue);align-items:center;gap:10px;margin:16px 0 12px;font-size:12px;display:flex}.separador-gestion:before,.separador-gestion:after{content:"";background:var(--color-borde);flex:1;height:1px}.panel-gestion{background:var(--color-fondo);border:1px solid var(--color-borde);border-radius:var(--radio);opacity:1;transition:opacity .2s var(--ease-out), transform .2s var(--ease-out);margin-top:8px;padding:12px;transform:translateY(0)scale(1)}@starting-style{.panel-gestion{opacity:0;transform:translateY(-4px)scale(.98)}}.pantalla-reportes,.pantalla-precios{max-width:900px;margin:0 auto}.botones-exportar{gap:8px;display:flex}.selector-rango,.pantalla-reportes .tarjetas-kpi,.pantalla-reportes .tabla-envoltorio,.pantalla-reportes section,.pantalla-precios section,.pantalla-precios>.tabla-envoltorio{opacity:0;animation:entrarSuave .26s var(--ease-out) forwards}.selector-rango{background:var(--color-superficie);border:1px solid var(--color-borde);border-radius:var(--radio-tarjeta);box-shadow:var(--sombra-sm);margin-top:16px;padding:16px;animation-delay:0s}.pantalla-reportes .tarjetas-kpi{animation-delay:40ms}.pantalla-reportes .tabla-envoltorio{animation-delay:80ms}.pantalla-reportes section{animation-delay:.12s}.pantalla-precios section:first-of-type,.pantalla-precios>.tabla-envoltorio{animation-delay:0s}.pantalla-precios section:nth-of-type(2){animation-delay:40ms}.pantalla-precios section:nth-of-type(3){animation-delay:80ms}.tb-modo{gap:8px;margin-bottom:4px;display:flex}.tb-modo button.activo{background:var(--color-acento);color:var(--color-acento-texto);border-color:var(--color-acento)}.tarjetas-kpi{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin:16px 0;display:grid}.tarjetas-kpi>div{background:var(--color-superficie);border:1px solid var(--color-borde);border-radius:var(--radio);box-shadow:var(--sombra-sm);border-left:3px solid #0000;padding:12px 16px}.tarjetas-kpi>.tarjeta-kpi-positivo{border-left-color:var(--color-acento)}.tarjetas-kpi>.tarjeta-kpi-negativo{border-left-color:var(--color-error)}.aviso-sin-datos{background:var(--color-fondo);border:1px dashed var(--color-borde-fuerte);border-radius:var(--radio-tarjeta);color:var(--color-texto-secundario);text-align:center;margin:16px 0;padding:16px;font-size:14px}.contenido-reportes{transition:opacity .16s var(--ease-out)}.contenido-reportes.cargando-suave{opacity:.55;pointer-events:none}.tarjetas-kpi span{color:var(--color-texto-secundario);margin-bottom:4px;font-size:13px;display:block}.tarjetas-kpi b{font-variant-numeric:tabular-nums;font-size:22px;font-weight:500}.positivo{color:var(--color-exito)}.negativo{color:var(--color-error)}.tabla-envoltorio{background:var(--color-superficie);border:1px solid var(--color-borde);border-radius:var(--radio-tarjeta);box-shadow:var(--sombra-sm);overflow-x:auto}table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:14px}th{text-align:left;color:var(--color-texto-secundario);border-bottom:1px solid var(--color-borde);white-space:nowrap;padding:10px 12px;font-weight:500}td{border-bottom:1px solid var(--color-borde);white-space:nowrap;padding:10px 12px}tbody tr:last-child td{border-bottom:none}tbody tr{transition:background .12s var(--ease-out)}tbody tr:nth-child(2n){background:var(--color-fondo)}tbody tr:hover{background:var(--color-acento-suave)}.tabla-envoltorio th:first-child,.tabla-envoltorio td:first-child{z-index:1;position:sticky;left:0}.tabla-envoltorio th:first-child{background:var(--color-superficie);z-index:2}.tabla-envoltorio td:first-child{background:var(--color-superficie);transition:background .12s var(--ease-out)}.tabla-envoltorio tbody tr:nth-child(2n) td:first-child{background:var(--color-fondo)}.tabla-envoltorio tbody tr:hover td:first-child{background:var(--color-acento-suave)}.n{text-align:right}.texto-atenuado{color:var(--color-texto-tenue);white-space:normal}.nt{color:var(--color-texto-secundario);margin:16px 0 0;font-size:13px}.pantalla-precios>.mensaje-exito{margin-top:16px}.pantalla-precios section{margin-top:28px}.encabezado-seccion{margin-bottom:12px}.encabezado-seccion h2{margin:0}.pantalla-precios .panel-gestion{margin:0 0 12px}.panel-editor-titulo{color:var(--color-texto);margin:0;font-size:14px}.texto-secundario{color:var(--color-texto-secundario)}.botones-editor{flex-wrap:wrap;gap:8px;margin-top:12px;display:flex}.boton-guardar{background:var(--color-acento);color:var(--color-acento-texto);border-color:var(--color-acento)}.boton-guardar:hover:not(:disabled){background:var(--color-acento-oscuro);border-color:var(--color-acento-oscuro)}.aviso-pasado{border-radius:var(--radio);background:var(--color-error-fondo);color:var(--color-texto);margin-top:12px;padding:10px 12px;font-size:13px}.aviso-pasado p{margin:0}.aviso-pasado .botones-editor{margin-top:10px}.aviso-faltantes{border-radius:var(--radio-tarjeta);background:var(--color-error-fondo);color:var(--color-texto);border:1px solid #f0c9c6;margin:16px 0 0;padding:12px 14px;font-size:13px}.aviso-faltantes p{margin:0}.aviso-faltantes b{color:var(--color-error)}.aviso-faltantes a{color:var(--color-error);margin-top:8px;font-weight:500;display:inline-block}.pantalla-reportes .aviso-faltantes{margin-bottom:16px}.lista-pendientes{flex-direction:column;gap:6px;margin:10px 0 0;padding:0;list-style:none;display:flex}.lista-pendientes li{border-radius:var(--radio);background:var(--color-superficie);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:8px 10px;display:flex}.lista-pendientes li b{color:var(--color-texto)}.lista-pendientes button{height:32px;padding:0 12px;font-size:13px}.marca-faltante{color:var(--color-error);font-weight:600}.solo-lector{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (width<=640px){.app-header{gap:10px;height:auto;padding:10px 12px}.app-header nav{background:var(--color-superficie);border-top:1px solid var(--color-borde);padding:6px 8px calc(6px + env(safe-area-inset-bottom));z-index:20;order:3;justify-content:space-around;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -2px 8px #211f1c0f}.app-header nav a{flex-direction:column;flex:1;justify-content:center;gap:2px;padding:6px 10px;font-size:11px}main{padding:16px 12px 84px}}
