/* ── allotopia.org neon theme (2026-10-07 Allo, recolored 2026-10-08) ──
   Her order, verbatim in spirit:
   • no custom fonts — ALL text is EmilysCandy
   • ALL text colorshifts in her 6 neon colors (violet/magenta/blue/
     cyan/teal-green/lime), drifting through the glyphs — no hue-rotate,
     so her exact colors stay true
   • ALL borders: style double, border-radius 27px, colorshifting in the
     Undersea style (teal wave)
   Magic keyframes below are verbatim from her perchance export (kept).
   ───────────────────────────────────────────────────────────────── */

/* The one and only font. */
@font-face {
  font-family: 'EmilysCandy';
  src: url('/fonts/EmilysCandy-Regular.ttf') format('truetype');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

/* Magic theme text animation — pulsing purple/pink color shifts */
@keyframes rainbow-magic {
  0% {
    filter: hue-rotate(-30deg) brightness(1.05) saturate(1.2);
  }
  25% {
    filter: hue-rotate(0deg) brightness(1.3) saturate(1.5);
  }
  50% {
    filter: hue-rotate(30deg) brightness(1.1) saturate(1.4);
  }
  75% {
    filter: hue-rotate(0deg) brightness(1.3) saturate(1.5);
  }
  100% {
    filter: hue-rotate(-30deg) brightness(1.05) saturate(1.2);
  }
}

/* Undersea theme animation — wave-like teal/aqua drift */
@keyframes rainbow-undersea {
  0% {
    filter: hue-rotate(-10deg) brightness(1) saturate(1.1);
  }
  25% {
    filter: hue-rotate(0deg) brightness(1.1) saturate(1.2) blur(0.2px);
  }
  50% {
    filter: hue-rotate(10deg) brightness(1.2) saturate(1.3) blur(0.3px);
  }
  75% {
    filter: hue-rotate(0deg) brightness(1.1) saturate(1.2) blur(0.2px);
  }
  100% {
    filter: hue-rotate(-10deg) brightness(1) saturate(1.1);
  }
}

/* Borders colorshift in the Undersea style: teal wave.
   (A border-color cycle — the full rainbow-undersea filter would blur
   the bordered element's contents, so borders get the color wave only.) */
@keyframes undersea-border {
  0%, 100% { border-color: #00cccc; }
  25%      { border-color: #008888; }
  50%      { border-color: #00e5e5; }
  75%      { border-color: #4d9494; }
}

/* ── ALL text is EmilysCandy ─────────────────────────────────────── */
* { font-family: 'EmilysCandy', sans-serif !important; }

/* ── Allo's law (2026-10-14): NOTHING is italic, ever ────────────────
   Not in <em>/<i>, not in any declaration, not synthesized, and not in
   the fallback shown before EmilysCandy arrives (the old cursive
   fallback rendered slanted — gone; the fallback is now an upright
   sans). She does not believe in hand dominance, nor in the
   dominance/submission paradigm at all; letterforms lean for no one. */
* { font-style: normal !important; font-synthesis-style: none !important; }

/* ── ALL text colorshifts in Allo's 6 neon colors ───────────────────
   Her exact colors from the Interwebs customizer (2026-10-08):
   violet #5700F2, magenta #9B00E8, blue #3E00FF, cyan #00FFDA,
   teal-green #00F2A1, lime #46FF00.
   The gradient drifts through the glyphs (background-position) so her
   colors stay true — no hue-rotate, which would corrupt them. The
   shimmer is brightness/saturation only. Fixed 900px spread so tiny
   words drift as smoothly as big titles. */
h1, h2, h3, h4, h5, h6, p, span, a, li, dt, dd, td, th,
label, legend, figcaption, blockquote, q, cite,
em, strong, b, i, u, s, small, mark, sub, sup,
time, code, pre,
button, input:not([type="checkbox"]):not([type="radio"]), textarea, select, .get,
.name, .blurb, .sub, .lede, .thought, .hello, .coins,
.magicword, .notes, .pill, .card-title {
  background-image: linear-gradient(90deg, #5700F2, #9B00E8, #3E00FF, #00FFDA, #00F2A1, #46FF00, #5700F2) !important;
  background-size: 900px 100% !important;
  -webkit-background-clip: text !important;
  background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  color: transparent !important;
  animation: neon-drift 12s ease-in-out infinite !important;
  text-shadow: 0 0 5px rgba(255, 255, 255, 0.3) !important;
}

/* Her colors drifting through the text + a brightness shimmer.
   (rainbow-magic, her gen's hue-rotate, is kept below unused.) */
@keyframes neon-drift {
  0%, 100% { background-position: 0% 50%; filter: brightness(1) saturate(1.6); }
  50% { background-position: 100% 50%; filter: brightness(1.28) saturate(2); }
}

/* The key & dna keep their pretty custom art — no colorshift.
   (Same for the password toggle: it sits with the markers.) */
.auth-mark, .auth-toggle {
  background-image: none !important;
  -webkit-background-clip: border-box !important;
  background-clip: border-box !important;
  -webkit-text-fill-color: currentcolor !important;
  color: inherit !important;
  background-size: auto !important;
  animation: none !important;
  text-shadow: 0 0 14px rgba(180, 140, 242, 0.8) !important;
  border: none !important;
}

/* Placeholders stay a readable solid purple hint. */
input::placeholder, textarea::placeholder {
  background-image: none !important;
  color: #b366ff !important;
  -webkit-text-fill-color: #b366ff !important;
  opacity: 1 !important;
  animation: none !important;
  text-shadow: none !important;
}

/* ── ALL borders: double, radius 27, undersea colorshift ─────────── */
* { border-radius: 27px !important; }

.auth-panel, .auth-submit, #enter-pill,
.app, .get,
.card, .pill, .notes, .magicword, .fbrow, .m,
.row, .t-card, .psym, .sym,
.stats, .links,
button, input, textarea, select, fieldset, table {
  border-style: double !important;
  border-width: 4px !important;
  /* a real border color that never depends on the animation running */
  border-color: #00cccc !important;
  animation: undersea-border 8s infinite linear !important;
}
/* form controls + buttons keep their text drift alongside the border wave */
button, input, textarea, select, .get {
  animation: neon-drift 12s ease-in-out infinite, undersea-border 8s infinite linear !important;
}
/* Inputs: the text rule above matches them with a heavy :not() selector
   that outranks the combined-animation rule, which starved them of the
   border wave and left their borders transparent. Repeat both
   animations here at the same weight so they win by source order. */
input:not([type="checkbox"]):not([type="radio"]),
.auth-submit, #enter-pill {
  animation: neon-drift 12s ease-in-out infinite, undersea-border 8s infinite linear !important;
}
