From 010f25f882171be20113e76bd28722aab5be790f Mon Sep 17 00:00:00 2001 From: jahlib <60108339+jahlib@users.noreply.github.com> Date: Tue, 11 Nov 2025 18:48:54 +0300 Subject: [PATCH] some changes --- client/game.js | 127 ++++++++++++++++++++++++++++++- client/index.html | 57 +++++++++++++- client/night-mode.css | 169 ++++++++++++++++++++++++++++-------------- client/style.css | 150 ++++++++++++++++++++++++++++++++++++- 4 files changed, 441 insertions(+), 62 deletions(-) diff --git a/client/game.js b/client/game.js index b0997e2..892685e 100644 --- a/client/game.js +++ b/client/game.js @@ -181,8 +181,28 @@ class CardGame { if (this.nightModeEnabled) { document.body.classList.add('night-mode'); + // Показываем настройку белых мастей + if (this.whiteSuitsSetting) { + this.whiteSuitsSetting.style.display = 'flex'; + } + // Восстанавливаем состояние белых мастей если оно было сохранено + const savedWhiteSuits = localStorage.getItem('whiteSuitsEnabled'); + if (savedWhiteSuits === 'true') { + this.whiteSuitsEnabled = true; + if (this.whiteSuitsToggle) { + this.whiteSuitsToggle.checked = true; + } + document.body.classList.add('white-suits'); + } } else { document.body.classList.remove('night-mode'); + // Скрываем настройку белых мастей + if (this.whiteSuitsSetting) { + this.whiteSuitsSetting.style.display = 'none'; + } + // Выключаем белые масти + this.whiteSuitsEnabled = false; + document.body.classList.remove('white-suits'); } this.updateNightModeButton(); @@ -194,8 +214,28 @@ class CardGame { if (this.nightModeEnabled) { document.body.classList.add('night-mode'); + // Показываем настройку белых мастей + if (this.whiteSuitsSetting) { + this.whiteSuitsSetting.style.display = 'flex'; + } + // Восстанавливаем состояние белых мастей если оно было сохранено + const savedWhiteSuits = localStorage.getItem('whiteSuitsEnabled'); + if (savedWhiteSuits === 'true') { + this.whiteSuitsEnabled = true; + if (this.whiteSuitsToggle) { + this.whiteSuitsToggle.checked = true; + } + document.body.classList.add('white-suits'); + } } else { document.body.classList.remove('night-mode'); + // Скрываем настройку белых мастей + if (this.whiteSuitsSetting) { + this.whiteSuitsSetting.style.display = 'none'; + } + // Выключаем белые масти + this.whiteSuitsEnabled = false; + document.body.classList.remove('white-suits'); } // Синхронизируем с переключателем в настройках @@ -222,6 +262,32 @@ class CardGame { if (moonIcon) moonIcon.style.display = 'inline'; } } + + toggleWhiteSuits() { + this.whiteSuitsEnabled = this.whiteSuitsToggle.checked; + localStorage.setItem('whiteSuitsEnabled', this.whiteSuitsEnabled); + + if (this.whiteSuitsEnabled) { + document.body.classList.add('white-suits'); + } else { + document.body.classList.remove('white-suits'); + } + } + + setCardBackColor(color) { + this.cardBackColor = color; + localStorage.setItem('cardBackColor', color); + document.body.setAttribute('data-card-back', color); + + // Обновляем выделение в селекторе + document.querySelectorAll('.card-back-option').forEach(opt => { + opt.classList.remove('selected'); + }); + const selectedOption = document.querySelector(`.card-back-option[data-back="${color}"]`); + if (selectedOption) { + selectedOption.classList.add('selected'); + } + } showAlert(message) { if (!this.alertModal || !this.alertText) return; @@ -279,8 +345,18 @@ class CardGame { goToLobby() { this.clearLocalStorage(); + + // Закрываем WebSocket соединение перед перезагрузкой + if (this.ws && this.ws.readyState === WebSocket.OPEN) { + this.ws.close(); + } + window.history.pushState({}, '', '/'); - location.reload(); + + // Небольшая задержка чтобы сообщение успело отправиться + setTimeout(() => { + location.reload(); + }, 40); } initElements() { @@ -369,6 +445,8 @@ class CardGame { this.animationsToggle = document.getElementById('animations-toggle'); this.proModeToggle = document.getElementById('pro-mode-toggle'); this.nightModeToggle = document.getElementById('night-mode-toggle'); + this.whiteSuitsToggle = document.getElementById('white-suits-toggle'); + this.whiteSuitsSetting = document.getElementById('white-suits-setting'); this.logToggle = document.getElementById('log-toggle'); // Leave game button and modal @@ -397,6 +475,24 @@ class CardGame { document.body.classList.add('night-mode'); } + // Инициализируем белые масти + const savedWhiteSuits = localStorage.getItem('whiteSuitsEnabled'); + this.whiteSuitsEnabled = savedWhiteSuits === 'true'; + + // Показываем настройку белых мастей только если ночной режим включен + if (this.nightModeEnabled && this.whiteSuitsSetting) { + this.whiteSuitsSetting.style.display = 'flex'; + // Применяем белые масти если они были включены + if (this.whiteSuitsEnabled) { + document.body.classList.add('white-suits'); + } + } + + // Инициализируем цвет рубашки карт + const savedCardBack = localStorage.getItem('cardBackColor') || 'gray'; + this.cardBackColor = savedCardBack; + document.body.setAttribute('data-card-back', savedCardBack); + // Обновляем иконку кнопки ночного режима this.updateNightModeButton(); } @@ -446,6 +542,7 @@ class CardGame { this.animationsToggle.addEventListener('change', () => this.toggleAnimations()); this.proModeToggle.addEventListener('change', () => this.toggleProMode()); this.nightModeToggle.addEventListener('change', () => this.toggleNightMode()); + this.whiteSuitsToggle.addEventListener('change', () => this.toggleWhiteSuits()); this.logToggle.addEventListener('change', () => this.toggleLog()); // Leave game button @@ -509,6 +606,14 @@ class CardGame { } }); + // Card back color selector + document.querySelectorAll('.card-back-option').forEach(option => { + option.addEventListener('click', (e) => { + const backColor = e.currentTarget.dataset.back; + this.setCardBackColor(backColor); + }); + }); + // Rules handlers this.rulesBtn.addEventListener('click', () => this.openRules()); this.closeRulesBtn.addEventListener('click', () => this.closeRules()); @@ -1180,6 +1285,11 @@ class CardGame { } leaveRoom() { + // Отправляем сообщение о выходе из комнаты + if (this.ws && this.ws.readyState === WebSocket.OPEN) { + this.send({ type: 'leave_room' }); + } + // Скрываем блок с ссылкой если он был показан if (this.inviteLinkBlock) { this.inviteLinkBlock.style.display = 'none'; @@ -1628,8 +1738,23 @@ class CardGame { this.animationsToggle.checked = this.animationsEnabled; this.proModeToggle.checked = this.proModeEnabled; this.nightModeToggle.checked = this.nightModeEnabled; + this.whiteSuitsToggle.checked = this.whiteSuitsEnabled; this.fullscreenToggle.checked = !!document.fullscreenElement; + // Показываем/скрываем настройку белых мастей в зависимости от ночного режима + if (this.whiteSuitsSetting) { + this.whiteSuitsSetting.style.display = this.nightModeEnabled ? 'flex' : 'none'; + } + + // Синхронизируем выбранный цвет рубашки + document.querySelectorAll('.card-back-option').forEach(opt => { + opt.classList.remove('selected'); + }); + const selectedOption = document.querySelector(`.card-back-option[data-back="${this.cardBackColor}"]`); + if (selectedOption) { + selectedOption.classList.add('selected'); + } + // Синхронизируем состояние лога (проверяем есть ли класс hidden) if (this.gameLog) { this.logToggle.checked = !this.gameLog.classList.contains('hidden'); diff --git a/client/index.html b/client/index.html index dedeebb..da06e56 100644 --- a/client/index.html +++ b/client/index.html @@ -248,17 +248,24 @@
- - - + + + + + + + + + + @@ -266,9 +273,18 @@ + + + + + + + + + @@ -418,6 +434,19 @@
+ + +
📃 Показывать лог @@ -430,6 +459,28 @@
+ + +
+ 🎴 Цвет рубашки карт +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/client/night-mode.css b/client/night-mode.css index 1502dc4..f98bfeb 100644 --- a/client/night-mode.css +++ b/client/night-mode.css @@ -389,6 +389,43 @@ body.night-mode .card { transition: all 0.3s ease; } +/* Белые масти - только когда включена настройка */ +body.night-mode.white-suits .card.hearts, +body.night-mode.white-suits .card.diamonds { + color: #ffffff; +} + +body.night-mode.white-suits .card.hearts .card-rank, +body.night-mode.white-suits .card.diamonds .card-rank { + color: #ffffff; + filter: grayscale(1) contrast(0) brightness(3); +} + +body.night-mode.white-suits .card.hearts .card-suit, +body.night-mode.white-suits .card.diamonds .card-suit { + color: #ffffff; + filter: grayscale(1) contrast(0) brightness(3) drop-shadow(0px 0px 0.8px #ffffffd0); +} + +body.night-mode.white-suits .card.spades, +body.night-mode.white-suits .card.clubs { + color: #000000; +} + +body.night-mode.white-suits .card.spades .card-rank, +body.night-mode.white-suits .card.clubs .card-rank { + color: #000000; + filter: contrast(4) saturate(0.5); +} + +body.night-mode.white-suits .card.spades .card-suit, +body.night-mode.white-suits .card.clubs .card-suit { + color: #000000; + filter: contrast(4) saturate(0.5) drop-shadow(0px 0px 0.8px #333333c9); +} + + +/* Красные масти */ body.night-mode .card.hearts, body.night-mode .card.diamonds { color: #ffffff; @@ -397,32 +434,32 @@ body.night-mode .card.diamonds { body.night-mode .card.hearts .card-rank, body.night-mode .card.diamonds .card-rank { color: #ffffff; - filter: grayscale(1) contrast(0) brightness(3); } body.night-mode .card.hearts .card-suit, body.night-mode .card.diamonds .card-suit { color: #ffffff; - filter: grayscale(1) contrast(0) brightness(3) drop-shadow(0px 0px 0.8px #ffffffd0); + filter: saturate(0.8) brightness(1.1) drop-shadow(rgba(194, 90, 90, 0.79) 0px 0px 0.8px); } body.night-mode .card.spades, body.night-mode .card.clubs { - color: #1a1a1a; + color: #000000; } body.night-mode .card.spades .card-rank, body.night-mode .card.clubs .card-rank { - color: #1a1a1a; + color: #000000; filter: contrast(4) saturate(0.5); } body.night-mode .card.spades .card-suit, body.night-mode .card.clubs .card-suit { - color: #1a1a1a; - filter: contrast(4) saturate(0.5) drop-shadow(0px 0px 0.8px #333333c9); + color: #000000; + filter: contrast(4) saturate(0.5) drop-shadow(0px 0px 0.8px #838383c9); } + body.night-mode .card:hover:not(.disabled) { border-color: #374151; box-shadow: 0 0 20px #060606, 0 0 10px #adadad; @@ -433,32 +470,20 @@ body.night-mode .card.disabled { background: #767676a6; } -/* Рубашка карт с сетчатым градиентом */ +/* Рубашка карт - цвет управляется через data-card-back */ body.night-mode .opponent-card { - background: - repeating-linear-gradient(45deg, transparent, transparent 6px, rgba(0, 0, 0, 0.15) 6px, rgba(0, 0, 0, 0.2) 7px), - repeating-linear-gradient(-45deg, transparent, transparent 6px, rgba(0, 0, 0, 0.15) 6px, rgba(0, 0, 0, 0.2) 7px), - linear-gradient(314deg, #1e3d2b, #2d5a3f); - border-color: #1a3025; - color: #ffffff; -} - -/* Колода - такая же рубашка как у противников */ -body.night-mode .deck { - background: - repeating-linear-gradient(45deg, transparent, transparent 6px, rgba(0, 0, 0, 0.15) 6px, rgba(0, 0, 0, 0.2) 7px), - repeating-linear-gradient(-45deg, transparent, transparent 6px, rgba(0, 0, 0, 0.15) 6px, rgba(0, 0, 0, 0.2) 7px), - linear-gradient(314deg, #1e3d2b, #2d5a3f) !important; border-color: #1a3025 !important; color: #ffffff; } -/* Рубашка карты (card-back) - колода */ +/* Колода - цвет управляется через data-card-back */ +body.night-mode .deck { + border-color: #1a3025 !important; + color: #ffffff; +} + +/* Рубашка карты (card-back) - цвет управляется через data-card-back */ body.night-mode .card-back { - background: - repeating-linear-gradient(45deg, transparent, transparent 6px, rgba(0, 0, 0, 0.15) 6px, rgba(0, 0, 0, 0.2) 7px), - repeating-linear-gradient(-45deg, transparent, transparent 6px, rgba(0, 0, 0, 0.15) 6px, rgba(0, 0, 0, 0.2) 7px), - linear-gradient(314deg, #1e3d2b, #2d5a3f) !important; border-color: #1a3025 !important; color: #ffffff; } @@ -499,16 +524,34 @@ body.night-mode #chosen-suit-indicator { box-shadow: 0 4px 12px rgba(0, 0, 0, 0.6); } -/* Красные масти в индикаторе делаем белыми */ +body.night-mode .suit-emoji { + z-index: 1012; + font-size: 32px; + filter: contrast(4) saturate(0.5) drop-shadow(0px 0px 1.3px #727272c9); +} + +/* Красные масти в индикаторе делаем белыми - только с white-suits */ +body.night-mode.white-suits .suit-emoji-indicator.hearts, +body.night-mode.white-suits .suit-emoji-indicator.diamonds { + filter: grayscale(1) contrast(0) brightness(3) drop-shadow(0px 0px 0.8px #ffffffd0); +} + +/* Чёрные масти в индикаторе - только с white-suits */ +body.night-mode.white-suits .suit-emoji-indicator.clubs, +body.night-mode.white-suits .suit-emoji-indicator.spades { + filter: contrast(4) saturate(0.5) drop-shadow(0px 0px 1px #333333c9); +} + +/* Красные масти в индикаторе */ body.night-mode .suit-emoji-indicator.hearts, body.night-mode .suit-emoji-indicator.diamonds { - filter: grayscale(1) contrast(0) brightness(3) drop-shadow(0px 0px 0.8px #ffffffd0); + filter: saturate(0.8) brightness(1.1) drop-shadow(rgba(194, 90, 90, 0.79) 0px 0px 0.8px); } /* Чёрные масти в индикаторе */ body.night-mode .suit-emoji-indicator.clubs, body.night-mode .suit-emoji-indicator.spades { - filter: contrast(4) saturate(0.5) drop-shadow(0px 0px 1px #333333c9); + filter: contrast(4) saturate(0.5) drop-shadow(0px 0px 0.8px #838383c9); } /* Player info - табло игрока */ @@ -661,15 +704,15 @@ body.night-mode .suit-btn { color: #ffffff; } -/* Красные масти в suit-selector делаем белыми */ -body.night-mode .suit-btn[data-suit="hearts"] .suit-emoji, -body.night-mode .suit-btn[data-suit="diamonds"] .suit-emoji { +/* Красные масти в suit-selector делаем белыми - только с white-suits */ +body.night-mode.white-suits .suit-btn[data-suit="hearts"] .suit-emoji, +body.night-mode.white-suits .suit-btn[data-suit="diamonds"] .suit-emoji { filter: grayscale(1) contrast(0) brightness(3) drop-shadow(0px 0px 0.8px #ffffffd0); } -/* Черные масти в suit-selector */ -body.night-mode .suit-btn[data-suit="spades"] .suit-emoji, -body.night-mode .suit-btn[data-suit="clubs"] .suit-emoji { +/* Черные масти в suit-selector - только с white-suits */ +body.night-mode.white-suits .suit-btn[data-suit="spades"] .suit-emoji, +body.night-mode.white-suits .suit-btn[data-suit="clubs"] .suit-emoji { filter: contrast(4) saturate(0.5) drop-shadow(0px 0px 0.8px #333333c9); } @@ -679,13 +722,13 @@ body.night-mode .suit-symbol { border-color: #3b5998; } -body.night-mode .suit-symbol.hearts, -body.night-mode .suit-symbol.diamonds { +body.night-mode.white-suits .suit-symbol.hearts, +body.night-mode.white-suits .suit-symbol.diamonds { filter: grayscale(1) contrast(0) brightness(3) drop-shadow(0px 0px 0.8px #ffffffd0); } -body.night-mode .suit-symbol.clubs, -body.night-mode .suit-symbol.spades { +body.night-mode.white-suits .suit-symbol.clubs, +body.night-mode.white-suits .suit-symbol.spades { color: #ffffff; filter: contrast(4) saturate(0.5) drop-shadow(0px 0px 0.8px #333333c9); } @@ -729,37 +772,37 @@ body.night-mode .result-card { filter: brightness(0.8); } -body.night-mode .result-card.hearts, -body.night-mode .result-card.diamonds { +body.night-mode.white-suits .result-card.hearts, +body.night-mode.white-suits .result-card.diamonds { color: #ffffff; } -body.night-mode .result-card.hearts .card-rank, -body.night-mode .result-card.diamonds .card-rank { +body.night-mode.white-suits .result-card.hearts .card-rank, +body.night-mode.white-suits .result-card.diamonds .card-rank { color: #ffffff; filter: grayscale(1) contrast(0) brightness(3); } -body.night-mode .result-card.hearts .card-suit, -body.night-mode .result-card.diamonds .card-suit { +body.night-mode.white-suits .result-card.hearts .card-suit, +body.night-mode.white-suits .result-card.diamonds .card-suit { color: #ffffff; filter: grayscale(1) contrast(0) brightness(3) drop-shadow(0px 0px 0.8px #ffffffd0); } -body.night-mode .result-card.spades, -body.night-mode .result-card.clubs { - color: #1a1a1a; +body.night-mode.white-suits .result-card.spades, +body.night-mode.white-suits .result-card.clubs { + color: #000000; } -body.night-mode .result-card.spades .card-rank, -body.night-mode .result-card.clubs .card-rank { - color: #1a1a1a; +body.night-mode.white-suits .result-card.spades .card-rank, +body.night-mode.white-suits .result-card.clubs .card-rank { + color: #000000; filter: contrast(4) saturate(0.5); } -body.night-mode .result-card.spades .card-suit, -body.night-mode .result-card.clubs .card-suit { - color: #1a1a1a; +body.night-mode.white-suits .result-card.spades .card-suit, +body.night-mode.white-suits .result-card.clubs .card-suit { + color: #000000; filter: contrast(4) saturate(0.5) drop-shadow(0px 0px 0.8px #333333c9); } @@ -778,16 +821,28 @@ body.night-mode .log-entry.highlight { color: #5ecc7b; } -/* Красные масти в чате (логе) делаем белыми */ +/* Красные масти в чате (логе) делаем белыми - только с white-suits */ +body.night-mode.white-suits .suit-emoji-log.hearts, +body.night-mode.white-suits .suit-emoji-log.diamonds { + filter: grayscale(1) contrast(1) brightness(3) drop-shadow(rgba(189, 189, 189, 0.79) 0px 0px 0.8px); +} + +/* Чёрные масти в чате (логе) - только с white-suits */ +body.night-mode.white-suits .suit-emoji-log.clubs, +body.night-mode.white-suits .suit-emoji-log.spades { + filter: contrast(4) saturate(0.5) drop-shadow(0px 0px 0.8px #c7c7c742); +} + +/* Красные масти в чате (логе) */ body.night-mode .suit-emoji-log.hearts, body.night-mode .suit-emoji-log.diamonds { - filter: grayscale(1) contrast(1) brightness(3) drop-shadow(rgba(189, 189, 189, 0.79) 0px 0px 1px); + filter: saturate(0.8) brightness(1.1) drop-shadow(rgba(194, 90, 90, 0.79) 0px 0px 0.8px); } /* Чёрные масти в чате (логе) */ body.night-mode .suit-emoji-log.clubs, body.night-mode .suit-emoji-log.spades { - filter: contrast(4) saturate(0.5) drop-shadow(0px 0px 0.8px #c7c7c742); + filter: contrast(4) saturate(0.5) drop-shadow(0px 0px 0.8px #c7c7c75d); } /* Error screen */ diff --git a/client/style.css b/client/style.css index df000ca..94bd46a 100644 --- a/client/style.css +++ b/client/style.css @@ -1498,7 +1498,13 @@ border: 2px solid #ffd700; } .setting-item:last-child { + display: flex; + width: 100%; border-bottom: none; + align-content: center; + flex-direction: column; + justify-content: center; + align-items: center; } .setting-label { @@ -1580,8 +1586,21 @@ border: 2px solid #ffd700; } .suit-emoji { + z-index: 1012; font-size: 32px; - filter: drop-shadow(0px 0px 10px #727272c9); + filter: drop-shadow(0px 0px 0.8px #727272c9); +} + +/* Красные масти в чате (логе) */ +body .suit-emoji-log.hearts, +body .suit-emoji-log.diamonds { + filter: saturate(0.8) brightness(1.1) drop-shadow(rgba(194, 90, 90, 0.79) 0px 0px 0.8px); +} + +/* Чёрные масти в чате (логе) */ +body .suit-emoji-log.clubs, +body .suit-emoji-log.spades { + filter: contrast(4) saturate(0.5) drop-shadow(0px 0px 0.8px #c7c7c75d); } .suit-btn:hover { @@ -2390,3 +2409,132 @@ border: 2px solid #ffd700; transform: translateX(-50%) translateY(-30px) scale(0.8); } } + +/* Card back selector */ +.card-back-selector { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 12px; + margin-top: 10px; + align-content: center; + justify-content: space-around; + align-items: center; +} + +.card-back-option { + cursor: pointer; + border: 3px solid transparent; + border-radius: 8px; + padding: 3px; + transition: all 0.2s ease; +} + +.card-back-option:hover { + border-color: #f5d742; + transform: scale(1.05); +} + +.card-back-option.selected { + border-color: #4CAF50; + box-shadow: 0 0 10px rgba(76, 175, 80, 0.5); +} + +.card-back-preview { + width: 45px; + height: 65px; + border: 2px solid #333; + border-radius: 6px; + display: flex; + justify-content: center; + align-items: center; + font-size: 18px; + color: white; + box-shadow: 0 3px 8px rgba(71, 71, 71, 0.3); +} + +/* 5 вариантов цветов рубашки */ +.card-back-gray { + background: + repeating-linear-gradient(45deg, transparent, transparent 6px, rgba(0, 0, 0, 0.028) 6px, rgba(0, 0, 0, 0.037) 7px), + repeating-linear-gradient(-45deg, transparent, transparent 6px, rgba(0, 0, 0, 0.028) 6px, rgba(0, 0, 0, 0.037) 7px), + linear-gradient(314deg, #646464, #9c9c9c); +} + +.card-back-green { + background: + repeating-linear-gradient(45deg, transparent, transparent 6px, rgba(0, 0, 0, 0.15) 6px, rgba(0, 0, 0, 0.2) 7px), + repeating-linear-gradient(-45deg, transparent, transparent 6px, rgba(0, 0, 0, 0.15) 6px, rgba(0, 0, 0, 0.2) 7px), + linear-gradient(314deg, #13301f, #2d5a3f); +} + +.card-back-blue { + background: + repeating-linear-gradient(45deg, transparent, transparent 6px, rgba(0, 0, 0, 0.15) 6px, rgba(0, 0, 0, 0.2) 7px), + repeating-linear-gradient(-45deg, transparent, transparent 6px, rgba(0, 0, 0, 0.15) 6px, rgba(0, 0, 0, 0.2) 7px), + linear-gradient(314deg, #1e2d3f, #174880); +} + +.card-back-red { + background: + repeating-linear-gradient(45deg, transparent, transparent 6px, rgba(0, 0, 0, 0.15) 6px, rgba(0, 0, 0, 0.2) 7px), + repeating-linear-gradient(-45deg, transparent, transparent 6px, rgba(0, 0, 0, 0.15) 6px, rgba(0, 0, 0, 0.2) 7px), + linear-gradient(314deg, #3d1e1e, #6b1111); +} + +.card-back-purple { + background: + repeating-linear-gradient(45deg, transparent, transparent 6px, rgba(0, 0, 0, 0.15) 6px, rgba(0, 0, 0, 0.2) 7px), + repeating-linear-gradient(-45deg, transparent, transparent 6px, rgba(0, 0, 0, 0.15) 6px, rgba(0, 0, 0, 0.2) 7px), + linear-gradient(314deg, #3d1c61, #47345a); +} + +/* Применение выбранного цвета рубашки */ +body[data-card-back="gray"] .opponent-card, +body[data-card-back="gray"] .deck, +body[data-card-back="gray"] .card-back, +body[data-card-back="gray"] .flying-card { + background: + repeating-linear-gradient(45deg, transparent, transparent 6px, rgba(0, 0, 0, 0.028) 6px, rgba(0, 0, 0, 0.037) 7px), + repeating-linear-gradient(-45deg, transparent, transparent 6px, rgba(0, 0, 0, 0.028) 6px, rgba(0, 0, 0, 0.037) 7px), + linear-gradient(314deg, #646464, #9c9c9c) !important; +} + +body[data-card-back="green"] .opponent-card, +body[data-card-back="green"] .deck, +body[data-card-back="green"] .card-back, +body[data-card-back="green"] .flying-card { + background: + repeating-linear-gradient(45deg, transparent, transparent 6px, rgba(0, 0, 0, 0.15) 6px, rgba(0, 0, 0, 0.2) 7px), + repeating-linear-gradient(-45deg, transparent, transparent 6px, rgba(0, 0, 0, 0.15) 6px, rgba(0, 0, 0, 0.2) 7px), + linear-gradient(314deg, #13301f, #2d5a3f) !important; +} + +body[data-card-back="blue"] .opponent-card, +body[data-card-back="blue"] .deck, +body[data-card-back="blue"] .card-back, +body[data-card-back="blue"] .flying-card { + background: + repeating-linear-gradient(45deg, transparent, transparent 6px, rgba(0, 0, 0, 0.15) 6px, rgba(0, 0, 0, 0.2) 7px), + repeating-linear-gradient(-45deg, transparent, transparent 6px, rgba(0, 0, 0, 0.15) 6px, rgba(0, 0, 0, 0.2) 7px), + linear-gradient(314deg, #1e2d3f, #174880) !important; +} + +body[data-card-back="red"] .opponent-card, +body[data-card-back="red"] .deck, +body[data-card-back="red"] .card-back, +body[data-card-back="red"] .flying-card { + background: + repeating-linear-gradient(45deg, transparent, transparent 6px, rgba(0, 0, 0, 0.15) 6px, rgba(0, 0, 0, 0.2) 7px), + repeating-linear-gradient(-45deg, transparent, transparent 6px, rgba(0, 0, 0, 0.15) 6px, rgba(0, 0, 0, 0.2) 7px), + linear-gradient(314deg, #3d1e1e, #6b1111) !important; +} + +body[data-card-back="purple"] .opponent-card, +body[data-card-back="purple"] .deck, +body[data-card-back="purple"] .card-back, +body[data-card-back="purple"] .flying-card { + background: + repeating-linear-gradient(45deg, transparent, transparent 6px, rgba(0, 0, 0, 0.15) 6px, rgba(0, 0, 0, 0.2) 7px), + repeating-linear-gradient(-45deg, transparent, transparent 6px, rgba(0, 0, 0, 0.15) 6px, rgba(0, 0, 0, 0.2) 7px), + linear-gradient(314deg, #3d1c61, #47345a) !important; +}