:root{--bg: #f4f7fb;--bg-soft: #ffffff;--card: #ffffff;--card-border: #dbe3ef;--text: #0f172a;--muted: #64748b;--primary: #4f46e5;--primary-hover: #4338ca;--primary-soft: #eef2ff;--danger: #dc2626;--danger-soft: #fef2f2;--success: #16a34a;--success-soft: #f0fdf4;--warning: #d97706;--shadow: 0 8px 30px rgba(15, 23, 42, .08);--radius: 14px}*{box-sizing:border-box}body{margin:0;font-family:Inter,system-ui,-apple-system,sans-serif;background:radial-gradient(circle at top left,rgba(79,70,229,.08),transparent 35%),radial-gradient(circle at top right,rgba(22,163,74,.06),transparent 30%),var(--bg);color:var(--text);min-height:100vh;line-height:1.5;-webkit-text-size-adjust:100%;padding-bottom:env(safe-area-inset-bottom,0)}#root{min-height:100vh}.app-shell{min-height:100vh;padding-bottom:calc(52px + env(safe-area-inset-bottom,8px))}.app{max-width:1100px;margin:0 auto;padding:20px 16px 24px;padding-left:max(16px,env(safe-area-inset-left,16px));padding-right:max(16px,env(safe-area-inset-right,16px))}.hero,.page-header{display:flex;justify-content:space-between;gap:24px;align-items:flex-start;margin-bottom:24px}.eyebrow{color:var(--primary);font-weight:600;text-transform:uppercase;letter-spacing:.08em;font-size:.75rem;margin:0 0 8px}.hero h1,.page-header h1{margin:0 0 8px;font-size:clamp(1.75rem,4vw,2.5rem);line-height:1.15}.subtitle{margin:0;color:var(--muted);max-width:640px}.stats{min-width:140px;text-align:center}.stats-label{display:block;color:var(--muted);font-size:.875rem;margin-bottom:8px}.stats strong{font-size:2rem;color:var(--primary)}.card{background:var(--card);border:1px solid var(--card-border);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow)}.toolbar{display:flex;gap:12px;margin-bottom:24px;flex-wrap:wrap}.search-input{flex:1;min-width:240px;padding:12px 16px;border-radius:12px;border:1px solid var(--card-border);background:var(--bg-soft);color:var(--text);font:inherit}.search-input:focus,.field input:focus,.field select:focus,.field textarea:focus,.typing-form input:focus,.typing-form textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #4f46e51f}.layout{display:grid;gap:24px}.vocab-form h2,.vocab-card h3{margin-top:0}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.field{display:flex;flex-direction:column;gap:8px}.field.full-width{grid-column:1 / -1}.field span{font-size:.875rem;color:var(--muted);font-weight:500}.field input,.field select,.field textarea{width:100%;padding:12px 14px;border-radius:12px;border:1px solid var(--card-border);background:var(--bg-soft);color:var(--text);font:inherit}.field textarea{resize:vertical}.form-actions,.card-actions,.practice-actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.btn{border:none;border-radius:12px;padding:10px 16px;font:inherit;font-weight:600;cursor:pointer;transition:transform .15s ease,background .15s ease,border-color .15s ease;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:6px}.btn:hover:not(:disabled){transform:translateY(-1px)}.btn:disabled{opacity:.55;cursor:not-allowed;transform:none}.btn.primary,.btn.btn-primary{background:var(--primary);color:#fff}.btn.primary:hover:not(:disabled),.btn.btn-primary:hover:not(:disabled){background:var(--primary-hover)}.btn.secondary,.btn.btn-outline{background:var(--bg-soft);color:var(--text);border:1px solid var(--card-border)}.btn.secondary:hover:not(:disabled),.btn.btn-outline:hover:not(:disabled){border-color:var(--primary);color:var(--primary)}.btn.ghost,.btn.btn-ghost{background:var(--primary-soft);color:var(--primary)}.btn.danger,.btn.btn-danger-soft{background:var(--danger-soft);color:var(--danger);border:1px solid rgba(220,38,38,.2)}.vocab-list{display:grid;gap:16px}.vocab-header{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}.badge,.badge-soft{display:inline-block;padding:4px 10px;border-radius:999px;background:var(--primary-soft);color:var(--primary);font-size:.75rem;font-weight:600}.vocab-details{display:grid;gap:12px;margin:16px 0 0}.vocab-details dt{color:var(--muted);font-size:.75rem;text-transform:uppercase;letter-spacing:.06em}.vocab-details dd{margin:4px 0 0}.phonetic{font-family:Times New Roman,serif;font-size:1.05rem;color:var(--muted)}.empty-state{text-align:center;color:var(--muted)}.muted{color:var(--muted)}.alert,.alert.success,.alert-error{padding:12px 16px;border-radius:12px;margin-bottom:16px;cursor:pointer}.alert.success{background:var(--success-soft);color:#166534;border:1px solid rgba(22,163,74,.25)}.alert.error,.alert-error{background:var(--danger-soft);color:#991b1b;border:1px solid rgba(220,38,38,.2)}.error{color:var(--danger)}.section-block{display:grid;gap:16px}.section-header{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.section-header h2{margin:0 0 4px}.count-pill,.pill{padding:6px 12px;border-radius:999px;background:var(--primary-soft);color:var(--primary);font-size:.875rem;font-weight:600;white-space:nowrap}.pill-success{background:var(--success-soft);color:var(--success)}.pill-danger{background:var(--danger-soft);color:var(--danger)}.search-bar{display:grid;grid-template-columns:1.5fr 1fr 1fr auto;gap:12px;align-items:center}.search-bar select{padding:12px 14px;border-radius:12px;border:1px solid var(--card-border);background:var(--bg-soft);color:var(--text);font:inherit}.badge-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.topic-badge{background:var(--success-soft);color:var(--success)}.example-list{margin:0;padding-left:18px}.example-list li{margin-bottom:6px}.title-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.title-row h3{margin:0}.speaker-btn{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border:1px solid rgba(79,70,229,.25);border-radius:999px;background:var(--primary-soft);color:var(--primary);cursor:pointer;transition:transform .15s ease,background .15s ease;flex-shrink:0}.speaker-btn svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.speaker-btn:hover:not(:disabled){transform:scale(1.05);background:#e0e7ff}.speaker-btn:disabled{opacity:.5;cursor:default}.speaker-btn.playing{background:var(--success-soft);border-color:#16a34a4d;color:var(--success)}.form-note{margin:-4px 0 16px}.topic-card{display:flex;flex-direction:column;align-items:flex-start;gap:8px;text-align:left;text-decoration:none;color:inherit;cursor:pointer;transition:transform .15s ease,border-color .15s ease,box-shadow .15s ease}.topic-page{display:grid;gap:20px}.page-nav{margin-bottom:4px}.topic-hero{margin-bottom:0}.topic-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px}.topic-card:hover{transform:translateY(-2px);border-color:var(--primary);box-shadow:0 12px 24px #4f46e51a}.topic-detail{display:grid;gap:20px}.topic-detail-header{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}.topic-detail-header h2{margin:0}.pagination{display:flex;justify-content:center;align-items:center;gap:16px}.page-indicator{color:var(--muted);font-weight:600}.hero-actions{display:flex;flex-direction:column;gap:12px;align-items:stretch}.practice-link{text-align:center}.practice-page,.practice-session,.practice-setup{display:grid;gap:20px}.period-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.period-card{display:flex;flex-direction:column;gap:8px;align-items:flex-start;padding:16px;border-radius:var(--radius);border:1px solid var(--card-border);background:var(--bg-soft);color:inherit;cursor:pointer;text-align:left;transition:border-color .15s ease,background .15s ease}.period-card:hover{border-color:var(--primary)}.period-card.active{border-color:var(--primary);background:var(--primary-soft)}.level-preview h3{margin:0 0 12px}.level-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.level-chip{padding:12px;border-radius:12px;border:1px solid var(--card-border);background:var(--bg-soft)}.level-chip strong{display:block;margin-bottom:4px}.level-chip span{color:var(--muted);font-size:.875rem}.level-chip.basic{border-color:#4f46e540}.level-chip.intermediate{border-color:#d9770640}.level-chip.advanced{border-color:#16a34a40}.practice-status{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}.status-stats{display:flex;flex-wrap:wrap;gap:8px}.progress-track{height:8px;border-radius:999px;background:#e2e8f0;overflow:hidden}.progress-fill{height:100%;background:linear-gradient(90deg,var(--primary),#6366f1);border-radius:999px;transition:width .35s ease}.level-progress{display:grid;grid-template-columns:repeat(9,minmax(0,1fr));gap:6px}.level-step{padding:8px 4px;border-radius:10px;text-align:center;font-size:.8rem;font-weight:600;border:1px solid var(--card-border);color:var(--muted);background:var(--bg-soft)}.level-step.current{border-color:var(--primary);color:var(--primary);background:var(--primary-soft)}.level-step.done{border-color:#16a34a59;color:var(--success);background:var(--success-soft)}.practice-game{display:grid;gap:20px}.practice-game-header{display:flex;justify-content:space-between;align-items:center}.question-box{padding:20px;border-radius:var(--radius);background:#f8fafc;border:1px solid var(--card-border)}.flashcard{position:relative;min-height:260px;border:none;background:transparent;cursor:pointer;perspective:1000px;padding:0;width:100%}.flashcard-face{min-height:260px;padding:28px;border-radius:var(--radius);border:1px solid var(--card-border);background:linear-gradient(180deg,#fff,#f8fafc);display:flex;flex-direction:column;justify-content:center;gap:12px;box-shadow:var(--shadow)}.flashcard:not(.flipped) .back,.flashcard.flipped .front{display:none}.flashcard-label{margin:0;color:var(--primary);font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;font-weight:600}.flashcard-word-row{display:flex;align-items:center;gap:10px}.flashcard-word-row h3{margin:0;font-size:1.75rem}.flashcard-meaning{margin:0;font-size:1.4rem}.example-preview{margin:0;font-style:italic}.example-box{margin-top:12px;padding:16px;border-radius:12px;background:var(--primary-soft);border:1px solid rgba(79,70,229,.15)}.example-sentence{margin:8px 0 0;font-size:1.15rem;line-height:1.6}.word-highlight{background:#fde68a;color:#92400e;padding:0 4px;border-radius:4px;font-weight:700}.typing-form{display:flex;gap:12px;flex-wrap:wrap}.typing-form input,.typing-form textarea{flex:1;min-width:220px;padding:12px 14px;border-radius:12px;border:1px solid var(--card-border);background:var(--bg-soft);color:var(--text);font:inherit}.typing-form textarea{min-height:88px;resize:vertical}.choice-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.choice-btn{padding:16px;border-radius:var(--radius);border:1px solid var(--card-border);background:var(--bg-soft);color:var(--text);font:inherit;text-align:left;cursor:pointer;transition:border-color .15s ease,background .15s ease}.choice-btn:hover:not(:disabled){border-color:var(--primary);background:var(--primary-soft)}.choice-btn.correct{border-color:#16a34a73;background:var(--success-soft)}.feedback{margin:0;padding:12px 14px;border-radius:12px}.feedback.correct{background:var(--success-soft);color:#166534;border:1px solid rgba(22,163,74,.2)}.feedback.wrong{background:var(--danger-soft);color:#991b1b;border:1px solid rgba(220,38,38,.2)}.score-box{padding:16px;border-radius:var(--radius);border:1px solid var(--card-border)}.score-box.correct{background:var(--success-soft);border-color:#16a34a40}.score-box.wrong{background:var(--danger-soft);border-color:#dc262633}.score-box strong{display:block;margin-bottom:6px}.match-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.match-card{min-height:92px;padding:12px;border-radius:12px;border:1px solid var(--card-border);background:var(--primary-soft);color:var(--text);font:inherit;font-weight:600;cursor:pointer;transition:transform .15s ease,border-color .15s ease}.match-card:hover:not(:disabled){transform:translateY(-1px)}.match-card.open{background:var(--bg-soft)}.match-card.open.en{border-color:#4f46e566}.match-card.open.vi{border-color:#16a34a66}.match-card.wrong{border-color:#dc262673;background:var(--danger-soft)}.practice-complete{display:grid;gap:16px}.complete-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.complete-stats div{padding:16px;border-radius:var(--radius);border:1px solid var(--card-border);text-align:center;background:#f8fafc}.complete-stats strong{display:block;font-size:1.8rem;margin-bottom:4px;color:var(--primary)}.complete-stats span{color:var(--muted);font-size:.875rem}.hint-btn{justify-self:start}.hint-box{margin:0;padding:12px 14px;border-radius:12px;background:var(--primary-soft);border:1px solid rgba(79,70,229,.15);color:var(--text)}.listen-box{text-align:center}.listen-play-btn{margin-top:8px}.flashcard-meanings{text-align:left}.muted-list{color:var(--muted)}.speak-controls{display:grid;gap:16px}.recording-indicator{margin:0;font-weight:600;color:var(--danger)}.transcript-box{padding:16px;border-radius:var(--radius);background:#f8fafc;border:1px solid var(--card-border)}.practice-nav-bar{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:16px 20px;border-radius:var(--radius);background:var(--card);border:1px solid var(--card-border);box-shadow:var(--shadow);position:sticky;bottom:16px;z-index:10}.practice-nav-bar .btn-outline:first-child{margin-right:auto}@media (max-width: 768px){.hero,.page-header{flex-direction:column}.form-grid{grid-template-columns:1fr}.vocab-header{flex-direction:column}.search-bar{grid-template-columns:1fr}.period-grid,.level-list,.level-progress,.choice-grid,.match-grid,.complete-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.level-progress{grid-template-columns:repeat(5,minmax(0,1fr))}.hero-actions{width:100%}.practice-status,.practice-nav-bar{flex-direction:column}.practice-nav-bar .btn-outline:first-child{margin-right:0}.landing-grid,.common-topic-grid,.calendar-picker{grid-template-columns:1fr}}.app:has(.landing-page){max-width:none;padding:0}.app>.landing-page{padding-left:max(16px,env(safe-area-inset-left,16px));padding-right:max(16px,env(safe-area-inset-right,16px))}.landing-page{position:relative;min-height:100vh;padding:48px 24px 64px;background:radial-gradient(circle at 10% 20%,rgba(255,255,255,.55),transparent 40%),radial-gradient(circle at 90% 10%,rgba(251,207,232,.8),transparent 35%),linear-gradient(145deg,#fce7f3,#fbcfe8,#f9a8d4 70%,#fdf2f8);overflow:hidden}.landing-bg-shapes .shape{position:absolute;border-radius:999px;filter:blur(40px);opacity:.45;pointer-events:none}.shape-1{width:280px;height:280px;background:#fff;top:-60px;right:10%}.shape-2{width:220px;height:220px;background:#ec4899;bottom:10%;left:-40px}.shape-3{width:180px;height:180px;background:#fda4af;top:40%;right:-30px}.landing-header{position:relative;z-index:1;text-align:center;max-width:680px;margin:0 auto 40px}.landing-eyebrow{color:#be185d;font-weight:700;text-transform:uppercase;letter-spacing:.1em;font-size:.8rem;margin:0 0 12px}.landing-header h1{margin:0 0 12px;font-size:clamp(2rem,5vw,3rem);color:#831843;line-height:1.1}.landing-subtitle{margin:0;color:#9d174d;font-size:1.05rem;line-height:1.6}.landing-grid{position:relative;z-index:1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;max-width:920px;margin:0 auto}.landing-card{display:flex;align-items:center;gap:16px;padding:20px 22px;border-radius:20px;background:#ffffffd1;border:1px solid rgba(255,255,255,.9);box-shadow:0 12px 40px #be185d1f;text-decoration:none;color:inherit;transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.landing-card:hover{transform:translateY(-4px) scale(1.01);box-shadow:0 20px 50px #be185d33;border-color:var(--card-accent, #ec4899)}.landing-card-icon{font-size:2rem;width:56px;height:56px;display:flex;align-items:center;justify-content:center;border-radius:16px;background:linear-gradient(135deg,#ffffffe6,#fbcfe899);flex-shrink:0}.landing-card-body h2{margin:0 0 4px;font-size:1.15rem;color:#831843}.landing-card-body p{margin:0;color:#9d174d;font-size:.9rem;line-height:1.45}.landing-card-arrow{margin-left:auto;color:#db2777;font-size:1.25rem;font-weight:700}.landing-footer{position:relative;z-index:1;text-align:center;margin-top:36px}.btn-landing-practice{background:linear-gradient(135deg,#db2777,#ec4899);color:#fff;padding:14px 28px;border-radius:999px;font-size:1rem;box-shadow:0 10px 30px #db277759}.btn-landing-practice:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 14px 36px #db277773}.sub-page{display:grid;gap:20px}.learn-section-content{display:grid;gap:16px}.learn-section-actions{display:flex;gap:12px}.feature-card h2,.feature-card h3{margin-top:0}.feature-steps{margin:0;padding-left:20px;line-height:1.7}.feature-steps li{margin-bottom:8px}.grammar-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.grammar-item{padding:14px;border-radius:12px;background:#f8fafc;border:1px solid var(--card-border)}.common-topic-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.common-topic-card{text-decoration:none;color:inherit;display:flex;flex-direction:column;gap:6px;transition:transform .15s ease,border-color .15s ease}.common-topic-card:hover{transform:translateY(-2px);border-color:#ec4899}.common-topic-emoji{font-size:1.75rem}.topic-hint{font-size:.75rem;color:#db2777}.random-toolbar{display:flex;gap:12px}.time-mode-tabs{display:flex;gap:8px;margin-bottom:16px}.time-mode-tab{padding:8px 16px;border-radius:999px;border:1px solid var(--card-border);background:var(--bg-soft);font:inherit;font-weight:600;cursor:pointer}.time-mode-tab.active{background:var(--primary-soft);border-color:var(--primary);color:var(--primary)}.calendar-picker{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-bottom:8px}.calendar-hint{grid-column:1 / -1;margin:0}.homework-section{display:grid;gap:16px}.homework-header h2{margin:8px 0 4px}.homework-actions{display:grid;gap:16px}.homework-preview,.homework-saved-video{width:100%;max-width:520px;border-radius:var(--radius);background:#000}.upload-row{display:flex;flex-wrap:wrap;gap:12px;align-items:center}.homework-video-list{display:grid;gap:16px}.homework-video-item{display:grid;gap:10px;padding:12px;border-radius:var(--radius);border:1px solid var(--card-border);background:#f8fafc}.small{font-size:.85rem}.lang-fab{position:fixed;right:max(12px,env(safe-area-inset-right,12px));bottom:max(12px,env(safe-area-inset-bottom,12px));z-index:1000;display:inline-flex;gap:2px;padding:3px;border-radius:999px;background:#ffffffeb;border:1px solid var(--card-border);box-shadow:0 4px 16px #0f172a1f;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.lang-fab-btn{border:none;border-radius:999px;padding:4px 8px;font-size:.68rem;font-weight:700;line-height:1;cursor:pointer;background:transparent;color:var(--muted);min-width:28px}.lang-fab-btn.active{background:var(--primary-soft);color:var(--primary)}.auth-page{display:grid;place-items:center;min-height:calc(100dvh - 72px);padding:16px max(12px,env(safe-area-inset-left,12px)) 24px max(12px,env(safe-area-inset-right,12px))}.auth-card{width:min(100%,420px)}.auth-form{display:grid;gap:14px;margin-top:16px}.password-input-wrap{position:relative;display:flex;align-items:center}.password-input-wrap input{width:100%;padding-right:4.5rem}.password-toggle{position:absolute;right:8px;border:0;background:transparent;color:var(--primary);font-size:.82rem;font-weight:600;cursor:pointer;padding:6px 8px}.password-toggle:hover{color:var(--primary-dark, #1d4ed8)}.auth-switch{margin:16px 0;text-align:center}.auth-divider{display:flex;align-items:center;gap:12px;margin:18px 0 4px;color:var(--muted);font-size:.85rem}.auth-divider:before,.auth-divider:after{content:"";flex:1;height:1px;background:var(--border)}.google-login-wrap{display:flex;flex-direction:column;align-items:stretch;gap:8px;margin-top:12px}.btn-google{display:inline-flex;align-items:center;justify-content:center;gap:10px;background:#fff;color:#1f2937;border:1px solid var(--border);min-height:44px}.btn-google:disabled{opacity:.72;cursor:not-allowed}.google-icon{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:50%;background:#4285f4;color:#fff;font-weight:700;font-size:.85rem}.google-setup-hint{margin:0;font-size:.78rem;line-height:1.4;text-align:center}.auth-remember{display:flex;align-items:center;gap:8px;font-size:.92rem;color:var(--text);cursor:pointer}.auth-remember input{width:16px;height:16px;accent-color:var(--primary)}.mail-inbox-hint{margin:0 0 12px;font-size:.88rem;line-height:1.5;text-align:center}.mail-inbox-hint a{color:var(--primary);word-break:break-all}.alert.success{background:#ecfdf5;color:#047857;border:1px solid #a7f3d0}.auth-loading{margin:40px auto;max-width:420px}.full-width{width:100%}.landing-auth-actions{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;align-items:center}.landing-welcome-banner{width:100%;margin:0 0 4px;padding:12px 16px;border-radius:999px;background:#ffffffd1;color:#9d174d;font-weight:700;font-size:clamp(1rem,3.8vw,1.15rem);text-align:center;box-shadow:0 8px 24px #be185d1f}.landing-user-email{word-break:break-word;text-align:center}body.welcome-open{overflow:hidden}.welcome-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;display:grid;place-items:center;padding:max(16px,env(safe-area-inset-top,16px)) max(16px,env(safe-area-inset-right,16px)) max(16px,env(safe-area-inset-bottom,16px)) max(16px,env(safe-area-inset-left,16px));background:#080c1c47;animation:welcomeOverlayIn .35s ease}.welcome-overlay--closing{animation:welcomeOverlayOut .55s ease forwards}.welcome-overlay--closing .welcome-card{animation:welcomeCardOut .55s ease forwards}.welcome-fireworks{position:fixed;top:0;right:0;bottom:0;left:0;width:100vw;height:100vh;pointer-events:none;z-index:0}.welcome-card{position:relative;z-index:2;width:min(100%,460px);text-align:center;padding:28px 24px;animation:welcomePop .55s ease;background:#fffffff5;box-shadow:0 24px 80px #0f172a47}.welcome-eyebrow{margin:0 0 10px;color:var(--primary);font-weight:700;text-transform:uppercase;letter-spacing:.08em;font-size:.78rem}.welcome-card h2{margin:0 0 10px;font-size:clamp(1.45rem,5vw,2rem);line-height:1.25;color:#831843}.welcome-title-glow{animation:welcomeGlow 2.4s ease-in-out infinite}.welcome-subtitle{margin:0 0 18px;color:var(--muted)}@keyframes welcomePop{0%{opacity:0;transform:translateY(18px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes welcomeGlow{0%,to{text-shadow:0 0 12px rgba(236,72,153,.35);transform:scale(1)}50%{text-shadow:0 0 22px rgba(236,72,153,.75),0 0 36px rgba(244,114,182,.45);transform:scale(1.02)}}@keyframes welcomeOverlayIn{0%{opacity:0}to{opacity:1}}@keyframes welcomeOverlayOut{to{opacity:0}}@keyframes welcomeCardOut{to{opacity:0;transform:translateY(-12px) scale(.96)}}@media (max-width: 1024px){.landing-grid,.level-list,.grammar-grid,.common-topic-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 640px){.app{padding-top:12px}.auth-page{min-height:calc(100dvh - 56px);align-content:start;padding-top:8px}.auth-card{width:100%}.password-input-wrap input{padding-right:3.75rem;font-size:16px}.password-toggle{font-size:.74rem;padding:4px 6px;min-height:44px}.field input,.field select,.field textarea{font-size:16px}.welcome-card{padding:22px 18px}.landing-auth-actions{flex-direction:column;width:100%}.landing-auth-actions .btn,.landing-auth-actions .landing-welcome-banner,.landing-user-email{width:100%}.google-login-wrap iframe,.google-login-wrap>div{width:100%!important;max-width:100%}.hero,.page-header,.practice-status,.section-header,.topic-detail-header{flex-direction:column;align-items:stretch}.hero-actions,.status-stats{width:100%}.card{padding:16px}.landing-page{padding:32px 16px 48px}.landing-grid{grid-template-columns:1fr;gap:12px}.landing-card{padding:16px}.landing-card-icon{width:48px;height:48px;font-size:1.5rem}.period-grid,.level-list,.level-progress,.choice-grid,.match-grid,.complete-stats,.grammar-grid,.common-topic-grid,.calendar-picker{grid-template-columns:1fr}.level-progress{grid-template-columns:repeat(5,minmax(0,1fr))}.search-bar,.form-grid{grid-template-columns:1fr}.practice-nav-bar{flex-direction:column;position:sticky;bottom:56px}.typing-form{flex-direction:column}.typing-form input,.typing-form textarea,.typing-form button{width:100%}.upload-row{flex-direction:column;align-items:stretch}.upload-row input[type=file]{width:100%}.homework-preview,.homework-saved-video{max-width:100%}.pagination{flex-direction:column;gap:10px}.flashcard-face{min-height:220px;padding:20px}.match-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.btn,.btn.btn-primary,.btn.btn-outline{min-height:44px}.lang-fab-btn{min-height:28px;min-width:32px}}@media (max-width: 380px){.level-progress{grid-template-columns:repeat(3,minmax(0,1fr))}.hero h1,.page-header h1,.landing-header h1{font-size:1.55rem}.welcome-card h2{font-size:1.35rem}.landing-welcome-banner{border-radius:18px;font-size:.98rem}.lang-fab{right:max(8px,env(safe-area-inset-right,8px));bottom:max(8px,env(safe-area-inset-bottom,8px))}}
