{{ m.homeTeamName }}
@@ -814,7 +835,7 @@ function getHoveredSideForMatch(match: PlayerHomeMatch | null) {
min-height: 76px;
}
-.match-card:hover {
+.match-card:is(:hover, .match-card--engaged) {
border-color: var(--border-gold);
box-shadow: var(--shadow-gold);
transform: translateY(-1px);
@@ -840,7 +861,7 @@ function getHoveredSideForMatch(match: PlayerHomeMatch | null) {
z-index: 1;
}
-.match-card:hover .match-info-side {
+.match-card:is(:hover, .match-card--engaged) .match-info-side {
background: rgba(255, 255, 255, 0.02);
}
@@ -1186,7 +1207,7 @@ function getHoveredSideForMatch(match: PlayerHomeMatch | null) {
transition: opacity 0.35s cubic-bezier(0.25, 0.8, 0.25, 1), transform 0.35s cubic-bezier(0.25, 0.8, 0.25, 1);
}
-.match-card:hover .default-info-layout {
+.match-card:is(:hover, .match-card--engaged) .default-info-layout {
opacity: 0;
transform: translateY(-8px) scale(0.95);
pointer-events: none;
@@ -1211,7 +1232,7 @@ function getHoveredSideForMatch(match: PlayerHomeMatch | null) {
border-radius: 8px 0 0 8px;
}
-.match-card:hover .hover-versus-layout {
+.match-card:is(:hover, .match-card--engaged) .hover-versus-layout {
opacity: 1;
transform: translateY(0) scale(1);
pointer-events: auto;
@@ -1229,7 +1250,7 @@ function getHoveredSideForMatch(match: PlayerHomeMatch | null) {
flex: 1;
}
-.match-card:hover .hover-team.home-slide {
+.match-card:is(:hover, .match-card--engaged) .hover-team.home-slide {
transform: translateX(0);
opacity: 1;
}
@@ -1246,7 +1267,7 @@ function getHoveredSideForMatch(match: PlayerHomeMatch | null) {
flex: 1;
}
-.match-card:hover .hover-team.away-slide {
+.match-card:is(:hover, .match-card--engaged) .hover-team.away-slide {
transform: translateX(0);
opacity: 1;
}
@@ -1276,7 +1297,7 @@ function getHoveredSideForMatch(match: PlayerHomeMatch | null) {
flex-shrink: 0;
}
-.match-card:hover .hover-vs-glow {
+.match-card:is(:hover, .match-card--engaged) .hover-vs-glow {
transform: scale(1);
opacity: 1;
animation: vs-clash-impact 0.3s ease-out 0.35s;
@@ -1347,7 +1368,7 @@ function getHoveredSideForMatch(match: PlayerHomeMatch | null) {
gap: 10px;
}
-.side-recommend-item:hover .sri-preview-card {
+.side-recommend-item:is(:hover, .side-recommend-item--engaged) .sri-preview-card {
opacity: 1;
transform: translateY(-50%) translateX(0);
pointer-events: auto;
diff --git a/apps/player/src/views/desktop/DesktopMatchDetailView.vue b/apps/player/src/views/desktop/DesktopMatchDetailView.vue
index c10133a..34217b0 100644
--- a/apps/player/src/views/desktop/DesktopMatchDetailView.vue
+++ b/apps/player/src/views/desktop/DesktopMatchDetailView.vue
@@ -23,7 +23,7 @@ const router = useRouter();
const { t, locale } = useI18n();
const slip = useBetSlipStore();
const auth = useAuthStore();
-const { openAt, visible: popoverVisible, pendingItem: popoverItem } = useDesktopBetPopover();
+const { openAt, visible: popoverVisible, pendingItem: popoverItem, cancelClose, scheduleClose } = useDesktopBetPopover();
const { pendingLocate, clearLocate } = useDesktopBetLocate();
function goBack() {
@@ -349,7 +349,12 @@ function getHoveredSide() {
-
+
{{ match.homeTeamName }}
@@ -413,6 +418,8 @@ function getHoveredSide() {
:key="market.id"
class="market-card"
:class="{ locked: isMarketLocked(market) }"
+ @mouseenter="cancelClose"
+ @mouseleave="scheduleClose()"
>
{{ marketLabel(market) }}
@@ -441,6 +448,8 @@ function getHoveredSide() {
:key="market.id"
class="score-block"
:class="{ locked: isMarketLocked(market) }"
+ @mouseenter="cancelClose"
+ @mouseleave="scheduleClose()"
>
{{ marketLabel(market) }}
diff --git a/apps/player/src/views/desktop/DesktopMyBetsView.vue b/apps/player/src/views/desktop/DesktopMyBetsView.vue
index 6e41db8..67a7c8a 100644
--- a/apps/player/src/views/desktop/DesktopMyBetsView.vue
+++ b/apps/player/src/views/desktop/DesktopMyBetsView.vue
@@ -1,7 +1,7 @@