/* Desktop play screen (≥900px, auction theme): seat paddles with their ledgers in the left rail,
   the sale log in the right rail, the dial and a large stage in the middle, the input below it.
   Design: "对局界面重设计", boards 05–06. Phones: valuation-play-mobile.css. */
.sale-log{display:none}
@media(min-width:900px){
  .game-app[data-theme=auction]:has(#play:not([hidden])){grid-template-columns:minmax(220px,280px) minmax(360px,1fr) minmax(220px,280px);grid-template-rows:60px minmax(0,1fr) 30px 56px}

  /* ---------- top bar: the same ⋯ menu as on phones ---------- */
  .game-app[data-theme=auction]:has(#play:not([hidden])) .topbar{position:relative;z-index:31}
  .game-app[data-theme=auction]:has(#play:not([hidden])) .topbar h1{font-size:28px}
  .game-app[data-theme=auction]:has(#play:not([hidden])) .game-menu-button{display:grid;place-items:center;grid-column:-2;grid-row:1;align-self:center;width:44px;height:44px;padding:0;border:2px solid #b7833699;background:#10182099;color:#f2e2b9}
  .game-app[data-theme=auction]:has(#play:not([hidden])) .game-menu-button:hover{border-color:#e4b75b}
  .game-app[data-theme=auction]:has(#play:not([hidden])) .top-actions{position:absolute;right:0;top:calc(100% + 6px);z-index:30;display:none;flex-direction:column;align-items:stretch;gap:4px;min-width:170px;padding:6px;border:2px solid #b78336;background:#102a2cf5;box-shadow:3px 4px 0 #0b1518b0}
  .game-app[data-theme=auction]:has(#play:not([hidden])) .topbar.menu-open .top-actions{display:flex}
  .game-app[data-theme=auction]:has(#play:not([hidden])) .top-actions button:not(.sound-button){display:flex;align-items:center;gap:8px;justify-content:flex-start;margin:0;min-height:44px;padding:6px 12px;text-align:left}
  .game-app[data-theme=auction]:has(#play:not([hidden])) .top-actions .settings-button::after{content:"设置";font-size:15px}

  /* ---------- left rail: seat paddles stacked, each with its ledger ---------- */
  .game-app[data-theme=auction]:has(#play:not([hidden])) .scoreboard{display:flex;flex-direction:column;gap:14px;grid-column:1;grid-row:2 / -1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:12px 4px 8px;scrollbar-width:thin;scrollbar-color:#8e673b transparent}
  .game-app[data-theme=auction]:has(#play:not([hidden])) .score{grid-column:auto!important;grid-row:auto;flex:0 0 auto;align-self:stretch;max-height:none;min-height:0;padding:12px 14px;gap:6px}
  .game-app[data-theme=auction]:has(#play:not([hidden])) .score>b{font-size:32px}
  .game-app[data-theme=auction]:has(#play:not([hidden])) .score .paddle-no{display:none}
  .game-app[data-theme=auction]:has(#play:not([hidden])) .score .summon-list{display:block;flex:none;max-height:min(30vh,220px)}
  .game-app[data-theme=auction]:has(#play:not([hidden])) .score .summon-list:empty{display:none}
  .game-app[data-theme=auction]:has(#play:not([hidden])) .summon-item{font-size:15px;line-height:28px;min-height:28px}
  .game-app[data-theme=auction][data-turn-focus=true]:has(#play:not([hidden])) .score.asset-vault.turn-current::after{display:none}
  .game-app[data-theme=auction][data-turn-focus=true]:has(#play:not([hidden])) .score.asset-vault.turn-current{border-color:#e4b75b;box-shadow:0 0 0 3px #e4b75b40,0 0 18px #e4b75b66}
  /* Three or more seats stack in the rail too, instead of a row across the top. */
  .game-app[data-theme=auction][data-multi=true]:has(#play:not([hidden])) .main{grid-column:2;grid-row:2;width:auto;justify-self:stretch}
  .game-app[data-theme=auction][data-multi=true]:has(#play:not([hidden])) .feedback-row{grid-row:3}
  .game-app[data-theme=auction][data-multi=true]:has(#play:not([hidden])) .move-form{grid-row:4}
  .game-app[data-theme=auction][data-multi=true]:has(#play:not([hidden])) .score .summon-list{max-height:min(16vh,140px)}
  /* Four to six seats (online rooms): compact paddles without ledgers so all fit; the sale log names every owner. */
  .game-app[data-theme=auction]:is([data-player-count="4"],[data-player-count="5"],[data-player-count="6"],[data-player-count="7"],[data-player-count="8"]):has(#play:not([hidden])) .scoreboard{display:flex;gap:10px}
  .game-app[data-theme=auction]:is([data-player-count="4"],[data-player-count="5"],[data-player-count="6"],[data-player-count="7"],[data-player-count="8"]):has(#play:not([hidden])) .score{padding:8px 12px;gap:2px}
  .game-app[data-theme=auction]:is([data-player-count="4"],[data-player-count="5"],[data-player-count="6"],[data-player-count="7"],[data-player-count="8"]):has(#play:not([hidden])) .score .summon-list{display:none}
  .game-app[data-theme=auction]:is([data-player-count="4"],[data-player-count="5"],[data-player-count="6"],[data-player-count="7"],[data-player-count="8"]):has(#play:not([hidden])) .score>b{font-size:26px}

  /* ---------- right rail: the sale log ---------- */
  .game-app[data-theme=auction]:has(#play:not([hidden])) .sale-log{display:flex;flex-direction:column;gap:8px;grid-column:3;grid-row:2 / -1;min-height:0;padding-top:12px}
  .sale-log-title{margin:0;font-size:13px;font-weight:400;color:#c9b98f;letter-spacing:.1em}
  .sale-log-list{list-style:none;margin:0;padding:0 4px 8px 0;display:flex;flex-direction:column;gap:8px;min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#8e673b transparent}
  .sale-log-list:empty::before{content:"还没有成交";display:block;padding:10px;border:2px dashed #5d6b5a88;color:#9fa894;font-size:13px}
  .sale-log-item{display:flex;align-items:center;gap:10px;padding:8px 10px;border:2px solid #5d6b5a;background:#10182099;color:#f2e2b9}
  .sale-log-item:first-child{border-color:#b78336;background:#16261fd9}
  .sale-log-item:not(:first-child){opacity:.85}
  .sale-log-thumb{flex:none;width:56px;height:40px;object-fit:contain;image-rendering:pixelated}
  .sale-log-item>div{display:flex;flex-direction:column;gap:2px;min-width:0}
  .sale-log-item small{font-size:12px;color:#c9b98f;white-space:nowrap}
  .sale-log-item span{display:flex;align-items:baseline;gap:8px;min-width:0}
  .sale-log-item b{font-family:var(--pixel-font);font-weight:400;font-size:20px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .sale-log-item em{font-style:normal;font-family:var(--pixel-font);font-size:16px;color:#ffd977;white-space:nowrap}

  /* ---------- middle: the dial, then the stage ---------- */
  .game-app[data-theme=auction]:has(#play:not([hidden])) .turn-label{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
  .game-app[data-theme=auction] .challenge{position:relative;flex:0 0 auto;min-height:0;display:grid;place-items:center;gap:0;padding:0 0 26px;background:none}
  .game-app[data-theme=auction] .challenge::before{content:"";grid-area:1 / 1;width:160px;height:160px;border-radius:50%;background:radial-gradient(#234a49,#12292b);box-shadow:inset 0 0 0 3px #1a0f05,0 0 0 4px #1a0f05,0 0 30px #e4b75b33}
  .game-app[data-theme=auction] .challenge>.chain,.game-app[data-theme=auction] .challenge>.timer{grid-area:1 / 1}
  .game-app[data-theme=auction] .chain{position:static;z-index:1;padding-bottom:12px}
  .game-app[data-theme=auction] .chain>b{font-size:84px;line-height:1;text-shadow:4px 4px 0 #1a0f05}
  .game-app[data-theme=auction] .chain>b.free{font-size:28px}
  .game-app[data-theme=auction] .chain p{position:absolute;left:50%;bottom:0;transform:translateX(-50%);margin:0;padding:2px 12px;font-size:13px;background:#10182099;white-space:nowrap}
  .game-app[data-theme=auction] .timer{position:relative;min-width:0;display:grid;place-items:center}
  .game-app[data-theme=auction] .timer::before{display:none}
  .game-app[data-theme=auction] .clock-face{width:190px;height:190px;filter:none}
  .game-app[data-theme=auction] .clock-face :is(.clock-rim,.clock-ticks,.classroom-clock-outline,#clock-hand,.clock-pin){display:none}
  .game-app[data-theme=auction] .clock-track{stroke:#3c5042;stroke-width:7}
  .game-app[data-theme=auction] .clock-progress{stroke:#e4b75b;stroke-width:7}
  .game-app[data-theme=auction] .timer.urgent .clock-progress{stroke:#ff9f82}
  .game-app[data-theme=auction] .timer-readout{position:absolute;left:50%;top:calc(50% + 42px);transform:translateX(-50%);z-index:1}
  .game-app[data-theme=auction] .timer-readout b{font-size:16px;color:#e4b75b}
  .game-app[data-theme=auction] .timer-readout span{font-size:13px}

  .game-app[data-theme=auction] #play{position:relative}
  .game-app[data-theme=auction] .auction-stage{flex:1 1 auto;min-height:200px;max-height:none}
  .game-app[data-theme=auction] .reward-chest{width:min(60%,240px);bottom:40px;max-height:calc(100% - 50px)}
  /* The last sale lies on the table as a price tag beside the chest. */
  .game-app[data-theme=auction]:has(#result-banner:not([hidden])) .latest-summon{display:none}
  .game-app[data-theme=auction] .latest-summon{position:absolute;left:4%;bottom:34px;z-index:2;width:auto;max-width:34%;min-height:0;display:flex;flex-direction:column;align-items:center;gap:4px;padding:0;border:0;background:none;box-shadow:none}
  .game-app[data-theme=auction] .latest-summon::before{display:none}
  .game-app[data-theme=auction] .latest-summon :is(.latest-summon-owner,.lot-no,.sold-stamp,.latest-summon-npc,.latest-summon-unit){display:none}
  .game-app[data-theme=auction] .latest-summon-thumb{position:static;width:120px;max-height:80px;height:auto;object-fit:contain;object-position:50% 100%;image-rendering:pixelated}
  .game-app[data-theme=auction] .latest-summon>:is(.latest-summon-word,.latest-summon-value){font-size:20px;line-height:1.2;background:#f2e2b9;color:#342721;border:2px solid #1a0f05;padding:3px 10px;transform:rotate(-3deg);max-width:100%;overflow:hidden;text-overflow:ellipsis}
  .game-app[data-theme=auction] .latest-summon>.latest-summon-value{margin-top:-6px;color:#946013}

  /* While a hand is revealed the input steps back; the owner's paddle lights up for the haul. */
  .game-app[data-theme=auction][data-celebration-layout] .move-form{opacity:.45}
  .game-app[data-theme=auction][data-celebration-layout] .score.turn-current{border-color:#ffe98a;box-shadow:0 0 0 3px #ffd65c66,0 0 26px #ffd65caa}
  /* Same notice bubble as on phones, kept in its row above the input. */
  .game-app[data-theme=auction]:has(#move-form:not([hidden])) .feedback-row{justify-content:center}
  .game-app[data-theme=auction]:has(#move-form:not([hidden])) #feedback:not(:empty){flex:0 1 auto;padding:4px 14px;border:2px solid #b7833699;border-radius:12px;background:#10241ff2;color:#f2e2b9;text-shadow:none;-webkit-line-clamp:1}
  .game-app[data-theme=auction]:has(#move-form:not([hidden])) #feedback.error:not(:empty){border-color:#e0806a;background:#3a1c16f2;color:#ffd9cc}
  .game-app[data-theme=auction]:has(#move-form:not([hidden])) #feedback.guest:not(:empty){border-color:#e4b75b;background:#2c2412f2;color:#ffe9b0;animation:notice-pop .32s cubic-bezier(.2,.9,.3,1.3)}
}
