/* Word item artwork: a full-size reveal above the chest, then a lot photo on the receipt. Auction theme only. */
.lot-layer{position:absolute;inset:0;z-index:2;pointer-events:none;overflow:hidden;contain:strict}
.lot-item{position:absolute;opacity:0;will-change:transform,opacity,clip-path}
.lot-item-image{position:relative;display:block;width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 5px 0 #10182085);user-select:none}
.game-app:not([data-theme=auction]) .lot-layer{display:none}

.latest-summon{--lot-thumb:46px}
.latest-summon[data-thumb=true]{padding-left:calc(var(--lot-thumb) + 16px)}
.latest-summon-thumb{position:absolute;left:7px;bottom:4px;z-index:1;width:var(--lot-thumb);height:calc(var(--lot-thumb) * 1.15);object-fit:contain;object-position:50% 100%;filter:drop-shadow(0 3px 0 #10182066);pointer-events:none;user-select:none;animation:lot-thumb-in 260ms steps(4,end) both}
.latest-summon-thumb[hidden]{display:none}
.game-app:not([data-theme=auction]) .latest-summon-thumb{display:none}
.compact .latest-summon{--lot-thumb:32px}
.tiny .latest-summon{--lot-thumb:26px}
@media(min-width:900px){.latest-summon{--lot-thumb:62px}}
@media(min-width:900px) and (max-height:740px){.latest-summon{--lot-thumb:50px}}
@keyframes lot-thumb-in{from{opacity:0;transform:translateY(8px) scale(.7)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.latest-summon-thumb{animation:none}}

/* Appraisal: gold-rimmed silhouettes flicker where the lot will appear. */
.lot-silhouette{position:absolute;opacity:.8;animation:lot-silhouette-flicker 340ms steps(2,end) infinite}
.lot-silhouette-image{display:block;width:100%;height:100%;object-fit:contain;object-position:50% 100%;filter:brightness(0) drop-shadow(1px 0 0 #e4b75b) drop-shadow(-1px 0 0 #e4b75b) drop-shadow(0 -1px 0 #e4b75b) drop-shadow(0 0 10px #e4b75b80);user-select:none}
@keyframes lot-silhouette-flicker{50%{opacity:.55}}

/* Entrance: lots rain behind the setup panel; a tap names one. */
.item-rain{position:absolute;inset:0;z-index:-1;width:100%;height:100%;pointer-events:none}
.item-rain-label{position:absolute;left:0;top:0;z-index:30;pointer-events:none;padding:2px 9px;border:2px solid #b78336;background:#f2e2b9;box-shadow:2px 2px 0 #101820a0;color:#2a1f17;font-family:var(--word-font,inherit);font-weight:700;font-size:15px;line-height:1.35;letter-spacing:.06em;white-space:nowrap}
.item-rain-label[hidden]{display:none}
/* While the opening is prepared, lots fly in front of the panel into its open chest. */
.game-app[data-scene=vacuum] .item-rain{z-index:3}
.game-app[data-theme=auction][data-scene=vacuum] .setup-title::before{background-image:url('/assets/auction-v4/coffer-open-v4.png')}

/* Victory: the winner's display wall. Rows of lots step along on a shared beat behind the interface. */
.victory-wall{position:absolute;inset:0;z-index:-1;overflow:hidden;pointer-events:none;background:radial-gradient(ellipse at 50% 42%,#6b4c16f0,#1a3035f2 75%);animation:victory-in 700ms cubic-bezier(.2,.8,.3,1) both;transition:opacity .3s}
.victory-wall[data-goal=lowest]{background:radial-gradient(ellipse at 50% 42%,#3c6449f0,#1a3035f2 75%)}
.victory-wall[data-leaving=true]{opacity:0}
.victory-wall::before{content:'';position:absolute;inset:0;z-index:1;background:linear-gradient(100deg,transparent 38%,#ffe6a01c 46%,#ffe6a03a 50%,#ffe6a01c 54%,transparent 62%) 0 0/260% 100% no-repeat;animation:victory-sheen calc(var(--beat) * 4) linear infinite}
.victory-wall::after{content:'';position:absolute;inset:0;z-index:1;background:radial-gradient(ellipse at 50% 46%,#10182000 40%,#10182070 92%),linear-gradient(#10182059,transparent 20%,transparent 78%,#10182070)}
.victory-rows{position:absolute;inset:-25% -35%;display:flex;flex-direction:column;justify-content:center;gap:calc(var(--tile) * .45);transform:rotate(-8deg)}
.victory-row{flex:none;height:var(--tile);display:flex;overflow:visible}
.victory-track{flex:none;display:flex;will-change:transform}
.victory-tile{position:relative;flex:none;width:var(--slot);height:var(--tile);display:grid;place-items:center;animation:victory-bob var(--beat) cubic-bezier(.3,.7,.4,1) infinite}
.victory-row[data-row="1"] .victory-tile{animation-delay:calc(var(--beat) / -2)}
.victory-tile img{width:var(--tile);height:var(--tile);object-fit:contain;opacity:.8;filter:saturate(.85) drop-shadow(0 4px 0 #0b151880);user-select:none}
.victory-tile.own img{opacity:1;filter:drop-shadow(0 4px 0 #0b151880) drop-shadow(0 0 10px #ffd77999)}
.victory-tile.own::before{content:'';position:absolute;inset:-14%;background:radial-gradient(closest-side,#ffd7795c,#ffd77900)}
@keyframes victory-in{from{opacity:0;transform:scale(1.08)}to{opacity:1;transform:none}}
@keyframes victory-sheen{from{background-position:130% 0}to{background-position:-30% 0}}
@keyframes victory-bob{0%,30%{transform:none}42%{transform:translateY(-5px) scale(1.07,.95)}58%{transform:translateY(0) scale(.98,1.02)}72%,100%{transform:none}}
@media(prefers-reduced-motion:reduce){.lot-silhouette,.victory-wall,.victory-wall::before,.victory-tile{animation:none}}
