:root{--color-stone:#c8b89a;--color-stone-dark:#a8956f;--color-stone-deep:#7a6a52;--color-wood:#8b5e3c;--color-wood-dark:#5c3a1e;--color-wood-deep:#3a2210;--color-brass:#d4a843;--color-brass-glow:#f0c96a;--color-amber:#e8932a;--rgb-lamplight:255, 232, 188;--rgb-lamplight-mid:233, 183, 110;--rgb-lamplight-edge:244, 225, 183;--color-highlight:#fff;--color-cream:#f5edd8;--color-parchment:#e8d9b8;--color-page:#f9f3e8;--color-page-fold:#e7d7c0;--rgb-page-fold:231, 215, 192;--color-album-page:#f3e7d6;--color-ivy:#6b8c5a;--color-ivy-dark:#4a6340;--color-error:#a8432f;--color-error-deep:#7a2f1f;--color-ink:#2c1f0e;--color-ink-soft:#2c1f0e99;--color-bg:#1a1208;--rgb-bg:26, 18, 8;--color-sky:#2f86d8;--color-sky-low:#b9dcf4;--color-glass:#ffffffb8;--color-glass-edge:#ffffff8c;--color-nav-ink:#12100c;--color-on-nav-ink:#fff;--shadow-float:0 .5rem 1.5rem #1a12082e;--color-hiragana:#c4956a;--color-hiragana-deep:#9a6a42;--color-katakana:#8a9e6b;--color-katakana-deep:#627041;--color-kanji:#b8845a;--color-kanji-deep:#8a5c38;--color-vocab:#c4a84a;--color-vocab-deep:#9a7e2e;--font-display:"Shippori Mincho", serif;--font-roman:"Cinzel", serif;--font-body:"Zen Kaku Gothic New", system-ui, sans-serif;--ease-book:cubic-bezier(.36, .02, .16, 1);--duration-flip:.52s;--duration-door:1.7s;--duration-fast:.28s;--duration-slow:.9s;--duration-pulse:1.6s;--vh:1vh;--panel-width:min(20rem, 86vw);--radius-float:1.25rem;--radius-badge:.75rem;--radius-pill:999px;--color-door-shade:#0000002e;--duration-sign-sway:1.2s}*{box-sizing:border-box}html{scrollbar-gutter:stable}html,body{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;font-family:var(--font-body);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;padding:0}@media (prefers-color-scheme:dark){html,body{--lightningcss-light: ;--lightningcss-dark:initial}}#root{min-height:calc(var(--vh) * 100)}.intro-toggle{left:max(1rem, env(safe-area-inset-left));bottom:max(1rem, env(safe-area-inset-bottom));z-index:10;appearance:none;cursor:pointer;font-family:var(--font-body);color:var(--color-cream);background:rgba(var(--rgb-bg), .7);border:1px solid rgba(var(--rgb-lamplight), .3);border-radius:var(--radius-pill);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);opacity:.9;transition:opacity var(--duration-fast), background var(--duration-fast), border-color var(--duration-fast);align-items:center;gap:.5rem;padding:.55rem .9rem .55rem .7rem;font-size:.8rem;display:flex;position:fixed}.intro-toggle:hover,.intro-toggle:focus-visible{opacity:1}.intro-toggle:focus-visible{outline:2px solid var(--color-brass-glow);outline-offset:3px}.intro-toggle--on{border-color:var(--color-brass)}.intro-toggle--on .intro-toggle__icon{fill:var(--color-brass-glow)}.intro-toggle--hidden{opacity:0;pointer-events:none}.intro-toggle__icon{fill:currentColor;width:1.25rem;height:1.25rem}.intro-toggle__label{white-space:nowrap}.rotate-notice{z-index:4;border:1px solid var(--color-brass);border-radius:var(--radius-float);background:var(--color-cream);width:min(20rem,80vw);box-shadow:var(--shadow-float);color:var(--color-ink);text-align:center;flex-direction:column;align-items:center;padding:1.75rem 1.5rem;display:flex;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}.rotate-notice__icon{width:3rem;height:3rem;color:var(--color-brass);margin-bottom:.75rem;display:block}.rotate-notice__icon svg{width:100%;height:100%;display:block}.rotate-notice__phone{transform-origin:50%;animation:2.6s ease-in-out infinite rotate-notice-turn}.rotate-notice__title{font-family:var(--font-display);margin:0;font-size:1.125rem}.rotate-notice__text{color:var(--color-ink-soft);font-family:var(--font-body);text-wrap:balance;margin:.5rem 0 0;font-size:.875rem;line-height:1.5}.rotate-notice__back{border:1px solid var(--color-brass);border-radius:var(--radius-pill);color:var(--color-ink);font-family:var(--font-body);cursor:pointer;transition:background-color var(--duration-fast) ease;background:0 0;margin-top:1.25rem;padding:.5rem 1.125rem;font-size:.875rem}.rotate-notice__back:hover{background:var(--color-parchment)}.rotate-notice__back:focus-visible{outline:2px solid var(--color-brass);outline-offset:3px}@keyframes rotate-notice-turn{0%,35%{transform:rotate(0)}65%,to{transform:rotate(-90deg)}}@media (prefers-reduced-motion:reduce){.rotate-notice__phone{animation:none}}.intro-video{z-index:50;width:100%;height:calc(var(--vh,1vh) * 100);background:var(--color-bg);position:fixed;top:0;left:0}.intro-video__video{object-fit:cover;object-position:center;width:100%;height:100%;display:block}.intro-video__skip,.intro-video__start{appearance:none;cursor:pointer;font-family:var(--font-body);color:var(--color-cream);background:rgba(var(--rgb-bg), .55);border:1px solid rgba(var(--rgb-lamplight), .4);border-radius:var(--radius-pill);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);transition:background var(--duration-fast), border-color var(--duration-fast)}.intro-video__skip:hover,.intro-video__start:hover{background:rgba(var(--rgb-bg), .75);border-color:var(--color-brass-glow)}.intro-video__skip:focus-visible,.intro-video__start:focus-visible{outline:2px solid var(--color-brass-glow);outline-offset:3px}.intro-video__skip{right:max(1.5rem, env(safe-area-inset-right));bottom:max(1.5rem, env(safe-area-inset-bottom));padding:.6rem 1.25rem;font-size:.9rem;position:absolute}.intro-video__start{border-color:var(--color-brass);padding:.9rem 2rem;font-size:1.1rem;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.account-panel{z-index:10;visibility:hidden;opacity:0;place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.account-panel__scrim{background:rgba(var(--rgb-bg), .6);cursor:pointer;border:none;padding:0;position:absolute;inset:0}.account-panel__card{width:min(26rem,100%);max-height:calc(var(--vh) * 100 - 2rem);border:1px solid var(--color-brass);border-radius:var(--radius-float);background:var(--color-cream);box-shadow:var(--shadow-float);color:var(--color-ink);font-family:var(--font-body);padding:2rem 2rem 1.5rem;position:relative;overflow-y:auto}.account-panel__close{border-radius:var(--radius-pill);width:2rem;height:2rem;color:var(--color-ink-soft);cursor:pointer;transition:background var(--duration-fast) ease;background:0 0;border:none;padding:0;font-size:1.5rem;line-height:1;position:absolute;top:.75rem;right:.75rem}.account-panel__close:hover{background:var(--color-parchment)}.account-panel__eyebrow{color:var(--color-ink-soft);letter-spacing:.16em;text-transform:uppercase;margin:0 0 .5rem;font-size:.6875rem;font-weight:700}.account-panel__title{font-family:var(--font-display);margin:0;padding-right:2rem;font-size:1.625rem;font-weight:700;line-height:1.2}.account-panel__intro{color:var(--color-ink-soft);text-wrap:pretty;margin:.75rem 0 1.5rem;font-size:.875rem;line-height:1.55}.account-panel__primary,.account-panel__secondary{border-radius:var(--radius-pill);width:100%;font-family:var(--font-body);cursor:pointer;transition:opacity var(--duration-fast) ease;padding:.75rem 1.25rem;font-size:.9375rem;font-weight:700}.account-panel__primary:hover,.account-panel__secondary:hover{opacity:.85}.account-panel__primary:disabled,.account-panel__secondary:disabled{opacity:.5;cursor:default}.account-panel__primary{background:var(--color-nav-ink);color:var(--color-on-nav-ink);border:none}.account-panel__secondary{border:1px solid var(--color-nav-ink);color:var(--color-nav-ink);background:0 0}.account-panel__close:focus-visible,.account-panel__primary:focus-visible,.account-panel__secondary:focus-visible{outline:2px solid var(--color-brass);outline-offset:3px}.account-panel__credits{color:var(--color-ink-soft);text-align:center;margin:.5rem 0 0;font-size:.7rem;line-height:1.5}.account-form__fields{flex-direction:column;gap:1rem;display:flex}.account-form__field{flex-direction:column;gap:.375rem;display:flex}.account-form__label{font-size:.8125rem;font-weight:700}.account-form__input{border:none;border-bottom:1px solid var(--color-brass);color:var(--color-ink);font-family:var(--font-body);background:0 0;border-radius:0;padding:.5rem .125rem;font-size:1rem}.account-form__input:focus-visible{border-bottom-color:var(--color-ink);box-shadow:0 1px 0 var(--color-ink);outline:none}.account-form__hint{color:var(--color-ink-soft);font-size:.75rem}.account-form__forgot{align-self:flex-end;font-size:.8125rem}.account-form__error{color:var(--color-error);margin:0;font-size:.8125rem;line-height:1.45}.account-form__or{color:var(--color-ink-soft);align-items:center;gap:.75rem;margin:1.25rem 0;font-size:.75rem;display:flex}.account-form__or:before,.account-form__or:after{content:"";border-top:1px solid var(--color-parchment);flex:1}.account-form__switch{color:var(--color-ink-soft);text-align:center;margin:1.25rem 0 0;font-size:.8125rem}.account-form__switch-button{color:var(--color-ink);font:inherit;text-underline-offset:.2em;cursor:pointer;background:0 0;border:none;padding:0;font-weight:700;text-decoration:underline}.account-form__switch-button:focus-visible{outline:2px solid var(--color-brass);outline-offset:2px}.account-profile__email{color:var(--color-ink-soft);overflow-wrap:anywhere;margin:.375rem 0 1.5rem;font-size:.875rem}.account-profile__badges{border-top:1px solid var(--color-brass);margin-bottom:1.5rem;padding-top:1rem}.account-profile__heading{font-family:var(--font-display);margin:0 0 .75rem;font-size:1rem}.account-profile__note{color:var(--color-ink-soft);margin:0;font-size:.8125rem;line-height:1.5}.account-profile__list{flex-wrap:wrap;gap:1rem;margin:0;padding:0;list-style:none;display:flex}.account-profile__badge{flex-direction:column;align-items:center;gap:.375rem;font-size:.75rem;font-weight:700;display:flex}.account-profile__seal{width:3rem;height:auto}.error-screen{isolation:isolate;min-height:calc(var(--vh) * 100);background:var(--color-bg);color:var(--color-cream);font-family:var(--font-body);align-items:center;padding:4rem 2rem;display:flex;position:relative}.error-screen:before{content:"";z-index:-2;background:url(/images/error.webp) 68%/cover no-repeat;position:fixed;inset:0}.error-screen:after{content:"";z-index:-1;background:linear-gradient(95deg, rgba(var(--rgb-bg), .72) 0%, rgba(var(--rgb-bg), .58) 32%, rgba(var(--rgb-bg), .18) 56%, transparent 72%);position:fixed;inset:0}.error-screen__sign{border:2px solid var(--color-wood-dark);border-radius:var(--radius-float);background:radial-gradient(circle at 1.5rem 1.4rem, var(--color-brass) 0 .3rem, transparent .32rem), radial-gradient(circle at calc(100% - 1.5rem) 1.4rem, var(--color-brass) 0 .3rem, transparent .32rem), linear-gradient(170deg, var(--color-page), var(--color-parchment));max-width:30rem;box-shadow:var(--shadow-float);color:var(--color-ink);justify-items:start;gap:1rem;padding:2rem;display:grid;position:relative}.error-screen__sign:before,.error-screen__sign:after{content:"";background:linear-gradient(var(--color-brass-glow), var(--color-brass));transform-origin:bottom;width:.125rem;height:2.5rem;position:absolute;top:-2.5rem}.error-screen__sign:before{left:1.5rem;transform:rotate(-9deg)}.error-screen__sign:after{right:1.5rem;transform:rotate(9deg)}.error-screen__title{color:var(--color-wood-deep);font-family:var(--font-display);margin:0;font-size:clamp(1.5rem,4vw,2rem);font-weight:500;line-height:1.2}.error-screen__text{text-wrap:pretty;margin:0;line-height:1.6}.error-screen__actions{flex-wrap:wrap;align-items:center;gap:.75rem 1.5rem;margin-top:.5rem;display:flex}.error-screen__action{border-radius:var(--radius-pill);font-family:var(--font-body);cursor:pointer;background:var(--color-brass);color:var(--color-ink);transition:opacity var(--duration-fast) ease;border:none;padding:.6875rem 1.375rem;font-size:.9375rem;font-weight:700;text-decoration:none}.error-screen__action:hover{opacity:.88}.error-screen__link{color:var(--color-wood-dark);text-underline-offset:.25em;font-size:.9375rem;text-decoration:underline}.error-screen__action:focus-visible,.error-screen__link:focus-visible{outline:2px solid var(--color-wood-dark);outline-offset:3px}@media (width<=48rem){.error-screen{align-items:flex-end;padding:3rem 1.25rem 2.5rem}.error-screen:before{background-position:74% 24%}.error-screen:after{background:linear-gradient(180deg, transparent 26%, rgba(var(--rgb-bg), .72) 52%, rgba(var(--rgb-bg), .94) 100%)}.error-screen__sign{padding:1.5rem}}
