/*
 * Propshaft manifest. Tailwind output is loaded via stylesheet_link_tag :tailwind;
 * this file holds custom utilities + base rules that don't belong in Tailwind's
 * @theme block (gradients, SVG noise overlays, font helpers).
 */

html { scrollbar-gutter: stable; }
body { font-family: "Geist", system-ui, sans-serif; }

/* Newsreader italic helper. Used on Tree species names, tier display
   names, and hero accent words ("Welcome back, *itsame*"). Tracking is
   intentionally tight per the design tokens. */
.font-serif-italic {
  font-family: "Newsreader", ui-serif, serif;
  font-style: italic;
  font-weight: 400;
  letter-spacing: -0.01em;
}

/* Sunlit-canopy washes. Apply to <body> or a top-level wrapper. The
   garden-wash-* classes lay down a soft radial-gradient field of leaf
   green + robin blue + a hint of coral, over a cream (light) or
   twilight (dark) base. */
.garden-wash-light {
  background:
    radial-gradient(60% 50% at 8% 0%,   rgba(70,167,44,0.10),  transparent 70%),
    radial-gradient(45% 38% at 100% 8%, rgba(67,174,238,0.12), transparent 70%),
    radial-gradient(40% 32% at 85% 95%, rgba(255,127,110,0.06), transparent 70%),
    linear-gradient(180deg, #fdf9ec 0%, #f9f3df 100%);
}
.garden-wash-dark {
  background:
    radial-gradient(55% 45% at 8% 0%,   rgba(70,167,44,0.10), transparent 70%),
    radial-gradient(45% 38% at 100% 8%, rgba(67,174,238,0.08), transparent 70%),
    radial-gradient(40% 32% at 85% 95%, rgba(255,127,110,0.05), transparent 70%),
    linear-gradient(180deg, #0c1612 0%, #0a1411 100%);
}

/* SVG fractal-noise overlay for large empty surfaces (signup hero,
   empty-state dashboard). Apply via a fixed full-bleed div with the
   class plus opacity-5 dark:opacity-[0.07] and mix-blend-multiply
   (light) / mix-blend-screen (dark). */
.paper-grain {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='240' height='240'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0.32  0 0 0 0 0.27  0 0 0 0 0.14  0 0 0 0.32 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)' opacity='0.5'/></svg>");
  background-size: 240px 240px;
}
