/* ── Vignette + particles ─────────────────────────────────────────────────── */
#vig{position:fixed;inset:0;z-index:1;pointer-events:none;background:radial-gradient(ellipse 60% 70% at 50% 50%,rgba(6,9,16,.92) 0%,rgba(6,9,16,.5) 45%,rgba(6,9,16,.06) 100%)}
#ptcv{position:fixed;inset:0;z-index:61;pointer-events:none}

/* ── Live logs ────────────────────────────────────────────────────────────── */
#logs{position:fixed;bottom:28px;left:24px;display:flex;flex-direction:column;gap:5px;z-index:15;pointer-events:none}
.log{font-family:'JetBrains Mono',monospace;font-size:10.5px;padding:3px 0;opacity:0;transform:translateX(-10px);transition:all .35s ease;white-space:nowrap}
.log.in{opacity:1;transform:translateX(0)}
.log.out{opacity:0;transform:translateX(-10px)}
.ok{color:var(--gn)}.inf{color:var(--ac)}.wrn{color:var(--or)}.bld{color:var(--pu)}

/* ── Rank-up flash ────────────────────────────────────────────────────────── */
#ru{position:fixed;inset:0;z-index:70;pointer-events:none;display:flex;align-items:center;justify-content:center;opacity:0}
#ru.flash{animation:rf 2.2s ease-in-out forwards}
@keyframes rf{0%{opacity:0}8%{opacity:1}72%{opacity:1}100%{opacity:0}}
.rui{text-align:center;background:rgba(5,8,16,.96);border:1px solid var(--ac2);border-radius:16px;padding:36px 64px;box-shadow:0 0 100px rgba(124,58,237,.25),0 0 40px rgba(124,58,237,.1),inset 0 0 30px rgba(124,58,237,.04)}
.rutl{font-family:'JetBrains Mono',monospace;font-size:10px;color:var(--pu);letter-spacing:.3em;text-transform:uppercase;margin-bottom:10px}
.run2{font-size:38px;font-weight:600}
.rusub{font-family:'JetBrains Mono',monospace;font-size:10px;color:var(--mu);margin-top:8px;letter-spacing:.05em}

/* ── Toasts ───────────────────────────────────────────────────────────────── */
#ach-toast{position:fixed;bottom:80px;right:24px;z-index:80;background:rgba(9,13,20,.97);border:1px solid rgba(124,58,237,.4);border-radius:10px;padding:12px 18px;display:flex;align-items:center;gap:10px;font-family:'JetBrains Mono',monospace;font-size:11px;color:var(--pu);opacity:0;transform:translateX(20px);transition:all .4s ease;pointer-events:none;max-width:280px;box-shadow:0 0 24px rgba(124,58,237,.1)}
#ach-toast.show{opacity:1;transform:translateX(0)}
.ach-ico{font-size:16px;flex-shrink:0}
#toast{position:fixed;top:64px;left:50%;transform:translateX(-50%) translateY(-12px);background:linear-gradient(180deg,rgba(15,23,42,.98),rgba(3,7,18,.96));border:1px solid rgba(0,212,255,.22);border-radius:999px;padding:9px 20px;font-family:'JetBrains Mono',monospace;font-size:10.5px;color:var(--ac);opacity:0;transition:all .3s ease;z-index:100;white-space:nowrap;pointer-events:none;box-shadow:0 12px 32px rgba(0,0,0,.32),0 0 28px rgba(0,212,255,.08)}
#toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
#pricing-toast{position:fixed;bottom:80px;left:50%;transform:translateX(-50%) translateY(12px);background:rgba(9,13,20,.97);border:1px solid rgba(0,212,255,.2);border-radius:8px;padding:10px 20px;font-family:'JetBrains Mono',monospace;font-size:10px;color:var(--mu);opacity:0;transition:all .4s ease;z-index:80;white-space:nowrap;pointer-events:none;}
#pricing-toast.show{opacity:1;transform:translateX(-50%) translateY(0);pointer-events:auto}
#pricing-toast .pt-close{color:var(--ac);margin-left:12px;cursor:pointer}

/* ── Achievement color classes ────────────────────────────────────────────── */
.ach-first{color:#60a5fa}.ach-five{color:var(--or)}.ach-hour{color:var(--ac)}.ach-streak3{color:#c084fc}.ach-senior{color:#fbbf24}.ach-night{color:#818cf8}

/* ── XP penalty flash ─────────────────────────────────────────────────────── */
@keyframes xp-flash{0%{box-shadow:0 0 0 rgba(255,71,87,0)}50%{box-shadow:0 0 30px rgba(255,71,87,.4)}100%{box-shadow:0 0 0 rgba(255,71,87,0)}}
.xp-penalty-flash{animation:xp-flash .6s ease}

/* ── Accessibility overrides (non-compiler) ───────────────────────────────── */
body.ff-large-text #tdsp{font-size:82px}
body.ff-large-text #tlbl{font-size:10px}
body.ff-large-text #tpct{font-size:12px}
body.ff-large-text #under-stats{font-size:12px}
body.ff-large-text .cb{font-size:13px;padding:10px 24px}
body.ff-large-text .db{font-size:11px;padding:5px 13px}
body.ff-large-text .mb{font-size:11px;padding:5px 13px}
body.ff-large-text #bar{font-size:11px}
body.ff-high-contrast{--bg:#010409;--bg2:#050913;--tx:#f8fafc;--mu:#9fb0c7;--br:#2a3648;--ac:#57e5ff;--ac2:#9b6bff;--gn:#37ff9d;--or:#ffae63;--rd:#ff6576;--pu:#d7a9ff;--compiler-opacity:.58;}
body.ff-high-contrast #vig{background:linear-gradient(90deg,rgba(1,4,9,.08) 0%,rgba(1,4,9,.28) 30%,rgba(1,4,9,.72) 56%,rgba(1,4,9,.92) 100%);}
body.ff-high-contrast #rbg{stroke:#1b2533;}
body.ff-high-contrast #rglow{stroke:rgba(87,229,255,.12);}
body.ff-high-contrast #under-stats,body.ff-high-contrast #tpct,body.ff-high-contrast .set-sub,body.ff-high-contrast .feat,body.ff-high-contrast .pill{color:rgba(215,225,240,.88);}
body.ff-high-contrast #sx-fill{background:linear-gradient(0deg,var(--ac),var(--pu));box-shadow:0 0 14px var(--ac);}
body.ff-high-contrast #sx-value{color:var(--tx);}
