/* ====== Symbolics Technology Design System ====== */
/* Version: 2.1 */
/* Last Updated: 2025-04-05 */
/* Compatible with styles.json v1.0 */

/* ====== Core Brand Variables ====== */
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap');

:root {
    /* Brand Colors */
    --color-primary: #0A1A3A;       /* Updated Primary */
    --color-secondary: #00E5CC;     /* Updated Secondary */
    --color-accent: #6A1B9A;        /* Updated Accent */
    --color-neutral: #C0C0C0;       /* New Neutral */
    --color-light: #F9FAFB;         /* Soft Off-White */
    --color-dark: #1F2937;          /* Deep Slate */

    /* Typography */
    --font-heading: 'Montserrat', sans-serif;
    --font-body: 'Roboto', sans-serif;
    --text-base-size: 1rem;
    --text-scale-ratio: 1.25;

    /* Spacing System */
    --space-unit: 1rem;
    --space-xs: calc(0.5 * var(--space-unit));
    --space-sm: calc(0.75 * var(--space-unit));
    --space-md: calc(1.25 * var(--space-unit));
    --space-lg: calc(2 * var(--space-unit));
    --space-xl: calc(3.25 * var(--space-unit));
    --space-section: 4rem;
    --container-width: 1200px;
    --gutter: 1.5rem;

    /* Effects */
    --shadow-sm: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
    --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
    --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
    --blur: blur(10px);

    /* Transition */
    --transition-base: all 0.3s ease;

    /* Hero background control */
    --hero-image: url('images/hero.png');
    --hero-height-mobile: 12rem;
    --hero-height-desktop: 20rem;
}

/* ====== Dark Mode Variables ====== */
[data-theme="dark"] {
    --color-primary: #93C5FD;    /* Light Blue for interactions */
    --color-secondary: #60A5FA;  /* Sky Blue hover */
    --color-light: #111827;      /* Dark background */
    --color-dark: #F9FAFB;       /* Bright text */
}

/* ====== Base Reset & Styles ====== */
*,
*::before,
*::after {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

html {
    scroll-behavior: smooth;
    -webkit-text-size-adjust: 100%;
    -webkit-tap-highlight-color: transparent;
}

body {
    font-family: var(--font-body);
    line-height: 1.6;
    color: var(--color-dark);
    background-color: var(--color-light);
    margin: 0;
    padding: 0;
    transition: var(--transition-base);
}

/* ====== Typography ====== */
h1, h2, h3, h4, h5, h6 {
    font-family: var(--font-heading);
    font-weight: 600;
    line-height: 1.2;
    margin-bottom: var(--space-sm);
}

/* Ensure text is black */
.text-black {
    color: #000 !important; /* Force black text */
}

/* ====== Enhanced Navigation ====== */
/* Sleek Navbar Styling */
.navbar {
    display: flex;
    align-items: center;
    justify-content: center; /* Center content horizontally */
    height: 3.5rem; /* Reduced height */
    padding: var(--space-xs) 1rem;
    background-color: rgba(255, 255, 255, 0.8);
    backdrop-filter: blur(10px);
    z-index: 1000; /* Ensure it appears above other elements */
    position: sticky; /* Ensure the navbar stays at the top */
    top: 0; /* Stick to the top of the viewport */
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
    transition: background-color 0.3s ease, box-shadow 0.3s ease;
}

.navbar .container {
    display: flex;
    align-items: center;
    justify-content: space-between; /* Space between left and right sections */
    width: 100%;
}

.navbar .text-center {
    position: absolute; /* Position text in the center */
    left: 50%;
    transform: translateX(-50%); /* Center horizontally */
}

.dark .navbar {
    background-color: rgba(26, 32, 44, 0.8); /* Dark mode navbar */
}

.navbar:hover {
    background-color: rgba(255, 255, 255, 1); /* Fully opaque on hover */
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); /* Enhanced shadow on hover */
}

.dark .navbar:hover {
    background-color: rgba(26, 32, 44, 1); /* Fully opaque in dark mode */
}

.nav-link {
    font-family: var(--font-heading);
    font-weight: 600;
    color: var(--color-primary);
    text-decoration: none;
    padding: var(--space-xs) var(--space-sm);
    border-radius: var(--border-radius);
    transition: color 0.3s ease, background-color 0.3s ease;
}

.nav-link:hover,
.nav-link:focus {
    color: var(--color-secondary);
    background-color: rgba(49, 130, 206, 0.1); /* Subtle background on hover */
}

.dark .nav-link {
    color: var(--color-light);
}

.dark .nav-link:hover,
.dark .nav-link:focus {
    color: var(--color-secondary);
    background-color: rgba(99, 179, 237, 0.1);
}

#desktop-nav li {
    margin: 0 1rem; /* Add spacing between desktop nav items */
}

#desktop-nav a {
    font-family: var(--font-heading);
    font-weight: 600;
    color: var(--color-primary);
    text-decoration: none;
    padding: var(--space-xs) var(--space-sm);
    border-radius: var(--border-radius);
    transition: color 0.3s ease, background-color 0.3s ease;
}

#desktop-nav a:hover,
#desktop-nav a:focus {
    color: var(--color-secondary);
    background-color: rgba(49, 130, 206, 0.1); /* Subtle background on hover */
}

.dark #desktop-nav a {
    color: var(--color-light);
}

.dark #desktop-nav a:hover,
.dark #desktop-nav a:focus {
    color: var(--color-secondary);
    background-color: rgba(99, 179, 237, 0.1);
}

#mobile-nav {
    display: none; /* Default hidden */
    flex-direction: column;
    max-height: 80vh; /* Limit height to avoid taking up the entire screen */
    overflow-y: auto; /* Add scrolling if content exceeds max height */
    position: absolute; /* Ensure it stays within the viewport */
    top: 4rem; /* Adjust based on your navbar height */
    left: 0;
    right: 0;
    background-color: rgba(255, 255, 255, 0.95); /* Slightly transparent for sleekness */
    border-top: 1px solid rgba(0, 0, 0, 0.1); /* Subtle border */
    z-index: 50; /* Ensure it appears above the hero section */
    transition: transform 0.3s ease, opacity 0.3s ease;
}

.dark #mobile-nav {
    background-color: rgba(26, 32, 44, 0.95); /* Dark mode background */
    border-top: 1px solid rgba(255, 255, 255, 0.1);
}

#mobile-nav.hidden {
    display: none !important;
}

#mobile-nav.flex {
    display: flex !important;
}

#mobile-nav li {
    margin: 0.5rem 0; /* Add spacing between mobile nav items */
}

#mobile-nav a {
    display: block;
    padding: var(--space-sm); /* Add padding for better touch targets */
    color: var(--color-primary);
    text-decoration: none;
    border-radius: var(--border-radius);
    transition: var(--transition-base);
}

#mobile-nav a:hover {
    background-color: rgba(49, 130, 206, 0.1); /* Subtle hover effect */
    color: var(--color-secondary);
}

.dark #mobile-nav a {
    color: var(--color-light);
}

.dark #mobile-nav a:hover {
    background-color: rgba(99, 179, 237, 0.1);
    color: var(--color-secondary);
}

@media (max-width: 768px) {
    #desktop-nav {
        display: none !important; /* Hide desktop nav on mobile */
    }
    #mobile-nav {
        display: flex !important; /* Show mobile nav */
    }
}


/* Mobile Navigation */
.nav-link-mobile {
    display: block;
    padding: var(--space-sm);
    color: var(--color-primary);
    text-decoration: none;
    transition: var(--transition-base);
}

.dark .nav-link-mobile {
    color: var(--color-light);
}

#mobile-menu {
    transition: var(--transition-base);
}

#desktop-nav {
    display: flex !important; /* Ensure desktop nav is visible */
    justify-content: center; /* Center the nav options horizontally */
    align-items: center; /* Align items vertically */
    list-style: none; /* Remove default list styles */
    margin: 0; /* Reset margin */
    padding: 0; /* Reset padding */
}

/* Hamburger Menu */
#mobile-menu-toggle {
    width: 32px; /* Ensure consistent width */
    height: 32px; /* Ensure consistent height */
    object-fit: contain; /* Maintain aspect ratio */
    cursor: pointer; /* Indicate clickable element */
    display: block; /* Ensure proper alignment */
    margin: auto; /* Center the image */
}

@media (min-width: 768px) {
    #mobile-menu-toggle {
        display: none; /* Hide on desktop */
    }
}

#mobile-menu-toggle img {
    width: 32px; /* Ensure consistent width */
    height: 32px; /* Ensure consistent height */
    object-fit: contain; /* Maintain aspect ratio */
    display: block; /* Prevent inline spacing issues */
    margin: auto; /* Center the image within the button */
}

#mobile-menu-toggle svg {
    display: none; /* Hide the SVG to prevent overlap */
}

@media (min-width: 768px) {
    #mobile-menu-toggle {
        display: none;
    }
    #desktop-nav {
        display: flex !important; /* Ensure desktop nav is visible */
    }
    #mobile-nav {
        display: none !important; /* Ensure mobile nav is hidden on desktop */
    }
}

@media (max-width: 767px) {
    #desktop-nav {
        display: none !important; /* Ensure desktop nav is hidden on mobile */
    }
    #mobile-nav {
        display: flex !important; /* Ensure mobile nav is visible */
    }
}

/* ====== Layout Components ====== */
.container {
    width: 100%;
    max-width: var(--container-width);
    margin: 0 auto;
    padding: 0 var(--space-md);
}

.section {
    position: relative;
    z-index: 1; /* Ensure sections float above the background */
    background-color: rgba(255, 255, 255, 0.9); /* Semi-transparent background for readability */
    border-radius: var(--border-radius);
    padding: var(--space-lg);
    margin-bottom: var(--space-xl);
}

/* ====== Hero Section ====== */
.hero {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0; /* Remove padding to make the video occupy the full section */
    margin: 0;
    height: 80vh; /* Adjust height to make the section slightly smaller */
    overflow: hidden; /* Prevent overflow */
    background: var(--hero-image) center/cover no-repeat;
    height: var(--hero-height-mobile);
}

.hero-wrapper {
    display: flex;
    flex-wrap: nowrap;
    justify-content: center;
    align-items: center;
    padding: var(--space-lg);
    position: relative;
    z-index: 2; /* Ensure it is above the video */
}

.hero-content {
    background-color: #000; /* Set background to black */
    color: #fff; /* Ensure text is white for contrast */
    padding: var(--space-lg); /* Add padding for spacing */
    border-radius: var(--border-radius); /* Optional: Add rounded corners */
}

.hero-content h1 {
    color: #fff !important; /* Ensure heading text is white */
}

.hero-content p {
    color: #ccc !important; /* Use a lighter gray for paragraph text */
}

.hero-content {
    margin-top: var(--space-xl); /* Add spacing to avoid overlap with navbar */
    text-align: center;
    color: #000 !important; /* Ensure hero content text is black */
}

.hero h1 {
    color: #fff !important; /* Force white text for the landing page heading */
}

.hero-video {
    position: absolute;
    top: 0;
    left: 0;
    width: 90%; /* Reduce width slightly */
    height: 90%; /* Reduce height slightly */
    object-fit: cover; /* Ensure the video covers the section */
    z-index: 0; /* Keep the video at the back */
}

.hero-content {
    position: relative;
    z-index: 2; /* Ensure content is above the video */
    color: var(--color-light); /* Ensure text is readable */
}

.hero img.logo {
    max-height: 4rem;
    margin-bottom: var(--space-md);
}

.hero-content h1,
.hero-content p,
.hero-content a {
    color: #fff !important; /* Force white text for headings, paragraphs, and links */
}

.hero-content a {
    background-color: var(--color-secondary); /* Ensure button background remains visible */
    color: #fff !important; /* Force white text for buttons */
    border-color: var(--color-secondary); /* Ensure border matches background */
}

.hero-content a:hover {
    opacity: 0.9; /* Slight fade effect on hover */
}

@media (min-width: 768px) {
    .hero {
        height: var(--hero-height-desktop);
    }
}

/* Second Hero Section */
.second-hero {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    background-color: var(--color-light); /* Light background for contrast */
    padding: var(--space-lg) var(--space-md);
    margin-top: var(--space-xl); /* Add spacing below the first hero */
    z-index: 1; /* Ensure it appears above other elements */
}

.second-hero .hero-wrapper {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
    padding: var(--space-lg);
}

/* Navbar Logo */
.navbar #logo img {
    height: 2.5rem;
    transition: var(--transition-base);
}

.navbar #logo img:hover {
    transform: scale(1.1);
}

/* Logo Button */
.logo-button {
    cursor: pointer; /* Indicate interactivity */
    display: inline-block;
    transition: transform 0.2s ease, opacity 0.3s ease;
}

.logo-button:hover {
    transform: scale(1.05); /* Slight zoom effect on hover */
    opacity: 0.9; /* Subtle fade effect */
}

.logo-button img {
    display: block;
    max-height: 2.5rem;
    width: auto;
}

/* Navbar Brand */
.navbar-brand {
    margin-left: 1rem; /* Add spacing to move it to the right */
    display: inline-block;
    vertical-align: middle; /* Align with the logo */
}

/* ====== Footer ====== */
footer {
    background-color: var(--color-primary);
    color: var(--color-light);
    text-align: center;
    padding: var(--space-lg) 0;
    margin-top: var(--space-xl);
}

/* ====== Animations ====== */
@keyframes fadeIn {
    from { opacity: 0; }
    to { opacity: 1; }
}

@keyframes slideUp {
    from { transform: translateY(20px); opacity: 0; }
    to { transform: translateY(0); opacity: 1; }
}

/* ====== Responsive Design ====== */
@media (max-width: 768px) {
    :root {
        --text-base-size: 0.9rem;
        --section-spacing: 3rem;
    }

    .navbar {
        padding: var(--space-xs) 0;
    }

    .hero-content {
        padding: var(--space-md);
    }

    .section {
        padding: var(--space-sm) 0;
    }
}

/* ====== Utility Classes ====== */
.text-primary { color: var(--color-primary); }
.text-secondary { color: var(--color-secondary); }
.bg-primary { background-color: var(--color-primary); }
.bg-secondary { background-color: var(--color-secondary); }
.fade-in { animation: fadeIn 0.5s ease-out; }
.slide-up { animation: slideUp 0.5s ease-out; }
.backdrop-blur-lg {
    backdrop-filter: blur(20px);
}
.bg-opacity-90 {
    background-color: rgba(247, 250, 252, 0.9);
}

.dark .bg-opacity-90 {
    background-color: rgba(26, 32, 44, 0.9);
}

/* Flex and Wrap Utility */
.flex-wrap-container {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
    gap: var(--space-md); /* Optional spacing between items */
}

/* Service Tab Styling */
.service-tab {
    background: var(--color-light);
    color: var(--color-primary);
    border: 2px solid var(--color-secondary);
    padding: var(--space-xs) var(--space-sm);
    border-radius: var(--border-radius);
    transition: var(--transition-base);
    cursor: pointer;
}

.service-tab.active,
.service-tab:hover {
    background: var(--color-secondary);
    color: var(--color-light);
    transform: scale(1.05);
}

#mobile-service-select {
    width: 100%;
    padding: var(--space-xs);
    border: 1px solid var(--color-dark);
    border-radius: calc(var(--border-radius) / 2);
}

/* Service Content */
.service-content {
    display: block !important;
    padding: var(--space-md);
    background: var(--color-light);
    border-radius: var(--border-radius);
    box-shadow: var(--shadow-md);
}

.service-content.hidden {
    display: none !important;
}

.service-content:not(.hidden) {
    display: block;
}

/* Utility Classes for Contrast */
.bg-light {
    background-color: var(--color-light);
    color: var(--color-dark) !important; /* Ensure dark text on light background */
}

.bg-dark {
    background-color: var(--color-dark);
    color: var(--color-light) !important; /* Ensure light text on dark background */
}

.bg-primary {
    background-color: var(--color-primary);
    color: var(--color-light) !important; /* Ensure light text on primary background */
}

.bg-secondary {
    background-color: var(--color-secondary);
    color: var(--color-light) !important; /* Ensure light text on secondary background */
}

/* Ensure proper contrast in dark mode */
.dark .bg-light {
    background-color: var(--color-dark);
    color: var(--color-light) !important;
}

.dark .bg-dark {
    background-color: var(--color-light);
    color: var(--color-dark) !important;
}

/* Heading Text Colors */
.text-white {
    color: #fff !important; /* Force white text */
}

.text-primary {
    color: var(--color-primary) !important; /* Ensure primary text color */
}

.text-secondary {
    color: var(--color-secondary) !important; /* Ensure secondary text color */
}

/* ====== Contact Form ====== */
.contact-form-section {
  background-color: var(--color-light);
  padding: var(--space-lg);
  border-radius: var(--border-radius);
  box-shadow: var(--shadow-md);
}

.contact-form-section h2 {
  color: var(--color-primary);
}

.contact-form-section input,
.contact-form-section textarea {
  width: 100%;
  padding: var(--space-sm);
  border: 1px solid var(--color-dark);
  border-radius: var(--border-radius);
  transition: var(--transition-base);
}

.contact-form-section input:focus,
.contact-form-section textarea:focus {
  outline: none;
  border-color: var(--color-secondary);
  box-shadow: 0 0 0 2px var(--color-secondary);
}

.contact-form-section button {
  background-color: var(--color-secondary);
  color: var(--color-light);
  font-weight: 600;
  padding: var(--space-sm) var(--space-md);
  border-radius: var(--border-radius);
  transition: var(--transition-base);
}

.contact-form-section button:hover {
  opacity: 0.9;
}

/* ====== Enhanced CTA Buttons ====== */
.cta-button {
  display: inline-block;
  background: linear-gradient(90deg, var(--color-secondary), #63b3ed);
  color: var(--color-light);
  font-weight: 600;
  padding: 0.75rem 1.5rem;
  border-radius: 0.5rem;
  box-shadow: var(--shadow-md);
  text-decoration: none;
  transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.cta-button:hover {
  transform: scale(1.05);
  box-shadow: var(--shadow-lg);
}

.cta-button-outline {
  display: inline-block;
  background: var(--color-light); /* Added background color */
  color: var(--color-secondary);
  font-weight: 600;
  padding: 0.75rem 1.5rem;
  border: 2px solid var(--color-secondary);
  border-radius: 0.5rem;
  text-decoration: none;
  transition: background-color 0.3s ease, color 0.3s ease, transform 0.3s ease;
}

.cta-button-outline:hover {
  background: var(--color-secondary);
  color: var(--color-light);
  transform: scale(1.05);
}

/* Text Wrapper */
.text-wrapper {
  background-color: #f5f5f5; /* Light grey background */
  padding: 1rem; /* Add padding */
  border-radius: 0.5rem; /* Rounded corners */
}

/* ====== Global CTA Button Styles ====== */
.cta-button,
.cta-button-outline {
  display: inline-block;
  padding: 0.75rem 1.5rem;
  border-radius: 9999px; /* Pill shape */
  font-weight: 600;
  text-align: center;
  text-decoration: none;
  transition: var(--transition-base);
}

.cta-button {
  background-color: var(--color-secondary);
  color: var(--color-light);
  border: none;
}
.cta-button:hover,
.cta-button:focus {
  opacity: 0.9;
}

.cta-button-outline {
  background-color: transparent;
  color: var(--color-secondary);
  border: 2px solid var(--color-secondary);
}
.cta-button-outline:hover,
.cta-button-outline:focus {
  background-color: var(--color-secondary);
  color: var(--color-light);
  opacity: 0.9;
}

/* Center CTA sections if not already using text-center */
.cta-section,
.cta-container,
.cta-wrapper {
  text-align: center;
}

/* ===== Contact Form Styles & Validation ===== */
#contact-form input,
#contact-form select,
#contact-form textarea {
  width: 100%;
  padding: 0.75rem 1rem;
  border: 1px solid var(--color-neutral-300);
  border-radius: var(--border-radius-md);
  transition: border-color 0.2s ease;
}
#contact-form input:focus,
#contact-form select:focus,
#contact-form textarea:focus {
  border-color: var(--color-secondary);
  outline: none;
}
.error-message {
  display: none;
  margin-top: 0.25rem;
  font-size: 0.875rem;
  color: var(--color-error);
}
.invalid {
  border-color: var(--color-error) !important;
}

/* Logo utility class for consistent navbar sizing */
.logo {
  height: 2.5rem;
  width: auto;
  max-width: 120px;
  object-fit: contain;
  display: block;
}

.cta-button.cta-button-lg {
  font-size: 1.3rem;
  padding: 1rem 2.5rem;
}