/* Base Styles and Variables */ :root { --primary: #9333EA; --primary-light: rgba(147, 51, 234, 0.1); --primary-medium: rgba(147, 51, 234, 0.5); --secondary: #111827; --secondary-light: rgba(17, 24, 39, 0.1); --secondary-medium: rgba(17, 24, 39, 0.5); --background: #ffffff; --foreground: #111827; --muted: rgba(147, 51, 234, 0.05); --muted-foreground: rgba(147, 51, 234, 0.7); --border: #e5e7eb; --input: #e5e7eb; --radius: 0.5rem; --shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06); --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); } .dark { --primary: #a855f7; --primary-light: rgba(168, 85, 247, 0.2); --primary-medium: rgba(168, 85, 247, 0.5); --secondary: #1f2937; --secondary-light: rgba(31, 41, 55, 0.2); --secondary-medium: rgba(31, 41, 55, 0.5); --background: #111827; --foreground: #f9fafb; --muted: rgba(168, 85, 247, 0.1); --muted-foreground: rgba(168, 85, 247, 0.8); --border: #374151; --input: #374151; } /* Reset and Base Styles */ *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } html { scroll-behavior: smooth; } body { font-family: 'Inter', sans-serif; background-color: var(--background); color: var(--foreground); line-height: 1.5; transition: background-color 0.3s, color 0.3s; } h1, h2, h3, h4, h5, h6 { font-family: "IBM Plex Mono", monospace; line-height: 1.2; } a { color: inherit; text-decoration: none; } img { max-width: 100%; height: auto; } /* Container */ .container { width: 100%; max-width: 1200px; margin: 0 auto; padding: 0 1rem; } @media (min-width: 640px) { .container { padding: 0 1.5rem; } } @media (min-width: 1024px) { .container { padding: 0 2rem; } } /* Chemistry-themed decorative elements */ .chemistry-bg { position: relative; overflow: hidden; } .hexagon { position: absolute; clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%); z-index: 0; } .circle { position: absolute; border-radius: 50%; z-index: 0; } /* Specific hexagons and circles */ .hex-1 { background-color: var(--primary-light); width: 16rem; height: 16rem; top: -5rem; left: -5rem; animation: pulse 15s infinite; } .hex-2 { background-color: var(--primary-light); width: 24rem; height: 24rem; top: 10rem; right: -12rem; } .hex-3 { background-color: var(--primary-light); width: 18rem; height: 18rem; bottom: -5rem; right: -5rem; } .hex-4 { background-color: rgb(147 51 234 / 0.2); width: 20rem; height: 20rem; top: -10rem; right: 11rem; } .hex-5 { background-color: var(--primary-light); width: 16rem; height: 16rem; bottom: 5rem; left: 2.5rem; transform: rotate(45deg); } .hex-6 { background-color: var(--primary-light); width: 14rem; height: 14rem; top: 5rem; left: -5rem; transform: rotate(12deg); } .hex-7 { background-color: var(--primary-light); width: 10rem; height: 10rem; bottom: 2.5rem; left: 33%; transform: rotate(45deg); } .circle-1 { background-color: var(--secondary-light); width: 8rem; height: 8rem; bottom: 5rem; left: 25%; } .circle-2 { background-color: var(--primary-light); width: 12rem; height: 12rem; top: 33%; right: 25%; animation: pulse 20s infinite; } .circle-3 { background-color: var(--secondary-light); width: 10rem; height: 10rem; top: 10rem; left: 5rem; } .circle-4 { background-color: var(--primary-light); width: 6rem; height: 6rem; bottom: 10rem; right: 33%; } .circle-5 { background-color: var(--primary-light); width: 9rem; height: 9rem; top: 33%; left: 25%; } .circle-6 { background-color: var(--secondary-light); width: 7rem; height: 7rem; bottom: 10rem; right: 5rem; } @keyframes pulse { 0%, 100% { opacity: 0.5; transform: scale(1); } 50% { opacity: 0.7; transform: scale(1.05); } } /* Header/Navbar */ .header { position: sticky; top: 0; z-index: 50; width: 100%; border-bottom: 1px solid rgba(var(--border), 0.4); background-color: rgba(var(--background), 0.95); backdrop-filter: blur(10px); } .header-container { display: flex; height: 4rem; align-items: center; justify-content: space-between; } .logo { display: flex; align-items: center; gap: 0.5rem; } .logo-primary { font-size: 1.25rem; font-weight: 700; color: var(--primary); font-family: 'Space Mono', monospace; } .logo-secondary { font-size: 1.25rem; font-weight: 700; color: var(--foreground); font-family: 'Space Mono', monospace; } .logo-white { font-size: 1.25rem; font-weight: 700; color: #ffffff; font-family: 'Space Mono', monospace; } .desktop-nav { display: none; gap: 1.5rem; } @media (min-width: 768px) { .desktop-nav { display: flex; align-items: center; } } .nav-link { color: var(--foreground); transition: color 0.2s; } .nav-link:hover { color: var(--primary); } .header-actions { display: flex; align-items: center; gap: 1rem; } .theme-toggle { position: relative; padding: 0.5rem; background-color: transparent; border: none; border-radius: 0.375rem; color: var(--foreground); cursor: pointer; transition: background-color 0.2s; } .theme-toggle:hover { background-color: var(--primary-light); } .sun-icon, .moon-icon { transition: transform 0.5s, opacity 0.5s; } .moon-icon { position: absolute; top: 0.5rem; left: 0.5rem; opacity: 0; transform: rotate(90deg) scale(0); } .dark .sun-icon { opacity: 0; transform: rotate(-90deg) scale(0); } .dark .moon-icon { opacity: 1; transform: rotate(0) scale(1); } .mobile-menu-btn { display: flex; padding: 0.5rem; background-color: transparent; border: none; color: var(--foreground); cursor: pointer; } @media (min-width: 768px) { .mobile-menu-btn { display: none; } } .menu-icon, .close-icon { transition: opacity 0.3s, transform 0.3s; } .close-icon { position: absolute; opacity: 0; transform: scale(0); } .mobile-menu-open .menu-icon { opacity: 0; transform: scale(0); } .mobile-menu-open .close-icon { opacity: 1; transform: scale(1); } .mobile-nav { display: none; position: absolute; top: 4rem; left: 0; right: 0; background-color: var(--background); border-bottom: 1px solid var(--border); padding: 1rem 0; } .mobile-nav.open { display: block; } .mobile-nav-container { display: flex; flex-direction: column; gap: 1rem; } .mobile-nav .nav-link { padding: 0.25rem 0.5rem; } /* Hero Section */ .hero { position: relative; padding: 5rem 0 8rem; overflow: hidden; } @media (min-width: 768px) { .hero { padding: 8rem 0; } } .hero-gradient { position: absolute; inset: 0; background: linear-gradient(to bottom right, var(--secondary-light), var(--primary-light)); z-index: 0; } .hero-container { position: relative; z-index: 10; display: grid; grid-template-columns: 1fr; gap: 3rem; } @media (min-width: 1024px) { .hero-container { grid-template-columns: 1fr 1fr; align-items: center; } } .hero-title { font-size: 2.25rem; font-weight: 700; line-height: 1.2; margin-bottom: 1.5rem; color: var(--foreground); } @media (min-width: 768px) { .hero-title { font-size: 3rem; } } @media (min-width: 1024px) { .hero-title { font-size: 3.75rem; } } .text-primary { color: var(--primary); } .hero-description { font-size: 1.125rem; color: rgba(var(--foreground), 0.8); margin-bottom: 2rem; max-width: 36rem; } @media (min-width: 768px) { .hero-description { font-size: 1.25rem; } } .hero-buttons { display: flex; flex-direction: column; gap: 1rem; } @media (min-width: 640px) { .hero-buttons { flex-direction: row; } } .btn { display: inline-flex; align-items: center; justify-content: center; padding: 0.75rem 1.5rem; border-radius: 0.375rem; font-weight: 500; transition: all 0.2s; } .btn svg { margin-left: 0.5rem; } .btn-primary { background-color: var(--primary); color: white; } .btn-primary:hover { background-color: rgba(var(--primary), 0.9); } .btn-outline { border: 1px solid rgba(var(--primary), 0.2); color: var(--primary); } .btn-outline:hover { background-color: var(--primary-light); } .btn-full { width: 100%; } .hero-cards { display: grid; grid-template-columns: 1fr 1fr; gap: 1.5rem; } .hero-cards-column { display: flex; flex-direction: column; gap: 1.5rem; } .hero-cards-column.offset { margin-top: 3rem; } .card { padding: 1.5rem; border-radius: 0.5rem; box-shadow: var(--shadow-md); } .card-light { background-color: var(--background); border: 1px solid var(--border); } .card-dark { background-color: var(--secondary); color: white; } .card-primary { background-color: var(--primary); color: white; } .card-icon { height: 2.5rem; width: 2.5rem; color: var(--primary); margin-bottom: 1rem; } .card-dark .card-icon, .card-primary .card-icon { color: white; } .card-title { font-size: 1.25rem; font-weight: 700; margin-bottom: 0.5rem; } .card-text { color: rgba(var(--foreground), 0.7); } .card-dark .card-text { color: rgba(255, 255, 255, 0.7); } .card-primary .card-text { color: rgba(255, 255, 255, 0.7); } /* Section Styles */ section { padding: 10rem 0; } .section-header { text-align: center; margin-bottom: 4rem; } .section-title { font-size: 2rem; font-weight: 700; margin-bottom: 1rem; } @media (min-width: 768px) { .section-title { font-size: 2.5rem; } } .section-description { font-size: 1.125rem; color: rgba(var(--foreground), 0.7); max-width: 36rem; margin: 0 auto; } /* Services Section */ .services { background-color: var(--background); } .services-grid { display: grid; grid-template-columns: 1fr; gap: 2rem; } @media (min-width: 768px) { .services-grid { grid-template-columns: repeat(2, 1fr); } } @media (min-width: 1024px) { .services-grid { grid-template-columns: repeat(3, 1fr); } } .service-card { background-color: var(--background); padding: 1.5rem; border-radius: 0.5rem; border: 1px solid var(--border); transition: all 0.3s; box-shadow: var(--shadow-sm); } .service-card:hover { border-color: rgba(var(--primary), 0.5); box-shadow: var(--shadow-md); } .service-icon-wrapper { height: 3rem; width: 3rem; background-color: var(--primary-light); border-radius: 0.375rem; display: flex; align-items: center; justify-content: center; margin-bottom: 1.5rem; } .service-icon { height: 1.5rem; width: 1.5rem; color: var(--primary); } .service-title { font-size: 1.25rem; font-weight: 700; margin-bottom: 0.75rem; } .service-description { color: rgba(var(--foreground), 0.7); margin-bottom: 1rem; } .service-list { list-style-type: none; margin: 0; padding: 0; color: rgba(var(--foreground), 0.7); } .service-list li { display: flex; align-items: flex-start; margin-bottom: 0.5rem; } .service-list li::before { content: "•"; color: var(--primary); margin-right: 0.5rem; } /* About Section */ .about { background-color: var(--secondary); color: white; } .about-grid { display: grid; grid-template-columns: 1fr; gap: 3rem; } @media (min-width: 1024px) { .about-grid { grid-template-columns: 1fr 1fr; align-items: center; } } .about .section-title { color: white; text-align: left; } .about-text { color: rgba(255, 255, 255, 0.8); margin-bottom: 1.5rem; } .about-features { display: flex; flex-direction: column; gap: 1rem; margin-top: 2rem; } .about-feature { display: flex; align-items: flex-start; } .feature-icon { height: 1.5rem; width: 1.5rem; color: var(--primary); margin-right: 0.75rem; flex-shrink: 0; margin-top: 0.125rem; } .feature-title { font-size: 1.25rem; font-weight: 700; margin-bottom: 0.25rem; } .feature-text { color: rgba(255, 255, 255, 0.7); } .about-image-container { position: relative; } .about-image-decoration-1 { position: absolute; top: -1.5rem; left: -1.5rem; width: 16rem; height: 16rem; background-color: rgb(147 51 234 / 0.2); border-radius: 0.5rem; } .about-image-decoration-2 { position: absolute; bottom: -1.5rem; right: -1.5rem; width: 16rem; height: 16rem; background-color: rgb(147 51 234 / 0.2); border-radius: 0.5rem; } .about-image-wrapper { position: relative; background-color: var(--background); padding: 1.5rem; border-radius: 0.5rem; box-shadow: var(--shadow-xl); } .about-image { border-radius: 0.375rem; width: 100%; height: auto; } .about-stats { margin-top: 1.5rem; display: grid; grid-template-columns: repeat(2, 1fr); gap: 1rem; } .stat-card { padding: 1rem; border-radius: 0.375rem; } .stat-secondary { background-color: var(--secondary-light); color: black; } .stat-primary { background-color: var(--primary-light); color: #9333EA; } .stat-primary > .stat-number{ color: #9333EA ; } .stat-number { font-weight: 700; color: var(--foreground); margin-bottom: 0.25rem; } .stat-label { font-size: 0.875rem; color: rgba(var(--foreground), 0.7); } /* Portfolio Section */ .portfolio { background-color: var(--background); } .portfolio-grid { display: grid; grid-template-columns: 1fr; gap: 2rem; } @media (min-width: 768px) { .portfolio-grid { grid-template-columns: repeat(2, 1fr); } } @media (min-width: 1024px) { .portfolio-grid { grid-template-columns: repeat(3, 1fr); } } .portfolio-item { background-color: var(--background); border-radius: 0.5rem; overflow: hidden; border: 1px solid var(--border); transition: all 0.3s; box-shadow: var(--shadow-sm); } .portfolio-item:hover { border-color: rgba(var(--primary), 0.5); box-shadow: var(--shadow-md); } .portfolio-image-container { position: relative; height: 12rem; overflow: hidden; } .portfolio-image { width: 100%; height: 100%; object-fit: cover; transition: transform 0.3s; } .portfolio-item:hover .portfolio-image { transform: scale(1.05); } .portfolio-overlay { position: absolute; inset: 0; background: linear-gradient(to top, rgba(var(--secondary), 0.8), transparent); display: flex; align-items: flex-end; justify-content: flex-start; padding: 1rem; opacity: 0; transition: opacity 0.3s; } .portfolio-item:hover .portfolio-overlay { opacity: 1; } .portfolio-view-btn { display: flex; align-items: center; gap: 0.25rem; background: none; border: none; color: white; font-size: 0.875rem; font-weight: 500; cursor: pointer; } .portfolio-content { padding: 1.5rem; } .portfolio-title { font-size: 1.25rem; font-weight: 700; margin-bottom: 0.5rem; } .portfolio-description { color: rgba(var(--foreground), 0.7); margin-bottom: 1rem; } .portfolio-tags { display: flex; flex-wrap: wrap; gap: 0.5rem; } .portfolio-tag { font-size: 0.75rem; font-weight: 500; padding: 0.25rem 0.625rem; border-radius: 9999px; background-color: var(--primary-light); color: var(--primary); } /* Contact Section */ .contact { background: linear-gradient(to bottom, var(--background), var(--primary-light)); } .contact-grid { display: grid; grid-template-columns: 1fr; gap: 3rem; } @media (min-width: 1024px) { .contact-grid { grid-template-columns: 1fr 1fr; } } .contact-form-container { background-color: var(--background); padding: 2rem; border-radius: 0.5rem; box-shadow: var(--shadow-md); border: 1px solid var(--border); } .contact-form-title { font-size: 1.5rem; font-weight: 700; margin-bottom: 1.5rem; } .contact-form { display: flex; flex-direction: column; gap: 1.5rem; } .form-group { display: flex; flex-direction: column; gap: 0.25rem; } .form-label { font-size: 0.875rem; font-weight: 500; color: rgba(var(--foreground), 0.7); } /* Cap human verification widget */ cap-widget { align-self: flex-start; --cap-background: var(--background); --cap-border-color: var(--border); --cap-border-radius: var(--radius); --cap-color: var(--foreground); --cap-checkbox-background: var(--background); --cap-checkbox-border: 1px solid var(--border); --cap-spinner-color: var(--primary); --cap-spinner-background-color: var(--border); --cap-font: 'Inter', sans-serif; } .form-input, .form-textarea { width: 100%; padding: 0.5rem 1rem; border: 1px solid var(--border); border-radius: 0.375rem; background-color: var(--background); color: var(--foreground); transition: all 0.2s; } .form-input:focus, .form-textarea:focus { outline: none; border-color: var(--primary); box-shadow: 0 0 0 2px rgba(var(--primary), 0.2); } .contact-info-container { display: flex; flex-direction: column; justify-content: space-between; } .contact-info-title { font-size: 1.5rem; font-weight: 700; margin-bottom: 1.5rem; } .contact-info-text { color: rgba(var(--foreground), 0.7); margin-bottom: 2rem; } .contact-methods { display: flex; flex-direction: column; gap: 1.5rem; } .contact-method { display: flex; align-items: flex-start; } .contact-method-icon-wrapper { height: 2.5rem; width: 2.5rem; background-color: var(--primary-light); border-radius: 9999px; display: flex; align-items: center; justify-content: center; margin-right: 1rem; } .contact-method-icon { color: var(--primary); } .contact-method-title { font-size: 1.125rem; font-weight: 700; margin-bottom: 0.25rem; } .contact-method-value { color: rgba(var(--foreground), 0.7); transition: color 0.2s; } .contact-method-value:hover { color: var(--primary); } .consultation-hours { margin-top: 3rem; padding: 1.5rem; background-color: var(--secondary); border-radius: 0.5rem; color: white; } .consultation-hours-title { font-size: 1.25rem; font-weight: 700; margin-bottom: 1rem; } .hours-list { display: flex; flex-direction: column; gap: 0.5rem; } .hours-item { display: flex; justify-content: space-between; } .consultation-note { margin-top: 1rem; padding-top: 1rem; border-top: 1px solid rgba(255, 255, 255, 0.2); } .consultation-note p { color: rgba(255, 255, 255, 0.8); } /* Footer */ .footer { background-color: var(--secondary); color: white; } .footer-grid { display: grid; grid-template-columns: 1fr; gap: 2rem; padding: 3rem 0; } @media (min-width: 768px) { .footer-grid { grid-template-columns: repeat(2, 1fr); } } @media (min-width: 1024px) { .footer-grid { grid-template-columns: repeat(4, 1fr); } } .footer-brand { display: flex; flex-direction: column; } .footer-logo { display: flex; align-items: center; gap: 0.5rem; margin-bottom: 1rem; } .footer-description { color: rgba(255, 255, 255, 0.7); margin-bottom: 1.5rem; } .footer-social { display: flex; gap: 1rem; } .social-link { color: rgba(255, 255, 255, 0.7); transition: color 0.2s; } .social-link:hover { color: var(--primary); } .footer-title { font-size: 1.125rem; font-weight: 700; margin-bottom: 1rem; } .footer-menu { list-style-type: none; padding: 0; margin: 0; } .footer-menu li { margin-bottom: 0.75rem; } .footer-link { color: rgba(255, 255, 255, 0.7); transition: color 0.2s; } .footer-link:hover { color: var(--primary); } .footer-contact-list { list-style-type: none; padding: 0; margin: 0; } .footer-contact-item { display: flex; align-items: center; margin-bottom: 0.75rem; } .footer-contact-icon { color: var(--primary); margin-right: 0.5rem; } .footer-bottom { padding: 1.5rem 0; border-top: 1px solid rgba(255, 255, 255, 0.1); text-align: center; } .copyright { color: rgba(255, 255, 255, 0.5); } /* Utility Classes */ .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border-width: 0; }