/* v44: shared platform additions; retain the established bespoke chrome. */
body { --felt-art:url('../assets/art/felt-green-v44.webp'); }
body[data-table-palette="pink"] { --felt-art:url('../assets/art/felt-pink-v44.webp'); }
body[data-table-palette="blue"] { --felt-art:url('../assets/art/felt-blue-v44.webp'); }
body[data-table-palette="red"] { --felt-art:url('../assets/art/felt-red-v44.webp'); }
body[data-table-palette="purple"] { --felt-art:url('../assets/art/felt-purple-v44.webp'); }
body[data-table-palette="cream"] { --felt-art:url('../assets/art/felt-cream-v44.webp'); }
body[data-table-palette="charcoal"] { --felt-art:url('../assets/art/felt-charcoal-v44.webp'); }
body #feltBg { inset:0!important; background-image:var(--felt-art)!important; background-size:100% 100%!important; background-position:center!important; background-repeat:no-repeat!important; image-rendering:pixelated; }
/* Artwork supplies the felt and corner accents. Preserve existing light
   atmospheric particles, without stacking the old decorative overlay. */
#blossomBranch { display:none!important; }
body.felt-plain #feltBg { background-image:var(--felt-art)!important; }
body.felt-baize #feltBg,body.felt-linen #feltBg { background-image:var(--felt-art)!important; }
body .title-card-fan { left:3.2vw!important; top:27vh!important; width:min(58vw,830px)!important; height:auto!important; aspect-ratio:3/2; transform:none!important;filter:none!important; }
.title-card-fan img { display:block;position:absolute;inset:0;width:100%;height:100%;object-fit:contain;image-rendering:pixelated;pointer-events:none; }
.title-card-fan .hero-fan-art { animation:heroFloatV44 7s ease-in-out infinite; }
.title-card-fan .hero-sparkle-art { animation:heroSparkV44 4.8s steps(6,end) infinite; }
@keyframes heroFloatV44 {0%,100%{translate:0 0}50%{translate:0 -7px}}
@keyframes heroSparkV44 {0%,100%{opacity:.25;translate:0 2px}50%{opacity:.72;translate:0 -3px}}
body.no-motion .title-card-fan img {animation:none!important;}
@media(prefers-reduced-motion:reduce){.title-card-fan img{animation:none!important;}}
#screen-start .title-menu-button { font-size:clamp(23px,2.3vw,34px); }
#screen-start #btnProgress small { font-size:12px;white-space:nowrap; }
/* The action rail uses the same physical baseline for every button. */
body .action-bar #btnReact { box-shadow:0 5px 0 #100e0c,inset 0 2px 0 rgba(255,255,255,.12)!important; border-bottom-width:3px!important; transform:none; align-self:stretch; }
body .action-bar #btnReact:active { transform:translateY(3px);box-shadow:0 2px 0 #100e0c,inset 0 1px 0 rgba(255,255,255,.1)!important; }
#playerRail .pchip .pchip-card-glyph { width:29px!important;min-width:29px!important;height:29px!important;flex-basis:29px!important; background-size:contain!important; }
#playerRail .pchip .pchip-count { gap:5px!important; }
#playerRail .pchip .pchip-point-glyph { display:none!important; }
.game-picker {display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin:16px 0 20px;}
.game-choice {appearance:none;min-height:77px;border:3px solid var(--ink,#171014);border-radius:8px;background:var(--panel,#292321);color:var(--cream,#f8e6b9);box-shadow:0 4px 0 #140f13;cursor:pointer;padding:9px 5px;font-family:var(--ui-display,'Tektur',monospace);}
.game-choice strong {display:block;font-size:23px;line-height:1.1;}
.game-choice small {display:block;font-size:12px;margin-top:7px;line-height:1.3;opacity:.8;}
.game-choice.active {border-color:var(--gold,#e7ba44);background:#463222;}
body.light .game-choice {background:#f1e2be;color:#33251f;}
body.light .game-choice.active {background:#f7ce6c;}
.game-choice:focus-visible,.card:focus-visible {outline:3px solid var(--gold);outline-offset:4px;}
.play-hub-panel {max-height:calc(100dvh - 28px);overflow-y:auto;}
.play-hub-grid .practice-mode {grid-column:1/-1;min-height:98px;}
.game-context {font-size:15px;line-height:1.45;text-align:center;margin:15px 0 4px;opacity:.8;}
body[data-game="kounga"] #teamScoreRail,body[data-game="kounga"] #partnershipBoard,body[data-game="kounga"] #gameControls,body[data-game="kounga"] #partnershipActions {display:none!important;}
body:not([data-game="kounga"]) #tableArea,body:not([data-game="kounga"]) .piles-row,body:not([data-game="kounga"]) #btnLayDown,body:not([data-game="kounga"]) #btnPatch,body:not([data-game="kounga"]) #btnSwap,body:not([data-game="kounga"]) #btnDiscard {display:none!important;}
.team-score-rail {display:flex;align-items:center;justify-content:center;gap:12px;margin:8px 0 4px;flex:0 0 auto;}
.team-score {display:flex;align-items:baseline;gap:10px;padding:5px 14px;border:2px solid rgba(25,17,22,.5);border-radius:6px;background:rgba(23,17,20,.6);color:#f6e7c9;font-size:16px;}
.team-score strong {font-size:24px;color:#f4cb61;font-variant-numeric:tabular-nums;}
.team-score.own-team {border-color:#d7ad55;}
.team-score-rail>small {font-size:13px;opacity:.8;}
.partnership-board {display:flex;flex:1 1 130px;min-height:120px;flex-direction:column;justify-content:center;align-items:center;gap:12px;position:relative;width:100%;overflow:visible;}
.partnership-status {font-size:18px;text-align:center;text-shadow:0 2px #332333;max-width:700px;line-height:1.4;padding:0 12px;}
.trick-cards {display:flex;justify-content:center;gap:14px;position:relative;min-height:130px;align-items:center;flex-wrap:wrap;padding:8px 12px 20px;max-width:100%;}
.trick-cards .card {margin:0!important;position:relative;cursor:default;width:83px;height:119px;flex:0 0 83px;--card-w:83px;--card-h:119px;transform:none!important;}
.trick-cards:has(>.card:nth-of-type(7)) {gap:3px;}
.trick-cards:has(>.card:nth-of-type(7))>.card {width:60px;height:88px;flex-basis:60px;--card-w:60px;--card-h:88px;}
.trick-play {display:flex;align-items:center;flex-direction:column;gap:7px;min-width:0;}
.trick-play small {font-size:14px;text-align:center;max-width:95px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.trick-cards.last-trick {opacity:.62;}
.trick-owner {position:absolute;bottom:0;text-align:center;width:100%;font-size:14px;}
.trick-empty {font-size:23px;opacity:.65;}
.partnership-details {min-height:21px;font-size:14px;opacity:.85;text-align:center;}
.game-controls {display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:9px;min-height:36px;flex:0 0 auto;padding:4px 10px;max-width:100%;}
.game-field {display:flex;gap:8px;align-items:center;font-size:16px;}
.game-field select {font:inherit;font-weight:700;color:var(--cream);background:var(--panel,#2f2528);border:2px solid var(--gold);border-radius:5px;padding:7px 10px;min-height:38px;max-width:180px;}
body.light .game-field select {background:#f5e8c7;color:#2d2520;}
.partnership-actions {display:flex;justify-content:center;align-items:stretch;gap:9px;flex-wrap:wrap;}
.partnership-actions .btn {font-size:18px;min-height:44px;padding:7px 17px;}
body:not([data-game="kounga"]) .action-bar {flex-wrap:wrap;align-items:stretch;gap:9px;}
.game-wait,.exchange-instruction,.declaration-list {font-size:15px;line-height:1.35;text-align:center;max-width:740px;}
.pilotta-call {font-size:15px;display:flex;gap:8px;align-items:center;}
.pilotta-call input {accent-color:var(--gold);width:18px;height:18px;}
#handRow .card.legal-card {box-shadow:0 4px 0 #241323,0 0 0 2px #f0c458;}
#handRow .card.unplayable {opacity:.74;}
#handRow .card[data-exchange-order]:not([data-exchange-order=""])::after {content:attr(data-exchange-order);position:absolute;top:-25px;left:2px;font:800 17px var(--ui-display);color:#271c25;background:#f6c84e;border:2px solid #251a24;min-width:22px;line-height:23px;text-align:center;z-index:2;}
.special-face {position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;overflow:hidden;color:#30202e;}
.special-rank {position:absolute;top:6%;left:7%;font:bold clamp(9px,1.4vw,16px) var(--ui-display);}
.special-art {position:absolute;left:8%;right:8%;top:24%;aspect-ratio:1;background-image:url('../assets/art/tichu-specials-v44.webp');background-size:200% 200%;image-rendering:pixelated;}
.special-mahjong .special-art {background-position:0 0;}
.special-dog .special-art {background-position:100% 0;}
.special-phoenix .special-art {background-position:0 100%;}
.special-dragon .special-art {background-position:100% 100%;}
.special-name {position:absolute;bottom:6%;font:800 8px var(--ui-display);text-align:center;max-width:95%;}
.help-game-tabs {display:flex;gap:8px;justify-content:center;margin:3px 0 15px;}
.help-game-tabs .btn {font-size:17px;min-height:38px;padding:6px 17px;}
.help-game-tabs .active {color:#2c1c24;background:#e8bc4f;}
.partnership-guide {display:grid;grid-template-columns:1fr 1fr;gap:12px;}
.partnership-guide h3 {font-size:20px;margin:0 0 8px;color:var(--gold);}
.partnership-guide p {font-size:17px;line-height:1.45;margin:0;}
.partnership-summary-copy {font-size:21px;text-align:center;line-height:1.4;}
body.light .team-score {background:#eee0bb;color:#30241e;}
body.light .team-score strong {color:#6d4519;}
body.light .partnership-status {text-shadow:none;color:#312522;}
@media(max-width:900px){
  body .title-card-fan {left:50%!important;top:22vh!important;width:min(88vw,680px)!important;height:auto!important;transform:translateX(-50%)!important;}
  #screen-start .title-menu-button {font-size:22px;}
}
@media(max-width:759px){
  #playerRail .pchip .pchip-card-glyph {width:23px!important;min-width:23px!important;height:23px!important;flex-basis:23px!important;}
  #playerRail .pchip .pchip-count {gap:3px!important;}
  .team-score-rail {gap:5px;margin:5px 0 2px;}
  .team-score {gap:5px;padding:3px 7px;font-size:12px;}
  .team-score strong {font-size:18px;}
  .team-score-rail>small {font-size:11px;}
  .partnership-board {min-height:110px;gap:6px;flex-basis:110px;}
  .partnership-status {font-size:13px;line-height:1.35;}
  .partnership-details {font-size:12px;min-height:15px;}
  .trick-cards {gap:7px;min-height:98px;padding:5px 8px 16px;}
  .trick-cards .card {width:53px;height:76px;flex-basis:53px;--card-w:53px;--card-h:76px;}
  .trick-cards:has(>.card:nth-of-type(7))>.card {width:33px;height:48px;flex-basis:33px;--card-w:33px;--card-h:48px;}
  .trick-play small,.trick-owner {font-size:11px;max-width:65px;}
  .trick-empty {font-size:18px;}
  .partnership-actions {gap:5px;}
  .partnership-actions .btn {font-size:14px;min-height:39px;padding:6px 10px;}
  .game-controls {min-height:27px;padding:4px 3px;gap:5px;}
  .game-field,.pilotta-call,.exchange-instruction,.game-wait,.declaration-list {font-size:12px;}
  .game-field select {font-size:14px;min-height:34px;max-width:140px;padding:4px 7px;}
  body:not([data-game="kounga"]) .action-bar {padding-bottom:7px;gap:6px;}
  .game-picker {gap:5px;margin:8px 0 14px;}
  .game-choice {min-height:66px;padding:7px 2px;border-width:2px;}
  .game-choice strong {font-size:19px;}
  .game-choice small {font-size:10px;}
  .play-hub-panel {padding:20px 15px!important;}
  .play-hub-grid .practice-mode {min-height:75px;}
  .partnership-guide {grid-template-columns:1fr;}
  .partnership-guide p {font-size:16px;}
  .help-game-tabs .btn {font-size:14px;padding:6px 11px;}
  .special-rank {font-size:9px;}.special-name {font-size:6px;}
}
@media(max-height:640px) and (min-width:760px){
 body .title-card-fan{top:25vh!important;width:49vw!important;}
 .partnership-status{font-size:14px;}.partnership-board{min-height:85px;gap:3px;}.trick-cards{min-height:75px;padding:2px 8px 15px;}.trick-cards .card{width:50px;height:72px;flex-basis:50px;--card-w:50px;--card-h:72px;}.team-score-rail{margin:2px 0;}.game-controls{padding:2px;min-height:24px;}
}
/* Defeat legacy !important display rules for genuinely unavailable controls. */
#screen-game #btnReact.hidden,#screen-game #btnPanel.hidden {display:none!important;}
#screen-game body:not([data-game="kounga"]) .action-bar {display:flex!important;}
body:not([data-game="kounga"]) #screen-game .action-bar {display:flex!important;grid-template-columns:none!important;}
#playerRail .pchip .pchip-card-glyph {background-image:url('../assets/art/hand-count-v44.png')!important;background-size:auto 100%!important;}
body.light #playerRail .pchip .pchip-card-glyph {background-image:url('../assets/art/hand-count-light-v44.png')!important;}
/* Short landscape screens retain a complete table, hand and action rail. */
@media(max-height:520px) and (min-width:600px){
  #screen-game .game-root {padding:4px 8px 5px!important;gap:3px!important;}
  #screen-game .statusbar {height:48px!important;min-height:48px!important;flex-basis:48px!important;padding:3px 5px!important;}
  #screen-game .status-center {gap:5px!important;}
  #screen-game .status-round {font-size:11px!important;}
  #screen-game .status-phase {font-size:13px!important;line-height:1.2!important;}
  #screen-game .hud-btn {height:36px!important;min-height:36px!important;width:auto!important;min-width:36px!important;padding:3px 7px!important;}
  #screen-game .hud-icon-img {width:24px!important;height:24px!important;}
  #screen-game #playerRail {display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:5px!important;padding:2px 0!important;}
  #screen-game #playerRail .pchip {width:100%!important;max-width:none!important;height:49px!important;min-height:49px!important;grid-template-columns:27px minmax(0,1fr)!important;gap:5px!important;padding:4px!important;}
  #screen-game #playerRail .pchip.has-turn-hud {grid-template-columns:27px minmax(0,1fr) 30px!important;}
  #screen-game #playerRail .pchip .pchip-av {width:27px!important;height:27px!important;min-width:27px!important;max-width:27px!important;}
  #screen-game #playerRail .pchip .pchip-name {font-size:12px!important;}
  #screen-game #playerRail .pchip .pchip-meta {gap:6px!important;}
  #screen-game #playerRail .pchip .pchip-score strong,#screen-game #playerRail .pchip .pchip-count strong {font-size:12px!important;}
  #screen-game #playerRail .pchip .pchip-body {gap:3px!important;}
  #screen-game #playerRail .pchip .pchip-turn-hud {width:28px!important;height:40px!important;}
  #screen-game #playerRail .pchip .pchip-timer {width:27px!important;min-width:27px!important;max-width:27px!important;height:27px!important;min-height:27px!important;max-height:27px!important;flex-basis:27px!important;}
  #screen-game #playerRail .pchip .pchip-timer-seconds {font-size:12px!important;}
  #screen-game #playerRail .pchip .pchip-missed-dots {gap:3px!important;min-width:25px!important;}
  #screen-game #playerRail .pchip .pchip-missed-dots i {width:5px!important;height:5px!important;min-width:5px!important;min-height:5px!important;flex-basis:5px!important;}
  #screen-game .hand-probe {width:56px!important;}
  #screen-game .hand-row {--card-h:78px;min-height:90px!important;padding:10px 0 2px!important;}
  #screen-game .hand-row .card {height:78px!important;}
  #screen-game .game-main {gap:2px!important;}
  #screen-game .partnership-board {min-height:55px!important;flex-basis:55px;gap:2px;}
  #screen-game .partnership-status {font-size:12px!important;}
  #screen-game .partnership-details {font-size:11px!important;min-height:12px;}
  #screen-game .team-score-rail {margin:1px 0;}
  #screen-game .team-score {font-size:12px;padding:1px 8px;}
  #screen-game .team-score strong {font-size:16px;}
  #screen-game .trick-cards {min-height:52px;padding:0 6px 10px;gap:5px;}
  #screen-game .trick-cards .card {width:34px!important;height:48px!important;flex-basis:34px!important;--card-w:34px;--card-h:48px;}
  #screen-game .trick-play {gap:1px;}
  #screen-game .trick-play small,#screen-game .trick-owner {font-size:9px;}
  #screen-game .game-controls {min-height:21px;padding:1px;}
  #screen-game .game-field,#screen-game .game-wait,#screen-game .exchange-instruction {font-size:11px;}
  #screen-game .game-field select {font-size:12px;padding:2px 6px;min-height:26px;}
  #screen-game .action-bar {padding:1px!important;gap:4px!important;}
  #screen-game .action-bar .btn {font-size:13px!important;min-height:31px!important;padding:4px 12px!important;}
  #screen-game .partnership-actions {gap:4px;}
}
/* Texture choices use sampled tiles from the bespoke AI texture atlas. */
body #feltBg::after {content:'';position:absolute;inset:0;pointer-events:none;image-rendering:pixelated;mix-blend-mode:soft-light;opacity:.18;background-size:128px 128px;}
body.felt-weave #feltBg::after {background-image:url('../assets/art/texture-weave-v44.webp');}
body.felt-baize #feltBg::after {background-image:url('../assets/art/texture-baize-v44.webp');opacity:.14;}
body.felt-linen #feltBg::after {background-image:url('../assets/art/texture-linen-v44.webp');opacity:.2;}
body.felt-plain #feltBg::after {display:none;}
body:not(.effects-on) .hero-sparkle-art {display:none;}
.cosmetic-table-preview,.locker-table-preview {background-image:var(--preview-art)!important;background-size:100% 100%!important;image-rendering:pixelated;}
#screen-game .partnership-actions .btn {min-width:72px!important;width:auto!important;flex:0 1 auto!important;min-height:44px!important;font-size:16px!important;padding:8px 14px!important;}
#screen-game .exchange-instruction {width:100%;white-space:normal;overflow-wrap:anywhere;}
@media(max-width:900px){
  #screen-start .title-main-menu {left:10px!important;right:10px!important;width:auto!important;max-width:calc(100vw - 20px);grid-template-columns:repeat(2,minmax(0,1fr))!important;}
  #screen-start .title-menu-button {min-width:0;max-width:100%;}
  #screen-start .title-menu-button>span {min-width:0;overflow-wrap:normal;}
}
@media(max-width:360px){
  #screen-start .title-main-menu {bottom:calc(110px + env(safe-area-inset-bottom))!important;gap:8px;}
  #screen-start .title-menu-button {font-size:17px!important;min-height:55px;padding:6px 8px 6px 44px;gap:3px;}
  #screen-start .title-menu-button>img {width:28px!important;height:28px!important;left:6px;}
  #screen-start .title-menu-button::before {left:37px;}
  #screen-start .title-menu-primary {min-height:65px;font-size:25px!important;}
  #screen-start #btnHomeOptions {grid-column:auto;}
  #screen-start #homeLevelBadge {display:none;}
  body #screen-start .title-card-fan {top:21vh!important;width:85vw!important;}
}
@media(max-height:520px) and (min-width:600px){
  #screen-game .partnership-actions .btn {min-height:31px!important;font-size:13px!important;padding:4px 10px!important;min-width:58px!important;}
}
@media(max-height:520px) and (min-width:600px){
  body[data-game="kounga"] #screen-game .table-area {min-height:45px!important;padding:5px!important;padding-top:12px!important;}
  body[data-game="kounga"] #screen-game .piles-row {padding:14px 0 8px!important;--pile-w:36px;--pile-h:50px;gap:30px!important;}
  body[data-game="kounga"] #screen-game .pile-label {font-size:10px!important;top:-13px;}
  body[data-game="kounga"] #screen-game .pile-count {font-size:10px!important;bottom:-12px;}
  body[data-game="kounga"] #screen-game .table-empty-hint {font-size:13px;}
}
/* Felt copy follows the table palette independently of light/dark chrome. */
#screen-game .partnership-status,#screen-game .partnership-details,#screen-game .trick-empty,#screen-game .game-controls,#screen-game .team-score-rail>small {color:var(--felt-ink);}
body.theme-cream #screen-game .partnership-status {text-shadow:none;}
