:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--stage-w:min(100vw, calc((100dvh - var(--safe-top) - var(--safe-bottom)) * 9 / 16));--ink:#f5f5f7;--ink-2:#b4b4bf;--ink-3:#7b7b88;--rule:#26262e;--paper:#15151b;--paper-2:#1f1f26;--glass:#ffffff24;--glass-2:#ffffff3d;--accent:#ffd60a;--like:#ff2d55;--n-slow:#22c55e;--n-medium:#f59e0b;--n-fast:#ef4444;--n-unknown:#52525b;--spring:cubic-bezier(.34, 1.56, .64, 1)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{color:var(--ink);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;overscroll-behavior:none;-webkit-user-select:none;user-select:none;background:#000;font-family:system-ui,-apple-system,Segoe UI,Roboto,Hiragino Sans,Noto Sans JP,Yu Gothic,sans-serif}button{font:inherit}.notice{padding:calc(var(--safe-top) + 24px) 16px;text-align:center;color:var(--ink-2)}.feed{scroll-snap-type:y mandatory;overscroll-behavior-y:contain;-webkit-overflow-scrolling:touch;scrollbar-width:none;height:100dvh;position:relative;overflow-y:auto}.feed::-webkit-scrollbar{display:none}.slide{z-index:1;scroll-snap-align:start;scroll-snap-stop:always;height:100dvh;padding:var(--safe-top) 0 var(--safe-bottom);justify-content:center;align-items:center;display:flex;position:relative}.poster{width:var(--stage-w);aspect-ratio:9/16;object-fit:cover;background:#111;border-radius:12px}.layer{width:100%;height:100dvh;padding:var(--safe-top) 0 var(--safe-bottom);pointer-events:none;transform:translateY(calc(var(--i,0) * 100dvh));justify-content:center;align-items:center;display:flex;position:absolute;top:0;left:0}.layer--slot{z-index:2}.layer--stage{z-index:3}.pslot{width:var(--stage-w);aspect-ratio:9/16;opacity:0;background:#000;border-radius:12px;transition:opacity .16s;position:relative;overflow:hidden}.pslot--show{opacity:1}.pslot--active{pointer-events:auto}.pslot>div,.pslot iframe{border:0;width:100%;height:100%;position:absolute;inset:0}.stage{pointer-events:none;width:var(--stage-w);aspect-ratio:9/16;background:0 0;border-radius:12px;position:relative;overflow:hidden}.stage-tap,.rail,.capbar,.tagrow,.subs,.scrub{pointer-events:auto}.stage-tap{z-index:1;touch-action:pan-y;background:0 0;border:0;margin:0;padding:0;position:absolute;inset:0}.stage-hint,.stage-error,.stage-badge{z-index:3;pointer-events:none;text-align:center;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:#e4e4e7;background:#0000008c;border-radius:12px;max-width:80%;padding:8px 14px;font-size:.95rem;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.stage-hint{top:84%}.stage-hint--big{padding:14px 24px;font-size:1.25rem;font-weight:700;top:72%}.stage-error{color:#fda4af}.stage-badge{border-radius:999px;place-items:center;padding:16px;display:grid}.rail,.capbar,.tagrow,.subs{transition:opacity .18s}.stage--sheet .rail,.stage--sheet .capbar,.stage--sheet .tagrow,.stage--sheet:not(.stage--word) .subs{opacity:0;pointer-events:none}.bigheart{z-index:5;pointer-events:none;color:var(--like);filter:drop-shadow(0 6px 20px #00000073);animation:bigheart .8s var(--spring) forwards;position:absolute;top:45%;left:50%;transform:translate(-50%,-50%)scale(0)}.bigheart svg{fill:currentColor}@keyframes bigheart{0%{opacity:1;transform:translate(-50%,-50%)scale(0)}35%{transform:translate(-50%,-50%)scale(1.15)}70%{opacity:1;transform:translate(-50%,-50%)scale(1)}to{opacity:0;transform:translate(-50%,-70%)scale(.9)}}.rail{z-index:3;flex-direction:column;align-items:center;gap:12px;display:flex;position:absolute;bottom:96px;right:10px}.rb{color:#fff;cursor:pointer;background:0 0;border:0;flex-direction:column;align-items:center;gap:3px;padding:0;font-size:.6rem;font-weight:700;display:flex;position:relative}.rb-disc{background:var(--glass);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);width:40px;height:40px;transition:transform .35s var(--spring), background .15s;border-radius:999px;place-items:center;display:grid;box-shadow:0 3px 10px #00000059}.rb svg{transition:transform .35s var(--spring), fill .15s, stroke .15s}.rb:active .rb-disc{transform:scale(.82)}.rb--on .rb-disc{background:var(--glass-2)}.rb--like.rb--on svg{fill:var(--like);stroke:var(--like);animation:pop .5s var(--spring)}.rb--nope.rb--on svg{fill:#fff;stroke:#fff;animation:.45s shake}.rb-label{color:#e4e4e7}.rb-glow{pointer-events:none;border-radius:999px;width:40px;height:40px;position:absolute;top:0}.rb--like.rb--on .rb-glow{animation:.6s ease-out ring}.burst{pointer-events:none;width:0;height:0;position:absolute;top:20px;left:50%}.burst i{background:var(--like);border-radius:50%;width:7px;height:7px;animation:.7s ease-out forwards fly;position:absolute}@keyframes pop{0%{transform:scale(.6)}60%{transform:scale(1.25)}to{transform:scale(1)}}@keyframes shake{0%,to{transform:rotate(0)}30%{transform:rotate(-14deg)}60%{transform:rotate(10deg)}}@keyframes ring{0%{box-shadow:0 0 #ff2d5599}to{box-shadow:0 0 0 18px #ff2d5500}}@keyframes fly{to{transform:translate(var(--dx), var(--dy)) scale(.2);opacity:0}}.capbar{z-index:3;gap:6px;display:flex;position:absolute;bottom:96px;left:12px}.pill{background:var(--glass);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);color:#fff;cursor:pointer;width:32px;height:32px;transition:transform .28s var(--spring), background .15s;border:0;border-radius:999px;place-items:center;padding:0;display:inline-grid}.pill:active{background:var(--glass-2);transform:scale(.88)}.pill:disabled{opacity:.35}.tagrow{z-index:3;cursor:pointer;flex-wrap:wrap;align-items:center;gap:6px;display:flex;position:absolute;bottom:34px;left:12px;right:66px}.chips{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.chip{background:var(--glass);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:#fff;letter-spacing:.01em;white-space:nowrap;border-radius:999px;align-items:center;gap:5px;height:24px;padding:0 9px;font-size:.72rem;font-weight:700;display:inline-flex}.chip--level{color:#fff}.chip--level i{background:#fff;border-radius:50%;width:6px;height:6px;display:inline-block;box-shadow:0 0 0 3px #ffffff4d}.chip--level.speed-slow{background:var(--n-slow)}.chip--level.speed-medium{background:var(--n-medium)}.chip--level.speed-fast{background:var(--n-fast)}.chip--level.speed-unknown{background:var(--n-unknown)}.infobtn{background:var(--glass-2);color:#fff;width:24px;height:24px;transition:transform .28s var(--spring);border-radius:999px;place-items:center;display:grid}.tagrow:active .infobtn{transform:scale(.85)}.subs{z-index:2;pointer-events:auto;text-align:left;padding:14px 12px;position:absolute;bottom:140px;left:0;right:60px}.subs-line{color:#fff;text-shadow:0 1px 2px #000,0 0 10px #000000f2;overflow-wrap:anywhere;margin:0;font-size:1.4rem;font-weight:700;line-height:2.05}.subs--s .subs-line{font-size:1.15rem}.subs--l .subs-line{font-size:1.75rem;line-height:2.1}.subs-line--prev{opacity:.6;margin-bottom:8px;font-size:1rem;font-weight:500;line-height:1.6}.subs--l .subs-line--prev{font-size:1.15rem}.subs--box .subs-line{text-shadow:none}.subs--box .subs-text{-webkit-box-decoration-break:clone;box-decoration-break:clone;background:#000000a8;border-radius:10px;padding:2px 10px;display:inline}.subs--box .subs-line--prev .subs-text{background:#00000073}.word{border-radius:6px;padding:0 3px;display:inline-block}.word--tappable{pointer-events:auto;cursor:pointer;border-bottom:2px dotted #ffffff8c}.word--tappable:active{background:#ffffff2e}.word--active{background:var(--accent);color:#000;text-shadow:none;border-bottom-color:#0000}.word--active rt{color:#3a2f00;text-shadow:none}ruby{ruby-align:center}rt{color:#ffe58a;text-shadow:0 1px 2px #000;letter-spacing:0;font-size:.5em;font-weight:500}.scrub{z-index:3;touch-action:none;height:28px;position:absolute;bottom:0;left:0;right:0}.scrub-track{background:#ffffff40;height:3px;transition:height .12s;position:absolute;bottom:4px;left:0;right:0}.scrub--active .scrub-track{height:8px}.scrub-fill{background:var(--accent);height:100%}.scrub-label{color:#fff;white-space:nowrap;font-variant-numeric:tabular-nums;background:#000000bf;border-radius:6px;padding:4px 8px;font-size:.8rem;position:absolute;bottom:20px;transform:translate(-50%)}.toast{top:calc(var(--safe-top) + 14px);z-index:20;color:#000;pointer-events:none;animation:toast-in .3s var(--spring);background:#fffffff0;border-radius:999px;padding:8px 14px;font-size:.85rem;font-weight:600;position:fixed;left:50%;transform:translate(-50%)}@keyframes toast-in{0%{opacity:0;transform:translate(-50%)translateY(-8px)}}.debug{top:calc(var(--safe-top) + 4px);z-index:20;pointer-events:none;color:var(--ink-2);font-variant-numeric:tabular-nums;background:#0000008c;border-radius:6px;padding:2px 6px;font-size:.7rem;position:fixed;left:8px}.sheet-backdrop{z-index:10;background:#00000073;align-items:flex-end;animation:.2s fade-in;display:flex;position:fixed;inset:0}.sheet-backdrop--word{background:#00000040}@keyframes fade-in{0%{opacity:0}}.sheet{width:100%;max-width:520px;max-height:calc(100dvh - var(--safe-top) - 16px);overscroll-behavior:contain;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);color:var(--ink);padding:10px 18px calc(18px + var(--safe-bottom));-webkit-user-select:text;user-select:text;animation:sheet-up .38s var(--spring);background:#14141af0;border-radius:22px 22px 0 0;margin:0 auto;overflow-y:auto;box-shadow:0 -10px 40px #00000080}@keyframes sheet-up{0%{opacity:.6;transform:translateY(40%)}}.sheet-grab{background:#ffffff59;border-radius:2px;width:40px;height:4px;margin:0 auto 12px}.sheet-head{flex-wrap:wrap;align-items:baseline;gap:14px;display:flex}.sheet-title{font-size:1.2rem;font-weight:800}.sheet-foot{color:var(--ink-3);justify-content:space-between;align-items:center;margin-top:8px;font-size:.75rem;display:flex}.sheet-actions{gap:8px;margin-top:12px;display:flex}.act{background:var(--glass);color:#fff;white-space:nowrap;cursor:pointer;height:40px;transition:transform .28s var(--spring), background .15s;border:0;border-radius:12px;flex:1;justify-content:center;align-items:center;gap:6px;padding:0 8px;font-size:.78rem;font-weight:700;text-decoration:none;display:inline-flex}.act:active{transform:scale(.94)}.act:disabled{opacity:.4}.act--primary{background:var(--accent);color:#000}.act--done{color:#bbf7d0;background:#14532d}.act--danger{background:#7f1d1d}.act--small{flex:none;height:34px;padding:0 16px}.word-head{flex-wrap:wrap;align-items:baseline;gap:12px;display:flex}.word-big{font-size:2.1rem;font-weight:800;line-height:1.4}.word-big rt{color:#ffe58a;font-size:.42em}.word-lemma{color:var(--ink-2);font-size:1.05rem;font-weight:600}.word-sense{margin:6px 0 0;font-size:1.1rem;line-height:1.5}.word-src{color:var(--ink-3);margin-top:10px;font-size:.72rem}.who{align-items:center;gap:8px;margin-bottom:6px;font-size:1rem;font-weight:800;display:flex}.avatar{color:#fff;background:linear-gradient(135deg,#ff9f43,#ee5253);border:2px solid #fff;border-radius:999px;flex:none;place-items:center;width:28px;height:28px;font-size:.78rem;font-weight:800;display:grid}.info-title{color:#ffffffeb;margin:0 0 12px;font-size:.95rem;font-weight:500;line-height:1.5}.settings{flex-direction:column;gap:8px;margin:12px 0;display:flex}.toggle{text-align:left;background:var(--paper-2);width:100%;color:var(--ink);transition:transform .28s var(--spring);border:0;border-radius:12px;justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;font-size:.95rem;display:flex}.toggle:active{transform:scale(.98)}.toggle-state{color:var(--ink-3);font-size:.8rem}.toggle--on .toggle-state{color:var(--accent);font-weight:600}.segmented{gap:6px;display:flex}.segmented button{background:var(--paper-2);color:var(--ink);transition:transform .28s var(--spring);border:0;border-radius:10px;flex:1;padding:10px;font-size:.9rem}.segmented button:active{transform:scale(.96)}.segmented button.is-selected{background:var(--accent);color:#000;font-weight:600}.legend{background:var(--paper);color:var(--ink-2);border-radius:12px;margin:10px 0;padding:10px 12px;font-size:.85rem;line-height:1.6}.legend-title{color:var(--ink);margin-bottom:4px;font-weight:700}.section-title{color:var(--ink);margin:12px 4px 2px;font-weight:700}.legend-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.legend-button{background:var(--accent);color:#000;border:0;border-radius:999px;padding:8px 12px;font-size:.85rem;font-weight:600}.legend-button:disabled{opacity:.4}.legend-hint{color:var(--ink-3);margin-top:6px;font-size:.75rem}.panel{z-index:11;color:var(--ink);padding:calc(var(--safe-top) + 8px) 0 var(--safe-bottom);-webkit-user-select:text;user-select:text;background:#0a0a0a;flex-direction:column;display:flex;position:fixed;inset:0}.panel-head{justify-content:space-between;align-items:center;padding:8px 16px;display:flex}.panel-head h2{margin:0;font-size:1.1rem}.panel-close{background:var(--paper-2);color:#fff;border:0;border-radius:999px;place-items:center;width:36px;height:36px;display:grid}.panel-empty{color:var(--ink-2);text-align:center;padding:24px 16px}.cards{flex:1;margin:0;padding:0 16px;list-style:none;overflow-y:auto}.card{border-bottom:1px solid var(--rule);padding:12px 0}.card-head{align-items:baseline;gap:10px;display:flex}.card-word{font-size:1.25rem;font-weight:700}.card-lemma{color:var(--ink-2)}.card-remove{color:var(--ink-3);background:0 0;border:0;place-items:center;margin-left:auto;padding:4px 8px;display:grid}.card-sense{color:#e4e4e7;margin:2px 0}.card-sentence{color:#d4d4d8;font-size:.95rem}.card-source{color:#93c5fd;align-items:center;gap:4px;font-size:.8rem;text-decoration:none;display:inline-flex}.panel-foot{flex-wrap:wrap;gap:8px;padding:12px 16px;display:flex}.preview-stage{background:linear-gradient(#f8fafc,#cbd5e1)}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}.quiz{z-index:6;pointer-events:auto;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);animation:sheet-up .38s var(--spring);background:#14141af0;border-radius:20px;padding:14px 14px 10px;position:absolute;bottom:30px;left:10px;right:10px;box-shadow:0 10px 40px #00000080}.quiz-eyebrow{letter-spacing:.06em;text-transform:uppercase;color:var(--accent);margin-bottom:6px;font-size:.68rem;font-weight:800}.quiz-prompt{margin:0;font-size:2rem;font-weight:800;line-height:1.5}.quiz-prompt rt{color:#ffe58a;text-shadow:none;font-size:.42em;font-weight:500}.quiz-prompt--cloze{font-size:1.25rem;font-weight:700;line-height:1.9}.quiz-ctx{color:var(--ink-2);margin:2px 0 0;font-size:.95rem;line-height:1.7}.quiz-mark{color:#fff;border-bottom:2px solid var(--accent);background:0 0}.quiz-blank{min-width:3em;color:var(--accent);text-align:center;background:#ffd60a2e;border-radius:8px;padding:0 8px;display:inline-block}.quiz-blank--shown{background:var(--accent);color:#000;animation:pop .5s var(--spring)}.quiz-blank--shown rt{color:#3a2f00}.quiz-opts{gap:8px;margin-top:12px;display:grid}.opt{background:var(--glass);color:#fff;text-align:left;cursor:pointer;min-height:44px;transition:transform .28s var(--spring), background .15s, opacity .2s;border:0;border-radius:12px;padding:8px 12px;font-size:.95rem;font-weight:700;line-height:1.35}.opt:active:not(:disabled){background:var(--glass-2);transform:scale(.97)}.opt:disabled{cursor:default}.opt--right{color:#052e16;animation:pop .5s var(--spring);background:#22c55e}.opt--wrong{color:#fff;background:#ef4444;animation:.45s shake}.opt--dim{opacity:.35}.quiz-reveal{color:var(--ink-2);margin-top:10px;font-size:.9rem;line-height:1.6}.quiz-reveal b{color:#fff}.quiz-foot{justify-content:flex-end;align-items:center;min-height:34px;margin-top:6px;display:flex}.quiz-link{color:var(--ink-3);background:0 0;border:0;padding:6px 10px;font-size:.85rem;font-weight:600}.quiz-yay{color:#22c55e;padding:6px 10px;font-weight:800}.quiz-burst{top:45%}.quiz-burst i{background:var(--accent);width:9px;height:9px}.legend-button--off{background:var(--paper-2);color:var(--ink-2)}.slider{width:100%;accent-color:var(--accent);height:28px;margin:10px 0 4px}.slider-stops{color:var(--ink-3);justify-content:space-between;font-size:.7rem;font-weight:600;display:flex}.slider-stops span{text-align:center;flex:1}.slider-stops span:first-child{text-align:left}.slider-stops span:last-child{text-align:right}.slider-stops .is-current{color:var(--accent)}
