:root{--verde: #00c853;--verde-oscuro: #00701a;--rojo: #d50000;--rojo-oscuro: #8e0000;--ambar: #ff8f00;--ambar-oscuro: #b25a00;--fondo: #101014;--texto: #f5f5f5;--gris: #8a8a92;color-scheme:dark}*{box-sizing:border-box}html,body,#root{margin:0;height:100%;background:var(--fondo);color:var(--texto);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}.pantalla{height:100%;display:flex;flex-direction:column}.ingreso{justify-content:center;padding:24px;gap:16px}.ingreso h1{font-size:24px;margin:0 0 4px}.ingreso p{color:var(--gris);margin:0 0 16px;font-size:15px}.campo{display:block;width:100%;padding:18px 16px;font-size:20px;border-radius:12px;border:2px solid #2a2a33;background:#1a1a20;color:var(--texto)}.campo.codigo{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:28px;letter-spacing:4px;text-align:center;text-transform:uppercase}.boton{width:100%;padding:20px;font-size:19px;font-weight:700;border:0;border-radius:12px;background:var(--verde);color:#04210d}.boton:disabled{opacity:.5}.boton.secundario{background:#2a2a33;color:var(--texto)}.error{background:#d5000026;border:1px solid var(--rojo);color:#ff8a80;padding:14px;border-radius:12px;font-size:15px}.barra{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;background:#17171d;font-size:13px;color:var(--gris);flex:0 0 auto}.barra strong{color:var(--texto);font-size:14px}.barra button{background:none;border:0;color:var(--gris);font-size:13px;text-decoration:underline;padding:6px}.camara{flex:1 1 auto;position:relative;overflow:hidden;background:#000}#lector{width:100%;height:100%}#lector video{width:100%!important;height:100%!important;object-fit:cover}.ayuda{position:absolute;bottom:16px;left:0;right:0;text-align:center;color:#fffc;font-size:15px;text-shadow:0 1px 4px #000;pointer-events:none}.manual{padding:12px 16px 20px;background:#17171d;flex:0 0 auto}.resultado{position:fixed;inset:0;z-index:10;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:24px;animation:aparecer .12s ease-out}@keyframes aparecer{0%{transform:scale(1.04)}to{transform:scale(1)}}.resultado.permitido{background:var(--verde);color:#04210d}.resultado.rechazado{background:var(--rojo);color:#fff}.resultado.repetido{background:var(--ambar);color:#2a1500}.simbolo{font-size:96px;line-height:1;margin-bottom:8px}.titulo{font-size:clamp(30px,9vw,50px);font-weight:900;line-height:1.05;letter-spacing:-.5px;margin:0 0 12px;text-transform:uppercase}.detalle{font-size:18px;opacity:.9;margin:2px 0}.detalle strong{font-size:22px}.codigo-entrada{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:15px;opacity:.75;margin-top:14px;letter-spacing:1px}.pie{position:absolute;bottom:28px;left:0;right:0;font-size:16px;font-weight:700;opacity:.85}.resultado .pie{text-decoration:underline}.sin-camara{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:28px;text-align:center}.sin-camara-titulo{font-size:22px;font-weight:800;margin:0}.sin-camara-texto{font-size:16px;color:#ffcdd2;margin:0 0 8px}.sin-camara .boton{max-width:280px}.sin-camara-ayuda{font-size:13px;color:var(--gris);line-height:1.5;margin:4px 0 0}.enlace-buscar{flex:0 0 auto;background:none;border:none;color:var(--gris);font-size:15px;text-decoration:underline;padding:0 16px 18px;font-family:inherit}.capa-buscador{position:fixed;inset:0;z-index:20;background:var(--fondo);display:flex;flex-direction:column}.buscador-form{display:flex;gap:8px;padding:12px 16px;flex:0 0 auto}.buscador-form .campo{flex:1 1 auto;margin:0}.buscador-form .boton{flex:0 0 auto;width:auto;padding:0 20px;margin:0}.buscador-error{color:#ff8a80;margin:0;padding:0 16px 8px;font-size:15px}.buscador-resultados{flex:1 1 auto;overflow-y:auto;padding:4px 16px 24px;-webkit-overflow-scrolling:touch}.buscador-vacio{color:var(--gris);font-size:15px;line-height:1.5;margin:12px 0}.compra{background:#17171d;border-radius:12px;padding:14px;margin-bottom:12px}.compra-cabecera{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:4px}.compra-cabecera strong{font-size:17px}.chip-ok,.chip-alerta{font-size:12px;font-weight:700;border-radius:999px;padding:3px 10px;white-space:nowrap}.chip-ok{background:var(--verde-oscuro);color:#d7ffe4}.chip-alerta{background:var(--ambar-oscuro);color:#fff3e0}.compra-datos{color:var(--gris);font-size:13px;line-height:1.5;word-break:break-word}.compra-aviso{color:#ffcc80;font-size:14px;line-height:1.4;margin:8px 0 0}.compra-bonos{display:flex;flex-direction:column;gap:8px;margin-top:12px}.bono{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:54px;padding:10px 14px;border:none;border-radius:10px;background:var(--verde-oscuro);color:#fff;font-family:inherit;font-size:15px;text-align:left}.bono-codigo{font-variant-numeric:tabular-nums;letter-spacing:.5px}.bono-estado{font-size:12px;opacity:.85;white-space:nowrap}.bono-usado{background:#2a2a33;color:var(--gris)}.marca-ingreso{display:flex;flex-direction:column;align-items:center;margin-bottom:22px}.marca-ingreso-logotipo{width:210px;height:auto}.marca-ingreso-rol{margin-top:2px;font-size:11px;letter-spacing:2.5px;text-transform:uppercase;color:var(--gris)}.estado{font-size:11px;letter-spacing:.5px;text-transform:uppercase;color:var(--gris);padding:3px 8px;border-radius:999px;background:#22222a;white-space:nowrap}.estado-listo{color:#9ae6b4;background:#17301f}.estado-alerta{color:#ffcc80;background:#33240d}.estado-sin-red{color:#2a1500;background:var(--ambar);font-weight:700}button.estado{border:none;font-family:inherit;cursor:pointer}
