| @import url('https://fonts.googleapis.com/css2?family=Cinzel:wght@400;600;700&display=swap'); |
|
|
| @tailwind base; |
| @tailwind components; |
| @tailwind utilities; |
|
|
| |
| * { |
| box-sizing: border-box; |
| -webkit-tap-highlight-color: transparent; |
| } |
|
|
| html, body { |
| margin: 0; |
| padding: 0; |
| overflow: hidden; |
| touch-action: none; |
| user-select: none; |
| -webkit-user-select: none; |
| |
| padding: env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left); |
| } |
|
|
| body { |
| font-family: 'Cinzel', serif; |
| background-color: #1a1a2e; |
| color: #f5f5dc; |
| min-height: 100vh; |
| min-height: 100dvh; |
| |
| position: fixed; |
| top: 0; |
| left: 0; |
| right: 0; |
| bottom: 0; |
| width: 100%; |
| height: 100%; |
| } |
|
|
| #root { |
| min-height: 100vh; |
| min-height: 100dvh; |
| height: 100%; |
| display: flex; |
| flex-direction: column; |
| overflow: hidden; |
| } |
|
|
| |
| .landscape-required { |
| display: none; |
| position: fixed; |
| top: 0; |
| left: 0; |
| width: 100%; |
| height: 100%; |
| background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%); |
| z-index: 9999; |
| justify-content: center; |
| align-items: center; |
| flex-direction: column; |
| text-align: center; |
| padding: 20px; |
| } |
|
|
| @media screen and (max-width: 900px) and (orientation: portrait) { |
| .landscape-required { |
| display: flex !important; |
| } |
| |
| .game-content { |
| display: none !important; |
| } |
| } |
|
|
| |
| .card { |
| @apply relative rounded-lg overflow-hidden cursor-pointer transition-all duration-200; |
| aspect-ratio: 2/3; |
| transform-style: preserve-3d; |
| perspective: 1000px; |
| } |
|
|
| .card:hover { |
| @apply scale-105; |
| z-index: 10; |
| } |
|
|
| .card.selected { |
| @apply ring-4 ring-egyptian-gold scale-110; |
| z-index: 20; |
| } |
|
|
| .card.disabled { |
| @apply opacity-50 cursor-not-allowed; |
| } |
|
|
| .card.disabled:hover { |
| transform: none; |
| } |
|
|
| .card-image { |
| @apply w-full h-full object-cover; |
| } |
|
|
| .card-overlay { |
| @apply absolute inset-0 bg-gradient-to-t from-black/70 via-transparent to-transparent; |
| } |
|
|
| .card-name { |
| @apply absolute bottom-0 left-0 right-0 p-2 text-center; |
| } |
|
|
| .card-name-en { |
| @apply text-xs font-semibold text-papyrus; |
| } |
|
|
| .card-name-ar { |
| @apply text-sm font-bold text-egyptian-gold; |
| direction: rtl; |
| } |
|
|
| |
| .half-indicator { |
| @apply absolute top-1 right-1 bg-egyptian-gold text-black text-xs font-bold px-1 rounded; |
| } |
|
|
| |
| .card.mummy { |
| @apply animate-pulse-danger; |
| } |
|
|
| |
| .btn { |
| @apply px-6 py-3 rounded-lg font-semibold transition-all duration-200; |
| @apply disabled:opacity-50 disabled:cursor-not-allowed; |
| } |
|
|
| .btn-primary { |
| @apply bg-egyptian-gold text-nile-blue hover:bg-yellow-500; |
| @apply active:scale-95; |
| } |
|
|
| .btn-danger { |
| @apply bg-mummy-red text-white hover:bg-red-700; |
| @apply active:scale-95; |
| } |
|
|
| .btn-secondary { |
| @apply bg-nile-blue text-papyrus border-2 border-egyptian-gold; |
| @apply hover:bg-egyptian-gold hover:text-nile-blue; |
| @apply active:scale-95; |
| } |
|
|
| |
| .modal-overlay { |
| @apply fixed inset-0 bg-black/70 flex items-center justify-center z-50; |
| @apply backdrop-blur-sm; |
| padding: env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left); |
| } |
|
|
| .modal-content { |
| @apply bg-gradient-to-br from-nile-blue to-gray-900 rounded-xl p-3 md:p-6; |
| @apply border-2 border-egyptian-gold shadow-2xl; |
| @apply max-w-lg w-full mx-2 md:mx-4 max-h-[85vh] overflow-y-auto; |
| } |
|
|
| .modal-title { |
| @apply text-base md:text-xl font-bold text-egyptian-gold mb-2 md:mb-4 text-center; |
| } |
|
|
| |
| .toast { |
| @apply fixed top-4 left-1/2 transform -translate-x-1/2 z-50; |
| @apply px-6 py-3 rounded-lg font-semibold shadow-lg; |
| @apply animate-bounce; |
| } |
|
|
| .toast-info { |
| @apply bg-nile-blue text-papyrus border border-egyptian-gold; |
| } |
|
|
| .toast-success { |
| @apply bg-green-700 text-white; |
| } |
|
|
| .toast-warning { |
| @apply bg-yellow-600 text-black; |
| } |
|
|
| .toast-danger { |
| @apply bg-mummy-red text-white; |
| } |
|
|
| |
| .player-avatar { |
| @apply rounded-full bg-egyptian-gold flex items-center justify-center flex-shrink-0; |
| @apply text-nile-blue font-bold; |
| } |
|
|
| .player-avatar.current-turn { |
| @apply ring-2 md:ring-4 ring-green-500 animate-pulse; |
| } |
|
|
| .player-avatar.eliminated { |
| @apply opacity-50 grayscale; |
| } |
|
|
| |
| .deck-pile { |
| @apply relative cursor-pointer; |
| } |
|
|
| .deck-pile::after { |
| @apply absolute -bottom-1 -right-1 bg-egyptian-gold text-nile-blue; |
| @apply text-xs font-bold px-2 py-1 rounded; |
| content: attr(data-count); |
| } |
|
|
| |
| .game-board { |
| @apply flex flex-col justify-between; |
| background-size: cover; |
| background-position: center; |
| height: 100vh; |
| height: 100dvh; |
| max-height: 100vh; |
| max-height: 100dvh; |
| overflow: hidden; |
| padding: 2px; |
| padding-top: max(2px, env(safe-area-inset-top)); |
| padding-bottom: max(2px, env(safe-area-inset-bottom)); |
| padding-left: max(2px, env(safe-area-inset-left)); |
| padding-right: max(2px, env(safe-area-inset-right)); |
| } |
|
|
| @media (min-width: 768px) { |
| .game-board { |
| padding: 16px; |
| } |
| } |
|
|
| |
| @media screen and (max-height: 500px) and (orientation: landscape) { |
| .game-board { |
| padding: 2px 4px; |
| } |
| } |
|
|
| |
| .hand-area { |
| @apply flex justify-center items-end gap-0; |
| max-width: 100%; |
| flex-wrap: nowrap; |
| overflow-x: auto; |
| overflow-y: hidden; |
| -webkit-overflow-scrolling: touch; |
| scrollbar-width: none; |
| padding: 2px; |
| max-height: 70px; |
| } |
|
|
| @media screen and (max-height: 500px) and (orientation: landscape) { |
| .hand-area { |
| max-height: 55px; |
| } |
| } |
|
|
| .hand-area::-webkit-scrollbar { |
| display: none; |
| } |
|
|
| .hand-area .card { |
| @apply flex-shrink-0; |
| width: 40px; |
| max-width: 50px; |
| margin: 0 -3px; |
| } |
|
|
| @media screen and (max-height: 500px) and (orientation: landscape) { |
| .hand-area .card { |
| width: 35px; |
| max-width: 45px; |
| } |
| } |
|
|
| @media (min-width: 768px) { |
| .hand-area { |
| @apply gap-2 p-4; |
| overflow-x: auto; |
| } |
| |
| .hand-area .card { |
| width: 100px; |
| max-width: 120px; |
| margin: 0; |
| } |
| } |
|
|
| |
| ::-webkit-scrollbar { |
| width: 8px; |
| height: 8px; |
| } |
|
|
| ::-webkit-scrollbar-track { |
| background: rgba(0, 0, 0, 0.3); |
| border-radius: 4px; |
| } |
|
|
| ::-webkit-scrollbar-thumb { |
| background: #d4a843; |
| border-radius: 4px; |
| } |
|
|
| ::-webkit-scrollbar-thumb:hover { |
| background: #e5b854; |
| } |
|
|
| |
| .king-ra-timer { |
| @apply w-full h-2 bg-gray-700 rounded-full overflow-hidden mt-2; |
| } |
|
|
| .king-ra-timer-bar { |
| @apply h-full bg-gradient-to-r from-egyptian-gold to-mummy-red; |
| transition: width 0.1s linear; |
| } |
|
|
| |
| input[type="text"], input[type="number"] { |
| @apply w-full px-4 py-2 rounded-lg bg-nile-blue/50 border border-egyptian-gold; |
| @apply text-papyrus placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-egyptian-gold; |
| } |
|
|
| |
| .room-code { |
| @apply bg-nile-blue px-4 py-2 rounded-lg text-2xl font-bold tracking-widest; |
| @apply border-2 border-egyptian-gold text-egyptian-gold; |
| } |
|
|