html{height:100%}body{padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right);-webkit-text-size-adjust:100%;overscroll-behavior-y:none}button,a,[role=button]{-webkit-tap-highlight-color:transparent}input,select,textarea{font-size:max(16px,1em)}@media all and (display-mode: standalone){body{background-color:var(--bg)}}:root{--bg: #09090c;--bg-2: #111115;--card: rgba(255, 255, 255, .04);--border: rgba(255, 255, 255, .09);--border-gold: rgba(201, 168, 76, .22);--text: #f0f0f2;--muted: #8a8a96;--gold: #c9a84c;--gold-2: #e0bd5e;--gold-glow: rgba(201, 168, 76, .35);--danger: #e05252;--ok: #2ecc71;--blur: blur(20px) saturate(160%);--blur-sm: blur(12px) saturate(140%);--btn-h: 72px;--btn-h-xl: 100px;--keypad-btn: 96px;--dot-size: 26px;--radius: 18px;--radius-lg: 22px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);font-size:20px;-webkit-font-smoothing:antialiased;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;overscroll-behavior:none}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse 80% 60% at 15% 15%,rgba(201,168,76,.07) 0%,transparent 60%),radial-gradient(ellipse 60% 50% at 85% 80%,rgba(46,204,113,.05) 0%,transparent 55%),radial-gradient(ellipse 50% 40% at 50% 50%,rgba(52,152,219,.03) 0%,transparent 60%);pointer-events:none;z-index:0}#root{position:relative;z-index:1}.app{min-height:100vh;display:flex;flex-direction:column}.header{padding:14px 28px;display:flex;justify-content:space-between;align-items:center;background:#09090cbf;backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);border-bottom:1px solid var(--border-gold);flex-shrink:0;position:sticky;top:0;z-index:50}.header h1{font-size:19px;letter-spacing:4px;color:var(--gold);text-transform:uppercase;font-weight:800;text-shadow:0 0 24px var(--gold-glow)}.clock{color:var(--muted);font-variant-numeric:tabular-nums;font-size:17px;letter-spacing:1px}.container{flex:1;padding:clamp(16px,4vw,28px) clamp(12px,4vw,24px);max-width:1200px;margin:0 auto;width:100%;overflow-x:hidden}.home-header{text-align:center;padding:28px 0 16px}.home-clock{font-size:clamp(60px,12vw,96px);font-weight:900;font-variant-numeric:tabular-nums;color:var(--gold);letter-spacing:6px;line-height:1;text-shadow:0 0 40px rgba(201,168,76,.5),0 0 80px rgba(201,168,76,.2),0 2px 4px rgba(0,0,0,.5)}.home-date{font-size:22px;color:var(--muted);margin-top:10px;text-transform:capitalize}.home-title{font-size:clamp(28px,5vw,44px);font-weight:900;margin:24px 0 6px;text-align:center}.home-subtitle{color:var(--muted);font-size:18px;text-align:center;margin-bottom:28px}.workers-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:20px;padding-bottom:8px}.worker-btn{background:#ffffff08;backdrop-filter:var(--blur-sm);-webkit-backdrop-filter:var(--blur-sm);border:1px solid var(--border);color:var(--text);border-radius:var(--radius-lg);padding:28px 16px 24px;font-size:22px;font-weight:700;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:14px;transition:all .2s cubic-bezier(.34,1.3,.64,1);min-height:190px;justify-content:center;box-shadow:0 4px 16px #0000004d,inset 0 1px #ffffff0d}.worker-btn:hover{border-color:#c9a84c73;background:#c9a84c0f;box-shadow:0 8px 32px #c9a84c2e,0 0 0 1px #c9a84c26,inset 0 1px #ffffff14;transform:translateY(-3px) scale(1.02)}.worker-btn:active{transform:scale(.95) translateY(0)}.worker-avatar{width:88px;height:88px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:42px;font-weight:900;color:#fff;flex-shrink:0;text-shadow:0 2px 8px rgba(0,0,0,.4);box-shadow:0 4px 20px #0006,inset 0 1px #fff3}.home-footer-link{display:block;width:100%;text-align:center;color:var(--muted);font-size:15px;padding:24px 0 12px;cursor:pointer;text-decoration:underline;text-underline-offset:4px;background:transparent;border:none;outline:none;transition:color .15s}.home-footer-link:hover{color:var(--text)}.card{background:#ffffff09;backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);border:1px solid var(--border);border-top:1px solid rgba(255,255,255,.12);border-radius:var(--radius-lg);padding:clamp(20px,5vw,32px) clamp(16px,5vw,28px);box-shadow:0 8px 40px #00000073,inset 0 1px #ffffff0f}.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;background:linear-gradient(180deg,#d4b050,#c9a84c 60%,#b8952e);color:#0f0e08;border:none;border-radius:var(--radius);padding:0 28px;height:var(--btn-h);font-size:22px;font-weight:800;cursor:pointer;white-space:nowrap;transition:all .15s;box-shadow:0 4px 20px #c9a84c66,0 1px #ffffff40 inset,0 -1px #0003 inset;letter-spacing:.3px}.btn:hover{box-shadow:0 6px 28px #c9a84c99,0 1px #ffffff40 inset;filter:brightness(1.08)}.btn:active{transform:scale(.97) translateY(1px);box-shadow:0 2px 12px #c9a84c4d;filter:brightness(.92)}.btn:disabled{opacity:.38;pointer-events:none}.btn-big{width:100%;height:var(--btn-h-xl);font-size:28px;border-radius:var(--radius-lg);letter-spacing:1px}.btn-ghost{background:#ffffff0d;backdrop-filter:var(--blur-sm);-webkit-backdrop-filter:var(--blur-sm);color:var(--text);border:1px solid var(--border);box-shadow:0 2px 8px #0003,inset 0 1px #ffffff0d}.btn-ghost:hover{border-color:#c9a84c66;color:var(--gold);background:#c9a84c0f;box-shadow:0 4px 16px #c9a84c26}.btn-danger{background:linear-gradient(180deg,#e86060,#e05252);color:#fff;box-shadow:0 4px 20px #e0525266}.btn-ok{background:linear-gradient(180deg,#3de07a,#2ecc71);color:#fff;box-shadow:0 4px 20px #2ecc7166}.back-btn{display:inline-flex;align-items:center;gap:8px;color:var(--muted);background:#ffffff0a;backdrop-filter:var(--blur-sm);-webkit-backdrop-filter:var(--blur-sm);border:1px solid var(--border);border-radius:14px;padding:12px 20px;font-size:17px;font-weight:600;cursor:pointer;transition:all .15s;margin-bottom:20px;box-shadow:0 2px 8px #0003}.back-btn:hover{color:var(--text);border-color:#fff3;background:#ffffff12}.back-btn:active{transform:scale(.97)}.tipo-split{display:grid;grid-template-columns:1fr 1fr;gap:clamp(10px,3vw,16px);margin:16px 0 24px}.tipo-btn{height:clamp(120px,22vw,160px);border-radius:24px;border:none;font-size:clamp(22px,4vw,30px);font-weight:900;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;letter-spacing:2px;text-transform:uppercase;transition:all .15s cubic-bezier(.34,1.3,.64,1);position:relative;overflow:hidden}.tipo-btn:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,rgba(255,255,255,.12) 0%,transparent 60%);border-radius:inherit;pointer-events:none}.tipo-btn:hover{transform:translateY(-3px) scale(1.02)}.tipo-btn:active{transform:scale(.95)}.tipo-btn-entrada{background:linear-gradient(145deg,#1a5c35,#27ae60);color:#fff;box-shadow:0 8px 32px #2ecc7159,inset 0 1px #fff3}.tipo-btn-entrada:hover{box-shadow:0 12px 40px #2ecc7180}.tipo-btn-salida{background:linear-gradient(145deg,#5c1a1a,#e05252);color:#fff;box-shadow:0 8px 32px #e0525259,inset 0 1px #fff3}.tipo-btn-salida:hover{box-shadow:0 12px 40px #e0525280}.tipo-icon{font-size:52px;line-height:1}.tipo-badge{display:inline-block;padding:7px 18px;border-radius:999px;font-size:15px;font-weight:800;letter-spacing:2px;text-transform:uppercase;margin-bottom:14px}.tipo-badge-entrada{background:#2ecc711f;color:var(--ok);border:1.5px solid rgba(46,204,113,.5)}.tipo-badge-salida{background:#e052521f;color:var(--danger);border:1.5px solid rgba(224,82,82,.5)}.pin-display{display:flex;gap:20px;justify-content:center;margin:24px 0 16px}.pin-dot{width:var(--dot-size);height:var(--dot-size);border-radius:50%;border:2.5px solid rgba(255,255,255,.2);transition:all .15s cubic-bezier(.34,1.56,.64,1);background:transparent}.pin-dot.filled{background:var(--gold);border-color:var(--gold);transform:scale(1.25);box-shadow:0 0 14px #c9a84cb3,0 0 28px #c9a84c4d;animation:dotPop .18s cubic-bezier(.34,1.56,.64,1)}@keyframes dotPop{0%{transform:scale(.6)}to{transform:scale(1.25)}}.keypad{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(8px,2.5vw,12px);max-width:min(360px,100%);margin:0 auto 20px}.keypad button{background:#ffffff0a;backdrop-filter:var(--blur-sm);-webkit-backdrop-filter:var(--blur-sm);border:1px solid rgba(255,255,255,.09);color:var(--text);border-radius:var(--radius);font-size:clamp(24px,6vw,32px);font-weight:700;cursor:pointer;height:clamp(70px,18vw,var(--keypad-btn));display:flex;align-items:center;justify-content:center;transition:all .1s;-webkit-tap-highlight-color:transparent;box-shadow:0 2px 8px #00000040,inset 0 1px #ffffff0f}.keypad button:hover{background:#ffffff12;border-color:#ffffff26}.keypad button:active{background:#c9a84cd9;color:#111;border-color:var(--gold);transform:scale(.91);box-shadow:0 0 20px #c9a84c80}.keypad button.key-back{font-size:26px}.keypad button.key-clear{font-size:19px;color:var(--muted)}.otp-inputs{display:flex;gap:clamp(6px,2vw,10px);justify-content:center;margin:20px 0;flex-wrap:nowrap}.otp-inputs input{width:clamp(42px,12vw,58px);height:clamp(56px,15vw,76px);flex-shrink:0;border-radius:14px;border:2px solid rgba(255,255,255,.1);background:#ffffff0a;backdrop-filter:var(--blur-sm);-webkit-backdrop-filter:var(--blur-sm);color:var(--text);text-align:center;font-size:34px;font-weight:800;caret-color:var(--gold);transition:all .15s;box-shadow:0 2px 8px #0003,inset 0 1px #ffffff0a}.otp-inputs input:focus{outline:none;border-color:#c9a84cb3;box-shadow:0 0 0 3px #c9a84c2e,inset 0 1px #ffffff0a}.confirm-screen{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:40px 24px;z-index:100;animation:fadeIn .25s ease;overflow:hidden}.confirm-screen.entrada{background:radial-gradient(ellipse at 30% 30%,rgba(46,204,113,.3) 0%,transparent 60%),radial-gradient(ellipse at 70% 70%,rgba(39,174,96,.2) 0%,transparent 60%),linear-gradient(160deg,#030f07,#071a0e,#0d2e19)}.confirm-screen.salida{background:radial-gradient(ellipse at 30% 30%,rgba(224,82,82,.3) 0%,transparent 60%),radial-gradient(ellipse at 70% 70%,rgba(192,57,43,.2) 0%,transparent 60%),linear-gradient(160deg,#0f0303,#1a0707,#2e0d0d)}.confirm-check{font-size:clamp(100px,18vw,140px);line-height:1;animation:bounceIn .5s cubic-bezier(.34,1.56,.64,1) both;filter:drop-shadow(0 0 40px rgba(255,255,255,.3))}.confirm-big{font-size:clamp(48px,10vw,80px);font-weight:900;margin:12px 0 8px;letter-spacing:6px;animation:fadeUp .4s .2s ease both;text-shadow:0 0 40px rgba(255,255,255,.2)}.confirm-name{font-size:30px;font-weight:700;opacity:.92;animation:fadeUp .4s .3s ease both}.confirm-time{font-size:18px;opacity:.6;margin-top:8px;animation:fadeUp .4s .4s ease both}.confirm-back-btn{margin-top:40px;background:#ffffff1a;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);color:#fff;border:1.5px solid rgba(255,255,255,.25);border-radius:16px;padding:16px 40px;font-size:18px;font-weight:700;cursor:pointer;animation:fadeUp .4s .5s ease both;transition:all .15s;box-shadow:0 4px 20px #0000004d}.confirm-back-btn:hover{background:#ffffff2e}.confirm-back-btn:active{transform:scale(.97)}.confirm-bar{position:absolute;bottom:0;left:0;height:5px;background:#ffffff4d;animation:countdown 4s linear forwards}.fichaje-worker-header{text-align:center;padding:8px 0 20px}.fichaje-worker-name{font-size:clamp(28px,6vw,44px);font-weight:900}.fichaje-worker-time{font-size:18px;color:var(--muted);margin-top:4px}.step-label{font-size:24px;font-weight:700;text-align:center;margin-bottom:6px}.step-sub{font-size:16px;color:var(--muted);text-align:center;margin-bottom:8px}.title{font-size:32px;font-weight:800;margin-bottom:16px}.subtitle{color:var(--muted);margin-bottom:20px;font-size:17px}.error{color:var(--danger);font-size:17px;font-weight:600;text-align:center;padding:10px 0}.success{color:var(--ok)}.center{text-align:center}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:13px 10px;border-bottom:1px solid rgba(255,255,255,.06);vertical-align:middle}th{color:var(--gold);font-size:12px;text-transform:uppercase;letter-spacing:1.5px;font-weight:700;padding-bottom:10px}tr:hover td{background:#ffffff05}input[type=text],input[type=password],input[type=date],input[type=number],select,textarea{background:#ffffff0d;backdrop-filter:var(--blur-sm);-webkit-backdrop-filter:var(--blur-sm);border:1px solid rgba(255,255,255,.1);color:var(--text);border-radius:12px;padding:13px 16px;font-size:17px;width:100%;transition:border-color .15s,box-shadow .15s;box-shadow:inset 0 1px 3px #0003}input:focus,select:focus,textarea:focus{outline:none;border-color:#c9a84c99;box-shadow:0 0 0 3px #c9a84c26,inset 0 1px 3px #00000026}label{display:block;color:var(--muted);margin:14px 0 6px;font-size:12px;letter-spacing:1px;text-transform:uppercase;font-weight:600}.row{display:flex;gap:16px;flex-wrap:wrap}.row>*{flex:1;min-width:180px}.tabs{display:flex;gap:4px;margin-bottom:24px;border-bottom:1px solid rgba(255,255,255,.08);overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:none;scroll-snap-type:x proximity}.tabs::-webkit-scrollbar{display:none}.tab{padding:14px 22px;background:transparent;color:var(--muted);border:none;border-bottom:2.5px solid transparent;margin-bottom:-1px;cursor:pointer;font-size:16px;font-weight:600;transition:color .15s,border-color .15s;letter-spacing:.3px;white-space:nowrap;flex-shrink:0;scroll-snap-align:start;min-height:44px}.tab.active{color:var(--gold);border-bottom-color:var(--gold);text-shadow:0 0 12px var(--gold-glow)}.tab:hover:not(.active){color:var(--text)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeUp{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}@keyframes bounceIn{0%{transform:scale(.2);opacity:0}to{transform:scale(1);opacity:1}}@keyframes countdown{0%{width:100%}to{width:0%}}@keyframes shimmer{0%{background-position:-200% center}to{background-position:200% center}}.landing-nav-links{display:flex;gap:28px;align-items:center}.landing-nav-acceder{display:flex}.landing-faq-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 80px;align-items:start}.landing-footer-grid{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:40px;margin-bottom:48px}.landing-collage-side,.landing-collage-badge{display:block}.landing-hero-grid{display:grid;grid-template-columns:38% 62%}.landing-hero-left{display:flex}.landing-2col-grid{display:grid;grid-template-columns:1fr 1fr;gap:80px;align-items:center}@media (max-width: 680px){.landing-nav-links,.landing-nav-acceder{display:none}.landing-faq-grid{grid-template-columns:1fr;gap:40px 0}.landing-footer-grid{grid-template-columns:1fr 1fr;gap:28px 24px}.landing-footer-grid>div:first-child{grid-column:1 / -1}.landing-footer-grid>div:last-child{grid-column:1 / -1}.landing-collage-side,.landing-collage-badge{display:none}.landing-hero-grid{grid-template-columns:1fr}.landing-hero-left{display:none!important}.landing-2col-grid{grid-template-columns:1fr;gap:40px}.landing-hero-badge{font-size:10px!important;padding:4px 9px!important;letter-spacing:0!important;gap:4px!important}.landing-hero-badges{gap:6px!important}}table{width:100%;max-width:100%;border-collapse:collapse}.table-responsive,.admin-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}img,video,canvas{max-width:100%;height:auto}@media (max-width: 768px){.container{padding-top:16px;padding-bottom:16px}.home-date{font-size:17px}.home-subtitle{font-size:15px}}@media (max-width: 400px){.tipo-split{gap:8px}.home-date{font-size:15px}.btn{padding-left:clamp(12px,4vw,22px);padding-right:clamp(12px,4vw,22px)}}header[role=banner],.sticky-top{padding-top:env(safe-area-inset-top)}
