/* Reading hierarchy and quiet entrances, inspired by the user's Nankai site. */
:root{--display:'Kaiti SC','STKaiti','KaiTi','Songti SC',serif;--ease-out:cubic-bezier(.22,1,.36,1);--ease-soft:cubic-bezier(.4,0,.2,1)}
body{-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
h1,h2{font-weight:500;text-wrap:balance}p{line-height:1.95;text-wrap:pretty}.eyebrow{font-size:12px;letter-spacing:.18em}
.gate h1{font-family:var(--display);font-size:clamp(54px,5.8vw,84px);font-weight:600;letter-spacing:.12em;line-height:1.35;color:#f3dfb8;text-shadow:0 2px 22px #10212a80}.gate h1 span{margin-left:0}.gate-poem{font-size:16px;line-height:2;letter-spacing:.16em}.gate-heading{top:18%}.gate-entry>a{font-size:12px}.gate-chapters a{font-size:19px}.gate-chapters span{font-size:12px}.scene-credit{font-size:11px}
.brand{font-weight:600}.brand small{font-size:10px;letter-spacing:.16em}.masthead nav{font-size:15px;letter-spacing:.06em}.masthead nav a:after{transition:width .3s var(--ease-out),opacity .3s}.masthead nav [aria-current=page]:after{width:20px;height:1px;left:calc(50% - 10px);border-radius:0}.masthead nav a:hover{color:#b4905d}body[data-room=gate] .masthead nav a:hover,body[data-room=theatre] .masthead nav a:hover{color:#fff1d4}
.room-heading h1{font-size:clamp(34px,3.4vw,50px);line-height:1.5;letter-spacing:.04em}.room-heading>p:not(.eyebrow){font-size:14px;line-height:1.9;opacity:.85}.small-note{font-size:12px}.room-heading .eyebrow{font-size:12px}.story h1{font-size:32px;line-height:1.45}.story-intro p{font-size:13px;line-height:1.9}.story-intro .eyebrow{font-size:12px}.memory-node time{font-family:var(--serif);font-weight:500;font-variant-numeric:lining-nums tabular-nums}.memory-node h2{font-size:34px;letter-spacing:.04em}.memory-node p{font-size:14px;line-height:1.9}.memory-node p.history-summary{font-size:16px;line-height:2;max-width:440px}.history-read{font-size:12px;color:#796047}.memory-node button{gap:14px}.scroll-footer{font-size:14px;gap:18px}.era-nav{gap:20px}.scroll-control label{font-size:12px}.scroll-control input{width:90px}.scroll-control>button{min-width:32px;min-height:44px}.story-caption{font-size:11px;color:#657160}
.product-panel h2,.mechanism-copy h2{font-size:27px;line-height:1.6;letter-spacing:.02em}.product-panel p,.mechanism-copy p{font-size:14px;line-height:1.95;color:inherit;opacity:.83;min-height:0}.product-panel{top:23%}.product-panel>.eyebrow{font-size:12px;margin-bottom:14px}.part-list{gap:6px 15px}.part-list button{font-size:13px;min-height:40px;opacity:.75}.part-list button[aria-pressed=true]{opacity:1;color:#8e542e}.soft-button{font-size:15px;min-height:44px;transition:background .25s,box-shadow .25s,transform .25s}.soft-button:hover{transform:translateY(-2px);box-shadow:0 7px 18px #30241b0b}.soft-button:active{transform:translateY(0)}.text-button{font-size:13px;line-height:1.6;padding:9px 0}.model-controls{font-size:13px;gap:19px}.model-controls button{min-height:40px}.model-controls span{font-size:11px}.product-views{font-size:13px;gap:21px}.product-views button{min-height:36px}.room-bottom{font-size:12px}.room-bottom>span{font-size:10px}.step-label{font-size:12px;letter-spacing:.1em}.step-nav{font-size:13px;gap:17px}.step-nav button{min-height:40px;opacity:.7}.performance-seek{font-size:11px;line-height:1.5}.performance-seek span{font-variant-numeric:tabular-nums}.source-line{font-size:11px}.reader-label{font-size:12px!important}dialog p{font-size:16px;line-height:2}dialog a,dialog .reader-note{font-size:14px}
/* Text is always present in the DOM; only the visual entrance is staggered. */
.room.entered{animation:none}.title-line{display:block;overflow:hidden;padding-bottom:.05em;margin-bottom:-.05em}.title-line>.title-ink{display:block}
.room.entered .title-ink{animation:ink-arrive 1.05s var(--ease-out) both;animation-delay:calc(90ms + var(--line,0)*145ms)}
.room.entered .eyebrow{animation:quiet-arrive .7s var(--ease-out) both;animation-delay:50ms}
.room.entered .gate-poem,.room.entered .room-heading>p:not(.eyebrow),.room.entered .story-intro>p{animation:quiet-arrive .85s var(--ease-out) both;animation-delay:.30s}
.room.entered .gate-entry,.room.entered .gate-chapters,.room.entered .product-panel,.room.entered .mechanism-copy,.room.entered .scroll-footer{animation:quiet-arrive .9s var(--ease-out) both;animation-delay:.43s}
.memory-node{transition:opacity .8s var(--ease-soft),transform 1.1s var(--ease-out)}.memory-node.is-current .history-read{animation:quiet-arrive .65s var(--ease-out) both;animation-delay:.15s}.scroll-trail{top:94%}.gate.is-travelling .gate-heading,.gate.is-travelling .gate-entry,.gate.is-travelling .gate-chapters{opacity:0;transition:opacity .35s;animation:none}
@keyframes ink-arrive{from{opacity:0;transform:translateY(105%)}to{opacity:1;transform:translateY(0)}}
@keyframes quiet-arrive{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
@media(min-width:901px) and (max-height:780px){.gate h1{font-size:60px}.gate-heading{top:17%}.gate-poem{font-size:14px}.room-heading h1{font-size:38px}.product-panel{top:23%}.product-panel h2,.mechanism-copy h2{font-size:24px}.product-panel p,.mechanism-copy p{font-size:13px;line-height:1.85}.product-panel .soft-button{margin:9px 0}.part-list{margin:10px 0}.text-button{font-size:12px}.memory-node,.memory-node:nth-child(even){top:27%}.memory-node time{font-size:68px}.memory-node h2{font-size:30px}}
@media(max-width:900px){.masthead{padding:17px 5%;height:76px}.brand{font-size:16px;letter-spacing:.05em}.masthead nav{gap:13px;font-size:12px;letter-spacing:0}.masthead nav button{font-size:11px}.gate-heading{top:21%;min-width:300px}.gate h1{font-size:49px;letter-spacing:.1em}.gate-poem{font-size:14px;letter-spacing:.1em}.gate-entry>a{font-size:12px}.gate-chapters a{font-size:15px}.gate-chapters small{font-size:10px}.story-intro{top:13%}.story h1{font-size:25px}.story-intro p{font-size:12px}.story-intro .eyebrow{font-size:11px}.memory-node,.memory-node:nth-child(even){top:36%}.memory-node h2{font-size:25px}.memory-node time{font-size:52px}.memory-node p{font-size:13px}.memory-node p.history-summary{font-size:14px;line-height:1.95}.memory-node button{padding:20px 26px;gap:12px}.history-read{font-size:12px}.scroll-footer{font-size:13px;bottom:7.5%;gap:5px}.era-nav{gap:15px}.text-link{font-size:12px}.scroll-control{gap:14px}.scroll-control label{font-size:11px}.story-caption{font-size:9px;line-height:1.65;bottom:15px}.room-heading .eyebrow{font-size:11px}.room-heading>p:not(.eyebrow){font-size:13px}.small-note{font-size:11px}.theatre .room-heading h1{font-size:31px}.mechanism-copy h2{font-size:21px;line-height:1.55}.mechanism-copy p{font-size:13px;line-height:1.8}.mechanism-copy .soft-button{font-size:13px;min-height:40px}.step-nav{font-size:12px;gap:0}.step-nav button{min-height:36px}.performance-seek{font-size:10px;grid-template-columns:1fr 2.3fr 1.5fr}.theatre .room-bottom{font-size:11px}.theatre .room-bottom>span{font-size:9px}.mechanism-stage{bottom:39%}.mechanism-copy{bottom:10%}.atelier{height:max(1070px,100svh)}.atelier .room-heading{top:100px}.atelier .room-heading h1{font-size:29px;line-height:1.4}.atelier .room-heading>p:not(.eyebrow){font-size:13px;line-height:1.7}.atelier .product-views{top:268px;gap:22px;font-size:12px}.atelier .product-stage{top:325px;bottom:365px}.atelier .model-controls{top:348px;font-size:12px}.product-panel h2{font-size:25px}.product-panel p{font-size:14px;line-height:1.9}.part-list{gap:4px 13px}.part-list button{font-size:12px;min-height:36px}.product-panel .soft-button{font-size:14px}.product-panel .text-button{font-size:12px}.room-bottom{font-size:12px}.room-bottom>span{font-size:10px}.product-views{padding:2px 12px}.atelier .product-panel{top:auto;bottom:95px}dialog p{font-size:15px}}
@media(max-width:370px){.brand{font-size:14px}.masthead nav{gap:9px;font-size:11px}.masthead nav button{font-size:10px}.scroll-footer{grid-template-columns:1fr}.text-link{justify-self:start}.scroll-control{grid-row:auto}}
@media(prefers-reduced-motion:reduce){.room.entered .title-ink,.room.entered .eyebrow,.room.entered .gate-poem,.room.entered .room-heading>p,.room.entered .story-intro>p,.room.entered .gate-entry,.room.entered .gate-chapters,.room.entered .product-panel,.room.entered .mechanism-copy,.room.entered .scroll-footer,.memory-node.is-current .history-read{animation:none!important;opacity:1;transform:none}.soft-button:hover{transform:none}.memory-node{transition:none}.title-line{overflow:visible}}
.room.entered .gate-entry{animation-name:entry-arrive}
@keyframes entry-arrive{from{opacity:0;transform:translate(-50%,12px)}to{opacity:1;transform:translate(-50%,0)}}
@media(prefers-reduced-motion:reduce){.room.entered .gate-entry{transform:translateX(-50%)}}
