.gen-overlay{position:fixed;inset:0;z-index:50;background:var(--bg);display:flex;align-items:center;justify-content:center;animation:gen-fade-in .25s ease both}.gen-center{text-align:center;max-width:420px;padding:0 24px;position:relative;z-index:2}.gen-spinner{display:flex;justify-content:center;gap:10px}.gen-spinner span{width:18px;height:18px;border-radius:999px;animation:gen-bounce 1.1s ease-in-out infinite}.gen-spinner span:first-child{background:var(--blue)}.gen-spinner span:nth-child(2){background:var(--lime);animation-delay:.15s}.gen-spinner span:nth-child(3){background:var(--ink);animation-delay:.3s}.gen-message{margin-top:28px;font-size:18px;font-weight:900;animation:gen-msg-in .4s ease both;min-height:1.7em}.gen-progress-track{margin-top:24px;height:10px;border-radius:999px;background:rgba(17,17,17,.08);overflow:hidden}.gen-progress-fill{height:100%;border-radius:999px;background:linear-gradient(90deg,var(--blue),var(--lime));transition:width .1s linear}.gen-percent{margin-top:10px;font-size:13px;opacity:.6}.gen-shapes{position:absolute;inset:0;overflow:hidden;pointer-events:none}.gen-shape{position:absolute;display:block;animation:gen-float 6s ease-in-out infinite}.gen-shape--blue{width:90px;height:90px;border-radius:28px;background:var(--blue);opacity:.12;top:14%;left:12%;transform:rotate(12deg)}.gen-shape--lime{width:120px;height:120px;border-radius:999px;background:var(--lime);opacity:.35;bottom:16%;right:10%;animation-delay:1.2s}.gen-shape--ring{width:70px;height:70px;border-radius:999px;border:8px solid var(--ink);opacity:.08;top:22%;right:20%;animation-delay:2s}.gen-shape--dot{width:26px;height:26px;border-radius:999px;background:var(--blue);opacity:.25;bottom:28%;left:22%;animation-delay:.6s}.gen-shape--squiggle{font-size:64px;font-weight:900;color:var(--ink);opacity:.07;top:60%;left:55%;animation-delay:1.6s}@keyframes gen-fade-in{0%{opacity:0}to{opacity:1}}@keyframes gen-bounce{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-14px) scale(1.1)}}@keyframes gen-msg-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes gen-float{0%,to{transform:translateY(0) rotate(0deg)}50%{transform:translateY(-18px) rotate(8deg)}}