/* Living enemies, readable curses, and impact-driven presentation. */
.home .legacy-rank{flex-direction:column;gap:4px;position:relative;padding:0 8px 6px}
.home .legacy-rank .rank-caption{display:flex;align-items:baseline;justify-content:center;gap:7px;font:8px 'Knightle Quill';letter-spacing:2px;color:#b9aa88}
.home .legacy-rank .rank-caption b{font:24px 'Knightle Herald';letter-spacing:0;color:#f1d59a;text-shadow:0 2px #161c16}
.home .legacy-rank>strong{font:12px 'Knightle Herald';letter-spacing:2px;color:#e2c797}
.home .legacy-rank:after{content:'◆';position:absolute;bottom:-4px;left:calc(50% - 3px);font:6px Georgia;color:#b89b60}
.home .level-panel .meter{height:5px;margin-top:6px;border:0;background:#162018;box-shadow:0 0 0 1px #ae975a55}

/* The fill is driven by one persistent tween, not by each HTML redraw. */
.enemy-frame{position:relative;padding:0 6px;filter:drop-shadow(0 3px 2px #0008)}
.enemy-health{position:relative;overflow:visible;height:var(--hp-thickness);padding:4px 7px;background:linear-gradient(#927858 0 2px,#2f3028 2px 5px,#101511 5px calc(100% - 4px),#665238 calc(100% - 4px));box-shadow:inset 0 0 0 1px #1a1f19;clip-path:polygon(0 6px,6px 6px,6px 2px,13px 2px,13px 0,32% 0,32% 2px,34% 2px,34% 0,calc(100% - 12px) 0,calc(100% - 12px) 3px,calc(100% - 5px) 3px,calc(100% - 5px) 6px,100% 6px,100% calc(100% - 5px),calc(100% - 7px) calc(100% - 5px),calc(100% - 7px) 100%,64% 100%,64% calc(100% - 2px),62% calc(100% - 2px),62% 100%,8px 100%,8px calc(100% - 3px),0 calc(100% - 3px))}
.enemy-health:before{inset:3px 7px;background:#0a110e;z-index:0;box-shadow:inset 0 1px 4px #000}
.enemy-health-fill,.boss-health .enemy-health-fill{position:relative;z-index:2;height:100%;transition:none;transform-origin:left;background:linear-gradient(0deg,#6d2827,#a94636 55%,#d37c58 80%,#ecaa79);box-shadow:inset 0 1px #f2c78b88,inset 0 -2px #3d1d1d}
.enemy-health-trail{position:absolute;left:7px;top:4px;bottom:4px;background:#e3be7d;z-index:1;opacity:.7}
.enemy-health .health-cuts{z-index:3;inset:4px 8px;background:repeating-linear-gradient(105deg,transparent 0 28px,#1e171774 29px 30px,transparent 31px 50px);opacity:.6}
.enemy-health .health-scars{z-index:4;background:linear-gradient(176deg,transparent 27%,#fee1ae28 28% 32%,transparent 33% 62%,#080d1559 63% 66%,transparent 67%);opacity:1}
.vitality-pin{position:absolute;z-index:5;top:4px;width:5px;height:calc(100% - 8px);background:linear-gradient(90deg,#3e3b2b,#d0ac70,#665439);box-shadow:0 1px #030a07}
.vitality-pin.left{left:3px}.vitality-pin.right{right:3px}
.boss-health{border:0;padding:5px 9px;background:linear-gradient(#e0b566 0 2px,#695235 2px 5px,#241c17 5px calc(100% - 4px),#aa783e calc(100% - 4px));filter:drop-shadow(0 0 4px #d17b2933)}
.boss-health .enemy-health-fill{background:linear-gradient(#ffe2a0,#d6743d 22%,#a13d28 60%,#6b2521);box-shadow:inset 0 2px #ffd48877,inset 0 -2px #3c2018}
.boss-health .enemy-health-trail{top:5px;bottom:5px;left:9px}.boss-health .vitality-pin{width:6px}
.enemy-vitals b,.knight-status b[data-player-number]{font:inherit;color:inherit}
.intro-bar .enemy-health{animation:unfurl-vitality 1.4s cubic-bezier(.23,.7,.3,1) both}
.intro-bar .enemy-vitals{animation:scene-arrival 1.4s ease both}
@keyframes unfurl-vitality{from{clip-path:inset(0 100% 0 0);opacity:.2}to{clip-path:inset(0);opacity:1}}
.turn-clock-track{height:4px;bottom:-2px;background:#0d1713;border-top:1px solid #a18a4c55;border-bottom:1px solid #1b2218;overflow:visible}
.turn-clock-track i{transition:none;background:linear-gradient(#d4c18a,#967743);box-shadow:0 0 5px #c4a95a22;will-change:transform;position:relative}
.turn-clock-track:before,.turn-clock-track:after{content:'';position:absolute;top:-2px;width:3px;height:7px;background:#927b4c}
.turn-clock-track:before{left:-3px}.turn-clock-track:after{right:-3px}.clock-paused{opacity:.65}

/* Slime clings to the perimeter. Match color and match symbol remain visible. */
.tile.gooped{color:#e5e4c5;text-shadow:1px 2px #17241c}
.tile.gooped.miss{color:#c5cabe}.tile.gooped.hit{color:#ffe3a2}.tile.gooped.crit{color:#e3ffd5}
.tile-letter{position:relative;z-index:3;display:grid;place-items:center;pointer-events:none}
.goop-history .tile-letter{opacity:.72}.goop-active .tile-letter{opacity:.9}
.tile.gooped small{opacity:1;z-index:7;text-shadow:0 1px 2px #000}
.tile.gooped .slime-coat,.current .slime-coat{inset:-2px -1px -3px;z-index:4;border:0;outline:none;pointer-events:none;clip-path:none;border-radius:5px 4px 7px 3px;background:linear-gradient(145deg,#b5ca6b80,transparent 27% 68%,#547d333b),linear-gradient(180deg,#90b34e9c 0 3px,#759c4155 3px 5px,transparent 6px calc(100% - 3px),#638b3a77 calc(100% - 3px));box-shadow:inset 2px 0 #95b55750,inset -2px -1px #4a742b66;animation:slime-catches 1s cubic-bezier(.16,.72,.27,1) both;animation-delay:var(--goop-delay)}
.slime-coat i{left:5%;top:4px;width:4px;height:5px;border-radius:0 0 4px 4px;background:#9abc5c7a;box-shadow:1px 1px #365b3133;animation:goo-breath 3.1s ease-in-out infinite}
.slime-coat i:nth-child(2){left:83%;top:0;width:4px;height:10px;animation-delay:-1s}
.slime-coat i:nth-child(3){left:14%;top:78%;width:3px;height:4px;animation-delay:-2s}
.slime-coat .goop-drip{left:25%;bottom:-4px;width:3px;height:6px;background:#89a84d7a;border-radius:0 0 3px 3px;animation:goo-drip 3.4s ease-in-out infinite}
.slime-coat.goop-origin:before{content:'';position:absolute;left:10%;top:-1px;right:13%;height:5px;border-radius:50%;background:#bbd67d9c;animation:slime-origin-splash 1.1s ease-out both;animation-delay:var(--goop-delay)}
.slime-coat.goop-origin:after{content:'';position:absolute;inset:-6px;border:3px dotted #b2d36c;animation:goo-splashes 1.1s ease-out both;animation-delay:var(--goop-delay)}
.guess-row:not(:last-child) .gooped:before{display:none}.goop-waiting .slime-coat{opacity:.7}
@keyframes slime-catches{0%{opacity:0;transform:translateY(-45px) scale(.3,.6)}30%{opacity:1;transform:translateY(-9px) scale(.65,1.2)}45%{transform:translateY(2px) scale(1.18,.75)}65%{transform:translateY(-1px) scale(.95,1.06)}100%{transform:none}}
@keyframes slime-origin-splash{0%{transform:translateY(-45px) scale(.4);opacity:0}30%{opacity:1;transform:translateY(-12px)}50%{transform:translateY(0) scale(1.4,1.8)}100%{transform:none;opacity:.65}}
@keyframes goo-splashes{0%,28%{opacity:0;transform:scale(.4)}45%{opacity:.9}100%{opacity:0;transform:scale(1.85) translateY(9px)}}
@keyframes goo-breath{50%{opacity:.6;transform:scaleY(1.2)}}@keyframes goo-drip{0%,100%{transform:scaleY(.8)}60%{transform:scaleY(1.3)}}

/* Notices sit to the left of the creature, below its name and vitality. */
#achievement-toast{top:80px;left:max(5px,env(safe-area-inset-left));width:210px;max-width:55vw;padding:8px 5px 8px 9px;gap:7px;background:linear-gradient(100deg,#29291ff2,#141c18eb);border:0;border-left:2px solid #bcab76;border-radius:2px;box-shadow:0 3px 16px #0005;transform:translateX(-12px);pointer-events:none}
#achievement-toast.show{transform:translateX(0);pointer-events:auto}
body:has(.stage-combat) #achievement-toast{top:var(--notice-top,178px)}
#achievement-toast .notice-seal{font-size:17px;min-width:13px;width:13px;height:22px;align-self:start}
#achievement-toast>div{min-width:0;gap:3px}#achievement-toast small{font-size:5px;letter-spacing:1px}
#achievement-toast strong{font:10px/1.35 'Knightle Herald';letter-spacing:.3px;color:#e5d4a7}
#achievement-toast span{font:italic 10px/1.2 Georgia;color:#c0b795}
#achievement-toast button{min-width:24px;min-height:32px;padding:0;font-size:16px;align-self:center}

/* Keys transmute in place, once. No rearrangement or Latin flashes on attacks. */
.wizard-weave .cipher-symbol{animation:none}
.combat-entering .cipher-human{animation:letters-unravel 3.6s steps(1) both;animation-delay:var(--cipher-age)}
.combat-entering .cipher-morph{animation:ink-transmutes 3.6s steps(1) both;animation-delay:var(--cipher-age)}
.combat-entering .cipher-symbol{animation:runes-settle 3.6s ease both;animation-delay:var(--cipher-age)}
@keyframes letters-unravel{0%,48%{opacity:1;font-family:'Knightle Quill';transform:none}52%{font-family:Georgia;transform:skewX(-15deg);color:#efd09b}57%{font-family:monospace;transform:scaleX(-1)}62%{font-family:'Knightle Herald';transform:translateY(-2px)}67%{transform:scaleY(-1)}72%,100%{opacity:0}}
@keyframes ink-transmutes{0%,50%{opacity:0}54%{opacity:.65;transform:scaleX(-1)}61%{transform:scaleY(-1);color:#e9b398}68%{transform:skewX(20deg)}75%{opacity:.9;transform:scale(.8,1.15)}82%,100%{opacity:0}}
@keyframes runes-settle{0%,76%{opacity:0;filter:drop-shadow(0 0 7px #f6e1a9)}92%{opacity:1}100%{opacity:1;filter:none}}
.inscription{min-height:25px}.combat-hint{text-align:center;max-width:440px;line-height:1.35}

/* Cumulative execution power climbs with each rune; actual stats stay exact. */
.tile.execution-rune .rune-damage{font-size:calc(26px + var(--tile-index)*4px);color:hsl(calc(48 + var(--tile-index)*58) 90% 79%);text-shadow:2px 3px #14211b,0 0 15px currentColor;animation-name:execution-number}
.tile.execution-rune .rune-spark{width:4px;height:5px;background:hsl(calc(48 + var(--tile-index)*58) 90% 78%);box-shadow:0 0 8px currentColor}
.tile.execution-rune.landed-rune{animation-name:execution-tile}
@keyframes execution-number{0%{opacity:0;transform:translate(-50%,5px) scale(.4)}12%{opacity:1;transform:translate(-50%,-16px) scale(1.4)}30%{transform:translate(-50%,-29px) scale(1)}75%{opacity:1}100%{opacity:0;transform:translate(-50%,-83px) scale(.9)}}
@keyframes execution-tile{0%{filter:brightness(2.3);transform:scale(1.17) translateY(-4px)}20%{transform:translateX(-3px)}35%{transform:translateX(3px)}55%{transform:translateX(-1px)}100%{filter:none;transform:none}}
/* This overlay is an app sibling: a shaking battle panel cannot clip it. */
.execution-cinema{background:transparent;overflow:hidden}
.execution-charge{background:radial-gradient(ellipse,#101d1177,transparent 68%)}
.execution-impact .execution-light{background:radial-gradient(ellipse at 50% 43%,#fff8d8 0,#fff2b88a 9%,#c8f1d633 27%,transparent 68%)}
.execution-impact .execution-prism{-webkit-mask-image:radial-gradient(ellipse,transparent 8%,#000 32%,transparent 72%);mask-image:radial-gradient(ellipse,transparent 8%,#000 32%,transparent 72%)}
.execution-sigil{-webkit-mask-image:radial-gradient(circle,transparent 14%,#000 16% 17%,transparent 20% 52%,#000 54% 58%,transparent 61%)}
.execution-impact .execution-words{animation:execution-hold 2.4s ease-out both}
.execution-power{display:flex;flex-direction:column;gap:5px;margin-top:20px}
.execution-power b{font:bold clamp(45px,9vw,90px)/1 'Knightle Herald';background:linear-gradient(100deg,#ffe89c,#eab6fa,#99f4e0,#f9e7a1);background-size:250% 100%;background-clip:text;-webkit-background-clip:text;color:transparent;filter:drop-shadow(2px 3px 0 #17221b);text-shadow:none;animation:power-spectrum 1.8s linear infinite}
.execution-power span{font:7px 'Knightle Quill';letter-spacing:4px;color:#e6d7b7}
@keyframes power-spectrum{to{background-position:250% 50%}}@keyframes execution-hold{0%{opacity:0;transform:scale(.7)}12%{opacity:1;transform:scale(1.12)}25%,85%{opacity:1;transform:none}100%{opacity:0;transform:translateY(-10px)}}
@media(max-width:700px){.home .legacy-rank .rank-caption{font-size:7px}.home .legacy-rank .rank-caption b{font-size:23px}.home .legacy-rank>strong{font-size:10px}#achievement-toast{width:180px;max-width:47vw;padding:7px 3px 7px 7px;gap:5px}#achievement-toast strong{font-size:9px}#achievement-toast span{font-size:9px}.execution-power{margin-top:16px}.execution-words{top:29%}.combat-hint{min-height:27px}}
@media(prefers-reduced-motion:reduce){.tile.gooped .slime-coat,.slime-coat *,.tile.execution-rune,.tile.execution-rune .rune-damage,.execution-power b{animation:none!important}.slime-coat.goop-origin:before,.slime-coat.goop-origin:after{display:none}.execution-cinema{background:radial-gradient(ellipse,#0b150ebb,transparent 80%)}.execution-impact .execution-words{animation:none;opacity:1}.intro-bar .enemy-health{animation:none}}

/* The battle flexes before controls enter the reserved advertisement strip. */
@media(min-width:701px){.combat .battle-wrap{min-height:110px}.combat-foot{flex-shrink:0}}
.curse-vial{display:none}

body:has(.stage-combat) #achievement-toast.show{pointer-events:auto}

.execution-cut{-webkit-mask-image:radial-gradient(ellipse,#000 15%,transparent 72%);mask-image:radial-gradient(ellipse,#000 15%,transparent 72%)}
