:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--ink:#171714;--paper:#f3eddf;--paper-dim:#d9d0bf;--blue:#2449ff;--red:#f24437;--yellow:#f2c94c;--green:#159f68;--line:#f3eddf33;--mono:"SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;--sans:Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", "Hiragino Sans", "Yu Gothic", "Noto Sans JP", sans-serif}*{box-sizing:border-box}html{background:var(--ink);min-width:320px}body{background:var(--ink);min-height:100vh;color:var(--paper);font-family:var(--sans);margin:0;overflow-x:hidden}body.practice-mode{--blue:#7636d3;--red:#9b7cff;--paper-dim:#d8eee6;--line:#d8eee638}button,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}.dungeon-noise{z-index:-1;opacity:.12;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.45'/%3E%3C/svg%3E");position:fixed;inset:0}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}.dungeon-topbar{border-bottom:1px solid var(--line);grid-template-columns:1fr auto 1fr;align-items:center;min-height:72px;padding:0 clamp(20px,4vw,64px);display:grid}.dungeon-wordmark,.exit-button{color:var(--paper);font:700 11px var(--mono);letter-spacing:.08em;text-decoration:none}.dungeon-wordmark{align-items:center;gap:10px;display:flex}.dungeon-wordmark span{color:var(--red);font:800 25px/1 var(--sans)}.dungeon-title{text-align:center;flex-direction:column;align-items:center;gap:4px;display:flex}.dungeon-title span{color:var(--red);font:800 9px var(--mono);letter-spacing:.2em}.dungeon-title strong{max-width:50vw;color:var(--paper-dim);font:600 10px var(--mono);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.topbar-actions{justify-self:end;align-items:center;gap:18px;display:flex}.recap-toggle{color:var(--paper-dim);font:700 9px var(--mono);letter-spacing:.06em;cursor:pointer;align-items:center;gap:7px;display:flex;position:relative}.recap-toggle input{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}.recap-toggle-check{border:1px solid var(--paper-dim);color:#0000;place-items:center;width:17px;height:17px;font-size:11px;transition:background .12s,border-color .12s,color .12s;display:grid}.recap-toggle input:checked+.recap-toggle-check{border-color:var(--green);background:var(--green);color:var(--ink)}.recap-toggle input:focus-visible+.recap-toggle-check{outline:2px solid var(--yellow);outline-offset:3px}.recall-mode-control{min-width:132px;height:34px;color:var(--paper-dim);font:800 9px var(--mono);letter-spacing:.025em;cursor:pointer;background:#f3eddf0e;border:1px solid #f3eddf3d;border-radius:999px;justify-content:space-between;align-items:center;gap:8px;padding:0 7px 0 11px;transition:border-color .14s,background .14s,color .14s,transform .14s;display:flex}.recall-mode-control:before{content:"";background:var(--blue);border-radius:50%;flex:none;width:6px;height:6px;box-shadow:0 0 0 3px #2449ff24}.recall-mode-control:hover{color:var(--paper);background:#2449ff1a;border-color:#2449ffbf;transform:translateY(-1px)}.recall-mode-control:focus-visible{outline:2px solid var(--yellow);outline-offset:3px}.recall-direction-long,.recall-direction-short{white-space:nowrap;flex:auto}.recall-direction-short{display:none}.recall-mode-swap{width:21px;color:var(--blue);font:800 13px/1 var(--mono);border-left:1px solid #f3eddf29;align-self:stretch;place-items:center;transition:transform .18s cubic-bezier(.2,.8,.2,1);display:grid}.recall-mode-control:hover .recall-mode-swap{transform:rotate(180deg)}body.reverse-recall-mode .recall-mode-control:before{background:var(--yellow);box-shadow:0 0 0 3px #f2c94c24}body.reverse-recall-mode .recall-mode-control:hover{background:#f2c94c14;border-color:#f2c94cbf}body.reverse-recall-mode .recall-mode-swap{color:var(--yellow)}.sound-toggle{color:var(--paper-dim);font:700 10px var(--mono);cursor:pointer;background:0 0;border:0;padding:8px 0}.practice-restart{color:var(--yellow)}.exit-button{border-bottom:1px solid var(--paper);padding-bottom:3px}.dungeon-shell{width:min(1180px,100% - 40px);margin:0 auto;padding:clamp(24px,5vh,56px) 0 64px}.practice-notice{border:1px solid var(--blue);color:var(--blue);font:800 9px var(--mono);letter-spacing:.13em;background:#36d3991a;justify-content:space-between;align-items:center;gap:18px;margin-bottom:18px;padding:11px 14px;display:flex;box-shadow:4px 4px #9b7cff3d}.practice-notice[hidden]{display:none}.practice-notice span{color:var(--paper-dim);letter-spacing:.08em}.battle{border:1px solid var(--line);background:#f3eddf06;grid-template-columns:minmax(0,1.35fr) minmax(320px,.65fr);grid-template-areas:"hud hud""health health""enemy combat";display:grid;position:relative;box-shadow:14px 14px #2449ff47}.dungeon-shell [hidden]{display:none!important}.battle:before{content:"";z-index:-1;border:1px solid #f2443752;position:absolute;inset:14px -15px -15px 14px}body.practice-mode .battle{box-shadow:14px 14px #7936d345}body.practice-mode .battle:before{border-color:#9b7cff61}.battle-hud{border-bottom:1px solid var(--line);grid-area:hud;justify-content:space-between;align-items:center;min-height:74px;padding:16px 22px;display:flex}.floor-counter,.combo-counter{align-items:baseline;gap:11px;display:flex}.floor-counter span,.combo-counter span,.health-label span{color:var(--paper-dim);font:700 9px var(--mono);letter-spacing:.14em}.floor-counter strong{font:800 30px/1 var(--sans)}.combo-counter strong{color:var(--yellow);font:500 22px/1 var(--mono)}.combo-counter b{font-size:30px}.health-stack{border-bottom:1px solid var(--line);grid-area:health;grid-template-columns:1fr 1fr;display:grid}.health-row{padding:15px 22px 18px}.health-row+.health-row{border-left:1px solid var(--line)}.health-label{justify-content:space-between;align-items:baseline;margin-bottom:9px;display:flex}.health-label strong{font:700 10px var(--mono)}.health-track{background:#f3eddf1a;height:8px;overflow:hidden}.health-track span{transform-origin:0;width:100%;height:100%;transition:width .18s ease-out;display:block}.player-health .health-track span{background:var(--blue)}.enemy-health .health-track span{background:var(--red)}.enemy-stage{border-right:1px solid var(--line);grid-area:enemy;place-items:center;min-height:510px;padding:44px;display:grid;position:relative;overflow:hidden}.enemy-stage:before,.enemy-stage:after{content:"";border-color:#f244379e;width:44px;height:44px;position:absolute}.enemy-stage:before{border-top:2px solid;border-left:2px solid;top:24px;left:24px}.enemy-stage:after{content:none}.enemy-rank{color:#f3eddf61;font:700 9px var(--mono);letter-spacing:.12em;position:absolute;top:28px;right:30px}.enemy-sigil{aspect-ratio:1;border:1px solid #f2443738;border-radius:50%;width:min(46vw,390px);position:absolute}.enemy-sigil:before,.enemy-sigil:after{content:"";border:1px solid #2449ff29;position:absolute;inset:13%;transform:rotate(45deg)}.enemy-sigil:after{inset:27%;transform:rotate(22.5deg)}.enemy-stage h1{z-index:1;max-width:100%;color:var(--paper);font:600 clamp(76px, 12vw, 164px)/.92 var(--sans);letter-spacing:-.09em;text-align:center;text-shadow:8px 8px #f244374d;overflow-wrap:anywhere;margin:0;position:relative}body.practice-mode .enemy-stage h1{text-shadow:8px 8px #9b7cff57}.enemy-stage h1.long{font-size:clamp(58px,8vw,112px)}.enemy-stage h1.meaning-prompt{letter-spacing:-.055em;text-wrap:balance;max-width:780px;font-size:clamp(34px,5.4vw,72px);line-height:1.02}.enemy-stage h1.particle-prompt{max-width:820px;font:800 clamp(34px, 5vw, 66px)/1.22 var(--jp);letter-spacing:-.045em;text-wrap:balance}.enemy-particle-slot{border-bottom:.09em solid var(--paper);min-width:1.55em;color:var(--red);place-items:center;margin:0 .08em;line-height:.9;display:inline-grid}.enemy-number{color:#f3eddf61;font:700 9px var(--mono);letter-spacing:.12em;position:absolute;bottom:28px;left:30px}.enemy-favorite{z-index:2;width:42px;height:42px;color:var(--paper-dim);font:600 25px/1 var(--sans);-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px);cursor:pointer;background:#171714d6;border:1.5px solid #f3eddf80;place-items:center;padding:0 0 2px;transition:color .12s,border-color .12s,background .12s,box-shadow .12s,transform .12s;display:grid;position:absolute;bottom:22px;right:28px;box-shadow:4px 4px #f244373d}.enemy-favorite:hover{border-color:var(--yellow);color:var(--yellow);transform:translate(-2px,-2px);box-shadow:6px 6px #f2443752}.enemy-favorite:focus-visible{border-color:var(--yellow);color:var(--yellow);outline:3px solid var(--yellow);outline-offset:4px}.enemy-favorite.active{border-color:var(--yellow);background:var(--yellow);color:var(--ink);animation:.18s cubic-bezier(.2,.8,.2,1) favorite-pop;box-shadow:4px 4px #f244377a}.enemy-favorite.active:hover{color:var(--ink);box-shadow:6px 6px #f244378f}.combat-panel{background:var(--paper);min-width:0;color:var(--ink);flex-direction:column;grid-area:combat;justify-content:center;padding:clamp(28px,4vw,50px);display:flex}.phase-label{color:var(--red);font:800 10px var(--mono);letter-spacing:.15em;margin:0}.combat-feedback{min-height:46px;margin:13px 0 28px;font-size:16px;line-height:1.42}.attack-form input{border:0;border-bottom:3px solid var(--ink);width:100%;color:var(--ink);font:700 clamp(24px, 3vw, 37px)/1.1 var(--sans);background:0 0;border-radius:0;outline:0;padding:12px 0 13px}.attack-form input::placeholder{color:#17171442}.attack-form input:focus{border-bottom-color:var(--blue)}.attack-form button,.end-actions button{background:var(--ink);width:100%;color:var(--paper);font:800 11px var(--mono);letter-spacing:.08em;cursor:pointer;box-shadow:5px 5px 0 var(--blue);border:0;justify-content:space-between;align-items:center;margin-top:18px;padding:16px 18px;display:flex}.attack-form button b{color:var(--red);font-size:20px}.attack-form button:hover,.end-actions button:hover{box-shadow:8px 8px 0 var(--blue);transform:translate(-2px,-2px)}.attack-form button:disabled,.attack-form input:disabled{opacity:.4;cursor:not-allowed}.word-choice-panel[hidden]{display:none}.word-choice-panel{border-top:1px solid #17171433;margin-top:20px;padding-top:17px}.word-choice-panel>span{color:#1717148c;font:800 8px var(--mono);letter-spacing:.12em;margin-bottom:10px;display:block}.word-choices{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.word-choices button{min-height:54px;color:var(--ink);font:600 clamp(19px, 2.2vw, 26px)/1.1 var(--sans);cursor:pointer;background:#ffffff4d;border:1.5px solid #17171447;padding:8px 10px;transition:transform .12s,border-color .12s,background .12s}.word-choices button:hover,.word-choices button:focus-visible{border-color:var(--blue);background:#2449ff14;outline:0;transform:translateY(-2px)}.word-choices button.is-wrong{border-color:var(--red);color:#17171459;cursor:not-allowed;background:#f244371a;text-decoration:line-through;transform:none}.particle-attack-panel[hidden]{display:none}.particle-attack-panel{margin-top:2px}.particle-attack-panel>span{color:#1717148c;font:800 8px var(--mono);letter-spacing:.12em;margin-bottom:12px;display:block}.particle-attack-choices{grid-template-columns:repeat(5,minmax(0,1fr));gap:7px;display:grid}.particle-attack-choices button{min-width:0;min-height:70px;color:var(--ink);font:800 clamp(24px, 2.8vw, 38px)/1 var(--jp);cursor:pointer;background:0 0;border:1.5px solid #17171452;padding:14px 5px 7px;transition:transform .12s,border-color .12s,background .12s,color .12s;position:relative}.particle-attack-choices button:before{content:attr(data-shortcut);color:#17171473;font:700 7px/1 var(--mono);position:absolute;top:7px;left:7px}.particle-attack-choices button:hover,.particle-attack-choices button:focus-visible{border-color:var(--blue);background:var(--blue);color:#fff;outline:0;transform:translateY(-2px)}.particle-attack-choices button:hover:before,.particle-attack-choices button:focus-visible:before{color:currentColor;opacity:.75}.particle-attack-choices button.is-wrong{border-color:var(--red);color:#17171459;cursor:not-allowed;background:#f244371a;text-decoration:line-through;transform:none}.particle-attack-choices.grammar-attack-choices{grid-template-columns:repeat(2,minmax(0,1fr))}.particle-attack-choices.grammar-attack-choices button{overflow-wrap:anywhere;font-size:20px;line-height:1.4}body.particle-dungeon .recall-mode-control{opacity:.62;cursor:default}body.particle-dungeon .input-script-toggle,.breakdown-quiz[hidden]{display:none}.breakdown-quiz{gap:15px;display:grid}.breakdown-quiz-progress{color:var(--red);font:800 9px var(--mono);letter-spacing:.13em;justify-content:space-between;align-items:center;gap:16px;display:flex}.breakdown-quiz-progress strong{color:var(--blue);font:inherit}.breakdown-quiz-word{color:#17171499;margin:0;font-size:12px;line-height:1.4}.breakdown-quiz h2{letter-spacing:-.035em;margin:0;font-size:clamp(21px,2.5vw,31px);font-weight:400;line-height:1.08}.breakdown-quiz h2 b{color:var(--red);font-size:1.45em}.breakdown-options{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;display:grid}.breakdown-option{min-height:70px;color:var(--ink);font:700 12px/1.3 var(--sans);text-align:left;cursor:pointer;background:#ffffff47;border:1.5px solid #1717144d;padding:13px 14px;transition:transform .12s,border-color .12s,background .12s,color .12s}.breakdown-option:hover,.breakdown-option:focus-visible{border-color:var(--blue);background:#2449ff14;outline:0;transform:translateY(-2px)}.breakdown-option.is-wrong{border-color:var(--red);color:#1717147a;cursor:not-allowed;background:#f244371c;text-decoration:line-through;transform:none}.breakdown-option.is-correct{border-color:var(--green);background:#159f6821}.breakdown-quiz-feedback{min-height:18px;color:var(--red);font:700 10px/1.4 var(--mono);margin:-2px 0 0}.breakdown-quiz-feedback[data-tone=hit]{color:var(--green)}.combat-actions{grid-template-columns:1fr 1fr;gap:10px;margin-top:28px;display:grid}.combat-actions[hidden]{display:none}.cost-button{color:var(--ink);font:700 9px var(--mono);cursor:pointer;background:0 0;border:1px solid #17171447;justify-content:space-between;padding:11px 12px;display:flex}.cost-button b{color:var(--red)}.cost-button:hover{border-color:var(--red);background:#f2443712}.cost-button:disabled{opacity:.35;cursor:not-allowed}.hint-panel{border-top:1px solid #17171438;margin-top:20px;padding-top:17px}.hint-heading{justify-content:space-between;align-items:center;gap:14px;display:flex}.hint-heading>span{color:var(--red);font:800 8px var(--mono);letter-spacing:.13em}.hint-lookups{gap:7px;display:flex}.hint-lookup{width:29px;height:29px;font:800 13px/1 var(--sans);background:0 0;border:1.5px solid;border-radius:6px;justify-content:center;align-self:center;align-items:center;text-decoration:none;transition:color .12s,background .12s,transform .12s;display:flex}.hint-lookup.jisho-lookup{color:var(--blue)}.hint-lookup.kana-lookup{color:var(--red)}.hint-lookup:hover,.hint-lookup:focus-visible{background:currentColor;outline:none;transform:translateY(-2px)}.hint-lookup:hover span,.hint-lookup:focus-visible span{color:var(--paper)}.hint-lookup.pronunciation-lookup{color:var(--ink);padding:6px}.pronunciation-lookup svg{fill:currentColor;width:100%;height:100%}.pronunciation-lookup svg path:last-child{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round}.hint-lookup.pronunciation-lookup:hover,.hint-lookup.pronunciation-lookup:focus-visible,.hint-lookup.pronunciation-lookup.speaking{background:var(--yellow);color:var(--ink)}.hint-lookup.pronunciation-lookup.speaking{animation:.7s ease-in-out infinite alternate sound-pulse}.hint-lookup.favorite-lookup{color:var(--ink);cursor:pointer;padding-bottom:2px;font-size:17px}.hint-lookup.favorite-lookup:hover,.hint-lookup.favorite-lookup.active{border-color:var(--yellow);background:var(--yellow);color:var(--ink)}.hint-lookup.favorite-lookup:focus-visible{border-color:var(--yellow);background:var(--yellow);color:var(--ink);outline:3px solid var(--yellow);outline-offset:3px}.hint-lookup.favorite-lookup.active{animation:.18s cubic-bezier(.2,.8,.2,1) favorite-pop}#hintBreakdown{gap:8px;margin-top:10px;font-size:13px;line-height:1.35;display:grid}.hint-part b{margin-right:7px;font-size:18px}.hint-part em{color:var(--blue);font-style:normal}.victory-recap{z-index:10;background:#1717148f;place-items:center;padding:clamp(18px,5vw,62px);display:grid;position:fixed;inset:0}.victory-recap[hidden]{display:none}.victory-recap-card{background:var(--paper);width:min(650px,100%);max-height:100%;color:var(--ink);box-shadow:7px 7px 0 var(--blue);border:1px solid #17171433;padding:clamp(20px,3vw,32px);animation:.16s cubic-bezier(.2,.8,.2,1) both recap-enter;position:relative;overflow-y:auto}.victory-recap-header{color:var(--red);font:800 9px var(--mono);letter-spacing:.13em;justify-content:space-between;align-items:center;gap:18px;display:flex}.victory-recap-main{flex-flow:wrap;align-items:end;gap:clamp(18px,4vw,42px);margin-top:15px;display:flex}.victory-recap-main h2{font:600 clamp(48px, 7vw, 76px)/.9 var(--sans);letter-spacing:-.07em;overflow-wrap:anywhere;margin:0}.victory-recap-main h2.particle-recap-title{font:700 clamp(25px, 3.5vw, 42px)/1.3 var(--jp);letter-spacing:-.035em;flex:100%}#victoryRecapTitle{font-weight:400}.victory-recap-main h2.particle-recap-title mark{background:var(--yellow);color:var(--ink);padding:0 .12em}.victory-recap-reading{color:var(--blue);font:800 clamp(17px, 2.4vw, 23px)/1.1 var(--sans);margin:8px 0 0}.victory-recap-meaning{margin:0;font-size:clamp(15px,1.7vw,19px);font-weight:700;line-height:1.25}.victory-recap-breakdown{border-top:1px solid #1717142e;margin-top:17px;padding-top:12px}.victory-recap-breakdown>span{color:var(--red);font:800 8px var(--mono);letter-spacing:.13em}#victoryRecapBreakdown{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 16px;margin-top:8px;display:grid}.victory-recap-part{min-width:0;font-size:13px;line-height:1.35}.victory-recap-part b{margin-right:7px;font-size:45px;font-weight:500}.victory-recap-part em{color:var(--blue);margin-right:4px;font-style:normal}.victory-recap-continue{border:1px solid var(--ink);background:var(--ink);width:100%;color:var(--paper);font:800 11px var(--mono);letter-spacing:.08em;cursor:pointer;justify-content:space-between;align-items:center;margin-top:18px;padding:14px 18px;transition:transform .12s,box-shadow .12s,background .12s;display:flex}.victory-recap-continue span{color:var(--yellow);font-size:18px}.victory-recap-continue:hover{box-shadow:4px 4px 0 var(--blue);transform:translate(-2px,-2px)}.victory-recap-continue:focus-visible{outline:3px solid var(--blue);outline-offset:3px}.run-ledger{border-top:1px solid var(--line);border-bottom:1px solid var(--line);grid-template-columns:1fr 1fr;margin-top:34px;display:grid}.ledger-block{min-height:132px;padding:22px 24px 26px}.ledger-block+.ledger-block{border-left:1px solid var(--line)}.ledger-heading{justify-content:space-between;align-items:baseline;margin-bottom:17px;display:flex}.ledger-heading span{color:var(--paper-dim);font:800 9px var(--mono);letter-spacing:.14em}.ledger-heading strong{color:var(--blue);font:700 10px var(--mono)}.danger-block .ledger-heading strong{color:var(--red)}.word-list{flex-wrap:wrap;gap:9px;display:flex}.word-list em{color:#f3eddf57;font:500 12px var(--mono)}.word-token{border:1px solid var(--line);padding:6px 9px;font-weight:700}.danger-list .word-token{border-color:#f2443761}.word-token b{color:var(--red);font:700 9px var(--mono);margin-left:5px}.end-state{border:1px solid var(--line);background:var(--paper);min-height:560px;color:var(--ink);box-shadow:14px 14px 0 var(--blue);grid-template-columns:.7fr 1fr;align-items:center;gap:clamp(30px,6vw,80px);padding:clamp(30px,6vw,72px);display:grid}.end-state[hidden]{display:none}.end-kanji{color:var(--red);font:900 clamp(160px, 27vw, 330px)/.8 var(--sans);text-align:center}.end-state p{margin:0}#endEyebrow{color:var(--red);font:800 10px var(--mono);letter-spacing:.16em}.end-state h2{letter-spacing:-.065em;margin:10px 0 18px;font-size:clamp(42px,6vw,76px);line-height:.9}#endSummary{color:#171714ad;max-width:520px;line-height:1.5}.end-stats{flex-wrap:wrap;gap:10px;margin:30px 0;display:flex}.end-stats span{font:700 9px var(--mono);border:1px solid #17171433;padding:10px 12px}.end-actions{grid-template-columns:1fr auto;align-items:end;gap:22px;max-width:390px;display:grid}.end-actions button{margin:0}.end-actions a{color:var(--ink);font:700 10px var(--mono);text-underline-offset:4px;text-decoration:underline}.practice-reference{border-top:1px solid var(--line);margin-top:58px;padding-top:32px}.practice-reference[hidden]{display:none}.practice-reference-header{justify-content:space-between;align-items:end;gap:28px;margin-bottom:24px;display:flex}.practice-reference-header span{color:var(--blue);font:800 9px var(--mono);letter-spacing:.15em}.practice-reference-header h2{color:var(--paper);letter-spacing:-.06em;margin:7px 0 0;font-size:clamp(38px,5vw,66px);line-height:.9}.practice-reference-header p{max-width:340px;color:var(--paper-dim);font:600 10px/1.5 var(--mono);text-align:right;margin:0}.practice-reference-header p strong{color:var(--blue);font-size:15px}.practice-definition-list{grid-template-columns:repeat(auto-fit,minmax(min(100%,290px),1fr));gap:16px;display:grid}.practice-definition-card{border:1px solid #1717142e;border-top:5px solid var(--red);background:var(--paper);min-width:0;color:var(--ink);flex-direction:column;padding:22px;display:flex;box-shadow:6px 6px #36d39947}.practice-definition-heading{justify-content:space-between;align-items:start;gap:18px;display:flex}.practice-definition-heading h3{letter-spacing:-.065em;overflow-wrap:anywhere;min-width:0;margin:0;font-size:clamp(31px,4vw,48px);line-height:.95}.practice-definition-word-link{min-width:0;color:inherit;text-decoration:none}.practice-definition-word-link:hover h3,.practice-definition-word-link:focus-visible h3{color:var(--blue);text-underline-offset:.12em;text-decoration:underline}.practice-definition-tools{flex:none;align-items:center;gap:9px;display:flex}.practice-definition-lookup{width:28px;height:34px;color:var(--blue);border-radius:7px;place-items:center;display:grid}.practice-definition-lookup:hover,.practice-definition-lookup:focus-visible{background:var(--blue);color:var(--paper)}.practice-definition-pronounce{border:1.5px solid var(--blue);width:34px;height:34px;color:var(--blue);cursor:pointer;background:0 0;border-radius:7px;place-items:center;padding:7px;transition:color .12s,background .12s,transform .12s;display:grid}.practice-definition-pronounce svg{fill:currentColor;width:100%;height:100%}.practice-definition-pronounce svg path:last-child{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round}.practice-definition-pronounce:hover,.practice-definition-pronounce:focus-visible,.practice-definition-pronounce.speaking{background:var(--blue);color:var(--paper);outline:none;transform:translateY(-2px)}.practice-definition-pronounce.speaking{animation:.7s ease-in-out infinite alternate sound-pulse}.practice-definition-reading{color:var(--blue);margin:10px 0 0;font-size:17px;font-weight:800;line-height:1.2}.practice-definition-meaning{margin:14px 0 0;font-size:14px;font-weight:700;line-height:1.45}.sentence-example{border:1px solid #7636d32e;border-left:3px solid var(--blue);min-width:0;color:var(--ink);overflow-wrap:anywhere;background:#7636d30b;border-radius:8px;margin-top:17px;padding:13px 15px}.sentence-example[hidden]{display:none}.sentence-example p{margin:0}.sentence-example-header{align-items:flex-start;gap:12px;display:flex}.sentence-example-header>p{flex:1;min-width:0}.sentence-example-play{border:1px solid var(--blue);color:var(--blue);font:700 9px/1.3 var(--mono);cursor:pointer;white-space:nowrap;background:0 0;border-radius:5px;flex:none;margin-top:5px;padding:6px 8px}.sentence-example-play:hover,.sentence-example-play.speaking{background:var(--blue);color:var(--paper)}.sentence-example-play:focus-visible{outline:2px solid var(--blue);outline-offset:3px}.sentence-example-japanese{font:500 clamp(18px, 2vw, 23px)/1.7 var(--sans)}.sentence-example-japanese mark{color:#b72f24;background:0 0;padding:0;font-weight:400}.sentence-example-romaji{color:#171714b8;font-size:12px;line-height:1.6;margin-top:5px!important}.sentence-example-english{font-size:14px;line-height:1.6;margin-top:3px!important}.sentence-example-source{color:#171714a6;font:500 9px/1.5 var(--mono);text-underline-offset:3px;margin-top:9px;display:inline-block}.sentence-example-source:hover{color:var(--blue)}.sentence-example-source:focus-visible{outline:2px solid var(--blue);outline-offset:3px}.practice-definition-breakdown{border-top:1px solid #17171429;gap:7px;margin-top:17px;padding-top:13px;display:grid}.practice-definition-breakdown>span{color:var(--red);font:800 8px var(--mono);letter-spacing:.13em}.practice-definition-part{color:inherit;grid-template-columns:auto minmax(0,1fr);align-items:baseline;gap:2px 8px;font-size:12px;line-height:1.35;text-decoration:none;display:grid}.practice-definition-part:hover b,.practice-definition-part:focus-visible b{color:var(--blue);text-underline-offset:.15em;text-decoration:underline}.practice-definition-part b{font-size:18px}.practice-definition-part em{color:var(--blue);font-style:normal;font-weight:700}.practice-definition-part small{font:inherit;grid-column:2}.enemy-stage.is-hit h1{animation:.18s ease-out enemy-hit}.battle.is-hurt{animation:.22s ease-out player-hurt}.enemy-stage.is-defeated h1{animation:.22s ease-in both enemy-defeated}.enemy-stage.is-entering h1{animation:.22s ease-out both enemy-enter}@keyframes enemy-hit{50%{color:var(--yellow);transform:scale(1.06)translateY(-5px)}}@keyframes player-hurt{25%{transform:translate(-7px)}50%{transform:translate(6px)}75%{transform:translate(-3px)}}@keyframes enemy-defeated{to{opacity:0;color:var(--red);filter:blur(2px);transform:scale(.68)}}@keyframes enemy-enter{0%{opacity:0;transform:scale(.72)}}@keyframes recap-enter{0%{opacity:0;transform:translateY(var(--recap-initial-y)) scale(var(--recap-initial-scale))}to{opacity:1;transform:translateY(0) scale(var(--recap-final-scale))}}@keyframes sound-pulse{to{box-shadow:0 0 0 5px #f2c94c38}}@keyframes favorite-pop{50%{transform:rotate(-7deg)scale(1.12)}}@media (width<=820px){.dungeon-topbar{grid-template-columns:1fr auto}.dungeon-title{display:none}.battle{grid-template-columns:1fr;grid-template-areas:"hud""health""enemy""combat"}.enemy-stage{border-right:0;border-bottom:1px solid var(--line);min-height:390px}.enemy-sigil{width:min(76vw,350px)}.combat-panel{padding:32px 24px 38px}.run-ledger{grid-template-columns:1fr}.ledger-block+.ledger-block{border-top:1px solid var(--line);border-left:0}.end-state{text-align:center;grid-template-columns:1fr}.end-kanji{font-size:180px}.end-stats{justify-content:center}.end-actions{margin:0 auto}.victory-recap{padding:18px}.practice-reference-header{flex-direction:column;align-items:flex-start;gap:12px}.practice-reference-header p{text-align:left}}@media (width<=520px){.dungeon-topbar{min-height:62px;padding:0 16px}.topbar-actions{gap:12px}.practice-restart{display:none}.recap-toggle{gap:5px;font-size:8px}.dungeon-shell{width:calc(100% - 24px);padding-top:20px}.recall-mode-control{gap:5px;min-width:80px;height:30px;padding:0 5px 0 8px;font-size:7px}.recall-mode-control:before{width:5px;height:5px;box-shadow:none!important}.recall-direction-long{display:none}.recall-direction-short{display:block}.recall-mode-swap{width:16px;font-size:10px}.practice-notice{flex-direction:column;align-items:flex-start;gap:4px}.battle{box-shadow:7px 7px #2449ff47}.battle:before{inset:7px -8px -8px 7px}.battle-hud{min-height:62px;padding:12px 16px}.health-stack{grid-template-columns:1fr}.health-row+.health-row{border-top:1px solid var(--line);border-left:0}.health-row{padding:12px 16px 14px}.enemy-stage{min-height:320px;padding:30px 20px}.enemy-stage h1{font-size:clamp(68px,25vw,112px)}.enemy-stage h1.long{font-size:clamp(52px,18vw,78px)}.enemy-stage h1.meaning-prompt{font-size:clamp(32px,10vw,52px)}.enemy-stage h1.particle-prompt{font-size:clamp(27px,8.2vw,40px)}.particle-attack-choices{gap:5px}.particle-attack-choices button{min-height:62px;padding-inline:3px;font-size:clamp(22px,7.5vw,30px)}.combat-actions,.breakdown-options{grid-template-columns:1fr}.breakdown-option{min-height:54px}.victory-recap{padding:12px;position:fixed}.victory-recap-card{box-shadow:6px 6px 0 var(--blue);padding:22px 18px}.victory-recap-main{align-items:start;gap:16px}.victory-recap-main h2{font-size:clamp(48px,17vw,74px)}.victory-recap-main h2.particle-recap-title{font-size:clamp(23px,7vw,32px)}#victoryRecapBreakdown{grid-template-columns:1fr}.end-state{box-shadow:7px 7px 0 var(--blue);padding:34px 22px}.end-actions{grid-template-columns:1fr}.practice-reference{margin-top:42px;padding-top:24px}.practice-definition-card{padding:19px;box-shadow:4px 4px #36d39947}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:1ms!important;animation-duration:1ms!important}}
