/* Decoded medallions are painted before the hall is visible. Both door labels
   share one entrance fade; later canvas paints also fade instead of popping. */
.castle-door-emblem canvas{display:block;width:100%;height:100%;image-rendering:auto;filter:drop-shadow(0 3px 3px #0008);opacity:0;transition:opacity .48s ease-out}
.castle-door-emblem canvas[data-medallion-ready=true]{opacity:1}
.stage-enter .crimson-hall .castle-door-label{animation:castle-door-in131 .62s ease-out both}
@keyframes castle-door-in131{from{opacity:0;transform:translateY(3px)}to{opacity:1;transform:translateY(0)}}

/* The real price is centered independently of the smaller offer above/right.
   Separate grid cells keep the joke ribbon and discount clear of $3.99. */
.deed-compact .deed-checkout{display:flex;flex-direction:column;align-items:stretch;justify-content:center;gap:2px;min-height:70px;padding:8px 10px 7px}
.deed-checkout .deed-sale-price{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:0;min-height:36px;width:100%}
.deed-checkout .deed-sale-price>strong{grid-column:2;grid-row:1;display:block;text-align:center;font:700 33px/36px 'Knightle Herald',Georgia;margin:0;padding:0;letter-spacing:0}
.deed-offer{grid-column:3;grid-row:1;align-self:start;justify-self:start;display:flex;flex-direction:column;align-items:center;gap:3px;max-width:calc(100% - 8px);margin:0 0 0 8px;transform:translateY(-2px)}
.deed-checkout .deed-fake-ribbon{position:static;display:block;transform:none;padding:2px 4px;font:700 5px/1.15 Georgia;letter-spacing:.2px;white-space:nowrap;border-radius:1px;box-shadow:0 1px 1px #0a160e80}
.deed-offer-values{display:flex;align-items:center;justify-content:center;gap:4px;white-space:nowrap}
.deed-checkout .deed-sale-price .deed-was{display:block;min-width:0;padding:0;margin:0;font:10px/12px Georgia;color:#bbc0a3}
.deed-checkout .deed-discount{padding:2px 3px;font:700 8px/10px Georgia;border-radius:1px}
.deed-checkout .deed-buy-label{display:flex;align-items:center;justify-content:center;gap:6px;max-width:none;width:100%;font-size:10px;line-height:14px;text-align:center;letter-spacing:.6px}
.deed-checkout .deed-buy-label b{font-size:17px;line-height:14px}
.ruby-balance{white-space:nowrap;font-variant-numeric:tabular-nums;text-transform:none;letter-spacing:0}
@media(max-width:350px){.deed-offer{margin-left:6px;max-width:calc(100% - 6px)}.deed-offer-values{gap:2px}.deed-checkout .deed-sale-price .deed-was{font-size:9px}.deed-checkout .deed-discount{padding:2px;font-size:7px}.deed-checkout .deed-fake-ribbon{font-size:4.5px;padding:2px 3px}}
@media(prefers-reduced-motion:reduce){.stage-enter .crimson-hall .castle-door-label{animation:castle-door-in131 .16s linear both;transform:none}.castle-door-emblem canvas{transition-duration:.16s}@keyframes castle-door-in131{from{opacity:0}to{opacity:1}}}

/* Hold one continuous six-tile board, then pull the halves apart without
   changing tile widths. The goo reaches onto both inner tile edges. */
.stage-combat .combat.dread-combat .rune-board-controls .slime-boards{gap:23px;animation:none;overflow:visible}
.stage-combat .combat.dread-combat .rune-board-controls .slime-boards.slime-joined{gap:23px}
.stage-combat .combat.dread-combat .rune-board-controls .slime-boards.slime-splitting{animation:none}
.slime-boards.slime-joined>.slime-half:first-child{transform:translateX(10px)}
.slime-boards.slime-joined>.slime-half:nth-child(2){transform:translateX(-10px)}
.slime-boards.slime-splitting>.slime-half:first-child{animation:slime-left131 .72s .65s cubic-bezier(.2,.75,.25,1) both}
.slime-boards.slime-splitting>.slime-half:nth-child(2){animation:slime-right131 .72s .65s cubic-bezier(.2,.75,.25,1) both}
.stage-combat .slime-boards.slime-joined .guess-row{opacity:1;filter:none;transform:none}
.stage-combat .slime-boards.slime-joined .row-seat .tile{border-bottom-color:#77816f;box-shadow:inset 0 -2px #17261b}
.combat .slime-seam.slime-pixel-ooze{width:32px;top:-2px;bottom:-3px;filter:none;opacity:1;isolation:isolate}
.combat .slime-joined .slime-pixel-ooze{opacity:0}
.combat .slime-splitting .slime-pixel-ooze{animation:slime-seam-open131 .72s .65s cubic-bezier(.2,.75,.25,1) both}
.slime-pixel-ooze svg{image-rendering:pixelated;overflow:visible}
.slime-pixel-ooze .slime-ooze-body{animation:slime-body131 3.8s ease-in-out infinite;transform-origin:50% 50%}
.slime-pixel-ooze .ooze-collar{transform-box:fill-box;transform-origin:center;animation:slime-lobe131 3.1s ease-in-out infinite;animation-delay:calc(var(--lobe)*-.7s)}
.slime-pixel-ooze .slime-falling-drop{position:absolute;display:block;top:calc(24% + var(--drip)*29%);left:calc(9px + var(--drip)*4px);width:7px;height:11px;background:#4e9db7;box-shadow:inset 2px 2px #91ced6,inset -2px -2px #204b67;clip-path:polygon(2px 0,5px 0,5px 3px,7px 3px,7px 9px,5px 9px,5px 11px,2px 11px,2px 9px,0 9px,0 3px,2px 3px);opacity:0;pointer-events:none;animation:slime-drip131 6.2s linear infinite;animation-delay:calc(var(--drip)*-2s)}
.slime-joined .slime-falling-drop{visibility:hidden}
@keyframes slime-left131{from{transform:translateX(10px)}to{transform:translateX(0)}}
@keyframes slime-right131{from{transform:translateX(-10px)}to{transform:translateX(0)}}
@keyframes slime-seam-open131{0%{opacity:0;transform:translateX(-50%) scaleX(.08)}16%{opacity:1}74%{transform:translateX(-50%) scaleX(1.12)}100%{opacity:1;transform:translateX(-50%) scaleX(1)}}
@keyframes slime-body131{0%,100%{transform:scaleX(1) translateY(0)}45%{transform:scaleX(1.12) translateY(2px)}70%{transform:scaleX(.97) translateY(1px)}}
@keyframes slime-lobe131{0%,100%{scale:1 1}40%{scale:1.12 1.28}70%{scale:.98 1.1}}
@keyframes slime-drip131{0%{opacity:0;transform:translate3d(0,0,0) scaleY(.5)}8%{opacity:.85;transform:translate3d(0,3px,0) scaleY(1.3)}15%{opacity:.85;transform:translate3d(1px,9px,0) scaleY(1)}70%{opacity:.7}100%{opacity:0;transform:translate3d(-7px,46vh,0) scaleY(1.15)}}

/* Immediate timing entry. The panel and its track never resize on a strike;
   the larger action sits over the keyboard's former position. */
.critical-focus.combat-temper{touch-action:none;user-select:none;-webkit-user-select:none;animation:temper-fade130 .09s linear both}
.critical-focus.combat-temper:not(.icebreak-focus) .critical-window{position:absolute;box-sizing:border-box;left:50%;top:max(8px,calc((var(--strike-dock-top,70vh) - 326px)/2));width:min(366px,92vw);height:326px;padding:8px 12px;translate:-50% 0;transform:none;animation:none}
.critical-focus.combat-temper .critical-window .eyebrow{margin:0;font-size:8px;line-height:12px}
.critical-focus.combat-temper:not(.icebreak-focus) #timing-title{height:58px;min-height:58px;margin:3px 0 8px;font-size:26px;line-height:1.1}
.critical-focus.combat-temper .focus-rune{width:94px;height:102px;font-size:65px;animation:temper-rune-in131 .16s cubic-bezier(.18,.8,.24,1) both}
.critical-focus.combat-temper .strike-gauge{height:30px;margin:-40px 0 0;overflow:visible;clip-path:none;contain:layout style}
.critical-focus.combat-temper .gauge-cursor{width:4px;will-change:transform;box-shadow:0 0 3px #080f0b,0 0 6px #e7f1cf}
.critical-focus.combat-temper .gauge-values{margin-top:12px;line-height:13px}
.critical-focus.combat-temper .timing-copy{margin:17px 0 0;min-height:19px;line-height:19px}
.combat-temper .critical-actions{position:absolute;left:50%;top:var(--strike-dock-top,70vh);translate:-50% 0;width:min(340px,90vw);text-align:center}
.critical-focus.combat-temper:not(.icebreak-focus) .timing-strike.strike-surface{width:100%;height:80px;min-height:80px;min-width:0;margin:0;padding:13px 16px 17px;font-size:20px;letter-spacing:1px}
.combat-temper .timing-controls{margin:9px 0 2px;font-size:7px;line-height:12px;color:#b3bea5}
.combat-temper .steady-critical{min-height:34px;padding:7px 9px;font-size:12px}
.critical-focus.combat-temper.timing-locked .critical-number{position:absolute;inset:auto 0 8px;height:58px;font:700 58px/58px 'Knightle Herald',Georgia;pointer-events:none}
.critical-focus.combat-temper.timing-locked.grade-perfect .critical-number{font-size:66px}
.critical-focus.combat-temper.timing-locked .critical-number:after{font-size:7px;line-height:10px}
.critical-focus.combat-temper.timing-locked .focus-rune{animation:temper-rune-hit131 .24s ease-out both}
.critical-focus.combat-temper.timing-locked .timing-strike{animation:none}
.critical-focus.combat-temper.timing-locked .strike-gauge{animation:temper-lock131 .24s ease-out both}
.combat-temper .timing-hit-sparks{bottom:50px}
@keyframes temper-rune-in131{from{opacity:.35;transform:scale(.92)}to{opacity:1;transform:scale(1)}}
@keyframes temper-rune-hit131{0%{transform:scale(.94);filter:brightness(1.8)}28%{transform:scale(1.07);filter:brightness(1.6)}100%{transform:scale(1);filter:brightness(1)}}
@keyframes temper-lock131{0%{box-shadow:inset 0 0 0 2px #fff8ce,0 0 27px var(--lock-glow,#d9bd6cb0)}38%{box-shadow:inset 0 0 0 1px #fff2bb,0 0 16px var(--lock-glow,#d9bd6c70)}100%{box-shadow:inset 0 0 0 1px #dec88966,0 0 5px var(--lock-glow,#d9bd6c40)}}
.execution-tally .execution-total,.execution-tally .execution-number{will-change:transform,opacity}
@media(orientation:landscape) and (max-height:500px){
 .critical-focus.combat-temper{display:grid;grid-template-columns:minmax(0,1fr) minmax(150px,.75fr);gap:22px;padding:8px 20px}
 .critical-focus.combat-temper:not(.icebreak-focus) .critical-window{position:relative;left:auto;top:auto;translate:none;width:min(340px,100%);height:250px;padding:3px 10px;justify-self:center}
 .critical-focus.combat-temper:not(.icebreak-focus) #timing-title{height:35px;min-height:35px;font-size:23px;margin-bottom:5px}
 .critical-focus.combat-temper .focus-rune{width:70px;height:77px;font-size:47px}
 .critical-focus.combat-temper .strike-gauge{height:25px;margin-top:-31px}
 .critical-focus.combat-temper .timing-copy{margin-top:13px;font-size:11px}
 .combat-temper .critical-actions{position:relative;left:auto;top:auto;translate:none;width:min(300px,100%);align-self:end;margin-bottom:18px}
 .critical-focus.combat-temper:not(.icebreak-focus) .timing-strike.strike-surface{height:67px;min-height:67px;font-size:17px}
 .critical-focus.combat-temper.timing-locked .critical-number{height:42px;font-size:42px;line-height:42px;bottom:4px}
 .critical-focus.combat-temper.timing-locked.grade-perfect .critical-number{font-size:48px}
}
@media(prefers-reduced-motion:reduce){
 .slime-boards.slime-splitting>.slime-half,.combat .slime-splitting .slime-pixel-ooze{animation-duration:1ms!important;animation-delay:0s!important}
 .slime-pixel-ooze .slime-ooze-body,.slime-pixel-ooze .ooze-collar,.slime-pixel-ooze .slime-falling-drop{animation:none}
 .slime-pixel-ooze .slime-falling-drop{display:none}
 .critical-focus.combat-temper,.critical-focus.combat-temper .focus-rune,.critical-focus.combat-temper.timing-locked .focus-rune{animation:none}
}
