@font-face{font-family:Fraunces;font-style:normal;font-weight:100 900;font-display:swap;src:url(../fonts/Fraunces.woff2) format("woff2")}@font-face{font-family:Newsreader;font-style:normal;font-weight:200 800;font-display:swap;src:url(../fonts/Newsreader.woff2) format("woff2")}@font-face{font-family:Zen Kaku Gothic New;font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/ZenKakuGothicNew-Regular.woff2) format("woff2")}@font-face{font-family:Zen Kaku Gothic New;font-style:normal;font-weight:700;font-display:swap;src:url(../fonts/ZenKakuGothicNew-Bold.woff2) format("woff2")}:root{--paper: #f4ead2;--paper-2: #ecdfc0;--paper-deep: #e3d3ad;--ink: #2c2113;--ink-soft: #6a5639;--ink-faint: #9c876240;--accent: #8c2f1e;--accent-2: #2b4a5a;--gold: #a9772f;--correct: #476b3a;--wrong: #9a3b2a;--shadow: #2c211322;--serif: "Newsreader", "Zen Kaku Gothic New", Georgia, "Yu Mincho", serif;--display: "Fraunces", Georgia, serif;--sans: "Zen Kaku Gothic New", "Hiragino Sans", "Yu Gothic", system-ui, sans-serif}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{min-height:100%}body{background:var(--paper);background-image:radial-gradient(circle at 18% 12%,#ffffff22,transparent 40%),radial-gradient(circle at 85% 80%,#00000010,transparent 45%),url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.05'/%3E%3C/svg%3E");color:var(--ink);font-family:var(--serif);line-height:1.7;-webkit-font-smoothing:antialiased}.wrap{max-width:760px;margin:0 auto;padding:28px 20px 80px}header.app{display:flex;align-items:baseline;justify-content:space-between;gap:14px;flex-wrap:wrap;border-bottom:2px solid var(--ink);padding-bottom:14px;margin-bottom:26px;animation:fade .8s ease both}.brand{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap}.brand h1{font-family:var(--display);font-weight:900;font-size:clamp(34px,7vw,52px);letter-spacing:.04em;line-height:.9;font-variation-settings:"opsz" 140;text-decoration:none;color:var(--ink)}.brand h1 .dot{color:var(--accent)}.brand .sub{font-family:var(--sans);font-size:13px;color:var(--ink-soft);letter-spacing:.18em;text-transform:uppercase}.nav{display:flex;gap:6px;flex-wrap:wrap}.nav a,.nav button{font-family:var(--sans);background:transparent;border:1.5px solid var(--ink-faint);color:var(--ink-soft);border-radius:999px;padding:7px 15px;font-size:13px;cursor:pointer;transition:.18s;text-decoration:none;display:inline-block}.nav a:hover,.nav button:hover{border-color:var(--ink);color:var(--ink)}.nav a.on,.nav button.on{background:var(--ink);color:var(--paper);border-color:var(--ink)}.view{animation:fade .5s ease both}@keyframes fade{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes pop{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:none}}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-7px)}40%{transform:translate(6px)}60%{transform:translate(-4px)}80%{transform:translate(3px)}}.lead{font-family:var(--sans);color:var(--ink-soft);font-size:15px;margin-bottom:22px}.row{display:flex;gap:12px;flex-wrap:wrap;align-items:center}.panel{background:linear-gradient(180deg,var(--paper-2),var(--paper-deep));border:1.5px solid #cbb98b;border-radius:14px;padding:22px 24px;margin-bottom:18px;box-shadow:0 10px 30px -18px var(--shadow)}.panel.locked{opacity:.72}.phase-tag{font-family:var(--sans);font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--accent);font-weight:700;margin-bottom:6px}.phase-title{font-family:var(--display);font-size:26px;font-weight:600;margin-bottom:4px}.phase-desc{font-family:var(--sans);font-size:14px;color:var(--ink-soft)}.tier-card{display:block;text-decoration:none;color:inherit}.tier-card .badge-soon{font-family:var(--sans);font-size:11px;font-weight:700;letter-spacing:.1em;background:var(--ink-faint);color:var(--ink-soft);border-radius:6px;padding:3px 9px}.groups{display:flex;flex-wrap:wrap;gap:9px;margin-top:16px}.gchip{font-family:var(--sans);font-size:13px;display:flex;align-items:center;gap:7px;border:1.5px solid #cbb98b;border-radius:10px;padding:8px 12px;background:#fffaf0;color:var(--ink-soft)}.gchip .n{font-family:var(--display);font-weight:700;color:var(--ink)}.gchip.done{background:var(--correct);border-color:var(--correct);color:#fff}.gchip.done .n{color:#fff}.gchip.active{border-color:var(--accent);box-shadow:0 0 0 3px #8c2f1e22}.cta{display:inline-flex;align-items:center;gap:10px;font-family:var(--sans);font-weight:700;font-size:17px;background:var(--ink);color:var(--paper);border:none;cursor:pointer;border-radius:12px;padding:16px 28px;margin-top:8px;transition:.18s;box-shadow:0 8px 20px -8px var(--shadow);text-decoration:none}.cta:hover{transform:translateY(-2px);background:#1c150b}.cta:disabled{opacity:.5;cursor:default;transform:none}.cta .arrow{font-family:serif;font-size:20px}.mini{font-family:var(--sans);font-size:13px;background:transparent;border:none;color:var(--ink-soft);cursor:pointer;text-decoration:underline;text-underline-offset:3px;padding:6px}.mini:hover{color:var(--accent)}.stat-row{display:flex;gap:26px;margin-top:14px;flex-wrap:wrap}.stat{font-family:var(--sans)}.stat b{font-family:var(--display);font-size:30px;font-weight:700;display:block;line-height:1}.stat span{font-size:12px;color:var(--ink-soft);letter-spacing:.1em}.qbar-wrap{margin-bottom:24px}.qbar-meta{display:flex;justify-content:space-between;font-family:var(--sans);font-size:13px;color:var(--ink-soft);margin-bottom:7px}.qbar{height:8px;background:#00000014;border-radius:999px;overflow:hidden}.qbar i{display:block;height:100%;background:linear-gradient(90deg,var(--gold),var(--accent));border-radius:999px;transition:width .4s ease}.card{background:linear-gradient(175deg,#fffaf0,var(--paper-2));border:1.5px solid #cbb98b;border-radius:18px;padding:40px 28px 34px;text-align:center;box-shadow:0 18px 40px -22px var(--shadow);animation:pop .35s ease both;position:relative;overflow:hidden}.card:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(circle at 50% -10%,#ffffff66,transparent 55%);pointer-events:none}.card .kicker{font-family:var(--sans);font-size:12px;letter-spacing:.22em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:14px}.word{font-family:var(--display);font-weight:600;font-size:clamp(34px,9vw,60px);letter-spacing:.01em;line-height:1.05;color:var(--ink);word-break:break-word}.prompt-ja{font-family:var(--sans);font-weight:700;font-size:clamp(22px,6vw,34px);color:var(--ink);line-height:1.4}.hint{font-family:var(--sans);font-size:13px;color:var(--ink-soft);margin-top:12px}.opts{display:grid;gap:11px;margin-top:26px}.opt{font-family:var(--sans);font-size:16px;text-align:left;background:#fffaf0;border:1.5px solid #cbb98b;border-radius:12px;padding:15px 18px;cursor:pointer;color:var(--ink);transition:.15s;display:flex;align-items:center;gap:13px;width:100%}.opt .key{font-family:var(--display);font-weight:700;color:var(--ink-soft);border:1.5px solid #cbb98b;border-radius:7px;width:28px;height:28px;display:grid;place-items:center;font-size:14px;flex:none;transition:.15s}.opt:hover:not(:disabled){border-color:var(--ink);transform:translate(3px)}.opt:hover:not(:disabled) .key{border-color:var(--ink);color:var(--ink)}.opt.correct{background:var(--correct);border-color:var(--correct);color:#fff}.opt.correct .key{background:#fff;color:var(--correct);border-color:#fff}.opt.wrong{background:var(--wrong);border-color:var(--wrong);color:#fff;animation:shake .4s}.opt.wrong .key{background:#fff;color:var(--wrong);border-color:#fff}.opt:disabled{cursor:default}.spell-form{margin-top:26px;display:flex;flex-direction:column;gap:12px}.spell-input{width:100%;font-family:var(--display);font-size:26px;text-align:center;letter-spacing:.04em;background:#fffaf0;border:1.5px solid #cbb98b;border-radius:12px;padding:14px 16px;color:var(--ink)}.spell-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #8c2f1e1f}.spell-input.correct{border-color:var(--correct)}.spell-input.wrong{border-color:var(--wrong);animation:shake .4s}.etym{margin-top:18px;background:#fff7e6;border:1.5px solid var(--gold);border-left:6px solid var(--accent);border-radius:12px;padding:20px 22px;text-align:left;animation:pop .4s ease both}.etym h3{font-family:var(--display);font-size:22px;font-weight:700;margin-bottom:2px}.etym .mean{font-family:var(--sans);font-size:14px;color:var(--accent);font-weight:700;margin-bottom:12px}.etym .root-badge{font-family:var(--sans);font-size:12px;color:var(--ink-soft);margin-bottom:10px}.etym .body{font-family:var(--sans);font-size:14.5px;color:var(--ink);line-height:1.85;white-space:pre-wrap}.etym .next{margin-top:16px}.feedback{font-family:var(--sans);font-weight:700;font-size:15px;margin-top:20px;animation:pop .3s ease both}.feedback.ok{color:var(--correct)}.feedback.warn{color:var(--gold)}.celebrate{text-align:center;padding:36px 10px;animation:pop .5s ease both}.celebrate .mark{font-family:var(--display);font-size:80px;line-height:1;color:var(--gold)}.celebrate h2{font-family:var(--display);font-size:34px;font-weight:600;margin:10px 0 6px}.celebrate p{font-family:var(--sans);color:var(--ink-soft);margin-bottom:24px}.dict-controls{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:16px}.dict-search{flex:1 1 220px;font-family:var(--sans);font-size:15px;background:#fffaf0;border:1.5px solid #cbb98b;border-radius:10px;padding:11px 14px;color:var(--ink)}.dict-search:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #8c2f1e1f}.dict-select{font-family:var(--sans);font-size:14px;background:#fffaf0;border:1.5px solid #cbb98b;border-radius:10px;padding:11px 12px;color:var(--ink)}.entry{background:linear-gradient(180deg,var(--paper-2),var(--paper-deep));border:1.5px solid #cbb98b;border-radius:12px;padding:18px 20px;margin-bottom:13px}.entry .top{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}.entry .w{font-family:var(--display);font-size:24px;font-weight:600}.entry .m{font-family:var(--sans);font-size:14px;color:var(--accent);font-weight:700}.entry .badges{margin-left:auto;display:flex;gap:6px;flex-wrap:wrap}.level-badge{font-family:var(--sans);font-size:11px;color:var(--ink-soft);border:1px solid var(--ink-faint);border-radius:6px;padding:2px 8px}.entry .t{font-family:var(--sans);font-size:13.5px;color:var(--ink-soft);margin-top:9px;line-height:1.8;white-space:pre-wrap}.entry .root-line{font-family:var(--sans);font-size:12.5px;color:var(--ink-soft);opacity:.85;margin:4px 0}.entry .del{font-size:12px}.field{margin-bottom:16px}.field label{font-family:var(--sans);font-size:13px;font-weight:700;color:var(--ink-soft);display:block;margin-bottom:6px;letter-spacing:.04em}.field input,.field textarea,.field select{width:100%;font-family:var(--sans);font-size:15px;background:#fffaf0;border:1.5px solid #cbb98b;border-radius:10px;padding:12px 14px;color:var(--ink);resize:vertical}.field input:focus,.field textarea:focus,.field select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #8c2f1e1f}.field textarea{min-height:96px;line-height:1.7}.note{font-family:var(--sans);font-size:12px;color:var(--ink-soft);margin-top:6px}.toggle-row{display:flex;gap:10px;flex-wrap:wrap}.toggle{font-family:var(--sans);font-size:14px;border:1.5px solid #cbb98b;border-radius:10px;padding:10px 16px;background:#fffaf0;color:var(--ink-soft);cursor:pointer;transition:.15s}.toggle.on{background:var(--ink);color:var(--paper);border-color:var(--ink)}.toggle:disabled{opacity:.5;cursor:default}.range-row{display:flex;align-items:center;gap:14px}.range-row input[type=range]{flex:1}.range-val{font-family:var(--display);font-weight:700;font-size:22px;min-width:48px;text-align:right}.danger{color:var(--wrong)}.section-title{font-family:var(--display);font-size:20px;font-weight:600;margin:26px 0 12px;border-bottom:1px solid var(--ink-faint);padding-bottom:6px}.toast{position:fixed;left:50%;bottom:26px;transform:translate(-50%) translateY(20px);background:var(--ink);color:var(--paper);font-family:var(--sans);font-size:14px;padding:12px 22px;border-radius:999px;opacity:0;pointer-events:none;transition:.3s;z-index:50;box-shadow:0 10px 30px -10px #000}.toast.show{opacity:1;transform:translate(-50%) translateY(0);pointer-events:auto}.update-prompt{position:fixed;left:50%;bottom:26px;transform:translate(-50%);z-index:60;background:var(--ink);color:var(--paper);font-family:var(--sans);font-size:14px;padding:14px 18px;border-radius:12px;display:flex;gap:14px;align-items:center;box-shadow:0 10px 30px -10px #000}.update-prompt button{font-family:var(--sans);font-size:13px;font-weight:700;border:none;border-radius:8px;padding:8px 14px;cursor:pointer;background:var(--paper);color:var(--ink)}.footnote{font-family:var(--sans);font-size:11.5px;color:var(--ink-soft);text-align:center;margin-top:30px;line-height:1.7}.error-box{font-family:var(--sans);background:#fff7e6;border:1.5px solid var(--wrong);border-radius:12px;padding:20px;color:var(--ink)}.app-footer{margin-top:56px;padding-top:18px;border-top:1.5px solid var(--ink-faint);font-family:var(--sans);font-size:13px;color:var(--ink-soft)}.app-footer .links{display:flex;flex-wrap:wrap;gap:8px 16px;margin-bottom:10px}.app-footer .links a{color:var(--ink-soft);text-decoration:none}.app-footer .links a:hover{color:var(--accent);text-decoration:underline;text-underline-offset:3px}.app-footer .meta{line-height:1.7;font-size:12px}
