/* Hands, bronze, ink, and paper. The final static reading remains authoritative. */
.yj-motion-enabled #coins{position:relative;perspective:900px;perspective-origin:50% 35%;overflow:visible;isolation:isolate}
.yj-motion-enabled #coins .coin{position:relative;z-index:2;transform-style:preserve-3d}
.yj-motion-enabled #coins.tossing .coin{animation:none!important}
.yj-hand-toss .coin{will-change:transform;transform-origin:50% 65%}
.yj-motion-enabled #coins.is-charging .coin{translate:calc(var(--yj-hold-x,0px) * var(--charge,0)) calc(-13px * var(--charge,0));rotate:calc(var(--yj-hold-tilt,0deg) * var(--charge,0));filter:brightness(calc(1 + var(--charge,0) * .08));will-change:translate,rotate}
.yj-motion-enabled #coins.is-charging .coin:nth-child(1){--yj-hold-x:clamp(28px,5vw,54px);--yj-hold-tilt:5deg}
.yj-motion-enabled #coins.is-charging .coin:nth-child(2){--yj-hold-x:0px;--yj-hold-tilt:-4deg}
.yj-motion-enabled #coins.is-charging .coin:nth-child(3){--yj-hold-x:clamp(-54px,-5vw,-28px);--yj-hold-tilt:5deg}
.yj-coin-shadow,.yj-ink-ripple{position:absolute;display:block;pointer-events:none;z-index:0;transform:translate(-50%,-50%)}
.yj-coin-shadow{width:65px;height:13px;border-radius:50%;background:var(--ink,#282d29);filter:blur(4px);opacity:0}
.yj-ink-ripple{width:77px;height:23px;border:1px solid var(--ink,#282d29);border-radius:49% 51% 46% 54%;opacity:0;box-shadow:0 0 2px #282d2910}
.yj-motion-enabled #coins .yj-css-hand-toss{animation:yj-hand-cast 1200ms linear var(--yj-delay,0ms) both!important}
.yj-css-coin-shadow{animation:yj-landing-shadow 1200ms linear var(--yj-delay,0ms) both}
.yj-css-ink-ripple{animation:yj-ink-ring 430ms cubic-bezier(.15,.55,.35,1) var(--yj-delay,870ms) both}

.yj-line-inking{isolation:isolate}
.yj-line-inking>i{visibility:hidden}
.yj-brush-sweep{position:absolute;display:block;top:-1px;height:calc(100% + 2px);pointer-events:none;z-index:1}
.yj-brush-mark,.yj-brush-bleed{display:block;position:absolute;inset:0;background:currentColor;pointer-events:none}
.yj-brush-mark{clip-path:polygon(0 27%,6% 8%,17% 14%,32% 5%,50% 12%,71% 5%,92% 16%,100% 31%,99% 70%,91% 88%,72% 92%,54% 87%,35% 96%,18% 85%,4% 94%,0 72%)}
.yj-brush-bleed{inset:-1px -1.5px;border-radius:18% 9% 12% 22%;filter:blur(.8px);opacity:.1}
.yj-css-brush-sweep{animation:yj-brush-write 620ms cubic-bezier(.25,.5,.3,1) var(--yj-delay,0ms) both}

/* Each new line lands on the paper without moving the surrounding layout. */
.yj-scroll-receiving{transform-origin:50% 5%;will-change:transform}
.yj-scroll-wash{position:absolute;inset:4px 6px;pointer-events:none;border-radius:2px;background:linear-gradient(115deg,#c6a76c44,transparent 42%,#e6cc8633 66%,transparent);box-shadow:inset 0 0 17px #b69b6738;opacity:0}
.yj-css-scroll-receiving{animation:yj-scroll-receive 760ms cubic-bezier(.22,.65,.3,1) both}
.yj-css-scroll-wash{animation:yj-scroll-wash 800ms ease-out both}
@keyframes yj-scroll-receive{0%{translate:0 3px;scale:1 .965}42%{translate:0 -1px;scale:1 1.018}100%{translate:0 0;scale:1 1}}
@keyframes yj-scroll-wash{0%,100%{opacity:0}35%{opacity:.32}}

#desk-milestones .is-new-milestone{position:relative;transform-origin:center}
#desk-milestones .is-new-milestone::after{content:"";position:absolute;inset:-3px;border:1px solid currentColor;border-radius:50%;opacity:0;pointer-events:none;animation:yj-milestone-ring 560ms ease-out var(--yj-delay,0ms) both}
@keyframes yj-milestone-ring{0%{opacity:.55;scale:.8}100%{opacity:0;scale:1.8}}
.yj-css-milestone{animation:yj-milestone-press 430ms cubic-bezier(.25,.6,.3,1) var(--yj-delay,0ms) both}
.yj-six-lines-complete{position:relative}
#desk-milestones .yj-completion-ring{position:absolute;right:-38px;top:-22px;width:52px;height:52px;display:block;margin:0;padding:0;flex:none;border:0;background:none;pointer-events:none;z-index:2}
#desk-milestones .yj-ring-print{position:absolute;left:50%;top:50%;width:4px;height:7px;display:block;margin:0;padding:0;flex:none;border:0;border-radius:1px;background:var(--accent,#a64535);opacity:0;pointer-events:none}
#desk-milestones .yj-completion-seal{position:absolute;left:50%;top:50%;display:grid;place-items:center;width:24px;height:27px;margin:0;padding:0;flex:none;border:0;background:var(--accent,#a64535);color:var(--paper,#f4eedf);font:19px/1 "Songti SC",STSong,"Noto Serif CJK SC",serif;box-shadow:inset 0 0 0 1px var(--paper,#f4eedf);outline:1px solid var(--accent,#a64535);outline-offset:2px;border-radius:2px 1px;opacity:0;pointer-events:none}
.yj-css-ring-print{animation:yj-six-print-ring 780ms cubic-bezier(.2,.6,.3,1) var(--yj-delay,0ms) both}
.yj-css-completion-seal{animation:yj-complete-press 750ms ease-out var(--yj-delay,650ms) both}

.yj-paper-opening{position:relative;transform-origin:50% 0;will-change:clip-path,transform}
.yj-scroll-edge{position:absolute;left:0;right:0;bottom:0;height:8px;display:block;pointer-events:none;z-index:4;background:linear-gradient(180deg,#8f795922,transparent);border-top:1px solid #8f79593d;filter:blur(.35px)}
.yj-css-paper-opening{animation:yj-unroll-paper 860ms cubic-bezier(.2,.55,.25,1) both}
.yj-seal-station{position:relative;display:flex;justify-content:flex-end;align-items:center;min-height:46px;margin:0 7px 13px;pointer-events:none;isolation:isolate}
.yj-result-seal{display:grid;place-items:center;flex:0 0 34px;width:34px;height:38px;margin:4px;color:var(--paper,#f4eedf);background:var(--accent,#a64535);outline:1px solid var(--accent,#a64535);outline-offset:3px;box-shadow:inset 0 0 0 2px var(--paper,#f4eedf),inset 0 0 0 3px var(--accent,#a64535);border-radius:2px 1px 3px 1px;font:27px/1 "Songti SC",STSong,"Noto Serif CJK SC",serif;transform:rotate(-7deg);opacity:.88;pointer-events:none}
.yj-stamp-bloom{position:absolute;right:1px;top:0;width:46px;height:46px;border:1px solid var(--accent,#a64535);border-radius:2px;filter:blur(.8px);opacity:0;pointer-events:none;transform-origin:center}
.yj-css-stamp{animation:yj-seal-press 340ms cubic-bezier(.25,.55,.25,1) var(--yj-delay,620ms) both}
.yj-css-stamp-bloom{animation:yj-seal-bloom 450ms ease-out var(--yj-delay,790ms) both}

.yj-morph-line{position:absolute;inset:0;display:block;pointer-events:none;isolation:isolate}
.yj-line-morphing>i{visibility:hidden}
.yj-morph-stroke{position:absolute;top:0;height:100%;display:block;pointer-events:none;clip-path:polygon(0 17%,15% 5%,32% 13%,56% 4%,80% 14%,100% 6%,100% 85%,81% 97%,58% 87%,32% 96%,13% 88%,0 98%);border-radius:1px}
.yj-morph-left{left:0}
.yj-morph-right{right:0}
.yj-morph-bloom{position:absolute;left:50%;top:50%;width:18px;height:150%;opacity:0;filter:blur(2px);border-radius:40% 20% 30% 50%;transform:translate(-50%,-50%);pointer-events:none}
.yj-css-morph-bloom{animation:yj-ink-join 660ms ease-out var(--yj-delay,0ms) both}
.yj-change-tools{display:flex;justify-content:flex-end;margin:8px 0 3px;min-height:28px}
.yj-replay-change{font:11px/1.6 var(--sans,system-ui,sans-serif);color:var(--ink,#282d29);padding:5px 0 5px 12px;border:0;background:transparent;cursor:pointer;letter-spacing:.12px;text-decoration:underline;text-decoration-color:var(--line,#d8cdbb);text-underline-offset:4px;border-radius:2px}
.yj-replay-change:hover,.yj-replay-change.yj-change-playing{color:var(--accent,#a64535);text-decoration-color:currentColor}
.yj-replay-change:focus-visible{outline:2px solid var(--accent,#a64535);outline-offset:4px}
.yj-replay-change:disabled{opacity:.65;cursor:default;text-decoration:none}

@keyframes yj-hand-cast{0%,100%{translate:0 0;rotate:0deg;scale:1}22%{translate:var(--yj-gather-x,0px) -13px;rotate:-4deg;scale:.98}28%{translate:var(--yj-gather-shake,0px) -19px;rotate:4deg;scale:.97}35%{translate:var(--yj-gather-x,0px) -14px;rotate:-3deg;scale:.98}42%{translate:var(--yj-gather-x,0px) -25px;rotate:5deg;scale:.98}60%{translate:0 -58px;rotate:var(--yj-coin-tilt,13deg);scale:.99}74%{translate:0 0;rotate:-4deg;scale:1}81%{translate:0 -10px;rotate:3deg;scale:1}90%{translate:0 0;rotate:-1deg}95%{translate:0 -2px;rotate:0deg}}
@keyframes yj-landing-shadow{0%{opacity:.12;transform:translate(-50%,-50%) scale(1)}60%{opacity:.025;transform:translate(-50%,-50%) scale(.5)}74%{opacity:.24;transform:translate(-50%,-50%) scale(1.06)}90%{opacity:.09}100%{opacity:0;transform:translate(-50%,-50%) scale(1)}}
@keyframes yj-ink-ring{0%{opacity:0;transform:translate(-50%,-50%) scale(.45)}16%{opacity:.25;transform:translate(-50%,-50%) scale(.75)}60%{opacity:.08;transform:translate(-50%,-50%) scale(1.2)}100%{opacity:0;transform:translate(-50%,-50%) scale(1.7)}}
@keyframes yj-brush-write{0%{clip-path:inset(-55% 100% -55% 0);opacity:.3}50%{clip-path:inset(-55% 30% -55% 0);opacity:.95}82%,100%{clip-path:inset(-55% 0% -55% 0);opacity:1}}
@keyframes yj-milestone-press{0%{opacity:.4;scale:.78;filter:blur(.6px)}55%{opacity:1;scale:1.08;filter:blur(0)}100%{opacity:1;scale:1;filter:blur(0)}}
@keyframes yj-six-print-ring{0%{opacity:0;transform:translate(-50%,-50%) scale(.6)}34%,64%{opacity:.65;transform:translate(calc(-50% + var(--yj-ring-x)),calc(-50% + var(--yj-ring-y))) scale(1)}100%{opacity:0;transform:translate(-50%,-50%) scale(.5)}}
@keyframes yj-complete-press{0%{opacity:0;transform:translate(-50%,-50%) scale(1.5) rotate(-8deg)}23%{opacity:.9;transform:translate(-50%,-50%) scale(.95) rotate(-8deg)}72%{opacity:.83;transform:translate(-50%,-50%) scale(1) rotate(-8deg)}100%{opacity:0;transform:translate(-50%,-50%) scale(1) rotate(-8deg)}}
@keyframes yj-unroll-paper{0%{clip-path:inset(0 0 94% 0);opacity:.8}58%{clip-path:inset(0 0 30% 0);opacity:1}100%{clip-path:inset(0 0 0 0);opacity:1}}
@keyframes yj-seal-press{0%{opacity:0;transform:translateY(-18px) scale(1.65) rotate(-4deg)}55%{opacity:.95;transform:translateY(1px) scale(.96) rotate(-7deg)}72%{opacity:.9;transform:translateY(0) scale(1.02) rotate(-7deg)}100%{opacity:.88;transform:translateY(0) scale(1) rotate(-7deg)}}
@keyframes yj-seal-bloom{0%{opacity:0;transform:scale(.7) rotate(-7deg)}18%{opacity:.2;transform:scale(1) rotate(-7deg)}100%{opacity:0;transform:scale(1.28) rotate(-7deg)}}
@keyframes yj-ink-join{0%{opacity:0;transform:translate(-50%,-50%) scaleX(.3)}50%{opacity:.18;transform:translate(-50%,-50%) scaleX(1.5)}100%{opacity:0;transform:translate(-50%,-50%) scaleX(2.2)}}
@media(max-width:760px){.yj-change-tools{margin-top:5px}.yj-replay-change{font-size:10px}.yj-ink-ripple{width:65px;height:19px}.yj-coin-shadow{width:55px}.yj-seal-station{min-height:40px;margin-bottom:8px}.yj-result-seal{width:29px;height:33px;flex-basis:29px;font-size:23px}#desk-milestones .yj-completion-ring{right:-27px;top:-18px;scale:.85}}
@media(prefers-reduced-motion:reduce){.yj-scroll-receiving,.yj-css-scroll-receiving{animation:none!important;will-change:auto}.yj-scroll-wash{display:none!important}}
@media(prefers-reduced-motion:reduce){.yj-motion-enabled #coins .coin,.yj-motion-enabled #coins.tossing .coin,.yj-motion-enabled #coins .yj-css-hand-toss{animation:none!important}.yj-motion-enabled #coins.is-charging .coin{translate:none!important;rotate:none!important;filter:none!important}.yj-motion-enabled .yj-paper-opening{animation:none!important;clip-path:none!important;transform:none!important}.yj-brush-sweep,.yj-ink-ripple,.yj-coin-shadow,.yj-scroll-edge,.yj-stamp-bloom,.yj-seal-station,.yj-completion-ring{display:none!important}.yj-line-inking>i,.yj-line-morphing>i{visibility:visible!important}.yj-morph-line{display:none!important}.yj-morph-stroke{transition:none!important}.yj-replay-change,.yj-css-milestone{transition:none!important;animation:none!important}#desk-milestones .is-new-milestone::after{display:none}}
