:root{--verde: #0a6547;--verde-oscuro: #08503a;--verde-claro: #dff2e8;--fondo: #eef2f0;--texto: #1c2b25;--gris: #6a7a73;--borde: #d3dbd7;--rojo: #a01919;--naranja: #b4540a}*{box-sizing:border-box;margin:0}html,body,#root{height:100%}body{font-family:Segoe UI,system-ui,sans-serif;background:var(--fondo);color:var(--texto);-webkit-user-select:none;user-select:none;touch-action:manipulation}.kiosk{height:100%;display:flex;flex-direction:column}.kiosk-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 24px;background:var(--verde);color:#fff}.kiosk-brand{display:flex;flex-direction:column;gap:2px;min-width:0}.kiosk-brand strong{font-size:26px;line-height:1.15;letter-spacing:.04em}.kiosk-brand span{font-size:14px;opacity:.88;overflow-wrap:anywhere;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden}.kiosk-clock{text-align:right;display:flex;flex-direction:column;flex-shrink:0}.kiosk-clock strong{font-size:40px;line-height:1;font-variant-numeric:tabular-nums}.kiosk-clock span{font-size:13px;opacity:.85}.kiosk-main{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;padding:16px;overflow-y:auto}.kiosk-footer{display:flex;justify-content:space-between;padding:8px 24px;font-size:12px;color:var(--gris)}.kiosk-footer .link{background:none;border:0;color:var(--gris);font:inherit;cursor:pointer;text-decoration:underline}.card{width:min(460px,100%);background:#fff;border:1px solid var(--borde);border-radius:16px;padding:24px;box-shadow:0 12px 40px #00000014;display:flex;flex-direction:column;gap:16px}.card h1{font-size:20px;color:var(--verde)}.card .hint{font-size:14px;color:var(--gris)}.message{font-weight:600;font-size:15px;padding:10px 12px;border-radius:8px}.message.error{background:#fdecec;color:var(--rojo)}.btn{height:56px;padding:0 24px;border-radius:12px;font-size:18px;font-weight:700;cursor:pointer;border:2px solid var(--verde);background:#fff;color:var(--verde)}.btn.primary{background:var(--verde);color:#fff}.btn.primary:active{background:var(--verde-oscuro)}.btn:disabled{opacity:.5;cursor:default}.btn.wide{width:100%}.row{display:flex;gap:12px}.row .btn{flex:1}.fields{display:grid;grid-template-columns:1fr 1fr;gap:12px}.field{display:flex;flex-direction:column;gap:4px;min-width:0;font-size:13px;font-weight:700;color:var(--gris);cursor:pointer}.field .box{height:60px;display:flex;align-items:center;justify-content:center;font-size:30px;color:var(--texto);letter-spacing:4px;border:2px solid var(--borde);border-radius:12px;background:#fff;font-variant-numeric:tabular-nums;overflow:hidden}.field.active .box{border-color:var(--verde);box-shadow:0 0 0 3px var(--verde-claro)}.keypad{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.keypad button{height:64px;font-size:26px;font-weight:600;border:1px solid var(--borde);border-radius:12px;background:#f7faf8;color:var(--texto);cursor:pointer}.keypad button:active{background:var(--verde-claro)}.keypad button.ok{background:var(--verde-claro);color:var(--verde);font-size:20px}.keypad button.del{color:var(--rojo)}.setup-input{width:100%;height:56px;font-size:22px;text-align:center;letter-spacing:2px;text-transform:uppercase;border:2px solid var(--borde);border-radius:12px;font-family:Consolas,monospace}.scan-view{position:relative;width:100%;aspect-ratio:4 / 3;max-height:52vh;background:#000;border-radius:14px;overflow:hidden}.scan-view video{width:100%;height:100%;object-fit:cover}.scan-view video.mirror{transform:scaleX(-1)}.scan-view .frame{position:absolute;top:12%;right:22%;bottom:12%;left:22%;border:3px solid rgba(255,255,255,.85);border-radius:14px;background:#000;pointer-events:none}.scan-view.login-cam{aspect-ratio:1 / 1;width:294px;max-width:85%;max-height:none;margin:0 auto}.scan-view.login-cam .frame{top:16%;right:16%;bottom:16%;left:16%}.date-btn{font:inherit;font-size:19px;font-weight:700;padding:12px 18px;border:1px solid #b9c6c0;border-radius:10px;background:#fff;color:#1c2b25;cursor:pointer;width:100%}.cal-fondo{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f19148c;display:flex;align-items:center;justify-content:center;z-index:50;padding:16px}.cal{background:#fff;border-radius:18px;padding:22px 22px 20px;width:min(94vw,620px);max-height:94vh;box-shadow:0 12px 40px #0000004d;display:flex;flex-direction:column;gap:14px}.cal-titulo{text-align:center;font-size:18px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#6a7a73}.cal-cab{display:flex;align-items:center;justify-content:space-between;gap:8px}.cal-cab strong{font-size:30px;text-transform:capitalize}.cal-cab button{font:inherit;font-size:38px;line-height:1;width:74px;height:66px;border:1px solid #b9c6c0;border-radius:12px;background:#fff;cursor:pointer}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:8px}.cal-dow{text-align:center;font-size:17px;font-weight:700;color:#6a7a73;padding-bottom:2px}.cal-dia{font:inherit;font-size:27px;height:66px;border:1px solid #e3e9e5;border-radius:12px;background:#fff;cursor:pointer}.cal-dia.hoy{border-color:#0a6547;color:#0a6547;font-weight:700}.cal-dia.sel{background:#0a6547;border-color:#0a6547;color:#fff;font-weight:700}.cal-pie{display:flex;gap:10px}.cal-pie .btn{flex:1}.cam-hint-fuera{text-align:center;font-size:23px;font-weight:700;color:#b4540a;margin-top:10px}.scan-view.login-cam video,.scan-view.login-cam .frame{transition:opacity .35s}.scan-view.login-cam.dormida video,.scan-view.login-cam.dormida .frame{opacity:0}.confirm{text-align:center;align-items:center}.confirm-kind{font-size:44px;font-weight:900;letter-spacing:2px;padding:10px 28px;border-radius:14px}.confirm-kind.in{background:var(--verde-claro);color:var(--verde)}.confirm-kind.out{background:#fdf1e6;color:var(--naranja)}.confirm-reason{font-size:22px;font-weight:700;color:var(--naranja)}.confirm-user{font-size:24px;font-weight:700}.confirm-q{color:var(--gris);font-size:16px}.confirm .row{width:100%}.done{text-align:center;align-items:center;padding:40px 24px}.done-check{width:96px;height:96px;border-radius:50%;background:var(--verde);color:#fff;font-size:56px;display:flex;align-items:center;justify-content:center}.done-text{font-size:20px;font-weight:700}.since{font-size:18px;font-weight:700;color:var(--verde)}.reasons-label{font-size:14px;color:var(--gris);font-weight:700}.reasons{display:grid;grid-template-columns:1fr 1fr;gap:10px}.reasons button{height:64px;font-size:18px;font-weight:700;border:2px solid var(--borde);border-radius:12px;background:#fff;color:var(--texto);cursor:pointer}.reasons button:active{background:var(--verde-claro)}.reasons button.end{grid-column:span 2;background:var(--naranja);border-color:var(--naranja);color:#fff}.history{width:min(560px,100%)}.history-filter{display:flex;gap:12px}.history-filter label{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px;font-size:13px;font-weight:700;color:var(--gris)}.history-filter input{width:100%;min-width:0;box-sizing:border-box;height:44px;font-size:16px;padding:0 10px;border:1px solid var(--borde);border-radius:10px}.range-chips{display:flex;flex-wrap:wrap;gap:8px}.range-chips .chip{flex:1 1 auto;height:38px;padding:0 12px;border:1px solid var(--borde);border-radius:19px;background:#fff;color:var(--texto);font-family:inherit;font-size:14px;font-weight:700;cursor:pointer}.range-chips .chip.active{background:var(--verde);border-color:var(--verde);color:#fff}.history-list{max-height:40vh;overflow-y:auto;display:flex;flex-direction:column;gap:8px}.history-day{border:1px solid var(--borde);border-radius:10px;padding:8px 12px}.history-head{display:flex;justify-content:space-between;font-size:15px}.history-head b{color:var(--verde)}.history-head .open{color:var(--rojo);font-size:12px}.history-entry{display:grid;grid-template-columns:56px 90px 1fr;gap:8px;font-size:14px;padding:3px 0}.history-entry em{font-style:normal;font-weight:700}.history-entry em.in{color:var(--verde)}.history-entry em.out{color:var(--naranja)}.history-entry i{color:var(--gris);font-style:normal}.empty{color:var(--gris);padding:12px}.mail-row{display:flex;gap:10px}.mail-row input{flex:1;min-width:0;height:56px;font-size:18px;padding:0 12px;border:2px solid var(--borde);border-radius:12px}.mail-row .btn{white-space:nowrap;padding:0 16px}@media (max-width: 480px){.mail-row{flex-direction:column}.mail-row .btn{width:100%}.kiosk-header{padding:10px 16px}.kiosk-clock strong{font-size:30px}.card{padding:16px}}@media print{.kiosk-header,.kiosk-footer,.keypad,.row,.history-filter{display:none!important}.card{box-shadow:none;border:0;width:100%}.history-list{max-height:none;overflow:visible}}.conn{display:inline-flex;align-items:center;gap:6px;font-weight:700;padding:3px 10px;border-radius:999px;border:1px solid var(--borde);background:#fff}.conn i{width:8px;height:8px;border-radius:50%;background:#b7c2bc}.conn.online i{background:#0ca30c}.conn.pending{color:var(--naranja)}.conn.pending i{background:var(--naranja)}.conn.offline{color:var(--rojo)}.conn.offline i{background:var(--rojo)}.message.info{background:#fff8df;color:#7a5a00}.mobile .kiosk-header strong{font-size:20px}.mobile .kiosk-header .kiosk-brand strong{font-size:18px}.mobile .kiosk-main>.card{margin:auto 0}.mobile .card.history{max-height:100%;gap:12px}.mobile .card.history>*{flex-shrink:0}.mobile .card.history .history-list{flex:1 1 auto;min-height:96px;max-height:none}.mobile .range-chips{display:grid;grid-template-columns:1fr 1fr}.mobile-home{align-items:stretch;text-align:center}.mobile-home .state{font-size:18px;font-weight:800;padding:10px;border-radius:10px}.mobile-home .state.in{background:var(--verde-claro);color:var(--verde)}.mobile-home .state.out{background:#f2f4f3;color:var(--gris)}.btn.big{height:120px;font-size:34px;font-weight:900;letter-spacing:2px;border-radius:20px;color:#fff}.btn.big.in{background:var(--verde);border-color:var(--verde)}.btn.big.out{background:var(--naranja);border-color:var(--naranja)}.hint.center{text-align:center;font-size:13px}.legal-card{width:min(640px,100%)}.legal-box{max-height:46vh;overflow-y:auto;border:1px solid var(--borde);border-radius:10px;padding:10px 14px;font-size:13px;line-height:1.45;-webkit-user-select:text;user-select:text}.legal-box h1{font-size:16px}.legal-box h2{font-size:14px;color:var(--verde);margin-top:12px}.legal-box .ph{background:#fff3c4}.legal-box table{width:100%}.firma-field{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:700;color:var(--gris)}.firma-field input{height:48px;font-size:18px;padding:0 12px;border:1px solid var(--borde);border-radius:10px;letter-spacing:1px}.hint.warn{color:var(--rojo);font-weight:700}.firma-pad{position:relative;height:150px;border:2px dashed var(--borde);border-radius:12px;background:#fff}.firma-pad canvas{display:block;width:100%;height:100%;touch-action:none;border-radius:12px}.firma-hint{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;color:var(--gris);font-size:15px;font-weight:400;pointer-events:none}.firma-borrar{position:absolute;top:6px;right:6px;height:30px;padding:0 10px;border:1px solid var(--borde);border-radius:8px;background:#fff;color:var(--gris);font-family:inherit;font-size:13px;font-weight:700;cursor:pointer}.mobile .legal-card .legal-box{max-height:36vh}.legal-box .firma-box{margin-top:8px;padding:10px 12px;border:1px solid #cfe0d7;border-radius:8px;background:#f7faf8}.legal-box img.firma{display:block;max-width:100%;background:#fff;border-bottom:1px solid var(--borde);margin-bottom:6px}.legal-box .ok{color:var(--verde);font-weight:700}.legal-box .pend{color:#7a5a00;font-weight:700}.legal-box code{font-size:10px;word-break:break-all}.check{display:flex;gap:10px;align-items:center;font-weight:700;font-size:15px}.check input{width:24px;height:24px;accent-color:var(--verde)}.done-check.locating{background:#fff8df;color:#7a5a00;animation:pulso 1.2s ease-in-out infinite}@keyframes pulso{50%{transform:scale(.9)}}.install-steps{padding-left:22px;display:flex;flex-direction:column;gap:8px;font-size:15px}.btn.install{border-style:dashed}.btn.close{border-color:var(--borde);color:var(--gris)}.install-help{font-size:14px;font-weight:500}.info-list{padding-left:20px;display:flex;flex-direction:column;gap:10px;font-size:15px;line-height:1.4}.btn.info-btn{border-color:var(--borde)}.card.splash{align-items:center;text-align:center;padding:48px 24px;gap:20px}.splash-icon img{width:96px;height:96px;border-radius:22px;animation:pulso 1.2s ease-in-out infinite}.splash-icon.closing img{animation:desvanecer 3s ease-in forwards}@keyframes desvanecer{to{opacity:.15;transform:scale(.8)}}.splash-text{font-size:20px;font-weight:700;color:var(--verde)}.confirm-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#1c2b258c;display:flex;align-items:center;justify-content:center;padding:16px;z-index:20}.confirm-close{text-align:center}.kiosk:not(.mobile) .kiosk-header{padding:clamp(14px,2.4vmin,30px) clamp(24px,3.5vmin,44px)}.kiosk:not(.mobile) .kiosk-brand strong{font-size:clamp(22px,3.6vmin,40px)}.kiosk:not(.mobile) .kiosk-brand span{font-size:clamp(14px,2.2vmin,24px)}.kiosk:not(.mobile) .kiosk-clock strong{font-size:clamp(40px,7vmin,84px)}.kiosk:not(.mobile) .kiosk-clock span{font-size:clamp(13px,2vmin,22px)}.kiosk:not(.mobile) .kiosk-main{padding:clamp(16px,min(3vmin,2vh),40px)}.kiosk:not(.mobile) .kiosk-main>.card{margin:auto 0}.kiosk:not(.mobile) .kiosk-footer{font-size:clamp(12px,1.8vmin,18px);padding:clamp(8px,1.4vmin,16px) clamp(24px,3.5vmin,44px)}.kiosk:not(.mobile) .conn i{width:clamp(8px,1.2vmin,12px);height:clamp(8px,1.2vmin,12px)}.kiosk:not(.mobile) .card{width:min(100%,max(460px,88vmin),860px);padding:clamp(24px,min(4vmin,3vh),48px);gap:clamp(16px,min(2.6vmin,2vh),28px);border-radius:clamp(16px,2.4vmin,28px)}.kiosk:not(.mobile) .card h1{font-size:clamp(20px,3.4vmin,36px)}.kiosk:not(.mobile) .card .hint{font-size:clamp(14px,2.2vmin,22px)}.kiosk:not(.mobile) .message{font-size:clamp(15px,2.4vmin,26px);padding:clamp(10px,1.6vmin,18px) clamp(12px,2vmin,22px)}.kiosk:not(.mobile) .fields{gap:clamp(12px,2vmin,24px)}.kiosk:not(.mobile) .field{font-size:clamp(13px,2.2vmin,22px)}.kiosk:not(.mobile) .field .box{height:clamp(60px,min(12vmin,7vh),112px);font-size:clamp(30px,min(5.6vmin,4.4vh),60px);border-radius:clamp(12px,1.8vmin,20px)}.kiosk:not(.mobile) .keypad{gap:clamp(10px,1.8vmin,20px)}.kiosk:not(.mobile) .keypad button{height:clamp(64px,min(14vmin,8vh),124px);font-size:clamp(26px,min(5vmin,4vh),54px);border-radius:clamp(12px,1.8vmin,20px)}.kiosk:not(.mobile) .keypad button.ok{font-size:clamp(20px,min(3.6vmin,3vh),40px)}.kiosk:not(.mobile) .btn{height:clamp(56px,min(10vmin,6.5vh),100px);font-size:clamp(18px,min(3.2vmin,2.6vh),32px);border-radius:clamp(12px,1.8vmin,20px)}.kiosk:not(.mobile) .setup-input{height:clamp(56px,9vmin,96px);font-size:clamp(22px,3.6vmin,38px)}.kiosk:not(.mobile) .confirm-kind{font-size:clamp(44px,8vmin,96px)}.kiosk:not(.mobile) .confirm-reason{font-size:clamp(22px,3.8vmin,40px)}.kiosk:not(.mobile) .confirm-user{font-size:clamp(24px,4.4vmin,48px)}.kiosk:not(.mobile) .confirm-q{font-size:clamp(16px,2.6vmin,28px)}.kiosk:not(.mobile) .done-check{width:clamp(96px,16vmin,180px);height:clamp(96px,16vmin,180px);font-size:clamp(56px,9vmin,104px)}.kiosk:not(.mobile) .done-text{font-size:clamp(20px,3.6vmin,38px)}.kiosk:not(.mobile) .since{font-size:clamp(18px,3.2vmin,34px)}.kiosk:not(.mobile) .reasons-label{font-size:clamp(14px,2.4vmin,24px)}.kiosk:not(.mobile) .reasons{gap:clamp(10px,1.8vmin,20px)}.kiosk:not(.mobile) .reasons button{height:clamp(64px,min(11vmin,8.5vh),120px);font-size:clamp(18px,3.4vmin,36px);border-radius:clamp(12px,1.8vmin,20px)}.kiosk:not(.mobile) .card.history{width:min(100%,max(560px,90vmin),900px)}.kiosk:not(.mobile) .history-filter label,.kiosk:not(.mobile) .history-filter input,.kiosk:not(.mobile) .mail-row input{font-size:clamp(16px,2.4vmin,24px)}.kiosk:not(.mobile) .history-filter input,.kiosk:not(.mobile) .mail-row input{height:clamp(44px,7vmin,72px)}.kiosk:not(.mobile) .history-head{font-size:clamp(15px,2.6vmin,26px)}.kiosk:not(.mobile) .history-entry{font-size:clamp(14px,2.4vmin,24px);grid-template-columns:4em 6.4em 1fr}.kiosk:not(.mobile) .history-list{max-height:45vh}.mobile .card.consent{max-height:100%;gap:12px}.mobile .card.consent>*{flex-shrink:0}.mobile .card.consent .legal-box{flex:1 1 auto;min-height:140px;max-height:none}.pasos{font-size:12px;font-weight:800;letter-spacing:.6px;text-transform:uppercase;color:var(--verde)}.card.consent h1{margin-top:-6px}.hint.falta{color:var(--naranja);font-weight:700}.card.elegir{gap:14px}.opcion{display:flex;align-items:center;gap:14px;width:100%;padding:18px 16px;border:2px solid var(--verde);border-radius:14px;background:#fff;color:var(--texto);text-align:left;font-family:inherit;cursor:pointer}.opcion:active{background:var(--verde-claro)}.opcion-icono{font-size:34px;line-height:1;flex-shrink:0}.opcion-texto{display:flex;flex-direction:column;gap:4px}.opcion-texto b{font-size:18px;color:var(--verde)}.opcion-texto small{font-size:13px;color:var(--gris);line-height:1.35}.card.tarjeta-movil{align-items:stretch;text-align:center}.mobile .card.tarjeta-movil{gap:10px;padding:16px}.tarjeta-qr{width:min(260px,70vw);width:min(260px,70vw,max(150px,calc(100vh - 390px)));width:min(260px,70vw,max(150px,calc(100svh - 390px)));margin:0 auto;background:#fff}.tarjeta-botones{display:grid;grid-template-columns:1fr 1fr;gap:10px}.tarjeta-botones .btn{height:52px;padding:0 8px}.btn.acceso-tarjeta{height:auto;min-height:44px;padding:6px 8px;font-size:15px;line-height:1.2}.tarjeta-qr svg{display:block;width:100%;height:auto}.tarjeta-nombre{display:flex;flex-wrap:wrap;justify-content:center;align-items:baseline;column-gap:8px}.tarjeta-nombre b{font-size:18px}.tarjeta-nombre span{font-family:Consolas,monospace;color:var(--gris)}
