:root{--bg:#070809;--bg-2:#0d0f13;--ink:#e8eaef;--ink-dim:#9aa0ab;--ink-faint:#5b616d;--line:rgba(255,255,255,.08);--line-soft:rgba(255,255,255,.05);--card:#f6f5f1;--card-2:#efeee8;--card-ink:#16181c;--card-ink-dim:#5a5f66;--gold:#e9c46a;--accent:#7dd3c0;--m-PC:#fb7185;--m-TE:#f7b955;--m-GB:#34d399;--m-LR:#a3e635;--s-new:#6b7280;--s-forgot:#fb7185;--s-good:#56b8f0;--s-perfect:#e9c46a;--radius:26px;--maxw:560px}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;padding:0;height:100%}body{background:radial-gradient(1100px 700px at 50% -10%,rgba(125,211,192,.1),transparent 60%),radial-gradient(900px 600px at 85% 110%,rgba(233,196,106,.07),transparent 55%),radial-gradient(800px 600px at 10% 100%,rgba(251,113,133,.06),transparent 55%),var(--bg);color:var(--ink);font-family:Hiragino Kaku Gothic ProN,Hiragino Sans,Noto Sans JP,BIZ UDPGothic,system-ui,sans-serif;-webkit-font-smoothing:antialiased;overscroll-behavior-y:none}.mincho{font-family:Hiragino Mincho ProN,YuMincho,Yu Mincho,"Noto Serif JP",serif}#root{min-height:100%;display:flex;flex-direction:column}.app{width:100%;max-width:var(--maxw);margin:0 auto;padding:0 18px env(safe-area-inset-bottom);flex:1;display:flex;flex-direction:column}button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}.fadein{animation:fadein .45s cubic-bezier(.2,.8,.2,1) both}@keyframes fadein{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.topbar{display:flex;align-items:center;gap:12px;padding:max(22px,env(safe-area-inset-top)) 2px 14px}.brand{display:flex;align-items:center;gap:11px;cursor:pointer}.logo{width:38px;height:38px;flex:none}.brand h1{font-size:20px;margin:0;letter-spacing:.06em;font-weight:700}.brand .sub{font-size:11px;color:var(--ink-dim);letter-spacing:.18em;margin-top:2px}.spacer{flex:1}.ghost-btn{padding:9px 14px;border-radius:999px;border:1px solid var(--line);color:var(--ink-dim);font-size:13px;font-weight:600;display:flex;gap:7px;align-items:center;transition:.18s}.ghost-btn:hover{color:var(--ink);border-color:#ffffff38;background:#ffffff08}.sec{margin-top:24px}.sec-label{font-size:11px;letter-spacing:.22em;color:var(--ink-faint);font-weight:700;margin:0 0 11px 2px;text-transform:uppercase}.seg{display:flex;background:var(--bg-2);border:1px solid var(--line);border-radius:14px;padding:4px;gap:4px}.seg button{flex:1;padding:12px 8px;border-radius:10px;font-size:13.5px;font-weight:600;color:var(--ink-dim);transition:.18s;line-height:1.35}.seg button .s2{display:block;font-size:11px;font-weight:500;color:var(--ink-faint);margin-top:2px}.seg button.on{background:linear-gradient(180deg,#ffffff1a,#ffffff0a);color:var(--ink);box-shadow:0 1px #ffffff0f inset}.seg button.on .s2{color:var(--ink-dim)}.chips{display:grid;grid-template-columns:1fr 1fr;gap:10px}.chip{display:flex;align-items:center;gap:11px;padding:13px 14px;border-radius:15px;border:1px solid var(--line);background:var(--bg-2);transition:.18s;text-align:left}.chip:hover{border-color:#fff3}.chip .dot{width:11px;height:11px;border-radius:50%;flex:none}.chip .nm{font-size:15px;font-weight:700;line-height:1.1}.chip .meta{font-size:11px;color:var(--ink-faint);margin-top:2px}.chip.on{background:#ffffff0d;border-color:var(--mc)}.chip.on .dot{box-shadow:0 0 12px 1px var(--mc)}.chip .check{margin-left:auto;width:18px;height:18px;border-radius:50%;border:1.5px solid var(--line);display:flex;align-items:center;justify-content:center;transition:.18s}.chip.on .check{background:var(--mc);border-color:var(--mc)}.chip .check svg{opacity:0;transition:.18s;width:11px;height:11px}.chip.on .check svg{opacity:1}.chip-all{grid-column:1/-1;display:flex;justify-content:space-between;align-items:center;padding:11px 15px;border-radius:13px;border:1px dashed var(--line);color:var(--ink-dim);font-size:13px;font-weight:600}.chip-all:hover{color:var(--ink);border-color:#ffffff40}.cta{width:100%;margin-top:8px;padding:18px;border-radius:18px;font-size:16.5px;font-weight:800;letter-spacing:.04em;color:#0a0b0d;background:linear-gradient(180deg,#fbf7ec,#e9c46a 120%);box-shadow:0 10px 34px -10px #e9c46a8c,0 1px #fff9 inset;transition:.18s;display:flex;align-items:center;justify-content:center;gap:10px}.cta:hover{transform:translateY(-2px);box-shadow:0 16px 40px -10px #e9c46aa6}.cta:active{transform:translateY(0)}.cta:disabled{opacity:.4;cursor:not-allowed;transform:none;box-shadow:none}.review-btn{width:100%;margin-top:11px;padding:15px 18px;border-radius:16px;display:flex;align-items:center;gap:13px;background:linear-gradient(180deg,#fb718521,#fb71850d);border:1px solid rgba(251,113,133,.32);transition:.18s}.review-btn:hover{border-color:#fb71858c;transform:translateY(-1px)}.review-btn:disabled{opacity:.42;cursor:not-allowed;transform:none}.review-btn .ico{width:38px;height:38px;border-radius:11px;background:#fb718529;display:flex;align-items:center;justify-content:center;flex:none}.review-btn .t1{font-size:14.5px;font-weight:700}.review-btn .t2{font-size:11.5px;color:var(--ink-dim);margin-top:1px}.review-btn .num{margin-left:auto;font-size:22px;font-weight:800;color:var(--s-forgot);font-variant-numeric:tabular-nums}.summary{margin-top:14px;padding:18px;border-radius:20px;background:linear-gradient(180deg,var(--bg-2),rgba(13,15,19,.4));border:1px solid var(--line);display:flex;gap:18px;align-items:center}.ring-wrap{position:relative;flex:none}.ring-center{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center}.ring-center b{font-size:23px;font-weight:800;font-variant-numeric:tabular-nums;line-height:1}.ring-center span{font-size:9.5px;color:var(--ink-faint);letter-spacing:.14em;margin-top:3px}.summary .stats{flex:1;display:grid;grid-template-columns:1fr 1fr;gap:9px 14px}.stat{display:flex;align-items:center;gap:8px;font-size:12.5px}.stat .sw{width:9px;height:9px;border-radius:3px;flex:none}.stat b{font-variant-numeric:tabular-nums;font-weight:700;color:var(--ink)}.stat span{color:var(--ink-dim)}.mini-row{display:flex;gap:10px;margin-top:11px}.mini{flex:1;padding:13px;border-radius:15px;background:var(--bg-2);border:1px solid var(--line);text-align:center}.mini b{display:block;font-size:21px;font-weight:800;font-variant-numeric:tabular-nums}.mini span{font-size:11px;color:var(--ink-dim)}.mini .fire{color:var(--gold)}.study-top{display:flex;align-items:center;gap:14px;padding:18px 2px 6px}.pbar{flex:1;height:6px;border-radius:99px;background:#ffffff14;overflow:hidden}.pbar>i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,var(--accent),var(--gold));transition:width .35s cubic-bezier(.2,.8,.2,1)}.counter{font-size:13px;color:var(--ink-dim);font-variant-numeric:tabular-nums;font-weight:600;white-space:nowrap}.x-btn{width:34px;height:34px;border-radius:50%;border:1px solid var(--line);color:var(--ink-dim);display:flex;align-items:center;justify-content:center;transition:.18s}.x-btn:hover{color:var(--ink);border-color:#ffffff40}.stage{position:relative;height:clamp(360px,54vh,500px);margin:14px 0 4px;perspective:1900px}.flip{position:absolute;top:0;right:0;bottom:0;left:0;transform-style:preserve-3d;transition:transform .62s cubic-bezier(.3,.85,.25,1);cursor:pointer}.flip.flipped{transform:rotateY(180deg)}.face{position:absolute;top:0;right:0;bottom:0;left:0;backface-visibility:hidden;-webkit-backface-visibility:hidden;border-radius:var(--radius);padding:26px;display:flex;flex-direction:column;overflow:hidden;background:linear-gradient(165deg,var(--card),var(--card-2));box-shadow:0 30px 60px -22px #000000b3,0 2px #ffffff80 inset,0 0 0 1px #0000000a}.face.back{transform:rotateY(180deg)}.face:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:var(--radius);border:1px solid rgba(255,255,255,.6);pointer-events:none;-webkit-mask:linear-gradient(#000,transparent 60%);mask:linear-gradient(#000,transparent 60%)}.face-top{display:flex;align-items:center;gap:8px;position:relative;z-index:2}.m-pill{font-size:12px;font-weight:800;padding:6px 12px;border-radius:999px;color:#fff;letter-spacing:.04em}.limb-pill{font-size:11px;font-weight:700;padding:5px 10px;border-radius:999px;color:var(--card-ink-dim);background:#0000000d;border:1px solid rgba(0,0,0,.06)}.code-pill{margin-left:auto;font-size:12.5px;font-weight:800;letter-spacing:.06em;color:var(--card-ink-dim);font-variant-numeric:tabular-nums}.face-mid{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;position:relative;z-index:2}.watermark{position:absolute;font-size:230px;line-height:1;color:#14161a09;z-index:0;-webkit-user-select:none;user-select:none;pointer-events:none;font-weight:600}.pt-name{font-size:clamp(58px,17vw,86px);font-weight:600;color:var(--card-ink);letter-spacing:.04em;line-height:1.05}.pt-read{font-size:16px;color:var(--card-ink-dim);margin-top:14px;letter-spacing:.22em}.face-foot{display:flex;align-items:center;justify-content:center;gap:8px;color:#a8a59b;font-size:12.5px;font-weight:600;position:relative;z-index:2}.face-foot svg{opacity:.7}.attr-list{display:flex;flex-direction:column;gap:11px;width:100%;max-width:330px}.attr{display:flex;align-items:center;gap:13px;padding:15px 17px;border-radius:15px;background:#fff;border:1px solid rgba(0,0,0,.06);border-left:5px solid var(--ac);box-shadow:0 6px 16px -10px #0000004d}.attr .ad{width:11px;height:11px;border-radius:50%;background:var(--ac);flex:none;box-shadow:0 0 0 4px color-mix(in srgb,var(--ac) 20%,transparent)}.attr .al{font-size:20px;font-weight:800;color:var(--card-ink);letter-spacing:.03em}.attr .acat{margin-left:auto;font-size:11px;font-weight:700;color:#9b988e;letter-spacing:.05em}.back-name{font-size:15px;color:var(--card-ink-dim);font-weight:700;margin-bottom:4px;letter-spacing:.05em}.cat-name{font-size:clamp(46px,13vw,68px);font-weight:600;color:var(--card-ink);letter-spacing:.05em}.cat-hint{font-size:14px;color:var(--card-ink-dim);margin-top:16px;letter-spacing:.05em}.cat-count{margin-top:10px;font-size:12px;font-weight:700;color:#9b988e;padding:5px 12px;border-radius:99px;background:#0000000a}.pts-grid{display:flex;flex-direction:column;gap:9px;width:100%;max-width:340px;overflow-y:auto;max-height:100%;padding:2px}.ptrow{display:flex;align-items:center;gap:12px;padding:11px 14px;border-radius:13px;background:#fff;border:1px solid rgba(0,0,0,.06)}.ptrow .pd{width:9px;height:9px;border-radius:50%;flex:none}.ptrow .pn{font-size:19px;font-weight:800;color:var(--card-ink)}.ptrow .pr{font-size:11px;color:#9b988e;margin-left:2px}.ptrow .pc{margin-left:auto;font-size:11.5px;font-weight:800;color:#9b988e;font-variant-numeric:tabular-nums}.ptrow .psub{font-size:11px;font-weight:700;color:#b6b3a8}.nav-row{display:flex;align-items:center;gap:10px;margin-top:16px}.nav-btn{width:52px;height:52px;border-radius:15px;border:1px solid var(--line);background:var(--bg-2);color:var(--ink-dim);display:flex;align-items:center;justify-content:center;transition:.16s;flex:none}.nav-btn:hover:not(:disabled){color:var(--ink);border-color:#ffffff40;transform:translateY(-1px)}.nav-btn:disabled{opacity:.3;cursor:not-allowed}.flip-cue{flex:1;height:52px;border-radius:15px;border:1px solid var(--line);background:var(--bg-2);color:var(--ink-dim);font-size:13.5px;font-weight:700;display:flex;align-items:center;justify-content:center;gap:8px;transition:.16s}.flip-cue:hover{color:var(--ink);border-color:#ffffff38}.status-row{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin-top:11px}.sbtn{padding:15px 8px;border-radius:15px;border:1px solid var(--bc);background:var(--bgc);color:var(--cc);font-size:14.5px;font-weight:800;transition:.16s;display:flex;flex-direction:column;align-items:center;gap:5px;letter-spacing:.04em}.sbtn .k{font-size:10px;font-weight:600;opacity:.6}.sbtn:hover{transform:translateY(-2px);filter:brightness(1.12)}.sbtn:active{transform:translateY(0) scale(.97)}.sbtn.cur{box-shadow:0 0 0 2px var(--cc) inset}.status-note{text-align:center;font-size:11px;color:var(--ink-faint);margin-top:9px;letter-spacing:.04em}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#050608bd;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;padding:24px;animation:fadein .3s both}.done{width:100%;max-width:380px;background:linear-gradient(180deg,var(--bg-2),#0a0b0e);border:1px solid var(--line);border-radius:24px;padding:30px 24px;text-align:center;position:relative;overflow:hidden}.done .seal{width:78px;height:78px;margin:0 auto 16px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at 35% 30%,#fbf3da,#e9c46a);box-shadow:0 10px 30px -8px #e9c46a8c}.done h2{font-size:22px;margin:0 0 6px;letter-spacing:.05em}.done p{font-size:13px;color:var(--ink-dim);margin:0 0 20px}.done-stats{display:flex;justify-content:center;gap:8px;margin-bottom:22px}.ds{flex:1;padding:13px 6px;border-radius:14px;background:#ffffff08;border:1px solid var(--line)}.ds b{display:block;font-size:22px;font-weight:800;font-variant-numeric:tabular-nums}.ds span{font-size:10.5px;color:var(--ink-dim)}.done .cta{margin-top:0}.done .ghost-btn{width:100%;justify-content:center;margin-top:10px;padding:13px}.confetti{position:absolute;top:-12px;width:9px;height:14px;border-radius:2px;animation:fall linear forwards;z-index:1}@keyframes fall{to{transform:translateY(560px) rotate(540deg);opacity:0}}.prog-hero{display:flex;gap:20px;align-items:center;padding:22px;border-radius:22px;background:linear-gradient(180deg,var(--bg-2),rgba(13,15,19,.3));border:1px solid var(--line);margin-top:6px}.prog-hero .stats{flex:1;display:flex;flex-direction:column;gap:11px}.legend{display:flex;align-items:center;gap:10px;font-size:13.5px}.legend .sw{width:11px;height:11px;border-radius:4px}.legend b{font-variant-numeric:tabular-nums;font-weight:800;margin-left:auto}.legend span{color:var(--ink-dim)}.mrow{margin-top:13px;padding:15px 16px;border-radius:16px;background:var(--bg-2);border:1px solid var(--line)}.mrow .h{display:flex;align-items:center;gap:9px;margin-bottom:10px}.mrow .h .dot{width:10px;height:10px;border-radius:50%}.mrow .h .nm{font-size:14px;font-weight:700}.mrow .h .pct{margin-left:auto;font-size:13px;font-weight:800;font-variant-numeric:tabular-nums;color:var(--ink-dim)}.sbar{height:9px;border-radius:99px;overflow:hidden;display:flex;background:#ffffff0f}.sbar>i{height:100%}.weak-row{display:flex;align-items:center;gap:12px;padding:12px 4px;border-bottom:1px solid var(--line-soft)}.weak-row .rk{width:22px;font-size:13px;font-weight:800;color:var(--ink-faint);text-align:center}.weak-row .wn{font-size:15px;font-weight:700}.weak-row .wc{font-size:11px;color:var(--ink-dim);margin-left:7px}.weak-row .wb{margin-left:auto;font-size:12px;font-weight:700;color:var(--s-forgot)}.danger-btn{width:100%;margin-top:18px;padding:14px;border-radius:14px;border:1px solid rgba(251,113,133,.25);color:var(--s-forgot);font-size:13.5px;font-weight:700;transition:.18s}.danger-btn:hover{background:#fb718514;border-color:#fb718573}.empty{text-align:center;padding:50px 20px;color:var(--ink-dim)}.foot{text-align:center;color:var(--ink-faint);font-size:11px;padding:26px 0 22px;letter-spacing:.05em}@media (max-width:380px){.pt-name{font-size:64px}.summary{flex-direction:column}}@media (prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;transition-duration:.08s!important}}
