*,:before,:after{box-sizing:border-box}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0}#root{min-height:100dvh}*{box-sizing:border-box;margin:0;padding:0}:root{--bg:#09090f;--card-bg:#111128;--accent:#7b61ff;--accent-bright:#9d87ff;--gold:gold;--text:#e8e8f0;--text-dim:#7a7a9a;--radius:20px}body{background:var(--bg);color:var(--text);overscroll-behavior:none;min-height:100dvh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.app{max-width:480px;height:100dvh;padding:0 16px max(16px, env(safe-area-inset-bottom));flex-direction:column;gap:10px;margin:0 auto;animation:.7s forwards appFadeIn;display:flex;overflow:hidden}@keyframes appFadeIn{0%{opacity:0;transform:scale(.98)}to{opacity:1;transform:scale(1)}}.header{flex-shrink:0;padding-top:14px}.header-row{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.app-title{letter-spacing:.5px;color:#fff;font-size:16px;font-weight:700}.streak{color:#ff9500;font-size:15px;font-weight:700}.xp-badge{color:var(--gold);font-size:14px;font-weight:700}.level-row{align-items:center;gap:8px;display:flex}.level-name{color:var(--accent);white-space:nowrap;min-width:58px;font-size:11px;font-weight:600}.xp-bar-wrap{background:#2a2a3e;border-radius:99px;flex:1;height:4px;overflow:hidden}.xp-bar{background:linear-gradient(90deg, var(--accent), #a78bfa);border-radius:99px;height:100%;transition:width .4s}.xp-next{color:var(--text-dim);white-space:nowrap;text-align:right;min-width:72px;font-size:10px}.daily-goal{background:#ffffff08;border:1px solid #ffffff0d;border-radius:12px;flex-shrink:0;padding:8px 14px}.daily-row{color:var(--text-dim);justify-content:space-between;margin-bottom:6px;font-size:11px;display:flex}.daily-bar-wrap{background:#2a2a3e;border-radius:99px;height:4px;overflow:hidden}.daily-bar{background:linear-gradient(90deg, var(--accent), var(--accent-bright));border-radius:99px;height:100%;transition:width .4s}.daily-bar.done{background:linear-gradient(90deg, var(--gold), #ffe57f)}.goal-complete{text-align:center;color:var(--gold);margin-top:6px;font-size:12px;font-weight:600}.card-wrap{touch-action:none;will-change:transform;flex:1;align-items:center;min-height:0;display:flex}.card-wrap.enter-from-right{animation:.28s cubic-bezier(.25,.46,.45,.94) enterFromRight}.card-wrap.enter-from-left{animation:.28s cubic-bezier(.25,.46,.45,.94) enterFromLeft}@keyframes enterFromRight{0%{opacity:.5;transform:translate(40px)}to{opacity:1;transform:translate(0)}}@keyframes enterFromLeft{0%{opacity:.5;transform:translate(-40px)}to{opacity:1;transform:translate(0)}}.card{background:var(--card-bg);border-radius:var(--radius);border:1px solid #7b61ff26;flex-direction:column;gap:14px;width:100%;padding:34px 24px 30px;display:flex;box-shadow:0 0 0 1px #7b61ff0f,0 8px 48px #7b61ff33,0 2px 16px #00000080}.category-tag{letter-spacing:1px;text-transform:uppercase;color:var(--accent);background:#6c63ff1f;border-radius:99px;align-self:flex-start;padding:3px 10px;font-size:10px;font-weight:700}.phrase-en{color:#fff;letter-spacing:-.5px;font-size:clamp(22px,7vw,34px);font-weight:800;line-height:1.25}.phrase-es{color:var(--text-dim);font-size:17px;font-style:italic;line-height:1.4}.card-actions{gap:10px;margin-top:4px;display:flex}.waveform{align-items:center;gap:3px;height:18px;margin-left:4px;display:flex}.waveform span{background:#a78bfa;border-radius:99px;width:3px;animation:.8s ease-in-out infinite wave;display:block}.waveform span:first-child{height:6px;animation-delay:0s}.waveform span:nth-child(2){height:14px;animation-delay:.15s}.waveform span:nth-child(3){height:10px;animation-delay:.3s}.waveform span:nth-child(4){height:16px;animation-delay:.45s}.waveform span:nth-child(5){height:8px;animation-delay:.6s}@keyframes wave{0%,to{transform:scaleY(1)}50%{transform:scaleY(.3)}}.btn{cursor:pointer;-webkit-tap-highlight-color:transparent;border:none;border-radius:14px;font-size:15px;font-weight:600;transition:transform .12s,opacity .12s,box-shadow .2s}.btn:active{opacity:.85;transform:scale(.95)}.btn-listen{color:var(--accent-bright);background:#7b61ff38;border:1px solid #7b61ff59;flex:1;justify-content:center;align-items:center;gap:6px;padding:13px;display:flex}.btn-repeat{color:#c4b5fd;background:#7b61ff1f;border:1px solid #7b61ff40;flex:1;padding:13px}.btn-next-wrap{flex-shrink:0;position:relative}.btn-next-wrap:before{content:"";background:var(--accent);filter:blur(22px);opacity:.5;z-index:0;border-radius:16px;animation:2.8s ease-in-out infinite pulse;position:absolute;inset:6px 20px}.btn-next{z-index:1;background:linear-gradient(135deg, #5b3ff8, var(--accent), var(--accent-bright), var(--accent));color:#fff;background-size:250% 250%;border-radius:16px;width:100%;padding:18px;font-size:17px;font-weight:700;animation:4s infinite gradientShift;position:relative;box-shadow:0 4px 24px #7b61ff59}.btn-next:hover{filter:brightness(1.08);box-shadow:0 6px 36px #7b61ff99}@keyframes gradientShift{0%{background-position:0%}50%{background-position:100%}to{background-position:0%}}@keyframes pulse{0%,to{opacity:.45}50%{opacity:.7}}.phrases-counter{text-align:center;color:var(--text-dim);flex-shrink:0;margin-top:2px;font-size:12px}.phrases-counter strong{color:var(--gold)}.xp-pop{background:linear-gradient(135deg, var(--accent), #a78bfa);color:#fff;pointer-events:none;z-index:100;border-radius:99px;padding:8px 22px;font-size:18px;font-weight:800;animation:.9s forwards popUp;position:fixed;top:42%;left:50%;transform:translate(-50%)}@keyframes popUp{0%{opacity:0;transform:translate(-50%)translateY(0)scale(.6)}20%{opacity:1;transform:translate(-50%)translateY(-10px)scale(1.1)}60%{opacity:1;transform:translate(-50%)translateY(-30px)scale(1)}to{opacity:0;transform:translate(-50%)translateY(-60px)scale(.9)}}.xp-pop-bonus{color:#000;background:linear-gradient(135deg,#f59e0b,gold)}.header-right{align-items:center;gap:8px;display:flex}.bonus-badge{color:#000;letter-spacing:.5px;background:linear-gradient(135deg,gold,#fbbf24);border-radius:99px;padding:3px 8px;font-size:11px;font-weight:800}.bonus-active{color:var(--gold)!important}.bar-done .daily-bar-wrap,.bar-done{border-radius:99px;box-shadow:0 0 10px #ffd70080}.btn-next-bonus{background:linear-gradient(135deg,#b45309,#f59e0b,gold,#f59e0b)!important;box-shadow:0 4px 24px #f59e0b73!important}.btn-next-wrap:has(.btn-next-bonus):before{background:#f59e0b}.confetti-wrap{pointer-events:none;z-index:200;position:fixed;inset:0;overflow:hidden}.confetti-p{border-radius:2px;animation:2.4s ease-in forwards confettiFall;position:absolute;top:-10px}@keyframes confettiFall{0%{opacity:1;transform:translateY(0)rotate(0)}80%{opacity:1}to{opacity:0;transform:translateY(110vh)rotate(520deg)}}.cel-overlay{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:150;background:#09090fd1;justify-content:center;align-items:center;animation:.3s celFadeIn;display:flex;position:fixed;inset:0}@keyframes celFadeIn{0%{opacity:0}to{opacity:1}}.cel-card{text-align:center;flex-direction:column;align-items:center;gap:12px;padding:40px 32px;animation:.4s cubic-bezier(.34,1.56,.64,1) celSlideUp;display:flex}@keyframes celSlideUp{0%{opacity:0;transform:translateY(40px)scale(.9)}to{opacity:1;transform:translateY(0)scale(1)}}.cel-bonus-xp{color:var(--gold);text-shadow:0 0 30px #ffd70099;font-size:48px;font-weight:900;animation:.6s cubic-bezier(.34,1.56,.64,1) xpPulse}@keyframes xpPulse{0%{opacity:0;transform:scale(.5)}to{opacity:1;transform:scale(1)}}.cel-title{color:#fff;letter-spacing:-.5px;font-size:32px;font-weight:900}.cel-sub{color:var(--accent-bright);font-size:15px;font-weight:600}.cel-msg{color:var(--text-dim);max-width:260px;margin-top:4px;font-size:14px;font-style:italic;line-height:1.5}.cel-tap{color:#ffffff40;letter-spacing:.5px;margin-top:16px;font-size:12px}.access-screen{padding:40px 32px max(40px, env(safe-area-inset-bottom));z-index:999;background:#09090f;flex-direction:column;justify-content:center;align-items:center;gap:28px;display:flex;position:fixed;inset:0}.phase-exiting{pointer-events:none;animation:.9s cubic-bezier(.4,0,.2,1) forwards screenExit}@keyframes screenExit{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(1.04)}}.access-orb{pointer-events:none;background:radial-gradient(circle,#7b61ff29 0%,#0000 70%);border-radius:50%;width:360px;height:360px;transition:transform .8s,width .8s,height .8s;position:absolute;top:50%;left:50%;transform:translate(-50%,-58%)}.access-orb.orb-expand{background:radial-gradient(circle,#7b61ff3d 0%,#0000 65%);width:600px;height:600px;animation:1.6s ease-in-out infinite orbPulse}@keyframes orbPulse{0%,to{opacity:.8}50%{opacity:1}}.orb-ring{pointer-events:none;border:1.5px solid #7b61ff80;border-radius:50%;width:300px;height:300px;animation:1.2s cubic-bezier(.2,.8,.4,1) forwards orbRingExpand;position:absolute;top:50%;left:50%;transform:translate(-50%,-58%)scale(.4)}@keyframes orbRingExpand{0%{opacity:1;transform:translate(-50%,-58%)scale(.4)}to{opacity:0;transform:translate(-50%,-58%)scale(3.5)}}.glow-burst{pointer-events:none;z-index:0;background:radial-gradient(circle at 50% 38%,#7b61ff47 0%,#0000 60%);animation:1s ease-out forwards glowBurst;position:fixed;inset:0}@keyframes glowBurst{0%{opacity:0;transform:scale(.7)}25%{opacity:1}to{opacity:.4;transform:scale(1.2)}}.access-logo-wrap{z-index:1;justify-content:center;align-items:center;transition:transform 1s cubic-bezier(.34,1.2,.64,1);display:flex;position:relative}.access-logo-wrap.logo-rise{transform:translateY(-20px)scale(1.1)}.access-logo-bg{background:#fff;border-radius:28px;justify-content:center;align-items:center;width:110px;height:110px;transition:box-shadow .5s;display:flex;position:relative;overflow:hidden;box-shadow:0 0 0 1px #7b61ff33,0 8px 40px #7b61ff47,0 2px 12px #00000080}.access-logo-bg.logo-glow{animation:1.6s ease-in-out infinite logoBgPulse;box-shadow:0 0 0 2px #7b61ffb3,0 0 30px #7b61ff8c,0 0 70px #7b61ff4d,0 8px 40px #00000080}@keyframes logoBgPulse{0%,to{box-shadow:0 0 0 2px #7b61ff99,0 0 28px #7b61ff80,0 0 60px #7b61ff40}50%{box-shadow:0 0 0 2px #7b61ffe6,0 0 44px #7b61ffb3,0 0 90px #7b61ff66}}.logo-shimmer .access-logo-bg:after{content:"";border-radius:inherit;background:linear-gradient(105deg,#0000 30%,#ffffffb3 50%,#0000 70%) 0 0/200% 100%;animation:.85s infinite shimmerSweep;position:absolute;inset:0}@keyframes shimmerSweep{0%{background-position:-100% 0}to{background-position:200% 0}}.access-logo{object-fit:cover;z-index:1;width:100%;height:100%;position:relative;transform:scale(1.09)}.pulse-ring{pointer-events:none;border:2px solid #7b61ffb3;border-radius:36px;animation:1.4s cubic-bezier(.2,.8,.4,1) forwards pulseRingOut;position:absolute;inset:-14px}.pulse-ring-2{opacity:0;border-color:#a78bfa80;animation-delay:.38s}@keyframes pulseRingOut{0%{opacity:0;transform:scale(.88)}15%{opacity:1}to{opacity:0;transform:scale(1.75)}}.sparkle-wrap{pointer-events:none;width:0;height:0;position:absolute;top:55px;left:55px}.sparkle-dot{border-radius:50%;animation:1s ease-out forwards sparkleFly;position:absolute}@keyframes sparkleFly{0%{opacity:1;transform:translate(-50%, -50%) rotate(var(--angle)) translateX(12px)}60%{opacity:.9}to{opacity:0;transform:translate(-50%, -50%) rotate(var(--angle)) translateX(var(--dist))}}.access-tagline{color:#e8e8f08c;letter-spacing:.3px;text-align:center;z-index:1;font-size:17px;font-weight:600;transition:opacity .35s}.access-form{z-index:1;flex-direction:column;gap:12px;width:100%;max-width:340px;transition:opacity .35s;display:flex}.fade-out{pointer-events:none;opacity:0!important}.access-input{color:#e8e8f0;letter-spacing:2.5px;text-align:center;-webkit-appearance:none;background:#ffffff0a;border:1.5px solid #7b61ff40;border-radius:16px;outline:none;width:100%;padding:16px 20px;font-size:17px;font-weight:600;transition:border-color .2s,box-shadow .2s,opacity .2s}.access-input::placeholder{color:#7a7a9a80;letter-spacing:.5px;font-size:15px;font-weight:400}.access-input:focus{border-color:#7b61ff99;box-shadow:0 0 0 3px #7b61ff1f}.access-input.input-dimmed{opacity:.5}.access-input.shake{border-color:#f8717159;animation:.42s cubic-bezier(.36,.07,.19,.97) shake}@keyframes shake{0%,to{transform:translate(0)}18%{transform:translate(-8px)}36%{transform:translate(7px)}54%{transform:translate(-5px)}72%{transform:translate(4px)}90%{transform:translate(-2px)}}.access-btn-wrap{flex-direction:column;gap:0;display:flex}.access-btn{letter-spacing:.3px;cursor:pointer;color:#e8e8f04d;-webkit-tap-highlight-color:transparent;background:#7b61ff24;border:none;border-radius:16px;justify-content:center;align-items:center;gap:8px;width:100%;padding:17px;font-size:16px;font-weight:700;transition:background .28s,color .28s,box-shadow .28s,transform .12s,opacity .12s;display:flex}.access-btn:active{opacity:.85;transform:scale(.96)}.access-btn.btn-ready{color:#fff;background:linear-gradient(135deg,#5b3ff8,#7b61ff,#9d87ff,#7b61ff) 0 0/250% 250%;animation:4s infinite gradientShift;box-shadow:0 4px 28px #7b61ff6b}.access-btn.btn-checking{color:#e8e8f0a6;box-shadow:none;background:#7b61ff47;border-radius:16px 16px 0 0;animation:.9s ease-in-out infinite btnCheckingPulse}@keyframes btnCheckingPulse{0%,to{box-shadow:0 0 #7b61ff00}50%{box-shadow:0 0 18px 2px #7b61ff38}}.access-btn.btn-granted{color:#fff;background:linear-gradient(135deg,#16a34a,#22c55e,#4ade80,#22c55e) 0 0/250% 250%;animation:3s infinite gradientShift;box-shadow:0 4px 28px #22c55e73}.access-btn.btn-invalid{color:#fca5a599;box-shadow:none;background:#f871711f;animation:none}.progress-track{background:#7b61ff26;border-radius:0 0 8px 8px;height:3px;overflow:hidden}.progress-fill{background:linear-gradient(90deg,#7b61ff,#a78bfa,#c4b5fd);border-radius:0 0 8px 8px;height:100%;animation:.84s cubic-bezier(.4,0,.2,1) forwards progressFill}@keyframes progressFill{0%{width:0%}to{width:100%}}.btn-spinner{border:2px solid #ffffff47;border-top-color:#fff;border-radius:50%;flex-shrink:0;width:16px;height:16px;animation:.65s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.access-error{text-align:center;color:#fca5a5bf;letter-spacing:.3px;font-size:13px;font-weight:600;animation:.25s errorFadeIn}@keyframes errorFadeIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.access-footer{bottom:max(28px, env(safe-area-inset-bottom));color:#7a7a9a59;text-align:center;letter-spacing:.3px;z-index:1;font-size:12px;transition:opacity .35s;position:absolute}.access-flash{pointer-events:none;z-index:2;background:#7b61ff38;animation:.55s forwards flashFade;position:fixed;inset:0}@keyframes flashFade{0%{opacity:1}to{opacity:0}}
