/* Film grain + fine scratches/dust over the whole site. Sits above everything, never blocks clicks. */
html::before,html::after{content:"";position:fixed;pointer-events:none;z-index:2147483000}
/* grain: fine light speckle, drifts in steps like film running through a gate */
html::before{inset:-50%;opacity:.07;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='200' height='200'><filter id='n' x='0' y='0' width='100%' height='100%'><feTurbulence type='fractalNoise' baseFrequency='1.1' numOctaves='2' seed='7' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1  0 0 0 0 .94  0 0 0 0 .86  3.2 0 0 0 -1.6'/></filter><rect width='200' height='200' filter='url(%23n)'/></svg>");
  background-size:200px 200px;animation:rcGrain .8s steps(1) infinite}
@keyframes rcGrain{0%{transform:translate(0,0)}17%{transform:translate(-2%,1%)}34%{transform:translate(1%,-2%)}51%{transform:translate(-1%,-1%)}68%{transform:translate(2%,2%)}84%{transform:translate(-1%,2%)}100%{transform:translate(0,0)}}
/* scratches and dust: short fine marks, a handful on screen at once, jumping and flickering */
html::after{inset:0;opacity:.8;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='1400' height='900' fill='none' stroke='%23fff3dc' stroke-linecap='round'><path d='M966 603 l-0.3 43' stroke-width='0.8' opacity='0.56'/><path d='M1088 517 l-2.4 25' stroke-width='0.7' opacity='0.54'/><path d='M1143 740 l0.6 16' stroke-width='0.7' opacity='0.79'/><path d='M1300 695 l0.7 24' stroke-width='0.8' opacity='0.52'/><path d='M113 224 l0.6 29' stroke-width='0.7' opacity='0.60'/><path d='M1250 230 l0.8 28' stroke-width='0.7' opacity='0.50'/><path d='M214 498 l-0.6 31' stroke-width='0.8' opacity='0.80'/><path d='M210 754 q6 7 3 14' stroke-width='.7' opacity='0.69'/><path d='M1090 325 q-6 5 -3 10' stroke-width='.7' opacity='0.64'/><path d='M261 440 q6 5 3 11' stroke-width='.7' opacity='0.60'/><circle cx='54' cy='721' r='0.6' fill='%23fff3dc' stroke='none' opacity='0.57'/><circle cx='127' cy='501' r='1.2' fill='%23fff3dc' stroke='none' opacity='0.84'/><circle cx='833' cy='449' r='0.6' fill='%23fff3dc' stroke='none' opacity='0.70'/><circle cx='426' cy='817' r='1' fill='%23fff3dc' stroke='none' opacity='0.62'/><circle cx='657' cy='360' r='0.6' fill='%23fff3dc' stroke='none' opacity='0.84'/><circle cx='261' cy='157' r='0.8' fill='%23fff3dc' stroke='none' opacity='0.75'/><circle cx='42' cy='81' r='1.2' fill='%23fff3dc' stroke='none' opacity='0.78'/><circle cx='383' cy='718' r='0.8' fill='%23fff3dc' stroke='none' opacity='0.66'/></svg>");
  background-size:1400px 900px;background-repeat:repeat;animation:rcScratch 2.4s steps(1) infinite}
@keyframes rcScratch{0%{background-position:0 0;opacity:.85}12%{background-position:-310px 140px;opacity:.3}25%{background-position:-640px -90px;opacity:.9}38%{background-position:-120px 330px;opacity:0}50%{background-position:-870px 210px;opacity:.85}63%{background-position:-450px -260px;opacity:.35}76%{background-position:-1130px 60px;opacity:.9}88%{background-position:-700px 420px;opacity:.2}100%{background-position:0 0;opacity:.85}}
@media (max-width:700px){html::after{background-size:840px 540px}}
@media (prefers-reduced-motion:reduce){html::before,html::after{animation:none}}
@media print{html::before,html::after{display:none}}
