/* Aimee's intro (owner's final, 25 Oct 2026): a comet, a big bang at the i's dot, "Aimee" becoming "Ai Tax Preparer".
   One file for both pages (owner, 25 Oct 2026: "when I go to aimee.russolutions.sg I expect the landing page animation
   to play"): login.html plays it and ends on Sign in; index.html plays it as its loading screen and fades into the app.
   intro.js builds the markup and drives it; everything here is scoped to #rus-intro so the app's own classes are safe.
   A 1440×810 stage scaled to the window by --rus-scale (a phone shows the same picture, smaller), set on <html> so the
   sign-in page's button can stand where the stage leaves room for it (--cta-y). */
#rus-intro { position: fixed; inset: 0; overflow: hidden;
  background: radial-gradient(ellipse 120% 90% at 38% 30%, #324878 0%, #1B2A4A 52%, #12203C 100%); }
/* On the app it covers the page (header and all) while the app loads behind it, then fades out and is removed. */
#rus-intro.ri-app { z-index: 2147483000; cursor: pointer; transition: opacity .6s ease; }
#rus-intro.ri-app.ri-out { opacity: 0; pointer-events: none; }
#rus-intro .ri-stage { width: 1440px; height: 810px; position: absolute; left: 50%; top: 50%;
  transform: translate(-50%, -50%) scale(var(--rus-scale, 1)); transform-origin: center;
  font-family: Georgia, 'Times New Roman', serif; color: #F4F1E8; }
#rus-intro .ri-lift { position: absolute; inset: 0; will-change: transform; }
#rus-intro .ri-eyebrow { position: absolute; left: 0; right: 0; top: 238px; text-align: center; font-family: Helvetica, Arial, sans-serif;
  font-size: 20px; letter-spacing: 11px; padding-left: 11px; color: #C9A84C; opacity: 0; }
#rus-intro .ri-title { position: absolute; left: 0; right: 0; top: 280px; margin: 0; display: grid; grid-template-columns: minmax(0,1fr) auto minmax(0,1fr);
  align-items: baseline; font-size: 84px; font-weight: 700; line-height: 1.1; color: #FFFFFF; white-space: nowrap; opacity: 0;
  font-family: inherit; letter-spacing: normal; }
#rus-intro .ri-title > * { will-change: opacity; }
#rus-intro .ri-mee { grid-area: 1/3; justify-self: start; }
#rus-intro .ri-tax { grid-area: 1/3; justify-self: start; padding-left: .25em; opacity: 0; }
#rus-intro .ri-ai-plain, #rus-intro .ri-ai-gold { grid-area: 1/2; font-size: 84px; font-weight: 700; }
#rus-intro .ri-ai-plain { color: #FFFFFF; }
#rus-intro .ri-ai-gold { color: #C9A84C; opacity: 0; }
#rus-intro .ri-stem { position: relative; display: inline-block; }
#rus-intro .ri-plain-dot { position: absolute; left: 50%; top: .19em; width: .13em; height: .13em; margin-left: -.065em; border-radius: 50%; background: #FFFFFF; }
#rus-intro .ri-i-dot { position: absolute; left: 50%; top: .282em; width: 1em; margin-left: -.5em; text-align: center; font-size: .306em; line-height: 1;
  font-style: normal; font-weight: 400; color: #ffd700; }
#rus-intro .ri-prep { position: absolute; left: 0; right: 0; top: 366px; text-align: center; font-size: 84px; font-weight: 700; line-height: 1.1;
  padding-bottom: 30px; color: #FFFFFF; white-space: nowrap; opacity: 0; }
#rus-intro .ri-rule { position: absolute; left: 420px; right: 420px; top: 388px; height: 3px; background: #C9A84C; border-radius: 2px; opacity: 0; }
/* The R mark: on the sign-in page under Sign in, kept clear of the (unscaled, 44px) button on a small screen; on the
   app, where there is no button, just under the lifted rule. */
#rus-intro .ri-mono { position: absolute; left: 0; right: 0; top: calc(var(--cta-y, 412px) + max(74px, 66px / var(--rus-scale, 1)));
  display: flex; flex-direction: column; align-items: center; gap: 18px; opacity: 0; }
#rus-intro.ri-app .ri-mono { top: calc(var(--cta-y, 412px) + 16px); }
#rus-intro .ri-mono .ri-r { width: 72px; height: 72px; border: 2px solid #C9A84C; display: flex; align-items: center; justify-content: center;
  font-size: 43px; color: #F4F1E8; }
#rus-intro .ri-mono .ri-site { font-family: Helvetica, Arial, sans-serif; font-size: 18px; letter-spacing: 6px; color: #C9A84C; }
/* The sparks: one canvas over the whole window (so they fly past the stage's edges), drawn in stage pixels. */
#rus-intro .ri-fx { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; }
