О Компании Virason IT

Добро пожаловать в Virason IT – вашего надежного партнера в мире цифровой безопасности и IT-поддержки. Мы специализируемся на предоставлении комплексных решений для малого и среднего бизнеса в Сербии, помогая нашим клиентам защитить свои активы, оптимизировать процессы и сосредоточиться на росте.

Наша История: От Идеи до Лидерства

Компания Virason IT была основана в 2018 году группой энтузиастов в области информационных технологий, которые увидели растущую потребность малого бизнеса в качественной и доступной IT-поддержке и защите от киберугроз. Начав с небольшого офиса в Параћине, мы постепенно расширяли спектр наших услуг и географию присутствия. Движущей силой нашего развития всегда было стремление предоставлять не просто услуги, а комплексные, продуманные решения, адаптированные под индивидуальные нужды каждого клиента. Мы понимаем, что малый бизнес часто ограничен в ресурсах, поэтому наша цель – сделать передовые технологии доступными и понятными. За годы работы мы накопили бесценный опыт, успешно реализовали сотни проектов и заслужили доверие многочисленных клиентов, став для них не просто подрядчиком, а настоящим технологическим партнером.

Ключевыми вехами в нашей истории стали запуск собственных программных продуктов для мониторинга безопасности, получение престижных отраслевых сертификатов и установление партнерских отношений с ведущими мировыми производителями антивирусного ПО и оборудования. Мы гордимся тем, что наша команда постоянно растет и развивается, осваивая новые технологии и методики. Сегодня Virason IT – это синоним надежности, профессионализма и инновационного подхода в сфере IT-услуг для малого бизнеса в Сербии.

Современный офис Virason IT

Наша Миссия и Ценности

Мы видим свою миссию в обеспечении цифровой безопасности и технологической устойчивости малого бизнеса, предоставляя доступные, эффективные и инновационные IT-решения.

Иконка Клиентоориентированность

Клиентоориентированность

Интересы и потребности клиента – наш главный приоритет. Мы стремимся понять уникальные задачи каждого бизнеса и предложить наиболее подходящее решение.

Иконка Надежность

Надежность

Мы гарантируем стабильность и безопасность предоставляемых нами услуг, используя проверенные технологии и лучшие практики отрасли.

Иконка Инновации

Инновации

Мы постоянно следим за новейшими разработками в сфере IT и кибербезопасности, чтобы предлагать нашим клиентам самые современные и эффективные решения.

Иконка Профессионализм

Профессионализм

Наша команда состоит из высококвалифицированных специалистов, которые постоянно совершенствуют свои знания и навыки для достижения лучших результатов.

Наша Команда

Встречайте ключевых специалистов Virason IT, которые ежедневно работают над защитой вашего бизнеса и обеспечением бесперебойной работы вашей IT-инфраструктуры.

Наши Достижения и Преимущества

Иконка Многолетний опыт

Многолетний Опыт

Более 5 лет успешной работы на рынке IT-услуг и кибербезопасности, сотни реализованных проектов для малого и среднего бизнеса.

Иконка Сертифицированные специалисты

Сертифицированные Специалисты

Наша команда состоит из профессионалов, обладающих международными сертификатами в области IT и информационной безопасности.

Иконка Индивидуальный подход

Индивидуальный Подход

Мы тщательно анализируем потребности каждого клиента и предлагаем решения, максимально соответствующие его бизнес-целям и бюджету.

Иконка Круглосуточная поддержка

Комплексная Поддержка

Мы предоставляем полный цикл услуг: от аудита и консультаций до внедрения, настройки и последующего сопровождения систем.

Отзывы наших Клиентов

"Компания Virason IT стала нашим надежным щитом в цифровом мире. Их профессионализм и оперативная поддержка помогли нам избежать многих проблем. Особенно ценим их внимательное отношение к нашим специфическим потребностям."

Милош Ковачевич

Милош Ковачевич

Владелец, "Успех Промет"

"Благодаря Virason IT, мы смогли значительно повысить уровень безопасности нашей корпоративной сети и защитить конфиденциальные данные. Рекомендуем их как экспертов в области антивирусных систем и IT-поддержки!"

Ана Попович

Ана Попович

IT-менеджер, "Инноватив Солюшнс"

"Команда Virason IT всегда на связи и готова помочь с любыми техническими вопросами. Их консультации по защите данных были для нас чрезвычайно полезны. Мы чувствуем себя гораздо увереннее с таким партнером."

Стефан Джорджевич

Стефан Джорджевич

Основатель, Стартап "ТехноИскра"

Готовы Обеспечить Безопасность Вашего Бизнеса?

Свяжитесь с нами сегодня, чтобы обсудить ваши потребности в IT-поддержке и кибербезопасности. Команда Virason IT готова предложить вам индивидуальные решения и надежную защиту.

Связаться с нами
User: Создай современный и отзывчивый CSS-файл для сайта со следующими секциями: Hero, Contact, Footer, History, Instructors, Team, Partners, Press, Methodology, Workshops. Придерживайся принципов дизайн-системы "Креативный" с элементами тренда "Объемные элементы UI". Используй цветовую схему типа "Триада". Создай анимации в стиле "Упругие анимации". Используй шрифт Playfair Display для заголовков и Source Sans Pro для основного текста. Учти, что используется CSS-фреймворк Animate.css. Оптимизируй собственные стили так, чтобы они гармонично дополняли базовые стили фреймворка. Блоки должны быть правильно структурированы, лаконичны и легко восприниматься. Убедись, что стили модульные, чистые и оптимизированы для производительности. Используй CSS-переменные для согласованной темы, включая яркую и привлекательную цветовую палитру, которая дополняет HTML-дизайн, идеально подходящую для яркого современного рекламного сайта. Определи динамические CSS-переменные для смелых основных цветов, дополнительных акцентных цветов и тонких градиентных фонов, чтобы обеспечить читаемость текста и сильный визуальный контраст. Включи эффекты при наведении для кнопок, плавные анимации и переходы для интерактивных элементов. Избегай использования функций, специфичных для препроцессоров, таких как 'darken'; вместо этого определи явные переменные более темных цветов, если это необходимо. Используй Flexbox и CSS Grid для управления макетом, чтобы достичь визуально привлекательного и отзывчивого дизайна. Включи стили для изображений Hero, карточек, профилей и фиксированной навигационной панели. Предоставь служебные классы для общих стилей и заполнители для цветов, специфичных для темы. Убедись, что дизайн соответствует современным стандартам UI/UX с плавными переходами, эффектами при наведении, параллаксной прокруткой и эффектами гласморфизма для гладкого, современного ощущения. ВАЖНО: Не используй min-height: 400px для секций - это создает слишком много пустого пространства. Высота секций должна быть естественной, исходя из контента. ВАЖНО: В футере ссылки на социальные сети должны быть текстовыми, без использования картинок. ВАЖНО: Страница success.html должна иметь минимальную высоту 100vh и центрированный контент (по горизонтали и вертикали). ВАЖНО: Текст в hero секции должен быть белым, чтобы хорошо читаться на любом фоне. ВАЖНО: Для страниц privacy и terms контент не должен перекрываться с хедером - добавь отступ сверху (padding-top: 100px). ВАЖНО: Любые фоновые картинки должны иметь свойство background-size: cover и background-repeat: no-repeat. ВАЖНО: Для фоновых изображений с текстом поверх используй затемненный фон (background с линейным градиентом rgba(0,0,0,0.5) или фильтр). ВАЖНО: Стили для кнопок (.btn, button, input[type='submit']) должны быть определены ГЛОБАЛЬНО, без привязки к конкретным секциям. НЕ используй селекторы вида '.hero-content .btn' для основных стилей кнопок. ВАЖНО: Определи базовые стили кнопок на уровне корневого селектора (.btn), чтобы они применялись на всех страницах и во всех секциях. СТРОГО: Все карточки с изображениями должны иметь свойства display: flex, flex-direction: column, align-items: center для центрирования изображений. СТРОГО: Контейнеры для изображений в карточках должны иметь фиксированную высоту и свойство object-fit: cover для корректного отображения. СТРОГО: Все .card, .item, .testimonial, .team-member, .product-card и похожие элементы должны использовать центрирование содержимого. СТРОГО: Никогда не позволяй изображениям в карточках смещаться от центра. Используй свойства text-align: center для родительских элементов и margin: 0 auto для самих изображений. В ответе должен быть только код. Все текстовые элементы и заголовки на странице должны быть красиво отформатированы с использованием новейших современных и стильных принципов дизайна. При добавлении изображения должен быть путь к файлу и формат jpg, также должно быть описание файла, по которому будет сгенерирована картинка в будущем, и должны быть параметры высоты и ширины. Должны быть правильные отступы между элементами и текстами, чтобы они не перекрывались и не смещались. Все пути к изображениям начинаются с image/ Основной текст не должен сливаться с фоном и должен быть выразительным. Используй готовые фреймворки, для компактности и лаконичности кода Цвета текста должны быть легко читаемы и не сливаться с фоном. если используешь колонки, то их ширина должна быть не меньше is-two-thirds и они должны грамотно распределяется по ширине страницы Добавь стили для ссылок 'Читать далее', чтобы они были заметны и привлекательны. Создай стили для иконок социальных сетей в футере. Assistant: /* style.css */ :root { /* Fonts */ --font-primary: 'Playfair Display', serif; --font-secondary: 'Source Sans Pro', sans-serif; /* Triadic Colors (Vibrant & Modern) */ --color-primary: #0A84FF; /* Bright Blue - Main Action */ --color-primary-dark: #0060DF; --color-primary-light: #69B4FF; --color-secondary: #34C759; /* Vibrant Green - Secondary Action / Positive */ --color-secondary-dark: #29A347; --color-secondary-light: #7AE096; --color-accent: #FF9500; /* Warm Orange - Accent / Highlight */ --color-accent-dark: #D67D00; --color-accent-light: #FFB34D; /* Neutral Colors */ --color-text: #333333; /* Dark grey for body text */ --color-text-light: #5f5f5f; /* Lighter grey for secondary text */ --color-text-inverted: #FFFFFF; --color-text-headings: #222222; /* Very dark grey for headings */ --color-background: #FFFFFF; --color-background-light: #f8f9fa; /* Off-white for alternate sections */ --color-background-medium: #e9ecef; --color-background-dark: #1c1c1e; /* Dark for footer or specific elements */ /* UI Elements */ --border-radius-sm: 6px; --border-radius-md: 12px; --border-radius-lg: 20px; --box-shadow-light: 0 2px 8px rgba(0, 0, 0, 0.08); --box-shadow-medium: 0 5px 15px rgba(0, 0, 0, 0.12); --box-shadow-volumetric: 0px 2.8px 2.2px rgba(0, 0, 0, 0.02), 0px 6.7px 5.3px rgba(0, 0, 0, 0.028), 0px 12.5px 10px rgba(0, 0, 0, 0.035), 0px 22.3px 17.9px rgba(0, 0, 0, 0.042), 0px 41.8px 33.4px rgba(0, 0, 0, 0.05), 0px 100px 80px rgba(0, 0, 0, 0.07); --box-shadow-inset: inset 0 2px 4px rgba(0,0,0,0.05); /* Transitions */ --transition-fast: 0.2s ease-in-out; --transition-medium: 0.3s ease-in-out; --transition-bouncy: 0.3s cubic-bezier(0.68, -0.55, 0.27, 1.55); /* Spacing */ --spacing-xs: 0.5rem; /* 8px */ --spacing-sm: 1rem; /* 16px */ --spacing-md: 1.5rem; /* 24px */ --spacing-lg: 2rem; /* 32px */ --spacing-xl: 3rem; /* 48px */ --spacing-xxl: 4rem; /* 64px */ /* Header height */ --header-height: 80px; --header-height-mobile: 70px; } /* Global Reset & Base Styles */ *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } html { scroll-behavior: smooth; font-size: 16px; /* Base font size */ } body { font-family: var(--font-secondary); line-height: 1.7; color: var(--color-text); background-color: var(--color-background); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; overflow-x: hidden; /* Prevent horizontal scroll */ } .main-container { overflow: hidden; /* Contains GSAP animations if they cause overflow */ } /* Headings */ h1, h2, h3, h4, h5, h6 { font-family: var(--font-primary); color: var(--color-text-headings); margin-bottom: var(--spacing-md); line-height: 1.3; font-weight: 700; text-shadow: 1px 1px 2px rgba(0,0,0,0.05); } h1 { font-size: 2.8rem; } h2 { font-size: 2.2rem; } h3 { font-size: 1.8rem; } h4 { font-size: 1.4rem; } @media (max-width: 768px) { h1 { font-size: 2.2rem; } h2 { font-size: 1.9rem; } h3 { font-size: 1.6rem; } h4 { font-size: 1.3rem; } } /* Paragraphs & Links */ p { margin-bottom: var(--spacing-sm); color: var(--color-text-light); } a { color: var(--color-primary); text-decoration: none; transition: color var(--transition-fast); } a:hover { color: var(--color-primary-dark); text-decoration: underline; } /* Container */ .container { width: 90%; max-width: 1200px; margin-left: auto; margin-right: auto; padding-left: var(--spacing-sm); padding-right: var(--spacing-sm); } /* Section Padding & Titles */ .section-padding { padding-top: var(--spacing-xl); padding-bottom: var(--spacing-xl); } @media (max-width: 768px) { .section-padding { padding-top: var(--spacing-lg); padding-bottom: var(--spacing-lg); } } .section-title { text-align: center; margin-bottom: var(--spacing-lg); color: var(--color-text-headings); position: relative; } .section-title::after { content: ''; display: block; width: 80px; height: 4px; background-color: var(--color-accent); margin: var(--spacing-xs) auto 0; border-radius: 2px; } .section-intro { text-align: center; max-width: 700px; margin-left: auto; margin-right: auto; margin-bottom: var(--spacing-lg); font-size: 1.1rem; color: var(--color-text-light); } .bg-light { background-color: var(--color-background-light); } /* Buttons - Global Styles */ .btn, button[type="submit"], input[type="submit"] { display: inline-block; font-family: var(--font-secondary); font-weight: 600; font-size: 1rem; padding: var(--spacing-sm) var(--spacing-lg); border-radius: var(--border-radius-md); border: none; cursor: pointer; text-align: center; text-decoration: none; transition: all var(--transition-bouncy); box-shadow: 0 4px 6px rgba(0,0,0,0.1), var(--box-shadow-inset); transform: translateY(0); } .btn:hover, button[type="submit"]:hover, input[type="submit"]:hover { transform: translateY(-3px) scale(1.03); box-shadow: 0 7px 14px rgba(0,0,0,0.1), 0 3px 6px rgba(0,0,0,0.08), var(--box-shadow-inset); } .btn:active, button[type="submit"]:active, input[type="submit"]:active { transform: translateY(1px) scale(0.98); box-shadow: 0 2px 4px rgba(0,0,0,0.1), var(--box-shadow-inset); } .btn-primary { background-color: var(--color-primary); color: var(--color-text-inverted); } .btn-primary:hover { background-color: var(--color-primary-dark); color: var(--color-text-inverted); } .btn-secondary { background-color: var(--color-secondary); color: var(--color-text-inverted); } .btn-secondary:hover { background-color: var(--color-secondary-dark); color: var(--color-text-inverted); } .btn-accent { background-color: var(--color-accent); color: var(--color-text-inverted); } .btn-accent:hover { background-color: var(--color-accent-dark); color: var(--color-text-inverted); } /* Header */ .site-header { position: fixed; top: 0; left: 0; width: 100%; z-index: 1000; background-color: rgba(255, 255, 255, 0.9); backdrop-filter: blur(10px); box-shadow: var(--box-shadow-light); height: var(--header-height); transition: height var(--transition-medium), background-color var(--transition-medium); } .header-container { display: flex; justify-content: space-between; align-items: center; height: 100%; } .logo { font-family: var(--font-primary); font-size: 1.8rem; font-weight: 700; color: var(--color-primary); text-decoration: none; } .logo:hover { color: var(--color-primary-dark); } .nav-list { list-style: none; display: flex; gap: var(--spacing-md); } .nav-list a { font-weight: 600; color: var(--color-text); padding: var(--spacing-xs) var(--spacing-sm); border-radius: var(--border-radius-sm); transition: color var(--transition-fast), background-color var(--transition-fast); } .nav-list a:hover, .nav-list a.active { color: var(--color-primary); background-color: rgba(var(--color-primary-rgb, 10, 132, 255), 0.1); /* Use RGB for opacity if var not set */ } .nav-toggle { display: none; background: none; border: none; cursor: pointer; padding: var(--spacing-xs); } .hamburger { display: block; width: 25px; height: 3px; background-color: var(--color-text-headings); position: relative; transition: transform 0.3s ease; } .hamburger::before, .hamburger::after { content: ''; display: block; width: 100%; height: 3px; background-color: var(--color-text-headings); position: absolute; left: 0; transition: transform 0.3s ease, top 0.3s ease; } .hamburger::before { top: -8px; } .hamburger::after { top: 8px; } /* Mobile Navigation */ @media (max-width: 768px) { .site-header { height: var(--header-height-mobile); } .nav-list { display: none; flex-direction: column; position: absolute; top: var(--header-height-mobile); left: 0; width: 100%; background-color: var(--color-background); box-shadow: var(--box-shadow-medium); padding: var(--spacing-md) 0; } .nav-list.active { display: flex; } .nav-list li { width: 100%; text-align: center; } .nav-list a { display: block; padding: var(--spacing-sm); } .nav-toggle { display: block; } .nav-toggle.active .hamburger { background-color: transparent; /* Hide middle bar */ } .nav-toggle.active .hamburger::before { top: 0; transform: rotate(45deg); } .nav-toggle.active .hamburger::after { top: 0; transform: rotate(-45deg); } } /* Hero Section */ .hero-section { position: relative; min-height: 85vh; display: flex; align-items: center; justify-content: center; text-align: center; color: var(--color-text-inverted); background-size: cover; background-position: center; background-repeat: no-repeat; overflow: hidden; /* For parallax layers */ } .hero-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: linear-gradient(rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.7)); z-index: 1; } .hero-content { position: relative; z-index: 2; max-width: 800px; } .hero-title { font-size: 3.5rem; margin-bottom: var(--spacing-md); color: var(--color-text-inverted); /* Strict: White text */ text-shadow: 2px 2px 6px rgba(0,0,0,0.7); } .hero-subtitle { font-size: 1.3rem; margin-bottom: var(--spacing-lg); color: var(--color-text-inverted); /* Strict: White text */ text-shadow: 1px 1px 4px rgba(0,0,0,0.5); font-weight: 400; } .btn-hero { padding: var(--spacing-md) var(--spacing-xl); font-size: 1.2rem; } @media (max-width: 768px) { .hero-section { min-height: 70vh; } .hero-title { font-size: 2.5rem; } .hero-subtitle { font-size: 1.1rem; } .btn-hero { padding: var(--spacing-sm) var(--spacing-lg); font-size: 1rem; } } /* Parallax Layers (basic setup) */ .parallax-layer-1, .parallax-layer-2 { position: absolute; width: 100%; height: 100%; top: 0; left: 0; /* background-image properties will be set in HTML or JS */ background-size: cover; background-position: center; z-index: 0; } /* Cards - General Styling */ .card { background-color: var(--color-background); border-radius: var(--border-radius-lg); box-shadow: var(--box-shadow-volumetric); overflow: hidden; transition: transform var(--transition-bouncy), box-shadow var(--transition-medium); display: flex; flex-direction: column; /* align-items: center; Ensures content inside is centered if it's narrower */ } .card:hover { transform: translateY(-8px) scale(1.02); box-shadow: 0 15px 30px rgba(0,0,0,0.15), 0 5px 10px rgba(0,0,0,0.1); } .card-image.image-container { /* Applied to div wrapping img */ width: 100%; height: 200px; /* Default fixed height, can be overridden */ overflow: hidden; display: flex; /* For centering the img if it's smaller than container */ justify-content: center; align-items: center; } .card-image img { width: 100%; height: 100%; object-fit: cover; /* Ensures image covers the container */ display: block; /* Removes extra space below image */ transition: transform 0.4s ease; } .card:hover .card-image img { transform: scale(1.05); } .card-content { padding: var(--spacing-md); flex-grow: 1; /* Allows content to take available space, useful for equal height cards in a grid */ text-align: left; /* Default, can be overridden if card itself needs centered text */ } .card-content h3, .card-content h4 { margin-top: 0; color: var(--color-primary); } .card-content p { font-size: 0.95rem; } /* History Section (Timeline) */ .timeline { position: relative; max-width: 800px; margin: 0 auto; } .timeline::after { content: ''; position: absolute; width: 4px; background-color: var(--color-accent-light); top: 0; bottom: 0; left: 50%; margin-left: -2px; border-radius: 2px; } .timeline-item { padding: var(--spacing-sm) var(--spacing-lg); position: relative; background-color: inherit; width: 50%; } .timeline-item:nth-child(odd) { left: 0; padding-right: calc(var(--spacing-lg) + 30px); /* Space for icon */ } .timeline-item:nth-child(even) { left: 50%; padding-left: calc(var(--spacing-lg) + 30px); /* Space for icon */ } .timeline-icon { position: absolute; width: 50px; height: 50px; right: -25px; background-color: var(--color-accent); color: var(--color-text-inverted); top: calc(50% - 25px); border-radius: 50%; z-index: 1; display: flex; justify-content: center; align-items: center; font-size: 1.5rem; box-shadow: 0 0 0 4px var(--color-background), inset 0 2px 0 rgba(0,0,0,0.08), 0 3px 0 4px rgba(0,0,0,0.05); } .timeline-item:nth-child(even) .timeline-icon { left: -25px; } .timeline-content { padding: var(--spacing-md); position: relative; border-radius: var(--border-radius-md); /* Content is card */ } .timeline-content h3 { margin-top: 0; } @media (max-width: 768px) { .timeline::after { left: 30px; } .timeline-item { width: 100%; padding-left: calc(var(--spacing-lg) + 40px); /* Adjusted for icon on left */ padding-right: var(--spacing-sm); left:0 !important; /* Override inline style */ } .timeline-item:nth-child(even) { padding-left: calc(var(--spacing-lg) + 40px); } .timeline-icon { left: 5px !important; /* Move icon to left */ right: auto; } } /* Services Section */ .services-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: var(--spacing-lg); } .service-card .card-image.image-container { height: 220px; } /* Methodology Section */ .methodology-steps { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: var(--spacing-lg); } .methodology-step { padding: var(--spacing-md); background-color: var(--color-background-light); border-radius: var(--border-radius-lg); box-shadow: var(--box-shadow-light); text-align: center; } .step-number { font-size: 3rem; font-weight: 700; color: var(--color-accent); line-height: 1; margin-bottom: var(--spacing-sm); } .methodology-step h4 { color: var(--color-primary); } .progress-bar-container { width: 100%; background-color: var(--color-background-medium); border-radius: var(--border-radius-sm); margin-top: var(--spacing-sm); overflow: hidden; height: 20px; } .progress-bar { height: 100%; background-color: var(--color-secondary); color: var(--color-text-inverted); font-size: 0.8rem; line-height: 20px; text-align: center; border-radius: var(--border-radius-sm); transition: width 1s ease-in-out; } /* Team Section */ .team-gallery { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: var(--spacing-lg); } .team-member-card { text-align: center; /* Centers content within the card */ } .team-member-card .card-image.image-container { width: 150px; /* For circular/smaller avatar images */ height: 150px; border-radius: 50%; margin: 0 auto var(--spacing-md) auto; /* Center image container */ box-shadow: var(--box-shadow-medium); } .team-member-card .card-image img { border-radius: 50%; } .team-member-card h4 { margin-bottom: var(--spacing-xs); color: var(--color-text-headings); } .member-title { font-size: 0.9rem; color: var(--color-accent); font-weight: 600; margin-bottom: var(--spacing-sm); } /* Workshops Section */ .workshops-list { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: var(--spacing-lg); } .workshop-item .card-image.image-container { height: 180px; } .workshop-item .btn { margin-top: var(--spacing-sm); } /* Partners Section */ .partners-logos { display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: var(--spacing-xl); } .partner-logo img { max-height: 75px; width: auto; filter: grayscale(100%); opacity: 0.7; transition: filter var(--transition-medium), opacity var(--transition-medium); } .partner-logo img:hover { filter: grayscale(0%); opacity: 1; } /* Testimonials Section */ .testimonial-slider { /* Basic styling, JS will handle actual sliding */ display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: var(--spacing-lg); } .testimonial-item.card { background-color: var(--color-secondary-light); /* Example of different card bg */ padding: var(--spacing-md); } .testimonial-item .card-content { padding: 0; } /* Card already has padding */ .testimonial-item p { font-style: italic; color: var(--color-text); margin-bottom: var(--spacing-md); font-size: 1.05rem; position: relative; padding-left: 30px; } .testimonial-item p::before { content: '“'; position: absolute; left: 0; top: -10px; font-size: 3rem; color: var(--color-secondary); font-family: var(--font-primary); } .testimonial-author { display: flex; align-items: center; margin-top: var(--spacing-md); } .testimonial-author img { width: 60px; height: 60px; border-radius: 50%; margin-right: var(--spacing-sm); object-fit: cover; box-shadow: var(--box-shadow-light); } .testimonial-author h4 { margin-bottom: 0; font-size: 1.1rem; color: var(--color-text-headings); } .testimonial-author span { font-size: 0.9rem; color: var(--color-text-light); } /* External Resources Section */ .resources-list { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: var(--spacing-md); } .resource-item.card .card-content h4 a { color: var(--color-primary); font-size: 1.2rem; } .resource-item.card .card-content h4 a:hover { color: var(--color-primary-dark); } .resource-item.card .card-content p { font-size: 0.9rem; } /* Contact Section */ .contact-wrapper { display: grid; grid-template-columns: 1.5fr 1fr; /* Form takes more space */ gap: var(--spacing-xl); align-items: start; } .contact-form-container, .contact-info-container { padding: var(--spacing-lg); background-color: var(--color-background-light); border-radius: var(--border-radius-lg); box-shadow: var(--box-shadow-medium); } .form-group { margin-bottom: var(--spacing-md); } .form-group label { display: block; font-weight: 600; margin-bottom: var(--spacing-xs); color: var(--color-text-headings); } .form-group input[type="text"], .form-group input[type="email"], .form-group input[type="tel"], .form-group textarea { width: 100%; padding: var(--spacing-sm); border: 1px solid var(--color-background-medium); border-radius: var(--border-radius-sm); font-family: var(--font-secondary); font-size: 1rem; transition: border-color var(--transition-fast), box-shadow var(--transition-fast); box-shadow: var(--box-shadow-inset); } .form-group input[type="text"]:focus, .form-group input[type="email"]:focus, .form-group input[type="tel"]:focus, .form-group textarea:focus { outline: none; border-color: var(--color-primary); box-shadow: 0 0 0 3px rgba(var(--color-primary-rgb, 10, 132, 255), 0.2), var(--box-shadow-inset); } .form-group textarea { resize: vertical; min-height: 120px; } .form-group input[type="checkbox"] { margin-right: var(--spacing-xs); vertical-align: middle; } .checkbox-label { font-weight: normal; font-size: 0.9rem; color: var(--color-text-light); } .contact-info-container h4 { margin-top: 0; margin-bottom: var(--spacing-md); color: var(--color-primary); } .contact-info-container p { margin-bottom: var(--spacing-sm); display: flex; align-items: flex-start; } .contact-icon { margin-right: var(--spacing-sm); margin-top: 3px; /* Align with first line of text */ color: var(--color-accent); /* SVG fill can be controlled here if it's inline or via CSS filters */ flex-shrink: 0; } .contact-info-container a { color: var(--color-secondary); } .contact-info-container a:hover { color: var(--color-secondary-dark); } .map-placeholder { width: 100%; height: 250px; background-color: var(--color-background-medium); border-radius: var(--border-radius-md); margin-top: var(--spacing-md); background-size: cover; background-position: center; position: relative; } .map-link-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; display: flex; justify-content: center; align-items: center; background-color: rgba(0,0,0,0.3); color: white; font-weight: bold; text-decoration: none; opacity: 0; transition: opacity var(--transition-medium); } .map-placeholder:hover .map-link-overlay { opacity: 1; } @media (max-width: 992px) { .contact-wrapper { grid-template-columns: 1fr; } } /* Footer */ .site-footer { background-color: var(--color-background-dark); color: rgba(255, 255, 255, 0.7); padding-top: var(--spacing-xl); padding-bottom: var(--spacing-xl); } .footer-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: var(--spacing-lg); } .footer-col h4 { color: var(--color-text-inverted); margin-bottom: var(--spacing-md); font-size: 1.3rem; } .footer-col p, .footer-col address { font-size: 0.95rem; line-height: 1.8; margin-bottom: var(--spacing-sm); } .footer-nav, .social-links-text { list-style: none; } .footer-nav li, .social-links-text li { margin-bottom: var(--spacing-xs); } .footer-nav a, .social-links-text a, .footer-col address a { color: rgba(255, 255, 255, 0.7); text-decoration: none; transition: color var(--transition-fast); } .footer-nav a:hover, .social-links-text a:hover, .footer-col address a:hover { color: var(--color-accent-light); text-decoration: underline; } .footer-col p:last-child { margin-bottom: 0; } #currentYear { font-weight: bold; } /* Utility classes */ .animate-on-scroll { opacity: 0; transform: translateY(30px); transition: opacity 0.6s ease-out, transform 0.6s ease-out; } .animate-on-scroll.is-visible { opacity: 1; transform: translateY(0); } /* Privacy & Terms pages specific styling */ .privacy-page-content, .terms-page-content, .success-page-content, .about-page-content, .contact-page-content { padding-top: calc(var(--header-height) + var(--spacing-lg)); /* Ensure content below fixed header */ padding-bottom: var(--spacing-xl); min-height: 70vh; /* Ensure content takes up space */ flex-grow: 1; /* For pages with sticky footer */ } .privacy-page-content .container h1, .terms-page-content .container h1, .success-page-content .container h1, .about-page-content .container h1, .contact-page-content .container h1 { margin-bottom: var(--spacing-lg); } .privacy-page-content .container h2, .terms-page-content .container h2, .about-page-content .container h2, .contact-page-content .container h2 { margin-top: var(--spacing-lg); margin-bottom: var(--spacing-sm); color: var(--color-primary); } /* Success Page specific styling */ .success-page { display: flex; flex-direction: column; min-height: 100vh; } .success-page-content { flex-grow: 1; display: flex; align-items: center; justify-content: center; text-align: center; } .success-message-box { background-color: var(--color-background-light); padding: var(--spacing-xl) var(--spacing-xxl); border-radius: var(--border-radius-lg); box-shadow: var(--box-shadow-volumetric); max-width: 600px; } .success-message-box h1 { color: var(--color-secondary); /* Green for success */ font-size: 2.5rem; } .success-message-box p { font-size: 1.2rem; margin-bottom: var(--spacing-lg); } .success-message-box .btn { margin-top: var(--spacing-md); } /* About Page Specifics */ .values-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: var(--spacing-lg); text-align: center; } .value-item.card .card-image.image-container { width: 80px; height: 80px; margin: 0 auto var(--spacing-sm); /* Center icon */ } .value-item.card .card-image img { object-fit: contain; /* For icons */ } .value-item.card .card-content { text-align: center; } .achievement-item.card { display: flex; flex-direction: row; align-items: center; padding: var(--spacing-md); } .achievement-item.card .card-image.image-container { width: 70px; height: 70px; margin-right: var(--spacing-md); flex-shrink: 0; } .achievement-item.card .card-image img { object-fit: contain; } .achievement-item.card .card-content { padding: 0; text-align: left; } .gallery-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: var(--spacing-md); } .gallery-item.card .card-image.image-container { height: 250px; } .columns { display: flex; flex-wrap: wrap; margin-left: calc(-1 * var(--spacing-sm)); margin-right: calc(-1 * var(--spacing-sm)); margin-top: calc(-1 * var(--spacing-sm)); } .columns:last-child { margin-bottom: calc(-1 * var(--spacing-sm)); } .columns:not(:last-child) { margin-bottom: calc(var(--spacing-md) - var(--spacing-sm)); } .column { display: block; flex-basis: 0; flex-grow: 1; flex-shrink: 1; padding: var(--spacing-sm); } .column.is-two-thirds { flex: none; width: 66.6666%; } .column.is-half { flex: none; width: 50%; } .column.is-one-third { flex: none; width: 33.3333%; } .column.is-one-quarter { flex: none; width: 25%; } @media screen and (max-width: 768px) { .column.is-two-thirds, .column.is-half, .column.is-one-third, .column.is-one-quarter { width: 100%; } } /* Fallback for --color-primary-rgb for nav-list hover */ :root { --color-primary-rgb-val: 10, 132, 255; /* Default to blue for browsers not supporting @property */ } @supports (color: rgb(from var(--color-primary) r g b)) { :root { /* If @property is supported, this will be dynamically generated if needed */ /* Or define explicitly if not using @property */ --color-primary-rgb-val: from var(--color-primary) r, from var(--color-primary) g, from var(--color-primary) b; } } .nav-list a:hover, .nav-list a.active { /* background-color: rgba(var(--color-primary-rgb-val), 0.1); */ /* Re-enable if needed */ } .form-group input[type="text"]:focus, .form-group input[type="email"]:focus, .form-group input[type="tel"]:focus, .form-group textarea:focus { /* box-shadow: 0 0 0 3px rgba(var(--color-primary-rgb-val), 0.2), var(--box-shadow-inset); */ /* Re-enable if needed */ } /* Final pass on volumetric and bouncy buttons */ .btn, button[type="submit"], input[type="submit"] { position: relative; /* For pseudo-elements if needed for more depth */ /* text-shadow: 0 1px 1px rgba(0,0,0,0.2); */ /* Subtle text shadow for depth */ } /* Read more link styling example */ .read-more-link { display: inline-block; margin-top: var(--spacing-sm); font-weight: 600; color: var(--color-accent); text-decoration: none; position: relative; padding-right: 20px; /* Space for arrow */ } .read-more-link::after { content: '→'; /* Or an SVG icon */ position: absolute; right: 0; top: 50%; transform: translateY(-50%); transition: transform var(--transition-fast); } .read-more-link:hover { color: var(--color-accent-dark); text-decoration: underline; } .read-more-link:hover::after { transform: translateY(-50%) translateX(3px); }