Анализ сайта ps-web.com
Основное Готовность: 75%
Домен
ps-web.com
Состояние доменного имени
?
Проверяем корректность доменного имени и наличие технических проблем на уровне домена.
Домен второго уровня идеален для продвижения.
Отличный запоминающийся домен.
Ответ сервера
200 Успешный ответ
HTTP-код ответа и цепочка редиректов
?
Код 200 — страница доступна. Коды 3xx — редиректы (цепочки замедляют загрузку и размывают ссылочный вес). Коды 4xx/5xx — ошибки, поисковик не сможет проиндексировать страницу.
Сервер настроен корректно.
Цепочка редиректов:
http://ps-web.com
307 RedirectKeepVerb
https://perpetualsolution.com/
200 OK
Безопасность
Сайт безопасен
Использование HTTPS и SSL-сертификат
?
HTTPS — обязательный стандарт. Google и Яндекс отдают предпочтение защищённым сайтам. Отсутствие SSL или просроченный сертификат ведут к предупреждениям в браузере и снижению позиций.
На сайте работает защищенный протокол ssl и сайт открывается по https.
Ssl-сертификат действителен до 19.10.2026 9:38:28.
Сервер поддерживает HTTP/3 (QUIC) — новейший протокол.
Включён HSTS (Strict-Transport-Security) — защита от подмены на http.
HTTP автоматически перенаправляется на HTTPS.
Поздравляем! Сайт не содержится в реестре РКН.
Кодировка
utf-8
Кодировка символов страницы
?
Стандарт — UTF-8. Неправильная кодировка вызывает нечитаемые символы и мешает поисковику корректно распознать текст страницы.
Указана кодировка на странице utf-8.
Язык
en
Атрибут lang в HTML-теге
?
Атрибут lang (<html lang="ru">) сообщает поисковикам и браузерам, на каком языке написана страница. Помогает при ранжировании в региональном поиске.
Язык документа указан явно: en.
Скорость загрузки
~1,45сек
Время отклика сервера (TTFB)
?
Time To First Byte — время до получения первого байта от сервера. Норма до 200 мс. Медленный отклик ухудшает пользовательский опыт и ранжирование: Яндекс и Google учитывают скорость страниц.
Скорость загрузки сайта 1,45сек превышает 1 секунду. Желательно улучшить работу сайта!
Объем документа
109Кб
Размер HTML-кода страницы
?
Слишком большой HTML замедляет парсинг браузером и сканирование поисковым роботом. Рекомендуется не более 200 Кб.
Объем html-документа 109Кб оптимален.
Структура html-документа корректна.
Ресурсы
Ресурсы: 21
Внешние ресурсы страницы (CSS, JS, изображения)
?
Количество и тип подключённых ресурсов влияют на скорость загрузки. Большое число запросов увеличивает время рендеринга страницы.
Кол-во файлов ресурсов 21 много для одной страницы. Приемлемо до 10. Проведите оптимизацию файлов ресурсов!
Показать полный список ресурсов
| Тип | Название | Значение |
|---|---|---|
| stylesheet | https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;600&family=Montserrat:wght@600;700&display=swap | |
| stylesheet | https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;600&family=Montserrat:wght@600;700&display=swap | |
| stylesheet | dist/fonts.css | |
| stylesheet | dist/fonts.css | |
| stylesheet | https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css | |
| stylesheet | https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/css/bootstrap.min.css | |
| stylesheet | style.css | |
| stylesheet | dist/css/custom.css | |
| stylesheet | dist/css/responsive.css | |
| stylesheet | dist/css/owl.carousel.min.css | |
| stylesheet | dist/css/animations.min.css | |
| stylesheet | https://cdnjs.cloudflare.com/ajax/libs/AlertifyJS/1.11.1/css/alertify.min.css | |
| stylesheet | dist/css/animations.min.css | |
| stylesheet | https://cdnjs.cloudflare.com/ajax/libs/AlertifyJS/1.11.1/css/alertify.min.css | |
| js | https://code.jquery.com/jquery-3.6.0.min.js | |
| js | https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.6/umd/popper.min.js | |
| js | https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js | |
| js | dist/js/vertical_carousel.js | |
| js | dist/js/custom.js | |
| js | dist/js/contact_form.js | |
| js | https://cdnjs.cloudflare.com/ajax/libs/AlertifyJS/1.11.1/alertify.min.js |
Серверные заголовки
Кол-во: 11
HTTP-заголовки ответа сервера
?
Заголовки сервера передают браузеру и поисковику служебную информацию: кеширование, безопасность (CSP, HSTS), сжатие (gzip). Правильная настройка ускоряет загрузку и повышает защищённость.
Найдены серверные заголовки 11шт. Подробнее про серверные заголовки.
Показать полный список серверных заголовков
| Ключ | Значение |
|---|---|
| X-Powered-By | PHP/8.2.33 |
| Set-Cookie | PHPSESSID=iggenbliftho7r0sgaukcpurft; path=/; secure |
| Cache-Control | no-store, must-revalidate, no-cache |
| Pragma | no-cache |
| Date | Mon, 24 Aug 2026 20:40:52 GMT |
| Server | LiteSpeed |
| Strict-Transport-Security | max-age=63072000; includeSubDomains |
| X-Frame-Options | SAMEORIGIN |
| X-Content-Type-Options | nosniff |
| Vary | User-Agent |
| Alt-Svc | h3=":443"; ma=2592000 |
CMS
Не определена
Система управления сайтом (движок)
?
CMS — это движок, на котором работает сайт (WordPress, 1C-Bitrix, Tilda и др.). Знание CMS помогает понять возможности SEO-оптимизации и подобрать подходящие инструменты. «Не определена» — вероятно, самописный сайт или нестандартная сборка.
CMS не определена. Вероятно, сайт самописный либо движок надёжно скрыт. Это не ошибка.
Веб-сервер
Программное обеспечение сервера
?
Веб-сервер — это ПО, которое отдаёт страницы посетителям (nginx, Apache, IIS, LiteSpeed и др.). Определяется по серверным заголовкам ответа (Server, X-Powered-By и т.п.). «Не определён» — сервер намеренно скрывает эти заголовки, это нормальная практика безопасности.
Сайт работает на веб-сервере LiteSpeed.
Мета-теги Готовность: 23%
Title
Professional Website Design Starting at $99/Month | Montreal Web Agency
Заголовок страницы в браузере и поисковой выдаче
?
Title — главный SEO-заголовок страницы. Влияет на CTR в поиске и ранжирование. Оптимальная длина: 50–70 символов. Ключевые слова — ближе к началу.
Необходимо уменьшить число символов в title (текущее значение: 71, оптимально: от 40 до 45)
Дублей словоформ в title не найдено.
Description
Get a professional website for your small business or nonprofit starting at $99/month. No large upfront costs. Dedicated support team. Launch in weeks, not months. Montreal-based.
Описание страницы в поисковой выдаче (сниппет)
?
Meta Description — текст под заголовком в выдаче. Напрямую на позиции не влияет, но влияет на CTR. Оптимальная длина: 120–160 символов.
Необходимо уменьшить число символов в description (текущее значение: 179, оптимально: от 120 до 130)
Keywords
affordable website design, small business website, nonprofit website design, Montreal web design, $99 website, cheap website design, professional website
Список ключевых слов страницы (устаревший тег)
?
Meta Keywords не учитывается Яндексом и Google для ранжирования с 2009–2012 годов. Заполнение не обязательно, но не вредит. Конкурент может использовать содержимое для анализа.
Keywords установлены.
Канонический Url
https://perpetualsolution.com
Указывает поисковику основную версию страницы
?
Canonical (rel=canonical) предотвращает проблему дублей страниц. Должен точно совпадать с URL проверяемой страницы. Неправильный canonical может передать ссылочный вес на другую страницу.
Канонический Url прописан корректно.
Robots
index, follow
Директивы для поисковых роботов на уровне страницы
?
Meta Robots управляет индексацией конкретной страницы: index/noindex — индексировать ли, follow/nofollow — следовать ли по ссылкам. Noindex полностью исключает страницу из поиска.
Meta-тег robots со значениями index, follow не накладывает ограничений на индексирование и показ контента.
Адаптивность
width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, shrink-to-fit=no
Настройка масштабирования на мобильных устройствах
?
Тег viewport (<meta name="viewport">) сообщает браузеру, как масштабировать страницу на мобильных. Стандарт: width=device-width, initial-scale=1. Отсутствие — признак отсутствия мобильной версии.
Meta-тег viewport со значением-константой width=device-width задаёт ширину страницы в соответствии с размером экрана.
Meta-тег viewport со значением initial-scale=1.0 определяет масштаб 1:1, т.е. «не масштабировать».
Meta-тег viewport со значением user-scalable определяет доступность масштабирования страницы пользователем.
Meta-тег viewport со значением maximum-scale определяет максимальный масштаб области просмотра.
Разметка OpenGraph
Кол-во: 8
Мета-теги для красивых превью в соцсетях
?
OpenGraph (og:title, og:description, og:image) управляет тем, как страница выглядит при репосте в социальных сетях и мессенджерах. Отсутствие OG-тегов — невзрачный превью при шеринге.
Разметка OpenGraph задана. Страница оптимизирована под социальные сети.
Показать полный список og мета-тегов
| Тип | Значение |
|---|---|
| og:locale | en_CA |
| og:title | Professional Websites Starting at $99/Month | Perpetual Solution |
| og:description | Get a professional website for your small business or nonprofit. No large upfront costs. Dedicated support team. Launch in weeks. |
| og:url | https://perpetualsolution.com |
| og:type | website |
| og:image | https://perpetualsolution.com/images/perpetualsolutionheader.jpg |
| og:image:width | 1200 |
| og:image:height | 630 |
Все мета-теги
Кол-во: 18
Полный список мета-тегов страницы
?
Таблица всех meta-тегов, включая нестандартные. Позволяет найти опечатки, дубли и лишние теги.
Найдены мета-теги 18шт. Мета-теги не видимы для человека и предназначены для обмена информацией между веб-страницей и поисковыми системами, браузерами и другими веб-службами. С ними роботы 🤖 и устройства ведут себя более ожидаемо.
Показать полный список мета-тегов
| Тип | Название | Значение |
|---|---|---|
| name | viewport | width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, shrink-to-fit=no |
| name | description | Get a professional website for your small business or nonprofit starting at $99/month. No large upfront costs. Dedicated support team. Launch in weeks, not months. Montreal-based. |
| name | keywords | affordable website design, small business website, nonprofit website design, Montreal web design, $99 website, cheap website design, professional website |
| name | author | Perpetual Solution |
| name | robots | index, follow |
| name | googlebot | index, follow, max-snippet:-1, max-image-preview:large |
| name | twitter:card | summary_large_image |
| name | twitter:title | Professional Websites Starting at $99/Month |
| name | twitter:description | Get a professional website for your small business or nonprofit. No large upfront costs. Launch in weeks. |
| name | twitter:image | https://perpetualsolution.com/images/perpetualsolutionheader.jpg |
| property | og:locale | en_CA |
| property | og:title | Professional Websites Starting at $99/Month | Perpetual Solution |
| property | og:description | Get a professional website for your small business or nonprofit. No large upfront costs. Dedicated support team. Launch in weeks. |
| property | og:url | https://perpetualsolution.com |
| property | og:type | website |
| property | og:image | https://perpetualsolution.com/images/perpetualsolutionheader.jpg |
| property | og:image:width | 1200 |
| property | og:image:height | 630 |
Оптимизация Готовность: 62%
Структура
Ошибок нет
Семантические HTML-элементы страницы
?
Проверяет наличие основных структурных элементов: nav, header, footer, main. Корректная семантическая структура помогает поисковику понять архитектуру страницы.
Структура документа корректна (теги <html> и <body> присутствуют в единственном экземпляре).
Контент
Есть ошибки
Объём и качество текстового содержимого
?
Анализирует объём полезного текста на странице. Слишком мало — страница может считаться малополезной. Слишком много — ухудшается читаемость и восприятие.
Слова из title 2 встречаются в тексте редко. Добавьте в контент страницы слова из тега <title>!
Кол-во знаков контента 314 слишком мало. Добавьте больше текста!
Кол-во слов 46 слишком мало. Добавьте больше текста (минимум 400 слов)!
Абзацев с текстом 42 достаточно.
Среднее число слов в абзаце 19 достаточно.
Заголовки
Ошибок нет
Иерархия заголовков H1–H6
?
H1 должен быть один и содержать ключевой запрос. H2–H6 описывают подразделы. Пропуск уровней (H1 → H3) и несколько H1 — типичные ошибки, снижающие понятность страницы для поисковика.
На странице присутствуют заголовки <h1> 1. Это прекрасно.
На странице присутствуют заголовки <h2> 9. Это хорошо.
На странице присутствуют заголовки <h3> 14.
Тошнота
1,41
Насколько одно слово доминирует в тексте
?
Классическая тошнота = √(частота самого повторяющегося слова). Норма до 7–8: текст воспринимается естественно. Выше — поисковик может счесть страницу переспамленной.
Тошнота страницы в пределах нормы 3.
Академич. тошнота
Нет данных для расчета
Насколько текст перенасыщен ключевыми словами
?
Академическая тошнота = (частота слова / общее количество слов) × 100%. Показывает долю конкретного слова в тексте. Норма 5–15%.
Академическая тошнота не рассчитана. Измените текст страницы!
Семантическое ядро
20
Наиболее часто встречающиеся слова на странице
?
Топ слов по частоте использования. Показывает, какие слова доминируют в тексте с точки зрения поисковика.
Контент страницы содержит осмысленный текст и слова.
Показать список слов
| Слово | Кол-во | Частота |
|---|---|---|
| origination | 2 | 4,35% |
| software | 2 | 4,35% |
| pricing | 2 | 4,35% |
| portfolio | 2 | 4,35% |
| events | 1 | 2,17% |
| careers | 1 | 2,17% |
| services | 1 | 2,17% |
| websites | 1 | 2,17% |
| ecommerce | 1 | 2,17% |
| maintenance | 1 | 2,17% |
| support | 1 | 2,17% |
| copywriting | 1 | 2,17% |
| translation | 1 | 2,17% |
| design | 1 | 2,17% |
| 1 | 2,17% | |
| system | 1 | 2,17% |
| website | 1 | 2,17% |
| studies | 1 | 2,17% |
| contact | 1 | 2,17% |
| portal | 1 | 2,17% |
Индексация Готовность: 30%
Индексирование
Ошибок нет
Разрешено ли индексирование страницы
?
Проверяет, не закрыта ли страница от индексации через robots.txt, meta robots или X-Robots-Tag. Страница, закрытая от индексации, не появится в поисковой выдаче.
Анкоров на странице 62 оптимально. Поисковые роботы обязательно проиндексируют сайт.
Robots.txt
Найден корректный robots.txt
Файл управления сканированием сайта роботами
?
Robots.txt указывает поисковым роботам, какие страницы сканировать, а какие — нет. Ошибки в файле могут случайно закрыть важные разделы от индексации.
Robots.txt настроен корректно. Размер файла: 111715 байт. Загружен за: 1сек.
Проверяемая страница не запрещена в robots.txt.
Robots.txt доступен по постоянному адресу
Цепочка редиректов для файла robots.txt:
http://ps-web.com/robots.txt
307 RedirectKeepVerb
https://perpetualsolution.com/
200 OK
Показать содержимое robots.txt
<!doctype html>
<html lang="en">
<head>
<script type="application/ld+json">
{
"@context": "https://schema.org/",
"@type": "LocalBusiness",
"name": "Perpetual Solution",
"image": "https://perpetualsolution.com/images/ps_logo.png",
"url": "https://perpetualsolution.com",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "5",
"reviewCount": "5"
},
"review": [{"@type":"Review","author":{"@type":"Person","name":"A Bousi"},"reviewRating":{"@type":"Rating","ratingValue":5},"reviewBody":"Great website development company. Working with Genevieve was amazing. She answered my many questions and gave great advice. Any time I reached out with a question Genevieve would answer quickly. My website is exactly what I wanted. It was difficult for me to choose a company for my website, I could not be happier with Perpetual Solution."},{"@type":"Review","author":{"@type":"Person","name":"Benjamin Amir"},"reviewRating":{"@type":"Rating","ratingValue":5},"reviewBody":"Working with Genevieve and her team was an absolute pleasure. Their professionalism was very much appreciated. What stood out the most was Genevieve's insightful guidance on critical project decisions. She expertly balanced listening to our needs with recommending the best strategies for our business's website. We couldn't be happier with the final result."},{"@type":"Review","author":{"@type":"Person","name":"Amanda Prizant"},"reviewRating":{"@type":"Rating","ratingValue":5},"reviewBody":"Perpetual Solution created an amazing, beautiful and quality website for my business. They were extremely easy to work with, they were efficient in responding to my requests and they were very timely in creating the final product. I could not be happier with the results and Perpetual Solution has exceeded my expectations. I cannot recommend them enough and I look forward to continuing to work with them in the future!"},{"@type":"Review","author":{"@type":"Person","name":"Annie ChiroNotreDame"},"reviewRating":{"@type":"Rating","ratingValue":5},"reviewBody":"I had been thinking about creating a web site for years when Gen approached me. From our first meeting, I knew that I had found the right company to work with. She took the time to understand our business, our vision and our personality as well as our goals in regard to what we were looking for from our web site. Gen was extremely patient with us as we slowly but surely provided the content for the site. I can honestly say that although she was often waiting for our material, we never waited for her to deliver. Once she had what she needed, it was quickly added to our site which finally went live this year. We have received excellent feedback from our patients and the site started generating new business within the first few weeks! I was worried that the web site would be difficult to navigate or that there would be too much or too little information. I had no need to worry since Gen is a master at her craft. She helped us at every step of the way to ensure that the site was informative and easy to use. Many thanks to Gen and her team at Perpetual Solutions. We could never have done it without you!"},{"@type":"Review","author":{"@type":"Person","name":"Daniel Blenich"},"reviewRating":{"@type":"Rating","ratingValue":5},"reviewBody":"The best part about Gen and the team at Perpetual Solution is how much they care about your business’s online presence. As a small business owner, you intrinsically know the importance of internet exposure, and yet finding the time and resources to devote to your website can be a challenge.\n\nThis is where Perpetual Solution distinguishes itself. Any tech nerd can slap together a functioning website, but few will continue to push and persist until your website is the best version it can be. The “perpetual” model of website updating, refining, and growing is the only way to go. I strive to make sure my business isn’t in stasis, and I couldn’t be happier that someone out there wants the same for my business website."}]}
</script>
<!-- Preconnect to external domains for faster loading -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="preconnect" href="https://cdn.jsdelivr.net" crossorigin>
<link rel="preconnect" href="https://cdnjs.cloudflare.com">
<link rel="preconnect" href="https://www.googletagmanager.com">
<link rel="preconnect" href="https://code.jquery.com">
<link rel="dns-prefetch" href="https://www.google-analytics.com">
<!-- Preload critical resources -->
<link rel="preload" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/css/bootstrap.min.css" as="style" crossorigin>
<link rel="preload" href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;600&family=Montserrat:wght@600;700&display=swap" as="style" crossorigin>
<!-- Google tag (gtag.js) - Deferred for better performance -->
<script>
// Defer GTM loading until after page load
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
// Load GTM after page is interactive
if (window.requestIdleCallback) {
requestIdleCallback(function() { loadGTM(); });
} else {
window.addEventListener('load', function() { setTimeout(loadGTM, 50); });
}
function loadGTM() {
var s = document.createElement('script');
s.src = 'https://www.googletagmanager.com/gtag/js?id=G-GKW3PCD3H6';
s.async = true;
s.onload = function() {
gtag('js', new Date());
gtag('config', 'G-GKW3PCD3H6');
};
document.head.appendChild(s);
}
// Conversion tracking function - call this on form submission
function trackConversion(conversionLabel) {
gtag('event', 'conversion', {
'send_to': 'AW-XXXXXXXXX/' + conversionLabel,
'value': 1.0,
'currency': 'CAD'
});
}
// Track CTA button clicks
function trackCTAClick(ctaName) {
gtag('event', 'cta_click', {
'event_category': 'engagement',
'event_label': ctaName
});
}
</script>
<!-- Mobile Specific Metas here -->
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, shrink-to-fit=no">
<!-- Critical CSS - Inline for fastest render -->
<style>
/* Fix FA icons inside flex containers site-wide */
.contact-info-icon i.fa,
.benefit-icon i.fa,
.why-card-icon i.fa,
.service-icon i.fa {
display: flex !important;
align-items: center;
justify-content: center;
width: 100%;
height: 100%;
}
/* Critical above-fold CSS */
body{margin:0;font-family:'Open Sans',sans-serif;font-size:1rem;line-height:1.5;color:#212529;background:#fff}
*,::after,::before{box-sizing:border-box}
.wrapper{overflow:hidden}
.container{width:100%;max-width:1140px;margin:0 auto;padding:0 15px}
.row{display:flex;flex-wrap:wrap;margin:0 -15px}
.col-lg-8{flex:0 0 66.666%;max-width:66.666%;padding:0 15px}
.header{position:fixed;top:0;left:0;right:0;z-index:1000;background:#fff;box-shadow:0 2px 10px rgba(0,0,0,.1)}
.navbar{display:flex;align-items:center;justify-content:space-between;padding:.5rem 1rem}
.navbar-brand img{max-height:50px;width:auto}
.navbar-collapse{display:flex}
.navbar-nav{display:flex;list-style:none;margin:0;padding:0}
.nav-item{margin:0 .5rem}
.nav-link{color:#333;text-decoration:none;padding:.5rem}
.hero-section{min-height:85vh;display:flex;align-items:center;background:#1a1a1a}
.hero-content{position:relative;z-index:2;padding:8rem 0 6rem;width:100%}
.hero-tagline{display:inline-block;background:linear-gradient(135deg,#e1be42,#d4af37);color:#1a1a1a;padding:.5rem 1.25rem;font-size:.95rem;font-weight:600;text-transform:uppercase;letter-spacing:1px;margin-bottom:1.5rem;border-radius:4px}
.hero-title{font-size:3rem;font-weight:700;color:#fff;line-height:1.2;margin-bottom:.5rem}
.hero-subtitle{font-size:1.5rem;color:#1a1a1a;margin-bottom:1.5rem}
.hero-description{font-size:1.15rem;color:rgba(255,255,255,.9);max-width:600px;margin-bottom:2rem;line-height:1.7}
.hero-cta-group{display:flex;flex-wrap:wrap;gap:1rem;margin-bottom:2rem}
.hero-cta-primary{display:inline-flex;align-items:center;gap:8px;background:linear-gradient(135deg,#398f91,#2a84a1);color:#fff;padding:1rem 2rem;font-weight:600;border-radius:8px;border:none;cursor:pointer;text-decoration:none;box-shadow:0 4px 15px rgba(57,143,145,.4)}
.hero-cta-secondary{display:inline-flex;align-items:center;gap:8px;background:#e1be42;color:#1a1a1a;padding:1rem 2rem;font-weight:600;border-radius:8px;text-decoration:none}
.hero-bottom-bar{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(135deg,#398f91,#2a84a1);padding:1rem 0;z-index:2}
.hero-features{display:flex;justify-content:center;flex-wrap:wrap;gap:2rem;margin:0;padding:0;list-style:none}
.hero-features li{display:flex;align-items:center;gap:.5rem;color:#fff;font-size:.95rem}
/* Mobile - disable animations, optimize layout */
@media(max-width:991px){
.col-lg-8{flex:0 0 100%;max-width:100%}
.hero-title{font-size:2rem}
.hero-section{min-height:auto;padding:100px 0 60px}
.hero-content{padding:2rem 0}
.animated{animation:none!important;opacity:1!important;transform:none!important}
.wow{animation:none!important;visibility:visible!important;opacity:1!important}
}
@media(max-width:576px){
.hero-title{font-size:1.6rem}
.hero-cta-group{flex-direction:column}
.hero-cta-primary,.hero-cta-secondary{width:100%;justify-content:center;padding:.875rem 1.5rem}
.hero-features{gap:1rem}
.hero-features li{font-size:.8rem}
}
/* ========================================
LANGUAGE TOGGLE (desktop base — mobile overrides below)
======================================== */
.lang-switcher { display: flex; align-items: center; margin-left: .75rem; }
.lang-switcher .lang-toggle {
display: inline-flex;
align-items: center;
background: rgba(57, 143, 145, 0.08);
border-radius: 50px;
padding: 3px;
gap: 2px;
}
.lang-switcher .lang-option {
display: inline-flex;
align-items: center;
justify-content: center;
min-width: 38px;
padding: 5px 12px;
font-size: .8rem;
font-weight: 600;
color: #666;
text-decoration: none;
border-radius: 50px;
transition: all .2s ease;
letter-spacing: .03em;
}
.lang-switcher .lang-option:hover { color: #398f91; text-decoration: none; }
.lang-switcher .lang-option.active {
background: linear-gradient(135deg, #398f91 0%, #2a84a1 100%);
color: #fff;
box-shadow: 0 1px 3px rgba(57, 143, 145, .3);
}
/* ========================================
MOBILE NAVIGATION STYLES
======================================== */
/* Hamburger Button */
.navbar-toggler {
border: none;
background: linear-gradient(135deg, #398f91 0%, #2a84a1 100%);
padding: 10px 12px;
border-radius: 8px;
transition: all 0.3s ease;
box-shadow: 0 2px 8px rgba(57, 143, 145, 0.3);
}
.navbar-toggler:hover {
transform: scale(1.05);
box-shadow: 0 4px 12px rgba(57, 143, 145, 0.4);
}
.navbar-toggler:focus {
outline: none;
box-shadow: 0 0 0 3px rgba(57, 143, 145, 0.3);
}
.navbar-toggler .fa-bars {
color: #fff;
font-size: 1.3rem;
}
/* Mobile Menu Panel */
@media (max-width: 767px) {
.navbar-collapse {
position: fixed;
top: 0;
right: -100%;
width: 85%;
max-width: 320px;
height: 100vh;
background: linear-gradient(#123a47, #0e2f3a, #0a2028);
padding: 80px 0 30px;
transition: right 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94);
z-index: 1050;
overflow-y: auto;
box-shadow: -5px 0 30px rgba(0, 0, 0, 0.3);
}
.navbar-collapse.show {
right: 0;
}
/* Overlay when menu is open */
.navbar-collapse::before {
content: '';
position: fixed;
top: 0;
left: -100vw;
width: 100vw;
height: 100vh;
background: rgba(0, 0, 0, 0.5);
opacity: 0;
transition: opacity 0.3s ease;
pointer-events: none;
}
.navbar-collapse.show::before {
opacity: 1;
pointer-events: auto;
}
/* Close button area */
.navbar-collapse::after {
content: '✕';
position: absolute;
top: 20px;
right: 20px;
font-size: 1.5rem;
color: #fff;
cursor: pointer;
width: 40px;
height: 40px;
display: flex;
align-items: center;
justify-content: center;
background: rgba(255, 255, 255, 0.1);
border-radius: 50%;
transition: all 0.3s ease;
}
/* Nav list styling */
.navbar-nav {
flex-direction: column;
padding: 0 20px;
width: 100%;
}
/* Nav items */
.nav-item {
margin: 0;
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}
.nav-item:last-child {
border-bottom: none;
}
/* Nav links */
.navbar-nav .nav-link {
color: #fff !important;
padding: 16px 15px;
font-size: 1.05rem;
font-weight: 500;
display: flex;
align-items: center;
justify-content: space-between;
transition: all 0.3s ease;
border-radius: 8px;
margin: 4px 0;
}
.navbar-nav .nav-link:hover,
.navbar-nav .nav-item.active .nav-link {
background: linear-gradient(135deg, #398f91 0%, #2a84a1 100%);
color: #fff !important;
padding-left: 20px;
}
/* Dropdown toggle arrow */
.navbar-nav .dropdown-toggle::after {
content: '›';
border: none;
font-size: 1.4rem;
font-weight: 300;
transition: transform 0.3s ease;
margin-left: auto;
}
.navbar-nav .dropdown.show .dropdown-toggle::after {
transform: rotate(90deg);
}
/* Dropdown menu */
.navbar-nav .dropdown-menu {
position: static !important;
float: none;
width: 100%;
background: rgba(255, 255, 255, 0.05);
border: none;
border-radius: 8px;
margin: 0 0 10px 0;
padding: 10px;
box-shadow: none;
transform: none !important;
}
/* Dropdown items */
.navbar-nav .dropdown-item {
color: rgba(255, 255, 255, 0.85);
padding: 12px 20px;
font-size: 0.95rem;
border-radius: 6px;
transition: all 0.3s ease;
}
.navbar-nav .dropdown-item:hover,
.navbar-nav .dropdown-item.active {
background: rgba(57, 143, 145, 0.3);
color: #fff;
padding-left: 25px;
}
/* Dropdown divider */
.navbar-nav .dropdown-divider {
border-color: rgba(255, 255, 255, 0.1);
margin: 5px 15px;
}
/* Language toggle — mobile: top of drawer, full width pill */
.lang-switcher {
order: -1;
border-bottom: none !important;
margin: 0 0 16px !important;
padding: 0 5px;
}
.lang-switcher .lang-toggle {
display: flex;
width: 100%;
background: rgba(255, 255, 255, 0.1);
border-radius: 50px;
padding: 4px;
gap: 4px;
}
.lang-switcher .lang-option {
flex: 1;
display: inline-flex;
align-items: center;
justify-content: center;
padding: 8px 16px;
font-size: 0.95rem;
font-weight: 600;
color: rgba(255, 255, 255, 0.7);
text-decoration: none;
border-radius: 50px;
transition: all 0.2s ease;
}
.lang-switcher .lang-option:hover {
color: #fff;
text-decoration: none;
}
.lang-switcher .lang-option.active {
background: #fff;
color: #1a1a1a;
}
/* Header adjustments for mobile */
.header {
padding: 5px 0;
}
.navbar {
padding: 8px 15px;
}
.navbar-brand img {
max-height: 40px;
}
}
/* Tablet adjustments */
@media (min-width: 768px) and (max-width: 991px) {
.navbar-nav .nav-link {
padding: 8px 10px;
font-size: 0.9rem;
}
}
</style>
<!-- Google Fonts - load async to prevent render blocking -->
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;600&family=Montserrat:wght@600;700&display=swap" media="print" onload="this.media='all'">
<noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;600&family=Montserrat:wght@600;700&display=swap"></noscript>
<!-- Local fonts - load async -->
<link rel="stylesheet" href="dist/fonts.css" media="print" onload="this.media='all'">
<noscript><link rel="stylesheet" href="dist/fonts.css"></noscript>
<!-- Font Awesome - needed for icons throughout site -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<!-- Bootstrap CSS - must be synchronous for layout stability -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/css/bootstrap.min.css" crossorigin="anonymous">
<!-- Custom styles -->
<link rel="stylesheet" href="style.css">
<link rel="stylesheet" href="dist/css/custom.css">
<link rel="stylesheet" href="dist/css/responsive.css">
<link rel="stylesheet" href="dist/css/owl.carousel.min.css">
<!-- Non-critical CSS - Load async -->
<link rel="stylesheet" href="dist/css/animations.min.css" media="print" onload="this.media='all'">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/AlertifyJS/1.11.1/css/alertify.min.css" media="print" onload="this.media='all'">
<noscript>
<link rel="stylesheet" href="dist/css/animations.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/AlertifyJS/1.11.1/css/alertify.min.css">
</noscript>
<!-- Favicons -->
<link rel="shortcut icon" href="images/favicon.ico">
<link rel="apple-touch-icon" href="images/ps_logo.png">
</head>
<body>
<!-- Page structure start
================================================== -->
<div class="wrapper">
<a href="#" class="TopButton">
<i class="fa fa-angle-up "></i>
</a>
<header class="header fixed-top"><meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<div class="container">
<div class="row">
<nav class="navbar navbar-expand-md navbar-light w-100">
<a class="navbar-brand" href="index.php">
<img class="img-fluid" src="images/ps_logo.png" alt="Small business websites" width="180" height="50" fetchpriority="high">
</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<!-- <span class="navbar-toggler-icon"></span> -->
<span class="fa fa-bars"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav ml-auto">
<li class="nav-item "><a class="nav-link" href="index.php">Home</a></li>
<li class="nav-item dropdown ">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown2" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">About</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown2">
<a class="dropdown-item " href="about.php">About Us</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item " href="events.php">News & Events</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item " href="careers.php">Careers</a>
</div>
</li>
<li class="nav-item dropdown ">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Services</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown1">
<a class="dropdown-item " href="services.php">Websites</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item " href="online_application_form_system.php">Loan Origination Software</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item " href="ecommerce-website-design.php">eCommerce</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item " href="website-maintenance-support.php">Maintenance and Support</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item " href="copywriting-translation-services.php">Copywriting & Translation</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item " href="ux-design-services.php">UX Design</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item " href="google-ads-services.php">Google Ads</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item " href="business-phone-system.php">VoIP Cloud Phone System</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item " href="home-phone-service.php">VoIP Home Phone</a>
</div>
</li>
<li class="nav-item dropdown ">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdownPricing" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">PRICING</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdownPricing">
<a class="dropdown-item" href="pricing.php">Website Pricing</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="online_application_form_system.php#loan-origination-pricing">Loan Origination Software</a>
</div>
</li>
<li class="nav-item dropdown ">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Portfolio</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown1">
<a class="dropdown-item " href="portfolio.php">Portfolio</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item " href="case-studies.php">Case Studies</a>
</li>
<li class="nav-item "><a class="nav-link" href="contact.php">CONTACT</a></li>
<li class="nav-item"><a class="nav-link" href="https://portal.perpetualsolution.com" target="_blank" style="color:#398f91!important;font-weight:600;"><i class="fa fa-user-circle" style="margin-right:4px;"></i>Portal</a></li>
<li class="nav-item lang-switcher">
<div class="lang-toggle">
<span class="lang-option active" aria-current="true">EN</span>
<a href="fr/index.php" class="lang-option" aria-label="Passer au français">FR</a>
</div>
</li>
</ul>
</div>
</nav>
</div>
</div>
</body>
</header>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<!-- meta tags and title goes here -->
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>Professional Website Design Starting at $99/Month | Montreal Web Agency</title>
<meta name="description" content="Get a professional website for your small business or nonprofit starting at $99/month. No large upfront costs. Dedicated support team. Launch in weeks, not months. Montreal-based.">
<meta name="keywords" content="affordable website design, small business website, nonprofit website design, Montreal web design, $99 website, cheap website design, professional website"/>
<meta name="author" content="Perpetual Solution">
<link rel="canonical" href="https://perpetualsolution.com"/>
<!-- Google Ads Landing Page Optimization -->
<meta name="robots" content="index, follow">
<meta name="googlebot" content="index, follow, max-snippet:-1, max-image-preview:large">
<!-- OpenGraph Begin -->
<meta property="og:locale" content="en_CA" />
<meta property="og:title" content="Professional Websites Starting at $99/Month | Perpetual Solution" />
<meta property="og:description" content="Get a professional website for your small business or nonprofit. No large upfront costs. Dedicated support team. Launch in weeks." />
<meta property="og:url" content="https://perpetualsolution.com" />
<meta property="og:type" content="website" />
<meta property="og:image" content="https://perpetualsolution.com/images/perpetualsolutionheader.jpg" />
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
<!-- OpenGraph end -->
<!-- Twitter Card -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Professional Websites Starting at $99/Month">
<meta name="twitter:description" content="Get a professional website for your small business or nonprofit. No large upfront costs. Launch in weeks.">
<meta name="twitter:image" content="https://perpetualsolution.com/images/perpetualsolutionheader.jpg">
<!-- Preload hero image for faster LCP - responsive -->
<link rel="preload" as="image" href="images/perpetualsolutionheader-mobile.webp" type="image/webp" fetchpriority="high" media="(max-width: 768px)">
<link rel="preload" as="image" href="images/perpetualsolutionheader.webp" type="image/webp" fetchpriority="high" media="(min-width: 769px)">
</head>
<!-- Hero Section Start -->
<style>
.hero-section {
position: relative;
min-height: 85vh;
display: flex;
align-items: center;
background: url('images/perpetualsolutionheader-mobile.webp') no-repeat center;
background-size: cover;
background-attachment: scroll;
}
@media (min-width: 769px) {
.hero-section {
background-image: url('images/perpetualsolutionheader.webp');
}
}
.hero-section::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: linear-gradient(135deg, rgba(0,0,0,0.3) 0%, rgba(0,0,0,0.1) 50%, rgba(0,0,0,0.25) 100%);
}
.hero-content {
position: relative;
z-index: 2;
padding: 8rem 0 6rem;
width: 100%;
}
.hero-tagline {
display: inline-block;
background: linear-gradient(135deg, #e1be42, #d4af37);
color: #1a1a1a;
padding: 0.5rem 1.25rem;
font-size: 0.95rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 1px;
margin-bottom: 1.5rem;
border-radius: 4px;
box-shadow: 0 2px 8px rgba(0,0,0,0.15);
}
.hero-title {
font-family: "GothamBook", sans-serif;
font-size: 3rem;
font-weight: 700;
color: #fff;
line-height: 1.2;
margin-bottom: 0.5rem;
text-shadow: 0 2px 10px rgba(0,0,0,0.3);
}
.hero-subtitle {
font-family: "GothamBook", sans-serif;
font-size: 1.5rem;
font-weight: 400;
color: #1a1a1a;
margin-bottom: 1.5rem;
}
.hero-description {
font-size: 1.15rem;
color: rgba(255,255,255,0.9);
max-width: 600px;
margin-bottom: 2rem;
line-height: 1.7;
}
.hero-cta-group {
display: flex;
flex-wrap: wrap;
gap: 1rem;
margin-bottom: 2rem;
}
.hero-cta-primary {
display: inline-flex;
align-items: center;
gap: 8px;
background: linear-gradient(135deg, #398f91 0%, #398f91 50%, #2a84a1 100%);
color: #fff;
padding: 1rem 2rem;
font-size: 1rem;
font-weight: 600;
border-radius: 8px;
text-decoration: none;
border: none;
cursor: pointer;
transition: all 0.3s ease;
box-shadow: 0 4px 15px rgba(57,143,145,0.4);
}
.hero-cta-primary:hover {
background: linear-gradient(135deg, #328082 0%, #328082 50%, #247291 100%);
transform: translateY(-2px);
box-shadow: 0 6px 20px rgba(57,143,145,0.5);
color: #fff;
}
.hero-cta-secondary {
display: inline-flex;
align-items: center;
gap: 8px;
background: #e1be42;
color: #1a1a1a;
padding: 1rem 2rem;
font-size: 1rem;
font-weight: 600;
border-radius: 8px;
text-decoration: none;
border: none;
transition: all 0.3s ease;
box-shadow: 0 4px 15px rgba(225,190,66,0.3);
}
.hero-cta-secondary:hover {
background: #d4af37;
transform: translateY(-2px);
box-shadow: 0 6px 20px rgba(225,190,66,0.4);
color: #1a1a1a;
}
.hero-phone {
font-size: 1.1rem;
color: rgba(255,255,255,0.9);
}
.hero-phone a {
color: #1a1a1a;
font-weight: 700;
font-size: 1.3rem;
text-decoration: none;
transition: color 0.3s ease;
}
.hero-phone a:hover {
color: #398f91;
}
.hero-bottom-bar {
position: absolute;
bottom: 0;
left: 0;
right: 0;
background: linear-gradient(135deg, #398f91 0%, #398f91 60%, #2a84a1 100%);
padding: 1rem 0;
z-index: 2;
}
.hero-features {
display: flex;
justify-content: center;
flex-wrap: wrap;
gap: 2rem;
margin: 0;
padding: 0;
list-style: none;
}
.hero-features li {
display: flex;
align-items: center;
gap: 0.5rem;
color: #fff;
font-size: 0.95rem;
font-weight: 500;
}
.hero-features li i {
color: #e1be42;
font-size: 1rem;
}
@media (max-width: 991px) {
.hero-title {
font-size: 2.2rem;
}
.hero-subtitle {
font-size: 1.25rem;
}
.hero-section {
min-height: 75vh;
background-attachment: scroll;
}
}
@media (max-width: 576px) {
.hero-title {
font-size: 1.8rem;
}
.hero-subtitle {
font-size: 1.1rem;
}
.hero-content {
padding: 7rem 0 5rem;
}
.hero-cta-group {
flex-direction: column;
}
.hero-cta-primary,
.hero-cta-secondary {
width: 100%;
justify-content: center;
}
.hero-features {
gap: 1rem;
}
.hero-features li {
font-size: 0.85rem;
}
}
</style>
<section class="hero-section">
<div class="hero-content">
<div class="container">
<div class="row">
<div class="col-lg-8">
<span class="hero-tagline animated fadeInDown" style="animation-delay: 0.3s">Not Expensive. Not Complicated.</span>
<h1 class="hero-title animated fadeInUp" style="animation-delay: 0.5s">
Professional Websites & Custom Software
</h1>
<p class="hero-subtitle animated fadeInUp" style="animation-delay: 0.7s">
<strong>for Nonprofits & Small Businesses</strong>
</p>
<p class="hero-description animated fadeInUp" style="animation-delay: 0.9s">
Get online fast with a dedicated team that handles everything—design, content, hosting, and ongoing support.
</p>
<div class="hero-cta-group animated fadeInUp" style="animation-delay: 1.1s">
<button type="button" class="hero-cta-primary" data-toggle="modal" data-target=".popup-form" onclick="trackCTAClick('hero_get_quote')">
Get a Free Quote <i class="fa fa-arrow-right"></i>
</button>
<a href="portfolio.php" class="hero-cta-secondary">
View Our Work <i class="fa fa-arrow-right"></i>
</a>
</div>
<p class="hero-phone animated fadeInUp" style="animation-delay: 1.3s"></br>
</p>
</div>
</div>
</div>
</div>
<div class="hero-bottom-bar animated fadeInUp" style="animation-delay: 1.5s">
<div class="container">
<ul class="hero-features">
<li><i class="fa fa-check-circle"></i> Starting at $99/month</li>
<li><i class="fa fa-check-circle"></i> No large upfront costs</li>
<li><i class="fa fa-check-circle"></i> Launch in weeks</li>
<li><i class="fa fa-check-circle"></i> Ongoing support included</li>
</ul>
</div>
</div>
</section>
<!-- Hero Section End -->
<!-- content start -->
<section class="content-wrap">
<!-- Two Ways We Help Section -->
<style>
.two-ways-section {
padding: 5rem 0 3rem;
background: linear-gradient(135deg, #f8fafa 0%, #e8f4f2 100%);
position: relative;
overflow: hidden;
}
.two-ways-section::before {
content: '';
position: absolute;
top: -50%;
right: -20%;
width: 600px;
height: 600px;
background: radial-gradient(circle, rgba(66,168,150,0.08) 0%, transparent 70%);
pointer-events: none;
}
.two-ways-header {
text-align: center;
margin-bottom: 3.5rem;
}
.two-ways-header h2 {
font-family: "GothamBook", sans-serif;
font-size: 2.2rem;
font-weight: 600;
color: #1a1a1a;
margin-bottom: 1rem;
text-transform: none;
}
.two-ways-header h2::after {
content: '';
display: block;
width: 80px;
height: 4px;
background: linear-gradient(90deg, #42a896, #5bc4b0);
margin: 1.2rem auto 0;
border-radius: 2px;
}
.two-ways-header p {
font-size: 1.15rem;
color: #555;
max-width: 600px;
margin: 0 auto;
}
.offerings-grid {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 2.5rem;
max-width: 1200px;
margin: 0 auto;
padding: 0 1rem;
}
@media (max-width: 991px) {
.offerings-grid {
grid-template-columns: 1fr;
gap: 2rem;
}
}
.offering-card {
background: #fff;
border-radius: 20px;
padding: 2.5rem 2rem;
position: relative;
box-shadow: 0 10px 40px rgba(0,0,0,0.06), 0 2px 10px rgba(0,0,0,0.04);
transition: all 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94);
overflow: hidden;
display: flex;
flex-direction: column;
}
.offering-card::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
height: 5px;
border-radius: 20px 20px 0 0;
}
.offering-card:hover {
transform: translateY(-8px);
box-shadow: 0 20px 60px rgba(0,0,0,0.1), 0 5px 20px rgba(0,0,0,0.06);
}
.offering-card.website-card::before {
background: linear-gradient(90deg, #42a896, #5bc4b0, #42a896);
background-size: 200% 100%;
animation: shimmer 3s ease-in-out infinite;
}
@keyframes shimmer {
0%, 100% { background-position: 0% 50%; }
50% { background-position: 100% 50%; }
}
.offering-card.software-card::before {
background: linear-gradient(90deg, #2a84a1, #4aa8c4, #2a84a1);
background-size: 200% 100%;
animation: shimmer 3s ease-in-out infinite;
}
.offering-icon-wrap {
width: 70px;
height: 70px;
border-radius: 16px;
display: flex;
align-items: center;
justify-content: center;
margin-bottom: 1.5rem;
font-size: 2rem;
}
.website-card .offering-icon-wrap {
background: linear-gradient(135deg, rgba(66,168,150,0.12) 0%, rgba(66,168,150,0.05) 100%);
color: #42a896;
}
.software-card .offering-icon-wrap {
background: linear-gradient(135deg, rgba(42,132,161,0.12) 0%, rgba(42,132,161,0.05) 100%);
color: #2a84a1;
}
.offering-card h3 {
font-family: "GothamBook", sans-serif;
font-size: 1.4rem;
font-weight: 600;
color: #1a1a1a;
margin-bottom: 1rem;
text-align: left;
text-transform: none;
}
.offering-card h3::after { display: none; }
.offering-card .lead-text {
font-size: 1.05rem;
color: #444;
margin-bottom: 1.5rem;
line-height: 1.7;
}
.offering-card .lead-text strong { color: #1a1a1a; }
.benefits-checklist {
list-style: none;
padding: 0;
margin: 0 0 1.5rem 0;
}
.benefits-checklist li {
position: relative;
padding-left: 28px;
margin-bottom: 0.85rem;
font-size: 0.98rem;
color: #444;
line-height: 1.5;
}
.benefits-checklist li::before {
content: '';
position: absolute;
left: 0;
top: 5px;
width: 18px;
height: 18px;
border-radius: 50%;
}
.website-card .benefits-checklist li::before {
background: linear-gradient(135deg, #42a896, #5bc4b0);
box-shadow: 0 2px 8px rgba(66,168,150,0.3);
}
.software-card .benefits-checklist li::before {
background: linear-gradient(135deg, #2a84a1, #4aa8c4);
box-shadow: 0 2px 8px rgba(42,132,161,0.3);
}
.benefits-checklist li::after {
content: '\2713';
position: absolute;
left: 4px;
top: 4px;
font-size: 11px;
color: #fff;
font-weight: bold;
}
.use-case-tag {
display: inline-block;
background: #f5f5f5;
padding: 0.6rem 1rem;
border-radius: 8px;
font-size: 0.9rem;
color: #555;
margin-bottom: 1.5rem;
border-left: 3px solid;
}
.website-card .use-case-tag { border-left-color: #42a896; }
.software-card .use-case-tag { border-left-color: #2a84a1; }
.use-case-tag strong { color: #1a1a1a; }
.offering-cta {
display: inline-flex;
align-items: center;
gap: 8px;
padding: 0.9rem 1.6rem;
border-radius: 10px;
margin-top: auto;
font-weight: 600;
font-size: 0.95rem;
text-decoration: none;
transition: all 0.3s ease;
cursor: pointer;
border: none;
}
.website-card .offering-cta {
background: linear-gradient(135deg, #42a896, #3a9787);
color: #fff;
box-shadow: 0 4px 15px rgba(66,168,150,0.3);
}
.website-card .offering-cta:hover {
background: linear-gradient(135deg, #3a9787, #328578);
transform: translateY(-2px);
box-shadow: 0 6px 20px rgba(66,168,150,0.4);
color: #fff;
}
.software-card .offering-cta {
background: linear-gradient(135deg, #2a84a1, #247291);
color: #fff;
box-shadow: 0 4px 15px rgba(42,132,161,0.3);
}
.software-card .offering-cta:hover {
background: linear-gradient(135deg, #247291, #1e6280);
transform: translateY(-2px);
box-shadow: 0 6px 20px rgba(42,132,161,0.4);
color: #fff;
}
.offering-cta .arrow { transition: transform 0.3s ease; }
.offering-cta:hover .arrow { transform: translateX(4px); }
.corner-accent {
position: absolute;
bottom: 0;
right: 0;
width: 120px;
height: 120px;
opacity: 0.04;
pointer-events: none;
}
.website-card .corner-accent { background: radial-gradient(circle at bottom right, #42a896, transparent 70%); }
.software-card .corner-accent { background: radial-gradient(circle at bottom right, #2a84a1, transparent 70%); }
</style>
<div class="two-ways-section">
<div class="container">
<div class="two-ways-header wow fadeIn">
<h2>Two Ways We Help Nonprofits</br> & Small Businesses Succeed Online</h2>
<p>Whether you need a professional website or custom software to streamline operations, we've got you covered.</p>
</div>
<div class="offerings-grid">
<!-- Website Design Card -->
<div class="offering-card website-card wow fadeInLeft" data-wow-delay="0.1s">
<div class="corner-accent"></div>
<div class="offering-icon-wrap">
<i class="fa fa-desktop"></i>
</div>
<h3>Professional Website Design</h3>
<p class="lead-text"><strong>Get online without the headache.</strong> We build professional, affordable websites that help small businesses and nonprofits make a lasting impression.</p>
<ul class="benefits-checklist">
<li>Simple and cost-effective — no large upfront costs</li>
<li>Fast turnaround times — your site delivered quickly</li>
<li>Stress-free process — we handle setup to launch</li>
<li>All-in-one service — translation, content, and design</li>
<li>Reliable ongoing support with monthly billing</li>
</ul>
<div class="use-case-tag">
<strong>Perfect for:</strong> Small businesses, Nonprofits, Startups
</div>
<br>
<button type="button" class="offering-cta" data-toggle="modal" data-target=".popup-form">
Get Started Now <i class="fa fa-arrow-right"></i>
</button>
</div>
<!-- Application Software Card -->
<div class="offering-card software-card wow fadeInRight" data-wow-delay="0.2s">
<div class="corner-accent"></div>
<div class="offering-icon-wrap">
<i class="fa fa-cogs"></i>
</div>
<h3>Application Management Software</h3>
<p class="lead-text"><strong>Stop drowning in email and spreadsheets.</strong> Our custom software streamlines grant applications, scholarship programs, and loan management.</p>
<ul class="benefits-checklist">
<li>Secure applicant portals with document uploads</li>
<li>Committee review dashboards with voting</li>
<li>Admin tracking & automated notifications</li>
<li>Used by Hebrew Free Loan associations across 3 continents</li>
</ul>
<div class="use-case-tag">
<strong>Perfect for:</strong> Grants, Scholarships, Loans, Applications
</div>
<br>
<a href="online_application_form_system.php" class="offering-cta">
Learn More <i class="fa fa-arrow-right"></i>
</a>
</div>
</div>
</div>
</div>
<!-- Two Ways Section End -->
<!-- Trust & Awards Section -->
<style>
.trust-section {
padding: 4rem 0;
background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%);
}
.trust-header {
text-align: center;
margin-bottom: 2rem;
}
.trust-header h2 {
font-family: "GothamBook", sans-serif;
font-size: 2rem;
font-weight: 600;
color: #1a1a1a;
margin-bottom: 0.5rem;
}
.trust-header p {
font-size: 1.1rem;
color: #555;
margin: 0;
}
.awards-scroll-container {
overflow: hidden;
position: relative;
padding: 1.5rem 0;
}
.awards-scroll-container::before,
.awards-scroll-container::after {
content: '';
position: absolute;
top: 0;
bottom: 0;
width: 80px;
z-index: 2;
pointer-events: none;
}
.awards-scroll-container::before {
left: 0;
background: linear-gradient(to right, #f0f2f4 0%, transparent 100%);
}
.awards-scroll-container::after {
right: 0;
background: linear-gradient(to left, #f0f2f4 0%, transparent 100%);
}
.awards-track-wrapper {
display: flex;
width: 100%;
}
.awards-track {
display: flex;
animation: scroll-awards 20s linear infinite;
flex-shrink: 0;
}
.awards-track:hover {
animation-play-state: paused;
}
@keyframes scroll-awards {
0% { transform: translateX(0); }
100% { transform: translateX(-100%); }
}
.award-item {
flex-shrink: 0;
padding: 0 2.5rem;
text-align: center;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.award-item a {
display: flex;
flex-direction: column;
align-items: center;
text-decoration: none;
transition: transform 0.3s ease;
}
.award-item a:hover {
transform: scale(1.05);
}
.award-item img {
height: 70px;
width: auto;
max-width: 120px;
object-fit: contain;
filter: grayscale(20%);
opacity: 0.85;
transition: all 0.3s ease;
}
.award-item a:hover img {
filter: grayscale(0%);
opacity: 1;
}
.award-item .award-label {
margin-top: 0.6rem;
font-size: 0.75rem;
color: #666;
font-weight: 500;
white-space: nowrap;
}
/* Testimonials */
.trust-testimonials {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 1.5rem;
margin: 2.5rem 0;
}
.trust-testimonial-card {
background: #fff;
border-radius: 12px;
padding: 1.5rem;
box-shadow: 0 4px 20px rgba(0,0,0,0.06);
position: relative;
}
.trust-testimonial-card::before {
content: '\201C';
position: absolute;
top: 10px;
left: 15px;
font-size: 3rem;
color: #398f91;
opacity: 0.2;
font-family: Georgia, serif;
line-height: 1;
}
.trust-testimonial-card p {
font-size: 0.95rem;
color: #444;
line-height: 1.6;
margin-bottom: 1rem;
font-style: italic;
}
.trust-testimonial-author {
display: flex;
align-items: center;
gap: 0.5rem;
padding-top: 0.75rem;
border-top: 1px solid #eee;
}
.trust-testimonial-author strong {
font-size: 0.9rem;
color: #1a1a1a;
}
.trust-testimonial-author span {
font-size: 0.8rem;
color: #398f91;
}
.trust-cta {
text-align: center;
margin-top: 1rem;
}
.trust-cta a {
display: inline-flex;
align-items: center;
gap: 8px;
background: linear-gradient(135deg, #398f91 0%, #398f91 50%, #2a84a1 100%);
color: #fff;
padding: 0.9rem 2rem;
font-size: 1rem;
font-weight: 600;
border-radius: 8px;
text-decoration: none;
transition: all 0.3s ease;
box-shadow: 0 4px 15px rgba(57,143,145,0.3);
}
.trust-cta a:hover {
transform: translateY(-2px);
box-shadow: 0 6px 20px rgba(57,143,145,0.4);
color: #fff;
}
@media (max-width: 991px) {
.trust-testimonials {
grid-template-columns: 1fr;
}
}
@media (max-width: 768px) {
.award-item {
padding: 0 1.5rem;
}
.award-item img {
height: 55px;
max-width: 90px;
}
.awards-scroll-container::before,
.awards-scroll-container::after {
width: 40px;
}
.trust-header h2 {
font-size: 1.6rem;
}
}
</style>
<div class="trust-section">
<div class="container">
<div class="trust-header wow fadeIn">
<h2>Award-winning agency recognized by Clutch</br> and Web Excellence Awards</h2>
</div>
</div>
<div class="awards-scroll-container">
<div class="awards-track-wrapper">
<div class="awards-track">
<div class="award-item">
<a target="_blank" href="https://www.bestinmtl.com/top-web-design-companies-montreal/">
<img src="images/best-in-montreal.png" alt="Best in Montreal web design" loading="lazy">
<span class="award-label">Best in Montreal 2024</span>
</a>
</div>
<div class="award-item">
<a target="_blank" href="https://clutch.co/ca/web-designers/montreal">
<picture>
<source srcset="images/Global-B2B-award.webp" type="image/webp">
<img src="images/Global-B2B-award.gif" alt="Global B2B web design companies award" loading="lazy">
</picture>
<span class="award-label">Top Global B2B 2023</span>
</a>
</div>
<div class="award-item">
<a target="_blank" href="#">
<img src="images/wea_logo_golden_transparent.png" alt="Canada's Best Web Design Agency Award" loading="lazy">
<span class="award-label">Web Excellence Award</span>
</a>
</div>
<div class="award-item">
<a target="_blank" href="#">
<img src="admin/examples/uploads/2563_top-small-business-website-design-companies.svg" alt="Design Rush Award" loading="lazy">
<span class="award-label">Design Rush Top</span>
</a>
</div>
<div class="award-item">
<a target="_blank" href="#">
<img src="images/pandia-award.png" alt="Top web design company award" loading="lazy">
<span class="award-label">Top on Pandia</span>
</a>
</div>
<div class="award-item">
<a target="_blank" href="#">
<img src="admin/examples/uploads/7337_Women_Owned_Business.png" alt="Women Owned Business" loading="lazy">
<span class="award-label">Women Owned</span>
</a>
</div>
</div>
<div class="awards-track">
<div class="award-item">
<a target="_blank" href="https://www.bestinmtl.com/top-web-design-companies-montreal/">
<img src="images/best-in-montreal.png" alt="Best in Montreal web design" loading="lazy">
<span class="award-label">Best in Montreal 2024</span>
</a>
</div>
<div class="award-item">
<a target="_blank" href="https://clutch.co/ca/web-designers/montreal">
<picture>
<source srcset="images/Global-B2B-award.webp" type="image/webp">
<img src="images/Global-B2B-award.gif" alt="Global B2B web design companies award" loading="lazy">
</picture>
<span class="award-label">Top Global B2B 2023</span>
</a>
</div>
<div class="award-item">
<a target="_blank" href="#">
<img src="images/wea_logo_golden_transparent.png" alt="Canada's Best Web Design Agency Award" loading="lazy">
<span class="award-label">Web Excellence Award</span>
</a>
</div>
<div class="award-item">
<a target="_blank" href="#">
<img src="admin/examples/uploads/2563_top-small-business-website-design-companies.svg" alt="Design Rush Award" loading="lazy">
<span class="award-label">Design Rush Top</span>
</a>
</div>
<div class="award-item">
<a target="_blank" href="#">
<img src="images/pandia-award.png" alt="Top web design company award" loading="lazy">
<span class="award-label">Top on Pandia</span>
</a>
</div>
<div class="award-item">
<a target="_blank" href="#">
<img src="admin/examples/uploads/7337_Women_Owned_Business.png" alt="Women Owned Business" loading="lazy">
<span class="award-label">Women Owned</span>
</a>
</div>
</div>
</div>
</div>
<div class="container">
</br>
<div class="container">
<div class="trust-header wow fadeIn">
<h2>Trusted by Small Businesses & Nonprofits</h2>
</div>
</div>
<div class="trust-testimonials wow fadeInUp">
<div class="trust-testimonial-card">
<p>Very happy with the service. Website is beyond my expectations! Quick to respond to my questions and any changes needed.I would recommend Perpetual solution for your website needs!</p>
<div class="trust-testimonial-author">
<div>
<strong>Caitlin Nightingale</strong>
<span>Nightingale Beaute</span>
</div>
</div>
</div>
<div class="trust-testimonial-card">
<p>A huge THANK YOU to this amazing team! We were overwhelmed, and they took care of us perfectly and understood all our challenges! A huge THANK YOU! for their magnificent work</p>
<div class="trust-testimonial-author">
<div>
<strong>Sophie Marcil</strong>
<span>Environnement Électronique</span>
</div>
</div>
</div>
<div class="trust-testimonial-card">
<p>Any tech nerd can slap together a functioning website, but few will continue to push and persist until your website is the best version it can be. The “perpetual” model of website updating, refining, and growing is the only way to go. I strive to make sure my business isn’t in stasis, and I couldn’t be happier that someone out there wants the same for my business website.</p>
<div class="trust-testimonial-author">
<div>
<strong>Daniel Blenich</strong>
<span>A&D Woodturning</span>
</div>
</div>
</div>
</div>
<div class="trust-cta wow fadeIn">
<a href="case-studies.php">Read Case Studies <i class="fa fa-arrow-right"></i></a>
</div>
</div>
</div>
<!-- Trust & Awards Section End -->
<!-- About Section - Clean Modern Refresh -->
<style>
.about-section {
padding: 5rem 0;
background: linear-gradient(180deg, #ffffff 0%, #f8fafa 100%);
position: relative;
overflow: hidden;
}
.about-section::before {
content: '';
position: absolute;
top: 0;
right: -10%;
width: 500px;
height: 500px;
background: radial-gradient(circle, rgba(57,143,145,0.06) 0%, transparent 70%);
pointer-events: none;
}
.about-section::after {
content: '';
position: absolute;
bottom: -20%;
left: -10%;
width: 400px;
height: 400px;
background: radial-gradient(circle, rgba(225,190,66,0.05) 0%, transparent 70%);
pointer-events: none;
}
.about-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 4rem;
align-items: center;
}
.about-content {
position: relative;
z-index: 1;
}
.about-label {
display: inline-block;
background: linear-gradient(135deg, rgba(57,143,145,0.1) 0%, rgba(42,132,161,0.1) 100%);
color: #398f91;
padding: 0.4rem 1rem;
font-size: 0.8rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 2px;
border-radius: 4px;
margin-bottom: 1.25rem;
}
.about-title {
font-family: "GothamBook", sans-serif;
font-size: 2.4rem;
font-weight: 700;
color: #1a1a1a;
line-height: 1.25;
margin-bottom: 1.5rem;
}
.about-title span {
color: #398f91;
}
.about-lead {
font-size: 1.15rem;
color: #444;
line-height: 1.8;
margin-bottom: 1.5rem;
border-left: 3px solid #e1be42;
padding-left: 1.25rem;
}
.about-text {
font-size: 1rem;
color: #555;
line-height: 1.8;
margin-bottom: 2rem;
}
.about-stats {
display: flex;
gap: 2.5rem;
margin-bottom: 2rem;
padding: 1.5rem 0;
border-top: 1px solid rgba(57,143,145,0.15);
border-bottom: 1px solid rgba(57,143,145,0.15);
}
.stat-item {
text-align: left;
}
.stat-number {
font-family: "GothamBook", sans-serif;
font-size: 2.2rem;
font-weight: 700;
color: #398f91;
line-height: 1;
margin-bottom: 0.3rem;
}
.stat-number span {
color: #e1be42;
}
.stat-label {
font-size: 0.85rem;
color: #666;
text-transform: uppercase;
letter-spacing: 1px;
}
.about-cta-group {
display: flex;
flex-wrap: wrap;
gap: 1rem;
}
.about-cta-primary {
display: inline-flex;
align-items: center;
gap: 8px;
background: linear-gradient(135deg, #398f91 0%, #2a84a1 100%);
color: #fff;
padding: 0.95rem 1.75rem;
font-size: 0.95rem;
font-weight: 600;
border-radius: 8px;
text-decoration: none;
border: none;
cursor: pointer;
transition: all 0.3s ease;
box-shadow: 0 4px 15px rgba(57,143,145,0.3);
}
.about-cta-primary:hover {
transform: translateY(-2px);
box-shadow: 0 6px 25px rgba(57,143,145,0.4);
color: #fff;
}
.about-cta-secondary {
display: inline-flex;
align-items: center;
gap: 8px;
background: transparent;
color: #398f91;
padding: 0.95rem 1.75rem;
font-size: 0.95rem;
font-weight: 600;
border-radius: 8px;
text-decoration: none;
border: 2px solid #398f91;
transition: all 0.3s ease;
}
.about-cta-secondary:hover {
background: #398f91;
color: #fff;
}
.about-visual {
position: relative;
z-index: 1;
}
.about-card-stack {
position: relative;
padding: 1rem;
}
.about-card {
background: #fff;
border-radius: 16px;
padding: 2rem;
box-shadow: 0 15px 50px rgba(0,0,0,0.08);
position: relative;
}
.about-card::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
height: 4px;
background: linear-gradient(90deg, #398f91, #71c9c5, #e1be42);
border-radius: 16px 16px 0 0;
}
.value-list {
list-style: none;
padding: 0;
margin: 0;
}
.value-list li {
display: flex;
align-items: flex-start;
gap: 1rem;
padding: 1rem 0;
border-bottom: 1px solid #f0f0f0;
}
.value-list li:last-child {
border-bottom: none;
}
.value-icon {
width: 44px;
height: 44px;
border-radius: 10px;
display: flex;
align-items: center;
justify-content: center;
font-size: 1.1rem;
flex-shrink: 0;
}
.value-icon.teal {
background: linear-gradient(135deg, rgba(57,143,145,0.15) 0%, rgba(113,201,197,0.1) 100%);
color: #398f91;
}
.value-icon.gold {
background: linear-gradient(135deg, rgba(225,190,66,0.2) 0%, rgba(225,190,66,0.1) 100%);
color: #c9a736;
}
.value-icon.pink {
background: linear-gradient(135deg, rgba(218,65,103,0.15) 0%, rgba(237,147,153,0.1) 100%);
color: #da4167;
}
.value-content h4 {
font-family: "GothamBook", sans-serif;
font-size: 1.05rem;
font-weight: 600;
color: #1a1a1a;
margin: 0 0 0.3rem 0;
}
.value-content p {
font-size: 0.9rem;
color: #666;
margin: 0;
line-height: 1.5;
}
.floating-badge {
position: absolute;
top: -15px;
right: 20px;
background: #e1be42;
color: #1a1a1a;
padding: 0.5rem 1rem;
font-size: 0.75rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 1px;
border-radius: 20px;
box-shadow: 0 4px 15px rgba(225,190,66,0.4);
}
@media (max-width: 991px) {
.about-grid {
grid-template-columns: 1fr;
gap: 2.5rem;
}
.about-title {
font-size: 2rem;
}
.about-stats {
gap: 1.5rem;
}
.stat-number {
font-size: 1.8rem;
}
}
@media (max-width: 576px) {
.about-section {
padding: 3.5rem 0;
}
.about-title {
font-size: 1.7rem;
}
.about-stats {
flex-wrap: wrap;
gap: 1.5rem;
}
.stat-item {
flex: 1 1 40%;
}
.about-cta-group {
flex-direction: column;
}
.about-cta-primary,
.about-cta-secondary {
width: 100%;
justify-content: center;
}
}
</style>
<section class="about-section">
<div class="container">
<div class="about-grid">
<div class="about-content wow fadeInLeft">
<span class="about-label">Who We Are</span>
<h2 class="about-title">We Help You <span>Look Professional</span> Without the Price Tag</h2>
<p class="about-lead">Perpetual Solution is a Montreal-based team that builds websites and software for nonprofits and small businesses who want quality work without the agency price.</p>
<p class="about-text">We've spent years refining a process that delivers fast, affordable results. You get a dedicated account manager, a web designer, a copywriter, and a translator—all working together to launch your project in weeks, not months.</p>
<div class="about-stats">
<div class="stat-item">
<div class="stat-number">19<span>+</span></div>
<div class="stat-label">Years Experience</div>
</div>
<div class="stat-item">
<div class="stat-number">200<span>+</span></div>
<div class="stat-label">Projects Delivered</div>
</div>
<div class="stat-item">
<div class="stat-number">$99</div>
<div class="stat-label">Per Month</div>
</div>
</div>
<div class="about-cta-group">
<button type="button" class="about-cta-primary" data-toggle="modal" data-target=".popup-form">
Get a Free Quote <i class="fa fa-arrow-right"></i>
</button>
<a href="about.php" class="about-cta-secondary">
Learn More <i class="fa fa-arrow-right"></i>
</a>
</div>
</div>
<div class="about-visual wow fadeInRight">
<div class="about-card-stack">
<div class="about-card">
<span class="floating-badge">Our Values</span>
<ul class="value-list">
<li>
<div class="value-icon teal"><i class="fa fa-handshake-o"></i></div>
<div class="value-content">
<h4>Personal Service</h4>
<p>A dedicated team that knows your project inside out</p>
</div>
</li>
<li>
<div class="value-icon gold"><i class="fa fa-bolt"></i></div>
<div class="value-content">
<h4>Fast Turnaround</h4>
<p>Launch in weeks—not months—with our streamlined process</p>
</div>
</li>
<li>
<div class="value-icon pink"><i class="fa fa-heart"></i></div>
<div class="value-content">
<h4>Ongoing Support</h4>
<p>We're here after launch to keep your site running smoothly</p>
</div>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- About Section End -->
<!-- Portfolio Section - Redesigned -->
<style>
.portfolio-section {
padding: 5rem 0;
background: linear-gradient(180deg, #f8fafa 0%, #ffffff 100%);
position: relative;
overflow: hidden;
}
.portfolio-section::before {
content: '';
position: absolute;
top: 10%;
left: -15%;
width: 500px;
height: 500px;
background: radial-gradient(circle, rgba(57,143,145,0.04) 0%, transparent 70%);
pointer-events: none;
}
.portfolio-header {
text-align: center;
margin-bottom: 3rem;
position: relative;
z-index: 1;
}
.portfolio-label {
display: inline-block;
background: linear-gradient(135deg, rgba(225,190,66,0.15) 0%, rgba(225,190,66,0.08) 100%);
color: #c9a736;
padding: 0.4rem 1rem;
font-size: 0.8rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 2px;
border-radius: 4px;
margin-bottom: 1rem;
}
.portfolio-header h2 {
font-family: "GothamBook", sans-serif;
font-size: 2.4rem;
font-weight: 700;
color: #1a1a1a;
margin-bottom: 1rem;
}
.portfolio-header h2 span {
color: #398f91;
}
.portfolio-header p {
font-size: 1.1rem;
color: #555;
max-width: 600px;
margin: 0 auto;
}
.portfolio-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 2rem;
margin-bottom: 3rem;
}
.portfolio-card {
background: #fff;
border-radius: 16px;
overflow: hidden;
box-shadow: 0 10px 40px rgba(0,0,0,0.06);
transition: all 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94);
position: relative;
}
.portfolio-card:hover {
transform: translateY(-8px);
box-shadow: 0 20px 50px rgba(0,0,0,0.12);
}
.portfolio-card-image {
position: relative;
overflow: hidden;
aspect-ratio: 16/10;
}
.portfolio-card-image img {
width: 100%;
height: 100%;
object-fit: cover;
transition: transform 0.5s ease;
}
.portfolio-card:hover .portfolio-card-image img {
transform: scale(1.05);
}
.portfolio-card-overlay {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: linear-gradient(180deg, transparent 0%, rgba(0,0,0,0.7) 100%);
opacity: 0;
transition: opacity 0.3s ease;
display: flex;
align-items: flex-end;
padding: 1.5rem;
}
.portfolio-card:hover .portfolio-card-overlay {
opacity: 1;
}
.portfolio-card-overlay span {
color: #fff;
font-size: 0.85rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 1px;
}
.portfolio-tag {
position: absolute;
top: 1rem;
left: 1rem;
background: #e1be42;
color: #1a1a1a;
padding: 0.3rem 0.75rem;
font-size: 0.7rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 1px;
border-radius: 4px;
z-index: 2;
}
.portfolio-tag.software {
background: #2a84a1;
color: #fff;
}
.portfolio-tag.nonprofit {
background: #da4167;
color: #fff;
}
.portfolio-card-content {
padding: 1.5rem;
}
.portfolio-card-content h3 {
font-family: "GothamBook", sans-serif;
font-size: 1.15rem;
font-weight: 600;
color: #1a1a1a;
margin: 0 0 0.5rem 0;
}
.portfolio-card-content .project-type {
font-size: 0.85rem;
color: #398f91;
font-weight: 500;
margin-bottom: 0.75rem;
}
.portfolio-card-content p {
font-size: 0.9rem;
color: #666;
line-height: 1.6;
margin: 0;
display: -webkit-box;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
overflow: hidden;
}
.portfolio-cta-wrap {
display: flex;
justify-content: center;
align-items: center;
gap: 1.5rem;
flex-wrap: wrap;
}
.portfolio-cta-primary {
display: inline-flex;
align-items: center;
gap: 8px;
background: linear-gradient(135deg, #398f91 0%, #2a84a1 100%);
color: #fff;
padding: 1rem 2rem;
font-size: 1rem;
font-weight: 600;
border-radius: 8px;
text-decoration: none;
transition: all 0.3s ease;
box-shadow: 0 4px 15px rgba(57,143,145,0.3);
}
.portfolio-cta-primary:hover {
transform: translateY(-2px);
box-shadow: 0 6px 25px rgba(57,143,145,0.4);
color: #fff;
}
.portfolio-cta-secondary {
display: inline-flex;
align-items: center;
gap: 8px;
background: #e1be42;
color: #1a1a1a;
padding: 1rem 2rem;
font-size: 1rem;
font-weight: 600;
border-radius: 8px;
text-decoration: none;
border: none;
cursor: pointer;
transition: all 0.3s ease;
box-shadow: 0 4px 15px rgba(225,190,66,0.3);
}
.portfolio-cta-secondary:hover {
background: #d4af37;
transform: translateY(-2px);
box-shadow: 0 6px 20px rgba(225,190,66,0.4);
color: #1a1a1a;
}
@media (max-width: 991px) {
.portfolio-grid {
grid-template-columns: repeat(2, 1fr);
}
.portfolio-header h2 {
font-size: 2rem;
}
}
@media (max-width: 576px) {
.portfolio-section {
padding: 3.5rem 0;
}
.portfolio-grid {
grid-template-columns: 1fr;
gap: 1.5rem;
}
.portfolio-header h2 {
font-size: 1.7rem;
}
.portfolio-cta-wrap {
flex-direction: column;
gap: 1rem;
}
.portfolio-cta-primary,
.portfolio-cta-secondary {
width: 100%;
justify-content: center;
}
}
</style>
<section class="portfolio-section" id="portfolio">
<div class="container">
<div class="portfolio-header wow fadeIn">
<span class="portfolio-label">Our Work</span>
<h2>Projects That <span>Speak for Themselves</span></h2>
<p>From nonprofits to small businesses, here's a sample of the websites and software we've built.</p>
</div>
<div class="portfolio-grid">
<div class="portfolio-card wow fadeInUp" data-wow-delay="0.1s">
<div class="portfolio-card-image">
<span class="portfolio-tag">Small Business</span>
<img src="images/portfolio/nightingale-beaute.jpg" alt="Nightingale Beaute website design" loading="lazy" width="400" height="250">
<div class="portfolio-card-overlay">
<span>View Project <i class="fa fa-arrow-right"></i></span>
</div>
</div>
<div class="portfolio-card-content">
<h3>Nightingale Beaute</h3>
<div class="project-type">Rebranding & Online Growth</div>
<p>Complete rebrand with professional website, Google My Business integration, and cohesive digital presence for steady client growth.</p>
</div>
</div>
<div class="portfolio-card wow fadeInUp" data-wow-delay="0.2s">
<div class="portfolio-card-image">
<span class="portfolio-tag">Small Business</span>
<img src="images/portfolio/Cindy-B-Decor.jpg" alt="Cindy B Decor website design" loading="lazy" width="400" height="250">
<div class="portfolio-card-overlay">
<span>View Project <i class="fa fa-arrow-right"></i></span>
</div>
</div>
<div class="portfolio-card-content">
<h3>Cindy B Decor</h3>
<div class="project-type">Award-Winning Portfolio Site</div>
<p>Interior design portfolio that won the Web Excellence Award for outstanding design and functionality.</p>
</div>
</div>
<div class="portfolio-card wow fadeInUp" data-wow-delay="0.3s">
<div class="portfolio-card-image">
<span class="portfolio-tag nonprofit">Nonprofit</span>
<picture>
<source srcset="images/portfolio/Naamat-Canada.webp" type="image/webp">
<img src="images/portfolio/Naamat-Canada.png" alt="Naamat Canada website design" loading="lazy" width="400" height="250">
</picture>
<div class="portfolio-card-overlay">
<span>View Project <i class="fa fa-arrow-right"></i></span>
</div>
</div>
<div class="portfolio-card-content">
<h3>Naamat Canada</h3>
<div class="project-type">National Nonprofit Website</div>
<p>Cohesive digital presence with donation features, event promotion, and regional chapter pages on a scalable CMS.</p>
</div>
</div>
<div class="portfolio-card wow fadeInUp" data-wow-delay="0.1s">
<div class="portfolio-card-image">
<span class="portfolio-tag software">Software</span>
<picture>
<source srcset="images/portfolio/HFLA.webp" type="image/webp">
<img src="images/portfolio/HFLA.png" alt="HFLA Montreal loan application software" loading="lazy" width="400" height="250">
</picture>
<div class="portfolio-card-overlay">
<span>View Project <i class="fa fa-arrow-right"></i></span>
</div>
</div>
<div class="portfolio-card-content">
<h3>HFLA Montreal</h3>
<div class="project-type">Custom Loan Application Platform</div>
<p>End-to-end loan management system with applicant portal, board dashboard, and review team interface.</p>
</div>
</div>
<div class="portfolio-card wow fadeInUp" data-wow-delay="0.2s">
<div class="portfolio-card-image">
<span class="portfolio-tag">Small Business</span>
<picture>
<source srcset="images/portfolio/PKCLaw.webp" type="image/webp">
<img src="images/portfolio/PKCLaw.png" alt="PKC Law website design" loading="lazy" width="400" height="250">
</picture>
<div class="portfolio-card-overlay">
<span>View Project <i class="fa fa-arrow-right"></i></span>
</div>
</div>
<div class="portfolio-card-content">
<h3>PKC Law</h3>
<div class="project-type">Legal Services Website</div>
<p>Professional site with Google Business optimization and embedded live reviews to build trust and social proof.</p>
</div>
</div>
<div class="portfolio-card wow fadeInUp" data-wow-delay="0.3s">
<div class="portfolio-card-image">
<span class="portfolio-tag nonprofit">Nonprofit</span>
<picture>
<source srcset="images/portfolio/Camp-Weredale.webp" type="image/webp">
<img src="images/portfolio/Camp-Weredale.png" alt="Camp Weredale website design" loading="lazy" width="400" height="250">
</picture>
<div class="portfolio-card-overlay">
<span>View Project <i class="fa fa-arrow-right"></i></span>
</div>
</div>
<div class="portfolio-card-content">
<h3>Camp Weredale</h3>
<div class="project-type">Youth Camp Website Redesign</div>
<p>Bilingual site focused on family engagement, donor outreach, and highlighting the camp's deep roots in youth development.</p>
</div>
</div>
</div>
<div class="portfolio-cta-wrap wow fadeIn">
<a href="portfolio.php" class="portfolio-cta-primary">
View Full Portfolio <i class="fa fa-arrow-right"></i>
</a>
<button type="button" class="portfolio-cta-secondary" data-toggle="modal" data-target=".popup-form">
Start Your Project <i class="fa fa-arrow-right"></i>
</button>
</div>
</div>
</section>
<!-- Portfolio Section End -->
<!-- Services Section - Redesigned -->
<style>
.services-section {
padding: 5rem 0;
background: linear-gradient(180deg, #ffffff 0%, #f8fafa 100%);
position: relative;
overflow: hidden;
}
.services-section::before {
content: '';
position: absolute;
bottom: -15%;
right: -10%;
width: 500px;
height: 500px;
background: radial-gradient(circle, rgba(42,132,161,0.05) 0%, transparent 70%);
pointer-events: none;
}
.services-header {
text-align: center;
margin-bottom: 3rem;
position: relative;
z-index: 1;
}
.services-label {
display: inline-block;
background: linear-gradient(135deg, rgba(42,132,161,0.12) 0%, rgba(113,201,197,0.08) 100%);
color: #2a84a1;
padding: 0.4rem 1rem;
font-size: 0.8rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 2px;
border-radius: 4px;
margin-bottom: 1rem;
}
.services-header h2 {
font-family: "GothamBook", sans-serif;
font-size: 2.4rem;
font-weight: 700;
color: #1a1a1a;
margin-bottom: 1rem;
}
.services-header h2 span {
color: #398f91;
}
.services-header p {
font-size: 1.1rem;
color: #555;
max-width: 600px;
margin: 0 auto;
}
.services-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 2rem;
margin-bottom: 3rem;
position: relative;
z-index: 1;
}
.service-card {
background: #fff;
border-radius: 16px;
padding: 2rem;
box-shadow: 0 10px 40px rgba(0,0,0,0.06);
position: relative;
transition: all 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94);
text-decoration: none;
display: flex;
flex-direction: column;
}
.service-card::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
height: 4px;
background: linear-gradient(90deg, #398f91, #71c9c5);
border-radius: 16px 16px 0 0;
transition: background 0.3s ease;
}
.service-card:hover {
transform: translateY(-8px);
box-shadow: 0 20px 50px rgba(0,0,0,0.12);
text-decoration: none;
}
.service-card:hover::before {
background: linear-gradient(90deg, #2a84a1, #398f91);
}
.service-icon {
width: 60px;
height: 60px;
border-radius: 14px;
display: flex;
align-items: center;
justify-content: center;
margin-bottom: 1.25rem;
font-size: 1.5rem;
transition: transform 0.3s ease;
}
.service-card:hover .service-icon {
transform: scale(1.1);
}
.service-icon.teal {
background: linear-gradient(135deg, rgba(57,143,145,0.15) 0%, rgba(113,201,197,0.08) 100%);
color: #398f91;
}
.service-icon.blue {
background: linear-gradient(135deg, rgba(42,132,161,0.15) 0%, rgba(42,132,161,0.08) 100%);
color: #2a84a1;
}
.service-icon.gold {
background: linear-gradient(135deg, rgba(237,147,144,0.2) 0%, rgba(218,65,103,0.08) 100%);
color: #da4167;
}
.service-icon.pink {
background: linear-gradient(135deg, rgba(218,65,103,0.15) 0%, rgba(237,147,153,0.08) 100%);
color: #da4167;
}
.service-card h3 {
font-family: "GothamBook", sans-serif;
font-size: 1.15rem;
font-weight: 600;
color: #1a1a1a;
margin-bottom: 0.75rem;
transition: color 0.3s ease;
}
.service-card:hover h3 {
color: #398f91;
}
.service-card p {
font-size: 0.95rem;
color: #666;
line-height: 1.7;
margin-bottom: 1.25rem;
flex-grow: 1;
}
.service-card-link {
display: inline-flex;
align-items: center;
gap: 6px;
font-size: 0.9rem;
font-weight: 600;
color: #398f91;
transition: all 0.3s ease;
margin-top: auto;
}
.service-card-link i {
transition: transform 0.3s ease;
}
.service-card:hover .service-card-link {
color: #2a84a1;
}
.service-card:hover .service-card-link i {
transform: translateX(4px);
}
.services-cta-wrap {
display: flex;
justify-content: center;
align-items: center;
gap: 1.5rem;
flex-wrap: wrap;
position: relative;
z-index: 1;
}
.services-cta-primary {
display: inline-flex;
align-items: center;
gap: 8px;
background: linear-gradient(135deg, #398f91 0%, #2a84a1 100%);
color: #fff;
padding: 1rem 2rem;
font-size: 1rem;
font-weight: 600;
border-radius: 8px;
text-decoration: none;
border: none;
cursor: pointer;
transition: all 0.3s ease;
box-shadow: 0 4px 15px rgba(57,143,145,0.3);
}
.services-cta-primary:hover {
transform: translateY(-2px);
box-shadow: 0 6px 25px rgba(57,143,145,0.4);
color: #fff;
}
.services-cta-secondary {
display: inline-flex;
align-items: center;
gap: 8px;
background: transparent;
color: #398f91;
padding: 1rem 2rem;
font-size: 1rem;
font-weight: 600;
border-radius: 8px;
text-decoration: none;
border: 2px solid #398f91;
transition: all 0.3s ease;
}
.services-cta-secondary:hover {
background: #398f91;
color: #fff;
}
@media (max-width: 991px) {
.services-grid {
grid-template-columns: repeat(2, 1fr);
}
.services-header h2 {
font-size: 2rem;
}
}
@media (max-width: 576px) {
.services-section {
padding: 3.5rem 0;
}
.services-grid {
grid-template-columns: 1fr;
gap: 1.5rem;
}
.services-header h2 {
font-size: 1.7rem;
}
.service-card {
padding: 1.5rem;
}
.services-cta-wrap {
flex-direction: column;
gap: 1rem;
}
.services-cta-primary,
.services-cta-secondary {
width: 100%;
justify-content: center;
}
}
</style>
<section class="services-section">
<div class="container">
<div class="services-header wow fadeIn">
<span class="services-label">What We Offer</span>
<h2>Everything You Need to <span>Succeed Online</span></h2>
<p>From content creation to ongoing support, we provide all the services to build and grow your digital presence.</p>
</div>
<div class="services-grid">
<a href="feature-copywriter.php" class="service-card wow fadeInUp" data-wow-delay="0.1s">
<div class="service-icon teal">
<i class="fa fa-pencil"></i>
</div>
<h3>Content Writing</h3>
<p>Professional copywriting for your website, blog posts, and marketing materials that engage your audience.</p>
<span class="service-card-link">Learn more <i class="fa fa-arrow-right"></i></span>
</a>
<a href="feature-translation.php" class="service-card wow fadeInUp" data-wow-delay="0.2s">
<div class="service-icon blue">
<i class="fa fa-language"></i>
</div>
<h3>Translation</h3>
<p>Accurate translations that preserve meaning and cultural nuances for your bilingual audience.</p>
<span class="service-card-link">Learn more <i class="fa fa-arrow-right"></i></span>
</a>
<a href="online_application_form_system.php" class="service-card wow fadeInUp" data-wow-delay="0.3s">
<div class="service-icon gold">
<i class="fa fa-tasks"></i>
</div>
<h3>Application Software</h3>
<p>Custom portals for grants, scholarships, and loans with applicant tracking and committee review dashboards.</p>
<span class="service-card-link">Learn more <i class="fa fa-arrow-right"></i></span>
</a>
<a href="feature-google.php" class="service-card wow fadeInUp" data-wow-delay="0.1s">
<div class="service-icon pink">
<i class="fa fa-google"></i>
</div>
<h3>Google Ads</h3>
<p>Google-certified advertising that reaches your target audience and delivers measurable ROI.</p>
<span class="service-card-link">Learn more <i class="fa fa-arrow-right"></i></span>
</a>
<a href="feature-intelligent.php" class="service-card wow fadeInUp" data-wow-delay="0.2s">
<div class="service-icon teal">
<i class="fa fa-phone"></i>
</div>
<h3>Business Phone System</h3>
<p>Intelligent VoIP with call forwarding, voicemail transcription, and professional auto-attendant.</p>
<span class="service-card-link">Learn more <i class="fa fa-arrow-right"></i></span>
</a>
<a href="feature-graphic.php" class="service-card wow fadeInUp" data-wow-delay="0.3s">
<div class="service-icon blue">
<i class="fa fa-object-group"></i>
</div>
<h3>UX Design</h3>
<p>User-focused design that makes your website intuitive, engaging, and easy to navigate.</p>
<span class="service-card-link">Learn more <i class="fa fa-arrow-right"></i></span>
</a>
</div>
<div class="services-cta-wrap wow fadeIn">
<button type="button" class="services-cta-primary" data-toggle="modal" data-target=".popup-form">
Get Started Today <i class="fa fa-arrow-right"></i>
</button>
<a href="feature-maintenance.php" class="services-cta-secondary">
View All Services <i class="fa fa-arrow-right"></i>
</a>
</div>
</div>
</section>
<!-- Services Section End -->
<!-- Testimonials Section - Redesigned -->
<style>
.testimonials-section {
padding: 5rem 0;
background: linear-gradient(180deg, #f8fafa 0%, #e8f4f2 100%);
position: relative;
overflow: hidden;
}
.testimonials-section::before {
content: '';
position: absolute;
top: -20%;
right: -10%;
width: 500px;
height: 500px;
background: radial-gradient(circle, rgba(57,143,145,0.06) 0%, transparent 70%);
pointer-events: none;
}
.testimonials-section::after {
content: '';
position: absolute;
bottom: -15%;
left: -5%;
width: 400px;
height: 400px;
background: radial-gradient(circle, rgba(225,190,66,0.05) 0%, transparent 70%);
pointer-events: none;
}
.testimonials-header {
text-align: center;
margin-bottom: 3rem;
position: relative;
z-index: 1;
}
.testimonials-label {
display: inline-block;
background: linear-gradient(135deg, rgba(218,65,103,0.12) 0%, rgba(237,147,153,0.08) 100%);
color: #da4167;
padding: 0.4rem 1rem;
font-size: 0.8rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 2px;
border-radius: 4px;
margin-bottom: 1rem;
}
.testimonials-header h2 {
font-family: "GothamBook", sans-serif;
font-size: 2.4rem;
font-weight: 700;
color: #1a1a1a;
margin-bottom: 1rem;
}
.testimonials-header h2 span {
color: #398f91;
}
.testimonials-header p {
font-size: 1.1rem;
color: #555;
max-width: 550px;
margin: 0 auto;
}
.testimonials-grid {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 2rem;
margin-bottom: 2.5rem;
position: relative;
z-index: 1;
}
.testimonial-card {
background: #fff;
border-radius: 16px;
padding: 2rem;
box-shadow: 0 10px 40px rgba(0,0,0,0.06);
position: relative;
transition: all 0.3s ease;
}
.testimonial-card:hover {
transform: translateY(-4px);
box-shadow: 0 15px 50px rgba(0,0,0,0.1);
}
.testimonial-card::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
height: 4px;
background: linear-gradient(90deg, #398f91, #71c9c5);
border-radius: 16px 16px 0 0;
}
.testimonial-quote-icon {
position: absolute;
top: 1.5rem;
right: 1.5rem;
font-size: 2.5rem;
color: #398f91;
opacity: 0.12;
font-family: Georgia, serif;
line-height: 1;
}
.testimonial-stars {
display: flex;
gap: 3px;
margin-bottom: 1rem;
}
.testimonial-stars i {
color: #e1be42;
font-size: 0.9rem;
}
.testimonial-card p {
font-size: 1rem;
color: #444;
line-height: 1.75;
margin-bottom: 1.5rem;
font-style: italic;
}
.testimonial-author {
display: flex;
align-items: center;
gap: 1rem;
padding-top: 1rem;
border-top: 1px solid #f0f0f0;
}
.testimonial-author-avatar {
width: 48px;
height: 48px;
border-radius: 50%;
background: linear-gradient(135deg, #398f91 0%, #71c9c5 100%);
display: flex;
align-items: center;
justify-content: center;
color: #fff;
font-weight: 700;
font-size: 1.1rem;
flex-shrink: 0;
}
.testimonial-author-info h4 {
font-family: "GothamBook", sans-serif;
font-size: 1rem;
font-weight: 600;
color: #1a1a1a;
margin: 0 0 0.2rem 0;
}
.testimonial-author-info span {
font-size: 0.85rem;
color: #666;
}
.testimonial-author-info a {
color: #398f91;
text-decoration: none;
font-size: 0.85rem;
transition: color 0.3s ease;
}
.testimonial-author-info a:hover {
color: #2a84a1;
}
.testimonials-cta-wrap {
display: flex;
justify-content: center;
align-items: center;
gap: 1.5rem;
flex-wrap: wrap;
position: relative;
z-index: 1;
}
.testimonials-cta-primary {
display: inline-flex;
align-items: center;
gap: 8px;
background: linear-gradient(135deg, #398f91 0%, #2a84a1 100%);
color: #fff;
padding: 1rem 2rem;
font-size: 1rem;
font-weight: 600;
border-radius: 8px;
text-decoration: none;
border: none;
cursor: pointer;
transition: all 0.3s ease;
box-shadow: 0 4px 15px rgba(57,143,145,0.3);
}
.testimonials-cta-primary:hover {
transform: translateY(-2px);
box-shadow: 0 6px 25px rgba(57,143,145,0.4);
color: #fff;
}
.testimonials-cta-secondary {
display: inline-flex;
align-items: center;
gap: 8px;
color: #398f91;
font-size: 1rem;
font-weight: 600;
text-decoration: none;
transition: all 0.3s ease;
}
.testimonials-cta-secondary:hover {
color: #2a84a1;
}
.testimonials-cta-secondary i {
transition: transform 0.3s ease;
}
.testimonials-cta-secondary:hover i {
transform: translateX(4px);
}
@media (max-width: 991px) {
.testimonials-grid {
grid-template-columns: 1fr;
}
.testimonials-header h2 {
font-size: 2rem;
}
}
@media (max-width: 576px) {
.testimonials-section {
padding: 3.5rem 0;
}
.testimonials-header h2 {
font-size: 1.7rem;
}
.testimonial-card {
padding: 1.5rem;
}
.testimonials-cta-wrap {
flex-direction: column;
gap: 1rem;
}
}
</style>
<section class="testimonials-section">
<div class="container">
<div class="testimonials-header wow fadeIn">
<span class="testimonials-label">Client Success</span>
<h2>Real Results from <span>Real Clients</span></h2>
<p>Don't just take our word for it. Here's what our clients have to say about working with us.</p>
</div>
<div class="testimonials-grid">
<div class="testimonial-card wow fadeInUp" data-wow-delay="0.1s">
<span class="testimonial-quote-icon">"</span>
<div class="testimonial-stars">
<i class="fa fa-star"></i>
<i class="fa fa-star"></i>
<i class="fa fa-star"></i>
<i class="fa fa-star"></i>
<i class="fa fa-star"></i>
</div>
<p>We were hesitant to believe that Perpetual Solution could help us increase our registrations. They redid the website, added online registration, and ran Google Ads. The results have been spectacular. We are so happy we added them to our team.</p>
<div class="testimonial-author">
<div class="testimonial-author-avatar">SJ</div>
<div class="testimonial-author-info">
<h4>Shauna Joyce</h4>
<span>Executive Director</span><br>
<a href="http://www.campamymolson.com/" target="_blank">Camp Amy Molson</a>
</div>
</div>
</div>
<div class="testimonial-card wow fadeInUp" data-wow-delay="0.2s">
<span class="testimonial-quote-icon">"</span>
<div class="testimonial-stars">
<i class="fa fa-star"></i>
<i class="fa fa-star"></i>
<i class="fa fa-star"></i>
<i class="fa fa-star"></i>
<i class="fa fa-star"></i>
</div>
<p>Perpetual Solution created an amazing, beautiful and quality website for my business. They were extremely easy to work with and very timely. I could not be happier with the results. I cannot recommend them enough!</p>
<div class="testimonial-author">
<div class="testimonial-author-avatar">AP</div>
<div class="testimonial-author-info">
<h4>Amanda Prizant</h4>
<span>Owner</span><br>
<a href="https://prizantnutrition.com/" target="_blank">Prizant Nutrition</a>
</div>
</div>
</div>
<div class="testimonial-card wow fadeInUp" data-wow-delay="0.1s">
<span class="testimonial-quote-icon">"</span>
<div class="testimonial-stars">
<i class="fa fa-star"></i>
<i class="fa fa-star"></i>
<i class="fa fa-star"></i>
<i class="fa fa-star"></i>
<i class="fa fa-star"></i>
</div>
<p>What stood out the most was Genevieve's insightful guidance on critical project decisions. She expertly balanced listening to our needs with recommending the best strategies for our business. We couldn't be happier with the final result.</p>
<div class="testimonial-author">
<div class="testimonial-author-avatar">BA</div>
<div class="testimonial-author-info">
<h4>Benjamin Amir</h4>
<span>Owner</span><br>
<a href="https://www.myalphafitness.ca/" target="_blank">Alpha Fitness</a>
</div>
</div>
</div>
<div class="testimonial-card wow fadeInUp" data-wow-delay="0.2s">
<span class="testimonial-quote-icon">"</span>
<div class="testimonial-stars">
<i class="fa fa-star"></i>
<i class="fa fa-star"></i>
<i class="fa fa-star"></i>
<i class="fa fa-star"></i>
<i class="fa fa-star"></i>
</div>
<p>I realized I needed a site as I was trying to close a big deal and my client asked for my website. One hour phone call with the copywriter was all it took. My website was up fast, and for a great price. The experience was so good I recommended them to my associates.</p>
<div class="testimonial-author">
<div class="testimonial-author-avatar">GS</div>
<div class="testimonial-author-info">
<h4>Gary Silverman</h4>
<span>Owner</span><br>
<a href="https://www.gsa-insurance.com/" target="_blank">GSA Insurance</a>
</div>
</div>
</div>
</div>
<div class="testimonials-cta-wrap wow fadeIn">
<button type="button" class="testimonials-cta-primary" data-toggle="modal" data-target=".popup-form">
Start Your Project <i class="fa fa-arrow-right"></i>
</button>
<a href="case-studies.php" class="testimonials-cta-secondary">
Read Case Studies <i class="fa fa-arrow-right"></i>
</a>
</div>
</div>
</section>
<!-- Testimonials Section End -->
</section>
<!-- content end -->
<!-- Footer Mobile Fix -->
<style>
@media (max-width: 767px) {
.footer-wrap .row {
display: flex;
flex-direction: column;
}
.footer-wrap .col-lg-4,
.footer-wrap .col-sm-6,
.footer-wrap .col-sm-12 {
flex: 0 0 100%;
max-width: 100%;
width: 100%;
margin-bottom: 30px;
}
.footer-wrap .freview {
margin-bottom: 0;
}
}
</style>
<!-- footer wrap -->
<footer class="footer-wrap bg-black clearfix">
<div class="footer-top pad pb-5 clearfix">
<div class="container">
<div class="row">
<div class="col-lg-4 col-sm-12">
<h5 class="text-uppercase">Digital solutions </br>built for your success</h5>
<p>Your customers are looking for you—make sure they find something exceptional. We make professional web design and custom software development approachable, scalable, and stress-free. Let’s build something together.</p>
<p class="footer-social-wrap" style="margin-top: 20px;">
<a href="https://www.facebook.com/PerpetualSolution/" target="_blank" aria-label="Facebook" style="display: inline-flex; align-items: center; justify-content: center; width: 50px; height: 50px; background: rgb(47 135 156); border-radius: 50%; margin-right: 12px; text-decoration: none;">
<i class="fa fa-facebook" style="font-size: 22px; color: #fff;"></i>
</a>
<a href="https://www.linkedin.com/company/perpetualsolution/?viewAsMember=true" target="_blank" aria-label="LinkedIn" style="display: inline-flex; align-items: center; justify-content: center; width: 50px; height: 50px; background: rgb(47 135 156); border-radius: 50%; text-decoration: none;">
<i class="fa fa-linkedin" style="font-size: 22px; color: #fff;"></i>
</a>
</p>
</div>
<div class="col-lg-4 col-sm-6">
<h5 class="text-uppercase">Contact</h5>
<address class="address">
<p>
<span><i class="fa fa-phone"> </i><a href="tel:514-319-1013">514.319.1013 </a></span>
</p>
<p>
<span><i class="fa fa-phone"> </i><a href="tel:844-301-9740">844.301.9740</a></span>
</p>
<p>
<span><i class="fa fa-map-marker"> </i>4060 Sainte Catherine West</br>Westmount, QC H3Z 2Z3</span>
</p>
<p>
<span><i class="fa fa-user"> </i><a href="privacy.php">Privacy Policy</a></span>
</p>
</address>
</div>
<div class="col-lg-4 col-sm-6 freview">
<h5 class="text-uppercase">Our Google Reviews</h5>
<div class="google-review-carousel owl-carousel"><div class="romw"><div class="romw-author-photo"><img src="https://lh3.googleusercontent.com/a-/ALV-UjUPOrijUrAxq5A-1gk8TfTdoHzmWOArp0a7O3csCur7P1FIq3K2=s128-c0x00000000-cc-rp-mo-ba6" alt="A Bousi"></div><div class="romw-author-stars"><strong>A Bousi</strong><br><i class="fa fa-star" style="color: #fbbc04;"></i><i class="fa fa-star" style="color: #fbbc04;"></i><i class="fa fa-star" style="color: #fbbc04;"></i><i class="fa fa-star" style="color: #fbbc04;"></i><i class="fa fa-star" style="color: #fbbc04;"></i></div><div class="romw-text">Great website development company. Working with Genevieve was amazing. She answered my many questions and gave great advice. Any time I reached out wi...</div></div><div class="romw"><div class="romw-author-photo"><img src="https://lh3.googleusercontent.com/a-/ALV-UjWWzf7r4IJUNYnqBzOxjpthCFN3VWhumsEunLOwL0Op71oSxomV=s128-c0x00000000-cc-rp-mo" alt="Benjamin Amir"></div><div class="romw-author-stars"><strong>Benjamin Amir</strong><br><i class="fa fa-star" style="color: #fbbc04;"></i><i class="fa fa-star" style="color: #fbbc04;"></i><i class="fa fa-star" style="color: #fbbc04;"></i><i class="fa fa-star" style="color: #fbbc04;"></i><i class="fa fa-star" style="color: #fbbc04;"></i></div><div class="romw-text">Working with Genevieve and her team was an absolute pleasure. Their professionalism was very much appreciated. What stood out the most was Genevieve&#...</div></div><div class="romw"><div class="romw-author-photo"><img src="https://lh3.googleusercontent.com/a/ACg8ocLaV_eDh4VdBwYS2t2F24yqUjY5JV2raJQcX_s7iLqfH3bhFw=s128-c0x00000000-cc-rp-mo" alt="Amanda Prizant"></div><div class="romw-author-stars"><strong>Amanda Prizant</strong><br><i class="fa fa-star" style="color: #fbbc04;"></i><i class="fa fa-star" style="color: #fbbc04;"></i><i class="fa fa-star" style="color: #fbbc04;"></i><i class="fa fa-star" style="color: #fbbc04;"></i><i class="fa fa-star" style="color: #fbbc04;"></i></div><div class="romw-text">Perpetual Solution created an amazing, beautiful and quality website for my business. They were extremely easy to work with, they were efficient in re...</div></div><div class="romw"><div class="romw-author-photo"><img src="https://lh3.googleusercontent.com/a/ACg8ocJbmnwGjI5NiUUB_YELdB12tsgPW3-GlqtJcQC6NYGePMpzBQ=s128-c0x00000000-cc-rp-mo" alt="Annie ChiroNotreDame"></div><div class="romw-author-stars"><strong>Annie ChiroNotreDame</strong><br><i class="fa fa-star" style="color: #fbbc04;"></i><i class="fa fa-star" style="color: #fbbc04;"></i><i class="fa fa-star" style="color: #fbbc04;"></i><i class="fa fa-star" style="color: #fbbc04;"></i><i class="fa fa-star" style="color: #fbbc04;"></i></div><div class="romw-text">I had been thinking about creating a web site for years when Gen approached me. From our first meeting, I knew that I had found the right company to w...</div></div><div class="romw"><div class="romw-author-photo"><img src="https://lh3.googleusercontent.com/a/ACg8ocI5LGiWvOQrY_MyI30T4mpwZTKwM9zDGXcT8AEoGNbfX38NQQ=s128-c0x00000000-cc-rp-mo" alt="Daniel Blenich"></div><div class="romw-author-stars"><strong>Daniel Blenich</strong><br><i class="fa fa-star" style="color: #fbbc04;"></i><i class="fa fa-star" style="color: #fbbc04;"></i><i class="fa fa-star" style="color: #fbbc04;"></i><i class="fa fa-star" style="color: #fbbc04;"></i><i class="fa fa-star" style="color: #fbbc04;"></i></div><div class="romw-text">The best part about Gen and the team at Perpetual Solution is how much they care about your business’s online presence. As a small business owner, y...</div></div></div> <p class="mt-3">
<a href="https://g.page/r/CSm7fLySnxPvEAI/review" target="_blank" class="write-review-btn">
<i class="fa fa-google"></i> Write a Review
</a>
</p>
</div>
</div>
</div>
</div>
<div class="footer-btm clearfix">
<div class="container">
<div class="copyright text-center">
<p>©
<a href="http://www.perpetualsolution.com/">
Perpetual Solution
</a>
2026
</p>
</div>
</div>
</div>
</footer>
<div class="modal fade popup-form" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<!-- Header -->
<div style="background:linear-gradient(135deg,#398f91,#2a84a1); color:#fff; padding:24px 30px; border-radius:4px 4px 0 0; position:relative;">
<h5 style="margin:0 0 4px; font-size:1.4rem; font-weight:700; color:#fff;">Schedule Your Free Consultation</h5>
<p style="margin:0; opacity:0.9; font-size:0.9rem;">We'll reach out within 1 business day</p>
<button type="button" class="close" data-dismiss="modal" aria-label="Close"
style="position:absolute; top:12px; right:16px; color:#fff; opacity:0.8; font-size:24px; text-shadow:none;">
<span aria-hidden="true">×</span>
</button>
</div>
<!-- Form -->
<div class="modal-body" style="padding:0;">
<form id="footerConsultForm" style="padding:24px 30px 28px;">
<div style="position:absolute;left:-9999px;opacity:0;height:0;overflow:hidden;" aria-hidden="true">
<label for="fc-website-url">Website</label>
<input type="text" id="fc-website-url" name="website_url" tabindex="-1" autocomplete="off">
</div>
<!-- Contact info -->
<div style="display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-bottom:12px;">
<div>
<label style="display:block; margin-bottom:4px; font-weight:600; font-size:0.85rem; color:#333;">First Name *</label>
<input type="text" name="firstName" required style="width:100%; padding:10px 12px; border:1px solid #dee2e6; border-radius:6px; font-size:0.95rem; box-sizing:border-box;">
</div>
<div>
<label style="display:block; margin-bottom:4px; font-weight:600; font-size:0.85rem; color:#333;">Last Name *</label>
<input type="text" name="lastName" required style="width:100%; padding:10px 12px; border:1px solid #dee2e6; border-radius:6px; font-size:0.95rem; box-sizing:border-box;">
</div>
<div>
<label style="display:block; margin-bottom:4px; font-weight:600; font-size:0.85rem; color:#333;">Email *</label>
<input type="email" name="email" required style="width:100%; padding:10px 12px; border:1px solid #dee2e6; border-radius:6px; font-size:0.95rem; box-sizing:border-box;">
</div>
<div>
<label style="display:block; margin-bottom:4px; font-weight:600; font-size:0.85rem; color:#333;">Phone *</label>
<input type="tel" name="phone" required placeholder="(514) 555-1234" style="width:100%; padding:10px 12px; border:1px solid #dee2e6; border-radius:6px; font-size:0.95rem; box-sizing:border-box;">
</div>
</div>
<div style="margin-bottom:16px;">
<label style="display:block; margin-bottom:4px; font-weight:600; font-size:0.85rem; color:#333;">Company Name *</label>
<input type="text" name="company" required style="width:100%; padding:10px 12px; border:1px solid #dee2e6; border-radius:6px; font-size:0.95rem; box-sizing:border-box;">
</div>
<hr style="border:none; border-top:1px solid #e9ecef; margin:18px 0;">
<!-- What are you looking for? -->
<div style="margin-bottom:16px;">
<label style="display:block; margin-bottom:6px; font-weight:600; font-size:0.9rem; color:#333;">What are you looking for? *</label>
<div style="display:flex; gap:12px;">
<label style="flex:1; display:flex; align-items:center; gap:8px; padding:12px 14px; border:2px solid #dee2e6; border-radius:8px; cursor:pointer; transition:border-color 0.2s; font-size:0.9rem;">
<input type="radio" name="fcServiceType" value="website" required style="accent-color:#398f91;" onchange="fcServiceChange()"> A Website
</label>
<label style="flex:1; display:flex; align-items:center; gap:8px; padding:12px 14px; border:2px solid #dee2e6; border-radius:8px; cursor:pointer; transition:border-color 0.2s; font-size:0.9rem;">
<input type="radio" name="fcServiceType" value="dataflow" style="accent-color:#398f91;" onchange="fcServiceChange()"> Data Flow Software
</label>
</div>
</div>
<!-- Website follow-up: new or existing? -->
<div id="fcWebsiteQ" style="display:none; margin-bottom:16px;">
<label style="display:block; margin-bottom:6px; font-weight:600; font-size:0.9rem; color:#333;">Is this a new website?</label>
<div style="display:flex; gap:12px;">
<label style="flex:1; display:flex; align-items:center; gap:8px; padding:10px 14px; border:2px solid #dee2e6; border-radius:8px; cursor:pointer; font-size:0.9rem;">
<input type="radio" name="fcNewWebsite" value="yes" style="accent-color:#398f91;" onchange="fcNewSiteChange()"> Yes, brand new
</label>
<label style="flex:1; display:flex; align-items:center; gap:8px; padding:10px 14px; border:2px solid #dee2e6; border-radius:8px; cursor:pointer; font-size:0.9rem;">
<input type="radio" name="fcNewWebsite" value="no" style="accent-color:#398f91;" onchange="fcNewSiteChange()"> No, I have one
</label>
</div>
</div>
<!-- Existing website URL -->
<div id="fcExistingUrl" style="display:none; margin-bottom:16px;">
<label style="display:block; margin-bottom:4px; font-weight:600; font-size:0.85rem; color:#333;">What is your current website address?</label>
<input type="url" name="currentWebsite" placeholder="https://www.example.com" style="width:100%; padding:10px 12px; border:1px solid #dee2e6; border-radius:6px; font-size:0.95rem; box-sizing:border-box;">
</div>
<hr style="border:none; border-top:1px solid #e9ecef; margin:18px 0;">
<!-- Best time to call -->
<div style="margin-bottom:16px;">
<label style="display:block; margin-bottom:4px; font-weight:600; font-size:0.9rem; color:#333;">When would be a good time to call you? *</label>
<select name="callTime" required style="width:100%; padding:10px 12px; border:1px solid #dee2e6; border-radius:6px; font-size:0.95rem; background:#fff; box-sizing:border-box;">
<option value="">Select a time...</option>
<option value="Morning (9am - 12pm)">Morning (9am - 12pm)</option>
<option value="Afternoon (12pm - 3pm)">Afternoon (12pm - 3pm)</option>
<option value="Late Afternoon (3pm - 5pm)">Late Afternoon (3pm - 5pm)</option>
<option value="Evening (after 5pm)">Evening (after 5pm)</option>
<option value="Anytime">Anytime works</option>
</select>
</div>
<!-- Additional info -->
<div style="margin-bottom:20px;">
<label style="display:block; margin-bottom:4px; font-weight:600; font-size:0.9rem; color:#333;">Anything else you'd like to share before the call?</label>
<textarea name="additionalInfo" rows="3" placeholder="Project details, timeline, budget, questions..."
style="width:100%; padding:10px 12px; border:1px solid #dee2e6; border-radius:6px; font-size:0.95rem; box-sizing:border-box; resize:vertical;"></textarea>
</div>
<!-- Submit -->
<button type="submit" id="footerConsultBtn"
style="width:100%; padding:14px; background:linear-gradient(135deg,#398f91,#2a84a1); color:#fff; border:none; border-radius:6px; font-size:1.05rem; font-weight:600; cursor:pointer; text-transform:uppercase; transition:all 0.3s;">
Schedule My Consultation
</button>
<p id="footerConsultMsg" style="text-align:center; margin-top:10px; font-size:0.9rem; display:none;"></p>
</form>
</div>
</div>
</div>
</div>
<style>
#footerConsultBtn:hover { background:#343a40 !important; transform:translateY(-2px); box-shadow:0 4px 12px rgba(57,143,145,0.3); }
#footerConsultBtn:disabled { background:#ccc !important; cursor:not-allowed !important; transform:none !important; }
#footerConsultForm label:has(input[type="radio"]:checked) { border-color:#398f91 !important; background:#f0fafa; }
</style>
<script>
function fcServiceChange() {
var val = document.querySelector('input[name="fcServiceType"]:checked').value;
document.getElementById('fcWebsiteQ').style.display = val === 'website' ? 'block' : 'none';
if (val !== 'website') {
document.getElementById('fcExistingUrl').style.display = 'none';
var radios = document.querySelectorAll('input[name="fcNewWebsite"]');
radios.forEach(function(r) { r.checked = false; });
}
}
function fcNewSiteChange() {
var val = document.querySelector('input[name="fcNewWebsite"]:checked').value;
document.getElementById('fcExistingUrl').style.display = val === 'no' ? 'block' : 'none';
}
document.addEventListener('DOMContentLoaded', function() {
var form = document.getElementById('footerConsultForm');
if (!form) return;
form.addEventListener('submit', function(e) {
e.preventDefault();
var btn = document.getElementById('footerConsultBtn');
var msg = document.getElementById('footerConsultMsg');
btn.disabled = true;
btn.textContent = 'Submitting...';
msg.style.display = 'none';
var serviceType = document.querySelector('input[name="fcServiceType"]:checked');
var newWebsite = document.querySelector('input[name="fcNewWebsite"]:checked');
var currentWebsite = form.currentWebsite ? form.currentWebsite.value : '';
var details = 'Service: ' + (serviceType ? serviceType.value : 'not specified');
if (serviceType && serviceType.value === 'website') {
details += ' | New website: ' + (newWebsite ? newWebsite.value : 'not specified');
if (newWebsite && newWebsite.value === 'no' && currentWebsite) {
details += ' | Current site: ' + currentWebsite;
}
}
details += ' | Best time to call: ' + form.callTime.value;
if (form.additionalInfo.value.trim()) {
details += ' | Notes: ' + form.additionalInfo.value.trim();
}
var fd = {
firstname: form.firstName.value,
lastname: form.lastName.value,
email: form.email.value,
phone: form.phone.value,
company: form.company.value,
message: details,
source: 'Consultation Modal',
website_url: document.getElementById('fc-website-url').value
};
fetch('/form-handler.php', {
method: 'POST',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
body: new URLSearchParams(fd).toString()
})
.then(function(r) { return r.json(); })
.then(function(data) {
if (data.success) {
msg.style.color = '#28a745';
msg.textContent = 'Thank you! We\'ll be in touch within 1 business day.';
msg.style.display = 'block';
form.reset();
document.getElementById('fcWebsiteQ').style.display = 'none';
document.getElementById('fcExistingUrl').style.display = 'none';
setTimeout(function() {
jQuery('.popup-form').modal('hide');
msg.style.display = 'none';
}, 3000);
} else {
msg.style.color = '#dc3545';
msg.textContent = data.message || 'Something went wrong. Please try again.';
msg.style.display = 'block';
}
btn.disabled = false;
btn.textContent = 'Schedule My Consultation';
})
.catch(function() {
msg.style.color = '#dc3545';
msg.textContent = 'An error occurred. Please try again.';
msg.style.display = 'block';
btn.disabled = false;
btn.textContent = 'Schedule My Consultation';
});
});
});
</script>
<div class="modal fade phone-popup" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel1" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Call To Discuss Your Project</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<h2><i class="fa fa-phone"></i> 514.319.1013</h2>
<h2><i class="fa fa-phone"></i> 844.301.9740</h2>
</div>
</div>
</div>
</div>
</div> <!-- /.wrapper end -->
<!-- Page structure end
================================================== -->
<!-- core JavaScript - Optimized loading
================================================== -->
<!-- Core JS - loaded synchronously for navigation functionality -->
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.6/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js"></script>
<!-- Defer non-critical JS -->
<script src="dist/js/vertical_carousel.js" defer></script>
<script src="dist/js/custom.js" defer></script>
<script src="dist/js/contact_form.js" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/AlertifyJS/1.11.1/alertify.min.js" defer></script>
<!-- Load Owl Carousel only if carousels exist on page -->
<script>
document.addEventListener('DOMContentLoaded', function() {
if (document.querySelector('.owl-carousel')) {
var s = document.createElement('script');
s.src = 'dist/js/owl.carousel.min.js';
s.onload = function() {
// Initialize carousels after loading
if (typeof jQuery !== 'undefined' && jQuery.fn.owlCarousel) {
// Google review carousel - show 1 item
jQuery('.google-review-carousel').owlCarousel({
loop: true,
items: 1,
margin: 10,
nav: false,
dots: false,
autoplay: true,
autoplayTimeout: 4000
});
// Other carousels with default settings
jQuery('.owl-carousel').not('.google-review-carousel').each(function() {
var $this = jQuery(this);
if (!$this.hasClass('owl-loaded')) {
$this.owlCarousel($this.data());
}
});
}
};
document.body.appendChild(s);
}
});
</script>
<!-- WOW.js - load only on desktop for animations -->
<script>
document.addEventListener('DOMContentLoaded', function() {
// Only load and initialize WOW.js on desktop (screens > 992px)
if (window.innerWidth > 992) {
var s = document.createElement('script');
s.src = 'dist/js/wow.min.js';
s.onload = function() {
var wow = new WOW({
animateClass: 'animated',
offset: 100,
mobile: false
});
wow.init();
};
document.body.appendChild(s);
} else {
// On mobile, make all elements visible immediately
document.querySelectorAll('.wow').forEach(function(el) {
el.style.visibility = 'visible';
el.style.opacity = '1';
});
}
});
</script>
</body>
</html><script>
// Client-side geolocation - deferred until after page is fully loaded
(function() {
if (sessionStorage.getItem('geoChecked')) return;
function checkGeo() {
sessionStorage.setItem('geoChecked', '1');
fetch('https://ip-api.com/json/?fields=status,countryCode,regionName')
.then(function(r) { return r.json(); })
.then(function(d) {
if (d.status === 'success' && d.countryCode === 'CA' &&
d.regionName && d.regionName.toLowerCase() === 'quebec') {
window.location.href = '/fr/';
}
})
.catch(function() {});
}
// Run after page is idle, not during critical rendering
if ('requestIdleCallback' in window) {
requestIdleCallback(checkGeo, {timeout: 3000});
} else {
setTimeout(checkGeo, 2000);
}
})();
</script>
Sitemap
Кол-во: 0
XML-карта сайта для поисковиков
?
Sitemap.xml помогает поисковику быстрее находить и индексировать страницы. Особенно важен для крупных сайтов и новых страниц, на которые ещё нет входящих ссылок.
Robots.txt не содержит ссылку на карту сайта. Рекомендуется добавить карту сайта и указать ссылку на нее в robots.txt.
Внутренние ссылки
Кол-во: 34
Ссылки на другие страницы своего сайта
?
Внутренние ссылки распределяют ссылочный вес между страницами и помогают поисковику обходить сайт. Пустые анкоры и ссылки на запрещённые robots.txt страницы — типичные ошибки.
Внутренних ссылок на странице 34 оптимально.
Внутренние ссылки не запрещены к индексации в robots.txt.
На странице присутствуют изображения 9.
Показать внутренние ссылки
| Url | Анкор | Состояние | Анализировать |
|---|---|---|---|
| /index.php |
Home
|
|
Анализировать url |
| /about.php |
About Us
|
|
Анализировать url |
| /events.php |
News & Events
|
|
Анализировать url |
| /careers.php |
Careers
|
|
Анализировать url |
| /services.php |
Websites
|
|
Анализировать url |
| /online_application_form_system.php |
Loan Origination Software
|
|
Анализировать url |
| /ecommerce-website-design.php |
eCommerce
|
|
Анализировать url |
| /website-maintenance-support.php |
Maintenance and Support
|
|
Анализировать url |
| /copywriting-translation-services.php |
Copywriting & Translation
|
|
Анализировать url |
| /ux-design-services.php |
UX Design
|
|
Анализировать url |
| /google-ads-services.php |
Google Ads
|
|
Анализировать url |
| /business-phone-system.php |
VoIP Cloud Phone System
|
|
Анализировать url |
| /home-phone-service.php |
VoIP Home Phone
|
|
Анализировать url |
| /pricing.php |
Website Pricing
|
|
Анализировать url |
| /portfolio.php |
Portfolio
|
|
Анализировать url |
| /case-studies.php |
Case Studies
|
|
Анализировать url |
| /contact.php |
CONTACT
|
|
Анализировать url |
| /fr/index.php |
FR
|
|
Анализировать url |
| /portfolio.php |
View Our Work <i class="fa fa-arrow-right"></i>
|
|
Анализировать url |
| /online_application_form_system.php |
Learn More <i class="fa fa-arrow-right"></i>
|
|
Анализировать url |
| /case-studies.php |
Read Case Studies <i class="fa fa-arrow-right"></i>
|
|
Анализировать url |
| /about.php |
Learn More <i class="fa fa-arrow-right"></i>
|
|
Анализировать url |
| /portfolio.php |
View Full Portfolio <i class="fa fa-arrow-right"></i>
|
|
Анализировать url |
| /feature-copywriter.php |
<div class="service-icon teal">
<i class="fa fa-pencil"></i>
</div>
<h3>Content Writing</h3>
<p>Professional copywriting for your website, blog posts, and marketing materials that engage your audience.</p>
<span class="service-card-link">Learn more <i class="fa fa-arrow-right"></i></span>
|
|
Анализировать url |
| /feature-translation.php |
<div class="service-icon blue">
<i class="fa fa-language"></i>
</div>
<h3>Translation</h3>
<p>Accurate translations that preserve meaning and cultural nuances for your bilingual audience.</p>
<span class="service-card-link">Learn more <i class="fa fa-arrow-right"></i></span>
|
|
Анализировать url |
| /online_application_form_system.php |
<div class="service-icon gold">
<i class="fa fa-tasks"></i>
</div>
<h3>Application Software</h3>
<p>Custom portals for grants, scholarships, and loans with applicant tracking and committee review dashboards.</p>
<span class="service-card-link">Learn more <i class="fa fa-arrow-right"></i></span>
|
|
Анализировать url |
| /feature-google.php |
<div class="service-icon pink">
<i class="fa fa-google"></i>
</div>
<h3>Google Ads</h3>
<p>Google-certified advertising that reaches your target audience and delivers measurable ROI.</p>
<span class="service-card-link">Learn more <i class="fa fa-arrow-right"></i></span>
|
|
Анализировать url |
| /feature-intelligent.php |
<div class="service-icon teal">
<i class="fa fa-phone"></i>
</div>
<h3>Business Phone System</h3>
<p>Intelligent VoIP with call forwarding, voicemail transcription, and professional auto-attendant.</p>
<span class="service-card-link">Learn more <i class="fa fa-arrow-right"></i></span>
|
|
Анализировать url |
| /feature-graphic.php |
<div class="service-icon blue">
<i class="fa fa-object-group"></i>
</div>
<h3>UX Design</h3>
<p>User-focused design that makes your website intuitive, engaging, and easy to navigate.</p>
<span class="service-card-link">Learn more <i class="fa fa-arrow-right"></i></span>
|
|
Анализировать url |
| /feature-maintenance.php |
View All Services <i class="fa fa-arrow-right"></i>
|
|
Анализировать url |
| /case-studies.php |
Read Case Studies <i class="fa fa-arrow-right"></i>
|
|
Анализировать url |
| /tel:514-319-1013 |
514.319.1013
|
|
|
| /tel:844-301-9740 |
844.301.9740
|
|
|
| /privacy.php |
Privacy Policy
|
|
Анализировать url |
Внешние ссылки
Кол-во: 9
Ссылки на сторонние сайты
?
Исходящие внешние ссылки передают часть ссылочного веса на чужие сайты. Ссылки на авторитетные ресурсы безопасны; ссылки на мусорные сайты могут навредить репутации страницы.
Внешних ссылок на странице 9 слишком много. Спрячьте лишние ссылки в тег noindex или атрибут rel='nofollow'!
Показать внешние ссылки
| Url | Анкор | Анализировать |
|---|---|---|
| portal.perpetualsolution.com |
<i class="fa fa-user-circle" style="margin-right:4px;"></i>Portal
|
Анализировать url |
| campamymolson.com |
Camp Amy Molson
|
Анализировать url |
| prizantnutrition.com |
Prizant Nutrition
|
Анализировать url |
| myalphafitness.ca |
Alpha Fitness
|
Анализировать url |
| gsa-insurance.com |
GSA Insurance
|
Анализировать url |
| facebook.com |
<i class="fa fa-facebook" style="font-size: 22px; color: #fff;"></i>
|
|
| linkedin.com |
<i class="fa fa-linkedin" style="font-size: 22px; color: #fff;"></i>
|
Анализировать url |
| g.page |
<i class="fa fa-google"></i> Write a Review
|
Анализировать url |
| perpetualsolution.com |
Perpetual Solution
|
Анализировать url |
Конкуренты Готовность: 0%
Конкуренты в Яндексе
Кол-во: 0
Топ сайтов-конкурентов в Яндексе
?
Сайты, чаще всего появляющиеся в ТОПе Яндекса по запросам из семантического ядра этой страницы.
Мы не нашли у вас конкурентов в Яндексе. Сайт или очень молодой или плохо продвигается.
Конкурентов в ТОП-10 Яндекса не нашлось.
Конкуренты в Google
Кол-во: 0
Топ сайтов-конкурентов в Google
?
Сайты, чаще всего появляющиеся в ТОПе Google по запросам из семантического ядра этой страницы.
Конкуренты в Google тоже не найдены. Займитесь продвижением сайта!
Конкурентов в ТОП-10 Google не нашлось.
ЗоЗПП: права потребителей Готовность: 100%
Нарушения
Не выявлены
Признаков дистанционной продажи товаров (интернет-магазина) не обнаружено — требования ЗоЗПП о раскрытии информации продавца к сайту не применяются. Нарушений нет.
ФЗ-149: рекомендательные технологии Готовность: 100%
Нарушения
Не выявлены
Рекомендательные блоки («с этим покупают», «похожие товары» и т.п.) на сайте не обнаружены — требования ст. 10.7 ФЗ-149 к сайту не применяются. Нарушений нет.
ФЗ-38: реклама Готовность: 100%
Нарушения
Не выявлены
Рекламных тематик с обязательными оговорками (медицина, БАД, кредиты и займы, новостройки) на сайте не обнаружено. Нарушений нет.
ФЗ-436: защита детей Готовность: 100%
Нарушения
Не выявлены
Признаков информационной продукции (новости, видео, книги, игры, курсы) не обнаружено — обязательная возрастная маркировка по ФЗ-436 сайту не требуется. Нарушений нет.
Вердикт
Сайт ps-web.com не совсем готов к продвижению (процент готовности лишь 48%). Для попадания в ТОПы поисковых систем нужно:
Исправьте ошибки в мета-тегах.
Исправьте ошибки оптимизации.
Исправьте ошибки индексации.
Поделитесь с друзьями: