/* Sholder — touch-device paint fixes. Hand-maintained, NOT in Alex's Astro source:
   re-link from every page after a new export (see README). Why: on iOS a fast scroll
   shows unpainted tiles wherever rendering can't keep up. The costs below are the
   ones that made it fall behind; on touch devices they are replaced with solid grounds. */
@media (pointer: coarse) {
  /* A backdrop blur over scrolling content re-renders everything beneath it every frame. */
  .nav[class] { backdrop-filter: none; -webkit-backdrop-filter: none; background: var(--bg); }
  .nav--opening[class]:not(.nav--full) { background: transparent; }
  .px-nav--solid[class] { backdrop-filter: none; -webkit-backdrop-filter: none; background: var(--sand); }
  .bas-traits__card[class] { backdrop-filter: none; -webkit-backdrop-filter: none; background: var(--white); }
  .wp-short[class] { backdrop-filter: none; -webkit-backdrop-filter: none; background: var(--sand); }
  /* SVG turbulence grain (3% opacity) is software-rendered and redrawn on every scroll frame. */
  .plan[class]::after { display: none; }
  /* Colour-graded photos: own GPU layer so the filter is applied once, not re-rasterised while scrolling. */
  .sh-figure img, .plusx__slideshow, .different__bg, .wcar__slide img, .bas-traits__show { transform: translateZ(0); }
}
/* All devices: sections that are windows onto the sticky hero film paint their own ground,
   and the hero is hidden once the curtain has covered it (site-fixes.js). */
.curtain .sh-pause, .curtain .different, .curtain .plusx, .curtain .invite { background: var(--charcoal); }
.opening.is-covered { visibility: hidden; }
