:root{--paper:#F6F1E7;--paper-deep:#EDE3D0;--card:#FFFCF5;--ink:#26211B;--soft:#6B6155;--faint:#9C9080;--accent:#B23A2E;--teal:#2E5E5A;--line:#DCD2C0;--warn:#B98A3E}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--paper);color:var(--ink);font-family:Hiragino Sans,system-ui,-apple-system,sans-serif;line-height:1.7;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button{font:inherit;cursor:pointer}.topbar{position:sticky;top:0;z-index:9;background:#f6f1e7f2;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);padding:11px 18px;display:flex;align-items:center;gap:14px}.topbar .t{font-weight:700;font-size:14px;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topbar button{font-size:11.5px;border:1px solid var(--line);background:#fff;color:var(--soft);border-radius:6px;padding:4px 10px;flex:none}.topbar button.on{background:var(--teal);border-color:var(--teal);color:#fff;font-weight:600}main{max-width:820px;margin:0 auto;padding:20px 18px 80px}.part-h{margin:22px 0 8px;font-size:15px;font-weight:700;color:var(--accent);border-bottom:2px solid var(--line);padding-bottom:6px}.ch{display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:10px 14px;margin:6px 0}.ch:hover{background:var(--paper-deep)}.ch .no{font-weight:700;color:var(--accent);min-width:34px}.ch .m{color:var(--faint);font-size:11.5px;font-variant-numeric:tabular-nums}.ch .m.warn{color:var(--warn)}.ch .m.ok{color:var(--teal)}.pair{margin:13px 0;padding-left:12px;border-left:2px solid var(--line)}.pair p{margin:2px 0}.ja{font-family:Hiragino Mincho ProN,serif;font-size:17px;line-height:2.15}.zh{font-size:13.5px;color:var(--soft);line-height:1.75}rt{font-size:9.5px;font-weight:400}ruby.pub rt{color:var(--accent)}ruby.auto rt{color:var(--faint)}.nofuri ruby.auto rt{display:none}.sp{display:inline-block;font-size:9.5px;color:var(--warn);border:1px solid var(--line);border-radius:4px;padding:0 4px;margin-right:6px;vertical-align:1px}.em-sesame{text-emphasis:filled dot;-webkit-text-emphasis:filled dot;-webkit-text-emphasis-position:over right;text-emphasis-position:over right}.navbar{display:flex;justify-content:space-between;gap:10px;margin-top:26px}.navbar button{border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:8px;padding:9px 16px;font-size:13px}.navbar button:disabled{opacity:.35;cursor:default}.msg{color:var(--soft);font-size:13px;padding:24px 0;text-align:center}.player{position:fixed;left:0;right:0;bottom:0;background:var(--card);border-top:1px solid var(--line);padding:11px 18px 15px;box-shadow:0 -6px 24px #26211b14}.pwrap{max-width:820px;margin:0 auto}.prow{display:flex;align-items:center;justify-content:space-between;gap:10px}.prow .mid{display:flex;align-items:center;gap:22px}.pb{background:none;border:none;color:var(--ink);font-size:19px;padding:4px 8px}.pb.play{width:46px;height:46px;border-radius:50%;background:var(--accent);color:#fff;font-size:17px;box-shadow:0 6px 16px #b23a2e59}.spd button,.tg{font-size:11px;border:1px solid var(--line);background:#fff;color:var(--soft);border-radius:6px;padding:3px 9px;margin-left:4px}.spd button.on,.tg.on{background:var(--teal);border-color:var(--teal);color:#fff;font-weight:600}.track{position:relative;height:6px;background:#e4d9c4;border-radius:99px;margin:14px 0 0;cursor:pointer}.track i{position:absolute;inset:0 auto 0 0;background:var(--accent);border-radius:99px}.track .knob{position:absolute;top:50%;width:13px;height:13px;border-radius:50%;background:#fff;border:2px solid var(--accent);transform:translate(-50%,-50%);box-shadow:0 1px 4px #00000038;pointer-events:none}.times{display:flex;justify-content:space-between;margin-top:7px;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:11.5px;color:var(--faint);font-variant-numeric:tabular-nums}.times .now{color:var(--soft)}.pair.active{background:var(--paper-deep);border-left-color:var(--accent)}.pair.active .ja{color:var(--ink)}.banner{background:#f7ead0;border:1px solid #E3CFA4;color:#7a5b1e;border-radius:8px;padding:9px 13px;font-size:12px;margin-bottom:14px;line-height:1.6}main{padding-bottom:160px}@media(max-width:640px){.player{padding:8px 14px 12px}.pb.play{width:42px;height:42px;font-size:15px}.prow{gap:6px}.prow .mid{gap:18px}.spd button:not(.on){display:none}.spd button.on{min-width:46px}.spd button,.tg{padding:3px 6px;margin-left:3px;font-size:10px}.times{font-size:11px;margin-top:6px}}.book{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:16px 18px;margin:10px 0}.book:hover{background:var(--paper-deep)}.book-t{font-family:Hiragino Mincho ProN,serif;font-size:18px;font-weight:600;line-height:1.5}.book-m{display:flex;align-items:center;gap:14px;margin-top:7px;font-size:12px;color:var(--faint)}.book-r{color:var(--teal);font-weight:600}.book-n{color:var(--faint)}.drawer-veil{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;background:#26211b47;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.drawer{position:fixed;top:0;left:0;bottom:0;z-index:21;width:min(320px,86vw);background:var(--paper);border-right:1px solid var(--line);box-shadow:6px 0 28px #26211b2e;display:flex;flex-direction:column;animation:drawer-in .18s cubic-bezier(.22,.61,.36,1)}@keyframes drawer-in{0%{transform:translate(-100%)}to{transform:none}}@media(prefers-reduced-motion:reduce){.drawer{animation:none}}.drawer-h{display:flex;align-items:center;gap:10px;padding:13px 14px;border-bottom:1px solid var(--line);background:var(--card)}.drawer-t{font-weight:700;font-size:13px;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.drawer-h button{font-size:13px;border:1px solid var(--line);background:#fff;color:var(--soft);border-radius:6px;padding:2px 9px;line-height:1.4}.drawer-b{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:8px 12px 20px}.drawer-b .part-h{margin:14px 0 6px;font-size:13px}.drawer-b .ch{padding:8px 11px;margin:4px 0;gap:9px}.drawer-b .ch .no{min-width:26px;font-size:13px}.ch.cur{border-color:var(--accent);background:var(--paper-deep)}.ch.cur .no{color:var(--accent)}
