/* =====================================================================
   v0.73.2 — authoritative desktop match polish (r9)
   Loaded after the legacy sheets so the final 1v1 HUD has one predictable
   place for fullscreen fit, hand grouping, action states, and tooltips.
   ===================================================================== */

/* Card help floats above the board. It must never add height below the game. */
.card-tooltip{
  position:fixed;
  z-index:300;
  left:0;
  top:0;
  width:max-content;
  max-width:min(360px,calc(100vw - 28px));
  padding:8px 10px;
  border:1px solid rgba(222,177,85,.78);
  border-radius:7px;
  background:linear-gradient(180deg,rgba(30,17,35,.98),rgba(8,6,11,.99));
  box-shadow:0 10px 28px rgba(0,0,0,.72),inset 0 0 14px rgba(121,55,144,.16);
  color:#f0e6d2;
  font:600 11px/1.35 Inter,system-ui,sans-serif;
  pointer-events:none;
}

/* Resolution cards stay concealed until their initiative-ordered event plays. */
.result-card-shell{
  position:relative;
  width:auto;
  height:min(100%,154px);
  max-width:112px;
  max-height:100%;
  aspect-ratio:var(--card-ratio);
  perspective:900px;
  transform-style:preserve-3d;
}
.result-card-flipper{
  position:absolute;
  inset:0;
  transform:rotateY(0deg);
  transform-style:preserve-3d;
  transition:transform .56s cubic-bezier(.2,.72,.2,1);
  will-change:transform;
}
.result-card-shell.is-revealed .result-card-flipper{transform:rotateY(180deg)}
.result-card-shell.is-prechecked .result-card-flipper{transition:none}
.result-card-shell.active{z-index:20}
.result-card-shell::after{content:attr(data-resolution-state);position:absolute;left:50%;bottom:-14px;z-index:3;transform:translateX(-50%);padding:2px 5px;border-radius:3px;background:#160e1ddd;color:#cfc0d4;font:700 7px/1 Inter,system-ui,sans-serif;letter-spacing:.08em;white-space:nowrap}
.result-card-shell.own-sequence::after{color:#f4d483}
.result-card-shell.active::after{background:#d59d3e;color:#160d1b;box-shadow:0 0 12px #d59d3e88}
.result-card-shell.resolved{opacity:.76;filter:saturate(.76)}
.result-card-shell.upcoming:not(.own-sequence){opacity:.92}
.resolution-turning-point{margin:8px 0 0;color:#e5d6bc;font:600 11px/1.35 Inter,system-ui,sans-serif}
.first-match-guide{margin:7px auto 0;max-width:620px;text-align:left;color:#d9cfdf;font:12px/1.35 Inter,system-ui,sans-serif}.first-match-guide summary{cursor:pointer;color:#f0ca78;font-weight:800;font-size:10px;letter-spacing:.09em}.first-match-guide ol{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:6px 0;padding-left:18px}.first-match-guide li{padding-left:1px}.first-match-guide strong{color:#f5d685}.first-match-guide small{display:block;color:#bcaec3;font-size:10px}.first-match-guide button{float:right;margin-top:4px;padding:2px 5px;border:1px solid #8c765a;border-radius:3px;background:#201523;color:#d8c5a0;font:700 9px/1 Inter,system-ui,sans-serif;cursor:pointer}.board-resolving .first-match-guide{display:none}#solo-selection-board.is-resolving{grid-template-rows:calc(var(--u)*166) calc(var(--u)*106) calc(var(--u)*74) calc(var(--u)*154) calc(var(--u)*70)}#solo-selection-board.is-resolving #solo-round-message{grid-template-columns:minmax(calc(var(--u)*180),max-content) minmax(0,1fr);overflow:hidden}#solo-selection-board.is-resolving #solo-round-message #event-callout{height:100%!important;overflow:hidden!important}#solo-selection-board:not(.is-resolving) #solo-round-message{overflow:visible}#solo-selection-board:not(.is-resolving) #solo-round-message:has(.first-match-guide[open]){display:flex;align-items:center;padding:calc(var(--u)*4) calc(var(--u)*14)}#solo-selection-board:not(.is-resolving) #solo-round-message:has(.first-match-guide[open]) #solo-selection-message{display:none}#solo-selection-board:not(.is-resolving) .first-match-guide[open]{position:static;z-index:auto;display:flex;align-items:center;gap:calc(var(--u)*10);width:100%;max-width:none;margin:0;padding:0;border:0;background:none;box-shadow:none;overflow:visible}.first-match-guide[open] summary{flex:0 0 auto;list-style:none;white-space:nowrap}.first-match-guide[open] summary::-webkit-details-marker{display:none}.first-match-guide[open] ol{display:flex;flex:1;gap:calc(var(--u)*12);margin:0;padding:0;list-style:none}.first-match-guide[open] li{white-space:nowrap}.first-match-guide[open] small{display:none}.first-match-guide[open] button{float:none;flex:0 0 auto;margin:0}@media(max-height:820px),(max-width:1180px){.first-match-guide{margin-top:4px;font-size:11px}.first-match-guide[open]{font-size:10px}.first-match-guide[open] ol{gap:calc(var(--u)*7)}.first-match-guide[open] button{font-size:8px}}@media(max-width:700px){.first-match-guide{font-size:10px}.first-match-guide[open] summary{font-size:8px}.first-match-guide[open] li{font-size:8px}.first-match-guide[open] ol{gap:calc(var(--u)*4)}}
.result-card-back,
.result-card-front{
  position:absolute;
  inset:0;
  overflow:hidden;
  border-radius:8px;
  backface-visibility:hidden;
  -webkit-backface-visibility:hidden;
}
.result-card-front{
  transform:rotateY(180deg);
  transform-style:preserve-3d;
}
.result-card-front>.result-card{
  position:absolute!important;
  inset:0!important;
  width:100%!important;
  height:100%!important;
  max-width:none!important;
  max-height:none!important;
}
.result-card-back{
  display:grid;
  place-items:center;
  border:2px solid #d2a544;
  background:
    linear-gradient(145deg,rgba(73,24,91,.18),rgba(6,3,9,.22)),
    url("/assets/royal-card-back.png") center/cover no-repeat;
  box-shadow:inset 0 0 0 2px rgba(255,231,151,.14),inset 0 0 20px rgba(0,0,0,.48),0 9px 18px rgba(0,0,0,.55);
}
.ace-team .result-card-back{border-color:#d9a94b;box-shadow:inset 0 0 0 2px rgba(255,231,151,.14),inset 0 0 20px rgba(0,0,0,.48),0 0 13px rgba(213,155,50,.16),0 9px 18px rgba(0,0,0,.55)}
.human-team .result-card-back{border-color:#a96ac0;box-shadow:inset 0 0 0 2px rgba(232,190,255,.12),inset 0 0 20px rgba(0,0,0,.48),0 0 13px rgba(165,80,195,.18),0 9px 18px rgba(0,0,0,.55)}
.result-card-back-crown{
  color:#e7bd5b;
  font:700 28px/1 Georgia,serif;
  text-shadow:0 2px 5px #000,0 0 13px rgba(215,162,57,.38);
}
.result-card-back-slot{
  position:absolute;
  left:50%;
  bottom:7px;
  transform:translateX(-50%);
  padding:2px 6px;
  border:1px solid rgba(218,169,69,.42);
  border-radius:999px;
  background:rgba(8,4,11,.78);
  color:#e7c66e;
  font:800 7px/1 Inter,system-ui,sans-serif;
  letter-spacing:.08em;
  white-space:nowrap;
}
.resolution-focus.card-reveal-phase .result-track .queen-marker{
  transition-delay:.46s,0s,0s!important;
}

@media (min-width:1000px) and (min-height:720px){
  /* Lock the game canvas to the viewport; overlays and tooltips float above it. */
  body.game-active{
    height:100vh;
    min-height:0;
    overflow:hidden;
  }
  body.game-active>.shell{
    height:100vh;
    min-height:0;
    overflow:hidden;
  }
  #game-screen.solo-hud{
    min-height:0!important;
    overflow:hidden!important;
  }
  #game-screen.solo-hud .royal-board{
    max-height:calc(100vh - 86px)!important;
    min-height:0!important;
    overflow:hidden!important;
  }

  /* True centerline header and right-anchored opponent state. */
  #game-screen.solo-hud .game-topbar>.hud-chip:not(.initiative-chip){
    grid-column:2!important;
    grid-row:1!important;
    justify-self:center!important;
    transform:none!important;
  }
  #game-screen.solo-hud:not(.perspective-ace) .waiting-side-right,
  #game-screen.solo-hud.perspective-ace .waiting-side-left{
    justify-content:end!important;
  }
  #game-screen.solo-hud:not(.perspective-ace) .waiting-side-left,
  #game-screen.solo-hud.perspective-ace .waiting-side-right{
    justify-content:start!important;
  }
  #game-screen.solo-hud .waiting-side{
    height:146px!important;
    margin-top:-50px!important;
    align-self:end!important;
    align-items:stretch!important;
  }

  /* Each side reads as four equal, full-height bays beside the Path:
     one Future Beckon panel and three Waiting positions. */
  #game-screen.solo-hud .waiting-side .waiting-cluster,
  #game-screen.solo-hud .waiting-side .waiting-resource{
    height:146px!important;
    min-height:146px!important;
    align-self:stretch!important;
    grid-template-columns:minmax(0,1fr) 42px!important;
    grid-template-rows:auto minmax(0,1fr) minmax(0,1fr)!important;
    row-gap:2px!important;
  }
  #game-screen.solo-hud .waiting-side .waiting-resource .mini-deck{
    display:none!important;
  }
  #game-screen.solo-hud .waiting-side .waiting-resource>small{
    grid-column:1!important;
    grid-row:2!important;
    align-self:center!important;
    justify-self:start!important;
    color:#d6c9d8!important;
    font:700 10px/1.1 Inter,system-ui,sans-serif!important;
    letter-spacing:.02em!important;
    text-align:left!important;
  }
  #game-screen.solo-hud .waiting-side .waiting-resource>strong{
    grid-column:2!important;
    grid-row:2!important;
    align-self:center!important;
    justify-self:center!important;
    width:36px!important;
    height:36px!important;
  }
  #game-screen.solo-hud .waiting-side .waiting-resource>em{
    grid-column:1/3!important;
    grid-row:3!important;
    align-self:stretch!important;
    display:grid!important;
    grid-template-columns:minmax(0,1fr) 42px!important;
    align-items:center!important;
    width:100%!important;
    font-size:0!important;
    font-style:normal!important;
  }
  #game-screen.solo-hud .waiting-side .waiting-resource>em::before{
    content:"Next round";
    grid-column:1;
    justify-self:start;
    color:#c7a7cf;
    font:700 10px/1.1 Inter,system-ui,sans-serif;
    letter-spacing:.02em;
  }
  #game-screen.solo-hud .waiting-side .waiting-resource>em::after{
    content:attr(data-value);
    grid-column:2;
    justify-self:center;
    width:36px;
    height:36px;
    display:grid;
    place-items:center;
    border:2px solid #9f58bf;
    border-radius:50%;
    background:radial-gradient(circle,rgba(91,33,111,.9),rgba(13,8,17,.98) 72%);
    box-shadow:inset 0 0 8px rgba(0,0,0,.72),0 0 9px rgba(157,76,190,.22);
    color:#f1d8fb;
    font:800 18px/1 Georgia,serif;
  }
  #game-screen.solo-hud .waiting-side .waiting-cluster{
    grid-template-rows:18px minmax(0,1fr)!important;
  }
  #game-screen.solo-hud .waiting-side .waiting-cluster>span{
    align-self:start!important;
    text-align:center!important;
  }
  #game-screen.solo-hud .waiting-side .waiting-queen{
    height:auto!important;
    min-height:0!important;
  }
  #game-screen.solo-hud .waiting-side .waiting-empty i{
    min-height:0!important;
    padding-top:13px!important;
    place-items:start center!important;
  }
  #game-screen.solo-hud .waiting-side .waiting-empty i::after{
    content:"EMPTY"!important;
  }

  /* Extend the Queen's Path to leave the same 14px rhythm before the
     opponent Waiting group that Waiting keeps before Future Beckon. */
  #game-screen.solo-hud .edge-line-wrap{
    width:min(660px,calc(100% - 48px))!important;
    max-width:none!important;
    margin-left:auto!important;
    margin-right:auto!important;
  }

  /* Sorted hand groups get small, quiet labels and breathing room. */
  #game-screen.solo-hud .hand .card{
    overflow:visible!important;
  }
  #game-screen.solo-hud .hand .card[data-group-start="true"]:not(:first-child){
    margin-left:7px!important;
    box-shadow:-9px 0 0 -8px rgba(220,174,77,.64),0 7px 18px rgba(0,0,0,.34)!important;
  }
  #game-screen.solo-hud .hand-group-cue{
    position:absolute;
    z-index:4;
    left:50%;
    top:-18px;
    min-width:54px;
    padding:2px 5px;
    transform:translateX(-50%);
    border:1px solid rgba(208,160,68,.44);
    border-radius:999px;
    background:rgba(10,6,13,.94);
    box-shadow:0 3px 10px rgba(0,0,0,.5);
    color:#d8bb75;
    font:800 7px/1.15 Inter,system-ui,sans-serif;
    letter-spacing:.08em;
    text-align:center;
    white-space:nowrap;
    pointer-events:none;
  }
  #game-screen.solo-hud .hand-group-cue.hearts{color:#e98288}
  #game-screen.solo-hud .hand-group-cue.diamonds{color:#e79862}
  #game-screen.solo-hud .hand-group-cue.clubs{color:#68c799}
  #game-screen.solo-hud .hand-group-cue.spades{color:#d9d5df}
  #game-screen.solo-hud .hand-group-cue.court{color:#bc99e0}

  /* Disabled means unavailable, not broken; ready actions retain the crown glow. */
  #game-screen.solo-hud .queue-actions-inline button:disabled,
  #game-screen.solo-hud .discard-controls button:disabled{
    opacity:1!important;
    border-color:rgba(113,91,119,.58)!important;
    background:linear-gradient(180deg,rgba(31,23,35,.94),rgba(14,11,17,.98))!important;
    box-shadow:inset 0 0 0 1px rgba(255,255,255,.025)!important;
    color:#756b79!important;
    filter:saturate(.45)!important;
    cursor:not-allowed!important;
  }
  #game-screen.solo-hud #confirm-queue:not(:disabled),
  #game-screen.solo-hud #share-draft:not(:disabled){
    border-color:#d5a64d!important;
    background:linear-gradient(180deg,#6a2c79,#30133b)!important;
    box-shadow:inset 0 0 0 1px rgba(248,211,117,.3),0 0 13px rgba(154,60,183,.28)!important;
    color:#fff3cf!important;
  }
  #game-screen.solo-hud #confirm-queue:focus-visible,
  #game-screen.solo-hud #share-draft:focus-visible{
    outline:2px solid #f2cc6c!important;
    outline-offset:2px!important;
  }
}

@media (prefers-reduced-motion:reduce){
  .card-tooltip,
  .result-card-flipper{transition:none!important}
  .resolution-focus.card-reveal-phase .result-track .queen-marker{transition-delay:0s!important}
}
body.reduce-motion .result-card-flipper{transition:none!important}
body.reduce-motion .resolution-focus.card-reveal-phase .result-track .queen-marker{transition-delay:0s!important}

/* =====================================================================
   Cinematic gameplay feedback — rules-driven and deliberately brief.
   ===================================================================== */
.resolution-card{position:relative!important;isolation:isolate}
.result-card-shell.effect-source{
  z-index:25;
  filter:drop-shadow(0 0 10px rgba(237,193,91,.68));
}
.result-card-shell.effect-source::after{
  content:"";
  position:absolute;
  z-index:6;
  inset:-5px;
  border:1px solid rgba(244,207,107,.9);
  border-radius:11px;
  box-shadow:0 0 0 2px rgba(143,66,166,.32),0 0 20px rgba(228,180,74,.32);
  animation:active-slot-trace .72s ease-out both;
  pointer-events:none;
}
.effect-target{filter:drop-shadow(0 0 8px rgba(224,177,74,.42))}
.effect-tracer{
  position:absolute;
  z-index:18;
  left:var(--trace-x);
  top:var(--trace-y);
  width:var(--trace-length);
  height:2px;
  transform:rotate(var(--trace-angle));
  transform-origin:left center;
  border-radius:999px;
  background:linear-gradient(90deg,rgba(230,190,88,.92),rgba(180,83,211,.75),transparent);
  box-shadow:0 0 7px rgba(222,176,75,.62);
  pointer-events:none;
  animation:effect-trace .66s cubic-bezier(.2,.8,.2,1) both;
}
.effect-tracer.sever{height:3px;background:linear-gradient(90deg,#f7e8aa,#ff6969 55%,transparent)}
.effect-tracer.repel{background:linear-gradient(90deg,#c890ff,#fff2b0 60%,transparent)}

.resolution-focus.fx-beckon-human .active-track-wrap::after,
.resolution-focus.fx-beckon-ace .active-track-wrap::after{
  content:"";
  position:absolute;
  z-index:2;
  top:48%;
  width:49%;
  height:5px;
  border-radius:999px;
  background:linear-gradient(90deg,transparent,#8d46a7 45%,#f1c760);
  filter:blur(.3px);
  opacity:0;
  pointer-events:none;
  animation:queen-pull-trail .68s ease-out .38s both;
}
.resolution-focus.fx-beckon-human .active-track-wrap::after{left:1%;transform:scaleX(-1)}
.resolution-focus.fx-beckon-ace .active-track-wrap::after{right:1%}
.resolution-focus.fx-repel .result-track .queen-marker::after{
  content:"";
  position:absolute;
  inset:-8px;
  border:2px solid rgba(221,183,104,.85);
  border-radius:50%;
  pointer-events:none;
  animation:repel-shockwave .62s ease-out .36s both;
}
.resolution-focus.fx-center .result-track{animation:center-track-glow .72s ease-out .36s both}
.result-track-center.center-pulse{animation:center-pulse .72s ease-out both!important}

.resolution-pulls>span{position:relative;overflow:visible!important}
.resolution-pulls>span.meter-cut::after{
  content:"";
  position:absolute;
  z-index:5;
  left:14%;
  top:50%;
  width:72%;
  height:3px;
  transform:rotate(-13deg) scaleX(0);
  transform-origin:left center;
  border-radius:3px;
  background:linear-gradient(90deg,transparent,#fff4cd 18%,#ff5656 55%,transparent);
  box-shadow:0 0 8px #ff6565;
  animation:meter-slash .42s cubic-bezier(.2,.8,.2,1) both;
}
.resource-pop{animation:resource-pop .52s cubic-bezier(.18,.85,.22,1.22) both!important}

.result-card-shell.guard-block::before{
  content:"♢";
  position:absolute;
  z-index:30;
  left:50%;top:48%;
  width:48px;height:54px;
  display:grid;place-items:center;
  transform:translate(-50%,-50%);
  border:2px solid #e8d59b;
  border-radius:50% 50% 42% 42%;
  background:radial-gradient(circle,rgba(108,55,130,.72),rgba(19,8,25,.2));
  color:#fff1bf;
  font:800 25px/1 Georgia,serif;
  text-shadow:0 0 9px #fff;
  box-shadow:0 0 18px rgba(228,195,106,.72),inset 0 0 12px rgba(201,116,232,.35);
  pointer-events:none;
  animation:guard-shield .82s ease-out both;
}
.result-card-shell.guard-block,
.result-card-shell.destroy-blocked{animation:blocked-royal .92s ease-out both}
.result-card-shell.precheck-resolved{opacity:.30;filter:grayscale(.82) brightness(.64)}

.waiting-slot{position:relative;overflow:visible!important}
.destroyed-waiting-ghost{
  position:absolute;
  z-index:12;
  inset:8px;
  display:grid;
  place-items:center;
  color:#f0ca72;
  pointer-events:none;
  animation:destroy-queen .8s cubic-bezier(.2,.72,.2,1) both;
}
.destroyed-waiting-ghost b{font:700 31px/1 Georgia,serif;text-shadow:0 0 12px currentColor}
.destroyed-waiting-ghost em{font:700 7px/1 Inter,sans-serif;letter-spacing:.12em;text-transform:uppercase}
.destroyed-waiting-ghost i{
  position:absolute;
  left:50%;top:46%;
  width:4px;height:4px;
  border-radius:50%;
  background:#efca70;
  box-shadow:0 0 7px #efca70;
  animation:destroy-particle .72s ease-out both;
}
.destroyed-waiting-ghost i:nth-of-type(1){--px:-34px;--py:-24px}
.destroyed-waiting-ghost i:nth-of-type(2){--px:31px;--py:-18px;animation-delay:.04s}
.destroyed-waiting-ghost i:nth-of-type(3){--px:-27px;--py:28px;animation-delay:.07s}
.destroyed-waiting-ghost i:nth-of-type(4){--px:35px;--py:24px;animation-delay:.1s}
.waiting-arrival{animation:waiting-arrival .82s cubic-bezier(.18,.85,.22,1.15) both!important}
.waiting-slot.court-lighting{animation:court-lighting .95s ease-out both}
.waiting-flourish,.seating-flourish{
  position:absolute;
  z-index:14;
  left:50%;bottom:-4px;
  transform:translateX(-50%);
  padding:3px 9px;
  border:1px solid rgba(237,195,91,.72);
  border-radius:999px;
  background:#17091e;
  color:#f3d77f;
  font:800 7px/1 Inter,sans-serif;
  letter-spacing:.16em;
  white-space:nowrap;
  pointer-events:none;
  animation:waiting-flourish .9s ease-out both;
}
.seating-flourish{bottom:auto;top:50%;font-size:8px;animation:seating-flourish 1.05s ease-out both}
.waiting-tick .waiting-progress-pip.complete:last-of-type,
.waiting-tick small{animation:waiting-tick .58s cubic-bezier(.2,.9,.2,1.2) both!important}

.queen-seat.seat-arrival,
.queen-seat.final-seat-arrival{position:relative;animation:throne-seat 1.05s cubic-bezier(.18,.86,.2,1) both!important}
.queen-seat.seat-arrival::after,
.queen-seat.final-seat-arrival::after{
  content:"♛";
  position:absolute;
  z-index:8;
  left:50%;top:50%;
  color:#ffe49a;
  font:700 27px/1 Georgia,serif;
  text-shadow:0 0 15px #fff1a8,0 0 28px #d9973c;
  pointer-events:none;
  animation:queen-lands .95s cubic-bezier(.18,.9,.2,1.1) both;
}
.queen-seat.final-seat-arrival{animation-duration:1.45s!important}
.queen-seat.final-seat-arrival::after{animation-duration:1.35s}
.court-strip.court-celebration{animation:court-celebration 1.1s ease-out both}
.resolution-focus.fx-seat{animation:seat-stage-glow 1.05s ease-out both}
.resolution-focus.fx-final-seat{animation:final-seat-stage 1.5s ease-out both}
.resolution-focus.fx-double{animation:double-stage-pulse .62s cubic-bezier(.18,.86,.2,1) both}
.static-resolution-presentation .result-card-shell.active .result-card-front,
.static-resolution-presentation .result-card-flipper,
.static-resolution-presentation .result-card-shell,
.static-resolution-presentation .result-card-front,
.static-resolution-presentation .result-card-back,
.static-resolution-presentation .result-card,
.static-resolution-presentation .selection-path-panel,
.static-resolution-presentation #solo-queen-marker,
.static-resolution-presentation .result-track .queen-marker{animation:none!important;transition:none!important}
/* selection-v076.css loads later and gives the solo marker an important
   transition. This exact board selector keeps a restored resolution static. */
#game-screen.selection-board-active #solo-selection-board.static-resolution-presentation .selection-queen-track .queen-marker,
#resolution-panel.static-resolution-presentation .result-track .queen-marker{animation:none!important;transition:none!important}

.initiative-display.initiative-sweep,
.resolution-focus.initiative-sweep .event-callout{position:relative;overflow:hidden;animation:initiative-turn .72s ease-out both}
.initiative-display.initiative-sweep::after,
.resolution-focus.initiative-sweep .event-callout::after{
  content:"";
  position:absolute;
  inset:0;
  background:linear-gradient(110deg,transparent 18%,rgba(241,202,100,.34) 45%,rgba(169,75,199,.35) 55%,transparent 82%);
  transform:translateX(-120%);
  pointer-events:none;
  animation:initiative-sweep .72s ease-out both;
}

.slot.slot-deal-in{animation:slot-deal-in .42s cubic-bezier(.16,.84,.2,1.12) both}
.slot-return-to-hand{translate:0 145px;rotate:0 0 1 -7deg;scale:.82;opacity:.08!important;transition:translate .34s ease,rotate .34s ease,scale .34s ease,opacity .3s ease!important}
.hand .card.hand-returned{animation:hand-return .48s cubic-bezier(.17,.86,.2,1.12) both}
.hand .card.hand-dealt-in{animation:hand-deal .52s cubic-bezier(.17,.86,.2,1.08) both}
.hand .card.discard-sweep{z-index:80!important;animation:discard-sweep .42s cubic-bezier(.32,.02,.65,.22) both!important;pointer-events:none}
.hand-zone.deck-reshuffle::after{
  content:"SHUFFLING DECK";
  position:absolute;
  z-index:90;
  left:50%;top:50%;
  transform:translate(-50%,-50%);
  padding:7px 14px;
  border:1px solid #d8aa4e;
  border-radius:999px;
  background:rgba(17,7,22,.94);
  color:#efd075;
  font:800 9px/1 Inter,sans-serif;
  letter-spacing:.14em;
  box-shadow:0 0 22px rgba(182,81,210,.46);
  pointer-events:none;
  animation:shuffle-burst .72s ease-out both;
}
.hand-zone{position:relative}

.victory-card.victory-enter{animation:victory-enter 1.05s cubic-bezier(.16,.86,.2,1) both}
.victory-card.victory-enter .victory-crown{animation:victory-crown 1.2s ease-out .16s both}
.victory-card .victory-crown{transition:opacity .32s ease,text-shadow .32s ease}
.victory-card.victory-ceremony-complete .victory-crown{opacity:0;text-shadow:none;pointer-events:none}
.victory-card.victory-enter .victory-suits div{animation:victory-suit .64s cubic-bezier(.2,.9,.2,1.15) both}
.victory-card.victory-enter .victory-suits div:nth-child(2){animation-delay:.08s}
.victory-card.victory-enter .victory-suits div:nth-child(3){animation-delay:.16s}
.victory-card.victory-enter .victory-suits div:nth-child(4){animation-delay:.24s}

@keyframes active-slot-trace{0%{opacity:0;transform:scale(.92)}35%{opacity:1}100%{opacity:.45;transform:scale(1)}}
@keyframes effect-trace{0%{opacity:0;clip-path:inset(0 100% 0 0)}25%{opacity:1}75%{opacity:.9;clip-path:inset(0 0 0 0)}100%{opacity:0;clip-path:inset(0 0 0 100%)}}
@keyframes queen-pull-trail{0%{opacity:0;scale:.15 1}35%{opacity:.92}100%{opacity:0;scale:1 1}}
@keyframes repel-shockwave{0%{opacity:.9;transform:scale(.5)}100%{opacity:0;transform:scale(2.25)}}
@keyframes center-track-glow{0%,100%{box-shadow:inset 0 0 0 1px rgba(151,108,48,.42),0 4px 10px rgba(0,0,0,.42)}45%{box-shadow:inset 0 0 0 2px #f2cf70,0 0 28px rgba(213,110,236,.65)}}
@keyframes center-pulse{0%{scale:.75;box-shadow:0 0 0 0 rgba(242,205,112,.75)}55%{scale:1.32;box-shadow:0 0 0 12px rgba(177,75,203,0)}100%{scale:1}}
@keyframes meter-slash{0%{opacity:0;transform:rotate(-13deg) scaleX(0)}35%{opacity:1}75%{transform:rotate(-13deg) scaleX(1)}100%{opacity:0;transform:rotate(-13deg) scaleX(1)}}
@keyframes resource-pop{0%{translate:0 0;scale:1}40%{translate:0 -7px;scale:1.28;color:#fff0ad;text-shadow:0 0 14px #e5b94e}100%{translate:0 0;scale:1}}
@keyframes guard-shield{0%{opacity:0;scale:.55;rotate:-10deg}40%{opacity:1;scale:1.08;rotate:2deg}75%{opacity:.85;scale:1}100%{opacity:0;scale:1.22}}
@keyframes blocked-royal{0%,64%{opacity:1;filter:none}100%{opacity:.30;filter:grayscale(.82) brightness(.64)}}
@keyframes destroy-queen{0%{opacity:1;filter:none;clip-path:polygon(0 0,100% 0,100% 100%,0 100%)}55%{opacity:.9;filter:brightness(1.7);clip-path:polygon(0 0,47% 0,53% 38%,44% 59%,52% 100%,0 100%)}100%{opacity:0;scale:.76;filter:blur(3px);clip-path:polygon(0 0,42% 0,48% 35%,35% 60%,43% 100%,0 100%)}}
@keyframes destroy-particle{0%{opacity:1;translate:0 0;scale:1}100%{opacity:0;translate:var(--px) var(--py);scale:.25}}
@keyframes waiting-arrival{0%{opacity:0;translate:0 -18px;scale:.76}55%{opacity:1;translate:0 2px;scale:1.08}100%{translate:0 0;scale:1}}
@keyframes court-lighting{0%,100%{box-shadow:inset 0 0 0 1px rgba(150,106,42,.4)}45%{box-shadow:inset 0 0 0 2px rgba(255,224,128,.75),0 0 25px rgba(203,142,43,.62)}}
@keyframes waiting-flourish{0%{opacity:0;translate:0 9px;scale:.8}35%,72%{opacity:1;translate:0 0;scale:1}100%{opacity:0;translate:0 -5px}}
@keyframes seating-flourish{0%{opacity:0;translate:0 18px;scale:.72}40%,72%{opacity:1;translate:0 -50%;scale:1.08}100%{opacity:0;translate:0 -78%;scale:1}}
@keyframes waiting-tick{0%{scale:.72;opacity:.4}50%{scale:1.24;color:#fff0ac;text-shadow:0 0 10px #e8b947}100%{scale:1;opacity:1}}
@keyframes throne-seat{0%{filter:brightness(.55);scale:.95}48%{filter:brightness(1.7);scale:1.035;box-shadow:0 0 24px rgba(235,190,83,.72)}100%{filter:none;scale:1}}
@keyframes queen-lands{0%{opacity:0;translate:0 -46px;scale:1.45}55%{opacity:1;translate:0 3px;scale:.94}78%{translate:0 -2px;scale:1.04}100%{opacity:0;translate:0 0;scale:1}}
@keyframes court-celebration{0%,100%{filter:none}44%{filter:brightness(1.45) saturate(1.22);box-shadow:0 0 30px rgba(235,187,72,.48)}}
@keyframes seat-stage-glow{0%,100%{filter:none}50%{filter:brightness(1.22);box-shadow:inset 0 0 45px rgba(230,180,73,.22),0 0 30px rgba(158,63,188,.26)}}
@keyframes final-seat-stage{0%,100%{filter:none}42%,68%{filter:brightness(1.32);box-shadow:inset 0 0 70px rgba(242,200,96,.28),0 0 52px rgba(170,66,203,.38)}}
@keyframes double-stage-pulse{0%{filter:none;scale:1}45%{filter:brightness(1.24) saturate(1.16);scale:1.012;box-shadow:inset 0 0 34px rgba(100,210,255,.18)}100%{filter:none;scale:1}}
@keyframes initiative-turn{0%{scale:.96;opacity:.72}50%{scale:1.04;color:#ffe8a0}100%{scale:1;opacity:1}}
@keyframes initiative-sweep{0%{transform:translateX(-120%)}100%{transform:translateX(120%)}}
@keyframes slot-deal-in{0%{opacity:0;translate:0 44px;rotate:-5deg;scale:.78}65%{opacity:1;translate:0 -3px;rotate:1deg;scale:1.04}100%{translate:0 0;rotate:0;scale:1}}
@keyframes hand-return{0%{opacity:.15;translate:0 -115px;rotate:-6deg;scale:.78}70%{opacity:1;translate:0 3px;scale:1.04}100%{translate:0 0;rotate:0;scale:1}}
@keyframes hand-deal{0%{opacity:0;translate:55px -85px;rotate:y 88deg;scale:.78}55%{opacity:1;rotate:y 0deg;translate:-3px 2px;scale:1.04}100%{translate:0 0;rotate:y 0deg;scale:1}}
@keyframes discard-sweep{0%{translate:0 0;rotate:y 0deg;scale:1;clip-path:inset(0)}52%{translate:0 -8px;rotate:y 180deg;scale:.9;clip-path:inset(0)}100%{translate:120px 58px;rotate:y 180deg;scale:.55;clip-path:inset(0 0 100% 0)}}
@keyframes shuffle-burst{0%{opacity:0;scale:.76;rotate:-4deg}35%,70%{opacity:1;scale:1.05;rotate:2deg}100%{opacity:0;scale:.94;rotate:0}}
@keyframes victory-enter{0%{opacity:0;translate:0 32px;scale:.9;filter:blur(4px)}55%{opacity:1;translate:0 -3px;scale:1.015;filter:none}100%{translate:0 0;scale:1}}
@keyframes victory-crown{0%{opacity:0;translate:0 -30px;scale:.65}55%{opacity:1;translate:0 3px;scale:1.16;text-shadow:0 0 38px #ffe696}100%{translate:0 0;scale:1}}
@keyframes victory-suit{0%{opacity:0;scale:.55;rotate:-8deg}70%{opacity:1;scale:1.08;rotate:2deg}100%{scale:1;rotate:0}}

@media (prefers-reduced-motion:reduce){
  .effect-tracer,.waiting-flourish,.seating-flourish,.destroyed-waiting-ghost{display:none!important}
  :is(.effect-source,.effect-target,.meter-cut,.resource-pop,.waiting-arrival,.waiting-tick,.court-lighting,.seat-departure,.guard-block,.destroy-blocked,.seat-arrival,.final-seat-arrival,.court-celebration,.initiative-sweep,.slot-deal-in,.slot-return-to-hand,.hand-returned,.hand-dealt-in,.discard-sweep,.deck-reshuffle,.victory-enter){animation:none!important;transition:none!important;translate:none!important;rotate:none!important;scale:none!important}
}
body.reduce-motion .effect-tracer,
body.reduce-motion :is(.waiting-flourish,.seating-flourish,.destroyed-waiting-ghost){display:none!important}
body.reduce-motion :is(.effect-source,.effect-target,.meter-cut,.resource-pop,.waiting-arrival,.waiting-tick,.court-lighting,.seat-departure,.guard-block,.destroy-blocked,.seat-arrival,.final-seat-arrival,.court-celebration,.initiative-sweep,.slot-deal-in,.slot-return-to-hand,.hand-returned,.hand-dealt-in,.discard-sweep,.deck-reshuffle,.victory-enter){animation:none!important;transition:none!important;translate:none!important;rotate:none!important;scale:none!important}
body.reduce-motion .victory-card .victory-crown{transition:none!important}
body.reduce-motion .result-card-shell.precheck-resolved{opacity:.30!important;filter:grayscale(.82) brightness(.64)!important}

/* Narrow desktops can show a fitted board wider than the viewport. Keep the
   expanded beginner guide within the actual visible width and wrap its proof
   of automatic seating instead of clipping its final qualification. */
@media(max-width:1000px){#solo-selection-board:not(.is-resolving):has(.first-match-guide[open]){grid-template-rows:calc(var(--u)*176) calc(var(--u)*114) minmax(112px,auto) calc(var(--u)*168) calc(var(--u)*72)}#solo-selection-board:not(.is-resolving) #solo-round-message:has(.first-match-guide[open]){justify-content:center;align-items:flex-start}.first-match-guide[open]{width:min(100%,calc(100vw - 24px))!important;max-width:calc(100vw - 24px)!important;flex-wrap:wrap;row-gap:calc(var(--u)*5)}.first-match-guide[open] ol{flex:1 1 100%;flex-wrap:wrap}.first-match-guide[open] li{flex:1 1 30%;min-width:0;white-space:normal}.first-match-guide[open] small{display:block;flex:1 1 100%;white-space:normal}.first-match-guide[open] button{margin-left:auto}}

/* The expanded desktop guide must retain its explanatory proof after the
   command banner is intentionally hidden, rather than leaving only its steps. */
@media(min-width:1001px){.first-match-guide[open]{flex-wrap:wrap;row-gap:calc(var(--u)*5)}.first-match-guide[open] small{display:block;flex:1 1 100%;white-space:normal}}
