:root{--acento: #1F6F5C;--acento-rgb: 31, 111, 92;--acento-fill: #1F6F5C;--acento-fill-oscuro: #17564A;--fondo: #F5F6F1;--panel: #FFFFFF;--borde: #DFE1D9;--texto: #23282B;--tenue: #6E7570;--ok: #3F8F52;--ok-rgb: 63, 143, 82;--error: #C1442D;--error-rgb: 193, 68, 45;--ambar: #C17817;--ambar-rgb: 193, 120, 23;color-scheme:light}@media(prefers-color-scheme:dark){:root{--acento: #4CBB9A;--acento-rgb: 76, 187, 154;--fondo: #14181A;--panel: #1B2022;--borde: #2B3234;--texto: #E8E9E4;--tenue: #93A29B;--ok: #5FBE7E;--ok-rgb: 95, 190, 126;--error: #E2685A;--error-rgb: 226, 104, 90;--ambar: #E0A542;--ambar-rgb: 224, 165, 66;color-scheme:dark}}*{box-sizing:border-box}body{margin:0;background:var(--fondo);color:var(--texto);font-family:system-ui,-apple-system,Segoe UI,sans-serif;-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}.fichar{min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;padding:1.5rem 1rem calc(1.5rem + env(safe-area-inset-bottom));position:relative;text-align:center}.titulo{font-size:1.75rem;margin:0}.subtitulo{color:var(--tenue);margin:0 0 .5rem}.tenue{color:var(--tenue)}.atras{position:absolute;top:1rem;left:1rem;background:none;border:none;color:var(--tenue);font-size:2rem;line-height:1;padding:.5rem 1rem}.lista{display:flex;flex-direction:column;gap:.75rem;width:100%;max-width:22rem}.opcion{background:var(--panel);border:1px solid var(--borde);color:var(--texto);border-radius:1rem;padding:1.25rem;font-size:1.25rem;font-weight:600}.opcion:active{background:var(--acento-fill);color:#fff}.chip-marca{border-radius:.75rem;padding:.5rem 1rem;margin:0 0 .5rem;font-size:.95rem;border:1px solid}.chip-marca.entrada{background:rgba(var(--ok-rgb),.12);border-color:var(--ok);color:var(--ok)}.chip-marca.salida{background:rgba(var(--acento-rgb),.12);border-color:var(--acento);color:var(--acento)}.chip-marca.aviso{background:rgba(var(--ambar-rgb),.12);border-color:var(--ambar);color:var(--ambar);font-size:.85rem}.puntos{display:flex;gap:.75rem;margin:1rem 0 1.5rem}.punto{width:1rem;height:1rem;border-radius:50%;border:2px solid var(--borde);background:transparent;transition:background .1s,border-color .1s}.punto.lleno{background:var(--acento);border-color:var(--acento)}.teclado{display:grid;grid-template-columns:repeat(3,5rem);gap:.9rem}.tecla{width:5rem;height:5rem;border-radius:50%;background:var(--panel);border:1px solid var(--borde);color:var(--texto);font-size:1.75rem;font-weight:500}.tecla:active{background:var(--acento-fill);color:#fff}.tecla.borrar{font-size:1.4rem;color:var(--tenue)}.error{color:var(--error);background:rgba(var(--error-rgb),.1);border:1px solid rgba(var(--error-rgb),.3);border-radius:.75rem;padding:.75rem 1rem;max-width:22rem;margin:0}.ok-marca{width:6rem;height:6rem;border-radius:50%;background:var(--ok);color:#fff;font-size:3.5rem;line-height:6rem;font-weight:700}.ok-titulo{font-size:1.5rem;margin:.5rem 0 0}.ok-hora{font-size:3.5rem;font-weight:700;margin:0;letter-spacing:.02em}.ok-nombre{color:var(--tenue);margin:0 0 1rem}.btn-secundario{background:transparent;border:1px solid var(--borde);color:var(--texto);border-radius:.75rem;padding:.75rem 2rem}.spinner{width:3rem;height:3rem;border-radius:50%;border:4px solid var(--borde);border-top-color:var(--acento);animation:girar .8s linear infinite}@keyframes girar{to{transform:rotate(360deg)}}.admin-link{position:fixed;bottom:.75rem;left:0;right:0;text-align:center;font-size:.75rem;color:var(--tenue);opacity:.6;text-decoration:none}.admin-link:hover{opacity:1}@media(prefers-reduced-motion:reduce){.spinner{animation-duration:3s}}.app{max-width:68rem;margin:0 auto;padding:1rem}.barra{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;padding:1rem 0;border-bottom:1px solid var(--borde);margin-bottom:1.5rem}.barra nav{display:flex;gap:.25rem;flex-wrap:wrap}.barra a,.barra button.tab{background:none;border:none;color:var(--tenue);padding:.5rem .9rem;border-radius:.5rem}.barra button.tab.activa{background:rgba(var(--acento-rgb),.12);color:var(--acento);font-weight:600}.barra .crecer{flex:1}button.tab:disabled{opacity:.5;cursor:not-allowed}.tarjeta{background:var(--panel);border:1px solid var(--borde);border-radius:1rem;padding:1.25rem;margin-bottom:1rem;box-shadow:0 1px 2px #23282b0a,0 6px 16px -10px #23282b2e}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:.6rem .5rem;border-bottom:1px solid var(--borde)}th{color:var(--tenue);font-weight:500;font-size:.85rem}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}.chip{border-radius:999px;padding:.15rem .6rem;font-size:.75rem;font-weight:600}.chip.ausente{background:rgba(var(--error-rgb),.15);color:var(--error)}.chip.incompleto{background:rgba(var(--ambar-rgb),.15);color:var(--ambar)}.chip.ok{background:rgba(var(--ok-rgb),.15);color:var(--ok)}.positivo{color:var(--ok)}.negativo{color:var(--error)}input,select{background:var(--panel);border:1px solid var(--borde);color:var(--texto);border-radius:.5rem;padding:.6rem .75rem;font:inherit}input:focus,select:focus{outline:2px solid var(--acento);outline-offset:1px}.btn{background:var(--acento-fill);border:none;color:#fff;border-radius:.5rem;padding:.6rem 1.1rem;font-weight:600}.btn:active{background:var(--acento-fill-oscuro)}.btn:disabled{opacity:.5;cursor:not-allowed}.tabla-scroll{overflow-x:auto}.login{min-height:100dvh;display:grid;place-items:center}.login form{display:flex;flex-direction:column;gap:.75rem;width:min(22rem,90vw)}.form-inline{display:flex;flex-direction:column;gap:.75rem;background:var(--fondo);border:1px solid var(--borde);border-radius:.75rem;padding:1rem;margin-bottom:1rem;max-width:32rem}.form-inline label{display:flex;flex-direction:column;gap:.3rem;font-size:.9rem;color:var(--tenue)}.form-inline input,.form-inline select{width:100%}.form-inline>div{display:flex;gap:.5rem}.dias-semana{display:flex;gap:.6rem;flex-wrap:wrap}.dia-check{flex-direction:row!important;align-items:center;gap:.3rem!important;width:auto}.detalle-colaborador{background:var(--fondo);border:1px solid var(--borde);border-radius:.75rem;padding:1rem}.banner-pin{background:rgba(var(--acento-rgb),.12);border:1px solid var(--acento);border-radius:.75rem;padding:1rem;margin-bottom:1rem}
