/* Clarity Measure falling line-work. Everything that moves lives here; the
   generator in /assets/falling-pattern.js only hands this sheet the field it
   drew, as --fp-image, --fp-size, --fp-from and --fp-to. */
.falling-pattern{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden}
.falling-pattern-streaks{position:absolute;inset:0;background-color:var(--canvas,#fff);background-repeat:repeat;background-image:var(--fp-image);background-size:var(--fp-size);background-position:var(--fp-from);will-change:background-position}
/* The veil paints the page ground back over the streaks with a hole every 8px,
   so what shows through is a field of soft dots rather than long lines. */
.falling-pattern-veil{position:absolute;inset:0;background-image:radial-gradient(circle at 50% 50%,transparent 0,transparent 2px,var(--canvas,#fff) 2px);background-size:8px 8px}
@supports ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){.falling-pattern-veil{-webkit-backdrop-filter:blur(var(--fp-blur,1em));backdrop-filter:blur(var(--fp-blur,1em))}}
/* A full-page blur is the most expensive thing on the page and a phone pays for
   it every frame the field moves. The dots alone read the same at that size. */
@media (max-width:699px){.falling-pattern-veil{-webkit-backdrop-filter:none;backdrop-filter:none}}
@media (prefers-reduced-motion:no-preference){.falling-pattern-streaks{animation:falling-pattern-fall var(--fp-duration,150s) linear infinite}@keyframes falling-pattern-fall{from{background-position:var(--fp-from)}to{background-position:var(--fp-to)}}}
@media (prefers-reduced-motion:reduce){.falling-pattern-streaks{animation:none;background-position:var(--fp-from)}}
