:root{--blush: #E8CCC5;--cream: #F6E7C6;--blue: #BDCED3;--stone: #BBB9B2;--sage: #CFD4AE;--ink-s: #807E79;--paper: #E3E3E3;--ink: #43413D;--card: #FBF9F5;--card2: #F1EEE8;--border: #DAD6CE;--blush-strong: #DFB3A9;--fail-ink: #96513F;--fail-bg: #F3DCD7;--e1: 0 1px 2px rgba(67, 65, 61, .08), 0 2px 6px rgba(67, 65, 61, .06);--e2: 0 2px 6px rgba(67, 65, 61, .1), 0 6px 16px rgba(67, 65, 61, .08);--e3: 0 4px 10px rgba(67, 65, 61, .12), 0 12px 28px rgba(67, 65, 61, .1)}*{box-sizing:border-box}html{background:var(--paper)}body{margin:0;font-family:Roboto,system-ui,-apple-system,Segoe UI,sans-serif;background:var(--paper);color:var(--ink);line-height:1.5;-webkit-font-smoothing:antialiased}button{font-family:inherit}.app{max-width:860px;margin:0 auto;padding:12px 12px 96px}.topbar{position:sticky;top:8px;z-index:20;display:flex;justify-content:space-between;align-items:center;background:var(--card);border-radius:24px;padding:10px 18px;box-shadow:var(--e2);margin-bottom:14px}.logo{font-weight:700;font-size:1.05rem;letter-spacing:.2px}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.row.center{justify-content:center}.row.spread{justify-content:space-between}.card{background:var(--card);border:none;border-radius:20px;padding:20px;margin-bottom:14px;box-shadow:var(--e1);transition:box-shadow .18s ease,transform .18s ease}.grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}@media(max-width:640px){.grid{grid-template-columns:1fr}}.exam-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:10px}.exam-task{padding:12px}.exam-task.disabled{opacity:.45;cursor:default;box-shadow:none;background:var(--card2)}.exam-no{font-weight:700;font-size:1.1rem}.timer{color:var(--ink);font-weight:700}.fail-text{color:var(--fail-ink)}.action{cursor:pointer}.action:hover{box-shadow:var(--e2);transform:translateY(-2px)}.action:active{transform:translateY(0) scale(.99)}.topic h3{margin:8px 0 6px}.badge{display:inline-flex;align-items:center;gap:6px;background:var(--card2);color:var(--ink-s);border:1px solid var(--border);border-radius:8px;padding:3px 12px;font-size:.78rem;font-weight:500;height:28px;letter-spacing:.2px}.section{margin:22px 4px 10px}.muted{color:var(--ink-s);font-weight:400}.hint{color:var(--ink-s);font-size:.9rem}.hint.block{display:block;margin:8px 0}.big{font-size:1.4rem;font-weight:700}.error{color:var(--fail-ink);margin:8px 0}.btn{background:var(--card2);color:var(--ink);border:none;border-radius:999px;padding:10px 22px;font-size:.98rem;font-weight:600;cursor:pointer;margin-top:10px;letter-spacing:.2px;transition:box-shadow .15s ease,background .15s ease,transform .1s ease}.btn:hover{box-shadow:var(--e1);background:var(--stone)}.btn:active{transform:scale(.97)}.btn.primary{background:var(--blush);color:var(--ink)}.btn.primary:hover{background:var(--blush-strong);box-shadow:var(--e2)}.btn.tonal{background:var(--cream)}.btn.tonal:hover{background:#edd9ae}.btn.small{padding:6px 14px;font-size:.88rem;margin-top:0}.btn:disabled{opacity:.5;cursor:default;box-shadow:none}.link{background:none;border:none;color:var(--ink-s);cursor:pointer;text-decoration:underline;margin-top:8px}.done-btn{background:var(--sage)}.fab{position:fixed;right:20px;bottom:20px;z-index:30;width:60px;height:60px;border-radius:18px;border:none;background:var(--blush);color:var(--ink);font-size:1.5rem;cursor:pointer;box-shadow:var(--e3);display:flex;align-items:center;justify-content:center;transition:transform .15s ease,box-shadow .15s ease}.fab:hover{transform:translateY(-3px);box-shadow:var(--e3);background:var(--blush-strong)}.fab:active{transform:scale(.94)}.segmented{display:inline-flex;border:1px solid var(--stone);border-radius:999px;overflow:hidden;background:var(--card)}.segmented button{border:none;background:transparent;color:var(--ink-s);padding:8px 18px;font-size:.92rem;font-weight:600;cursor:pointer;transition:background .15s ease,color .15s ease}.segmented button.active{background:var(--blue);color:var(--ink)}.options{display:flex;flex-wrap:wrap;gap:10px;margin:14px 0}.opt{background:var(--card);color:var(--ink);border:1px solid var(--border);border-radius:14px;padding:12px 18px;cursor:pointer;font-size:1rem;transition:background .13s ease,border-color .13s ease,transform .1s ease;box-shadow:var(--e1)}.opt:hover{border-color:var(--stone);background:var(--card2)}.opt:active{transform:scale(.97)}.opt.selected,.opt.picked{border-color:var(--blue);background:var(--blue);color:var(--ink);font-weight:600}.opt.done{opacity:.85;border-color:var(--sage);background:#e6ead6}.opt.small{padding:8px 14px;font-size:.95rem;border-radius:999px;box-shadow:none}.mini{background:var(--card2);border:1px solid var(--border);color:var(--ink);border-radius:999px;padding:2px 10px;cursor:pointer;font-size:.85rem;margin:1px}.mini.selected{border-color:var(--blue);background:var(--blue);font-weight:600}.typein{width:100%;background:var(--card);border:1px solid var(--border);color:var(--ink);border-radius:14px;padding:12px 16px;font-size:1rem;margin:10px 0;transition:border-color .15s ease,box-shadow .15s ease}.typein:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px #bdced373}select{background:var(--card);color:var(--ink);border:1px solid var(--border);border-radius:999px;padding:6px 12px;margin-left:8px}.task-question{font-size:1.1rem;font-weight:600;margin:10px 0 4px}.gap-words{display:flex;flex-wrap:wrap;gap:18px;margin:16px 0}.gap-word{font-size:1.3rem;letter-spacing:.5px}.gap{display:inline-flex;flex-direction:column;align-items:center;margin:0 1px}.gap-letter{min-width:24px;text-align:center;border-bottom:3px solid var(--blush);font-weight:700}.gap-choices{display:flex}.punct-line{font-size:1.25rem;margin:16px 0;line-height:2.2}.boundary{display:inline-block;min-width:26px;text-align:center;color:var(--ink-s);cursor:pointer;padding:0 4px;-webkit-user-select:none;user-select:none;border-radius:8px}.boundary:hover{background:var(--card2)}.boundary.marked{color:var(--ink);font-weight:700;background:var(--cream)}.classify-groups{display:flex;gap:12px;flex-wrap:wrap}.group{flex:1;min-width:160px;background:var(--card2);border:1.5px dashed var(--stone);border-radius:16px;padding:12px;min-height:90px;transition:border-color .15s ease,background .15s ease}.group.target{border-color:var(--blush);background:#f6ede9}.group-name{font-weight:700;margin-bottom:8px}.chip{display:inline-flex;align-items:center;background:var(--card);border:1px solid var(--border);border-radius:999px;padding:5px 14px;margin:2px;cursor:pointer;color:var(--ink);box-shadow:var(--e1);font-size:.92rem}.match{display:grid;grid-template-columns:1fr 1fr;gap:14px}.match-col{display:flex;flex-direction:column;gap:10px}.opt.left,.opt.right{text-align:left}.tokens{margin:14px 0;font-size:1.2rem;line-height:2.2}.tok{display:inline-block;padding:2px 10px;border-radius:10px;cursor:pointer;margin:1px 2px;border:1px solid transparent;transition:background .12s ease}.tok:hover{background:var(--card2);border-color:var(--border)}.tok.selected{background:var(--blue);border-color:var(--blue);font-weight:600}.order-box{background:var(--card2);border-radius:16px;padding:12px;min-height:60px;margin-bottom:10px}.verdict{margin-top:14px;padding:16px;border-radius:16px}.verdict.ok{background:#e9edd8;border:1.5px solid var(--sage)}.verdict.fail{background:var(--fail-bg);border:1.5px solid var(--blush-strong)}.verdict.fail .big{color:var(--fail-ink)}.explain{margin:8px 0}.rule-card h3{margin:10px 0}.examples{padding-left:20px}.examples li{margin:4px 0}.traps{background:var(--cream);border:1px solid #E5D3A4;border-radius:14px;padding:10px 16px;margin:12px 0}.progress{height:10px;background:var(--card2);border-radius:999px;overflow:hidden;margin-bottom:14px}.progress div{height:100%;background:linear-gradient(90deg,var(--blush),var(--sage));transition:width .3s ease;border-radius:999px}.auth-wrap{display:flex;justify-content:center;padding-top:6vh}.auth{width:100%;max-width:420px}.auth h1{margin:0 0 4px;font-size:1.5rem}.auth form{display:flex;flex-direction:column}.done{text-align:center;padding:40px 20px}.loading{display:flex;justify-content:center;padding-top:40vh;color:var(--ink-s)}.essay-preview{background:var(--card2);border-radius:16px;padding:14px;margin:10px 0;max-height:220px;overflow-y:auto}.essay-preview p{margin:0 0 10px}textarea.typein{resize:vertical;min-height:80px}.passage{margin-bottom:10px}.passage summary{cursor:pointer;color:var(--ink);font-weight:600;margin-bottom:6px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;padding:16px;background:#43413d59;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center}.modal{max-width:440px;width:100%;text-align:center;box-shadow:var(--e3);border-radius:28px}.modal h2{margin-top:0}.card.pro{border:2px solid var(--sage);background:#f2f5e6}.card.limit{border:2px solid var(--blue);background:#eef3f4}.card.pro,.card.limit{margin-bottom:14px}::-webkit-scrollbar{width:10px}::-webkit-scrollbar-thumb{background:var(--stone);border-radius:999px}::-webkit-scrollbar-track{background:transparent}.cubes{display:flex;flex-wrap:wrap;gap:8px;margin:20px 0;justify-content:center}.cube{position:relative;width:52px;height:52px;z-index:1;background:var(--card);border:1px solid var(--border);border-radius:12px;font-size:1.5rem;font-weight:700;color:var(--ink);cursor:default;box-shadow:var(--e1);transition:transform .12s ease,background .15s ease,border-color .15s ease,box-shadow .15s ease}.cube.tappable{cursor:pointer}.cube.tappable:hover{transform:scale(1.1);z-index:5;border-color:var(--blush);background:#fbf3f0;box-shadow:var(--e2)}.cube.tappable:active{transform:scale(.94);z-index:5}.cube.gold{z-index:6;background:var(--sage);border-color:#b8c191;color:#3d4528;animation:cube-pop .5s cubic-bezier(.2,1.6,.4,1)}.cube.rust{background:var(--stone);border-color:#a5a39c;color:#f1eee8}.cube-prize{position:absolute;top:-22px;left:50%;transform:translate(-50%);font-size:1.15rem;animation:prize-rise 1.2s ease forwards}@keyframes cube-pop{0%{transform:scale(1)}45%{transform:scale(1.18)}to{transform:scale(1)}}@keyframes prize-rise{0%{opacity:0;transform:translate(-50%,8px) scale(.5)}30%{opacity:1}to{opacity:0;transform:translate(-50%,-26px) scale(1.15)}}.egg-game{text-align:center;padding:6px 0}.egg-word{display:flex;align-items:center;justify-content:center;gap:10px;margin:18px 0}.egg-word-text{font-size:2rem;font-weight:700;letter-spacing:2px}.nest{position:relative;display:inline-flex;align-items:center;justify-content:center;min-width:44px;font-size:1.6rem;border-bottom:3px dashed var(--blush);padding:0 4px}.nest.filled{border-bottom-style:solid;color:var(--ink)}.hatch{position:absolute;top:-34px;left:50%;transform:translate(-50%);font-size:1.5rem}.hatch.ok{animation:hatch-bounce .8s cubic-bezier(.2,1.8,.4,1)}.hatch.bad{animation:hatch-shake .8s ease}@keyframes hatch-bounce{0%{transform:translate(-50%,14px) scale(.3)}60%{transform:translate(-50%,-10px) scale(1.25)}to{transform:translate(-50%) scale(1)}}@keyframes hatch-shake{0%,to{transform:translate(-50%)}25%{transform:translate(calc(-50% - 6px))}50%{transform:translate(calc(-50% + 6px))}75%{transform:translate(calc(-50% - 4px))}}.basket{display:flex;justify-content:center;gap:14px;margin:22px 0 10px;background:var(--cream);border-radius:20px;padding:16px}.egg{position:relative;display:inline-flex;align-items:center;justify-content:center;width:56px;height:70px;background:linear-gradient(160deg,#fff 55%,#f3ede4);border:1px solid #E5DCCE;border-radius:50%/58% 58% 42% 42%;box-shadow:var(--e1),inset -6px -8px 12px #bdced359;cursor:pointer;transition:transform .12s ease,box-shadow .15s ease;padding:0}.egg:hover{transform:translateY(-6px) scale(1.06);box-shadow:var(--e2)}.egg:active{transform:scale(.92)}.egg.used{opacity:.3;cursor:default}.egg-letter{font-size:1.5rem;font-weight:800;color:var(--ink);line-height:1;margin:0;padding:0}.games-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}.game-tile{border-radius:22px;padding:18px 14px;text-align:center;cursor:pointer;box-shadow:var(--e1);transition:transform .15s ease,box-shadow .15s ease}.game-tile:hover{transform:translateY(-4px);box-shadow:var(--e2)}.game-tile:active{transform:scale(.97)}.game-tile h3{margin:6px 0 4px;font-size:1rem}.game-tile p{margin:0;font-size:.82rem;color:var(--ink-s)}.game-emoji{font-size:2rem}.gt-blush{background:var(--blush)}.gt-cream{background:var(--cream)}.gt-blue{background:var(--blue)}.gt-sage{background:var(--sage)}.gap-slot{position:relative;display:inline-flex;align-items:center;justify-content:center;min-width:40px;min-height:44px;margin:0 2px;border-bottom:3px solid var(--blush);background:repeating-linear-gradient(45deg,transparent,transparent 5px,rgba(189,206,211,.25) 5px,rgba(189,206,211,.25) 10px);border-radius:8px 8px 0 0;transition:background .15s ease,transform .15s ease,box-shadow .15s ease;font-weight:800}.gap-slot.filled{background:var(--blue);border-bottom-color:var(--blue)}.gap-slot.target{background:var(--cream);transform:scale(1.18);box-shadow:0 0 0 3px #f6e7c6cc}.egg.dragging{opacity:.25}.egg-ghost{position:fixed;z-index:200;pointer-events:none;width:56px;height:70px;display:inline-flex;align-items:center;justify-content:center;background:linear-gradient(160deg,#fff 55%,#f3ede4);border:1px solid #E5DCCE;border-radius:50%/58% 58% 42% 42%;box-shadow:0 12px 20px #43413d59,inset -6px -8px 12px #bdced359;transform:translate(-50%,-50%) scale(1.15)}.egg-ghost .egg-letter{font-size:1.6rem}.basket.lifting .egg:not(.dragging){opacity:.6}.egg{cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none}.egg:active{cursor:grabbing}.right-word{font-size:1.2rem;margin:8px 0}.right-letter{color:#3d4528;background:var(--sage);border-radius:8px;padding:2px 8px;margin:0 2px;font-size:1.3rem}.grade-sel{background:var(--card2);color:var(--ink);border:1px solid var(--border);border-radius:999px;padding:4px 10px;font-weight:700;cursor:pointer}.streak{font-weight:800;color:var(--ink-s);transition:transform .18s cubic-bezier(.2,1.8,.4,1),color .15s;transform-origin:right center}.streak.hot{color:#c25e3a}.streak.blaze{color:#a33b1e;text-shadow:0 0 14px rgba(232,204,197,.9)}.milestone{position:fixed;top:22%;left:50%;transform:translate(-50%);background:var(--blush);color:var(--ink);border-radius:999px;padding:14px 30px;font-size:1.5rem;font-weight:800;z-index:90;box-shadow:var(--e3);animation:milestone-pop 1.2s ease forwards;pointer-events:none;white-space:nowrap}@keyframes milestone-pop{0%{opacity:0;transform:translate(-50%) scale(.4)}25%{opacity:1;transform:translate(-50%) scale(1.15)}40%{transform:translate(-50%) scale(1)}80%{opacity:1}to{opacity:0;transform:translate(-50%) scale(1) translateY(-30px)}}.streak-final{color:#c25e3a}.weak-words{display:flex;flex-wrap:wrap;gap:8px}.weak-word{display:inline-flex;align-items:center;gap:6px;background:var(--fail-bg);border:1px solid var(--blush-strong);border-radius:999px;padding:6px 14px;font-size:1rem;font-weight:600}.weak-word b{color:#7a3b2a;background:var(--blush);border-radius:8px;padding:1px 7px}.weak-word.hard{background:#ebc9c1;border-color:#b97}.weak-word.hard b{background:#d89880}.weak-meta{font-size:.75rem;color:var(--fail-ink);opacity:.8}.badge-fail{background:var(--fail-bg);color:var(--fail-ink);border-color:var(--blush-strong)}.gt-stone{background:var(--stone)}
