/* Button depth belongs to the shared control, independent of its colour or
   priority. An important layer keeps legacy one-off menu rules from silently
   flattening a new secondary action. Tabs and flat text links stay distinct. */
@layer controlDepth {
 body {--control-foot:#110e0c;--control-shade:#0005;--control-inset:#fff1;}
 body.light {--control-foot:#ab9270;--control-shade:#57401c20;--control-inset:#fff8;}
 .btn {--control-depth:5px;box-shadow:0 var(--control-depth) 0 var(--control-foot),0 calc(var(--control-depth) + 3px) 10px var(--control-shade),inset 0 1px 0 var(--control-inset)!important;}
 .btn-primary,.btn-orange {--control-foot:var(--ui-primary-shadow);}
 .btn-gold {--control-foot:var(--gold-dark);}
 .btn-blue {--control-foot:var(--blue-dark);}
 .btn-danger,.btn-crimson {--control-foot:var(--ui-danger-shadow);}
 body.light .btn-primary,body.light .btn-gold {--control-foot:#bf7c18;}
 .btn:not(:disabled):active {--control-depth:2px;transform:translateY(3px)!important;}
 .btn:disabled {transform:none!important;}
}
/* Reserving actual layout space makes a drop outline describe the landing,
   including centred tricks, overlapping runs and multi-card combinations. */
.drop-preview-slot {pointer-events:none!important;}
.drop-preview-slot>.card,.drop-preview-slot>.table-card,.drop-preview-slot>.trick-player-name {visibility:hidden!important;}
.drop-preview-hidden {display:none!important;}
.card-drop-target {outline:none!important;}
.card-drop-indicator {border:0!important;z-index:0!important;overflow:visible;transition:opacity .14s ease;}
.drop-slot-outline {position:absolute;box-sizing:border-box;border:2px dashed color-mix(in srgb,var(--gold) 58%,transparent);border-radius:5px;background:transparent;}
.drop-reserved-card {background:none!important;border:0!important;box-shadow:none!important;pointer-events:none!important;}
.drop-landing {visibility:hidden!important;animation:none!important;}
.drop-settling {position:absolute!important;margin:0!important;pointer-events:none!important;transform-origin:top left!important;animation:none!important;transition:none!important;z-index:1;will-change:transform;}
.drop-settling .drag-group-count {display:none!important;}
.drop-layout-shift {transition:none!important;}
body.no-motion .drop-slot-outline {transition:none;}
@media(prefers-reduced-motion:reduce){.drop-slot-outline{transition:none;}}
.character-portrait {display:block;width:100%;height:100%;overflow:hidden;image-rendering:pixelated;}
.character-portrait>.character-art-fallback,.character-portrait>.character-art-loading {display:none;}
.character-portrait[data-art-state="loading"]>image {visibility:hidden;}
.character-portrait[data-art-state="loading"]>.character-art-loading {display:block;}
.character-portrait[data-art-state="error"]>image {display:none;}
.character-portrait[data-art-state="error"]>.character-art-fallback {display:block;}
@layer controlDepth {
 .account-actions>.btn {--control-foot:#110e0c;}
 body.light .account-actions>.btn {--control-foot:#ab9270;}
}
/* Keep the play surface in place when optional call/declaration controls
   appear or disappear. The same quiet space becomes the next turn's control. */
body:not([data-game="kounga"])[data-game-phase="play"] #gameControls:not(.hidden):empty {display:flex!important;}
.tichu-pass-progress {min-height:12px;}
#screen-game .tichu-trick-cards>.drop-preview-slot.drop-preview-first {margin-left:0!important;}
.card-drop-target .mini-card-slot:hover,.mini-card-slot.drop-hover-rest:hover {transform:none!important;}

/* A failed Dragon reaction keeps its authored portrait readable. */
.reaction-art-still.reaction-art-still,.cosmetic-stage-characters .reaction-art-still {background-size:contain!important;background-position:center!important;background-repeat:no-repeat!important;animation:none!important;}
/* An alignment rule must not reveal locked/already-equipped preview actions. */
#btnCosmeticPreviewEquip.hidden {display:none!important;}
.cosmetic-preview-actions:has(#btnCosmeticPreviewEquip.hidden) {grid-template-columns:1fr;}
