/* V95: physical contacts happen before the board changes. */
.stage-combat .dread-combat .slime-boards{position:relative;gap:18px;grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
.stage-combat .dread-combat .slime-boards.slime-joined{gap:3px}
.stage-combat .dread-combat .slime-boards.slime-splitting{animation:slime-board-part .7s .65s both}
@keyframes slime-board-part{from{gap:3px}to{gap:18px}}
.slime-half{display:block;position:relative;opacity:1;min-width:0;height:100%}
.slime-half .guess-board{height:100%}
.slime-half>button.slime-select{position:absolute;inset:0;width:100%;height:100%;border:0;background:transparent;box-shadow:none;padding:0;z-index:3;cursor:pointer}
.slime-half>button.slime-select:focus-visible{outline:1px solid #93d8e4;outline-offset:3px}
.slime-half.active-half .current .tile{border-bottom-color:#a9e4ea;box-shadow:inset 0 -2px #69aac0}
.slime-half.half-solved>button.slime-select{background:transparent;border:0;box-shadow:none;cursor:default}
.slime-seam{position:absolute;left:50%;top:0;bottom:0;width:20px;transform:translateX(-50%);z-index:4;pointer-events:none;filter:drop-shadow(0 1px 2px #061b2d)}
.slime-seam svg{width:100%;height:100%}.slime-seam i{position:absolute;width:5px;height:8px;border-radius:60% 40% 70% 50%;background:#5fbbdb;box-shadow:inset 1px 0 #9de5eb;left:8px;top:24%}.slime-seam i:nth-of-type(2){top:57%;left:5px}.slime-seam i:nth-of-type(3){top:82%;left:10px}
.slime-joined .slime-seam{opacity:0}.slime-splitting .slime-seam{animation:seam-stick .5s .65s both}
@keyframes seam-stick{0%{opacity:0;clip-path:inset(48% 0)}25%{opacity:1}100%{opacity:1;clip-path:inset(0)}}
/* A blade enters the stone, then the wound bleeds below it. */
.backstabbed-tile:after{display:none!important}.vowel-wound{position:absolute;inset:-22px -1px -5px;z-index:7;pointer-events:none;overflow:visible}.vowel-wound svg{position:absolute;width:100%;height:100%;overflow:visible}
.backstab-blade{transform-origin:20px 44px;animation:dagger-plunge .95s both}.stab-cut{opacity:0;animation:wound-open .18s .28s forwards}
@keyframes dagger-plunge{0%{opacity:0;transform:translate(10px,-42px) rotate(18deg)}14%{opacity:1;transform:translate(7px,-35px) rotate(14deg)}30%,65%{opacity:1;transform:translate(0,0) rotate(-8deg)}80%{opacity:1;transform:translate(2px,-4px) rotate(-4deg)}100%{opacity:0;transform:translate(8px,-40px) rotate(8deg)}}
@keyframes wound-open{to{opacity:1}}.vowel-wound b{position:absolute;left:34%;right:28%;top:70%;height:4px;background:#8d2637;box-shadow:0 2px #4c1d29;opacity:0;animation:wound-open .16s .28s forwards}
.vowel-wound i{position:absolute;left:40%;top:72%;width:3px;height:3px;background:#b6414d;opacity:0;animation:vowel-bleed 1.2s .3s both}.vowel-wound i:nth-of-type(2){left:56%;animation-delay:.42s;background:#7e2737}.vowel-wound i:nth-of-type(3){left:47%;animation-delay:.65s;width:2px}
@keyframes vowel-bleed{0%{opacity:0;transform:translateY(0) scaleY(.3)}10%,55%{opacity:1}65%{transform:translateY(12px) scaleY(2.5)}100%{opacity:0;transform:translateY(38px) scaleY(1)}}
.backstabbed-tile{animation:stab-tile-impact .5s .28s both!important}@keyframes stab-tile-impact{0%,100%{translate:0 0}15%{translate:0 3px}40%{translate:1px 0}}
/* Keep the six stone silhouettes until the stomp lands; no clip-path morph. */
.crushed-stone b{opacity:0}.crushed-stone:after{content:'';position:absolute;inset:76% 0 0;background:#726c51;clip-path:polygon(0 80%,10% 30%,30% 70%,50% 0,65% 60%,82% 25%,100% 75%,100% 100%,0 100%)}
.crushing-now .crushed-stone:after{animation:rubble-settle .35s 1.3s both}
.crushing-now .crushed-stone b{opacity:1;animation:stomp-fragment .85s .55s both!important;box-shadow:inset 0 0 0 1px #95865e;transform-origin:50% 80%}
.crushing-now .crushed-stone b:nth-child(1){--piece:-1;clip-path:polygon(0 0,60% 0,42% 54%,0 80%)}
.crushing-now .crushed-stone b:nth-child(2){--piece:1;clip-path:polygon(60% 0,100% 0,100% 73%,42% 54%)}
.crushing-now .crushed-stone b:nth-child(3){--piece:.3;clip-path:polygon(0 80%,42% 54%,100% 73%,100% 100%,0 100%)}
@keyframes stomp-fragment{0%{opacity:1;transform:none}14%{filter:brightness(1.7);transform:translate(calc(var(--piece)*3px),3px)}60%{opacity:.8}100%{opacity:0;transform:translate(calc(var(--piece)*8px),28px) rotate(calc(var(--piece)*18deg));filter:none}}
@keyframes rubble-settle{from{opacity:0}to{opacity:.65}}.crushing-now>small{animation:rubble-settle .3s 1.3s both}
/* Temper's existing window, forged button and gauge surround the ice. */
.ice-focus .critical-window{border-color:#a29369;background:radial-gradient(ellipse at 50% 28%,#253c3f,#141e20 72%);box-shadow:0 22px 80px #000b,inset 0 0 0 3px #3c4137}
.ice-focus #timing-title{font-size:30px;color:#e8e1c3;letter-spacing:1px}.ice-focus .ice-progress{justify-content:center;align-items:center;gap:15px;margin:0 0 14px;min-height:20px}.ice-progress b{font:9px 'Knightle Quill'}.ice-progress i{font-size:12px}
.ice-focus .timing-copy{font:14px/1.4 Georgia;color:#c6cab7;min-height:25px}.ice-focus .ice-art{height:144px;margin:0 auto 12px}.ice-focus .ice-pick-art{width:170px;height:148px;shape-rendering:geometricPrecision}
.ice-focus .icepick{transform-origin:89px 23px}.ice-hit .icepick{animation:weighted-pick .36s ease-out both!important}.ice-hit .ice-block{animation:weighted-block .36s both!important}.ice-miss .icepick{animation:pick-miss .5s both!important}
@keyframes weighted-pick{0%{transform:translate(5px,-6px) rotate(28deg)}18%{transform:translate(6px,-10px) rotate(38deg)}42%{transform:translate(-10px,10px) rotate(-26deg)}65%{transform:translate(-7px,6px) rotate(-18deg)}100%{transform:none}}
@keyframes weighted-block{0%,40%{translate:0 0;filter:none}45%{translate:2px 2px;filter:brightness(1.6)}65%{translate:-1px 0}100%{translate:0 0;filter:none}}
@keyframes pick-miss{25%{transform:translate(9px,-9px) rotate(30deg)}55%{transform:translate(10px,18px) rotate(-40deg)}100%{transform:none}}
.ice-hit .pick-chips i{animation:pick-chip .4s .15s both}.ice-focus[data-cracks='3'] .ice-shard{animation:block-shard-break .6s .08s both}.ice-focus[data-cracks='3'] .ice-block>path:not(.ice-crack){animation:worn-ice-disappear .25s .1s both}
@keyframes worn-ice-disappear{to{opacity:0}}.ice-focus .ice-crack{stroke:#326781;stroke-width:2.2;filter:drop-shadow(1px 0 #ecffff)}
/* Ice grows after the arrow lands, and each facet drops away from its own tile. */
.frozen-row .tile-frost{animation:frost-settle .5s both;animation-delay:calc(.3s + var(--tile-index)*35ms)}
.frost-shard{background:linear-gradient(calc(108deg + var(--shard)*14deg),#e5faffc9,#77b6d1ba 47%,#cfedf0c9 50%,#4c90b0ba);box-shadow:inset 0 0 0 1px #cbf4f1aa}.tile-frost{filter:drop-shadow(0 0 2px #7eb9ce66)}
.iceShatter .tile-frost{animation:none}.iceShatter .frost-shard{animation:ice-facet-drop 1.15s both;animation-delay:calc(var(--tile-index)*30ms + var(--shard)*28ms);transform-origin:50% 80%}
@keyframes ice-facet-drop{0%{opacity:1;transform:none}12%{opacity:1;transform:translate(calc((var(--shard) - 2.5)*1.5px),-3px);filter:brightness(1.7)}48%{opacity:.9}100%{opacity:0;transform:translate(calc((var(--shard) - 2.5)*12px),80px) rotate(calc((var(--shard) - 2.5)*34deg));filter:none}}
/* Healing has a readable impact moment and a separate bar refill. */
.dread-impact-copy.light-heal{opacity:0;animation:light-heal-copy 1.8s .42s both;color:#fff1bd;top:25%;bottom:auto;text-shadow:0 2px 3px #283f49}.light-restoring .enemy-health-fill{filter:brightness(1.35);box-shadow:0 0 9px #fff0a0}.light-restoring .enemy-frame{filter:drop-shadow(0 0 7px #fff0bb88)}
@keyframes light-heal-copy{0%{opacity:0;translate:0 6px}18%,75%{opacity:1}100%{opacity:0;translate:0 -12px}}.healing-rays{display:none}
/* Shake the painted chamber alone. UI and keyboard never inherit the quake. */
.baronOmen{animation:none!important}.world-rumble{animation:baron-rumble 1.5s ease-in-out both;scale:1.025}
.baronOmen .rune-board-controls>.guess-board{animation:old-words-fade .8s .2s both}.baronApproach .rune-board-controls>.guess-board{opacity:0;pointer-events:none}
@keyframes old-words-fade{to{opacity:0;filter:blur(2px)}}
.stage-combat .combat.baron-combat .rune-board-controls{width:min(202px,calc(100vw - 150px));margin-inline:auto}
.baronRise .combat-head{animation:none!important}.baronRise .combat-head h1{animation:baron-name-appear .5s 1.65s both}.baronRise .enemy-frame{animation:baron-bar-slide .65s .9s both}.baronRise .enemy-health-fill{animation:baron-health-return .65s .9s both}.baronRise .trait-emblem{animation:baron-name-appear .4s 2.65s both}.baronRise .rune-board-controls>.guess-board{animation:baron-board-appear .65s 2.25s both}
@keyframes baron-bar-slide{from{opacity:0;translate:-38px 0}to{opacity:1;translate:0 0}}@keyframes baron-name-appear{from{opacity:0}to{opacity:1}}@keyframes baron-board-appear{from{opacity:0;translate:0 5px}to{opacity:1;translate:0 0}}
/* One notice node, one viewport position, on every page. */
body #achievement-toast,body:has(.stage-combat) #achievement-toast,body:not(:has(.stage-combat)) #achievement-toast{position:fixed;top:var(--notice-y,127px);left:var(--notice-x,max(12px,calc((100vw - 606px)/2 + 12px)));right:auto;bottom:auto;width:128px;min-width:128px;max-width:128px;height:34px;margin:0;padding:0;transform:translateX(-16px);z-index:70}
body #achievement-toast.show{transform:translateX(0)}body #achievement-toast .notice-feat-banner{font-size:11px;letter-spacing:.8px;bottom:calc(100% + 4px)}
body #achievement-toast .notice-dismiss{min-height:34px;height:34px;padding:3px 4px}body #achievement-toast strong{font-size:9px;line-height:10px}
@media(orientation:landscape) and (max-height:560px){.stage-combat .combat.baron-combat .rune-board-controls{width:min(202px,calc(100% - 46px));margin-inline:auto}.ice-focus .ice-art{height:90px;margin:0}.ice-focus .ice-pick-art{width:110px;height:96px}.ice-focus #timing-title{font-size:22px}.ice-focus .ice-progress{margin:0;gap:7px}}
@media(prefers-reduced-motion:reduce){.slime-splitting,.slime-splitting .slime-seam,.backstab-blade,.vowel-wound i,.backstabbed-tile,.world-rumble{animation-duration:.01ms!important;animation-delay:0s!important}.baronRise .combat-head h1,.baronRise .enemy-frame,.baronRise .enemy-health-fill,.baronRise .rune-board-controls>.guess-board{animation-duration:.15s}.iceShatter .frost-shard{animation-duration:.2s}}
.slime-seam:before,.slime-seam:after{content:'';position:absolute;left:4px;width:13px;height:25px;top:14%;border-radius:52% 35% 50% 43%;background:linear-gradient(90deg,#2a638c,#5aaed0 48%,#307fa7);box-shadow:inset 2px 0 #8fdbeb77}.slime-seam:after{top:65%;left:6px;height:32px;width:11px}.slime-seam svg{position:relative;z-index:1}.slime-seam i{z-index:2}

.wound-settled .backstab-blade,.wound-settled i{display:none}.wound-settled .stab-cut,.wound-settled b{animation:none;opacity:1}
.charring-now .cinder-coat{animation:soot-land .45s both}.charring-now .tile{transition:background-color .35s,border-color .35s}.charring-now .tile:after{content:'';position:absolute;inset:0;z-index:1;pointer-events:none;background:radial-gradient(ellipse at 50% 95%,#a0d9eaa6,transparent 70%);animation:ember-cool .65s both}
@keyframes soot-land{from{opacity:0;clip-path:inset(70% 0 0)}to{opacity:1;clip-path:inset(0)}}@keyframes ember-cool{from{opacity:.7}to{opacity:0}}
