/* Tema «Modo gamer» de Wessel Asistencia — noviembre 2026 (para los hombres; solo la app del personal).
   Solo actúa cuando <html> tiene la clase "pv-gamer". La pone sola el script de la página del 1 al 30 de noviembre de 2026
   (hora de Perú), según el campo «Género» de la ficha del trabajador (hombre → gamer, mujer → flores, sin definir → sobria).
   Administración puede forzar o apagar la temporada en Configuración (settings/general.temaPrimavera = auto | on | off).
   Siempre oscuro (neón sobre negro), sin importar el modo claro u oscuro del celular. Íconos dibujados planos (SVG inline), sin imágenes externas. */
html.pv-gamer:root, html.pv-gamer:root[data-theme]{
  color-scheme:dark;
  --papel:#07080F; --tarjeta:#0F1220; --tarjeta-2:#171B30; --control:#05060C;
  --tinta:#EAF2FF; --tinta-suave:#9FB0D0; --tinta-tenue:#8497BA;
  --linea:rgba(0,229,255,.2); --linea-fuerte:rgba(0,229,255,.42);
  --burdeos:#6B4BFF; --burdeos-texto:#B7A4FF; --sobre-color:#FFFFFF;
  --sello:#39FF88; --sobre-sello:#04210F; --tardanza:#FFD23F; --falta:#FF6B86;
  --tinta-sel:rgba(0,229,255,.3);
  --gm-control:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 40'%3E%3Cpath d='M11 12h18a8 8 0 0 1 8 8l1.4 9a4.6 4.6 0 0 1-8.2 3l-3.2-5H13l-3.2 5a4.6 4.6 0 0 1-8.2-3L3 20a8 8 0 0 1 8-8z' fill='%232B3150' stroke='%2300E5FF' stroke-width='2'/%3E%3Cpath d='M12 16v9M7.5 20.5h9' stroke='%23EAF2FF' stroke-width='3' stroke-linecap='round'/%3E%3Ccircle cx='28' cy='17' r='2.2' fill='%2339FF88'/%3E%3Ccircle cx='32.5' cy='21' r='2.2' fill='%23FF4D6D'/%3E%3Ccircle cx='27' cy='25' r='2.2' fill='%23FFD23F'/%3E%3Ccircle cx='23.5' cy='21' r='2.2' fill='%2300E5FF'/%3E%3C/svg%3E");
  --gm-trofeo:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 40'%3E%3Cpath d='M12 6h16v10a8 8 0 0 1-16 0z' fill='%23FFC928'/%3E%3Cpath d='M12 9H7.5a5 5 0 0 0 5 8.5M28 9h4.5a5 5 0 0 1-5 8.5' stroke='%23FFC928' stroke-width='2.6' fill='none' stroke-linecap='round'/%3E%3Crect x='18' y='24' width='4' height='6' fill='%23E0A800'/%3E%3Crect x='12' y='30' width='16' height='4.5' rx='1.2' fill='%23FFC928'/%3E%3Cpath d='M15.5 9v6' stroke='%23FFF1B8' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E");
  --gm-rayo:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 40'%3E%3Cpolygon points='23,3 9,23 18,23 15,37 31,15 21,15' fill='%23FFE14A' stroke='%23FFB800' stroke-width='1.6' stroke-linejoin='round'/%3E%3C/svg%3E");
  --gm-escudo:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 40'%3E%3Cpath d='M20 4l14 5v10c0 9-6 15-14 18C12 34 6 28 6 19V9z' fill='%231E2A55' stroke='%2300E5FF' stroke-width='2' stroke-linejoin='round'/%3E%3Cpath d='M21 11l-6 10h4.5l-1.5 8 7-11h-4.5z' fill='%2339FF88'/%3E%3C/svg%3E");
  --gm-moneda:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 40'%3E%3Ccircle cx='20' cy='20' r='14.5' fill='%23FFC928' stroke='%23E0A800' stroke-width='2'/%3E%3Ccircle cx='20' cy='20' r='9.5' fill='none' stroke='%23FFE08A' stroke-width='2'/%3E%3Cpath d='M20 13l2 4.4 4.8.6-3.5 3.3.9 4.7-4.2-2.4-4.2 2.4.9-4.7-3.5-3.3 4.8-.6z' fill='%23E0A800'/%3E%3C/svg%3E");
  --gm-corazon:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 40'%3E%3Cpath d='M20 35C8 26 4 19 4 13a8 8 0 0 1 16-2 8 8 0 0 1 16 2c0 6-4 13-16 22z' fill='%23FF4D6D'/%3E%3Cpath d='M10 12q1-4 5-4' stroke='%23FFC2CC' stroke-width='2.2' stroke-linecap='round' fill='none'/%3E%3C/svg%3E");
  --gm-marciano:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 40'%3E%3Cg fill='%2339FF88'%3E%3Crect x='8.1' y='6.0' width='3.5' height='3.5'/%3E%3Crect x='28.5' y='6.0' width='3.5' height='3.5'/%3E%3Crect x='11.5' y='9.4' width='3.5' height='3.5'/%3E%3Crect x='25.1' y='9.4' width='3.5' height='3.5'/%3E%3Crect x='8.1' y='12.8' width='3.5' height='3.5'/%3E%3Crect x='11.5' y='12.8' width='3.5' height='3.5'/%3E%3Crect x='14.9' y='12.8' width='3.5' height='3.5'/%3E%3Crect x='18.3' y='12.8' width='3.5' height='3.5'/%3E%3Crect x='21.7' y='12.8' width='3.5' height='3.5'/%3E%3Crect x='25.1' y='12.8' width='3.5' height='3.5'/%3E%3Crect x='28.5' y='12.8' width='3.5' height='3.5'/%3E%3Crect x='4.7' y='16.2' width='3.5' height='3.5'/%3E%3Crect x='8.1' y='16.2' width='3.5' height='3.5'/%3E%3Crect x='14.9' y='16.2' width='3.5' height='3.5'/%3E%3Crect x='18.3' y='16.2' width='3.5' height='3.5'/%3E%3Crect x='21.7' y='16.2' width='3.5' height='3.5'/%3E%3Crect x='28.5' y='16.2' width='3.5' height='3.5'/%3E%3Crect x='31.9' y='16.2' width='3.5' height='3.5'/%3E%3Crect x='1.3' y='19.6' width='3.5' height='3.5'/%3E%3Crect x='4.7' y='19.6' width='3.5' height='3.5'/%3E%3Crect x='8.1' y='19.6' width='3.5' height='3.5'/%3E%3Crect x='11.5' y='19.6' width='3.5' height='3.5'/%3E%3Crect x='14.9' y='19.6' width='3.5' height='3.5'/%3E%3Crect x='18.3' y='19.6' width='3.5' height='3.5'/%3E%3Crect x='21.7' y='19.6' width='3.5' height='3.5'/%3E%3Crect x='25.1' y='19.6' width='3.5' height='3.5'/%3E%3Crect x='28.5' y='19.6' width='3.5' height='3.5'/%3E%3Crect x='31.9' y='19.6' width='3.5' height='3.5'/%3E%3Crect x='35.3' y='19.6' width='3.5' height='3.5'/%3E%3Crect x='1.3' y='23.0' width='3.5' height='3.5'/%3E%3Crect x='8.1' y='23.0' width='3.5' height='3.5'/%3E%3Crect x='11.5' y='23.0' width='3.5' height='3.5'/%3E%3Crect x='14.9' y='23.0' width='3.5' height='3.5'/%3E%3Crect x='18.3' y='23.0' width='3.5' height='3.5'/%3E%3Crect x='21.7' y='23.0' width='3.5' height='3.5'/%3E%3Crect x='25.1' y='23.0' width='3.5' height='3.5'/%3E%3Crect x='28.5' y='23.0' width='3.5' height='3.5'/%3E%3Crect x='35.3' y='23.0' width='3.5' height='3.5'/%3E%3Crect x='1.3' y='26.4' width='3.5' height='3.5'/%3E%3Crect x='8.1' y='26.4' width='3.5' height='3.5'/%3E%3Crect x='28.5' y='26.4' width='3.5' height='3.5'/%3E%3Crect x='35.3' y='26.4' width='3.5' height='3.5'/%3E%3Crect x='11.5' y='29.8' width='3.5' height='3.5'/%3E%3Crect x='14.9' y='29.8' width='3.5' height='3.5'/%3E%3Crect x='21.7' y='29.8' width='3.5' height='3.5'/%3E%3Crect x='25.1' y='29.8' width='3.5' height='3.5'/%3E%3C/g%3E%3Crect x='8' y='12.8' width='3.5' height='3.5' fill='%2307080F'/%3E%3Crect x='28.5' y='12.8' width='3.5' height='3.5' fill='%2307080F'/%3E%3C/svg%3E");
  --gm-esquina:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 40'%3E%3Cpath d='M2 38V9a7 7 0 0 1 7-7h29' stroke='%2300E5FF' stroke-width='3' fill='none' stroke-linecap='round'/%3E%3Cpath d='M8 38V14a6 6 0 0 1 6-6h24' stroke='%236B4BFF' stroke-width='1.6' fill='none' stroke-linecap='round' stroke-opacity='.8'/%3E%3Ccircle cx='2' cy='38' r='2' fill='%2300E5FF'/%3E%3C/svg%3E");
}
/* botones y textos */
html.pv-gamer .btn-principal{ color:#fff; box-shadow:0 0 0 1px rgba(183,164,255,.5), 0 4px 18px rgba(107,75,255,.4); }
html.pv-gamer .btn-marcar{ color:#04210F; box-shadow:0 0 0 1px rgba(57,255,136,.6), 0 6px 22px rgba(57,255,136,.3); }
html.pv-gamer .btn-marcar.salida{ background:#6B4BFF; color:#fff; box-shadow:0 0 0 1px rgba(183,164,255,.6), 0 6px 22px rgba(107,75,255,.45); }
html.pv-gamer .btn-marcar.btn-extra{ background:#FFD23F; color:#241A00; border-color:#241A00; box-shadow:0 3px 0 #241A00, 0 0 18px rgba(255,210,63,.3); }
html.pv-gamer .btn-marcar.btn-extra.en-curso{ background:#6B4BFF; color:#fff; border-color:#fff; }
html.pv-gamer .rotulo-seccion{ color:#00E5FF; }
html.pv-gamer .tarjeta, html.pv-gamer .casilla{ border-color:var(--linea-fuerte); box-shadow:inset 0 0 18px rgba(0,229,255,.07); }
html.pv-gamer .reloj-hora{ text-shadow:0 0 14px rgba(0,229,255,.6), 0 0 28px rgba(107,75,255,.35); }

/* ---- decoración ---- */
/* franja fina arriba: cian → violeta → verde neón */
html.pv-gamer body{ border-top:3px solid transparent; border-image:linear-gradient(90deg,#00E5FF,#6B4BFF,#39FF88) 1; overflow-x:hidden;
  background-image:linear-gradient(rgba(0,229,255,.045) 1px, transparent 1px), linear-gradient(90deg, rgba(0,229,255,.045) 1px, transparent 1px); background-size:28px 28px; }
/* control junto al saludo */
html.pv-gamer #saludo{ position:relative; }
html.pv-gamer #saludo::after{ content:''; margin-left:auto; width:38px; height:38px; flex:none; background:var(--gm-control) center / contain no-repeat; }
/* fila de íconos bajo el reloj: control · trofeo · rayo · escudo · moneda · corazón */
html.pv-gamer .reloj::after{ content:''; display:block; height:28px; margin:10px auto 0; max-width:300px;
  background:var(--gm-control) 3% center / 27px no-repeat, var(--gm-trofeo) 21% center / 25px no-repeat, var(--gm-rayo) 39% center / 24px no-repeat,
             var(--gm-escudo) 57% center / 25px no-repeat, var(--gm-moneda) 75% center / 25px no-repeat, var(--gm-corazon) 96% center / 24px no-repeat; opacity:.97; }
/* esquinas de «pantalla de juego» bajo la barra de arriba (la derecha va en espejo) */
html.pv-gamer::before, html.pv-gamer::after{ content:''; position:fixed; top:72px; width:34px; height:34px; pointer-events:none; z-index:1; opacity:.85; background:var(--gm-esquina) top left / contain no-repeat; }
html.pv-gamer::before{ left:6px; }
html.pv-gamer::after{ right:6px; transform:scaleX(-1); }
/* control y trofeo fijos abajo (suben cuando la barra de pestañas está a la vista) */
html.pv-gamer body::before{ content:''; position:fixed; inset:0; pointer-events:none; z-index:2;
  background:var(--gm-escudo) left 10px bottom 12px / 34px no-repeat; opacity:.95; }
html.pv-gamer body.tm-nav::before{ background:var(--gm-escudo) left 10px bottom 82px / 34px no-repeat; }
html.pv-gamer body::after{ content:''; position:fixed; right:10px; bottom:12px; width:38px; height:38px; pointer-events:none; z-index:2; background:var(--gm-trofeo) center / contain no-repeat; opacity:.97; filter:drop-shadow(0 0 6px rgba(255,201,40,.55)); }
html.pv-gamer body.tm-nav::after{ bottom:82px; }
/* moneda junto al reloj */
html.pv-gamer .reloj{ position:relative; }
html.pv-gamer .reloj::before{ content:''; position:absolute; top:-2px; right:16px; width:28px; height:28px; pointer-events:none; background:var(--gm-moneda) center / contain no-repeat; }
/* marciano pixel que cruza la pantalla cerca del saludo */
html.pv-gamer #saludo::before{ content:''; position:absolute; top:-4px; left:-40px; width:24px; height:24px; pointer-events:none; background:var(--gm-marciano) center / contain no-repeat; }
@media (prefers-reduced-motion: no-preference){
  html.pv-gamer body::after{ animation:gm-trofeo 2.6s ease-in-out infinite; }
  @keyframes gm-trofeo{ 0%,100%{ transform:translateY(0) scale(1); } 50%{ transform:translateY(-5px) scale(1.06); } }
  html.pv-gamer .reloj::before{ animation:gm-moneda 2.2s ease-in-out infinite; }
  @keyframes gm-moneda{ 0%,100%{ transform:scaleX(1); } 50%{ transform:scaleX(.12); } }
  html.pv-gamer #saludo::before{ animation:gm-marciano 14s steps(70) infinite; }
  @keyframes gm-marciano{ 0%{ transform:translate(0,0); } 25%{ transform:translate(26vw,8px); } 50%{ transform:translate(52vw,0); } 75%{ transform:translate(78vw,8px); } 100%{ transform:translate(112vw,0); } }
  html.pv-gamer .reloj-hora{ animation:gm-neon 3s ease-in-out infinite; }
  @keyframes gm-neon{ 0%,100%{ text-shadow:0 0 12px rgba(0,229,255,.5), 0 0 24px rgba(107,75,255,.3); } 50%{ text-shadow:0 0 18px rgba(0,229,255,.85), 0 0 36px rgba(107,75,255,.5); } }
  html.pv-gamer .btn-marcar:not(:disabled):not(.btn-extra):not(.salida){ animation:gm-late 2.4s ease-in-out infinite; }
  @keyframes gm-late{ 0%,100%{ box-shadow:0 0 0 1px rgba(57,255,136,.6), 0 6px 18px rgba(57,255,136,.22); } 50%{ box-shadow:0 0 0 1px rgba(57,255,136,.9), 0 6px 30px rgba(57,255,136,.5); } }
}
/* en pantallas grandes: adornos más pequeños, sin moneda ni marciano */
@media (min-width:900px){
  html.pv-gamer body::before{ background:var(--gm-escudo) left 12px bottom 12px / 30px no-repeat; }
  html.pv-gamer body::after{ bottom:12px; right:14px; width:30px; height:30px; }
  html.pv-gamer .reloj::before, html.pv-gamer #saludo::before{ display:none; }
}
/* impresión y reportes: sin decoración */
@media print{ html.pv-gamer::before, html.pv-gamer::after, html.pv-gamer body::before, html.pv-gamer body::after, html.pv-gamer #saludo::after, html.pv-gamer #saludo::before, html.pv-gamer .reloj::before, html.pv-gamer .reloj::after{ display:none !important; } }
