:root{--bg: #0e1116;--bg2: #161b22;--panel: #1c2230;--panel2: #232b3b;--line: #2c3650;--text: #e6edf3;--muted: #8b97a8;--accent: #6ea8fe;--accent2: #b07bff;--gold: #f4c95d;--light: #e9d6b8;--dark: #9a6b46;--sel: #6ee7a0;--target: rgba(110, 231, 160, .55);--preview: #6ea8fe;--danger: #ff6b6b;--last: rgba(244, 201, 93, .45);--chess: "Apple Symbols", "Segoe UI Symbol", "Noto Sans Symbols 2", "Noto Sans Symbols", "DejaVu Sans", "Arial Unicode MS", sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:radial-gradient(1200px 800px at 70% -10%,#1b2333,var(--bg));color:var(--text);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;-webkit-font-smoothing:antialiased}.app{min-height:100%;display:flex;flex-direction:column;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}.menu{max-width:760px;margin:0 auto;padding:6vh 20px;text-align:center}.title{font-size:clamp(34px,7vw,64px);font-weight:800;letter-spacing:-1px;margin:0 0 6px;background:linear-gradient(90deg,var(--gold),var(--accent2));-webkit-background-clip:text;background-clip:text;color:transparent}.subtitle{color:var(--muted);margin:0 0 36px;font-size:17px}.card{background:linear-gradient(180deg,var(--panel),var(--bg2));border:1px solid var(--line);border-radius:18px;padding:26px;box-shadow:0 18px 50px #00000073;margin-bottom:18px;text-align:left}.card h3{margin:0 0 14px;font-size:14px;text-transform:uppercase;letter-spacing:1.4px;color:var(--muted)}.choices{display:flex;gap:10px;flex-wrap:wrap}.choice{flex:1 1 140px;padding:14px 16px;border-radius:12px;cursor:pointer;background:var(--panel2);border:1.5px solid var(--line);color:var(--text);font-size:15px;font-weight:600;transition:all .15s;text-align:center}.choice:hover{border-color:var(--accent);transform:translateY(-1px)}.choice.active{border-color:var(--accent);background:#6ea8fe29;box-shadow:0 0 0 1px var(--accent) inset}.choice small{display:block;font-weight:400;color:var(--muted);margin-top:4px;font-size:12px}.start-btn{margin-top:8px;width:100%;padding:16px;border:none;border-radius:14px;cursor:pointer;font-size:18px;font-weight:800;color:#0b0e14;background:linear-gradient(90deg,var(--gold),#ffb86b);box-shadow:0 10px 30px #f4c95d4d;transition:transform .12s}.start-btn:hover{transform:translateY(-2px)}.ability-legend{display:grid;grid-template-columns:1fr 1fr;gap:10px}.ability-legend .leg{display:flex;gap:10px;align-items:flex-start}.ability-legend .ic{font-size:22px;width:30px;text-align:center;font-family:var(--chess)}.ability-legend b{display:block;font-size:13px}.ability-legend span{color:var(--muted);font-size:12px;line-height:1.35}.game{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:22px;padding:20px;max-width:1180px;margin:0 auto;width:100%}.board-area{display:flex;flex-direction:column;align-items:center;gap:12px}.banner{width:100%;max-width:640px;padding:12px 16px;border-radius:12px;background:var(--panel);border:1px solid var(--line);display:flex;align-items:center;gap:12px;font-weight:600}.banner .dot{width:14px;height:14px;border-radius:50%;box-shadow:0 0 0 2px var(--line)}.banner .dot.w{background:#f5f5f5}.banner .dot.b{background:#2a2a2a;box-shadow:0 0 0 2px #555}.banner .prompt{color:var(--accent)}.banner .gameover{color:var(--gold);font-weight:800}.board-wrap{position:relative;width:min(86vw,640px);aspect-ratio:1}.board-svg{width:100%;height:100%;border-radius:14px;overflow:visible;filter:drop-shadow(0 24px 50px rgba(0,0,0,.55));display:block}.board-svg.coords{filter:none}.pc{transition:transform .5s cubic-bezier(.3,.9,.32,1);animation:pieceIn .28s ease both}@keyframes pieceIn{0%{opacity:0}to{opacity:1}}.pc .lift{transform-box:fill-box;transform-origin:50% 85%}.pc.moving .lift{animation:pieceHop .5s cubic-bezier(.4,0,.4,1)}@keyframes pieceHop{0%{transform:scale(1)}35%{transform:scale(1.13)}70%{transform:scale(1.1)}to{transform:scale(1)}}.pulse{animation:hlpulse 1.25s ease-in-out infinite}@keyframes hlpulse{0%,to{opacity:.45}50%{opacity:1}}.tgt{animation:tgtin .16s ease-out both;transform-box:fill-box;transform-origin:center}@keyframes tgtin{0%{opacity:0}to{opacity:1}}.controls{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}.btn{padding:10px 16px;border-radius:10px;border:1.5px solid var(--line);background:var(--panel2);color:var(--text);font-weight:600;cursor:pointer;transition:all .14s;font-size:14px}.btn:hover:not(:disabled){border-color:var(--accent)}.btn:disabled{opacity:.4;cursor:default}.btn.primary{background:linear-gradient(90deg,var(--sel),#4fd1c5);color:#08130d;border:none}.btn.danger{background:linear-gradient(90deg,var(--danger),#ff8a8a);color:#200;border:none}.btn.gold{background:linear-gradient(90deg,var(--gold),#ffb86b);color:#0b0e14;border:none}.side{display:flex;flex-direction:column;gap:14px}.panel{background:linear-gradient(180deg,var(--panel),var(--bg2));border:1px solid var(--line);border-radius:14px;padding:14px}.panel h4{margin:0 0 10px;font-size:12px;text-transform:uppercase;letter-spacing:1.2px;color:var(--muted)}.abilities-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:6px}.ab{position:relative;aspect-ratio:1;border-radius:10px;border:1.5px solid var(--line);background:var(--panel2);display:flex;align-items:center;justify-content:center;font-size:20px;cursor:pointer;transition:all .14s;font-family:var(--chess)}.ab:hover:not(.spent):not(.disabled){border-color:var(--accent);transform:translateY(-2px)}.ab.spent{opacity:.28;filter:grayscale(1);cursor:default}.ab.disabled{opacity:.5;cursor:default}.ab.active{border-color:var(--gold);box-shadow:0 0 0 2px var(--gold) inset,0 0 18px #f4c95d66}.ab .x{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;color:var(--danger);font-size:26px;pointer-events:none}.side-label{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;font-size:13px;color:var(--muted)}.captured{min-height:28px;font-size:22px;line-height:1.1;word-break:break-all;font-family:var(--chess)}.history{max-height:230px;overflow-y:auto;font-size:13px;font-family:SF Mono,ui-monospace,monospace}.history .row{display:flex;gap:8px;padding:2px 0}.history .num{color:var(--muted);width:28px}.history .mv{flex:1}.history .mv.ability{color:var(--gold)}.flow-box{border:1px solid var(--gold);background:#f4c95d12}.flow-box .prompt{font-size:14px;margin-bottom:12px;line-height:1.4}.flow-box .note{font-size:12px;color:var(--muted);margin-bottom:10px}.dir-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;width:150px;margin:0 auto 12px}.dir-grid .dir{aspect-ratio:1;border-radius:8px;border:1.5px solid var(--line);background:var(--panel2);cursor:pointer;font-size:18px;color:var(--text)}.dir-grid .dir:hover:not(:disabled){border-color:var(--gold)}.dir-grid .dir:disabled{opacity:.25;cursor:default}.dir-grid .center{background:transparent;border:none;font-family:var(--chess)}.flow-actions{display:flex;gap:8px}.flow-actions .btn{flex:1}.promo{display:flex;gap:8px;justify-content:center}.promo button{font-size:30px;width:52px;height:52px;border-radius:10px;border:1.5px solid var(--line);background:var(--panel2);cursor:pointer;font-family:var(--chess)}.promo button:hover{border-color:var(--accent)}.thinking{color:var(--accent2);font-style:italic}.fx-layer{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:5;overflow:hidden;border-radius:10px}.fx{position:absolute;transform:translate(-50%,-50%);font-family:var(--chess)}@keyframes fadeghost{0%{opacity:0;transform:translate(-50%,-50%) scale(.6)}30%{opacity:.9}to{opacity:0;transform:translate(-50%,-50%) scale(1.3)}}@keyframes flashpop{0%{opacity:0;transform:translate(-50%,-50%) scale(.2)}40%{opacity:1}to{opacity:0;transform:translate(-50%,-50%) scale(2.4)}}@keyframes glowpulse{0%,to{opacity:.35;transform:translate(-50%,-50%) scale(1)}50%{opacity:.9;transform:translate(-50%,-50%) scale(1.15)}}@keyframes shimmer{0%{opacity:0;transform:translate(-50%,-50%) scale(.3) rotate(0)}50%{opacity:1}to{opacity:0;transform:translate(-50%,-50%) scale(1.4) rotate(180deg)}}@keyframes beamgrow{0%{opacity:0}20%{opacity:1}to{opacity:0}}@keyframes diceroll{0%{transform:translate(-50%,-50%) rotate(0) scale(.5)}to{transform:translate(-50%,-50%) rotate(720deg) scale(1.2)}}.fx-ghost{font-size:5vw;animation:fadeghost 1s ease-out forwards;filter:drop-shadow(0 0 10px var(--accent2))}.fx-flash{width:8%;height:8%;border-radius:50%;background:radial-gradient(circle,#fff,var(--accent));animation:flashpop .7s ease-out forwards}.fx-glow{width:12%;height:12%;border-radius:14%;background:radial-gradient(circle,#b4b4c8e6,#788cb433);box-shadow:0 0 24px 6px #b4bedc99;animation:glowpulse 1.1s ease-in-out forwards}.fx-shimmer{font-size:3vw;animation:shimmer .9s ease-out forwards;filter:drop-shadow(0 0 6px var(--gold))}.fx-beam{background:linear-gradient(var(--beam-angle, 0deg),transparent,var(--accent2),#fff,var(--accent2),transparent);border-radius:6px;animation:beamgrow .9s ease-out forwards;filter:drop-shadow(0 0 12px var(--accent2))}.fx-dice{font-size:5vw;animation:diceroll .8s ease-in-out forwards}@keyframes castlespin{0%{opacity:0;transform:translate(-50%,-50%) scale(.4) rotate(0)}35%{opacity:1}to{opacity:0;transform:translate(-50%,-50%) scale(1.7) rotate(160deg)}}@keyframes swapfloat{0%{opacity:0;transform:translate(-50%,-50%) scale(.6)}40%{opacity:1}to{opacity:0;transform:translate(-50%,-130%) scale(1.1)}}@keyframes epfade{0%{opacity:.85;transform:translate(-50%,-50%) scale(1)}to{opacity:0;transform:translate(-50%,-50%) scale(.4) rotate(-25deg)}}@keyframes epslash{0%{opacity:0;transform:translate(-50%,-50%) scale(.2)}45%{opacity:1}to{opacity:0;transform:translate(-50%,-50%) scale(1.8)}}@keyframes promrise{0%{opacity:0;transform:translate(-50%,-20%) scale(.4)}40%{opacity:1}to{opacity:0;transform:translate(-50%,-95%) scale(1.5)}}@keyframes promring{0%{opacity:0;transform:translate(-50%,-50%) scale(.3)}40%{opacity:.95}to{opacity:0;transform:translate(-50%,-50%) scale(2.2)}}.fx-castlemove{width:12%;height:12%;border-radius:24%;border:.5vmin solid var(--gold);box-shadow:0 0 20px var(--gold);animation:castlespin .85s ease-out forwards}.fx-swap{font-size:3vw;color:var(--gold);font-weight:800;animation:swapfloat .9s ease-out forwards;filter:drop-shadow(0 0 8px var(--gold))}.fx-ep-ghost{font-size:5vw;color:#4fd1c5;animation:epfade .8s ease-out forwards;filter:drop-shadow(0 0 8px #4fd1c5)}.fx-ep-slash{font-size:4vw;color:#ff8a8a;font-weight:800;animation:epslash .7s ease-out forwards;filter:drop-shadow(0 0 6px #ff6b6b)}.fx-promote{font-size:4.4vw;color:var(--gold);animation:promrise 1s ease-out forwards;filter:drop-shadow(0 0 12px var(--gold))}.fx-promote-ring{width:12%;height:12%;border-radius:50%;border:.5vmin solid var(--gold);box-shadow:0 0 24px var(--gold);animation:promring .9s ease-out forwards}.fx-smoke{width:7.5%;height:7.5%;border-radius:50%;background:radial-gradient(circle,#dedee8f2,#a8a8b88c 55%,#9696a500 78%);animation:smoke .85s ease-out both}@keyframes smoke{0%{opacity:0;transform:translate(-50%,-50%) scale(.35)}18%{opacity:.95}to{opacity:0;transform:translate(calc(-50% + var(--dx,0px)),calc(-50% + var(--dy,0px))) scale(2)}}.fx-star{font-size:2.6vw;color:#ffe9a8;animation:starPop .6s ease-out both;filter:drop-shadow(0 0 7px var(--gold))}@keyframes starPop{0%{opacity:0;transform:translate(-50%,-50%) scale(.3) rotate(0)}35%{opacity:1}to{opacity:0;transform:translate(calc(-50% + var(--dx,0px)),calc(-50% + var(--dy,0px) - 14px)) scale(1.25) rotate(100deg)}}.pc.jump .lift{animation:bigJump .55s cubic-bezier(.35,0,.35,1)}@keyframes bigJump{0%{transform:scale(1) translateY(0)}42%{transform:scale(1.5) translateY(-32%)}78%{transform:scale(1.15) translateY(-5%)}to{transform:scale(1) translateY(0)}}.pc.fortfly .lift{animation:rookFly 1.15s cubic-bezier(.45,0,.5,1) both}@keyframes rookFly{0%{transform:translateY(0) scale(1);opacity:1}26%{transform:translateY(-68%) scale(1.12);opacity:1}33%{opacity:0}60%{opacity:0;transform:translateY(-68%) scale(1.12)}68%{opacity:1}90%{transform:translateY(3%) scale(1.06,.92)}to{transform:translateY(0) scale(1)}}.pc .fort-old{opacity:0}.pc .fort-new{opacity:1}.pc.fortfly .fort-old{animation:fortOldSwap 1.15s both}.pc.fortfly .fort-new{animation:fortNewSwap 1.15s both}@keyframes fortOldSwap{0%,32%{opacity:1}33%,to{opacity:0}}@keyframes fortNewSwap{0%,60%{opacity:0}68%,to{opacity:1}}.fx-castle{font-size:5vw;animation:castlePop .5s ease-in-out both;filter:drop-shadow(0 0 12px rgba(190,200,235,.9))}@keyframes castlePop{0%{opacity:0;transform:translate(-50%,-140%) scale(.4) rotate(-8deg)}30%{opacity:1;transform:translate(-50%,-155%) scale(1.1) rotate(4deg)}75%{opacity:1;transform:translate(-50%,-150%) scale(1)}to{opacity:0;transform:translate(-50%,-95%) scale(.7)}}.fx-strike{font-size:7vw;color:#fff;animation:strike .5s ease-in both;filter:drop-shadow(0 0 14px #9ecbff) drop-shadow(0 0 30px #6ea8fe)}@keyframes strike{0%{opacity:0;transform:translate(-50%,-260%) scale(1.7)}28%{opacity:1;transform:translate(-50%,-64%) scale(1.4)}55%{opacity:1;transform:translate(-50%,-50%) scale(1.15)}to{opacity:0;transform:translate(-50%,-50%) scale(1)}}.fx-crackle{font-size:2.4vw;color:#cfe4ff;animation:crackle .4s steps(3,jump-none) both;filter:drop-shadow(0 0 8px #6ea8fe)}@keyframes crackle{0%{opacity:0;transform:translate(calc(-50% + var(--dx,0px)),calc(-50% + var(--dy,0px))) scale(.6) rotate(-25deg)}40%{opacity:1;transform:translate(calc(-50% + var(--dx,0px)),calc(-50% + var(--dy,0px))) scale(1.2) rotate(15deg)}to{opacity:0;transform:translate(calc(-50% + var(--dx,0px)),calc(-50% + var(--dy,0px))) scale(.9) rotate(-10deg)}}.fx-rush{width:10.5%;height:10.5%;animation:queenRush .55s cubic-bezier(.55,0,.9,.45) both;filter:drop-shadow(0 0 12px #9ecbff) drop-shadow(0 0 26px #6ea8fe)}@keyframes queenRush{0%{opacity:0}12%{opacity:1}88%{opacity:1}to{opacity:0;left:var(--x1);top:var(--y1)}}.fx-bolt{font-size:3.2vw;color:#eaf3ff;animation:boltPop .5s ease-out both;filter:drop-shadow(0 0 10px #6ea8fe) drop-shadow(0 0 18px #b07bff)}.fx-bolt.small{font-size:2.2vw}@keyframes boltPop{0%{opacity:0;transform:translate(-50%,-50%) scale(.3) rotate(-15deg)}30%{opacity:1;transform:translate(-50%,-50%) scale(1.3) rotate(8deg)}60%{opacity:.85;transform:translate(-50%,-50%) scale(1) rotate(-6deg)}to{opacity:0;transform:translate(-50%,-50%) scale(.8)}}@media(max-width:880px){.game{grid-template-columns:1fr}.side{order:2}.board-wrap{width:min(94vw,560px)}.fx-ghost,.fx-ep-ghost{font-size:9vw}.fx-shimmer,.fx-dice,.fx-promote{font-size:7vw}.fx-swap,.fx-ep-slash{font-size:6vw}.fx-star{font-size:5vw}.fx-strike{font-size:11vw}.fx-crackle{font-size:4.5vw}.fx-bolt{font-size:6vw}.fx-bolt.small{font-size:4vw}.fx-castle{font-size:9vw}}
