:root{--paper: #f3ead8;--paper-2: #e9dcc0;--paper-3: #dcc9a3;--ink: #2a2118;--ink-2: #5a4a38;--ink-3: #8a7660;--cinnabar: #b8322a;--cinnabar-2: #d9534a;--azurite: #2e5c8a;--malachite: #2f7d5b;--gold: #c89b3c;--gold-2: #e8c56a;--chaos: #4b2a6b;--chaos-2: #8e5bc4;--shadow: 0 6px 20px rgba(60, 40, 20, .18);--radius: 14px;--kai: "KaiTi", "STKaiti", "楷体", "Kaiti SC", serif;--song: "Noto Serif SC", "Source Han Serif SC", "Songti SC", "SimSun", "宋体", serif;--fs: 1;color-scheme:light}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--paper);background-image:radial-gradient(ellipse at 20% 10%,rgba(255,255,255,.55),transparent 55%),radial-gradient(ellipse at 80% 90%,rgba(180,140,80,.18),transparent 50%),repeating-linear-gradient(0deg,rgba(120,90,50,.025) 0 2px,transparent 2px 5px);color:var(--ink);font-family:var(--song);font-size:calc(17px * var(--fs));line-height:1.7;-webkit-tap-highlight-color:transparent;overscroll-behavior:none}button{font:inherit;color:inherit}h1,h2,h3,.kai{font-family:var(--kai);font-weight:700;letter-spacing:.04em}.screen{min-height:100%;max-width:980px;margin:0 auto;padding:16px 16px 96px;position:relative;animation:fadeIn .35s ease}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.topbar{display:flex;align-items:center;gap:10px;margin-bottom:14px;flex-wrap:wrap}.topbar .grow{flex:1}.chip{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:999px;background:#fff9;border:1px solid var(--paper-3);font-size:.9em;white-space:nowrap}.chip b{color:var(--cinnabar)}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:2px solid var(--ink);background:var(--paper);padding:10px 22px;border-radius:10px;cursor:pointer;font-family:var(--kai);font-size:1.1em;box-shadow:0 4px 0 var(--ink);transition:transform .08s,box-shadow .08s;-webkit-user-select:none;user-select:none}.btn:active{transform:translateY(3px);box-shadow:0 1px 0 var(--ink)}.btn.primary{background:var(--cinnabar);color:#fff7ec;border-color:#6e1712;box-shadow:0 4px #6e1712}.btn.gold{background:linear-gradient(#f0d48a,var(--gold));border-color:#7a5a18;box-shadow:0 4px #7a5a18}.btn.ghost{background:transparent;box-shadow:none;border-color:var(--paper-3)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.small{padding:4px 12px;font-size:.95em;box-shadow:0 3px 0 var(--ink)}.icon-btn{border:none;background:#ffffff8c;width:40px;height:40px;border-radius:50%;cursor:pointer;font-size:20px;display:inline-grid;place-items:center;border:1px solid var(--paper-3)}.panel{background:#fffaf0c7;border:1px solid var(--paper-3);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px}.scroll-panel{position:relative;background:linear-gradient(90deg,#e6d5b0,#f8f0dc 6%,#f8f0dc 94%,#e6d5b0);border-top:8px solid #6b4a2a;border-bottom:8px solid #6b4a2a;border-radius:4px;padding:20px 22px;box-shadow:var(--shadow)}.seal{display:inline-grid;place-items:center;background:var(--cinnabar);color:#fff3e6;font-family:var(--kai);border-radius:6px;box-shadow:inset 0 0 0 2px #ffffff80}.progress{height:10px;background:var(--paper-2);border-radius:99px;overflow:hidden;border:1px solid var(--paper-3)}.progress>i{display:block;height:100%;background:linear-gradient(90deg,var(--malachite),#5fb38a);transition:width .5s ease}.muted{color:var(--ink-3)}.center{text-align:center}.row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.grid{display:grid;gap:12px}.stack>*+*{margin-top:12px}.shake{animation:shake .4s}@keyframes shake{20%,60%{transform:translate(-8px)}40%,80%{transform:translate(8px)}}.pop{animation:pop .35s ease}@keyframes pop{0%{transform:scale(.85)}60%{transform:scale(1.06)}to{transform:scale(1)}}.float-up{position:fixed;pointer-events:none;font-family:var(--kai);font-size:28px;font-weight:700;color:var(--cinnabar);animation:floatUp 1s ease forwards;z-index:99;text-shadow:0 2px 0 #fff}@keyframes floatUp{0%{opacity:1;transform:translate(-50%)}to{opacity:0;transform:translate(-50%,-70px)}}.toast{position:fixed;left:50%;top:18px;transform:translate(-50%);background:var(--ink);color:var(--paper);padding:8px 18px;border-radius:999px;z-index:100;animation:fadeIn .3s;font-family:var(--kai);max-width:calc(100% - 32px)}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#1e140a8c;display:grid;place-items:center;z-index:50;padding:16px;animation:fadeIn .25s}.overlay>.panel{max-width:560px;width:100%;max-height:88vh;overflow:auto;background:var(--paper)}.tag{display:inline-block;font-size:.78em;padding:1px 8px;border-radius:4px;background:var(--paper-2);color:var(--ink-2)}@media(max-width:560px){body{font-size:calc(16px * var(--fs))}.btn{padding:9px 16px}}.dialogue{display:flex;gap:14px;align-items:flex-start;background:#fffaf0eb;border:2px solid var(--ink);border-radius:16px;padding:14px 16px;box-shadow:0 5px 0 var(--ink);cursor:pointer;-webkit-user-select:none;user-select:none;min-height:120px}.dialogue-body{flex:1;min-width:0}.caret{animation:blink 1s steps(1) infinite;color:var(--cinnabar)}@keyframes blink{50%{opacity:0}}.card{--kc: #6b4a2a;position:relative;width:132px;height:186px;flex:none;border-radius:12px;border:3px solid var(--kc);background:radial-gradient(circle at 50% 42%,rgba(255,255,255,.9),transparent 60%),repeating-linear-gradient(45deg,color-mix(in srgb,var(--kc) 10%,#f7efdd) 0,color-mix(in srgb,var(--kc) 10%,#f7efdd) 6px,#f7efdd 6px,#f7efdd 12px);box-shadow:0 4px color-mix(in srgb,var(--kc) 60%,#000),var(--shadow);cursor:pointer;padding:6px;display:flex;flex-direction:column;align-items:center;transition:transform .15s}.card:hover{transform:translateY(-3px) rotate(-1deg)}.card.small{width:96px;height:132px}.card.selected{outline:4px solid var(--gold);outline-offset:2px;transform:translateY(-6px)}.card.r3{border-color:var(--gold);box-shadow:0 4px #7a5a18,0 0 18px #e8c56ab3}.card.r3:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:9px;background:linear-gradient(115deg,transparent 30%,rgba(255,255,255,.55) 45%,transparent 60%);background-size:250% 100%;animation:shine 3s infinite;pointer-events:none}@keyframes shine{0%{background-position:150% 0}to{background-position:-100% 0}}.card.locked{filter:grayscale(1) opacity(.55)}.card-kind{width:100%;display:flex;justify-content:space-between;font-size:12px;color:#fff;background:var(--kc);border-radius:6px;padding:0 6px;font-family:var(--kai)}.card-kind span{color:var(--gold-2)}.card-glyph{flex:1;display:grid;place-items:center;font-family:var(--kai);font-size:64px;color:var(--kc);text-shadow:2px 2px 0 rgba(255,255,255,.8);line-height:1}.card.small .card-glyph{font-size:44px}.card-name{font-family:var(--kai);font-weight:700;font-size:15px;text-align:center;line-height:1.25}.card.small .card-name{font-size:12.5px}.card-time{font-size:11px;color:var(--ink-3);min-height:16px;text-align:center;line-height:1.2}.card-count{position:absolute;right:-6px;top:-8px;background:var(--cinnabar);color:#fff;border-radius:99px;font-size:12px;padding:0 6px}.options{display:grid;gap:10px}.opt{text-align:left;border:2px solid var(--paper-3);background:#fffaf0;border-radius:12px;padding:12px 14px;cursor:pointer;transition:transform .1s,border-color .15s,background .15s;display:flex;gap:10px;align-items:flex-start}.opt:hover:not(:disabled){border-color:var(--ink-2);transform:translate(3px)}.opt .k{font-family:var(--kai);font-weight:700;color:var(--cinnabar)}.opt.right{border-color:var(--malachite);background:#e3f3e9}.opt.wrong{border-color:var(--cinnabar);background:#f8e0dc}.opt.gone{opacity:.25;text-decoration:line-through}.opt:disabled{cursor:default}.material{background:#efe3c8;border-left:5px solid #8a6a3a;padding:10px 14px;border-radius:6px;font-family:var(--kai);font-size:1.02em}.explain{border-radius:12px;padding:12px 14px;margin-top:12px;animation:fadeIn .3s}.explain.ok{background:#e3f3e9;border:1px solid #9fceb4}.explain.bad{background:#f8e6e2;border:1px solid #e3a99f}.fix-text{font-size:1.1em;line-height:2.2}.phrase{cursor:pointer;border-radius:4px;padding:2px 1px;transition:background .15s}.phrase:hover{background:#8e5bc426}.phrase.checked{background:#2f7d5b1f;color:var(--ink-2)}.phrase.fixed{background:#d9efe2;color:var(--malachite);font-weight:700;text-decoration:underline wavy var(--malachite)}.chaos-glow{color:var(--chaos);text-shadow:0 0 8px rgba(142,91,196,.5)}.river{position:relative;padding:22px 0 8px}.river-line{height:10px;border-radius:99px;background:linear-gradient(90deg,#8fb8d8,#3d7ab0,#8fb8d8);background-size:200% 100%;animation:flow 6s linear infinite}@keyframes flow{to{background-position:-200% 0}}.river-nodes{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}.river-node{background:#fffaf0;border:2px solid var(--azurite);border-radius:10px;padding:6px 10px;animation:pop .35s}.river-node small{display:block;color:var(--azurite);font-family:var(--kai)}.pool{display:flex;flex-wrap:wrap;gap:10px}.chip-btn{border:2px solid var(--ink-2);background:#fffaf0;border-radius:10px;padding:8px 14px;cursor:pointer;box-shadow:0 3px 0 var(--ink-2)}.chip-btn:active{transform:translateY(2px);box-shadow:0 1px 0 var(--ink-2)}.chip-btn.sel{background:var(--azurite);color:#fff;border-color:#173450}.chip-btn.done{background:#d9efe2;border-color:var(--malachite);box-shadow:none;cursor:default}.match-cols{display:grid;grid-template-columns:1fr 1fr;gap:14px}.match-cols .col{display:grid;gap:10px;align-content:start}.match-cols .chip-btn{text-align:left}.bins{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(130px,1fr))}.bin{border:2px dashed var(--ink-3);border-radius:12px;padding:12px;min-height:92px;cursor:pointer;background:#fff6;text-align:center;transition:background .15s}.bin:hover{background:#fffc}.bin h4{margin:0 0 6px;font-family:var(--kai)}.bin .mini{display:inline-block;font-size:.78em;background:#d9efe2;border-radius:6px;padding:1px 6px;margin:2px}.sort-card{margin:0 auto 16px;max-width:420px;text-align:center;font-size:1.15em;padding:18px;border-radius:14px;background:#fffaf0;border:3px solid var(--ink);box-shadow:0 5px 0 var(--ink);font-family:var(--kai)}.map-wrap{background:#efe4c9;border:2px solid #8a6a3a;border-radius:12px;overflow:hidden}.map-wrap svg{display:block;width:100%;height:auto}.map-dot{cursor:pointer}.map-dot circle{transition:r .15s}.map-dot:hover circle.c{r:9}.path{position:relative;display:grid;gap:18px;padding:10px 0}.node{display:flex;align-items:center;gap:14px}.node:nth-child(2n){flex-direction:row-reverse;text-align:right}.node-orb{width:74px;height:74px;flex:none;border-radius:50%;display:grid;place-items:center;font-family:var(--kai);font-size:26px;color:#fff;background:radial-gradient(circle at 35% 30%,#e86d62,var(--cinnabar) 60%,#7a1d17);border:3px solid #fff3e0;box-shadow:0 5px #6e1712,var(--shadow);cursor:pointer;transition:transform .15s;position:relative}.node-orb:hover{transform:scale(1.07)}.node-orb.locked{background:radial-gradient(circle at 35% 30%,#b8aa95,#8a7a66);box-shadow:0 5px #5a4c3a;cursor:not-allowed}.node-orb.boss{background:radial-gradient(circle at 35% 30%,#a77de0,var(--chaos) 60%,#241236);box-shadow:0 5px #241236,0 0 24px #8e5bc499;width:88px;height:88px}.node-orb.done:after{content:"✓";position:absolute;right:-4px;top:-4px;background:var(--malachite);width:24px;height:24px;border-radius:50%;font-size:15px;display:grid;place-items:center;border:2px solid #fff}.node-info{flex:1;min-width:0}.node-info h3{margin:0;font-size:1.1em}.boss-stage{position:relative;border-radius:16px;padding:16px;background:radial-gradient(ellipse at 50% 30%,#5d3a85,#24122f 75%);color:#f3e6ff;overflow:hidden}.boss-orb{width:110px;height:110px;margin:0 auto;border-radius:50%;display:grid;place-items:center;font-family:var(--kai);font-size:54px;background:radial-gradient(circle at 40% 35%,#c9a4ff,#6b3fa0 55%,#1d0d2a);box-shadow:0 0 40px #a77de0;animation:hover 3s ease-in-out infinite}@keyframes hover{50%{transform:translateY(-8px) scale(1.03)}}.boss-orb.hurt{animation:hurt .45s}@keyframes hurt{0%{filter:brightness(3);transform:scale(.9)}to{filter:none}}.hp{height:14px;border-radius:99px;background:#ffffff26;overflow:hidden;border:1px solid rgba(255,255,255,.3)}.hp>i{display:block;height:100%;background:linear-gradient(90deg,#ff6b9a,#c13ad9);transition:width .4s}.hearts{font-size:22px;letter-spacing:3px}.book-tile{display:flex;gap:14px;align-items:center;padding:14px;border-radius:14px;background:#fffaf0d9;border:2px solid var(--paper-3);cursor:pointer;transition:transform .15s;text-align:left;width:100%}.book-tile:hover{transform:translateY(-2px);border-color:var(--ink-2)}.book-tile.soon{cursor:default;opacity:.8}.book-spine{width:54px;height:72px;border-radius:6px;flex:none;display:grid;place-items:center;color:#fff;font-family:var(--kai);font-size:22px;writing-mode:vertical-rl;box-shadow:inset -6px 0 #0000002e}.hero{text-align:center;padding:30px 0 10px}.hero h1{font-size:clamp(40px,9vw,72px);margin:0;line-height:1.1;color:var(--ink);text-shadow:3px 3px 0 var(--paper-3)}.hero .sub{font-family:var(--kai);color:var(--cinnabar);letter-spacing:.3em}.ink-bg{position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;pointer-events:none;opacity:.5}.print-only{display:none}@media print{.no-print,.ink-bg,.toast,.float-up{display:none!important}.print-only{display:block}body{background:#fff!important}.notes .panel{box-shadow:none;border-top:0;border-right:0;border-bottom:1px solid #ccc;break-inside:avoid;background:#fff}}.chron-head,.chron-row{display:grid;grid-template-columns:1fr minmax(64px,110px) 1fr;gap:8px}.chron-head{font-family:var(--kai);font-size:1.1em;text-align:center;margin-bottom:6px;position:sticky;top:0;background:var(--paper);z-index:2;padding:4px 0}.chron-row{align-items:start;padding:6px 0;border-top:1px dashed var(--paper-3)}.chron-axis{text-align:center;font-family:var(--kai);color:var(--cinnabar);font-size:.9em;padding-top:6px}.chron-col{display:flex;flex-direction:column;gap:6px;min-width:0}.chron-col.cn{align-items:flex-end}.chron-col.world{align-items:flex-start}.chron-ev{text-align:left;background:#fffaf0;border:2px solid var(--paper-3);border-left-width:6px;border-radius:10px;padding:6px 10px;font-size:.9em;cursor:pointer;max-width:100%;overflow-wrap:anywhere}.chron-col.cn .chron-ev{border-left-width:2px;border-right-width:6px}.chron-ev.fog{cursor:default;color:var(--ink-3);background:#ffffff59;border-style:dashed}.chron-year{display:block;font-size:.8em;color:var(--ink-3)}@media(max-width:480px){.chron-row,.chron-head{grid-template-columns:1fr 52px 1fr;gap:4px}.chron-ev{font-size:.82em;padding:5px 7px}.chron-axis{font-size:.78em}}.ins-cur{border:2px dashed var(--cinnabar)}.ins-line{display:flex;flex-direction:column;align-items:stretch;gap:6px;max-width:520px;margin:0 auto;width:100%}.ins-wrap{display:flex;flex-direction:column;gap:6px}.ins-slot{border:2px dashed var(--azurite);background:transparent;color:var(--azurite);border-radius:10px;padding:6px;cursor:pointer;font-family:var(--kai)}.ins-slot:hover{background:#3d7ab014}.ins-card{background:#fffaf0;border:2px solid var(--paper-3);border-radius:10px;padding:8px 12px;animation:pop .35s}.ins-card.cn{border-left:6px solid var(--cinnabar)}.ins-card.world{border-left:6px solid #5b3f8c}.ins-card.ok{box-shadow:0 0 0 3px var(--malachite)}.ins-card.bad{box-shadow:0 0 0 3px var(--cinnabar)}.essay-mat{margin:8px 0;padding:8px 12px;border-left:4px solid var(--paper-3);background:#fff6;font-family:var(--kai)}.essay-steps{gap:6px;margin:10px 0;flex-wrap:wrap}.essay-steps .chip.sel{background:var(--azurite);color:#fff}.essay-steps .chip.done{background:#d9efe2}.essay-claim{border-left:4px solid var(--azurite)}.essay-note{margin-top:10px}.essay-note.ok{border-left:4px solid var(--malachite)}.essay-note.bad{border-left:4px solid var(--cinnabar)}.essay-model{margin:6px 0;line-height:1.8}.opt.sel{border-color:var(--azurite);background:#e4eef7}.paper-list{list-style:none;counter-reset:pq;padding:0;margin:12px 0;display:flex;flex-direction:column;gap:12px}.paper-q{counter-increment:pq;position:relative}.paper-q .q-stem:before{content:counter(pq) ". ";font-family:var(--kai);color:var(--cinnabar);font-weight:700}.paper-q.ok{border-left:5px solid var(--malachite)}.paper-q.bad{border-left:5px solid var(--cinnabar)}.paper-explain{margin-top:8px;padding:8px 10px;border-radius:8px;background:#f8efe0;font-size:.92em}.paper-score{font-family:var(--kai);font-size:3em;color:var(--cinnabar);line-height:1.1}.paper-score small{font-size:.4em;color:var(--ink-2)}.tag.bad{background:#f8e0dc;color:var(--cinnabar)}.node-orb.paper{background:#fffaf0;color:var(--azurite);border-color:var(--azurite);font-family:var(--kai)}.next-card{display:flex;gap:12px;align-items:center;margin-bottom:16px;border:2px solid var(--cinnabar)}@media(max-width:520px){.next-card{flex-wrap:wrap}.next-card .btn{width:100%}}.fig{margin:6px 0;font-family:var(--sans, inherit);font-size:.92em}.fig figcaption{font-weight:700;text-align:center;margin-bottom:4px}.fig-scroll{overflow-x:auto}.fig-table{border-collapse:collapse;margin:0 auto;min-width:60%}.fig-table th,.fig-table td{border:1px solid rgba(138,106,58,.5);padding:4px 8px;text-align:center}.fig-table th{background:#8a6a3a26}.fig-note{font-size:.82em;opacity:.75;text-align:right;margin-top:2px}
