/* Interactive directory dossiers: effects live on the actual cards. */
.entity-card.combat-card{--ink:hsl(var(--combat-hue) 82% 73%);position:relative;isolation:isolate;overflow:hidden;padding:0;min-width:0;background:linear-gradient(145deg,hsl(var(--combat-hue) 38% 14%),#0a1118 85%);border:1px solid hsl(var(--combat-hue) 42% 42% / .6);border-top:2px solid var(--ink);transition:border-color .25s,box-shadow .25s,transform .25s}
.combat-card:before,.combat-card:after{display:none!important}.combat-open{display:flex;flex-direction:column;position:relative;z-index:2;height:100%;color:inherit;text-decoration:none;min-height:350px}.combat-open .entity-card-body{flex:1;display:flex;flex-direction:column;padding:32px 27px 28px;background:linear-gradient(180deg,#09101924,#091019b3 52%,#091019e8)}
.combat-open .eyebrow{padding-right:38px;color:var(--ink);font-size:12px;min-height:36px}.combat-open h3{font:400 clamp(29px,2.4vw,39px)/1.15 var(--serif);color:#f4efdf;overflow-wrap:anywhere;margin:18px 0 18px;position:relative}.combat-open p{font-size:16px;line-height:1.7;color:#c3cbc8;margin-bottom:45px}.combat-open .card-link{margin-top:auto;padding-top:17px;border-top:1px solid hsl(var(--combat-hue) 45% 60% / .3);color:var(--ink);display:flex;justify-content:space-between;gap:12px;font-size:15px}
.combat-preview{position:absolute;top:17px;right:17px;z-index:5;width:44px;height:44px;display:grid;place-items:center;padding:0;border-radius:50%;border:1px solid hsl(var(--combat-hue) 55% 62% / .55);background:#09121cce;color:var(--ink);font-size:26px;cursor:pointer;transition:box-shadow .2s,background .2s}.combat-preview:hover,.combat-preview[aria-pressed=true]{background:hsl(var(--combat-hue) 50% 25%);box-shadow:0 0 22px hsl(var(--combat-hue) 75% 60% / .4)}
.combat-vfx{position:absolute;inset:0;z-index:1;overflow:hidden;pointer-events:none;color:var(--ink)}.combat-monogram{position:absolute;right:22px;top:55px;font:italic 85px/1 var(--serif);color:currentColor;opacity:.09;transition:opacity .3s}.combat-hover .combat-monogram,.combat-strike .combat-monogram{opacity:.28}
.combat-seal{position:absolute;left:50%;top:38%;width:160px;height:160px;transform:translate(-50%,-50%) rotate(var(--combat-turn));border:1px solid currentColor;opacity:.08}.combat-seal.seal-two{width:210px;height:210px;transform:translate(-50%,-50%) rotate(calc(var(--combat-turn) + 35deg))}.combat-hit,.combat-scar{position:absolute;inset:0;opacity:0;pointer-events:none}.combat-hit{background:radial-gradient(ellipse at 48% 35%,hsl(var(--combat-hue) 90% 85% / .3),transparent 65%)}
.combat-texture{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;opacity:.13;transition:opacity .4s;mask-image:linear-gradient(#000b,#0007 50%,#000)}.combat-hover .combat-texture,.combat-strike .combat-texture{opacity:.9}
.combat-particles{position:absolute;inset:0;opacity:0}.combat-particles i{position:absolute;left:var(--x);top:35%;width:3px;height:6px;background:currentColor;box-shadow:0 0 9px currentColor;opacity:0}
.combat-card.combat-hover{border-color:var(--ink);box-shadow:0 0 28px hsl(var(--combat-hue) 65% 50% / .24);transform:translateY(-4px)}.combat-hover .combat-seal{animation:cc-orbit var(--combat-speed) ease-in-out infinite alternate}.combat-hover .combat-particles{opacity:.6}.combat-hover .combat-particles i{animation:cc-rise 1.8s ease-out var(--lag) infinite}
.combat-card.combat-strike{border-color:var(--ink);box-shadow:0 0 35px hsl(var(--combat-hue) 70% 60% / .4)}.combat-strike .combat-hit{animation:cc-hit .6s ease-out both}.combat-strike .combat-particles{opacity:1}.combat-strike .combat-particles i{left:50%;top:35%;animation:cc-burst .65s ease-out var(--lag) both}.combat-strike .combat-seal{animation:cc-pressure .7s ease-out both}.combat-strike .seal-two{animation-delay:.08s}
/* Impact: anticipation, inward strike, recoil and a recessed card surface. */
.combat-impact.combat-hover .combat-hit{opacity:.25;animation:cc-breath 1s ease-in-out infinite alternate}.combat-impact.combat-hover .combat-seal{animation:cc-brace 1.5s ease-in-out infinite alternate}
.combat-impact.combat-strike{animation:cc-punch .6s ease-out both}.combat-impact.combat-strike .combat-scar{animation:cc-dent 2.4s ease-out both;box-shadow:inset 0 0 0 4px #0006,inset 12px 18px 35px #000e,inset -10px -8px 18px hsl(var(--combat-hue) 65% 70% / .26);border:2px solid hsl(var(--combat-hue) 40% 25%);border-radius:6px 15px 5px 14px}
/* Swords leave an angled cut; precision and firearms resolve with a different motion. */
.combat-slash.combat-hover .combat-seal{width:2px;height:220px;border:0;background:currentColor;animation:cc-blade 1.8s ease-in-out infinite alternate}
.combat-slash.combat-strike{animation:cc-cut .6s ease-out both}.combat-slash.combat-strike .combat-scar{background:linear-gradient(143deg,transparent 48.4%,currentColor 49%,#000 50%,transparent 51%);animation:cc-dent 2.4s ease-out both}.combat-slash.combat-strike .combat-hit{background:linear-gradient(143deg,transparent 42%,currentColor 49%,transparent 56%);animation:cc-slice .45s ease-out both}
.combat-trajectory .combat-seal,.combat-recoil .combat-seal{border-radius:50%;border-style:dashed}.combat-trajectory.combat-hover .combat-seal,.combat-recoil.combat-hover .combat-seal{animation:cc-aim 1.5s ease-in-out infinite alternate}.combat-trajectory.combat-strike .combat-hit{background:linear-gradient(170deg,transparent 48.5%,currentColor 49.5%,transparent 50.5%);animation:cc-slice .5s ease-out both}.combat-recoil.combat-strike{animation:cc-recoil .5s ease-out both}.combat-recoil.combat-strike .combat-scar{border:1px solid currentColor;box-shadow:inset -30px 0 60px hsl(var(--combat-hue) 80% 60% / .2);animation:cc-dent 1s ease-out both}
/* Temporal arrest suspends this card's particles after the expanding pulse. */
.combat-time .combat-seal{border-radius:50%;border-style:dashed}.combat-time.combat-hover .combat-seal{animation:cc-clock 1.4s cubic-bezier(.1,.8,.2,1) both}.combat-time.combat-hover .combat-particles i{animation:none;opacity:.5;top:calc(8% + var(--n)*5%)}.combat-time.combat-strike{animation:cc-time .7s steps(2,end) both}.combat-time.combat-strike .combat-seal{animation:cc-clock .6s ease-out both}.combat-time.combat-strike .combat-particles i{animation:cc-suspend .5s ease-out both}
/* Binding and kinetic loops pinch and release the card. */
.combat-bind .combat-seal,.combat-helix .combat-seal{border-radius:42%;width:130px;height:230px}.combat-bind.combat-hover .combat-seal,.combat-helix.combat-hover .combat-seal{animation:cc-coil 2s ease-in-out infinite alternate}.combat-bind.combat-strike,.combat-helix.combat-strike{animation:cc-bind .65s ease-out both}.combat-bind.combat-strike .combat-scar,.combat-helix.combat-strike .combat-scar{border:2px dashed currentColor;animation:cc-dent 1.8s ease-out both}
.combat-fire.combat-hover .combat-texture{animation:cc-flame 1.4s ease-in-out infinite alternate}.combat-fire.combat-hover .combat-hit{opacity:.5;background:linear-gradient(0deg,hsl(var(--combat-hue) 85% 55% / .3),transparent 80%)}.combat-fire.combat-strike .combat-hit{background:linear-gradient(0deg,hsl(var(--combat-hue) 85% 65% / .6),transparent 80%);animation:cc-ignite .8s ease-out both}
.combat-frost.combat-hover .combat-particles i{width:4px;height:4px;animation:cc-snow 1.7s ease-out var(--lag) both}.combat-frost.combat-hover .combat-seal{animation:cc-brace 1.8s ease-out both}.combat-frost.combat-strike .combat-scar{box-shadow:inset 0 0 45px #c8f2ff88,inset 0 0 0 3px #d6f8ff88;animation:cc-freeze 2.4s ease-out both}.combat-frost.combat-strike .combat-texture{animation:cc-freeze 2.4s ease-out both}
.combat-bloom .combat-seal{border-radius:50% 8% 50% 8%}.combat-bloom.combat-hover .combat-seal{animation:cc-bloom 2.6s ease-in-out infinite alternate}.combat-bloom.combat-strike .combat-scar{box-shadow:inset 0 0 55px hsl(var(--combat-hue) 65% 65% / .5);animation:cc-freeze 2.4s ease-out both}
.combat-aura.combat-hover .combat-seal,.combat-surge.combat-hover .combat-seal{animation:cc-pressure 1.8s ease-out infinite}.combat-aura.combat-strike,.combat-surge.combat-strike{animation:cc-punch .55s ease-out both}.combat-aura.combat-strike .combat-scar,.combat-surge.combat-strike .combat-scar{box-shadow:inset 0 0 50px hsl(var(--combat-hue) 85% 60% / .4);animation:cc-freeze 2s ease-out both}
.combat-converge.combat-hover .combat-seal{animation:cc-pressure 1.9s ease-in infinite reverse}.combat-converge.combat-strike{animation:cc-compress .6s ease-in-out both}.combat-converge.combat-strike .combat-seal{animation:cc-pressure .6s ease-in reverse both}
.combat-wave .combat-seal{height:90px;border-radius:50%}.combat-wave.combat-hover .combat-seal{animation:cc-coil 2.4s ease-in-out infinite alternate}.combat-wave.combat-strike{animation:cc-wave .7s ease-out both}.combat-wave.combat-strike .combat-hit{background:linear-gradient(0deg,currentColor,transparent);animation:cc-ignite .7s ease-out both}
.combat-scan .combat-seal,.combat-lattice .combat-seal{background:repeating-linear-gradient(90deg,transparent 0 23px,hsl(var(--combat-hue) 60% 65% / .16) 24px 25px)}.combat-scan.combat-hover .combat-hit,.combat-lattice.combat-hover .combat-hit{background:linear-gradient(0deg,transparent 45%,currentColor 50%,transparent 55%);animation:cc-scan 2s ease-in-out infinite}.combat-scan.combat-strike .combat-scar,.combat-lattice.combat-strike .combat-scar{border:3px solid currentColor;animation:cc-dent 1.5s ease-out both}
.combat-rhythm .combat-particles i{width:5px;height:30px;top:26%;left:calc(7% + var(--n)*6%)}.combat-rhythm.combat-hover .combat-particles i{animation:cc-bars .6s ease-in-out var(--lag) infinite alternate}.combat-rhythm.combat-strike{animation:cc-recoil .25s ease-out 2}
.combat-shards .combat-seal,.combat-prism .combat-seal{border-radius:0;clip-path:polygon(50% 0,100% 100%,0 100%);background:linear-gradient(150deg,transparent 45%,currentColor 50%,transparent 55%)}.combat-prism.combat-hover .combat-vfx{animation:cc-spectrum 5s linear infinite}.combat-shards.combat-strike .combat-scar,.combat-prism.combat-strike .combat-scar{background:repeating-linear-gradient(130deg,transparent 0 17%,hsl(var(--combat-hue) 70% 65% / .3) 18% 19%,transparent 20%);animation:cc-dent 2s ease-out both}
.combat-rays.combat-hover .combat-hit{opacity:.4;animation:cc-breath 1.4s ease-in-out infinite alternate}.combat-rays.combat-strike .combat-seal,.combat-arc.combat-strike .combat-seal{animation:cc-pressure .7s ease-out both}.combat-orbit .combat-seal,.combat-arc .combat-seal{border-radius:50%;border-left-color:transparent}.combat-orbit.combat-strike .combat-particles i{animation:cc-suspend .65s ease-out both}
@keyframes cc-orbit{from{opacity:.2}to{opacity:.65;transform:translate(-50%,-50%) rotate(calc(var(--combat-turn) + 85deg)) scale(1.05)}}
@keyframes cc-rise{0%{opacity:0;transform:translateY(100px)}25%{opacity:.8}100%{opacity:0;transform:translateY(-140px)}}
@keyframes cc-burst{0%{opacity:0;transform:rotate(var(--angle)) translateY(0)}20%{opacity:1}100%{opacity:0;transform:rotate(var(--angle)) translateY(calc(-2 * var(--distance)))}}
@keyframes cc-pressure{0%{opacity:0;transform:translate(-50%,-50%) rotate(var(--combat-turn)) scale(.3)}25%{opacity:.8}100%{opacity:0;transform:translate(-50%,-50%) rotate(var(--combat-turn)) scale(2.4)}}
@keyframes cc-hit{0%{opacity:0}20%{opacity:1}100%{opacity:0}}
@keyframes cc-punch{0%{transform:none}12%{transform:translateY(-3px) scale(1.015)}22%{transform:translateY(10px) scale(.955)}38%{transform:translate(-4px,2px) rotate(-.6deg)}55%{transform:translate(3px,-1px)}100%{transform:none}}
@keyframes cc-dent{0%,3%{opacity:0}9%,78%{opacity:1}100%{opacity:0}}
@keyframes cc-brace{to{opacity:.5;transform:translate(-50%,-50%) rotate(var(--combat-turn)) scale(.8)}}
@keyframes cc-breath{to{opacity:.8}}
@keyframes cc-blade{to{opacity:.7;transform:translate(-50%,-50%) rotate(45deg) scaleY(1.4)}}
@keyframes cc-cut{0%{transform:none}25%{transform:translateX(-8px) skewX(-1.2deg)}55%{transform:translateX(3px) skewX(.5deg)}100%{transform:none}}
@keyframes cc-slice{0%{opacity:0;transform:translateX(-60%)}35%{opacity:.8}100%{opacity:0;transform:translateX(60%)}}
@keyframes cc-aim{to{opacity:.65;transform:translate(-50%,-50%) scale(.55)}}
@keyframes cc-recoil{0%{transform:none}15%{transform:translate(-8px,3px) rotate(-.8deg)}45%{transform:translate(3px,-1px)}100%{transform:none}}
@keyframes cc-clock{from{opacity:.15;transform:translate(-50%,-50%) rotate(-150deg)}to{opacity:.75;transform:translate(-50%,-50%) rotate(0)}}
@keyframes cc-time{0%,100%{filter:none}20%,78%{filter:grayscale(.9) contrast(1.15)}}
@keyframes cc-suspend{from{opacity:0;transform:rotate(var(--angle)) translateY(0)}to{opacity:.8;transform:rotate(var(--angle)) translateY(calc(-1 * var(--distance)))}}
@keyframes cc-coil{to{opacity:.6;transform:translate(-50%,-50%) rotate(calc(var(--combat-turn) + 100deg)) scaleX(.7)}}
@keyframes cc-bind{0%,100%{transform:none}40%{transform:scaleX(.96) rotate(.6deg)}70%{transform:scaleX(.99) rotate(-.3deg)}}
@keyframes cc-flame{to{transform:scaleY(1.15) translateY(-8px);filter:brightness(1.2)}}
@keyframes cc-ignite{0%{opacity:0;transform:translateY(40%)}30%{opacity:.7}100%{opacity:0;transform:translateY(-20%)}}
@keyframes cc-snow{from{opacity:0;transform:translateY(-80px) rotate(45deg)}to{opacity:.65;transform:translateY(45px) rotate(45deg)}}
@keyframes cc-freeze{0%{opacity:0}38%,78%{opacity:.95}100%{opacity:0}}
@keyframes cc-bloom{to{opacity:.65;transform:translate(-50%,-50%) rotate(calc(var(--combat-turn) + 40deg)) scale(1.2)}}
@keyframes cc-compress{0%,100%{transform:none}45%{transform:scale(.95)}}
@keyframes cc-wave{0%,100%{transform:none}30%{transform:translateY(-5px) skewY(.7deg)}65%{transform:translateY(3px) skewY(-.4deg)}}
@keyframes cc-scan{0%,100%{opacity:0;transform:translateY(-45%)}50%{opacity:.4;transform:translateY(40%)}}
@keyframes cc-bars{from{opacity:.25;transform:scaleY(.2)}to{opacity:.85;transform:scaleY(1.8)}}
@keyframes cc-spectrum{to{filter:hue-rotate(360deg)}}
@media(max-width:760px){.combat-open{min-height:320px}.combat-open .entity-card-body{padding:28px 24px 24px}.combat-open h3{font-size:32px}.combat-preview{width:46px;height:46px;top:13px;right:13px}.combat-card.combat-hover{transform:none}}
html[data-motion=quiet] .combat-card,html[data-motion=quiet] .combat-card *{animation:none!important;transition:none!important;transform:none!important}.combat-open:focus-visible{outline:2px solid var(--ink);outline-offset:-5px}
@media(prefers-reduced-motion:reduce){.combat-card,.combat-card *{animation:none!important;transition:none!important;transform:none!important}}
/* Keep the response above the panel paint and the lettering readable. */
.combat-vfx{z-index:3}.combat-monogram{top:auto;bottom:75px;opacity:.05}.combat-hover .combat-monogram,.combat-strike .combat-monogram{opacity:.11}.combat-open :where(h3,p,.eyebrow,.card-link){text-shadow:0 2px 10px #030911,0 0 4px #030911}.combat-preview{z-index:6}
