:root{--bg:#F6F1E6;--surface:#FFFDF8;--surface-2:#EFE7D6;--ink:#24222B;--ink-soft:#6A6370;--line:#E1D6C1;--primary:#1F4F8F;--primary-edge:#123360;--on-primary:#FFFFFF;--primary-wash:rgba(31,79,143,.1);--accent-ink:#1F4F8F;--beni:#D2382F;--beni-edge:#97241D;--ok:#4FA02C;--ok-edge:#377420;--ok-bg:#E3F3D6;--ok-ink:#2D6614;--bad-bg:#FBE0DB;--bad-ink:#A2281F;--kin:#E8A41F;--kin-edge:#B07A0E;--kin-wash:rgba(232,164,31,.16);--locked:#DCD3C2;--locked-edge:#BFB4A0;--locked-ink:#8E8576;--pattern:rgba(31,79,143,.075);--shippo:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48'%3E%3Cg fill='none' stroke='rgba(31,79,143,.075)' stroke-width='1.6'%3E%3Ccircle cx='0' cy='0' r='24'/%3E%3Ccircle cx='48' cy='0' r='24'/%3E%3Ccircle cx='0' cy='48' r='24'/%3E%3Ccircle cx='48' cy='48' r='24'/%3E%3Ccircle cx='24' cy='24' r='24'/%3E%3C/g%3E%3C/svg%3E");--cat-fur:#FFFDF8;--cat-line:#2A2730;--cat-orange:#EC913A;--cat-black:#3B3542;--cat-pink:#F2A0AE;--cat-collar:#D2382F;--cat-bell:#F0B429;--f-display:"Dela Gothic One","M PLUS Rounded 1c","Yu Gothic UI",system-ui,sans-serif;--f-jp:"Zen Maru Gothic","Yu Gothic UI","Meiryo","Hiragino Maru Gothic ProN",sans-serif;--f-ui:"M PLUS Rounded 1c","Hiragino Maru Gothic ProN","Yu Gothic UI","Meiryo",system-ui,sans-serif;--ease-pop:cubic-bezier(.34,1.56,.64,1)}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--bg:#16110E;--surface:#221A15;--surface-2:#2D231C;--ink:#F3E9D8;--ink-soft:#B5A68F;--line:#3D3027;--primary:#D9AE47;--primary-edge:#94701F;--on-primary:#1B140F;--primary-wash:rgba(217,174,71,.13);--accent-ink:#E8C66E;--beni:#E04B3F;--beni-edge:#9E2D25;--ok:#74BE48;--ok-edge:#4C862B;--ok-bg:#1E2C16;--ok-ink:#A9DD86;--bad-bg:#371915;--bad-ink:#F59C90;--kin:#EBB43A;--kin-edge:#A57914;--kin-wash:rgba(235,180,58,.14);--locked:#3A2F27;--locked-edge:#271F19;--locked-ink:#86796A;--pattern:rgba(217,174,71,.085);--shippo:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48'%3E%3Cg fill='none' stroke='rgba(217,174,71,.085)' stroke-width='1.6'%3E%3Ccircle cx='0' cy='0' r='24'/%3E%3Ccircle cx='48' cy='0' r='24'/%3E%3Ccircle cx='0' cy='48' r='24'/%3E%3Ccircle cx='48' cy='48' r='24'/%3E%3Ccircle cx='24' cy='24' r='24'/%3E%3C/g%3E%3C/svg%3E");color-scheme:dark}}:root[data-theme=dark]{--bg:#16110E;--surface:#221A15;--surface-2:#2D231C;--ink:#F3E9D8;--ink-soft:#B5A68F;--line:#3D3027;--primary:#D9AE47;--primary-edge:#94701F;--on-primary:#1B140F;--primary-wash:rgba(217,174,71,.13);--accent-ink:#E8C66E;--beni:#E04B3F;--beni-edge:#9E2D25;--ok:#74BE48;--ok-edge:#4C862B;--ok-bg:#1E2C16;--ok-ink:#A9DD86;--bad-bg:#371915;--bad-ink:#F59C90;--kin:#EBB43A;--kin-edge:#A57914;--kin-wash:rgba(235,180,58,.14);--locked:#3A2F27;--locked-edge:#271F19;--locked-ink:#86796A;--pattern:rgba(217,174,71,.085);--shippo:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48'%3E%3Cg fill='none' stroke='rgba(217,174,71,.085)' stroke-width='1.6'%3E%3Ccircle cx='0' cy='0' r='24'/%3E%3Ccircle cx='48' cy='0' r='24'/%3E%3Ccircle cx='0' cy='48' r='24'/%3E%3Ccircle cx='48' cy='48' r='24'/%3E%3Ccircle cx='24' cy='24' r='24'/%3E%3C/g%3E%3C/svg%3E");color-scheme:dark}html,body{height:100%}body{background:var(--bg);color:var(--ink);font:500 1rem/1.5 var(--f-ui);-webkit-font-smoothing:antialiased;overflow:hidden}*{box-sizing:border-box}button{font:inherit;color:inherit;cursor:pointer}:focus-visible{outline:3px solid var(--accent-ink);outline-offset:3px;border-radius:10px}ruby rt{font-size:.55em;font-weight:700;color:var(--ink-soft);letter-spacing:0;font-family:var(--f-jp)}.opt,.tile,.wtile,.morph,.ex,.bubble .jp,.reply,.chip,.big-jp,.irreg div,.kana-col span,.typein,h1.q{font-family:var(--f-jp)}.opt,.tile,.wtile,.ex,.reply,.chip,.bubble .jp{font-weight:700}.hanko{font-family:var(--f-jp)!important;font-weight:700!important}.no-furi rt{visibility:hidden}#app{height:100%;display:flex;flex-direction:column;position:relative}.screen{flex:1;min-height:0;display:flex;flex-direction:column}.col{width:100%;max-width:600px;margin-inline:auto;padding-inline:16px}.shippo{background-image:var(--shippo);background-attachment:local}.btn{border:0;border-radius:16px;padding:14px 22px;font-weight:800;font-size:1.02rem;letter-spacing:.05em;text-transform:uppercase;background:var(--primary);color:var(--on-primary);box-shadow:0 5px 0 var(--primary-edge);transition:transform .07s,box-shadow .07s,filter .15s;position:relative}.btn:hover{filter:brightness(1.06)}.btn:active{transform:translateY(5px);box-shadow:0 0 0 var(--primary-edge)}.btn[disabled]{background:var(--locked);color:var(--locked-ink);box-shadow:0 5px 0 var(--locked-edge);cursor:default;filter:none;transform:none}.btn.ok{background:var(--ok);box-shadow:0 5px 0 var(--ok-edge);color:#fff}.btn.bad{background:var(--beni);box-shadow:0 5px 0 var(--beni-edge);color:#fff}.btn.ghost{background:var(--surface);color:var(--ink-soft);box-shadow:0 4px 0 var(--line);border:2px solid var(--line)}.btn.wide{width:100%}.icon-btn{border:0;background:none;padding:8px;border-radius:12px;color:var(--ink-soft);display:grid;place-items:center}.icon-btn:hover{background:var(--primary-wash)}.icon-btn svg{width:26px;height:26px}.cat{display:block;overflow:visible}.cat .m-happy,.cat .m-oops,.cat .mo-cheer,.cat .mo-oops,.cat[data-mood=happy] .m-open,.cat[data-mood=cheer] .m-open{display:none}.cat[data-mood=happy] .m-happy,.cat[data-mood=cheer] .m-happy{display:inline}.cat[data-mood=cheer] .mo-smile{display:none}.cat[data-mood=cheer] .mo-cheer{display:inline}.cat[data-mood=oops] .m-open,.cat[data-mood=oops] .mo-smile{display:none}.cat[data-mood=oops] .m-oops,.cat[data-mood=oops] .mo-oops{display:inline}.cat .head{transform-box:view-box;transform-origin:70px 100px;animation:bob 3.2s ease-in-out infinite}.cat .m-open{transform-box:fill-box;transform-origin:center;animation:blink 4.6s infinite}.cat .tail{transform-box:view-box;transform-origin:100px 116px;animation:wag 1.8s ease-in-out infinite}.cat .ear-r{transform-box:view-box;transform-origin:96px 40px;animation:twitch 6s infinite}.cat.jump{animation:jump .6s var(--ease-pop)}.cat.tilt .head{animation:tilt .7s ease-in-out}@keyframes bob{50%{transform:translateY(-2.5px)}}@keyframes blink{0%,94%,to{transform:scaleY(1)}96%{transform:scaleY(.1)}}@keyframes wag{50%{transform:rotate(-14deg)}}@keyframes twitch{0%,88%,to{transform:rotate(0)}91%{transform:rotate(-12deg)}94%{transform:rotate(4deg)}}@keyframes jump{0%{transform:translateY(0) scale(1)}25%{transform:translateY(2px) scale(1.08,.92)}55%{transform:translateY(-22px) scale(.96,1.05)}to{transform:translateY(0) scale(1)}}@keyframes tilt{30%{transform:rotate(-10deg)}60%{transform:rotate(6deg)}}.bubble{position:relative;background:var(--surface);border:2px solid var(--line);border-radius:18px;padding:12px 16px;box-shadow:0 3px 0 var(--line);min-width:0}.bubble.left:before{content:"";position:absolute;left:-11px;top:22px;width:18px;height:18px;background:var(--surface);border-left:2px solid var(--line);border-bottom:2px solid var(--line);transform:rotate(45deg)}.bubble .jp{font-size:1.25rem;font-weight:700;line-height:1.9}.bubble .en{color:var(--ink-soft);font-size:.92rem}.tutor{display:flex;align-items:flex-start;gap:14px}.tutor .cat{width:92px;height:92px;flex:none}.tutor .bubble{flex:1;margin-top:6px;animation:popin .35s var(--ease-pop) both}@keyframes popin{0%{opacity:0;transform:scale(.85) translateY(6px)}}.topbar{display:flex;align-items:center;gap:6px;padding-block:10px;border-bottom:2px solid var(--line);background:var(--bg);position:relative;z-index:3}.brand{display:flex;align-items:center;gap:8px;margin-right:auto}.hanko{width:34px;height:34px;border-radius:8px;background:var(--beni);color:#fff;font:400 18px/34px var(--f-display);text-align:center;transform:rotate(-6deg);box-shadow:inset 0 0 0 2px #ffffff59}.brand b{font:400 1.4rem var(--f-display);letter-spacing:.02em}.brand b{white-space:nowrap}@media (max-width:440px){.icon-btn{padding:6px}.stat{padding:6px 4px}.topbar .col{gap:0!important}}.stat{display:flex;align-items:center;gap:4px;font-weight:800;padding:6px 8px;border-radius:12px;font-variant-numeric:tabular-nums}.stat svg{width:26px;height:26px}.stat.streak{color:var(--beni)}.stat.xp{color:var(--kin-edge)}:root[data-theme=dark] .stat.xp{color:var(--kin)}@media (prefers-color-scheme: dark){:root:not([data-theme=light]) .stat.xp{color:var(--kin)}}.stat.bump{animation:bump .6s var(--ease-pop)}@keyframes bump{40%{transform:scale(1.35)}}.home-scroll{flex:1;overflow-y:auto;position:relative}.home-inner{position:relative;padding-block:18px 60px;display:flex;flex-direction:column;gap:18px}.today{position:relative;overflow:hidden;border-radius:22px;background:var(--primary);color:var(--on-primary);padding:20px;box-shadow:0 6px 0 var(--primary-edge);display:grid;grid-template-columns:1fr auto;gap:6px 14px;align-items:center}.today .eyebrow{font-size:.78rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;opacity:.8}.today h2{margin:0;font:400 1.7rem/1.25 var(--f-display);text-wrap:balance}.today p{margin:0;opacity:.92;font-size:.95rem;max-width:44ch}.today .cat{width:104px;height:104px;grid-row:1/4;grid-column:2}.today .go{grid-column:1/-1;margin-top:10px;background:var(--surface);color:var(--accent-ink);box-shadow:0 5px #00000040}.today .go:active{box-shadow:0 0 #00000040}.today .more-new{grid-column:1/-1;justify-self:start;margin-top:4px;padding:8px 2px;min-height:44px;background:none;border:0;color:inherit;font:inherit;font-size:.9rem;font-weight:700;opacity:.88;text-decoration:underline;text-underline-offset:3px;cursor:pointer;text-align:left}.today .more-new:hover{opacity:1}.example-tag{position:absolute;top:10px;right:12px;font-size:.68rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;opacity:.7}.goal{display:flex;align-items:center;gap:14px;background:var(--surface);border:2px solid var(--line);border-radius:18px;padding:12px 16px}.goal .ring{width:48px;height:48px;flex:none}.goal .ring circle{fill:none;stroke-width:6}.goal b{display:block}.goal span{color:var(--ink-soft);font-size:.9rem}.unit{border-radius:20px;padding:16px 18px;color:#fff;display:flex;align-items:center;gap:12px;box-shadow:0 5px 0 var(--ok-edge);background:var(--ok)}.unit.locked{background:var(--locked);color:var(--locked-ink);box-shadow:0 5px 0 var(--locked-edge)}.unit small{display:block;font-weight:800;font-size:.75rem;letter-spacing:.12em;text-transform:uppercase;opacity:.85}.unit h3{margin:0;font:400 1.25rem var(--f-display)}.unit{flex-wrap:wrap}.unit .testout{flex-basis:100%;display:grid;gap:2px;text-align:left;padding:10px 14px;border-radius:14px;border:2px solid rgba(255,255,255,.55);background:#ffffff24;color:inherit;font:inherit;cursor:pointer}.unit .testout b{font-weight:800}.unit .testout span{font-size:.85rem;opacity:.9}.unit .testout:hover{background:#ffffff3d}.unit .testout:active{transform:translateY(2px)}.unit.locked .testout{border-color:currentColor;background:transparent}.unit .testout-note{flex-basis:100%;margin:0;font-size:.85rem;opacity:.85}.unit.folded{padding-block:.6rem;margin-bottom:.9rem;box-shadow:0 .2rem 0 var(--ok-edge)}.unit.folded h3{font-size:1.05rem}.unit .unit-fold{margin-left:auto;min-height:2.75rem;padding:.4rem .9rem;border-radius:99px;border:2px solid rgba(255,255,255,.55);background:#ffffff24;color:inherit;font:inherit;font-size:.85rem;font-weight:800;cursor:pointer}.unit .unit-fold:hover{background:#ffffff3d}.unit.locked.folded{box-shadow:0 .2rem 0 var(--locked-edge)}.unit.locked .unit-fold{border-color:currentColor;background:transparent}.unit.unit-group{box-shadow:0 .2rem 0 var(--ok-edge),0 .55rem 0 -.15rem var(--ok),0 .75rem 0 -.15rem var(--ok-edge);margin-bottom:1.3rem}.unit-group-list{margin-bottom:.9rem}.path{display:flex;flex-direction:column;align-items:center;gap:46px;padding-block:44px 24px;position:relative}.node-wrap{position:relative;display:flex;flex-direction:column;align-items:center;z-index:1}.node-wrap.open{z-index:30}.node{width:76px;height:70px;border-radius:50%;border:0;display:grid;place-items:center;position:relative;background:var(--ok);box-shadow:0 7px 0 var(--ok-edge);color:#fff;transition:transform .07s,box-shadow .07s}.node:active{transform:translateY(7px);box-shadow:0 0 0 var(--ok-edge)}.node svg{width:34px;height:34px}.node.current{background:var(--primary);box-shadow:0 7px 0 var(--primary-edge);color:var(--on-primary)}.node.current:after{content:"";position:absolute;top:-12px;right:-12px;bottom:-12px;left:-12px;border-radius:50%;border:5px solid var(--primary);opacity:.35;animation:pulse 1.8s ease-out infinite}@keyframes pulse{0%{transform:scale(.85);opacity:.5}to{transform:scale(1.15);opacity:0}}.node.locked{background:var(--locked);box-shadow:0 7px 0 var(--locked-edge);color:var(--locked-ink)}.node.shake{animation:shake .4s}.node.open{background:var(--surface);color:var(--accent-ink);border:3px solid var(--primary);box-shadow:0 7px 0 var(--line)}.node.open:active{box-shadow:0 0 0 var(--line)}.early-tag{position:absolute;top:-10px;right:calc(50% - 52px);background:var(--surface);color:var(--accent-ink);border:2px solid var(--primary);border-radius:999px;padding:0 8px;font-size:.7rem;font-weight:800;letter-spacing:.04em;pointer-events:none}.pop .pop-early{font-size:.84rem;opacity:.85}@keyframes shake{20%,60%{transform:translate(-6px)}40%,80%{transform:translate(6px)}}.start-tip{position:absolute;bottom:calc(100% + 14px);background:var(--surface);color:var(--accent-ink);border:2px solid var(--line);font-weight:800;letter-spacing:.08em;padding:6px 12px;border-radius:12px;white-space:nowrap;animation:float 1.6s ease-in-out infinite;font-size:.9rem}.start-tip:after{content:"";position:absolute;left:50%;bottom:-8px;width:12px;height:12px;background:var(--surface);border-right:2px solid var(--line);border-bottom:2px solid var(--line);transform:translate(-50%) rotate(45deg)}@keyframes float{50%{transform:translateY(-5px)}}.path-cat{position:absolute;width:110px;height:110px}.pop{position:absolute;top:calc(100% + 16px);z-index:5;width:min(300px,82vw);background:var(--primary);color:var(--on-primary);border-radius:18px;padding:16px;box-shadow:0 10px 30px #0003;animation:popin .25s var(--ease-pop)}.pop.locked-pop{background:var(--surface);color:var(--ink);border:2px solid var(--line)}.pop:before{content:"";position:absolute;top:-8px;left:50%;width:16px;height:16px;background:inherit;transform:translate(-50%) rotate(45deg)}.pop.locked-pop:before{border-left:2px solid var(--line);border-top:2px solid var(--line)}.pop h4{margin:0 0 2px;font:400 1.15rem var(--f-display)}.pop p{margin:0 0 12px;opacity:.9;font-size:.92rem}.pop .btn{width:100%;background:var(--surface);color:var(--accent-ink);box-shadow:0 5px #00000038}.pop.locked-pop .btn{background:var(--locked);color:var(--locked-ink);box-shadow:0 5px 0 var(--locked-edge)}.lesson-top{display:flex;align-items:center;gap:10px;padding-block:14px 8px}.prog{flex:1;height:18px;border-radius:99px;background:var(--surface-2);overflow:hidden;position:relative}.prog-fill{height:100%;width:0;border-radius:99px;background:var(--ok);transition:width .5s var(--ease-pop);position:relative}.prog-fill:after{content:"";position:absolute;left:10px;right:10px;top:4px;height:5px;border-radius:99px;background:#ffffff59}.combo{display:flex;align-items:center;gap:2px;font-weight:800;color:var(--kin-edge);min-width:52px;justify-content:flex-end;font-variant-numeric:tabular-nums}.combo svg{width:24px;height:24px}.combo.show{animation:bump .6s var(--ease-pop)}.stage{flex:1;overflow-y:auto;min-height:0}.stage-inner{padding-block:10px 28px;display:flex;flex-direction:column;gap:20px;min-height:100%}.step-enter{animation:slidein .4s cubic-bezier(.2,.8,.2,1) both}@keyframes slidein{0%{opacity:0;transform:translate(36px)}}.kicker{font-size:.8rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--accent-ink);display:flex;align-items:center;gap:8px}.kicker .rev{background:var(--kin-wash);color:var(--kin-edge);padding:2px 8px;border-radius:8px}h1.q{margin:0;font:800 1.55rem/1.35 var(--f-ui);text-wrap:balance}.big-jp{font-size:2.2rem;font-weight:800;line-height:2}.opts{display:grid;gap:12px}.opt{display:flex;align-items:center;gap:14px;text-align:left;width:100%;background:var(--surface);border:2px solid var(--line);border-radius:16px;padding:12px 16px;box-shadow:0 4px 0 var(--line);font-size:1.3rem;font-weight:700;line-height:1.9;transition:transform .07s,box-shadow .07s,border-color .15s,background .15s}.opt:active{transform:translateY(4px);box-shadow:0 0 0 var(--line)}.opt .key{flex:none;width:28px;height:28px;border-radius:8px;border:2px solid var(--line);display:grid;place-items:center;font-size:.8rem;color:var(--ink-soft);line-height:1}.opt.sel{border-color:var(--primary);background:var(--primary-wash);box-shadow:0 4px 0 var(--primary)}.opt.sel .key{border-color:var(--primary);color:var(--accent-ink)}.opt.right{border-color:var(--ok);background:var(--ok-bg);box-shadow:0 4px 0 var(--ok)}.opt.wrong{border-color:var(--beni);background:var(--bad-bg);box-shadow:0 4px 0 var(--beni);animation:shake .4s}.opts.locked .opt{pointer-events:none}.art{display:grid;place-items:center}.art svg,.art img{width:min(220px,60vw);height:auto}.teach-card{background:var(--surface);border:2px solid var(--line);border-radius:22px;padding:22px 18px;display:flex;flex-direction:column;align-items:center;gap:16px;box-shadow:0 5px 0 var(--line);position:relative;overflow:hidden}.morph{font-size:clamp(2.4rem,9vw,3.4rem);font-weight:800;display:flex;align-items:flex-end;line-height:1.7}.slot{display:inline-grid}.slot>*{grid-area:1/1;justify-self:start}.end-old{color:var(--beni);animation:dropoff .7s .9s cubic-bezier(.5,0,.75,0) forwards}.end-new{color:var(--ok);opacity:0;animation:dropin .55s 1.7s var(--ease-pop) forwards}.masu-pop{color:var(--ok);opacity:0;animation:dropin .55s 2.5s var(--ease-pop) forwards}.godan .end-new{animation-delay:2.1s}.godan .end-old{animation-delay:1.7s}.godan .masu-pop{animation-delay:2.8s}@keyframes dropoff{to{transform:translateY(60px) rotate(28deg);opacity:0}}@keyframes dropin{0%{opacity:0;transform:translateY(-40px) scale(.4)}to{opacity:1;transform:none}}.rule{font-weight:700;text-align:center;font-size:1.05rem;text-wrap:balance}.rule em{font-style:normal;color:var(--accent-ink);background:var(--primary-wash);padding:1px 8px;border-radius:8px}.kana-col{display:flex;gap:6px;position:relative}.kana-col span{width:44px;height:52px;border-radius:12px;display:grid;place-items:center;font-size:1.4rem;font-weight:800;background:var(--surface-2);position:relative;z-index:1;line-height:1}.kana-col span small{position:absolute;bottom:3px;font-size:.6rem;color:var(--ink-soft);font-weight:700;letter-spacing:.05em}.kana-col .hl{position:absolute;top:-4px;width:52px;height:60px;border-radius:14px;border:3px solid var(--kin);background:var(--kin-wash);left:96px;z-index:2;animation:slideKana .7s .8s var(--ease-pop) forwards}@keyframes slideKana{to{left:46px}}.irreg{display:grid;grid-template-columns:1fr 1fr;gap:12px;width:100%}.irreg div{background:var(--surface-2);border-radius:16px;padding:14px 10px;text-align:center;position:relative;font-size:1.5rem;font-weight:800;line-height:1.9}.irreg div span{display:block;color:var(--ok)}.stamp{position:absolute;top:-6px;right:-4px;font:400 .95rem var(--f-display);color:var(--beni);border:3px solid var(--beni);border-radius:8px;padding:2px 6px;transform:rotate(14deg) scale(2.4);opacity:0;animation:stamp .4s 1s cubic-bezier(.2,1.4,.5,1) forwards;background:var(--surface)}.irreg div:nth-child(2) .stamp{animation-delay:1.4s}@keyframes stamp{to{transform:rotate(14deg) scale(1);opacity:1}}.replay{position:absolute;top:10px;right:10px}.examples{display:grid;gap:8px;width:100%}.ex{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;padding:8px 12px;border-radius:14px;background:var(--surface-2);font-size:1.15rem;font-weight:700;line-height:1.8}.ex .arrow{color:var(--ink-soft);font-weight:500;margin-inline:4px}.ex .gloss{display:block;font-size:.82rem;color:var(--ink-soft);font-weight:500;line-height:1.3}.ex .masu{color:var(--ok)}.say{width:40px;height:40px;border-radius:12px;border:2px solid var(--line);background:var(--surface);color:var(--accent-ink);display:grid;place-items:center;box-shadow:0 3px 0 var(--line)}.say svg{width:20px;height:20px}.say:active{transform:translateY(3px);box-shadow:none}.match{display:grid;grid-template-columns:1fr 1fr;gap:12px}.match .colm{display:grid;gap:12px}.tile{width:100%;background:var(--surface);border:2px solid var(--line);border-radius:14px;padding:10px 8px;box-shadow:0 4px 0 var(--line);font-size:1.25rem;font-weight:700;line-height:1.9;transition:all .15s}.tile.sel{border-color:var(--primary);background:var(--primary-wash);box-shadow:0 4px 0 var(--primary)}.tile.good{border-color:var(--ok);background:var(--ok-bg);box-shadow:0 4px 0 var(--ok);color:var(--ok-ink)}.tile.gone{opacity:.25;pointer-events:none;box-shadow:none;transform:scale(.96)}.tile.no{border-color:var(--beni);background:var(--bad-bg);animation:shake .4s}.answer-line{min-height:72px;border-bottom:2px solid var(--line);display:flex;flex-wrap:wrap;gap:8px;align-content:flex-start;padding-bottom:10px;background:repeating-linear-gradient(transparent 0 66px,var(--line) 66px 68px)}.bank{display:flex;flex-wrap:wrap;gap:10px;justify-content:center}.wtile{background:var(--surface);border:2px solid var(--line);border-radius:12px;padding:4px 14px;box-shadow:0 4px 0 var(--line);font-size:1.25rem;font-weight:700;line-height:1.9;animation:popin .25s var(--ease-pop)}.wtile.used,.wtile.used *{visibility:hidden!important}.bank .slotw{background:var(--surface-2);border-radius:12px}.typein{width:100%;font:700 1.4rem var(--f-ui);padding:14px 16px;border-radius:16px;border:2px solid var(--line);background:var(--surface);color:var(--ink);box-shadow:inset 0 3px 0 var(--surface-2)}.typein:focus{outline:none;border-color:var(--primary)}.hint-line{color:var(--ink-soft);font-size:.9rem}.chat{display:flex;flex-direction:column;gap:12px}.msg{display:flex;gap:10px;align-items:flex-end;animation:popin .35s var(--ease-pop) both}.msg .av{width:46px;height:46px;flex:none}.msg .bubble{max-width:82%}.msg.me{justify-content:flex-end}.msg.me .bubble{background:var(--primary);color:var(--on-primary);border-color:var(--primary-edge);box-shadow:0 3px 0 var(--primary-edge)}.msg.me .bubble rt{color:inherit;opacity:.75}.typing{display:inline-flex;gap:4px;padding:6px 2px}.typing i{width:8px;height:8px;border-radius:50%;background:var(--ink-soft);animation:dot 1s infinite}.typing i:nth-child(2){animation-delay:.15s}.typing i:nth-child(3){animation-delay:.3s}@keyframes dot{30%{transform:translateY(-5px);opacity:.5}}.replies{display:grid;gap:10px;margin-top:4px}.reply{text-align:left;background:var(--surface);border:2px solid var(--primary);color:var(--accent-ink);border-radius:16px;padding:8px 14px;font-size:1.15rem;font-weight:700;line-height:1.9;box-shadow:0 4px 0 var(--primary-edge)}.reply:active{transform:translateY(4px);box-shadow:none}.note{font-size:.85rem;color:var(--ink-soft);text-align:center}.foot{border-top:2px solid var(--line);padding-block:16px calc(16px + env(safe-area-inset-bottom,0px));background:var(--bg);position:relative}.foot .row{display:flex;gap:12px}.foot .row .btn{flex:1}.foot .row .btn.ghost{flex:0 0 auto}.sheet{position:absolute;left:0;right:0;bottom:0;z-index:4;padding-block:18px calc(18px + env(safe-area-inset-bottom,0px));transform:translateY(105%);transition:transform .32s cubic-bezier(.2,.9,.3,1.1)}.sheet.up{transform:none}.sheet.ok{background:var(--ok-bg);color:var(--ok-ink)}.sheet.bad{background:var(--bad-bg);color:var(--bad-ink)}.sheet .head{display:flex;align-items:center;gap:12px;margin-bottom:6px}.sheet .badge{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;background:var(--surface);flex:none}.sheet .badge svg{width:26px;height:26px}.sheet h3{margin:0;font:400 1.45rem var(--f-display)}.sheet .why{margin:0 0 14px;font-size:1rem;line-height:1.7}.sheet .why b{font-size:1.15rem}.done{align-items:center;justify-content:center;text-align:center;gap:18px;padding-block:24px}.done h1{margin:0;font:400 clamp(2.6rem,10vw,3.6rem)/1.1 var(--f-display);color:var(--kin)}.done .cat{width:170px;height:170px}.tiles3{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;width:100%}.st{border-radius:16px;border:2px solid var(--c);overflow:hidden;background:var(--surface)}.st small{display:block;background:var(--c);color:#fff;font-weight:800;font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;padding:4px}.st b{display:block;font-size:1.5rem;padding:8px 4px;font-variant-numeric:tabular-nums;color:var(--ink)}.chips{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}.chip{background:var(--surface);border:2px solid var(--line);border-radius:99px;padding:2px 12px;font-weight:700;line-height:1.9}.homework{text-align:left;background:var(--surface);border:2px dashed var(--beni);border-radius:18px;padding:14px 16px;width:100%;display:flex;gap:12px;align-items:flex-start}.homework .hanko{flex:none}.homework b{display:block;margin-bottom:2px}.homework span{color:var(--ink-soft);font-size:.95rem}#petals{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:10}.toast{position:fixed;left:50%;top:calc(14px + env(safe-area-inset-top,0px));transform:translate(-50%,-140%);z-index:20;max-width:min(440px,calc(100% - 32px));background:var(--ink);color:var(--bg);font-weight:700;font-size:.92rem;padding:10px 16px;border-radius:14px;box-shadow:0 8px 24px #00000040;transition:transform .3s var(--ease-pop);text-align:center}.toast.show{transform:translate(-50%)}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@media (min-width:700px){.tutor .cat{width:110px;height:110px}}.pitch-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:4px 0}.pitch{color:var(--accent-ink);overflow:visible;flex:none}.pitch polyline{fill:none;stroke:currentColor;stroke-width:2;stroke-linejoin:round}.pitch circle{fill:currentColor}.pitch circle.pt-particle{fill:var(--surface);stroke:currentColor;stroke-width:2}.pitch text{fill:var(--ink);font:600 14px var(--f-jp)}.pitch text.pt-particle-t{fill:var(--ink-soft)}.pitch-kind{font-size:.8rem;color:var(--ink-soft)}.kfam{text-align:left;font-size:.92rem;background:var(--surface-2);border-radius:12px;padding:8px 12px;margin-top:10px}.kfam-h{font-size:.75rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft)}.kfam-h b{font-size:1rem;letter-spacing:0;text-transform:none;color:var(--ink);margin-left:4px}.kfam-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:6px 0 4px}.kfam-k{font-size:1.5rem;line-height:1;padding:4px 6px;border-radius:8px;background:var(--surface)}.kfam-k.part{box-shadow:inset 0 0 0 2px var(--primary)}.kfam-k.here{background:var(--primary-wash)}.kfam-k.soon{opacity:.55}.kfam-row small{color:var(--ink-soft)}.kfam p{margin:0;color:var(--ink-soft);font-size:.85rem}.goal.jlpt-card{display:block}.jl-h{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:8px}.jl-tag{font-style:normal;font-size:.78rem;font-weight:800;border-radius:999px;padding:3px 10px;flex:none}.jl-tag.ok{background:var(--ok-bg);color:var(--ok-ink)}.jl-tag.behind{background:var(--kin-wash);color:var(--kin-edge)}.jl-bars{display:grid;gap:6px}.jl-bar{display:grid;grid-template-columns:4.6rem 1fr 2.6rem;align-items:center;gap:8px;font-size:.88rem}.jl-bar .jl-l{font-weight:700}.jl-track{height:8px;border-radius:99px;background:var(--surface-2);overflow:hidden}.jl-track i{display:block;height:100%;border-radius:inherit;background:var(--primary)}.jl-bar .jl-n{text-align:right;color:var(--ink-soft);font-variant-numeric:tabular-nums}.jl-bar.empty .jl-l{color:var(--ink-soft)}.goal .jl-line,.goal .jl-note{margin:8px 0 0;font-size:.86rem;color:var(--ink-soft);line-height:1.45}.goal .jl-line{color:var(--ink)}.jl-go{width:100%;margin-top:10px}.goal .jl-credit{margin:8px 0 0;font-size:.72rem;color:var(--ink-soft);opacity:.8;line-height:1.4}.letter-card .letter-seal{flex:none;display:grid;place-items:center;width:34px;height:34px;border-radius:8px;background:var(--beni);color:#fff;font-weight:800;transform:rotate(-6deg)}.letter{max-width:38rem;margin:0 auto;font-size:1.02rem;line-height:1.65}.letter>p{margin:0 0 .9em}.letter-sent{margin:0 0 1em;padding:10px 14px;border-left:4px solid var(--beni);background:var(--surface-2);border-radius:0 12px 12px 0;display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;font-size:1.15rem}.letter-sent small{flex-basis:100%;font-size:.86rem;color:var(--ink-soft)}.letter-sign{text-align:right;font-weight:700;margin:0 0 1.2em}.letter-rows{display:grid;gap:4px;margin:0 0 1em;padding:12px 14px;border:2px solid var(--line);border-radius:14px;font-size:.92rem}.letter-rows div{display:flex;justify-content:space-between;gap:12px}.letter-rows dt{color:var(--ink-soft)}.letter-rows dd{margin:0;font-weight:700;text-align:right}.letter-rows dd small{font-weight:400;color:var(--ink-soft)}.letter-focus{padding:12px 14px;background:var(--kin-wash);border-radius:14px}.letter-focus b{display:block}.letter-focus span{color:var(--ink-soft);font-size:.92rem}.nb-letters details{border-top:1px solid var(--line);padding:8px 0}.nb-letters details:first-of-type{border-top:0}.nb-letters summary{cursor:pointer;font-weight:700}.nb-letters .letter{font-size:.95rem;margin-top:8px}.busy-note{position:fixed;left:14px;bottom:calc(14px + env(safe-area-inset-bottom,0px));z-index:15;display:flex;align-items:center;gap:8px;max-width:min(420px,calc(100% - 28px));background:var(--surface);color:var(--ink-soft);border:2px solid var(--line);border-radius:999px;padding:6px 12px 6px 10px;font-size:.82rem;font-weight:600;box-shadow:0 4px 14px #0000001f;opacity:0;transform:translateY(8px);pointer-events:none;transition:opacity .25s,transform .25s}.busy-note.on{opacity:1;transform:none;pointer-events:auto}.busy-note i{flex:none;width:8px;height:8px;border-radius:50%;background:var(--primary);animation:busy 1.2s ease-in-out infinite}@keyframes busy{50%{opacity:.25}}@media (prefers-reduced-motion:reduce){.busy-note i{animation:none}}body:has(.screen.lesson) .busy-note,body:has(.screen.cards) .busy-note{display:none}.kana-wrap{position:relative;display:block;width:100%}.kana-wrap .typein{width:100%;padding-right:3.5rem}.kana-switch{position:absolute;right:.5rem;top:50%;transform:translateY(-50%);width:2.5rem;height:2.5rem;border-radius:.75rem;border:.125rem solid var(--line);background:var(--surface-2);color:var(--ink);font:700 1.1rem/1 var(--f-jp);cursor:pointer}.kana-switch[aria-pressed=false]{color:var(--ink-soft);font-family:var(--f-ui)}[hidden]{display:none!important}.furi-auto ruby.k rt,.furi-off ruby rt,.furi-tap ruby:not(.shown) rt{visibility:hidden}.furi-tap ruby{cursor:pointer}.furi-tap ruby.shown{text-decoration:underline dotted var(--ink-soft);text-underline-offset:4px}ruby.peek rt{visibility:visible!important}.no-audio .say,.no-audio .big-play,.no-audio .slow-play{display:none!important}.kana-col .hl{left:calc(var(--from,2)*50px - 4px);animation:slideKana2 .7s .8s var(--ease-pop) forwards}@keyframes slideKana2{to{left:calc(var(--to,1)*50px - 4px)}}.cat.spin{animation:spin .8s var(--ease-pop)}.pop-in,.opt,.tile,.ex,.seg{animation:popin .35s var(--ease-pop) both}.nudge{animation:shake .4s}#fx{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:70}.slot-gap{display:inline-block;min-width:3em;border-bottom:3px dashed var(--primary);text-align:center;margin:0 .2em}.slot-gap.filled{border-bottom-style:solid}.slot-gap.drop .slot-fill{display:inline-block;animation:dropin .4s var(--ease-pop)}.gap-reading{display:block;font-size:.55em;color:var(--ink-soft)}.gap-card,.source-card,.passage,.listen-card{background:var(--surface);border:2px solid var(--line);border-radius:18px;padding:16px;font-family:var(--f-jp);font-size:1.3rem;line-height:2}.gap-en,.rq-why{color:var(--ink-soft);font-size:.95rem}.big-play{width:96px;height:96px;border-radius:50%;border:0;background:var(--primary);color:var(--on-primary);box-shadow:0 6px 0 var(--primary-edge)}.big-play svg{width:44px;height:44px}.big-play i{display:none}.slow-play{border:0;background:none;color:var(--ink-soft);margin-left:12px}.say.playing{background:var(--primary-wash)}.say-mini{width:32px;height:32px;display:inline-grid;margin-left:6px;vertical-align:middle}.spot{display:flex;flex-wrap:wrap;gap:8px}.seg{font:700 1.25rem var(--f-jp);background:var(--surface);border:2px solid var(--line);border-radius:12px;padding:4px 12px;box-shadow:0 4px 0 var(--line)}.seg.sel{border-color:var(--primary)}.seg.culprit .seg-t{text-decoration:line-through;color:var(--beni)}.seg-fix{display:block;color:var(--ok);font-size:.9em}.seg.no{animation:shake .4s}.typein.right{border-color:var(--ok)}.typein.wrong{border-color:var(--beni);animation:shake .4s}.timer{flex:1;height:12px;border-radius:99px;background:var(--surface-2);overflow:hidden}.timer-fill{height:100%;width:100%;background:var(--kin)}.timer-fill.low{background:var(--beni)}.speed-top{display:flex;gap:10px;align-items:center;font-weight:800}.speed-prompt{font:800 1.8rem var(--f-jp);text-align:center;margin:14px 0}.speed-dots{display:flex;gap:6px;justify-content:center;margin-top:12px}.speed-dots i{width:10px;height:10px;border-radius:50%;background:var(--surface-2)}.speed-dots i.y{background:var(--ok)}.speed-dots i.n{background:var(--beni)}.countdown{font:400 4rem var(--f-display);text-align:center;color:var(--primary)}.countdown.go{animation:dropin .5s var(--ease-pop)}.kanji-cards{grid-template-columns:repeat(auto-fit,minmax(90px,1fr))}.kcard .opt-t{font-size:2.6rem}.av-other{width:46px;height:46px;border-radius:50%;background:var(--kin);color:#fff;display:grid;place-items:center;font-weight:800}.composer{display:flex;gap:8px}.models{display:grid;gap:8px}.quit-sheet{position:absolute;top:0;right:0;bottom:0;left:0;background:#00000059;display:grid;place-items:center;z-index:6}.quit-card{background:var(--surface);border-radius:22px;padding:20px;max-width:360px;text-align:center}.quit-cat{width:90px;height:90px}.combo-pop{position:absolute;top:60px;left:50%;transform:translate(-50%);background:var(--kin);color:#fff;font-weight:800;padding:6px 14px;border-radius:99px;display:flex;gap:6px;align-items:center;animation:popin .4s var(--ease-pop);z-index:5}.combo-pop svg{width:20px}.intro{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;text-align:center}.intro-cat .cat{width:170px;height:170px}.intro-bubble .jp{font-size:1.6rem}.node-label{font-size:.8rem;font-weight:700;margin-top:10px;text-align:center;max-width:120px}.topbar-in{display:flex;align-items:center;gap:4px}.stat.cold{opacity:.5}.today-cat{width:104px;height:104px;grid-row:1/4;grid-column:2}.sheet-dialog{border:0;border-radius:22px;background:var(--surface);color:var(--ink);max-width:520px;width:calc(100% - 32px)}.set-row{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line)}.set-row span{display:block;color:var(--ink-soft);font-size:.85rem}.seg-ctl button,.toggle{border:2px solid var(--line);background:var(--surface);border-radius:10px;padding:4px 10px}.seg-ctl button[aria-checked=true],.toggle[aria-checked=true]{background:var(--primary);color:var(--on-primary)}.toggle{width:44px;height:26px}.dialog-head{display:flex;justify-content:space-between;align-items:center}.conn-list{list-style:none;padding:0}.conn-list li{display:flex;gap:10px;padding:8px 0}.dot{width:10px;height:10px;border-radius:50%;background:var(--locked)}.dot.ok{background:var(--ok)}.dot.missing{background:var(--beni)}.dot.attention{background:var(--kin)}.xp-float{position:fixed;font-weight:800;color:var(--kin-edge);animation:floatup 1.2s forwards;pointer-events:none;z-index:16}@keyframes floatup{to{transform:translateY(-60px);opacity:0}}.boot{height:100%;display:grid;place-items:center}.done .bonus,.saved{margin:0;font-weight:700}.kicker .rev svg{width:14px;height:14px}.warmup{display:flex;gap:14px;align-items:center;text-align:left;width:100%;background:var(--kin-wash);border:2px solid var(--kin);border-radius:18px;padding:12px 16px;color:var(--ink);box-shadow:0 4px 0 var(--kin-edge)}.warmup svg{width:30px;height:30px;color:var(--kin-edge);flex:none}.warmup b{display:block}.warmup span{color:var(--ink-soft);font-size:.9rem}.warmup:active{transform:translateY(4px);box-shadow:none}.assemble{font:800 clamp(1.8rem,7vw,2.6rem)/1.8 var(--f-jp);display:flex;flex-wrap:wrap;justify-content:center}.assemble .piece{display:inline-block;opacity:0;animation:assemble .6s calc(.4s + var(--i)*.28s) var(--ease-pop) forwards}.assemble .piece:nth-child(odd){color:var(--accent-ink)}@keyframes assemble{0%{opacity:0;transform:translate(var(--dx),var(--dy)) rotate(-12deg) scale(.6)}to{opacity:1;transform:none}}.p-slot{display:inline-block;min-width:1.2em;border-bottom:4px dashed var(--kin);margin:0 .1em;text-align:center}.p-fly{display:inline-block;color:var(--beni);opacity:0;animation:dropin .6s 1s var(--ease-pop) forwards}.irreg div .stamp{animation-delay:var(--d,1s)}.qn{display:inline-block;background:var(--primary-wash);color:var(--accent-ink);border-radius:8px;padding:0 8px;margin-right:8px;font-size:.8em}h3.q.small{font-size:1.1rem;margin:14px 0 8px}.passage p{margin:.2em 0;animation:popin .4s var(--ease-pop) both}.passage h2{margin:0 0 6px;font-size:1.2rem}.msg.me .slot-gap{border-bottom-color:currentColor;min-width:4em}.av-other{box-shadow:0 3px 0 var(--kin-edge)}.today rt,.pop rt,.unit rt,.btn rt{color:inherit;opacity:.75}.toggle{position:relative;padding:0;border-radius:99px;background:var(--surface-2)}.toggle i{position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:var(--surface);box-shadow:0 1px 3px #0000004d;transition:left .2s var(--ease-pop)}.toggle[aria-checked=true] i{left:20px}.seg-ctl{display:flex;flex-wrap:wrap;gap:4px;justify-content:flex-end}.phone-warn{margin:10px 0 0;padding:10px 12px;border-radius:12px;background:var(--kin-wash);font-weight:700;font-size:.9rem}.phone-pair{display:flex;gap:16px;align-items:center;flex-wrap:wrap;margin:14px 0 8px}.phone-qr{flex:0 0 auto;line-height:0;border-radius:12px;overflow:hidden;border:2px solid var(--line)}.phone-qr svg{width:150px;height:150px}.phone-how{flex:1 1 180px;min-width:0}.phone-how p{margin:0 0 4px;font-size:.88rem;color:var(--ink-soft)}.phone-how code{display:block;margin:0 0 8px;font-size:.92rem;overflow-wrap:anywhere;-webkit-user-select:all;user-select:all}.phone-how .phone-code{font-size:1.4rem;font-weight:800;letter-spacing:.12em;color:var(--accent-ink)}#phone-reset{margin-top:12px;font-size:.85rem}#phone-set .note{text-align:left}.fixes{display:grid;gap:6px;justify-items:end}.fix{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;max-width:82%;padding:6px 12px;border-radius:14px;background:var(--bad-bg);color:var(--bad-ink);font-weight:700;line-height:1.8}.fix s{opacity:.7}.fix .arrow{opacity:.6}.fix b{color:var(--ink)}.fix small{flex-basis:100%;font-weight:500;color:var(--ink-soft);line-height:1.4}#fb .fixes{justify-items:start;margin-bottom:8px}.nudge-box{margin:4px 0 10px;padding:10px 14px;border-radius:14px;border:2px dashed var(--line);background:var(--surface)}.nudge-box .yours{margin:6px 0;font-size:1.15rem;line-height:2}.nudge-box .hint{margin:0;color:var(--ink-soft)}mark.nudge{background:var(--primary-wash);color:inherit;border-bottom:3px solid var(--accent-ink);border-radius:4px;padding:0 2px}.uses{margin:-4px 0 10px;color:var(--ink-soft)}.uses b{color:var(--accent-ink)}.sheet.wait .badge{overflow:hidden}.sheet.wait .badge .cat{width:40px;height:40px}.notes{width:100%;max-width:640px;display:grid;gap:10px;text-align:left}.notes:empty{display:none}.note-card{padding:12px 16px;border-radius:16px;background:var(--surface);border:2px solid var(--line)}.note-card .yours{margin:0 0 6px;font-size:1.1rem;line-height:1.9}.note-card .said{margin:0 0 6px;line-height:1.7}.note-card .said small{display:block;color:var(--ink-soft)}.note-card .reading{margin:0;color:var(--ink-soft)}.note-card .fixes{justify-items:start}.note-card .verdict{font-size:.8rem;font-weight:800;padding:2px 8px;border-radius:10px;background:var(--bad-bg);color:var(--bad-ink);vertical-align:middle}.note-card .verdict.good{background:var(--ok-bg);color:var(--ok-ink)}@media (min-width:1100px){.notes{grid-template-columns:1fr 1fr;max-width:1100px}.notes .kicker{grid-column:1/-1}}.note-retry{display:flex;gap:8px;margin-top:6px}.note-retry .typein{flex:1;min-width:0;font-size:1rem;padding:8px 12px}#about-set .set-row .btn,#phone-set .phone-warn .btn{padding:8px 14px;font-size:.85rem;flex:0 0 auto}#phone-set .phone-warn .btn{display:block;margin-top:8px}#about-set>.btn.wide{margin:6px 0 4px}.about-changes{margin:6px 0 10px;padding-left:1.2em;font-size:.92rem;display:grid;gap:4px}.about-backups{margin:8px 0;font-size:.92rem}.about-backups summary{cursor:pointer;color:var(--ink-soft);font-weight:700;padding:4px 0}.about-backups ul{list-style:none;padding:0;margin:6px 0}.about-backups li{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:6px 0;border-bottom:1px solid var(--line)}.about-backups li span{color:var(--ink-soft)}.about-backups li b{color:var(--ink)}.about-backups li .btn{padding:6px 12px;font-size:.8rem}#about-set .note{overflow-wrap:anywhere}.set-h{margin:18px 0 2px;font-size:.78rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft)}.btn.small{padding:8px 14px;font-size:.85rem;letter-spacing:.03em}.step-ctl{display:inline-flex;align-items:center;gap:2px;flex:none}.step-ctl button{width:36px;height:36px;border:2px solid var(--line);background:var(--surface);border-radius:10px;font-size:1.1rem;font-weight:800;line-height:1}.step-ctl button:disabled{opacity:.4;cursor:default}.step-ctl b{min-width:2.4em;text-align:center;font-variant-numeric:tabular-nums}.set-select{flex:none;font:inherit;padding:6px 10px;border:2px solid var(--line);border-radius:10px;background:var(--surface);color:var(--ink);min-height:36px;max-width:100%}.set-col{padding:10px 0;border-bottom:1px solid var(--line)}.set-col span{display:block;color:var(--ink-soft);font-size:.85rem}.topics{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.topic{border:2px solid var(--line);background:var(--surface);color:var(--ink-soft);border-radius:99px;padding:6px 14px;font-weight:700;min-height:36px}.topic[aria-pressed=true]{background:var(--primary);border-color:var(--primary);color:var(--on-primary)}.voice-pick{display:flex;gap:6px;align-items:center;flex-wrap:wrap;justify-content:flex-end;min-width:0}.voice-pick select{font:inherit;padding:6px 10px;border:2px solid var(--line);border-radius:10px;background:var(--surface);color:var(--ink);max-width:16em}#who-row{flex-wrap:wrap}details.setup{margin-top:18px}details.setup summary{cursor:pointer;list-style:none;display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}details.setup summary::-webkit-details-marker{display:none}details.setup summary .set-h{margin:0}details.setup summary .set-h:after{content:" ▸";letter-spacing:0}details.setup[open] summary .set-h:after{content:" ▾"}details.setup summary span{color:var(--ink-soft);font-size:.88rem}.conn-list li{align-items:flex-start;border-bottom:1px solid var(--line);padding:10px 0;flex-wrap:wrap}.conn-list .dot{flex:none;margin-top:7px}.dot.off{background:var(--line)}.conn-body{flex:1 1 210px;min-width:0}.conn-label{font-weight:800}.conn-label .need{margin-left:8px;font-size:.72rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;padding:2px 8px;border-radius:99px;background:var(--bad-bg);color:var(--bad-ink)}.conn-detail,.conn-remedy{font-size:.88rem;color:var(--ink-soft);overflow-wrap:anywhere}.conn-remedy{color:var(--ink);margin-top:2px}.conn-actions{display:flex;gap:6px;flex-wrap:wrap;margin-left:auto;flex:0 0 auto}.conn-said,.conn-progress{flex-basis:100%;font-size:.88rem;margin-top:6px}.conn-said.bad{color:var(--bad-ink)}.sure-row{display:grid;gap:6px}.sure-q{justify-self:center;font-size:.8rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft)}.sure-btn.guess{background:var(--surface-2);color:var(--ink);box-shadow:0 4px 0 var(--locked-edge)}.sheet.sure-wrong .head h3{color:var(--bad-ink)}.then-now{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:6px 0 10px}.then-now>div{padding:10px 12px;border-radius:14px;background:var(--surface);border:2px solid var(--line);min-width:0}.then-now small{display:block;font-size:.75rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:4px}.then-now b,.then-now .yours{font-size:1.1rem;line-height:1.9;overflow-wrap:anywhere}.sure-side .yours{color:var(--bad-ink);text-decoration:line-through;text-decoration-thickness:2px}.again-card{padding:12px 14px;border-radius:16px;background:var(--surface);border:2px solid var(--kin)}.again-card .then-now>div{background:var(--bg)}.again-card .yours{margin:0 0 4px}.tn-changes{margin:0;padding-left:1.2em;line-height:1.8}.again-line{margin:0 0 8px;padding:8px 12px;border-radius:12px;background:var(--kin-wash);font-weight:700}@media (max-width:440px){.then-now{grid-template-columns:1fr}}.why-opts{display:grid;grid-template-columns:1fr;gap:8px}.why-opts .opt{text-align:left;justify-content:flex-start}.why-after{margin-top:10px}@media (max-width:440px){.sure-row .row{gap:8px}.sure-row .btn{padding:12px 10px;font-size:.9rem;letter-spacing:.02em}}.travel-wait{min-height:100vh;display:flex;align-items:center;text-align:center}.travel-wait .col{max-width:28rem;margin:0 auto;padding:0 16px}.travel-wait .hanko.big{width:72px;height:72px;font-size:2.4rem;margin:0 auto 18px}.travel-wait h1{font-size:1.4rem;margin:0 0 10px}.travel-wait p{color:var(--ink-soft);line-height:1.6}.go-url{flex:1;min-width:0;padding:10px 12px;border-radius:12px;border:2px solid var(--line);background:var(--paper);color:var(--ink);font:inherit}#go-set .btn{margin-top:8px}.set-about{display:grid;gap:.75rem;padding:.625rem 0;border-bottom:1px solid var(--line)}.set-about label{display:grid;gap:.25rem}.set-about label span{color:var(--ink-soft);font-size:.85rem}.set-about .btn{justify-self:start}.typein.small{font-size:1rem;padding:.625rem .875rem;border-radius:.75rem}textarea.typein{resize:vertical;font-family:var(--f-ui);font-weight:500}.set-err{color:var(--bad-ink);font-size:.9rem;margin:0}.lesson-top .flag-top svg{width:1.25rem;height:1.25rem}.report-card{text-align:left}.report-card h3{text-align:center}.report-card textarea{width:100%;margin:.75rem 0;padding:.6rem .75rem;border:1px solid var(--line, #ddd3c2);border-radius:.75rem;background:transparent;color:inherit;font:inherit;resize:vertical}.status-head{margin:.3rem 0 .2rem;font-weight:700}.kana-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(5.5rem,1fr));gap:.75rem;width:100%}.kana-tiles.many{grid-template-columns:repeat(auto-fit,minmax(3.4rem,1fr));gap:.5rem}.kana-tile{display:flex;flex-direction:column;align-items:center;gap:.15rem;padding:.75rem .25rem .6rem;background:var(--surface);border:.125rem solid var(--line);border-radius:1.1rem;box-shadow:0 .25rem 0 var(--line);color:var(--ink);cursor:pointer;animation:popin .35s both}.kana-tile:active{transform:translateY(.2rem);box-shadow:0 .05rem 0 var(--line)}.kana-tile.seen{border-color:var(--primary-wash)}.kana-tile.on{border-color:var(--primary);box-shadow:0 .25rem 0 var(--primary-edge)}.kana-big{font:700 3rem/1.15 var(--f-jp)}.kana-tiles.many .kana-big{font-size:2.2rem}.kana-rom{font-weight:800;font-size:.95rem;color:var(--ink-soft);letter-spacing:.04em}.kana-detail{display:flex;flex-direction:column;align-items:center;gap:.5rem;margin-top:1rem;text-align:center}.kana-detail .art svg,.kana-detail .art img{width:min(10rem,45vw)}.kana-word{font:700 1.8rem/1.3 var(--f-jp)}.kana-word b{color:var(--beni)}.kana-word .gloss{display:block;font:600 .95rem/1.3 var(--f-ui);color:var(--ink-soft)}.kana-hint{margin:0;max-width:26rem;color:var(--ink-soft);font-size:.95rem}.tabbar{flex:none;border-top:2px solid var(--line);background:var(--bg);padding-bottom:env(safe-area-inset-bottom,0px);position:relative;z-index:3}.tabbar-in{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:2px;padding-block:6px}.tab{display:flex;flex-direction:column;align-items:center;gap:2px;background:none;border:0;padding:6px 2px 4px;border-radius:14px;color:var(--ink-soft);font:800 .74rem var(--f-ui);letter-spacing:.02em;cursor:pointer;min-height:52px;-webkit-tap-highlight-color:transparent}.tab .tab-ic{position:relative;display:grid;place-items:center;width:44px;height:30px;border-radius:999px;transition:background-color .15s}.tab svg{width:24px;height:24px}.tab.on{color:var(--accent-ink)}.tab.on .tab-ic{background:var(--primary-wash)}.tab:active .tab-ic{transform:scale(.92)}.tab-badge{position:absolute;top:-3px;right:-2px;min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:var(--beni);color:#fff;font:800 .68rem/18px var(--f-ui);font-style:normal;text-align:center;box-shadow:0 0 0 2px var(--bg)}.tab-badge:empty{min-width:10px;width:10px;height:10px;padding:0;top:0;right:4px}@media (max-width:440px){.tabbar-in{padding-inline:4px}.tab{letter-spacing:0;font-size:.7rem;padding-inline:0}.tab .tab-ic{width:40px}}.toptabs{display:none}.todo{display:flex;flex-direction:column;gap:8px;padding-top:12px;margin-top:12px;border-top:2px dashed var(--line)}.goal.week-card>.todo:first-child{border-top:0;margin-top:0;padding-top:0}.todo-h{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.todo-h b{font:400 1.05rem var(--f-display);letter-spacing:.02em}.goal .todo-h span{color:var(--ink-soft);font-size:.85rem;font-weight:700}.todo-row{display:flex;align-items:center;gap:12px;width:100%;text-align:left;background:var(--surface-2);border:2px solid transparent;border-radius:16px;padding:10px 12px;color:var(--ink);cursor:pointer;transition:border-color .15s,transform .1s}.todo-row:hover{border-color:var(--primary)}.todo-row:active{transform:translateY(2px)}.goal .todo-row .hanko{flex:none;width:32px;height:32px;font-size:17px;line-height:32px;color:#fff}.todo-t{flex:1;min-width:0}.todo-t b{display:block;font-weight:800}.goal .todo-t span{display:block;color:var(--ink-soft);font-size:.86rem;line-height:1.45}.goal .todo-tick{flex:none;display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:var(--ok);color:#fff}.todo-tick svg{width:18px;height:18px}.todo-row.done .todo-tick{animation:popin .35s var(--ease-pop) both}.todo-row.done{background:transparent;border-color:var(--line);border-style:dashed}.todo-row.done .todo-t b{color:var(--ink-soft)}.todo-row .due{margin-left:auto;font:800 1.1rem var(--f-ui);font-style:normal;color:var(--accent-ink);font-variant-numeric:tabular-nums}.goal.week-card>.week{margin-top:12px}.season-leaves{--season:#C8502D;--season-wash:rgba(200,80,45,.13)}.season-snow{--season:#6F90A8;--season-wash:rgba(111,144,168,.15)}.season-plum{--season:#C64F7A;--season-wash:rgba(198,79,122,.13)}.season-petals{--season:#E08AA4;--season-wash:rgba(224,138,164,.16)}.season-rain{--season:#4B7BA8;--season-wash:rgba(75,123,168,.14)}.season-fireworks{--season:#D9822B;--season-wash:rgba(217,130,43,.14)}.season-moon{--season:#C9A23E;--season-wash:rgba(201,162,62,.16)}.season-line{display:flex;align-items:center;gap:10px;width:100%;text-align:left;border:0;border-top:2px dashed var(--line);background:none;padding:10px 0 0;color:var(--ink);border-radius:0}.sl-art{flex:none;width:2rem;height:2rem;border-radius:10px;display:grid;place-items:center;background:var(--season-wash);color:var(--season);transform:rotate(-6deg)}.sl-art svg{width:1.3rem;height:1.3rem}.season-line.earned .sl-art{background:var(--season);color:#fff}.sl-t{flex:1;min-width:0;display:flex;flex-direction:column;font-weight:700;font-size:.9rem;line-height:1.3}.sl-t small{font-weight:600;font-size:.76rem;color:var(--ink-soft)}.sc-dots{display:flex;gap:2px;flex:none}.sc-dots i{width:.9rem;height:.9rem;color:var(--ink-soft);opacity:.28}.sc-dots i svg{width:100%;height:100%}.sc-dots i.lit{opacity:1;color:var(--season)}.today>.fall{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden;z-index:0}.today>:not(.fall){position:relative;z-index:1}.fall i{position:absolute;top:-30px;left:var(--x);width:var(--s);height:var(--s);color:var(--season);opacity:.55;animation:fall var(--d) linear var(--delay) infinite}.fall.m-leaves i{color:#f7a45c;opacity:.95}.fall.m-leaves i:nth-child(3n){color:#e8624a}.fall.m-leaves i:nth-child(3n+1){color:#f5c85c}.fall.m-snow i{color:#fff;opacity:.7}.fall.m-petals i{color:#f6c3d2;opacity:.8}.fall.m-plum i{color:#f2b6cb}.fall.m-rain i{color:#bfd6ee;opacity:.5}.fall.m-moon i{display:none}.fall.m-moon i:first-child{display:block;top:14px;left:auto;right:18px;width:46px;height:46px;color:#ffe7a3;opacity:.9;animation:none}.fall i svg{width:100%;height:100%;display:block}@keyframes fall{0%{transform:translate(0) rotate(0)}50%{transform:translate(18px,160px) rotate(calc(var(--r) / 2))}85%{opacity:inherit}to{transform:translate(-6px,340px) rotate(var(--r));opacity:0}}@media (prefers-reduced-motion:reduce){.fall{display:none}}.gpage.season figcaption{color:var(--ink)}.back-tabbed{display:none}@media (min-width:1100px){.tabbar{display:none}.toptabs{display:flex;gap:4px;margin-right:auto}.topbar .brand:has(+.toptabs){margin-right:22px}.toptabs .tab{flex-direction:row;gap:8px;min-height:0;padding:8px 14px 8px 8px;font-size:.95rem;border-radius:999px}.toptabs .tab .tab-ic{width:auto;height:auto;background:none!important}.toptabs .tab svg{width:22px;height:22px}.toptabs .tab.on{background:var(--primary-wash)}.toptabs .tab:hover{color:var(--ink);background:var(--surface-2)}.toptabs .tab-badge{top:-8px;right:-10px}}.journey[class*=season-] .deco.tree{fill:var(--season);opacity:.6}.map>.fall{position:absolute;inset:0 0 auto 0;height:420px;pointer-events:none;overflow:hidden}.map-season{white-space:nowrap;color:var(--season,var(--ink-soft))}.map-season svg{width:1em;height:1em;vertical-align:-.12em;margin-right:3px;color:var(--season,currentColor)}.reply .key{display:inline-grid;place-items:center;width:24px;height:24px;margin-right:10px;border-radius:7px;border:2px solid var(--line);font:700 .75rem/1 var(--f-ui);color:var(--ink-soft);vertical-align:.15em}@media (max-width:440px){.screen.read .topbar .brand b{display:block;font-size:1.2rem}}.samsung-bar{position:fixed;left:1rem;right:1rem;bottom:5.5rem;z-index:60;max-width:30rem;margin:0 auto;background:var(--surface);border:2px solid var(--line);border-radius:1.1rem;padding:.9rem 1rem;box-shadow:0 .2rem 0 var(--line);font-size:.95rem;color:var(--ink)}.samsung-bar p{margin:0 0 .7rem}.samsung-acts{display:flex;gap:.5rem;flex-wrap:wrap}.samsung-acts button{border:0;border-radius:.8rem;padding:.6rem 1rem;font:inherit;font-weight:700;min-height:2.75rem;cursor:pointer}.samsung-go{background:var(--primary);color:var(--on-primary)}.samsung-later{background:none;color:var(--ink-soft)}.install .wl-card>p{margin:0}.in-note{margin:0;color:var(--ink-soft);font-size:.9rem;text-align:center}.in-later{margin-top:-.5rem}.in-steps{list-style:none;margin:0;padding:0;display:grid;gap:1.125rem}.in-step{display:flex;gap:.75rem;align-items:flex-start}.in-step p{margin:.125rem 0 0;font-size:1.05rem;line-height:1.45}.in-step>div{flex:1;min-width:0}.in-n{flex:none;width:2rem;height:2rem;border-radius:99px;display:grid;place-items:center;background:var(--primary);color:var(--on-primary);font-weight:800}.in-pic{margin-top:.5rem;border:2px solid var(--line);border-radius:.875rem;background:var(--bg);display:flex;align-items:center;gap:.5rem;padding:.375rem .5rem;font-size:.9rem;color:var(--ink-soft)}.in-bar .in-url{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:var(--surface);border-radius:99px;padding:.375rem .75rem}.in-ios{justify-content:center}.in-hot{flex:none;width:2.5rem;height:2.5rem;display:grid;place-items:center;border-radius:99px;color:var(--primary);box-shadow:0 0 0 .1875rem var(--primary);animation:in-pulse 1.6s ease-in-out infinite}.in-hot svg{width:1.5rem;height:1.5rem;fill:currentColor}.in-ios .in-hot svg{fill:none}.in-menu span{flex:1;display:flex;align-items:center;justify-content:space-between;gap:.5rem;background:var(--surface);border-radius:.625rem;padding:.625rem .75rem;color:var(--ink);font-weight:700;box-shadow:0 0 0 .1875rem var(--primary)}.in-menu svg{flex:none;width:1.375rem;height:1.375rem}.in-done{justify-items:center;text-align:center}.in-done-cat{width:6rem;height:6rem}.in-done .wl-foot{width:100%}@keyframes in-pulse{50%{box-shadow:0 0 0 .375rem var(--primary-wash)}}@media (prefers-reduced-motion:reduce){.in-hot{animation:none}}.cards{position:relative}.cards-scroll{flex:1;overflow-y:auto;position:relative}.cards-inner{position:relative;padding-block:22px 28px;display:flex;flex-direction:column;gap:16px}.cards-foot{border-top:2px solid var(--line);background:var(--bg);padding-block:12px calc(14px + env(safe-area-inset-bottom));position:relative;z-index:2}.c-counts{display:flex;gap:8px;margin-left:auto;font-weight:800;font-variant-numeric:tabular-nums}.c-counts .cc{padding:2px 6px;border-radius:8px}.c-counts .cc.now{text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:2px}.cc.c-new{color:var(--accent-ink)}.cc.c-learn{color:var(--beni)}.cc.c-rev{color:var(--ok-ink)}.cards .brand{margin-right:0}.icon-btn[disabled]{opacity:.35;cursor:default}.fcard{background:var(--surface);border:2px solid var(--line);border-radius:22px;padding:22px 18px 26px;box-shadow:0 5px 0 var(--line);text-align:center;min-height:240px;display:flex;flex-direction:column;gap:12px}.fc-tag{font-size:.75rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft)}.fc-tag .leech{color:var(--beni)}.fc-word{font:700 clamp(2.4rem,11vw,3.6rem)/1.25 var(--f-jp);margin-block:auto;overflow-wrap:anywhere}.fc-word.dim{display:none}.fc-word-ans{margin:0}.fc-back{display:flex;flex-direction:column;gap:12px;border-top:2px dashed var(--line);padding-top:14px;animation:popin .3s var(--ease-pop)}.fc-reading{font:700 1.3rem var(--f-jp);color:var(--ink-soft)}.fc-meaning{font-size:1.25rem;font-weight:800;display:flex;justify-content:center;align-items:center;gap:4px;flex-wrap:wrap}.fc-pic{max-width:100%;max-height:220px;object-fit:contain;border-radius:14px;margin-inline:auto}.fc-sent{background:var(--surface-2);border-radius:14px;padding:12px 14px;text-align:left}.fc-sent-jp{font:700 1.15rem/1.9 var(--f-jp)}.fc-sent-en{color:var(--ink-soft);font-size:.95rem;margin-top:4px}.fc-ex{display:flex;flex-direction:column;align-items:center;gap:10px}.fc-ex .fc-sent{align-self:stretch;text-align:center}.fc-ex-btn{background:none;border:2px solid var(--line);border-radius:99px;padding:4px 14px;color:var(--ink-soft);font-weight:800;font-size:.85rem;cursor:pointer}.fc-ex-btn:hover,.fc-ex-btn:focus-visible{color:var(--ink);border-color:var(--ink-soft)}.fc-notes{font-size:.9rem;color:var(--ink-soft);text-align:left}.all-furi ruby rt{visibility:visible!important}.grades{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.grade{border:0;border-radius:14px;padding:8px 4px 10px;display:flex;flex-direction:column;align-items:center;gap:1px;color:#fff;transition:transform .07s,box-shadow .07s;position:relative}.grade small{font-size:.78rem;font-weight:700;opacity:.92}.grade b{font-size:1rem;letter-spacing:.04em}.grade kbd{position:absolute;top:4px;right:7px;font:700 .65rem var(--f-ui);opacity:.55}.grade:active{transform:translateY(4px);box-shadow:none!important}.grade.again{background:var(--beni);box-shadow:0 4px 0 var(--beni-edge)}.grade.hard{background:var(--surface);color:var(--ink);border:2px solid var(--line);box-shadow:0 4px 0 var(--line)}.grade.good{background:var(--ok);box-shadow:0 4px 0 var(--ok-edge)}.grade.easy{background:var(--primary);color:var(--on-primary);box-shadow:0 4px 0 var(--primary-edge)}@media (max-width:380px){.grade kbd{display:none}.grade b{font-size:.9rem}}@media (hover:none){.grade kbd{display:none}}.c-done{text-align:center;display:flex;flex-direction:column;align-items:center;gap:8px;padding-top:12px}.c-done h2{margin:0;font:400 1.6rem var(--f-display)}.c-done p{margin:0;max-width:46ch}.c-cat{width:130px;height:130px}.c-err{color:var(--bad-ink)}.o-num{width:76px;font:inherit;font-weight:800;text-align:right;border:2px solid var(--line);border-radius:10px;padding:4px 8px;background:var(--surface);color:var(--ink)}.note.left{text-align:left}.cards-entry{display:flex;gap:14px;align-items:center;text-align:left;width:100%;background:var(--primary-wash);border:2px solid var(--primary);border-radius:18px;padding:12px 16px;color:var(--ink);box-shadow:0 4px 0 var(--primary-edge)}.cards-entry .hanko{flex:none}.cards-entry b{display:block}.cards-entry span{color:var(--ink-soft);font-size:.9rem}.cards-entry .due{margin-left:auto;font:800 1.2rem var(--f-ui);color:var(--accent-ink);font-variant-numeric:tabular-nums}.cards-entry:active{transform:translateY(4px);box-shadow:none}.fc-pitch{justify-content:center}.fc-front{display:flex;flex-direction:column;gap:12px;margin-block:auto}.fc-ask{font-size:1.5rem}.fc-gap{color:var(--accent-ink);font-weight:800;letter-spacing:.05em}.fc-hint{color:var(--ink-soft);font-size:.95rem}.fc-pair-ask{margin-block:0;font-size:clamp(2rem,9vw,3rem)}.fcard-typed .typein{text-align:center}.fc-verdict{font-weight:700;border-radius:12px;padding:8px 12px;background:var(--surface-2)}.fc-verdict.correct{color:var(--ok-ink)}.fc-verdict.close{color:var(--accent-ink)}.fc-verdict.wrong,.fc-verdict.unsure{color:var(--bad-ink)}.fc-typed-ans{margin:0}.typed-acts{display:grid;grid-template-columns:1fr 2fr;gap:10px}.typed-acts .btn{width:100%}.grade.suggest{outline:3px solid var(--ink);outline-offset:2px}.c-finish{font-weight:700}.rescue{text-align:center}.rs-lead{margin:0;color:var(--ink-soft);font-size:.95rem}.rs-sec{display:flex;flex-direction:column;gap:8px;text-align:left;border-top:2px dashed var(--line);padding-top:12px}.rs-sec h3{margin:0;font-size:.8rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft)}.rs-sec mark{background:var(--primary-wash);color:inherit;border-radius:4px;padding:0 2px}.rs-alike{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.rs-alike li{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;background:var(--surface-2);border-radius:12px;padding:8px 12px}.rs-alike b{font:700 1.2rem var(--f-jp)}.rs-alike .rs-m{flex:1;min-width:8ch}.rs-alike small,.nw-list small{color:var(--ink-soft);font-size:.8rem}.rs-hook{width:100%;box-sizing:border-box;font:inherit;border:2px solid var(--line);border-radius:12px;padding:10px 12px;background:var(--surface);color:var(--ink);resize:vertical}.rs-hook:focus{outline:none;border-color:var(--primary)}.fc-hook{text-align:left;font-size:.95rem;background:var(--primary-wash);border-radius:12px;padding:8px 12px}.fc-hook b{display:block;font-size:.75rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft)}.nw-list{list-style:none;margin:0 0 12px;padding:0;display:flex;flex-direction:column;gap:6px}.nw-list label{display:grid;grid-template-columns:auto 1fr;column-gap:12px;align-items:center;background:var(--surface-2);border:2px solid transparent;border-radius:12px;padding:8px 12px;cursor:pointer}.nw-list label:has(input:checked){border-color:var(--primary);background:var(--primary-wash)}.nw-list input{grid-row:span 3;width:20px;height:20px;accent-color:var(--primary)}.nw-w b{font:700 1.2rem var(--f-jp)}.nw-w span{color:var(--ink-soft)}.fc-flag{justify-self:center;display:inline-flex;align-items:center;gap:.4rem;margin-top:.25rem;padding:.4rem .75rem;border:0;background:transparent;color:var(--ink-soft);font:inherit;font-size:.85rem;cursor:pointer;min-height:2.75rem}.fc-flag svg{width:1rem;height:1rem}.fc-report{border:0;border-radius:1.25rem;padding:1.25rem;max-width:22.5rem;width:calc(100% - 2rem);background:var(--surface);color:var(--ink)}.fc-report::backdrop{background:#00000059}.fc-report h3{margin:0 0 .5rem;text-align:center}.fc-report p{margin:0;color:var(--ink-soft);font-size:.95rem}.fc-report textarea{width:100%;margin:.75rem 0;padding:.6rem .75rem;border:1px solid var(--line, #ddd3c2);border-radius:.75rem;background:transparent;color:inherit;font:inherit;resize:vertical}.grade-guide{border:0;border-radius:1.25rem;padding:1.25rem;max-width:24rem;width:calc(100% - 2rem);background:var(--surface);color:var(--ink)}.grade-guide::backdrop{background:#00000059}.grade-guide h3{margin:0 0 .5rem;text-align:center}.grade-guide p{margin:0;color:var(--ink-soft);font-size:.95rem}.grade-guide ul{list-style:none;margin:.9rem 0 1rem;padding:0;display:grid;gap:.6rem}.grade-guide li{display:grid;grid-template-columns:4.5rem 1fr;gap:.75rem;align-items:center;font-size:.95rem;line-height:1.35}.gg-btn{display:block;text-align:center;font-weight:700;border-radius:.75rem;padding:.4rem 0;color:#fff}.gg-btn.again{background:var(--beni)}.gg-btn.hard{background:var(--surface);color:var(--ink);border:2px solid var(--line)}.gg-btn.good{background:var(--ok)}.gg-btn.easy{background:var(--primary);color:var(--on-primary)}.gg-acts{display:flex;justify-content:center}.gg-acts .btn{min-width:8rem}.ask{display:grid;gap:14px;max-width:760px;margin-inline:auto}.ask-line{font-size:1.35rem;font-weight:700;line-height:2;padding:12px 16px;border-radius:16px;background:var(--surface);border:2px solid var(--line)}.ask-about .note{margin-top:6px}.ask-starters{display:flex;flex-wrap:wrap;gap:8px}.ask-starters .chip{cursor:pointer;color:var(--ink);font:600 .92rem var(--f-ui);min-height:40px;padding:6px 14px}.ask-form{position:sticky;bottom:0;padding-block:8px;background:var(--bg)}.ask-form .typein{flex:1;min-width:0}.ask .chat .bubble .en{font-size:.9rem;color:var(--ink-soft)}.ask-btn{display:inline-flex;align-items:center;gap:8px;align-self:flex-start;border:2px solid var(--line);background:var(--surface);color:var(--ink);border-radius:999px;padding:6px 14px 6px 6px;font:700 .9rem var(--f-ui);cursor:pointer;min-height:40px}.ask-btn:hover{border-color:var(--primary)}.ask-hanko{display:grid;place-items:center;width:26px;height:26px;border-radius:7px;background:var(--beni,#c9362d);color:#fff7f0;font-size:.8rem;transform:rotate(-6deg)}.reply.choice.play{border-style:dashed}.ask-top{flex:none}.ask-top .ask-hanko{width:30px;height:30px;font-size:.95rem}.sheet .ask-sheet{display:block;margin:8px auto 0;background:none;border:0;color:inherit;font:700 .92rem var(--f-ui);text-decoration:underline;text-underline-offset:3px;cursor:pointer;opacity:.85;min-height:36px}.exam-report{display:grid;gap:6px;padding:14px 16px;border-radius:16px;background:var(--surface);border:2px solid var(--line);text-align:left}.exam-report p{margin:0}.exam-report ul{margin:0;padding-left:1.2em;display:grid;gap:4px}.next-week{border-color:var(--primary)}.wp-ask{margin-top:8px}.read{position:relative}.read .read-col{max-width:760px}.read-scroll{flex:1;overflow-y:auto;position:relative}.read-inner{position:relative;padding-block:20px 28px;display:flex;flex-direction:column;gap:14px}.read-intro{margin:0;color:var(--ink-soft);line-height:1.6}.read-empty{text-align:center;padding:40px 8px;display:grid;justify-items:center;gap:8px}.read-empty .hanko.big{width:64px;height:64px;font-size:34px;line-height:64px;border-radius:14px}.read-empty p{color:var(--ink-soft);line-height:1.6;max-width:46ch}.read-list{display:grid;gap:12px}@media (min-width:700px){.read-list{grid-template-columns:1fr 1fr}}@media (min-width:1300px){.read .read-col{max-width:1240px}.read-list{grid-template-columns:repeat(3,1fr)}}.read-card{display:flex;gap:14px;align-items:flex-start;text-align:left;width:100%;background:var(--surface);border:2px solid var(--line);border-radius:18px;padding:14px 16px;color:var(--ink);box-shadow:0 4px 0 var(--line);position:relative}.read-card:active{transform:translateY(4px);box-shadow:none}.read-card .hanko{flex:none}.read-card.k-news .hanko{background:var(--primary);color:var(--on-primary)}.read-card.k-corpus .hanko{background:var(--ok)}.rc-main{display:grid;gap:3px;min-width:0}.rc-eyebrow{font-size:.74rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--accent-ink)}.rc-title{font:700 1.2rem/1.9 var(--f-jp)}.rc-en{color:var(--ink-soft);font-size:.9rem}.rc-meta{display:flex;flex-wrap:wrap;gap:6px 12px;font-size:.8rem;color:var(--ink-soft);margin-top:4px}.read-card.done{opacity:.7}.rc-done{position:absolute;top:10px;right:12px;font-style:normal;font-weight:800;color:var(--ok)}.piece-grid{position:relative;padding-block:18px 28px;display:grid;gap:18px;grid-template-areas:"words" "passage" "stage"}.passage-col{grid-area:passage;min-width:0}.words-card{grid-area:words}.stage-card{grid-area:stage}@media (min-width:900px){.read.piece .read-col{max-width:1320px}.piece-grid{grid-template-columns:minmax(0,1.7fr) minmax(300px,1fr);grid-template-rows:auto 1fr;grid-template-areas:"passage words" "passage stage";align-items:start;column-gap:28px}}.piece-head{display:grid;gap:4px;margin-bottom:6px}.piece-title{margin:0;font:700 clamp(1.5rem,4vw,2.1rem)/1.8 var(--f-jp)}.piece-en{margin:0;color:var(--ink-soft)}.piece-src{margin:4px 0 0;font-size:.85rem;color:var(--ink-soft);line-height:1.6}.piece-src a{color:var(--accent-ink);font-weight:700}.piece-src small{display:block}.listen-bar{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:10px 0 6px;position:sticky;top:0;z-index:2;background:var(--bg);padding-block:8px;border-bottom:2px solid var(--line)}.listen-bar .btn{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;font-size:.85rem}.listen-bar .btn svg{width:18px;height:18px}.listen-bar .btn.ghost[aria-pressed=true]{border-color:var(--primary);color:var(--accent-ink)}.slow-toggle{display:inline-flex;align-items:center;gap:6px;font-size:.85rem;color:var(--ink-soft);font-weight:700}.r-timer{margin-left:auto;font-variant-numeric:tabular-nums;color:var(--ink-soft);font-size:.85rem;font-weight:700}.passage{display:grid;gap:4px;font-family:var(--f-jp)}.pl{margin:0;padding:6px 10px 6px 12px;border-radius:12px;border-left:4px solid transparent;font-size:clamp(1.25rem,3.2vw,1.55rem);line-height:2.15;display:grid;grid-template-columns:1fr auto;column-gap:6px;cursor:default}.pl.now{background:var(--primary-wash);border-left-color:var(--primary)}.pl-say{align-self:start;margin-top:.55em;border:0;background:none;color:var(--ink-soft);font-size:1rem;padding:4px 6px;border-radius:8px}.pl-say:hover{color:var(--accent-ink)}.pl-gram{grid-column:1/-1;justify-self:start;margin:-2px 0 4px;border:1.5px solid var(--kin);background:var(--kin-wash);color:var(--ink);font:700 .78rem/1.2 var(--f-ui);padding:3px 9px;border-radius:999px;cursor:pointer}.pl-gram:before{content:"文法 · ";color:var(--ink-soft);font-weight:600}.pl-gram:hover,.pl-gram:focus-visible{background:var(--surface-2)}.read-again{display:grid;gap:8px;margin-bottom:14px}.pl-en{grid-column:1/-1;font:500 .92rem/1.5 var(--f-ui);color:var(--ink-soft);display:none;padding-bottom:4px}.passage.show-en .pl-en,.pl.en-open .pl-en{display:block}.w{border-radius:6px;cursor:pointer;transition:background .15s}.w:hover,.w:focus-visible{background:var(--surface-2);outline:none}.w.new{text-decoration:underline dotted var(--kin) 2px;text-underline-offset:6px}.w.shaky{text-decoration:underline dotted var(--kin) 1px;text-underline-offset:6px}.w.sel{background:var(--kin-wash)}.side-card{background:var(--surface);border:2px solid var(--line);border-radius:18px;padding:14px 16px;display:grid;gap:10px}.side-card:empty{display:none}.side-p{margin:0;line-height:1.6}.side-q{margin:0;font-weight:700;font-size:1.05rem;line-height:1.5}.r-opts{display:grid;gap:8px}.r-opts .opt{padding:10px 14px}.r-why{margin:0;color:var(--bad-ink);line-height:1.5}.r-why:empty{display:none}.xp-line{margin:0;font:400 1.6rem var(--f-display);color:var(--kin)}.new-words{display:grid;gap:8px}.nw{display:grid;grid-template-columns:auto 1fr auto;align-items:baseline;column-gap:10px;row-gap:2px}.nw b{font:700 1.2rem var(--f-jp)}.nw span{color:var(--ink-soft);font-family:var(--f-jp)}.nw small{grid-column:1/3;color:var(--ink-soft);line-height:1.4}.nw .keep,.nw .wp-have{grid-row:1/3;grid-column:3}.keep{border:2px solid var(--line);background:var(--bg);color:var(--accent-ink);border-radius:12px;padding:6px 10px;font-weight:800;font-size:.8rem}.keep[disabled]{color:var(--ok);border-color:var(--ok)}.read-foot{border-top:2px solid var(--line);background:var(--bg);padding-block:12px calc(14px + env(safe-area-inset-bottom));position:relative;z-index:3}.read-foot .row{display:flex;gap:10px}.read-foot .row .btn{flex:1}.read-foot .row .btn.ghost{flex:0 0 auto}@media (min-width:900px){.read.piece .read-foot .read-col{display:flex;justify-content:flex-end}.read.piece .read-foot .read-col>*{max-width:440px;width:100%}}.word-pop{position:fixed;z-index:20;background:var(--surface);border:2px solid var(--line);border-radius:16px;padding:12px 14px;box-shadow:0 12px 30px #0000002e;display:grid;gap:6px}.word-pop p{margin:0;line-height:1.5}.wp-head{display:flex;align-items:baseline;gap:10px}.wp-head b{font:700 1.4rem var(--f-jp)}.wp-head span{color:var(--ink-soft);font-family:var(--f-jp)}.wp-have{color:var(--ok-ink);font-weight:700;font-size:.9rem}.word-pop .btn{justify-self:start;padding:8px 14px;font-size:.85rem}@media (max-width:500px){.read .passage{padding:6px 2px}.pl{padding-inline:8px 4px}}@media (min-width:1300px){.read .pl{font-size:1.75rem}}.read-choice{margin-top:18px;background:var(--surface);border:2px solid var(--line);border-radius:18px;padding:12px 16px;display:grid;gap:8px}.rch-chips{display:flex;flex-wrap:wrap;gap:8px}.rch{border:2px solid var(--line);background:var(--bg);color:var(--ink);border-radius:999px;padding:6px 14px;font-weight:700}.rch.on{background:var(--primary);border-color:var(--primary);color:#fff}.read-extras{display:grid;gap:12px;margin-top:6px}@media (min-width:700px){.read-extras{grid-template-columns:1fr 1fr}}.rx-card{display:flex;gap:14px;align-items:flex-start;background:var(--surface);border:2px dashed var(--line);border-radius:18px;padding:14px 16px}.rx-card .hanko{flex:none}.rx-main{display:grid;gap:6px;min-width:0}.rx-main span{color:var(--ink-soft);font-size:.9rem;line-height:1.5}.rx-main .btn{justify-self:start;padding:8px 14px;font-size:.85rem}.rx-row{display:flex;flex-wrap:wrap;gap:8px}.shelf{margin-top:18px;display:grid;gap:10px}.shelf:empty{display:none}.shelf .note{margin:0}.shelf-level{background:var(--surface);border:2px solid var(--line);border-radius:18px;padding:10px 16px}.shelf-level summary{cursor:pointer;display:flex;flex-wrap:wrap;gap:4px 10px;align-items:baseline;padding-block:4px}.shelf-level summary span{color:var(--ink-soft);font-size:.85rem}.shelf-books{display:grid;gap:8px;margin-top:10px}@media (min-width:700px){.shelf-books{grid-template-columns:1fr 1fr}}@media (min-width:1300px){.shelf-books{grid-template-columns:repeat(3,1fr)}}.book{display:flex;align-items:center;gap:10px;justify-content:space-between;border:2px solid var(--line);border-radius:14px;padding:8px 12px;background:var(--bg)}.book a{display:grid;gap:2px;color:var(--ink);text-decoration:none;min-width:0}.book a b{font:700 1.05rem/1.6 var(--f-jp)}.book a span{color:var(--ink-soft);font-size:.82rem}.book.done{opacity:.7}.book-done{font-style:normal;font-weight:800;color:var(--ok);white-space:nowrap;font-size:.85rem}.book .keep{flex:none}.shelf-more{display:inline-block;margin:10px 0 4px;color:var(--accent-ink);font-weight:700;font-size:.9rem}.shelf-credit{font-size:.8rem}.passage.listen-first .pl:not(.heard) .pl-jp{filter:blur(7px);-webkit-user-select:none;user-select:none;cursor:pointer}.passage.listen-first .pl:not(.heard) .pl-en{display:none}@media (prefers-reduced-motion:no-preference){.passage .pl-jp{transition:filter .3s}}.shelf .note{text-align:left}.placement{overflow-y:auto;padding:1.5rem 0 3rem}.placement .col{display:grid;gap:1.25rem;align-content:start}.placement.placement ruby rt,.placement.placement ruby.k rt{visibility:visible}.pl-head{display:flex;gap:.875rem;align-items:center}.pl-cat{flex:none;width:5rem;height:5rem}.pl-head h1{font:400 1.5rem/1.25 var(--f-display);margin:0}.pl-head p{margin:.125rem 0 0;color:var(--ink-soft)}.pl-head p.pl-unit{font-family:var(--f-jp);font-weight:700;color:var(--ink)}.pl-card{background:var(--surface);border:2px solid var(--line);border-radius:1.25rem;padding:1.25rem;display:grid;gap:1rem}.pl-card p{margin:0}.pl-note{color:var(--ink-soft);font-size:.9rem}.pl-foot{display:flex;gap:.75rem}.pl-foot .btn{flex:1}.pl-link{background:none;border:0;color:var(--accent-ink);font-weight:700;padding:.5rem;justify-self:center;text-decoration:underline;text-underline-offset:.2em}.pl-top{display:flex;align-items:center;gap:.75rem}.pl-label{flex:none;font-weight:800;font-size:.85rem;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);min-width:4.5rem;text-align:right}.pl-q{min-height:22rem;align-content:start}.pl-lead{font-weight:700;font-size:1.05rem}.pl-big{font-family:var(--f-jp);font-weight:700;font-size:2.5rem;line-height:1.6;text-align:center;padding:.75rem 0;word-break:keep-all}.pl-big.kana{font-size:4.5rem;line-height:1.2}.pl-big.en{font-family:inherit;font-size:1.6rem;line-height:1.35}.pl-big rt{font-size:.45em}.pl-sub{color:var(--ink-soft);text-align:center}.pl-opts .opt{min-height:3.25rem;font-size:1.1rem}.pl-type{display:grid;gap:.75rem}.pl-type .typein{font-size:1.4rem;text-align:center}.pl-answer{min-height:1.5rem;text-align:center;font-size:1.1rem}.pl-answer span{color:var(--ink-soft)}.pl-lines{display:grid;gap:.5rem}.pl-line{max-width:85%;padding:.625rem .875rem;border-radius:1rem;background:var(--surface-2);font-family:var(--f-jp);font-weight:700;font-size:1.15rem;display:grid;gap:.125rem}.pl-line.you{justify-self:end;background:var(--primary-wash)}.pl-line small{font-family:var(--f-body,inherit);font-weight:500;font-size:.8rem;color:var(--ink-soft)}.pl-tiles{margin:0}.pl-lower .opt{min-height:3rem}@media (min-width:44rem){.placement{padding-top:3rem}.pl-big{font-size:3rem}.pl-big.kana{font-size:5.5rem}}.pl-type .kana-wrap{flex:1}.kb-offer{display:flex;gap:.875rem;align-items:flex-start;background:var(--surface);border:.125rem solid var(--line);border-radius:1.25rem;padding:1rem;box-shadow:0 .25rem 0 var(--line)}.kb-offer b{display:block;font-size:1.05rem}.kb-offer span{display:block;color:var(--ink-soft);font-size:.9rem;margin-top:.125rem}.kb-key{flex:none;width:3rem;height:3rem;border-radius:.75rem;background:var(--primary);color:var(--on-primary);display:grid;place-items:center;font:700 1.6rem/1 var(--f-jp);box-shadow:0 .2rem 0 var(--primary-edge)}.kb-acts{display:flex;gap:.5rem;margin-top:.75rem;flex-wrap:wrap}.kb-guide .kb-acts .btn{flex:1}.kb-tabs{display:flex;gap:.375rem;margin:.75rem 0}.kb-tabs button{flex:1;padding:.6rem .5rem;border-radius:.75rem;border:.125rem solid var(--line);background:var(--surface);color:var(--ink);font-weight:700;cursor:pointer}.kb-tabs button[aria-selected=true]{border-color:var(--primary);background:var(--primary-wash);color:var(--accent-ink)}.kb-steps{list-style:none;margin:0;padding:0;display:grid;gap:.75rem}.kb-step{display:flex;gap:.875rem;align-items:flex-start;background:var(--surface-2);border-radius:1rem;padding:.75rem}.kb-pic{flex:none;width:4.5rem}.kb-pic svg{width:100%;height:auto;display:block}.kb-step p{margin:.25rem 0 0;font-size:.95rem;line-height:1.45}.trial-card{display:grid;gap:.15rem;text-align:left;width:100%;background:var(--surface);border:.125rem solid var(--line);border-radius:1.125rem;padding:.75rem 1rem;color:var(--ink);font:inherit;cursor:pointer}.trial-card b{font-size:1rem}.trial-card span{color:var(--ink-soft);font-size:.875rem;line-height:1.4}.trial-card.soon{border-color:var(--kin);background:var(--kin-wash)}.set-row .unread,.btn.ghost.danger{color:var(--beni)}.help{display:grid;gap:.75rem}.help-thread{list-style:none;margin:0;padding:0;display:grid;gap:.5rem}.help-thread li{border:.0625rem solid var(--line);border-radius:.75rem;padding:.5rem .75rem;background:var(--surface)}.help-thread li.me{margin-left:2rem}.help-thread li.staff{margin-right:2rem;background:var(--surface-2)}.help-thread li p{margin:.25rem 0 0;white-space:pre-wrap}.help-thread small{color:var(--ink-soft)}.help-form{display:grid;gap:.5rem}.help-form textarea{width:100%;box-sizing:border-box;resize:vertical}.ai-note{margin:0 0 .5rem;font-size:.8125rem;color:var(--ink-soft);line-height:1.4}.msg-flag{display:block;margin:.35rem 0 0 auto;background:none;border:0;color:var(--ink-soft);font-size:.875rem;cursor:pointer;padding:.25rem .4rem;min-width:2rem;min-height:2rem}.msg-flag:disabled{cursor:default}.set-jump{display:flex;flex-wrap:wrap;gap:.4rem;margin:.25rem 0 .5rem}.set-jump button{border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:999px;padding:.3rem .75rem;font:inherit;font-size:.85rem;cursor:pointer}.set-jump button:hover,.set-jump button:focus-visible{border-color:var(--primary)}#settings .set-h{scroll-margin-top:1rem}.r-time{display:flex;align-items:center;gap:.5rem;flex:0 0 auto}.r-time input[type=time]{font:inherit;padding:.3rem .4rem;border:1px solid var(--line);border-radius:.5rem;background:var(--surface);color:var(--ink)}.paywall{display:grid;gap:1rem}.pw-lead{font-size:1.0625rem;margin:0;line-height:1.45}.pw-cols{display:grid;gap:.75rem;grid-template-columns:repeat(auto-fit,minmax(15rem,1fr))}.pw-col{border:.0625rem solid var(--line);border-radius:1rem;padding:.75rem 1rem;background:var(--surface)}.pw-col.plus{border:.125rem solid var(--primary);background:var(--surface-2)}.pw-col h3{margin:0 0 .4rem;font-size:1rem}.pw-col ul{margin:0;padding-left:1.1rem;display:grid;gap:.3rem;font-size:.9375rem;line-height:1.4}.pw-buy{display:grid;gap:.6rem}.pw-pkgs{display:grid;gap:.6rem;grid-template-columns:repeat(auto-fit,minmax(10rem,1fr))}.pw-pkg{display:grid;gap:.15rem;text-align:left;border:.125rem solid var(--line);border-radius:1rem;padding:.8rem 1rem;background:var(--surface);color:var(--ink);font:inherit;cursor:pointer;min-height:3rem;position:relative}.pw-pkg.best{border-color:var(--primary)}.pw-pkg b{font-size:1.0625rem}.pw-pkg span{color:var(--ink-soft)}.pw-pkg small{position:absolute;top:-.6rem;right:.75rem;background:var(--primary);color:var(--on-primary,#fff);border-radius:999px;padding:.05rem .5rem;font-size:.75rem;font-weight:700}.pw-pkg:disabled{opacity:.6;cursor:default}.pw-msg{margin:0;min-height:1.2rem;color:var(--ink-soft)}.btn.small{font-size:.875rem;padding:.35rem .75rem;justify-self:start}:root{--shu:#D2382F;--ice:#5FA8D3;--ice-wash:rgba(95,168,211,.16);--washi:#FBF6EC;--washi-line:#E6DCC8 }@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--washi:#2A211B;--washi-line:#43362C;--ice:#7FC0E6 }}:root[data-theme=dark]{--washi:#2A211B;--washi-line:#43362C;--ice:#7FC0E6 }.cat .m-sleepy,.cat .m-surprised,.cat .m-love,.cat .m-proud,.cat .mo-o,.cat .zz,.cat[data-mood=sleepy] .m-open,.cat[data-mood=surprised] .m-open,.cat[data-mood=love] .m-open,.cat[data-mood=proud] .m-open{display:none}.cat[data-mood=sleepy] .m-sleepy,.cat[data-mood=sleepy] .zz,.cat[data-mood=surprised] .m-surprised,.cat[data-mood=surprised] .mo-o{display:inline}.cat[data-mood=surprised] .mo-smile{display:none}.cat[data-mood=love] .m-love,.cat[data-mood=love] .mo-cheer{display:inline}.cat[data-mood=love] .mo-smile{display:none}.cat[data-mood=proud] .m-proud{display:inline}.cat .zz text{animation:zz 2.4s ease-in-out infinite}.cat .zz text+text{animation-delay:.6s}@keyframes zz{0%{opacity:0;transform:translateY(4px)}40%{opacity:1}to{opacity:0;transform:translateY(-6px)}}.cat[data-mood=love] .m-love{transform-box:fill-box;transform-origin:center;animation:beat 1s ease-in-out infinite}@keyframes beat{50%{transform:scale(1.15)}}.cat-btn{border:0;background:none;padding:0;grid-row:1/4;grid-column:2;border-radius:50%}.cat-btn:hover .cat{transform:rotate(-4deg) scale(1.04)}.cat-btn .cat{transition:transform .2s var(--ease-pop)}.today .cat-btn .cat{width:104px;height:104px}.stat.streak{position:relative}.freeze-badge{position:absolute;right:-2px;top:0;width:15px;height:15px;border-radius:50%;background:var(--surface);color:var(--ice);display:grid;place-items:center;box-shadow:0 0 0 2px var(--bg)}.stat .freeze-badge svg{width:11px;height:11px}.stat.lvl{border:0;background:none;gap:6px}.stat.lvl:hover{background:var(--primary-wash)}.lvl-ring{--p:0;width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--kin) calc(var(--p)*360deg),var(--surface-2) 0);position:relative}.lvl-ring:before{content:"";position:absolute;top:4px;right:4px;bottom:4px;left:4px;border-radius:50%;background:var(--bg)}.lvl-ring b{position:relative;font-size:.82rem;color:var(--ink)}.lvl-xp{display:flex;align-items:center;gap:3px;color:var(--kin-edge)}:root[data-theme=dark] .lvl-xp{color:var(--kin)}@media (prefers-color-scheme: dark){:root:not([data-theme=light]) .lvl-xp{color:var(--kin)}}@media (max-width:440px){.brand b{display:none}.lvl-xp svg{display:none}.stat svg{width:22px;height:22px}.icon-btn svg{width:22px;height:22px}}.week-card{flex-direction:column;align-items:stretch;gap:10px}.goal-top{display:flex;align-items:center;gap:14px;border:0;background:none;padding:0;text-align:left;border-radius:12px}.goal.met .ring{filter:drop-shadow(0 0 6px var(--kin))}.week{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;padding-top:4px;border-top:2px dashed var(--line)}.wday{display:flex;flex-direction:column;align-items:center;gap:0;color:var(--locked-ink)}.wday .wl{width:30px;height:30px;display:grid;place-items:center;color:var(--locked)}.wday .wl svg{width:26px;height:26px}.wday small{font:700 .78rem var(--f-jp)}.wday.lit .wl{color:var(--beni);filter:drop-shadow(0 0 5px rgba(232,164,31,.65))}.wday.lit small{color:var(--ink)}.wday.frozen .wl{color:var(--ice)}.wday.frozen .wl svg{width:20px;height:20px}.wday.is-today small{color:var(--accent-ink);text-decoration:underline 2px;text-underline-offset:3px}.wday.is-today:not(.lit) .wl{animation:flicker 2.4s ease-in-out infinite}.wday.future{opacity:.45}@keyframes flicker{50%{opacity:.55}}.freeze-line{margin:0;display:flex;align-items:center;gap:6px;font-size:.84rem;color:var(--ink-soft)}.freeze-line svg{width:16px;height:16px;flex:none;color:var(--locked-ink)}.freeze-line.ready svg{color:var(--ice)}.next-stamp{display:flex;align-items:center;gap:14px;width:100%;text-align:left;border:2px solid var(--line);background:var(--surface);border-radius:18px;padding:12px 16px;box-shadow:0 4px 0 var(--line);color:var(--ink);transition:transform .07s,box-shadow .07s}.next-stamp:active{transform:translateY(4px);box-shadow:0 0 0 var(--line)}.next-stamp.big{border-color:var(--kin);box-shadow:0 4px 0 var(--kin-edge);background:linear-gradient(100deg,var(--kin-wash),transparent 70%),var(--surface)}.ns-art{flex:none;width:3.6rem;height:3.6rem;display:grid;place-items:center}.ns-art svg{width:100%;height:100%}.ns-t{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}.ns-t small{font-size:.72rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft)}.ns-t b{font:400 1.1rem/1.3 var(--f-display)}.ns-t b [lang=ja]{font-family:var(--f-jp);font-weight:700}.ns-left{font-size:.88rem;color:var(--ink)}.ns-book{font-size:.8rem;color:var(--ink-soft);margin-top:4px}.next-stamp .town-bar i{background:var(--kin)}.tile-card{position:relative;text-align:left;border:2px solid var(--line);background:var(--surface);border-radius:18px;padding:12px 14px 14px;box-shadow:0 4px 0 var(--line);display:flex;flex-direction:column;gap:1px;min-width:0;color:var(--ink);transition:transform .07s,box-shadow .07s}.tile-card:active{transform:translateY(4px);box-shadow:0 0 0 var(--line)}.tile-card small{font-size:.72rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft)}.tile-card b{font:400 1.1rem/1.3 var(--f-display);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tile-card span{font-size:.85rem;color:var(--ink-soft)}.tc-art{height:56px;display:flex;align-items:flex-end;margin-bottom:6px}.town-bar{display:block;height:7px;border-radius:99px;background:var(--surface-2);overflow:hidden;margin-top:6px}.town-bar i{display:block;height:100%;background:var(--ok);border-radius:99px}.unit-town{display:flex;align-items:center;gap:4px;font:700 1rem var(--f-jp);opacity:.95}.unit-lm{width:38px;height:38px;filter:drop-shadow(0 2px 0 rgba(0,0,0,.15))}.unit.locked .unit-lm{filter:grayscale(1);opacity:.6}.panel{position:absolute;top:0;right:0;bottom:0;left:0;z-index:40;background:var(--bg);display:flex;flex-direction:column;transform:translateY(100%);transition:transform .32s cubic-bezier(.2,.8,.2,1)}.panel.up{transform:none}.panel-top{border-bottom:2px solid var(--line);background:var(--bg)}.panel-top-in{display:flex;align-items:center;gap:8px;padding-block:10px}.panel-top h2{margin:0;flex:1;font:400 1.45rem var(--f-display)}.panel-top h2 small{font:700 .8rem var(--f-ui);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);margin-left:6px}.panel-scroll{flex:1;overflow-y:auto;position:relative}.panel-body{padding-block:16px 60px}.book-sum{margin:0 0 6px;color:var(--ink-soft)}.book-sum b{color:var(--ink)}.book-h{margin:22px 0 10px;font:800 .8rem var(--f-ui);letter-spacing:.14em;text-transform:uppercase;color:var(--accent-ink)}.note{color:var(--ink-soft)}.gbook{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}.gpage{position:relative;margin:0;aspect-ratio:3/4;background:var(--washi);border:1.5px solid var(--washi-line);border-radius:6px;box-shadow:0 2px 0 var(--washi-line),inset 0 0 30px #785a280f;display:grid;grid-template-columns:18px minmax(0,1fr) 18px;column-gap:4px;grid-template-rows:1fr auto;align-items:center;justify-items:center;padding:10px 8px 8px;animation:pagein .4s var(--ease-pop) both;animation-delay:calc(var(--i,0)*40ms)}@keyframes pagein{0%{opacity:0;transform:translateY(8px)}}.gpage .seal{grid-column:2;grid-row:1;width:100%;max-width:120px;height:auto;justify-self:stretch}.gbrush{writing-mode:vertical-rl;font:700 .78rem/1 var(--f-jp);color:var(--ink);letter-spacing:.12em;opacity:.85;grid-row:1}.gbrush.right{grid-column:3;font-size:1rem;letter-spacing:.3em}.gbrush.left{grid-column:1;font-size:.66rem;opacity:.7}.gpage figcaption{grid-column:1/-1;font-size:.8rem;font-weight:700;text-align:center;line-height:1.35;margin-top:6px;color:var(--ink);overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.gpage figcaption .gold{color:var(--kin-edge);font-family:var(--f-jp)}.gpage.unit{background:linear-gradient(var(--washi),var(--washi)) padding-box;border-color:var(--shu)}.gpage.ghost{background:transparent;border:2px dashed var(--line);box-shadow:none;color:var(--locked)}.gpage.ghost figcaption{color:var(--ink-soft);font-weight:600}.gpage.fresh:after{content:"新";position:absolute;top:6px;left:6px;width:22px;height:22px;border-radius:50%;background:var(--shu);color:#fff;font:700 .75rem/22px var(--f-jp);text-align:center}.seal .seal-g{font-family:Zen Maru Gothic,Yu Mincho,Hiragino Mincho ProN,serif;font-weight:700}.seal .seal-n{font-family:var(--f-display)}.seal.ghost{opacity:.9}.bk-tabs{position:sticky;top:0;z-index:5;display:grid;grid-template-columns:repeat(4,1fr);gap:6px;padding:8px 0;margin-top:6px;background:var(--bg)}.bk-tab{display:flex;flex-direction:column;align-items:center;gap:0;border:2px solid var(--line);background:var(--surface);border-radius:14px;padding:6px 4px;color:var(--ink-soft);min-width:0}.bk-tab b{font:700 1.05rem/1.2 var(--f-jp);color:var(--ink)}.bk-tab small{font-size:.7rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase}.bk-tab[aria-selected=true]{border-color:var(--primary);background:var(--primary-wash);color:var(--accent-ink)}.bk-page{padding-top:8px}.bk-towns{display:flex;flex-direction:column;gap:14px}.bk-town{display:grid;grid-template-columns:minmax(0,9.5rem) minmax(0,1fr);gap:14px;align-items:start;background:var(--surface);border:2px solid var(--line);border-radius:18px;padding:12px;scroll-margin-top:5rem}.bk-town.here{border-color:var(--primary);box-shadow:0 0 0 4px var(--primary-wash)}.bk-town-t{display:flex;flex-direction:column;gap:2px;min-width:0;line-height:1.3}.bk-town-t small{font-size:.7rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft)}.bk-town-t b{font:700 1.7rem/1.2 var(--f-jp)}.bk-town-t span{font-size:.9rem;font-weight:700}.bk-town-t em{font-style:normal;font-size:.84rem;color:var(--ink-soft)}.bk-town.ahead .bk-town-t b{color:var(--ink-soft)}.bk-seals{display:flex;flex-wrap:wrap;gap:4px;margin-top:8px}.bk-seals span{width:2.1rem;height:2.1rem;display:grid}.bk-seals span .seal{width:100%;height:100%}.bk-seals span.empty{border:2px dashed var(--line);border-radius:50%;width:1.8rem;height:1.8rem;margin:.15rem}.bk-more{margin-top:12px}@media (max-width:400px){.bk-town{grid-template-columns:minmax(0,6.5rem) minmax(0,1fr);gap:10px;padding:10px}.bk-town-t b{font-size:1.4rem}}@media (min-width:600px){.bk-town{grid-template-columns:minmax(0,12rem) minmax(0,1fr)}}.gs-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(9rem,calc(50% - 7px)),1fr));gap:14px}.gs-page{position:relative;margin:0;display:flex;flex-direction:column;gap:6px;min-width:0}.gs-page .goshuin{display:block;width:100%;height:auto;aspect-ratio:300/430;border-radius:6px;box-shadow:0 2px 0 var(--washi-line),0 8px 20px #281e1429}.gs-page figcaption{font-size:.8rem;font-weight:700;text-align:center;line-height:1.35;color:var(--ink)}.gs-perk{display:block;margin-top:.15rem;font-size:.7rem;font-weight:600;color:var(--kin-edge)}.gs-page.ghost .goshuin{filter:grayscale(1);opacity:.4;box-shadow:none;outline:2px dashed var(--line);outline-offset:-2px}.gs-page.ghost figcaption{color:var(--ink-soft);font-weight:600}.gs-page.fresh:after{content:"新";position:absolute;top:6px;left:6px;width:22px;height:22px;border-radius:50%;background:var(--shu);color:#fff;font:700 .75rem/22px var(--f-jp);text-align:center}.bk-town .gs-page figcaption{font-size:.74rem}.map{position:relative;margin:10px -16px 0;background:radial-gradient(circle at 20% 10%,var(--primary-wash),transparent 40%),radial-gradient(circle at 80% 60%,var(--kin-wash),transparent 45%)}.road{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.road-bed{fill:none;stroke:var(--surface-2);stroke-width:22;stroke-linecap:round}.road-dash{fill:none;stroke:var(--line);stroke-width:3;stroke-dasharray:8 10;stroke-linecap:round}.deco{fill:none;stroke:var(--ink-soft);stroke-width:.6;opacity:.35;vector-effect:non-scaling-stroke}.deco.tree{fill:var(--ok);stroke:none;opacity:.25}.town{position:absolute;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;z-index:1;border:0;background:none;padding:0;color:inherit;font:inherit;text-align:inherit}.town-pin{position:relative;width:84px;height:84px;border-radius:50%;background:var(--surface);border:3px solid var(--line);box-shadow:0 5px 0 var(--line);display:grid;place-items:center}.town-pin .landmark{width:58px;height:58px}.town.visited .town-pin{border-color:var(--ok);box-shadow:0 5px 0 var(--ok-edge)}.town.here .town-pin{border-color:var(--primary);box-shadow:0 5px 0 var(--primary-edge),0 0 0 8px var(--primary-wash);animation:float 2s ease-in-out infinite}.town.ahead .town-pin .landmark{filter:grayscale(1) opacity(.45)}.town-seal{position:absolute;right:-14px;bottom:-10px;width:40px;height:40px;transform:rotate(12deg)}.town-cat{position:absolute;width:74px;height:74px;top:-62px;left:44px}.town-label{position:absolute;top:6px;width:min(170px,40vw);display:flex;flex-direction:column;line-height:1.25}.town-label.right{left:calc(100% + 14px)}.town-label.left{right:calc(100% + 14px);text-align:right;align-items:flex-end}.town-label small{font-size:.68rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft)}.town-label b{font-size:1.6rem;line-height:1.2}.town-label span{font-size:.84rem;font-weight:700}.town-label em{font-style:normal;font-size:.8rem;color:var(--ink-soft)}.town-label .town-bar{width:100%;max-width:120px}.town.ahead .town-label b{color:var(--ink-soft)}.wr-stage{position:relative;display:grid;place-items:center;padding:30px 0 4px;background:radial-gradient(circle at 50% 60%,var(--kin-wash),transparent 60%)}.wr-cat .cat{width:190px;height:190px}.wr-say{position:absolute;right:12%;top:12px;background:var(--surface);border:2px solid var(--line);border-radius:14px;padding:4px 10px;font:700 1rem var(--f-jp);animation:popin .35s var(--ease-pop)}.lvl-card{display:flex;align-items:center;gap:14px;background:var(--surface);border:2px solid var(--line);border-radius:18px;padding:12px 16px;margin-top:8px}.lvl-badge{width:58px;height:58px;flex:none;border-radius:16px;background:var(--kin);color:#2a1e05;display:grid;place-items:center;font:800 .7rem/1 var(--f-ui);box-shadow:0 4px 0 var(--kin-edge);text-transform:uppercase}.lvl-badge b{font:400 1.6rem/1 var(--f-display);display:block}.lvl-txt{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.lvl-txt small{font-size:.8rem;color:var(--ink-soft);font-weight:700}.lvl-txt span{font-size:.82rem;color:var(--ink-soft)}.lvl-bar{display:block;height:10px;border-radius:99px;background:var(--surface-2);overflow:hidden}.lvl-bar i{display:block;height:100%;background:var(--kin);border-radius:99px}.wr-row{display:grid;grid-template-columns:repeat(auto-fill,minmax(98px,1fr));gap:10px}.wr-item{display:flex;flex-direction:column;align-items:center;gap:2px;border:2px solid var(--line);background:var(--surface);border-radius:16px;padding:10px 6px 8px;box-shadow:0 4px 0 var(--line);transition:transform .07s,box-shadow .07s}.wr-item:active{transform:translateY(4px);box-shadow:0 0 0 var(--line)}.wr-item svg{width:60px;height:52px}.wr-item b{font:700 .95rem var(--f-jp)}.wr-item small{font-size:.72rem;color:var(--ink-soft);display:flex;align-items:center;gap:3px;text-align:center}.wr-item small svg{width:12px;height:12px}.wr-item.on{border-color:var(--primary);background:var(--primary-wash);box-shadow:0 4px 0 var(--primary)}.wr-item.locked{opacity:.55;cursor:default}.wr-item.locked>svg{filter:grayscale(1) brightness(.6) opacity(.5)}.goal-opts{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:12px}.goal-opt{display:flex;flex-direction:column;align-items:flex-start;gap:2px;border:2px solid var(--line);background:var(--surface);border-radius:16px;padding:14px;box-shadow:0 4px 0 var(--line);text-align:left}.goal-opt b{font:400 1.3rem var(--f-display)}.goal-opt span{font-weight:800}.goal-opt small{color:var(--ink-soft)}.goal-opt.on{border-color:var(--kin);box-shadow:0 4px 0 var(--kin-edge);background:var(--kin-wash)}.cele{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;display:grid;place-items:center;padding:16px;background:#140e0a8c;opacity:0;transition:opacity .25s}.cele.in{opacity:1}.cele-card{position:relative;overflow:hidden;width:min(440px,100%);max-height:calc(100vh - 32px);overflow-y:auto;background:var(--surface);border-radius:26px;padding:24px 20px 20px;text-align:center;box-shadow:0 8px 0 var(--line),0 30px 60px #0000004d;transform:scale(.85) translateY(20px);transition:transform .4s var(--ease-pop);display:flex;flex-direction:column;align-items:center;gap:8px}.cele.in .cele-card{transform:none}.cele-card h2{margin:0;font:400 1.6rem/1.25 var(--f-display);text-wrap:balance;position:relative}.cele-kicker{font:800 .85rem var(--f-jp);letter-spacing:.12em;color:var(--shu);position:relative}.cele-kicker.small{margin-top:6px;font-size:.75rem;color:var(--accent-ink)}.cele-sub{margin:0;color:var(--ink-soft);position:relative;max-width:36ch}.cele-perk{margin:.5rem 0 0;position:relative;max-width:36ch;font-size:.9rem;color:var(--kin-edge)}.cele-perk b{color:var(--ink)}.cele-btns{display:flex;gap:10px;width:100%;margin-top:10px;position:relative}.cele-btns .btn{flex:1;padding-inline:12px;font-size:.92rem;white-space:nowrap}.cele-cat .cat{width:120px;height:120px}.cele-book{width:100%;grid-template-columns:repeat(auto-fill,minmax(118px,1fr))}.cele-book.one{grid-template-columns:minmax(0,190px);justify-content:center}.cele-book .gpage .seal{opacity:0;transform:scale(2.6) rotate(-14deg)}.cele-book .gpage.slam .seal{animation:slam .42s cubic-bezier(.3,1.4,.5,1) forwards}@keyframes slam{0%{opacity:0;transform:scale(2.6) rotate(-14deg)}60%{opacity:1;transform:scale(.92) rotate(2deg)}to{opacity:1;transform:none}}.cele-book .gpage.slam{animation:thud .3s .25s}@keyframes thud{50%{transform:translateY(3px) scale(.985)}}.cele-seals{display:flex;flex-wrap:wrap;justify-content:center;gap:6px;width:100%}.cele-seals span{width:4.2rem;height:4.2rem;display:grid}.cele-seals.one span{width:8rem;height:8rem}.cele-seals .seal{width:100%;height:100%;opacity:0;transform:scale(2.6) rotate(-14deg)}.cele-seals span.slam .seal{animation:slam .42s cubic-bezier(.3,1.4,.5,1) forwards}.cele-goshuin{width:min(13rem,60vw);position:relative}.cele-goshuin .goshuin{display:block;width:100%;height:auto;border-radius:6px;box-shadow:0 10px 26px #00000040;clip-path:inset(0 0 100% 0);transform:rotate(-1.5deg)}.cele-goshuin.go .goshuin{clip-path:inset(0 0 0 0);transition:clip-path 1.2s cubic-bezier(.5,0,.3,1)}.cele-landmark .landmark.big{width:110px;height:110px;animation:jump .8s var(--ease-pop)}.trip{display:grid;grid-template-columns:56px 1fr 56px;align-items:center;gap:6px;width:100%;margin-top:8px}.trip-end{display:flex;flex-direction:column;align-items:center}.trip-end .landmark{width:48px;height:48px}.trip-end small{font:700 .9rem var(--f-jp)}.trip-road{position:relative;height:56px;border-bottom:3px dashed var(--line);margin-bottom:22px}.trip-cat{position:absolute;left:-10px;bottom:-6px;width:56px;height:56px;transition:left 2.4s cubic-bezier(.45,0,.3,1)}.trip-cat .cat{width:56px;height:56px}.trip.go .trip-cat{left:calc(100% - 46px);animation:hop .4s ease-in-out 6}@keyframes hop{50%{transform:translateY(-8px)}}.rays-wrap{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none;border-radius:inherit}.rays{position:absolute;top:-50%;right:-50%;bottom:-50%;left:-50%;background:repeating-conic-gradient(var(--kin-wash) 0 10deg,transparent 10deg 20deg);animation:spin 18s linear infinite;pointer-events:none}@keyframes spin{to{transform:rotate(360deg)}}.lvl-big{position:relative;display:flex;flex-direction:column;align-items:center;line-height:1}.lvl-big small{font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);font-size:.8rem}.lvl-big b{font:400 5rem/1 var(--f-display);color:var(--kin-edge);text-shadow:0 4px 0 var(--kin-wash)}.lvl-big b.lvl-pop{animation:bump .6s var(--ease-pop)}.unlock-row{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;position:relative}.unlock{display:flex;flex-direction:column;align-items:center;background:var(--kin-wash);border:2px solid var(--kin);border-radius:14px;padding:8px 12px;animation:popin .4s .5s var(--ease-pop) both}.unlock svg{width:56px;height:48px}.unlock b{font:700 .95rem var(--f-jp)}.unlock small{font-size:.72rem;color:var(--ink-soft)}.big-lantern{position:relative;width:120px;height:144px}.big-lantern svg{position:relative;z-index:1;width:100%;height:100%;animation:sway 3s ease-in-out infinite;transform-origin:50% 0}.big-lantern .glow{position:absolute;top:10%;right:-10%;bottom:10%;left:-10%;border-radius:50%;background:radial-gradient(circle,rgba(240,180,41,.75),transparent 65%);animation:glow 1.6s ease-in-out infinite}@keyframes sway{50%{transform:rotate(3deg)}}@keyframes glow{50%{opacity:.55;transform:scale(1.08)}}@media (prefers-reduced-motion: reduce){.rays,.big-lantern svg,.big-lantern .glow,.trip.go .trip-cat,.town.here .town-pin,.wday.is-today .wl{animation:none!important}.cele-book .gpage .seal,.cele-seals .seal{opacity:1;transform:none}.cele-goshuin .goshuin{clip-path:none!important;transition:none!important}.trip-cat{transition:none}}.wr-next{margin:.75rem 0 0;font-size:.85rem;color:var(--ink-soft);text-align:center}.pd{display:grid;gap:14px}.pd-seg{display:inline-flex;justify-self:start;background:var(--surface-2);border-radius:99px;padding:4px;gap:4px}.pd-seg button{border:0;background:none;color:var(--ink-soft);font:800 .9rem var(--f-ui);letter-spacing:.04em;padding:8px 18px;border-radius:99px;cursor:pointer}.pd-seg button[aria-selected=true]{background:var(--surface);color:var(--ink);box-shadow:0 2px 0 var(--line)}.pd-loading{color:var(--ink-soft)}.pd-hero{margin:2px 0 4px}.pd-kicker{margin:0;font:800 .74rem var(--f-ui);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft)}.pd-hero h2{margin:2px 0 0;font:400 1.7rem/1.2 var(--f-display)}.pd-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:10px 0 16px}.pd-stat{background:var(--surface);border:2px solid var(--line);border-radius:16px;padding:10px 12px;display:flex;flex-direction:column}.pd-stat b{font:400 1.7rem/1.1 var(--f-display);color:var(--primary)}.pd-stat span{color:var(--ink-soft);font-size:.85rem;font-weight:700}.pd-grid{display:grid;gap:16px;grid-template-columns:minmax(0,1fr)}.pd-col{display:grid;gap:16px;align-content:start;min-width:0}.pd-sec{background:var(--surface);border:2px solid var(--line);border-radius:18px;padding:14px 16px;min-width:0}.pd-sec h3{display:flex;align-items:center;gap:10px;margin:0 0 10px;font:400 1.2rem var(--f-display)}.pd-sec h3 .hanko{width:28px;height:28px;font-size:15px;line-height:28px;flex:none}.pd-lesson{border-top:1px solid var(--line);padding:12px 0 4px}.pd-lesson:first-of-type{border-top:0;padding-top:0}.pd-lesson header{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px}.pd-lesson h4{margin:0;font:800 1.08rem var(--f-jp)}.pd-lesson header small{color:var(--ink-soft);font-size:.8rem;font-weight:700}.pd-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}.pd-tag{background:var(--primary-wash);color:var(--accent-ink);border-radius:99px;padding:2px 10px;font:700 .82rem var(--f-jp)}.pd-ex{margin:10px 0;padding:10px 14px;border-left:4px solid var(--kin);background:var(--surface-2);border-radius:0 12px 12px 0}.pd-ex p{margin:0;font:700 1.25rem/1.5 var(--f-jp)}.pd-ex small{display:block;color:var(--ink-soft);font-size:.9rem;margin-top:2px}.pd-ex.small p{font-size:1.05rem}.pd-drop{border:2px solid var(--line);border-radius:14px;margin:8px 0;background:var(--bg)}.pd-drop>summary,.pd-why>summary{cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px;padding:9px 12px;font-weight:800;font-size:.95rem}.pd-drop>summary::-webkit-details-marker,.pd-why>summary::-webkit-details-marker,.pd-forgot summary::-webkit-details-marker{display:none}.pd-drop>summary:after,.pd-forgot summary:after{content:"";margin-left:auto;width:8px;height:8px;border-right:2.5px solid var(--ink-soft);border-bottom:2.5px solid var(--ink-soft);transform:rotate(45deg);transition:transform .2s;flex:none}.pd-drop[open]>summary:after,.pd-forgot details[open] summary:after{transform:rotate(225deg)}.pd-drop>summary i{font-style:normal;background:var(--surface-2);border-radius:99px;padding:0 8px;font-size:.8rem}.pd-peek{font:700 .95rem var(--f-jp);color:var(--ink-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.pd-drop[open]>summary{border-bottom:1px solid var(--line)}.pd-words,.pd-kanji{list-style:none;margin:0;padding:10px;display:grid;gap:8px;grid-template-columns:repeat(auto-fill,minmax(min(130px,100%),1fr))}.pd-words li{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:8px 10px;display:flex;flex-direction:column;min-width:0}.pd-words b{font:800 1.2rem var(--f-jp)}.pd-words small{color:var(--ink-soft);font:700 .85rem var(--f-jp)}.pd-words span{font-size:.85rem;overflow-wrap:anywhere}.pd-kanji{grid-template-columns:minmax(0,1fr)}.pd-kanji li{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:8px 10px;display:flex;gap:10px;align-items:center;min-width:0}.pd-kanji b{font:800 2rem/1 var(--f-jp);flex:none}.pd-kanji div{display:flex;flex-direction:column;min-width:0}.pd-kanji span{font-weight:700;font-size:.9rem}.pd-kanji small{color:var(--ink-soft);font:600 .78rem var(--f-jp);overflow-wrap:anywhere}.pd-why{margin:-2px 0 8px;color:var(--ink-soft)}.pd-why>summary{padding:0;font-size:.85rem;color:var(--accent-ink);text-decoration:underline dotted}.pd-why p{margin:6px 0 0;font-size:.9rem}.pd-forgots,.pd-slips{list-style:none;margin:0;padding:0;display:grid;gap:8px}.pd-forgot{border:2px solid var(--line);border-radius:14px;background:var(--bg);min-width:0;overflow:hidden}.pd-forgot details{min-width:0}.pd-frow{display:flex;align-items:center;gap:10px;padding:9px 12px;cursor:pointer;list-style:none;min-width:0}.pd-fw{font:800 1.35rem var(--f-jp);flex:none}.pd-fm{flex:1;min-width:0;font-size:.9rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pd-fm small{color:var(--ink-soft);font:700 .85rem var(--f-jp);margin-right:6px}.pd-badge{flex:none;background:var(--bad-bg);color:var(--bad-ink);border-radius:99px;padding:1px 9px;font-weight:800;font-size:.78rem}.pd-badge.old{background:var(--kin-wash);color:var(--ink)}.pd-fmore{padding:0 12px 4px;border-top:1px solid var(--line)}.pd-fmore .pd-kanji{padding:4px 0 8px}.pd-slips li{border:2px solid var(--line);border-radius:14px;padding:9px 12px;background:var(--bg)}.pd-slips li>div{display:flex;align-items:center;gap:8px;justify-content:space-between}.pd-fix{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:6px 0 0;font:700 1.1rem var(--f-jp)}.pd-fix s{color:var(--bad-ink);text-decoration-thickness:2px}.pd-fix span[lang]{color:var(--ok-ink)}.pd-fix span[aria-hidden]{color:var(--ink-soft)}.pd-together{background:var(--kin-wash);border:2px solid var(--kin-edge);border-radius:18px;padding:12px 16px}.pd-together b{font:400 1.05rem var(--f-display)}.pd-together p{margin:4px 0 0}.pd-empty{display:flex;align-items:center;gap:12px;color:var(--ink-soft);padding:20px 0}.pd-actions{position:sticky;bottom:0;display:flex;gap:10px;padding:12px 0 6px;background:linear-gradient(to bottom,transparent,var(--bg) 30%)}.pd-actions .btn{flex:1}.pd-text{white-space:pre-wrap;word-break:break-word;font:500 .92rem/1.55 var(--f-ui);background:var(--surface-2);border-radius:12px;padding:12px 14px;-webkit-user-select:text;user-select:text}@media (min-width:440px){.pd-kanji{grid-template-columns:repeat(auto-fill,minmax(170px,1fr))}.pd-stats{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (min-width:680px){.pd-grid{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr)}.pd-hero h2{font-size:2rem}.pd-actions{justify-content:flex-end}.pd-actions .btn{flex:0 0 auto;min-width:200px}}.pd-views{margin:0 0 4px}.pd-views i{font-style:normal;background:var(--bad-bg);color:var(--bad-ink);border-radius:99px;padding:0 7px;margin-left:4px;font-size:.78rem}.pd-view[hidden]{display:none}.pd-sk-note{margin:0 0 10px;color:var(--ink-soft);font-size:.9rem}.pd-sks{list-style:none;margin:0;padding:0;display:grid;gap:10px;grid-template-columns:minmax(0,1fr)}.pd-sk{border:2px solid var(--line);border-radius:14px;background:var(--bg);padding:10px 12px;min-width:0}.pd-sk-top{display:flex;align-items:center;gap:12px;min-width:0}.pd-sk-top>b{font:800 2.4rem/1 var(--f-jp);flex:none}.pd-sk-top>div{display:flex;flex-direction:column;flex:1;min-width:0}.pd-sk-top span{font-weight:700;font-size:.95rem}.pd-sk-top small{color:var(--ink-soft);font:600 .8rem var(--f-jp);overflow-wrap:anywhere}.pd-sk-top .pd-badge{align-self:flex-start}.pd-sk-words{list-style:none;margin:8px 0 0;padding:8px 0 0;border-top:1px solid var(--line);display:grid;gap:4px}.pd-sk-words li{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 8px;min-width:0}.pd-sk-words span{font:700 1.05rem var(--f-jp)}.pd-sk-words small{color:var(--ink-soft);font:600 .82rem var(--f-jp)}.pd-sk-words em{font-style:normal;font-size:.85rem;overflow-wrap:anywhere}@media (min-width:680px){.pd-sks{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1100px){.pd-sks{grid-template-columns:repeat(3,minmax(0,1fr))}}.pday .panel-top h2{white-space:nowrap}.nb{display:grid;gap:16px;grid-template-columns:minmax(0,1fr)}.nb-side{display:grid;grid-template-columns:minmax(0,1fr);gap:16px;align-content:start;min-width:0}.nb-diary{min-width:0}.nb-card,.nb-diary{background:var(--surface);border:2px solid var(--line);border-radius:18px;padding:14px 16px}.nb h3{margin:0 0 4px;font:400 1.25rem var(--f-display)}.nb p{margin:.4rem 0}.nb .note{color:var(--ink-soft);font-size:.92rem}.nb-head{display:flex;gap:12px;align-items:flex-start}.nb-head .hanko{flex:none}.nb-head p{color:var(--ink-soft)}.nb-write{margin-top:10px}.nb-write textarea{font:500 1.15rem/1.6 var(--f-jp);resize:vertical;min-height:7.5em}.nb-row{display:flex;align-items:center;gap:12px;margin-top:10px}.nb-count{color:var(--ink-soft);font-size:.85rem;font-variant-numeric:tabular-nums;margin-right:auto}.nb-sub{margin:20px 0 6px;font:800 .78rem var(--f-ui);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft)}.nb-pace{margin:0}.nb-pace b{display:block}.nb-entry{border-top:2px dashed var(--line);padding:12px 0}.nb-when{font:700 .8rem var(--f-ui);color:var(--ink-soft);letter-spacing:.06em}.nb-orig{font:500 1.05rem/1.6 var(--f-jp);color:var(--ink-soft);margin:4px 0}.nb-fixed{font:700 1.15rem/1.6 var(--f-jp);background:var(--ok-wash, var(--surface-2));border-radius:12px;padding:8px 12px;margin:6px 0}.nb-fixes{list-style:none;padding:0;margin:6px 0;display:grid;gap:6px}.nb-fixes li{line-height:1.5}.nb-fixes s{color:var(--beni);text-decoration-thickness:2px}.nb-fixes span{display:block;color:var(--ink-soft);font-size:.9rem}.nb-good{color:var(--ok)}.nb-ask{background:var(--surface-2);border-radius:12px;padding:8px 12px;margin-top:8px}.nb-ask ul{margin:4px 0 0;padding-left:1.2em}.nb-wait{display:flex;align-items:center;gap:8px;color:var(--ink-soft)}.nb-wait .dots{display:inline-flex;gap:4px}.nb-wait .dots i{width:6px;height:6px;border-radius:50%;background:var(--ink-soft);animation:nbdot 1.2s infinite ease-in-out}.nb-wait .dots i:nth-child(2){animation-delay:.15s}.nb-wait .dots i:nth-child(3){animation-delay:.3s}@keyframes nbdot{0%,80%,to{opacity:.25;transform:none}40%{opacity:1;transform:translateY(-3px)}}@media (prefers-reduced-motion:reduce){.nb-wait .dots i{animation:none;opacity:.6}}.nb .link{background:none;border:0;padding:0;color:var(--accent-bright, var(--accent-ink));font:inherit;text-decoration:underline;cursor:pointer}.nb-err{color:var(--beni);font-weight:700}.nb-big{font:800 2.6rem/1 var(--f-ui);color:var(--accent-ink);font-variant-numeric:tabular-nums;margin:6px 0}.nb-big small{font-size:1.2rem;margin-left:2px}.nb-notes{list-style:none;padding:0;margin:8px 0;display:grid;gap:6px}.nb-notes li{display:flex;align-items:center;gap:8px;background:var(--surface-2);border-radius:12px;padding:4px 4px 4px 12px}.nb-notes li span{flex:1;min-width:0}.nb-notes .icon-btn{width:34px;height:34px;flex:none}.nb-yours{font:700 .72rem var(--f-ui);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft)}.nb-add{display:flex;gap:8px;margin-top:8px}.nb-add input{flex:1;min-width:0;font:500 1rem var(--f-ui);padding:10px 12px;border-radius:12px;border:2px solid var(--line);background:var(--bg);color:var(--ink)}.nb-add .btn{padding:10px 14px;font-size:.9rem}.nb-threads{list-style:none;padding:0;margin:8px 0 0;display:grid;gap:4px}.nb-threads li{display:flex;justify-content:space-between;gap:10px;padding:6px 0;border-bottom:1px solid var(--line);color:var(--ink-soft)}.nb-threads li:last-child{border-bottom:0}.nb-threads li b{font-weight:600;min-width:0}.nb-threads li span{flex:0 1 auto;font-size:.88rem;text-align:right}.nb-threads li.on{color:var(--ink)}.nb-threads li.on span{color:var(--accent-ink)}@media (min-width:700px){.notebook .col{max-width:1000px}.nb{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);align-items:start}}@media (min-width:1300px){.notebook .col{max-width:1240px}.nb{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:24px}.nb-write textarea{min-height:9em}}.nb .note,.nb p{text-align:left}.nb-check .btn{margin-top:6px}.nb-units{list-style:none;padding:0;margin:10px 0 4px;display:grid;gap:6px}.nb-units li{display:flex;justify-content:space-between;gap:10px;align-items:baseline;padding:8px 12px;border-radius:12px;background:var(--surface-2)}.nb-units li span{min-width:0}.nb-units li b{flex:none;font-size:.85rem;letter-spacing:.04em}.nb-units .v-can-do b{color:var(--ok)}.nb-units .v-nearly b{color:var(--accent-ink)}.nb-units .v-not-yet b{color:var(--beni)}.nb-trend{font-style:normal;margin-left:6px}.nb-trend.up{color:var(--ok)}.nb-trend.down{color:var(--beni)}.nb-bars{display:grid;gap:6px;margin:8px 0}.nb-bar{display:grid;grid-template-columns:5.5rem minmax(0,1fr) 2.6rem;gap:8px;align-items:center;font-size:.88rem}.nb-track{height:10px;border-radius:5px;background:var(--surface-2);overflow:hidden}.nb-track i{display:block;height:100%;background:var(--accent-ink);border-radius:5px}.nb-bar b{text-align:right;font-variant-numeric:tabular-nums}.nb-spark{width:100%;max-width:260px;height:44px;color:var(--accent-ink);display:block}.nb-big small{font-size:.9rem;color:var(--ink-soft)}.nb-main{display:grid;grid-template-columns:minmax(0,1fr);gap:16px;min-width:0;align-content:start}.nb-mcard{background:var(--surface-2);border-radius:14px;padding:12px 14px;margin-top:10px}.nb-mcard b{font:700 1.1rem var(--f-ui)}.nb-mothers{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.nb-mothers .chip{border:2px solid var(--line);background:var(--bg);color:var(--ink);border-radius:999px;padding:8px 14px;font:600 .92rem var(--f-ui);cursor:pointer;min-height:40px}.nb-mothers small{color:var(--ok)}.nb-mstep{display:flex;justify-content:space-between;align-items:center;font:800 .78rem var(--f-ui);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:6px}.nb-mlist{margin:6px 0 12px;padding-left:1.2em;display:grid;gap:6px;line-height:1.55}.nb-mlist[lang=ja]{font:500 1.08rem/1.7 var(--f-jp)}.nb-phrases{list-style:none;padding:0;margin:6px 0 14px;display:grid;gap:6px}.nb-phrases li,.nb-sents li{display:flex;align-items:center;gap:8px;background:var(--surface-2);border-radius:12px;padding:6px 6px 6px 12px}.nb-phrases li span{flex:1;min-width:0;font:500 1.12rem/1.8 var(--f-jp)}.nb-pnote{background:var(--surface-2);border-left:4px solid var(--beni);border-radius:8px;padding:8px 12px;font:600 1rem/1.6 var(--f-jp)}.nb-ticks{list-style:none;padding:0;margin:8px 0 14px;display:grid;gap:8px}.nb-ticks label{display:flex;gap:12px;align-items:flex-start;background:var(--surface-2);border-radius:12px;padding:10px 12px;cursor:pointer}.nb-ticks input{width:22px;height:22px;flex:none;margin-top:2px;accent-color:var(--accent)}.nb-ticks b{display:block;font:600 1.02rem/1.5 var(--f-jp)}.nb-ticks small{color:var(--ink-soft)}.nb-xp{font:800 1.6rem var(--f-ui);color:var(--accent-ink);margin:4px 0}.nb-moved{list-style:none;padding:0;margin:6px 0;display:grid;gap:4px}.nb-moved li{display:flex;justify-content:space-between;gap:10px;padding:5px 0;border-bottom:1px solid var(--line)}.nb-moved .o-fail b,.nb-moved .o-lapse b{color:var(--beni)}.nb-theirs{margin:10px 0}.nb-theirs summary{cursor:pointer;font-weight:700}.nb-sents{list-style:none;padding:0;margin:8px 0 0;display:grid;gap:6px}.nb-sents li>div{flex:1;min-width:0}.nb-sents li span{display:block;font:500 1.08rem/1.6 var(--f-jp)}.nb-sents li small{display:block;color:var(--ink-soft);font-size:.82rem}.nb-sents .icon-btn{width:34px;height:34px;flex:none}.nb-pq{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:10px}.nb-pq li{background:var(--surface-2);border-radius:14px;padding:10px 12px;display:grid;gap:6px}.nb-pq li p{margin:0;font-weight:600}.nb-pq li small{color:var(--ink-soft)}.nb-pq.done li b{font-weight:700;color:var(--ok, var(--ink))}.nb-pans{display:flex;gap:8px}.nb-pans input{flex:1;min-width:0;font:500 1rem var(--f-ui);padding:8px 12px;border-radius:12px}.nb-slip-list{list-style:none;padding:0;margin:10px 0 6px;display:grid;gap:8px}.nb-slip-list li{background:var(--surface-2);border-radius:14px;padding:10px 12px;display:grid;gap:4px;min-width:0}.nb-slip-list .note{margin:0}.nb-slip-list .btn{justify-self:start;margin-top:4px}.nb-slip-h{display:flex;justify-content:space-between;align-items:baseline;gap:10px}.nb-slip-n{font:800 1.1rem var(--f-ui);color:var(--accent-ink);font-variant-numeric:tabular-nums}.nb-slip-ex{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 8px;margin:2px 0 0;font-family:var(--f-jp)}.nb-slip-ex s{color:var(--beni)}.nb-slip-ex b{color:var(--ok-ink)}.nb-slip-ex small{font-family:var(--f-ui);color:var(--ink-soft);flex-basis:100%}.tour{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200}.tour-hole{position:fixed;border-radius:1.1rem;box-shadow:0 0 0 200vmax #0f0a089e;transition:left .25s,top .25s,width .25s,height .25s;pointer-events:none}.tour.centred .tour-hole{left:50%;top:50%;width:0;height:0}.tour-card{position:fixed;width:min(22rem,calc(100vw - 1.5rem));background:var(--surface);color:var(--ink);border-radius:1.25rem;padding:1rem 1.1rem .9rem;box-shadow:0 .5rem 2rem #00000059;transition:left .25s,top .25s}.tour.centred .tour-card{left:50%;top:50%;transform:translate(-50%,-50%)}.tour-n{font-size:.72rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft)}.tour-card h3{margin:.15rem 0 .35rem;font:400 1.25rem var(--f-display)}.tour-card p{margin:0 0 .9rem;line-height:1.5}.tour-btns{display:flex;align-items:center;gap:.5rem}.tour-skip{margin-right:auto;min-height:2.75rem;padding:0 .25rem;background:none;border:0;color:var(--ink-soft);font:inherit;font-weight:700;text-decoration:underline;text-underline-offset:3px;cursor:pointer}@media (prefers-reduced-motion:reduce){.tour-hole,.tour-card{transition:none}}.gold-chip{border:0;background:none;color:var(--kin-edge)}.gold-chip:hover{background:var(--kin-wash)}:root[data-theme=dark] .gold-chip{color:var(--kin)}@media (prefers-color-scheme: dark){:root:not([data-theme=light]) .gold-chip{color:var(--kin)}}@media (max-width:440px){.gold-chip svg{width:1.25rem;height:1.25rem}}.tile-card.shop-tile{flex-direction:row;align-items:center;gap:.875rem;width:100%}.tc-art.shop-art{margin:0;align-items:center;justify-content:center;flex:none;width:3.25rem;height:3.25rem;border-radius:50%;display:grid;place-items:center;background:var(--kin-wash)}.shop-art svg{width:2.25rem;height:2.25rem}.shop-tile-txt{display:flex;flex-direction:column;min-width:0}.shop-tile-txt b{color:var(--kin-edge)}:root[data-theme=dark] .shop-tile-txt b{color:var(--kin)}@media (prefers-color-scheme: dark){:root:not([data-theme=light]) .shop-tile-txt b{color:var(--kin)}}.purse{display:flex;align-items:center;gap:.875rem;padding:.875rem 1rem;border-radius:1.125rem;background:var(--kin-wash);border:2px solid var(--kin)}.purse>svg{flex:none;width:2.75rem;height:2.75rem}.purse b{display:block;font:400 1.6rem/1.2 var(--f-display);color:var(--ink)}.purse b small{font:700 .85rem var(--f-ui);color:var(--ink-soft)}.purse span{display:block;font-size:.85rem;color:var(--ink-soft);line-height:1.4}.shop-tabs{display:flex;gap:.5rem;overflow-x:auto;margin:1rem -1rem 0;padding:0 1rem .25rem;scrollbar-width:none}.shop-tab{flex:none;border:2px solid var(--line);background:var(--surface);border-radius:999px;padding:.5rem .875rem;font-weight:800;font-size:.9rem;min-height:2.75rem;box-shadow:0 3px 0 var(--line)}.shop-tab span{font-family:var(--f-jp)}.shop-tab.on{border-color:var(--primary);background:var(--primary);color:var(--on-primary);box-shadow:0 3px 0 var(--primary-edge)}.shop-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(8.5rem,1fr));gap:.75rem}.shop-item{position:relative;display:flex;flex-direction:column;align-items:stretch;gap:.125rem;text-align:left;border:2px solid var(--line);background:var(--surface);border-radius:1rem;padding:.5rem .5rem .625rem;box-shadow:0 4px 0 var(--line);transition:transform .07s,box-shadow .07s;min-width:0}.shop-item:active{transform:translateY(4px);box-shadow:0 0 0 var(--line)}.shop-item b{font:700 1.05rem/1.3 var(--f-jp);margin-top:.375rem}.shop-item small{font-size:.75rem;color:var(--ink-soft);line-height:1.3}.shop-item .si-st{display:flex;align-items:center;gap:.2rem;font-weight:800;color:var(--kin-edge);flex-wrap:wrap}.shop-item .si-st svg{width:.95rem;height:.95rem;flex:none}.shop-item .si-st em{font-style:normal;font-weight:600;color:var(--ink-soft)}.shop-item.have .si-st{color:var(--ok-ink)}.shop-item .si-earn{color:var(--ink-soft);font-size:.72rem;line-height:1.25}.shop-item.on{border-color:var(--primary);background:var(--primary-wash);box-shadow:0 4px 0 var(--primary)}.shop-item.trying{border-color:var(--kin);box-shadow:0 4px 0 var(--kin-edge),0 0 0 4px var(--kin-wash)}.shop-item.away{opacity:.55;cursor:default}.shop-item.away:active{transform:none;box-shadow:0 4px 0 var(--line)}.si-bar{display:block;height:.3rem;border-radius:.2rem;background:var(--surface-2);overflow:hidden;margin-top:.25rem}.si-bar i{display:block;height:100%;background:var(--kin)}.swatch{position:relative;display:block;aspect-ratio:16/10;border-radius:.625rem;background:var(--sw-bg);border:1.5px solid var(--sw-line);overflow:hidden}.swatch .sw-card{position:absolute;left:10%;top:14%;width:80%;height:44%;border-radius:.4rem;background:var(--sw-p);box-shadow:0 .2rem 0 var(--sw-e)}.swatch .sw-btn{position:absolute;left:10%;bottom:12%;width:52%;height:18%;border-radius:.3rem;background:var(--sw-s);border:1px solid var(--sw-line)}.swatch .sw-dot{position:absolute;right:10%;bottom:12%;width:18%;aspect-ratio:1;border-radius:50%;background:var(--sw-a)}.shop-try{position:fixed;left:0;right:0;bottom:0;z-index:45;background:var(--surface);border-top:2px solid var(--line);box-shadow:0 -.5rem 1.5rem #0000001f;padding:.75rem 0 calc(.75rem + env(safe-area-inset-bottom));animation:tryup .25s var(--ease-pop)}.shop.panel .panel-body{padding-bottom:8rem}@keyframes tryup{0%{transform:translateY(100%)}}.shop-try-in{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.st-txt{flex:1 1 12rem;min-width:0;display:flex;flex-direction:column;line-height:1.3}.st-txt b{font-size:.95rem}.st-txt b span{font-family:var(--f-jp)}.st-txt span{font-size:.8rem;color:var(--ink-soft)}.shop-try .btn{flex:none}.shop-toast{position:fixed;left:50%;bottom:6rem;transform:translate(-50%);z-index:50;background:var(--ink);color:var(--bg);padding:.625rem 1rem;border-radius:.75rem;font-weight:700;max-width:calc(100vw - 2rem);animation:popin .3s var(--ease-pop)}:root[data-scheme=kinpaku] .today{background:linear-gradient(135deg,var(--primary) 0%,color-mix(in srgb,var(--primary) 70%,#fff3c4) 45%,var(--primary) 100%)}.screen.home{position:relative}.scene-bg{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none;overflow:hidden}.scene-bg:empty{display:none}.scene-bg svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.scene-bg:not(:empty):after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(var(--bg) 0,color-mix(in srgb,var(--bg) 45%,transparent) 22%,color-mix(in srgb,var(--bg) 25%,transparent) 100%)}.screen.home>.home-scroll{z-index:1}:root[data-scene] .home-scroll.shippo{background-image:none}:root{--surface-solid:var(--surface);--surface-2-solid:var(--surface-2);--line-solid:var(--line)}:root[data-scene] .screen.home{--glass:color-mix(in srgb,var(--surface-solid) 88%,var(--primary));--surface:color-mix(in srgb,var(--glass) 58%,transparent);--surface-2:color-mix(in srgb,var(--surface-2-solid) 62%,transparent);--line:color-mix(in srgb,var(--line-solid) 72%,var(--primary))}:root[data-scene] .screen.home .warmup{background:linear-gradient(var(--kin-wash),var(--kin-wash)),var(--surface)}:root[data-scene] .screen.home :is(.goal,.next-stamp,.tile-card,.warmup,.node.open,.homework,.nb-card){-webkit-backdrop-filter:blur(.375rem) saturate(1.4);backdrop-filter:blur(.375rem) saturate(1.4)}:root[data-scene] .screen.home :is(.today .go,.pop .btn){background:var(--surface-solid)}:root[data-scene] .screen.home>.scene-bg:not(:empty):after{background:linear-gradient(var(--bg) 0,color-mix(in srgb,var(--bg) 30%,transparent) 14%,color-mix(in srgb,var(--bg) 8%,transparent) 100%)}:root[data-scene] .node-label{text-shadow:0 0 .4rem var(--bg),0 0 .4rem var(--bg)}.scene-thumb{position:relative;display:block;aspect-ratio:1;border-radius:.625rem;overflow:hidden;border:1.5px solid var(--line);background:var(--bg)}.scene-thumb svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.scene-thumb.rings{background-image:var(--shippo);background-size:1.5rem}.try-pic{flex:none;width:5.5rem}.try-pic .scene-thumb{aspect-ratio:3/4}.scene-bg .print{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.scene-bg .print-bg{position:absolute;top:-2rem;right:-2rem;bottom:-2rem;left:-2rem;background:var(--print) center/cover;filter:blur(1.5rem) saturate(.9);opacity:0}@media (min-aspect-ratio:4/5){.scene-bg.is-print .print-bg{opacity:.7}.scene-bg.is-print .print{object-fit:contain}}:root[data-theme=dark] .scene-bg.is-print>*{filter:brightness(.5) saturate(.85)}:root[data-theme=dark] .scene-bg.is-print .print-bg{filter:blur(1.5rem) brightness(.45)}@media (prefers-color-scheme: dark){:root:not([data-theme=light]) .scene-bg.is-print>*{filter:brightness(.5) saturate(.85)}:root:not([data-theme=light]) .scene-bg.is-print .print-bg{filter:blur(1.5rem) brightness(.45)}}.scene-thumb.is-print img,.try-pic img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.si-art{display:block;font-size:.7rem;color:var(--ink-soft);font-style:italic}.set-thumb{position:relative;display:block}.set-thumb .swatch{position:absolute;right:.375rem;bottom:.375rem;width:46%;box-shadow:0 .15rem .5rem #00000040}.shop-item .si-save{color:var(--ok-ink);font-weight:700;font-size:.72rem}.book-h small{display:block;font:500 .78rem/1.35 var(--f-ui);color:var(--ink-soft);letter-spacing:0;text-transform:none;margin-top:.125rem}.title-thumb{display:flex;flex-direction:column;justify-content:center;gap:.25rem;aspect-ratio:16/10;border-radius:.625rem;background:var(--surface-2);border:1.5px solid var(--line);padding:0 .75rem}.title-thumb b{font-weight:800;font-size:.95rem;margin:0;font-family:var(--f-ui)}.title-thumb small{align-self:flex-start;font:700 .8rem/1.2 var(--f-jp);color:var(--accent-ink);background:var(--primary-wash);border-radius:999px;padding:.15rem .5rem}.finish-thumb{position:relative;display:block;aspect-ratio:16/10;border-radius:.625rem;overflow:hidden;border:1.5px solid var(--line)}.finish-thumb svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.try-pic .title-thumb{aspect-ratio:auto;height:100%;min-width:7rem}.shop-hint{margin-top:.75rem}.panel.shop>.scene-bg{z-index:0}.panel.shop>.scene-bg:not(:empty):after{background:linear-gradient(var(--bg) 0,color-mix(in srgb,var(--bg) 70%,transparent) 30%,color-mix(in srgb,var(--bg) 55%,transparent) 100%)}.panel.shop>.panel-top,.panel.shop>.panel-scroll{position:relative;z-index:1}.panel.shop>.panel-top{background:color-mix(in srgb,var(--bg) 88%,transparent)}:root[data-scene] .panel.shop .book-h,:root[data-scene] .panel.shop .shop-hint{text-shadow:0 0 .4rem var(--bg),0 0 .4rem var(--bg)}.panel.shop.peek{transform:translateY(100%)}.shop-peek{position:fixed;left:0;right:0;bottom:0;z-index:45;background:var(--surface);border-top:2px solid var(--line);box-shadow:0 -.5rem 1.5rem #0000001f;padding:.75rem 0 calc(.75rem + env(safe-area-inset-bottom));animation:tryup .25s var(--ease-pop)}.shop-peek.nudge{animation:peeknudge .35s}@keyframes peeknudge{30%{transform:translateY(-.375rem)}60%{transform:translateY(.125rem)}}.shop-peek-in{display:flex;align-items:center;gap:.75rem;justify-content:space-between;flex-wrap:wrap}.shop-peek-in span{font-size:.9rem}.shop-peek-in b{font-family:var(--f-jp)}.shop-peek-in small{display:block;color:var(--ink-soft);font-size:.78rem}.shop-peek-btns{display:flex;gap:.5rem}.an-sentence{font:700 clamp(1.3rem,5vw,1.8rem)/1.7 var(--f-jp);text-align:center;margin-top:.4rem}.an-flip{perspective:700px;display:flex;justify-content:center}.an-flip-card{position:relative;width:min(16rem,80%);height:6.5rem;transform-style:preserve-3d;animation:anFlip .9s .9s var(--ease-pop,cubic-bezier(.3,1.4,.5,1)) forwards}.an-face{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:16px;border:3px solid var(--ink,#2A2730);background:var(--paper,#FFFDF8);font:800 clamp(1.6rem,6vw,2.2rem)/1.4 var(--f-jp);backface-visibility:hidden}.an-face small{font:600 .75rem/1 var(--f-ui,system-ui);opacity:.65;margin-bottom:.3rem;text-transform:uppercase;letter-spacing:.06em}.an-face.back{transform:rotateY(180deg);color:var(--accent-ink,#1F4F8F)}@keyframes anFlip{to{transform:rotateY(180deg)}}.an-time{position:relative;display:flex;align-items:flex-start;justify-content:center;gap:.6rem;padding-top:1.4rem;flex-wrap:wrap}.an-arrow{position:absolute;left:4%;right:4%;top:.6rem;height:4px;border-radius:2px;background:var(--ink,#2A2730);transform-origin:left;transform:scaleX(0);animation:anGrow .6s .2s ease-out forwards}.an-arrow:after{content:"";position:absolute;right:-2px;top:-6px;border:8px solid transparent;border-left:12px solid var(--ink,#2A2730)}.an-event{display:flex;flex-direction:column;align-items:center;opacity:0;transform:translateY(-18px);animation:anDrop .5s calc(.7s + var(--i)*.45s) var(--ease-pop,cubic-bezier(.3,1.4,.5,1)) forwards}.an-event b{font:800 clamp(1.1rem,4.5vw,1.5rem)/1.6 var(--f-jp)}.an-event small{opacity:.7}.an-link{align-self:center;font:700 1rem var(--f-jp);color:var(--accent-ink,#1F4F8F);opacity:0;animation:anFade .3s 1.2s forwards}@keyframes anGrow{to{transform:scaleX(1)}}@keyframes anDrop{to{opacity:1;transform:none}}@keyframes anFade{to{opacity:1}}.an-give{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:.6rem}.an-who{font:800 clamp(1.1rem,4.5vw,1.5rem)/1.5 var(--f-jp);padding:.4rem .8rem;border:3px solid var(--ink,#2A2730);border-radius:999px;background:var(--paper,#FFFDF8)}.an-track{position:relative;height:2.6rem;border-bottom:4px dashed var(--ink,#2A2730)}.an-gift{position:absolute;left:0;bottom:4px;width:1.6rem;height:1.4rem;border:3px solid var(--ink,#2A2730);border-radius:3px;background:linear-gradient(90deg,transparent 40%,#F0B429 40% 60%,transparent 60%),#d2382f;animation:anSlide 1.1s .6s ease-in-out forwards}.an-verb{position:absolute;left:50%;bottom:-1.8rem;transform:translate(-50%);font:700 .95rem var(--f-jp);color:var(--accent-ink,#1F4F8F)}@keyframes anSlide{to{left:calc(100% - 1.8rem)}}.an-scale{display:flex;flex-direction:column;align-items:center;margin:.4rem 0 .2rem}.an-beam{display:flex;justify-content:space-between;width:min(18rem,90%);border-bottom:5px solid var(--ink,#2A2730);transform-origin:50% 100%;animation:anTip .9s .6s var(--ease-pop,cubic-bezier(.3,1.4,.5,1)) forwards}.an-pan{font:800 clamp(1.1rem,4.5vw,1.5rem)/1.5 var(--f-jp);padding:.2rem .6rem;border:3px solid var(--ink,#2A2730);border-radius:12px 12px 4px 4px;background:var(--paper,#FFFDF8);margin-bottom:.2rem}.an-post{width:6px;height:2.2rem;background:var(--ink,#2A2730);border-radius:3px}@keyframes anTip{to{transform:rotate(calc(var(--tip,1)*8deg))}}.an-ladder{display:flex;flex-direction:column-reverse;gap:.35rem;align-items:center}.an-rung{display:grid;grid-template-columns:6.5rem auto 1fr;gap:.6rem;align-items:baseline;width:min(22rem,95%);padding:.35rem .7rem;border:3px solid var(--ink,#2A2730);border-radius:12px;background:var(--paper,#FFFDF8);margin-left:calc(var(--i)*1.1rem);opacity:0;transform:translate(-14px);animation:anDrop .45s calc(.3s + var(--i)*.35s) ease-out forwards}.an-rung small{opacity:.65;font-size:.78rem}.an-rung b{font:800 1.2rem/1.5 var(--f-jp)}.an-rung span{opacity:.7;font-size:.85rem}@media (prefers-reduced-motion:reduce){.an-flip-card,.an-arrow,.an-event,.an-link,.an-gift,.an-beam,.an-rung{animation-duration:.01s;animation-delay:0s}}.reader{position:relative;display:flex;flex-direction:column;gap:12px;font-family:var(--f-jp)}.reader .en-tog{flex:none;height:28px;min-width:40px;padding:0 8px;border-radius:9px;border:2px solid var(--line);background:var(--surface);font:800 .72rem/1 var(--f-ui);color:var(--ink-soft);letter-spacing:.06em}.reader .en-tog[aria-pressed=true]{border-color:var(--primary);color:var(--accent-ink);background:var(--primary-wash)}.vn-stage{position:relative;aspect-ratio:5/3;border-radius:20px;overflow:hidden;background:var(--surface-2);border:2px solid var(--line);box-shadow:0 4px 0 var(--line);isolation:isolate}.vn-bg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;transition:filter .4s}.vn-bg.plain{background:linear-gradient(var(--surface-2),var(--bg))}.vn-stage.narrating .vn-bg{filter:saturate(.85) brightness(.96)}.vn-place{position:absolute;left:12px;top:12px;z-index:3;background:var(--surface);color:var(--ink);border-radius:999px;padding:3px 12px 3px 10px;font-weight:700;font-size:.9rem;box-shadow:0 2px 0 var(--line);border-left:5px solid var(--beni);animation:placein .6s .2s var(--ease-pop) both}@keyframes placein{0%{opacity:0;transform:translate(-30px)}}.vn-cast{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;pointer-events:none}.actor{position:absolute;bottom:-4%;height:88%;aspect-ratio:2/3;transform:translate(-50%);transition:left .5s var(--ease-pop),filter .3s,opacity .3s;animation:enter .55s var(--d,0s) var(--ease-pop) both}.actor.at-left{left:20%}.actor.at-center{left:50%}.actor.at-right{left:80%}.actor .sprite{display:block;width:100%;height:100%;object-fit:contain;object-position:bottom;animation:bob 3.2s var(--bob,0s) ease-in-out infinite;transform-origin:50% 100%}.actor.is-cat{height:46%;aspect-ratio:1;bottom:2%}.actor.is-cat .cat-sprite{width:100%;height:100%}.vn-cast:has(.speaking) .actor:not(.speaking){filter:brightness(.82) saturate(.8)}.actor.speaking{z-index:2}.actor.talking .sprite{animation:talk .36s ease-in-out infinite alternate}.actor.hop{animation:hop .45s var(--ease-pop)}.actor.leaving{animation:leave .5s ease-in forwards}@keyframes enter{0%{opacity:0;transform:translate(-50%) translateY(18%)}to{opacity:1;transform:translate(-50%)}}@keyframes hop{0%,to{transform:translate(-50%)}40%{transform:translate(-50%) translateY(-7%)}}@keyframes leave{to{opacity:0;transform:translate(-50%) translateY(12%)}}@keyframes talk{to{transform:translateY(-1.5%) scaleY(1.01)}}.vn-box{--who:var(--primary);position:relative;min-height:128px;background:var(--surface);border:2px solid var(--line);border-top:4px solid var(--who);border-radius:18px;padding:22px 16px 14px;box-shadow:0 4px 0 var(--line);cursor:pointer;transition:border-color .25s}.vn-name{position:absolute;top:-15px;left:14px;background:var(--who);color:#fff;font:800 .9rem/1 var(--f-jp);padding:6px 12px;border-radius:10px;box-shadow:0 2px #0000002e}.vn-name:empty{display:none}.vn-box.who-you{--who:var(--kin-edge)}.vn-box.who-narrator{border-top-color:var(--line)}.vn-box.who-narrator .vn-line{font-style:normal;color:var(--ink-soft)}.vn-line{font-size:1.3rem;font-weight:700;line-height:2;min-height:2em}.vn-en{font:500 .95rem/1.5 var(--f-ui);color:var(--ink-soft);margin-top:4px;display:none}.reader.show-en .vn-en:not(:empty){display:block}.vn-tools{position:absolute;right:10px;top:-15px;display:flex;gap:6px;align-items:center}.vn-tools .say-mini{margin:0;background:var(--surface);border-radius:999px}.vn-more{position:absolute;right:16px;bottom:8px;font-size:.7rem;color:var(--who);opacity:0;animation:more 1s ease-in-out infinite}.vn-text:has(.typed)~.vn-more{opacity:1}@keyframes more{50%{transform:translateY(3px)}}.ch{opacity:0;animation:ch .12s calc(var(--i) * 32ms) forwards}.typed .ch{animation:none;opacity:1}@keyframes ch{to{opacity:1}}.vn-box.choosing{cursor:default;border-top-color:var(--kin)}.choice-q{font:700 .95rem/1.6 var(--f-jp);color:var(--ink-soft);margin-bottom:8px}.choice-list{display:grid;gap:8px}.reply.choice{display:flex;align-items:center;gap:10px;width:100%;animation:popin .35s var(--ease-pop) both}.reply.choice .key{flex:none;width:26px;height:26px;border-radius:8px;border:2px solid currentColor;display:grid;place-items:center;font:800 .75rem/1 var(--f-ui);opacity:.7}.reply.choice.own{border-style:dashed;box-shadow:none;font-family:var(--f-ui);font-size:1rem}.own-form{margin-bottom:8px}.linkish{background:none;border:0;padding:4px 0;color:var(--accent-ink);font:700 .9rem var(--f-ui);text-decoration:underline}.vn-box.who-why{--who:var(--beni);cursor:pointer}.why-note{font:600 1rem/1.7 var(--f-ui)}.why-note b{color:var(--beni);font-family:var(--f-jp)}.vn-title{position:absolute;top:0;right:0;bottom:0;left:0;z-index:10;display:grid;place-items:center;background:var(--bg);animation:fadein .3s both;cursor:pointer;border-radius:20px}.vn-title-in{text-align:center;padding:24px;animation:popin .6s .1s var(--ease-pop) both}.vn-title small{display:block;font:800 .8rem/1 var(--f-ui);letter-spacing:.14em;text-transform:uppercase;color:var(--beni);margin-bottom:10px}.vn-title h2{font:400 2rem/1.25 var(--f-display);margin:0 0 10px}.vn-title span{color:var(--ink-soft);font:600 .95rem var(--f-ui)}.vn-title-in:after{content:"";display:block;width:56px;height:4px;border-radius:2px;background:var(--beni);margin:16px auto 0;animation:grow .7s .35s ease-out both}.vn-title.out{animation:fadeout .4s forwards}@keyframes fadein{0%{opacity:0}}@keyframes fadeout{to{opacity:0;transform:scale(1.04)}}@keyframes grow{0%{width:0}}.book .page{background:var(--surface);border:2px solid var(--line);border-radius:6px 20px 20px 6px;box-shadow:inset 10px 0 12px -10px #00000040,0 4px 0 var(--line);padding:14px;display:flex;flex-direction:column;gap:12px;transform-origin:0 50%}.page.turn-in{animation:turnin .5s var(--ease-pop) both}.page.turn-out{animation:turnout .38s ease-in forwards}@keyframes turnin{0%{opacity:0;transform:perspective(900px) rotateY(-24deg) translate(20px)}}@keyframes turnout{to{opacity:0;transform:perspective(900px) rotateY(70deg)}}.page-head{display:flex;align-items:center;gap:10px}.page-no{font:800 .78rem/1 var(--f-ui);letter-spacing:.12em;text-transform:uppercase;color:var(--beni)}.page-place{flex:1;font-weight:700;color:var(--ink-soft);font-size:.95rem}.page-pic{position:relative;aspect-ratio:2/1;border-radius:14px;overflow:hidden;background:var(--surface-2)}.page-cast .actor{height:96%}.page-cast .actor.is-cat{height:50%}.page-text{display:flex;flex-direction:column;gap:10px;cursor:pointer;min-height:96px}.pl{margin:0;font-size:1.2rem;font-weight:700;line-height:2;animation:popin .3s var(--ease-pop) both}.pl.said{--who:var(--primary);border-left:4px solid var(--who);padding-left:10px}.pl.said.you{--who:var(--kin-edge)}.pl.narr{color:var(--ink)}.pl-name{display:block;font:800 .78rem/1.2 var(--f-jp);color:var(--who)}.pl-en{display:none;font:500 .92rem/1.5 var(--f-ui);color:var(--ink-soft)}.pl.open .pl-en,.reader.show-en .pl-en{display:block}.pl .say-mini{width:28px;height:28px}.page-choice{display:grid;gap:8px}.pl.why-note{border-left:4px solid var(--beni);padding-left:10px;font-size:1rem}@media (max-width:420px){.vn-line{font-size:1.15rem}.vn-title h2{font-size:1.6rem}.actor.at-left{left:18%}.actor.at-right{left:82%}}@media (prefers-reduced-motion: reduce){.reader *,.reader *:after{animation-duration:.01ms!important;animation-delay:0s!important;animation-iteration-count:1!important;transition:none!important}.ch{opacity:1}}.fb{display:grid;gap:1rem;grid-template-columns:minmax(0,1fr)}.fb-main,.fb-side{display:grid;gap:1rem;align-content:start;min-width:0}.fb-card{background:var(--surface);border:.125rem solid var(--line);border-radius:1.125rem;padding:.875rem 1rem}.fb h3{margin:0 0 .25rem;font:400 1.25rem var(--f-display)}.fb .note{color:var(--ink-soft);font-size:.92rem;margin:.4rem 0;text-align:left}.fb-head{display:flex;justify-content:space-between;align-items:baseline;gap:.75rem;flex-wrap:wrap}.fb-head span{color:var(--ink-soft);font-size:.85rem}.fb-league{list-style:none;padding:0;margin:.5rem 0 0;display:grid;gap:.5rem}.fb-row{display:grid;grid-template-columns:1.75rem minmax(0,1fr) auto;gap:.25rem .75rem;align-items:center;padding:.625rem .5rem;border-radius:.875rem}.fb-row.is-me{background:var(--primary-wash)}.fb-rank{font:800 1.1rem var(--f-ui);color:var(--ink-soft);text-align:center;font-variant-numeric:tabular-nums}.fb-row:first-child .fb-rank{color:var(--kin)}.fb-who{min-width:0;display:grid;gap:.25rem}.fb-who b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fb-who small{color:var(--ink-soft);font-weight:600}.fb-on{display:inline-block;width:.55rem;height:.55rem;border-radius:50%;background:var(--ok);vertical-align:middle;margin-left:.2rem}.fb-bar{display:block;height:.5rem;border-radius:99px;background:var(--surface-2);overflow:hidden}.fb-bar i{display:block;height:100%;border-radius:99px;background:var(--primary);min-width:.25rem}.fb-row.is-me .fb-bar i{background:var(--kin)}.fb-meta{color:var(--ink-soft);font-size:.8rem}.fb-title{justify-self:start;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.75rem;font-weight:700;color:var(--accent-ink);background:var(--primary-wash);border-radius:999px;padding:.1rem .5rem}.fb-title span{font-family:var(--f-jp)}.fb-xp{text-align:right;line-height:1}.fb-xp b{display:block;font:800 1.35rem var(--f-ui);font-variant-numeric:tabular-nums;color:var(--accent-ink)}.fb-xp small{font:800 .7rem var(--f-ui);color:var(--ink-soft);letter-spacing:.08em}.fb-act{grid-column:2 / -1;display:flex;gap:.5rem}.fb .fb-btn{padding:.5rem .875rem;font-size:.8rem;border-radius:.75rem;box-shadow:0 .2rem 0 var(--line)}.fb .fb-btn[disabled]{opacity:.45}.fb-pick{grid-column:1 / -1;display:grid;grid-template-columns:repeat(auto-fill,minmax(9rem,1fr));gap:.5rem;margin-top:.375rem}.fb-sticker{display:grid;gap:.125rem;text-align:left;border:.125rem solid var(--line);background:var(--surface);color:var(--ink);border-radius:.875rem;padding:.625rem .75rem;cursor:pointer}.fb-sticker b{font:700 1.05rem var(--f-jp)}.fb-sticker span{color:var(--ink-soft);font-size:.8rem}.fb-sticker:hover,.fb-sticker:focus-visible{border-color:var(--primary)}.fb-cheers{list-style:none;padding:0;margin:.5rem 0 0;display:grid;gap:.625rem}.fb-cheers li{display:flex;gap:.75rem;align-items:flex-start}.fb-cheers .hanko{flex:none}.fb-cheers div{display:grid;gap:.0625rem}.fb-cheers b{font:700 1.1rem var(--f-jp)}.fb-cheers span{color:var(--ink)}.fb-cheers small{color:var(--ink-soft);font-size:.78rem}.fb-cheers li.is-new b{color:var(--beni)}.fb-time{display:flex;align-items:center;gap:.5rem}.fb-time input{font:700 1rem var(--f-ui);padding:.3rem .4rem;border:.125rem solid var(--line);border-radius:.625rem;background:var(--surface);color:var(--ink)}.fb-time input:disabled{opacity:.5}.fb-row-btns{display:flex;gap:.5rem;flex-wrap:wrap;padding:.625rem 0}.fb .set-row{gap:.75rem}@media (min-width:44rem){.fb{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr)}}.fb-recap p{margin:.4rem 0;line-height:1.55}.fb-recap .fb-sign{text-align:right;font:700 1rem var(--f-jp);color:var(--beni)}.fb-fam{display:flex;gap:1rem;align-items:center;margin:.5rem 0}.fb-fam p{margin:0;min-width:0}.fb-big{flex:none;display:grid;justify-items:center;line-height:1;padding:.5rem .75rem;border-radius:.875rem;background:var(--primary-wash)}.fb-big b{font:800 2rem var(--f-ui);color:var(--accent-ink);font-variant-numeric:tabular-nums}.fb-big span{font-size:.72rem;color:var(--ink-soft);max-width:5.5rem;text-align:center}.fb-goal{display:grid;gap:.375rem;margin-top:.5rem}.fb-goal .fb-head b{font-size:.95rem}.fb-goal .fb-bar{height:.75rem}.fb-bar.is-met i{background:var(--kin)}.fb-duel p{margin:.4rem 0}.fb-duel-list{list-style:none;padding:0;margin:.5rem 0 0;display:grid;gap:.375rem}.fb-duel-list li{display:flex;justify-content:space-between;gap:.75rem;padding:.5rem .625rem;border-radius:.75rem}.fb-duel-list li.is-me{background:var(--primary-wash)}.fb-duel-list b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fb-duel-list small{color:var(--ink-soft);font-weight:600}.fb-duel-list span{font-variant-numeric:tabular-nums;white-space:nowrap}.fb-last{margin-top:.5rem}.fb-last summary{cursor:pointer;color:var(--ink-soft);font-size:.9rem}.fb-wall{list-style:none;padding:0;margin:.5rem 0 0;display:grid;grid-template-columns:repeat(auto-fill,minmax(4.5rem,1fr));gap:.625rem}.fb-wall li{display:grid;justify-items:center;gap:.125rem;text-align:center}.fb-wall .seal{width:3.5rem;height:3.5rem}.fb-wall span{font-size:.75rem;color:var(--ink-soft);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fb-friends.is-alone{border-color:var(--primary)}.fb-friends p{margin:.25rem 0 .5rem}.fb-code{display:flex;align-items:center;gap:.5rem .75rem;flex-wrap:wrap;margin:.5rem 0}.fb-code span{color:var(--ink-soft);font-size:.85rem;flex-basis:100%}.fb-code b{font:800 1.5rem var(--f-ui);letter-spacing:.12em;font-variant-numeric:tabular-nums;-webkit-user-select:all;user-select:all}.fb-join{display:grid;gap:.375rem;margin-top:.75rem;border-top:.0625rem solid var(--line);padding-top:.75rem}.fb-join label{font-weight:700;font-size:.92rem}.fb-join div{display:flex;gap:.5rem}.fb-join input{flex:1;min-width:0;width:0;font:700 1.1rem var(--f-ui);letter-spacing:.08em;text-transform:uppercase;padding:.6rem .75rem;border:.125rem solid var(--line);border-radius:.75rem;background:var(--surface);color:var(--ink)}.fb-join input:focus{outline:none;border-color:var(--primary)}.fb-members{list-style:none;padding:0;margin:.375rem 0;display:flex;flex-wrap:wrap;gap:.375rem}.fb-members li{background:var(--surface-2);border-radius:999px;padding:.25rem .75rem;font-weight:600;font-size:.9rem}.fb-members small{color:var(--ink-soft)}.fb-leave{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.5rem}.fb-leave .btn{font-size:.85rem;padding:.5rem .875rem}.welcome{overflow-y:auto;padding:2rem 0 3rem}.welcome .col{display:grid;gap:1.25rem}.wl-head{display:flex;gap:.875rem;align-items:center}.wl-cat{flex:none;width:5rem;height:5rem}.wl-head h1{font:400 1.5rem/1.25 var(--f-display);margin:0}.wl-head p{margin:.125rem 0 0;color:var(--ink-soft)}.wl-card{background:var(--surface);border:2px solid var(--line);border-radius:1.25rem;padding:1.25rem;display:grid;gap:1rem}.wl-card label{display:grid;gap:.375rem}.wl-card label b{font-size:1.05rem}.wl-card label span,.wl-card .note{color:var(--ink-soft);font-size:.9rem}.wl-card .typein{font-size:1.15rem}.wl-card .topics{margin-top:0}.wl-card .topic{min-height:2.75rem;font-size:1rem}.wl-row{display:flex;justify-content:space-between;align-items:center;gap:.75rem}.wl-row span{display:block;color:var(--ink-soft);font-size:.9rem}.wl-steps{display:flex;gap:.375rem;justify-content:center}.wl-steps i{width:.5rem;height:.5rem;border-radius:99px;background:var(--line)}.wl-steps i.on{background:var(--primary);width:1.5rem}.wl-foot{display:flex;gap:.75rem}.wl-foot .btn{flex:1}.wl-err{color:var(--bad-ink);margin:0}.wl-card textarea.typein{font-weight:500;font-size:1rem}.wl-q{display:grid;gap:.375rem}.wl-q b{font-size:1.05rem}.wl-q>span{color:var(--ink-soft);font-size:.9rem}.wl-read{justify-items:center;text-align:center}.wl-read b{font-size:1.15rem}.wl-kana{display:grid;gap:.25rem;font:700 2.4rem/1.3 var(--f-jp);letter-spacing:.12em}.wl-read-foot{width:100%}.cs-finish{margin:.25rem 0 0;text-align:left}.cs-btns{list-style:none;margin:.25rem 0 0;padding:0;display:grid;gap:.5rem}.cs-btns li{display:grid;grid-template-columns:4.5rem 1fr;gap:.75rem;align-items:center;font-size:.92rem;color:var(--ink-soft)}.cs-btns .grade{padding:.375rem .25rem;cursor:default}.cs-btns .grade:active{transform:none}.cs-tip{margin:.25rem 0 0;padding:.75rem .875rem;border-radius:.875rem;background:var(--surface-2);border:2px dashed var(--line);font-size:.92rem}.cardstart .topics{flex-wrap:nowrap;gap:.375rem}.cardstart .topic{flex:1;padding:.375rem 0;max-width:4rem}.cardstart .wl-foot #cs-later{flex:none}@media (min-width:1700px) and (min-height:860px){html{zoom:1.2}}@media (min-width:2200px) and (min-height:1180px){html{zoom:1.4}}@media (min-width:3200px) and (min-height:1700px){html{zoom:2.1}}.home-left,.home-side,.home-path{display:contents}@media (max-width:679.98px){.home.view-home .home-path,.home.view-path .home-left{display:none}.home.view-path .home-inner{padding-top:4px}}.node-wrap{transform:translate(calc(var(--off,0) * var(--path-k,1) * 1px))}@media (min-width:680px){.tab[data-tab=path],.path-link{display:none}.home .col{max-width:1240px}.home-inner{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:18px 22px;align-items:start}.home-inner>.home-left>.today{grid-column:1/-1}.home-side{display:flex;flex-direction:column;gap:18px;grid-column:1}.home-path{display:flex;flex-direction:column;gap:18px;grid-column:2;min-width:0}.home-path .path{padding-top:36px}}@media (min-width:1100px){.home-inner{grid-template-columns:minmax(380px,440px) minmax(0,1fr);gap:22px 32px;padding-block:24px 60px}.home-left{display:flex;flex-direction:column;gap:18px;grid-column:1}.home-inner>.home-left>.today{grid-column:auto}.home-path{grid-column:2;--path-k:1.7}.home-path .path{gap:40px}.today h2{font-size:1.9rem}}@media (min-width:680px){.lesson .col{max-width:1040px}.lesson .stage-inner:has(>.tutor){display:grid;grid-template-columns:minmax(170px,30%) minmax(0,1fr);column-gap:26px;row-gap:0;align-content:start}.lesson .stage-inner:has(>.tutor)>*{grid-column:2;margin-bottom:20px;min-width:0}.lesson .stage-inner:has(>.tutor)>.tutor{grid-column:1;grid-row:1/span 40;align-self:start;position:sticky;top:6px;flex-direction:column;align-items:center;gap:10px;margin:0}.lesson .stage-inner>.tutor .cat{width:120px;height:120px}.lesson .stage-inner>.tutor .bubble{align-self:stretch;margin-top:8px}.lesson .stage-inner>.tutor .bubble.left:before{left:50%;top:-11px;transform:translate(-50%) rotate(135deg)}.lesson .stage-inner:not(:has(>.tutor)){max-width:760px}.lesson .stage-inner{padding-top:16px}}@media (min-width:1100px){.lesson .stage-inner>.tutor .cat{width:150px;height:150px}.lesson .stage-inner:has(>.tutor){grid-template-columns:300px minmax(0,1fr);column-gap:40px}.lesson .foot .row{justify-content:space-between}.lesson .foot .row .btn{flex:0 0 auto;min-width:220px}.lesson .foot .btn.wide,.lesson .sheet .btn.wide{width:auto;min-width:260px;display:block;margin-left:auto}.lesson .sheet .col{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:24px;align-items:center}.lesson .sheet .col>*{grid-column:1}.lesson .sheet .col>.btn{grid-column:2;grid-row:1/span 4;align-self:center}.opts:not(.kanji-cards){gap:14px}}.fcard{min-height:min(56vh,520px)}.fcard>.fc-back:has(.fc-word-ans){flex:1;justify-content:center}@media (min-width:680px){.cards .col{max-width:980px}.fcard:has(.fc-back:not([hidden])):not(:has(.fc-word-ans)){display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);column-gap:24px;align-items:center}.fcard:has(.fc-back:not([hidden])):not(:has(.fc-word-ans))>.fc-tag{grid-column:1/-1}.fcard:has(.fc-back:not([hidden])):not(:has(.fc-word-ans))>.fc-back{grid-column:2;grid-row:2;border-top:0;border-left:2px dashed var(--line);padding:4px 0 4px 24px;align-self:stretch;justify-content:center}.fc-back:has(.fc-word-ans){display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);grid-template-rows:1fr repeat(4,auto) 1fr;column-gap:24px;row-gap:0;flex:1}.fc-back:has(.fc-word-ans)>*{grid-column:2;margin-bottom:12px}.fc-back:has(.fc-word-ans)>.fc-word-ans+*{grid-row-start:2}.fc-back:has(.fc-word-ans)>.fc-word-ans{grid-column:1;grid-row:1/-1;align-self:center;margin:0;border-right:2px dashed var(--line);padding-right:16px}.fcard:has(.fc-word-ans)>.fc-back{border-top:0;padding-top:0}.cards-foot .col{max-width:720px}}@media (min-width:1100px){.fcard{padding:30px 32px}.fc-word{font-size:4.4rem}.fc-meaning{font-size:1.6rem}}@media (min-width:680px){.panel .col{max-width:960px}}@media (min-width:1100px){.panel .col{max-width:1180px}.sheet-dialog{max-width:640px}}@media (max-width:440px){.today{grid-template-columns:minmax(0,1fr) 70px;padding:18px 16px}.today .today-cat,.today .cat-btn .cat{width:70px;height:70px}.today .cat-btn,.today>.cat{grid-row:1/3}.today p{grid-column:1/-1}.today h2{font-size:1.5rem}.today .eyebrow{font-size:.72rem}.set-row:has(.seg-ctl){flex-wrap:wrap}.set-row .seg-ctl{justify-content:flex-start;flex-wrap:nowrap}.sheet-dialog{width:calc(100% - 20px);padding:16px}.gbook{grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px}.morph{font-size:clamp(1.9rem,9vw,2.6rem)}.tutor .cat{width:76px;height:76px}.tutor{gap:10px}}.teach-card{container-type:inline-size}.teach-card .morph{font-size:clamp(1.8rem,11cqi,3.4rem)}.teach-card .assemble{font-size:clamp(1.6rem,9cqi,2.6rem)}.speed-cat{display:block;width:min(180px,46vw);height:auto;margin-inline:auto}@media (min-width:1100px){.intro-cat .cat{width:220px;height:220px}.intro-bubble .jp{font-size:1.9rem}.lesson .stage-inner:has(>.passage):not(:has(>.tutor)){max-width:1040px;display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);column-gap:32px;row-gap:0;align-content:start}.lesson .stage-inner:has(>.passage):not(:has(>.tutor))>*{grid-column:1/-1;margin-bottom:20px}.lesson .stage-inner:has(>.passage):not(:has(>.tutor))>.passage{grid-column:1;grid-row:2;position:sticky;top:6px}.lesson .stage-inner:has(>.passage):not(:has(>.tutor))>#rq{grid-column:2;grid-row:2}}@media (min-width:680px){.reader .pl{font-size:1.3rem}.vn-line{font-size:1.4rem}}@media (min-width:1100px){.lesson .stage-inner:has(>.reader){max-width:1040px}.book .page{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:12px 28px;align-items:start;padding:18px}.book .page>*{grid-column:2}.book .page>.page-head{grid-column:1/-1}.book .page>.page-pic{grid-column:1;grid-row:2/span 6;aspect-ratio:3/2}.reader .pl{font-size:1.4rem}}.lesson-rail{display:none}@media (min-width:1700px) and (min-height:860px){.lesson{display:grid;grid-template-columns:minmax(0,1fr) 360px;grid-template-rows:auto minmax(0,1fr) auto}.lesson>.lesson-top,.lesson>.stage,.lesson>.foot{grid-column:1}.lesson>.lesson-top{grid-row:1}.lesson>.stage{grid-row:2}.lesson>.foot{grid-row:3}.lesson-rail{display:flex;flex-direction:column;gap:14px;grid-column:2;grid-row:1/-1;overflow-y:auto;border-left:2px solid var(--line);background:var(--surface);padding:22px 20px 28px;min-height:0}.lesson .col{max-width:1320px}.lesson .stage-inner:has(>.tutor){grid-template-columns:280px minmax(0,1fr);column-gap:44px}.lesson .stage-inner:not(:has(>.tutor)){max-width:1080px}.lesson .ex{font-size:2.1rem;padding:12px 18px;gap:16px}.lesson .ex .gloss{font-size:1rem}.lesson .gap-card,.lesson .source-card,.lesson .passage,.lesson .listen-card{font-size:2rem;padding:20px 24px}.lesson .opt{font-size:1.3rem;padding:16px 20px}.lesson .tile,.lesson .wtile{font-size:1.9rem}.lesson .typein{font-size:2rem;padding:16px 20px}.lesson .big-jp{font-size:3.6rem}.lesson .kcard .opt-t{font-size:3.8rem}.lesson .q{font-size:1.9rem}.lesson .bubble .jp{font-size:1.6rem}.lesson .bubble .en{font-size:1.05rem}.lesson .teach-card .morph{font-size:clamp(2.4rem,11cqi,4.6rem)}.lesson .teach-card .assemble{font-size:clamp(2.2rem,9cqi,3.6rem)}.lesson .chat .bubble .jp{font-size:1.5rem}}.rail-h{display:flex;align-items:center;gap:12px}.rail-h b{display:block;font:400 1.15rem var(--f-display)}.rail-h small{display:block;color:var(--ink-soft);font-size:.85rem}.rail-h .ask-hanko{flex:none}.rail-notes{display:flex;flex-direction:column;gap:12px}.rail-empty{margin:0;color:var(--ink-soft);font-size:.92rem;line-height:1.6;padding:14px;border:2px dashed var(--line);border-radius:16px}.rail-note{background:var(--bg);border:2px solid var(--line);border-radius:16px;padding:12px 14px;animation:popin .35s var(--ease-pop) both}.rail-note.good{border-color:var(--ok)}.rail-note.close,.rail-note.wrong{border-color:var(--kin)}.rail-note .yours{margin:0 0 4px;font:700 1.15rem/1.9 var(--f-jp)}.rail-note .said{margin:4px 0 0;font-size:.95rem;line-height:1.6}.rail-note .said small{display:block;color:var(--ink-soft)}.rail-note .reading{margin:0;color:var(--ink-soft);font-size:.9rem}.rail-note .verdict{font-size:.75rem;font-weight:800;padding:2px 8px;border-radius:10px;background:var(--bad-bg);color:var(--bad-ink);vertical-align:middle}.rail-note .verdict.good{background:var(--ok-bg);color:var(--ok-ink)}.rail-note .fixes{margin-top:6px;display:grid;gap:4px}.rail-note .fix{font-size:1rem}.rail-note .fix small{display:block;color:var(--ink-soft);font-size:.85rem}.rail-rules{margin-top:auto;border-top:2px dashed var(--line);padding-top:12px}.rail-rules summary{cursor:pointer;font-weight:800;color:var(--ink-soft)}.rail-rules ul{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:12px}.rail-rules li b{display:block}.rail-rules .rr-ex{display:block;font:700 1.1rem/1.9 var(--f-jp)}.rail-rules .rr-ex small{font:500 .85rem var(--f-ui);color:var(--ink-soft)}@media (min-width:1700px) and (min-height:860px){.lesson .bubble .jp{line-height:1.7}.lesson .stage-inner>.tutor .cat{width:180px;height:180px}}@media (min-width:1700px) and (min-height:860px){.lesson .msg .av,.lesson .av-other{width:72px;height:72px}.lesson .reply{font-size:1.6rem;padding:10px 18px}}
