:root{--jlpt-blue: #2563eb;--jlpt-blue-dark: #1d4ed8;--jlpt-ink: #0f172a;--jlpt-muted: #64748b;--jlpt-line: #e2e8f0;--jlpt-bg: #f8fafc;--jlpt-ok: #16a34a;--jlpt-ok-bg: #dcfce7;--jlpt-ng: #dc2626;--jlpt-ng-bg: #fee2e2}.mock{background:var(--jlpt-bg);color:var(--jlpt-ink);line-height:1.7}.mock .wrap{max-width:760px;margin:0 auto;padding:0 16px}.mock ruby rt{font-size:.56em;color:var(--jlpt-muted);font-weight:400}.mock__hero{background:linear-gradient(160deg,#eff6ff,#fff 70%);border-bottom:1px solid var(--jlpt-line);padding:28px 0 24px}.mock__crumbs{font-size:.8rem;color:var(--jlpt-muted);margin-bottom:10px}.mock__crumbs a{color:var(--jlpt-blue);text-decoration:none}.mock__badge{display:inline-block;background:var(--jlpt-blue);color:#fff;font-weight:700;font-size:.78rem;padding:4px 12px;border-radius:999px;letter-spacing:.03em}.mock__title{font-size:1.72rem;font-weight:800;line-height:1.25;margin:12px 0 8px}.mock__lead{color:#334155;margin:0 0 16px}.mock__facts{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 6px;padding:0;list-style:none}.mock__facts li{background:#fff;border:1px solid var(--jlpt-line);border-radius:10px;padding:6px 12px;font-size:.82rem;font-weight:600}.mock__facts b{color:var(--jlpt-blue)}.mock__disc{font-size:.76rem;color:var(--jlpt-muted);margin-top:14px;border-left:3px solid var(--jlpt-line);padding-left:10px}.mock__hero-links{margin:14px 0 0;font-size:.9rem;font-weight:600}.mock__hero-links a{color:var(--jlpt-blue);text-decoration:none}.mock__scorebar{position:sticky;top:52px;z-index:20;background:#fff;border-bottom:1px solid var(--jlpt-line);box-shadow:0 2px 10px #0f172a0d}.mock__scorebar-in{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 16px;max-width:760px;margin:0 auto}.mock__progress{font-size:.82rem;color:var(--jlpt-muted);font-weight:600}.mock__progress b{color:var(--jlpt-ink)}.btn-grade{background:var(--jlpt-blue);color:#fff;border:0;border-radius:10px;padding:10px 20px;font-size:.92rem;font-weight:700;cursor:pointer;white-space:nowrap}.btn-grade:hover{background:var(--jlpt-blue-dark)}.btn-grade:disabled{opacity:.5;cursor:default}.mock__sec{padding:26px 0 6px}.mock__sec-head{border-left:5px solid var(--jlpt-blue);padding-left:12px;margin-bottom:4px}.mock__sec-head h2{font-size:1.22rem;font-weight:800;margin:0}.mock__sec-head .ja{color:var(--jlpt-muted);font-size:.85rem;font-weight:600}.mock__block{margin-top:18px}.mock__block-inst{font-size:.86rem;color:#475569;background:#eff6ff;border-radius:8px;padding:8px 12px;margin:0 0 10px}.mock__block-inst .ja{color:var(--jlpt-muted);display:block;font-size:.8rem;margin-top:2px}.mock__stim{background:#fff;border:1px solid var(--jlpt-line);border-radius:12px;padding:14px 16px;margin-bottom:12px}.mock__stim-title{font-weight:700;margin:0 0 8px}.mock__passage{white-space:pre-wrap;margin:0}.mock__audio{width:100%;margin:4px 0 2px}.mock__audio-note{font-size:.78rem;color:var(--jlpt-muted);margin:2px 0 0}.mock__fig{margin:8px 0 0}.mock__fig-h{font-weight:700;margin:0 0 4px}.mock__fig-intro{font-size:.86rem;color:#475569;margin:0 0 8px}.mock__tbl{width:100%;border-collapse:collapse;font-size:.84rem}.mock__tbl th,.mock__tbl td{border:1px solid var(--jlpt-line);padding:6px 8px;text-align:left}.mock__tbl th{background:#f1f5f9;font-weight:700}.mock__fig-notes{font-size:.78rem;color:var(--jlpt-muted);margin:8px 0 0;padding-left:1.1em}.mock__q{background:#fff;border:1px solid var(--jlpt-line);border-radius:12px;padding:14px 16px;margin-bottom:12px}.mock__q-head{display:flex;gap:10px;margin-bottom:10px}.mock__q-no{flex:none;width:28px;height:28px;border-radius:8px;background:var(--jlpt-blue);color:#fff;font-weight:700;font-size:.84rem;display:grid;place-items:center}.mock__q-txt{font-weight:600;margin:0}.mock__q-stem{margin:0 0 10px}.mock__en-toggle{background:none;border:1px solid var(--jlpt-line);color:var(--jlpt-blue);font-size:.76rem;font-weight:600;border-radius:999px;padding:2px 10px;cursor:pointer;margin-left:auto;align-self:flex-start}.mock__en{display:none;font-size:.86rem;color:#475569;background:#f8fafc;border-radius:8px;padding:8px 10px;margin:0 0 10px}.mock__en.show{display:block}.mock__opts{display:grid;gap:8px;margin:0;padding:0;list-style:none}.mock__opt{display:flex;gap:10px;align-items:flex-start;width:100%;text-align:left;background:#fff;border:1.5px solid var(--jlpt-line);border-radius:10px;padding:10px 12px;font:inherit;color:inherit;cursor:pointer}.mock__opt:hover{border-color:#bfdbfe}.mock__opt .mark{flex:none;width:22px;height:22px;border-radius:50%;border:1.5px solid var(--jlpt-line);font-size:.78rem;font-weight:700;color:var(--jlpt-muted);display:grid;place-items:center}.mock__opt.sel{border-color:var(--jlpt-blue);background:#eff6ff}.mock__opt.sel .mark{border-color:var(--jlpt-blue);background:var(--jlpt-blue);color:#fff}.graded .mock__opt{cursor:default}.graded .mock__opt.correct{border-color:var(--jlpt-ok);background:var(--jlpt-ok-bg)}.graded .mock__opt.correct .mark{border-color:var(--jlpt-ok);background:var(--jlpt-ok);color:#fff}.graded .mock__opt.wrong{border-color:var(--jlpt-ng);background:var(--jlpt-ng-bg)}.graded .mock__opt.wrong .mark{border-color:var(--jlpt-ng);background:var(--jlpt-ng);color:#fff}.mock__review{display:none;margin-top:10px;border-top:1px dashed var(--jlpt-line);padding-top:10px}.graded .mock__review{display:block}.mock__review summary{font-size:.82rem;font-weight:600;color:var(--jlpt-blue);cursor:pointer}.mock__review .body{font-size:.86rem;color:#475569;margin-top:8px;white-space:pre-wrap}.mock__review .body .en{display:block;color:var(--jlpt-muted);margin-top:6px}.mock__result{display:none;scroll-margin-top:70px}.mock__result.show{display:block}.mock__result-card{background:#fff;border:1px solid var(--jlpt-line);border-radius:16px;padding:22px;margin:24px 0;text-align:center;box-shadow:0 8px 30px #2563eb14}.mock__score-big{font-size:2.6rem;font-weight:800;color:var(--jlpt-blue);line-height:1}.mock__score-big span{font-size:1rem;color:var(--jlpt-muted);font-weight:600}.mock__score-sub{color:var(--jlpt-muted);margin:6px 0 16px}.mock__bars{display:grid;gap:10px;text-align:left;margin:0 0 8px}.mock__bar-row{font-size:.86rem}.mock__bar-top{display:flex;justify-content:space-between;margin-bottom:4px;font-weight:600}.mock__bar{height:9px;background:#e2e8f0;border-radius:999px;overflow:hidden}.mock__bar i{display:block;height:100%;background:var(--jlpt-blue);border-radius:999px}.mock__bar-row.weak .mock__bar i{background:var(--jlpt-ng)}.mock__weak{font-size:.88rem;margin:14px 0 0}.mock__weak b{color:var(--jlpt-ng)}.mock__gradebottom{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:10px 16px;background:#fff;border:1px solid var(--jlpt-line);border-radius:14px;padding:18px;margin:20px 0 10px;box-shadow:0 4px 16px #2563eb0f}.mock__gradebottom .mock__progress{font-size:.9rem}.mock__gradebottom .btn-grade{font-size:1rem;padding:12px 30px}.graded .mock__gradebottom{opacity:.7}.mock__cta{background:linear-gradient(160deg,#1d4ed8,#2563eb);color:#fff;border-radius:16px;padding:24px 20px;margin:10px 0 30px;text-align:center}.mock__cta h2{font-size:1.3rem;font-weight:800;margin:0 0 6px}.mock__cta p{margin:0 0 16px;opacity:.92;font-size:.92rem}.mock__cta .dl-stores{justify-content:center}.mock__cta .dl-store{background:#ffffff24;border-color:#ffffff4d;color:#fff}.mock__cta-list{list-style:none;padding:0;margin:0 0 16px;font-size:.88rem;display:inline-block;text-align:left}.mock__cta-list li{margin:4px 0}.mock__cta-list li:before{content:"✓";color:#bfdbfe;font-weight:800;margin-right:8px}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--jlpt-ink: #e5e7eb;--jlpt-muted: #94a3b8;--jlpt-line: #334155;--jlpt-bg: #0b1220;--jlpt-ok-bg: #0f3d24;--jlpt-ng-bg: #4c1d1d}:root:not([data-theme=light]) .mock__hero{background:linear-gradient(160deg,#0f1b33,#0b1220 70%)}:root:not([data-theme=light]) .mock__scorebar,:root:not([data-theme=light]) .mock__stim,:root:not([data-theme=light]) .mock__q,:root:not([data-theme=light]) .mock__result-card,:root:not([data-theme=light]) .mock__facts li,:root:not([data-theme=light]) .mock__gradebottom,:root:not([data-theme=light]) .mock__opt{background:#111c32}:root:not([data-theme=light]) .mock__opt.sel,:root:not([data-theme=light]) .mock__block-inst{background:#16233f}:root:not([data-theme=light]) .mock__tbl th{background:#16233f}:root:not([data-theme=light]) .mock__en,:root:not([data-theme=light]) .mock__bar{background:#16233f}}
