/* Golf de Llanes 360 — tokens del cartel 2026 (paleta A, render medido) */
:root{
  color-scheme: light;
  --golf-font:'Poppins','Urbanist',system-ui,-apple-system,'Segoe UI',sans-serif;
  --verde-texto:#186F38; --verde-2:#27813F; --gris-texto:#55585A;
  --fondo:#D0E8CF; --blanco:#FFFFFF; --rojo:#EF4D3A; --rojo-pliegue:#C32B29;
  --tee-blanca:#DDDEDE; --tee-blanca-txt:#55585A; --tee-amarilla:#F2AB27;
  --tee-azul:#2E79BC; --tee-roja:#EF4D3A; --tee-caja:#9CB69B;
  --map-halo:#92CE98; --map-rough:#0D9544; --map-calle:#4FAE4F; --map-green:#A2CC47;
  --map-bunker:#EED778; --map-lago:#2186C8; --canto:#085E2B;
  --panel:rgba(255,255,255,.94); --sombra:0 10px 30px rgba(8,94,43,.22), 0 2px 6px rgba(8,94,43,.14);
  --radio:18px;
  --top:calc(env(safe-area-inset-top,0px) + 10px);
}
*,*::before,*::after{box-sizing:border-box}
html,body{height:100%}
body{margin:0;background:var(--fondo);color:var(--verde-texto);font:400 15px/1.5 var(--golf-font);-webkit-font-smoothing:antialiased;overflow:hidden}
body.scrolling{overflow:auto}
button{font:inherit;color:inherit}
:focus-visible{outline:3px solid var(--rojo);outline-offset:2px}
/* idioma (js/i18n.js): hasta que llega el diccionario de inglés o francés, los textos de la pantalla de carga no se ven
   (el logotipo y la barra sí), para que no asome el castellano un instante */
html.i18n-espera .loader p,html.i18n-espera .loader .pub-franja{visibility:hidden}
/* toques: sin zoom por doble toque en iOS (el pellizco sigue funcionando); con :where no pesa más que .gm-ib / .gm-swing, que llevan touch-action:none */
:where(.topbar,.hoyos,.ficha) :where(button,a){touch-action:manipulation}
/* enlace de salto (index.html): fuera de pantalla hasta recibir el foco; entonces, píldora arriba a la izquierda */
.sr-skip{position:fixed;z-index:30;left:12px;top:var(--top);padding:10px 18px;border-radius:99px;background:var(--verde-texto);color:#fff;font:700 14px/1.2 var(--golf-font);text-decoration:none;box-shadow:var(--sombra);transform:translateY(-300%);transition:transform .15s ease}
.sr-skip:focus,.sr-skip:focus-visible{transform:none}

#scene{position:fixed;inset:0;width:100%;height:100%;display:block;z-index:0;touch-action:none}
body.scrolling #scene{pointer-events:none}
#markers{position:fixed;inset:0;z-index:2;pointer-events:none;overflow:hidden}
.mk{position:absolute;left:0;top:0;transform:translate(-50%,-100%);pointer-events:auto;cursor:pointer;border:0;padding:0;background:none;display:flex;flex-direction:column;align-items:center;gap:2px;will-change:transform}
.mk i{display:block;background-image:url(../assets/iconos.webp);background-repeat:no-repeat;filter:drop-shadow(0 3px 3px rgba(0,0,0,.18))}
.mk span{position:absolute;top:100%;left:50%;transform:translateX(-50%);margin-top:2px;font:600 11px/1.1 var(--golf-font);color:var(--verde-texto);background:var(--panel);padding:2px 7px;border-radius:99px;white-space:nowrap;box-shadow:0 1px 4px rgba(0,0,0,.12);opacity:0;transition:opacity .15s}
.mk:hover span,.mk:focus-visible span,.mk.on span{opacity:1}
.mk.dim{opacity:.35}
.mk.occ{opacity:0;pointer-events:none}
.mk-flag canvas{display:block;filter:drop-shadow(0 3px 3px rgba(0,0,0,.2))}
/* chincheta con la foto real de la aérea (G.chincheta: mapa y visor 360): foto redonda con borde blanco y punta,
   pestaña «H1» a la izquierda y tipo + dato a la derecha. --chx = diámetro de la foto con su borde. La caja del
   elemento es solo foto + punta (las pestañas van en absoluto): la punta cae justo en el punto */
.chx{--chx:54px;--chx-tab:calc(var(--chx) * .6);position:relative;flex:0 0 auto;width:var(--chx);height:calc(var(--chx) * 1.2);font-family:var(--golf-font);text-align:left;filter:drop-shadow(0 5px 7px rgba(6,46,22,.3)) drop-shadow(0 1px 1.5px rgba(6,46,22,.25));transform-origin:50% 100%;transition:transform .16s ease}
.chx::after{content:"";position:absolute;z-index:1;left:50%;top:calc(var(--chx) - 8px);width:calc(var(--chx) * .36);height:calc(var(--chx) * .2 + 8px);transform:translateX(-50%);background:#fff;clip-path:polygon(0 0,100% 0,50% 100%)}
.chx-foto{position:absolute;z-index:2;left:0;top:0;width:var(--chx);height:var(--chx);box-sizing:border-box;padding:3px;border-radius:50%;background:#fff;overflow:hidden}
.chx-foto img{display:block;width:100%;height:100%;border-radius:50%;object-fit:cover;background:#B9D9B4}
.chx-sin{display:grid;place-items:center}
.chx-izq,.chx-der{position:absolute;z-index:1;top:calc(var(--chx) / 2);height:var(--chx-tab);box-sizing:border-box;transform:translateY(-50%);display:flex;white-space:nowrap}
.chx-izq{right:calc(100% - 14px);align-items:center;padding:0 18px 0 10px;border-radius:99px 0 0 99px;background:var(--verde-texto);color:#fff;font:800 14px/1 var(--golf-font);letter-spacing:.01em}
.chx-der{left:calc(100% - 14px);flex-direction:column;justify-content:center;gap:2px;padding:0 12px 0 19px;border-radius:0 99px 99px 0;background:#fff;color:var(--verde-texto)}
.chx-der small{font:600 8.5px/1 var(--golf-font);letter-spacing:.09em;text-transform:uppercase;color:var(--gris-texto)}
.chx-der b{font:700 13px/1.05 var(--golf-font);font-variant-numeric:tabular-nums}
.chx-der b[hidden]{display:none}
/* salida: punto con el color de la barra elegida; green: tipo en rojo de bandera */
.mk-chx .chx-tee .chx-der b::before{content:"";display:inline-block;width:8px;height:8px;margin:0 5px 1px 0;border-radius:50%;background:var(--chx-barra,#F2AB27);box-shadow:inset 0 0 0 1px rgba(0,0,0,.12)}
.chx-green .chx-der small{color:var(--rojo-pliegue)}
.mk-chx > span{display:none}
.mk-chx:hover,.mk-chx:focus-visible{z-index:20000!important}
.chx-compacta .chx-der{opacity:0;transition:opacity .15s}
.mk-chx:hover .chx-compacta .chx-der,.mk-chx:focus-visible .chx-compacta .chx-der{opacity:1}
.mk-chx:hover .chx,.mk-chx:focus-visible .chx{transform:translateY(-3px) scale(1.07)}
.mk-chx:focus-visible{outline:none}
.mk-chx:focus-visible .chx-foto{box-shadow:inset 0 0 0 3px var(--rojo)}
@media (max-width:600px){.chx-izq{font-size:12.5px;padding:0 17px 0 8px}.chx-der{padding:0 10px 0 18px}.chx-der b{font-size:12px}.chx-der small{font-size:8px}}
@media (prefers-reduced-motion:reduce){.chx{transition:none}}
.mk[hidden]{display:none!important}

/* barra superior */
.topbar{position:fixed;z-index:6;top:var(--top);left:12px;right:12px;display:flex;align-items:center;gap:10px;flex-wrap:wrap;pointer-events:none}
.topbar>*{pointer-events:auto}
.brand{display:flex;align-items:center;gap:8px;text-decoration:none;color:var(--verde-texto);background:var(--panel);border-radius:99px;padding:4px 14px 4px 4px;box-shadow:var(--sombra)}
.brand img{border-radius:50%;display:block}
.brand b{display:block;font-weight:700;font-size:14px;line-height:1.1}
.brand small{display:block;font-weight:300;font-size:12px;line-height:1.1;letter-spacing:.04em}
.modes{display:flex;background:var(--panel);border-radius:99px;padding:4px;box-shadow:var(--sombra);margin-inline:auto}
.modes button{border:0;background:none;padding:8px 16px;border-radius:99px;font-weight:600;font-size:14px;cursor:pointer;color:var(--verde-texto)}
.modes button[aria-pressed="true"]{background:var(--verde-texto);color:#fff}
.tools{display:flex;gap:8px}
.chip{border:0;background:var(--panel);color:var(--verde-texto);border-radius:99px;padding:8px 14px;font-weight:600;font-size:13px;box-shadow:var(--sombra);cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;gap:6px}
.chip[aria-pressed="true"]{background:var(--verde-texto);color:#fff}
.icon-btn{border:0;background:var(--panel);color:var(--verde-texto);width:44px;height:44px;border-radius:50%;display:grid;place-items:center;box-shadow:var(--sombra);cursor:pointer}
/* selector de idioma (index.html .idioma, js/main.js): chip con el código del idioma actual y menú con los tres, cada uno en
   su idioma. main.js mueve la caja según el sitio libre (al final de .tools; en móvil tras los modos o junto al logo): el menú
   cuelga de ella (position:absolute), sin medir nada, y con el zoom del kiosko crece con la barra. Si ni así cabe sin añadir una
   fila a la barra, main.js pone .idi-logo (la caja a la derecha de la fila del logo), .idi-compacta (botones de los modos algo más
   estrechos) y/o .idi-marca (el logo sin su rótulo, como .snd-marca de audio.css) */
.idioma{position:relative;flex:0 0 auto;display:flex}
.idioma.idi-logo{margin-left:auto}
.t-idioma{padding:8px 10px;letter-spacing:.04em;justify-content:center}
.t-idioma[aria-expanded="true"]{background:var(--verde-texto);color:#fff}
.idioma-menu{position:absolute;z-index:3;top:calc(100% + 8px);right:0;min-width:152px;max-width:calc(100vw - 24px);display:flex;flex-direction:column;gap:4px;padding:6px;background:var(--blanco);border-radius:14px;box-shadow:var(--sombra)}
.idioma-menu[hidden]{display:none}
.idioma-menu button{border:0;border-radius:10px;background:#EEF4EC;color:var(--verde-texto);min-height:44px;padding:0 16px;font:600 14.5px/1.2 var(--golf-font);text-align:left;cursor:pointer;-webkit-tap-highlight-color:transparent}
.idioma-menu button:hover{background:#E1EEDD}
.idioma-menu button[aria-pressed="true"]{background:var(--verde-texto);color:#fff}
.topbar.idi-compacta .modes button{padding-left:6px;padding-right:6px}
.topbar.idi-marca .brand span{display:none}
.topbar.idi-marca .brand{padding:4px}
.topbar.idi-abierto{z-index:8}

/* selector de hoyos (banderas) */
.hoyos{position:fixed;z-index:5;left:0;right:0;bottom:calc(env(safe-area-inset-bottom,0px) + 34px);display:flex;gap:6px;justify-content:flex-start;padding:0 12px;overflow-x:auto;scrollbar-width:none}
/* centrada si cabe; si desborda (móvil), desplazable desde «Campo» (con justify-content:center el principio quedaba fuera de alcance) */
.hoyos>:first-child{margin-left:auto}
.hoyos>:last-child{margin-right:auto}
.hoyos::-webkit-scrollbar{display:none}
.hoyos button{flex:0 0 auto;border:0;background:var(--panel);border-radius:12px;box-shadow:var(--sombra);width:40px;height:44px;display:grid;place-items:center;cursor:pointer;padding:0;position:relative}
.hoyos button b{font:700 15px/1 var(--golf-font);color:var(--verde-texto)}
.hoyos button small{position:absolute;bottom:3px;font:500 10px/1 var(--golf-font);color:var(--gris-texto)}
/* hoyo activo: blanco sobre el rojo del pliegue (≈ 6:1; el rojo de bandera daba 3,6:1). --rojo no se toca: es el anillo de foco */
.hoyos button[aria-current="true"]{background:var(--rojo-pliegue)}
.hoyos button[aria-current="true"] b,.hoyos button[aria-current="true"] small{color:#fff}
.hoyos .all{width:auto;padding:0 12px;font:600 13px/1 var(--golf-font);color:var(--verde-texto)}

/* ficha del hoyo (maqueta de las fichas de la diseñadora, datos 2026) */
.ficha{position:fixed;z-index:5;right:16px;top:calc(var(--top) + 70px);width:min(330px,calc(100vw - 32px));background:var(--blanco);border-radius:var(--radio);box-shadow:var(--sombra);padding:22px 22px 18px 58px;max-height:calc(100% - 200px);overflow:auto}
.ficha .rail{position:absolute;left:22px;top:16px;bottom:30px;width:22px}
.ficha .rail::before{content:"";position:absolute;left:1px;top:0;width:18px;height:18px;border-radius:50%;border:3.5px solid var(--tee-caja);background:#fff}
.ficha .rail::after{content:"";position:absolute;left:9px;top:26px;bottom:0;border-left:3px dotted var(--tee-caja)}
.ficha .x{position:absolute;right:10px;top:10px;width:32px;height:32px;border:0;border-radius:50%;background:#EEF4EC;color:var(--verde-texto);cursor:pointer;font-size:18px;line-height:1}
.ficha h2{margin:0;font:800 34px/1 var(--golf-font);color:var(--verde-texto);letter-spacing:-.01em}
.ficha .nombre{margin:6px 0 2px;font:300 22px/1.15 var(--golf-font);color:var(--verde-texto);text-wrap:balance}
.ficha .par{margin:0 0 12px;font:500 17px/1.2 var(--golf-font);color:var(--verde-texto);letter-spacing:.02em}
.barras{display:grid;grid-template-columns:1fr 1fr;gap:7px;border:3px solid var(--tee-caja);border-radius:14px;padding:7px}
.barras button{border:0;border-radius:9px;padding:7px 4px;font:500 17px/1 var(--golf-font);color:#fff;cursor:pointer;font-variant-numeric:tabular-nums;outline-offset:1px}
.barras .b-blanca{background:var(--tee-blanca);color:var(--tee-blanca-txt)}
.barras .b-amarilla{background:var(--tee-amarilla)}
.barras .b-azul{background:var(--tee-azul)}
.barras .b-roja{background:var(--tee-roja)}
.barras button[aria-pressed="true"]{box-shadow:inset 0 0 0 3px rgba(0,0,0,.28)}
.ficha .datos{display:flex;gap:14px;margin:12px 0 0;font-size:13px;color:var(--gris-texto)}
.ficha .datos b{display:block;font:700 18px/1.1 var(--golf-font);color:var(--verde-texto);font-variant-numeric:tabular-nums}
.ficha .acciones{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.ficha .acc{display:flex;align-items:center;gap:8px;border:0;background:#EEF4EC;color:var(--verde-texto);border-radius:12px;padding:6px 10px 6px 6px;font:600 13px/1.15 var(--golf-font);cursor:pointer;text-decoration:none}
.ficha .acc i{width:34px;height:34px;flex:0 0 34px;background-image:url(../assets/iconos.webp);background-repeat:no-repeat}
.ficha .acc.jugar{background:var(--verde-texto);color:#fff}
.ficha .nota{margin:10px 0 0;font-size:11px;color:var(--gris-texto)}

/* panorámica */
.pano{position:fixed;inset:0;z-index:8;background:#0b2a17}
#pano-canvas{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none;cursor:grab}
#pano-canvas:active{cursor:grabbing}
.pano-hot{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.pano-bar{position:absolute;z-index:2;top:var(--top);left:12px;right:12px;display:flex;align-items:center;gap:10px}
.pano-title{background:var(--panel);border-radius:14px;padding:6px 14px;box-shadow:var(--sombra);min-width:0}
.pano-title b{display:block;font-weight:700;font-size:16px;line-height:1.2}
.pano-title small{display:block;color:var(--gris-texto);font-size:12px;line-height:1.3}
.pano-bar .chip{margin-left:auto}
.pano-mini{position:absolute;z-index:2;right:12px;bottom:calc(env(safe-area-inset-bottom,0px) + 70px);width:150px;height:150px;border-radius:50%;box-shadow:var(--sombra);border:4px solid #fff;background:var(--fondo)}
.pano-nav{position:absolute;z-index:2;left:0;right:0;bottom:calc(env(safe-area-inset-bottom,0px) + 16px);display:flex;justify-content:center;gap:10px}

.loader{position:fixed;inset:0;z-index:20;display:grid;place-content:center;justify-items:center;gap:10px;background:var(--fondo);transition:opacity .4s}
.loader p{margin:0;font-weight:500}
.loader .bar{width:200px;height:6px;border-radius:9px;background:#fff;overflow:hidden}
.loader .bar i{display:block;height:100%;width:0;background:var(--map-rough);transition:width .2s}
.loader.fuera{opacity:0;pointer-events:none}

.attrib{position:fixed;z-index:4;left:0;right:0;bottom:env(safe-area-inset-bottom,0px);display:flex;justify-content:space-between;gap:12px;padding:6px 14px;font-size:10.5px;color:var(--verde-texto);pointer-events:none;flex-wrap:wrap}
.attrib .corto,.attrib .av-c{display:none}
.attrib span span{background:none;padding:0;border-radius:0}
.attrib span{background:rgba(255,255,255,.88);border-radius:99px;padding:1px 8px}

.toast{position:fixed;z-index:12;left:50%;top:calc(var(--top) + 64px);transform:translateX(-50%);background:var(--verde-texto);color:#fff;padding:9px 16px;border-radius:99px;font-weight:600;font-size:14px;box-shadow:var(--sombra);transition:opacity .3s}
.toast[hidden]{display:none}

@media (max-width:720px){
  .brand span{display:none}
  .brand{padding:4px}
  .modes button{padding:7px 11px;font-size:13px}
  .modes{margin-inline:0}
  .tools{margin-left:auto}
  .ficha{left:12px;right:12px;width:auto;top:auto;bottom:calc(env(safe-area-inset-bottom,0px) + 92px);max-height:58%;padding:14px 16px 12px 48px}
  .ficha .rail{left:16px}
  .ficha h2{font-size:28px}
  .ficha .nombre{font-size:19px}
  /* ficha compacta: que «Recorrer hoyo a hoyo» y «Jugar este hoyo» se vean sin desplazar la ficha */
  .ficha .nombre{margin:2px 0 0}
  .ficha .par{font-size:15px;margin-bottom:8px}
  .barras{grid-template-columns:repeat(4,1fr);gap:5px;padding:5px}
  .barras button{font-size:14px;padding:7px 2px}
  .ficha .datos{margin-top:8px;font-size:12px;line-height:1.35}
  .ficha .datos b{font-size:16px}
  .ficha .acciones{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:8px}
  .ficha .acc{padding:4px 8px 4px 4px;gap:6px;font-size:12px}
  .ficha .acc i{zoom:.82}
  .ficha .acc.jugar{justify-content:center;padding:8px}
  .ficha .nota{font-size:10px;line-height:1.35;margin-top:8px}
  .pano-mini{width:110px;height:110px;bottom:calc(env(safe-area-inset-bottom,0px) + 70px)}
  .attrib .largo{display:none}
  .attrib .corto{display:inline}
  .attrib .av-l{display:none}
  .attrib .av-c{display:inline}
  .attrib{flex-wrap:nowrap;gap:6px;padding:6px 8px;font-size:9.5px}
  .attrib span{white-space:nowrap}
}
/* Explorar en móvil (vertical y apaisado, el mismo corte que el HUD compacto de Jugar): todo lo que se toca mide ≥ 44 px.
   #t-sonido queda fuera: audio.css lo pinta de 36 px con un toque de 44 (pseudoelemento) */
@media (max-width:720px),(max-height:500px){
  .modes{padding:2px}
  .modes button{min-height:44px}
  .topbar .tools .chip:not(#t-sonido),.topbar .t-idioma{min-height:44px;min-width:44px;justify-content:center}
  .hoyos button{width:44px}
  .ficha .x{width:44px;height:44px;right:6px;top:6px}
  .barras button{min-height:44px}
  .ficha .acc,.ficha .pub-ficha{min-height:44px}
}
/* móviles de 320 px: la barra superior se parte en tres filas (~160 px) y la ficha al 58 % subía por debajo de ella */
@media (max-width:340px){.ficha{max-height:46%}}
/* kiosko vertical (1080×1920 táctil): barra superior, ficha y tira a tamaño de lectura, como los HUD de los modos */
@media (min-width:900px) and (min-height:1400px) and (max-aspect-ratio:4/5){
  .topbar,.ficha{zoom:1.3}
  .attrib{zoom:1.2;flex-wrap:nowrap}
  .hoyos{zoom:1.12}
  /* con el zoom 1,3 de la ficha: 34 px de CSS = 44 px en pantalla */
  .ficha .x{width:34px;height:34px}
  .barras button,.ficha .acc{min-height:34px}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}

/* publicidad (js/publicidad.js): franja de patrocinadores en la carga, rótulo al entrar y patrocinio en la ficha */
.pub-franja{position:absolute;left:0;right:0;bottom:calc(env(safe-area-inset-bottom,0px) + 24px);display:flex;flex-direction:column;align-items:center;gap:8px;padding:0 16px}
.pub-franja p{margin:0;font:600 10.5px/1 var(--golf-font);letter-spacing:.14em;text-transform:uppercase;color:var(--gris-texto)}
.pub-franja ul{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;justify-content:center;gap:8px}
.pub-franja li{display:grid;place-items:center;height:50px;padding:0 12px;background:#fff;border-radius:10px;box-shadow:0 2px 8px rgba(8,94,43,.12)}
.pub-franja img{display:block;height:36px;width:auto}
.pub-franja img.pub-ancho{height:17px}
.pub-franja li.pub-li-anun{padding:0 7px}
.pub-anun{display:inline-block;font:700 12.5px/1.1 var(--golf-font);color:var(--verde-texto);border:2px dashed var(--verde-texto);border-radius:8px;padding:6px 9px;white-space:nowrap}
.pub-rotulo{position:fixed;z-index:7;left:50%;top:calc(var(--top) + 62px);transform:translate(-50%,-8px);display:flex;align-items:center;gap:12px;max-width:calc(100vw - 24px);background:var(--panel);border-radius:99px;box-shadow:var(--sombra);padding:6px 8px 6px 18px;pointer-events:none;opacity:0;transition:opacity .35s ease,transform .35s ease}
.pub-rotulo.on{opacity:1;transform:translate(-50%,0)}
.pub-rotulo[hidden]{display:none}
.pub-rotulo-t{font:600 12.5px/1.15 var(--golf-font);color:var(--verde-texto);white-space:nowrap}
.pub-rotulo-l{display:flex;align-items:center;gap:6px}
.pub-rotulo-l>span{display:grid;place-items:center;height:40px;padding:0 10px;background:#fff;border-radius:99px;box-shadow:inset 0 0 0 1.5px #E2ECDF}
.pub-rotulo img{display:block;height:30px;width:auto}
.pub-rotulo img.pub-ancho{height:14px}
.pub-rotulo .pub-li-anun{padding:0 4px;box-shadow:none;background:none}
.pub-rotulo .pub-anun{font-size:11.5px;padding:5px 9px;border-radius:99px}
.ficha .pub-ficha{display:flex;align-items:center;gap:10px;margin:12px 0 0;padding:8px 10px 8px 12px;border-radius:12px;background:#fff;box-shadow:inset 0 0 0 1.5px #E2ECDF;text-decoration:none;color:var(--gris-texto);font:500 12px/1.2 var(--golf-font)}
.ficha .pub-ficha img{display:block;height:30px;width:auto;margin-left:auto}
.ficha .pub-ficha img.pub-ancho{height:16px}
.ficha .pub-ficha .pub-anun{margin-left:auto;font-size:12px}
.ficha .pub-ficha:hover{box-shadow:inset 0 0 0 1.5px var(--map-halo)}
.pub-atrib{display:block;font:400 9.5px/1.25 var(--golf-font);color:var(--gris-texto);text-align:center}
.pub-atrib[hidden]{display:none}
.ficha .pub-atrib{margin-top:4px;text-align:right;font-size:10px}
/* Jugar: patrocinador del hoyo en la tarjeta (el cartel 3D de la salida es pequeño en móvil) */
.gm-card .pub-card{display:flex;align-items:center;gap:9px;margin-top:11px;padding-top:9px;border-top:1.5px solid #E3EEE1}
.pub-card-t{font:600 10px/1.2 var(--golf-font);text-transform:uppercase;letter-spacing:.08em;color:var(--gris-texto);white-space:nowrap}
.pub-card img{display:block;flex:0 0 auto;height:30px;width:auto;max-width:180px}
.pub-card img.pub-ancho{height:15px}
.pub-card-n{min-width:0;font:600 13px/1.15 var(--golf-font);color:var(--verde-texto);overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}
.pub-card .pub-anun{font-size:11px;padding:3px 9px;border-width:1.5px;border-radius:99px}
body.pub-oculta .pub-franja,body.pub-oculta .pub-rotulo,body.pub-oculta .pub-ficha,body.pub-oculta .pub-card,body.pub-oculta .pub-atrib{display:none!important}
@media (max-width:720px){
  .pub-franja{gap:6px;bottom:calc(env(safe-area-inset-bottom,0px) + 18px)}
  .pub-franja ul{gap:5px;flex-wrap:nowrap}
  .pub-franja li{height:40px;padding:0 6px}
  .pub-franja li.pub-li-anun{padding:0 4px}
  .pub-franja img{height:26px}
  .pub-franja img.pub-ancho{height:12px}
  .pub-franja .pub-anun{font-size:10.5px;padding:4px 6px}
  .pub-rotulo{flex-direction:column;gap:5px;border-radius:16px;padding:8px 10px;top:calc(var(--top) + 56px)}
  .pub-rotulo-t{font-size:11.5px}
  .pub-rotulo-l>span{height:34px;padding:0 7px}
  .pub-rotulo img{height:25px}
  .pub-rotulo img.pub-ancho{height:11px}
  .pub-rotulo .pub-anun{font-size:10.5px;padding:4px 7px}
  .ficha .pub-ficha{margin-top:6px;padding:4px 8px 4px 10px;font-size:11px;min-height:44px}
  .ficha .pub-ficha img{height:24px}
  .ficha .pub-ficha img.pub-ancho{height:13px}
  .gm-card .pub-card{margin-top:5px;padding-top:5px;gap:7px;border-top-width:1px}
  .pub-card-t{font-size:9px;letter-spacing:.05em}
  .pub-card img{height:22px}
  .pub-card img.pub-ancho{height:12px}
  .pub-card-n{font-size:11px;white-space:nowrap;display:block;text-overflow:ellipsis}
  .pub-card .pub-anun{font-size:10px;padding:2px 7px}
}
/* por debajo de 340 px los cuatro logotipos no caben en una línea: la franja pasa a dos */
@media (max-width:340px){.pub-franja ul{flex-wrap:wrap}}
@media (min-width:900px) and (min-height:1400px) and (max-aspect-ratio:4/5){
  .pub-rotulo{zoom:1.3}
  .pub-franja{zoom:1.4}
}

/* carga patrocinada (js/preroll.js, docs/publicidad/CARGA-PATROCINADA.md): la pantalla de carga de siempre (logotipo,
   «Cargando el campo» y la barra real) con UNA tarjeta debajo de la barra, del estilo del visor (Poppins, verdes, radios
   y sombras de la ficha): patrocinador, agenda o dato útil. «Entrar al campo» en cuanto la escena está lista y, en las
   demás cargas de la visita, la franja «Presentado por [marca] · Patrocinado» abajo, donde va la de patrocinadores */
.loader>p{display:flex;align-items:baseline}
.ld-pct{font-weight:400;color:var(--gris-texto);font-variant-numeric:tabular-nums;white-space:pre}
/* barra indeterminada hasta el primer dato real de la carga (la pone preroll.js; sin él, la barra de siempre) */
.loader.ld-indet .bar i{width:28%;animation:ldIndet 1.5s ease-in-out infinite}
@keyframes ldIndet{from{transform:translateX(-100%)}to{transform:translateX(360%)}}
.loader.pub-pre-on{padding:calc(env(safe-area-inset-top,0px) + 14px) 16px calc(env(safe-area-inset-bottom,0px) + 14px)}
.loader.pub-pre-on>.pub-franja,.loader.pub-fr-on>.pub-franja{display:none}
@keyframes pubPreEntra{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
/* la tarjeta: su cuerpo es 16:9 en los tres tipos (al rotar no salta la pantalla); el ancho, el que deje el alto
   (--pc-fuera: lo que no es cuerpo) y, si aun así no cabe, el que ponga preroll.js (encaja: --pc-max) */
.pub-pre{--pc-fuera:360px;--pc-alto:calc(100vh - var(--pc-fuera));container-type:inline-size;width:min(560px,calc(100vw - 32px),calc(var(--pc-alto) * 16 / 9 + 24px),var(--pc-max,100vw));margin-top:6px;display:flex;flex-direction:column;gap:10px;padding:12px;background:var(--blanco);border-radius:var(--radio);box-shadow:var(--sombra);color:var(--verde-texto);text-align:left;animation:pubPreEntra .35s ease both;transition:opacity .2s ease}
@supports (height:100dvh){.pub-pre{--pc-alto:calc(100dvh - var(--pc-fuera))}}
.pub-pre[hidden]{display:none}
.pub-pre.pc-cambia{opacity:0}
.pc-cab{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;min-width:0;min-height:32px}
.pc-eti{flex:0 0 auto;font:700 10.5px/1 var(--golf-font);letter-spacing:.12em;text-transform:uppercase;color:var(--gris-texto);background:#fff;border-radius:6px;padding:6px 8px;box-shadow:inset 0 0 0 1.5px #C4D4C1}
.pc-quien{min-width:0;flex:1 1 0;font:600 14px/1.2 var(--golf-font);color:var(--verde-texto);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pc-quien[hidden]{display:none}
.pc-mas{margin-left:auto;flex:0 0 auto;display:inline-flex;align-items:center;min-height:32px;padding:0 14px;border-radius:99px;background:#EEF4EC;color:var(--verde-texto);font:600 12.5px/1 var(--golf-font);text-decoration:none;white-space:nowrap}
.pc-mas:hover{box-shadow:inset 0 0 0 1.5px var(--map-halo)}
.pc-mas:not([href]){display:none}
/* patrocinador: el póster (la tarjeta final del spot) sobre la misma tarjeta hecha con textos y el logotipo */
.pub-pre-marco{position:relative;display:block;aspect-ratio:16/9;border-radius:12px;overflow:hidden;background:#F3F7F2;text-decoration:none;-webkit-tap-highlight-color:transparent}
.pub-pre-marco[hidden]{display:none}
.pub-pre-marco:not([href]){cursor:default}
.pc-nativa{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5%;padding:6% 8%;text-align:center}
.pc-nativa img{display:block;height:30%;width:auto;max-width:72%;object-fit:contain}
.pc-nativa img.pub-ancho{height:11%}
.pc-nativa img[hidden]{display:none}
.pc-nativa i{display:block;width:44px;height:4px;border-radius:2px;background:var(--tee-amarilla)}
.pc-nativa b{font:700 17px/1.15 var(--golf-font);font-size:clamp(15px,5.2cqi,27px);color:var(--verde-texto);text-wrap:balance}
.pc-nativa span{padding:5px 14px;border-radius:99px;background:var(--verde-texto);color:#fff;font:600 12px/1.1 var(--golf-font);font-size:clamp(11px,2.8cqi,15px)}
.pc-nativa span:empty,.pc-nativa span[hidden]{display:none}
.pub-pre-poster,.pub-pre-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;border:0;opacity:0;transition:opacity .3s ease}
.pc-poster-on .pub-pre-poster,.pub-pre-rep .pub-pre-video{opacity:1}
/* agenda y dato útil: texto sobre el verde claro de las fichas */
.pc-texto{aspect-ratio:16/9;min-width:0;display:flex;flex-direction:column;justify-content:center;gap:8px;padding:14px 16px;border-radius:12px;background:#F3F7F2}
.pc-texto[hidden]{display:none}
.pub-pre p{margin:0}
.pub-pre .pc-tit{font:700 16px/1.2 var(--golf-font);font-size:clamp(15px,4.1cqi,23px);color:var(--verde-texto);text-wrap:balance}
.pub-pre .pc-aviso{font:400 10.5px/1.35 var(--golf-font);color:var(--gris-texto)}
.pc-ag{display:flex;gap:14px;gap:clamp(12px,3.2cqi,20px);align-items:flex-start}
.pc-cal{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;width:58px;width:clamp(54px,14cqi,76px);padding:9px 0 8px;border-radius:12px;background:#fff;box-shadow:0 2px 8px rgba(8,94,43,.12);color:var(--verde-texto)}
.pc-cal b{font:800 26px/1 var(--golf-font);font-size:clamp(24px,6.6cqi,36px)}
.pc-cal span{margin-top:4px;font:700 10.5px/1 var(--golf-font);letter-spacing:.12em;text-transform:uppercase;color:var(--rojo-pliegue)}
.pc-ag-t{min-width:0;display:flex;flex-direction:column;gap:3px}
.pub-pre .pc-cuando{font:600 12.5px/1.25 var(--golf-font);font-size:clamp(12.5px,2.9cqi,16px);color:var(--rojo-pliegue)}
.pub-pre .pc-donde{font:500 12.5px/1.3 var(--golf-font);font-size:clamp(12.5px,2.8cqi,15.5px);color:var(--verde-texto)}
.pub-pre .pc-txt{font:400 12.5px/1.35 var(--golf-font);font-size:clamp(12.5px,2.7cqi,15px);color:var(--gris-texto);display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
.pc-hoyo{display:grid;grid-template-columns:auto 1fr;gap:10px 14px;align-items:center}
.pc-num{display:grid;place-items:center;width:52px;height:56px;width:clamp(48px,12.5cqi,68px);height:clamp(52px,13.5cqi,74px);border-radius:12px;background:var(--rojo);box-shadow:0 3px 10px rgba(195,43,41,.25)}
.pc-num b{font:800 26px/1 var(--golf-font);font-size:clamp(24px,6.6cqi,36px);color:#fff}
.pc-hoyo-t{min-width:0}
.pub-pre .pc-hoyo .pc-tit{font:300 22px/1.1 var(--golf-font);font-size:clamp(19px,5.4cqi,30px)}
.pub-pre .pc-par{margin-top:4px;font:500 13px/1.25 var(--golf-font);font-size:clamp(13px,2.9cqi,16px);color:var(--verde-texto);letter-spacing:.01em}
.pc-barras{grid-column:1/-1;list-style:none;margin:0;padding:5px;display:grid;grid-template-columns:repeat(4,1fr);gap:5px;border:3px solid var(--tee-caja);border-radius:12px;background:#fff}
.pc-barras li{display:flex;align-items:center;justify-content:center;gap:5px;padding:6px 2px;border-radius:8px;font:500 13.5px/1 var(--golf-font);font-size:clamp(13px,2.9cqi,16px);color:var(--verde-texto);font-variant-numeric:tabular-nums;white-space:nowrap}
.pc-barras li::before{content:"";flex:0 0 auto;width:10px;height:10px;border-radius:50%;background:var(--b);box-shadow:inset 0 0 0 1px rgba(0,0,0,.18)}
.pc-barras .b-blanca{--b:var(--tee-blanca)}
.pc-barras .b-amarilla{--b:var(--tee-amarilla)}
.pc-barras .b-azul{--b:var(--tee-azul)}
.pc-barras .b-roja{--b:var(--tee-roja)}
.pc-hoyo .pc-aviso{grid-column:1/-1}
.pub-pre .pc-cifra{font:500 13px/1.3 var(--golf-font);font-size:clamp(13px,2.9cqi,16px);color:var(--verde-texto)}
.pc-cifra b{display:block;font:800 32px/1 var(--golf-font);font-size:clamp(30px,7.6cqi,42px);margin-bottom:2px}
.pc-meses{display:grid;grid-template-columns:repeat(12,1fr);gap:4px;align-items:end;height:36px;height:clamp(34px,9cqi,52px);margin-bottom:14px}
.pc-meses i{position:relative;display:block;height:calc(var(--h) * 100%);border-radius:4px 4px 2px 2px;background:#C8DEC6}
.pc-meses i.on{background:var(--verde-texto)}
.pc-meses i::after{content:attr(data-m);position:absolute;top:100%;left:0;right:0;margin-top:2px;text-align:center;font:600 9px/1.2 var(--golf-font);color:var(--gris-texto)}
.pc-meses i.on::after{color:var(--verde-texto)}
.pc-ctrl{display:flex;flex-direction:column;gap:10px}
.pc-ctrl ol{margin:0;padding:0;list-style:none;counter-reset:paso;display:flex;flex-direction:column;gap:7px}
.pc-ctrl li{counter-increment:paso;display:flex;gap:9px;align-items:flex-start;font:500 13px/1.3 var(--golf-font);font-size:clamp(13px,2.8cqi,15.5px);color:var(--verde-texto)}
.pc-ctrl li::before{content:counter(paso);flex:0 0 auto;width:20px;height:20px;border-radius:50%;background:var(--verde-texto);color:#fff;font:700 11px/20px var(--golf-font);text-align:center}
/* el botón de golpe de Jugar, en pequeño: carga (verde claro), zona amarilla y marca blanca */
.pc-swing{position:relative;display:grid;place-items:center;height:40px;height:clamp(38px,9cqi,50px);border-radius:12px;background:var(--verde-texto);overflow:hidden;box-shadow:inset 0 -3px 0 rgba(0,0,0,.18)}
.pc-swing i{position:absolute;top:0;bottom:0;display:block}
.pc-swing .pc-fill{left:0;width:64%;background:var(--map-calle)}
.pc-swing .pc-zona{left:90%;width:6%;background:linear-gradient(to bottom,var(--tee-amarilla) 0 9px,transparent 9px calc(100% - 9px),var(--tee-amarilla) calc(100% - 9px))}
.pc-swing .pc-marca{left:80%;width:4px;margin-left:-2px;background:linear-gradient(to bottom,#fff 0 9px,transparent 9px calc(100% - 9px),#fff calc(100% - 9px))}
.pc-swing b{position:relative;padding:3px 10px;border-radius:99px;background:var(--verde-texto);color:#fff;font:700 13px/1.1 var(--golf-font)}
/* «Presentado por», en su propia franja (separada del texto del evento o del dato: LGP art. 9): logotipo y, al lado,
   «PRESENTADO POR» sobre «Marca · Patrocinado» */
.pc-pres,.pub-pre-franja{display:flex;align-items:center;gap:10px;font:500 12px/1.25 var(--golf-font);color:var(--gris-texto)}
.pc-pres{padding-top:9px;border-top:1.5px solid #E3EEE1}
.pc-pres[hidden],.pub-pre-franja[hidden]{display:none}
.pc-pres img,.pub-pre-franja img{display:block;flex:0 0 auto;height:30px;width:auto;max-width:40%}
.pc-pres img.pub-ancho,.pub-pre-franja img.pub-ancho{height:14px}
.pf-txt{display:flex;flex-direction:column;gap:2px;min-width:0}
.pf-t{font:600 10px/1.2 var(--golf-font);letter-spacing:.08em;text-transform:uppercase}
.pf-n{font-weight:600;color:var(--verde-texto)}
.pf-eti{white-space:nowrap}
.pub-pre .pub-pre-atrib{margin-top:-2px;font-size:11px;line-height:1.35;text-align:left}
/* «Entrar al campo» (escena lista) y «Pausar tarjetas» (carga larga): su sitio queda reservado, no salta nada */
.pub-pre-acc{display:flex;align-items:center;justify-content:center;gap:10px;min-height:46px}
.pub-pre-acc[hidden],.pub-pre-saltar[hidden],.pub-pre-pausa[hidden]{display:none}
.pub-pre-saltar{min-height:46px;padding:0 24px;border:0;border-radius:99px;background:var(--verde-texto);color:#fff;font:700 14.5px/1 var(--golf-font);box-shadow:var(--sombra);cursor:pointer;animation:pubPreEntra .25s ease both}
.pub-pre-pausa{min-height:36px;padding:0 14px;border:0;border-radius:99px;background:#fff;color:var(--verde-texto);font:600 12.5px/1 var(--golf-font);box-shadow:0 2px 8px rgba(8,94,43,.14);cursor:pointer}
/* franja de las demás cargas de la visita y del QR del tee: abajo, donde va la de patrocinadores */
.pub-pre-franja{position:absolute;left:0;right:0;bottom:calc(env(safe-area-inset-bottom,0px) + 24px);margin-inline:auto;width:max-content;max-width:calc(100% - 32px);padding:8px 18px 8px 12px;border-radius:16px;background:#fff;box-shadow:0 2px 8px rgba(8,94,43,.12);animation:pubPreEntra .35s ease both}
.pub-pre-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
@container (max-width:300px){
  .pc-texto{padding:10px 12px;gap:6px}
  .pub-pre .pc-txt{display:none}
  .pc-cal{width:48px;padding:7px 0 6px}
  .pc-cal b{font-size:21px}
  .pc-num{width:44px;height:48px}
  .pc-num b{font-size:22px}
  .pc-barras{padding:4px;gap:4px;border-width:2px}
  .pc-barras li{font-size:12px;gap:4px;padding:5px 1px}
  .pc-barras li::before{width:8px;height:8px}
  .pc-ctrl li{font-size:12px}
  .pc-swing{height:34px}
  .pub-pre .pc-aviso{font-size:10px}
}
@media (min-width:900px){
  .pc-cab{min-height:34px}
  .pc-eti{font-size:11px}
  .pc-quien{font-size:15px}
  .pc-mas{font-size:13px;min-height:34px;padding:0 16px}
}
@media (max-width:720px){
  .pub-pre{--pc-fuera:340px;gap:8px;padding:10px}
  .pc-quien{font-size:12.5px;line-height:1.15;white-space:normal;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}
  .pc-mas{font-size:12px;padding:0 12px}
  .pub-pre-franja{bottom:calc(env(safe-area-inset-bottom,0px) + 18px)}
}
/* pantallas estrechas: el anunciante en su propia línea, bajo «Publicidad» (que se vea quién anuncia, LSSI art. 20) */
@media (max-width:380px){
  .loader.pub-pre-on>img{width:64px;height:64px}
  .pc-cab{flex-wrap:wrap;row-gap:4px}
  .pc-quien{order:3;flex:1 0 100%;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
}
/* móvil apaisado y pantallas bajas: sin el logotipo grande y con menos aire */
@media (max-height:560px){
  .loader.pub-pre-on{gap:6px;padding-top:calc(env(safe-area-inset-top,0px) + 8px);padding-bottom:calc(env(safe-area-inset-bottom,0px) + 8px)}
  .loader.pub-pre-on>img{display:none}
  .pub-pre{--pc-fuera:200px;margin-top:2px;gap:6px;padding:8px}
  .pc-cab,.pc-mas{min-height:28px}
  .pub-pre-acc{min-height:40px}
  .pub-pre-saltar{min-height:40px}
}
/* móvil apaisado: la tarjeta en dos columnas (el cuerpo 16:9 a la izquierda; cabecera, «presentado por» y notas a la
   derecha, con un ancho fijo para que las notas legales no crezcan al estrecharla) */
@media (max-height:560px) and (min-aspect-ratio:4/3){
  .pub-pre[data-tipo="patrocinador"]{display:grid;grid-template-columns:minmax(0,1fr) minmax(210px,290px);grid-template-rows:auto auto 1fr;align-items:start;gap:8px 14px;width:min(860px,calc(100vw - 32px),calc((100dvh - 150px) * 16 / 9 + 320px),var(--pc-max,100vw))}
  .pub-pre[data-tipo="patrocinador"]>.pub-pre-marco{grid-column:1;grid-row:1/4}
  .pub-pre[data-tipo="patrocinador"]>.pc-cab{grid-column:2;grid-row:1}
  .pub-pre[data-tipo="patrocinador"]>.pc-cab .pc-quien{order:3;flex:1 0 100%;white-space:normal;display:block}
  .pub-pre[data-tipo="patrocinador"]>.pc-pres{grid-column:2;grid-row:2}
  .pub-pre[data-tipo="patrocinador"]>.pub-pre-atrib{grid-column:2;grid-row:3;margin-top:0}
  /* agenda y dato: una columna, con el alto de su texto */
  .pub-pre:not([data-tipo="patrocinador"]){width:min(640px,calc(100vw - 32px),var(--pc-max,100vw))}
  .pub-pre:not([data-tipo="patrocinador"]) .pc-texto{aspect-ratio:auto}
}
/* kiosko vertical (solo en demostraciones: el kiosko no enseña tarjeta) y franja a tamaño de lectura */
@media (min-width:900px) and (min-height:1400px) and (max-aspect-ratio:4/5){
  .pub-pre,.pub-pre-acc{zoom:1.4}
  .pub-pre-franja{zoom:1.4}
}
@media (prefers-reduced-motion:reduce){.pub-pre,.pub-pre-franja,.pub-pre-saltar,.loader.ld-indet .bar i{animation:none}}

/* anuncio de entrada a pantalla completa (js/preroll.js; decisión del CEO del 27-09): la pieza entera (su caja la calcula
   encajaSpot en el hueco que dejan las moscas) sobre un fondo desenfocado de sí misma; moscas de televisión: pequeñas,
   semitransparentes, con sombra suave y dentro de las zonas seguras. Arriba, los logotipos (carga_config.moscas); abajo,
   «Publicidad · [anunciante]» y «Empieza a jugar después de este anuncio · N s» con el anillo de la cuenta atrás y una
   línea finísima con la carga real del campo */
.loader.pub-spot-on>*:not(.pub-spot):not(.pub-pre-sr){visibility:hidden}
.pub-spot{--m:44px;--mc:48px;--mg:12px;position:fixed;inset:0;z-index:2;overflow:hidden;background:#0d2616;color:#fff;text-align:left;animation:psEntra .3s ease both;transition:opacity .32s ease}
.pub-spot[hidden]{display:none}
.pub-spot.ps-fuera{opacity:0;pointer-events:none}
@keyframes psEntra{from{opacity:0}to{opacity:1}}
.ps-fondo{position:absolute;inset:0;overflow:hidden}
.ps-fondo img{position:absolute;left:-6%;top:-6%;width:112%;height:112%;object-fit:cover;filter:blur(28px) saturate(1.15) brightness(.72)}
.ps-fondo img:not([src]){display:none}
.ps-marco{position:absolute;left:0;top:0;width:100%;height:100%;display:block;overflow:hidden;border-radius:6px;background:#0d2616;box-shadow:0 12px 40px rgba(0,0,0,.35);-webkit-tap-highlight-color:transparent}
.ps-marco:not([href]){cursor:default}
.ps-poster,.ps-video{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;display:block;border:0}
.ps-poster:not([src]){visibility:hidden}
.ps-video{opacity:0;transition:opacity .3s}
.ps-rep .ps-video{opacity:1}
.ps-moscas{position:absolute;inset:0;pointer-events:none}
/* moscas de arriba: alto --m (circular, --mc) y margen --mg, según la pantalla */
.ps-mosca{position:absolute;box-sizing:border-box;display:flex;align-items:center;justify-content:center;height:var(--m);padding:5px 9px;border-radius:12px;background:rgba(255,255,255,.88);box-shadow:0 2px 10px rgba(0,0,0,.28);opacity:.9}
.ps-mosca img{display:block;height:calc(var(--m) - 10px);width:auto;max-width:none}
.ps-mosca.ps-circulo{width:var(--mc);height:var(--mc);padding:3px;border-radius:50%}
.ps-mosca.ps-circulo img{width:calc(var(--mc) - 6px);height:calc(var(--mc) - 6px);object-fit:contain;border-radius:50%}
.ps-arriba-izquierda{top:calc(env(safe-area-inset-top,0px) + var(--mg));left:calc(env(safe-area-inset-left,0px) + var(--mg))}
.ps-arriba-derecha{top:calc(env(safe-area-inset-top,0px) + var(--mg));right:calc(env(safe-area-inset-right,0px) + var(--mg))}
.ps-abajo{position:absolute;left:calc(env(safe-area-inset-left,0px) + var(--mg));right:calc(env(safe-area-inset-right,0px) + var(--mg));bottom:calc(env(safe-area-inset-bottom,0px) + var(--mg));display:flex;flex-direction:column;align-items:center;gap:6px;pointer-events:none}
.ps-abajo>*{pointer-events:auto}
.ps-nota{max-width:760px;text-align:center;font:400 10.5px/1.35 var(--golf-font);color:rgba(255,255,255,.94);text-shadow:0 1px 3px rgba(0,0,0,.55)}
.ps-nota[hidden]{display:none}
.ps-fila{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:8px;max-width:100%}
.ps-cuenta{position:relative;display:flex;align-items:center;gap:10px;min-width:0;max-width:100%;padding:7px 16px 10px 7px;border-radius:14px;background:rgba(9,35,19,.64);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 2px 12px rgba(0,0,0,.28);overflow:hidden}
.ps-reloj{--p:0;position:relative;flex:0 0 auto;display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:conic-gradient(#fff calc(var(--p) * 1turn),rgba(255,255,255,.28) 0)}
.ps-reloj::before{content:"";position:absolute;inset:3px;border-radius:50%;background:#12361f}
.ps-reloj b{position:relative;font:800 14px/1 var(--golf-font);font-variant-numeric:tabular-nums;color:#fff}
.ps-txt{display:flex;flex-direction:column;gap:3px;min-width:0}
/* el anunciante, entero (LSSI art. 20): si no cabe, en dos líneas */
.ps-l1{font:500 11px/1.25 var(--golf-font);color:rgba(255,255,255,.92)}
.ps-eti{display:inline-block;padding:2px 5px 1px;border-radius:4px;background:#fff;color:var(--verde-texto);font:700 9.5px/1.15 var(--golf-font);letter-spacing:.1em;text-transform:uppercase;vertical-align:1px}
.ps-anun{font-weight:600}
.ps-l2{font:600 12.5px/1.25 var(--golf-font);color:#fff}
.ps-l2 b{font-weight:800;font-variant-numeric:tabular-nums}
.ps-carga{position:absolute;left:12px;right:12px;bottom:3px;height:2px;border-radius:2px;background:rgba(255,255,255,.22);overflow:hidden}
.ps-carga>i{display:block;height:100%;width:0;background:#9fe0a8;transition:width .2s}
.ps-indet .ps-carga>i{width:28%;animation:ldIndet 1.5s ease-in-out infinite}
.ps-mas,.ps-pausa{display:inline-flex;align-items:center;min-height:32px;padding:0 13px;border:0;border-radius:99px;background:rgba(255,255,255,.88);color:var(--verde-texto);font:600 12px/1 var(--golf-font);text-decoration:none;white-space:nowrap;box-shadow:0 2px 8px rgba(0,0,0,.22);cursor:pointer}
.ps-mas:hover,.ps-pausa:hover{background:#fff}
.ps-mas[hidden],.ps-pausa[hidden]{display:none}
@media (max-width:480px){
  .pub-spot{--m:36px;--mc:40px;--mg:10px}
  .ps-mosca{padding:4px 8px;border-radius:10px}
  .ps-mosca img{height:calc(var(--m) - 8px)}
  .ps-cuenta{gap:8px;padding:6px 12px 9px 6px}
  .ps-reloj{width:30px;height:30px}
  .ps-reloj b{font-size:13px}
  .ps-l2{font-size:11.5px}
  .ps-pausa{min-height:32px;padding:0 11px;font-size:11.5px}
  /* «Más información», redondo y con icono (su nombre accesible sigue en aria-label) */
  .ps-mas{position:relative;width:36px;height:36px;min-height:0;padding:0;justify-content:center;font-size:0;color:transparent}
  .ps-mas::before{content:"";width:14px;height:14px;background:var(--verde-texto);-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 4h6v6M20 4l-9 9M18 14v5a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h5'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 4h6v6M20 4l-9 9M18 14v5a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h5'/%3E%3C/svg%3E") center/contain no-repeat}
  .ps-fila{flex-wrap:nowrap;gap:6px}
  .ps-nota{font-size:9.5px;line-height:1.3}
}
/* móvil apaisado y pantallas bajas: moscas más pequeñas y la cuenta atrás en una sola línea */
@media (max-height:500px){
  .pub-spot{--m:34px;--mc:38px;--mg:8px}
  .ps-mosca{padding:4px 8px}
  .ps-mosca img{height:calc(var(--m) - 8px)}
  .ps-abajo{gap:4px}
  .ps-cuenta{padding:5px 12px 8px 5px}
  .ps-reloj{width:28px;height:28px}
  .ps-txt{flex-direction:row;align-items:baseline;gap:8px}
  .ps-nota{font-size:10px;line-height:1.3}
}
@media (min-width:1200px) and (min-height:700px){
  .pub-spot{--m:50px;--mc:56px;--mg:16px}
  .ps-mosca{padding:6px 12px}
  .ps-mosca img{height:calc(var(--m) - 12px)}
  .ps-reloj{width:38px;height:38px}
  .ps-reloj b{font-size:15px}
  .ps-l1{font-size:12px}
  .ps-l2{font-size:14px}
  .ps-mas,.ps-pausa{min-height:34px;font-size:12.5px}
  .ps-nota{font-size:11.5px}
}
/* kiosko vertical (solo en demostraciones: el kiosko no enseña anuncio) */
@media (min-width:900px) and (min-height:1400px) and (max-aspect-ratio:4/5){
  .pub-spot{--m:64px;--mc:72px;--mg:24px}
  .ps-mosca{padding:8px 14px}
  .ps-mosca img{height:calc(var(--m) - 16px)}
  .ps-abajo{zoom:1.5}
}
@media (prefers-reduced-motion:reduce){.pub-spot,.ps-indet .ps-carga>i{animation:none}}

/* Tabletas táctiles (iPad vertical 820×1180 y apaisado 1180×820): puntero grueso, desde 721 px de ancho y de 501 a 1400 px de alto
   (deja fuera el ratón de escritorio, el móvil, que ya tiene sus bloques de arriba, y el kiosko de 1080×1920, que va con su zoom).
   Se ve el HUD de escritorio, pero todo lo que se toca mide ≥ 44 px, como en móvil. El aspecto es el mismo: crecen lo justo los botones. */
@media (pointer:coarse) and (min-width:721px) and (min-height:501px) and (max-height:1400px){
  /* barra superior: modos y chips de herramientas. #t-sonido queda fuera, como en móvil: audio.css lo pinta de 36 px con un toque de 44 (pseudoelemento) */
  .modes{padding:2px}
  .modes button{min-height:44px}
  .topbar .tools .chip:not(#t-sonido),.topbar .t-idioma{min-height:44px;min-width:44px;justify-content:center}
  /* tira de hoyos, ficha del hoyo y las de Hoyo a hoyo (.barras también las usa scroll.css) */
  .hoyos button{width:44px}
  .ficha .x{width:44px;height:44px;right:6px;top:6px}
  .barras button{min-height:44px}
  .ficha .acc,.ficha .pub-ficha{min-height:44px}
  /* con los botones de 44 px la ficha crece 43 px: gana el hueco libre sobre la tira de hoyos (en 1180 × 820 pasa de acabar a 42 px de la tira a 12), para que no pierda más contenido al desplazarse */
  .ficha{max-height:calc(100% - 170px)}
  /* chinchetas del mapa: el tamaño visible no cambia (el núcleo calcula los solapes con su caja); la zona de toque sí, con un
     pseudoelemento transparente que crece SOLO HACIA ABAJO: el núcleo pinta primero lo más cercano a la cámara (z-index por distancia) y
     lo cercano queda más abajo en pantalla, así que una zona que baja no tapa el centro de ninguna vecina. Medido con 60 poses de cámara al
     azar por tableta: 0 centros tapados de más (una zona simétrica de 12 px, 6 y 22; ensanchar 6 px a cada lado, 0 y 2). Con la escala
     mínima del núcleo (0,55 las banderas, 0,62 las chinchetas del club) llegan a 45 y 45 px de alto; de ancho no crecen (30 y 34 px, 78 las del
     club con su rótulo): con 13 px a cada lado llegarían a 44, pero 2 y 6 centros de cada 60 poses abrirían el hoyo de al lado */
  .mk-flag::before{content:"";position:absolute;inset:0 0 -25px}
  .mk-chx::before{content:"";position:absolute;inset:0 0 -7px}
  /* carga con anuncio y tarjeta (preroll.js, maquetación del CEO): la caja no cambia; la zona de toque sube de 32-36 px a 44-48 con un pseudoelemento */
  .ps-mas,.ps-pausa,.pc-mas,.pub-pre-pausa{position:relative}
  .ps-mas::before,.ps-pausa::before,.pc-mas::before,.pub-pre-pausa::before{content:"";position:absolute;inset:-6px 0}
  /* piezas de otras hojas que se cargan después (tiempo.css, asturias.css, multijugador.css, scroll.css): más especificidad para ganarles */
  #tiempo-panel .tp-d-r::before{inset:-13px -6px}
  #tiempo-panel .tp-que summary,#tiempo-panel .as-det summary,#tiempo-panel .as-l-ir{min-height:44px}
  /* enlaces de fuente dentro de un texto: misma caja, zona de toque mayor */
  #tiempo-panel .tp-atrib a,#tiempo-panel .as-atrib a,.ficha .as-mar small a{position:relative}
  #tiempo-panel .tp-atrib a::before,#tiempo-panel .as-atrib a::before,.ficha .as-mar small a::before{content:"";position:absolute;inset:-15px -4px}
  body .sc-btn{min-height:44px}
  body .mj-op-i span{min-height:44px;min-width:44px;justify-content:center}
  body .mj-quitar,body .mj-pers-l .mj-btn{min-height:44px}
}
