@font-face{font-family:Andika;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/andika-latin-400-normal-BTFTIZb-.woff2) format("woff2"),url(/assets/andika-latin-400-normal-BK42By1L.woff) format("woff")}@font-face{font-family:Andika;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/andika-latin-700-normal-Dk95f5lc.woff2) format("woff2"),url(/assets/andika-latin-700-normal-CAUSQC6x.woff) format("woff")}@font-face{font-family:Fredoka;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/fredoka-latin-500-normal-B0JifZgm.woff2) format("woff2"),url(/assets/fredoka-latin-500-normal-BL692wg7.woff) format("woff")}@font-face{font-family:Fredoka;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/fredoka-latin-700-normal-BOIZVyIN.woff2) format("woff2"),url(/assets/fredoka-latin-700-normal-C8FeHd3X.woff) format("woff")}:root{--good: #2f9e5b;--bad: #d6455d;box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}*,*:before,*:after{box-sizing:inherit}html,body{margin:0;min-height:100%}body{background:var(--page-bg, #2a1f4a);background-color:var(--bg);background-attachment:fixed;color:var(--ink);font-family:Andika,Comic Sans MS,system-ui,sans-serif;font-size:18px;-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:100%}button{font:inherit;cursor:pointer;touch-action:manipulation;border:0;user-select:none;-webkit-user-select:none}button:focus-visible{outline:3px solid var(--accent);outline-offset:2px}#app{max-width:540px;margin:0 auto;padding:16px 16px 28px}h1,h2{font-family:Fredoka,Andika,system-ui,sans-serif;font-weight:700;margin:0}.home{text-align:center;color:var(--on-bg);padding-top:24px}.home h1{font-size:2.6rem;line-height:1.05;letter-spacing:.5px}.home .big{font-size:5rem;line-height:1;margin:8px 0 4px;display:inline-block;animation:bob 3s ease-in-out infinite}@keyframes bob{50%{transform:translateY(-8px) rotate(-4deg)}}.home p{opacity:.85;margin:6px 0 22px}.home .note{font-size:.85rem;opacity:.7;margin-top:24px}.home .vstatus{font-size:1rem;margin:18px 0 6px;opacity:.9}.home .vstatus.quiet{font-size:.9rem;opacity:.7}.progress{height:10px;border-radius:99px;background:color-mix(in srgb,var(--on-bg) 20%,transparent);overflow:hidden}.progress div{height:100%;background:var(--accent);transition:width .3s}.toast{position:fixed;left:16px;right:16px;bottom:calc(16px + env(safe-area-inset-bottom,0px));z-index:30;max-width:520px;margin:0 auto;padding:14px 16px;border-radius:16px;text-align:left;background:var(--surface);color:var(--ink);box-shadow:0 8px 30px #00000059;font-size:1rem}.btn{display:block;width:100%;padding:16px 18px;border-radius:18px;margin:10px 0;font-family:Fredoka,sans-serif;font-weight:700;font-size:1.25rem;text-align:center}.btn.main{background:var(--accent);color:var(--accent-ink);box-shadow:0 5px 0 var(--accent-dk)}.btn.main:active{transform:translateY(3px);box-shadow:0 2px 0 var(--accent-dk)}.btn.alt{background:var(--surface);color:var(--ink);box-shadow:0 5px 0 var(--line)}.btn.alt:active{transform:translateY(3px);box-shadow:0 2px 0 var(--line)}.bar{display:flex;align-items:center;justify-content:space-between;color:var(--on-bg);margin-bottom:8px}.bar button{background:none;color:var(--on-bg);font-size:1.05rem;padding:8px 4px}.tokens{display:flex;flex-wrap:wrap;gap:2px;justify-content:center;font-size:1.6rem;margin:4px 0 12px}.tokens span{filter:grayscale(1) brightness(.6);opacity:.55;transition:all .4s;position:relative}.tokens span.lit{filter:none;opacity:1;transform:scale(1.12)}.tokens span.star:after{content:"⭐";font-size:.6rem;position:absolute;top:-4px;right:-4px}.card{background:var(--surface);border-radius:26px;padding:18px 16px 16px;box-shadow:0 10px 30px #00000040}.listen{display:flex;gap:10px}.listen button{flex:1;padding:14px 10px;border-radius:16px;background:var(--accent);color:var(--accent-ink);font-weight:700;font-family:Fredoka,sans-serif;font-size:1.1rem;box-shadow:0 4px 0 var(--accent-dk)}.listen button.soft{background:transparent;color:var(--ink);box-shadow:inset 0 0 0 2px var(--line)}.prompt{text-align:center;color:var(--muted);margin:14px 0 6px;font-size:1.05rem}.spell{display:grid;grid-template-areas:"listen" "prompt" "slots" "kb" "check"}.spell .listen{grid-area:listen}.spell .prompt{grid-area:prompt}.spell .slots{grid-area:slots}.spell .kb{grid-area:kb}.spell .check{grid-area:check;margin-bottom:0}.slots{min-height:72px;display:flex;justify-content:center;align-items:center;gap:4px;font-size:2.6rem;font-weight:700;border-bottom:3px solid var(--line);margin:0 6px 14px;letter-spacing:2px;overflow-wrap:anywhere}.caret{width:3px;height:44px;background:var(--accent);animation:blink 1s steps(1) infinite}@keyframes blink{50%{opacity:0}}.kb{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}.kb button{background:var(--key);color:var(--key-ink);border-radius:12px;min-height:52px;padding:0;font-size:1.5rem;font-weight:700;box-shadow:0 3px 0 var(--line);font-family:Andika,sans-serif}.kb button:active{transform:translateY(2px);box-shadow:0 1px 0 var(--line)}.kb .del{grid-column:span 2;font-size:1.2rem}.check{margin-top:14px}.word{font-size:3.2rem;font-weight:700;text-align:center;letter-spacing:3px;margin:6px 0 14px;overflow-wrap:anywhere}.word .m{position:relative;color:var(--accent-text)}.word .m:after{content:"";position:absolute;left:8%;right:8%;bottom:-6px;height:12px;border:3px solid var(--accent);border-top:0;border-radius:0 0 50% 50%/0 0 100% 100%}.tip{background:color-mix(in srgb,var(--accent) 16%,transparent);border-radius:14px;padding:10px 12px;text-align:center;font-size:1.05rem;margin:14px 0 4px}.wrote{text-align:center;color:var(--muted);font-size:1rem;margin:12px 0 6px}.wrote b{font-size:1.6rem;letter-spacing:2px}.ok{color:var(--good)}.no{color:var(--bad);text-decoration:underline wavy;text-underline-offset:4px}.gap{display:inline-block;width:.55em;height:.9em;margin:0 2px;border-bottom:3px dashed var(--bad);vertical-align:baseline}.yay{text-align:center;font-size:3rem;line-height:1}.opts{display:grid;gap:10px;margin-top:12px}.opts button{background:var(--key);color:var(--key-ink);border-radius:16px;padding:16px;font-size:2rem;font-weight:700;letter-spacing:2px;box-shadow:0 4px 0 var(--line)}.opts button.right{background:var(--good);color:#fff;box-shadow:0 4px #1f6e3f}.opts button.wrong{background:transparent;color:var(--muted);box-shadow:inset 0 0 0 2px var(--line);text-decoration:line-through;animation:shake .35s}@keyframes shake{25%{transform:translate(-6px)}75%{transform:translate(6px)}}.end{text-align:center}.end .stars{font-size:2.2rem;margin:8px 0;overflow-wrap:anywhere}.chips{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin:12px 0}.chip{padding:6px 12px;border-radius:999px;font-weight:700}.chip.g{background:#2f9e5b26;color:var(--good)}.chip.p{background:color-mix(in srgb,var(--accent) 20%,transparent);color:var(--accent-text)}.link{background:none;color:var(--on-bg);opacity:.8;text-decoration:underline;margin-top:22px;font-size:1rem;padding:8px}.card .link{color:var(--ink);margin-top:8px;padding:6px 0}.grown{display:grid;gap:14px}.grown h2{font-size:1.35rem;margin-bottom:10px}.small{font-size:.95rem;color:var(--muted);line-height:1.45}.small code,.help code{background:color-mix(in srgb,var(--accent) 16%,transparent);padding:1px 5px;border-radius:6px;color:var(--ink)}.help{margin:8px 0}.help summary{cursor:pointer;color:var(--ink)}.field{display:block;margin:10px 0;font-weight:700}.field .small{font-weight:400}input,textarea,select{display:block;width:100%;margin-top:4px;padding:10px 12px;border-radius:12px;border:2px solid var(--line);background:var(--key);color:var(--ink);font:16px/1.5 Andika,sans-serif}textarea{min-height:240px;resize:vertical}input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid var(--accent);outline-offset:1px}.warn{color:var(--bad)}.warn-on-bg{background:var(--surface);color:var(--bad);border-radius:12px;padding:8px 12px}.ok-note{color:var(--good);font-weight:700}.progress.dark{background:var(--line)}.lrow{display:flex;gap:10px;align-items:center;justify-content:space-between;padding:10px 0;border-bottom:1px solid var(--line);color:var(--ink)}.lrow:last-child{border-bottom:0}.lbtns{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.ib{background:var(--key);color:var(--key-ink);border-radius:10px;padding:8px 10px;box-shadow:0 2px 0 var(--line);font-size:.95rem}.badge{display:inline-block;font-size:.8rem;background:var(--good);color:#fff;border-radius:99px;padding:1px 8px;margin-left:4px}table{width:100%;border-collapse:collapse;font-size:1rem;margin-top:6px}td{padding:6px 4px;border-bottom:1px solid var(--line)}td:last-child{text-align:right;color:var(--muted)}.linkbox{display:flex;gap:8px;align-items:center}.linkbox code{flex:1;overflow-wrap:anywhere;font-size:.9rem;background:var(--key);border:2px solid var(--line);border-radius:10px;padding:8px}.linkbox .btn{width:auto;margin:0;padding:10px 16px}.foot{text-align:center;color:var(--on-bg);opacity:.8}button:disabled{opacity:.5;cursor:default}.code-input{max-width:320px;margin:0 auto 6px;text-align:center;font-size:1.3rem;letter-spacing:2px}#add-block.dropping{outline:3px dashed var(--accent);outline-offset:4px}.scanning{text-align:center}.scanning img{max-width:100%;max-height:40vh;border-radius:14px;margin-bottom:12px;object-fit:contain}.spinner{width:42px;height:42px;margin:12px auto;border-radius:50%;border:5px solid var(--line);border-top-color:var(--accent);animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.problem{background:color-mix(in srgb,var(--bad) 12%,transparent);color:var(--ink);border-radius:12px;padding:10px 12px}#rows{display:grid;gap:10px}.rrow{background:var(--surface);border-radius:18px;padding:10px 14px 12px;box-shadow:0 6px 18px #0000002e;border:3px solid transparent}.rrow.unsure{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,var(--surface))}.rhead{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.rnum{font-weight:700;color:var(--muted);min-width:1.4em}.rpreview{font-size:1.5rem;font-weight:700;letter-spacing:1px}.rpreview .m{text-decoration:underline;text-decoration-color:var(--accent);text-decoration-thickness:3px;text-underline-offset:5px;color:var(--accent-text)}.rbtns{margin-left:auto;display:flex;gap:4px}.rbtns .ib{padding:6px 9px}.badge.warnb{background:var(--accent);color:var(--accent-ink)}.rrow .field{margin:6px 0}.rrow input{padding:8px 10px}.checkline{display:flex;align-items:center;gap:8px;margin-top:6px}.checkline input{width:22px;height:22px;margin:0;flex:none}.rwarn:empty{display:none}.rwarn{margin-top:6px}.pin{text-align:center;max-width:420px;margin:0 auto}.dots{display:flex;justify-content:center;gap:14px;margin:16px 0 6px}.dots span{width:18px;height:18px;border-radius:50%;border:3px solid var(--muted)}.dots span.on{background:var(--ink);border-color:var(--ink)}.pin-note{min-height:1.5em;color:var(--bad);margin:4px 0 10px}.pinpad{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;max-width:300px;margin:0 auto}.pinpad button{background:var(--key);color:var(--key-ink);border-radius:16px;min-height:60px;font-size:1.6rem;font-weight:700;box-shadow:0 3px 0 var(--line)}.pinpad button:active{transform:translateY(2px);box-shadow:0 1px 0 var(--line)}.fx{position:fixed;top:-40px;font-size:1.8rem;pointer-events:none;animation:fall 2.2s ease-in forwards;z-index:20}@keyframes fall{to{transform:translateY(110vh) rotate(360deg);opacity:.6}}@media(min-width:700px){#app{max-width:680px;padding-top:28px}body{font-size:20px}.kb button{min-height:64px;font-size:1.8rem}.tokens{font-size:2rem}}@media(orientation:landscape)and (min-width:640px){#app{max-width:1000px}.spell{grid-template-columns:minmax(0,1fr) minmax(0,1.3fr);grid-template-areas:"listen kb" "prompt kb" "slots kb" "check kb";grid-template-rows:auto auto 1fr auto;column-gap:20px}.spell .kb{align-self:center}.spell .check{align-self:end}.home,.card:not(.spell){max-width:640px;margin-left:auto;margin-right:auto}}@media(orientation:portrait)and (max-height:760px){#app{padding-top:6px;padding-bottom:10px}.bar{margin-bottom:0}.bar button{padding:4px}.tokens{font-size:1.3rem;margin:0 0 8px}.card{padding:12px;border-radius:22px}.listen button{padding:10px 8px}.prompt{margin:8px 0 4px;font-size:1rem}.slots{min-height:56px;font-size:2.3rem;margin-bottom:10px}.caret{height:38px}.kb{gap:5px}.kb button{min-height:46px}.check{margin-top:10px}.btn{padding:12px 16px;margin:8px 0}.opts{gap:8px;margin-top:8px}.opts button{padding:9px;font-size:1.75rem}.tip{margin:10px 0 2px;padding:8px 10px;font-size:1rem}.word{font-size:2.8rem;margin:4px 0 12px}.yay{font-size:2.4rem}}@media(orientation:landscape)and (max-height:500px){#app{padding-top:6px;padding-bottom:6px}.bar{margin-bottom:0}.bar button{padding:4px}.tokens{margin:0 0 6px;font-size:1.3rem}.card{padding:12px}.listen button{padding:10px 8px}.prompt{margin:8px 0 4px}.check{margin-top:8px;padding:12px}.kb button{min-height:44px;font-size:1.3rem}.slots{min-height:52px;font-size:2rem}.home{padding-top:4px}.home .big{font-size:3rem}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}.home .link.fresh{margin-top:0}.report td:last-child{text-align:right}.tag{display:inline-block;background:var(--accent);color:var(--accent-ink);border-radius:8px;padding:1px 8px;font-size:.8rem;font-weight:700}.small.muted{opacity:.7}
