/* 轻墨入画。空间定位的交互元素不参与页面转场变换。 */
.beam:active:not(:disabled){transform:translate(-50%,-50%) rotate(var(--angle))}
.scene-wash{position:fixed;inset:0;z-index:40;pointer-events:none;opacity:0;background:radial-gradient(ellipse at 64% 42%,#e6dfcb99,transparent 67%),linear-gradient(115deg,#f4f1e8,#e9ecdf 54%,#f4f1e8);contain:strict}
.hero-art .home-landscape{width:100%;height:100%;display:block;overflow:visible}
.home-far{animation:home-mountain-ink 2.7s cubic-bezier(.2,.6,.2,1) both}
.home-middle{animation:home-mountain-ink 2.5s .15s cubic-bezier(.2,.6,.2,1) both}
.home-mist{animation:home-mist-flow 22s ease-in-out infinite alternate;transform-box:view-box;transform-origin:center}
.home-water-lines{animation:home-water-light 9s ease-in-out infinite alternate;transform-box:fill-box;transform-origin:center}
.hero-copy>.eyebrow{animation:home-copy-reveal 1.1s .1s both}
.hero-copy>h1{animation:home-title-reveal 1.6s .2s cubic-bezier(.2,.65,.3,1) both}
.hero-copy>.hero-subtitle{animation:home-copy-reveal 1.1s .45s both}
.hero-copy>.hero-description{animation:home-copy-reveal 1.1s .65s both}
.hero-copy>.start-button,.hero-copy>.experience-note{animation:home-copy-reveal 1s .85s both}
.beam.is-dragging{box-shadow:0 13px 22px #3c2a1929,0 0 0 2px #e8c78e99;filter:brightness(1.06)}
.beam.is-placed{animation:wood-seat .55s ease-out}
.weave-piece.is-dragging .weave-piece-body{filter:drop-shadow(0 9px 5px #523a302e)}
.weave-piece.is-placed .weave-piece-body{animation:wood-seat .65s ease-out}
.instant-canvas::after{content:"";position:absolute;inset:8px;pointer-events:none;border:1px solid #a5986826;z-index:5}
.instant-canvas.is-completing .instant-veil{animation:instant-golden-breath 1.4s ease-out both}
.instant-canvas.is-completing .instant-sweep{width:28%;background:linear-gradient(90deg,transparent,#e7cf934d,transparent)}
.instant-canvas.is-complete .instant-poem{animation:poem-settle 1.3s ease-out both}
.instant-completion{position:relative}
.instant-completion::before{content:"";position:absolute;top:-3px;left:calc(50% - 3px);width:6px;height:6px;background:var(--red);transform:rotate(45deg)}
.explore-exhibit [data-explore-panel]:not([hidden]){animation:exhibit-open .7s cubic-bezier(.2,.65,.3,1) both}
.explore-quiz-dialog[open]{animation:exhibit-open .42s ease-out both}
.guardian-card-stage::after{content:"";position:absolute;inset:-1px;pointer-events:none;opacity:0;border:1px solid #a4513c;box-shadow:0 0 0 8px #a4513c0c}
.is-generating .guardian-card-stage::after{animation:paper-ink-breath .95s ease-out both}
.is-generating #guardian-card-canvas{animation:paper-unroll .95s cubic-bezier(.2,.7,.2,1) both}
.guardian-result:not([hidden]) .guardian-result-art{animation:keepsake-settle .8s ease-out both}
@keyframes home-mountain-ink{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
@keyframes home-mist-flow{from{transform:translateX(-8px);opacity:.78}to{transform:translateX(12px);opacity:1}}
@keyframes home-water-light{from{opacity:.6;transform:translateX(-2px)}to{opacity:1;transform:translateX(3px)}}
@keyframes home-copy-reveal{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:none}}
@keyframes home-title-reveal{from{opacity:0;transform:translateY(12px);letter-spacing:19px}to{opacity:1;transform:none}}
@keyframes wood-seat{0%{filter:brightness(1.16)}50%{filter:brightness(1.03)}100%{filter:brightness(1)}}
@keyframes instant-golden-breath{0%{opacity:0}35%{opacity:.8}100%{opacity:0}}
@keyframes poem-settle{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}
@keyframes exhibit-open{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@keyframes paper-unroll{0%{clip-path:inset(0 0 97%);opacity:.65}65%{clip-path:inset(0 0 0);opacity:1}100%{clip-path:inset(0);opacity:1}}
@keyframes paper-ink-breath{0%,45%{opacity:0}70%{opacity:.6}100%{opacity:0}}
@keyframes keepsake-settle{from{opacity:.2;transform:translateY(12px)}to{opacity:1;transform:none}}
[hidden] *,body.is-background *,body.is-background *::before,body.is-background *::after{animation-play-state:paused!important}
@media(hover:none){.beam.is-dragging{filter:none}.weave-piece.is-dragging .weave-piece-body{filter:none}}
/* 竖屏完整收纳两端的檐口，开场特写仍在拉远后回到完整桥景。 */
@media(max-width:760px){.instant-canvas>svg{width:100%;left:0;top:3%}.guardian-ending-landscape{width:112%;left:-6%}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto!important}*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.001ms!important;animation-iteration-count:1!important;animation-delay:0s!important;transition-duration:0s!important}.scene-wash{display:none}.home-far,.home-middle,.home-mist,.home-water-lines,.hero-copy>*{animation:none!important;opacity:1;transform:none}.is-generating #guardian-card-canvas{animation:none!important;clip-path:none!important}.instant-canvas.is-complete .instant-poem,.guardian-result:not([hidden]) .guardian-result-art{animation:none!important}}
@media(update:slow){.home-mist,.home-water-lines{animation:none}}
