/* CRT texture, hero only */
.crt::after{content:"";position:absolute;inset:0;pointer-events:none;z-index:3;opacity:.35;
  background:repeating-linear-gradient(0deg,rgba(0,0,0,.25) 0 1px,transparent 1px 3px)}
.crt::before{content:"";position:absolute;inset:0;pointer-events:none;z-index:3;opacity:.12;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 .6 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>")}
/* one subtle motion: the Hangul wall breathes */
@keyframes breathe{0%,100%{opacity:.7}50%{opacity:1}}
.hero-ko-wall{animation:breathe 6s ease-in-out infinite}
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}
  html{scroll-behavior:auto}
}
@keyframes grain{0%{transform:translate(0,0)}20%{transform:translate(-3%,2%)}40%{transform:translate(2%,-3%)}60%{transform:translate(-2%,-2%)}80%{transform:translate(3%,1%)}100%{transform:translate(0,3%)}}
@media (prefers-reduced-motion: reduce){.grain,.hero-ko-wall{animation:none!important}}
