/*
 * VeilSim page background — light adaptation of the GradientBackground
 * component ("background rowds shop v1", 21st.dev Gradient Builder).
 *
 * The recipe is kept: same 170deg angle, same stop positions (0 / 32 / 100%),
 * same warm hue family, and both of the builder's texture passes. Only the
 * lightness is inverted, because the app is a light theme in which every text
 * element sits directly on the page background — its "cards" are <=0.68-alpha
 * white glass, not opaque surfaces. With the original stops, body text измеряло
 * 1.09:1 against #16130E, far below the 4.5:1 AA threshold.
 *
 *   original          ->  adapted        (hue kept, lightness inverted)
 *   #16130E  L 7%     ->  #FAF8F4  L 97%
 *   #372F20  L 17%    ->  #F0EBE1  L 91%
 *   #9C8D63  L 50%    ->  #D9CFB5  L 78%
 *
 * Resulting contrast for the app's two text colours:
 *   rgb(2,6,23)    on #D9CFB5 = 11.8:1   on #FAF8F4 = 18.9:1
 *   rgb(71,85,105) on #D9CFB5 =  4.9:1   on #FAF8F4 =  7.2:1
 *
 * Applied to the root element rather than a body pseudo-layer: the app sets
 * `overflow-x: clip` on <body>, which clips a fixed pseudo-element out
 * entirely (verified — a solid red test layer never painted).
 *
 * Layers, topmost first: grain pass, noise tile, gradient. Opacity is baked
 * into each SVG rect since background layers have no per-layer opacity.
 */

html {
  background-color: #faf8f4;
  background-image: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='g'><feTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='2' stitchTiles='stitch'/><feColorMatrix type='saturate' values='0'/></filter><rect width='100%' height='100%' filter='url(%23g)' opacity='0.130'/></svg>"),
    url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='120'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/></filter><rect width='100%' height='100%' filter='url(%23n)' opacity='0.130'/></svg>"),
    linear-gradient(170deg, #faf8f4 0%, #f0ebe1 32%, #d9cfb5 100%);
  background-size: 180px 180px, 120px 120px, cover;
  background-repeat: repeat, repeat, no-repeat;
  background-attachment: fixed, fixed, fixed;
  background-blend-mode: multiply, multiply, normal;
}

/* Clear the app's own light radial wash so the gradient above is visible. */
body {
  background-color: transparent !important;
  background-image: none !important;
}
