#battleVeil{z-index:25;background:#050910e8;backdrop-filter:blur(5px)}
#battleVeil .battle-modal{width:min(1240px,calc(100vw - 24px));max-height:97vh;overflow:auto;padding:18px;background:linear-gradient(135deg,#18242c,#0a1119);border:1px solid #8f7953;color:#e8e0d1;border-radius:12px;box-shadow:0 24px 90px #000b}
#battleVeil h2{margin:5px 0;font-size:22px;color:#efe4cd}#battleVeil .eyebrow{color:#aa9471;font-size:11px;letter-spacing:.08em}.battle-turn-hint{font-size:12px;color:#c0c7ce;margin:8px 0 12px;min-height:18px}
#battleBoard{position:relative;height:clamp(310px,47vh,490px);overflow:hidden;border:1px solid #84795880;border-radius:8px;background:#253340;isolation:isolate}
.combat-healing-light{position:absolute;z-index:12;width:5px;height:5px;border-radius:50%;background:#e8ffd0;box-shadow:0 0 5px 2px #a7ef9b,0 0 12px #ffdf89;pointer-events:none}
.combat-shield-block{position:absolute;left:58%;top:28%;width:58%;aspect-ratio:1;z-index:14;pointer-events:none;filter:drop-shadow(0 0 5px #eac879)}
.enemy .combat-shield-block{left:auto;right:58%}
.combat-shield-block svg,.combat-shield-block img{display:block;width:100%;height:100%;object-fit:contain;overflow:hidden}
.battle-scenery{position:absolute;inset:0;pointer-events:none;background:#253340;transform:scale(var(--scenery-zoom,1));transform-origin:50% 89%;z-index:-2}
.scenery-art{display:block;width:100%;height:100%;object-fit:cover;object-position:center bottom;pointer-events:none}
.battle-atmosphere{position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,#07121a18,#06121c33 55%,#09151c55),linear-gradient(90deg,#1a2a4028,transparent,#30121d28)}
.combat-unit{position:absolute;display:block;width:clamp(70px,10vw,145px);height:clamp(150px,25vh,225px);padding:0;transform:translate(-50%,-100%) scale(var(--figure-scale,1));transform-origin:center bottom;background:none;border:none;border-radius:0;color:white;cursor:default;overflow:visible;opacity:1;transition:opacity .3s}
.combat-unit:disabled{opacity:1}.unit-motion{position:absolute;inset:0;display:block;transform-origin:center bottom}.unit-art{width:100%;height:100%;object-fit:contain;object-position:center bottom;display:block;pointer-events:none;filter:drop-shadow(0 3px 2px #0008)}
.unit-name{position:absolute;z-index:4;bottom:100%;left:50%;transform:translateX(-50%);padding:1px 3px;margin-bottom:5px;font:900 clamp(10px,1.1vw,14px)/1.2 system-ui,sans-serif;white-space:nowrap;color:#6ab8ff;-webkit-text-stroke:3px #05080c;paint-order:stroke fill;text-shadow:1px 1px 1px #000,-1px -1px 1px #000}
.enemy .unit-name{color:#ff514c}.unit-shadow{position:absolute;bottom:-3px;left:22%;width:56%;height:10px;border-radius:50%;background:#0008;filter:blur(3px)}
.unit-selection{display:none;position:absolute;bottom:-13px;left:50%;transform:translateX(-50%);color:#ecc776;text-shadow:0 0 6px #000}.combat-unit.acting .unit-selection{display:block}.combat-unit.targetable{cursor:crosshair}.combat-unit.targetable:hover .unit-art,.combat-unit.targetable:focus-visible .unit-art{filter:drop-shadow(0 0 7px #e4c376) brightness(1.1)}.combat-unit.targetable:hover .unit-name{text-decoration:underline}.combat-unit:focus-visible{outline:2px solid #cfac62;outline-offset:4px}.combat-unit.defeated{opacity:0;visibility:hidden;pointer-events:none}
#battleCommandBar{display:block;margin-top:10px}.combat-order{display:flex;gap:6px;align-items:center;overflow-x:auto;padding:7px 0;border-bottom:1px solid #50606b66;font-size:10px;color:#b5bdc3;white-space:nowrap}.order-unit{padding:4px 8px;background:#192c3a;border-radius:4px;border:1px solid #58728280;color:#87b6da}.order-unit.enemy{background:#39242b;color:#e99892;border-color:#84494d88}.order-unit.current{border-color:#efd48d;color:#fff1c8}.order-unit b{font-size:9px;font-weight:400;margin-left:4px}
.combat-controls{margin-top:14px}
.enemy-overhead-hp{position:absolute;bottom:calc(100% + 3px);left:50%;transform:translateX(-50%);width:76px;height:6px;overflow:hidden;border:1px solid #0b0b0e;border-radius:3px;background:#16161bd9;box-shadow:0 1px 3px #000a;pointer-events:none}.enemy-overhead-hp[hidden]{display:none}.enemy-overhead-hp i{display:block;height:100%;background:linear-gradient(#f85d5b,#a52231);transition:width .15s}
.enemy.large-health-bar .unit-name{visibility:hidden}
.boss-health-panel{position:absolute;z-index:175;top:10px;left:50%;transform:translateX(-50%);width:min(920px,calc(100% - 36px));display:grid;gap:5px}.boss-health-panel[hidden]{display:none}.boss-hp-row{display:flex;position:relative;align-items:center;width:100%;padding:0;gap:0;background:none;border:none;cursor:default;color:#fff;opacity:1}.boss-hp-row:disabled{opacity:1}.boss-hp-row:not(:disabled){cursor:crosshair}.boss-hp-row.down{opacity:.45}
.boss-hp-face{position:relative;flex:0 0 38px;height:38px;border:2px solid #9a845b;border-radius:5px;overflow:hidden;background:#101820;box-shadow:0 2px 5px #0009;z-index:2}.boss-hp-face img{position:absolute;max-width:none;max-height:none;object-fit:fill;pointer-events:none}
.boss-hp-track{position:relative;display:block;flex:1;height:27px;margin-left:-1px;overflow:hidden;border:2px solid #a49473;border-radius:0 6px 6px 0;background:linear-gradient(#281a27,#080d18);box-shadow:0 2px 6px #000b,inset 0 0 0 1px #000}.boss-hp-track .hp-fill{position:absolute;inset:0 auto 0 0;background:linear-gradient(#fa635c 0,#d13236 40%,#a0182c 75%,#e84949);transition:width .15s}.boss-hp-track::after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(90deg,transparent 0,transparent calc(10% - 1px),#18091466 calc(10% - 1px),#18091466 10%);pointer-events:none}.boss-hp-name,.boss-hp-percent{position:absolute;z-index:1;top:50%;transform:translateY(-50%);font-size:12px;text-shadow:1px 1px 2px #000,-1px -1px 2px #000;line-height:1;white-space:nowrap}.boss-hp-name{left:10px;max-width:75%;overflow:hidden;text-overflow:ellipsis;font-weight:800}.boss-hp-percent{right:10px;font-weight:900}.boss-hp-statuses{position:absolute;top:100%;right:0;display:flex;gap:3px}
@media(max-width:700px){.boss-health-panel{top:7px;width:calc(100% - 16px);gap:3px}.boss-hp-face{flex-basis:29px;height:29px}.boss-hp-track{height:22px}.boss-hp-name,.boss-hp-percent{font-size:10px}.enemy-overhead-hp{width:58px;height:5px}}
.combat-controls{display:grid;grid-template-columns:1fr 170px;gap:14px;align-items:stretch}.combat-party{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px;align-items:stretch}.combat-portrait{position:relative;min-width:0;max-width:165px;padding:5px;background:linear-gradient(145deg,#273742,#101b23);border:1px solid #677480;border-radius:7px;color:#ebe2d1;text-align:left;cursor:default}.combat-portrait:disabled{opacity:1}.combat-portrait.current{border-color:#dfbb71;box-shadow:inset 0 0 0 1px #dfbb7180,0 0 16px #dfbb7122}.combat-portrait:not(:disabled){cursor:pointer}.combat-portrait:not(:disabled):hover{border-color:#99dfa4}.combat-portrait.down{opacity:.4;filter:grayscale(1)}.combat-portrait img{width:100%;height:clamp(60px,10vh,90px);object-fit:cover;object-position:center 28%;border-radius:3px}.combat-portrait strong{display:block;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;font-size:11px;margin-top:4px}.combat-portrait small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:9px;color:#aaafb1;margin:3px 0}
.portrait-statuses{position:absolute;bottom:100%;left:2px;display:flex;gap:3px;margin-bottom:3px;z-index:2}.combat-status{display:inline-flex;align-items:center;gap:1px;border:1px solid #6bb790;background:#183c32;color:#d4f7e0;border-radius:3px;padding:2px 3px;font-size:11px;line-height:1}.combat-status.debuff{border-color:#c56862;background:#4c212d;color:#ffd4ce}.combat-status sup{font-size:8px}
.combat-meter-row{display:grid;grid-template-columns:20px 1fr;margin-top:3px;gap:2px;font-size:8px}.combat-meter-row b{font-size:8px;text-align:right;font-weight:400;color:#c8d2d7}.combat-meter{grid-column:1/-1;height:5px;border-radius:3px;background:#33414a;overflow:hidden}.combat-meter i{height:100%;display:block;background:linear-gradient(90deg,#438456,#9bcc71);transition:width .15s}.combat-meter.mp i{background:linear-gradient(90deg,#376b9c,#79b8dd)}.combat-gauge{height:2px;background:#37424b;margin-top:5px}.combat-gauge i{height:100%;background:#dfc487;display:block}
.combat-commands{display:flex;flex-direction:column;gap:7px}.combat-command{position:relative;display:flex;align-items:center;gap:8px;flex:1;min-height:42px;padding:10px 12px;border:1px solid #74818b;border-radius:6px;color:#e4e7e7;background:linear-gradient(135deg,#304350,#15242e);font-size:13px;font-weight:700;cursor:pointer}.combat-command.primary{border-color:#b69a60;background:linear-gradient(135deg,#6c5734,#382e21);color:#fff0c9}.combat-command:hover:not(:disabled){filter:brightness(1.3)}.combat-command:disabled{opacity:.45;cursor:default}.combat-command span{font-size:20px}.combat-command kbd{margin-left:auto;color:#b4b4ad;font-size:9px}.combat-menu:empty{display:none}.combat-menu{margin-top:10px;background:#0e1922;border:1px solid #4b606d;border-radius:7px;padding:10px}.combat-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin-top:7px}.combat-options button{display:flex;flex-direction:column;gap:5px;text-align:left;padding:10px;background:#253441;color:#ecdfc2;border:1px solid #647480;border-radius:5px;cursor:pointer}.combat-options button:disabled{opacity:.45;cursor:default}.combat-options button span,.combat-options button small{font-size:10px;color:#c0cbd1}.combat-cancel{border:1px solid #81898e;border-radius:4px;background:#263540;color:#e8e0cf;padding:4px 12px;cursor:pointer}.target-message{font-size:12px;color:#e6ca88;margin:8px 0 0}
.battle-action-panel{position:absolute;z-index:180;left:50%;bottom:12px;transform:translateX(-50%);width:min(620px,calc(100% - 24px));box-sizing:border-box;padding:10px;background:#0b1724ee;border:1px solid #a58b58;border-radius:9px;box-shadow:0 8px 28px #0009;color:#ecdfc2}
.battle-action-panel[hidden]{display:none}.battle-action-panel:has(>.combat-cancel){width:auto;padding:5px}
.battle-skill-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px;font-size:12px}.battle-skill-heading>div{display:flex;align-items:center;gap:10px}.battle-skill-heading button{color:#ead9b2;background:#25394a;border:1px solid #807759;border-radius:4px;padding:3px 10px;cursor:pointer}.battle-skill-heading button:disabled{opacity:.3;cursor:default}
.battle-skill-icons{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:6px}.battle-skill-icons>p{grid-column:1/-1;margin:6px;text-align:center;font-size:12px}
.battle-skill-tile{display:flex;flex-direction:column;align-items:center;gap:4px;min-width:0;padding:7px 3px;border:1px solid #98835b;border-radius:6px;background:linear-gradient(145deg,#344858,#142330);color:#eadfc9;cursor:pointer}.battle-skill-tile:hover:not(:disabled),.battle-skill-tile:focus-visible{border-color:#f1d289;box-shadow:0 0 10px #dfbb7144;outline:none}.battle-skill-tile:disabled{opacity:.5;cursor:default}.battle-skill-tile .battle-skill-symbol{font-size:28px;line-height:34px}.battle-skill-tile strong{font-size:11px;line-height:1.3;overflow-wrap:anywhere}.battle-skill-tile>span:not(.battle-skill-symbol),.battle-skill-tile small{font-size:10px;line-height:1.3}.battle-skill-tile small{color:#ddbc7a;overflow-wrap:anywhere}
.unit-target-mark{display:none;position:absolute;left:50%;top:45%;transform:translate(-50%,-50%);width:54px;height:54px;border:2px solid #ffb2a8aa;border-radius:50%;background:#db403233;box-shadow:0 0 0 3px #21080755,0 0 12px #ea62545c;z-index:8;pointer-events:none}.unit-target-mark i::before,.unit-target-mark i::after{content:"";position:absolute;background:#ffe1d7bb}.unit-target-mark i::before{width:2px;height:68px;left:26px;top:-7px}.unit-target-mark i::after{height:2px;width:68px;top:26px;left:-7px}.unit-target-mark b{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:grid;place-items:center;min-width:22px;height:22px;background:#19151bcc;border-radius:50%;font-size:14px;color:#fff4dc;text-shadow:0 1px 2px #000}.targetable .unit-target-mark{display:block}.player .unit-target-mark{border-color:#8ed3ffbb;background:#377dd533;box-shadow:0 0 12px #4d9ee966}.targetable:hover .unit-target-mark{background:#e9554f66;box-shadow:0 0 14px #ffa290aa}
@media(max-width:700px){.battle-action-panel{bottom:8px;padding:7px;width:calc(100% - 12px)}.battle-skill-icons{gap:3px}.battle-skill-tile{padding:4px 2px}.battle-skill-tile strong{font-size:9px}.battle-skill-tile .battle-skill-symbol{font-size:23px;line-height:27px}.battle-skill-tile>span:not(.battle-skill-symbol),.battle-skill-tile small{font-size:8px}.battle-skill-heading{margin-bottom:5px;font-size:10px}.unit-target-mark{width:40px;height:40px}.unit-target-mark i::before{left:19px;height:52px;top:-6px}.unit-target-mark i::after{top:19px;width:52px;left:-6px}}
.combat-float{position:absolute;z-index:200;left:50%;top:35%;font-size:22px;font-weight:900;white-space:nowrap;pointer-events:none;-webkit-text-stroke:3px #111;paint-order:stroke fill;text-shadow:0 2px 5px #000}.combat-float.damage{color:#ffe8bb}.combat-float.heal{color:#8ee3a3}.combat-float.skill{top:5%;font-size:14px;color:#a8dfff}.combat-float.miss{color:#bbc8d7;font-size:16px}.combat-impact{position:absolute;left:30%;top:40%;width:45%;height:24%;background:linear-gradient(130deg,transparent 32%,#fff4c1 45%,#ec9940 50%,transparent 61%);filter:drop-shadow(0 0 6px #ed994f);pointer-events:none;z-index:150}.combat-projectile{position:absolute;width:40px;height:3px;background:#e9c995;box-shadow:0 0 5px #ffeab7;z-index:150;pointer-events:none}.combat-projectile.magic{height:16px;width:16px;border-radius:50%;background:#d1efff;box-shadow:0 0 10px 5px #69a8ea}
@media(max-width:700px){#battleVeil .battle-modal{padding:10px;width:calc(100vw - 12px)}#battleBoard{height:clamp(260px,40vh,370px)}.combat-unit{width:12vw;min-width:48px;height:clamp(120px,20vh,170px)}.combat-controls{grid-template-columns:1fr;gap:8px}.combat-commands{flex-direction:row}.combat-command{font-size:11px;min-height:36px;padding:7px;justify-content:center}.combat-command span{font-size:14px}.combat-command kbd{display:none}.combat-portrait{padding:3px}.combat-portrait img{height:65px}.combat-portrait strong{font-size:9px}.combat-portrait small{font-size:8px}.combat-party{gap:4px}.combat-options{grid-template-columns:repeat(2,minmax(0,1fr))}.enemy-vital{font-size:8px;padding:3px 5px}.unit-name{font-size:9px}#battleVeil h2{font-size:18px}}
/* Portraits are independent upper-body artwork, never combat figures. */
.combat-projectile.arrow::after{content:"";position:absolute;right:-3px;top:-3px;border-left:8px solid #e9c995;border-top:4px solid transparent;border-bottom:4px solid transparent}
.combat-projectile.arrow::before{content:"";position:absolute;left:0;top:-2px;width:9px;height:7px;background:#e9c995;clip-path:polygon(0 0,100% 35%,100% 65%,0 100%,30% 50%)}
#portrait .portrait-sheet,.create-portrait img{object-fit:cover!important;object-position:center 24%!important;padding:0!important;transform:none!important}#portrait{background:#101c26!important}.create-layout .create-portrait img{left:0!important;width:100%!important;height:100%!important;aspect-ratio:auto!important}
/* Grounded image boxes follow each full illustration's actual aspect ratio. */
#battleVeil .battle-modal{box-sizing:border-box;width:min(1240px,100%);max-width:100%;min-width:0}
.combat-unit{height:auto;width:clamp(55px,10vw,138px)}.unit-motion{position:relative;inset:auto}.unit-art{height:auto;object-fit:contain}.combat-unit.single{width:clamp(125px,19vw,190px)}
@media(max-width:700px){#battleVeil .battle-modal{width:100%}.combat-unit{height:auto;width:clamp(50px,11vw,78px)}.combat-unit.single{width:clamp(110px,22vw,150px)}}

.enemy-vital:disabled{opacity:1;cursor:default}.enemy-vital:not(:disabled){cursor:pointer;border-color:#d7b679}.enemy-vital:not(:disabled):hover{background:#573537;border-color:#ffe1a0}.enemy-vital.down:disabled{opacity:.45}

/* A common visible height is the character reference; transparent padding is excluded. */
.combat-unit .pose-attack{opacity:0}
.combat-unit[data-pose="attack"] .pose-idle{opacity:0}
.combat-unit[data-pose="attack"] .pose-attack[data-active="true"]{opacity:1}

/* Static training cuts: movement is a short displacement, never a limb rig. */
.training-fx{position:absolute;pointer-events:none;display:block;z-index:8}
.training-asura-impact{position:absolute;pointer-events:none;z-index:125;left:43%;bottom:0;width:57%;height:100%;display:grid;place-items:end center}
.training-asura-impact[data-side="enemy"]{left:0}
.training-asura-impact img{grid-area:1/1;width:100%;height:100%;object-fit:contain;object-position:center bottom}
.training-asura-impact img[hidden]{display:none}
.training-tiger{width:360%;height:230%;left:-130%;bottom:28%;filter:drop-shadow(0 0 14px #80edff)}
.training-tiger img{width:100%;height:100%;object-fit:contain}
.training-runes{inset:-15% -65%;perspective:500px;animation:training-rune-orbit 1s linear}
.training-runes b{position:absolute;left:50%;top:48%;font:900 34px Georgia,serif;color:#fff7b2;text-shadow:0 0 5px #fff,0 0 12px #ffc629,0 0 24px #ff9c00;transform:rotate(var(--rune-angle)) translateX(65px) rotate(calc(-1 * var(--rune-angle)))}
@keyframes training-rune-orbit{to{transform:rotateY(360deg)}}
.training-pierce{left:65%;top:35%;height:14%;width:180%;background:linear-gradient(90deg,#fffef0,#bff4ff 20%,#fadc7d66 65%,transparent);clip-path:polygon(0 30%,100% 0,68% 50%,100% 100%,0 70%);filter:drop-shadow(0 0 8px #aff);animation:training-pierce .5s ease-out}
@keyframes training-pierce{from{transform:scaleX(.1);transform-origin:left}to{transform:scaleX(1.3);transform-origin:left}}
.training-afterimage{inset:0 35% 0 -50%;background:linear-gradient(90deg,transparent,#8cf5e570,transparent);filter:blur(7px);transform:skewX(-15deg)}
.training-sandstorm{left:-100%;bottom:-10%;width:650%;height:160%;border-radius:50%;background:repeating-conic-gradient(from 0deg,#ffd59600 0deg,#efd3a982 15deg,#f7edcd 19deg,#b47a3220 28deg),radial-gradient(ellipse,#fff9e296,#cf9c4945,transparent 65%);filter:blur(3px);animation:training-sand-swirl .5s linear infinite;transform-origin:35% 65%}
@keyframes training-sand-swirl{50%{transform:skewX(-15deg) scaleY(.7);filter:blur(6px)}to{transform:skewX(0) scaleY(1)}}
.combat-unit{--character-height:calc(clamp(55px,10vw,138px) * var(--figure-reference-scale,1) * var(--battle-fit-scale,1));height:calc(var(--character-height) * var(--size-ratio,1));width:calc(var(--character-height) * var(--size-ratio,1) * var(--art-aspect,.667));min-width:0}
.combat-unit.single{--character-height:calc(clamp(125px,19vw,190px) * var(--figure-reference-scale,1) * var(--battle-fit-scale,1));width:calc(var(--character-height) * var(--size-ratio,1) * var(--art-aspect,.667))}
.combat-unit .unit-motion{position:relative;width:100%;height:100%}.combat-unit .unit-art{position:absolute;max-width:none;max-height:none;object-fit:fill}
@media(max-width:700px){.combat-unit{--character-height:calc(clamp(50px,11vw,78px) * var(--figure-reference-scale,1) * var(--battle-fit-scale,1))}.combat-unit.single{--character-height:calc(clamp(110px,22vw,150px) * var(--figure-reference-scale,1) * var(--battle-fit-scale,1))}}

/* A square profession tile is cropped inside the existing landscape portrait. */
.combat-career-portrait{display:block;position:relative;width:100%;height:clamp(60px,10vh,90px);overflow:hidden;border-radius:3px}.career-portrait-tile{display:block;position:absolute;width:100%;aspect-ratio:1;top:28%;transform:translateY(-28%)}.combat-portrait .career-portrait-tile img{position:absolute;width:400%;height:400%;max-width:none;object-fit:fill;object-position:center;border-radius:0}
@media(max-width:700px){.combat-career-portrait{height:65px}}

/* Weapon-family action accents accompany the existing attack illustration. */
.combat-action-motion{position:absolute;z-index:6;pointer-events:none;left:30%;top:15%;width:90%;height:75%;transform-origin:center;opacity:0}
.combat-action-motion.sword{border-right:8px solid #fff4c9;border-bottom:5px solid #e8bd72;border-radius:50%;filter:drop-shadow(0 0 6px #faca70);transform-origin:35% 65%}
.combat-action-motion.fighting{left:55%;top:30%;width:65%;height:40%;border:5px solid #ffd592;border-radius:50%;box-shadow:0 0 14px #fba45c,inset 0 0 9px #fff2bb}
.combat-action-motion.bow{left:48%;top:24%;width:45%;height:40%;border-left:3px solid #fff0bb;border-radius:50%;filter:drop-shadow(0 0 5px #f0ca85)}
.combat-action-motion.staff{left:-15%;top:8%;width:130%;height:85%;border:3px solid #93d9ff;border-radius:50%;box-shadow:0 0 17px #55a6ff,inset 0 0 13px #98e7ff;background:radial-gradient(ellipse,transparent 45%,#98dfff44 62%,transparent 70%)}

.combat-dash-trail{position:absolute;height:9px;transform-origin:left center;background:linear-gradient(90deg,transparent,#fff4cfaa,#fff7db);border-radius:50%;filter:blur(2px);pointer-events:none;z-index:119;box-shadow:0 0 12px #e8c778;}

.battle-skill-symbol img{display:block;width:34px;height:34px;object-fit:contain}
@media(max-width:700px){.battle-skill-symbol img{width:27px;height:27px}}

.combat-status{cursor:help}.combat-status:focus-visible{outline:2px solid #f1d289;outline-offset:2px}.combat-status-tooltip{position:fixed;z-index:1000;box-sizing:border-box;width:max-content;max-width:min(280px,calc(100vw - 16px));padding:10px 12px;border:1px solid #aa925f;border-radius:7px;background:#101c29f5;box-shadow:0 6px 22px #000a;color:#e6edf1;text-align:left;pointer-events:none;font:12px/1.5 system-ui,sans-serif}.combat-status-tooltip[hidden]{display:none}.combat-status-tooltip strong{display:block;font-size:13px;color:#f1ddb1}.combat-status-tooltip small{display:block;margin-top:3px;color:#ddbd79;font-size:11px}.combat-status-tooltip p{margin:6px 0 0;color:#d3dee6;overflow-wrap:anywhere}

.ally-turn-notice{position:absolute;left:50%;bottom:12px;transform:translate(-50%,8px);z-index:200;pointer-events:none;padding:10px 34px;border:1px solid #c9ae7580;border-radius:5px;background:linear-gradient(90deg,#102331cc,#1f3647f2,#102331cc);color:#f5dfac;font:600 20px/1.4 'Batang','바탕',Georgia,serif;letter-spacing:.04em;text-shadow:0 2px 4px #000;box-shadow:0 4px 15px #0005;opacity:0;transition:opacity .25s,transform .25s;white-space:nowrap}
.ally-turn-notice.visible{opacity:1;transform:translate(-50%,0)}
@media(max-width:700px){.ally-turn-notice{font-size:16px;padding:8px 22px;bottom:8px}}
@media(prefers-reduced-motion:reduce){.ally-turn-notice{transition:none}}

.combat-float.taunt{top:auto;bottom:calc(100% + 8px);font:700 96px Batang,Georgia,serif;color:#ffd181;text-shadow:0 0 12px #ffb344,0 2px 4px #000;z-index:180}
.battle-skill-tile{position:relative}
.battle-skill-tile.cooling-down:disabled{opacity:1}
.battle-skill-tile.cooling-down>:not(.battle-skill-cooldown){opacity:.4}
.battle-skill-tile .battle-skill-cooldown{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;z-index:5;pointer-events:none;color:#ff3737;font:900 clamp(38px,5vw,58px)/1 system-ui,sans-serif;-webkit-text-stroke:1px #52100e;paint-order:stroke fill;text-shadow:0 2px 4px #000,0 0 12px #000}

/* Give the character whose turn it is a clear visual priority. */
.combat-party{gap:12px;padding:12px 5px 8px}
.combat-portrait{transform-origin:center center;transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease}
.combat-portrait.current:not(.down){z-index:4;transform:translateY(-3px) scale(1.06);border-color:#ffe3a2;outline:2px solid #e3bb65;outline-offset:2px;background:linear-gradient(145deg,#494331,#233540 65%,#192a34);box-shadow:inset 0 0 18px #f3cc7138,0 0 0 5px #e3bb6526,0 0 25px 5px #efc56c65,0 8px 20px #0008}
.combat-portrait.current:not(.down) strong{color:#ffe6ad}
.combat-portrait.current:not(.down):not(:disabled):hover{border-color:#ffe3a2}
@media(prefers-reduced-motion:reduce){.combat-portrait{transition:none}}

.combat-action-motion.staff-melee{left:35%;top:20%;width:65%;height:55%;border-right:7px solid #e4d4ac;border-bottom:3px solid #c9a46a;border-radius:50%;filter:drop-shadow(0 0 4px #e8c78b);transform-origin:30% 70%}

.combat-projectile.magic-missile{width:16px;height:16px;border-radius:50%;background:radial-gradient(circle,#fff 0 15%,#b2f4ff 25%,#42baff 55%,#1476e366 75%,transparent 80%);box-shadow:0 0 8px 3px #51caff,0 0 22px #338dff;z-index:130}
.combat-projectile.magic-missile::after{content:"";position:absolute;right:7px;top:4px;width:35px;height:7px;border-radius:50%;background:linear-gradient(90deg,transparent,#3e9bff88,#c3f5ff);filter:blur(2px)}
.combat-mage-effect{position:absolute;pointer-events:none;z-index:8;left:0;top:15%;width:100%;height:70%}
.combat-mage-effect.mana-rotation{left:10%;top:30%;width:80%;height:45%;border:2px solid #79dcff77;border-radius:50%;box-shadow:0 0 12px #31b7ff77,inset 0 0 9px #32aaff55}
.combat-mage-effect.mana-rotation i{position:absolute;left:50%;top:50%;width:7px;height:7px;border-radius:50%;background:#dcfaff;box-shadow:0 0 10px 4px #4fbfff;transform:rotate(var(--angle)) translateX(30px)}
.combat-mage-effect.energy-shield{left:25%;top:8%;width:80%;height:84%;border:2px solid #bcf2ffaa;border-radius:48%;background:radial-gradient(ellipse at 70% 40%,#c5f6ff44,#258fdb22 65%,transparent 75%);box-shadow:inset 0 0 16px #71d5ff77,0 0 15px #40aaff88}
.enemy .combat-mage-effect.energy-shield{left:-5%}
.combat-mage-effect.casting-circle{left:-10%;top:22%;width:120%;height:65%;border:3px double #93e9ff;border-radius:50%;box-shadow:0 0 15px #3faaff,inset 0 0 18px #35aaff66;background:repeating-conic-gradient(from 0deg,transparent 0deg 27deg,#b3f6ff88 28deg 30deg,transparent 31deg 45deg);outline:1px solid #53baff;outline-offset:6px}
.combat-mage-effect.casting-circle i{position:absolute;inset:15%;border:1px solid #abedff;transform:rotate(45deg)}
.combat-mage-effect.casting-circle i:nth-child(2){transform:rotate(15deg)}
.combat-mage-effect.casting-circle i:nth-child(3){inset:30%;border-radius:50%;transform:none;background:#58baff33}

.combat-unit.enemy .pose-monster{opacity:0;pointer-events:none;transform-origin:50% 90%}
.combat-unit.enemy[data-pose="windup"] .pose-idle,.combat-unit.enemy[data-pose="attack"] .pose-idle,.combat-unit.enemy[data-pose="hurt"] .pose-idle{opacity:0}
.combat-unit.enemy[data-pose="windup"] [data-monster-frame="windup"],.combat-unit.enemy[data-pose="attack"] [data-monster-frame="attack"],.combat-unit.enemy[data-pose="hurt"] [data-monster-frame="hurt"]{opacity:1}
.monster-hit-ring{position:absolute;left:50%;top:44%;width:36px;height:36px;border:3px solid #fff1c4;border-radius:50%;box-shadow:0 0 9px #f7ad54;pointer-events:none;z-index:153}
.monster-hit-particle{position:absolute;left:50%;top:44%;width:5px;height:3px;border-radius:50%;background:#fff5d0;box-shadow:0 0 5px #ffc47a;pointer-events:none;z-index:154}

/* Acolyte blessings: a cross above the enemy, rising healing and mana motes. */
.combat-cleric-effect{position:absolute;inset:0;pointer-events:none;z-index:20}
.combat-cleric-effect.holy-light-field{inset:auto;z-index:130;filter:drop-shadow(0 0 18px #ffe49c);background:radial-gradient(ellipse at 50% 42%,#fff8bd88,transparent 68%)}
.combat-cleric-effect.holy-light-field::before,.combat-cleric-effect.holy-light-field::after{content:"";position:absolute;left:50%;background:#fffce5;box-shadow:0 0 18px #fff4bb,0 0 45px #ffda69;border-radius:5px;transform:translateX(-50%)}
.combat-cleric-effect.holy-light-field::before{top:0;width:19%;height:100%}
.combat-cleric-effect.holy-light-field::after{top:28%;width:100%;height:15%}
.combat-healing-light.holy-heal{width:9px;height:9px;background:#fffce3;box-shadow:0 0 12px 4px #ffe591}
.combat-cleric-effect.prayer-mana i{position:absolute;width:7px;height:7px;border-radius:50%;background:#c9f6ff;box-shadow:0 0 10px 3px #58baff}



/* Keep a slain monster in its hurt pose while its last hit fades away. */
.combat-unit.enemy.defeated{visibility:visible;opacity:0;animation:monster-defeat-fade 2s linear forwards}
.combat-unit.enemy.defeated .pose-idle,.combat-unit.enemy.defeated .pose-monster{opacity:0}
.combat-unit.enemy.defeated [data-monster-frame="hurt"]{opacity:1}
.combat-unit.enemy.defeated .unit-name,.combat-unit.enemy.defeated .unit-selection,.combat-unit.enemy.defeated .unit-target-mark{visibility:hidden}
@keyframes monster-defeat-fade{0%{opacity:1;visibility:visible}100%{opacity:0;visibility:hidden}}
.combat-holy-hit{position:absolute;z-index:155;pointer-events:none;filter:drop-shadow(0 0 6px #ffd365)}
.combat-holy-hit i{position:absolute;inset:0;display:block}
.combat-holy-hit .holy-hit-core{inset:21%;border-radius:50%;background:radial-gradient(circle,#fff 0 15%,#fffdd2 25%,#ffed65 43%,#ffb52377 65%,transparent 75%);box-shadow:0 0 14px #fff09b}
.combat-holy-hit .holy-hit-ring{inset:14%;border:4px solid #ffe56f;border-radius:50%;box-shadow:0 0 0 3px #fffbd2,0 0 0 7px #f0b23277,inset 0 0 12px #fff7aa,0 0 20px #ffd663}
.combat-holy-hit .holy-hit-rays{background:radial-gradient(circle,#fffbd0 8%,#ffdf62 35%,#d99a24aa 65%,transparent 73%);clip-path:polygon(50% 0,54% 32%,65% 18%,62% 39%,100% 50%,63% 55%,82% 67%,61% 63%,50% 100%,45% 65%,29% 84%,36% 61%,0 50%,36% 45%,17% 28%,40% 37%)}

/* Commander orders use a temporary supporting soldier, not another party slot. */
.commander-soldier{position:absolute;z-index:122;pointer-events:none}
.commander-soldier img{position:absolute;max-width:none;object-fit:contain;filter:drop-shadow(0 5px 3px #0008)}
.commander-soldier[data-side="enemy"]{scale:-1 1}
.commander-effect{position:absolute;inset:0;z-index:125;pointer-events:none}
.command-blessing{background:radial-gradient(ellipse at 50% 60%,#ff554333,transparent 65%)}
.command-blessing i{position:absolute;top:-20%;width:3px;height:95%;background:linear-gradient(transparent,#ff614b,#ffb29a,transparent);box-shadow:0 0 9px #ff483e;border-radius:50%}
.command-parry{inset:28% -5% 30% 45%;background:radial-gradient(circle,#fff 0 9%,#fff5bf 15%,#ffc45a77 30%,transparent 60%);clip-path:polygon(50% 0,57% 36%,100% 42%,64% 53%,85% 85%,54% 63%,43% 100%,39% 61%,0 57%,34% 43%,15% 13%,43% 34%);filter:drop-shadow(0 0 7px #fff2bb)}
.command-counter-eyes{inset:16% 27% auto 31%;height:5px;border-radius:50%;background:#fff4d4;box-shadow:0 0 8px 3px #ffd774,0 0 20px 5px #f6ac4a}

/* Dedicated player hit drawings share the same ground and body scale as attack cuts. */
.combat-unit.player .pose-hurt{opacity:0;pointer-events:none}
.combat-unit.player.has-hurt-pose[data-pose="hurt"] .pose-idle{opacity:0}
.combat-unit.player.has-hurt-pose[data-pose="hurt"] .pose-hurt{opacity:1}

.combat-projectile.video-missile{background:none;border-radius:0;box-shadow:none}
.combat-projectile.video-missile::after{display:none}
.combat-projectile.magic-missile.video-missile::before{content:"";position:absolute;inset:37%;border-radius:50%;background:#e9fbff;box-shadow:0 0 5px #66d7ff;z-index:-1}

.combat-sprite-impact{position:absolute;z-index:160;pointer-events:none;background-repeat:no-repeat}
.projectile-sprite-frames{position:absolute;inset:0;display:block;background-repeat:no-repeat}

/* Warm arcade damage digits; critical hits use a pink fill. */
.combat-float.damage{font-family:'Arial Black',Arial,system-ui,sans-serif;font-weight:900;color:#ffd348;-webkit-text-stroke:2px #fff5d4;paint-order:stroke fill;text-shadow:none;filter:drop-shadow(1px 0 0 #3e241e) drop-shadow(-1px 0 0 #3e241e) drop-shadow(0 2px 1px #261619);background:linear-gradient(#f37729 10%,#ffb339 48%,#ffed66 90%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.combat-float.damage.critical{color:#ff77ad;background-image:linear-gradient(#ff536b 8%,#ff7aaf 55%,#ffb1d3 95%);-webkit-text-stroke-color:#fff0f5}

.combat-float.damage{font-size:33px}
