/* ============================================ LOBBY UI - CLEAN GAMING INTERFACE ============================================ */ /* Reset and Base */ * { margin: 0; padding: 0; box-sizing: border-box; } html, body { height: 100%; font-family: 'Rajdhani', sans-serif; overflow: hidden; user-select: none; direction: ltr; } /* Main Container */ .main-container { position: relative; width: 100vw; height: 100vh; overflow: hidden; } /* ============================================ LOBBY VIEW (Character Selection) ============================================ */ .character-selection { position: absolute; top: 0; left: 0; width: 100%; height: 100%; opacity: 0; visibility: hidden; transition: opacity 0.3s ease; } .character-selection.active { opacity: 1; visibility: visible; } /* Simple Dark Background */ .scene-background { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } .scene-overlay { display: none; /* Remove unnecessary overlay */ } .neon-lights { display: none; /* Remove heavy animations */ } /* Lobby Header */ .lobby-header { position: absolute; top: 20px; left: 30px; z-index: 100; } .lobby-logo span { font-family: 'Bebas Neue', cursive; font-size: 3rem; font-weight: 900; letter-spacing: 0.15em; color: #ff0000; /* Red Neon */ display: inline-block; padding: 8px 25px; background: rgba(255, 0, 0, 0.1); border: 2px solid #ff0000; /* Red Neon */ position: relative; text-shadow: none; /* Removed text shadow */ } .lobby-logo::before { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: repeating-linear-gradient( -45deg, transparent, transparent 4px, rgba(255, 0, 0, 0.1) 4px, rgba(255, 0, 0, 0.1) 8px ); pointer-events: none; } .logo-decoration { display: none; /* Remove unnecessary decoration */ } /* Game Info - Cleaner Style */ .game-info { position: absolute; top: 20px; right: 30px; z-index: 100; } .difficulty-score { display: flex; gap: 25px; margin-bottom: 10px; } .info-item { text-align: right; } .info-label { font-size: 0.7rem; color: #b3b3b3; /* Light gray for clarity */ font-weight: 600; letter-spacing: 0.1em; display: block; margin-bottom: 3px; } .info-value { display: flex; align-items: center; gap: 5px; font-size: 1rem; color: #fff; font-weight: 700; } .info-value i { color: #ff0000; /* Red Neon */ font-size: 0.85rem; } .session-status { margin-top: 15px; padding: 6px 12px; background: #121212; /* Darker background */ border: 1px solid #444444; /* Neutral border */ } .session-status span { font-size: 0.75rem; color: #b3b3b3; letter-spacing: 0.05em; font-weight: 500; } /* Characters Display Area - RAISED POSITION */ .characters-display { position: absolute; top: 21%; left: 50%; transform: translate(-50%, -50%); width: 100%; max-width: 1200px; height: auto; z-index: 50; } .characters-3d-scene { position: relative; width: 100%; } /* Floating Character Cards - OPTIMIZED SPACING */ .floating-cards { display: flex; justify-content: center; align-items: center; gap: 30px; padding: 35px 20px 20px; width: 100%; } /* ============================================ IMPROVED COLOR SCHEME ============================================ */ .character-floating-card { position: relative; width: 260px; min-height: 180px; background: linear-gradient(135deg, #2b2b2b 0%, #1a1a1a 100%); /* Dark gray gradient */ border: 1px solid #444444; /* Metal gray border */ padding: 25px 20px 20px 20px; transition: all 0.3s ease; cursor: pointer; border-radius: 12px; overflow: visible; margin-top: 15px; box-shadow: none; /* Removed shadow */ } .character-floating-card:hover { transform: translateY(-6px); border-color: #ff0000; /* Red Neon */ background: linear-gradient(135deg, #2f2f2f 0%, #1e1e1e 100%); box-shadow: none; /* Removed hover shadow */ } /* Enhanced hover effect for shield */ .character-floating-card:hover .shield-icon { transform: scale(1.1); box-shadow: none; /* Removed hover shadow */ border-color: #ff0000; } /* Selected state with red neon theme */ .character-floating-card.selected .shield-icon { background: linear-gradient(135deg, #ff0000 0%, #cc0000 100%); /* Solid red gradient */ border-color: #ff0000; box-shadow: none; /* Removed selected shadow */ } /* Shield Badge - MODERN ROUNDED SQUARE DESIGN */ .card-shield { position: absolute; top: -10px; left: 50%; transform: translateX(-50%); width: 48px; height: 48px; z-index: 15; } .shield-icon { width: 100%; height: 100%; background: linear-gradient(135deg, #1a1a1a 0%, #2b2b2b 100%); border-radius: 12px; display: flex; align-items: center; justify-content: center; border: 2px solid #444444; /* Neutral border */ } /* CLEAN NUMBER DESIGN */ .shield-number { color: #ffffff; font-size: 1.6rem; font-weight: 900; font-family: 'Bebas Neue', cursive; line-height: 1; position: relative; z-index: 3; display: flex; align-items: center; justify-content: center; text-shadow: none; /* Removed text shadow */ } .shield-star { position: absolute; top: -3px; right: -3px; color: #ffcc00; /* Yellow Gold */ font-size: 0.6rem; z-index: 4; } /* Card Content Layout */ .card-status { display: flex; align-items: center; gap: 6px; margin-bottom: 8px; padding-top: 5px; } .status-indicator { width: 8px; height: 8px; border-radius: 50%; background: #b3b3b3; /* Light gray for default */ } .card-talents { display: flex; align-items: center; gap: 6px; margin-top: 10px; margin-bottom: 15px; } /* Selected state with red theme */ .character-floating-card.selected { border-color: #ff0000 !important; background: rgba(255, 0, 0, 0.1) !important; transform: translateY(-4px) scale(1.01) !important; /* Reduced transform */ box-shadow: none; /* Removed selected shadow */ } /* Remove pulse effect for selected card */ .character-floating-card.selected::after { display: none; } /* Ready state colors */ .status-indicator.ready { background: #ff0000 !important; /* Red Neon */ } /* ============================================ PLAY BUTTON DESIGN - REVERTED ANIMATIONS ============================================ */ .play-button-container { position: absolute; bottom: 15px; right: 15px; z-index: 10; } .play-button-container .play-button { position: relative; padding: 0.6em 1.8em; border: none; outline: none; background: #1a1a1a; color: #ff0000; /* Red Neon */ font-size: 14px; font-weight: bold; letter-spacing: 1.5px; text-transform: uppercase; cursor: pointer; transition: 0.3s ease; z-index: 2; overflow: hidden; display: flex; align-items: center; justify-content: center; font-family: 'Russo One', sans-serif; border-radius: 6px; } .play-button-container .play-button:hover { background: rgba(255, 0, 0, 0.2); color: #fff; transform: scale(1.05); } .play-button-container .play-button:active { transform: scale(0.95); background: rgba(255, 0, 0, 0.3); box-shadow: 0 0 10px rgba(255, 0, 0, 0.5), 0 0 20px rgba(255, 0, 0, 0.3), 0 0 30px rgba(255, 0, 0, 0.2); } .play-button-container .clip { position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 2px solid #ff0000; /* Red Neon */ clip-path: polygon( 15% 0%, 85% 0%, 100% 25%, 100% 75%, 85% 100%, 15% 100%, 0% 75%, 0% 25% ); box-shadow: inset 0 0 10px rgba(255, 0, 0, 0.2); transition: 0.3s ease; animation: shape-glitch-red 2s infinite ease-in-out; } .play-button-container .play-button:hover .clip { box-shadow: inset 0 0 20px rgba(255, 0, 0, 0.4); border-color: #a83232; } .play-button-container .corner { position: absolute; width: 12px; height: 12px; background-color: #ff0000; /* Red Neon */ transform: rotate(45deg); box-shadow: inset 1px 1px 4px rgba(255, 0, 0, 0.6); transition: 0.2s ease; animation: corner-glitch-red 2.5s infinite ease-in-out; } .play-button-container .top-left { top: -6px; left: -6px; } .play-button-container .top-right { top: -6px; right: -6px; } .play-button-container .bottom-left { bottom: -6px; left: -6px; } .play-button-container .bottom-right { bottom: -6px; right: -6px; } .play-button-container .play-button:hover .corner { transform: scale(1.2) rotate(45deg); background-color: #a83232; animation: corner-light-red 0.4s ease-in-out infinite alternate; } .play-button-container .button-text { position: relative; z-index: 3; } /* Hide new play button by default, show only when selected */ .character-floating-card .play-button-container { display: none; } .character-floating-card.selected .play-button-container { display: block; } .card-empty-content { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 1rem; color: #b3b3b3; } .card-empty-content i { font-size: 2rem; margin-bottom: 0.8rem; color: rgba(255, 0, 0, 0.4); transition: color 0.2s; } .character-floating-card.empty-slot:hover .card-empty-content i { color: rgba(255, 0, 0, 0.7); } .card-empty-content p { font-size: 0.85rem; font-weight: 600; letter-spacing: 0.08em; } /* Remove the couch placeholder - not needed */ .characters-couch { display: none; } /* Bottom Controls - Clean Design */ .bottom-controls { display: none; /* إخفاء جميع أزرار التحكم السفلية */ } /* ============================================ RED PLAY BUTTON ANIMATIONS ============================================ */ @keyframes shape-glitch-red { 0% { clip-path: polygon( 15% 0%, 85% 0%, 100% 25%, 100% 75%, 85% 100%, 15% 100%, 0% 75%, 0% 25% ); box-shadow: inset 0 0 10px rgba(255, 0, 0, 0.2); } 25% { clip-path: polygon( 10% 0%, 90% 0%, 100% 30%, 100% 70%, 90% 100%, 10% 100%, 0% 70%, 0% 30% ); box-shadow: inset 0 0 20px rgba(255, 0, 0, 0.4); } 50% { clip-path: polygon( 5% 0%, 95% 0%, 100% 35%, 100% 65%, 95% 100%, 5% 100%, 0% 65%, 0% 35% ); box-shadow: inset 0 0 15px rgba(255, 0, 0, 0.3); } 75% { clip-path: polygon( 15% 0%, 85% 0%, 100% 25%, 100% 75%, 85% 100%, 15% 100%, 0% 75%, 0% 25% ); box-shadow: inset 0 0 10px rgba(255, 0, 0, 0.2); } 100% { clip-path: polygon( 15% 0%, 85% 0%, 100% 25%, 100% 75%, 85% 100%, 15% 100%, 0% 75%, 0% 25% ); box-shadow: inset 0 0 10px rgba(255, 0, 0, 0.2); } } @keyframes corner-glitch-red { 0% { transform: scale(1) rotate(45deg); opacity: 1; } 25% { transform: scale(1.1) rotate(50deg); opacity: 0.9; } 50% { transform: scale(0.9) rotate(40deg); opacity: 0.8; } 75% { transform: scale(1.1) rotate(50deg); opacity: 0.9; } 100% { transform: scale(1) rotate(45deg); opacity: 1; } } @keyframes corner-light-red { 0% { box-shadow: inset 0 0 4px rgba(255, 0, 0, 0.6); } 100% { box-shadow: inset 0 0 12px rgba(255, 0, 0, 0.8); } } /* ============================================ CHARACTER CREATION SCREEN ============================================ */ .character-creation { position: absolute; top: 0; left: 0; width: 100%; height: 100%; display: flex; justify-content: center; align-items: center; opacity: 0; visibility: hidden; transition: opacity 0.3s ease; } .character-creation.active { opacity: 1; visibility: visible; } .creation-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.95); z-index: -1; } .creation-container { background: #1a1a1a; border: 2px solid #444444; border-radius: 15px; padding: 2.5rem; max-width: 550px; width: 90%; box-shadow: none; /* Removed shadow */ } .creation-header { text-align: center; margin-bottom: 2rem; } .creation-header h2 { font-family: 'Russo One', sans-serif; font-size: 2rem; font-weight: 900; text-transform: uppercase; letter-spacing: 0.1em; color: #fff; margin-bottom: 0.8rem; } .header-line { width: 80px; height: 2px; background: linear-gradient(90deg, transparent 0%, #ff0000 50%, transparent 100%); margin: 0 auto; } .creation-form { display: flex; flex-direction: column; gap: 1.5rem; margin-bottom: 2rem; } .form-row { display: flex; gap: 1.2rem; } .form-group { flex: 1; display: flex; flex-direction: column; gap: 0.4rem; } .form-group.full-width { width: 100%; } .form-group label { color: #b3b3b3; font-weight: 600; font-size: 0.75rem; letter-spacing: 0.08em; text-transform: uppercase; } .input-wrapper { position: relative; } .form-group input { width: 100%; padding: 0.8rem; border: 1px solid #444444; border-radius: 8px; background: #1a1a1a; color: #fff; font-size: 0.95rem; font-family: 'Rajdhani', sans-serif; font-weight: 500; transition: all 0.2s; } .form-group input:focus { outline: none; border-color: #ff0000; background: #1a1a1a; } .form-group input::placeholder { color: #6a6a6a; } .input-glow { display: none; /* Remove glow effect */ } /* Gender Selection */ .gender-selection { display: flex; gap: 0.8rem; } .gender-option { flex: 1; } .gender-option input[type="radio"] { display: none; } .gender-label { display: flex; align-items: center; justify-content: center; gap: 0.6rem; padding: 1rem; border: 1px solid #444444; border-radius: 8px; background: #1a1a1a; cursor: pointer; transition: all 0.2s; } .gender-label:hover { border-color: #ff0000; background: rgba(255, 0, 0, 0.1); } .gender-option input[type="radio"]:checked + .gender-label { background: rgba(255, 0, 0, 0.15); border-color: #ff0000; } .gender-label i { font-size: 1.1rem; color: #b3b3b3; } .gender-label span { color: #fff; font-weight: 600; font-size: 0.85rem; letter-spacing: 0.05em; } /* Creation Buttons */ .creation-buttons { display: flex; gap: 1.2rem; justify-content: center; } .creation-btn { position: relative; padding: 0; border: none; background: none; cursor: pointer; transition: transform 0.15s; min-width: 130px; overflow: hidden; } .btn-bg { position: absolute; top: 0; left: 0; right: 0; bottom: 0; border-radius: 8px; z-index: 1; } .cancel-btn .btn-bg { background: #444444; border: 1px solid #6a6a6a; } .create-btn .btn-bg { background: #ff0000; border: 1px solid rgba(255, 0, 0, 0.3); } .btn-content { position: relative; display: flex; align-items: center; justify-content: center; gap: 0.6rem; padding: 1rem 1.5rem; color: #fff; font-size: 0.9rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; z-index: 2; } .creation-btn:hover { transform: translateY(-2px); } .cancel-btn:hover .btn-bg { background: #555555; } .create-btn:hover .btn-bg { background: #ff0000; } /* ============================================ NEW HOURGLASS LOADING SCREEN ============================================ */ .loading-screen { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: #0d0d0d; display: flex; justify-content: center; align-items: center; z-index: 3000; opacity: 0; visibility: hidden; transition: opacity 0.3s; } .loading-screen.active { opacity: 1; visibility: visible; } .loading-content { text-align: center; color: #fff; } /* New Hourglass Loader Styles */ .loading-spinner { margin-bottom: 1.5rem; display: flex; justify-content: center; } .loader { --dur: 2s; --hue: 0; display: block; margin: auto; width: 4em; height: auto; } .loader__glare-top, .loader__glare-bottom, .loader__model, .loader__motion-thick, .loader__motion-medium, .loader__motion-thin, .loader__sand-drop, .loader__sand-fill, .loader__sand-grain-left, .loader__sand-grain-right, .loader__sand-line-left, .loader__sand-line-right { animation-name: sand-line-right; } .loader__sand-mound-top { animation-name: sand-mound-top; } .loader__sand-mound-bottom { animation-name: sand-mound-bottom; transform-origin: 12.25px 31.5px; } /* Status and content colors - FIXED */ .status-indicator.preparing { background: #ff0000; } .status-text { color: #ff0000; font-size: 0.75rem; font-weight: 600; letter-spacing: 0.05em; text-transform: uppercase; } .card-player-name { font-size: 1.2rem; font-weight: 700; color: #f8fafc; margin-bottom: 8px; text-transform: uppercase; letter-spacing: 0.05em; text-shadow: none; /* Removed text shadow */ } .talents-label { font-size: 0.7rem; color: #b3b3b3; margin-right: 4px; font-weight: 600; } .talent-icon { width: 28px; height: 28px; background: #2b2b2b; border: 1px solid #444444; border-radius: 8px; display: flex; align-items: center; justify-content: center; color: #b3b3b3; font-size: 0.9rem; transition: all 0.2s ease; } .talent-icon:hover { background: rgba(255, 0, 0, 0.1); border-color: #ff0000; color: #ff0000; } /* Empty slot improved styling */ .character-floating-card.empty-slot { background: linear-gradient(135deg, rgba(43, 43, 43, 0.4) 0%, rgba(26, 26, 26, 0.4) 100%); border: 2px dashed #444444; display: flex; flex-direction: column; justify-content: center; align-items: center; min-height: 180px; border-radius: 12px; } .card-empty-content { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 1rem; color: #b3b3b3; } .card-empty-content i { font-size: 2rem; margin-bottom: 0.8rem; color: rgba(255, 0, 0, 0.4); transition: color 0.2s; } .character-floating-card.empty-slot:hover .card-empty-content i { color: rgba(255, 0, 0, 0.7); } .card-empty-content p { font-size: 0.85rem; font-weight: 600; letter-spacing: 0.08em; color: #b3b3b3; } /* Hourglass Animations */ @keyframes loader-flip { from { transform: translate(13.75px, 9.25px) rotate(-180deg); } 24%, to { transform: translate(13.75px, 9.25px) rotate(0); } } @keyframes glare-top { from { stroke: rgba(255, 255, 255, 0); } 24%, to { stroke: white; } } @keyframes glare-bottom { from { stroke: white; } 24%, to { stroke: rgba(255, 255, 255, 0); } } @keyframes motion-thick { from { animation-timing-function: cubic-bezier(0.33, 0, 0.67, 0); stroke: rgba(255, 255, 255, 0); stroke-dashoffset: 153.94; transform: rotate(0.67turn); } 20% { animation-timing-function: cubic-bezier(0.33, 1, 0.67, 1); stroke: #333333; stroke-dashoffset: 141.11; transform: rotate(1turn); } 40%, to { stroke: rgba(255, 255, 255, 0); stroke-dashoffset: 153.94; transform: rotate(1.33turn); } } @keyframes motion-medium { from, 8% { animation-timing-function: cubic-bezier(0.33, 0, 0.67, 0); stroke: rgba(255, 255, 255, 0); stroke-dashoffset: 153.94; transform: rotate(0.5turn); } 20% { animation-timing-function: cubic-bezier(0.33, 1, 0.67, 1); stroke: white; stroke-dashoffset: 147.53; transform: rotate(0.83turn); } 32%, to { stroke: rgba(255, 255, 255, 0); stroke-dashoffset: 153.94; transform: rotate(1.17turn); } } @keyframes motion-thin { from, 4% { animation-timing-function: cubic-bezier(0.33, 0, 0.67, 0); stroke: rgba(255, 255, 255, 0); stroke-dashoffset: 153.94; transform: rotate(0.33turn); } 24% { animation-timing-function: cubic-bezier(0.33, 1, 0.67, 1); stroke: #6a6a6a; stroke-dashoffset: 134.7; transform: rotate(0.67turn); } 44%, to { stroke: rgba(255, 255, 255, 0); stroke-dashoffset: 153.94; transform: rotate(1turn); } } @keyframes sand-drop { from, 10% { animation-timing-function: cubic-bezier(0.12, 0, 0.39, 0); stroke-dashoffset: 1; } 70%, to { stroke-dashoffset: -107; } } @keyframes sand-fill { from, 10% { animation-timing-function: cubic-bezier(0.12, 0, 0.39, 0); stroke-dashoffset: 55; } 70%, to { stroke-dashoffset: -54; } } @keyframes sand-grain-left { from, 10% { animation-timing-function: cubic-bezier(0.12, 0, 0.39, 0); stroke-dashoffset: 29; } 70%, to { stroke-dashoffset: -22; } } @keyframes sand-grain-right { from, 10% { animation-timing-function: cubic-bezier(0.12, 0, 0.39, 0); stroke-dashoffset: 27; } 70%, to { stroke-dashoffset: -24; } } @keyframes sand-line-left { from, 10% { animation-timing-function: cubic-bezier(0.12, 0, 0.39, 0); stroke-dashoffset: 53; } 70%, to { stroke-dashoffset: -55; } } @keyframes sand-line-right { from, 10% { animation-timing-function: cubic-bezier(0.12, 0, 0.39, 0); stroke-dashoffset: 14; } 70%, to { stroke-dashoffset: -24.5; } } @keyframes sand-mound-top { from, 10% { animation-timing-function: linear; transform: translate(0, 0); } 15% { animation-timing-function: cubic-bezier(0.12, 0, 0.39, 0); transform: translate(0, 1.5px); } 51%, to { transform: translate(0, 13px); } } @keyframes sand-mound-bottom { from, 31% { animation-timing-function: cubic-bezier(0.61, 1, 0.88, 1); transform: scale(1, 0); } 56%, to { transform: scale(1, 1); } } .loading-content h3 { font-family: 'Russo One', sans-serif; font-size: 1.3rem; font-weight: 700; margin-bottom: 0.4rem; text-transform: uppercase; letter-spacing: 0.08em; } .loading-content p { color: #b3b3b3; font-size: 0.85rem; font-weight: 500; } /* ============================================ SIMPLE ANIMATIONS ============================================ */ @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } /* Selected state - Enhanced */ .character-floating-card.selected { border-color: #ff0000 !important; background: rgba(255, 0, 0, 0.1) !important; transform: translateY(-4px) scale(1.01) !important; box-shadow: none; /* Removed selected shadow */ } .control-item.ready.active { background: rgba(255, 0, 0, 0.3); border-color: #ff0000; } .status-indicator.ready { background: #ff0000; } /* ============================================ RESPONSIVE DESIGN - UPDATED WITH NEW COLORS ============================================ */ @media (max-width: 1200px) { .floating-cards { gap: 20px; padding: 30px 20px 20px; } .character-floating-card { width: 230px; margin-top: 12px; } .card-shield { width: 44px; height: 44px; top: -9px; } .shield-number { font-size: 1.5rem; } } @media (max-width: 992px) { .floating-cards { flex-wrap: wrap; gap: 15px; padding: 30px 15px 15px; } .character-floating-card { width: calc(50% - 15px); max-width: 280px; margin-top: 12px; } .card-shield { width: 42px; height: 42px; top: -8px; } .shield-number { font-size: 1.4rem; } .shield-star { font-size: 0.5rem; top: -2px; right: -2px; } } @media (max-width: 768px) { .lobby-header { top: 10px; left: 15px; } .lobby-logo span { font-size: 2.5rem; padding: 6px 20px; } .game-info { display: none; } .floating-cards { flex-direction: column; align-items: center; padding: 25px 15px 15px; gap: 20px; } .character-floating-card { width: 100%; max-width: 320px; margin-top: 10px; } .card-shield { width: 40px; height: 40px; top: -8px; } .shield-number { font-size: 1.3rem; } .shield-star { font-size: 0.45rem; top: -2px; right: -2px; } .play-button-container .play-button { padding: 0.5em 1.5em; font-size: 12px; } .bottom-controls { flex-wrap: wrap; gap: 8px; padding: 10px; } .control-item { flex: 1 1 auto; min-width: 90px; padding: 6px 10px; } .creation-container { padding: 1.5rem; max-width: 95%; } .form-row { flex-direction: column; } } .loader__sand-mound-top, .loader__sand-mound-bottom { animation-duration: var(--dur); animation-timing-function: cubic-bezier(0.83, 0, 0.17, 1); animation-iteration-count: infinite; } .loader__glare-top { animation-name: glare-top; } .loader__glare-bottom { animation-name: glare-bottom; } .loader__model { animation-name: loader-flip; transform-origin: 12.25px 16.75px; } .loader__motion-thick, .loader__motion-medium, .loader__motion-thin { transform-origin: 26px 26px; } .loader__motion-thick { animation-name: motion-thick; } .loader__motion-medium { animation-name: motion-medium; } .loader__motion-thin { animation-name: motion-thin; } .loader__sand-drop { animation-name: sand-drop; } .loader__sand-fill { animation-name: sand-fill; } .loader__sand-grain-left { animation-name: sand-grain-left; } .loader__sand-grain-right { animation-name: sand-grain-right; } .loader__sand-line-left { animation-name: sand-line-left; }