/* ===== VARIABLES CSS PARA FÁCIL PERSONALIZACIÓN ===== */ :root { --primary-color: #2c3e50; --secondary-color: #34495e; --accent-color: #3498db; --success-color: #27ae60; --warning-color: #f39c12; --danger-color: #e74c3c; --light-gray: #ecf0f1; --dark-gray: #7f8c8d; --text-primary: #2c3e50; --text-light: #ffffff; --lcd-green: #00ff41; --lcd-bg: #0a0a0a; } /* ===== RESET Y BASE ===== */ body { background: none !important; min-height: 100vh; display: flex; justify-content: center; align-items: center; font-family: 'Quicksand', Arial, sans-serif; overflow-x: hidden; } /* ===== CONTENEDOR PRINCIPAL DEL SURTIDOR ===== */ .fuelManage { position: absolute; right: 10vw; top: auto !important; margin: 0 auto; padding: 0; border-radius: 40px 40px 48px 48px; background: linear-gradient(145deg, #f8f9fa 0%, #e9ecef 100%); box-shadow: 0 20px 60px rgba(0,0,0,0.2), 0 0 0 8px rgba(52,73,94,0.1) inset, 0 -5px 10px rgba(255,255,255,0.8) inset; border: 6px solid var(--primary-color); width: 420px !important; max-width: 98vw; display: flex; flex-direction: column; align-items: center; transition: all 0.3s ease; overflow: visible; animation: dispenserAppear 1s cubic-bezier(0.175, 0.885, 0.32, 1.275); } @keyframes dispenserAppear { 0% { transform: scale(0.8) translateY(60px); opacity: 0; } 100% { transform: scale(1) translateY(0); opacity: 1; } } .fuelManage:hover { transform: translateY(-5px); box-shadow: 0 25px 70px rgba(0,0,0,0.25), 0 0 0 8px rgba(52,73,94,0.15) inset, 0 -5px 10px rgba(255,255,255,0.9) inset; } /* ===== CABEZA DEL SURTIDOR ===== */ .dispenser-head { background: linear-gradient(145deg, var(--primary-color), var(--secondary-color)); border-radius: 32px 32px 0 0; width: 100%; padding: 20px; display: flex; justify-content: space-between; align-items: center; box-shadow: 0 4px 15px rgba(0,0,0,0.3); border-bottom: 3px solid var(--accent-color); } .brand-logo { color: var(--text-light); font-family: 'Bebas Neue', sans-serif; font-size: 1.8em; font-weight: bold; letter-spacing: 2px; text-shadow: 0 2px 4px rgba(0,0,0,0.5); } .status-lights { display: flex; gap: 8px; } .status-light { width: 12px; height: 12px; border-radius: 50%; background: rgba(255,255,255,0.3); border: 2px solid rgba(255,255,255,0.5); transition: all 0.3s ease; } .status-light.active { background: var(--success-color); box-shadow: 0 0 10px var(--success-color); animation: statusBlink 2s infinite alternate; } @keyframes statusBlink { 0% { opacity: 1; } 100% { opacity: 0.6; } } /* ===== TÍTULO ===== */ #title { background: linear-gradient(90deg, var(--accent-color), var(--primary-color)) !important; color: var(--text-light) !important; width: 100%; text-align: center; font-family: 'Bebas Neue', sans-serif; font-size: 1.5em; padding: 15px 0 !important; margin: 0 !important; border-bottom: 3px solid var(--warning-color); box-shadow: 0 3px 10px rgba(0,0,0,0.2) !important; border-radius: 0 !important; } #title h1 { margin: 0 !important; font-size: 1.3em !important; color: inherit !important; display: flex; align-items: center; justify-content: center; gap: 10px; font-family: inherit !important; text-shadow: 0 2px 4px rgba(0,0,0,0.3) !important; line-height: normal !important; letter-spacing: 2px !important; } /* ===== CUERPO DEL SURTIDOR ===== */ .dispenser-body { width: 100%; padding: 25px; background: linear-gradient(145deg, #ffffff, #f8f9fa); border-radius: 0 0 40px 40px; } /* ===== SECCIÓN DEL TANQUE Y MANGUERA ===== */ .fuel-tank-section { display: flex; flex-direction: column; align-items: center; padding: 15px; } .tank-label { color: var(--text-primary); font-size: 0.9em; font-weight: 600; margin-bottom: 10px; letter-spacing: 1px; } /* ===== ESTILOS DEL SURTIDOR ===== */ .fuelProgbar { border: 3px solid var(--primary-color) !important; border-radius: 20px !important; width: 50px !important; height: 180px !important; background: linear-gradient(180deg, #34495e 0%, #2c3e50 100%) !important; box-shadow: 0 0 20px rgba(52,73,94,0.3), 0 5px 15px rgba(0,0,0,0.2) inset !important; margin: 0 !important; overflow: hidden; display: flex; flex-direction: column-reverse; } .depotProgbar { width: 100%; height: 0%; background: linear-gradient(to top, var(--warning-color), var(--danger-color)) !important; transition: height 0.7s cubic-bezier(0.25, 0.46, 0.45, 0.94) !important; border-radius: 0 0 17px 17px !important; bottom: 0; left: 0; z-index: 1; opacity: 0.8; box-shadow: 0 0 15px rgba(243,156,18,0.6) !important; } .newProgbar { width: 100%; height: 0%; background: linear-gradient(to top, var(--success-color), var(--lcd-green)) !important; transition: height 0.7s cubic-bezier(0.25, 0.46, 0.45, 0.94) !important; border-radius: 17px 17px 0 0 !important; bottom: 0; left: 0; z-index: 2; opacity: 0.9; box-shadow: 0 0 20px rgba(39,174,96,0.8) !important; } input[type=number]::-webkit-inner-spin-button, input[type=number]::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; } input:focus{ outline: none; } /* ===== MANGUERA SIMULADA ===== */ .fuel-hose { margin-top: 20px; position: relative; display: flex; flex-direction: column; align-items: center; } .hose-connector { width: 25px; height: 15px; background: linear-gradient(145deg, #95a5a6, #7f8c8d); border-radius: 8px; border: 2px solid var(--dark-gray); box-shadow: 0 2px 5px rgba(0,0,0,0.3); } .hose-cable { width: 8px; height: 40px; background: linear-gradient(90deg, #2c3e50, #34495e); border-radius: 4px; margin: 5px 0; box-shadow: 0 2px 5px rgba(0,0,0,0.2); } .hose-nozzle { width: 30px; height: 20px; background: linear-gradient(145deg, var(--primary-color), var(--secondary-color)); border-radius: 10px; display: flex; align-items: center; justify-content: center; color: var(--text-light); font-size: 0.8em; box-shadow: 0 3px 8px rgba(0,0,0,0.3); animation: nozzleGlow 3s infinite alternate; } @keyframes nozzleGlow { 0% { box-shadow: 0 3px 8px rgba(0,0,0,0.3); } 100% { box-shadow: 0 3px 15px rgba(52,152,219,0.5); } } /* ===== PANEL DE CONTROL ===== */ .control-panel { background: linear-gradient(145deg, #ffffff, #f8f9fa); border-radius: 20px; padding: 20px; box-shadow: 0 5px 20px rgba(0,0,0,0.1); border: 2px solid rgba(52,73,94,0.1); } /* ===== DISPLAY LCD ===== */ .lcd-display { background: var(--lcd-bg); border-radius: 15px; padding: 20px; margin-bottom: 20px; border: 3px solid var(--primary-color); box-shadow: 0 0 20px rgba(0,255,65,0.3), 0 5px 15px rgba(0,0,0,0.5) inset; animation: lcdFlicker 0.1s infinite alternate; } @keyframes lcdFlicker { 0% { box-shadow: 0 0 20px rgba(0,255,65,0.3), 0 5px 15px rgba(0,0,0,0.5) inset; } 100% { box-shadow: 0 0 25px rgba(0,255,65,0.4), 0 5px 15px rgba(0,0,0,0.5) inset; } } .lcd-header { color: var(--lcd-green); font-family: 'Share Tech Mono', monospace; font-size: 0.9em; text-align: center; margin-bottom: 15px; letter-spacing: 2px; text-shadow: 0 0 10px var(--lcd-green); } .lcd-content { display: flex; flex-direction: column; gap: 10px; } .lcd-row { display: flex; justify-content: space-between; align-items: center; color: var(--lcd-green); font-family: 'Share Tech Mono', monospace; font-size: 1.1em; text-shadow: 0 0 8px var(--lcd-green); } .lcd-row.main-total { font-size: 1.4em; font-weight: bold; border-top: 1px solid rgba(0,255,65,0.3); padding-top: 10px; } /* ===== INPUT DE CANTIDAD ===== */ #qttyToAdd { margin-top: 20px !important; } #qttyToAdd label { color: var(--text-primary) !important; font-size: 1em !important; font-weight: 600 !important; margin-bottom: 10px !important; letter-spacing: 1px !important; display: block !important; text-align: center !important; margin-top: 0 !important; } .input-container { display: flex; align-items: center; justify-content: center; gap: 10px; background: var(--light-gray); border-radius: 12px; padding: 10px; box-shadow: 0 3px 10px rgba(0,0,0,0.1) inset; } #qttyToAdd input { background: var(--text-light) !important; color: var(--text-primary) !important; border: 2px solid var(--accent-color) !important; border-radius: 8px !important; font-size: 1.4em !important; width: 100px !important; text-align: center !important; height: 45px !important; margin: 0 !important; display: inline-block !important; transition: all 0.3s ease !important; font-family: 'Share Tech Mono', monospace !important; box-shadow: 0 2px 8px rgba(0,0,0,0.1) !important; border-bottom: 2px solid var(--accent-color) !important; } #qttyToAdd input:focus { border-color: var(--success-color) !important; box-shadow: 0 0 0 3px rgba(39,174,96,0.3) !important; outline: none !important; border-bottom-color: var(--success-color) !important; } #qttyToAdd h1 { margin: 0 !important; font-size: 1.4em !important; color: var(--accent-color) !important; font-family: 'Bebas Neue', sans-serif !important; font-weight: bold !important; display: inline-block !important; vertical-align: middle !important; margin-top: 0 !important; } /* ===== DISPLAY DE PRECIO ===== */ #qttyToPay { color: var(--text-light) !important; font-size: 1.2em !important; text-align: center !important; margin: 20px 0 !important; background: linear-gradient(145deg, var(--warning-color), #e67e22); border-radius: 15px; padding: 15px; box-shadow: 0 5px 20px rgba(243,156,18,0.3); border: 2px solid rgba(255,255,255,0.2); } #litros-display { font-size: 1.8em !important; color: var(--text-light) !important; text-shadow: 0 2px 4px rgba(0,0,0,0.3) !important; font-family: 'Bebas Neue', sans-serif !important; margin: 0 !important; text-align: center !important; } #toPay { font-size: 1.8em !important; color: var(--text-light) !important; text-shadow: 0 2px 4px rgba(0,0,0,0.3) !important; font-family: 'Bebas Neue', sans-serif !important; margin: 0 !important; text-align: center !important; } /* ===== BOTÓN DE COMPRA ===== */ .buyButton { background: linear-gradient(135deg, var(--success-color), #229954) !important; color: var(--text-light) !important; font-family: 'Bebas Neue', sans-serif !important; border: none !important; border-radius: 20px !important; padding: 18px 40px !important; font-size: 1.3em !important; cursor: pointer !important; letter-spacing: 2px !important; text-transform: uppercase !important; box-shadow: 0 8px 25px rgba(39,174,96,0.4) !important; transition: all 0.3s ease !important; font-weight: bold !important; width: 250px !important; text-align: center !important; margin: 0 auto !important; animation: buttonPulse 2s infinite alternate !important; } @keyframes buttonPulse { 0% { box-shadow: 0 8px 25px rgba(39,174,96,0.4); } 100% { box-shadow: 0 8px 35px rgba(39,174,96,0.6); } } .buyButton:hover { background: linear-gradient(135deg, #229954, var(--success-color)) !important; transform: translateY(-3px) scale(1.05) !important; box-shadow: 0 12px 40px rgba(39,174,96,0.6) !important; } .buyButton:active { transform: translateY(-1px) scale(1.02) !important; } .base-vents { display: flex; gap: 8px; align-items: center; } .vent { width: 30px; height: 6px; background: linear-gradient(90deg, #34495e, #2c3e50); border-radius: 3px; box-shadow: 0 1px 3px rgba(0,0,0,0.3) inset; } /* ===== RESPONSIVIDAD ===== */ @media (max-width: 768px) { .fuelManage { width: 95vw !important; margin: 20px auto; } .dispenser-body { padding: 15px; } .fuel-hose { display: none; } .fuelProgbar { width: 40px !important; height: 150px !important; } .buyButton { width: 100% !important; padding: 15px 20px !important; } } /* ===== OCULTAR SPINNERS DE INPUTS ===== */ input[type=number]::-webkit-inner-spin-button, input[type=number]::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; } input:focus { outline: none; } /* ===== OVERRIDE BOOTSTRAP SI ES NECESARIO ===== */ .row { margin: 0 !important; } .col-md-3, .col-md-9 { padding: 5px !important; }