.material-paper,
.material-paint,
.material-ink,
.material-wash,
.photo-grain {
  position: relative;
  isolation: isolate;
}

.material-paper::before,
.material-paint::before,
.material-ink::before,
.material-wash::before,
.photo-grain::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  border-radius: inherit;
  pointer-events: none;
  background-image: var(--material-texture);
  background-size: var(--material-size, 17px 17px);
  background-repeat: repeat;
  opacity: var(--material-opacity, 0.14);
  mix-blend-mode: var(--material-blend, multiply);
}

.material-paper {
  --material-texture: radial-gradient(circle at 20% 30%, rgba(17,17,17,.22) 0 .6px, transparent .8px);
  --material-size: 280px 280px;
  --material-opacity: 0.035;
  --material-blend: multiply;
}

.material-paint {
  --material-texture: radial-gradient(circle, rgba(255,255,255,.9) 0 .7px, transparent .9px);
  --material-size: 220px 220px;
  --material-opacity: 0.07;
  --material-blend: screen;
}

.material-ink {
  --material-texture: radial-gradient(circle, rgba(255,255,255,.8) 0 .55px, transparent .8px);
  --material-size: 190px 190px;
  --material-opacity: 0.06;
  --material-blend: screen;
}

.material-wash {
  --material-texture: radial-gradient(ellipse at 30% 40%, rgba(17,17,17,.12), transparent 65%);
  --material-size: 380px 260px;
  --material-opacity: 0.045;
  --material-blend: multiply;
}

.photo-grain {
  overflow: hidden;
}

.photo-grain::after {
  --material-texture: radial-gradient(circle at 20% 30%, rgba(17,17,17,.22) 0 .6px, transparent .8px);
  --material-size: 170px 170px;
  --material-opacity: 0.035;
  --material-blend: soft-light;
}

.paint-edge {
  box-shadow: 2px 3px 0 color-mix(in srgb, currentColor 28%, transparent);
}

.ink-rule {
  position: relative;
  height: 3px;
  background: currentColor;
  transform: rotate(-0.35deg);
}

.ink-rule::after {
  content: "";
  position: absolute;
  inset: -1px 0;
  background-image: radial-gradient(circle, rgba(255,255,255,.8) 0 .55px, transparent .8px);
  background-size: 170px 170px;
  opacity: 0.28;
  mix-blend-mode: screen;
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    scroll-behavior: auto !important;
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}
