/* PINMANIA V15 — Quality Lock. Visual polish that does not own gameplay state. */
:root{--pm15-focus:#8fffe0;--pm15-warn:#ff718b}
button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--pm15-focus)!important;outline-offset:3px!important}
.pm51-showPassword{touch-action:manipulation;-webkit-tap-highlight-color:transparent;min-width:88px}
.pm51-input{font-size:16px!important}
/* Any legacy hero artwork is never completely static: it behaves like a living camera plate. */
.pinmaniaHeroCard img,.pinmaniaBackdrop{animation:pm15CameraPlate 9s cubic-bezier(.2,.7,.2,1) infinite alternate;will-change:transform,filter}
@keyframes pm15CameraPlate{from{transform:scale(1.035) translate3d(-.5%,0,0);filter:saturate(1.03)}to{transform:scale(1.095) translate3d(1.3%,-1.1%,0);filter:saturate(1.16) brightness(1.04)}}
.pm60-scene.active{animation:pm15SceneDrift 6.5s ease-in-out both}
@keyframes pm15SceneDrift{0%{filter:saturate(1) brightness(.88)}35%{filter:saturate(1.12) brightness(1)}100%{filter:saturate(1.08) brightness(.94)}}
/* Small action silhouette on the entry cinema so the first screen reads as a scene, not a poster. */
.pm60-openingCinema:after{content:"";position:absolute;left:-18%;bottom:20%;width:150px;height:5px;border-radius:50%;background:linear-gradient(90deg,transparent,#ff58a7 35%,#8fffe0 72%,transparent);filter:blur(1px) drop-shadow(0 0 9px #ff58a7);opacity:.7;animation:pm15RideBy 5.2s linear infinite;transform:skewX(-24deg)}
@keyframes pm15RideBy{0%{left:-24%;opacity:0}12%{opacity:.8}68%{opacity:.65}100%{left:112%;opacity:0}}
html.pm15-large-ui{font-size:112%}
html.pm15-high-contrast .pm29-objective,html.pm15-high-contrast .pmWorldChips span{filter:contrast(1.25);border-color:#fff!important}
@media(prefers-reduced-motion:reduce){.pinmaniaHeroCard img,.pinmaniaBackdrop,.pm60-scene.active,.pm60-openingCinema:after{animation:none!important}}
