:root{--sky-1:#8fd8ff;--sky-2:#d9f3ff;--ink:#2b2140;--muted:#6d6585;--card:#fff;--edge:#2b2140;--primary:#ff8a3d;--primary-d:#d7621a;--success:#3cc46b;--success-d:#239a4d;--warn:#ffc93c;--warn-d:#d9a114;--danger:#ff5a5f;--danger-d:#cc3a3f;--blue:#3fb6ff;--radius:22px;--shadow:0 6px 0 #2b21402e;color:var(--ink);-webkit-tap-highlight-color:transparent;font-family:"Baloo 2",Nunito,system-ui,sans-serif}*{box-sizing:border-box}body{background:radial-gradient(ellipse 140px 50px at 12% 12%, #fff 60%, transparent 62%), radial-gradient(ellipse 110px 40px at 85% 7%, #fff 60%, transparent 62%), radial-gradient(ellipse 90px 32px at 70% 22%, #fffc 60%, transparent 62%), linear-gradient(180deg, var(--sky-1) 0%, var(--sky-2) 55%, #fff6e0 100%);-webkit-user-select:none;user-select:none;background-attachment:fixed;min-height:100dvh;margin:0}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none}input{font:inherit}h1,h2{margin:0;line-height:1.1}p{margin:.4rem 0}.screen{max-width:560px;min-height:100dvh;padding:max(16px, env(safe-area-inset-top)) 16px calc(24px + env(safe-area-inset-bottom));flex-direction:column;gap:14px;margin:0 auto;display:flex}.screen.center{text-align:center;justify-content:center;align-items:center}.center{text-align:center;justify-content:center}.muted{color:var(--muted)}.small{font-size:.88rem}.grow{flex:1}.row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.row.tight{flex-wrap:nowrap;gap:6px}.col{flex-direction:column;gap:10px;width:100%;display:flex}.ok{color:var(--success-d);font-weight:700}.bad{color:var(--danger-d);font-weight:700}.card{background:var(--card);border:3px solid var(--edge);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px}button.card{text-align:left;transition:transform 80ms,box-shadow 80ms}button.card:active,.btn:active:not(:disabled){transform:translateY(4px);box-shadow:0 2px #2b21402e}.pop{animation:.35s cubic-bezier(.2,1.6,.5,1) both pop}.grid>.pop:nth-child(2){animation-delay:50ms}.grid>.pop:nth-child(3){animation-delay:.1s}.grid>.pop:nth-child(4){animation-delay:.15s}@keyframes pop{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:none}}.btn{--c:#fff;--cd:#c9c2dc;background:var(--c);border:3px solid var(--edge);box-shadow:0 5px 0 var(--edge);border-radius:18px;padding:12px 18px;font-size:1.1rem;font-weight:800;transition:transform 80ms,box-shadow 80ms,opacity .2s}.btn:disabled{opacity:.45;cursor:default}.btn.primary{--c:var(--primary);color:#fff;text-shadow:0 2px 0 var(--primary-d)}.btn.success{--c:var(--success);color:#fff;text-shadow:0 2px 0 var(--success-d)}.btn.warn{--c:var(--warn)}.btn.danger{--c:var(--danger);color:#fff}.btn.ghost{--c:#fff}.btn.big{padding:16px 28px;font-size:1.4rem}.btn.tiny{box-shadow:0 3px 0 var(--edge);border-width:2px;padding:4px 12px;font-size:.85rem}.btn-round{border:3px solid var(--edge);width:44px;height:44px;box-shadow:0 4px 0 var(--edge);background:#fff;border-radius:50%;flex:none;place-items:center;font-size:1.3rem;font-weight:800;display:grid}.btn-round.ghost{visibility:hidden}.btn-round:active{box-shadow:0 1px 0 var(--edge);transform:translateY(3px)}.link-btn{color:var(--muted);text-underline-offset:3px;padding:6px;font-weight:700;text-decoration:underline}.parent-link{align-self:center;gap:12px;margin-top:auto;display:flex}.parent-link a{color:var(--muted)}.pill{border:3px solid var(--edge);white-space:nowrap;box-shadow:0 3px 0 var(--edge);background:#fff;border-radius:999px;padding:2px 12px;font-weight:800}.pill.fire{background:#fff1d6}.badge{background:var(--warn);border:2px solid var(--edge);border-radius:999px;padding:0 8px;font-size:.75rem;font-weight:800}.hero{text-align:center;padding:18px 0 6px}.logo{color:#fff;letter-spacing:.5px;-webkit-text-stroke:3px var(--edge);paint-order:stroke fill;text-shadow:0 5px 0 var(--edge);font-size:2.8rem;font-weight:800}.logo span{color:var(--warn)}.hero-sub{font-size:1.25rem;font-weight:700}.grid{gap:12px;display:grid}.profiles-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}.profile-card{flex-direction:column;align-items:center;gap:2px;display:flex;text-align:center!important}.profile-card.add{background:#ffffffb3;border-style:dashed}.profile-name{font-size:1.25rem;font-weight:800}.avatar{border:3px solid var(--edge);background:#fff4d9;border-radius:50%;place-items:center;width:72px;height:72px;font-size:2.6rem;display:grid}.avatar.big{width:104px;height:104px;margin:0 auto;font-size:4rem}.avatar.sm{width:46px;height:46px;font-size:1.6rem}.form-card{flex-direction:column;gap:8px;display:flex}.field-label{margin-top:6px;font-weight:800}.input{border:3px solid var(--edge);border-radius:14px;outline:none;width:100%;padding:10px 14px;font-size:1.2rem;font-weight:700}.input:focus{border-color:var(--blue)}.chips{flex-wrap:wrap;gap:8px;display:flex}.chip{border:3px solid var(--edge);background:#fff;border-radius:14px;min-width:46px;height:46px;padding:0 10px;font-size:1.15rem;font-weight:800}.chip.emoji{font-size:1.6rem}.chip.on{background:var(--warn);box-shadow:0 3px 0 var(--edge);transform:translateY(-2px)}.home-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.me{text-align:left;align-items:center;gap:8px;display:flex}.me b{font-size:1.2rem;display:block}.me small{font-size:.8rem;display:block}.review-card{background:linear-gradient(135deg,#ffe08a,#ffb86b);align-items:center;gap:12px;display:flex}.review-card.done{background:#eafbe9}.review-card b{font-size:1.2rem;display:block}.review-card small{display:block}.review-card>span:nth-child(2){flex:1}.review-icon{font-size:2.4rem}.go{background:var(--edge);color:#fff;border-radius:50%;flex:none;place-items:center;width:36px;height:36px;font-size:.9rem;display:grid}.section-title{margin-top:6px;font-size:1.3rem;font-weight:800}.topics-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.topic-card{border-top:10px solid var(--tc);flex-direction:column;gap:2px;display:flex}.topic-icon{font-size:2.6rem}.topic-name{font-size:1.2rem;font-weight:800;line-height:1.1}.mini-progress{border:2px solid var(--edge);background:#eee8f7;border-radius:99px;height:10px;margin-top:6px;overflow:hidden}.mini-progress div{background:var(--success);border-radius:99px;height:100%}.bottom-nav{gap:10px;margin-top:auto;padding-top:10px;display:flex}.topbar,.gamebar{align-items:center;gap:10px;display:flex}.topbar-title{text-align:center;flex:1;font-size:1.4rem;font-weight:800}.topbar-right{justify-content:flex-end;min-width:44px;display:flex}.progress{border:3px solid var(--edge);background:#fff;border-radius:99px;flex:1;height:18px;overflow:hidden}.progress-fill{background:linear-gradient(90deg, var(--success), #8be36b);height:100%;transition:width .4s}.modes{flex-direction:column;gap:12px;display:flex}.mode-card{align-items:center;gap:12px;display:flex}.mode-card b{font-size:1.25rem;display:block}.mode-card small{display:block}.mode-icon{background:var(--tc,#ffe7a8);border:3px solid var(--edge);border-radius:16px;place-items:center;width:56px;height:56px;font-size:2.3rem;display:grid}.word-grid{grid-template-columns:repeat(auto-fill,minmax(100px,1fr))}.word-chip{flex-direction:column;align-items:center;padding:8px;font-weight:800;display:flex;position:relative;text-align:center!important}.word-chip.new{opacity:.75}.word-chip.learned{background:#eafbe9}.tick{color:var(--success-d);position:absolute;top:4px;right:8px}.word-img{place-items:center;line-height:1;display:grid}.word-img.lg{font-size:8rem}.word-img.md{font-size:4.6rem}.word-img.sm{font-size:2.2rem}.word-img img{object-fit:contain;width:1em;height:1em}.game{gap:12px}.flashcard{perspective:1200px;cursor:pointer;outline:none;height:min(62dvh,460px)}.flashcard-inner{width:100%;height:100%;transform-style:preserve-3d;transition:transform .55s cubic-bezier(.3,1.4,.5,1);position:relative}.flashcard.flipped .flashcard-inner{transform:rotateY(180deg)}.face{-webkit-backface-visibility:hidden;backface-visibility:hidden;border:4px solid var(--edge);box-shadow:0 8px 0 var(--edge);border-radius:28px;flex-direction:column;justify-content:center;align-items:center;gap:6px;padding:18px;display:flex;position:absolute;inset:0}.face.front{background:radial-gradient(circle at 50% 40%,#fff 0%,#fff7e0 70%)}.face.back{background:#fff;justify-content:flex-start;overflow-y:auto;transform:rotateY(180deg)}.tap-hint{color:var(--muted);font-weight:700;animation:1.4s ease-in-out infinite bob;position:absolute;bottom:16px}@keyframes bob{50%{transform:translateY(-6px)}}.fc-word{font-size:2.8rem;font-weight:800;line-height:1}.fc-vi{color:var(--muted);font-size:1.2rem;font-weight:700}.btn-speak{border:3px solid var(--edge);box-shadow:0 4px 0 var(--edge);background:#e6f6ff;border-radius:16px;align-items:center;gap:4px;padding:6px 14px;font-size:1.5rem;display:inline-flex}.btn-speak:active{box-shadow:0 1px 0 var(--edge);transform:translateY(3px)}.phrase-list{flex-direction:column;gap:8px;width:100%;margin:8px 0 0;padding:0;list-style:none;display:flex}.phrase-btn{text-align:left;background:#fff7e6;border:2px dashed #e0b56f;border-radius:14px;width:100%;padding:8px 12px;font-size:1.15rem}.phrase-btn b{color:var(--primary-d)}.answer-row{opacity:.3;gap:10px;transition:opacity .3s;display:flex}.answer-row.show{opacity:1}.listen-head{justify-content:center;align-items:center;gap:14px;margin:6px 0;display:flex}.btn-listen{background:var(--blue);border:4px solid var(--edge);width:110px;height:110px;box-shadow:0 7px 0 var(--edge);border-radius:50%;font-size:3.2rem;animation:1.8s ease-in-out infinite pulse}.btn-listen:active{box-shadow:0 2px 0 var(--edge);transform:translateY(5px)}@keyframes pulse{50%{transform:scale(1.06)}}.options-grid{grid-template-columns:1fr 1fr}.option{flex-direction:column;justify-content:center;align-items:center;gap:4px;min-height:150px;display:flex;text-align:center!important}.option-text{font-size:1.3rem;font-weight:800}.option.right,.verb.right{border-color:var(--success-d);background:#c9f5d6;animation:.5s win}.option.wrong,.verb.wrong{background:#ffd6d6;animation:.4s shake}.option.dim,.verb.dim{opacity:.45}@keyframes shake{20%,60%{transform:translate(-8px)}40%,80%{transform:translate(8px)}}@keyframes win{50%{transform:scale(1.07)}}.phrase-card{flex-direction:column;align-items:center;gap:6px;display:flex}.sentence{text-align:center;font-size:2rem;font-weight:800}.blank{border-bottom:4px dashed var(--primary);min-width:3.4em;color:var(--primary-d);background:#fff4e5;border-radius:10px 10px 0 0;padding:0 10px;display:inline-block}.blank.right{color:var(--success-d);border-color:var(--success);background:#e6f9ec}.blank.wrong{color:var(--danger-d);border-color:var(--danger);background:#ffe8e8}.verbs .verb{padding:14px;font-size:1.6rem}.loader{font-size:5rem;animation:1.4s ease-in-out infinite bob}.result-stars{gap:8px;font-size:5rem;line-height:1;display:flex}.rstar{color:#fff;-webkit-text-stroke:4px var(--edge);paint-order:stroke fill;animation:.5s cubic-bezier(.2,1.8,.5,1) forwards starIn;transform:scale(0)}.rstar.on{color:var(--warn)}.rstar:nth-child(2){margin-top:-20px;font-size:6.2rem}@keyframes starIn{to{transform:scale(1)}}.result-title{font-size:2.4rem;font-weight:800}.result-score{font-size:1.3rem;font-weight:700}.result .col{max-width:320px}.me-card{align-items:center;gap:12px;display:flex}.stats-grid{grid-template-columns:repeat(2,1fr)}.stat{text-align:center;padding:10px}.stat-icon{font-size:1.8rem}.stat-value{font-size:1.8rem;font-weight:800;line-height:1}.calendar{grid-template-columns:repeat(7,1fr);gap:6px;display:grid}.day{aspect-ratio:1;color:var(--muted);border:2px solid #2b214026;border-radius:8px;place-items:center;font-size:.8rem;font-weight:700;display:grid}.day.h0{background:#f3f0f8}.day.h1{color:var(--ink);background:#c9f0d4}.day.h2{color:var(--ink);background:#7fd99b}.day.h3{background:var(--success-d);color:#fff}.legend{justify-content:flex-end;align-items:center;gap:4px;margin-top:8px;display:flex}.legend .day{border-radius:4px;width:14px;height:14px;display:inline-block}.hard-row{align-items:center;gap:10px;padding:8px 12px;display:flex}.list{padding:4px 14px}.list-row{border-bottom:2px dashed #eee8f7;justify-content:space-between;align-items:center;gap:8px;padding:10px 0;display:flex}.list-row:last-child{border-bottom:none}.gate-q{font-size:2.4rem;font-weight:800}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}.rstar{transform:none}}
