/* Motion belongs to the illustrated surroundings; reading surfaces stay still. */
.ff-in-room::after{display:none}
.ff-room-magic{position:fixed;inset:0 0 auto;height:var(--ff-scene-height,100vh);z-index:0;overflow:hidden;pointer-events:none;contain:strict}
.ff-magic-artboard{--art-width:max(100vw,calc(var(--ff-scene-height,100vh) * 1.500586));--art-height:max(var(--ff-scene-height,100vh),66.640625vw);position:absolute;width:var(--art-width);height:var(--art-height);max-width:none;left:calc((100vw - var(--art-width)) * .5);top:calc((var(--ff-scene-height,100vh) - var(--art-height)) * .5);overflow:hidden}
.ff-magic-layer,.ff-magic-layer *{pointer-events:none}
.ff-lamp-glow{opacity:.45;animation:ff-indoor-lamplight 5.5s ease-in-out infinite alternate}
.ff-lamp-glow:nth-of-type(even){animation-delay:-3.8s;animation-duration:7.5s}
.ff-cabinet-glow{opacity:.2;animation:ff-cabinet-stir 11s ease-in-out -3s infinite}
.ff-dust-mote{opacity:.55;animation:ff-dust-drift var(--duration,13s) ease-in-out var(--delay,0s) infinite alternate}
.ff-glass-shimmer{opacity:0;animation:ff-gallery-shimmer 12s ease-in-out -3s infinite}
.ff-brass-glint{opacity:0;transform-box:fill-box;transform-origin:center;animation:ff-brass-catch 9s ease-in-out var(--delay,0s) infinite}
.ff-steam{fill:none;stroke:#fff5de;stroke-width:2.6;stroke-linecap:round;opacity:0;animation:ff-tea-steam 6s ease-in-out var(--delay,0s) infinite}
.ff-quill{transform-origin:548px 430px;animation:ff-quill-twitch 9s ease-in-out -3s infinite}
.ff-envelope-corner{transform-origin:255px 478px;animation:ff-letter-lift 12s ease-in-out -2s infinite}
.ff-idea-sketch{stroke-dasharray:1;stroke-dashoffset:1;opacity:.2;animation:ff-sketch-appears 11s ease-in-out -2s infinite}
.ff-curtain{opacity:.7;transform-origin:808px 65px;animation:ff-curtain-breath 9s ease-in-out -3s infinite alternate}
.ff-magic-flourish{width:min(240px,80%);height:38px;margin:1rem auto 1.5rem;overflow:hidden}
.ff-magic-flourish svg{width:100%;height:100%;fill:none;stroke:#967138;stroke-width:1.2;stroke-linecap:round}
.ff-magic-flourish path{stroke-dasharray:1;stroke-dashoffset:1}
.ff-magic-flourish[data-revealed="true"] path{animation:ff-ink-arrival 14s ease-out infinite}
.ff-record-layout{position:relative}
.ff-magic-record-frame{position:absolute;inset:-5px;z-index:2;border:1px solid transparent}
.ff-frame-spark{position:absolute;left:0;top:0;width:5px;height:5px;border-radius:50%;background:#fff0c0;box-shadow:0 0 8px 3px #eaca78aa;opacity:0}
.ff-magic-record-frame[data-revealed="true"] .ff-frame-spark{animation:ff-record-recognition 14s ease-in-out infinite}
.ff-magic-sigil{display:block;float:right;width:32px;height:32px;margin:.1rem 0 .5rem 1rem;color:#8b773d;opacity:.55}
.ff-magic-sigil svg{display:block;width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:1}
.ff-faq details[open] .ff-magic-sigil[data-revealed="true"] svg{animation:ff-keeping-seal 7s ease-in-out infinite}
.ff-magic-layer[data-paused="true"] *, .ff-magic-layer[data-paused="true"] *::before,.ff-magic-layer[data-paused="true"] *::after{animation-play-state:paused!important}
@keyframes ff-indoor-lamplight{0%{opacity:.34}32%{opacity:.7}48%{opacity:.48}76%{opacity:.78}100%{opacity:.5}}
@keyframes ff-cabinet-stir{0%,100%{opacity:.13}28%{opacity:.3}45%{opacity:.86}63%{opacity:.25}78%{opacity:.55}}
@keyframes ff-dust-drift{0%{transform:translate(0,0);opacity:.35}35%{opacity:.9}65%{opacity:.5}100%{transform:translate(-32px,-48px);opacity:.7}}
@keyframes ff-gallery-shimmer{0%{transform:translateX(0);opacity:0}12%{opacity:1}68%{transform:translateX(390px);opacity:.7}80%,100%{transform:translateX(410px);opacity:0}}
@keyframes ff-brass-catch{0%,45%,100%{opacity:0;transform:scale(.55)}20%{opacity:1;transform:scale(1.5)}70%{opacity:.5;transform:scale(1)}}
@keyframes ff-tea-steam{0%{transform:translate(0,7px) scaleX(.85);opacity:0}24%{opacity:.85}58%{opacity:.55}100%{transform:translate(9px,-36px) scaleX(1.15);opacity:0}}
@keyframes ff-quill-twitch{0%,24%,66%,100%{transform:rotate(0)}32%{transform:rotate(-5deg)}40%{transform:rotate(3deg)}48%{transform:rotate(-2deg)}58%{transform:rotate(0)}}
@keyframes ff-letter-lift{0%,20%,80%,100%{transform:translateY(0) rotate(0)}40%{transform:translateY(-4px) rotate(-5deg)}60%{transform:translateY(-1px) rotate(-1.5deg)}}
@keyframes ff-sketch-appears{0%,12%{stroke-dashoffset:1;opacity:.12}48%,69%{stroke-dashoffset:0;opacity:.8}83%,100%{stroke-dashoffset:0;opacity:0}}
@keyframes ff-curtain-breath{0%{transform:rotate(-.3deg)}55%{transform:rotate(.65deg)}100%{transform:rotate(.08deg)}}
@keyframes ff-ink-arrival{0%{stroke-dashoffset:1;opacity:.3}24%,75%{stroke-dashoffset:0;opacity:1}94%,100%{stroke-dashoffset:0;opacity:0}}
@keyframes ff-record-recognition{0%{left:0;top:0;opacity:0}3%{opacity:1}13%{left:100%;top:0}26%{left:100%;top:100%}39%{left:0;top:100%;opacity:1}52%{left:0;top:0;opacity:.7}58%,100%{left:0;top:0;opacity:0}}
@keyframes ff-keeping-seal{0%,100%{opacity:.55;filter:drop-shadow(0 0 0 transparent)}40%{opacity:1;filter:drop-shadow(0 0 5px #d9bc6a)}}
@media(max-width:700px){.ff-magic-artboard{left:calc((100vw - var(--art-width)) * .62)}.ff-room-motes>g:nth-child(3n){display:none}.ff-magic-sigil{width:27px;height:27px}.ff-in-room .ff-room-plaque{top:2rem}.ff-in-room .ff-room-scene .ff-page-intro{padding-top:10rem}.ff-in-room .ff-room-scene-compact .ff-room-plaque{top:2rem}}
@media(prefers-reduced-motion:reduce){.ff-magic-layer *, .ff-magic-layer *::before,.ff-magic-layer *::after{animation:none!important}.ff-magic-flourish path,.ff-idea-sketch{stroke-dashoffset:0}.ff-idea-sketch{opacity:.35}.ff-steam{opacity:.12}.ff-frame-spark{display:none}}
@media print{.ff-magic-layer{display:none!important}}

.ff-keeping-aura{animation:ff-keeping-aura 8s ease-in-out infinite;opacity:.45}
@keyframes ff-keeping-aura{0%,100%{opacity:.25;transform:scale(.9)}45%{opacity:.95;transform:scale(1.1)}70%{opacity:.45;transform:scale(1)}}
@media(prefers-reduced-motion:reduce){.ff-keeping-aura{animation:none!important;opacity:.35}.ff-dust-mote{opacity:.25}}

