@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap'); * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Inter', sans-serif; overflow: hidden; user-select: none; background: transparent; height: 100vh; width: 100vw; } .hud-container { position: fixed; top: 0; width: 100%; height: 100%; pointer-events: none; z-index: 1000; transition: all 0.3s ease; } .hud-container.not-in-vehicle { left: 20px; right: auto; } .hud-container.in-vehicle { left: auto; right: -20px; bottom: 50px; } .hud-container * { pointer-events: auto; } .top-info { position: absolute; top: 100px; right: 15px; display: flex; flex-direction: column; align-items: flex-end; gap: 8px; color: white; text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.8); padding-right: 20px; } .server-info { text-align: right; border-radius: 8px; padding: 10px 14px; } .player-name { font-size: 12px; color: rgba(255, 255, 255, 0.9); font-weight: 500; margin-bottom: -20px; } .time-info { display: flex; gap: 15px; font-size: 12px; font-weight: 500; border-radius: 8px; padding: 8px 12px; } .time i, .date i { margin-right: 5px; opacity: 0.8; } .minimap-info { position: absolute; bottom: 240px; left: 10px; border: 1px solid rgba(255, 255, 255, 0.2); border-radius: 10px; padding: 12px 16px; min-width: 200px; max-width: 250px; opacity: 0; transform: translateY(10px); transition: all 0.3s ease; z-index: 920; } .minimap-frame { position: absolute; bottom: 26px; left: 1px; width: 288px; height: 190px; border: 3.5px solid rgba(255, 255, 255, 0.7); border-radius: 6px; opacity: 0; transform: translateY(10px); transition: all 0.3s ease; z-index: 899; pointer-events: none; box-shadow: 0 0 15px rgba(0, 0, 0, 0.5), inset 0 0 0 1px rgba(255, 255, 255, 0.2); } .minimap-frame.visible { opacity: 1; transform: translateY(0); } .minimap-info.visible { opacity: 1; transform: translateY(0); } .street-name { font-size: 14px; font-weight: 600; color: white; margin-bottom: 4px; word-wrap: break-word; } .zone-name { font-size: 11px; color: rgba(255, 255, 255, 0.7); font-weight: 400; word-wrap: break-word; } .compass-indicator { position: absolute; top: 50%; right: -35px; transform: translateY(-50%); width: 28px; height: 28px; background: rgba(0, 255, 136, 0.2); border: 2px solid #00ff88; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-weight: 700; color: #00ff88; font-size: 11px; } .health-armor-bars { position: absolute; bottom: 70px; left: 0px; display: flex; flex-direction: column; gap: 8px; transition: all 0.4s cubic-bezier(0.25, 0.8, 0.25, 1); } .hud-container.in-vehicle .health-armor-bars { left: 310px; } .status-icons { position: absolute; bottom: 20px; left: 0px; display: flex; gap: 12px; transition: all 0.4s cubic-bezier(0.25, 0.8, 0.25, 1); } .hud-container.in-vehicle .status-icons { left: 310px; } .status-icon { height: 44px; background: rgba(15, 15, 15, 0.9); border-radius: 12px; display: flex; align-items: center; justify-content: center; font-size: 18px; transition: all 0.4s cubic-bezier(0.25, 0.8, 0.25, 1); position: relative; overflow: hidden; opacity: 0; transform: translateY(15px) scale(0.8); pointer-events: none; width: 48px; padding: 0 8px; gap: 8px; } .status-icon-content { display: flex; align-items: center; gap: 8px; width: 100%; } .status-icon-bar { width: 24px; height: 32px; background: rgba(255, 255, 255, 0.1); border-radius: 4px; position: relative; overflow: hidden; } .status-icon-bar-fill { position: absolute; bottom: 0; width: 100%; border-radius: 4px; transition: height 0.6s cubic-bezier(0.25, 0.8, 0.25, 1); } .hunger-icon .status-icon-bar-fill { background: linear-gradient(0deg, #FF9800, #FFB74D); } .thirst-icon .status-icon-bar-fill { background: linear-gradient(0deg, #03A9F4, #42A5F5); } .stamina-icon .status-icon-bar-fill { background: linear-gradient(0deg, #E91E63, #F06292); } .oxygen-icon .status-icon-bar-fill { background: linear-gradient(0deg, #00BCD4, #4DD0E1); } .status-icon.stamina-icon.visible, .status-icon.oxygen-icon.visible { opacity: 1; transform: translateY(0) scale(1); pointer-events: auto; } .status-icon.hunger-icon, .status-icon.thirst-icon { opacity: 1; transform: translateY(0) scale(1); pointer-events: auto; } .status-icon::before { content: ''; position: absolute; inset: 0; border-radius: 10px; padding: 2px; background: linear-gradient(135deg, transparent, rgba(255,255,255,0.1), transparent); opacity: 0; transition: opacity 0.3s ease; } .status-icon:hover::before { opacity: 1; } .status-icon.hidden { opacity: 0; transform: translateY(15px) scale(0.8); pointer-events: none; } .status-icon i { transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1); filter: drop-shadow(0 0 8px currentColor); z-index: 2; position: relative; } .hunger-icon { border-color: #FF9800; background: linear-gradient(135deg, rgba(255, 152, 0, 0.15), rgba(255, 152, 0, 0.05)); } .hunger-icon i { color: #FF9800; } .thirst-icon { border-color: #03A9F4; background: linear-gradient(135deg, rgba(3, 169, 244, 0.15), rgba(3, 169, 244, 0.05)); } .thirst-icon i { color: #03A9F4; } .stamina-icon { border-color: #E91E63; background: linear-gradient(135deg, rgba(233, 30, 99, 0.15), rgba(233, 30, 99, 0.05)); } .stamina-icon i { color: #E91E63; } .oxygen-icon { border-color: #00BCD4; background: linear-gradient(135deg, rgba(0, 188, 212, 0.15), rgba(0, 188, 212, 0.05)); } .oxygen-icon i { color: #00BCD4; } .status-icon.low { animation: statusPulse 2s ease-in-out infinite; border-color: #FF9800; } .status-icon.low .status-icon-bar-fill { background: linear-gradient(0deg, #FF9800, #FFB74D); animation: lowPulse 2s ease-in-out infinite; } .status-icon.critical { animation: statusShake 0.6s ease-in-out infinite; border-color: #f44336; box-shadow: 0 0 20px rgba(244, 67, 54, 0.4); } .status-icon.critical i { color: #f44336; } .status-icon.critical .status-icon-bar-fill { background: linear-gradient(0deg, #f44336, #e57373); animation: criticalPulse 1s ease-in-out infinite; } @keyframes statusPulse { 0%, 100% { transform: scale(1); box-shadow: 0 0 0 0 rgba(255, 152, 0, 0.4); } 50% { transform: scale(1.05); box-shadow: 0 0 0 8px rgba(255, 152, 0, 0); } } @keyframes statusShake { 0%, 100% { transform: translateX(0); } 25% { transform: translateX(-2px); } 75% { transform: translateX(2px); } } @keyframes lowPulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.7; } } @keyframes criticalPulse { 0%, 100% { opacity: 1; box-shadow: 0 0 15px rgba(244, 67, 54, 0.6); } 50% { opacity: 0.6; box-shadow: 0 0 25px rgba(244, 67, 54, 0.8); } } .stat-bar { display: flex; align-items: center; gap: 10px; transition: all 0.3s ease; } .stat-bar.hidden { opacity: 0; transform: translateX(-20px); pointer-events: none; } .stat-icon { width: 40px; height: 40px; display: flex; align-items: center; justify-content: center; font-size: 18px; filter: drop-shadow(0 0 8px currentColor); } .health-bar .stat-icon { color: #4CAF50; } .armor-bar .stat-icon { color: #2196F3; } .stat-bar-container { width: 180px; height: 8px; background: rgba(0, 0, 0, 0.6); border-radius: 4px; overflow: hidden; } .stat-bar-fill { height: 100%; width: 100%; border-radius: 4px; transition: width 0.6s cubic-bezier(0.25, 0.8, 0.25, 1); position: relative; } .health-bar .stat-bar-fill { background: linear-gradient(90deg, #4CAF50 0%, #66BB6A 100%); box-shadow: 0 0 10px rgba(76, 175, 80, 0.4); } .armor-bar .stat-bar-fill { background: linear-gradient(90deg, #2196F3 0%, #42A5F5 100%); box-shadow: 0 0 10px rgba(33, 150, 243, 0.4); } .stat-bar.low .stat-bar-fill { background: linear-gradient(90deg, #FF9800 0%, #FFB74D 100%); animation: lowPulse 2s ease-in-out infinite; } .stat-bar.critical .stat-bar-fill { background: linear-gradient(90deg, #f44336 0%, #e57373 100%); animation: criticalPulse 1s ease-in-out infinite; } .voice-indicator { position: absolute; bottom: 155px; left: -8px; width: 55px; height: 55px; border-radius: 12px; display: flex; align-items: center; justify-content: center; transition: all 0.4s cubic-bezier(0.25, 0.8, 0.25, 1); z-index: 1020; } .voice-indicator.armor-hidden { bottom: 115px; } .hud-container.in-vehicle .voice-indicator { left: 302px; } .voice-content { display: flex; flex-direction: column; align-items: center; gap: 2px; } .voice-icon-container { position: relative; } .voice-icon { font-size: 18px; color: rgba(255, 255, 255, 0.9); transition: all 0.3s ease; } .voice-level-indicator { position: absolute; bottom: -6px; right: -6px; width: 16px; height: 16px; background: #666; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 9px; font-weight: 700; color: white; border: 2px solid rgba(255, 255, 255, 0.3); transition: all 0.3s ease; } .voice-indicator.level-1 .voice-level-indicator { background: #bcb6d4d1; border-color: #bcb6d4d1; } .voice-indicator.level-2 .voice-level-indicator { background: #a2c0e4; border-color: #a2c0e4; } .voice-indicator.level-3 .voice-level-indicator { background: #bbe9e4c3; border-color: #bbe9e4c3; } .voice-indicator.talking { border-color: #00ff88; box-shadow: 0 0 8px rgba(0, 255, 136, 0.5); transform: scale(0.80); animation: voicePulse 0.5s ease-in-out infinite alternate; } .voice-indicator.talking .voice-icon { color: #00ff88; } @keyframes voicePulse { 0% { box-shadow: 0 0 25px rgba(0, 255, 136, 0.5); } 100% { box-shadow: 0 0 35px rgba(0, 255, 136, 0.8); } } .voice-indicator.radio { border-color: #2196F3; } .voice-indicator.radio .voice-icon { color: #2196F3; } .vehicle-hud { position: absolute; bottom: 20px; right: 20px; border-radius: 16px; padding: 16px; display: none; min-width: 200px; transition: all 0.4s cubic-bezier(0.25, 0.8, 0.25, 1); z-index: 1010; } .vehicle-hud.visible { display: block; animation: slideInUp 0.4s cubic-bezier(0.25, 0.8, 0.25, 1); } @keyframes slideInUp { from { opacity: 0; transform: translateY(30px) scale(0.9); } to { opacity: 1; transform: translateY(0) scale(1); } } .speedometer { text-align: center; margin-bottom: -169px; margin-left: -115px; } .speed-display { font-size: 42px; font-weight: 700; color: white; font-family: 'Inter', monospace; line-height: 1; text-shadow: 0 0 20px rgba(255, 255, 255, 0.3); } .speed-unit { color: rgba(255, 255, 255, 0.6); font-size: 11px; font-weight: 500; margin-top: 2px; } .vehicle-stats { display: grid; grid-template-areas: "speed fuel" "speed gear"; gap: 12px; margin-bottom: 12px; } .speedometer { grid-area: speed; } .fuel-container { grid-area: fuel; } .gear-container { grid-area: gear; } .fuel-container, .gear-container { display: flex; flex-direction: column; align-items: center; gap: 6px; } .fuel-bar { width: 30px; height: 80px; background: rgba(255, 255, 255, 0.1); border-radius: 15px; position: relative; border: 1px solid rgba(255, 255, 255, 0.2); overflow: hidden; } .fuel-fill { position: absolute; bottom: 0; width: 100%; background: linear-gradient(0deg, #4CAF50, #66BB6A); border-radius: 15px; transition: height 0.4s cubic-bezier(0.25, 0.8, 0.25, 1); } .fuel-fill.low { background: linear-gradient(0deg, #FF9800, #FFB74D); } .fuel-fill.critical { background: linear-gradient(0deg, #f44336, #e57373); animation: fuelPulse 1s infinite; } @keyframes fuelPulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.6; } } .gear-display { width: 40px; height: 40px; background: rgba(255, 255, 255, 0.1); border: 1px solid rgba(255, 255, 255, 0.2); border-radius: 10px; display: flex; align-items: center; justify-content: center; font-size: 18px; font-weight: 700; color: white; } .vehicle-indicators { display: flex; justify-content: space-between; gap: 8px; } .indicator { width: 32px; height: 32px; background: rgba(255, 255, 255, 0.1); border-radius: 8px; display: flex; align-items: center; justify-content: center; color: rgba(255, 255, 255, 0.4); font-size: 12px; transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1); } .indicator.active { background: rgba(76, 175, 80, 0.2); color: #4CAF50; border: 1px solid #4CAF50; box-shadow: 0 0 10px rgba(76, 175, 80, 0.3); } .seatbelt-indicator.active { background: rgba(33, 150, 243, 0.2); color: #2196F3; border: 1px solid #2196F3; box-shadow: 0 0 10px rgba(33, 150, 243, 0.3); } .money-display { position: absolute; top: 200px; right: 10px; border-radius: 10px; padding: 12px 16px; color: white; font-weight: 600; opacity: 0; transform: translateX(20px); transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1); } .money-display.visible { opacity: 1; transform: translateX(0); } .money-container { display: flex; flex-direction: column; gap: 8px; font-size: 14px; min-width: 180px; } .money-icon { color: #4CAF50; font-size: 14px; margin-right: 6px; } .cash-amount, .bank-amount { display: flex; align-items: center; } .cash-amount { color: #4CAF50; } .bank-amount { color: #2196F3; } .money-change { margin-top: 8px; font-size: 12px; opacity: 0; transition: opacity 0.3s ease; text-align: center; } .money-change.visible { opacity: 1; } .money-change.positive { color: #4CAF50; } .money-change.negative { color: #f44336; } .settings-menu { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); background: linear-gradient(135deg, rgba(15, 15, 20, 0.95), rgba(25, 25, 35, 0.95)); border: 1px solid rgba(75, 85, 99, 0.3); border-radius: 20px; padding: 0; min-width: 500px; max-width: 600px; display: none; box-shadow: 0 25px 50px rgba(0, 0, 0, 0.6), 0 0 0 1px rgba(255, 255, 255, 0.1); animation: modalFadeIn 0.4s cubic-bezier(0.25, 0.8, 0.25, 1); } .settings-menu.visible { display: block; } @keyframes modalFadeIn { from { opacity: 0; transform: translate(-50%, -50%) scale(0.9); } to { opacity: 1; transform: translate(-50%, -50%) scale(1); } } .menu-header { display: flex; justify-content: space-between; align-items: center; padding: 24px 28px; border-bottom: 1px solid rgba(75, 85, 99, 0.2); background: linear-gradient(135deg, rgba(30, 30, 40, 0.8), rgba(20, 20, 30, 0.8)); border-radius: 20px 20px 0 0; } .menu-header h2 { color: #f8fafc; font-size: 20px; font-weight: 600; margin: 0; letter-spacing: -0.025em; } .close-btn { background: rgba(255, 255, 255, 0.1); border: none; color: rgba(255, 255, 255, 0.7); font-size: 16px; cursor: pointer; width: 36px; height: 36px; border-radius: 10px; display: flex; align-items: center; justify-content: center; transition: all 0.2s ease; } .close-btn:hover { background: rgba(255, 255, 255, 0.2); color: white; transform: scale(1.05); } .menu-content { padding: 24px 28px; } .menu-section { margin-bottom: 28px; } .menu-section:last-child { margin-bottom: 0; } .menu-section h3 { color: #e2e8f0; font-size: 16px; font-weight: 600; margin-bottom: 16px; padding-bottom: 8px; border-bottom: 1px solid rgba(75, 85, 99, 0.2); } .settings-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; } .setting-item { display: flex; justify-content: space-between; align-items: center; padding: 14px 16px; background: rgba(30, 41, 59, 0.5); border: 1px solid rgba(75, 85, 99, 0.2); border-radius: 12px; transition: all 0.2s ease; } .setting-item:hover { background: rgba(30, 41, 59, 0.7); border-color: rgba(75, 85, 99, 0.4); } .setting-item label { color: #f1f5f9; font-size: 13px; font-weight: 500; letter-spacing: -0.01em; } .toggle-switch { position: relative; width: 48px; height: 26px; background: rgba(71, 85, 105, 0.6); border-radius: 13px; cursor: pointer; transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1); border: 1px solid rgba(75, 85, 99, 0.3); } .toggle-switch.active { background: linear-gradient(135deg, #10b981, #059669); border-color: #10b981; box-shadow: 0 0 20px rgba(16, 185, 129, 0.3); } .toggle-switch:hover { border-color: rgba(75, 85, 99, 0.5); } .toggle-slider { position: absolute; width: 22px; height: 22px; background: white; border-radius: 50%; top: 2px; left: 2px; transition: transform 0.3s cubic-bezier(0.25, 0.8, 0.25, 1); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); } .toggle-switch.active .toggle-slider { transform: translateX(22px); } .action-buttons { display: flex; gap: 12px; flex-wrap: wrap; } .action-btn { flex: 1; min-width: 140px; padding: 14px 20px; background: linear-gradient(135deg, rgba(55, 65, 81, 0.8), rgba(75, 85, 99, 0.8)); border: 1px solid rgba(75, 85, 99, 0.4); border-radius: 12px; color: #f1f5f9; font-size: 13px; font-weight: 500; cursor: pointer; transition: all 0.2s ease; display: flex; align-items: center; justify-content: center; gap: 8px; } .action-btn:hover { background: linear-gradient(135deg, rgba(75, 85, 99, 0.9), rgba(99, 102, 114, 0.9)); border-color: rgba(99, 102, 114, 0.6); transform: translateY(-1px); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2); } .action-btn.hide-hud-btn:hover { background: linear-gradient(135deg, rgba(239, 68, 68, 0.8), rgba(220, 38, 38, 0.8)); border-color: rgba(239, 68, 68, 0.6); } .action-btn.show-hud-btn:hover { background: linear-gradient(135deg, rgba(34, 197, 94, 0.8), rgba(22, 163, 74, 0.8)); border-color: rgba(34, 197, 94, 0.6); } .action-btn.cinematic-btn:hover { background: linear-gradient(135deg, rgba(147, 51, 234, 0.8), rgba(124, 58, 237, 0.8)); border-color: rgba(147, 51, 234, 0.6); } .cinematic-bars { position: fixed; width: 100%; height: 100%; top: 0; left: 0; pointer-events: none; z-index: 9999; opacity: 0; transition: opacity 0.4s ease; } .cinematic-bars.active { opacity: 1; } .cinematic-bar { position: absolute; width: 100%; height: 80px; background: #000; z-index: 9999; } .cinematic-bar.top { top: 0; transform: translateY(-100%); transition: transform 0.4s cubic-bezier(0.25, 0.8, 0.25, 1); } .cinematic-bar.bottom { bottom: 0; transform: translateY(100%); transition: transform 0.4s cubic-bezier(0.25, 0.8, 0.25, 1); } .cinematic-bars.active .cinematic-bar.top { transform: translateY(0); } .cinematic-bars.active .cinematic-bar.bottom { transform: translateY(0); } .notifications { position: absolute; top: 20px; left: 50%; transform: translateX(-50%); display: flex; flex-direction: column; gap: 8px; z-index: 2000; } .notification { background: rgba(15, 15, 15, 0.95); border: 1px solid rgba(255, 255, 255, 0.15); border-radius: 10px; padding: 12px 16px; color: white; font-weight: 500; min-width: 250px; text-align: center; transform: translateY(-20px); opacity: 0; animation: notificationSlideIn 0.3s cubic-bezier(0.25, 0.8, 0.25, 1) forwards; } .notification.success { border-left: 4px solid #4CAF50; } .notification.error { border-left: 4px solid #f44336; } .notification.warning { border-left: 4px solid #FF9800; } .notification.info { border-left: 4px solid #2196F3; } @keyframes notificationSlideIn { to { opacity: 1; transform: translateY(0); } } .notification.fade-out { animation: notificationSlideOut 0.3s cubic-bezier(0.25, 0.8, 0.25, 1) forwards; } @keyframes notificationSlideOut { to { opacity: 0; transform: translateY(-20px); } } @media (max-width: 1366px) { .stat-bar-container { width: 160px; } .status-icon { height: 40px; font-size: 16px; width: 45px; } .voice-indicator { width: 50px; height: 50px; bottom: 150px; } .voice-indicator.armor-hidden { bottom: 110px; } .voice-icon { font-size: 16px; } .voice-level-indicator { width: 14px; height: 14px; font-size: 8px; bottom: -5px; right: -5px; } .vehicle-hud { padding: 12px; min-width: 180px; } .speed-display { font-size: 36px; } .minimap-info { min-width: 220px; max-width: 280px; } .hud-container.in-vehicle .health-armor-bars { left: 310px; } .settings-menu { min-width: 450px; max-width: 550px; } .menu-header { padding: 20px 24px; } .menu-content { padding: 20px 24px; } .menu-section h3 { font-size: 15px; } .setting-item { padding: 12px 14px; } .setting-item label { font-size: 12px; } .toggle-switch { width: 44px; height: 24px; } .toggle-slider { width: 20px; height: 20px; } .toggle-switch.active .toggle-slider { transform: translateX(20px); } .action-btn { min-width: 120px; padding: 12px 16px; font-size: 12px; } }