/* Saltanat 0.3.88 — lightweight royal visual effects */
#gameScreen{isolation:isolate}
.royal-fx-layer{position:absolute;inset:0;z-index:740;pointer-events:none;overflow:hidden;contain:layout paint style}
.royal-fx-ring{position:absolute;width:28px;height:28px;margin:-14px 0 0 -14px;border:2px solid rgba(255,224,133,.72);border-radius:50%;box-shadow:0 0 12px rgba(212,175,55,.3);animation:royalFxRing .52s ease-out forwards}
.royal-fx-ring.trick{border-color:rgba(255,240,184,.88);animation-duration:.68s}
.royal-fx-particle{position:absolute;width:5px;height:5px;margin:-2.5px 0 0 -2.5px;border-radius:50%;background:linear-gradient(180deg,#fff4c6,#d4af37);box-shadow:0 0 6px rgba(255,218,105,.62);animation:royalFxParticle var(--fx-duration,.78s) cubic-bezier(.16,.72,.28,1) forwards}
.royal-fx-particle.soft{width:3px;height:3px;margin:-1.5px 0 0 -1.5px;opacity:.82}
.royal-fx-flash{position:absolute;inset:0;background:radial-gradient(circle at 50% 50%,rgba(255,228,143,.22),transparent 53%);animation:royalFxFlash .72s ease-out forwards}
.royal-sweep-banner{position:absolute;left:50%;top:43%;min-width:210px;padding:15px 22px;transform:translate(-50%,-50%);border:1px solid rgba(255,229,151,.78);border-radius:20px;color:#1a1205;background:linear-gradient(155deg,#fff0b5,#d4af37 62%,#9b681e);box-shadow:0 18px 48px rgba(0,0,0,.42),0 0 36px rgba(212,175,55,.28);font-size:23px;font-weight:1000;text-align:center;letter-spacing:-.4px;animation:royalSweepIn 1.45s cubic-bezier(.16,.82,.24,1) forwards}
.royal-sweep-banner small{display:block;margin-top:4px;font-size:12px;font-weight:850}

html[data-motion="full"] #gameScreen .player-info.active{position:relative;isolation:isolate}
html[data-motion="full"] #gameScreen .player-info.active::before{content:'';position:absolute;inset:-5px;border:1px solid rgba(255,222,125,.68);border-radius:inherit;box-shadow:0 0 0 0 rgba(212,175,55,.22),0 0 15px rgba(212,175,55,.2);animation:royalTurnAura 1.65s ease-in-out infinite;pointer-events:none}
html[data-motion="full"] #gameScreen .player-info.active::after{content:'';position:absolute;inset:-10px;border:1px solid rgba(255,239,187,.16);border-radius:inherit;animation:royalTurnOrbit 2.25s linear infinite;pointer-events:none}

#trickLayer .played-flight.royal-winning-card{z-index:9;animation:royalWinnerLift .7s cubic-bezier(.18,.82,.2,1)}
#trickLayer .played-flight.royal-winning-card::before{content:'';position:absolute;z-index:6;inset:-9px;border:1px solid rgba(255,229,145,.72);border-radius:14px;box-shadow:0 0 18px rgba(212,175,55,.48),inset 0 0 12px rgba(255,240,188,.18);animation:royalWinnerHalo .8s ease-out forwards;pointer-events:none}
#trickLayer .played-flight.royal-winning-card::after{content:'';position:absolute;z-index:7;inset:0;border-radius:10px;background:linear-gradient(112deg,transparent 18%,rgba(255,255,255,.7) 46%,transparent 66%);transform:translateX(-130%) skewX(-14deg);animation:royalCardShine .62s ease-out forwards;mix-blend-mode:screen;pointer-events:none}
.trump-medallion.royal-trump-flare{animation:royalTrumpPulse .82s cubic-bezier(.18,.85,.22,1)}
.trump-medallion.royal-trump-flare::after{content:'';position:absolute;inset:-8px;border:1px solid rgba(255,231,156,.7);border-radius:50%;animation:royalTrumpRing .82s ease-out forwards;pointer-events:none}
.score-wing strong.royal-score-pop{animation:royalScorePop .72s cubic-bezier(.2,.9,.22,1);text-shadow:0 0 12px rgba(255,226,127,.64)!important}
.team-trick-counter.royal-counter-pop{animation:royalCounterPop .58s cubic-bezier(.2,.9,.22,1)}
.result-card.royal-result-in,.offline-result-actions.royal-result-in{animation:royalResultIn .62s cubic-bezier(.16,.82,.22,1)}
.result-card.royal-result-win{box-shadow:0 22px 60px rgba(0,0,0,.48),0 0 30px rgba(212,175,55,.18)!important}
.royal-invalid-shake{animation:royalInvalidShake .32s ease-in-out!important}
.royal-unlock-toast{position:fixed;z-index:2500;left:50%;top:max(18px,env(safe-area-inset-top));width:min(340px,calc(100% - 24px));padding:12px 15px;transform:translateX(-50%);border:1px solid rgba(255,224,135,.55);border-radius:16px;color:#181105;background:linear-gradient(155deg,#fff0b6,#d4af37);box-shadow:0 16px 44px rgba(0,0,0,.42);font-size:13px;font-weight:950;text-align:center;animation:royalUnlockIn 2.8s cubic-bezier(.18,.82,.24,1) forwards}

html[data-motion="full"] dialog[open]>.dialog-card,
html[data-motion="full"] dialog[open]>.pause-card,
html[data-motion="full"] dialog[open]>.resume-card,
html[data-motion="full"] dialog[open]>.offline-settings-card,
html[data-motion="full"] dialog[open]>.last-trick-card,
html[data-motion="full"] dialog[open]>.card-settings-shell{animation:royalDialogIn .26s cubic-bezier(.16,.82,.24,1)}
html[data-motion="full"] .toast{animation:royalToastIn .28s cubic-bezier(.16,.82,.24,1)}

@keyframes royalFxRing{0%{opacity:.92;transform:scale(.38)}100%{opacity:0;transform:scale(3.15)}}
@keyframes royalFxParticle{0%{opacity:0;transform:translate3d(0,0,0) scale(.55)}14%{opacity:1}100%{opacity:0;transform:translate3d(var(--fx-x),var(--fx-y),0) scale(.15)}}
@keyframes royalFxFlash{0%{opacity:0}28%{opacity:1}100%{opacity:0}}
@keyframes royalSweepIn{0%{opacity:0;transform:translate(-50%,-42%) scale(.72)}18%{opacity:1;transform:translate(-50%,-50%) scale(1.05)}72%{opacity:1;transform:translate(-50%,-50%) scale(1)}100%{opacity:0;transform:translate(-50%,-58%) scale(.94)}}
@keyframes royalTurnAura{0%,100%{opacity:.55;box-shadow:0 0 0 0 rgba(212,175,55,.22),0 0 10px rgba(212,175,55,.16)}50%{opacity:1;box-shadow:0 0 0 5px rgba(212,175,55,0),0 0 20px rgba(212,175,55,.34)}}
@keyframes royalTurnOrbit{0%{opacity:.2;transform:scale(.94)}50%{opacity:.52;transform:scale(1.02)}100%{opacity:.2;transform:scale(.94)}}
@keyframes royalWinnerLift{0%,100%{transform:translateY(0) scale(1)}45%{transform:translateY(-7px) scale(1.035)}}
@keyframes royalWinnerHalo{0%{opacity:0;transform:scale(.75)}35%{opacity:1}100%{opacity:0;transform:scale(1.18)}}
@keyframes royalCardShine{0%{opacity:0;transform:translateX(-130%) skewX(-14deg)}18%{opacity:.9}100%{opacity:0;transform:translateX(135%) skewX(-14deg)}}
@keyframes royalTrumpPulse{0%{transform:scale(.82);filter:brightness(.85)}42%{transform:scale(1.1);filter:brightness(1.18)}100%{transform:scale(1);filter:brightness(1)}}
@keyframes royalTrumpRing{0%{opacity:.95;transform:scale(.55)}100%{opacity:0;transform:scale(1.6)}}
@keyframes royalScorePop{0%{transform:scale(.78)}45%{transform:scale(1.22)}100%{transform:scale(1)}}
@keyframes royalCounterPop{0%{transform:scale(.8)}45%{transform:scale(1.16)}100%{transform:scale(1)}}
@keyframes royalResultIn{0%{opacity:0;transform:translateY(20px) scale(.93)}100%{opacity:1;transform:translateY(0) scale(1)}}
@keyframes royalInvalidShake{0%,100%{transform:translateX(0)}25%{transform:translateX(-4px)}50%{transform:translateX(4px)}75%{transform:translateX(-2px)}}
@keyframes royalDialogIn{0%{opacity:0;transform:translateY(12px) scale(.96)}100%{opacity:1;transform:translateY(0) scale(1)}}
@keyframes royalToastIn{0%{opacity:0;transform:translateY(9px) scale(.96)}100%{opacity:1;transform:translateY(0) scale(1)}}
@keyframes royalUnlockIn{0%{opacity:0;transform:translate(-50%,-14px) scale(.94)}12%,78%{opacity:1;transform:translate(-50%,0) scale(1)}100%{opacity:0;transform:translate(-50%,-12px) scale(.96)}}

html[data-motion="reduced"] .royal-fx-layer,
html[data-motion="reduced"] .royal-unlock-toast{display:none!important}
html[data-motion="reduced"] #gameScreen .player-info.active::before,
html[data-motion="reduced"] #gameScreen .player-info.active::after,
html[data-motion="reduced"] #trickLayer .played-flight.royal-winning-card::before,
html[data-motion="reduced"] #trickLayer .played-flight.royal-winning-card::after,
html[data-motion="reduced"] .trump-medallion.royal-trump-flare::after{display:none!important}
html[data-motion="reduced"] .royal-winning-card,
html[data-motion="reduced"] .royal-trump-flare,
html[data-motion="reduced"] .royal-score-pop,
html[data-motion="reduced"] .royal-counter-pop,
html[data-motion="reduced"] .royal-result-in,
html[data-motion="reduced"] .royal-invalid-shake,
html[data-motion="reduced"] dialog[open]>* ,
html[data-motion="reduced"] .toast{animation:none!important;transition:none!important}

@media(prefers-reduced-motion:reduce){.royal-fx-layer,.royal-unlock-toast{display:none!important}}

/* Saltanat 0.3.90 — trick collection, trump cut and center trump announcement */
.royal-trump-announcement{position:absolute;z-index:26;left:50%;top:48%;min-width:186px;padding:12px 18px;display:flex;align-items:center;justify-content:center;gap:12px;transform:translate(-50%,-50%);border:1px solid rgba(255,231,155,.74);border-radius:19px;color:#fff8df;background:linear-gradient(155deg,rgba(3,31,23,.96),rgba(1,14,10,.98));box-shadow:0 20px 55px rgba(0,0,0,.48),0 0 30px rgba(212,175,55,.2);text-align:right;animation:royalTrumpAnnouncement 1.35s cubic-bezier(.16,.82,.24,1) forwards}
.royal-trump-announcement>span:last-child{display:grid;gap:1px}.royal-trump-announcement small{color:#c8d7d1;font-size:11px;font-weight:700}.royal-trump-announcement strong{color:#ffe7a0;font-size:22px;font-weight:1000;line-height:1.1}
.royal-trump-suit{width:52px;height:52px;display:grid;place-items:center;flex:none;border:1px solid rgba(255,233,170,.62);border-radius:16px;background:linear-gradient(145deg,#fff0b4,#c8952e);box-shadow:inset 0 1px 0 rgba(255,255,255,.55),0 8px 22px rgba(0,0,0,.28)}
.royal-trump-suit img{width:31px;height:31px;object-fit:contain}

.royal-cut-badge{position:absolute;z-index:28;min-width:112px;padding:8px 11px;display:flex;align-items:center;justify-content:center;gap:7px;transform:translate(-50%,-50%);border:1px solid rgba(255,229,145,.68);border-radius:999px;color:#1a1205;background:linear-gradient(145deg,#fff0b2,#d4af37);box-shadow:0 13px 34px rgba(0,0,0,.4),0 0 22px rgba(212,175,55,.28);font-size:11px;font-weight:1000;white-space:nowrap;animation:royalCutBadge .72s cubic-bezier(.16,.82,.24,1) forwards}
.royal-cut-badge i{position:relative;width:18px;height:18px;display:block}.royal-cut-badge i::before,.royal-cut-badge i::after{content:'';position:absolute;left:8px;top:0;width:2px;height:18px;border-radius:2px;background:#3b2607;transform:rotate(42deg)}.royal-cut-badge i::after{height:10px;top:4px;left:4px;transform:rotate(-42deg)}
#trickLayer .played-flight.royal-trump-cut{z-index:12;animation:royalTrumpCutCard .66s cubic-bezier(.16,.82,.24,1)}
#trickLayer .played-flight.royal-trump-cut::before{content:'';position:absolute;z-index:9;left:-18%;top:45%;width:136%;height:3px;border-radius:999px;background:linear-gradient(90deg,transparent,#fff7d0 26%,#d4af37 52%,#fff7d0 76%,transparent);box-shadow:0 0 10px rgba(255,226,128,.86);transform:rotate(-24deg) scaleX(0);transform-origin:center;animation:royalCutSlash .48s ease-out forwards;pointer-events:none}

.royal-trick-card-clone{position:absolute;z-index:24;pointer-events:none;will-change:transform,opacity;transform-origin:50% 50%}
.royal-trick-card-clone>.played-flight{position:relative!important;width:100%!important;height:100%!important;opacity:1!important;transform:none!important}
.royal-trick-card-clone .playing-card,.royal-trick-card-clone picture,.royal-trick-card-clone img.card-face{display:block!important;width:100%!important;height:100%!important;margin:0!important;padding:0!important;border-radius:10px!important;overflow:hidden!important;object-fit:fill!important;transform:none!important}
.royal-trick-card-clone .playing-card{border:0!important;background:transparent!important;box-shadow:none!important}.royal-trick-card-clone img.card-face{filter:drop-shadow(0 5px 5px rgba(0,0,0,.36))!important}
.seat-player.royal-trick-receiver .player-info,.seat-player.royal-trick-receiver .player-avatar-wrap{animation:royalTrickReceiver .72s cubic-bezier(.16,.82,.24,1)}

@keyframes royalTrumpAnnouncement{0%{opacity:0;transform:translate(-50%,-42%) scale(.76)}16%{opacity:1;transform:translate(-50%,-50%) scale(1.05)}68%{opacity:1;transform:translate(-50%,-50%) scale(1)}100%{opacity:0;transform:translate(-50%,-58%) scale(.94)}}
@keyframes royalCutBadge{0%{opacity:0;transform:translate(-50%,-50%) scale(.62)}18%{opacity:1;transform:translate(-50%,-66%) scale(1.05)}70%{opacity:1;transform:translate(-50%,-70%) scale(1)}100%{opacity:0;transform:translate(-50%,-94%) scale(.9)}}
@keyframes royalTrumpCutCard{0%{transform:rotate(0) scale(1)}22%{transform:rotate(-8deg) scale(1.08)}46%{transform:rotate(6deg) scale(1.04)}100%{transform:rotate(0) scale(1)}}
@keyframes royalCutSlash{0%{opacity:0;transform:rotate(-24deg) scaleX(0)}28%{opacity:1}72%{opacity:1;transform:rotate(-24deg) scaleX(1)}100%{opacity:0;transform:rotate(-24deg) scaleX(1.12)}}
@keyframes royalTrickReceiver{0%{filter:brightness(1);transform:scale(1)}45%{filter:brightness(1.28);transform:scale(1.12)}100%{filter:brightness(1);transform:scale(1)}}

html[data-motion="reduced"] .royal-trump-announcement,
html[data-motion="reduced"] .royal-cut-badge,
html[data-motion="reduced"] .royal-trick-card-clone{display:none!important}
html[data-motion="reduced"] #trickLayer .played-flight.royal-trump-cut,
html[data-motion="reduced"] .royal-trick-receiver{animation:none!important}
@media(prefers-reduced-motion:reduce){.royal-trump-announcement,.royal-cut-badge,.royal-trick-card-clone{display:none!important}}
