Анализ сайта paverlayer.com
Основное Готовность: 100%
Домен
paverlayer.com
Состояние доменного имени
?
Проверяем корректность доменного имени и наличие технических проблем на уровне домена.
Домен второго уровня идеален для продвижения.
Отличный запоминающийся домен.
Ответ сервера
200 Успешный ответ
HTTP-код ответа и цепочка редиректов
?
Код 200 — страница доступна. Коды 3xx — редиректы (цепочки замедляют загрузку и размывают ссылочный вес). Коды 4xx/5xx — ошибки, поисковик не сможет проиндексировать страницу.
Сервер настроен корректно.
Цепочка редиректов:
http://paverlayer.com
301 MovedPermanently
https://florastonestudio.com/
200 OK
Безопасность
Сайт безопасен
Использование HTTPS и SSL-сертификат
?
HTTPS — обязательный стандарт. Google и Яндекс отдают предпочтение защищённым сайтам. Отсутствие SSL или просроченный сертификат ведут к предупреждениям в браузере и снижению позиций.
На сайте работает защищенный протокол ssl и сайт открывается по https.
Ssl-сертификат действителен до 04.10.2026 22:45:22.
Сервер поддерживает HTTP/3 (QUIC) — новейший протокол.
Включён HSTS (Strict-Transport-Security) — защита от подмены на http.
HTTP автоматически перенаправляется на HTTPS.
Поздравляем! Сайт не содержится в реестре РКН.
Кодировка
UTF-8
Кодировка символов страницы
?
Стандарт — UTF-8. Неправильная кодировка вызывает нечитаемые символы и мешает поисковику корректно распознать текст страницы.
Указана кодировка на странице UTF-8.
Язык
en
Атрибут lang в HTML-теге
?
Атрибут lang (<html lang="ru">) сообщает поисковикам и браузерам, на каком языке написана страница. Помогает при ранжировании в региональном поиске.
Язык документа указан явно: en.
Скорость загрузки
~0,87сек
Время отклика сервера (TTFB)
?
Time To First Byte — время до получения первого байта от сервера. Норма до 200 мс. Медленный отклик ухудшает пользовательский опыт и ранжирование: Яндекс и Google учитывают скорость страниц.
Скорость загрузки сайта 0,87сек оптимальна.
Объем документа
37Кб
Размер HTML-кода страницы
?
Слишком большой HTML замедляет парсинг браузером и сканирование поисковым роботом. Рекомендуется не более 200 Кб.
Объем html-документа 37Кб оптимален.
Структура html-документа корректна.
Ресурсы
Ресурсы: 2
Внешние ресурсы страницы (CSS, JS, изображения)
?
Количество и тип подключённых ресурсов влияют на скорость загрузки. Большое число запросов увеличивает время рендеринга страницы.
Кол-во файлов ресурсов 2 достаточно.
Показать полный список ресурсов
| Тип | Название | Значение |
|---|---|---|
| stylesheet | /assets/index-DwG-mORo.css | |
| js | module | /assets/index-Bng_WP48.js |
Серверные заголовки
Кол-во: 9
HTTP-заголовки ответа сервера
?
Заголовки сервера передают браузеру и поисковику служебную информацию: кеширование, безопасность (CSP, HSTS), сжатие (gzip). Правильная настройка ускоряет загрузку и повышает защищённость.
Найдены серверные заголовки 9шт. Подробнее про серверные заголовки.
Показать полный список серверных заголовков
| Ключ | Значение |
|---|---|
| Cache-Control | no-cache |
| Date | Sun, 23 Aug 2026 20:43:33 GMT |
| Server | |
| Set-Cookie | GAESA=CpwBMDBhNDFlOGMxZGU4ZjYxOTc4M2Q2OTMwYWE2ZTc5M2M0NmM2OGZiMWRjM2I1NDc5MzYyMDcwZjVlZjM3ODdlZmRlOGQzZGY0N2NmNmM4ZDQzMWEyMTA0ZGU4MzE4OWIxYzcxNDY5MjAyMzA0NzRlMWQ5ZmQ2NGYzZmI1NjhiODJhMmE2MjAwMTBhZWYwOTU0NWJhODE0Mjg1YzU4EK-D9YKDNA; expires=Tue, 22-Sep-2026 20:43:33 GMT; path=/ |
| Strict-Transport-Security | max-age=63072000; includeSubDomains |
| Vary | Accept-Encoding |
| X-Content-Type-Options | nosniff |
| Via | 1.1 google |
| Alt-Svc | h3=":443"; ma=2592000 |
CMS
Не определена
Система управления сайтом (движок)
?
CMS — это движок, на котором работает сайт (WordPress, 1C-Bitrix, Tilda и др.). Знание CMS помогает понять возможности SEO-оптимизации и подобрать подходящие инструменты. «Не определена» — вероятно, самописный сайт или нестандартная сборка.
CMS не определена. Вероятно, сайт самописный либо движок надёжно скрыт. Это не ошибка.
Веб-сервер
Google
Программное обеспечение сервера
?
Веб-сервер — это ПО, которое отдаёт страницы посетителям (nginx, Apache, IIS, LiteSpeed и др.). Определяется по серверным заголовкам ответа (Server, X-Powered-By и т.п.). «Не определён» — сервер намеренно скрывает эти заголовки, это нормальная практика безопасности.
В заголовке Server указано: Google.
Мета-теги Готовность: 23%
Title
Paver Patios, Retaining Walls & Outdoor Design | FloraStone
Заголовок страницы в браузере и поисковой выдаче
?
Title — главный SEO-заголовок страницы. Влияет на CTR в поиске и ранжирование. Оптимальная длина: 50–70 символов. Ключевые слова — ближе к началу.
Необходимо уменьшить число символов в title (текущее значение: 63, оптимально: от 40 до 45)
Дублей словоформ в title не найдено.
Description
FloraStone Studio designs paver patios, retaining walls, and complete outdoor living spaces in 3D before anything is built. Photorealistic landscape design serving Ridgefield, Vancouver, Camas & the Portland metro with 25 years experience
Описание страницы в поисковой выдаче (сниппет)
?
Meta Description — текст под заголовком в выдаче. Напрямую на позиции не влияет, но влияет на CTR. Оптимальная длина: 120–160 символов.
Необходимо уменьшить число символов в description (текущее значение: 238, оптимально: от 120 до 130)
Keywords
Список ключевых слов страницы (устаревший тег)
?
Meta Keywords не учитывается Яндексом и Google для ранжирования с 2009–2012 годов. Заполнение не обязательно, но не вредит. Конкурент может использовать содержимое для анализа.
Установите мета-тег keywords!
Канонический Url
https://florastonestudio.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
Настройка масштабирования на мобильных устройствах
?
Тег viewport (<meta name="viewport">) сообщает браузеру, как масштабировать страницу на мобильных. Стандарт: width=device-width, initial-scale=1. Отсутствие — признак отсутствия мобильной версии.
Meta-тег viewport со значением-константой width=device-width задаёт ширину страницы в соответствии с размером экрана.
Meta-тег viewport со значением initial-scale=1.0 определяет масштаб 1:1, т.е. «не масштабировать».
Разметка OpenGraph
Кол-во: 9
Мета-теги для красивых превью в соцсетях
?
OpenGraph (og:title, og:description, og:image) управляет тем, как страница выглядит при репосте в социальных сетях и мессенджерах. Отсутствие OG-тегов — невзрачный превью при шеринге.
Разметка OpenGraph задана. Страница оптимизирована под социальные сети.
Показать полный список og мета-тегов
| Тип | Значение |
|---|---|
| og:type | website |
| og:url | https://florastonestudio.com/ |
| og:title | Paver Patios, Retaining Walls & Outdoor Design | FloraStone |
| og:description | FloraStone Studio designs paver patios, retaining walls, and complete outdoor living spaces in 3D before anything is built. Photorealistic landscape design serving Ridgefield, Vancouver, Camas & the Portland metro with 25 years experience |
| og:image | https://florastonestudio.com/og-image.jpg |
| og:image:width | 1200 |
| og:image:height | 630 |
| og:image:type | image/jpeg |
| og:image:alt | FloraStone Studio — paver patio & outdoor living design in the Pacific Northwest |
Все мета-теги
Кол-во: 18
Полный список мета-тегов страницы
?
Таблица всех meta-тегов, включая нестандартные. Позволяет найти опечатки, дубли и лишние теги.
Найдены мета-теги 18шт. Мета-теги не видимы для человека и предназначены для обмена информацией между веб-страницей и поисковыми системами, браузерами и другими веб-службами. С ними роботы 🤖 и устройства ведут себя более ожидаемо.
Показать полный список мета-тегов
| Тип | Название | Значение |
|---|---|---|
| name | viewport | width=device-width, initial-scale=1.0 |
| name | description | FloraStone Studio designs paver patios, retaining walls, and complete outdoor living spaces in 3D before anything is built. Photorealistic landscape design serving Ridgefield, Vancouver, Camas & the Portland metro with 25 years experience |
| name | robots | index, follow |
| name | theme-color | #304136 |
| property | og:type | website |
| property | og:url | https://florastonestudio.com/ |
| property | og:title | Paver Patios, Retaining Walls & Outdoor Design | FloraStone |
| property | og:description | FloraStone Studio designs paver patios, retaining walls, and complete outdoor living spaces in 3D before anything is built. Photorealistic landscape design serving Ridgefield, Vancouver, Camas & the Portland metro with 25 years experience |
| property | og:image | https://florastonestudio.com/og-image.jpg |
| property | og:image:width | 1200 |
| property | og:image:height | 630 |
| property | og:image:type | image/jpeg |
| property | og:image:alt | FloraStone Studio — paver patio & outdoor living design in the Pacific Northwest |
| property | twitter:card | summary_large_image |
| property | twitter:title | Paver Patios, Retaining Walls & Outdoor Design | FloraStone |
| property | twitter:description | FloraStone Studio designs paver patios, retaining walls, and complete outdoor living spaces in 3D before anything is built. Photorealistic landscape design serving Ridgefield, Vancouver, Camas & the Portland metro with 25 years experience |
| property | twitter:image | https://florastonestudio.com/og-image.jpg |
| property | twitter:image:alt | FloraStone Studio — paver patio & outdoor living design in the Pacific Northwest |
Оптимизация Готовность: 65%
Структура
Ошибок нет
Семантические HTML-элементы страницы
?
Проверяет наличие основных структурных элементов: nav, header, footer, main. Корректная семантическая структура помогает поисковику понять архитектуру страницы.
Структура документа корректна (теги <html> и <body> присутствуют в единственном экземпляре).
Контент
Есть ошибки
Объём и качество текстового содержимого
?
Анализирует объём полезного текста на странице. Слишком мало — страница может считаться малополезной. Слишком много — ухудшается читаемость и восприятие.
Абзацев с текстом 1 слишком мало. Добавьте больше абзацев с текстом (тег <p>)!
Кол-во знаков контента 238 слишком мало. Добавьте больше текста!
Кол-во слов 36 слишком мало. Добавьте больше текста (минимум 400 слов)!
Слова из title 5 встречаются в тексте достаточно.
Среднее число слов в абзаце 16 достаточно.
Заголовки
Ошибок нет
Иерархия заголовков H1–H6
?
H1 должен быть один и содержать ключевой запрос. H2–H6 описывают подразделы. Пропуск уровней (H1 → H3) и несколько H1 — типичные ошибки, снижающие понятность страницы для поисковика.
На странице присутствуют заголовки <h1> 1. Это прекрасно.
Тошнота
1,41
Насколько одно слово доминирует в тексте
?
Классическая тошнота = √(частота самого повторяющегося слова). Норма до 7–8: текст воспринимается естественно. Выше — поисковик может счесть страницу переспамленной.
Тошнота страницы в пределах нормы 3.
Академич. тошнота
25,00%
Насколько текст перенасыщен ключевыми словами
?
Академическая тошнота = (частота слова / общее количество слов) × 100%. Показывает долю конкретного слова в тексте. Норма 5–15%.
Академическая тошнота превышает норму 5-15%. Измените текст страницы!
Семантическое ядро
18
Наиболее часто встречающиеся слова на странице
?
Топ слов по частоте использования. Показывает, какие слова доминируют в тексте с точки зрения поисковика.
Контент страницы содержит осмысленный текст и слова.
Показать список слов
| Слово | Кол-во | Частота |
|---|---|---|
| design | 2 | 5,56% |
| pacific | 1 | 2,78% |
| northwest | 1 | 2,78% |
| studio | 1 | 2,78% |
| backyard | 1 | 2,78% |
| reimagined | 1 | 2,78% |
| natural | 1 | 2,78% |
| memories | 1 | 2,78% |
| custom | 1 | 2,78% |
| patios | 1 | 2,78% |
| retaining | 1 | 2,78% |
| outdoor | 1 | 2,78% |
| living | 1 | 2,78% |
| spaces | 1 | 2,78% |
| designed | 1 | 2,78% |
| before | 1 | 2,78% |
| explore | 1 | 2,78% |
| portfolio | 1 | 2,78% |
Индексация Готовность: 60%
Индексирование
Есть ошибки
Разрешено ли индексирование страницы
?
Проверяет, не закрыта ли страница от индексации через robots.txt, meta robots или X-Robots-Tag. Страница, закрытая от индексации, не появится в поисковой выдаче.
Анкоров на странице 2 слишком мало или они запрещены к индексации. Добавьте новые страницы на сайт и расставьте ссылки на них на главной странице и в файле robots.txt.
Robots.txt
Найден корректный robots.txt
Файл управления сканированием сайта роботами
?
Robots.txt указывает поисковым роботам, какие страницы сканировать, а какие — нет. Ошибки в файле могут случайно закрыть важные разделы от индексации.
Robots.txt настроен корректно. Размер файла: 38243 байт. Загружен за: 1сек.
Проверяемая страница не запрещена в robots.txt.
Robots.txt доступен по постоянному адресу
Цепочка редиректов для файла robots.txt:
http://paverlayer.com/robots.txt
301 MovedPermanently
https://florastonestudio.com/
200 OK
Показать содержимое robots.txt
<!DOCTYPE html>
<html lang="en" data-beasties-container>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Paver Patios, Retaining Walls & Outdoor Design | FloraStone</title>
<meta name="description" content="FloraStone Studio designs paver patios, retaining walls, and complete outdoor living spaces in 3D before anything is built. Photorealistic landscape design serving Ridgefield, Vancouver, Camas & the Portland metro with 25 years experience">
<meta name="robots" content="index, follow">
<link rel="canonical" href="https://florastonestudio.com/">
<!-- Open Graph / Facebook -->
<meta property="og:type" content="website">
<meta property="og:url" content="https://florastonestudio.com/">
<meta property="og:title" content="Paver Patios, Retaining Walls & Outdoor Design | FloraStone">
<meta property="og:description" content="FloraStone Studio designs paver patios, retaining walls, and complete outdoor living spaces in 3D before anything is built. Photorealistic landscape design serving Ridgefield, Vancouver, Camas & the Portland metro with 25 years experience">
<meta property="og:image" content="https://florastonestudio.com/og-image.jpg">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta property="og:image:type" content="image/jpeg">
<meta property="og:image:alt" content="FloraStone Studio — paver patio & outdoor living design in the Pacific Northwest">
<!-- Twitter -->
<meta property="twitter:card" content="summary_large_image">
<meta property="twitter:title" content="Paver Patios, Retaining Walls & Outdoor Design | FloraStone">
<meta property="twitter:description" content="FloraStone Studio designs paver patios, retaining walls, and complete outdoor living spaces in 3D before anything is built. Photorealistic landscape design serving Ridgefield, Vancouver, Camas & the Portland metro with 25 years experience">
<meta property="twitter:image" content="https://florastonestudio.com/og-image.jpg">
<meta property="twitter:image:alt" content="FloraStone Studio — paver patio & outdoor living design in the Pacific Northwest">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16.png">
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
<link rel="manifest" href="/manifest.webmanifest">
<meta name="theme-color" content="#304136">
<link rel="preload" as="image" href="/hero-garden-walkway-v2-1408.webp" imagesrcset="/hero-garden-walkway-v2-640.webp 640w, /hero-garden-walkway-v2-768.webp 768w, /hero-garden-walkway-v2-960.webp 960w, /hero-garden-walkway-v2-1280.webp 1280w, /hero-garden-walkway-v2-1408.webp 1408w" imagesizes="100vw" type="image/webp" fetchpriority="high">
<!-- Above-the-fold fonts: Fraunces (hero headline), DM Sans (body/badge),
Cormorant Garamond + Montserrat (header wordmark/kicker). The unused
face (Fraunces italic, below the fold) is left to lazy CSS discovery. -->
<link rel="preload" as="font" type="font/woff2" href="/fonts/fraunces-latin.woff2" crossorigin>
<link rel="preload" as="font" type="font/woff2" href="/fonts/dm-sans-latin.woff2" crossorigin>
<link rel="preload" as="font" type="font/woff2" href="/fonts/cormorant-garamond-latin.woff2" crossorigin>
<link rel="preload" as="font" type="font/woff2" href="/fonts/montserrat-latin.woff2" crossorigin>
<link rel="preconnect" href="https://challenges.cloudflare.com" crossorigin>
<link rel="dns-prefetch" href="https://challenges.cloudflare.com">
<script type="module" crossorigin src="/assets/index-Bng_WP48.js"></script>
<style>@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-x-reverse:0;--tw-border-style:solid;--tw-divide-y-reverse:0;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:"";--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:root{--color-red-50:oklch(97.1% .013 17.38);--color-red-300:oklch(80.8% .114 19.571);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-amber-50:oklch(98.7% .022 95.277);--color-amber-300:oklch(87.9% .169 91.605);--color-amber-600:oklch(66.6% .179 58.318);--color-amber-900:oklch(41.4% .112 45.904);--color-yellow-200:oklch(94.5% .129 101.54);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-900:oklch(21% .034 264.665);--color-black:#000;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--container-5xl:64rem;--container-6xl:72rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height:1.2 ;--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--text-5xl:3rem;--text-5xl--line-height:1;--text-6xl:3.75rem;--text-6xl--line-height:1;--text-7xl:4.5rem;--text-7xl--line-height:1;--font-weight-light:300;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-wider:.05em;--tracking-widest:.1em;--leading-tight:1.25;--leading-snug:1.375;--leading-normal:1.5;--leading-relaxed:1.625;--ease-in-out:cubic-bezier(.4, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-sm:8px;--blur-md:12px;--aspect-video:16 / 9;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--app-font-sans);--default-mono-font-family:var(--app-font-mono);--color-border:hsl(var(--border))}}@layer base{*,:after,:before{box-sizing:border-box;border:0 solid;margin:0;padding:0}html{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}h1{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}img,svg{vertical-align:middle;display:block}img{max-width:100%;height:auto}button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}button{appearance:button}*{border-color:hsl(var(--border))}html{scroll-behavior:smooth}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{background-color:hsl(var(--background));font-family:var(--app-font-sans);color:hsl(var(--foreground));-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1{font-family:var(--app-font-serif);color:hsl(var(--secondary))}}@layer components;@layer utilities{.absolute{position:absolute}.relative{position:relative}.inset-0{inset:calc(var(--spacing) * 0)}.z-0{z-index:0}.z-10{z-index:10}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.mt-12{margin-top:calc(var(--spacing) * 12)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.mb-12{margin-bottom:calc(var(--spacing) * 12)}.ml-3{margin-left:calc(var(--spacing) * 3)}.block{display:block}.flex{display:flex}.inline-flex{display:inline-flex}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-14{height:calc(var(--spacing) * 14)}.h-full{height:100%}.min-h-10{min-height:calc(var(--spacing) * 10)}.min-h-\[100dvh\]{min-height:100dvh}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.flex-1{flex:1}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.gap-2{gap:calc(var(--spacing) * 2)}.gap-5{gap:calc(var(--spacing) * 5)}.overflow-hidden{overflow:hidden}.overflow-x-hidden{overflow-x:hidden}.rounded-none{border-radius:0}.border{border-style:var(--tw-border-style);border-width:1px}.\[border-color\:var\(--button-outline\)\]{border-color:var(--button-outline)}.border-background\/30{border-color:hsl(var(--background))}@supports (color:color-mix(in lab,red,red)){.border-background\/30{border-color:color-mix(in oklab,hsl(var(--background)) 30%,transparent)}}.border-primary-border{border-color:var(--primary-border)}.border-primary\/30{border-color:hsl(var(--primary))}@supports (color:color-mix(in lab,red,red)){.border-primary\/30{border-color:color-mix(in oklab,hsl(var(--primary)) 30%,transparent)}}.bg-background{background-color:hsl(var(--background))}.bg-primary{background-color:hsl(var(--primary))}.bg-primary\/20{background-color:hsl(var(--primary))}@supports (color:color-mix(in lab,red,red)){.bg-primary\/20{background-color:color-mix(in oklab,hsl(var(--primary)) 20%,transparent)}}.bg-secondary{background-color:hsl(var(--secondary))}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-t{--tw-gradient-position:to top in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-secondary\/60{--tw-gradient-from:hsl(var(--secondary))}@supports (color:color-mix(in lab,red,red)){.from-secondary\/60{--tw-gradient-from:color-mix(in oklab, hsl(var(--secondary)) 60%, transparent)}}.from-secondary\/60{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-secondary\/85{--tw-gradient-from:hsl(var(--secondary))}@supports (color:color-mix(in lab,red,red)){.from-secondary\/85{--tw-gradient-from:color-mix(in oklab, hsl(var(--secondary)) 85%, transparent)}}.from-secondary\/85{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.via-secondary\/15{--tw-gradient-via:hsl(var(--secondary))}@supports (color:color-mix(in lab,red,red)){.via-secondary\/15{--tw-gradient-via:color-mix(in oklab, hsl(var(--secondary)) 15%, transparent)}}.via-secondary\/15{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-secondary\/35{--tw-gradient-via:hsl(var(--secondary))}@supports (color:color-mix(in lab,red,red)){.via-secondary\/35{--tw-gradient-via:color-mix(in oklab, hsl(var(--secondary)) 35%, transparent)}}.via-secondary\/35{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.to-secondary\/40{--tw-gradient-to:hsl(var(--secondary))}@supports (color:color-mix(in lab,red,red)){.to-secondary\/40{--tw-gradient-to:color-mix(in oklab, hsl(var(--secondary)) 40%, transparent)}}.to-secondary\/40{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-transparent{--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.object-cover{object-fit:cover}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-8{padding-inline:calc(var(--spacing) * 8)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.pt-20{padding-top:calc(var(--spacing) * 20)}.pb-32{padding-bottom:calc(var(--spacing) * 32)}.font-sans{font-family:var(--app-font-sans)}.font-serif{font-family:var(--app-font-serif)}.text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-\[1\.05\]{--tw-leading:1.05;line-height:1.05}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-light{--tw-font-weight:var(--font-weight-light);font-weight:var(--font-weight-light)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.tracking-\[0\.15em\]{--tw-tracking:.15em;letter-spacing:.15em}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.whitespace-nowrap{white-space:nowrap}.text-background{color:hsl(var(--background))}.text-background\/80{color:hsl(var(--background))}@supports (color:color-mix(in lab,red,red)){.text-background\/80{color:color-mix(in oklab,hsl(var(--background)) 80%,transparent)}}.text-foreground{color:hsl(var(--foreground))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.uppercase{text-transform:uppercase}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media(hover:hover){.hover\:bg-background:hover{background-color:hsl(var(--background))}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary))}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,hsl(var(--primary)) 90%,transparent)}}.hover\:text-secondary:hover{color:hsl(var(--secondary))}}.focus-visible\:ring-1:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:hsl(var(--ring))}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:shadow-none:active{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:opacity-50:disabled{opacity:.5}@media(min-width:40rem){.sm\:flex-row{flex-direction:row}}@media(min-width:48rem){.md\:mt-24{margin-top:calc(var(--spacing) * 24)}.md\:px-8{padding-inline:calc(var(--spacing) * 8)}.md\:text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.md\:text-7xl{font-size:var(--text-7xl);line-height:var(--tw-leading,var(--text-7xl--line-height))}}@media(min-width:64rem){.lg\:text-\[5\.5rem\]{font-size:5.5rem}}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:size-4 svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}:root{--background:40 27% 96%;--foreground:144 8% 12%;--border:103 5% 71%;--card:40 25% 91%;--card-foreground:144 8% 12%;--card-border:103 5% 71%;--sidebar:40 25% 91%;--sidebar-foreground:144 8% 12%;--sidebar-border:103 5% 71%;--sidebar-primary:91 16% 35%;--sidebar-primary-foreground:40 27% 96%;--sidebar-accent:108 6% 82%;--sidebar-accent-foreground:144 8% 12%;--sidebar-ring:91 16% 35%;--popover:40 27% 96%;--popover-foreground:144 8% 12%;--popover-border:103 5% 71%;--primary:91 16% 35%;--primary-foreground:40 27% 96%;--primary-light:91 22% 68%;--secondary:142 15% 22%;--secondary-foreground:40 27% 96%;--muted:108 6% 82%;--muted-foreground:144 8% 30%;--accent:103 5% 71%;--accent-foreground:144 8% 12%;--destructive:0 84.2% 60.2%;--destructive-foreground:0 0% 98%;--input:103 5% 71%;--ring:91 14% 54%;--app-font-sans:"DM Sans", sans-serif;--app-font-serif:"Fraunces", serif;--app-font-mono:Menlo, monospace;--radius:.5rem;--tracking-normal:0em;--spacing:.25rem}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}</style><link rel="preload" crossorigin href="/assets/index-DwG-mORo.css" onload="this.rel='stylesheet'" as="style"><noscript><link rel="stylesheet" crossorigin href="/assets/index-DwG-mORo.css"></noscript>
<link rel="modulepreload" crossorigin href="/assets/home-CZXUkM-h.js">
<link rel="modulepreload" crossorigin href="/assets/index-Bng_WP48.js">
<link rel="modulepreload" crossorigin href="/assets/index-soUdUd9R.js">
<link rel="modulepreload" crossorigin href="/assets/label-CZQrrPbi.js">
<link rel="modulepreload" crossorigin href="/assets/portfolio-grid-BTlTqFcU.js">
<link rel="modulepreload" crossorigin href="/assets/storage-image-BauC4fpG.js">
<link rel="modulepreload" crossorigin href="/assets/use-page-meta-BrhE5agg.js">
<link rel="modulepreload" crossorigin href="/assets/is-svg-component-DrRCDcFj.js">
<link rel="modulepreload" crossorigin href="/assets/circle-check-big-DPVi0RKa.js">
<link rel="modulepreload" crossorigin href="/assets/responsive-img-B56mdAZb.js">
<link rel="modulepreload" crossorigin href="/assets/resolve-elements-DCvki5n0.js">
<link rel="modulepreload" crossorigin href="/assets/map-pin-Di32swvt.js">
<link rel="modulepreload" crossorigin href="/assets/motion-features-CS6QhOBQ.js">
</head>
<body>
<div id="root"><div class="flex flex-col min-h-[100dvh] font-sans bg-background text-foreground overflow-x-hidden"><main class="flex-1"><section class="relative min-h-[100dvh] flex items-center pt-20 pb-32 overflow-hidden bg-secondary"><div class="absolute inset-0 z-0"><picture class="block w-full h-full"><source type="image/webp" srcset="/hero-garden-walkway-v2-640.webp 640w, /hero-garden-walkway-v2-768.webp 768w, /hero-garden-walkway-v2-960.webp 960w, /hero-garden-walkway-v2-1280.webp 1280w, /hero-garden-walkway-v2-1408.webp 1408w" sizes="100vw"><source type="image/jpeg" srcset="/hero-garden-walkway-v2-640.jpg 640w, /hero-garden-walkway-v2-768.jpg 768w, /hero-garden-walkway-v2-960.jpg 960w, /hero-garden-walkway-v2-1280.jpg 1280w, /hero-garden-walkway-v2-1408.jpg 1408w" sizes="100vw"><img src="/hero-garden-walkway-v2-1408.jpg" width="1408" height="768" alt="Curved paver walkway and stone retaining wall winding past a sunny paver patio dining area in a Pacific Northwest backyard" loading="eager" fetchpriority="high" sizes="100vw" class="w-full h-full object-cover"></picture><div class="absolute inset-0 bg-gradient-to-t from-secondary/85 via-secondary/35 to-secondary/40"></div><div class="absolute inset-0 bg-gradient-to-r from-secondary/60 via-secondary/15 to-transparent"></div></div><div class="container relative z-10 px-4 md:px-8 mt-12 md:mt-24"><div class="max-w-3xl"><div class="hero-enter-badge inline-flex items-center gap-2 px-4 py-1.5 bg-primary/20 text-primary-foreground border border-primary/30 backdrop-blur-sm text-xs font-medium tracking-[0.15em] mb-8"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-leaf w-3.5 h-3.5" aria-hidden="true"><path d="M11 20A7 7 0 0 1 9.8 6.1C15.5 5 17 4.48 19 2c1 2 2 4.18 2 8 0 5.5-4.78 10-10 10Z"/><path d="M2 21c0-3 1.85-5.36 5.08-6C9.5 14.52 12 13 13 12"/></svg><span>PACIFIC NORTHWEST DESIGN STUDIO</span></div><h1 class="hero-enter hero-enter-1 text-5xl md:text-7xl lg:text-[5.5rem] font-serif text-background leading-[1.05] mb-8">Your backyard, reimagined as a natural space where memories take root.</h1><p class="hero-enter hero-enter-2 text-lg md:text-2xl text-background/80 mb-12 max-w-2xl leading-relaxed font-light">Custom paver patios, retaining walls, and outdoor living spaces — designed in 3D before it's built.</p><div class="hero-enter hero-enter-3 flex flex-col sm:flex-row gap-5"><a href="/#consult"><button class="inline-flex items-center justify-center gap-2 whitespace-nowrap transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 hover-elevate active-elevate-2 border border-primary-border min-h-10 rounded-none bg-primary hover:bg-primary/90 text-primary-foreground px-8 h-14 text-sm tracking-widest uppercase font-medium">Begin Your Design<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-right ml-3 w-4 h-4" aria-hidden="true"><path d="M5 12h14"/><path d="m12 5 7 7-7 7"/></svg></button></a><a href="/portfolio"><button class="inline-flex items-center justify-center gap-2 whitespace-nowrap transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 hover-elevate active-elevate-2 border [border-color:var(--button-outline)] shadow-xs active:shadow-none min-h-10 rounded-none border-background/30 text-background hover:bg-background hover:text-secondary h-14 px-8 text-sm tracking-widest uppercase font-medium backdrop-blur-sm">Explore Portfolio</button></a></div></div></div></section></main></div></div>
<!-- Structured Data: Business -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"@id": "https://florastonestudio.com/#studio",
"name": "FloraStone Studio",
"url": "https://florastonestudio.com/",
"image": "https://florastonestudio.com/hero-garden-walkway-v2-1408.jpg",
"logo": {
"@type": "ImageObject",
"url": "https://florastonestudio.com/icon-512.png",
"width": 512,
"height": 512
},
"description": "FloraStone Studio is a design-first Pacific Northwest studio specializing in paver patios, retaining walls, and complete outdoor living spaces — photorealistic 3D landscape design and detailed hardscape plans before any work begins.",
"email": "hello@florastonestudio.com",
"priceRange": "$$$",
"foundingDate": "2001",
"slogan": "Design-first outdoor living for the Pacific Northwest.",
"address": {
"@type": "PostalAddress",
"addressLocality": "Portland",
"addressRegion": "OR",
"addressCountry": "US"
},
"sameAs": [
"https://www.instagram.com/florastonestudio/"
],
"areaServed": [
{ "@type": "City", "name": "Portland", "containedInPlace": { "@type": "State", "name": "Oregon" } },
{ "@type": "City", "name": "Lake Oswego", "containedInPlace": { "@type": "State", "name": "Oregon" } },
{ "@type": "City", "name": "Beaverton", "containedInPlace": { "@type": "State", "name": "Oregon" } },
{ "@type": "City", "name": "Tigard", "containedInPlace": { "@type": "State", "name": "Oregon" } },
{ "@type": "City", "name": "Wilsonville", "containedInPlace": { "@type": "State", "name": "Oregon" } },
{ "@type": "City", "name": "Happy Valley", "containedInPlace": { "@type": "State", "name": "Oregon" } },
{ "@type": "City", "name": "West Linn", "containedInPlace": { "@type": "State", "name": "Oregon" } },
{ "@type": "City", "name": "Oregon City", "containedInPlace": { "@type": "State", "name": "Oregon" } },
{ "@type": "City", "name": "Vancouver", "containedInPlace": { "@type": "State", "name": "Washington" } },
{ "@type": "City", "name": "Camas", "containedInPlace": { "@type": "State", "name": "Washington" } },
{ "@type": "City", "name": "Battle Ground", "containedInPlace": { "@type": "State", "name": "Washington" } },
{ "@type": "City", "name": "Ridgefield", "containedInPlace": { "@type": "State", "name": "Washington" } },
{ "@type": "City", "name": "Washougal", "containedInPlace": { "@type": "State", "name": "Washington" } },
{ "@type": "AdministrativeArea", "name": "Columbia River Gorge" }
],
"makesOffer": [
{ "@type": "Offer", "itemOffered": { "@type": "Service", "name": "Photorealistic 3D landscape renderings and detailed plans" } },
{ "@type": "Offer", "itemOffered": { "@type": "Service", "name": "Paver patio, retaining wall, and hardscape design" } },
{ "@type": "Offer", "itemOffered": { "@type": "Service", "name": "Planted landscape design" } },
{ "@type": "Offer", "itemOffered": { "@type": "Service", "name": "Water feature design" } },
{ "@type": "Offer", "itemOffered": { "@type": "Service", "name": "Fire element design" } }
]
}
</script>
<!-- Structured Data: FAQ -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{ "@type": "Question", "name": "Do you build the landscapes, or only design them?", "acceptedAnswer": { "@type": "Answer", "text": "FloraStone Studio is a design-first studio, not a contractor. We create photorealistic 3D renderings and detailed plans for your outdoor space, then partner with trusted installers to bring the design to life — so every decision is made before any work begins." } },
{ "@type": "Question", "name": "What areas do you serve?", "acceptedAnswer": { "@type": "Answer", "text": "We design outdoor spaces across the Portland, OR metro, SW Washington, and the Columbia River Gorge. In Oregon that includes Portland, Lake Oswego, Beaverton, Tigard, Wilsonville, Happy Valley, West Linn, and Oregon City; in Washington, Vancouver, Camas, Battle Ground, Ridgefield, and Washougal." } },
{ "@type": "Question", "name": "What's included in a FloraStone design?", "acceptedAnswer": { "@type": "Answer", "text": "Every project includes a full site assessment, a cohesive landscape design concept, and photorealistic 3D renderings paired with detailed plans. You see exactly how your paver patio, retaining walls, plantings, water, and fire elements work together before anything is installed." } },
{ "@type": "Question", "name": "How does the photorealistic 3D rendering process work?", "acceptedAnswer": { "@type": "Answer", "text": "We model your property in 3D and render your future outdoor living space in lifelike detail — materials, plantings, lighting, and sightlines included. This 3D landscape design process lets you walk through your backyard design and refine it on screen, which eliminates guesswork and costly mid-project changes." } },
{ "@type": "Question", "name": "How long does the design process take?", "acceptedAnswer": { "@type": "Answer", "text": "Most designs take a few weeks from initial consultation to final plans, depending on the scope and complexity of your property. We focus on getting the vision right rather than rushing it." } },
{ "@type": "Question", "name": "What makes a design-first studio different from a landscaping contractor?", "acceptedAnswer": { "@type": "Answer", "text": "A contractor typically prices and installs work as the project unfolds. A design-first studio composes the entire environment up front — proportions, materials, and flow — so the finished space feels intentional and unified rather than assembled piece by piece." } },
{ "@type": "Question", "name": "How much does a paver patio cost in Portland?", "acceptedAnswer": { "@type": "Answer", "text": "There's no honest one-size answer — slope, drainage, access, materials, and design all move the number, so two patios of the same size can cost very differently. Most of our clients invest somewhere from the low five figures for a quality patio and planted surround, up to $40,000-$50,000 or more for a complete outdoor living environment with retaining walls, a fire or water feature, and full landscaping. Rather than shrink your vision to fit a single year's budget, we design your complete space first and help you build it in phases — so the dream never has to get smaller, it just gets built on a timeline that works for you." } },
{ "@type": "Question", "name": "Why design for the Pacific Northwest climate specifically?", "acceptedAnswer": { "@type": "Answer", "text": "We design with our region's wet winters and dry summers in mind, choosing native, low-maintenance plantings and weatherproof materials. The result is an outdoor space that thrives year-round with minimal upkeep — designed for our climate, not against it." } }
]
}
</script>
</body>
</html>
Sitemap
Кол-во: 0
XML-карта сайта для поисковиков
?
Sitemap.xml помогает поисковику быстрее находить и индексировать страницы. Особенно важен для крупных сайтов и новых страниц, на которые ещё нет входящих ссылок.
Robots.txt не содержит ссылку на карту сайта. Рекомендуется добавить карту сайта и указать ссылку на нее в robots.txt.
Внутренние ссылки
Кол-во: 1
Ссылки на другие страницы своего сайта
?
Внутренние ссылки распределяют ссылочный вес между страницами и помогают поисковику обходить сайт. Пустые анкоры и ссылки на запрещённые robots.txt страницы — типичные ошибки.
Внутренних ссылок на странице 1 оптимально.
Внутренние ссылки не запрещены к индексации в robots.txt.
Показать внутренние ссылки
| Url | Анкор | Состояние | Анализировать |
|---|---|---|---|
| /portfolio |
<button class="inline-flex items-center justify-center gap-2 whitespace-nowrap transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 hover-elevate active-elevate-2 border [border-color:var(--button-outline)] shadow-xs active:shadow-none min-h-10 rounded-none border-background/30 text-background hover:bg-background hover:text-secondary h-14 px-8 text-sm tracking-widest uppercase font-medium backdrop-blur-sm">Explore Portfolio</button>
|
|
Анализировать url |
Внешние ссылки
Не найдено
Ссылки на сторонние сайты
?
Исходящие внешние ссылки передают часть ссылочного веса на чужие сайты. Ссылки на авторитетные ресурсы безопасны; ссылки на мусорные сайты могут навредить репутации страницы.
Внешних ссылок на странице не найдено.
Конкуренты Готовность: 0%
Конкуренты в Яндексе
Кол-во: 0
Топ сайтов-конкурентов в Яндексе
?
Сайты, чаще всего появляющиеся в ТОПе Яндекса по запросам из семантического ядра этой страницы.
Мы не нашли у вас конкурентов в Яндексе. Сайт или очень молодой или плохо продвигается.
Конкурентов в ТОП-10 Яндекса не нашлось.
Конкуренты в Google
Кол-во: 0
Топ сайтов-конкурентов в Google
?
Сайты, чаще всего появляющиеся в ТОПе Google по запросам из семантического ядра этой страницы.
Конкуренты в Google тоже не найдены. Займитесь продвижением сайта!
Конкурентов в ТОП-10 Google не нашлось.
ЗоЗПП: права потребителей Готовность: 100%
Нарушения
Не выявлены
Признаков дистанционной продажи товаров (интернет-магазина) не обнаружено — требования ЗоЗПП о раскрытии информации продавца к сайту не применяются. Нарушений нет.
ФЗ-149: рекомендательные технологии Готовность: 100%
Нарушения
Не выявлены
Рекомендательные блоки («с этим покупают», «похожие товары» и т.п.) на сайте не обнаружены — требования ст. 10.7 ФЗ-149 к сайту не применяются. Нарушений нет.
ФЗ-38: реклама Готовность: 100%
Нарушения
Не выявлены
Рекламных тематик с обязательными оговорками (медицина, БАД, кредиты и займы, новостройки) на сайте не обнаружено. Нарушений нет.
ФЗ-436: защита детей Готовность: 100%
Нарушения
Не выявлены
Признаков информационной продукции (новости, видео, книги, игры, курсы) не обнаружено — обязательная возрастная маркировка по ФЗ-436 сайту не требуется. Нарушений нет.
Вердикт
Сайт paverlayer.com не совсем готов к продвижению (процент готовности лишь 62%). Для попадания в ТОПы поисковых систем нужно:
Исправьте ошибки в мета-тегах.
Исправьте ошибки оптимизации.
Исправьте ошибки индексации.
Поделитесь с друзьями: