:root{--ink: #1d1d1f;--ink-soft: #55555a;--paper: #ffffff;--paper-dim: #f7f6f3;--line: #e4e2dc;--accent: #c8401f;--accent-soft: #fbeee9;--ok: #2e7d4f;--ng: #b3261e}*{margin:0;padding:0;box-sizing:border-box}html{font-size:16px}body{font-family:Hiragino Kaku Gothic ProN,Hiragino Sans,Yu Gothic,Noto Sans JP,sans-serif;color:var(--ink);background:var(--paper);line-height:1.9}ruby rt{font-size:.5em;color:var(--ink-soft);letter-spacing:0}a{color:inherit}.app{display:flex;min-height:100vh}.nav-toggle{position:fixed;left:12px;bottom:12px;z-index:20;font:inherit;font-size:.78rem;font-weight:700;padding:6px 14px;border-radius:999px;border:1px solid var(--line);background:#fff;cursor:pointer;box-shadow:0 2px 8px #00000014}.nav-toggle .nt-open{display:none}html.nav-closed .nav-toggle .nt-open{display:inline}html.nav-closed .nav-toggle .nt-close,html.nav-closed .sidebar{display:none}.sidebar{width:268px;flex-shrink:0;background:var(--paper-dim);border-right:1px solid var(--line);padding:28px 0 60px;font-size:.82rem}.site-title{display:block;padding:0 24px 20px;border-bottom:1px solid var(--line);margin-bottom:20px;text-decoration:none}.site-title .mark{color:var(--accent);font-weight:700;font-size:1.05rem;letter-spacing:.04em}.site-title .sub{color:var(--ink-soft);font-size:.72rem;margin-top:2px}.nav-group{padding:0 24px;margin-bottom:4px}.nav-group.extras{margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}details.hen>summary,details.chap>summary{list-style:none;cursor:pointer;user-select:none}details.hen>summary::-webkit-details-marker,details.chap>summary::-webkit-details-marker{display:none}.chev{display:inline-block;font-size:.66em;color:var(--ink-soft);transition:transform .15s;margin-right:7px}details[open]>summary .chev{transform:rotate(90deg)}.hen-head{font-weight:700;font-size:.82rem;letter-spacing:.05em;color:var(--ink);padding:5px 0;display:flex;align-items:center}.hen-head.static{color:var(--ink-soft)}.hen-head.now,.hen-head.now .hen-title{color:var(--accent)}.hen-head a{text-decoration:none;color:inherit}.hen-head.link.now a{color:var(--accent)}.chap-head{font-size:.8rem;color:var(--ink-soft);padding:4px 0 4px 8px;display:flex;align-items:center}.chap-head.static{padding-left:22px}details.chap[open]>.chap-head{color:var(--ink);font-weight:600}.sidebar .soon-tag{font-weight:400;font-size:.66rem;color:var(--ink-soft);border:1px solid var(--line);border-radius:999px;padding:0 8px;margin-left:8px}.nav-quests{margin:2px 0 8px 22px;border-left:2px solid var(--line);padding-left:12px}.nav-quests li{list-style:none;padding:2.5px 0;color:var(--ink-soft)}.nav-quests li a{text-decoration:none}.nav-quests li.done:before{content:"✓ ";color:var(--ok);font-weight:700}.nav-quests li.now{color:var(--accent);font-weight:700;background:var(--accent-soft);border-radius:4px;padding-left:6px;margin-left:-6px}.progress{padding:14px 24px 0;border-top:1px solid var(--line);margin-top:8px}.progress .bar{height:6px;background:var(--line);border-radius:3px;overflow:hidden;margin-top:6px}.progress .bar span{display:block;height:100%;width:0;background:var(--accent)}.progress .label{color:var(--ink-soft);font-size:.72rem}.main{flex:1;min-width:0}.quest,.cover{max-width:760px;padding:44px 56px 80px}.crumb{font-size:.78rem;color:var(--ink-soft);letter-spacing:.05em}.crumb b{color:var(--accent);font-weight:600}.quest h1{font-size:2.3rem;font-weight:800;margin:10px 0 6px;letter-spacing:.02em}.quest-lead{color:var(--ink-soft);font-size:.9rem;margin-bottom:34px}.quest article,article.quest{counter-reset:block}.quest section{margin-bottom:40px}.quest h2{font-size:.95rem;font-weight:700;letter-spacing:.1em;color:var(--accent);display:flex;align-items:center;gap:10px;margin-bottom:14px}.quest h2:before{counter-increment:block;content:counter(block);width:22px;height:22px;border-radius:50%;flex-shrink:0;background:var(--accent);color:#fff;font-size:.72rem;display:inline-flex;align-items:center;justify-content:center;letter-spacing:0}.scene{background:var(--paper-dim);border-radius:10px;padding:22px 26px}.scene .situation{font-size:.78rem;color:var(--ink-soft);margin-bottom:6px}.scene .sentence{font-size:1.25rem;font-weight:600}.scene .sentence em,.examples li em{font-style:normal;color:var(--accent);font-weight:800}.meaning{border-left:4px solid var(--accent);background:var(--accent-soft);padding:16px 22px;border-radius:0 8px 8px 0;font-size:1.1rem;font-weight:700}.meaning small{display:block;font-weight:400;font-size:.82rem;color:var(--ink-soft);margin-top:4px}table{border-collapse:collapse;width:100%;font-size:.88rem}th,td{border:1px solid var(--line);padding:9px 14px;text-align:left;vertical-align:top}th{background:var(--paper-dim);font-weight:700;font-size:.8rem;white-space:nowrap}td .form,.compare-form{color:var(--accent);font-weight:700}.examples li{list-style:none;padding:14px 0;border-bottom:1px dashed var(--line);font-size:1.05rem}.examples .note{font-size:.78rem;color:var(--ink-soft);display:block}.warn{display:flex;gap:10px;align-items:baseline;background:#fff8e6;border:1px solid #ecdca8;border-radius:8px;padding:12px 16px;font-size:.85rem;margin-top:14px}.warn b{color:#a05a00}.quiz{border:1px solid var(--line);border-radius:10px;overflow:hidden}.quiz-head{background:var(--paper-dim);padding:10px 18px;font-size:.8rem;font-weight:700;color:var(--ink-soft)}.q{padding:16px 18px;border-top:1px solid var(--line);font-size:.95rem}.q .stem{margin-bottom:8px}.q .stem .qnum{color:var(--accent);font-weight:800;margin-right:8px}.choices{display:flex;gap:10px;flex-wrap:wrap}.choices button{font:inherit;font-size:.88rem;padding:6px 16px;border:1px solid var(--line);border-radius:999px;background:#fff;cursor:pointer}.q:not(.answered) .choices button:hover{border-color:var(--accent);color:var(--accent)}.choices button.correct{background:var(--ok);color:#fff;border-color:var(--ok);font-weight:700}.choices button.wrong{background:var(--ng);color:#fff;border-color:var(--ng)}.q.answered .choices button{cursor:default}.answer{margin-top:10px;font-size:.83rem;background:#eef6f0;border-radius:6px;padding:10px 14px;color:#1e4d33}.answer b{color:var(--ok)}.pager{display:flex;justify-content:space-between;margin-top:56px;font-size:.85rem}.pager a{color:var(--accent);text-decoration:none;font-weight:700}.pager .dir{color:var(--ink-soft);font-weight:400;display:block;font-size:.72rem}.cover .hero{margin:40px 0 48px}.cover .hero .kicker{color:var(--accent);font-weight:700;font-size:.85rem;letter-spacing:.15em}.cover .hero h1{font-size:2.6rem;font-weight:800;line-height:1.4;margin:8px 0 12px}.cover .hero p{color:var(--ink-soft);max-width:34em}.cover .start{display:inline-block;margin-top:22px;background:var(--accent);color:#fff;text-decoration:none;font-weight:700;font-size:.9rem;padding:10px 26px;border-radius:999px}.cover .toc-list{margin-top:8px}.cover .toc-list li{list-style:none;padding:10px 0;border-bottom:1px dashed var(--line);display:flex;gap:14px;align-items:baseline}.cover .toc-list .vnum{color:var(--accent);font-weight:800;width:2em}.cover .toc-list .soon-tag{font-size:.66rem;color:var(--ink-soft);border:1px solid var(--line);border-radius:999px;padding:0 8px}.cover .toc-list .desc{color:var(--ink-soft);font-size:.82rem}.vocab-top,.vocab-drill{max-width:760px;padding:44px 56px 80px}.vocab-top h1,.vocab-drill h1{font-size:1.9rem;font-weight:800;margin:8px 0 4px}.vocab-drill .wcount{font-size:1rem;color:var(--ink-soft);font-weight:400}.vocab-top .lead,.vocab-drill .lead{color:var(--ink-soft);font-size:.88rem;margin-bottom:24px;max-width:40em}.deck-list{margin-top:8px}.deck-list li{list-style:none;border-bottom:1px dashed var(--line)}.deck-list li a{display:flex;align-items:baseline;gap:12px;padding:14px 4px;text-decoration:none}.deck-list li a:hover .deck-title{color:var(--accent)}.deck-list .deck-title{font-weight:700;font-size:1.02rem}.deck-list .deck-count{color:var(--accent);font-weight:700;font-size:.82rem}.deck-list li.soon{display:flex;align-items:baseline;gap:12px;padding:14px 4px;color:var(--ink-soft)}.deck-list li.soon .deck-title{font-weight:400}.deck-list .soon-tag{font-size:.66rem;color:var(--ink-soft);border:1px solid var(--line);border-radius:999px;padding:0 8px}.deckbar{display:flex;align-items:center;gap:14px;font-size:.76rem;color:var(--ink-soft);margin-bottom:20px}.deckbar .track{flex:1;height:8px;background:var(--line);border-radius:4px;overflow:hidden}.deckbar .track span{display:block;height:100%;background:var(--accent);border-radius:4px;transition:width .25s}.deckbar .count b{color:var(--ink);font-size:.9rem}.vcard{position:relative;border:1px solid var(--line);border-radius:16px;background:#fff;box-shadow:0 6px 24px #0000000f;padding:40px;min-height:360px;display:flex;flex-direction:column}.vcard .tag{font-size:.72rem;color:var(--ink-soft);letter-spacing:.08em}.vcard .face-front{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px}.vcard .word{font-size:3.6rem;font-weight:800;letter-spacing:.04em;text-align:center}.vcard .word-hint{font-size:.8rem;color:var(--ink-soft);background:var(--paper-dim);padding:3px 14px;border-radius:999px}.vcard .flip-btn{align-self:center;margin-top:auto;font:inherit;font-size:.9rem;font-weight:700;background:var(--ink);color:#fff;border:none;border-radius:999px;padding:11px 40px;cursor:pointer}.vcard .face-back{flex:1;display:none;flex-direction:column}.vcard.flipped .face-front{display:none}.vcard.flipped .face-back{display:flex}.vcard .back-word{font-size:1.8rem;font-weight:800}.vcard .back-word .yomi{font-size:1rem;color:var(--accent);font-weight:700;margin-left:10px}.vcard .back-mean{font-size:1.05rem;margin:12px 0 18px}.vcard .back-ex{background:var(--paper-dim);border-radius:10px;padding:16px 20px;font-size:1rem}.vcard .back-ex .ex-label{font-size:.7rem;color:var(--ink-soft);letter-spacing:.1em;display:block;margin-bottom:4px}.vcard .back-ex em{font-style:normal;color:var(--accent);font-weight:700}.vcard .judge{margin-top:auto;display:flex;gap:12px;padding-top:24px}.vcard .judge button{flex:1;font:inherit;font-size:.95rem;font-weight:700;border-radius:12px;padding:14px 0;cursor:pointer;border:1px solid}.vcard .judge .again{background:var(--ng-soft, #fdeeed);color:var(--ng);border-color:#f0c4c0}.vcard .judge .got{background:var(--ok-soft, #eef6f0);color:var(--ok);border-color:#bfe0cb}.vocab-drill .foot-stats{display:flex;gap:20px;justify-content:center;margin-top:22px;font-size:.78rem;color:var(--ink-soft)}.vocab-drill .foot-stats b{color:var(--ink)}.vocab-drill .csv{margin-top:18px;text-align:center;font-size:.78rem}.vocab-drill .csv a{color:var(--accent);font-weight:700;text-decoration:none}.reading{max-width:760px;padding:44px 56px 80px}.reading h1{font-size:2.1rem;font-weight:800;margin:10px 0 6px;letter-spacing:.02em}.reading .quest-lead{color:var(--ink-soft);font-size:.9rem;margin-bottom:30px}.reading section{margin-bottom:34px}.read-h2{font-size:.95rem;font-weight:700;letter-spacing:.1em;color:var(--accent);margin-bottom:14px}.read-tips{background:var(--accent-soft);border-radius:12px;padding:18px 24px}.read-tips .read-h2{margin-bottom:10px}.read-tips ul{margin:0;padding-left:1.2em}.read-tips li{font-size:.9rem;margin-bottom:6px;line-height:1.8}.read-tips li:last-child{margin-bottom:0}.read-tips li b{color:var(--accent)}.read-passage .passage-label{font-size:.72rem;color:var(--ink-soft);letter-spacing:.1em;margin-bottom:8px}.read-passage .passage-label .src{margin-left:8px}.passage-body{border:1px solid var(--line);border-radius:12px;padding:28px 32px;background:#fff;font-size:1.08rem;line-height:2.15}.passage-body p{margin-bottom:1em}.passage-body p:last-child{margin-bottom:0}.listening{max-width:760px;padding:44px 56px 80px}.listening h1{font-size:2.1rem;font-weight:800;margin:10px 0 6px;letter-spacing:.02em}.listening .quest-lead{color:var(--ink-soft);font-size:.9rem;margin-bottom:30px}.listening section{margin-bottom:34px}.listen-situation{font-size:.95rem;color:var(--ink);background:var(--paper-dim);border-radius:8px;padding:14px 18px;margin:18px 0 22px}.audio-box{background:#fff;border:1px solid var(--line);border-radius:12px;padding:22px 24px}.audio-controls{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.audio-controls .play{font:inherit;font-size:.95rem;font-weight:700;background:var(--accent);color:#fff;border:none;border-radius:999px;padding:11px 30px;cursor:pointer}.audio-controls .play:disabled{background:var(--ink-soft);cursor:default}.audio-controls .stop{font:inherit;font-size:.85rem;font-weight:700;background:#fff;color:var(--ink-soft);border:1px solid var(--line);border-radius:999px;padding:9px 20px;cursor:pointer}.audio-controls .stop:disabled{opacity:.4;cursor:default}.audio-controls .spd{margin-left:auto;display:flex;gap:6px}.audio-controls .spd-btn{font:inherit;font-size:.8rem;background:#fff;color:var(--ink-soft);border:1px solid var(--line);border-radius:999px;padding:6px 14px;cursor:pointer}.audio-controls .spd-btn.active{background:var(--accent-soft);color:var(--accent);border-color:var(--accent);font-weight:700}.audio-note{font-size:.76rem;color:var(--ink-soft);margin-top:12px}.audio-fallback{font-size:.82rem;color:var(--ng);margin-top:8px}.script-box{margin-top:8px;border:1px solid var(--line);border-radius:10px;padding:4px 18px}.script-box summary{cursor:pointer;font-size:.85rem;font-weight:700;color:var(--accent);padding:12px 0;list-style:none}.script-box summary::-webkit-details-marker{display:none}.script-box summary:before{content:"▸ "}.script-box[open] summary:before{content:"▾ "}.script-body{padding:6px 0 16px}.script-body .s-situation{font-size:.85rem;color:var(--ink-soft);margin-bottom:10px}.script-body .s-line{font-size:1rem;line-height:1.9;margin-bottom:4px}.script-body .s-who{display:inline-block;min-width:3em;font-size:.75rem;font-weight:700;color:var(--accent);margin-right:8px}.moshi{max-width:780px;padding:44px 56px 100px}.moshi h1{font-size:2.2rem;font-weight:800;margin:8px 0 6px}.moshi .lead{color:var(--ink-soft);font-size:.92rem;margin-bottom:26px}.moshi-rule{border:1px solid var(--line);border-radius:12px;padding:20px 24px;background:var(--paper-dim)}.moshi-rule h2{font-size:.9rem;color:var(--accent);letter-spacing:.08em;margin-bottom:12px}.moshi-rule ul{padding-left:1.2em}.moshi-rule li{font-size:.9rem;margin-bottom:6px;line-height:1.8}.moshi-note{font-size:.8rem;color:var(--ink-soft);margin-top:10px}.moshi-start{display:block;margin:26px 0 0;font:inherit;font-size:1rem;font-weight:700;background:var(--accent);color:#fff;border:none;border-radius:999px;padding:14px 36px;cursor:pointer}.moshi-bar{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:16px;background:#fff;border-bottom:1px solid var(--line);padding:12px 0;margin-bottom:24px}.moshi-bar .timer{font-size:1.4rem;font-weight:800;letter-spacing:.05em;font-variant-numeric:tabular-nums}.moshi-bar .timer.warn{color:var(--ng)}.moshi-bar .progress-count{color:var(--ink-soft);font-size:.85rem}.moshi-bar .progress-count b{color:var(--ink);font-size:1.05rem}.moshi-submit{margin-left:auto;font:inherit;font-size:.9rem;font-weight:700;background:var(--ink);color:#fff;border:none;border-radius:999px;padding:10px 24px;cursor:pointer}.moshi-submit.big{display:block;margin:40px auto 0;padding:14px 40px;font-size:1rem}.daimon{margin-bottom:40px}.daimon-head{font-size:1.05rem;font-weight:800;display:flex;align-items:baseline;gap:10px;margin-bottom:6px}.daimon-head .dno{color:var(--accent);font-size:.85rem;font-weight:800}.daimon-inst{font-size:.85rem;color:var(--ink-soft);margin-bottom:16px}.mq{padding:16px 0;border-top:1px solid var(--line)}.mq-situation{font-size:.88rem;color:var(--ink-soft);background:var(--paper-dim);border-radius:8px;padding:10px 14px;margin-bottom:10px}.mq-play{font:inherit;font-size:.82rem;font-weight:700;color:var(--accent);background:var(--accent-soft);border:1px solid var(--accent);border-radius:999px;padding:6px 18px;cursor:pointer;margin-bottom:12px}.mq-stem{font-size:1.02rem;margin-bottom:12px;display:flex;gap:10px}.mq-stem .mq-num{flex-shrink:0;width:22px;height:22px;border-radius:50%;background:var(--paper-dim);border:1px solid var(--line);font-size:.75rem;display:inline-flex;align-items:center;justify-content:center;font-weight:700}.mq-choices{display:flex;flex-direction:column;gap:8px;padding-left:32px}.mq-choice{font:inherit;font-size:.95rem;text-align:left;padding:10px 16px;border:1px solid var(--line);border-radius:10px;background:#fff;cursor:pointer}.mq-choice:hover{border-color:var(--accent)}.mq-choice.selected{border-color:var(--ink);background:var(--paper-dim);font-weight:700}.graded .mq-choice{cursor:default}.mq-choice.correct{background:var(--ok-soft, #eef6f0);border-color:var(--ok);color:#1e4d33;font-weight:700}.mq-choice.wrong{background:var(--ng-soft, #fdeeed);border-color:var(--ng);color:#7c2620}.mq-explain{margin:10px 0 0 32px;font-size:.85rem;background:#eef6f0;border-radius:8px;padding:10px 14px;color:#1e4d33}.mq-explain b{color:var(--ok)}.result-h{font-size:1.4rem;font-weight:800;margin-bottom:18px}.result-cards{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:18px}.rcard{flex:1;min-width:150px;border:1px solid var(--line);border-radius:12px;padding:16px 18px}.rcard.pass{border-color:var(--ok);background:var(--ok-soft, #eef6f0)}.rcard.fail{border-color:var(--ng);background:var(--ng-soft, #fdeeed)}.rcard-label{font-size:.76rem;color:var(--ink-soft)}.rcard-score{font-size:1.8rem;font-weight:800;margin:4px 0}.rcard-pct{font-size:.8rem;font-weight:700}.result-verdict{font-size:.95rem;margin-bottom:12px}.result-verdict .v-pass{color:var(--ok)}.result-verdict .v-fail{color:var(--ng)}.result-actions{display:flex;gap:12px;margin-top:18px}.moshi-again,.moshi-print{font:inherit;font-size:.9rem;font-weight:700;border-radius:999px;padding:11px 26px;cursor:pointer}.moshi-again{background:var(--accent);color:#fff;border:none}.moshi-print{background:#fff;color:var(--ink);border:1px solid var(--line)}@media print{.moshi-bar,.moshi-start,.moshi-submit,.result-actions,.mq-play{display:none!important}.moshi{max-width:none;padding:0}.mq-choice{border:1px solid #999!important;background:#fff!important}}@media(max-width:860px){.app{flex-direction:column}.sidebar{width:auto;border-right:0;border-bottom:1px solid var(--line);padding-bottom:28px}.quest,.cover{padding:32px 22px 80px}.quest h1{font-size:1.7rem}.vocab-top,.vocab-drill{padding:32px 22px 80px}.vcard{padding:28px 22px}.vcard .word{font-size:2.8rem}.reading,.listening{padding:32px 22px 80px}.reading h1,.listening h1{font-size:1.6rem}.passage-body{padding:20px;font-size:1.02rem}.audio-controls .spd{margin-left:0;width:100%}}@media print{.sidebar,.nav-toggle,.pager,.start{display:none!important}.quest,.cover{max-width:none;padding:0}.answer{display:none!important}.choices button{border:1px solid #999;background:#fff!important;color:#000!important}body{line-height:1.8}}
