@import"https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,400;9..144,600&family=Inter:wght@400;500;600&display=swap";:root{--bg: #f2eee3;--surface: #fcfaf4;--surface-2: #f6f2e7;--ink: #2b2a22;--ink-2: #68664f;--ink-3: #9b987f;--accent: #c08a16;--accent-soft: #f0e2bc;--accent-line: #e0cb94;--khaki: #6e7350;--khaki-soft: #dfe1ce;--mid: #c7a83f;--low: #c2703c;--low-soft: #f3dfd3;--line: #e4decb;--nav-h: 62px}:root[data-theme=dark]{--bg: #1b1a15;--surface: #22211a;--surface-2: #2a2820;--ink: #efe9d9;--ink-2: #b8b39c;--ink-3: #857f6b;--accent: #d8a63a;--accent-soft: #3d3620;--accent-line: #5b4f2c;--khaki: #8b9068;--khaki-soft: #343626;--line: #35332a;--low-soft: #3d2c22}body{transition:background-color .4s ease,color .4s ease}*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%}body{background:var(--bg);color:var(--ink);font-family:Inter,system-ui,-apple-system,sans-serif;-webkit-font-smoothing:antialiased;overscroll-behavior:none}.app{display:flex;flex-direction:column;height:100%;max-width:520px;margin:0 auto;background:var(--surface)}.top{flex:0 0 52px;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:0 14px;background:var(--surface-2);border-bottom:1px solid var(--line)}.top .who{display:flex;align-items:center;gap:9px;font-size:13px;color:var(--ink-2);min-width:0}.top .who b{color:var(--ink);font-weight:600}.top-actions{display:flex;align-items:center;gap:2px;flex:0 0 auto}.icon-btn{background:none;border:none;font-size:19px;color:var(--accent);cursor:pointer;padding:6px;line-height:1}.icon-btn:active{opacity:.55}.back-btn{background:none;border:none;font:inherit;font-size:14px;font-weight:600;color:var(--accent);cursor:pointer;padding:6px 2px}main{flex:1;overflow-y:auto;padding:20px 18px calc(24px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:14px;animation:fade .22s ease}@keyframes fade{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}h1{font-family:Fraunces,Georgia,serif;font-size:26px;font-weight:600;letter-spacing:-.3px;line-height:1.2}h2{font-family:Fraunces,Georgia,serif;font-size:19px;font-weight:600}.sub{font-size:13px;color:var(--ink-3);line-height:1.55}.lbl{font-size:10.5px;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-3);font-weight:600;margin-top:6px}.card{background:var(--surface-2);border:1px solid var(--line);border-radius:16px;padding:15px}.row{display:flex;gap:9px}button.b{font:inherit;font-size:14px;cursor:pointer;border-radius:12px;border:1px solid var(--line);background:var(--surface);color:var(--ink-2);padding:13px;transition:transform .12s}button.b:active{transform:scale(.98)}button.b.p{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}button.b.k{background:var(--khaki);border-color:var(--khaki);color:#fff;font-weight:600}button.b.w{width:100%}button.b:disabled{opacity:.35;cursor:default}nav{flex:0 0 auto;display:flex;background:var(--surface-2);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom)}nav button{flex:1;background:none;border:none;height:var(--nav-h);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;font:inherit;font-size:9.5px;color:var(--ink-3);cursor:pointer}nav button i{font-style:normal;font-size:17px;line-height:1}nav button.on{color:var(--accent);font-weight:600}.scales{display:flex;flex-direction:column;gap:9px}.scale{display:grid;grid-template-columns:82px 1fr 34px;align-items:center;gap:9px;font-size:11.5px}.scale .nm{color:var(--ink-2)}.scale .v{color:var(--ink-3);text-align:right}.track{height:6px;background:var(--khaki-soft);border-radius:8px;overflow:hidden}.track i{display:block;height:100%;border-radius:8px;transition:width .5s ease}.times{display:flex;gap:9px}.times button{flex:1;background:var(--surface-2);border:1px solid var(--line);border-radius:16px;padding:15px 4px;text-align:center;cursor:pointer;font:inherit;color:var(--ink);transition:.15s}.times button b{display:block;font-family:Fraunces,serif;font-size:22px;font-weight:600}.times button small{font-size:10px;color:var(--ink-3)}.times button.on{background:var(--accent);border-color:var(--accent);color:#fff}.times button.on small{color:#ffffffbf}.step{display:flex;gap:12px;align-items:center;padding:13px;background:var(--surface-2);border:1px solid var(--line);border-radius:15px;cursor:pointer;text-align:left;font:inherit;color:var(--ink);width:100%;transition:transform .14s}.step:active{transform:scale(.99)}.step .ic{flex:0 0 34px;height:34px;border-radius:10px;background:var(--khaki-soft);display:flex;align-items:center;justify-content:center;font-size:15px}.step.acc .ic{background:var(--accent-soft)}.step .tx{flex:1;min-width:0}.step b{font-size:14px;display:block}.step small{font-size:11.5px;color:var(--ink-3);line-height:1.4}.step .go{color:var(--ink-3);font-size:15px}.step.done{opacity:.5}.qbox{background:var(--surface-2);border:1px solid var(--line);border-radius:18px;padding:18px}.qru{font-size:12.5px;color:var(--ink-3);margin-bottom:9px}.qen{font-size:19px;line-height:1.6}.qen u{text-decoration:none;border-bottom:2px solid var(--accent);padding:0 18px}.opts{display:flex;flex-direction:column;gap:8px}.opt{padding:14px 15px;border-radius:13px;border:1px solid var(--line);background:var(--surface);font:inherit;font-size:16px;color:var(--ink);cursor:pointer;text-align:left;transition:.14s}.opt:active:not(:disabled){transform:scale(.99)}.opt.ok{background:var(--khaki);border-color:var(--khaki);color:#fff;font-weight:600}.opt.no{background:var(--low-soft);border-color:var(--low);color:var(--low)}.opt:disabled{cursor:default}.expl{background:var(--accent-soft);border:1px solid var(--accent-line);border-radius:14px;padding:14px 15px;font-size:13px;line-height:1.65;color:var(--ink);display:flex;gap:11px;align-items:flex-start}.prog{display:flex;gap:4px}.prog i{flex:1;height:4px;border-radius:4px;background:var(--line)}.prog i.d{background:var(--khaki)}.prog i.c{background:var(--accent)}.pic{height:160px;border-radius:16px;border:1px solid var(--line);display:flex;align-items:center;justify-content:center;font-size:60px;position:relative;overflow:hidden}.wcard{background:var(--surface-2);border:1px solid var(--line);border-radius:18px;padding:18px;text-align:center}.wcard .w{font-family:Fraunces,serif;font-size:31px;font-weight:600}.wcard .ipa{font-size:13px;color:var(--ink-3);margin-top:4px}.wcard .ru{font-size:19px;color:var(--accent);font-weight:600;margin-top:12px}.wcard .ex{font-size:14px;color:var(--ink-2);font-style:italic;line-height:1.6;margin-top:12px}.nest{display:flex;flex-direction:column;gap:7px}.nest div{display:flex;justify-content:space-between;gap:10px;font-size:13px;padding:10px 12px;background:var(--surface-2);border:1px solid var(--line);border-radius:11px}.nest span{color:var(--ink-3);text-align:right}.say-btn{background:var(--surface);border:1px solid var(--line);border-radius:100px;padding:8px 16px;font:inherit;font-size:13px;color:var(--ink-2);cursor:pointer;margin:12px auto 0;display:inline-flex;align-items:center;gap:7px}.say-btn:active{transform:scale(.97)}.say-row{display:flex;gap:8px;flex-wrap:wrap;justify-content:center}.say-row .say-btn{margin:0}.say-btn.slow{border-style:dashed}.miss{background:var(--low-soft);color:var(--low);border-radius:4px;padding:1px 5px}.say-btn.playing{background:var(--accent-soft);border-color:var(--accent-line)}.tt{display:grid;grid-template-columns:46px 1fr 1fr 1fr 1fr;gap:5px}.tt .hd{font-size:8.5px;letter-spacing:.02em;text-transform:uppercase;color:var(--ink-3);font-weight:600;display:flex;align-items:flex-end;justify-content:center;text-align:center;line-height:1.25;padding-bottom:4px}.tt .rw{font-size:9.5px;font-weight:600;color:var(--ink-2);display:flex;align-items:center;justify-content:center;text-align:center}.cel{border-radius:11px;padding:9px 4px;text-align:center;cursor:pointer;border:1px solid var(--line);background:var(--surface-2);min-height:62px;display:flex;flex-direction:column;justify-content:center;gap:3px;font:inherit;color:var(--ink);transition:.13s}.cel:active{transform:scale(.96)}.cel .f{font-size:10px;font-weight:600;line-height:1.3}.cel .m{font-size:8.5px;color:var(--ink-3);line-height:1.2}.cel.know{background:var(--khaki-soft);border-color:#c2c7ab}.cel.now{background:var(--accent);border-color:var(--accent);color:#fff}.cel.now .m{color:#fffc}.cel.soon{background:var(--accent-soft);border-color:var(--accent-line)}.cel.later{opacity:.5}.legend{display:flex;flex-wrap:wrap;gap:11px;font-size:10.5px;color:var(--ink-2)}.legend i{display:inline-block;width:11px;height:11px;border-radius:4px;margin-right:5px;vertical-align:-1px}.det .fm{background:var(--ink);color:#f0c963;border-radius:11px;padding:12px;text-align:center;font-family:Fraunces,serif;font-size:17px;margin:11px 0}.lhead{background:linear-gradient(150deg,var(--accent-soft),var(--khaki-soft));border:1px solid var(--accent-line);border-radius:18px;padding:17px}.formula{background:var(--ink);color:#fcfaf4;border-radius:16px;padding:18px;text-align:center;font-family:Fraunces,serif;font-size:21px;line-height:1.5}.formula b{color:#f0c963}.formula small{display:block;font-family:Inter,sans-serif;font-size:11.5px;color:#b9b6a4;margin-top:9px;font-weight:400}table{width:100%;border-collapse:collapse;font-size:13.5px;background:var(--surface-2);border-radius:13px;overflow:hidden;border:1px solid var(--line)}th,td{padding:10px 11px;text-align:left;border-bottom:1px solid var(--line)}th{font-size:10.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-3);font-weight:600}tr:last-child td{border-bottom:none}td.ru{color:var(--ink-3);font-size:12.5px}.case{background:var(--surface-2);border:1px solid var(--line);border-left:3px solid var(--khaki);border-radius:0 14px 14px 0;padding:13px 15px}.case .h{font-size:11px;letter-spacing:.05em;text-transform:uppercase;color:var(--khaki);font-weight:600}.case .e{font-size:16px;margin-top:6px;line-height:1.5}.case .t{font-size:12.5px;color:var(--ink-3);margin-top:3px}.warn{background:var(--accent-soft);border:1px solid var(--accent-line);border-radius:14px;padding:14px 15px;font-size:13px;line-height:1.65}.chips{display:flex;flex-wrap:wrap;gap:7px}.chips span{background:var(--surface-2);border:1px solid var(--line);border-radius:100px;padding:6px 12px;font-size:13px}.txt{font-size:17px;line-height:2.05}.tw{cursor:pointer;border-radius:4px;padding:1px}.tw:active,.tw.got{background:var(--accent-soft)}.pop{position:fixed;left:50%;transform:translate(-50%);bottom:calc(var(--nav-h) + 16px + env(safe-area-inset-bottom));background:var(--ink);color:#fcfaf4;padding:11px 14px;border-radius:15px;font-size:14px;display:flex;align-items:center;gap:11px;box-shadow:0 10px 28px #0000004d;z-index:20;max-width:min(92%,460px)}.pop button{background:var(--accent);border:none;color:#fff;font:inherit;font-size:12px;font-weight:600;padding:7px 12px;border-radius:9px;cursor:pointer;white-space:nowrap}.pop .ghost{background:none;font-size:17px;padding:0 2px}.bubble{display:flex;gap:11px;align-items:flex-start}.bubble .txt-b{background:var(--surface-2);border:1px solid var(--line);border-radius:16px 16px 16px 5px;padding:12px 14px;font-size:13.5px;line-height:1.6;color:var(--ink-2);flex:1}.bubble .txt-b b{color:var(--ink)}.t-head{transform-box:fill-box;transform-origin:50% 94%}.t-neutral,.t-smile,.t-talk,.t-greet{animation:idleSway 5s ease-in-out infinite}.t-listen{animation:nodding 3s ease-in-out infinite}.t-care{animation:caring 5.5s ease-in-out infinite}.t-idea{animation:aha 3.4s ease-in-out infinite}.t-think{animation:tilting 6s ease-in-out infinite}.t-praise{animation:bouncing 2.2s ease-in-out infinite}.t-eyes{transform-box:fill-box;transform-origin:center;animation:blinking 5s infinite}.t-mouth{transform-box:fill-box;transform-origin:50% 15%;animation:talking .42s ease-in-out infinite}.t-dot{animation:thinkdot 1.7s ease-in-out infinite}.t-wave{transform-box:fill-box;transform-origin:left center;animation:pulsering 2s ease-out infinite}.t-spark{animation:twinkle 1.9s ease-in-out infinite}.t-hand{transform-box:fill-box;transform-origin:82% 96%;animation:waving 1.1s ease-in-out infinite}.t-bulb{transform-box:fill-box;transform-origin:50% 100%;animation:bulbon 3.4s ease-in-out infinite}.t-heart{transform-box:fill-box;transform-origin:center;animation:heartbeat 2.6s ease-in-out infinite}.t-thumb{transform-box:fill-box;transform-origin:20% 90%;animation:thumbup 2.2s ease-in-out infinite}@keyframes caring{50%{transform:rotate(-4deg) translateY(-1px)}}@keyframes aha{12%{transform:translateY(-5px) rotate(2deg)}24%{transform:translateY(0) rotate(0)}}@keyframes bulbon{0%,8%,to{opacity:.35;transform:scale(.9)}16%,70%{opacity:1;transform:scale(1)}}@keyframes heartbeat{20%{transform:scale(1.18)}38%{transform:scale(1)}55%{transform:scale(1.1)}}@keyframes thumbup{40%,70%{transform:translateY(-6px) rotate(-6deg)}}@keyframes idleSway{50%{transform:translateY(-2px) rotate(-1.2deg)}}@keyframes nodding{30%{transform:rotate(7deg)}55%{transform:rotate(1deg)}78%{transform:rotate(4deg)}}@keyframes tilting{22%,72%{transform:rotate(-6deg)}}@keyframes bouncing{30%{transform:translateY(-6px) scale(1.02)}}@keyframes blinking{90%,to{transform:scaleY(1)}95%{transform:scaleY(.08)}}@keyframes talking{0%,to{transform:scaleY(1)}50%{transform:scaleY(.32)}}@keyframes thinkdot{0%,to{opacity:0;transform:translateY(4px)}40%{opacity:.8;transform:translateY(0)}}@keyframes pulsering{0%{opacity:.7;transform:scale(.85)}to{opacity:0;transform:scale(1.25)}}@keyframes twinkle{0%,to{opacity:.15;transform:scale(.65)}50%{opacity:1;transform:scale(1.1)}}@keyframes waving{0%,to{transform:rotate(-10deg)}50%{transform:rotate(20deg)}}@media(prefers-reduced-motion:reduce){*{animation:none!important}}:root{--ink-line: #241a12;--sticker: 3px 3px 0 var(--ink-line);--sticker-sm: 2px 2px 0 var(--ink-line);--mono: ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, monospace}:root[data-theme=dark]{--ink-line: #6a6250}.lbl{font-family:var(--mono);font-size:10px;letter-spacing:.12em}.card,.times button,.step{border:2px solid var(--ink-line);border-radius:14px;box-shadow:var(--sticker-sm)}.step:active,.times button:active{transform:translate(2px,2px);box-shadow:none}button.b{border:2px solid var(--ink-line);box-shadow:var(--sticker-sm);font-weight:600}button.b:active{transform:translate(2px,2px);box-shadow:none}button.b:disabled{box-shadow:none}.hello{display:flex;gap:14px;align-items:center}.hello-sub{font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--accent);margin-top:5px}.tally{display:flex;align-items:center;gap:4px;font:inherit;font-size:12px;color:var(--ink);background:var(--surface);border:2px solid var(--ink-line);border-radius:999px;padding:4px 10px;cursor:pointer;position:relative;box-shadow:var(--sticker-sm)}.tally:active{transform:translate(2px,2px);box-shadow:none}.tally b{font-family:var(--mono);font-weight:700}.tally .fire{font-size:12px;filter:grayscale(1) opacity(.45)}.tally.live .fire{filter:none}.tally .star{color:var(--accent);margin-left:3px}.tally .dot{position:absolute;top:-3px;right:-3px;width:9px;height:9px;border-radius:50%;background:var(--low);border:2px solid var(--surface-2)}.streak-strip{display:flex;align-items:center;gap:8px;width:100%;font:inherit;font-size:13px;color:var(--ink);text-align:left;cursor:pointer;padding:12px 14px;border:2px solid var(--ink-line);border-radius:14px;box-shadow:var(--sticker-sm);background:linear-gradient(100deg,var(--accent-soft),var(--khaki-soft))}.streak-strip:active{transform:translate(2px,2px);box-shadow:none}.streak-strip b{font-family:var(--mono);font-size:19px;font-weight:700}.streak-strip .dots{margin-left:auto;display:flex;gap:4px}.streak-strip .dots i{width:9px;height:9px;border-radius:50%;border:1.5px solid var(--ink-line);opacity:.4}.streak-strip .dots i.on{background:var(--accent);opacity:1}.streak-strip .arr{color:var(--ink-2)}.streak-card{display:flex;align-items:center;gap:14px;padding:18px;border:2px solid var(--ink-line);border-radius:18px;box-shadow:var(--sticker);background:linear-gradient(140deg,var(--accent-soft),var(--khaki-soft))}.streak-num b{display:block;font-family:var(--mono);font-size:44px;font-weight:700;line-height:1}.streak-num span{font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-2)}.streak-side{margin-left:auto;display:flex;flex-direction:column;gap:6px}.chip{font-family:var(--mono);font-size:11px;padding:5px 9px;border:1.5px solid var(--ink-line);border-radius:999px;background:var(--surface);white-space:nowrap}.freeze{font-size:12.5px;line-height:1.55;padding:12px 14px;border:2px dashed var(--ink-line);border-radius:14px;color:var(--ink-2)}.star-row{display:flex;gap:7px}.star-cell{flex:1;text-align:center;padding:11px 2px;border:2px solid var(--ink-line);border-radius:12px;background:var(--surface-2);opacity:.55}.star-cell.on{opacity:1;background:var(--accent-soft);box-shadow:var(--sticker-sm)}.star-cell i{display:block;font-style:normal;font-size:19px;line-height:1;color:var(--accent)}.star-cell span{display:block;margin-top:5px;font-family:var(--mono);font-size:9px;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-2)}.lvl-name{font-family:Fraunces,serif;font-size:21px;font-weight:600}.lvl-track{height:10px;margin-top:9px;border:2px solid var(--ink-line);border-radius:999px;overflow:hidden;background:var(--surface)}.lvl-track i{display:block;height:100%;background:var(--accent);transition:width .5s ease}.pins{display:flex;flex-direction:column;gap:9px}.pin{display:flex;gap:12px;align-items:center;padding:11px 13px;border:2px dashed var(--ink-line);border-radius:14px;opacity:.5}.pin.got{border-style:solid;opacity:1;background:var(--surface-2);box-shadow:var(--sticker-sm)}.pin-ic{flex:0 0 42px;height:42px;border-radius:50%;border:2px solid var(--ink-line);display:flex;align-items:center;justify-content:center;font-size:20px;background:var(--surface);filter:grayscale(1)}.pin.got .pin-ic{filter:none;background:var(--accent-soft);transform:rotate(-6deg)}.pin-tx b{font-size:14px;display:block}.pin-tx small{font-size:11.5px;color:var(--ink-3);line-height:1.45}.got-star{align-self:center;font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink);background:var(--accent-soft);border:2px solid var(--ink-line);border-radius:999px;padding:7px 14px;box-shadow:var(--sticker-sm);transform:rotate(-2deg);animation:stamp .45s cubic-bezier(.2,1.4,.4,1)}@keyframes stamp{0%{opacity:0;transform:rotate(-2deg) scale(1.5)}to{opacity:1;transform:rotate(-2deg) scale(1)}}.pin-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;background:#14120c9e;display:flex;align-items:center;justify-content:center;padding:22px;animation:fade .2s ease}.pin-card{width:100%;max-width:330px;background:var(--surface);border:2px solid var(--ink-line);border-radius:20px;box-shadow:var(--sticker);padding:22px 20px;text-align:center;display:flex;flex-direction:column;gap:9px;animation:pop .4s cubic-bezier(.2,1.4,.4,1)}@keyframes pop{0%{opacity:0;transform:scale(.8) translateY(14px)}to{opacity:1;transform:none}}.pin-burst{align-self:center;width:92px;height:92px;border-radius:50%;border:2px solid var(--ink-line);background:radial-gradient(circle,var(--accent-soft),var(--khaki-soft));display:flex;align-items:center;justify-content:center}.pin-big{font-size:44px;animation:waving 1.6s ease-in-out infinite}.pin-kicker{font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--accent)}.pin-title{font-family:Fraunces,serif;font-size:24px;font-weight:600;line-height:1.15}.pin-note{font-size:13px;color:var(--ink-2);line-height:1.5}.pin-teacher{display:flex;gap:10px;align-items:center;text-align:left;font-size:12.5px;color:var(--ink-2);line-height:1.5;border-top:1px solid var(--line);padding-top:12px;margin-top:3px}nav button.on i{transform:scale(1.12)}nav button i{transition:transform .15s}.verdict{display:flex;gap:14px;align-items:center;padding:16px;border:2px solid var(--ink-line);border-radius:18px;box-shadow:var(--sticker);background:var(--surface-2)}.verdict.great{background:linear-gradient(140deg,var(--accent-soft),var(--khaki-soft))}.verdict.weak{background:var(--low-soft)}.verdict .face{flex:0 0 88px}.verdict .tx{font-size:13.5px;line-height:1.6;color:var(--ink-2)}.verdict .tx b{color:var(--ink)}.verdict .score{display:block;font-family:var(--mono);font-size:22px;font-weight:700;color:var(--ink);margin-bottom:4px}.step.done{opacity:.62}.step.done .go{color:var(--accent);font-size:17px;opacity:1}.step.done .ic{background:var(--accent-soft)}
