.combat-stage{position:relative;padding:4px 0 10px}.combat-top{display:flex;justify-content:space-between;align-items:center;gap:8px}.combat-top h3{margin:0;font-size:1.2rem}.combat-top>span{color:#b9b8c7;font-size:.75rem}.combat-clock{display:grid;grid-template-columns:1fr auto;gap:5px;padding:10px 0 18px;font-size:.78rem}.combat-clock progress{width:100%;height:5px;grid-column:1/-1;accent-color:#b8d785}.combat-clock progress.urgent{accent-color:#ee9265}.combat-enemies{display:grid;grid-template-columns:repeat(var(--units),minmax(0,1fr));gap:12px 9px;justify-items:center;align-items:start}.combat-unit{position:relative;width:100%;min-width:0;max-width:146px;text-align:center;isolation:isolate}.unit-heading{height:42px;display:flex;flex-direction:column;justify-content:flex-end;margin-bottom:5px}.unit-heading strong{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:.78rem}.unit-heading small{font-size:.59rem;line-height:1.4;color:#b7bac7}.unit-portrait{position:relative;display:block;padding:0;width:100%;aspect-ratio:1;border:2px solid #73717c;background:#191b27;border-radius:9px;overflow:visible;opacity:1!important;cursor:default;box-shadow:0 7px 20px #0007}.unit-portrait img,.monster-portrait{width:100%;height:100%;object-fit:cover;object-position:50% 24%;border-radius:7px;display:block}.monster-portrait{background:url('assets/monsters/portraits.webp');background-size:400% 400%}.unit-turn-mark{display:none;position:absolute;top:-9px;left:calc(50% - 5px);font-size:10px;color:#ffe0a4}.taking-turn .unit-portrait{border-color:#ffe0a4;box-shadow:0 0 20px #ffce7133}.taking-turn .unit-turn-mark{display:block}.unit-hp-track{height:7px;margin-top:7px;border:1px solid #070d0b;background:#2b3036;overflow:hidden;border-radius:3px}.unit-hp-track i{display:block;height:100%;background:linear-gradient(90deg,#27b878,#75efaa)}.enemy .unit-hp-track i{background:linear-gradient(90deg,#b85254,#f48a72)}.unit-hp{display:block;font-size:.65rem;line-height:1.5;font-variant-numeric:tabular-nums;font-weight:700}.combat-statuses{min-height:23px;display:flex;justify-content:center;gap:3px;flex-wrap:wrap;margin:3px 0}.status-icon{position:relative;display:inline-grid;place-items:center;min-width:21px;height:21px;border:1px solid #69b5b3;background:#17313a;border-radius:4px;font-size:13px;color:#ccefff}.status-icon b{position:absolute;bottom:-3px;right:-2px;font-size:9px;background:#090c17;border-radius:3px;padding:0 2px;color:#fff}.status-icon.negative{border-color:#ad5c75;background:#442033;color:#ffc5d1}.fallen .unit-portrait{filter:grayscale(1);opacity:.5!important}.cloaked .unit-portrait{opacity:.45!important;border-style:dashed}.valid-target .unit-portrait{cursor:pointer;border-color:#8bebcf;box-shadow:0 0 0 3px #78dcc933}.valid-target .unit-portrait:hover,.valid-target .unit-portrait:focus-visible{outline:2px solid #edffe6;outline-offset:3px}.announced-target .unit-portrait{outline:2px dashed #e0bb84;outline-offset:3px}.combat-announcement{min-height:84px;margin:12px 0 4px;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:4px;text-align:center;font-size:.8rem;color:#c8c7d0}.combat-announcement small{flex-basis:100%;font-size:.72rem}.combat-announcement [data-combat-countdown]{font-size:1.5rem;color:#f6d296;flex-basis:100%}.combat-player-line{display:flex;justify-content:center;align-items:center;gap:26px;padding:8px 0 18px;min-height:236px}.own-character{width:132px;max-width:40%;flex-shrink:0}.own-character .unit-heading strong{font-size:.95rem}.combat-command-orbit{position:relative;width:112px;height:198px;flex-shrink:0}.diamond-command{position:absolute;width:62px;height:62px;padding:0;transform:rotate(45deg);border:1px solid #afa092;background:linear-gradient(130deg,#31324e,#121726);border-radius:9px;box-shadow:3px 3px 12px #0007;color:#f1e8d7;cursor:pointer}.diamond-command>span{display:block;transform:rotate(-45deg);font-size:1.3rem;line-height:1.1}.diamond-command small{display:block;font-size:.53rem;margin-top:2px;font-weight:700}.diamond-command:disabled{opacity:.42;cursor:not-allowed}.skills-command{left:43px;top:10px;border-color:#c1a96e}.potion-command{left:0;top:72px}.flee-command{left:43px;top:134px}.combat-team-label{letter-spacing:.2em;text-align:center;color:#9eabb4;font-size:.6rem}.combat-allies{display:grid;grid-template-columns:repeat(var(--units),minmax(0,1fr));gap:7px;margin:12px 0 20px}.ally-mini .unit-heading{height:36px}.ally-mini .unit-heading strong{font-size:.65rem}.ally-mini .unit-heading small{font-size:.48rem}.ally-mini .unit-hp{font-size:.52rem}.ally-mini .unit-hp-track{height:5px;margin-top:4px}.ally-mini .status-icon{min-width:16px;height:16px;font-size:10px}.combat-history{border-top:1px solid #aeb3bd33;padding-top:14px;margin-top:10px}.combat-history h4{margin:0 0 8px;font-size:.85rem}.combat-history .battle-log{height:145px;font-size:.73rem;margin:0;background:#070b12a8}.combat-skill-picker{background:#101624f5;border:1px solid #747796;border-radius:12px;padding:12px;margin:0 0 18px;box-shadow:0 12px 30px #0006}.combat-skill-picker>div{display:flex;align-items:center;justify-content:space-between}.combat-skill-option{display:flex;gap:10px;align-items:center;width:100%;text-align:left;padding:11px 8px;margin-top:7px;color:#e3e5f3;background:#1e2637;border:1px solid #434c63;border-radius:8px}.combat-skill-option:disabled{opacity:.4}.combat-skill-option strong,.combat-skill-option small{display:block}.combat-skill-option small{font-size:.66rem;color:#b2bbd2;line-height:1.45;margin-top:3px}.combat-skill-icon{font-size:1.35rem;color:#f3d7a2;min-width:28px}.combat-float{pointer-events:none;position:absolute;z-index:12;left:50%;top:30%;transform:translateX(-50%);min-width:70px;max-width:155px;font-size:.78rem;font-weight:900;color:#ffe0ce;text-shadow:0 2px 4px #000,1px 0 #000,-1px 0 #000;text-align:center;line-height:1.3;background:#27140bd9;padding:5px;border-radius:5px}.combat-float.crit{font-size:1rem;color:#ffcf68;border:1px solid #edaa47}.combat-float.heal{color:#9ef8bb;background:#103825e8}.combat-float.shield{color:#b2d9ff;background:#112f4cdd}.combat-float.miss{color:#dadbea;background:#292c36dd}.loadout-summary{padding:16px;border:1px solid #697a91;background:#182133;border-radius:12px;display:grid;gap:10px}.loadout-summary p,.loadout-summary small{margin:0;color:#c2cbdd;line-height:1.5}.spec-heading{font-size:1.2rem;margin:24px 0 12px;color:#edd6ad}.spec-grid{display:grid;gap:12px}.spec-skill{padding:16px;border:1px solid #404857;background:#131b29;border-radius:10px}.spec-skill h3{font-size:1rem;margin:8px 0}.spec-skill p{font-size:.8rem;color:#bec7d7;line-height:1.55}.spec-skill .skill-top{font-size:.7rem}.spec-skill .skill-value{color:#e7d4ad}.spec-skill button{margin-top:10px;width:100%}.spec-skill.locked{opacity:.55}.spec-skill.equipped{border-color:#70b89d;background:#142b28}.base-skill-label{color:#96c8db;font-size:.72rem}.spec-skill>small{display:block;color:#bdcce0}.combat-stage .offline-combat{font-size:.56rem}
.combat-projectile{position:absolute;z-index:20;pointer-events:none;width:12px;height:12px;margin:-6px;background:#ffe1a7;border-radius:50%;box-shadow:0 0 7px #fff,0 0 16px #eb8c3c,0 0 24px #ffbd73}.combat-projectile.support{background:#a0ffdd;box-shadow:0 0 10px #fff,0 0 24px #5fffd6}
@media(max-width:360px){.combat-player-line{gap:16px}.combat-allies{gap:4px}.unit-heading strong{font-size:.67rem}.ally-mini .unit-heading small{font-size:.44rem}.combat-float{font-size:.65rem;max-width:110px}.combat-enemies{gap:7px}}
@media(prefers-reduced-motion:reduce){.combat-unit *{animation:none!important;transition:none!important}}
.combat-context{margin:0 0 7px;color:#beb8aa;font-size:.65rem;letter-spacing:.08em;text-transform:uppercase}
.combat-skill-picker{position:fixed;z-index:75;left:50%;bottom:85px;transform:translateX(-50%);width:min(430px,calc(100vw - 24px));max-height:min(62dvh,510px);overflow-y:auto;overscroll-behavior:contain;margin:0;box-shadow:0 0 0 100vmax #060b16b3,0 12px 30px #0009}
.combat-skill-picker>div{position:sticky;top:-12px;z-index:1;background:#101624;padding:7px 0}

.combat-unit.chosen-target .unit-portrait {outline:3px solid #76f4b4;outline-offset:4px;box-shadow:0 0 22px #76f4b480;}
.combat-effect-sprite{position:absolute;z-index:3;left:50%;top:50%;width:125%;aspect-ratio:1;transform:translate(-50%,-50%);pointer-events:none;background-repeat:no-repeat;image-rendering:pixelated;filter:drop-shadow(0 0 3px #e1fff366)}
.combat-unit.chosen-target .unit-turn-mark {display:block;background:#76f4b4;color:#10261b;}
.combat-announcement [data-combat-confirm-targets] {margin-top:10px;font-size:.83rem;padding:12px;}

/* Server-timed d8: only the server result is ever shown as a numeric face. */
.combat-dice,.combat-dice-results{position:absolute;z-index:24;left:50%;top:24px;transform:translate(-50%,-30%);pointer-events:none}
.combat-dice{width:58px;display:flex;align-items:center;flex-direction:column;filter:drop-shadow(0 3px 6px #000)}
.d8-shape{width:46px;height:52px;overflow:visible}.combat-dice small{display:block;white-space:nowrap;font-size:.64rem;font-weight:900;line-height:1.5;padding:2px 6px;border-radius:6px;background:#08090ef5;border:1px solid #fff8;color:#fff}
.combat-dice.rolling .d8-shape{animation:d8-roll var(--dice-duration,2000ms) cubic-bezier(.18,.65,.25,1) both;animation-delay:var(--dice-offset,0ms)}
.combat-dice-results{display:flex;gap:4px;justify-content:center}.combat-dice-results .combat-dice{position:relative;left:auto;top:auto;transform:none}
.combat-dice.success small{background:#082716;color:#79ff9a;border-color:#6cfb8b}.combat-dice.failure small{background:#3a0a12;color:#ff8394;border-color:#ff586a}.combat-dice.blocked small{color:#ffe09c;border-color:#e7c88b}
.combat-dice.resolved .d8-shape{animation:d8-land .2s ease-out}.ally-mini .combat-dice{width:44px}.ally-mini .d8-shape{width:36px;height:42px}
@keyframes d8-roll{0%{transform:rotateX(0) rotateZ(0) scale(.8)}20%{transform:rotateX(360deg) rotateZ(210deg) scale(1.12)}45%{transform:rotateX(720deg) rotateZ(440deg)}70%{transform:rotateX(1080deg) rotateZ(610deg)}100%{transform:rotateX(1440deg) rotateZ(720deg) scale(1)}}
@keyframes d8-land{from{transform:scale(1.22)}to{transform:scale(1)}}
.combat-turn-order{position:absolute;z-index:55;left:15px;bottom:120px;top:auto;width:190px;max-height:52dvh;overflow:auto;display:flex;flex-direction:column-reverse;background:#080d19f2;border:1px solid #b9a88088;border-radius:11px;box-shadow:0 8px 25px #0008;color:#eae8f1;font-size:.67rem}
.combat-turn-order>button{display:flex;align-items:center;gap:6px;width:100%;padding:11px 9px;color:inherit;background:#22273a;border:0;cursor:pointer;font:inherit;position:sticky;top:0}
.combat-turn-order>button b{margin-left:auto;font-size:1rem}.combat-turn-order.minimized{width:48px}.combat-turn-order.minimized strong{display:none}
.combat-turn-order ol{list-style:none;margin:0;padding:5px}.combat-turn-order li{display:flex;gap:6px;align-items:center;padding:8px 5px;border-radius:5px}.combat-turn-order li>span{color:#a39b8b}.combat-turn-order li strong{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.combat-turn-order .enemy strong{color:#ff9d98}.combat-turn-order .hero strong{color:#9ce4cd}.combat-turn-order .current{background:#e9c46b22;border:1px solid #e9c46b44}.combat-turn-order small{color:#ffe1a0;font-size:.55rem}
.combat-spectators{display:flex;align-items:center;gap:5px;color:#c3dadc;font-size:.72rem;font-variant-numeric:tabular-nums}.combat-spectators svg{width:20px;height:16px}.combat-top{flex-wrap:wrap}
#home-screen:has(#social-notices:not(:empty)) #turn-order-controls .combat-turn-order{bottom:264px}
@media(prefers-reduced-motion:reduce){.combat-dice .d8-shape{animation:none!important}}

/* Shared boss warning: non-modal, never takes away a player's turn or chat. */
.malrec-warning{display:grid;grid-template-columns:84px minmax(0,1fr);align-items:center;gap:13px;margin:4px 0 18px;padding:12px;background:linear-gradient(110deg,#38132aed,#121323ef);border:1px solid #d77eac99;border-radius:12px;box-shadow:inset 0 0 25px #ad184d14,0 5px 22px #0006;animation:malrec-reveal .4s ease-out}
.malrec-warning img{width:84px;height:104px;object-fit:cover;object-position:center 25%;border-radius:8px;border:1px solid #d885b1}
.malrec-warning .eyebrow{font-size:.57rem;line-height:1.6;margin:0 0 6px;color:#e3b7c9}
.malrec-warning strong{font-size:1rem;line-height:1.35;color:#ffd4e8;text-shadow:0 0 14px #f08cbc55}
.malrec-warning p:not(.eyebrow){font-size:.7rem;line-height:1.6;color:#e3c6cf;margin:8px 0 0}
.malrec-warning.interrupted{background:linear-gradient(110deg,#13352ced,#121323ef);border-color:#7ed4b1}.malrec-warning.interrupted strong,.malrec-warning.interrupted p:not(.eyebrow){color:#b2efd7}
@keyframes malrec-reveal{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:350px){.malrec-warning{grid-template-columns:62px minmax(0,1fr);gap:9px;padding:10px}.malrec-warning img{width:62px;height:92px}.malrec-warning strong{font-size:.86rem}}
@media(prefers-reduced-motion:reduce){.malrec-warning{animation:none}}
.combat-stage .target-dice { transform:translate(0,-100%); }
.combat-stage .combat-dice-results.target-dice { justify-content:flex-start; }
.combat-keyboard-mode :is(.combat-stage,.combat-skill-picker,.item-modal,#chat-panel,#combat-log-panel,#battle-result) :is(button,a,input,textarea,select):focus { outline:3px solid #ffe398; outline-offset:3px; }
.combat-stage .target-dice small { align-self:flex-start; }
