/* 自托管宋体保持移动端与桌面字体一致；书法标题沿用原创笔墨。 */
@font-face{font-family:JiangnanSerif;src:url('../assets/fonts/jiangnan-serif.woff') format('woff');font-display:swap;font-weight:400}
/* 全卷共用纸色与墨色，章节没有独立底色，不制造硬切的边界。 */
:root{--paper:#f3f0e7;--ink:#263832;--muted:#59655d;--red:#934c3d;--line:rgba(45,65,55,.23);font-family:JiangnanSerif,"Songti SC",serif;color:var(--ink);background:var(--paper);font-synthesis:none}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:6rem}body{margin:0;overflow-wrap:break-word}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit}a,button{touch-action:manipulation;-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible{outline:2px solid var(--red);outline-offset:6px}button[hidden]{display:none}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip{position:fixed;top:-6rem;left:1rem;z-index:50;background:var(--paper);padding:1rem}.skip:focus{top:1rem}.content-width{width:min(1120px,84%);margin-inline:auto}.eyebrow{font-size:.875rem;letter-spacing:.2em;line-height:1.8;margin:0 0 1.8rem;color:var(--muted)}
/* 导航仅保留三处锚点，短标签在窄屏和大字号下都能自然换行。 */
.header{position:absolute;z-index:10;inset:0 0 auto;display:flex;align-items:center;flex-wrap:wrap;gap:1rem;padding:1.5rem 5%;min-height:5rem}.wordmark{display:flex;align-items:center;gap:.8rem;font:1.5rem Georgia,serif;letter-spacing:.02em}.tiny-seal{display:grid;place-items:center;width:1.65rem;height:1.8rem;border:1px solid var(--red);color:var(--red);font:1rem JiangnanSerif,serif;transform:rotate(-4deg)}nav{display:flex;gap:2rem;margin-left:auto}nav a{position:relative;display:flex;align-items:center;min-height:44px;font-size:.875rem;letter-spacing:.15em}nav a:after{position:absolute;content:"";height:1px;left:0;right:.15em;bottom:4px;background:var(--red);transform:scaleX(0);transform-origin:left;transition:transform .25s ease}nav a[aria-current]:after,nav a:hover:after{transform:scaleX(1)}#motion{border:0;border-left:1px solid var(--line);background:transparent;padding:.6rem 0 .6rem 1.2rem;margin-left:1rem;min-height:44px;cursor:pointer;font-size:.875rem;color:var(--muted)}
/* 首屏保持正常文档高度：向下滑动时内容和画面一起离开，无粘性释放跳变。 */
.opening{position:relative;isolation:isolate;min-height:850px;min-height:max(760px,105svh);padding:10rem 0 9rem}.opening-landscape{position:absolute;inset:0 0 -6rem;z-index:-2;overflow:hidden;mask-image:linear-gradient(#000 0%,#000 63%,transparent 100%);-webkit-mask-image:linear-gradient(#000 0%,#000 63%,transparent 100%)}.opening-landscape img{display:block;width:100%;height:100%;object-fit:cover;object-position:center 55%}.opening-copy{position:relative;margin-left:18%;width:clamp(230px,23vw,335px)}.opening-copy>.eyebrow{font-size:.75rem;letter-spacing:.22em;text-align:center;margin-bottom:1.4rem}h1{margin:0}h1 img{display:block;width:100%;height:auto;max-height:46svh;object-fit:contain}.opening-signature{display:flex;align-items:center;justify-content:center;gap:1rem;font:1.9rem Georgia,serif;margin:1.6rem 0 0}.opening-signature small{display:block;font: .875rem/2 JiangnanSerif,serif;margin-top:.45rem;letter-spacing:.15em}.seal{font: .875rem/1.6 JiangnanSerif,serif;writing-mode:vertical-rl;letter-spacing:.2em;color:#fff8e9;background:var(--red);padding:.5rem .25rem;transform:rotate(-3deg)}.opening-verse{position:absolute;right:21%;top:32%;writing-mode:vertical-rl;display:flex;gap:2rem}.opening-verse p{font-size:1.45rem;letter-spacing:.25em;line-height:2;margin:0}.opening-verse span{font-size:.75rem;letter-spacing:.2em;padding-top:4rem;color:var(--muted)}.scroll-invitation{position:absolute;bottom:6rem;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:1rem;font-size:.875rem;letter-spacing:.22em;min-height:44px;white-space:nowrap}.scroll-line{display:block;width:1px;height:3rem;background:linear-gradient(transparent,var(--red))}
/* 轻雾只改变装饰图层的水平位置，幅度很小，不影响正文或滚动速度。 */
.opening-mist{position:absolute;z-index:-1;inset:15% 8% 22%;pointer-events:none;background:radial-gradient(ellipse at 43% 58%,rgba(246,243,233,.3),transparent 65%);animation:mist-drift 20s ease-in-out infinite alternate}@keyframes mist-drift{from{transform:translateX(-12px)}to{transform:translateX(12px)}}
/* 造物与词笺共用一幅纵向长卷，墨迹在内容背后保持连续。 */
.continuum{position:relative;isolation:isolate;padding-top:1rem}.scroll-landscape{position:absolute;z-index:-2;inset:-10rem 0 0;width:100%;height:calc(100% + 10rem);object-fit:cover;object-position:center;opacity:.48;pointer-events:none;mask-image:linear-gradient(transparent,#000 10%,#000 86%,transparent);-webkit-mask-image:linear-gradient(transparent,#000 10%,#000 86%,transparent)}.section-intro{display:flex;align-items:end;justify-content:space-between;gap:3rem;margin-bottom:3.5rem}.section-intro h2{font-size:clamp(2rem,3.5vw,3.1rem);font-weight:400;line-height:1.65;letter-spacing:.07em;margin:0}.index{display:inline-grid;place-items:center;border:1px solid var(--red);color:var(--red);width:1.5rem;height:1.6rem;margin-right:1rem;letter-spacing:0;font-size:.8rem}.section-note{font-size:1rem;line-height:2;letter-spacing:.1em;color:var(--muted);margin:0 0 .5rem}.section-note span{font: .7rem/2.5 Georgia,serif;letter-spacing:.18em}.works{padding-top:1rem;padding-bottom:6rem}
/* 趣境两幅并置，圆形水纹呼应江面，不添加独立色块背景。 */
.games{padding:1rem 0 6rem}.games h2 span{display:block}.game-pair{display:grid;grid-template-columns:1fr 1fr;gap:10%;position:relative}.game-pair:after{content:"";position:absolute;top:16%;bottom:7%;left:50%;width:1px;background:linear-gradient(transparent,var(--line),transparent)}.game{min-width:0;text-align:center;position:relative}.game-visual{position:relative;width:min(100%,300px);height:260px;display:grid;place-items:center;margin:0 auto 1.5rem;perspective:800px}.game-visual img{display:block;max-width:62%;max-height:52%;width:auto;height:auto;object-fit:contain;position:relative;z-index:2;transform:rotateX(var(--tilt-x,0deg)) rotateY(var(--tilt-y,0deg)) translateY(var(--lift,0px));transition:transform .45s cubic-bezier(.2,.7,.2,1),filter .45s;filter:drop-shadow(0 12px 12px rgba(25,46,34,.12))}.game-visual:hover{--lift:-8px}.game-orbit{position:absolute;inset:7% 5%;border:1px solid rgba(53,78,62,.24);border-radius:48% 52% 46% 54%;animation:orbit-turn 35s linear infinite;transform:rotate(-12deg)}.orbit-inner{inset:13% 10%;border-style:dashed;border-color:rgba(53,78,62,.12);animation-direction:reverse;animation-duration:48s}.game-orbit:after{content:"";position:absolute;top:13%;left:12%;width:5px;height:5px;background:var(--red);border-radius:50%}.game-brush{position:absolute;bottom:4%;left:18%;right:18%;height:1px;background:var(--red);transform:scaleX(.35);transition:transform .7s cubic-bezier(.2,.7,.2,1);opacity:.65}.game:hover .game-brush,.game:focus-within .game-brush{transform:scaleX(1)}.game-caption{position:relative}.game-caption:before{content:"";position:absolute;inset:-1rem -.5rem;z-index:-1;background:radial-gradient(ellipse,rgba(243,240,231,.92),transparent 74%)}.game-caption .eyebrow{font-size:.75rem;margin:0 0 .8rem}.game-caption h3{font-size:2rem;letter-spacing:.1em;font-weight:400;margin:0 0 1rem}.game-caption>p:not(.eyebrow){font-size:1rem;line-height:2;color:var(--muted);margin:0 0 1rem}.game-minecraft{padding-top:4rem}@keyframes orbit-turn{to{transform:rotate(348deg)}}
/* 永劫官方白色标志置于墨色圆印中，保持原素材比例而不染色。 */
.game-naraka .game-visual:before{content:"";position:absolute;width:84%;height:62%;border-radius:48% 52% 50% 46%;background:#2b3833;box-shadow:0 0 20px rgba(43,56,51,.12);transform:rotate(-5deg)}.game-naraka .game-visual img{max-width:72%;max-height:48%}
/* 三个作品并列成一组展签，与游戏和词笺保持相近篇幅。 */
.project-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:2.5rem}.project{position:relative;min-width:0;padding:1.5rem 0 1rem;display:flex;flex-direction:column}.project:before{content:"";position:absolute;inset:0 0 auto;height:1px;background:var(--line);transform-origin:left;transition:transform 1s ease}.project-heading{display:flex;align-items:center;justify-content:space-between;gap:.5rem;font-size:.75rem;color:var(--muted);letter-spacing:.08em;margin-bottom:1.5rem}.project-number{font:italic 1.1rem Georgia,serif;color:var(--red)}.project-emblem{position:relative;display:grid;place-items:center;width:86px;height:86px;margin-bottom:1.5rem;perspective:700px}.project-emblem img{width:64px;height:64px;object-fit:contain;transform:rotateX(var(--tilt-x,0deg)) rotateY(var(--tilt-y,0deg));transition:transform .45s,filter .45s;filter:drop-shadow(0 8px 7px rgba(28,45,33,.1))}.emblem-ring{position:absolute;inset:0;border:1px solid rgba(67,85,72,.23);border-radius:50%;transition:transform .8s}.project-emblem:hover .emblem-ring{transform:scale(1.13) rotate(30deg)}.project-copy{position:relative;display:flex;flex:1;flex-direction:column;align-items:flex-start}.project-copy:before{content:"";position:absolute;inset:-1.5rem -.7rem;z-index:-1;background:radial-gradient(ellipse,rgba(243,240,231,.94),rgba(243,240,231,.65) 50%,transparent 78%);pointer-events:none}.project h3{font:1.9rem/1.35 Georgia,JiangnanSerif,serif;margin:0 0 1rem}.project-subtitle{font-size:1rem;line-height:1.9;letter-spacing:.02em;margin:0 0 .8rem}.project-description{font-size:1rem;line-height:1.95;color:#48594f;margin:0 0 1rem}.project-label{font-size:.75rem;line-height:1.8;letter-spacing:.06em;color:var(--muted);margin:auto 0 .8rem;padding-top:.2rem}.ink-link{position:relative;display:inline-flex;align-items:center;min-height:44px;font-size:.875rem;letter-spacing:.1em;padding:.5rem 0}.ink-link:after{content:"";position:absolute;bottom:0;left:0;right:0;height:1px;background:var(--red);transition:transform .4s;transform-origin:left}.ink-link:hover:after{transform:scaleX(.65)}.all-works{display:flex;width:max-content;max-width:100%;margin:2.5rem auto 0}
/* 词作作为可阅读的内容呈现；桌面竖排，手机横排，不用硬切的幻灯片。 */
.words{padding-top:4rem;padding-bottom:5rem}.poetry-pair{display:grid;grid-template-columns:.95fr 1.1fr;gap:10%;margin-top:5rem}.poem{position:relative;padding:1.5rem 0 2rem}.poem:before{content:"";position:absolute;inset:-3rem -1rem;z-index:-1;background:radial-gradient(ellipse,rgba(243,240,231,.96),rgba(243,240,231,.72) 50%,transparent 74%)}.poem-title{display:flex;gap:1rem;align-items:center;margin-bottom:2.5rem}.poem-title h3{font-size:1.5rem;font-weight:400;letter-spacing:.1em;margin:0}.poem-title>p{font-size:.875rem;color:var(--muted);margin-left:auto}.poem-seal{font-size:.875rem;color:var(--red);border:1px solid var(--red);padding:.15rem .3rem;transform:rotate(-4deg)}.poem-lines{writing-mode:vertical-rl;display:flex;flex-direction:column;min-height:17rem;margin-left:auto;margin-right:0;gap:.9rem}.poem-lines p{margin:0;font-size:1.125rem;letter-spacing:.15em;line-height:1.8}.poem-lines .stanza{margin-right:1rem}.poem-source{display:inline-block;font-size:.75rem;line-height:1.8;color:var(--muted);border-bottom:1px solid var(--line);margin-top:2rem}.poem-source:hover{color:var(--red)}.poem-autumn{margin-top:7rem}
/* 卷尾回到同一张纸，保留署名及可操作的返回入口。 */
.footer{text-align:center;padding:6rem 0 3rem}.footer-seal{display:inline-block;font-size:.8rem;line-height:1.5;letter-spacing:.16em;color:var(--red);border:1px solid var(--red);padding:.3rem;transform:rotate(-5deg)}.footer-name{font:2rem Georgia,serif;margin:1.3rem 0 3.5rem}.footer>div{border-top:1px solid var(--line);padding-top:1.5rem;display:flex;justify-content:space-between;gap:1.5rem;align-items:center;color:var(--muted);font-size:.875rem;line-height:1.8}.footer a{display:inline-flex;align-items:center;min-height:44px}.reading-progress{position:fixed;left:0;right:0;top:0;height:2px;z-index:30;pointer-events:none}.reading-progress span{display:block;width:100%;height:100%;background:var(--red);transform:scaleX(0);transform-origin:left}
/* 入卷动画只做短距离渐入；内容即使未触发观察器也保持可读。 */
.reveal-ready .reveal{opacity:.72;transform:translateY(20px);transition:opacity 1s ease,transform 1s cubic-bezier(.16,.7,.2,1);transition-delay:var(--reveal-delay,0ms)}.reveal-ready .reveal.in-view{opacity:1;transform:none}.reveal-ready .project.reveal:not(.in-view):before{transform:scaleX(.2)}
/* 雨丝画布限于视觉装饰；主图的小幅差速不改变文档位置。 */
#rain-canvas{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:4;opacity:.5}.scroll-landscape{transform:translate3d(0,var(--landscape-shift,0px),0)}.opening-landscape img{transform:translate3d(var(--scene-x,0px),var(--scene-y,0px),0) scale(1.025);transition:transform 1.6s cubic-bezier(.2,.65,.2,1)}
/* 中屏缩短列间距；文字保持可读尺寸，不挤进固定高度。 */
@media(max-width:950px){.content-width{width:86%}.opening-copy{margin-left:13%;width:29vw}.opening-verse{right:15%}.section-intro{gap:1.5rem}.project-grid{gap:1.5rem}.project h3{font-size:1.55rem}.poetry-pair{gap:7%}.poem-title{flex-wrap:wrap;gap:.7rem}.poem-title>p{width:100%;margin:0}.poem-lines{gap:.55rem}.poem-lines p{font-size:1rem}.poem-lines .stanza{margin-right:.4rem}.game-pair{gap:7%}.game-visual{height:220px}.game-caption h3{font-size:1.7rem}}
/* 手机作品改为左图标右文字的紧凑清单，避免再出现三个巨大的满屏项目。 */
@media(max-width:700px){.project-grid{grid-template-columns:1fr;gap:1rem}.project{display:grid;grid-template-columns:70px minmax(0,1fr);column-gap:1.2rem;padding:1.4rem 0}.project-heading{grid-column:1/-1;margin-bottom:1rem}.project-emblem{grid-column:1;grid-row:2;width:64px;height:64px;margin:0}.project-emblem img{width:48px;height:48px}.project-copy{grid-column:2;grid-row:2}.project h3{font-size:1.6rem;margin-bottom:.6rem}.project-subtitle{display:none}.project-description{font-size:1rem;line-height:1.9;margin-bottom:.6rem}.project-label{margin:.2rem 0 .35rem;padding:0}.project .ink-link{font-size:.8rem}.works{padding-bottom:3rem}.all-works{margin-top:1.5rem}}
/* 窄屏游戏以两行展签呈现，保留图标与官网入口，减少无意义留白。 */
@media(max-width:600px){html{scroll-padding-top:2rem}.header{padding:1rem 6%;gap:.5rem}.wordmark{font-size:1.15rem;gap:.5rem}.tiny-seal{width:1.4rem;height:1.55rem;font-size:.85rem}nav{gap:.8rem}nav a{font-size:.8rem;letter-spacing:0}#motion{font-size:.75rem;padding-left:.6rem;margin-left:0}.opening{min-height:max(650px,94svh);padding:9rem 0 8rem}.opening-landscape{bottom:-3rem;mask-image:linear-gradient(#000,#000 62%,transparent);-webkit-mask-image:linear-gradient(#000,#000 62%,transparent)}.opening-landscape img{object-position:center 60%}.opening-copy{margin-left:12%;width:53%;max-width:270px}.opening-copy>.eyebrow{font-size:.7rem;letter-spacing:.13em}.opening-signature{font-size:1.65rem;gap:.65rem}.opening-signature small{font-size:.75rem;letter-spacing:.06em}.opening-verse{right:8%;top:34%;gap:.9rem}.opening-verse p{font-size:1.1rem;letter-spacing:.18em}.opening-verse span{display:none}.scroll-invitation{bottom:4rem;font-size:.8rem}.content-width{width:86%}.continuum{padding-top:0}.scroll-landscape{opacity:.32;object-position:56% center}.games{padding:1rem 0 3.5rem}.works{padding-top:2rem}.section-intro{display:block;margin-bottom:2.5rem}.section-intro h2{font-size:1.85rem;line-height:1.65}.section-note{font-size:.875rem;margin:1rem 0 0}.section-note span{display:none}.eyebrow{margin-bottom:1.2rem}.game-pair{display:block}.game-pair:after{display:none}.game{display:grid;grid-template-columns:36% minmax(0,1fr);gap:1.3rem;text-align:left;align-items:center;padding:1.5rem 0}.game+.game{border-top:1px solid var(--line);margin-top:1rem;padding-top:2.5rem}.game-visual{width:100%;height:150px;margin:0}.game-visual img{max-width:70%;max-height:64%}.game-orbit{inset:15% 0}.orbit-inner{inset:22% 5%}.game-caption h3{font-size:1.5rem;margin-bottom:.7rem}.game-caption>p:not(.eyebrow){font-size:1rem;line-height:1.8}.game-caption .eyebrow{font-size:.75rem;margin-bottom:.5rem}.game-caption .ink-link{font-size:.75rem;letter-spacing:.04em}.game-minecraft{padding-top:1.5rem}.words{padding-top:3rem;padding-bottom:1rem}.poetry-pair{display:block;margin-top:2.5rem}.poem{padding:1.5rem 0 2rem}.poem+.poem{border-top:1px solid var(--line);margin-top:1.5rem;padding-top:3rem}.poem-title{gap:.75rem;margin-bottom:1.8rem}.poem-title h3{font-size:1.5rem}.poem-title>p{width:auto;margin:0 0 0 auto;font-size:.8rem}.poem-lines{writing-mode:horizontal-tb;display:block;min-height:0;margin:0}.poem-lines p{font-size:1.125rem;letter-spacing:.07em;line-height:2.2}.poem-lines .stanza{margin:1.3rem 0 0}.poem-source{margin-top:1.5rem}.footer{padding-top:4rem;padding-bottom:2rem}.footer-name{margin-bottom:2rem}.footer>div{flex-wrap:wrap;gap:.8rem;justify-content:space-between}.footer>div>span{order:3;width:100%;font-size:.8rem}.footer-seal{font-size:.75rem}.reveal-ready .reveal{transform:translateY(12px)}}
/* 极窄屏允许导航换行；可点击区域不因视觉文字较小而缩小。 */
@media(max-width:360px){.header{padding-inline:5%}nav{gap:.6rem}#motion{border:0;padding-left:.2rem}.wordmark{font-size:1rem}.tiny-seal{display:none}.opening-copy{margin-left:9%;width:56%}.opening-verse{right:6%}.poem-lines p{font-size:1rem}.poem-title>p{width:100%;margin:0}.game{gap:.9rem}.game-visual{height:130px}.project{column-gap:.9rem;grid-template-columns:56px minmax(0,1fr)}.project-emblem{width:52px;height:52px}.project-emblem img{width:40px;height:40px}}
/* 静观及系统减少动态效果暂停所有装饰，内容尺寸和顺序保持完全一致。 */
.still .opening-mist,.still .game-orbit{animation:none}.still #rain-canvas{display:none}.still .reveal,.still .reveal.in-view{opacity:1;transform:none;transition:none}.still .game-visual img,.still .project-emblem img,.still .opening-landscape img,.still .scroll-landscape{transform:none!important;transition:none}.still .game-brush,.still .emblem-ring{transition:none}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.opening-mist,.game-orbit{animation:none}#rain-canvas{display:none}.reveal-ready .reveal{opacity:1;transform:none;transition:none}.game-visual img,.project-emblem img,.opening-landscape img,.scroll-landscape{transform:none!important;transition:none}.game-brush,.emblem-ring,nav a:after,.ink-link:after{transition:none}}
