/* The board is centered on its own; the potion belt sits outside its right edge. */
.stage-combat .combat.dread-combat .rune-board-controls{display:block;position:relative;width:min(310px,calc(100vw - 100px));margin:0 auto;grid-template-columns:none}
.stage-combat .combat.dread-combat.boss-combat .rune-board-controls{width:min(350px,calc(100vw - 100px))}
.stage-combat .combat.dread-combat .rune-board-controls>.guess-board{max-width:none;width:100%;margin:0}
.stage-combat .combat.dread-combat .rune-board-controls>.consumable-belt{position:absolute;left:calc(100% + 8px);top:0;width:38px}
.stage-combat .dread-combat .slime-boards{gap:10px}
.combat-notice-anchor{top:31px}
.dread-emblem .ability-sigil{filter:none}.dread-emblem small{font-size:5px;letter-spacing:.5px}
.notes-roster.dread-roster{grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}.dread-roster button{min-width:0}.dread-roster canvas{max-width:100%}
.notes-rule .dread-lesson{width:min(288px,100%);margin:9px auto 12px}.notes-rule .dread-lesson canvas{width:100%;height:auto;display:block;image-rendering:pixelated}
.notes-tabs{flex-wrap:wrap}.notes-tabs button{min-width:0;flex:1 1 40%;font-size:7px;padding:9px 4px}
/* Forged iron rail, restrained brass corners and a readable red vitality fill. */
.dread-combat .enemy-health{clip-path:polygon(0 5px,5px 5px,5px 0,calc(100% - 5px) 0,calc(100% - 5px) 5px,100% 5px,100% calc(100% - 5px),calc(100% - 5px) calc(100% - 5px),calc(100% - 5px) 100%,5px 100%,5px calc(100% - 5px),0 calc(100% - 5px));padding:4px 8px;background:linear-gradient(#b59a6b 0 1px,#59574a 1px 3px,#18201e 3px calc(100% - 3px),#69604a calc(100% - 3px),#a58b5c);box-shadow:inset 0 0 0 1px #141b18,inset 0 0 0 3px #3a3e34}
.dread-combat .vitality-pin{top:4px;width:4px;height:calc(100% - 8px);background:linear-gradient(#e0c48b,#7d6845 40%,#9c8052);box-shadow:0 0 0 1px #26271e}
.dread-combat .enemy-frame:before,.dread-combat .enemy-frame:after{content:'';position:absolute;top:5px;width:9px;height:9px;background:#7d6a49;border:1px solid #c4ac73;box-shadow:inset 0 0 0 2px #31382d;transform:rotate(45deg);z-index:6}.dread-combat .enemy-frame:before{left:1px}.dread-combat .enemy-frame:after{right:1px}
/* The six existing stones make room for exactly two more, at a stable tile size. */
.stage-combat .combat.dread-combat.dragon-dormant .guess-row>.tile:nth-child(-n+6){transform:translateX(calc(100% + 2px))}
.stage-combat .combat.dread-combat.dragon-awakening .guess-row>.tile:nth-child(-n+6){animation:dragon-six-slide 1.05s cubic-bezier(.22,.7,.25,1) both;animation-delay:calc(var(--dragon-age) + var(--row-index)*55ms)}
.stage-combat .combat.dread-combat.dragon-awakening .guess-row>.awakened-rune{animation:dragon-pair-arrives .9s cubic-bezier(.18,.75,.2,1) both;animation-delay:calc(var(--dragon-age) + 580ms + var(--row-index)*55ms + (var(--tile-index) - 6)*140ms)}
.dread-combat.dragon-awakening .dragon-forge{animation-delay:calc(var(--dragon-age) + 580ms + var(--row-index)*55ms + (var(--tile-index) - 6)*140ms);border-color:#a4d7ea;box-shadow:inset 0 0 8px #5d9dc355,0 0 7px #90d7e955}
@keyframes dragon-six-slide{from{transform:translateX(calc(100% + 2px))}to{transform:none}}
/* An empty chamber, a low tremor, then the small returning rival. */
.baronOmen{animation:baron-rumble 1.5s ease-in-out both}.baronOmen .combat-head,.baronApproach .combat-head{visibility:hidden}.baronOmen .trait-emblem,.baronApproach .trait-emblem{visibility:hidden}
@keyframes baron-rumble{0%,100%{translate:0 0}12%,42%,72%{translate:-2px 1px}20%,51%,80%{translate:3px -2px}28%,61%,90%{translate:-3px -1px}}
.baron-omen-copy{position:absolute;left:50%;top:43%;transform:translate(-50%,-50%);width:100%;text-align:center;pointer-events:none;color:#e6d4ab;animation:approaching-words 2.5s ease both;text-shadow:0 2px 5px #000}
.baron-omen-copy small{display:block;font:5px 'Knightle Quill';letter-spacing:2px;margin-bottom:12px}.baron-omen-copy strong{display:block;font:clamp(20px,6vw,30px) 'Knightle Herald';letter-spacing:2px}
@keyframes approaching-words{0%{opacity:0;filter:blur(4px);letter-spacing:8px}45%,80%{opacity:1;filter:none}100%{opacity:0;filter:none}}
.stage-combat .combat.baron-combat .combat-head{position:absolute;top:var(--baron-head-y,30%);left:var(--baron-head-x,50%);grid-column:auto;grid-row:auto;transform:translateX(-50%);width:205px;height:49px;z-index:4;padding:0;pointer-events:none}
.stage-combat .combat.baron-combat .combat-head .eyebrow{display:none}.stage-combat .combat.baron-combat .combat-head h1{font-size:17px;line-height:20px;letter-spacing:0;margin:0 0 3px;text-shadow:0 2px 3px #000}
.stage-combat .combat.baron-combat .enemy-frame{width:172px;max-width:100%;padding:0 4px}.baron-combat .enemy-health{height:12px!important;min-height:0;padding:3px 5px;filter:none}.baron-combat .enemy-health-trail{top:3px;bottom:3px;left:5px}.baron-combat .vitality-pin{top:3px;height:6px;width:2px}.baron-combat .enemy-frame:before,.baron-combat .enemy-frame:after{width:5px;height:5px;top:3px}.baron-combat .enemy-vitals{font-size:6px;line-height:9px;margin-top:3px}.baron-combat .threat{display:none}.baronRise .combat-head{animation:baron-crown-return 1.5s .8s both}.baronRise .enemy-health-fill{animation:baron-health-return 1.2s 1s both;transform-origin:left}
@keyframes baron-crown-return{from{opacity:0;translate:0 5px}to{opacity:1;translate:0 0}}@keyframes baron-health-return{from{transform:scaleX(0)}to{transform:scaleX(1)}}
.stage-combat .combat.baron-combat .combat-foot{grid-row:4}
/* Charred stones remain intact: soot at the edges, cracks, pale surviving letters. */
.charred-row .tile,.charred-row .tile.crit,.charred-row .tile.hit,.charred-row .tile.miss{background:linear-gradient(145deg,#343b3d,#111d23 58%,#30302b)!important;border-color:#655f50!important;box-shadow:inset 0 0 0 2px #10181c,inset 0 -4px #14191b!important;color:#efe3bf!important}
.charred-row .tile:before{background:repeating-linear-gradient(157deg,transparent 0 8px,#050e13aa 9px 10px,transparent 11px 14px)}
.cinder-coat{position:absolute;inset:1px;z-index:1;pointer-events:none;background:linear-gradient(0deg,#090c0ee6,transparent 25%,transparent 75%,#11171bd9),radial-gradient(ellipse at 7% 20%,#070d11 0 9%,transparent 12%),radial-gradient(ellipse at 90% 80%,#090e10 0 13%,transparent 16%);border-bottom:2px dotted #736e60;box-shadow:inset 1px 0 #7d6e4a44}
.charred-row .tile-letter{z-index:2!important;color:#eee1bf!important;text-shadow:0 1px #000}
/* Fractured frost breaks into individual facets instead of moving as one pane. */
.frozen-row .tile:after,.ice-released .tile:after{display:none!important}.tile-frost{position:absolute;inset:0;z-index:4;pointer-events:none;filter:drop-shadow(0 0 3px #81cbe288)}
.frost-shard{position:absolute;inset:0;background:linear-gradient(calc(105deg + var(--shard)*19deg),#d5f4ef,#78bad6 46%,#a0d9e5 49%,#4b8fb5);box-shadow:inset 0 0 0 1px #d0edf1}
.frost-shard:nth-child(1){clip-path:polygon(0 0,45% 0,51% 35%,0 48%)}.frost-shard:nth-child(2){clip-path:polygon(45% 0,100% 0,100% 45%,51% 35%)}.frost-shard:nth-child(3){clip-path:polygon(0 48%,51% 35%,40% 64%,0 100%)}.frost-shard:nth-child(4){clip-path:polygon(51% 35%,100% 45%,67% 74%,40% 64%)}.frost-shard:nth-child(5){clip-path:polygon(0 100%,40% 64%,67% 74%,55% 100%)}.frost-shard:nth-child(6){clip-path:polygon(67% 74%,100% 45%,100% 100%,55% 100%)}
.tile-frost svg{position:absolute;inset:0;width:100%;height:100%;opacity:.45}.frozen-row .tile-frost{animation:frost-settle .6s both;animation-delay:calc(var(--tile-index)*45ms)}
@keyframes frost-settle{0%{opacity:0;clip-path:inset(0 0 100%)}55%{opacity:1;clip-path:inset(0);filter:brightness(1.3)}100%{opacity:1;filter:none}}
.iceShatter .frost-shard{animation:frost-piece-fall 1.25s both;animation-delay:calc(var(--tile-index)*35ms + var(--shard)*19ms)}
@keyframes frost-piece-fall{0%,8%{transform:none;opacity:1}20%{transform:translate(calc((var(--shard) - 2.5)*2px),-5px);opacity:1}100%{transform:translate(calc((var(--shard) - 2.5)*18px),190px) rotate(calc((var(--shard) - 2)*32deg));opacity:0}}
.iceBurst .tile-frost{animation:frost-jitter .48s both}.iceBurst .frost-shard{animation:frost-piece-burst 1.1s .45s both}.iceShatter .tile-frost svg,.iceBurst .tile-frost svg{animation:frost-crack-flash .5s both}
@keyframes frost-jitter{0%,20%,40%,60%,80%{translate:-2px 0}10%,30%,50%,70%,90%{translate:2px 1px}100%{translate:0 0;filter:brightness(1.8)}}
@keyframes frost-piece-burst{0%{transform:none;opacity:1;filter:brightness(1.9)}100%{transform:translate(calc((var(--shard) - 2.5)*36px),calc(-80px + var(--shard)*32px)) rotate(calc((var(--shard) - 2)*42deg));opacity:0}}
@keyframes frost-crack-flash{0%,50%{opacity:1}100%{opacity:0}}
/* A weighted pick hits a faceted block, adding one visible crack with each hit. */
.ice-focus .ice-art{position:relative;height:142px}.ice-focus .ice-pick-art{width:162px;height:142px}.ice-focus .icepick{transform-origin:84px 31px}.ice-hit .icepick{animation:pick-swing94 .5s cubic-bezier(.3,.1,.7,1) both}.ice-hit .ice-art{animation:none}.ice-hit .ice-block{animation:block-hit94 .5s both}.ice-hit #timing-title{animation:ice-title-hit .4s both}.ice-miss #timing-title{color:#d6a28f;animation:miss-nudge .3s both}.ice-progress i{font-style:normal;color:#36505c;letter-spacing:4px}.ice-progress i.filled{color:#bceceb;text-shadow:0 0 5px #93c9de66}.ice-progress i.missed{color:#e29b84}.ice-progress em{font:7px 'Knightle Quill';font-style:normal;letter-spacing:0;color:#98b2ba}
@keyframes pick-swing94{0%{transform:translate(4px,-9px) rotate(32deg)}42%{transform:translate(5px,-12px) rotate(42deg)}63%{transform:translate(-9px,10px) rotate(-28deg)}78%{transform:translate(-5px,7px) rotate(-20deg)}100%{transform:none}}
@keyframes block-hit94{0%,60%{translate:0 0}65%{translate:2px 2px;filter:brightness(1.5)}76%{translate:-1px 0}100%{translate:0 0;filter:none}}
@keyframes ice-title-hit{0%{scale:.94}45%{scale:1.07;filter:brightness(1.5)}100%{scale:1;filter:none}}@keyframes miss-nudge{25%{translate:-3px}65%{translate:2px}100%{translate:0}}
.pick-chips{position:absolute;left:50%;top:57%;pointer-events:none}.pick-chips i{position:absolute;width:4px;height:3px;background:#bce7ee;opacity:0}.ice-hit .pick-chips i{animation:pick-chip .48s .3s both}
@keyframes pick-chip{0%{opacity:0;transform:none}8%{opacity:1}100%{opacity:0;transform:translate(calc((var(--chip) - 4)*7px),calc(-22px + var(--chip)*3px)) rotate(calc(var(--chip)*41deg))}}
.ice-focus[data-cracks='3'] .ice-shard{animation:block-shard-break .65s .32s both;transform-origin:center}.ice-shard.s0{--piece:-3}.ice-shard.s1{--piece:2}.ice-shard.s2{--piece:-2}.ice-shard.s3{--piece:1}.ice-shard.s4{--piece:3}.ice-shard.s5{--piece:-1}
@keyframes block-shard-break{to{transform:translate(calc(var(--piece)*9px),30px) rotate(calc(var(--piece)*11deg));opacity:0}}
.crushed-fragments{display:grid;grid-template-columns:repeat(6,1fr);gap:3px;overflow:visible}.crushed-fragments .crushed-stone{position:relative;display:block;clip-path:none;opacity:.55;background:none;border:0}.crushed-stone b{position:absolute;inset:0;background:linear-gradient(#8c8664,#414b37);clip-path:polygon(0 78%,24% 57%,45% 85%,70% 63%,100% 85%,100% 100%,0 100%)}
.crushing-now .crushed-fragments .crushed-stone{animation:none;opacity:1}.crushing-now .crushed-stone b{clip-path:polygon(0 0,100% 0,100% 100%,0 100%);box-shadow:inset 0 0 0 2px #91835e;animation:stomp-stone-break 1.4s .55s both}.crushing-now .crushed-stone b:nth-child(1){clip-path:polygon(0 0,65% 0,40% 55%,0 80%);--piece:-1}.crushing-now .crushed-stone b:nth-child(2){clip-path:polygon(65% 0,100% 0,100% 80%,40% 55%);--piece:1}.crushing-now .crushed-stone b:nth-child(3){clip-path:polygon(0 80%,40% 55%,100% 80%,100% 100%,0 100%);--piece:0}.crushing-now small{animation:stomp-label 1.4s .55s both}
@keyframes stomp-stone-break{0%{transform:none;opacity:1}12%{transform:translateY(2px);filter:brightness(1.5)}100%{transform:translate(calc(var(--piece)*12px),55px) rotate(calc(var(--piece)*35deg));opacity:0}}@keyframes stomp-label{0%,40%{opacity:0}100%{opacity:1}}
@media(orientation:landscape) and (max-height:500px){.stage-combat .combat.dread-combat .rune-board-controls,.stage-combat .combat.dread-combat.boss-combat .rune-board-controls{width:calc(100% - 46px);margin:0 40px 0 6px}.stage-combat .combat.dread-combat .rune-board-controls>.consumable-belt{width:32px;left:calc(100% + 5px)}.combat-notice-anchor{top:24px}.ice-focus .ice-art{height:85px}.ice-focus .ice-pick-art{height:85px;width:100px}.stage-combat .combat.baron-combat .combat-head{width:180px}.stage-combat .combat.baron-combat .combat-head h1{font-size:14px}.stage-combat .combat.baron-combat .enemy-frame{width:145px}.notes-tabs button{font-size:6px;padding:6px 4px}}
@media(prefers-reduced-motion:reduce){.dread-combat.dragon-awakening .tile,.baronOmen,.baron-omen-copy,.baronRise .combat-head,.baronRise .enemy-health-fill,.ice-hit .icepick,.ice-hit .ice-block,.ice-hit #timing-title,.ice-miss #timing-title{animation:none!important}.iceShatter .frost-shard,.iceBurst .frost-shard,.crushing-now .crushed-stone b{animation-duration:.15s!important}.pick-chips{display:none}}

.charred-row .tile>small{visibility:hidden}

/* Requirements occupy their own fixed space directly above the action. */
.armory-preview-copy.armor-copy:has(.armory-power){grid-template-rows:30px minmax(0,1fr) 64px 36px;gap:3px}
.armory-preview-copy.armor-copy:has(.armory-power) h2{height:30px}
.armory-preview-copy.armor-copy:has(.armory-power) .armory-status{height:64px;font:11px/1.25 Georgia,serif;color:#d6c599;letter-spacing:0;white-space:normal;overflow-wrap:normal;text-align:center;padding:0 2px}
.armory-preview-copy.armor-copy .armory-power{font-size:11px;line-height:1.3}
@media(max-width:350px),(orientation:landscape) and (max-height:500px){.armory-preview-copy.armor-copy:has(.armory-power){grid-template-rows:28px minmax(0,1fr) 61px 32px}.armory-preview-copy.armor-copy:has(.armory-power) .armory-status{height:61px;font-size:10px}.armory-preview-copy.armor-copy .armory-power{font-size:10px}}

.dread-impact-copy{position:absolute;left:50%;bottom:16px;translate:-50% 0;width:max-content;max-width:90%;z-index:5;pointer-events:none;padding:6px 10px;background:#12221edb;border-top:1px solid #d2bf7855;color:#f6dfa4;text-align:center;font:12px/1.25 'Knightle Herald',Georgia;letter-spacing:.6px;text-shadow:0 2px #000;animation:dread-impact-read 2.4s both}.dread-impact-copy.backstab{color:#f1b6a8}.dread-impact-copy.light-heal{color:#f6efbc}
@keyframes dread-impact-read{0%{opacity:0;transform:translateY(8px) scale(.95)}15%,85%{opacity:1;transform:none}100%{opacity:.8;transform:none}}
