:root{
  --fondo:#f4f2ed;--fondo-logo:var(--fondo);--panel:#fff;--panel-suave:#faf9f6;--texto:#232522;--texto-suave:#74766f;
  --lateral:#171916;--lateral-activo:#292c27;--oro:#c3a04f;--oro-oscuro:#9f7d2e;
  --borde:#dedbd3;--borde-fuerte:#c9c5ba;--sombra:0 10px 28px rgb(40 36 27 / 7%);
  --verde:#2d8a5c;--azul:#426eaa;--rojo:#c44b47;--ambar:#c8872f;--gris:#8a8d87;
  --radio:12px;--radio-control:8px;--ancho-publico:1180px;--alto-control:38px;
  --fuente:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;
}
*{box-sizing:border-box}html{background:var(--fondo)}body{margin:0;color:var(--texto);font:14px/1.45 var(--fuente)}button,input,select{font:inherit}button{color:inherit}.sprite{position:absolute;width:0;height:0;overflow:hidden}.vista{display:none}.vista.activa{display:block}.oculto{display:none!important}

/* Componentes compartidos */
.tarjeta{border:1px solid var(--borde);border-radius:var(--radio);background:var(--panel);box-shadow:var(--sombra)}
.boton{min-height:var(--alto-control);padding:0 16px;border:1px solid var(--borde-fuerte);border-radius:var(--radio-control);background:#fff;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-weight:700;cursor:pointer;transition:.15s ease}.boton svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.boton:hover{border-color:#99968e;background:#f8f7f4}.boton.principal{border-color:var(--lateral);background:var(--lateral);color:#fff}.boton.principal:hover{background:#292c27}.boton:disabled{opacity:.42;cursor:not-allowed}.boton.hoy{min-width:70px;justify-self:end}
.boton-icono{width:40px;height:40px;padding:0;border:1px solid var(--borde);border-radius:9px;background:#f1efe9;display:grid;place-items:center;cursor:pointer;transition:.15s ease}.boton-icono svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.boton-icono:hover{border-color:var(--oro);background:#fff8e7;color:var(--oro-oscuro)}
label{display:block;color:#4d504b;font-size:12px;font-weight:750;font-variant-numeric:tabular-nums;text-align:left}input,select,textarea{width:100%;min-height:var(--alto-control);margin-top:6px;padding:0 12px;border:1px solid var(--borde);border-radius:var(--radio-control);background:#fff;color:var(--texto);outline:none}textarea{padding-block:10px;min-height:96px}input:focus,select:focus,textarea:focus{border-color:var(--oro);box-shadow:0 0 0 3px rgb(195 160 79 / 14%)}

/* Administración */
.app-admin{min-height:100vh;padding-left:244px}.barra-lateral{position:fixed;inset:0 auto 0 0;width:244px;padding:22px 14px 16px;background:var(--lateral);color:#e8e9e5;display:flex;flex-direction:column;z-index:10}.identidad-admin{padding:2px 8px 24px;display:flex;align-items:center;gap:12px}.simbolo-logicroom{width:42px;height:42px;flex:0 0 42px;border:2px solid var(--oro);border-radius:50%;display:grid;place-items:center;color:var(--oro);font-size:13px;font-weight:850;letter-spacing:.02em}.identidad-admin strong,.marca-publica strong{display:block;font-size:17px}.identidad-admin span{display:block;color:#959991;font-size:11px}.navegacion-admin{display:flex;flex-direction:column;gap:4px}.opcion-menu,.enlace-lateral{width:100%;min-height:43px;padding:0 12px;border:1px solid transparent;border-radius:9px;background:transparent;color:#c8cbc5;display:flex;align-items:center;gap:11px;text-align:left;cursor:pointer}.opcion-menu svg,.enlace-lateral svg{width:18px;height:18px;flex:0 0 18px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.opcion-menu:hover,.enlace-lateral:hover{background:#20231f;color:#fff}.opcion-menu.activa{border-color:#9b9f96;background:var(--lateral-activo);color:#fff;box-shadow:inset 3px 0 0 var(--oro)}.pie-lateral{margin-top:auto;padding-top:18px;border-top:1px solid #2b2e29}.enlace-lateral{margin-bottom:5px}.enlace-lateral.tenue{color:#9ca098}.usuario-admin{margin-top:15px;padding:15px 8px 0;border-top:1px solid #2b2e29;display:flex;align-items:center;gap:10px}.avatar{width:34px;height:34px;border-radius:50%;background:var(--oro);color:#282315;display:grid;place-items:center;font-size:11px;font-weight:850}.usuario-admin strong{display:block}.usuario-admin span{display:block;color:#8f938c;font-size:11px}
.contenido-admin{width:min(100%,1510px);margin:0 auto;padding:26px 28px 38px}.seccion-admin{display:none}.seccion-admin.activa{display:block}.cabecera-pagina{margin-bottom:14px}.cabecera-pagina.con-accion{display:flex;align-items:end;justify-content:space-between;gap:20px}.sobrelinea{display:block;margin-bottom:6px;color:#8b6e2d;font-size:11px;font-weight:850;letter-spacing:.13em;text-transform:uppercase}.cabecera-pagina h1{margin:0;font-size:31px;line-height:1.08;letter-spacing:-.025em}.cabecera-pagina p{max-width:720px;margin:5px 0 0;color:var(--texto-suave);font-size:14px}.panel-filtros{margin-bottom:12px;padding:12px 14px;display:grid;grid-template-columns:180px 180px minmax(240px,1fr) auto;align-items:end;gap:10px}.acciones-filtros{display:flex;justify-content:flex-end;gap:9px}.rejilla-calendario-admin{display:grid;grid-template-columns:minmax(680px,1fr) 330px;gap:12px;align-items:start}.calendario-tarjeta{overflow:hidden}.cabecera-calendario{min-height:58px;padding:8px 14px;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;border-bottom:1px solid var(--borde)}.selector-mes{grid-column:2;display:grid;grid-template-columns:36px minmax(220px,auto) 36px;align-items:center;gap:10px}.titulo-mes{text-align:center;font-size:19px;line-height:1;font-weight:820;letter-spacing:-.015em}.cabecera-calendario .hoy{grid-column:3}.leyenda{min-height:28px;padding:5px 13px;display:flex;justify-content:flex-end;gap:13px;border-bottom:1px solid var(--borde);color:var(--texto-suave);font-size:10px}.leyenda span{display:flex;align-items:center;gap:5px}.punto{width:7px;height:7px;border-radius:50%}.punto.disponible{background:var(--verde)}.punto.reservada{background:var(--azul)}.punto.cerrada{background:var(--rojo)}.punto.bloqueada{background:var(--ambar)}.marco-calendario{overflow:auto}.calendario{min-width:720px;display:grid;grid-template-columns:repeat(7,minmax(96px,1fr));border-left:1px solid var(--borde)}.dia-cabecera{padding:6px 4px;border-right:1px solid var(--borde);border-bottom:1px solid var(--borde);background:#f7f5f0;text-align:center;color:#5d605a;font-size:11px;font-weight:800}.dia{min-height:72px;padding:3px;border-right:1px solid var(--borde);border-bottom:1px solid var(--borde);background:#fff}.dia.otro-mes{background:#faf9f6;color:#b3b1aa}.numero-dia{margin-bottom:2px;font-size:10px;font-weight:850}.sesion{width:100%;height:18px;min-height:18px;margin:0 0 1px;padding:0 4px;border:1px solid color-mix(in srgb,var(--color-aventura) 28%,transparent);border-left:4px solid var(--color-aventura);border-radius:4px;background:#f3faf6;color:#245c41;display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:4px;text-align:left;font-size:8.5px;line-height:1;cursor:pointer}.sesion:hover{filter:brightness(.97)}.sesion .hora{font-weight:850}.sesion .aventura,.sesion .estado-texto{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sesion.reservada{background:#eef4fb;color:#315b88}.sesion.cerrada{background:#fbeeed;color:#963a37}.sesion.bloqueada,.sesion.bloqueo-propio{background:#fff5e6;color:#895a16}.sesion.pasada,.sesion.publica-no{background:#f0f0ed;color:#7e817b}.calendario.publico .sesion{grid-template-columns:auto 1fr;height:19px;min-height:19px}.calendario.publico .estado-texto{text-align:right;font-weight:750;font-variant-numeric:tabular-nums;text-align:center}.panel-detalle{padding:15px}.panel-detalle h2{margin:0;font-size:20px}.panel-detalle h3{margin:0 0 7px;font-size:15px}.detalle-vacio{margin-top:10px;padding:14px;border-radius:9px;background:var(--panel-suave);color:var(--texto-suave);text-align:center}.separador{height:1px;margin:12px 0;background:var(--borde)}.detalle-sesion dl{display:grid;grid-template-columns:78px 1fr;gap:7px;margin:16px 0 0}.detalle-sesion dt{color:var(--texto-suave)}.detalle-sesion dd{margin:0;font-weight:700}.acciones-detalle{margin-top:16px;display:flex;flex-wrap:wrap;gap:7px}.acciones-detalle button,.dialogo-acciones button{min-height:36px;padding:0 11px;border:0;border-radius:7px;background:var(--lateral);color:#fff;font-weight:700;cursor:pointer}.acciones-detalle .secundario,.dialogo-acciones .secundario{background:#ebe9e3;color:var(--texto)}.lista-compacta{font-size:12px}.item-reserva{padding:6px 0;border-bottom:1px solid #eceae4}.item-reserva strong{display:block;margin-bottom:2px}.rejilla-indicadores{display:grid;grid-template-columns:repeat(4,1fr);gap:15px}.indicador{padding:22px}.indicador span{color:var(--texto-suave);font-size:12px}.indicador strong{display:block;margin-top:5px;font-size:30px}.rejilla-fichas{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.ficha{position:relative;padding:20px;border-top:4px solid var(--color-ficha,var(--oro))}.ficha h2,.ficha-usuario h2{margin:0 0 7px;font-size:18px}.ficha p,.ficha-usuario p{margin:4px 0;color:var(--texto-suave)}.ficha .boton-editar{position:absolute;top:14px;right:14px;width:34px;height:34px;border:1px solid var(--borde);border-radius:7px;background:#fff;display:grid;place-items:center;cursor:pointer}.ficha .boton-editar svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.8}.tabla-panel{padding:10px 18px;overflow:auto}.tabla-simple{width:100%;border-collapse:collapse}.tabla-simple th,.tabla-simple td{padding:12px 9px;border-bottom:1px solid #eceae4;text-align:left;white-space:nowrap}.tabla-simple th{color:var(--texto-suave);font-size:11px;text-transform:uppercase;letter-spacing:.05em}.ficha-usuario{padding:20px;display:flex;align-items:center;gap:14px}.avatar.grande{width:48px;height:48px}.estado{display:inline-flex;margin-top:7px;padding:4px 8px;border-radius:20px;font-size:10px;font-weight:800}.estado-pendiente{background:#fff2dd;color:#8b5b15}.bloque-informativo{padding:24px}.bloque-informativo p{margin-bottom:0;color:var(--texto-suave)}

/* Generador */
.generador-horarios{padding:22px}.rejilla-formulario{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.rejilla-formulario.dos{grid-template-columns:1fr 1fr}.generador-horarios fieldset{margin:18px 0;padding:14px;border:1px solid var(--borde);border-radius:9px}.generador-horarios legend{padding:0 6px;font-size:12px;font-weight:800}.dias-semana-check{display:flex;flex-wrap:wrap;gap:9px}.dias-semana-check label{padding:7px 10px;border:1px solid var(--borde);border-radius:8px;background:#fff;display:flex;align-items:center;gap:6px;font-weight:650}.dias-semana-check input{width:auto;min-height:auto;margin:0}.generador-horarios small{display:block;margin-top:2px;color:var(--texto-suave);font-weight:500}.pie-formulario{margin-top:18px;display:flex;align-items:center;justify-content:space-between;gap:18px}.mensaje-ayuda{margin:0;color:var(--texto-suave)}

/* Web pública */
.web-publica{min-height:100vh;background:#f4f2ed}.cabecera-publica{border-bottom:1px solid var(--borde);background:#fff}.contenedor-publico{width:min(calc(100% - 40px),var(--ancho-publico));margin-inline:auto}.barra-publica{min-height:68px;display:flex;align-items:center;justify-content:space-between}.marca-publica{display:flex;align-items:center;gap:11px}.marca-publica .simbolo-logicroom{width:38px;height:38px;flex-basis:38px}.contenido-publico{padding:18px 0 38px}.selector-aventura-publica{margin-bottom:14px;display:flex;align-items:end;justify-content:space-between;gap:14px}.selector-aventura-publica label{width:min(350px,100%)}.aviso-bloqueo{width:320px;height:38px;padding:0 12px;border:1px solid #eccb92;border-radius:8px;background:#fff5e5;color:#825514;font-weight:750;font-variant-numeric:tabular-nums;text-align:center}.paso-publico{margin-top:14px}.titulo-paso{margin-bottom:6px;display:flex;align-items:center;gap:14px}.titulo-paso>span{width:44px;height:44px;flex:0 0 44px;border-radius:50%;background:var(--lateral);color:var(--oro);display:grid;place-items:center;font-size:23px;font-weight:850}.titulo-paso h1{margin:0;font-size:22px}.titulo-paso p{margin:3px 0 0;color:var(--texto-suave)}.rejilla-reserva{display:grid;grid-template-columns:.85fr 1.35fr;gap:12px}.resumen-tarjeta,.formulario-tarjeta,.confirmacion-tarjeta{padding:12px}.resumen-reserva.vacio{min-height:130px;display:grid;place-items:center;border-radius:8px;background:var(--panel-suave);color:var(--texto-suave)}.aventura-resumen{display:block;margin-bottom:9px;font-size:19px}.dato-resumen{padding:6px 0;border-bottom:1px solid #eceae4}.dato-resumen span{display:block;color:var(--texto-suave);font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.08em}.dato-resumen strong{display:block;margin-top:2px;font-size:15px}.precios-resumen{margin-top:9px;display:grid;grid-template-columns:1fr 1fr;gap:9px}.precio-resumen{padding:8px;border-radius:8px;background:#f4f2ed}.precio-resumen span{display:block;color:var(--texto-suave);font-size:10px}.precio-resumen b{display:block;margin-top:2px;font-size:15px}.formulario-tarjeta label{margin-bottom:7px}.fila-codigo{display:grid;grid-template-columns:1fr auto;gap:8px}.check{display:flex;align-items:center;gap:8px;font-weight:550}.check input{width:auto;min-height:auto;margin:0}.confirmacion-tarjeta{display:flex;align-items:center;justify-content:space-between;gap:14px}.confirmacion-tarjeta p{margin:4px 0 0;color:var(--texto-suave)}.acciones-confirmacion{display:flex;gap:8px}

/* Diálogo */
dialog{width:min(520px,calc(100% - 28px));padding:0;border:0;border-radius:13px;box-shadow:0 25px 70px #0007}dialog::backdrop{background:#17191699}.dialogo-formulario{padding:20px}.dialogo-formulario h2{margin:0 0 17px;font-size:23px}.dialogo-formulario label{margin-bottom:12px;text-align:left}.dialogo-acciones{margin-top:20px;display:flex;justify-content:flex-end;gap:8px}

@media(max-width:1180px){.rejilla-calendario-admin{grid-template-columns:1fr}.panel-detalle{display:grid;grid-template-columns:1fr 1fr;gap:24px}.rejilla-fichas{grid-template-columns:repeat(2,1fr)}.rejilla-formulario{grid-template-columns:repeat(2,1fr)}}
@media(max-width:850px){.app-admin{padding-left:78px}.barra-lateral{width:78px;padding-inline:9px}.identidad-admin{justify-content:center;padding-inline:0}.identidad-admin>div:last-child,.opcion-menu span,.enlace-lateral span,.usuario-admin>div:last-child{display:none}.opcion-menu,.enlace-lateral{justify-content:center;padding:0}.opcion-menu.activa{box-shadow:inset 3px 0 0 var(--oro)}.usuario-admin{justify-content:center;padding-inline:0}.contenido-admin{padding:28px 18px}.panel-filtros{grid-template-columns:1fr 1fr}.acciones-filtros{grid-column:1/-1}.rejilla-indicadores{grid-template-columns:repeat(2,1fr)}.rejilla-reserva{grid-template-columns:1fr}}
@media(max-width:620px){.app-admin{padding-left:0;padding-bottom:72px}.barra-lateral{position:fixed;inset:auto 0 0;width:auto;height:64px;padding:7px 9px;display:block}.identidad-admin,.pie-lateral{display:none}.navegacion-admin{height:100%;display:grid;grid-template-columns:repeat(5,1fr);gap:3px}.opcion-menu{min-height:50px}.opcion-menu:nth-child(n+6){display:none}.opcion-menu.activa{box-shadow:inset 0 -3px 0 var(--oro)}.contenido-admin{padding:22px 10px}.cabecera-pagina h1{font-size:26px}.cabecera-pagina.con-accion{align-items:start}.panel-filtros{grid-template-columns:1fr}.acciones-filtros{grid-column:auto;justify-content:stretch}.acciones-filtros .boton{flex:1}.cabecera-calendario{grid-template-columns:1fr auto 1fr;padding-inline:10px}.selector-mes{grid-template-columns:36px minmax(155px,auto) 36px;gap:6px}.titulo-mes{font-size:17px}.boton-icono{width:36px;height:36px}.calendario{min-width:650px}.panel-detalle{display:block}.rejilla-indicadores,.rejilla-fichas,.rejilla-formulario,.rejilla-formulario.dos{grid-template-columns:1fr}.contenedor-publico{width:min(calc(100% - 20px),var(--ancho-publico))}.selector-aventura-publica{align-items:stretch;flex-direction:column}.selector-aventura-publica label{width:100%}.titulo-paso>span{width:44px;height:44px;flex-basis:44px;font-size:23px}.titulo-paso h1{font-size:22px}.precios-resumen{grid-template-columns:1fr}.confirmacion-tarjeta{align-items:stretch;flex-direction:column}.acciones-confirmacion{flex-direction:column}.pie-formulario{align-items:stretch;flex-direction:column}.pie-formulario .boton{width:100%}}

/* Ajustes 0.9: densidad y estabilidad visual */
.sesion.bloqueo-propio{box-shadow:inset 0 0 0 1px var(--ambar)}
#form-reserva input:focus{scroll-margin-top:24px}
@media(min-width:1181px) and (min-height:760px){.calendario .dia{min-height:84px}}

/* Conexión remota 1.1 */
.capa-conexion{position:fixed;inset:0;z-index:80;display:grid;place-items:center;background:#f4f2eddd;backdrop-filter:blur(3px)}
.tarjeta-conexion{width:min(420px,calc(100% - 30px));padding:24px;text-align:center}
.tarjeta-conexion strong{font-size:20px}
.tarjeta-conexion p{margin:7px 0 0;color:var(--texto-suave)}
.estado-remoto{min-height:32px;margin:3px 0 7px;padding:7px 9px;border:1px solid #363934;border-radius:7px;display:flex;align-items:center;gap:8px;color:#c6c8c2;font-size:11px}
.estado-remoto i{width:8px;height:8px;border-radius:50%;background:#d59a34}
.estado-remoto.conectado i{background:#3ca36c}
.estado-remoto.error i{background:#c6534d}
.aviso-bloqueo{display:flex;align-items:center;justify-content:center;white-space:nowrap;overflow:hidden}
.sesion{padding-block:0}
.sesion .hora,.sesion .aventura,.sesion .estado-texto{line-height:1}

/* Calendario público compacto 1.2 */
.selector-pase-publico{display:grid;grid-template-columns:minmax(390px,.9fr) minmax(360px,1.1fr);overflow:hidden}
.bloque-fecha-publica{min-width:0;border-right:1px solid var(--borde)}
.bloque-fecha-publica .cabecera-calendario{min-height:62px}
.leyenda-publica{min-height:34px;padding:7px 14px;display:flex;align-items:center;gap:16px;border-bottom:1px solid var(--borde);color:var(--texto-suave);font-size:11px}
.leyenda-publica span{display:flex;align-items:center;gap:6px}
.indicador-dia{width:9px;height:9px;border-radius:2px;display:inline-block}
.indicador-dia.disponible{background:#3ca36c}
.indicador-dia.parcial{background:#d59a34}
.indicador-dia.completo{background:#a8aaa5}
.marco-calendario-publico{padding:12px 14px 14px}
.calendario-publico-compacto{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}
.dia-cabecera-publico{padding:3px 0;text-align:center;color:var(--texto-suave);font-size:10px;font-weight:850;text-transform:uppercase}
.dia-publico{position:relative;aspect-ratio:1.25/1;min-height:42px;padding:0;border:1px solid var(--borde);border-radius:7px;background:#fff;color:var(--texto);display:grid;place-items:center;cursor:pointer;font-weight:800}
.dia-publico span{font-size:13px}
.dia-publico i{position:absolute;right:5px;bottom:5px;width:7px;height:7px;border-radius:50%}
.dia-publico.disponible i{background:#3ca36c}
.dia-publico.parcial i{background:#d59a34}
.dia-publico.completo i{background:#a8aaa5}
.dia-publico.sin-sesiones i{display:none}
.dia-publico.otro-mes{opacity:.35}
.dia-publico:disabled{cursor:default;background:#f3f2ee;color:#aaa}
.dia-publico:not(:disabled):hover{border-color:#8c8f88;transform:translateY(-1px)}
.dia-publico.seleccionado{border-color:var(--lateral);box-shadow:0 0 0 2px color-mix(in srgb,var(--lateral) 18%,transparent)}
.bloque-horas-publicas{min-width:0;padding:16px}
.encabezado-horas{margin-bottom:13px}
.encabezado-horas span{display:block;color:var(--texto-suave);font-size:11px;font-weight:850;text-transform:uppercase;letter-spacing:.08em}
.encabezado-horas strong{display:block;margin-top:4px;font-size:18px}
.rejilla-horas-publicas{display:grid;grid-template-columns:repeat(3,minmax(95px,1fr));gap:8px}
.hora-publica{min-height:52px;padding:7px 8px;border:1px solid var(--borde);border-radius:7px;background:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer}
.hora-publica strong{font-size:16px}
.hora-publica span{margin-top:2px;font-size:10px;font-weight:750}
.hora-publica.disponible{border-color:#76b990;background:#f2faf5;color:#245c41}
.hora-publica.seleccionado{border-color:#d59a34;background:#fff5e5;color:#825514}
.hora-publica.no-disponible{background:#f1f1ee;color:#81847e;cursor:default}
.mensaje-horas{grid-column:1/-1;margin:0;padding:28px 12px;border-radius:8px;background:var(--panel-suave);color:var(--texto-suave);text-align:center}
@media(max-width:900px){
  .selector-pase-publico{grid-template-columns:1fr}
  .bloque-fecha-publica{border-right:0;border-bottom:1px solid var(--borde)}
}
@media(max-width:620px){
  .marco-calendario-publico{padding:9px}
  .calendario-publico-compacto{gap:3px}
  .dia-publico{min-height:38px}
  .rejilla-horas-publicas{grid-template-columns:repeat(2,1fr)}
}

/* Día actual */
.dia.hoy-calendario .numero-dia{
  min-width:22px;height:22px;padding:0 5px;border-radius:999px;
  display:inline-flex;align-items:center;justify-content:center;
  background:#1f211e;color:#fff
}
.dia-publico.hoy-calendario span{
  min-width:24px;height:24px;border-radius:999px;
  display:inline-flex;align-items:center;justify-content:center;
  background:#1f211e;color:#fff
}
#form-dialogo label{text-align:left}
#form-dialogo textarea{width:100%;resize:vertical}

.logo-logicroom{display:block;object-fit:contain}
.logo-logicroom-admin{width:108px;max-width:100%;height:auto;filter:drop-shadow(0 0 0 transparent)}
.logo-logicroom-publico{width:128px;max-width:100%;height:auto}
@media(max-width:850px){.logo-logicroom-admin{width:42px;height:42px;object-fit:contain}}
.panel-filtros label,.selector-aventura-publica label,.formulario-tarjeta label,.dialogo-formulario label{display:grid;gap:6px}
.panel-filtros select,.selector-aventura-publica select,.formulario-tarjeta input,.formulario-tarjeta select,.formulario-tarjeta textarea,.dialogo-formulario input,.dialogo-formulario select,.dialogo-formulario textarea{margin-top:0}

.detalle-sesion dl{gap:9px 11px}
.detalle-sesion dt{align-self:center}
.estado-pill{display:inline-flex;align-items:center;gap:7px;padding:5px 10px;border-radius:999px;font-size:11px;font-weight:800;line-height:1}
.estado-pill::before{content:'';width:8px;height:8px;border-radius:50%}
.estado-pill.disponible{background:#eef8f1;color:#245c41}.estado-pill.disponible::before{background:#3ca36c}
.estado-pill.reservada{background:#eef4fb;color:#315b88}.estado-pill.reservada::before{background:#4b77b9}
.estado-pill.cerrada{background:#fbeeed;color:#963a37}.estado-pill.cerrada::before{background:#c6534d}
.estado-pill.bloqueada{background:#fff5e6;color:#895a16}.estado-pill.bloqueada::before{background:#d59a34}
.dia-publico.seleccionado{border-color:var(--oro);box-shadow:inset 0 0 0 1px var(--oro),0 0 0 3px rgb(195 160 79 / 12%)}
.dia.seleccionado-dia{box-shadow:inset 0 0 0 2px rgb(195 160 79 / 65%)}


/* Ajustes laterales 1.4.1 */
.identidad-admin{margin:0 0 20px;padding:10px 12px;justify-content:center;border-radius:10px;background:#fff}
.logo-logicroom-admin{width:100%;max-width:204px;height:52px;object-fit:contain;object-position:center}
.usuario-admin{min-width:0;align-items:center}
.usuario-admin>div:last-child{min-width:0;overflow:hidden}
.usuario-admin strong{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}
.usuario-admin span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.avatar{width:34px;height:34px;min-width:34px;min-height:34px;aspect-ratio:1;border-radius:50%;flex:0 0 34px}
@media(max-width:850px){.logo-logicroom-admin{width:48px;height:48px;max-width:48px}}

/* Interfaz 1.5 */
.logo-logicroom-publico{width:158px;height:auto}
.marca-publica{min-width:158px}
.usuario-admin{gap:10px}
.avatar svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.avatar.avatar-sin-sesion{background:#343731;color:#b9bdb5}
.avatar.avatar-con-sesion{background:var(--oro);color:#282315}
.identidad-usuario{min-width:0;overflow:hidden}
.identidad-usuario strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.identidad-usuario span{display:block;color:#8f938c;font-size:11px}

.formulario-tarjeta{padding:16px 18px}
.formulario-reserva-publica{display:grid;gap:15px}
.datos-personales-grid{display:grid;grid-template-columns:minmax(170px,.8fr) minmax(170px,.8fr);gap:13px 16px;align-items:end}
.datos-personales-grid label,.campo-tarjeta{display:grid;gap:7px;margin:0}
.campo-correo{grid-column:1 / -1}
.campo-jugadores{grid-column:1 / 2}
.campo-tarjeta{grid-column:1 / -1}
.formulario-reserva-publica input{min-height:42px}
.fila-codigo{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:9px;align-items:stretch}
.fila-codigo .boton{min-height:42px}
.check.condiciones{display:inline-flex;align-items:center;justify-content:flex-start;gap:9px;width:max-content;max-width:100%;margin:0;padding:2px 0;white-space:normal;overflow:visible;cursor:pointer}
.check.condiciones input{width:18px;height:18px;min-height:18px;flex:0 0 18px;margin:0;accent-color:var(--oro)}
.check.condiciones span{line-height:1.3}
@media(max-width:720px){
 .datos-personales-grid{grid-template-columns:1fr}
 .campo-correo,.campo-jugadores{grid-column:auto}
 .formulario-tarjeta{padding:14px}
}

/* Cambio de mes */
.calendario-tarjeta,.selector-pase-publico{position:relative}
.marco-calendario,.marco-calendario-publico,.bloque-horas-publicas{will-change:transform,opacity}
.animacion-mes-salida-izquierda{animation:mesSalidaIzquierda .14s ease both}
.animacion-mes-salida-derecha{animation:mesSalidaDerecha .14s ease both}
.animacion-mes-entrada-derecha{animation:mesEntradaDerecha .2s ease both}
.animacion-mes-entrada-izquierda{animation:mesEntradaIzquierda .2s ease both}
@keyframes mesSalidaIzquierda{to{opacity:0;transform:translateX(-24px)}}
@keyframes mesSalidaDerecha{to{opacity:0;transform:translateX(24px)}}
@keyframes mesEntradaDerecha{from{opacity:0;transform:translateX(24px)}to{opacity:1;transform:none}}
@keyframes mesEntradaIzquierda{from{opacity:0;transform:translateX(-24px)}to{opacity:1;transform:none}}
.dia.otro-mes{cursor:pointer}
.dia.otro-mes:hover{background:#f3f1eb}

.tarjeta-conexion #btn-reintentar-conexion{margin:14px auto 0}
.capa-conexion.transparente{background:#f4f2ed99;backdrop-filter:blur(1px)}

/* Ajustes 1.5.3 */
.sesion{
  height:16px;
  min-height:16px;
  padding:0 3px;
  display:flex;
  align-items:center;
  gap:4px;
  line-height:16px;
}
.sesion .hora,
.sesion .aventura,
.sesion .estado-texto{
  display:block;
  line-height:16px;
  min-height:16px;
  align-self:center;
}
.sesion .hora{flex:0 0 auto}
.sesion .aventura{flex:1 1 auto;min-width:0}
.calendario.publico .sesion{
  height:17px;
  min-height:17px;
  line-height:17px;
}
.calendario.publico .sesion .hora,
.calendario.publico .sesion .aventura,
.calendario.publico .sesion .estado-texto{
  line-height:17px;
  min-height:17px;
}


/* Ajustes de interfaz 1.6.4 */
.identidad-admin{background:var(--fondo-logo)}

/* El formulario mantiene nombre/teléfono, correo y una fila operativa compacta. */
.datos-personales-grid{grid-template-columns:minmax(170px,.8fr) minmax(170px,.8fr)}
.fila-datos-reserva{
 grid-column:1/-1;
 display:grid;
 grid-template-columns:minmax(112px,.34fr) minmax(190px,1fr) auto;
 gap:13px 10px;
 align-items:end
}
.fila-datos-reserva label{margin:0}
.fila-datos-reserva .campo-jugadores{grid-column:auto}
.fila-datos-reserva .campo-jugadores select{width:100%;min-width:150px;max-width:180px}
.fila-datos-reserva .campo-tarjeta{grid-column:auto}
.boton-validar-codigo{min-height:42px;margin:0}

.bloque-confirmacion{display:flex;align-items:center;justify-content:flex-end;gap:18px;flex-wrap:wrap}
.bloque-confirmacion .condiciones{margin:0}

/* Deslizamiento completo del panel mensual. */
body{overflow-x:hidden}
.calendario-tarjeta,.selector-pase-publico{will-change:transform,opacity}
.animacion-mes-salida-izquierda{animation:panelMesSalidaIzquierda .26s cubic-bezier(.4,0,.2,1) both}
.animacion-mes-salida-derecha{animation:panelMesSalidaDerecha .26s cubic-bezier(.4,0,.2,1) both}
.animacion-mes-entrada-derecha{animation:panelMesEntradaDerecha .32s cubic-bezier(.2,.7,.2,1) both}
.animacion-mes-entrada-izquierda{animation:panelMesEntradaIzquierda .32s cubic-bezier(.2,.7,.2,1) both}
@keyframes panelMesSalidaIzquierda{to{opacity:.18;transform:translateX(-100%)}}
@keyframes panelMesSalidaDerecha{to{opacity:.18;transform:translateX(100%)}}
@keyframes panelMesEntradaDerecha{from{opacity:.18;transform:translateX(100%)}to{opacity:1;transform:translateX(0)}}
@keyframes panelMesEntradaIzquierda{from{opacity:.18;transform:translateX(-100%)}to{opacity:1;transform:translateX(0)}}

@media(max-width:720px){
 .fila-datos-reserva{grid-template-columns:1fr}
 .fila-datos-reserva .campo-jugadores select{max-width:none}
 .boton-validar-codigo{width:100%}
 .bloque-confirmacion{align-items:stretch;flex-direction:column}
 .bloque-confirmacion .condiciones{width:100%}
}


/* Interfaz 1.6.5 · transición mensual dentro de su contenedor */
.calendario-tarjeta,.selector-pase-publico{overflow:hidden}
.marco-calendario,.marco-calendario-publico,.bloque-horas-publicas{will-change:transform,opacity}
.animacion-mes-salida-izquierda{animation:mesInteriorSalidaIzquierda .17s cubic-bezier(.4,0,.2,1) both}
.animacion-mes-salida-derecha{animation:mesInteriorSalidaDerecha .17s cubic-bezier(.4,0,.2,1) both}
.animacion-mes-entrada-derecha{animation:mesInteriorEntradaDerecha .21s cubic-bezier(.2,.7,.2,1) both}
.animacion-mes-entrada-izquierda{animation:mesInteriorEntradaIzquierda .21s cubic-bezier(.2,.7,.2,1) both}
@keyframes mesInteriorSalidaIzquierda{to{opacity:.3;transform:translateX(-100%)}}
@keyframes mesInteriorSalidaDerecha{to{opacity:.3;transform:translateX(100%)}}
@keyframes mesInteriorEntradaDerecha{from{opacity:.3;transform:translateX(100%)}to{opacity:1;transform:translateX(0)}}
@keyframes mesInteriorEntradaIzquierda{from{opacity:.3;transform:translateX(-100%)}to{opacity:1;transform:translateX(0)}}
@media(prefers-reduced-motion:reduce){
 .animacion-mes-salida-izquierda,.animacion-mes-salida-derecha,.animacion-mes-entrada-derecha,.animacion-mes-entrada-izquierda{animation:none}
}

/* Reservas 1.6.7 */
.filtro-busqueda input{min-width:0;width:100%}
.sesion.publica-reservada,.hora-publica.reservada{border-color:#dca8a4;background:#fbe7e5;color:#9b302c}
.hora-publica.reservada strong,.hora-publica.reservada span{color:inherit}
.datos-reserva-detalle{margin-top:16px;padding-top:15px;border-top:1px solid var(--borde)}
.datos-reserva-detalle h3{margin:0 0 11px;font-size:14px}
.datos-reserva-detalle dl{margin-top:0}
.modal-confirmacion{text-align:center}
.modal-confirmacion .icono-confirmacion{width:44px;height:44px;margin:0 auto 12px;border-radius:50%;display:grid;place-items:center;background:#f7e4e2;color:#a93631;font-size:22px;font-weight:900}
.modal-confirmacion h2{margin-bottom:8px}
.modal-confirmacion p{margin:0;color:var(--texto-suave);line-height:1.5}
.dialogo-acciones .boton-peligro{background:#a93631;color:#fff}
.modal-confirmacion:not(.peligrosa) .icono-confirmacion{background:#edf3ef;color:#2f6d4e}
@media(max-width:1050px){.panel-filtros{grid-template-columns:1fr 1fr}.filtro-busqueda{grid-column:1/-1}.acciones-filtros{grid-column:1/-1}}
@media(max-width:620px){.panel-filtros{grid-template-columns:1fr}.filtro-busqueda,.acciones-filtros{grid-column:auto}.acciones-filtros{justify-content:stretch;flex-direction:column}.acciones-filtros .boton{width:100%}}

/* Búsqueda administrativa */
.campo-busqueda{position:relative;display:block}
.campo-busqueda input{width:100%;padding-right:48px}
.limpiar-busqueda{
 position:absolute;
 inset-block:0;
 right:8px;
 margin-block:auto;
 width:30px;
 height:30px;
 padding:0;
 border:0;
 border-radius:50%;
 display:grid;
 place-items:center;
 background:var(--superficie-suave,#eceae5);
 color:var(--texto,#20211f);
 cursor:pointer;
 transition:background-color .15s ease,transform .15s ease
}
.limpiar-busqueda::before,.limpiar-busqueda::after{
 content:'';
 position:absolute;
 left:50%;
 top:50%;
 width:14px;
 height:2px;
 border-radius:999px;
 background:currentColor;
 transform-origin:center
}
.limpiar-busqueda::before{transform:translate(-50%,-50%) rotate(45deg)}
.limpiar-busqueda::after{transform:translate(-50%,-50%) rotate(-45deg)}
.limpiar-busqueda:hover{background:var(--borde,#d7d4cc);transform:scale(1.05)}
.limpiar-busqueda:focus-visible{outline:2px solid var(--acento,#b78c36);outline-offset:2px}
.limpiar-busqueda.oculto{display:none}


/* Calendario y búsqueda 1.7.1 */
.columna-lateral-calendario{display:grid;gap:12px;align-content:start}
.panel-proximas{padding:15px}.panel-proximas h3{margin:0 0 10px;font-size:17px}
.item-reserva-navegable{width:100%;padding:9px 4px;border:0;border-bottom:1px solid #eceae4;background:transparent;display:block;text-align:left;cursor:pointer}
.item-reserva-navegable:hover{background:var(--panel-suave)}.item-reserva-navegable span{display:block;color:var(--texto-suave);font-size:11px}
.resultados-busqueda{margin-top:12px;padding:16px}.resultados-busqueda header{display:flex;justify-content:space-between;align-items:end;margin-bottom:10px}.resultados-busqueda h2{margin:0;font-size:18px}.resultados-busqueda p{margin:3px 0 0;color:var(--texto-suave)}
.lista-resultados-busqueda{display:grid;gap:6px}.resultado-busqueda{width:100%;padding:10px 12px;border:1px solid var(--borde);border-radius:8px;background:#fff;display:grid;grid-template-columns:minmax(0,1fr) minmax(220px,.7fr);gap:18px;text-align:left;cursor:pointer}.resultado-busqueda:hover{border-color:var(--oro);background:#fffdf7}.resultado-busqueda span{min-width:0}.resultado-busqueda strong,.resultado-busqueda small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.resultado-busqueda small{margin-top:2px;color:var(--texto-suave)}.resultado-pase{text-align:right}.sin-resultados{padding:18px;border-radius:8px;background:var(--panel-suave);text-align:center}
.indicador-dia.completo,.dia-publico.completo i{background:var(--rojo)}
.campo-busqueda{position:relative}.campo-busqueda input{padding-right:42px}
.limpiar-busqueda{top:50%;bottom:auto;right:9px;margin:0;width:26px;height:26px;transform:translateY(-50%)}
.limpiar-busqueda:hover{transform:translateY(-50%) scale(1.04)}
.limpiar-busqueda::before,.limpiar-busqueda::after{width:12px;height:1.8px}
@media(max-width:1180px){.columna-lateral-calendario{grid-template-columns:1fr 1fr}.resultado-busqueda{grid-template-columns:1fr 1fr}}
@media(max-width:720px){.columna-lateral-calendario{grid-template-columns:1fr}.resultado-busqueda{grid-template-columns:1fr;gap:5px}.resultado-pase{text-align:left}}

/* Reserva manual contextual 1.7.2 */
.resumen-sesion-manual{margin:0 0 16px;padding:12px 14px;border:1px solid var(--borde);border-radius:var(--radio-control);background:var(--panel-suave)}
.resumen-sesion-manual strong,.resumen-sesion-manual span{display:block}
.resumen-sesion-manual span{margin-top:3px;color:var(--texto-suave);font-size:12px}


/* Interfaz 1.7.3 */
.acciones-detalle{display:flex;align-items:stretch;gap:7px}
.acciones-detalle.acciones-disponible{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(76px,.75fr) auto}
.acciones-detalle button{display:inline-flex;align-items:center;justify-content:center;gap:7px;white-space:nowrap}
.acciones-detalle .accion-manual{background:var(--lateral);color:#fff}
.acciones-detalle .accion-manual svg{width:16px;height:16px;flex:0 0 16px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.sesion.seleccionada{position:relative;z-index:2;border-color:var(--oro-oscuro);box-shadow:0 0 0 2px #fff,0 0 0 4px rgb(195 160 79 / 70%);filter:none}
.dia.seleccionado-dia{box-shadow:none}

/* Estado diario más visible mediante una esquina coloreada. */
.dia-publico{overflow:hidden}
.dia-publico i{right:0;bottom:0;width:19px;height:19px;border-radius:0;clip-path:polygon(100% 0,100% 100%,0 100%)}
.dia-publico.disponible i{background:var(--verde)}
.dia-publico.parcial i{background:var(--ambar)}
.dia-publico.completo i{background:var(--rojo)}
.dia-publico.sin-sesiones i{display:none}

/* Solo se anima el calendario mensual público; las horas permanecen quietas. */
.bloque-horas-publicas{will-change:auto}

@media(max-width:430px){
 .acciones-detalle.acciones-disponible{grid-template-columns:1fr 1fr}
 .acciones-detalle.acciones-disponible .accion-manual{grid-column:1/-1}
}


/* Cierre del bloque de calendario 1.7.4 */
.item-reserva-navegable{padding:12px 8px}
.item-reserva-navegable .proxima-aventura{margin:0 0 6px;font-size:13px;line-height:1.25;color:var(--texto)}
.item-reserva-navegable .proxima-fecha{font-size:12px;font-weight:700;color:var(--texto)}
.item-reserva-navegable .proxima-hora{margin-top:1px;font-size:12px;font-weight:800;color:var(--oro-oscuro)}
.item-reserva-navegable .proxima-cliente{margin-top:7px;font-size:12px;font-weight:750;color:var(--texto)}
.item-reserva-navegable .proxima-contacto{margin-top:1px;font-size:11px;color:var(--texto-suave)}
.acciones-detalle.acciones-disponible{grid-template-columns:minmax(112px,1fr) minmax(86px,.72fr) minmax(76px,.62fr)}
.acciones-detalle .accion-manual{min-width:0;padding-inline:10px}
@media(max-width:1360px){
 .rejilla-calendario-admin{grid-template-columns:minmax(620px,1fr) 300px}
 .acciones-detalle.acciones-disponible{grid-template-columns:1fr 1fr}
 .acciones-detalle.acciones-disponible .accion-manual{grid-column:1/-1;width:100%}
}
@media(max-width:1180px){
 .rejilla-calendario-admin{grid-template-columns:1fr}
 .acciones-detalle.acciones-disponible{grid-template-columns:repeat(3,minmax(0,1fr))}
 .acciones-detalle.acciones-disponible .accion-manual{grid-column:auto}
}
@media(max-width:700px){
 .acciones-detalle.acciones-disponible{grid-template-columns:1fr 1fr}
 .acciones-detalle.acciones-disponible .accion-manual{grid-column:1/-1}
}
@media(max-width:420px){
 .acciones-detalle.acciones-disponible{grid-template-columns:1fr}
 .acciones-detalle.acciones-disponible .accion-manual{grid-column:auto}
 .acciones-detalle button{width:100%}
}


/* Ajustes finales 1.7.5 */
/* Corrección óptica: el campo conserva 6 px de separación superior respecto a la etiqueta. */
.limpiar-busqueda{
 top:calc(50% + 3px);
 right:10px;
 width:24px;
 height:24px;
 transform:translateY(-50%);
}
.limpiar-busqueda:hover{transform:translateY(-50%) scale(1.04)}
.limpiar-busqueda::before,.limpiar-busqueda::after{width:11px;height:1.6px}
.proxima-cliente{margin-top:5px;color:var(--texto)!important;font-weight:700}


/* Integración exclusiva Pirámide */
html{background:transparent}
body,.web-publica{background:transparent!important}
.cabecera-publica{display:none}
.contenido-publico{padding:0 0 14px}
.selector-aventura-publica{min-height:38px;margin:0 0 22px;justify-content:flex-end}
.selector-aventura-publica>label{display:none!important}
.selector-aventura-publica .aviso-bloqueo{margin-left:auto}
.paso-publico{margin-top:0;margin-bottom:34px}
.paso-publico:last-child{margin-bottom:0}
.titulo-paso{margin-bottom:12px}
.selector-pase-publico,.resumen-tarjeta,.formulario-tarjeta,.confirmacion-tarjeta{
 background:rgba(255,255,255,.88)!important;
 backdrop-filter:blur(4px);
 border-radius:16px;
 box-shadow:0 12px 34px rgba(59,38,16,.16)
}
.selector-pase-publico{overflow:hidden}
.confirmacion-tarjeta{margin-bottom:0}
@media(max-width:620px){
 .paso-publico{margin-bottom:26px}
 .selector-aventura-publica{margin-bottom:14px}
}

/* Integración Pirámide 0.4 · aire superior mínimo y pasos más separados */
.contenido-publico{padding-top:0!important;padding-bottom:6px!important}
.selector-aventura-publica{min-height:0!important;margin:0!important}
.selector-aventura-publica:has(.aviso-bloqueo.oculto){display:none!important}
.selector-aventura-publica:not(:has(.aviso-bloqueo.oculto)){margin-bottom:12px!important}
.paso-publico{margin-top:0!important;margin-bottom:48px!important}
.paso-publico:last-child{margin-bottom:4px!important}
.titulo-paso{margin-bottom:14px!important}
.selector-pase-publico,.resumen-tarjeta,.formulario-tarjeta,.confirmacion-tarjeta{
 background:rgba(255,255,255,.4)!important;
 border:1px solid rgba(114,94,55,.72)!important;
 border-radius:10px!important;
 backdrop-filter:none!important;
 box-shadow:0 8px 24px rgba(58,39,35,.12)!important
}
@media(max-width:620px){
 .paso-publico{margin-bottom:34px!important}
 .titulo-paso{margin-bottom:10px!important}
}


/* Pirámide 0.5 · separación final y selector de jugadores */
.contenido-publico{
 padding-top:0!important;
 padding-bottom:28px!important;
}
.paso-publico:last-child{
 margin-bottom:28px!important;
}
.fila-datos-reserva{
 grid-template-columns:minmax(150px,180px) minmax(240px,1fr) auto!important;
 column-gap:14px!important;
 row-gap:10px!important;
 align-items:end!important;
}
.fila-datos-reserva .campo-jugadores,
.fila-datos-reserva .campo-tarjeta{
 min-width:0!important;
 width:100%!important;
}
.fila-datos-reserva .campo-jugadores select{
 width:100%!important;
 min-width:0!important;
 max-width:none!important;
}
.fila-datos-reserva .campo-tarjeta input{
 width:100%!important;
 min-width:0!important;
}
.boton-validar-codigo{white-space:nowrap}
@media(max-width:760px){
 .fila-datos-reserva{grid-template-columns:1fr!important}
 .boton-validar-codigo{width:100%}
 .paso-publico:last-child{margin-bottom:20px!important}
 .contenido-publico{padding-bottom:20px!important}
}
