/* PADELCRACKS · Partido 3D — hoja del juego.
   La marca del pádel es blanco y negro (#020202 / #F6F6F6): la interfaz es un
   material negro translúcido, fino, sobre la pista azul. La escena 3D manda. */

@font-face { font-family:"Schibsted Grotesk"; src:url("/fuentes/schibsted-grotesk.woff2") format("woff2"); font-weight:400 900; font-display:swap; }
@font-face { font-family:"Dorsal"; src:url("/fuentes/dorsal.woff2") format("woff2"); font-weight:800; font-display:swap; unicode-range:U+0030-0039,U+002B,U+002D,U+003A,U+002C,U+002E,U+0025,U+002F,U+00D7; }

:root {
  --negro:#020202; --papel:#F6F6F6; --gris:#bdbdbd; --gris-2:#7a7a7a; --blanco:#fff;
  --bola:#E9F75A;
  --cortada:#5EE0FF; --fuerte:#FF9A3C; --globo:#C9A4FF;
  --ok:#5fdc8a; --justo:#ffcf4a; --agotado:#ff5f5f;
  --f-texto:"Schibsted Grotesk",system-ui,-apple-system,"Segoe UI",sans-serif;
  --f-dorsal:"Dorsal","Schibsted Grotesk",system-ui,sans-serif;
  --cab:56px; --r:6px; --r-caja:18px;
  --material:rgba(2,2,2,.74);
  --salida:cubic-bezier(.2,.8,.2,1);
  --seguro-abajo:env(safe-area-inset-bottom,0px);
  color-scheme:light;
}
*,*::before,*::after{box-sizing:border-box}
html,body{height:100%;margin:0;overflow:hidden;overscroll-behavior:none}
body{
  display:flex;flex-direction:column;min-height:100dvh;
  background:var(--negro);color:var(--papel);
  font-family:var(--f-texto);font-size:1rem;line-height:1.5;
  -webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;
}
.vo{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.dorsal{font-family:var(--f-dorsal);font-weight:800;font-variant-numeric:tabular-nums;letter-spacing:-.02em}
:focus-visible{outline:3px solid #fff;outline-offset:3px;border-radius:3px}

/* cabecera: negra, con el wordmark */
.cab{
  flex:none;display:flex;align-items:center;gap:14px;
  height:var(--cab);padding:0 clamp(12px,2.5vw,24px);
  padding-left:max(clamp(12px,2.5vw,24px),env(safe-area-inset-left));
  padding-right:max(clamp(12px,2.5vw,24px),env(safe-area-inset-right));
  background:var(--negro);color:var(--papel);border-bottom:1px solid rgba(255,255,255,.12);
}
.cab__marca{display:flex;align-items:center;color:#fff;text-decoration:none}
.cab__logo{height:30px;width:auto;display:block}
.cab__volver{color:var(--gris);text-decoration:none;font-weight:600;font-size:.9375rem;padding:6px 8px;border-radius:var(--r);white-space:nowrap}
.cab__volver:hover{background:rgba(255,255,255,.1);color:#fff}
.cab__acciones{margin-left:auto;display:flex;gap:6px}
.ctrl{
  appearance:none;display:inline-flex;align-items:center;gap:7px;min-height:38px;padding:0 13px;border-radius:var(--r);
  border:1.5px solid rgba(255,255,255,.5);background:transparent;color:#fff;
  font:600 .9rem/1 var(--f-texto);cursor:pointer;text-decoration:none;
  transition:background .15s var(--salida),border-color .15s var(--salida),transform .1s var(--salida);
}
.ctrl:hover{background:rgba(255,255,255,.12);border-color:#fff}
.ctrl:active{transform:scale(.96)}
.ctrl[aria-pressed="true"]{background:var(--papel);color:var(--negro);border-color:var(--papel)}
.ctrl[disabled]{opacity:.45;cursor:default;pointer-events:none}
.ico{width:18px;height:18px;flex:none;fill:currentColor;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}

.boton{
  display:inline-flex;align-items:center;justify-content:center;min-height:50px;padding:0 28px;
  border-radius:var(--r);border:2px solid transparent;font:700 1.0625rem/1 var(--f-texto);
  text-decoration:none;cursor:pointer;transition:background .18s var(--salida),transform .1s var(--salida);
}
.boton--b{background:var(--papel);color:var(--negro)}
.boton--b:hover{background:#fff}
.boton:active{transform:scale(.97)}
.boton[disabled]{opacity:.6;cursor:progress}

/* escena */
.escena{position:relative;flex:1;min-height:0;background:#0f2a4a;overflow:hidden}
#pista{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none;cursor:crosshair;outline:none}
#pista:focus-visible{box-shadow:inset 0 0 0 3px #fff}

/* marcador: material translúcido, arriba a la izquierda */
.marcador{
  position:absolute;top:14px;left:max(14px,env(safe-area-inset-left));
  display:grid;grid-template-columns:auto 44px 44px;column-gap:10px;row-gap:2px;align-items:center;
  padding:10px 14px 9px;border-radius:12px;
  background:var(--material);backdrop-filter:blur(14px) saturate(160%);-webkit-backdrop-filter:blur(14px) saturate(160%);
  border-top:1px solid rgba(255,255,255,.22);box-shadow:0 8px 28px rgba(0,0,0,.35);
  pointer-events:none;
}
.marcador__cab{display:contents;font-size:.66rem;font-weight:600;letter-spacing:.02em;color:var(--gris)}
.marcador__cab span:not(:first-child){text-align:center}
.marcador__fila{display:contents}
.marcador__equipo{font-weight:700;font-size:.92rem;padding-right:6px;display:flex;align-items:center;gap:7px}
.marcador__fila--nos .marcador__equipo{color:#fff}
.marcador__fila:not(.marcador__fila--nos) .marcador__equipo{color:var(--gris)}
.marcador .dorsal{font-size:1.5rem;line-height:1.1;text-align:center;color:#fff}
.marcador__juegos{color:var(--bola)!important}
.marcador__oro{grid-column:1/-1;margin:4px 0 0;font-size:.72rem;font-weight:700;color:var(--bola);letter-spacing:.01em}
.saque{width:8px;height:8px;border-radius:50%;background:var(--bola);box-shadow:0 0 8px var(--bola);flex:none}

/* resistencia: bajo el marcador */
.energia{
  position:absolute;top:118px;left:max(14px,env(safe-area-inset-left));width:176px;
  display:flex;flex-direction:column;gap:4px;padding:8px 12px 9px;border-radius:10px;
  background:var(--material);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  border-top:1px solid rgba(255,255,255,.18);pointer-events:none;
}
.energia[hidden]{display:none}
.energia__rot{font-size:.66rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--gris)}
.energia__barra{display:block;height:7px;border-radius:4px;background:rgba(255,255,255,.16);overflow:hidden}
.energia__barra i{display:block;height:100%;border-radius:4px;background:var(--ok);transition:width .25s var(--salida),background .3s}
.energia[data-nivel="justo"] .energia__barra i{background:var(--justo)}
.energia[data-nivel="agotado"] .energia__barra i{background:var(--agotado);animation:late .8s ease-in-out infinite alternate}
@keyframes late{from{opacity:1}to{opacity:.55}}

/* pista de saque: una línea bajo el mensaje, arriba a la derecha */
.pista-saque{
  position:absolute;top:14px;right:max(14px,env(safe-area-inset-right));max-width:min(46vw,380px);margin:0;
  padding:8px 12px;border-radius:10px;font-size:.8rem;line-height:1.35;color:var(--papel);
  background:var(--material);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-top:1px solid rgba(255,255,255,.18);pointer-events:none;
}
.pista-saque[hidden]{display:none}
.pista-saque b{color:var(--bola)}

/* golpes: trío flotante abajo, con el golpe armado encima */
.golpes{
  position:absolute;left:50%;bottom:calc(16px + var(--seguro-abajo));transform:translateX(-50%);
  display:flex;flex-direction:column;align-items:center;gap:8px;pointer-events:none;
}
.golpes__fila{display:flex;gap:8px;pointer-events:auto}
.golpe{
  appearance:none;display:flex;flex-direction:column;align-items:center;gap:2px;min-width:92px;min-height:54px;padding:8px 14px 7px;
  border-radius:12px;border:1.5px solid rgba(255,255,255,.28);
  background:var(--material);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  color:#fff;cursor:pointer;
  transition:transform .12s var(--salida),background .15s var(--salida),border-color .15s var(--salida),box-shadow .15s var(--salida);
}
.golpe b{font-size:.95rem;font-weight:700;line-height:1.1;white-space:nowrap}
.golpe kbd{font:600 .66rem/1 var(--f-texto);color:var(--gris);border:1px solid rgba(255,255,255,.3);border-radius:4px;padding:2px 5px}
.golpe:hover{background:rgba(30,30,30,.94);border-color:rgba(255,255,255,.55)}
.golpe:active{transform:scale(.95)}
.golpe[aria-pressed="true"]{color:#0b0b0b;border-color:transparent;transform:translateY(-3px)}
.golpe--cortada[aria-pressed="true"]{background:var(--cortada);box-shadow:0 8px 22px rgba(94,224,255,.45)}
.golpe--fuerte[aria-pressed="true"]{background:var(--fuerte);box-shadow:0 8px 22px rgba(255,154,60,.45)}
.golpe--globo[aria-pressed="true"]{background:var(--globo);box-shadow:0 8px 22px rgba(201,164,255,.45)}
.golpe[aria-pressed="true"] kbd{color:#0b0b0b;border-color:rgba(0,0,0,.3)}
.golpes__armado{
  margin:0;padding:5px 12px;border-radius:999px;font-size:.78rem;font-weight:600;
  background:rgba(246,246,246,.94);color:var(--negro);box-shadow:0 4px 14px rgba(0,0,0,.3);
  animation:sube .22s var(--salida) both;
}
.golpes__armado b{font-weight:800}
/* potencia: barra sobre los botones, del color del golpe que se carga */
.potencia{
  --tipo:#fff;display:flex;flex-direction:column;gap:4px;width:min(320px,80vw);padding:8px 12px 7px;border-radius:10px;
  background:var(--material);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-top:1px solid rgba(255,255,255,.18);
  animation:sube .16s var(--salida) both;
}
.potencia[hidden]{display:none}
.potencia[data-tipo="cortada"]{--tipo:var(--cortada)}
.potencia[data-tipo="fuerte"],.potencia[data-tipo="remate"]{--tipo:var(--fuerte)}
.potencia[data-tipo="globo"]{--tipo:var(--globo)}
.potencia__rot{font-size:.66rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--gris)}
.potencia__rot b{color:var(--tipo)}
.potencia__barra{display:block;height:9px;border-radius:5px;background:rgba(255,255,255,.16);overflow:hidden}
.potencia__barra i{display:block;height:100%;border-radius:5px;background:var(--tipo);box-shadow:0 0 10px var(--tipo)}
.potencia__escala{display:flex;justify-content:space-between;font-size:.62rem;color:var(--gris)}
/* elegir figura: dos opciones, sin obligación (hombre por defecto) */
.ajuste--sexo{border:0;padding:0;margin:0;min-width:0}
.ajuste--sexo legend{padding:0;margin-bottom:4px;display:block;width:100%}
.ajuste__opciones{display:flex;gap:6px}
.opcion{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;border:1px solid rgba(255,255,255,.28);cursor:pointer;font-weight:600}
.opcion input{accent-color:var(--papel);margin:0}
.opcion:has(input:checked){background:var(--papel);color:var(--negro);border-color:var(--papel)}
@keyframes sube{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

/* mensaje de punto: centrado, aparece y se va */
#msg{
  position:absolute;left:50%;top:20%;transform:translate(-50%,0) scale(.96);
  display:flex;flex-direction:column;align-items:center;gap:4px;padding:12px 22px;border-radius:14px;
  background:var(--material);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  border-top:1px solid rgba(255,255,255,.22);box-shadow:0 12px 34px rgba(0,0,0,.4);
  text-align:center;pointer-events:none;opacity:0;transition:opacity .18s var(--salida),transform .22s var(--salida);
  max-width:min(80vw,460px);
}
#msg.on{opacity:1;transform:translate(-50%,0) scale(1)}
#msg b{font-size:clamp(1.15rem,2.4vw,1.55rem);font-weight:800;letter-spacing:-.015em;line-height:1.15}
#msg span{font-size:.9rem;color:var(--gris)}
#msg span:empty{display:none}

/* capas: inicio y pausa */
.capa{position:absolute;inset:0;display:grid;place-items:center;padding:16px;background:rgba(2,2,2,.5);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);z-index:5;overflow:auto}
.capa[hidden]{display:none}
.capa__caja{
  width:min(100%,560px);padding:clamp(22px,4vw,36px);border-radius:var(--r-caja);
  background:rgba(8,8,8,.94);border-top:1px solid rgba(255,255,255,.22);box-shadow:0 24px 70px rgba(0,0,0,.6);
  color:#fff;
}
.capa__caja--corta{width:min(100%,380px);text-align:center}
.capa h1{margin:0 0 10px;font-size:clamp(1.55rem,3.4vw,2.1rem);font-weight:800;line-height:1.08;letter-spacing:-.025em;text-wrap:balance}
.capa h2{margin:0 0 6px;font-size:1.4rem;font-weight:800;letter-spacing:-.02em}
.capa__texto{margin:0 0 14px;color:#dcdcdc;font-size:.98rem;max-width:60ch}
.capa__texto a{color:#fff}
.ajustes{display:grid;gap:10px;margin:0 0 16px;padding:12px 14px;border-radius:12px;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.12)}
.ajuste{display:grid;gap:4px;font-size:.88rem;color:#e6e6e6}
.ajuste__rot{display:flex;justify-content:space-between;font-weight:600}
.ajuste__rot b{color:var(--bola);font-weight:800}
.ajuste__escala{display:flex;justify-content:space-between;font-size:.66rem;color:var(--gris)}
.ajuste input[type="range"]{width:100%;accent-color:var(--papel);margin:0}
.ajuste--check{grid-template-columns:auto 1fr;align-items:start;gap:8px}
.ajuste--check input{margin:3px 0 0;accent-color:var(--papel)}
.ajuste--check small{color:var(--gris);font-size:.8rem}
.ayuda{list-style:none;margin:0 0 18px;padding:0;display:grid;gap:6px;font-size:.9rem;color:#dcdcdc}
.ayuda li{padding-left:14px;position:relative}
.ayuda li::before{content:"";position:absolute;left:0;top:.62em;width:6px;height:6px;border-radius:50%;background:var(--bola)}
.ayuda b{color:#fff}
.ayuda em{font-style:normal;color:#fff;text-decoration:underline;text-decoration-color:var(--bola);text-underline-offset:2px}
.capa__balance{margin:0 0 12px;font-size:.86rem;color:var(--gris)}
.capa__balance:empty{display:none}
.capa__carga{margin:12px 0 0;font-size:.82rem;color:var(--gris)}
.capa__carga[hidden]{display:none}

/* móvil: botones grandes y marcador compacto */
@media (max-width:640px){
  .cab__volver span,.ctrl span{display:none}
  .cab{gap:8px}
  .cab__acciones{gap:4px}
  .ctrl{padding:0 8px;min-height:34px}
  .cab__volver{padding:6px 4px}
  .cab__logo{height:22px}
  .marcador{top:10px;left:10px;grid-template-columns:auto 36px 36px;column-gap:6px;padding:8px 10px 7px;border-radius:10px}
  .marcador__equipo{font-size:.8rem}
  .marcador .dorsal{font-size:1.25rem}
  .energia{top:96px;left:10px;width:136px;padding:6px 10px 7px}
  .pista-saque{top:10px;right:10px;max-width:44vw;font-size:.72rem;padding:6px 9px}
  .golpes{bottom:calc(12px + var(--seguro-abajo));width:calc(100% - 20px)}
  .golpes__fila{width:100%;gap:6px}
  .golpe{flex:1;min-width:0;min-height:58px;padding:8px 6px 6px}
  .golpe b{font-size:.84rem}
  .golpe__largo{display:none}
  .capa__caja{padding:20px}
  .ayuda{font-size:.84rem}
}
/* móvil apaisado: poco alto. Botones en columna a la derecha, marcador en una línea */
@media (max-height:480px) and (orientation:landscape){
  .capa{padding:8px}
  .ayuda{display:none}
  .capa h1{font-size:1.3rem}
  .capa__texto{font-size:.88rem;margin-bottom:10px}
  .marcador{top:8px;left:max(8px,env(safe-area-inset-left));grid-template-columns:auto 30px 30px;column-gap:4px;row-gap:0;padding:5px 9px 4px;border-radius:8px}
  .marcador__cab{display:none}
  .marcador__equipo{font-size:.72rem;padding-right:4px}
  .marcador .dorsal{font-size:1.05rem}
  .energia{top:60px;left:8px;width:120px;padding:4px 8px 5px}
  .golpes{left:auto;right:max(10px,env(safe-area-inset-right));bottom:10px;transform:none;align-items:flex-end;gap:6px;width:auto}
  .golpes__fila{flex-direction:column;gap:5px;width:auto}
  .golpe{min-width:96px;min-height:40px;flex-direction:row;justify-content:space-between;gap:8px;padding:6px 10px;border-radius:9px}
  .golpe b{font-size:.84rem}
  .golpe kbd{font-size:.6rem;padding:1px 4px}
  #msg{top:14%;padding:8px 16px}
  #msg b{font-size:1.05rem}
  #msg span{font-size:.8rem}
}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}
}
