:root{--night-1:#150d2e;--night-2:#241546;--night-3:#2f1c5c;--violet:#a874ff;--violet-soft:#c9a9ff;--rose:#ff9fc0;--gold:#ffd9a0;--cream:#f6f1ff;--muted:#b9adde;--line:rgba(200,180,255,0.18);--card:rgba(255,255,255,0.05);--card-strong:rgba(255,255,255,0.08);--radius:18px;--radius-lg:26px;--font-display:var(--font-display-loaded),"Shippori Mincho B1","Times New Roman",serif;--font-body:var(--font-body-loaded),"Zen Kaku Gothic New",system-ui,sans-serif}*{box-sizing:border-box}body,html{margin:0;padding:0;min-height:100%}body{font-family:var(--font-body);color:var(--cream);background:radial-gradient(1200px 700px at 20% -10%,rgba(168,116,255,.28),transparent 60%),radial-gradient(900px 600px at 90% 10%,rgba(255,159,192,.18),transparent 55%),linear-gradient(180deg,var(--night-2) 0,var(--night-1) 100%);background-attachment:fixed;-webkit-font-smoothing:antialiased}body:before{content:"";background-image:radial-gradient(1.5px 1.5px at 15% 30%,rgba(255,255,255,.9),transparent),radial-gradient(1.5px 1.5px at 70% 20%,rgba(255,255,255,.7),transparent),radial-gradient(1px 1px at 40% 70%,rgba(255,255,255,.8),transparent),radial-gradient(1px 1px at 85% 60%,rgba(255,255,255,.6),transparent),radial-gradient(1.5px 1.5px at 25% 85%,rgba(255,255,255,.7),transparent),radial-gradient(1px 1px at 60% 45%,rgba(255,255,255,.5),transparent);opacity:.5}.sky,body:before{position:fixed;inset:0;pointer-events:none;z-index:0}.sky{overflow:hidden}.sky:before{content:"";position:absolute;inset:0;background:radial-gradient(900px 520px at 50% -6%,rgba(120,90,220,.22),transparent 60%),radial-gradient(760px 760px at 88% 96%,rgba(30,16,66,.55),transparent 60%)}.stars{position:absolute;inset:-8%;background-repeat:no-repeat}.stars-1{opacity:.6;background-image:radial-gradient(1px 1px at 10% 12%,rgba(255,255,255,.7),transparent),radial-gradient(1px 1px at 22% 8%,rgba(255,255,255,.55),transparent),radial-gradient(1px 1px at 35% 18%,rgba(255,255,255,.6),transparent),radial-gradient(1px 1px at 48% 7%,rgba(255,255,255,.5),transparent),radial-gradient(1px 1px at 62% 14%,rgba(255,255,255,.6),transparent),radial-gradient(1px 1px at 75% 9%,rgba(255,255,255,.55),transparent),radial-gradient(1px 1px at 88% 16%,rgba(255,255,255,.5),transparent),radial-gradient(1px 1px at 15% 34%,rgba(255,255,255,.6),transparent),radial-gradient(1px 1px at 30% 42%,rgba(255,255,255,.5),transparent),radial-gradient(1px 1px at 45% 31%,rgba(255,255,255,.55),transparent),radial-gradient(1px 1px at 58% 45%,rgba(255,255,255,.5),transparent),radial-gradient(1px 1px at 72% 35%,rgba(255,255,255,.6),transparent),radial-gradient(1px 1px at 84% 44%,rgba(255,255,255,.5),transparent),radial-gradient(1px 1px at 20% 60%,rgba(255,255,255,.55),transparent),radial-gradient(1px 1px at 38% 68%,rgba(255,255,255,.5),transparent),radial-gradient(1px 1px at 55% 62%,rgba(255,255,255,.6),transparent),radial-gradient(1px 1px at 70% 74%,rgba(255,255,255,.5),transparent),radial-gradient(1px 1px at 84% 64%,rgba(255,255,255,.55),transparent),radial-gradient(1px 1px at 14% 84%,rgba(255,255,255,.5),transparent),radial-gradient(1px 1px at 32% 92%,rgba(255,255,255,.55),transparent),radial-gradient(1px 1px at 50% 86%,rgba(255,255,255,.5),transparent),radial-gradient(1px 1px at 68% 94%,rgba(255,255,255,.5),transparent),radial-gradient(1px 1px at 86% 88%,rgba(255,255,255,.55),transparent)}.stars-2{background-image:radial-gradient(1.5px 1.5px at 18% 22%,rgba(255,255,255,.9),transparent),radial-gradient(1.5px 1.5px at 42% 15%,rgba(255,255,255,.8),transparent),radial-gradient(1.5px 1.5px at 66% 26%,rgba(255,255,255,.85),transparent),radial-gradient(1.5px 1.5px at 82% 20%,rgba(255,255,255,.8),transparent),radial-gradient(1.5px 1.5px at 26% 50%,rgba(255,255,255,.85),transparent),radial-gradient(1.5px 1.5px at 52% 40%,rgba(255,255,255,.8),transparent),radial-gradient(1.5px 1.5px at 78% 54%,rgba(255,255,255,.85),transparent),radial-gradient(1.5px 1.5px at 34% 76%,rgba(255,255,255,.8),transparent),radial-gradient(1.5px 1.5px at 60% 82%,rgba(255,255,255,.85),transparent),radial-gradient(1.5px 1.5px at 90% 78%,rgba(255,255,255,.8),transparent);animation:twinkle-2 7.5s ease-in-out infinite}.stars-3{background-image:radial-gradient(2px 2px at 30% 24%,#ffffff,transparent),radial-gradient(2px 2px at 72% 18%,#fff6ff,transparent),radial-gradient(2px 2px at 20% 46%,#ffffff,transparent),radial-gradient(2px 2px at 58% 58%,#fff6ff,transparent),radial-gradient(2px 2px at 84% 40%,#ffffff,transparent),radial-gradient(2px 2px at 44% 88%,#ffffff,transparent),radial-gradient(2px 2px at 12% 70%,#fff6ff,transparent);filter:drop-shadow(0 0 3px rgba(201,169,255,.55));animation:twinkle-3 5s ease-in-out infinite}@keyframes twinkle-2{0%,to{opacity:.45}50%{opacity:.9}}@keyframes twinkle-3{0%,to{opacity:.55;transform:scale(1)}40%{opacity:1;transform:scale(1.04)}70%{opacity:.7}}.constellation{position:absolute;inset:0;width:100%;height:100%;opacity:.5}.shooting{position:absolute;top:-6%;left:62%;width:150px;height:2px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.95));border-radius:2px;opacity:0;filter:drop-shadow(0 0 6px rgba(201,169,255,.7));transform:rotate(150deg) translateX(0);animation:shoot 12s ease-in infinite}.shooting-2{top:-2%;left:40%;width:110px;animation-duration:17s;animation-delay:7s}@keyframes shoot{0%{opacity:0;transform:rotate(150deg) translateX(0)}6%{opacity:0}9%{opacity:1}20%{opacity:1}24%{opacity:0;transform:rotate(150deg) translateX(115vw)}to{opacity:0;transform:rotate(150deg) translateX(115vw)}}@media (prefers-reduced-motion:reduce){.stars-2,.stars-3{animation:none}.stars-2{opacity:.7}.stars-3{opacity:.85}.shooting{display:none}}.app{position:relative;z-index:1;min-height:100dvh;display:flex;flex-direction:column;align-items:center;padding:24px 20px 48px}.container{width:100%;max-width:560px;margin:0 auto}.hero-badge{display:inline-flex;align-items:baseline;font-family:var(--font-body);font-size:13.5px;font-weight:700;letter-spacing:.06em;line-height:1.5;color:#fff;background:linear-gradient(180deg,rgba(168,116,255,.3),rgba(168,116,255,.14));border:1px solid rgba(201,169,255,.6);border-radius:999px;padding:8px 18px;margin:0;box-shadow:0 6px 22px rgba(168,116,255,.35),inset 0 1px 0 rgba(255,255,255,.18);backdrop-filter:blur(6px)}.hero-badge .free{color:var(--gold);margin-right:2px}h1.display{font-size:clamp(21px,5.2vw,32px);line-height:1.28;letter-spacing:.01em;margin:0}.q-title,h1.display{font-family:var(--font-display);font-weight:700;text-align:center}.q-title{font-size:clamp(20px,4.6vw,26px);line-height:1.45;margin:0 0 8px}.q-sub{color:var(--muted);font-size:14px;line-height:1.7;text-align:center;margin:0 auto 8px;max-width:420px}.phrase{display:inline-block;overflow-wrap:anywhere}.jp-wrap{word-break:auto-phrase;text-wrap:pretty}.accent{color:var(--violet)}.accent-rose{color:var(--rose)}.progress{width:100%;max-width:560px;margin:4px auto 26px;display:flex;align-items:center;gap:12px}.progress-track{flex:1;height:6px;border-radius:999px;background:rgba(255,255,255,.1);overflow:hidden}.progress-fill{height:100%;border-radius:999px;background:linear-gradient(90deg,var(--rose),var(--violet));transition:width .45s cubic-bezier(.22,1,.36,1)}.progress-count{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums;min-width:42px;text-align:right}.quiz-back-row{width:100%;max-width:560px;margin:-16px auto 8px}.quiz-back{display:inline-flex;align-items:center;gap:6px;padding:6px 12px 6px 8px;font-family:var(--font-body);font-size:14px;color:var(--muted);background:transparent;border:1px solid transparent;border-radius:999px;cursor:pointer;transition:color .15s ease,background .15s ease,border-color .15s ease}.quiz-back:focus-visible,.quiz-back:hover{color:#fff;background:rgba(255,255,255,.06);border-color:var(--line)}.quiz-back:active{transform:translateY(1px)}.options{display:grid;gap:12px;margin-top:26px}.option{appearance:none;border:1px solid var(--line);background:var(--card);color:var(--cream);font-family:var(--font-body);font-size:16px;text-align:left;padding:17px 20px;border-radius:var(--radius);cursor:pointer;display:flex;align-items:center;gap:14px;transition:transform .15s ease,background .2s ease,border-color .2s ease,box-shadow .2s ease;backdrop-filter:blur(6px)}.option:hover{background:var(--card-strong);border-color:rgba(168,116,255,.5);transform:translateY(-2px)}.option:focus-visible{outline:2px solid var(--violet);outline-offset:2px}.option.selected{border-color:var(--violet);background:rgba(168,116,255,.22);box-shadow:0 0 0 2px var(--violet),0 10px 30px rgba(168,116,255,.35);animation:option-pop .34s ease}.options-locked{pointer-events:none}@keyframes option-pop{0%{transform:scale(1)}45%{transform:scale(1.03)}to{transform:scale(1)}}@media (prefers-reduced-motion:reduce){.option.selected{animation:none}}.option .dot{width:20px;height:20px;border-radius:999px;border:1.5px solid var(--violet-soft);flex-shrink:0;display:grid;place-items:center;transition:background .2s ease}.option.selected .dot{background:var(--violet);border-color:var(--violet)}.option.selected .dot:after{content:"";width:8px;height:8px;border-radius:999px;background:#fff}.option .dot.dot-check{border-radius:7px}.option.selected .dot-check:after{content:"";width:5px;height:9px;border:solid #fff;border-width:0 2px 2px 0;border-radius:1px;background:none;transform:translateY(-1px) rotate(45deg)}.scale{margin-top:30px}.scale-dots{display:flex;align-items:center;gap:10px}.scale-dot{appearance:none;flex:1 1 0;min-width:0;aspect-ratio:1/1;max-width:66px;border-radius:999px;border:1px solid var(--line);background:var(--card);color:var(--cream);font-family:var(--font-body);font-size:16px;font-variant-numeric:tabular-nums;cursor:pointer;display:grid;place-items:center;transition:transform .15s ease,background .2s ease,border-color .2s ease,box-shadow .2s ease;backdrop-filter:blur(6px)}.scale-dot:hover{background:var(--card-strong);border-color:rgba(168,116,255,.5);transform:translateY(-2px)}.scale-dot:focus-visible{outline:2px solid var(--violet);outline-offset:2px}.scale-dot.selected{border-color:var(--violet);background:rgba(168,116,255,.22);box-shadow:0 0 0 2px var(--violet),0 10px 30px rgba(168,116,255,.35);animation:option-pop .34s ease}@media (prefers-reduced-motion:reduce){.scale-dot.selected{animation:none}}.scale-ends{display:flex;justify-content:space-between;gap:12px;margin-top:12px;color:var(--muted);font-size:13px}.btn{appearance:none;border:none;cursor:pointer;font-family:var(--font-body);font-weight:700;font-size:17px;border-radius:999px;padding:17px 28px;transition:transform .15s ease,box-shadow .2s ease,opacity .2s ease}.btn-primary{color:#1c0f3a;background:linear-gradient(100deg,var(--gold),var(--rose) 55%,var(--violet));box-shadow:0 14px 40px rgba(168,116,255,.4);width:100%;max-width:360px}.btn-primary:hover{transform:translateY(-2px);box-shadow:0 20px 50px rgba(168,116,255,.5)}.btn-primary:disabled{opacity:.6;cursor:not-allowed;transform:none}.btn-ghost{color:var(--muted);background:transparent;border:1px solid var(--line)}.btn-ghost:hover{color:var(--cream);border-color:var(--violet-soft)}.center-col{display:flex;flex-direction:column;align-items:center;gap:16px}.footnote{color:var(--muted);font-size:12.5px;text-align:center;margin-top:14px}.loading-wrap{display:flex;flex-direction:column;align-items:center;gap:30px;padding-top:12px}.ring{position:relative;width:180px;height:180px}.ring svg{transform:rotate(-90deg)}.ring-pct{position:absolute;inset:0;display:grid;place-items:center;font-family:var(--font-display);font-size:40px;font-weight:700;font-variant-numeric:tabular-nums}.ring:after{content:"";position:absolute;inset:-14px;border-radius:999px;background:radial-gradient(circle,rgba(168,116,255,.35),transparent 70%);filter:blur(6px);z-index:-1;animation:pulse 2.4s ease-in-out infinite}@keyframes pulse{0%,to{transform:scale(.96);opacity:.7}50%{transform:scale(1.05);opacity:1}}@media (prefers-reduced-motion:reduce){.ring:after{animation:none}}.checklist{display:flex;flex-direction:column;gap:14px;width:100%;max-width:320px}.check-item{display:flex;align-items:center;gap:12px;font-size:15px;color:var(--muted);transition:color .4s ease}.check-item.done{color:var(--cream)}.check-mark{width:24px;height:24px;border-radius:999px;border:1.5px solid var(--line);display:grid;place-items:center;flex-shrink:0;transition:all .4s ease}.check-item.done .check-mark{background:linear-gradient(135deg,var(--rose),var(--violet));border-color:transparent}@keyframes fadeUp{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}.fade{animation:fadeUp .45s cubic-bezier(.22,1,.36,1) both}