#loader{z-index:10;background:var(--paper);flex-direction:column;justify-content:center;align-items:center;gap:18px;transition:opacity .8s;display:flex;position:fixed;inset:0}body:not(.is-3d) #loader{display:none}#loader.done{opacity:0;pointer-events:none}.ld-ink{z-index:-1;width:100%;height:100%;position:absolute;inset:0}#loader{isolation:isolate}.ld-scroll{justify-content:center;align-items:center;height:220px;display:flex;position:relative}.ld-scroll .scroll-paper{border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:#f9f6ef;justify-content:center;align-items:center;width:min(720px,80vw);height:170px;animation:1.2s cubic-bezier(.6,.1,.2,1) forwards ld-unroll;display:flex;overflow:hidden;transform:scaleX(0);box-shadow:0 6px 20px #241b1926}.ld-scroll .scroll-paper span{font:400 84px/1 var(--cursive);color:var(--ink);letter-spacing:.06em;white-space:nowrap;animation:1s .5s both ld-ink-in}@keyframes ld-ink-in{0%{opacity:0;filter:blur(12px);transform:scale(1.2)}}.ld-scroll .roller{background:linear-gradient(90deg,#2e2620,#5b4a3c 45%,#2e2620);border-radius:11px;width:22px;height:220px;margin-left:-11px;animation:1.2s cubic-bezier(.6,.1,.2,1) forwards ld-rollL;position:absolute;top:0;left:50%;box-shadow:0 4px 10px #00000040}.ld-scroll .roller.right{animation-name:ld-rollR}@keyframes ld-unroll{to{transform:scaleX(1)}}@keyframes ld-rollL{to{transform:translate(calc(min(720px,80vw)/-2 - 11px))}}@keyframes ld-rollR{to{transform:translate(calc(min(720px,80vw)/2 + 11px))}}.ld-intro{text-align:center;max-width:min(640px,80vw);color:var(--ink-2);opacity:0;margin:0;font-size:15px;line-height:1.9;animation:.6s .7s forwards ld-fade}.ld-bar{background:#241b191f;border-radius:4px;width:min(420px,70vw);height:8px;overflow:hidden;box-shadow:inset 0 0 0 1px #241b1926}.ld-bar i{transform-origin:0;background:var(--ink);border-radius:4px;width:100%;height:100%;transition:transform .45s ease-out;display:block;transform:scaleX(0)}.ld-step{color:var(--ink-2);letter-spacing:.1em;align-items:baseline;gap:10px;margin:-6px 0 0;font-size:14px;display:flex}.ld-step b{font:400 26px/1 var(--cursive);color:var(--ink);text-align:right;min-width:3em}#loader.failed .ld-step span{color:var(--red)}.ld-guide{opacity:0;background:#f9f6efb3;border:1px dashed #241b1959;border-radius:8px;align-items:flex-end;gap:28px;margin-top:10px;padding:14px 24px;animation:.6s .9s forwards ld-fade;display:flex}.ld-guide span{letter-spacing:.12em;color:var(--ink-2);text-align:center;white-space:nowrap;margin-top:8px;font-size:12px;display:block}.ld-keys{flex-direction:column;align-items:center;gap:4px;display:flex}.ld-row{gap:4px;display:flex}.ld-keys kbd{width:30px;height:30px;font:600 13px/1 var(--serif);color:var(--ink);background:var(--paper-2);border:1.5px solid var(--line);border-bottom-width:3px;border-radius:5px;place-items:center;display:grid}.ld-mouse{flex-direction:column;align-items:center;display:flex}.ld-mouse i{border:1.5px solid var(--line);background:var(--paper-2);border-radius:15px 15px 13px 13px;width:30px;height:44px;position:relative}.ld-mouse i:before{content:"";border-left:1.5px solid var(--line);position:absolute;top:0;bottom:60%;left:50%}.ld-mouse i.click:after{content:"";background:var(--ink);opacity:.85;border-radius:13px 0 0;width:50%;height:40%;position:absolute;top:0;left:0}.ld-mouse i.drag:after{content:"↔";color:var(--red);font-size:13px;position:absolute;top:52%;left:50%;transform:translate(-50%)}.ld-mouse i.wheel:after{content:"";background:var(--red);border-radius:2px;width:4px;height:9px;margin-left:-2px;animation:1.2s ease-in-out infinite ld-wheel;position:absolute;top:7px;left:50%}@keyframes ld-wheel{50%{transform:translateY(4px)}}@keyframes ld-fade{to{opacity:1}}.hall-tools{z-index:6;gap:8px;display:flex;position:fixed;top:36px;right:40px}.hall-tools .tool{cursor:pointer;height:38px;font:400 17px/1 var(--brush);color:var(--ink);border:1.5px solid var(--line);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);isolation:isolate;background:#f8eedbe6;border-radius:12px 9px 13px 8px/8px 12px 9px 13px;align-items:center;gap:6px;padding:0 12px 0 10px;text-decoration:none;transition:background .2s,color .2s;display:inline-flex;position:relative;overflow:hidden}.hall-tools .tool:before{content:"";left:var(--ix,50%);top:var(--iy,50%);z-index:-1;aspect-ratio:1;background:radial-gradient(circle, var(--ink) 0 46%, transparent 64%);filter:url(#ink-spread);border-radius:50%;width:300%;margin:-150% 0 0 -150%;transition:transform .6s cubic-bezier(.2,.8,.2,1);position:absolute;transform:scale(0)}.hall-tools .tool:hover{color:var(--paper-2);border-color:var(--ink)}.hall-tools .tool:hover:before{transform:scale(1)}.hall-tools svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;width:18px;height:18px}.hall-tools .tool .out,.hall-tools .tool.on .in{display:none}.hall-tools .tool.on .out{display:inline}body:not(.is-3d) .hall-tools{position:absolute}body:not(.is-3d) .hall-tools [data-act=fs],body.gaming .hall-tools [data-act=ask]{display:none}.welcome{z-index:8;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);opacity:0;cursor:pointer;background:#1a1a1947;place-items:center;transition:opacity .35s;display:grid;position:fixed;inset:0}.welcome.show{opacity:1}.welcome-card{cursor:default;background:var(--paper-2);border:1.5px solid var(--line);width:min(560px,100vw - 40px);box-shadow:0 0 0 8px var(--paper), 0 0 0 9px var(--line), 0 30px 70px #1a1a194d;border-radius:8px;padding:26px 30px 20px;transition:transform .4s cubic-bezier(.2,.9,.3,1.2);position:relative;transform:translateY(14px)scale(.97)}.welcome.show .welcome-card{transform:none}.welcome-card .eyebrow{letter-spacing:.4em;color:var(--ink-3);margin:0;font-size:13px}.welcome-card h2{font:400 54px/1.1 var(--cursive);color:var(--ink);letter-spacing:.06em;margin:4px 0 10px}.welcome-text{color:var(--ink-2);margin:0 0 14px;font-size:15px;line-height:1.9}.welcome-route{flex-wrap:wrap;gap:6px;margin:0 0 16px;padding:0;list-style:none;display:flex}.welcome-route li{font:400 16px/1.3 var(--brush);color:var(--ink);background:var(--paper);border:1px solid #241b1959;border-radius:999px;align-items:center;gap:5px;padding:3px 10px 3px 4px;display:inline-flex}.welcome-route b{background:var(--ink);width:20px;height:20px;color:var(--paper);font:600 11px/1 var(--serif);border-radius:50%;place-items:center;display:grid}.welcome-actions{gap:10px;display:flex}.welcome-hint{color:var(--ink-2);opacity:.75;margin:12px 0 0;font-size:12px}html[lang=en] .ld-scroll .scroll-paper span{white-space:normal;text-align:center;padding:0 32px;font-size:clamp(32px,5vw,60px);line-height:1.05}:root{--progress:0}*{box-sizing:border-box}:root{--serif:"Noto Serif SC", "Songti SC", "SimSun", serif}html,body{background:var(--paper);color:var(--ink);font-family:var(--serif);margin:0}#c{z-index:0;width:100vw;height:100vh;display:block;position:fixed;inset:0}.frame{z-index:1;pointer-events:none;opacity:.9;border:1px solid #1a1a198c;position:fixed;inset:14px;box-shadow:inset 0 0 0 5px #f2ede299,inset 0 0 0 6px #1a1a194d}.brand{z-index:3;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#f9f6efe0;border:1px solid #1a1a1940;border-radius:6px;align-items:center;gap:12px;padding:6px 16px 6px 6px;display:flex;position:fixed;top:34px;left:40px}body:not(.is-3d) .brand{background:0 0;border:0}.seal{text-align:center;background:var(--red);width:48px;color:var(--paper);font:400 19px/1.15 var(--brush);border-radius:4px;padding:6px 0;box-shadow:inset 0 0 0 2px #f1e2c466}.brand-text strong{font:400 30px/1.1 var(--cursive);letter-spacing:.04em;display:block}.brand-text span{letter-spacing:.3em;color:var(--ink-2);font-size:12px}.scroll-nav{z-index:3;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#f9f6efd1;border:1px solid #1a1a194d;border-radius:6px;align-items:stretch;gap:14px;padding:18px 16px 18px 14px;display:flex;position:fixed;top:50%;right:40px;transform:translateY(-50%)}.scroll-nav .rod{background:#1a1a192e;border-radius:3px;width:6px;position:relative}.scroll-nav .rod i{background:var(--ink);width:12px;height:26px;box-shadow:0 0 0 2px var(--paper);left:-3px;top:calc(var(--progress) * (100% - 26px));border-radius:6px;position:absolute}.scroll-nav ol{flex-direction:column;gap:22px;margin:0;padding:0;list-style:none;display:flex}.scroll-nav li{font:400 18px/1 var(--brush);letter-spacing:.1em;color:var(--ink-2);cursor:pointer;text-align:left;transition:color .3s,transform .3s}.scroll-nav li:hover{color:var(--ink)}.scroll-nav li.on{color:var(--ink);text-shadow:0 0 10px #1a1a1940;transform:translate(-4px)}#story{z-index:2;pointer-events:none;position:relative}.stop{height:170vh}.stop:first-child{height:120vh}.stop:last-child{height:130vh}.card{width:min(420px,34vw);transform:translateY(calc(-50% + (1 - var(--show)) * 24px));opacity:var(--show);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#f9f6efe6;border:1.5px solid #1a1a198c;border-radius:6px;padding:28px 30px 26px;position:fixed;top:50%;left:7vw;box-shadow:6px 6px #1a1a191f}.stop:not(.active) .card{pointer-events:none}.stop.active .card{pointer-events:auto}.stop{--show:0}.stop .card{opacity:var(--show)}.card .eyebrow{letter-spacing:.32em;color:var(--ink-3);margin:0 0 6px;font-size:13px}.card h1{font:400 54px/1.1 var(--cursive);white-space:nowrap;color:var(--ink);letter-spacing:.02em;margin:0}.card h2{font:400 44px/1.15 var(--cursive);letter-spacing:.02em;margin:0 0 12px}.card p{color:var(--ink-2);margin:0 0 10px;font-size:15px;line-height:1.9}.card .lead{font:400 26px/1.4 var(--brush);color:var(--ink);letter-spacing:.2em}.card .hint{letter-spacing:.3em;color:var(--ink-2);margin-top:18px;font-size:13px;animation:1.8s ease-in-out infinite nudge}.card .hint:after{content:" ↓"}@keyframes nudge{50%{transform:translateY(5px)}}.hero{background:#f9f6efd1}.pillars{grid-template-columns:repeat(3,1fr);gap:10px;margin:16px 0 0;padding:0;list-style:none;display:grid}.pillars li{text-align:center;color:var(--ink-2);border:1px solid #1a1a1959;border-radius:4px;padding:10px 6px;font-size:13px}.pillars b{font:400 24px/1.2 var(--brush);color:var(--red);display:block}.tag{background:var(--red);color:var(--paper);font:400 16px/1.4 var(--brush);letter-spacing:.2em;border-radius:3px;padding:4px 14px;display:inline-block}.contact dl{grid-template-columns:52px 1fr;gap:6px 10px;margin:12px 0;font-size:15px;display:grid}.contact dt{color:var(--ink-3);font-family:var(--brush);font-size:18px}.contact dd{color:var(--ink-2);margin:0}.contact .note{color:var(--ink-2);border-top:1px dashed #1a1a194d;padding-top:10px;font-size:13px}.icp{z-index:3;letter-spacing:.08em;max-width:30vw;color:var(--ink-2);opacity:.75;font-size:11px;position:fixed;bottom:26px;left:40px}#bubble{z-index:4;border:2px solid var(--ink);font:400 24px/1.2 var(--brush);white-space:nowrap;pointer-events:none;opacity:0;background:#fbf8f1;border-radius:20px 14px 22px 12px/12px 20px 14px 22px;padding:8px 16px 6px;transition:opacity .25s;position:fixed;top:0;left:0;transform:translate(-50%,-100%)}#bubble:after{content:"";border:9px solid #0000;border-top-color:var(--ink);border-bottom:0;margin-left:-9px;position:absolute;bottom:-11px;left:50%}body[data-mode=free]{overflow:hidden}body[data-mode=free] #story{visibility:hidden}body[data-mode=free] .card{visibility:visible}.card button,.hud button{font:400 18px/1 var(--brush);color:var(--ink);cursor:pointer;background:var(--paper);border:1.5px solid #1a1a198c;border-radius:14px 10px 16px 9px/9px 14px 10px 16px;padding:8px 14px 6px;transition:background .2s,color .2s}.card button:hover,.hud button:hover{background:#f3efe6}.card button.primary,.hud button.primary{background:var(--ink);color:var(--paper-2);border-color:var(--ink)}.card button:disabled{opacity:.45;cursor:default}.card .actions{flex-wrap:wrap;gap:8px;margin-top:8px;display:flex}.hud{z-index:3;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#f9f6efe0;border:1px solid #1a1a194d;border-radius:8px;align-items:center;gap:14px;padding:8px 12px;display:flex;position:fixed;bottom:26px;left:50%;transform:translate(-50%)}.hud .seg{gap:0;display:flex}.hud .seg button{border-radius:0}.hud .seg button:first-child{border-radius:12px 0 0 12px}.hud .seg button:last-child{border-left:0;border-radius:0 12px 12px 0}.hud .seg button.on{background:var(--ink);color:var(--paper);border-color:var(--ink)}.hud .tour-only,.hud .free-only{align-items:center;gap:8px;display:flex}body[data-mode=tour] .hud .free-only,body[data-mode=free] .hud .tour-only{display:none}.hint-text{color:var(--ink-2);letter-spacing:.08em;white-space:nowrap;font-size:13px}kbd{background:var(--paper);min-width:20px;font:600 11px/1.4 var(--serif);text-align:center;border:1px solid #1a1a1973;border-radius:3px;margin:0 1px;padding:1px 4px;display:inline-block}.card .note{color:var(--ink-2);font-size:12px}#btn-sound.on{background:var(--ink);color:var(--paper);border-color:var(--ink)}.scroll-nav ol{gap:14px}.scroll-nav li{font-size:17px}.shot,.lite-only,.is-3d .lite-only,body:not(.is-3d) #c,body:not(.is-3d) #loader,body:not(.is-3d) .hud,body:not(.is-3d) #bubble,body:not(.is-3d) .card .hint,body:not(.is-3d) .only-3d,body:not(.is-3d) .card .actions,body:not(.is-3d) .scroll-nav .rod{display:none}body:not(.is-3d){background:var(--paper)}body:not(.is-3d) .frame{position:fixed}body:not(.is-3d) .brand{position:absolute}body:not(.is-3d) #story{pointer-events:auto;max-width:1100px;margin:0 auto;padding:130px 32px 90px}body:not(.is-3d) #story .stop{grid-template-columns:1.25fr 1fr;align-items:center;gap:32px;height:auto;margin:0 0 72px;display:grid}body:not(.is-3d) #story .stop:nth-child(2n){grid-template-columns:1fr 1.25fr}body:not(.is-3d) #story .stop:nth-child(2n) .shot{order:2}body:not(.is-3d) .shot{border:6px solid var(--paper-2);background:#e8d8b6;outline:1.5px solid #1a1a198c;margin:0;display:block;box-shadow:8px 8px #1a1a191f}body:not(.is-3d) .shot img{aspect-ratio:16/9;object-fit:cover;width:100%;height:auto;display:block}body:not(.is-3d) #story .stop .card{opacity:1;pointer-events:auto;-webkit-backdrop-filter:none;backdrop-filter:none;width:auto;position:static;transform:none}body:not(.is-3d) .lite-only{display:block}body:not(.is-3d) .scroll-nav li{cursor:pointer}body:not(.is-3d) .icp{text-align:center;justify-content:center;max-width:none;padding:0 0 40px;position:static;transform:none}.icp a{color:var(--red)}#bag,.game,.cert{display:none}.is-3d #bag{z-index:3;background:#f9f6efd9;border:1px solid #1a1a194d;border-radius:6px;align-items:center;gap:6px;padding:6px 10px;display:flex;position:fixed;top:112px;left:40px}#bag .bag-title{letter-spacing:.15em;color:var(--ink-2);margin-right:4px;font-size:12px}#bag i{width:28px;height:28px;font:400 18px/1 var(--brush);color:#1a1a1947;border:1.5px dashed #1a1a194d;border-radius:4px;place-items:center;font-style:normal;display:grid}#bag i.got{color:var(--paper);background:var(--red);border:1.5px solid var(--red);box-shadow:inset 0 0 0 2px #f1e2c459}#bag i.pop{animation:.7s ease-out seal-pop}@keyframes seal-pop{0%{opacity:0;transform:scale(2.4)rotate(-20deg)}60%{opacity:1;transform:scale(.9)rotate(4deg)}to{transform:none}}.is-3d .game:not([hidden]){z-index:5;background:#f9f6eff5;border:1.5px solid #1a1a1999;border-radius:6px;width:min(400px,32vw);padding:18px 20px 14px;display:block;position:fixed;bottom:96px;right:40px;box-shadow:6px 6px #1a1a1924}body.gaming .scroll-nav{display:none}.game h3{font:400 36px/1.2 var(--cursive);color:var(--ink);margin:0 0 4px}.game #game-tip{color:var(--ink-2);margin:0 0 10px;font-size:13px;line-height:1.8}.game #game-status{letter-spacing:.06em;margin:6px 0 8px;font-size:13px}.game-bar{background:#1a1a191f;border-radius:3px;height:6px;overflow:hidden}.game-bar i{background:var(--ink);width:0;height:100%;transition:width .2s;display:block}.game .actions{gap:8px;display:flex}.game button{font:400 18px/1 var(--brush);cursor:pointer;background:var(--paper);border:1.5px solid #1a1a198c;border-radius:12px;padding:8px 14px 6px}.game button.primary{background:var(--ink);color:var(--paper-2);border-color:var(--ink)}.seal-big{background:var(--red);width:84px;height:84px;color:var(--paper);font:400 54px/1 var(--brush);border-radius:6px;place-items:center;margin:4px auto 8px;animation:.8s ease-out seal-pop;display:grid;box-shadow:inset 0 0 0 4px #f1e2c466}.result-line{text-align:center;font:400 22px/1.4 var(--brush);margin:0 0 6px}.lane{background:#f1e2c499;border-top:1.5px solid #1a1a1966;border-bottom:1.5px solid #1a1a1966;height:44px;position:relative;overflow:hidden}.lane .board{background:var(--ink);width:34px;height:34px;color:var(--paper);font:400 18px/1 var(--brush);border-radius:4px;place-items:center;display:grid;position:absolute;top:50%;left:12%;transform:translate(-50%,-50%)}.lane i{background:var(--red);border-radius:50%;width:18px;height:18px;margin:-9px 0 0 -9px;position:absolute;top:50%;box-shadow:0 0 0 3px #d3382c33}.judge{text-align:center;height:22px;font:400 20px/1 var(--brush);margin:4px 0 0}.judge.g{color:#2f7a4f}.judge.m{color:#a8741a}.judge.b{color:var(--red)}.game .q{font:400 21px/1.5 var(--brush);margin:0 0 8px}.game .sub{color:var(--ink-2);margin:0;font-size:12px}.opts{flex-direction:column;gap:6px;display:flex}.opts button{text-align:left;font:400 15px/1.4 var(--serif)}.opts button.right{color:var(--paper);background:#3f9462;border-color:#3f9462}.opts button.wrong{background:var(--red);color:var(--paper);border-color:var(--red)}.is-3d .cert:not([hidden]){z-index:9;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#1a1a1980;place-items:center;display:grid;position:fixed;inset:0}.cert-box{background:var(--paper-2);border-radius:8px;padding:16px;box-shadow:0 10px 40px #00000059}.cert-box canvas{width:min(860px,86vw);height:auto;display:block}.cert-row{align-items:center;gap:10px;margin-top:12px;font-size:14px;display:flex}.cert-row input{font:inherit;background:#fffaf0;border:1px solid #1a1a1980;border-radius:4px;width:10em;padding:6px 8px}.cert-row button{font:400 18px/1 var(--brush);cursor:pointer;background:var(--paper);border:1.5px solid #1a1a198c;border-radius:12px;padding:8px 14px 6px}.cert-row button.primary{background:var(--ink);color:var(--paper-2);border-color:var(--ink)}.game-menu{display:none}.is-3d .game-menu:not([hidden]){z-index:6;background:#f9f6eff7;border:1.5px solid #1a1a1999;border-radius:8px;width:min(760px,90vw);max-height:70vh;padding:16px 20px;display:block;position:fixed;bottom:90px;left:50%;overflow:auto;transform:translate(-50%);box-shadow:6px 6px #1a1a1924}.game-menu header{align-items:baseline;gap:12px;display:flex}.game-menu h3{font:400 38px/1 var(--cursive);color:var(--ink);margin:0}.game-menu .sum{color:var(--ink-2);font-size:13px}.game-menu .close{cursor:pointer;color:var(--ink-2);background:0 0;border:0;margin-left:auto;font-size:22px;line-height:1}.game-menu .note{color:var(--ink-2);margin:6px 0 10px;font-size:12px}.game-menu .list{grid-template-columns:repeat(4,1fr);gap:10px;margin:0;padding:0;list-style:none;display:grid}.game-menu li h4{font:400 18px/1.2 var(--brush);color:var(--ink-2);margin:0 0 6px}.game-menu li button{text-align:left;cursor:pointer;width:100%;font:400 17px/1.3 var(--brush);background:var(--paper);border:1.5px solid #1a1a1973;border-radius:10px;margin-bottom:6px;padding:7px 10px 5px;display:block}.game-menu li button b{font:600 11px/1 var(--serif);color:var(--paper);background:var(--red);vertical-align:2px;border-radius:3px;margin-right:5px;padding:2px 4px}.game-menu li button em{font:400 11px/1.4 var(--serif);color:var(--ink-2);font-style:normal;display:block}.game-menu li button.done{border-color:#3f9462;box-shadow:inset 4px 0 #3f9462}.seal-big.pass{background:#3f9462}.game .opts.row{flex-flow:wrap}.game .opts.row button{text-align:center;flex:28%}.game .lives{letter-spacing:.2em;color:var(--red);margin:0 0 6px;font-size:16px}.memory{grid-template-columns:repeat(4,1fr);gap:6px;margin:4px 0 8px;display:grid}.memory button{cursor:pointer;background:var(--ink);height:58px;font:400 20px/1 var(--brush);border:1.5px solid #1a1a198c;border-radius:6px;padding:0}.memory button span{visibility:hidden}.memory button:before{content:"哏";color:#f1e2c48c}.memory button.up,.memory button.ok{background:var(--paper)}.memory button.up:before,.memory button.ok:before{content:none}.memory button.up span,.memory button.ok span{visibility:visible}.memory button.m span{font-family:var(--serif);font-size:14px}.memory button.ok{border-color:#3f9462;box-shadow:inset 0 0 0 2px #3f9462}.hud button{white-space:nowrap}@media (max-width:1280px){.hud .hint-text{display:none}}body.gaming #story .stop .card{opacity:0!important;pointer-events:none!important}a.seal{text-decoration:none;display:block}
