@import"https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700;800;900&display=swap";:root{--duo-green: #433f69;--duo-green-dark: #352f56;--duo-green-light: #e8e6f0;--duo-blue: #d66567;--duo-blue-dark: #c05153;--duo-blue-light: #fde8e8;--duo-red: #FF4B4B;--duo-red-dark: #EA2B2B;--duo-red-light: #FFDFE0;--duo-orange: #FF9600;--duo-orange-light: #FFF7E6;--duo-gold: #FFC800;--duo-gold-dark: #E5A600;--duo-purple: #7c6faa;--duo-gray: #E5E5E5;--duo-gray-dark: #AFAFAF;--duo-text: #3a3754;--duo-text-light: #777777;--duo-bg: #FFFFFF;--duo-bg-light: #f4f7fe;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 20px;--radius-full: 9999px;--shadow-sm: 0 2px 4px rgba(0,0,0,.06);--shadow-md: 0 4px 12px rgba(0,0,0,.1);--shadow-lg: 0 8px 24px rgba(0,0,0,.15);--transition: .2s ease}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:Nunito,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--duo-bg-light);color:var(--duo-text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden}#root{min-height:100vh}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--duo-gray);border-radius:var(--radius-full)}.password-gate{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#433f69,#352f56,#2a2548);padding:20px}.gate-content{background:var(--duo-bg);padding:48px 36px;border-radius:var(--radius-lg);text-align:center;box-shadow:var(--shadow-lg);width:100%;max-width:380px;animation:popIn .4s ease}.gate-content h1{font-size:32px;font-weight:900;color:var(--duo-green);margin-bottom:8px;letter-spacing:-.5px}.gate-content p{color:var(--duo-text-light);font-size:16px;margin-bottom:24px;font-weight:600}.gate-content input{display:block;width:100%;padding:14px 16px;margin-bottom:16px;border:2px solid var(--duo-gray);border-radius:var(--radius-md);font-size:16px;font-family:inherit;font-weight:600;color:var(--duo-text);background:var(--duo-bg);transition:border-color var(--transition)}.gate-content input:focus{outline:none;border-color:var(--duo-blue);box-shadow:0 0 0 3px #1cb0f626}.gate-content input::placeholder{color:var(--duo-gray-dark);font-weight:600}.gate-content button{width:100%;padding:14px;background:var(--duo-green);color:#fff;border:none;border-bottom:4px solid var(--duo-green-dark);border-radius:var(--radius-md);font-size:16px;font-weight:700;font-family:inherit;text-transform:uppercase;letter-spacing:1px;cursor:pointer;transition:all var(--transition)}.gate-content button:hover{filter:brightness(1.05)}.gate-content button:active{transform:translateY(2px);border-bottom-width:2px}.login-gate-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background:#0009;display:flex;align-items:center;justify-content:center;padding:20px;animation:fadeIn .3s ease}.login-gate-modal{background:var(--duo-bg);border-radius:var(--radius-lg);padding:36px 28px;text-align:center;max-width:380px;width:100%;box-shadow:var(--shadow-lg);animation:popIn .4s ease}.login-gate-mascots{display:flex;justify-content:center;gap:12px;margin-bottom:16px}.login-gate-title{font-size:24px;font-weight:900;color:var(--duo-text);margin-bottom:8px}.login-gate-desc{font-size:15px;color:var(--duo-text-light);font-weight:600;margin-bottom:24px;line-height:1.5}.login-gate-google{display:flex;justify-content:center;margin-bottom:16px}.login-gate-fallback{padding:12px 24px;background:var(--duo-green);color:#fff;border:none;border-bottom:4px solid var(--duo-green-dark);border-radius:var(--radius-md);font-size:15px;font-weight:700;font-family:inherit;cursor:pointer;transition:all var(--transition)}.login-gate-fallback:hover{filter:brightness(1.05)}.login-gate-fallback:active{transform:translateY(2px);border-bottom-width:2px}.login-gate-note{font-size:13px;color:var(--duo-text-light);font-weight:600;margin-bottom:12px}.login-gate-close{background:none;border:none;color:var(--duo-text-light);font-size:14px;font-weight:700;font-family:inherit;cursor:pointer;padding:8px 16px}.login-gate-close:hover{color:var(--duo-text)}.level-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background:linear-gradient(135deg,#433f69,#352f56,#2a2548);display:flex;align-items:center;justify-content:center;padding:20px;overflow-y:auto}.level-modal{background:var(--duo-bg);border-radius:var(--radius-lg);padding:36px 24px;text-align:center;max-width:420px;width:100%;box-shadow:var(--shadow-lg);animation:popIn .4s ease}.level-mascot{margin-bottom:12px}.level-title{font-size:26px;font-weight:900;color:var(--duo-text);margin-bottom:8px}.level-desc{font-size:14px;color:var(--duo-text-light);font-weight:600;margin-bottom:24px;line-height:1.5}.level-options{display:flex;flex-direction:column;gap:12px}.level-card{display:flex;align-items:center;gap:16px;padding:16px;background:var(--duo-bg-light);border:2px solid var(--duo-gray);border-bottom:4px solid var(--duo-gray);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition);text-align:left;font-family:inherit}.level-card:hover{border-color:var(--duo-green);transform:translateY(-2px)}.level-card:active{transform:translateY(0);border-bottom-width:2px}.level-card.coming-soon{opacity:.7}.level-card-icon{font-size:32px;flex-shrink:0}.level-card-info{display:flex;flex-direction:column;gap:4px}.level-card-title{font-size:16px;font-weight:800;color:var(--duo-text);display:flex;align-items:center;gap:8px}.level-badge{font-size:11px;font-weight:700;background:var(--duo-blue);color:#fff;padding:2px 8px;border-radius:999px}.level-card-desc{font-size:13px;color:var(--duo-text-light);font-weight:600}.level-card-example{font-size:12px;color:var(--duo-green);font-weight:700;font-style:italic}.level-switcher{display:flex;gap:8px;margin-top:12px}.level-switch-btn{flex:1;padding:10px 8px;background:var(--duo-bg-light);border:2px solid var(--duo-gray);border-bottom:4px solid var(--duo-gray);border-radius:var(--radius-md);font-size:13px;font-weight:700;font-family:inherit;color:var(--duo-text-light);cursor:pointer;transition:all var(--transition)}.level-switch-btn:hover{border-color:var(--duo-green)}.level-switch-btn.active{background:var(--duo-green);color:#fff;border-color:var(--duo-green-dark)}.profile-avatar-img{width:100px;height:100px;border-radius:50%;object-fit:cover;border:4px solid var(--duo-green)}.profile-email{font-size:13px;color:var(--duo-text-light);font-weight:600;margin-top:2px;margin-bottom:8px}.logout-btn{width:100%;padding:12px;background:none;border:2px solid var(--duo-red);border-radius:var(--radius-md);color:var(--duo-red);font-size:14px;font-weight:700;font-family:inherit;cursor:pointer;transition:all var(--transition)}.logout-btn:hover{background:var(--duo-red);color:#fff}.app-header{position:sticky;top:0;z-index:100;background:var(--duo-bg);border-bottom:2px solid var(--duo-gray);height:56px;display:flex;align-items:center;justify-content:space-between;padding:0 16px}.app-header-inner{max-width:500px;margin:0 auto;width:100%;display:flex;align-items:center;justify-content:space-between}.header-logo{font-size:20px;font-weight:900;color:var(--duo-green);letter-spacing:-.5px;display:flex;align-items:center;gap:6px}.header-logo-icon{font-size:24px}.header-stats{display:flex;align-items:center;gap:16px}.stat-item{display:flex;align-items:center;gap:4px;font-weight:700;font-size:15px;cursor:default}.stat-item .stat-icon{font-size:18px}.stat-item.streak .stat-value{color:var(--duo-orange)}.stat-item.gems .stat-value{color:var(--duo-blue)}.stat-item.hearts .stat-value{color:var(--duo-red)}.bottom-nav{position:fixed;bottom:0;left:0;right:0;z-index:100;background:var(--duo-bg);border-top:2px solid var(--duo-gray);display:flex;justify-content:space-around;align-items:center;height:64px;padding-bottom:env(safe-area-inset-bottom,0)}.nav-tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;background:none;border:none;cursor:pointer;padding:6px 0;text-decoration:none;transition:all var(--transition);position:relative}.nav-tab .nav-icon{font-size:24px;color:var(--duo-gray-dark);transition:color var(--transition);line-height:1}.nav-tab .nav-label{font-size:11px;font-weight:700;color:var(--duo-gray-dark);font-family:inherit;transition:color var(--transition)}.nav-tab.active .nav-icon,.nav-tab.active .nav-label{color:var(--duo-blue)}.nav-tab.active:after{content:"";position:absolute;top:0;left:50%;transform:translate(-50%);width:40px;height:3px;background:var(--duo-blue);border-radius:0 0 var(--radius-sm) var(--radius-sm)}.main-content{max-width:500px;margin:0 auto;padding:20px 16px 80px;min-height:calc(100vh - 120px)}.unit-banner{background:linear-gradient(135deg,var(--duo-green) 0%,var(--duo-green-dark) 100%);border-radius:var(--radius-lg);padding:20px 24px;margin-bottom:8px;color:#fff;box-shadow:0 4px #352f5699;position:relative;overflow:hidden}.unit-banner:after{content:"";position:absolute;top:-50%;right:-20%;width:120px;height:120px;border-radius:50%;background:#ffffff14}.unit-banner-top{display:flex;align-items:center;gap:16px;margin-bottom:4px}.unit-number{width:40px;height:40px;border-radius:50%;background:#fff3;display:flex;align-items:center;justify-content:center;font-weight:900;font-size:18px;flex-shrink:0}.unit-title{font-size:20px;font-weight:800}.unit-desc{font-size:14px;opacity:.85;font-weight:600;margin-left:56px}.unit-banner.unit-2{background:linear-gradient(135deg,var(--duo-blue) 0%,var(--duo-blue-dark) 100%);box-shadow:0 4px #aa414399}.unit-banner.unit-3{background:linear-gradient(135deg,var(--duo-purple) 0%,#6b5e99 100%);box-shadow:0 4px #64588c99}.unit-banner.unit-4{background:linear-gradient(135deg,var(--duo-orange) 0%,#E8870A 100%);box-shadow:0 4px #e8870a80}.unit-banner.unit-5{background:linear-gradient(135deg,#ff4b4b,#d63a3a);box-shadow:0 4px #b4282899}.unit-banner.unit-6{background:linear-gradient(135deg,#2b70c9,#1a5aaa);box-shadow:0 4px #1a468c99}.path-container{display:flex;flex-direction:column;align-items:center;padding:16px 0 24px;position:relative}.path-node-wrapper{display:flex;flex-direction:column;align-items:center;transition:transform .3s ease;position:relative}.path-connector{width:100%;height:48px;color:var(--duo-gray-300, #CCC);display:flex;justify-content:center;pointer-events:none}.path-connector svg{overflow:visible;width:100%;height:100%}.path-connector.completed{color:var(--duo-gold)}.lesson-node{display:flex;flex-direction:column;align-items:center;cursor:pointer;-webkit-tap-highlight-color:transparent}.node-circle{width:64px;height:64px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:24px;font-weight:800;transition:all var(--transition);position:relative}.node-circle.completed{background:var(--duo-gold);border-bottom:4px solid var(--duo-gold-dark);color:#fff}.node-circle.completed:hover{transform:scale(1.08);box-shadow:0 0 16px #ffc8004d}.node-circle.active{background:var(--duo-green);border-bottom:4px solid var(--duo-green-dark);color:#fff;animation:bounce 1.5s ease infinite,pulseGlow 2s ease infinite;width:72px;height:72px;font-size:28px}.node-circle.active:hover{filter:brightness(1.1)}.node-circle.locked{background:var(--duo-gray);border-bottom:4px solid var(--duo-gray-dark);color:var(--duo-gray-dark);cursor:not-allowed;opacity:.7}.node-label{margin-top:6px;font-size:12px;font-weight:700;color:var(--duo-text-light);max-width:110px;text-align:center;line-height:1.3}.node-circle.active+.node-label{color:var(--duo-green-dark);font-weight:800}.node-crown{position:absolute;top:-10px;font-size:16px;z-index:1}.node-scenario{font-size:11px;margin-top:2px;opacity:.7}.lesson-page{min-height:100vh;background:var(--duo-bg);display:flex;flex-direction:column;max-width:500px;margin:0 auto}.lesson-top-bar{position:sticky;top:0;z-index:50;background:var(--duo-bg);padding:12px 16px;display:flex;align-items:center;gap:16px}.close-btn{width:36px;height:36px;border-radius:50%;border:2px solid var(--duo-gray);background:none;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:18px;color:var(--duo-gray-dark);font-weight:700;transition:all var(--transition);flex-shrink:0}.close-btn:hover{background:var(--duo-bg-light);border-color:var(--duo-gray-dark);color:var(--duo-text)}.progress-track{flex:1;height:16px;background:var(--duo-gray);border-radius:var(--radius-full);overflow:hidden;position:relative}.progress-fill{height:100%;background:var(--duo-green);border-radius:var(--radius-full);transition:width .4s ease;position:relative;min-width:8px}.progress-fill:after{content:"";position:absolute;top:3px;left:6px;right:6px;height:5px;background:#ffffff4d;border-radius:var(--radius-full)}.hearts-display{display:flex;align-items:center;gap:2px;flex-shrink:0}.heart-icon{font-size:20px;transition:transform var(--transition)}.heart-icon.lost{opacity:.2;filter:grayscale(1)}.heart-icon.losing{animation:shake .5s ease}.exercise-area{flex:1;padding:24px 16px 100px;animation:fadeIn .3s ease}.exercise-instruction{font-size:15px;font-weight:700;color:var(--duo-text-light);text-align:center;margin-bottom:12px}.exercise-prompt{font-size:24px;font-weight:800;text-align:center;margin-bottom:32px;line-height:1.3;color:var(--duo-text)}.speak-btn{width:80px;height:80px;border-radius:50%;background:var(--duo-blue);border:none;border-bottom:4px solid var(--duo-blue-dark);color:#fff;font-size:32px;cursor:pointer;display:flex;align-items:center;justify-content:center;margin:0 auto 24px;transition:all var(--transition)}.speak-btn:hover{filter:brightness(1.1)}.speak-btn:active{transform:translateY(2px);border-bottom-width:2px}.speak-btn.speaking{animation:pulseGlow 1s ease infinite;background:var(--duo-blue-dark)}.options-list{display:flex;flex-direction:column;gap:12px}.option-card{background:var(--duo-bg);border:2px solid var(--duo-gray);border-bottom:4px solid var(--duo-gray);border-radius:var(--radius-md);padding:14px 16px;font-size:17px;font-weight:600;font-family:inherit;text-align:left;cursor:pointer;transition:all var(--transition);display:flex;align-items:center;gap:12px;color:var(--duo-text);width:100%}.option-number{width:32px;height:32px;border-radius:50%;border:2px solid var(--duo-gray);display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:800;color:var(--duo-gray-dark);flex-shrink:0;transition:all var(--transition)}.option-card:hover{border-color:var(--duo-gray-dark);background:var(--duo-bg-light)}.option-card.selected{border-color:var(--duo-blue);border-bottom-color:var(--duo-blue-dark);background:var(--duo-blue-light)}.option-card.selected .option-number{background:var(--duo-blue);border-color:var(--duo-blue);color:#fff}.option-card.correct{border-color:var(--duo-green);border-bottom-color:var(--duo-green-dark);background:var(--duo-green-light);pointer-events:none}.option-card.correct .option-number{background:var(--duo-green);border-color:var(--duo-green);color:#fff}.option-card.wrong{border-color:var(--duo-red);border-bottom-color:var(--duo-red-dark);background:var(--duo-red-light);animation:shake .5s ease;pointer-events:none}.option-card.wrong .option-number{background:var(--duo-red);border-color:var(--duo-red);color:#fff}.option-card:disabled{pointer-events:none;opacity:.7}.fill-input-area{margin-bottom:24px}.fill-input{width:100%;padding:14px 16px;border:2px solid var(--duo-gray);border-bottom:4px solid var(--duo-gray);border-radius:var(--radius-md);font-size:18px;font-weight:600;font-family:inherit;text-align:center;color:var(--duo-text);background:var(--duo-bg);transition:all var(--transition)}.fill-input:focus{outline:none;border-color:var(--duo-blue);border-bottom-color:var(--duo-blue-dark);box-shadow:0 0 0 3px #1cb0f61f}.fill-input::placeholder{color:var(--duo-gray-dark);font-weight:600}.fill-input.correct{border-color:var(--duo-green);border-bottom-color:var(--duo-green-dark);background:var(--duo-green-light)}.fill-input.wrong{border-color:var(--duo-red);border-bottom-color:var(--duo-red-dark);background:var(--duo-red-light);animation:shake .5s ease}.hint-box{margin-top:16px;padding:14px;background:var(--duo-orange-light);border-radius:var(--radius-md);border-left:4px solid var(--duo-orange);font-size:14px;font-weight:600;color:var(--duo-text)}.hint-box .hint-label{color:var(--duo-orange);font-weight:800}.feedback-banner{position:fixed;bottom:0;left:0;right:0;z-index:200;padding:24px 16px;padding-bottom:calc(24px + env(safe-area-inset-bottom,0px));animation:slideUp .3s ease-out}.feedback-banner-inner{max-width:500px;margin:0 auto}.feedback-banner.correct{background:var(--duo-green-light);border-top:2px solid var(--duo-green)}.feedback-banner.wrong{background:var(--duo-red-light);border-top:2px solid var(--duo-red)}.feedback-icon{font-size:24px;margin-bottom:4px}.feedback-text{font-size:22px;font-weight:900;margin-bottom:4px}.correct .feedback-text{color:var(--duo-green-dark)}.wrong .feedback-text{color:var(--duo-red-dark)}.feedback-answer{font-size:15px;font-weight:600;margin-bottom:8px}.correct .feedback-answer{color:var(--duo-green-dark)}.wrong .feedback-answer{color:var(--duo-red-dark)}.feedback-btn{width:100%;padding:14px;border:none;border-radius:var(--radius-md);font-size:16px;font-weight:700;font-family:inherit;text-transform:uppercase;letter-spacing:1px;cursor:pointer;margin-top:12px;transition:all var(--transition)}.correct .feedback-btn{background:var(--duo-green);color:#fff;border-bottom:4px solid var(--duo-green-dark)}.wrong .feedback-btn{background:var(--duo-red);color:#fff;border-bottom:4px solid var(--duo-red-dark)}.feedback-btn:active{transform:translateY(2px);border-bottom-width:2px}.check-area{position:fixed;bottom:0;left:0;right:0;z-index:100;padding:16px;padding-bottom:calc(16px + env(safe-area-inset-bottom,0px));background:var(--duo-bg);border-top:2px solid var(--duo-gray)}.check-area-inner{max-width:500px;margin:0 auto}.btn-check{width:100%;padding:14px;background:var(--duo-green);color:#fff;border:none;border-bottom:4px solid var(--duo-green-dark);border-radius:var(--radius-lg);font-size:16px;font-weight:700;font-family:inherit;text-transform:uppercase;letter-spacing:1px;cursor:pointer;transition:all var(--transition)}.btn-check:hover:not(:disabled){filter:brightness(1.05)}.btn-check:active:not(:disabled){transform:translateY(2px);border-bottom-width:2px}.btn-check:disabled{background:var(--duo-gray);color:var(--duo-gray-dark);border-bottom-color:var(--duo-gray-dark);cursor:not-allowed}.lesson-complete{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(160deg,#433f69,#352f56 40%,#2a2548);padding:24px;animation:fadeIn .4s ease;position:relative;overflow:hidden}.lesson-complete.failed{background:linear-gradient(160deg,#636e72,#4a5256 40%,#2d3436)}.confetti-container{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;overflow:hidden}.confetti-piece{position:absolute;top:-20px;left:var(--x, 50%);width:var(--size, 8px);height:var(--size, 8px);background:var(--color, #FFC800);border-radius:2px;animation:confettiFall 2.5s ease-in var(--delay, 0s) forwards}.confetti-piece:nth-child(odd){border-radius:50%}@keyframes confettiFall{0%{transform:translateY(0) translate(0) rotate(0) scale(1);opacity:1}to{transform:translateY(100vh) translate(var(--drift, 20px)) rotate(720deg) scale(.3);opacity:0}}.complete-card{background:var(--duo-bg);border-radius:var(--radius-lg);padding:36px 28px;text-align:center;max-width:380px;width:100%;box-shadow:var(--shadow-lg);animation:popIn .5s ease}.complete-emoji{font-size:72px;margin-bottom:16px;animation:celebrate .6s ease}.complete-title{font-size:28px;font-weight:900;color:var(--duo-text);margin-bottom:8px}.complete-subtitle{font-size:16px;color:var(--duo-text-light);font-weight:600;margin-bottom:24px}.complete-stats{display:flex;gap:12px;margin-bottom:28px}.stat-box{flex:1;background:var(--duo-bg-light);border-radius:var(--radius-md);padding:16px 8px;text-align:center}.stat-box-value{font-size:28px;font-weight:900;color:var(--duo-green)}.stat-box-label{font-size:13px;font-weight:700;color:var(--duo-text-light);margin-top:4px}.complete-xp{display:inline-flex;align-items:center;gap:8px;background:var(--duo-gold);color:#fff;padding:10px 20px;border-radius:var(--radius-full);font-size:18px;font-weight:800;margin-bottom:24px;box-shadow:0 3px 0 var(--duo-gold-dark)}.complete-actions{display:flex;flex-direction:column;gap:10px}.btn-continue{width:100%;padding:14px;background:var(--duo-green);color:#fff;border:none;border-bottom:4px solid var(--duo-green-dark);border-radius:var(--radius-lg);font-size:16px;font-weight:700;font-family:inherit;text-transform:uppercase;letter-spacing:1px;cursor:pointer;transition:all var(--transition)}.btn-continue:active{transform:translateY(2px);border-bottom-width:2px}.btn-retry{width:100%;padding:14px;background:none;color:var(--duo-text-light);border:2px solid var(--duo-gray);border-bottom:4px solid var(--duo-gray);border-radius:var(--radius-lg);font-size:16px;font-weight:700;font-family:inherit;text-transform:uppercase;letter-spacing:1px;cursor:pointer;transition:all var(--transition)}.btn-retry:active{transform:translateY(2px);border-bottom-width:2px}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes pulseGlow{0%,to{box-shadow:0 0 #58cc0266}50%{box-shadow:0 0 0 14px #58cc0200}}@keyframes slideUp{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-8px)}40%{transform:translate(8px)}60%{transform:translate(-6px)}80%{transform:translate(6px)}}@keyframes popIn{0%{transform:scale(.85);opacity:0}to{transform:scale(1);opacity:1}}@keyframes celebrate{0%{transform:scale(0) rotate(-20deg)}50%{transform:scale(1.2) rotate(10deg)}to{transform:scale(1) rotate(0)}}.animate-bounce{animation:bounce 1.5s ease infinite}.animate-pulse{animation:pulseGlow 2s ease infinite}.animate-slide-up{animation:slideUp .3s ease-out}.animate-fade-in{animation:fadeIn .3s ease}.animate-shake{animation:shake .5s ease}.animate-pop-in{animation:popIn .3s ease}.mascot{display:inline-block;flex-shrink:0}.header-mascot{margin-right:-2px}.gate-mascots{display:flex;align-items:flex-end;justify-content:center;gap:8px;margin-bottom:12px}.feedback-mascot{flex-shrink:0;margin-right:8px}.feedback-banner-inner{display:flex;align-items:center}.complete-mascot{display:flex;justify-content:center;margin-bottom:8px;animation:celebrate .6s ease}.home-mascot-intro{display:flex;align-items:flex-start;gap:12px;background:#fff;border-radius:var(--radius-lg);padding:16px;margin:0 16px 24px;border:2px solid var(--duo-gray);animation:slideUp .4s ease}.home-mascot-bubble{flex:1;background:var(--duo-green-light);border-radius:var(--radius-md);padding:12px 16px;position:relative;font-size:14px;line-height:1.5;color:var(--duo-text)}.home-mascot-bubble:before{content:"";position:absolute;left:-8px;top:14px;width:0;height:0;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:8px solid var(--duo-green-light)}.home-mascot-bubble p{margin:0}.lesson-tooltip-mascot{display:flex;justify-content:center;margin-bottom:4px}.tips-mascot{display:flex;align-items:flex-start;gap:12px;background:#fff;border-radius:var(--radius-lg);padding:16px;margin-bottom:20px;border:2px solid var(--duo-gray)}.tips-mascot-bubble{flex:1;background:var(--duo-blue-light);border-radius:var(--radius-md);padding:12px 16px;position:relative;font-size:14px;line-height:1.5;color:var(--duo-text)}.tips-mascot-bubble:before{content:"";position:absolute;left:-8px;top:14px;width:0;height:0;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:8px solid var(--duo-blue-light)}.tips-mascot-bubble p{margin:0}@keyframes sparkleFloat{0%{opacity:0;transform:translateY(0) scale(.5)}50%{opacity:1;transform:translateY(-5px) scale(1)}to{opacity:0;transform:translateY(-10px) scale(.5)}}.sparkle{animation:sparkleFloat 1.2s ease infinite}.sparkle-1{animation-delay:0s}.sparkle-2{animation-delay:.3s}.sparkle-3{animation-delay:.6s}@media(max-width:500px){.main-content{padding:16px 12px 80px}.unit-banner{border-radius:var(--radius-md);padding:16px 20px}.exercise-prompt{font-size:21px}}@media(min-width:501px){body{background:#e5e5e5}.home-page{background:var(--duo-bg-light);max-width:500px;margin:0 auto;min-height:100vh;box-shadow:0 0 40px #0000001a}}.home-page{background:var(--duo-bg-light);min-height:100vh}.arrange-answer-area{min-height:60px;border:2px dashed var(--duo-gray-200);border-radius:var(--radius-lg);padding:12px;display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:20px;background:var(--duo-bg-light);transition:border-color .2s}.arrange-answer-area.correct{border-color:var(--duo-green);background:#58cc020f}.arrange-answer-area.wrong{border-color:var(--duo-red);background:#ff4b4b0f;animation:shake .4s ease}.arrange-placeholder{color:var(--duo-gray-300);font-size:15px;width:100%;text-align:center}.word-bank{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}.word-chip{font-family:var(--font-primary);font-size:15px;font-weight:700;padding:10px 18px;border-radius:12px;border:2px solid var(--duo-gray-200);border-bottom:4px solid var(--duo-gray-200);background:#fff;color:var(--duo-text);cursor:pointer;transition:all .15s ease;-webkit-user-select:none;user-select:none}.word-chip:hover:not(:disabled){background:var(--duo-bg-light);border-color:var(--duo-gray-300)}.word-chip:active:not(:disabled){border-bottom-width:2px;transform:translateY(2px)}.word-chip.used{opacity:.3;pointer-events:none;border-style:dashed;background:transparent;color:transparent}.word-chip.placed{background:var(--duo-blue);color:#fff;border-color:#1899d6}.word-chip.placed.correct{background:var(--duo-green);border-color:#352f56}.word-chip.placed.wrong{background:var(--duo-red);border-color:#cc3d3d}.lesson-tooltip-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;z-index:1000;display:flex;align-items:center;justify-content:center;animation:fadeIn .2s ease}.lesson-tooltip{background:#fff;border-radius:var(--radius-xl);padding:28px 24px;width:300px;text-align:center;animation:popIn .25s ease;box-shadow:0 20px 60px #00000040}.lesson-tooltip-icon{font-size:40px;margin-bottom:8px}.lesson-tooltip-title{font-size:20px;font-weight:800;color:var(--duo-text);margin:0 0 4px}.lesson-tooltip-desc{font-size:14px;color:var(--duo-gray-400);margin:0 0 20px}.lesson-tooltip .btn-check{width:100%;font-size:16px;padding:14px}.lesson-tooltip-close{margin-top:12px;background:none;border:none;color:var(--duo-gray-300);font-size:14px;cursor:pointer;font-weight:700}.tips-page{min-height:100vh;background:var(--duo-bg-light);padding-bottom:100px}.tips-header{background:var(--duo-green);padding:20px 16px 24px;display:flex;align-items:center;gap:12px}.tips-header .close-btn{color:#fff}.tips-header-title{font-size:20px;font-weight:800;color:#fff;margin:0}.tips-content{padding:20px 16px}.tip-card{background:#fff;border-radius:var(--radius-lg);padding:20px;margin-bottom:16px;border:2px solid var(--duo-gray-200)}.tip-card h3{font-size:17px;font-weight:800;color:var(--duo-text);margin:0 0 8px}.tip-card p{font-size:15px;color:var(--duo-gray-500);margin:0;line-height:1.6}.tip-card code{background:#58cc021a;color:var(--duo-green);padding:2px 6px;border-radius:4px;font-weight:700;font-size:14px}.unit-tips-btn{background:#fff3;border:2px solid rgba(255,255,255,.4);border-radius:10px;padding:6px 14px;color:#fff;font-weight:700;font-size:13px;cursor:pointer;transition:background .2s}.unit-tips-btn:hover{background:#ffffff4d}.hint-box{margin-top:16px;padding:12px 16px;background:#1cb0f614;border-radius:var(--radius-md);border-left:4px solid var(--duo-blue);font-size:14px;color:var(--duo-gray-500)}.hint-label{font-weight:700;color:var(--duo-blue)}.app-container{max-width:600px;margin:0 auto;min-height:100vh;display:flex;flex-direction:column;background:var(--duo-bg-light)}@keyframes slideIn{0%{opacity:0;transform:translate(40px)}to{opacity:1;transform:translate(0)}}.exercise-area.slide-in{animation:slideIn .4s ease-out}.btn-check:active,.option-card:active,.word-chip:active,.nav-tab:active,.unit-tips-btn:active{transform:scale(.96)!important;transition:transform .08s ease}.btn-skip:active{transform:scale(.96)!important}.node-circle{position:relative}.progress-ring{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);pointer-events:none}.progress-ring-bg{stroke:#00000014}.progress-ring-fill{stroke:var(--duo-green);transition:stroke-dashoffset .5s ease}.node-circle.completed .progress-ring-fill{stroke:var(--duo-gold)}.placeholder-page{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:70vh;text-align:center;padding:40px 20px;gap:12px}.placeholder-icon{font-size:64px;margin-bottom:8px}.placeholder-page h2{font-size:24px;font-weight:800;color:var(--duo-text)}.placeholder-page p{font-size:16px;color:var(--duo-text-light);max-width:280px}.streak-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:2000;padding:20px;animation:fadeIn .3s ease}.streak-modal{background:var(--duo-bg);border-radius:var(--radius-xl);padding:32px 28px;max-width:360px;width:100%;text-align:center;box-shadow:var(--shadow-lg);animation:bounceIn .5s ease}@keyframes bounceIn{0%{transform:scale(.7);opacity:0}60%{transform:scale(1.05)}to{transform:scale(1);opacity:1}}.streak-modal-fire{font-size:56px;margin-bottom:8px;animation:pulse-fire .8s ease infinite alternate}@keyframes pulse-fire{0%{transform:scale(1)}to{transform:scale(1.15)}}.streak-modal-count{font-size:26px;font-weight:800;color:var(--duo-orange);margin-bottom:4px}.streak-modal-text{font-size:15px;color:var(--duo-text-light);margin-bottom:16px;line-height:1.5}.streak-modal-mascot{display:flex;align-items:flex-end;justify-content:center;gap:8px;margin-bottom:20px}.streak-modal .btn-check{width:100%}.practice-page{max-width:600px;margin:0 auto;min-height:100vh;display:flex;flex-direction:column}.practice-header{padding:16px 20px;display:flex;align-items:center;gap:16px;background:var(--duo-bg);border-bottom:2px solid var(--duo-gray)}.practice-back{background:none;border:none;font-size:24px;cursor:pointer;padding:4px}.practice-header h2{font-weight:800;font-size:20px;flex:1}.practice-score{font-size:14px;font-weight:700;color:var(--duo-green-dark)}.practice-content{flex:1;padding:20px}.practice-progress{display:flex;align-items:center;gap:8px;margin-bottom:16px;font-size:13px;color:var(--duo-text-light)}.practice-progress-bar{flex:1;height:8px;background:var(--duo-gray);border-radius:var(--radius-full);overflow:hidden}.practice-progress-fill{height:100%;background:var(--duo-blue);border-radius:var(--radius-full);transition:width .3s ease}.practice-footer{padding:16px 20px;background:var(--duo-bg);border-top:2px solid var(--duo-gray)}.practice-complete{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:70vh;text-align:center;padding:40px 20px;gap:12px}.practice-complete h2{font-size:24px;font-weight:800;color:var(--duo-green-dark)}.practice-complete .accuracy{font-size:48px;font-weight:900;color:var(--duo-green)}.practice-complete p{font-size:15px;color:var(--duo-text-light)}.practice-mascots{display:flex;gap:12px;align-items:flex-end;margin:8px 0}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:50vh;text-align:center;padding:40px 20px;gap:12px}.empty-state h3{font-size:20px;font-weight:800;color:var(--duo-text)}.empty-state p{font-size:15px;color:var(--duo-text-light);max-width:260px}.profile-page{max-width:600px;margin:0 auto;min-height:100vh;background:var(--duo-bg-light)}.profile-header{background:var(--duo-bg);padding:28px 20px 20px;text-align:center;border-bottom:2px solid var(--duo-gray)}.profile-avatar{margin-bottom:12px}.profile-name{font-size:22px;font-weight:800;margin-bottom:4px}.profile-level{font-size:13px;color:var(--duo-text-light);font-weight:700}.profile-xp-bar-container{margin-top:12px;background:var(--duo-gray);border-radius:var(--radius-full);height:10px;overflow:hidden}.profile-xp-bar-fill{height:100%;background:linear-gradient(90deg,var(--duo-green),var(--duo-green-dark));border-radius:var(--radius-full);transition:width .4s ease}.profile-xp-text{font-size:12px;color:var(--duo-text-light);margin-top:4px}.profile-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;padding:16px}.stat-card{background:var(--duo-bg);border-radius:var(--radius-md);padding:14px 8px;text-align:center;box-shadow:var(--shadow-sm)}.stat-icon{font-size:24px;margin-bottom:4px}.stat-value{font-size:20px;font-weight:800;color:var(--duo-text)}.stat-label{font-size:11px;color:var(--duo-text-light);font-weight:600}.profile-section{padding:16px}.profile-section h3{font-size:16px;font-weight:800;margin-bottom:12px;color:var(--duo-text)}.unit-progress-item{background:var(--duo-bg);border-radius:var(--radius-md);padding:14px 16px;margin-bottom:8px;box-shadow:var(--shadow-sm)}.unit-progress-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.unit-progress-title{font-weight:700;font-size:14px}.unit-progress-count{font-size:13px;color:var(--duo-green-dark);font-weight:700}.unit-progress-bar{height:8px;background:var(--duo-gray);border-radius:var(--radius-full);overflow:hidden}.unit-progress-fill{height:100%;background:linear-gradient(90deg,var(--duo-green),var(--duo-green-dark));border-radius:var(--radius-full);transition:width .4s ease}.profile-settings{padding:16px}.settings-item{display:flex;align-items:center;justify-content:space-between;background:var(--duo-bg);padding:14px 16px;border-radius:var(--radius-md);margin-bottom:8px;box-shadow:var(--shadow-sm)}.settings-label{font-weight:700;font-size:14px;display:flex;align-items:center;gap:8px}.toggle-switch{position:relative;width:48px;height:26px;background:var(--duo-gray);border-radius:var(--radius-full);cursor:pointer;border:none;transition:background .3s ease}.toggle-switch.active{background:var(--duo-green)}.toggle-switch:after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;background:#fff;border-radius:50%;transition:transform .3s ease;box-shadow:0 1px 3px #0003}.toggle-switch.active:after{transform:translate(22px)}.profile-mascot-footer{display:flex;justify-content:center;gap:12px;padding:20px}.tip-content{white-space:pre-wrap;font-family:Nunito,sans-serif;font-size:14px;line-height:1.7;color:var(--duo-text);background:none;border:none;padding:0;margin:0}@keyframes sparkleFloat{0%{opacity:1;transform:scale(1) translateY(0)}50%{opacity:.8;transform:scale(1.2) translateY(-3px)}to{opacity:1;transform:scale(1) translateY(0)}}.sparkle-1{animation:sparkleFloat 1.2s ease infinite}.sparkle-2{animation:sparkleFloat 1.2s ease .3s infinite}.sparkle-3{animation:sparkleFloat 1.2s ease .6s infinite}[data-theme=dark]{--duo-bg: #1a1a2e;--duo-bg-light: #141425;--duo-text: #e0e0e0;--duo-text-light: #a0a0b0;--duo-gray: #2a2a4a;--duo-gray-dark: #555568;--duo-gray-500: #a0a0b0;--shadow-sm: 0 2px 4px rgba(0,0,0,.2);--shadow-md: 0 4px 12px rgba(0,0,0,.3);--shadow-lg: 0 8px 24px rgba(0,0,0,.4)}[data-theme=dark] body{background:var(--duo-bg-light);color:var(--duo-text)}[data-theme=dark] .lesson-header,[data-theme=dark] .header,[data-theme=dark] .bottom-nav,[data-theme=dark] .unit-banner,[data-theme=dark] .lesson-tooltip,[data-theme=dark] .streak-modal,[data-theme=dark] .stat-card,[data-theme=dark] .unit-progress-item,[data-theme=dark] .settings-item,[data-theme=dark] .practice-header,[data-theme=dark] .practice-footer,[data-theme=dark] .profile-header{background:#1e1e36}[data-theme=dark] .option-card,[data-theme=dark] .word-chip{background:#2a2a4a;border-color:#3a3a5a;color:var(--duo-text)}[data-theme=dark] .option-card:hover{background:#32325a}[data-theme=dark] .fill-input{background:#2a2a4a;border-color:#3a3a5a;color:var(--duo-text)}[data-theme=dark] .password-gate{background:#16213e}[data-theme=dark] .password-gate input{background:#2a2a4a;border-color:#3a3a5a;color:var(--duo-text)}[data-theme=dark] .gate-content{background:#1e1e36}[data-theme=dark] .node-circle.locked{background:#2a2a4a;border-color:#3a3a5a}[data-theme=dark] .hint-box{background:#d665671f}[data-theme=dark] .tip-card{background:#1e1e36}[data-theme=dark] .progress-ring-bg{stroke:#ffffff14}[data-theme=dark] .profile-xp-bar-container,[data-theme=dark] .unit-progress-bar,[data-theme=dark] .practice-progress-bar{background:#2a2a4a}[data-theme=dark] input::placeholder{color:#666680}[data-theme=dark] .login-gate-modal,[data-theme=dark] .level-modal{background:#1e1e36}[data-theme=dark] .level-card{background:#2a2a4a;border-color:#3a3a5a}[data-theme=dark] .level-card:hover{border-color:var(--duo-green)}[data-theme=dark] .level-switch-btn{background:#2a2a4a;border-color:#3a3a5a;color:#aaa}[data-theme=dark] .logout-btn{border-color:var(--duo-red);color:var(--duo-red)}
