.login-page{min-height:100vh;display:flex;justify-content:center;align-items:center;padding:20px;position:relative;overflow:hidden}.login-background{position:fixed;top:0;left:0;right:0;bottom:0;z-index:-1;background:linear-gradient(-45deg,#667eea,#764ba2,#f093fb,#4facfe);background-size:400% 400%;animation:gradientShift 15s ease infinite}@keyframes gradientShift{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}.login-background:before,.login-background:after{content:"";position:absolute;width:500px;height:500px;border-radius:50%;filter:blur(80px);opacity:.3;animation:float 20s ease-in-out infinite}.login-background:before{background:#667eea;top:-250px;left:-250px;animation-delay:0s}.login-background:after{background:#764ba2;bottom:-250px;right:-250px;animation-delay:10s}@keyframes float{0%,to{transform:translate(0) scale(1)}25%{transform:translate(50px,-50px) scale(1.1)}50%{transform:translate(-30px,30px) scale(.9)}75%{transform:translate(40px,50px) scale(1.05)}}.login-card{background:rgba(255,255,255,.95);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-radius:24px;border:1px solid rgba(255,255,255,.3);box-shadow:0 20px 60px #0000004d;padding:48px;width:100%;max-width:460px;animation:slideUp .6s cubic-bezier(.16,1,.3,1);position:relative;overflow:hidden}.login-card:before{content:"";position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:linear-gradient(45deg,transparent,rgba(255,255,255,.1),transparent);transform:rotate(45deg);animation:shine 3s ease-in-out infinite}@keyframes shine{0%,to{transform:translate(-100%) translateY(-100%) rotate(45deg)}50%{transform:translate(100%) translateY(100%) rotate(45deg)}}@keyframes slideUp{0%{opacity:0;transform:translateY(40px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.login-header{text-align:center;margin-bottom:40px;position:relative;z-index:1}.login-title{font-size:32px;font-weight:800;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin:0 0 12px;display:flex;align-items:center;justify-content:center;gap:12px;letter-spacing:-.5px}.title-icon{font-size:36px;animation:bounce 2s ease-in-out infinite}.login-subtitle{font-size:16px;color:#64748b;margin:0;font-weight:500}.login-tabs{display:flex;gap:8px;margin-bottom:32px;background:#f1f5f9;padding:6px;border-radius:12px;position:relative;z-index:1}.tab-button{flex:1;padding:14px 24px;border:none;border-radius:8px;font-size:15px;font-weight:600;cursor:pointer;background:transparent;color:#64748b;transition:all .3s cubic-bezier(.4,0,.2,1);position:relative}.tab-button.active{background:white;color:#667eea;box-shadow:0 4px 12px #00000014;transform:translateY(-1px)}.tab-button:not(.active):hover{color:#1e293b;transform:translateY(-1px)}.error-message{background:linear-gradient(135deg,#fee2e2 0%,#fecaca 100%);border:2px solid #f87171;color:#991b1b;padding:16px 20px;border-radius:12px;margin-bottom:24px;font-size:14px;font-weight:500;display:flex;align-items:center;gap:12px;animation:shake .4s ease-in-out;position:relative;z-index:1}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-10px)}75%{transform:translate(10px)}}.error-icon{font-size:20px}.login-form{position:relative;z-index:1}.form-group{margin-bottom:24px;position:relative}.form-group label{display:block;font-size:14px;font-weight:600;color:#1e293b;margin-bottom:10px;letter-spacing:.3px}.form-group input{width:100%;padding:14px 18px;border:2px solid #e2e8f0;border-radius:12px;font-size:15px;transition:all .3s ease;outline:none;background:white;font-weight:500}.form-group input:focus{border-color:#667eea;box-shadow:0 0 0 4px #667eea1a;transform:translateY(-1px)}.form-group input:disabled{background:#f8fafc;cursor:not-allowed;opacity:.6}.submit-button{width:100%;padding:16px 24px;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);color:#fff;border:none;border-radius:12px;font-size:16px;font-weight:700;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);margin-top:8px;box-shadow:0 10px 25px #667eea4d;position:relative;overflow:hidden;letter-spacing:.5px}.submit-button:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.3),transparent);transition:left .5s}.submit-button:hover:before{left:100%}.submit-button:hover:not(:disabled){transform:translateY(-3px);box-shadow:0 15px 35px #667eea66}.submit-button:active:not(:disabled){transform:translateY(-1px)}.submit-button:disabled{opacity:.6;cursor:not-allowed;transform:none}.guest-login-section{margin-top:32px;text-align:center;position:relative;z-index:1}.divider{position:relative;text-align:center;margin:28px 0}.divider:before{content:"";position:absolute;top:50%;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,#cbd5e1,transparent)}.divider span{position:relative;background:rgba(255,255,255,.95);padding:0 20px;color:#64748b;font-size:13px;font-weight:600;letter-spacing:1px;text-transform:uppercase}.guest-button{width:100%;padding:16px 24px;background:linear-gradient(135deg,#64748b 0%,#475569 100%);color:#fff;border:none;border-radius:12px;font-size:16px;font-weight:600;cursor:pointer;transition:all .3s ease;display:flex;align-items:center;justify-content:center;gap:12px;box-shadow:0 10px 25px #64748b33}.guest-button:hover:not(:disabled){background:linear-gradient(135deg,#475569 0%,#334155 100%);transform:translateY(-3px);box-shadow:0 15px 35px #64748b4d}.guest-button:disabled{opacity:.6;cursor:not-allowed}.guest-icon{font-size:22px}.guest-info{margin-top:16px;font-size:13px;color:#64748b;line-height:1.6;font-weight:500}.login-footer{margin-top:32px;padding-top:24px;border-top:1px solid rgba(0,0,0,.06);text-align:center;position:relative;z-index:1}.footer-text{font-size:14px;color:#64748b;margin:0;font-weight:500}.dark-mode .login-card{background:rgba(30,41,59,.95);border-color:#ffffff1a}.dark-mode .login-title{background:linear-gradient(135deg,#818cf8 0%,#c084fc 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.dark-mode .login-subtitle{color:#94a3b8}.dark-mode .login-tabs{background:#0f172a}.dark-mode .tab-button{color:#94a3b8}.dark-mode .tab-button.active{background:#1e293b;color:#818cf8;box-shadow:0 4px 12px #0000004d}.dark-mode .form-group label{color:#e2e8f0}.dark-mode .form-group input{background:#0f172a;border-color:#334155;color:#f1f5f9}.dark-mode .form-group input:focus{border-color:#818cf8;background:#0f172a;box-shadow:0 0 0 4px #818cf81a}.dark-mode .divider span{background:rgba(30,41,59,.95);color:#94a3b8}.dark-mode .divider:before{background:linear-gradient(90deg,transparent,#334155,transparent)}.dark-mode .guest-info{color:#94a3b8}.dark-mode .login-footer{border-top-color:#ffffff0f}.dark-mode .footer-text{color:#94a3b8}@media (max-width: 480px){.login-card{padding:32px 24px}.login-title{font-size:26px}.tab-button{padding:12px 16px;font-size:14px}.submit-button,.guest-button{padding:14px 20px;font-size:15px}}.code-editor{background:rgba(255,255,255,.9);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-radius:20px;box-shadow:0 20px 60px #0000001a;border:1px solid rgba(255,255,255,.3);overflow:hidden;transition:all .3s ease;animation:slideUp .5s ease-out}.code-editor:hover{box-shadow:0 25px 70px #00000026;transform:translateY(-2px)}.editor-header{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);padding:18px 24px;display:flex;justify-content:space-between;align-items:center;position:relative;overflow:hidden}.editor-title{font-size:16px;font-weight:700;color:#fff;margin:0;letter-spacing:.5px;position:relative;z-index:1}.editor-actions{display:flex;gap:10px;position:relative;z-index:1}.btn-reset{background:rgba(255,255,255,.2);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);color:#fff;border:1px solid rgba(255,255,255,.3);padding:10px 20px;border-radius:10px;font-size:14px;font-weight:600;cursor:pointer;transition:all .3s ease;letter-spacing:.3px}.btn-reset:hover{background:rgba(255,255,255,.3);transform:translateY(-2px);box-shadow:0 6px 16px #0003}.btn-run{background:rgba(255,255,255,.95);color:#667eea;border:none;padding:10px 24px;border-radius:10px;font-size:14px;font-weight:700;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);display:flex;align-items:center;gap:8px;box-shadow:0 6px 20px #00000026;letter-spacing:.3px}.btn-run:hover{background:white;transform:translateY(-3px);box-shadow:0 10px 28px #00000040}.btn-run:active{transform:translateY(-1px)}.code-input{width:100%;min-height:280px;padding:24px;border:none;outline:none;font-family:SF Mono,Monaco,Consolas,Courier New,monospace;font-size:15px;line-height:1.7;color:#1e293b;resize:vertical;background:linear-gradient(135deg,#f8fafc 0%,#f1f5f9 100%);transition:all .3s ease}.code-input:focus{background:#ffffff;box-shadow:inset 0 0 0 2px #667eea33}.code-input::placeholder{color:#94a3b8;font-style:italic}.console-output{border-top:2px solid rgba(102,126,234,.1);animation:expandDown .4s cubic-bezier(.16,1,.3,1)}@keyframes expandDown{0%{max-height:0;opacity:0}to{max-height:500px;opacity:1}}.console-header{background:linear-gradient(135deg,#1e293b 0%,#0f172a 100%);color:#94a3b8;padding:14px 24px;font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:1px;display:flex;align-items:center;gap:8px;position:relative}.console-header:before{content:"▶";color:#10b981;font-size:12px}.console-content{background:linear-gradient(135deg,#0f172a 0%,#020617 100%);color:#e2e8f0;padding:20px 24px;max-height:200px;overflow-y:auto;font-family:SF Mono,Monaco,Consolas,Courier New,monospace;font-size:14px;line-height:1.7}.console-content::-webkit-scrollbar{width:8px}.console-content::-webkit-scrollbar-track{background:#1e293b}.console-content::-webkit-scrollbar-thumb{background:#475569;border-radius:4px}.console-content::-webkit-scrollbar-thumb:hover{background:#64748b}.console-line{margin-bottom:8px;padding-left:16px;position:relative;animation:typeIn .3s ease-out backwards}.console-line:nth-child(1){animation-delay:.05s}.console-line:nth-child(2){animation-delay:.1s}.console-line:nth-child(3){animation-delay:.15s}.console-line:nth-child(4){animation-delay:.2s}.console-line:nth-child(5){animation-delay:.25s}@keyframes typeIn{0%{opacity:0;transform:translate(-10px)}to{opacity:1;transform:translate(0)}}.console-line:before{content:"›";position:absolute;left:0;color:#10b981;font-weight:700}.validation{padding:18px 24px;font-weight:700;font-size:15px;display:flex;align-items:center;gap:12px;animation:slideInValidation .5s cubic-bezier(.16,1,.3,1);letter-spacing:.3px}@keyframes slideInValidation{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.validation.correct{background:linear-gradient(135deg,#d1fae5 0%,#a7f3d0 100%);color:#065f46;border-top:3px solid #10b981}.validation.incorrect{background:linear-gradient(135deg,#fee2e2 0%,#fecaca 100%);color:#991b1b;border-top:3px solid #ef4444}.validation .icon{font-size:24px;font-weight:700;animation:pop .5s cubic-bezier(.16,1,.3,1)}@keyframes pop{0%{transform:scale(0)}50%{transform:scale(1.2)}to{transform:scale(1)}}.validation.correct .icon{color:#10b981}.validation.incorrect .icon{color:#ef4444}.dark-mode .code-editor{background:rgba(30,41,59,.9);border-color:#ffffff1a}.dark-mode .editor-header{background:linear-gradient(135deg,#4f46e5 0%,#7c3aed 100%)}.dark-mode .code-input{background:linear-gradient(135deg,#0f172a 0%,#020617 100%);color:#e2e8f0}.dark-mode .code-input:focus{background:#0f172a;box-shadow:inset 0 0 0 2px #818cf84d}.dark-mode .code-input::placeholder{color:#475569}.dark-mode .console-output{border-top-color:#818cf833}.dark-mode .validation.correct{background:linear-gradient(135deg,#064e3b 0%,#065f46 100%);color:#6ee7b7;border-top-color:#10b981}.dark-mode .validation.incorrect{background:linear-gradient(135deg,#7f1d1d 0%,#991b1b 100%);color:#fca5a5;border-top-color:#ef4444}@media (max-width: 768px){.editor-header{padding:16px 20px;flex-direction:column;gap:12px;align-items:stretch}.editor-actions{width:100%;justify-content:space-between}.btn-reset,.btn-run{flex:1;justify-content:center}.code-input{min-height:240px;padding:20px;font-size:14px}.console-content{padding:16px 20px;font-size:13px}.validation{padding:16px 20px;font-size:14px}}@media (max-width: 480px){.code-input{min-height:200px;padding:16px;font-size:13px}.console-content{font-size:12px}.validation{font-size:13px}}.lesson-view{display:grid;grid-template-columns:1fr 1fr;gap:28px;margin-top:28px;animation:fadeIn .5s ease-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.lesson-content{background:rgba(255,255,255,.9);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-radius:20px;padding:36px;box-shadow:0 20px 60px #0000001a;border:1px solid rgba(255,255,255,.3);height:fit-content;transition:all .3s ease}.lesson-content:hover{box-shadow:0 25px 70px #00000026;transform:translateY(-2px)}.lesson-header{margin-bottom:28px;border-bottom:2px solid rgba(102,126,234,.1);padding-bottom:20px}.lesson-number{font-size:13px;color:#667eea;font-weight:700;margin-bottom:10px;letter-spacing:1px;text-transform:uppercase}.lesson-title{font-size:32px;font-weight:800;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin:0;line-height:1.3;letter-spacing:-.5px}.lesson-section{margin-bottom:32px;animation:slideIn .5s ease-out backwards}.lesson-section:nth-child(2){animation-delay:.1s}.lesson-section:nth-child(3){animation-delay:.2s}.lesson-section:nth-child(4){animation-delay:.3s}@keyframes slideIn{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}.section-title{font-size:18px;font-weight:700;color:#1e293b;margin:0 0 14px;display:flex;align-items:center;gap:10px;letter-spacing:.3px}.section-text{font-size:16px;color:#475569;line-height:1.8;margin:0;font-weight:500}.code-example{background:linear-gradient(135deg,#1e293b 0%,#0f172a 100%);color:#e2e8f0;padding:24px;border-radius:12px;font-family:SF Mono,Monaco,Consolas,Courier New,monospace;font-size:14px;line-height:1.7;overflow-x:auto;margin:0;border:1px solid #334155;box-shadow:0 8px 24px #0003;position:relative}.code-example:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,#667eea,#764ba2);border-radius:12px 12px 0 0}.exercise-text{background:linear-gradient(135deg,#eff6ff 0%,#dbeafe 100%);border-left:4px solid #3b82f6;padding:20px;border-radius:12px;font-weight:600;color:#1e40af;box-shadow:0 4px 12px #3b82f61a;position:relative;overflow:hidden}.exercise-text:after{content:"✏️";position:absolute;right:20px;top:50%;transform:translateY(-50%);font-size:32px;opacity:.3}.hints-section{margin:28px 0}.btn-hint{background:linear-gradient(135deg,#f59e0b 0%,#d97706 100%);color:#fff;border:none;padding:14px 28px;border-radius:12px;font-size:15px;font-weight:700;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);box-shadow:0 8px 20px #f59e0b4d;letter-spacing:.3px}.btn-hint:hover{background:linear-gradient(135deg,#d97706 0%,#b45309 100%);transform:translateY(-3px);box-shadow:0 12px 28px #f59e0b66}.hint-box{background:linear-gradient(135deg,#fffbeb 0%,#fef3c7 100%);border:2px solid #f59e0b;border-radius:16px;padding:24px;animation:expandIn .4s cubic-bezier(.16,1,.3,1);box-shadow:0 12px 32px #f59e0b26;position:relative;overflow:hidden}.hint-box:before{content:"💡";position:absolute;right:20px;top:20px;font-size:48px;opacity:.2}@keyframes expandIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.hint-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;font-weight:700;color:#92400e;font-size:15px}.hint-text{color:#78350f;line-height:1.7;margin:0;font-weight:600;font-size:15px}.btn-next-hint{background:#f59e0b;color:#fff;border:none;padding:8px 16px;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;transition:all .2s ease;box-shadow:0 4px 12px #f59e0b4d}.btn-next-hint:hover{background:#d97706;transform:translateY(-2px)}.lesson-actions{margin-top:28px;padding-top:28px;border-top:2px solid rgba(0,0,0,.06)}.btn-solution{background:linear-gradient(135deg,#64748b 0%,#475569 100%);color:#fff;border:none;padding:14px 28px;border-radius:12px;font-size:15px;font-weight:600;cursor:pointer;transition:all .3s ease;box-shadow:0 8px 20px #64748b4d}.btn-solution:hover{background:linear-gradient(135deg,#475569 0%,#334155 100%);transform:translateY(-3px);box-shadow:0 12px 28px #64748b66}.editor-panel{display:flex;flex-direction:column;gap:0;position:sticky;top:120px;height:fit-content}.navigation-buttons{display:flex;gap:14px;margin-top:18px;padding:0}.btn-nav{flex:1;padding:16px 28px;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);color:#fff;border:none;border-radius:14px;font-size:16px;font-weight:700;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);display:flex;align-items:center;justify-content:center;gap:10px;box-shadow:0 10px 30px #667eea66;letter-spacing:.3px;position:relative;overflow:hidden}.btn-nav:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.3),transparent);transition:left .5s}.btn-nav:hover:before{left:100%}.btn-nav:hover:not(:disabled){transform:translateY(-4px);box-shadow:0 15px 40px #667eea80}.btn-nav:active:not(:disabled){transform:translateY(-2px)}.btn-nav:disabled{background:linear-gradient(135deg,#cbd5e1 0%,#94a3b8 100%);cursor:not-allowed;transform:none;opacity:.6;box-shadow:none}.completion-banner{margin-top:18px;background:linear-gradient(135deg,#10b981 0%,#059669 100%);border-radius:16px;padding:20px;animation:celebrate .6s cubic-bezier(.16,1,.3,1);box-shadow:0 12px 32px #10b9814d;position:relative;overflow:hidden}@keyframes celebrate{0%{opacity:0;transform:scale(.8) rotate(-5deg)}50%{transform:scale(1.05) rotate(2deg)}to{opacity:1;transform:scale(1) rotate(0)}}.completion-banner:before{content:"";position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:linear-gradient(45deg,transparent,rgba(255,255,255,.2),transparent);animation:shimmer 2s infinite}@keyframes shimmer{0%{transform:translate(-100%) translateY(-100%) rotate(45deg)}to{transform:translate(100%) translateY(100%) rotate(45deg)}}.completion-content{display:flex;align-items:center;justify-content:center;gap:14px;color:#fff;position:relative;z-index:1}.completion-icon{font-size:28px;animation:bounce 1s ease-in-out infinite}.completion-text{font-size:19px;font-weight:800;letter-spacing:.5px}.dark-mode .lesson-content{background:rgba(30,41,59,.9);border-color:#ffffff1a;color:#f1f5f9}.dark-mode .lesson-number{color:#818cf8}.dark-mode .lesson-title{background:linear-gradient(135deg,#818cf8 0%,#c084fc 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.dark-mode .lesson-header{border-bottom-color:#818cf833}.dark-mode .section-title{color:#cbd5e1}.dark-mode .section-text{color:#94a3b8}.dark-mode .exercise-text{background:linear-gradient(135deg,#1e3a8a 0%,#1e40af 100%);border-left-color:#3b82f6;color:#93c5fd}.dark-mode .exercise-text:after{opacity:.2}.dark-mode .code-example{background:linear-gradient(135deg,#0f172a 0%,#020617 100%);border-color:#1e293b}.dark-mode .hint-box{background:linear-gradient(135deg,#422006 0%,#713f12 100%);border-color:#f59e0b}.dark-mode .hint-header,.dark-mode .hint-text{color:#fbbf24}.dark-mode .lesson-actions{border-top-color:#ffffff1a}.dark-mode .btn-nav:disabled{background:linear-gradient(135deg,#334155 0%,#1e293b 100%)}@media (max-width: 1024px){.lesson-view{grid-template-columns:1fr;gap:24px}.editor-panel{position:static}.lesson-content{padding:28px}.lesson-title{font-size:28px}}@media (max-width: 768px){.lesson-content{padding:24px}.lesson-title{font-size:24px}.section-title{font-size:16px}.section-text{font-size:15px}.btn-nav{padding:14px 24px;font-size:15px}.completion-text{font-size:17px}.completion-icon{font-size:24px}}@media (max-width: 480px){.lesson-view{gap:20px;margin-top:20px}.lesson-content{padding:20px}.lesson-title{font-size:22px}.section-title{font-size:15px}.section-text{font-size:14px}.btn-nav{padding:12px 20px;font-size:14px}.completion-text{font-size:15px}.code-example{font-size:13px;padding:20px}}.progress-container{background:rgba(255,255,255,.9);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);padding:24px 32px;border-radius:20px;margin-bottom:28px;box-shadow:0 12px 40px #00000014;border:1px solid rgba(255,255,255,.3);animation:slideDown .5s ease-out;transition:all .3s ease}@keyframes slideDown{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.progress-container:hover{box-shadow:0 16px 50px #0000001f;transform:translateY(-2px)}.progress-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.progress-text{font-size:15px;font-weight:700;color:#1e293b;letter-spacing:.3px;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.progress-percentage{font-size:28px;font-weight:800;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;letter-spacing:-.5px;animation:countUp 1s ease-out}@keyframes countUp{0%{opacity:0;transform:scale(.5)}to{opacity:1;transform:scale(1)}}.progress-bar{width:100%;height:16px;background:linear-gradient(135deg,#f1f5f9 0%,#e2e8f0 100%);border-radius:50px;overflow:hidden;position:relative;box-shadow:inset 0 2px 8px #0000001a}.progress-fill{height:100%;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);border-radius:50px;transition:width .8s cubic-bezier(.4,0,.2,1);position:relative;overflow:hidden;box-shadow:0 4px 12px #667eea66}.progress-fill[style*="100%"]{animation:completeGlow 2s ease-in-out infinite}@keyframes completeGlow{0%,to{box-shadow:0 4px 12px #667eea66}50%{box-shadow:0 4px 20px #667eea99,0 0 30px #667eea66}}.progress-container.complete{position:relative}.progress-container.complete:before{content:"🎉";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:100px;opacity:0;animation:celebrationPop 1s ease-out;pointer-events:none}@keyframes celebrationPop{0%{opacity:0;transform:translate(-50%,-50%) scale(0)}50%{opacity:1;transform:translate(-50%,-50%) scale(1.5)}to{opacity:0;transform:translate(-50%,-50%) scale(2)}}.dark-mode .progress-container{background:rgba(30,41,59,.9);border-color:#ffffff1a}.dark-mode .progress-text{color:#f1f5f9;background:linear-gradient(135deg,#818cf8 0%,#c084fc 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.dark-mode .progress-percentage{background:linear-gradient(135deg,#818cf8 0%,#c084fc 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.dark-mode .progress-bar{background:linear-gradient(135deg,#1e293b 0%,#0f172a 100%);box-shadow:inset 0 2px 8px #0000004d}.dark-mode .progress-fill{background:linear-gradient(135deg,#818cf8 0%,#c084fc 100%);box-shadow:0 4px 12px #818cf866}.dark-mode .progress-fill[style*="100%"]{animation:completeGlowDark 2s ease-in-out infinite}@keyframes completeGlowDark{0%,to{box-shadow:0 4px 12px #818cf866}50%{box-shadow:0 4px 20px #818cf899,0 0 30px #818cf866}}.progress-milestones{display:flex;justify-content:space-between;margin-top:12px;padding:0 4px}.milestone{font-size:11px;font-weight:600;color:#94a3b8;text-transform:uppercase;letter-spacing:.5px}.milestone.reached{color:#667eea;font-weight:700}.dark-mode .milestone{color:#475569}.dark-mode .milestone.reached{color:#818cf8}@media (max-width: 768px){.progress-container{padding:20px 24px;margin-bottom:24px}.progress-header{margin-bottom:14px}.progress-text{font-size:14px}.progress-percentage{font-size:24px}.progress-bar{height:14px}}@media (max-width: 480px){.progress-container{padding:16px 20px;margin-bottom:20px}.progress-text{font-size:13px}.progress-percentage{font-size:20px}.progress-bar{height:12px}}.roadmap-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.7);display:flex;justify-content:center;align-items:center;z-index:1000;animation:fadeIn .2s}.roadmap-modal{background:white;border-radius:16px;max-width:700px;width:90%;max-height:80vh;display:flex;flex-direction:column;box-shadow:0 20px 60px #0000004d;animation:slideUp .3s ease-out}@keyframes slideUp{0%{opacity:0;transform:translateY(40px)}to{opacity:1;transform:translateY(0)}}.roadmap-header{padding:24px 32px;border-bottom:2px solid #e2e8f0;display:flex;justify-content:space-between;align-items:center}.roadmap-header h2{margin:0;font-size:24px;color:#1e293b}.close-button{background:none;border:none;font-size:32px;color:#64748b;cursor:pointer;width:40px;height:40px;display:flex;align-items:center;justify-content:center;border-radius:8px;transition:all .2s}.close-button:hover{background:#f1f5f9;color:#1e293b}.roadmap-summary{display:flex;gap:16px;padding:24px 32px;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%)}.summary-stat{flex:1;text-align:center;color:#fff}.stat-number{display:block;font-size:32px;font-weight:700;margin-bottom:4px}.stat-label{display:block;font-size:14px;opacity:.9}.roadmap-lessons{overflow-y:auto;padding:16px;flex:1}.roadmap-lesson{display:flex;align-items:center;gap:16px;padding:16px;margin-bottom:8px;background:white;border:2px solid #e2e8f0;border-radius:12px;cursor:pointer;transition:all .2s}.roadmap-lesson:hover{border-color:#667eea;transform:translate(4px);box-shadow:0 4px 12px #667eea26}.roadmap-lesson.current{border-color:#3b82f6;background:#eff6ff}.roadmap-lesson.completed{border-color:#10b981;background:#f0fdf4}.lesson-status{flex-shrink:0}.status-icon{width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:16px}.status-icon.completed{background:#10b981;color:#fff}.status-icon.current{background:#3b82f6;color:#fff}.status-icon.pending{background:#e2e8f0;color:#64748b}.lesson-info{flex:1}.lesson-title{font-size:16px;font-weight:600;color:#1e293b;margin-bottom:4px}.lesson-meta{font-size:14px;color:#64748b}.dark-mode .roadmap-modal{background:#1e293b}.dark-mode .roadmap-header{border-bottom-color:#334155}.dark-mode .roadmap-header h2{color:#f1f5f9}.dark-mode .close-button{color:#94a3b8}.dark-mode .close-button:hover{background:#334155;color:#f1f5f9}.dark-mode .roadmap-lesson{background:#0f172a;border-color:#334155}.dark-mode .roadmap-lesson:hover{border-color:#667eea;background:#1e293b}.dark-mode .roadmap-lesson.current{background:#1e3a8a;border-color:#3b82f6}.dark-mode .roadmap-lesson.completed{background:#064e3b;border-color:#10b981}.dark-mode .lesson-title{color:#f1f5f9}.dark-mode .lesson-meta{color:#94a3b8}@media (max-width: 640px){.roadmap-modal{width:95%;max-height:90vh}.roadmap-header{padding:16px 20px}.roadmap-header h2{font-size:20px}.roadmap-summary{padding:16px 20px}.stat-number{font-size:24px}.stat-label{font-size:12px}.roadmap-lessons,.roadmap-lesson{padding:12px}.lesson-title{font-size:14px}.lesson-meta{font-size:12px}}.App{min-height:100vh;background:linear-gradient(-45deg,#e0e7ff,#f3e8ff,#fce7f3,#e0f2fe);background-size:400% 400%;animation:gradientFlow 20s ease infinite}@keyframes gradientFlow{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}.app-header{background:rgba(255,255,255,.8);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);box-shadow:0 8px 32px #00000014;border-bottom:1px solid rgba(255,255,255,.3);position:sticky;top:0;z-index:100;transition:all .3s ease}.app-header:hover{box-shadow:0 12px 40px #0000001f}.header-content{max-width:1400px;margin:0 auto;padding:24px 32px;display:flex;justify-content:space-between;align-items:center}.app-title{font-size:26px;font-weight:800;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin:0;display:flex;align-items:center;gap:12px;letter-spacing:-.5px;transition:transform .3s ease}.app-title:hover{transform:scale(1.02)}.title-icon{font-size:32px;animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.1)}}.header-stats{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.user-email{font-size:14px;color:#475569;font-weight:600;padding:10px 20px;background:rgba(241,245,249,.8);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:50px;border:1px solid rgba(226,232,240,.5);transition:all .3s ease}.user-email:hover{background:rgba(226,232,240,1);transform:translateY(-2px);box-shadow:0 4px 12px #0000001a}.stat-badge{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);color:#fff;padding:10px 20px;border-radius:50px;font-size:14px;font-weight:700;box-shadow:0 8px 20px #667eea4d;transition:all .3s cubic-bezier(.4,0,.2,1);letter-spacing:.3px}.stat-badge:hover{transform:translateY(-3px);box-shadow:0 12px 28px #667eea66}.guest-badge{font-size:14px;color:#92400e;font-weight:700;padding:10px 20px;background:linear-gradient(135deg,#fef3c7 0%,#fde68a 100%);border-radius:50px;border:2px solid #fbbf24;box-shadow:0 4px 12px #fbbf2433;transition:all .3s ease}.guest-badge:hover{transform:translateY(-2px);box-shadow:0 6px 16px #fbbf244d}.icon-button{background:rgba(241,245,249,.8);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(226,232,240,.5);width:44px;height:44px;border-radius:12px;font-size:20px;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);display:flex;align-items:center;justify-content:center;box-shadow:0 4px 12px #0000000d}.icon-button:hover{background:white;transform:translateY(-3px) rotate(5deg);box-shadow:0 8px 20px #0000001f}.icon-button:active{transform:translateY(-1px)}.roadmap-button{background:linear-gradient(135deg,#3b82f6 0%,#2563eb 100%);color:#fff;border:none;padding:10px 24px;border-radius:12px;font-size:14px;font-weight:600;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);white-space:nowrap;box-shadow:0 8px 20px #3b82f64d;letter-spacing:.3px}.roadmap-button:hover{background:linear-gradient(135deg,#2563eb 0%,#1d4ed8 100%);transform:translateY(-3px);box-shadow:0 12px 28px #3b82f666}.logout-button{background:linear-gradient(135deg,#ef4444 0%,#dc2626 100%);color:#fff;border:none;padding:10px 20px;border-radius:12px;font-size:14px;font-weight:600;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);box-shadow:0 8px 20px #ef44444d}.logout-button:hover{background:linear-gradient(135deg,#dc2626 0%,#b91c1c 100%);transform:translateY(-3px);box-shadow:0 12px 28px #ef444466}.app-container{max-width:1400px;margin:0 auto;padding:32px}.loading-screen{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100vh;color:#1e293b}.loader{width:60px;height:60px;border:6px solid rgba(102,126,234,.2);border-top-color:#667eea;border-radius:50%;animation:spin 1s cubic-bezier(.5,0,.5,1) infinite;box-shadow:0 4px 20px #667eea4d}.loading-screen p{margin-top:24px;font-size:18px;font-weight:600;color:#1e293b;animation:pulse 2s ease-in-out infinite}.error-screen{display:flex;justify-content:center;align-items:center;min-height:100vh;padding:24px}.error-box{background:white;padding:48px;border-radius:24px;box-shadow:0 20px 60px #00000026;max-width:500px;text-align:center;border:1px solid rgba(0,0,0,.05)}.error-box h2{color:#1e293b;margin-bottom:16px;font-size:28px;font-weight:800}.error-box p{color:#64748b;margin-bottom:12px;line-height:1.7;font-size:16px}.error-hint{background:linear-gradient(135deg,#f1f5f9 0%,#e2e8f0 100%);padding:16px;border-radius:12px;font-size:14px;font-family:Consolas,Monaco,Courier New,monospace;font-weight:500;border:2px solid #cbd5e1}.error-box code{background:#1e293b;color:#10b981;padding:12px 20px;border-radius:8px;display:inline-block;margin-top:16px;font-size:14px;font-weight:600}.btn-retry{margin-top:24px;background:linear-gradient(135deg,#3b82f6 0%,#2563eb 100%);color:#fff;border:none;padding:14px 32px;border-radius:12px;font-size:15px;font-weight:600;cursor:pointer;transition:all .3s ease;box-shadow:0 8px 20px #3b82f64d}.btn-retry:hover{background:linear-gradient(135deg,#2563eb 0%,#1d4ed8 100%);transform:translateY(-3px);box-shadow:0 12px 28px #3b82f666}.dark-mode{--bg-primary: #0f172a;--bg-secondary: #1e293b;--bg-tertiary: #334155;--text-primary: #f1f5f9;--text-secondary: #cbd5e1;--text-tertiary: #94a3b8;--border-primary: #334155;--border-secondary: #475569}.dark-mode .App{background:linear-gradient(-45deg,#0f172a,#1e293b,#312e81,#1e3a8a);background-size:400% 400%}.dark-mode .app-header{background:rgba(30,41,59,.8);border-bottom:1px solid rgba(255,255,255,.1)}.dark-mode .app-title{background:linear-gradient(135deg,#818cf8 0%,#c084fc 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.dark-mode .user-email{background:rgba(51,65,85,.8);color:var(--text-secondary);border-color:#47556980}.dark-mode .user-email:hover{background:var(--bg-tertiary)}.dark-mode .guest-badge{background:linear-gradient(135deg,#422006 0%,#713f12 100%);border-color:#f59e0b;color:#fbbf24}.dark-mode .icon-button{background:rgba(51,65,85,.8);border-color:#47556980}.dark-mode .icon-button:hover{background:var(--bg-tertiary)}.dark-mode .loading-screen{color:var(--text-primary)}.dark-mode .loader{border-color:#818cf833;border-top-color:#818cf8}.dark-mode .loading-screen p{color:var(--text-primary)}.dark-mode .error-screen .error-box{background:var(--bg-secondary);color:var(--text-primary);border-color:var(--border-primary)}.dark-mode .error-screen h2{color:var(--text-primary)}.dark-mode .error-hint{background:var(--bg-tertiary);color:var(--text-secondary);border-color:var(--border-secondary)}@media (max-width: 768px){.app-title{font-size:20px}.title-icon{font-size:24px}.header-content{flex-direction:column;gap:20px;padding:20px 24px}.header-stats{width:100%;justify-content:center}.user-email,.stat-badge,.guest-badge{font-size:12px;padding:8px 16px}.icon-button{width:40px;height:40px;font-size:18px}.roadmap-button,.logout-button{font-size:13px;padding:8px 16px}.app-container{padding:20px 16px}}*{margin:0;padding:0;box-sizing:border-box}:root{--bg-primary: #ffffff;--bg-secondary: #f8fafc;--bg-tertiary: #f1f5f9;--text-primary: #1e293b;--text-secondary: #475569;--text-tertiary: #64748b;--border-primary: #e2e8f0;--border-secondary: #cbd5e1;--accent-primary: #667eea;--accent-secondary: #764ba2;--shadow-sm: 0 2px 8px rgba(0, 0, 0, .08);--shadow-md: 0 8px 24px rgba(0, 0, 0, .12);--shadow-lg: 0 20px 60px rgba(0, 0, 0, .15);--transition-fast: .2s ease;--transition-normal: .3s ease;--transition-slow: .5s ease;--bezier-smooth: cubic-bezier(.4, 0, .2, 1)}.dark-mode{--bg-primary: #0f172a;--bg-secondary: #1e293b;--bg-tertiary: #334155;--text-primary: #f1f5f9;--text-secondary: #cbd5e1;--text-tertiary: #94a3b8;--border-primary: #334155;--border-secondary: #475569;--accent-primary: #818cf8;--accent-secondary: #c084fc;--shadow-sm: 0 2px 8px rgba(0, 0, 0, .3);--shadow-md: 0 8px 24px rgba(0, 0, 0, .4);--shadow-lg: 0 20px 60px rgba(0, 0, 0, .5)}html{scroll-behavior:smooth}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--text-primary);background:var(--bg-primary);line-height:1.6;overflow-x:hidden}code{font-family:SF Mono,Monaco,Consolas,Courier New,monospace}::selection{background:rgba(102,126,234,.3);color:inherit}::-moz-selection{background:rgba(102,126,234,.3);color:inherit}.dark-mode ::selection{background:rgba(129,140,248,.4)}::-webkit-scrollbar{width:12px;height:12px}::-webkit-scrollbar-track{background:var(--bg-secondary)}::-webkit-scrollbar-thumb{background:var(--border-secondary);border-radius:6px;border:2px solid var(--bg-secondary)}::-webkit-scrollbar-thumb:hover{background:var(--text-tertiary)}.text-gradient{background:linear-gradient(135deg,var(--accent-primary) 0%,var(--accent-secondary) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.glass-effect{background:rgba(255,255,255,.9);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.3)}.dark-mode .glass-effect{background:rgba(30,41,59,.9);border:1px solid rgba(255,255,255,.1)}.shadow-glow{box-shadow:0 0 30px #667eea4d}.dark-mode .shadow-glow{box-shadow:0 0 30px #818cf866}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible{outline:3px solid var(--accent-primary);outline-offset:2px}a{color:var(--accent-primary);text-decoration:none;transition:color var(--transition-fast)}a:hover{color:var(--accent-secondary)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes slideDown{0%{opacity:0;transform:translateY(-30px)}to{opacity:1;transform:translateY(0)}}@keyframes slideRight{0%{opacity:0;transform:translate(-30px)}to{opacity:1;transform:translate(0)}}@keyframes slideLeft{0%{opacity:0;transform:translate(30px)}to{opacity:1;transform:translate(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}@media print{body{background:white;color:#000}.no-print{display:none!important}}
