/*!
Theme Name: EFB Technology
Theme URI: https://efbtechnology.com/
Author: EFB Technology
Author URI: https://efbtechnology.com/
Description: Description
Version: 1.0.0
Tested up to: 5.4
Requires PHP: 5.6
License: GNU General Public License v2 or later
License URI: LICENSE
Text Domain: efb-technology
Tags: custom-background, custom-logo, custom-menu, featured-images, threaded-comments, translation-ready

This theme, like WordPress, is licensed under the GPL.
Use it to make something cool, have fun, and share what you've learned.

EFB Technology is based on Underscores https://underscores.me/, (C) 2012-2020 Automattic, Inc.
Underscores is distributed under the terms of the GNU GPL v2 or later.

Normalizing styles have been helped along thanks to the fine work of
Nicolas Gallagher and Jonathan Neal https://necolas.github.io/normalize.css/
*/

/*theme css*/
body { font-family: 'Exo 2', sans-serif; }
  .font-rajdhani { font-family: 'Rajdhani', sans-serif; }

  /* Grid background */
  .hero-grid {
    background-image:
      linear-gradient(rgba(0,180,230,0.07) 1px, transparent 1px),
      linear-gradient(90deg, rgba(0,180,230,0.07) 1px, transparent 1px);
    background-size: 60px 60px;
  }

  /* Gradient text */
  .text-gradient {
    background: linear-gradient(120deg, #00B4E6, #00d4ff, #fff);
    background-size: 200%;
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
    animation: shimmer 3s linear infinite;
  }

  /* Nav underline animation */
  .nav-link { position: relative; padding-bottom: 4px; }
  .nav-link::after {
    content: ''; position: absolute; left: 0; bottom: 0;
    width: 0; height: 2px; background: #00d4ff;
    transition: width .3s;
  }
  .nav-link:hover::after { width: 100%; }

  /* Service card top bar */
  .service-card::before {
    content: ''; position: absolute; top: 0; left: 0; right: 0; height: 3px;
    background: linear-gradient(90deg, transparent, #00B4E6, transparent);
    opacity: 0; transition: opacity .3s;
  }
  .service-card:hover::before { opacity: 1; }

  /* Reveal on scroll */
  .reveal { opacity: 0; transform: translateY(30px); transition: opacity .7s, transform .7s; }
  .reveal.visible { opacity: 1; transform: translateY(0); }

  /* Marquee fade edges */
  .marquee-wrap::before, .marquee-wrap::after {
    content: ''; position: absolute; top: 0; bottom: 0; width: 100px; z-index: 2; pointer-events: none;
  }
  .marquee-wrap::before { left: 0; background: linear-gradient(90deg, #060e1c, transparent); }
  .marquee-wrap::after  { right: 0; background: linear-gradient(-90deg, #060e1c, transparent); }

  /* SVG orbit animation */
  .ring-outer { transform-origin: 160px 160px; animation: spin2 20s linear infinite; }
  .ring-mid   { transform-origin: 160px 160px; animation: spin2 12s linear infinite reverse; }
  .orbit-dot1 { transform-origin: 160px 160px; animation: orbit 8s linear infinite; }
  .orbit-dot2 { transform-origin: 160px 160px; animation: orbit 8s linear infinite; animation-delay: -2.6s; }
  .orbit-dot3 { transform-origin: 160px 160px; animation: orbit 8s linear infinite; animation-delay: -5.3s; }
  .orbit-dot4 { transform-origin: 160px 160px; animation: orbit 8s linear infinite; animation-delay: -7.9s; }

  @keyframes spin2  { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }
  @keyframes orbit  { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }
  @keyframes float  { 0% { transform: translateY(100vh); opacity: 0; } 10% { opacity: .7; } 90% { opacity: .3; } 100% { transform: translateY(-20px) translateX(var(--drift,0px)); opacity: 0; } }
  @keyframes gridMove { 0% { background-position: 0 0; } 100% { background-position: 60px 60px; } }
  @keyframes shimmer { 0% { background-position: 0% 50%; } 100% { background-position: 200% 50%; } }
  @keyframes blink   { 0%,100% { opacity: 1; } 50% { opacity: .2; } }
  @keyframes marquee { 0% { transform: translateX(0); } 100% { transform: translateX(-50%); } }
  @keyframes fadeUp  { from { opacity: 0; transform: translateY(40px); } to { opacity: 1; transform: translateY(0); } }
  @keyframes pulse2  { 0%,100% { transform: scale(1); opacity: .7; } 50% { transform: scale(1.15); opacity: 1; } }
  @keyframes fadeUpD1 { from { opacity: 0; transform: translateY(40px); } to { opacity: 1; transform: translateY(0); } }

  .animate-fade-up   { animation: fadeUp .9s cubic-bezier(.22,1,.36,1) both; }
  .animate-fade-up-2 { animation: fadeUp .9s .15s cubic-bezier(.22,1,.36,1) both; }
  .animate-fade-up-3 { animation: fadeUp .9s .25s cubic-bezier(.22,1,.36,1) both; }
  .animate-fade-up-4 { animation: fadeUp .9s .35s cubic-bezier(.22,1,.36,1) both; }
  .animate-fade-up-5 { animation: fadeUp .9s .45s cubic-bezier(.22,1,.36,1) both; }
  .animate-fade-up-6 { animation: fadeUp .9s .55s cubic-bezier(.22,1,.36,1) both; }
  .animate-grid-move { animation: gridMove 20s linear infinite; }
  .animate-orb       { animation: pulse2 6s ease-in-out infinite; }
  .animate-orb-d     { animation: pulse2 6s ease-in-out infinite; animation-delay: -3s; }
  .animate-blink     { animation: blink 1.5s infinite; }
  .animate-marquee   { animation: marquee 30s linear infinite; }

  .particle {
    position: absolute; width: 2px; height: 2px;
    background: #00B4E6; border-radius: 50%; opacity: 0;
    animation: float var(--dur, 8s) var(--delay, 0s) ease-in infinite;
  }
