/* Custom washes and grid overlay */
.bg-washes {
  background:
    radial-gradient(60rem 60rem at 70% -10%, rgba(34,197,94,0.20), transparent 60%),
    radial-gradient(40rem 40rem at 10% 10%, rgba(34,197,94,0.10), transparent 60%),
    linear-gradient(to bottom, transparent, transparent 65%, rgba(0,0,0,0.15));
}
/* Dark mode intensifies slightly */
:root.dark .bg-washes, .dark .bg-washes {
  background:
    radial-gradient(60rem 60rem at 70% -10%, rgba(34,197,94,0.25), transparent 60%),
    radial-gradient(40rem 40rem at 10% 10%, rgba(34,197,94,0.12), transparent 60%),
    linear-gradient(to bottom, transparent, transparent 65%, rgba(0,0,0,0.35));
}

/* Subtle grid */
.grid-overlay {
  opacity: 0.10;
  background-image:
    linear-gradient(to right, rgba(60,60,60,.25) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(60,60,60,.25) 1px, transparent 1px);
  background-size: 56px 56px;
  -webkit-mask-image: radial-gradient(100% 70% at 50% 20%, black, transparent);
  mask-image: radial-gradient(100% 70% at 50% 20%, black, transparent);
}
.dark .grid-overlay { opacity: 0.18; }

/* Inputs */
.input {
  @apply w-full rounded-md border border-slate-300/70 bg-white px-3 py-2 text-sm shadow-sm placeholder:text-slate-400 focus:outline-none focus:ring-2 focus:ring-emerald-500 dark:border-slate-700 dark:bg-slate-900 dark:placeholder:text-slate-500;
}

/* Floating glyph animation */
@keyframes floatPulse {
  0% { transform: translateY(0); }
  50% { transform: translateY(-6px); }
  100% { transform: translateY(0); }
}
.glyph {
  position: absolute;
  user-select: none;
  filter: blur(0.15rem);
  animation: floatPulse var(--dur, 9s) ease-in-out infinite;
  font-family: ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;
}

/* Ticker */
.border-top-strip {
  border-top: 1px solid rgba(100,116,139,0.4);
  background: rgba(255,255,255,0.4);
}
.dark .border-top-strip {
  border-top: 1px solid rgba(30,41,59,0.7);
  background: rgba(0,0,0,0.1);
}
.ticker {
  white-space: nowrap;
  display: inline-flex;
  gap: 2rem;
  padding: 0.5rem 1rem;
  transform: translateX(0);
  animation: tickerMove 24s linear infinite;
}
@keyframes tickerMove {
  from { transform: translateX(0); }
  to   { transform: translateX(-400px); }
}

input {
  background-color: #444;
  border-radius: 4x;
  -webkit-border-radius: 4x;
  -moz-border-radius: 4x;
  -ms-border-radius: 4x;
  -o-border-radius: 4x;
}