diff --git a/index.html b/index.html new file mode 100644 index 0000000..7f4cdbe --- /dev/null +++ b/index.html @@ -0,0 +1,393 @@ + + + + + + בניית אתרים עם AI | אימייליון + + + + + + + + + + + + + + + + +
+
+
+
+ + סטודיו דיגיטלי +
+

+ בונים חוויות + + דיגיטליות + + + מונעות AI +

+

+ אנחנו משלבים עיצוב קריאטיבי עם טכנולוגיית בינה מלאכותית ליצירת אתרים שלא רק נראים מדהים — אלא גם עובדים חכם. +

+ +
+ + +
+ + + +
+
+ +

פרויקטים נבחרים

+
+ +
+ + +
+
+
+ אתר תדמית +

פיננסיה — פינטק

+

עמוד נחיתה דינמי עם ויזואליזציה של נתונים בזמן אמת

+
+ +
+ +
+
+
+ פלטפורמה +

DataFlow — אנליטיקס

+

דשבורד ניהול עם תחזיות מבוססות למידת מכונה

+
+ +
+ +
+
+
+ מיתוג דיגיטלי +

טעמים — רשת מסעדות

+

זהות דיגיטלית מלאה כולל אפליקציית הזמנות עם צ׳אטבוט חכם

+
+ +
+ +
+
+
+ אתר קטלוג +

אומנות ישראלית

+

גלריה אינטראקטיבית עם חיפוש חכם וניווט ויזואלי

+
+ +
+ +
+
+
+ אתר תוכן +

TechPulse — מגזין

+

פלטפורמת תוכן עם המלצות קריאה מותאמות אישית

+
+ +
+
+
+ +
+ +
+ +

שירותים

+
+ +
+
+ +
+

עיצוב ופיתוח אתרים

+

+ אתרים מעוצבים בקפידה עם קוד נקי, ביצועים גבוהים וחוויית משתמש מושלמת. כל פיקסל במקום. +

+
+ +
+ +
+ +
+

חנויות אונליין

+

+ פתרונות eCommerce מתקדמים עם אינטגרציית AI להמלצות מוצרים, התאמה אישית וייעול המרות. +

+
+ +
+ +
+ +
+

מיתוג דיגיטלי

+

+ בניית זהות מותגית שלמה לעולם הדיגיטלי — מלוגו ועד שפה עיצובית אחידה בכל נקודות המגע. +

+
+ +
+ +
+ +
+

פתרונות AI מותאמים

+

+ צ׳אטבוטים חכמים, ניתוח התנהגות משתמשים, אוטומציה של תוכן וכלים מבוססי בינה מלאכותית. +

+
+ +
+
+
+ +
+
+
+ +

סטודיו שמאמין
בכוח של עיצוב

+

+ אימייליון הוקמה מתוך אמונה שעיצוב דיגיטלי צריך להיות יותר מיפה — הוא צריך לעבוד. אנחנו משלבים חשיבה אסטרטגית, עיצוב פורץ דרך וטכנולוגיית AI מתקדמת כדי ליצור חוויות שמניעות תוצאות. +

+

+ הצוות שלנו מורכב ממעצבים, מפתחים ומומחי AI שעובדים יחד כדי להפוך כל פרויקט למשהו ייחודי ובלתי נשכח. +

+
+ +
+
+ +
+ +
+
+ +

יש לכם פרויקט?
בואו נדבר

+
+ +
+
+
+ + +
+
+ + +
+
+
+ + +
+ +
+
+
+
+ + + + + + \ No newline at end of file diff --git a/script.js b/script.js new file mode 100644 index 0000000..ff42144 --- /dev/null +++ b/script.js @@ -0,0 +1,180 @@ +(function() { + 'use strict'; + + // Respect reduced motion preference + const prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches; + + // Cursor glow effect (only on devices with fine pointer) + const cursorGlow = document.querySelector('.cursor-glow'); + const hasFinePointer = window.matchMedia('(pointer: fine)').matches; + + if (cursorGlow && !prefersReducedMotion && hasFinePointer) { + let mouseX = 0, mouseY = 0; + let glowX = 0, glowY = 0; + let rafId = null; + + document.addEventListener('mousemove', (e) => { + mouseX = e.clientX; + mouseY = e.clientY; + }); + + function animateCursor() { + glowX += (mouseX - glowX) * 0.1; + glowY += (mouseY - glowY) * 0.1; + cursorGlow.style.left = glowX + 'px'; + cursorGlow.style.top = glowY + 'px'; + rafId = requestAnimationFrame(animateCursor); + } + animateCursor(); + + // Cleanup on page hide + document.addEventListener('visibilitychange', () => { + if (document.hidden && rafId) { + cancelAnimationFrame(rafId); + } else if (!document.hidden) { + animateCursor(); + } + }); + } + + // Header scroll effect + const header = document.querySelector('.site-header'); + let ticking = false; + + function handleScroll() { + if (!ticking) { + requestAnimationFrame(() => { + const currentScrollY = window.scrollY; + + if (currentScrollY > 50) { + header.classList.add('scrolled'); + } else { + header.classList.remove('scrolled'); + } + ticking = false; + }); + ticking = true; + } + } + + window.addEventListener('scroll', handleScroll, { passive: true }); + + // Mobile navigation + const navToggle = document.querySelector('.nav-toggle'); + const navLinks = document.querySelector('.nav-links'); + + if (navToggle && navLinks) { + navToggle.addEventListener('click', () => { + const isExpanded = navToggle.getAttribute('aria-expanded') === 'true'; + navToggle.setAttribute('aria-expanded', !isExpanded); + navLinks.classList.toggle('active'); + document.body.style.overflow = isExpanded ? '' : 'hidden'; + + // Update label + navToggle.setAttribute('aria-label', isExpanded ? 'פתיחת תפריט ניווט' : 'סגירת תפריט ניווט'); + }); + + navLinks.querySelectorAll('a').forEach(link => { + link.addEventListener('click', () => { + navToggle.setAttribute('aria-expanded', 'false'); + navToggle.setAttribute('aria-label', 'פתיחת תפריט ניווט'); + navLinks.classList.remove('active'); + document.body.style.overflow = ''; + }); + }); + + // Close on escape + document.addEventListener('keydown', (e) => { + if (e.key === 'Escape' && navLinks.classList.contains('active')) { + navToggle.setAttribute('aria-expanded', 'false'); + navToggle.setAttribute('aria-label', 'פתיחת תפריט ניווט'); + navLinks.classList.remove('active'); + document.body.style.overflow = ''; + navToggle.focus(); + } + }); + } + + // Reveal on scroll + const revealElements = document.querySelectorAll('.reveal'); + + if (!prefersReducedMotion && revealElements.length > 0) { + const observerOptions = { + root: null, + rootMargin: '0px 0px -80px 0px', + threshold: 0.1 + }; + + const revealObserver = new IntersectionObserver((entries) => { + entries.forEach((entry) => { + if (entry.isIntersecting) { + entry.target.classList.add('visible'); + revealObserver.unobserve(entry.target); + } + }); + }, observerOptions); + + revealElements.forEach(el => revealObserver.observe(el)); + } else { + revealElements.forEach(el => el.classList.add('visible')); + } + + // Form submission + const contactForm = document.querySelector('.contact-form'); + + if (contactForm) { + contactForm.addEventListener('submit', (e) => { + e.preventDefault(); + + const btn = contactForm.querySelector('.btn'); + const btnText = btn.querySelector('span'); + const originalText = btnText.textContent; + + // Basic validation + const name = contactForm.querySelector('#name'); + const email = contactForm.querySelector('#email'); + + if (!name.value.trim() || !email.value.trim()) { + return; + } + + // Disable button + btn.disabled = true; + btnText.textContent = 'שולח...'; + + // Simulate send (replace with actual form handling) + setTimeout(() => { + btnText.textContent = 'נשלח בהצלחה! ✓'; + btn.style.background = 'linear-gradient(135deg, #00b894 0%, #55efc4 100%)'; + + setTimeout(() => { + btnText.textContent = originalText; + btn.style.background = ''; + btn.disabled = false; + contactForm.reset(); + }, 3000); + }, 1000); + }); + } + + // Smooth scroll for anchor links + document.querySelectorAll('a[href^="#"]').forEach(anchor => { + anchor.addEventListener('click', (e) => { + const href = anchor.getAttribute('href'); + if (href === '#') return; + + const target = document.querySelector(href); + if (target) { + e.preventDefault(); + target.scrollIntoView({ + behavior: prefersReducedMotion ? 'auto' : 'smooth' + }); + + // Set focus for accessibility + target.setAttribute('tabindex', '-1'); + target.focus({ preventScroll: true }); + } + }); + }); + +})(); \ No newline at end of file diff --git a/style.css b/style.css new file mode 100644 index 0000000..ee8cd31 --- /dev/null +++ b/style.css @@ -0,0 +1,1129 @@ +:root { + --color-bg: #0a0a0f; + --color-bg-elevated: #12121a; + --color-surface: #1a1a25; + --color-text: #ffffff; + --color-text-muted: #b0b0c8; + --color-primary: #6C5CE7; + --color-secondary: #00F5D4; + --color-accent: #f093fb; + --gradient-primary: linear-gradient(135deg, #6C5CE7 0%, #a29bfe 50%, #00F5D4 100%); + --gradient-glow: radial-gradient(circle, rgba(108, 92, 231, 0.3) 0%, transparent 70%); + + --font-display: 'Heebo', system-ui, sans-serif; + --font-body: 'Heebo', system-ui, sans-serif; + + --space-xs: 0.5rem; + --space-sm: 1rem; + --space-md: 1.5rem; + --space-lg: 2.5rem; + --space-xl: 4rem; + --space-2xl: 6rem; + --space-3xl: 8rem; + + --radius-sm: 8px; + --radius-md: 16px; + --radius-lg: 24px; + --radius-full: 9999px; + + --transition-fast: 0.2s cubic-bezier(0.4, 0, 0.2, 1); + --transition-smooth: 0.4s cubic-bezier(0.4, 0, 0.2, 1); + --transition-bounce: 0.6s cubic-bezier(0.34, 1.56, 0.64, 1); +} + +*, +*::before, +*::after { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +html { + scroll-behavior: smooth; +} + +@media (prefers-reduced-motion: reduce) { + html { + scroll-behavior: auto; + } + + *, + *::before, + *::after { + animation-duration: 0.01ms !important; + animation-iteration-count: 1 !important; + transition-duration: 0.01ms !important; + } + + .orb, + .badge-dot, + .visual-cell.accent, + .marquee-content { + animation: none !important; + } +} + +body { + font-family: var(--font-body); + font-size: 1rem; + line-height: 1.7; + color: var(--color-text); + background-color: var(--color-bg); + overflow-x: hidden; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +/* Skip Link */ +.skip-link { + position: absolute; + top: -100%; + inset-inline-start: var(--space-md); + padding: var(--space-sm) var(--space-md); + background: var(--color-primary); + color: var(--color-text); + border-radius: var(--radius-sm); + font-weight: 600; + z-index: 1000; + transition: top var(--transition-fast); +} + +.skip-link:focus { + top: var(--space-md); +} + +a { + color: inherit; + text-decoration: none; +} + +button { + font-family: inherit; + cursor: pointer; + border: none; + background: none; +} + +img, svg { + display: block; + max-width: 100%; +} + +ul { + list-style: none; +} + +/* Cursor Glow */ +.cursor-glow { + position: fixed; + width: 400px; + height: 400px; + border-radius: 50%; + background: var(--gradient-glow); + pointer-events: none; + z-index: 0; + opacity: 0; + transform: translate(-50%, -50%); + transition: opacity 0.3s ease; +} + +@media (hover: hover) { + body:hover .cursor-glow { + opacity: 1; + } +} + +/* Navigation */ +.site-header { + position: fixed; + top: 0; + inset-inline: 0; + z-index: 100; + padding: var(--space-md) var(--space-lg); + transition: background-color var(--transition-smooth); +} + +.site-header.scrolled { + background-color: rgba(10, 10, 15, 0.9); + backdrop-filter: blur(20px); +} + +.nav { + display: flex; + align-items: center; + justify-content: space-between; + max-width: 1400px; + margin: 0 auto; +} + +.logo { + display: flex; + align-items: center; + gap: var(--space-sm); + font-weight: 700; + font-size: 1.25rem; + transition: opacity var(--transition-fast); +} + +.logo:hover { + opacity: 0.8; +} + +.logo-mark { + width: 40px; + height: 40px; + color: var(--color-primary); +} + +.nav-links { + display: flex; + align-items: center; + gap: var(--space-lg); +} + +.nav-links a { + font-size: 0.95rem; + font-weight: 500; + color: var(--color-text-muted); + transition: color var(--transition-fast); + position: relative; +} + +.nav-links a::after { + content: ''; + position: absolute; + bottom: -4px; + inset-inline: 0; + height: 2px; + background: var(--gradient-primary); + transform: scaleX(0); + transform-origin: inline-end; + transition: transform var(--transition-smooth); +} + +.nav-links a:hover, +.nav-links a:focus { + color: var(--color-text); +} + +.nav-links a:hover::after, +.nav-links a:focus::after { + transform: scaleX(1); + transform-origin: inline-start; +} + +.nav-links a:focus { + outline: 2px solid var(--color-primary); + outline-offset: 4px; +} + +.nav-cta { + padding: var(--space-xs) var(--space-md); + background: var(--gradient-primary); + border-radius: var(--radius-full); + color: var(--color-text) !important; +} + +.nav-cta::after { + display: none !important; +} + +.nav-toggle { + display: none; + flex-direction: column; + gap: 6px; + width: 30px; + padding: 4px 0; +} + +.nav-toggle span { + display: block; + height: 2px; + background: var(--color-text); + transition: transform var(--transition-fast); + transform-origin: center; +} + +@media (max-width: 768px) { + .nav-links { + position: fixed; + top: 0; + inset-inline-start: 0; + inset-inline-end: 0; + bottom: 0; + flex-direction: column; + justify-content: center; + gap: var(--space-xl); + background: var(--color-bg); + opacity: 0; + visibility: hidden; + transition: opacity var(--transition-smooth), visibility var(--transition-smooth); + } + + .nav-links.active { + opacity: 1; + visibility: visible; + } + + .nav-links a { + font-size: 1.5rem; + } + + .nav-toggle { + display: flex; + z-index: 101; + } + + .nav-toggle[aria-expanded="true"] span:first-child { + transform: rotate(45deg) translateY(5.5px); + } + + .nav-toggle[aria-expanded="true"] span:last-child { + transform: rotate(-45deg) translateY(-5.5px); + } +} + +/* Buttons */ +.btn { + display: inline-flex; + align-items: center; + gap: var(--space-sm); + padding: var(--space-sm) var(--space-lg); + font-size: 1rem; + font-weight: 600; + border-radius: var(--radius-full); + transition: all var(--transition-smooth); + position: relative; + overflow: hidden; +} + +.btn::before { + content: ''; + position: absolute; + inset: 0; + background: rgba(255, 255, 255, 0.1); + transform: translateY(-100%); + transition: transform var(--transition-smooth); +} + +.btn:hover::before, +.btn:focus::before { + transform: translateY(0); +} + +.btn:focus { + outline: 2px solid var(--color-secondary); + outline-offset: 4px; +} + +.btn-primary { + background: var(--gradient-primary); + color: var(--color-text); +} + +.btn-primary:hover { + transform: translateY(-2px); + box-shadow: 0 10px 40px rgba(108, 92, 231, 0.4); +} + +.btn-ghost { + border: 2px solid var(--color-text-muted); + color: var(--color-text); +} + +.btn-ghost:hover, +.btn-ghost:focus { + border-color: var(--color-primary); + color: var(--color-primary); +} + +.btn-large { + padding: var(--space-md) var(--space-xl); + font-size: 1.1rem; +} + +.btn-arrow { + width: 20px; + height: 20px; + transition: transform var(--transition-fast); +} + +[dir="rtl"] .btn-arrow { + transform: scaleX(-1); +} + +.btn:hover .btn-arrow, +.btn:focus .btn-arrow { + transform: translateX(-4px); +} + +[dir="ltr"] .btn:hover .btn-arrow, +[dir="ltr"] .btn:focus .btn-arrow { + transform: translateX(4px); +} + +/* Hero */ +.hero { + min-height: 100vh; + display: flex; + flex-direction: column; + justify-content: center; + padding: var(--space-3xl) var(--space-lg) var(--space-xl); + position: relative; + overflow: hidden; +} + +.hero-content { + max-width: 800px; + position: relative; + z-index: 2; +} + +.hero-badge { + display: inline-flex; + align-items: center; + gap: var(--space-xs); + padding: var(--space-xs) var(--space-md); + background: var(--color-surface); + border-radius: var(--radius-full); + font-size: 0.875rem; + color: var(--color-text-muted); + margin-bottom: var(--space-lg); +} + +.badge-dot { + width: 8px; + height: 8px; + background: var(--color-secondary); + border-radius: 50%; + animation: pulse 2s ease-in-out infinite; +} + +@keyframes pulse { + 0%, 100% { opacity: 1; transform: scale(1); } + 50% { opacity: 0.5; transform: scale(1.2); } +} + +.hero-title { + font-size: clamp(2.5rem, 8vw, 5.5rem); + font-weight: 900; + line-height: 1.1; + margin-bottom: var(--space-lg); +} + +.hero-title span { + display: block; +} + +.hero-highlight { + position: relative; + display: inline-block; + color: var(--color-primary); +} + +.highlight-wave { + position: absolute; + bottom: -10px; + inset-inline: 0; + height: 20px; + color: var(--color-secondary); + opacity: 0.6; +} + +.hero-sub { + font-size: clamp(1rem, 2vw, 1.25rem); + color: var(--color-text-muted); + max-width: 520px; + margin-bottom: var(--space-xl); + line-height: 1.7; +} + +.hero-actions { + display: flex; + flex-wrap: wrap; + gap: var(--space-md); +} + +.hero-visual { + position: absolute; + inset: 0; + z-index: 1; + pointer-events: none; +} + +.orb { + position: absolute; + border-radius: 50%; + filter: blur(80px); + opacity: 0.4; + animation: float 20s ease-in-out infinite; + will-change: transform; +} + +.orb-1 { + width: 500px; + height: 500px; + background: var(--color-primary); + top: 10%; + inset-inline-start: 60%; + animation-delay: 0s; +} + +.orb-2 { + width: 400px; + height: 400px; + background: var(--color-secondary); + top: 50%; + inset-inline-start: 70%; + animation-delay: -5s; +} + +.orb-3 { + width: 300px; + height: 300px; + background: var(--color-accent); + top: 70%; + inset-inline-start: 20%; + animation-delay: -10s; +} + +@keyframes float { + 0%, 100% { transform: translate(0, 0) scale(1); } + 25% { transform: translate(50px, -50px) scale(1.1); } + 50% { transform: translate(-30px, 30px) scale(0.9); } + 75% { transform: translate(-50px, -30px) scale(1.05); } +} + +.grid-bg { + position: absolute; + inset: 0; + background-image: + linear-gradient(rgba(108, 92, 231, 0.03) 1px, transparent 1px), + linear-gradient(90deg, rgba(108, 92, 231, 0.03) 1px, transparent 1px); + background-size: 60px 60px; + mask-image: radial-gradient(ellipse at center, black 20%, transparent 70%); +} + +.scroll-hint { + position: absolute; + bottom: var(--space-xl); + inset-inline-start: 50%; + transform: translateX(50%); + display: flex; + flex-direction: column; + align-items: center; + gap: var(--space-xs); + font-size: 0.875rem; + color: var(--color-text-muted); + animation: bounce 2s ease-in-out infinite; +} + +[dir="ltr"] .scroll-hint { + transform: translateX(-50%); +} + +.scroll-hint svg { + width: 24px; + height: 24px; +} + +@keyframes bounce { + 0%, 100% { transform: translateX(50%) translateY(0); } + 50% { transform: translateX(50%) translateY(10px); } +} + +[dir="ltr"] .scroll-hint { + animation-name: bounce-ltr; +} + +@keyframes bounce-ltr { + 0%, 100% { transform: translateX(-50%) translateY(0); } + 50% { transform: translateX(-50%) translateY(10px); } +} + +/* Marquee */ +.marquee-section { + padding: var(--space-md) 0; + background: var(--color-bg-elevated); + overflow: hidden; +} + +.marquee { + display: flex; + overflow: hidden; +} + +.marquee-content { + display: flex; + gap: var(--space-lg); + animation: marquee 40s linear infinite; + white-space: nowrap; + font-size: clamp(1rem, 2vw, 1.25rem); + font-weight: 500; + color: var(--color-text-muted); +} + +.marquee-dot { + color: var(--color-primary); +} + +@keyframes marquee { + 0% { transform: translateX(0); } + 100% { transform: translateX(-50%); } +} + +/* Section Headers */ +.section-header { + margin-bottom: var(--space-xl); +} + +.section-label { + display: inline-block; + font-size: 0.875rem; + font-weight: 600; + color: var(--color-primary); + text-transform: uppercase; + letter-spacing: 0.1em; + margin-bottom: var(--space-sm); +} + +.section-title { + font-size: clamp(2rem, 5vw, 3.5rem); + font-weight: 900; + line-height: 1.1; +} + +/* Work Section */ +.work-section { + padding: var(--space-2xl) var(--space-lg) var(--space-3xl); +} + +.work-grid { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: var(--space-md); + max-width: 1400px; + margin: 0 auto; +} + +@media (max-width: 900px) { + .work-grid { + grid-template-columns: 1fr; + } +} + +.work-card { + position: relative; + aspect-ratio: 4/3; + border-radius: var(--radius-lg); + overflow: hidden; + cursor: pointer; + transition: transform var(--transition-smooth), box-shadow var(--transition-smooth); +} + +.work-card:hover, +.work-card:focus { + transform: scale(1.02); + z-index: 10; + box-shadow: 0 20px 60px rgba(0, 0, 0, 0.4); +} + +.work-card:focus { + outline: 3px solid var(--color-secondary); + outline-offset: 4px; +} + +.work-card-featured { + grid-column: span 2; + aspect-ratio: 21/9; +} + +@media (max-width: 900px) { + .work-card-featured { + grid-column: span 1; + aspect-ratio: 16/9; + } +} + +.work-card-wide { + grid-column: span 2; +} + +@media (max-width: 900px) { + .work-card-wide { + grid-column: span 1; + } +} + +.work-card-bg { + position: absolute; + inset: 0; + background: var(--gradient); + transition: transform var(--transition-smooth); +} + +.work-card:hover .work-card-bg, +.work-card:focus .work-card-bg { + transform: scale(1.1); +} + +.work-card-content { + position: absolute; + bottom: 0; + inset-inline: 0; + padding: var(--space-lg); + background: linear-gradient(to top, rgba(0,0,0,0.9) 0%, rgba(0,0,0,0.4) 70%, transparent 100%); + z-index: 2; +} + +.work-category { + display: inline-block; + font-size: 0.75rem; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.1em; + color: var(--color-secondary); + margin-bottom: var(--space-xs); +} + +.work-title { + font-size: clamp(1.25rem, 3vw, 1.75rem); + font-weight: 700; + margin-bottom: var(--space-xs); +} + +.work-desc { + font-size: 0.9rem; + color: rgba(255, 255, 255, 0.85); + opacity: 0; + transform: translateY(10px); + transition: all var(--transition-smooth); +} + +.work-card:hover .work-desc, +.work-card:focus .work-desc { + opacity: 1; + transform: translateY(0); +} + +.work-card-visual { + position: absolute; + top: 50%; + inset-inline-start: 50%; + transform: translate(50%, -50%); + width: 60%; + opacity: 0.5; + transition: opacity var(--transition-smooth), transform var(--transition-smooth); +} + +[dir="ltr"] .work-card-visual { + transform: translate(-50%, -50%); +} + +.work-card:hover .work-card-visual, +.work-card:focus .work-card-visual { + opacity: 0.8; + transform: translate(50%, -50%) scale(1.1); +} + +[dir="ltr"] .work-card:hover .work-card-visual, +[dir="ltr"] .work-card:focus .work-card-visual { + transform: translate(-50%, -50%) scale(1.1); +} + +/* Services Section */ +.services-section { + padding: var(--space-3xl) var(--space-lg); + position: relative; + overflow: hidden; +} + +.services-bg { + position: absolute; + inset: 0; + z-index: 0; +} + +.service-orb { + position: absolute; + width: 800px; + height: 800px; + top: 50%; + inset-inline-start: 50%; + transform: translate(50%, -50%); + background: radial-gradient(circle, rgba(108, 92, 231, 0.1) 0%, transparent 70%); + pointer-events: none; +} + +[dir="ltr"] .service-orb { + transform: translate(-50%, -50%); +} + +.services-list { + position: relative; + z-index: 1; + max-width: 1000px; + margin: 0 auto; +} + +.service-item { + display: grid; + grid-template-columns: 3rem 1fr 5rem; + gap: var(--space-lg); + align-items: center; + padding: var(--space-xl) 0; + border-bottom: 1px solid rgba(255, 255, 255, 0.1); + transition: all var(--transition-smooth); +} + +.service-item:hover, +.service-item:focus-within { + padding-inline-start: var(--space-md); +} + +.service-item-highlight { + background: linear-gradient(90deg, rgba(108, 92, 231, 0.1) 0%, transparent 100%); + border-radius: var(--radius-md); + padding-inline: var(--space-md); + margin-inline: calc(-1 * var(--space-md)); +} + +[dir="ltr"] .service-item-highlight { + background: linear-gradient(270deg, rgba(108, 92, 231, 0.1) 0%, transparent 100%); +} + +.service-number { + font-size: 0.875rem; + font-weight: 700; + color: var(--color-primary); +} + +.service-content { + flex: 1; +} + +.service-title { + font-size: clamp(1.25rem, 3vw, 1.75rem); + font-weight: 700; + margin-bottom: var(--space-xs); + transition: color var(--transition-fast); +} + +.service-item:hover .service-title, +.service-item:focus-within .service-title { + color: var(--color-primary); +} + +.service-desc { + font-size: 1rem; + color: var(--color-text-muted); + max-width: 500px; +} + +.service-visual { + width: 80px; + height: 80px; + color: var(--color-text-muted); + opacity: 0.3; + transition: all var(--transition-smooth); +} + +.service-item:hover .service-visual, +.service-item:focus-within .service-visual { + opacity: 1; + color: var(--color-secondary); + transform: scale(1.1); +} + +@media (max-width: 768px) { + .service-item { + grid-template-columns: 2.5rem 1fr; + } + + .service-visual { + display: none; + } +} + +/* About Section */ +.about-section { + padding: var(--space-3xl) var(--space-lg); + background: var(--color-bg-elevated); +} + +.about-grid { + display: grid; + grid-template-columns: 1fr 1fr; + gap: var(--space-2xl); + max-width: 1100px; + margin: 0 auto; + align-items: center; +} + +@media (max-width: 900px) { + .about-grid { + grid-template-columns: 1fr; + } +} + +.about-title { + font-size: clamp(1.75rem, 4vw, 2.5rem); + font-weight: 900; + line-height: 1.2; + margin: var(--space-md) 0; +} + +.about-text { + color: var(--color-text-muted); + margin-bottom: var(--space-md); + font-size: 1.05rem; + max-width: 480px; +} + +.about-visual { + position: relative; +} + +.visual-grid { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: var(--space-sm); + aspect-ratio: 1; + max-width: 320px; + margin-inline-start: auto; +} + +@media (max-width: 900px) { + .visual-grid { + margin: 0 auto; + } +} + +.visual-cell { + background: var(--color-surface); + border-radius: var(--radius-md); + transition: all var(--transition-smooth); +} + +.visual-cell:hover, +.visual-cell:focus { + transform: scale(1.05); + background: var(--color-primary); +} + +.visual-cell.accent { + background: var(--gradient-primary); + animation: pulseCell 3s ease-in-out infinite; +} + +@keyframes pulseCell { + 0%, 100% { transform: scale(1); } + 50% { transform: scale(1.05); } +} + +/* Contact Section */ +.contact-section { + padding: var(--space-3xl) var(--space-lg); + position: relative; + overflow: hidden; +} + +.contact-bg { + position: absolute; + inset: 0; + z-index: 0; +} + +.contact-gradient { + position: absolute; + width: 100%; + height: 100%; + background: radial-gradient(ellipse at bottom, rgba(108, 92, 231, 0.15) 0%, transparent 60%); +} + +.contact-content { + position: relative; + z-index: 1; + max-width: 600px; + margin: 0 auto; + text-align: center; +} + +.contact-title { + font-size: clamp(2rem, 5vw, 3rem); + font-weight: 900; + line-height: 1.1; + margin-bottom: var(--space-xl); +} + +.contact-form { + text-align: start; +} + +.form-row { + display: grid; + grid-template-columns: 1fr 1fr; + gap: var(--space-md); +} + +@media (max-width: 600px) { + .form-row { + grid-template-columns: 1fr; + } +} + +.form-group { + margin-bottom: var(--space-md); +} + +.form-label { + display: block; + font-size: 0.9rem; + font-weight: 600; + margin-bottom: var(--space-xs); + color: var(--color-text); +} + +.form-input { + width: 100%; + padding: var(--space-md); + background: var(--color-surface); + border: 2px solid rgba(255, 255, 255, 0.1); + border-radius: var(--radius-md); + color: var(--color-text); + font-size: 1rem; + font-family: inherit; + transition: all var(--transition-fast); +} + +.form-input:hover { + border-color: rgba(255, 255, 255, 0.25); +} + +.form-input:focus { + outline: none; + border-color: var(--color-primary); + box-shadow: 0 0 0 3px rgba(108, 92, 231, 0.2); +} + +.form-input:invalid:not(:placeholder-shown) { + border-color: #e74c3c; +} + +.form-input::placeholder { + color: rgba(255, 255, 255, 0.3); +} + +.form-textarea { + resize: vertical; + min-height: 120px; +} + +.contact-form .btn { + width: 100%; + justify-content: center; + margin-top: var(--space-md); +} + +.contact-form .btn:disabled { + opacity: 0.6; + cursor: not-allowed; +} + +/* Footer */ +.site-footer { + padding: var(--space-2xl) var(--space-lg) var(--space-lg); + border-top: 1px solid rgba(255, 255, 255, 0.05); +} + +.footer-content { + display: flex; + justify-content: space-between; + align-items: center; + max-width: 1400px; + margin: 0 auto var(--space-xl); + flex-wrap: wrap; + gap: var(--space-lg); +} + +.footer-tagline { + color: var(--color-text-muted); + font-size: 0.9rem; + margin-top: var(--space-xs); +} + +.footer-nav { + display: flex; + gap: var(--space-lg); +} + +.footer-nav a { + color: var(--color-text-muted); + font-size: 0.9rem; + transition: color var(--transition-fast); +} + +.footer-nav a:hover, +.footer-nav a:focus { + color: var(--color-text); +} + +.footer-nav a:focus { + outline: 2px solid var(--color-primary); + outline-offset: 4px; +} + +.footer-bottom { + text-align: center; + padding-top: var(--space-lg); + border-top: 1px solid rgba(255, 255, 255, 0.05); + color: var(--color-text-muted); + font-size: 0.875rem; +} + +@media (max-width: 600px) { + .footer-content { + flex-direction: column; + text-align: center; + } + + .footer-nav { + flex-wrap: wrap; + justify-content: center; + } +} + +/* Reveal Animation */ +.reveal { + opacity: 0; + transform: translateY(30px); + transition: opacity 0.8s cubic-bezier(0.4, 0, 0.2, 1), + transform 0.8s cubic-bezier(0.4, 0, 0.2, 1); +} + +.reveal.visible { + opacity: 1; + transform: translateY(0); +} + +/* Focus Styles */ +:focus { + outline: 2px solid var(--color-primary); + outline-offset: 4px; +} + +:focus:not(:focus-visible) { + outline: none; +} + +:focus-visible { + outline: 2px solid var(--color-primary); + outline-offset: 4px; +} + +/* Selection */ +::selection { + background: rgba(108, 92, 231, 0.4); + color: var(--color-text); +} \ No newline at end of file