/* JFR Gateway V2.9 — Kanji memory, sound and progress */
.jfr29-kanji-memory{display:grid;grid-template-columns:minmax(0,1.35fr) repeat(3,minmax(110px,.65fr)) auto;gap:10px;align-items:stretch;margin:14px 0 18px}
.jfr29-memory-main,.jfr29-memory-stat,.jfr29-sound-toggle{border:1px solid #d6e9ee;background:linear-gradient(145deg,#fff,#f5fbfc);border-radius:18px;box-shadow:0 10px 28px rgba(17,101,127,.07);animation:jfr29MemoryIn .46s cubic-bezier(.2,.8,.2,1) both}
.jfr29-memory-main{padding:13px 15px;min-width:220px}.jfr29-memory-main small,.jfr29-memory-stat small{display:block;font-size:9px;letter-spacing:.09em;color:#718c97;font-weight:850}.jfr29-memory-main b{font-size:18px;color:#164f65}.jfr29-memory-main span{font-size:10px;color:#6d8792}.jfr29-memory-bar{height:8px;margin:8px 0 6px;border-radius:999px;background:#e8f2f4;overflow:hidden}.jfr29-memory-bar i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#1aa9c2,#45c292);transform-origin:left;animation:jfr29MemoryGrow .75s ease-out both}.jfr29-memory-stat{display:flex;flex-direction:column;justify-content:center;padding:12px 14px}.jfr29-memory-stat b{font-size:23px;color:#174d62;line-height:1.15}.jfr29-memory-stat span{font-size:9px;color:#78909a;margin-top:4px}.jfr29-sound-toggle{cursor:pointer;padding:12px 16px;color:#17667b;font-weight:850;white-space:nowrap;transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease}.jfr29-sound-toggle:hover{transform:translateY(-2px);border-color:#9fdbe4;box-shadow:0 14px 30px rgba(17,101,127,.11)}.jfr29-sound-toggle.on{background:linear-gradient(145deg,#eaf9fc,#effbf3);border-color:#bce5df}.jfr29-sound-toggle i{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:7px;background:#9aaab0}.jfr29-sound-toggle.on i{background:#24bd8d;box-shadow:0 0 0 5px rgba(36,189,141,.09);animation:jfr29SoundPulse 1.9s ease-in-out infinite}.jfr29-resume-note{grid-column:1/-1;font-size:9px;color:#7a929c;padding:0 4px}.jfr29-memory-score{position:relative}.jfr29-memory-score:after{content:"";position:absolute;right:12px;top:12px;width:28px;height:28px;border-radius:50%;border:4px solid #e4f0f3;border-top-color:#27afbf;animation:jfr29ScoreSpin 5s linear infinite;opacity:.45}@keyframes jfr29MemoryIn{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:none}}@keyframes jfr29MemoryGrow{from{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes jfr29SoundPulse{50%{transform:scale(1.18)}}@keyframes jfr29ScoreSpin{to{transform:rotate(360deg)}}@media(max-width:980px){.jfr29-kanji-memory{grid-template-columns:repeat(2,minmax(0,1fr))}.jfr29-memory-main{grid-column:1/-1}.jfr29-sound-toggle{white-space:normal}}@media(max-width:560px){.jfr29-kanji-memory{grid-template-columns:1fr}.jfr29-memory-main,.jfr29-resume-note{grid-column:auto}.jfr29-memory-stat{min-height:78px}}@media(prefers-reduced-motion:reduce){.jfr29-memory-main,.jfr29-memory-stat,.jfr29-sound-toggle,.jfr29-memory-bar i,.jfr29-sound-toggle.on i,.jfr29-memory-score:after{animation:none!important}}
