@font-face{ font-family:’Manrope’; src:url(‘/wp-content/themes/garderob-fixed_10-11-26/assets/fonts/manrope/Manrope-Regular.woff2’) format(‘woff2′); font-weight:400; font-style:normal; font-display:swap; } @font-face{ font-family:’Manrope’; src:url(‘/wp-content/themes/garderob-fixed_10-11-26/assets/fonts/manrope/Manrope-Bold.woff2’) format(‘woff2′); font-weight:700; font-style:normal; font-display:swap; } /* GM HOME V4: убираем штатную пустую зону заголовка страницы/записи над контентом. Шапку и футер сайта не трогаем. */ body:has(.gm-home) .entry-header, body:has(.gm-home) .page-header, body:has(.gm-home) .post-header, body:has(.gm-home) .article-header, body:has(.gm-home) .content-header, body:has(.gm-home) .wp-block-post-title, body:has(.gm-home) h1.entry-title, body:has(.gm-home) .entry-title, body:has(.gm-home) .page-title, body:has(.gm-home) .post-title{ display:none!important; height:0!important; min-height:0!important; margin:0!important; padding:0!important; border:0!important; overflow:hidden!important; } body:has(.gm-home) main, body:has(.gm-home) .site-main, body:has(.gm-home) .content-area, body:has(.gm-home) .content, body:has(.gm-home) .page-content, body:has(.gm-home) .entry-content, body:has(.gm-home) .wp-block-post-content{ margin-top:0!important; padding-top:0!important; } body:has(.gm-home) .entry-content > p:empty, body:has(.gm-home) .page-content > p:empty, body:has(.gm-home) .wp-block-post-content > p:empty{ display:none!important; margin:0!important; padding:0!important; } body:has(.gm-home) .entry-content > .wp-block-html:first-child, body:has(.gm-home) .page-content > .wp-block-html:first-child, body:has(.gm-home) .wp-block-post-content > .wp-block-html:first-child{ margin-top:0!important; } /* GM HOME V4: штатную шапку сайта и штатный футер НЕ скрываем. Этот код отвечает только за контент главной страницы между ними. */ /* GM HOME V5: дополнительное удаление пустого блока заголовка/хлебных крошек темы. Штатные header и footer сайта НЕ скрываются. */ body:has(.gm-home) .breadcrumbs, body:has(.gm-home) .breadcrumb, body:has(.gm-home) .breadcrumbs-wrapper, body:has(.gm-home) .breadcrumb-wrapper, body:has(.gm-home) .rank-math-breadcrumb, body:has(.gm-home) .yoast-breadcrumb, body:has(.gm-home) .page-title-wrap, body:has(.gm-home) .page-title-wrapper, body:has(.gm-home) .page-heading, body:has(.gm-home) .page-heading-wrapper, body:has(.gm-home) .page-hero, body:has(.gm-home) .page-banner, body:has(.gm-home) .inner-banner, body:has(.gm-home) .title-area, body:has(.gm-home) .title-bar, body:has(.gm-home) .page-top, body:has(.gm-home) .post-top, body:has(.gm-home) .single-top, body:has(.gm-home) .content-title, body:has(.gm-home) .main-title, body:has(.gm-home) .article-title, body:has(.gm-home) .page__title, body:has(.gm-home) .page_title, body:has(.gm-home) .section-title-page, body:has(.gm-home) .entry-header, body:has(.gm-home) .page-header, body:has(.gm-home) .post-header, body:has(.gm-home) .article-header, body:has(.gm-home) .content-header, body:has(.gm-home) h1.entry-title, body:has(.gm-home) h1.page-title, body:has(.gm-home) .entry-title, body:has(.gm-home) .page-title, body:has(.gm-home) .post-title{ display:none!important; height:0!important; min-height:0!important; max-height:0!important; margin:0!important; padding:0!important; border:0!important; overflow:hidden!important; } body:has(.gm-home) article:has(.gm-home), body:has(.gm-home) .post:has(.gm-home), body:has(.gm-home) .page:has(.gm-home), body:has(.gm-home) .site-main, body:has(.gm-home) main, body:has(.gm-home) .main, body:has(.gm-home) .content, body:has(.gm-home) .content-area, body:has(.gm-home) .page-content, body:has(.gm-home) .entry-content, body:has(.gm-home) .wp-block-post-content{ margin-top:0!important; padding-top:0!important; } body:has(.gm-home) .entry-content > *:first-child, body:has(.gm-home) .page-content > *:first-child, body:has(.gm-home) .wp-block-post-content > *:first-child{ margin-top:0!important; } body:has(.gm-home) .entry-content > p:empty, body:has(.gm-home) .page-content > p:empty, body:has(.gm-home) .wp-block-post-content > p:empty{ display:none!important; height:0!important; margin:0!important; padding:0!important; } /* Убираем плавающие сторонние виджеты, которые перекрывают новую главную. */ body:has(.gm-home) [id*=»consultant»], body:has(.gm-home) [class*=»consultant»], body:has(.gm-home) [id*=»jivo»], body:has(.gm-home) [class*=»jivo»], body:has(.gm-home) [id*=»chat-widget»], body:has(.gm-home) [class*=»chat-widget»]{ display:none!important; } /* GM HOME V6: убираем оставшийся верхний пробел. Причина была не в контенте главной, а в штатной .header.inner темы: она занимает место в потоке страницы. Шапку сайта НЕ заменяем и НЕ скрываем — оставляем её штатной, но переводим в overlay-режим только на этой странице. */ body:has(.gm-home) .header{ position:absolute!important; top:0!important; left:0!important; right:0!important; width:100%!important; z-index:99990!important; background:transparent!important; } body.admin-bar:has(.gm-home) .header{ top:32px!important; } body:has(.gm-home) .header.inner, body:has(.gm-home) .header.fixed.inner{ position:absolute!important; } body:has(.gm-home) .header.inner > *, body:has(.gm-home) .header.fixed .header__top, body:has(.gm-home) .header.fixed .header__bottom{ background:transparent!important; } body:has(.gm-home) .header__top, body:has(.gm-home) .header__bottom{ background:rgba(15,15,15,.68)!important; backdrop-filter:blur(12px); -webkit-backdrop-filter:blur(12px); } body:has(.gm-home) .header__top{ padding:22rem 0 16rem!important; } body:has(.gm-home) .header__bottom{ padding:18rem 0 16rem!important; } body:has(.gm-home) .header__logo img{ width:238rem!important; } body:has(.gm-home) .header__phone{ font-size:18rem!important; } @media(max-width:767.98px){ body.admin-bar:has(.gm-home) .header{ top:46px!important; } body:has(.gm-home) .header__bottom{ padding:14rem 0!important; } body:has(.gm-home) .header__logo img{ width:170rem!important; } } /* GM HOME PERF: keep the homepage header on Manrope, not legacy theme fonts. */ body:has(.gm-home) .header, body:has(.gm-home) .header__nav ul, body:has(.gm-home) .header__contacts, body:has(.gm-home) .header__phone, body:has(.gm-home) .header .btn, body:has(.gm-home) .bar-menu{ font-family:’Manrope’,Arial,sans-serif!important; } .gm-home{ —gm-dark:#0F0F0F; —gm-dark-2:#171717; —gm-cream:#F5F1EA; —gm-cream-2:#FBF7EF; —gm-cream-3:#ECE4D9; —gm-text:#171717; —gm-muted:#6A6258; —gm-white:#FFFFFF; —gm-brass:#B89667; —gm-brass-2:#C8AA78; —gm-line:rgba(23,23,23,.10); —gm-line-dark:rgba(255,255,255,.12); —gm-radius:26px; —gm-radius-sm:18px; —gm-shadow:0 26px 80px rgba(22,18,14,.13); —gm-shadow-dark:0 34px 110px rgba(0,0,0,.46); width:100%; max-width:100%; margin-left:0; margin-right:0; overflow:hidden; font-family:’Manrope’,Arial,sans-serif; background:var(—gm-cream); color:var(—gm-text); letter-spacing:-.01em; } .gm-home *{box-sizing:border-box;min-width:0;} .gm-home a{color:inherit;text-decoration:none;} .gm-home img{display:block;max-width:100%;} .gm-home h1,.gm-home h2,.gm-home h3,.gm-home p{margin-top:0;} .gm-home h1,.gm-home h2,.gm-home h3{text-wrap:balance;overflow-wrap:break-word;} .gm-home p{overflow-wrap:break-word;} .gm-home-wrap{ width:min(1200px,calc(100% — 48px)); margin:0 auto; } .gm-home-section{ padding:96px 0; position:relative; } .gm-home-section-light{background:var(—gm-cream); color:var(—gm-text);} .gm-home-section-cream{background:var(—gm-cream-2); color:var(—gm-text);} .gm-home-section-dark{background:var(—gm-dark); color:#fff;} .gm-home-kicker{ display:block; margin-bottom:16px; color:var(—gm-brass); font-size:13px; line-height:1.2; font-weight:700; letter-spacing:.035em; } .gm-home-title-xl{ max-width:850px; margin:0 0 24px; font-size:clamp(44px,6vw,88px); line-height:.98; font-weight:700; letter-spacing:-.065em; } .gm-home-title{ margin:0 0 18px; font-size:clamp(34px,4.6vw,68px); line-height:1.02; font-weight:700; letter-spacing:-.058em; } .gm-home-title-sm{ margin:0 0 14px; font-size:clamp(28px,3.4vw,50px); line-height:1.06; font-weight:700; letter-spacing:-.05em; } .gm-home-lead{ max-width:720px; margin:0; color:var(—gm-muted); font-size:18px; line-height:1.7; } .gm-home-section-dark .gm-home-lead, .gm-home-hero .gm-home-lead, .gm-home-final .gm-home-lead{ color:rgba(255,255,255,.74); } .gm-home-btns{ display:flex; flex-wrap:wrap; gap:14px; align-items:center; } .gm-home-btn{ display:inline-flex; min-height:52px; padding:0 28px; align-items:center; justify-content:center; border-radius:999px; border:1px solid var(—gm-brass); background:var(—gm-brass); color:#fff!important; font-size:15px; font-weight:700; line-height:1; cursor:pointer; transition:transform .25s ease, background .25s ease, border-color .25s ease, color .25s ease; } .gm-home-btn:hover{ transform:translateY(-2px); background:#A77A45; border-color:#A77A45; } .gm-home-btn-outline{ background:transparent; color:#fff!important; border-color:rgba(255,255,255,.38); } .gm-home-btn-outline:hover{ background:#fff; color:var(—gm-dark)!important; border-color:#fff; } .gm-home-btn-light-outline{ background:transparent; color:var(—gm-text)!important; border-color:rgba(23,23,23,.24); } .gm-home-btn-light-outline:hover{ background:var(—gm-dark); color:#fff!important; border-color:var(—gm-dark); } .gm-home-head{ display:flex; justify-content:space-between; align-items:flex-end; gap:40px; margin-bottom:44px; } .gm-home-head .gm-home-lead{ max-width:520px; } /* HERO */ .gm-home-hero{ min-height:100svh; position:relative; display:flex; align-items:center; background:#000; color:#fff; overflow:hidden; } .gm-home-hero-media{ position:absolute; inset:0; z-index:1; } .gm-home-hero-media picture{ display:block; width:100%; height:100%; } .gm-home-hero-media img{ width:100%; height:100%; object-fit:cover; } .gm-home-hero:after{ content:»»; position:absolute; inset:0; z-index:2; background: radial-gradient(circle at 72% 42%,rgba(184,150,103,.13) 0%,rgba(0,0,0,0) 32%), linear-gradient(90deg,rgba(0,0,0,.82) 0%,rgba(0,0,0,.66) 44%,rgba(0,0,0,.30) 74%,rgba(0,0,0,.16) 100%), linear-gradient(180deg,rgba(0,0,0,.10) 0%,rgba(0,0,0,.38) 100%); } .gm-home-hero-content{ position:relative; z-index:3; max-width:860px; padding:228px 0 92px; } .gm-home-hero-text{ max-width:720px; margin:0 0 34px; color:rgba(255,255,255,.84); font-size:clamp(18px,2vw,23px); line-height:1.55; } .gm-home-hero-note{ margin-top:30px; display:flex; flex-wrap:wrap; gap:10px 20px; color:rgba(255,255,255,.72); font-size:14px; line-height:1.4; } .gm-home-hero-note span{ display:inline-flex; align-items:center; gap:8px; } .gm-home-hero-note span:before{ content:»»; width:6px; height:6px; border-radius:50%; background:var(—gm-brass); } .gm-home-hero-line{ margin-top:26px; color:rgba(255,255,255,.72); font-size:16px; line-height:1.5; } /* PROOF */ .gm-home-proof{ margin-top:-1px; padding:0 0 72px; background:var(—gm-dark); color:#fff; } .gm-home-proof-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:14px; } .gm-home-proof-card{ padding:22px; border:1px solid var(—gm-line-dark); border-radius:var(—gm-radius-sm); background:rgba(255,255,255,.055); } .gm-home-proof-card span{ display:block; margin-bottom:10px; color:var(—gm-brass-2); font-size:12px; line-height:1.2; font-weight:800; letter-spacing:.045em; text-transform:uppercase; } .gm-home-proof-card strong{ display:block; margin-bottom:8px; color:#fff; font-size:18px; line-height:1.2; } .gm-home-proof-card p{ margin:0; color:rgba(255,255,255,.68); font-size:14px; line-height:1.5; } @media(max-width:1120px){ .gm-home-proof-grid{ grid-template-columns:repeat(2,1fr); } } @media(max-width:760px){ .gm-home-proof{ padding:0 0 52px; } .gm-home-proof-grid{ grid-template-columns:1fr; } } /* DIRECTIONS */ .gm-home-directions-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:18px; } .gm-home-direction{ position:relative; min-height:430px; display:flex; align-items:flex-end; overflow:hidden; border-radius:var(—gm-radius); background:#111; color:#fff; box-shadow:var(—gm-shadow); } .gm-home-direction img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; transition:transform .65s ease; } .gm-home-direction:hover img{ transform:scale(1.055); } .gm-home-direction:after{ content:»»; position:absolute; inset:0; background: linear-gradient(180deg,rgba(0,0,0,.08) 0%,rgba(0,0,0,.36) 42%,rgba(0,0,0,.78) 100%); } .gm-home-direction-body{ position:relative; z-index:2; padding:24px; } .gm-home-direction-body h3{ margin:0 0 12px; font-size:24px; line-height:1.1; letter-spacing:-.04em; } .gm-home-direction-body p{ margin:0 0 18px; color:rgba(255,255,255,.75); font-size:14px; line-height:1.55; } .gm-home-card-link{ display:inline-flex; align-items:center; gap:10px; color:var(—gm-brass-2)!important; font-size:14px; font-weight:700; border-bottom:1px solid rgba(200,170,120,.55); padding-bottom:6px; } .gm-home-card-link:after{ content:»→»; } /* BRAND IDEA */ .gm-home-idea{ background:var(—gm-dark); color:#fff; overflow:hidden; } .gm-home-idea-grid{ display:grid; grid-template-columns:.9fr 1.1fr; gap:54px; align-items:center; } .gm-home-idea-media{ border-radius:var(—gm-radius); overflow:hidden; min-height:560px; background:#111; box-shadow:var(—gm-shadow-dark); } .gm-home-idea-media img{ width:100%; height:100%; min-height:560px; object-fit:cover; } .gm-home-principles{ margin-top:34px; display:grid; grid-template-columns:repeat(3,1fr); gap:14px; } .gm-home-principle{ padding:20px; border:1px solid var(—gm-line-dark); border-radius:var(—gm-radius-sm); background:rgba(255,255,255,.045); } .gm-home-principle strong{ display:block; margin-bottom:8px; color:#fff; font-size:16px; } .gm-home-principle span{ display:block; color:rgba(255,255,255,.66); font-size:13px; line-height:1.5; } /* SCENARIOS */ .gm-home-scenarios-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:20px; } .gm-home-scenario{ background:#fff; border:1px solid var(—gm-line); border-radius:var(—gm-radius); overflow:hidden; box-shadow:var(—gm-shadow); } .gm-home-scenario img{ width:100%; height:250px; object-fit:cover; } .gm-home-scenario-body{ padding:24px; } .gm-home-scenario-body h3{ margin:0 0 10px; font-size:22px; line-height:1.14; letter-spacing:-.035em; } .gm-home-scenario-body p{ margin:0; color:var(—gm-muted); font-size:15px; line-height:1.55; } .gm-home-section-cta{ margin-top:32px; display:flex; justify-content:center; } /* PORTFOLIO TEASER */ .gm-home-portfolio{ background:var(—gm-dark); color:#fff; } .gm-home-portfolio-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:18px; } .gm-home-project{ overflow:hidden; border-radius:var(—gm-radius); border:1px solid rgba(255,255,255,.10); background:rgba(255,255,255,.045); box-shadow:0 20px 70px rgba(0,0,0,.28); } .gm-home-project img{ width:100%; height:270px; object-fit:cover; } .gm-home-project-body{ padding:22px; } .gm-home-project-body span{ display:block; margin-bottom:8px; color:var(—gm-brass-2); font-size:13px; font-weight:700; } .gm-home-project-body h3{ margin:0 0 10px; font-size:21px; line-height:1.14; letter-spacing:-.035em; } .gm-home-project-body p{ margin:0 0 16px; color:rgba(255,255,255,.68); font-size:14px; line-height:1.55; } /* PROCESS */ .gm-home-process-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:18px; counter-reset:gmStep; } .gm-home-step{ position:relative; padding:26px; min-height:260px; border-radius:var(—gm-radius); background:#fff; border:1px solid var(—gm-line); box-shadow:var(—gm-shadow); counter-increment:gmStep; } .gm-home-step:before{ content:counter(gmStep, decimal-leading-zero); display:block; margin-bottom:42px; color:var(—gm-brass); font-size:15px; font-weight:700; } .gm-home-step h3{ margin:0 0 10px; font-size:21px; line-height:1.14; } .gm-home-step p{ margin:0; color:var(—gm-muted); font-size:14px; line-height:1.55; } /* TRUST */ .gm-home-trust-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:18px; } .gm-home-trust-card{ padding:26px; background:#fff; border:1px solid var(—gm-line); border-radius:var(—gm-radius); box-shadow:var(—gm-shadow); } .gm-home-trust-icon{ width:38px; height:38px; margin-bottom:22px; display:grid; place-items:center; border-radius:50%; background:rgba(184,150,103,.16); color:var(—gm-brass); font-weight:800; } .gm-home-trust-card h3{ margin:0 0 10px; font-size:22px; line-height:1.15; } .gm-home-trust-card p{ margin:0; color:var(—gm-muted); font-size:15px; line-height:1.55; } /* MATERIALS */ .gm-home-materials-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:18px; } .gm-home-material{ overflow:hidden; border-radius:var(—gm-radius); background:#fff; border:1px solid var(—gm-line); box-shadow:var(—gm-shadow); } .gm-home-material img{ width:100%; height:220px; object-fit:cover; } .gm-home-material-body{ padding:22px; } .gm-home-material-body h3{ margin:0 0 10px; font-size:21px; } .gm-home-material-body p{ margin:0; color:var(—gm-muted); font-size:14px; line-height:1.55; } /* MARQUIZ */ .gm-home-marquiz{ background:var(—gm-dark); color:#fff; } .gm-home-marquiz-layout{ display:grid; grid-template-columns:.86fr 1.14fr; gap:34px; align-items:stretch; } .gm-home-marquiz-info{ display:flex; flex-direction:column; justify-content:center; padding:38px; border-radius:var(—gm-radius); background:rgba(255,255,255,.045); border:1px solid var(—gm-line-dark); } .gm-home-marquiz-info .gm-home-lead{ margin-top:18px; } .gm-home-marquiz-list{ margin:28px 0 0; padding:0; list-style:none; display:grid; gap:13px; } .gm-home-marquiz-list li{ display:grid; grid-template-columns:24px 1fr; gap:12px; color:rgba(255,255,255,.76); font-size:15px; line-height:1.45; } .gm-home-marquiz-list li:before{ content:»✓»; width:24px; height:24px; display:grid; place-items:center; border-radius:50%; background:rgba(184,150,103,.16); color:var(—gm-brass); font-size:13px; font-weight:800; } .gm-home-marquiz-frame{ overflow:hidden; border-radius:var(—gm-radius); background:rgba(255,255,255,.045); border:1px solid var(—gm-line-dark); box-shadow:var(—gm-shadow-dark); } .gm-home-marquiz-frame-inner{ min-height:720px; background:#fff; } .gm-home-marquiz-frame iframe{ display:block; width:100%; height:720px; border:0; background:#fff; } .gm-home-marquiz-fallback{ padding:18px 22px 22px; border-top:1px solid var(—gm-line-dark); color:rgba(255,255,255,.64); font-size:14px; line-height:1.5; } .gm-home-marquiz-fallback a{ color:#fff; border-bottom:1px solid rgba(255,255,255,.35); } /* REVIEWS */ #gm-home-reviews .gm-home-wrap{ width:min(1320px,calc(100% — 48px)); } .gm-home-reviews-grid{ display:grid; grid-template-columns:.64fr 1.36fr; gap:22px; align-items:start; } .gm-home-review-card{ padding:32px; border-radius:var(—gm-radius); background:#fff; border:1px solid var(—gm-line); box-shadow:var(—gm-shadow); } .gm-home-review-card-head{ display:flex; align-items:flex-start; justify-content:space-between; gap:18px; margin-bottom:16px; } .gm-home-review-card-head .gm-home-kicker{margin-bottom:0;} .gm-home-review-badge{ flex:0 0 auto; display:block; padding:7px 9px; border-radius:14px; background:var(—gm-cream-2); border:1px solid var(—gm-line); transition:transform .22s ease, box-shadow .22s ease, border-color .22s ease; } .gm-home-review-badge:hover{ transform:translateY(-2px); border-color:rgba(184,150,103,.42); box-shadow:0 12px 30px rgba(22,18,14,.10); } .gm-home-review-badge img{ width:128px; height:45px; object-fit:contain; } .gm-home-review-card h2{ margin:0 0 14px; font-size:clamp(34px,4.2vw,56px); line-height:1.02; letter-spacing:-.055em; } .gm-home-review-card p{ margin:0 0 22px; color:var(—gm-muted); font-size:16px; line-height:1.65; } .gm-home-review-rating{ display:flex; flex-wrap:wrap; gap:12px; align-items:center; margin:0 0 22px; } .gm-home-review-score{ display:inline-flex; align-items:center; gap:8px; padding:9px 13px; border-radius:999px; background:rgba(184,150,103,.14); color:var(—gm-text); font-size:15px; font-weight:800; } .gm-home-review-stars{ color:#f5b400; font-size:15px; letter-spacing:.04em; white-space:nowrap; } .gm-home-review-source{ color:var(—gm-muted); font-size:13px; line-height:1.35; } .gm-home-review-list{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; align-items:start; } .gm-home-review-quote{ position:relative; min-height:0; display:flex; flex-direction:column; padding:20px; border-radius:var(—gm-radius-sm); background:#fff; border:1px solid var(—gm-line); color:var(—gm-text)!important; box-shadow:0 18px 55px rgba(22,18,14,.07); transition:transform .22s ease, box-shadow .22s ease, border-color .22s ease; } .gm-home-review-quote:hover{ transform:translateY(-3px); border-color:rgba(184,150,103,.42); box-shadow:0 24px 70px rgba(22,18,14,.12); } .gm-home-review-quote:before{ content:»“»; position:absolute; right:16px; top:8px; color:rgba(184,150,103,.13); font-size:62px; line-height:1; font-weight:800; } .gm-home-review-quote blockquote{ position:relative; z-index:1; min-height:86px; margin:0; padding-right:18px; color:#2b2925; font-size:14px; line-height:1.5; } .gm-home-review-media{ position:relative; z-index:1; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:7px; margin-top:14px; } .gm-home-review-media img{ width:100%; aspect-ratio:1/1; height:auto; object-fit:cover; border-radius:10px; background:var(—gm-cream-3); } .gm-home-review-person{ position:relative; z-index:1; margin-top:16px; display:grid; grid-template-columns:38px minmax(0,1fr); gap:10px; align-items:center; } .gm-home-review-avatar{ width:38px; height:38px; display:grid; place-items:center; border-radius:50%; background:#efe8de; color:var(—gm-brass); font-size:12px; font-weight:800; } .gm-home-review-person strong{ display:block; margin-bottom:2px; color:#171717; font-size:13px; line-height:1.2; font-weight:800; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; } .gm-home-review-person span{ display:block; color:#8a8a8a; font-size:12px; line-height:1.25; } .gm-home-review-yrow{ position:relative; z-index:1; display:flex; flex-wrap:wrap; gap:8px 10px; align-items:center; margin-top:12px; color:#8a8a8a; font-size:12px; line-height:1.35; } .gm-home-review-link{ position:relative; z-index:1; margin-top:18px; padding-top:0; color:var(—gm-brass)!important; font-size:13px; font-weight:800; } /* WHEN + FAQ */ .gm-home-when-grid{ display:grid; grid-template-columns:.9fr 1.1fr; gap:40px; align-items:start; } .gm-home-check-list{ margin:0; padding:0; list-style:none; display:grid; gap:12px; } .gm-home-check-list li{ display:grid; grid-template-columns:24px 1fr; gap:12px; color:var(—gm-muted); font-size:16px; line-height:1.55; } .gm-home-check-list li:before{ content:»✓»; width:24px; height:24px; display:grid; place-items:center; border-radius:50%; background:rgba(184,150,103,.16); color:var(—gm-brass); font-size:13px; font-weight:800; } .gm-home-faq{ display:grid; gap:12px; } .gm-home-faq details{ padding:20px 22px; border-radius:var(—gm-radius-sm); background:#fff; border:1px solid var(—gm-line); box-shadow:0 12px 36px rgba(22,18,14,.06); } .gm-home-faq summary{ cursor:pointer; font-size:17px; font-weight:700; line-height:1.25; } .gm-home-faq p{ margin:14px 0 0; color:var(—gm-muted); font-size:15px; line-height:1.6; } /* FINAL */ .gm-home-final{ min-height:650px; position:relative; display:flex; align-items:center; overflow:hidden; background:#000; color:#fff; } .gm-home-final img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; opacity:.70; } .gm-home-final:after{ content:»»; position:absolute; inset:0; background: linear-gradient(90deg,rgba(0,0,0,.84) 0%,rgba(0,0,0,.62) 48%,rgba(0,0,0,.28) 100%), linear-gradient(180deg,rgba(0,0,0,.12) 0%,rgba(0,0,0,.58) 100%); } .gm-home-final-content{ position:relative; z-index:2; max-width:850px; padding:96px 0; } /* RESPONSIVE */ @media(max-width:1120px){ .gm-home-head, .gm-home-idea-grid, .gm-home-pick-box, .gm-home-reviews-grid, .gm-home-when-grid{ display:block; } .gm-home-head .gm-home-lead, .gm-home-idea-copy, .gm-home-pick-copy{ margin-top:14px; } .gm-home-directions-grid, .gm-home-portfolio-grid, .gm-home-process-grid, .gm-home-materials-grid{ grid-template-columns:1fr 1fr; } .gm-home-scenarios-grid, .gm-home-trust-grid{ grid-template-columns:1fr 1fr; } .gm-home-idea-media{ margin-top:34px; min-height:420px; } .gm-home-idea-media img{ min-height:420px; } .gm-home-review-list{ margin-top:22px; } } @media(max-width:760px){ .gm-home-wrap{ width:min(100% — 28px,1200px); } .gm-home-section{ padding:68px 0; } .gm-home-hero{ min-height:720px; align-items:flex-end; } .gm-home-hero:after{ background:linear-gradient(180deg,rgba(0,0,0,.20) 0%,rgba(0,0,0,.70) 54%,rgba(0,0,0,.92) 100%); } .gm-home-hero-content{ padding:150px 0 58px; } .gm-home-title-xl{ font-size:42px; } .gm-home-title{ font-size:36px; } .gm-home-title-sm{ font-size:30px; } .gm-home-lead, .gm-home-hero-text{ font-size:16px; } .gm-home-btn{ width:100%; } .gm-home-directions-grid, .gm-home-scenarios-grid, .gm-home-portfolio-grid, .gm-home-process-grid, .gm-home-trust-grid, .gm-home-materials-grid, .gm-home-review-list{ grid-template-columns:1fr; } .gm-home-direction{ min-height:340px; } .gm-home-scenario img, .gm-home-project img, .gm-home-material img{ height:240px; } .gm-home-principles{ grid-template-columns:1fr; } .gm-home-marquiz-layout{ grid-template-columns:1fr; } .gm-home-marquiz-info{ padding:28px; } .gm-home-marquiz-frame-inner, .gm-home-marquiz-frame iframe{ min-height:760px; height:760px; } .gm-home-final{ min-height:620px; } } @media(max-width:430px){ .gm-home-title-xl{ font-size:38px; } } /* GM HOME LAUNCH: mobile first-screen polish */ @media(max-width:760px){ .gm-home-hero{ min-height:690px; } .gm-home-hero-content{ padding:128px 0 48px; } .gm-home-title-xl{ font-size:38px; line-height:1.03; letter-spacing:-.052em; } .gm-home-hero-text{ font-size:15px; line-height:1.48; } .gm-home-hero-note{ margin-top:22px; gap:8px 12px; font-size:12px; } .gm-home-hero-line{ display:none; } .gm-home-btn{ min-height:50px; } } /* GM HOME LAUNCH: mobile hero final polish */ @media(max-width:760px){ .gm-home-hero{ min-height:660px; } .gm-home-hero-content{ padding:118px 0 42px; } .gm-home-hero .gm-home-kicker{ margin-bottom:14px; font-size:12px; } .gm-home-title-xl{ font-size:35px; line-height:1.04; letter-spacing:-.045em; } .gm-home-hero-text{ margin-bottom:24px; font-size:14px; line-height:1.48; } .gm-home-hero-note{ margin-top:20px; display:grid; grid-template-columns:1fr 1fr; gap:8px 10px; font-size:12px; line-height:1.25; } .gm-home-hero-note span{ align-items:flex-start; } } /* GM HOME LAUNCH: mobile overflow fix */ @media(max-width:760px){ .gm-home-hero-content, .gm-home-hero-text, .gm-home-title-xl{ width:100%; max-width:100%; } .gm-home-title-xl{ font-size:30px; line-height:1.08; letter-spacing:-.025em; text-wrap:wrap; } .gm-home-hero-text{ font-size:13px; line-height:1.48; padding-right:0; } } /* GM HOME LAUNCH: controlled mobile h1 breaks */ .gm-home-mobile-br{ display:none; } @media(max-width:760px){ .gm-home-mobile-br{ display:block; } } /* GM HOME LAUNCH: mobile text column */ @media(max-width:760px){ .gm-home-hero .gm-home-kicker, .gm-home-title-xl, .gm-home-hero-text{ max-width:340px; } .gm-home-hero-note{ max-width:340px; } } /* GM HOME FIX: instant mobile contacts and compact hero buttons */ .header__contacts .gm-header-social{ display:flex; align-items:center; gap:10px; margin-left:0; } .gm-header-social-icon{ width:38px; height:38px; display:inline-flex!important; align-items:center; justify-content:center; border-radius:50%; border:1px solid rgba(255,255,255,.55); background:rgba(0,0,0,.18); color:#fff!important; flex:0 0 auto; } .gm-header-social-icon svg{ width:18px; height:18px; display:block; fill:currentColor; } .gm-header-social .gm-tg{color:#2AABEE!important;} .gm-header-social .gm-wa{color:#25D366!important;} .gm-header-social .gm-mail{color:#fff!important;} .header__contacts > .gm-social-menu:not(.gm-header-social){ display:none!important; } @media(max-width:760px){ body:has(.gm-home) .header__bottom{ padding:12px 0!important; } body:has(.gm-home) .header__bottom-wrap{ display:block!important; } body:has(.gm-home) .header__logo{ display:none!important; } body:has(.gm-home) .header__contacts{ display:grid!important; grid-template-columns:auto 1fr; gap:8px 10px!important; align-items:center; } body:has(.gm-home) .header__contacts .gm-header-social{ grid-column:1; grid-row:1; gap:8px; } body:has(.gm-home) .gm-header-social-icon{ width:34px; height:34px; } body:has(.gm-home) .gm-header-social-icon svg{ width:16px; height:16px; } body:has(.gm-home) .header__phone{ grid-column:1 / -1; grid-row:2; display:block!important; width:max-content; margin:0 auto; color:#fff!important; font-size:14px!important; line-height:1.2; } body:has(.gm-home) .header__contacts > .btn{ grid-column:2; grid-row:1; justify-self:end; min-height:38px; max-width:none; width:auto; padding:0 18px; font-size:13px; white-space:nowrap; } body:has(.gm-home) .bar-menu{ display:none!important; } .gm-home-hero .gm-home-btns{ width:100%; max-width:340px; display:grid; grid-template-columns:1fr 1fr; gap:10px; } .gm-home-hero .gm-home-btn{ width:auto; min-height:42px; padding:0 14px; font-size:13px; } .gm-home-hero .gm-home-btn:first-child{ grid-column:1 / -1; } } /* GM HOME FIX: mobile header without cropped callback button */ @media(max-width:760px){ body:has(.gm-home) .header__contacts{ display:flex!important; flex-wrap:wrap; justify-content:center!important; gap:8px 14px!important; } body:has(.gm-home) .header__contacts > .btn{ display:none!important; } body:has(.gm-home) .header__contacts .gm-header-social{ order:1; } body:has(.gm-home) .header__phone{ order:2; display:block!important; width:100%; text-align:center; margin:0; } } /* GM HOME FIX: mobile menu and callback restored */ @media(max-width:760px){ body:has(.gm-home) .header__bottom{ padding:10px 0 9px!important; } body:has(.gm-home) .header__contacts{ width:100%; display:grid!important; grid-template-columns:1fr auto; grid-template-areas: «social menu» «phone callback»; gap:8px 12px!important; align-items:center; } body:has(.gm-home) .header__contacts .gm-header-social{ grid-area:social; justify-self:start; order:initial; gap:8px; } body:has(.gm-home) .gm-header-social-icon{ width:32px; height:32px; } body:has(.gm-home) .gm-header-social-icon svg{ width:15px; height:15px; } body:has(.gm-home) .bar-menu{ grid-area:menu; justify-self:end; width:34px; height:34px; display:flex!important; align-items:center; justify-content:center; border:1px solid rgba(255,255,255,.55); border-radius:50%; background:rgba(0,0,0,.18); } body:has(.gm-home) .bar-menu span, body:has(.gm-home) .bar-menu span:before, body:has(.gm-home) .bar-menu span:after{ width:16px; height:2px; background:#fff; } body:has(.gm-home) .bar-menu span:before{ top:-5px; } body:has(.gm-home) .bar-menu span:after{ top:5px; } body:has(.gm-home) .header__phone{ grid-area:phone; order:initial; display:block!important; width:auto; margin:0; justify-self:start; text-align:left; color:#fff!important; font-size:13px!important; line-height:1.2; white-space:nowrap; } body:has(.gm-home) .header__contacts > .btn{ grid-area:callback; display:inline-flex!important; justify-self:end; width:auto; max-width:none; min-height:34px; padding:0 14px; border-radius:999px; font-size:12px; line-height:1; white-space:nowrap; } body:has(.gm-home) .header__top.open{ display:block!important; } } /* GM HOME FIX: mobile header final layout */ @media(max-width:760px){ body:has(.gm-home) .header__bottom{ padding:9px 0 10px!important; } body:has(.gm-home) .header__bottom .container{ width:100%!important; max-width:none!important; padding-left:20px!important; padding-right:20px!important; } body:has(.gm-home) .header__bottom-wrap{ display:block!important; width:100%!important; } body:has(.gm-home) .header__contacts{ width:100%!important; max-width:100%!important; display:grid!important; grid-template-columns:minmax(0, 1fr) auto!important; grid-template-areas: «social menu» «phone callback»!important; gap:8px 10px!important; align-items:center!important; justify-content:stretch!important; overflow:visible!important; } body:has(.gm-home) .header__contacts .gm-header-social{ grid-area:social!important; justify-self:start!important; display:flex!important; gap:8px!important; margin:0!important; min-width:0!important; order:0!important; position:static!important; } body:has(.gm-home) .gm-header-social-icon{ width:32px!important; height:32px!important; } body:has(.gm-home) .bar-menu{ grid-area:menu!important; justify-self:end!important; align-self:center!important; position:static!important; display:flex!important; width:34px!important; min-width:34px!important; height:34px!important; margin:0!important; padding:0!important; opacity:1!important; visibility:visible!important; } body:has(.gm-home) .header__phone{ grid-area:phone!important; justify-self:start!important; width:auto!important; min-width:0!important; max-width:100%!important; margin:0!important; text-align:left!important; font-size:13px!important; line-height:1.2!important; white-space:nowrap!important; position:static!important; order:0!important; } body:has(.gm-home) .header__contacts > .btn{ grid-area:callback!important; justify-self:end!important; align-self:center!important; display:inline-flex!important; position:static!important; width:auto!important; min-width:0!important; max-width:128px!important; min-height:32px!important; height:32px!important; margin:0!important; padding:0 11px!important; border-radius:999px!important; font-size:11px!important; line-height:1!important; white-space:nowrap!important; overflow:visible!important; transform:none!important; } } /* GM HOME FIX: mobile menu real panel */ @media(max-width:760px){ body:has(.gm-home):has(.bar-menu.active){ overflow-x:hidden!important; overflow-y:auto!important; } body:has(.gm-home) .header{ overflow:visible!important; } body:has(.gm-home) .header__top{ position:absolute!important; top:100%!important; left:14px!important; right:14px!important; width:auto!important; height:auto!important; max-height:0!important; min-height:0!important; display:block!important; opacity:0!important; visibility:hidden!important; pointer-events:none!important; transform:none!important; z-index:99991!important; overflow:hidden!important; padding:0!important; border:1px solid rgba(255,255,255,.14)!important; border-top:0!important; border-radius:0 0 18px 18px!important; background:rgba(14,14,14,.96)!important; box-shadow:0 18px 40px rgba(0,0,0,.42)!important; backdrop-filter:blur(14px)!important; -webkit-backdrop-filter:blur(14px)!important; transition:max-height .24s ease, opacity .18s ease, visibility .18s ease!important; } body:has(.gm-home) .header__top.open, body:has(.gm-home) .header__top.open.active{ max-height:520px!important; opacity:1!important; visibility:visible!important; pointer-events:auto!important; transform:none!important; } body:has(.gm-home) .header__top .container{ width:100%!important; max-width:none!important; padding:8px 0 10px!important; } body:has(.gm-home) .header__nav ul{ display:flex!important; flex-direction:column!important; align-items:stretch!important; justify-content:flex-start!important; gap:0!important; width:100%!important; margin:0!important; padding:0!important; } body:has(.gm-home) .header__nav li{ width:100%!important; margin:0!important; padding:0!important; border-top:1px solid rgba(255,255,255,.08)!important; } body:has(.gm-home) .header__nav li:first-child{ border-top:0!important; } body:has(.gm-home) .header__nav a{ display:block!important; padding:11px 18px!important; color:#fff!important; font-size:15px!important; line-height:1.22!important; letter-spacing:0!important; text-decoration:none!important; } body:has(.gm-home) .header__nav a:hover, body:has(.gm-home) .header__nav a:focus{ background:rgba(255,255,255,.06)!important; } body:has(.gm-home) .header__top .gm-social-menu{ display:none!important; } body:has(.gm-home) .bar-menu.active span{ background:transparent!important; } body:has(.gm-home) .bar-menu.active span:before, body:has(.gm-home) .bar-menu.active span:after{ top:0!important; left:0!important; width:16px!important; height:2px!important; background:#fff!important; transform-origin:center!important; } body:has(.gm-home) .bar-menu.active span:before{ transform:rotate(45deg)!important; } body:has(.gm-home) .bar-menu.active span:after{ transform:rotate(-45deg)!important; } } /* GM HOME FIX: mobile header redesign */ @media(max-width:760px){ body:has(.gm-home) .header{ position:absolute!important; overflow:visible!important; } body:has(.gm-home) .header__bottom{ padding:8px 0!important; background:rgba(12,12,12,.82)!important; border-bottom:1px solid rgba(255,255,255,.08)!important; backdrop-filter:blur(14px)!important; -webkit-backdrop-filter:blur(14px)!important; } body:has(.gm-home) .header__bottom .container{ width:100%!important; max-width:none!important; padding-left:16px!important; padding-right:16px!important; } body:has(.gm-home) .header__bottom-wrap{ display:block!important; width:100%!important; } body:has(.gm-home) .header__logo{ display:none!important; } body:has(.gm-home) .header__contacts{ display:flex!important; align-items:center!important; justify-content:space-between!important; gap:10px!important; width:100%!important; max-width:100%!important; min-height:36px!important; overflow:visible!important; } body:has(.gm-home) .header__phone{ order:1!important; flex:1 1 auto!important; width:auto!important; min-width:0!important; margin:0!important; color:#fff!important; font-size:15px!important; line-height:1.1!important; text-align:left!important; white-space:nowrap!important; letter-spacing:0!important; } body:has(.gm-home) .header__contacts .gm-header-social{ order:2!important; display:flex!important; align-items:center!important; gap:6px!important; width:auto!important; margin:0!important; position:static!important; flex:0 0 auto!important; } body:has(.gm-home) .gm-header-social-icon{ width:30px!important; height:30px!important; border-width:1px!important; border-color:rgba(255,255,255,.62)!important; background:rgba(255,255,255,.04)!important; color:#fff!important; } body:has(.gm-home) .gm-header-social-icon svg{ width:14px!important; height:14px!important; } body:has(.gm-home) .header__contacts > .btn{ display:none!important; } body:has(.gm-home) .bar-menu{ order:3!important; display:flex!important; align-items:center!important; justify-content:center!important; position:static!important; flex:0 0 34px!important; width:34px!important; min-width:34px!important; height:34px!important; margin:0!important; padding:0!important; border:1px solid rgba(255,255,255,.62)!important; border-radius:50%!important; background:rgba(255,255,255,.04)!important; opacity:1!important; visibility:visible!important; } body:has(.gm-home) .bar-menu span, body:has(.gm-home) .bar-menu span:before, body:has(.gm-home) .bar-menu span:after{ width:16px!important; height:2px!important; background:#fff!important; border-radius:2px!important; } body:has(.gm-home) .bar-menu span:before{ top:-5px!important; } body:has(.gm-home) .bar-menu span:after{ top:5px!important; } body:has(.gm-home) .bar-menu.active span{ background:transparent!important; } body:has(.gm-home) .bar-menu.active span:before{ top:0!important; transform:rotate(45deg)!important; } body:has(.gm-home) .bar-menu.active span:after{ top:0!important; transform:rotate(-45deg)!important; } body:has(.gm-home) .header__top{ position:absolute!important; top:100%!important; left:12px!important; right:12px!important; width:auto!important; height:auto!important; min-height:0!important; max-height:0!important; display:block!important; opacity:0!important; visibility:hidden!important; pointer-events:none!important; overflow:hidden!important; padding:0!important; border:1px solid rgba(255,255,255,.12)!important; border-top:0!important; border-radius:0 0 16px 16px!important; background:rgba(14,14,14,.96)!important; box-shadow:0 18px 42px rgba(0,0,0,.45)!important; transform:none!important; z-index:99991!important; transition:max-height .22s ease, opacity .16s ease, visibility .16s ease!important; } body:has(.gm-home) .header__top.open, body:has(.gm-home) .header__top.open.active{ max-height:520px!important; opacity:1!important; visibility:visible!important; pointer-events:auto!important; transform:none!important; } body:has(.gm-home) .header__top .container{ width:100%!important; max-width:none!important; padding:10px 0 12px!important; } body:has(.gm-home) .header__nav ul{ display:flex!important; flex-direction:column!important; align-items:stretch!important; justify-content:flex-start!important; gap:0!important; width:100%!important; margin:0!important; padding:0!important; } body:has(.gm-home) .header__nav li{ width:100%!important; margin:0!important; padding:0!important; border-top:1px solid rgba(255,255,255,.08)!important; } body:has(.gm-home) .header__nav li:first-child, body:has(.gm-home) .header__nav li.gm-mobile-menu-callback + li{ border-top:0!important; } body:has(.gm-home) .header__nav a{ display:block!important; padding:11px 18px!important; color:#fff!important; font-size:15px!important; line-height:1.22!important; letter-spacing:0!important; text-decoration:none!important; } body:has(.gm-home) .header__nav a:hover, body:has(.gm-home) .header__nav a:focus{ background:rgba(255,255,255,.06)!important; } body:has(.gm-home) .header__top .gm-social-menu{ display:none!important; } body:has(.gm-home) .gm-mobile-menu-callback{ display:block!important; padding:8px 12px 12px!important; border-top:0!important; } body:has(.gm-home) .gm-mobile-menu-callback .gm-menu-callback{ display:flex!important; align-items:center!important; justify-content:center!important; min-height:42px!important; padding:0 16px!important; border-radius:999px!important; background:#C2A472!important; color:#fff!important; font-size:14px!important; font-weight:700!important; text-align:center!important; } body:has(.gm-home):has(.bar-menu.active){ overflow-x:hidden!important; overflow-y:auto!important; } } @media(max-width:374px){ body:has(.gm-home) .header__phone{ font-size:13px!important; } body:has(.gm-home) .gm-header-social-icon{ width:28px!important; height:28px!important; } body:has(.gm-home) .bar-menu{ flex-basis:32px!important; width:32px!important; min-width:32px!important; height:32px!important; } } /* GM HOME FIX: MAX messenger and phone tap target */ .gm-header-social .gm-max{ color:#fff!important; } @media(max-width:760px){ body:has(.gm-home) .header__phone{ position:relative!important; z-index:2!important; pointer-events:auto!important; } } @media(max-width:374px){ body:has(.gm-home) .header__contacts{ gap:8px!important; } body:has(.gm-home) .header__phone{ font-size:12px!important; } body:has(.gm-home) .header__contacts .gm-header-social{ gap:4px!important; } body:has(.gm-home) .gm-header-social-icon{ width:26px!important; height:26px!important; } body:has(.gm-home) .gm-header-social-icon svg{ width:12px!important; height:12px!important; } body:has(.gm-home) .bar-menu{ flex-basis:30px!important; width:30px!important; min-width:30px!important; height:30px!important; } } /* GM HOME FIX: desktop header cleanup */ @media(min-width:761px){ body:has(.gm-home) .gm-mobile-menu-callback{ display:none!important; } body:has(.gm-home) .header__top{ padding:13px 0!important; background:rgba(12,12,12,.90)!important; border-bottom:1px solid rgba(255,255,255,.08)!important; backdrop-filter:blur(12px)!important; -webkit-backdrop-filter:blur(12px)!important; } body:has(.gm-home) .header__nav ul{ display:flex!important; flex-direction:row!important; flex-wrap:nowrap!important; align-items:center!important; justify-content:center!important; gap:clamp(18px,1.7vw,32px)!important; width:100%!important; margin:0!important; padding:0!important; } body:has(.gm-home) .header__nav li{ flex:0 0 auto!important; margin:0!important; padding:0!important; } body:has(.gm-home) .header__nav a{ display:block!important; color:#fff!important; font-size:15px!important; line-height:1.08!important; white-space:nowrap!important; letter-spacing:0!important; text-align:center!important; } body:has(.gm-home) .header__bottom{ padding:18px 0 16px!important; background:rgba(12,12,12,.86)!important; border-bottom:1px solid rgba(255,255,255,.08)!important; backdrop-filter:blur(12px)!important; -webkit-backdrop-filter:blur(12px)!important; } body:has(.gm-home) .header__bottom-wrap{ display:grid!important; grid-template-columns:minmax(300px,360px) minmax(0,1fr)!important; gap:32px!important; align-items:center!important; } body:has(.gm-home) .header__logo{ display:block!important; width:340px!important; max-width:34vw!important; min-width:300px!important; overflow:visible!important; line-height:0!important; } body:has(.gm-home) .header__logo img{ display:block!important; width:100%!important; height:auto!important; max-height:88px!important; object-fit:contain!important; object-position:left center!important; } body:has(.gm-home) .header__contacts{ display:flex!important; align-items:center!important; justify-content:flex-end!important; gap:18px!important; min-width:0!important; } body:has(.gm-home) .header__phone{ display:inline-block!important; width:auto!important; margin:0!important; color:#fff!important; font-size:16px!important; line-height:1.15!important; white-space:nowrap!important; } body:has(.gm-home) .header__contacts .gm-header-social{ display:flex!important; align-items:center!important; gap:10px!important; margin:0!important; flex:0 0 auto!important; } body:has(.gm-home) .gm-header-social-icon{ width:34px!important; height:34px!important; border-width:1px!important; } body:has(.gm-home) .gm-header-social-icon svg{ width:15px!important; height:15px!important; } body:has(.gm-home) .header__contacts > .btn{ display:inline-flex!important; min-height:42px!important; width:auto!important; max-width:none!important; padding:0 22px!important; font-size:14px!important; line-height:1!important; white-space:nowrap!important; } body:has(.gm-home) .bar-menu{ display:none!important; } } @media(min-width:761px) and (max-width:1280px){ body:has(.gm-home) .header__nav ul{ gap:14px!important; } body:has(.gm-home) .header__nav a{ font-size:13px!important; } body:has(.gm-home) .header__bottom-wrap{ grid-template-columns:minmax(250px,300px) minmax(0,1fr)!important; gap:20px!important; } body:has(.gm-home) .header__logo{ width:300px!important; min-width:250px!important; } body:has(.gm-home) .header__contacts{ gap:12px!important; } body:has(.gm-home) .header__phone{ font-size:14px!important; } body:has(.gm-home) .gm-header-social-icon{ width:31px!important; height:31px!important; } body:has(.gm-home) .header__contacts > .btn{ min-height:38px!important; padding:0 16px!important; font-size:13px!important; } } /* GM HOME FIX: tablet header uses compact menu */ @media(min-width:761px) and (max-width:1180px){ body:has(.gm-home) .header__top{ position:absolute!important; top:100%!important; left:14px!important; right:14px!important; width:auto!important; height:auto!important; min-height:0!important; max-height:0!important; display:block!important; opacity:0!important; visibility:hidden!important; pointer-events:none!important; overflow:hidden!important; padding:0!important; border:1px solid rgba(255,255,255,.12)!important; border-top:0!important; border-radius:0 0 16px 16px!important; background:rgba(14,14,14,.96)!important; box-shadow:0 18px 42px rgba(0,0,0,.45)!important; transform:none!important; z-index:99991!important; transition:max-height .22s ease, opacity .16s ease, visibility .16s ease!important; } body:has(.gm-home) .header__top.open, body:has(.gm-home) .header__top.open.active{ max-height:560px!important; opacity:1!important; visibility:visible!important; pointer-events:auto!important; transform:none!important; } body:has(.gm-home) .header__top .container{ width:100%!important; max-width:none!important; padding:10px 0 12px!important; } body:has(.gm-home) .header__nav ul{ display:flex!important; flex-direction:column!important; align-items:stretch!important; justify-content:flex-start!important; gap:0!important; width:100%!important; margin:0!important; padding:0!important; } body:has(.gm-home) .header__nav li{ width:100%!important; margin:0!important; padding:0!important; border-top:1px solid rgba(255,255,255,.08)!important; } body:has(.gm-home) .header__nav li:first-child, body:has(.gm-home) .header__nav li.gm-mobile-menu-callback + li{ border-top:0!important; } body:has(.gm-home) .header__nav a{ display:block!important; padding:11px 18px!important; color:#fff!important; font-size:15px!important; line-height:1.22!important; white-space:normal!important; letter-spacing:0!important; text-align:left!important; text-decoration:none!important; } body:has(.gm-home) .gm-mobile-menu-callback{ display:block!important; padding:8px 12px 12px!important; border-top:0!important; } body:has(.gm-home) .gm-mobile-menu-callback .gm-menu-callback{ display:flex!important; align-items:center!important; justify-content:center!important; min-height:42px!important; padding:0 16px!important; border-radius:999px!important; background:#C2A472!important; color:#fff!important; font-size:14px!important; font-weight:700!important; text-align:center!important; } body:has(.gm-home) .header__bottom{ padding:10px 0!important; background:rgba(12,12,12,.86)!important; } body:has(.gm-home) .header__bottom-wrap{ display:grid!important; grid-template-columns:minmax(220px,290px) minmax(0,1fr)!important; gap:18px!important; align-items:center!important; } body:has(.gm-home) .header__logo{ display:block!important; width:290px!important; min-width:220px!important; max-width:32vw!important; line-height:0!important; overflow:visible!important; } body:has(.gm-home) .header__logo img{ display:block!important; width:100%!important; height:auto!important; max-height:72px!important; object-fit:contain!important; object-position:left center!important; } body:has(.gm-home) .header__contacts{ display:flex!important; align-items:center!important; justify-content:flex-end!important; gap:10px!important; min-width:0!important; } body:has(.gm-home) .header__phone{ display:inline-block!important; width:auto!important; margin:0!important; font-size:14px!important; white-space:nowrap!important; } body:has(.gm-home) .header__contacts .gm-header-social{ display:flex!important; align-items:center!important; gap:6px!important; margin:0!important; } body:has(.gm-home) .gm-header-social-icon{ width:30px!important; height:30px!important; } body:has(.gm-home) .gm-header-social-icon svg{ width:13px!important; height:13px!important; } body:has(.gm-home) .header__contacts > .btn{ display:none!important; } body:has(.gm-home) .bar-menu{ display:flex!important; align-items:center!important; justify-content:center!important; position:static!important; flex:0 0 34px!important; width:34px!important; min-width:34px!important; height:34px!important; margin:0!important; padding:0!important; border:1px solid rgba(255,255,255,.62)!important; border-radius:50%!important; background:rgba(255,255,255,.04)!important; } body:has(.gm-home) .bar-menu span, body:has(.gm-home) .bar-menu span:before, body:has(.gm-home) .bar-menu span:after{ width:16px!important; height:2px!important; background:#fff!important; border-radius:2px!important; } body:has(.gm-home) .bar-menu span:before{ top:-5px!important; } body:has(.gm-home) .bar-menu span:after{ top:5px!important; } body:has(.gm-home) .bar-menu.active span{ background:transparent!important; } body:has(.gm-home) .bar-menu.active span:before{ top:0!important; transform:rotate(45deg)!important; } body:has(.gm-home) .bar-menu.active span:after{ top:0!important; transform:rotate(-45deg)!important; } } /* GM HOME FIX: tablet burger icon */ @media(min-width:761px) and (max-width:1180px){ body:has(.gm-home) .bar-menu span{ display:block!important; position:relative!important; } body:has(.gm-home) .bar-menu span:before, body:has(.gm-home) .bar-menu span:after{ content:»»!important; position:absolute!important; left:0!important; display:block!important; } } /* GM HOME FIX: tablet menu label */ @media(min-width:761px) and (max-width:1180px){ body:has(.gm-home) .bar-menu{ flex:0 0 auto!important; width:auto!important; min-width:86px!important; height:36px!important; padding:0 18px!important; border-radius:999px!important; gap:0!important; color:#fff!important; font-family:’Manrope’,Arial,sans-serif!important; font-size:14px!important; line-height:1!important; letter-spacing:0!important; } body:has(.gm-home) .bar-menu:before{ content:»Меню»!important; display:block!important; } body:has(.gm-home) .bar-menu.active:before{ content:»Закрыть»!important; } body:has(.gm-home) .bar-menu span{ display:none!important; } } /* GM HOME FIX: menu label on all compact headers */ @media(max-width:1180px){ body:has(.gm-home) .bar-menu{ flex:0 0 auto!important; width:auto!important; min-width:82px!important; height:34px!important; padding:0 16px!important; border-radius:999px!important; color:#fff!important; font-family:’Manrope’,Arial,sans-serif!important; font-size:13px!important; line-height:1!important; letter-spacing:0!important; } body:has(.gm-home) .bar-menu:before{ content:»Меню»!important; display:block!important; } body:has(.gm-home) .bar-menu.active:before{ content:»Закрыть»!important; } body:has(.gm-home) .bar-menu span{ display:none!important; } } @media(max-width:374px){ body:has(.gm-home) .bar-menu{ min-width:74px!important; height:32px!important; padding:0 12px!important; font-size:12px!important; } } /* GM HOME V7 SELLING HUB BLOCKS */ .gm-home-flow-grid, .gm-home-pain-grid, .gm-home-send-grid, .gm-home-start-grid, .gm-home-price-grid{ display:grid; gap:18px; } .gm-home-pain-grid, .gm-home-price-grid{ grid-template-columns:repeat(4,minmax(0,1fr)); } .gm-home-send-grid{ grid-template-columns:repeat(5,minmax(0,1fr)); } .gm-home-start-grid{ grid-template-columns:repeat(3,minmax(0,1fr)); } .gm-home-v7-card, .gm-home-pain-card, .gm-home-send-card, .gm-home-start-card, .gm-home-price-card{ border:1px solid rgba(23,23,23,.10); border-radius:24px; background:rgba(255,255,255,.74); padding:24px; box-shadow:0 16px 46px rgba(23,23,23,.06); } .gm-home-v7-card h3, .gm-home-pain-card h3, .gm-home-send-card h3, .gm-home-start-card h3, .gm-home-price-card h3{ margin:0 0 10px; color:#171717; font-size:20px; line-height:1.18; letter-spacing:-.035em; } .gm-home-v7-card p, .gm-home-pain-card p, .gm-home-send-card p, .gm-home-start-card p, .gm-home-price-card p{ margin:0; color:#6A6258; font-size:15px; line-height:1.62; } .gm-home-card-num{ display:inline-flex; align-items:center; justify-content:center; width:34px; height:34px; margin:0 0 16px; border-radius:50%; background:#B89667; color:#fff; font-size:13px; font-weight:800; } .gm-home-start{ background:#111; color:#fff; } .gm-home-start .gm-home-title-sm, .gm-home-start .gm-home-start-card h3{ color:#fff; } .gm-home-start .gm-home-lead, .gm-home-start .gm-home-start-card p{ color:rgba(255,255,255,.74); } .gm-home-start .gm-home-start-card{ background:rgba(255,255,255,.08); border-color:rgba(255,255,255,.14); box-shadow:none; } .gm-home-start .gm-home-card-num{ background:#C8AA78; color:#111; } .gm-home-start-card .gm-home-btn{ margin-top:22px; } .gm-home-section-cta-double{ display:flex; flex-wrap:wrap; gap:12px; justify-content:center; margin-top:30px; } .gm-home-sticky-cta{ display:none; } @media(max-width:1024px){ .gm-home-pain-grid, .gm-home-price-grid, .gm-home-send-grid{ grid-template-columns:repeat(2,minmax(0,1fr)); } .gm-home-start-grid{ grid-template-columns:1fr; } } @media(max-width:760px){ .gm-home-pain-grid, .gm-home-price-grid, .gm-home-send-grid{ grid-template-columns:1fr; } .gm-home-v7-card, .gm-home-pain-card, .gm-home-send-card, .gm-home-start-card, .gm-home-price-card{ padding:20px; border-radius:20px; } .gm-home-sticky-cta{ position:fixed; left:12px; right:12px; bottom:12px; z-index:99990; display:grid; grid-template-columns:1fr 1fr; gap:8px; padding:8px; border-radius:22px; background:rgba(16,16,16,.92); box-shadow:0 18px 55px rgba(0,0,0,.34); backdrop-filter:blur(12px); } .gm-home-sticky-cta a{ min-height:46px; border-radius:999px; display:flex; align-items:center; justify-content:center; font-family:Manrope,Arial,sans-serif; font-size:14px; font-weight:800; text-decoration:none; } .gm-home-sticky-main{ background:#B89667; color:#fff; } .gm-home-sticky-second{ background:rgba(255,255,255,.08); color:#fff; border:1px solid rgba(255,255,255,.18); } body:has(.gm-lead-modal.is-open) .gm-home-sticky-cta, body:has(.gm-chat-modal) .gm-home-sticky-cta, body:has(.gm-pfm-modal.is-open) .gm-home-sticky-cta{ display:none!important; } } /* GM HOME V7.2: modal triggers are buttons, not hash-link placeholders */ button.gm-home-btn, button.gm-home-card-link, button.gm-home-sticky-main{ appearance:none; -webkit-appearance:none; font-family:inherit; text-decoration:none; } button.gm-home-card-link{ border-top:0; border-left:0; border-right:0; background:transparent; cursor:pointer; } button.gm-home-sticky-main{ cursor:pointer; }
Гардеробная система в современном интерьере
GarderobeMaster · системы хранения на заказ

Гардеробные и системы хранения на заказ — под вашу планировку, вещи и интерьер

Проектируем гардеробные комнаты, открытые системы, шкафы, двери и перегородки под размеры помещения. Проверяем проходы, объём хранения, материалы, подсветку и внешний вид до производства.

20+ лет опыта 3D-проект до производства Замер и монтаж под ключ Москва и область
Начать можно с фото, размеров, планировки или короткого описания задачи.
Опыт20+ лет опыта

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

Проект3D-проект до запуска

Показываем пропорции, наполнение, материалы и внешний вид системы до изготовления.

РазмерыИзготовление под размеры

Проектируем решение под помещение, а не под готовый модуль.

МонтажМонтаж под ключ

Связываем проектирование, производство, доставку и установку в один процесс.

Проектный подход

Почему готовый шкаф или случайная система не всегда решают хранение

Готовое решение может подойти по ширине, но не учитывать проходы, ежедневный доступ, сезонные вещи, подсветку, двери и визуальную нагрузку интерьера.

Проходы

Система должна не мешать движению, дверям, кровати, входной зоне и другой мебели.

Доступ

Ежедневные вещи должны быть на удобной высоте, а не слишком высоко, глубоко или далеко.

Порядок

Одежда, обувь, сумки, чемоданы и сезонные вещи должны складываться в понятный сценарий.

Интерьер

Хранение должно поддерживать пространство, а не превращать комнату в склад.

Направления

Создаём системы хранения для разных задач и пространств

Выберите направление или начните с описания помещения — мы подскажем, какой формат хранения подойдёт: гардеробная комната, открытая система, шкаф, двери или перегородки.

Гардеробная комната

Гардеробные комнаты

Для отдельной зоны хранения, master-bedroom, большого объёма одежды, обуви, аксессуаров и сезонных вещей.

Смотреть гардеробные
Индивидуальная система хранения

Индивидуальные системы хранения

Для ниш, стен, кладовых, мансард и нестандартных помещений, где готовые решения дают лишние зазоры.

Подробнее о системах
Интерьерная система хранения

Интерьерные системы хранения

Для открытых и архитектурных решений, которые становятся частью интерьера.

Смотреть решения
Шкафы двери и перегородки

Шкафы, двери и перегородки

Для закрытого хранения, зонирования, фасадов и раздвижных решений.

Выбрать решение
Проектный подход

Проект начинается с того, как вы живёте

Мы не начинаем с выбора полок. Сначала смотрим помещение, количество вещей, привычки хранения, проходы, высоты, свет и стиль интерьера. Так появляется система, которой удобно пользоваться каждый день.

Дизайнеры и мастера учитывают детали, которые легко не заметить заранее: где будет удобно доставать вещи, как откроются двери, не появятся ли тёмные зоны и не перегрузит ли система интерьер.

Под ваши вещиОдежда, обувь, аксессуары, сезонное и хозяйственное хранение.
Под помещениеРазмеры, ниши, углы, проходы, свет и особенности планировки.
Под интерьерМатериалы, цвет, фасады, двери, перегородки и подсветка.
Проектирование системы хранения
Сценарии

Создадим решение под ваше помещение

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

Гардеробная в спальне

Гардеробная в спальне

Когда нужно хранение рядом с ежедневными вещами, но важно сохранить лёгкость комнаты.

Система хранения в нише

Система в нише

Когда нужно использовать проём, стену или нишу без случайных зазоров.

Отдельная гардеробная

Отдельная гардеробная

Когда вещей много и нужно собрать одежду, обувь, аксессуары и сезонное хранение в одном месте.

Открытая гардеробная система

Открытая система

Когда хранение должно стать частью интерьера без массивных фасадов.

Шкаф под размеры

Шкаф под размеры

Когда нужно закрытое хранение под точные размеры помещения.

Перегородки и двери

Перегородки и двери

Когда нужно зонировать пространство или скрыть хранение без капитальных стен.

Портфолио

Реализованные проекты GarderobeMaster

Посмотрите, как похожие задачи решаются в реальных интерьерах: открытые системы, закрытые фасады, комбинированные решения, перегородки, шкафы и гардеробные комнаты под разные планировки.

Гардеробная МДФ с покраской RAL
Реальный проект

Гардеробная МДФ с покраской RAL

Классическая гардеробная с фасадами, капителями и индивидуальным проектом.

Гардеробная система Vitra Black
Реальный проект

Гардеробная система Vitra Black

Система хранения с материалами под дерево и фурнитурой Blum.

Гардеробная с дверями купе
Реальный проект

Гардеробная с дверями купе

Решение с закрытыми секциями и отдельной зоной для бытовой техники.

Классическая гардеробная система
Реальный проект

Классическая гардеробная

Проект с окраской по RAL, индивидуальным наполнением и точной установкой.

Первый расчёт

Для первого расчёта не нужен готовый проект

Пришлите то, что уже есть: фото, размеры, планировку, PDF, визуализацию или короткое описание задачи. Этого достаточно, чтобы понять следующий шаг.

Фото помещения

Стена, ниша, комната, проём, входная зона или место будущей системы.

Размеры

Ширина, высота, глубина, расположение дверей, выступов и розеток.

Планировка

БТИ, план дизайнера, схема от руки, PDF или скрин из проекта.

Пример решения

Фото или картинка, которая нравится по формату, цвету или настроению.

Описание задачи

Что нужно хранить, что скрыть, что должно быть в быстром доступе.

Предварительная оценка

Стоимость зависит не только от размера

На цену влияет не только ширина стены или площадь комнаты. Важны формат системы, наполнение, материалы, подсветка, двери, перегородки и сложность монтажа.

Размер и геометрия

Ширина, высота, глубина, ниши, углы, выступы, мансарды и нестандартные зоны.

Формат решения

Открытая система, корпусное хранение, закрытые фасады, двери, перегородки или комбинированный вариант.

Наполнение

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

Материалы и монтаж

Декоры, профили, фурнитура, подсветка, доставка, сборка и установка.

Процесс

От первого фото до готовой системы хранения

Понятный путь от первого обращения до готового решения в интерьере.

Вы присылаете фото, размеры или планировку

Можно начать с одного фото помещения или короткого описания задачи.

Уточняем задачу и формат хранения

Что нужно хранить, что скрыть, что должно быть в быстром доступе.

Готовим проект и предварительную оценку

Показываем пропорции, наполнение, материалы и визуальную нагрузку.

Производим и устанавливаем

Изготавливаем элементы под проект, доставляем, монтируем и сдаём готовое решение.

Доверие

Почему нам доверяют проекты хранения

Более 20 лет опыта

Проектируем системы хранения с 2004 года и видим ошибки планировки до производства.

Индивидуальный проект

Решение создаётся под размеры, вещи, привычки и интерьер.

3D-проект до производства

Вы заранее видите расположение секций, наполнение, материалы и общий вид.

Производство и монтаж

Берём на себя консультацию, проектирование, изготовление и установку.

Сложные помещения

Работаем с нишами, углами, высокими потолками, мансардами и нестандартной геометрией.

Интеграция в интерьер

Подбираем материалы, свет, двери и перегородки под стиль пространства.

Детали

Продумываем не только хранение, но и ощущение пространства

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

Материалы

Материалы

Под стиль интерьера, нагрузку, формат хранения и желаемое визуальное ощущение.

Наполнение

Наполнение

Секции для одежды, обуви, аксессуаров, сумок и сезонных вещей.

Подсветка

Подсветка

Свет в открытых секциях, зонах обуви, аксессуаров и глубоких модулях.

Двери и перегородки

Двери и перегородки

Скрыть хранение, зонировать пространство или выделить гардеробную.

Когда обращаться

Когда стоит заказать индивидуальную систему хранения

Индивидуальное решение особенно полезно, когда нужно не просто поставить мебель, а заранее проверить планировку, удобство доступа, проходы, объём вещей и внешний вид системы в интерьере.

  • В доме или квартире не хватает организованного хранения.
  • Есть ниша, кладовая, мансарда, спальня или отдельная комната.
  • Нужна гардеробная комната под вещи, обувь и сезонное хранение.
  • Идёт ремонт, и хранение нужно заложить заранее.
  • Нужно объединить хранение, двери и перегородки.
  • Помещение нестандартное: углы, выступы, высокие потолки.
  • Есть планировка, дизайн-проект или техническое задание.
  • Нужно понять, какой формат будет удобен именно в вашем пространстве.
FAQ

Частые вопросы

С чего начинается работа над проектом?

С фото, размеров, планировки или короткого описания задачи. На первом шаге не нужен готовый проект: важно понять помещение, объём вещей и желаемый формат хранения.

Можно начать с малого — одного фото уже достаточно для первого разговора.
Что прислать для начала?

Подойдут фото помещения, размеры, план БТИ, скрин из дизайн-проекта, чертёж от руки или просто описание: где нужно хранение и что должно поместиться.

Что особенно полезно:
  • Фото помещения или проёма
  • Ширина, высота, глубина
  • Планировка или PDF, если есть
  • Пожелания по вещам и наполнению
Идеальное ТЗ не требуется: задача специалиста — уточнить недостающее.
Можно получить предварительный расчёт без замера?

Да. Для предварительного диапазона достаточно фото, размеров или планировки. Точный расчёт появляется после уточнения геометрии, наполнения, материалов и способа монтажа.

Предварительный расчёт помогает понять порядок бюджета до выезда.
Можно не оставлять телефон?

Да. Укажите e-mail, Telegram, MAX или другой удобный контакт. Если звонок не нужен, напишите в комментарии: «ответить письменно».

Формат связи можно выбрать спокойно.
От чего зависит стоимость?

От размеров, типа системы, фасадов или дверей, наполнения, фурнитуры, подсветки, материалов, сложности геометрии, доставки и монтажа.

Один и тот же размер может дать разный бюджет из-за состава решения.
Что делать, если я не понимаю, какая система нужна?

Это нормальная ситуация. Сначала смотрим помещение и сценарий хранения, а уже потом выбираем формат: открытая система, шкаф, гардеробная, двери или комбинированное решение.

Не обязательно заранее знать название решения.
Зачем нужен 3D-проект?

Чтобы заранее проверить пропорции, проходы, высоты хранения, наполнение, фасады и спорные места до производства и монтажа.

3D нужен не ради красивой картинки, а чтобы избежать переделок.
Система хранения под интерьер
Следующий шаг

Начать можно с одного фото помещения

Пришлите фото, размеры, планировку или короткое описание задачи — мы посмотрим, какой формат хранения подойдёт, что важно учесть и какие данные нужны для предварительного расчёта.

Telegram
.gm-lead-modal{ position:fixed; inset:0; z-index:999999; display:none; align-items:center; justify-content:center; padding:28px; background:rgba(0,0,0,.72); backdrop-filter:blur(10px); font-family:Manrope,Arial,sans-serif; } .gm-lead-modal.is-open{ display:flex; } .gm-lead-dialog{ width:min(920px,100%); max-height:calc(100vh — 56px); overflow:auto; background:#F7F2EA; color:#171717; border-radius:28px; box-shadow:0 34px 110px rgba(0,0,0,.48); position:relative; } .gm-lead-close{ position:absolute; top:18px; right:18px; width:42px; height:42px; border-radius:50%; border:1px solid rgba(0,0,0,.12); background:#fff; color:#171717; font-size:26px; line-height:1; cursor:pointer; z-index:3; } .gm-lead-grid{ display:grid; grid-template-columns:.88fr 1.12fr; min-height:560px; } .gm-lead-info{ padding:48px; background:#101010; color:#fff; display:flex; flex-direction:column; justify-content:center; } .gm-lead-kicker{ margin:0 0 16px; color:#C8AA78; font-size:13px; font-weight:700; } .gm-lead-info h2{ margin:0 0 18px; font-size:42px; line-height:1.04; letter-spacing:-.055em; } .gm-lead-info p{ margin:0; color:rgba(255,255,255,.72); font-size:16px; line-height:1.65; } .gm-lead-list{ margin:30px 0 0; padding:0; list-style:none; display:grid; gap:12px; color:rgba(255,255,255,.78); font-size:15px; } .gm-lead-list li{ display:grid; grid-template-columns:22px 1fr; gap:10px; } .gm-lead-list li:before{ content:»✓»; color:#C8AA78; font-weight:800; } .gm-lead-form-wrap{ padding:48px; display:flex; flex-direction:column; justify-content:center; } .gm-lead-form{ display:grid; gap:14px; } .gm-lead-field label{ display:block; margin:0 0 7px; color:#6A6258; font-size:13px; font-weight:700; } .gm-lead-field input, .gm-lead-field select, .gm-lead-field textarea{ width:100%; border:1px solid rgba(23,23,23,.14); border-radius:16px; background:#fff; color:#171717; padding:15px 16px; font:16px/1.3 Manrope,Arial,sans-serif; outline:none; } .gm-lead-field textarea{ min-height:104px; resize:vertical; } .gm-lead-field input:focus, .gm-lead-field select:focus, .gm-lead-field textarea:focus{ border-color:#B89667; box-shadow:0 0 0 3px rgba(184,150,103,.14); } .gm-lead-hp{ position:absolute!important; left:-9999px!important; opacity:0!important; pointer-events:none!important; } .gm-lead-agree{ display:grid; grid-template-columns:18px 1fr; gap:10px; align-items:start; color:#6A6258; font-size:12px; line-height:1.45; margin-top:2px; } .gm-lead-agree input{ margin-top:2px; } .gm-lead-agree a{ color:#171717; text-decoration:none; border-bottom:1px solid rgba(23,23,23,.25); } .gm-lead-submit{ min-height:52px; border:0; border-radius:999px; background:#B89667; color:#fff; font:700 15px/1 Manrope,Arial,sans-serif; cursor:pointer; margin-top:6px; } .gm-lead-submit:disabled{ opacity:.65; cursor:wait; } .gm-lead-note{ margin:12px 0 0; color:#6A6258; font-size:13px; line-height:1.45; text-align:center; } .gm-lead-note a{ color:#171717; text-decoration:none; border-bottom:1px solid rgba(23,23,23,.25); } .gm-lead-status{ display:none; margin-top:14px; padding:18px 20px 18px 54px; border-radius:16px; font-size:16px; font-weight:800; line-height:1.45; position:relative; box-shadow:0 14px 34px rgba(13,106,57,.18); } .gm-lead-status.is-visible{ display:block; } .gm-lead-status.is-success{ background:#DDF8E8; color:#073D22; border:2px solid #0F8A49; } .gm-lead-status.is-success:before{ content:»✓»; position:absolute; left:18px; top:50%; width:24px; height:24px; margin-top:-12px; border-radius:50%; background:#0F8A49; color:#fff; display:flex; align-items:center; justify-content:center; font-size:16px; font-weight:900; } .gm-lead-status.is-error{ background:#FFF0F0; color:#8A1F1F; } @media(max-width:760px){ .gm-lead-modal{ padding:12px; } .gm-lead-dialog{ border-radius:22px; max-height:calc(100vh — 24px); } .gm-lead-grid{ grid-template-columns:1fr; } .gm-lead-info, .gm-lead-form-wrap{ padding:30px 22px; } .gm-lead-info h2{ font-size:32px; } } (function(){ var modal = document.getElementById(‘gm-lead-modal’); var form = document.getElementById(‘gm-lead-form’); var status = document.getElementById(‘gm-lead-status’); var closeBtn = modal ? modal.querySelector(‘.gm-lead-close’) : null; var submitBtn = form ? form.querySelector(‘.gm-lead-submit’) : null; if(!modal || !form || !status || !closeBtn || !submitBtn) return; function setStatus(type,message){ status.className = ‘gm-lead-status is-visible ‘ + (type === ‘success’ ? ‘is-success’ : ‘is-error’); status.textContent = message; } function clearStatus(){ status.className = ‘gm-lead-status’; status.textContent = »; } function openModal(trigger){ clearStatus(); form.reset(); form.querySelector(‘[name=»consent»]’).checked = true; form.querySelector(‘[name=»landing_variant»]’).value = trigger.getAttribute(‘data-lead-variant’) || »; form.querySelector(‘[name=»button_label»]’).value = trigger.getAttribute(‘data-lead-button’) || trigger.textContent.trim(); form.querySelector(‘[name=»page_url»]’).value = window.location.href; form.querySelector(‘[name=»started_at»]’).value = Math.floor(Date.now() / 1000).toString(); modal.classList.add(‘is-open’); modal.setAttribute(‘aria-hidden’,’false’); document.documentElement.style.overflow = ‘hidden’; setTimeout(function(){ var phone = form.querySelector(‘[name=»phone»]’); if(phone) phone.focus(); },100); } function closeModal(){ modal.classList.remove(‘is-open’); modal.setAttribute(‘aria-hidden’,’true’); document.documentElement.style.overflow = »; } function contactLooksValid(value){ return (value || »).trim().length >= 3; } document.addEventListener(‘click’,function(event){ var trigger = event.target.closest(‘.gm-lead-open’); if(!trigger) return; event.preventDefault(); openModal(trigger); }); closeBtn.addEventListener(‘click’,closeModal); modal.addEventListener(‘click’,function(event){ if(event.target === modal){ closeModal(); } }); document.addEventListener(‘keydown’,function(event){ if(event.key === ‘Escape’ && modal.classList.contains(‘is-open’)){ closeModal(); } }); form.addEventListener(‘submit’,function(event){ event.preventDefault(); clearStatus(); var phone = form.querySelector(‘[name=»phone»]’).value; if(!contactLooksValid(phone)){ setStatus(‘error’,’Укажите телефон, Telegram или e-mail, чтобы мы могли ответить.’); return; } if(!form.querySelector(‘[name=»consent»]’).checked){ setStatus(‘error’,’Нужно согласие на обработку персональных данных.’); return; } submitBtn.disabled = true; submitBtn.textContent = ‘Отправляем…’; fetch(‘/gm-lead/submit.php’,{ method:’POST’, body:new FormData(form), credentials:’same-origin’ }) .then(function(response){ return response.json().catch(function(){ throw new Error(‘Некорректный ответ сервера.’); }); }) .then(function(data){ if(data && data.ok){ setStatus(‘success’,data.message || ‘Спасибо. Заявка отправлена. Мы ответим удобным для вас способом.’); form.reset(); }else{ setStatus(‘error’,(data && data.message) ? data.message : ‘Не удалось отправить заявку.’); } }) .catch(function(){ setStatus(‘error’,’Не удалось отправить заявку. Попробуйте ещё раз или позвоните нам: +7 (495) 220-0304.’); }) .finally(function(){ submitBtn.disabled = false; submitBtn.textContent = ‘Отправить на предварительный расчёт’; }); }); })(); .gm-pfm-modal{ position:fixed; inset:0; z-index:999999; display:none; align-items:center; justify-content:center; padding:24px; background:rgba(0,0,0,.76); backdrop-filter:blur(10px); font-family:Manrope,Arial,sans-serif; } .gm-pfm-modal.is-open{ display:flex; } .gm-pfm-dialog{ width:min(752px,100%); height:min(776px,calc(100vh — 48px)); background:#101010; color:#fff; border-radius:24px; box-shadow:0 34px 110px rgba(0,0,0,.54); position:relative; overflow:hidden; display:grid; grid-template-rows:auto 1fr; } .gm-pfm-close{ position:absolute; top:16px; right:16px; width:42px; height:42px; border-radius:50%; border:1px solid rgba(255,255,255,.20); background:#fff; color:#171717; font-size:26px; line-height:1; cursor:pointer; z-index:10; } .gm-pfm-top{ background:#101010; border-bottom:1px solid rgba(255,255,255,.10); padding:16px 70px 14px 18px; } .gm-pfm-form{ display:grid; gap:8px; } .gm-pfm-form-row{ display:grid; grid-template-columns:1fr 1fr 1.35fr auto; gap:10px; align-items:end; } .gm-pfm-field label{ display:block; margin:0 0 6px; color:rgba(255,255,255,.62); font-size:11px; font-weight:700; } .gm-pfm-field input{ width:100%; height:38px; border:1px solid rgba(255,255,255,.14); border-radius:14px; background:#fff; color:#171717; padding:0 14px; font:14px/1.2 Manrope,Arial,sans-serif; outline:none; } .gm-pfm-field input:focus{ border-color:#B89667; box-shadow:0 0 0 3px rgba(184,150,103,.18); } .gm-pfm-submit{ height:38px; min-width:128px; border:0; border-radius:999px; background:#B89667; color:#fff; font:700 14px/1 Manrope,Arial,sans-serif; cursor:pointer; padding:0 18px; white-space:nowrap; } .gm-pfm-submit:disabled{ opacity:.65; cursor:wait; } .gm-pfm-hp{ position:absolute!important; left:-9999px!important; opacity:0!important; pointer-events:none!important; } .gm-pfm-agree{ display:grid; grid-template-columns:16px 1fr; gap:8px; align-items:start; color:rgba(255,255,255,.56); font-size:10px; line-height:1.35; } .gm-pfm-agree input{ margin-top:1px; } .gm-pfm-agree a{ color:rgba(255,255,255,.78); text-decoration:none; border-bottom:1px solid rgba(255,255,255,.25); } .gm-pfm-status{ display:none; padding:18px 20px 18px 54px; border-radius:16px; font-size:16px; line-height:1.45; position:relative; } .gm-pfm-status.is-visible{ display:block; } .gm-pfm-status.is-success{ background:#DDF8E8; color:#073D22; border:2px solid #0F8A49; box-shadow:0 14px 34px rgba(13,106,57,.18); font-weight:800; } .gm-pfm-status.is-success:before{ content:»✓»; position:absolute; left:18px; top:50%; width:24px; height:24px; margin-top:-12px; border-radius:50%; background:#0F8A49; color:#fff; display:flex; align-items:center; justify-content:center; font-size:16px; font-weight:900; } .gm-pfm-status.is-error{ background:#FFF0F0; color:#8A1F1F; } .gm-pfm-body{ min-height:0; overflow:auto; padding:18px; background:#151515; scrollbar-width:thin; scrollbar-color:#B89667 #101010; } .gm-pfm-body::-webkit-scrollbar{ width:10px; } .gm-pfm-body::-webkit-scrollbar-track{ background:#101010; } .gm-pfm-body::-webkit-scrollbar-thumb{ background:#B89667; border-radius:999px; border:2px solid #101010; } .gm-pfm-viewer{ position:relative; } .gm-pfm-media{ position:relative; aspect-ratio:16 / 9; overflow:hidden; border-radius:22px; background:#111; box-shadow:0 18px 44px rgba(0,0,0,.22); transform:translateZ(0); } .gm-pfm-media:before{ content:»»; position:absolute; inset:0; z-index:3; pointer-events:none; background: linear-gradient(180deg,rgba(0,0,0,.10) 0%,rgba(0,0,0,.42) 100%), linear-gradient(90deg,rgba(0,0,0,.58) 0%,rgba(0,0,0,.30) 36%,rgba(0,0,0,.08) 58%,rgba(0,0,0,0) 78%); } .gm-pfm-media.is-playing:before{ opacity:.18; } .gm-pfm-visual{ position:absolute; inset:0; z-index:1; background:#111; overflow:hidden; } .gm-pfm-image, .gm-pfm-iframe{ display:block; width:100%; height:100%; border:0; background:#111; } .gm-pfm-image{ object-fit:cover; } .gm-pfm-iframe{ position:absolute; inset:0; } .gm-pfm-video-loading{ position:absolute; inset:0; z-index:7; display:none; align-items:center; justify-content:center; background:rgba(12,12,12,.72); backdrop-filter:blur(4px); pointer-events:none; } .gm-pfm-media.is-video-loading .gm-pfm-video-loading{ display:flex; } .gm-pfm-video-loading-card{ display:grid; justify-items:center; gap:12px; padding:22px 26px; border-radius:22px; background:rgba(16,16,16,.78); border:1px solid rgba(255,255,255,.12); box-shadow:0 18px 44px rgba(0,0,0,.38); color:#fff; text-align:center; } .gm-pfm-video-spinner{ width:36px; height:36px; border-radius:50%; border:3px solid rgba(255,255,255,.18); border-top-color:#B89667; animation:gmPfmSpin .8s linear infinite; } .gm-pfm-video-loading-title{ font-size:15px; font-weight:700; line-height:1.2; } .gm-pfm-video-loading-text{ color:rgba(255,255,255,.66); font-size:12px; line-height:1.35; } @keyframes gmPfmSpin{ to{transform:rotate(360deg);} } .gm-pfm-overlay{ position:absolute; inset:0; z-index:4; display:flex; flex-direction:column; justify-content:space-between; padding:18px; pointer-events:none; } .gm-pfm-banner{ display:flex; justify-content:center; } .gm-pfm-banner-inner{ display:inline-flex; align-items:center; justify-content:center; max-width:92%; padding:11px 20px; border-radius:18px; background:linear-gradient(180deg,rgba(0,0,0,.58) 0%,rgba(0,0,0,.36) 100%); backdrop-filter:blur(8px); box-shadow:0 10px 26px rgba(0,0,0,.22); color:#fff; font-size:21px; line-height:1.08; font-weight:800; letter-spacing:.01em; text-transform:uppercase; text-align:center; text-shadow:0 2px 10px rgba(0,0,0,.24); } .gm-pfm-bottom-row{ display:flex; align-items:flex-end; justify-content:flex-end; gap:18px; width:100%; } .gm-pfm-center-video{ position:absolute; left:26px; bottom:82px; top:auto; transform:none; z-index:5; pointer-events:none; transition:opacity .24s ease, transform .24s ease, bottom .24s ease; } .gm-pfm-media.is-playing .gm-pfm-center-video{ opacity:0; visibility:hidden; pointer-events:none; transform:translateY(8px); } .gm-pfm-media.is-playing .gm-pfm-play{ pointer-events:none; } .gm-pfm-play{ pointer-events:auto; display:inline-flex; align-items:center; gap:14px; text-decoration:none; color:#fff; cursor:pointer; transition:transform .2s ease,box-shadow .2s ease,background .2s ease,border-color .2s ease,opacity .2s ease,padding .2s ease; padding:14px 20px 14px 16px; border:0; border-radius:22px; background:rgba(24,26,30,.90); backdrop-filter:blur(10px); box-shadow:0 14px 32px rgba(0,0,0,.32); font-size:15px; line-height:1; font-weight:700; } .gm-pfm-play:hover{ transform:translateY(-2px); background:rgba(32,35,40,.96); } .gm-pfm-play-ico{ width:58px; height:40px; min-width:58px; border-radius:12px; background:#ff0000; display:flex; align-items:center; justify-content:center; box-shadow:0 8px 18px rgba(255,0,0,.28); } .gm-pfm-play-ico svg{ width:18px; height:18px; fill:#fff; margin-left:2px; } .gm-pfm-play-text{ display:flex; flex-direction:column; align-items:flex-start; gap:4px; } .gm-pfm-play-kicker{ font-size:11px; line-height:1; font-weight:600; letter-spacing:.08em; text-transform:uppercase; color:rgba(255,255,255,.58); } .gm-pfm-play-label{ font-size:16px; line-height:1; font-weight:700; color:#fff; } .gm-pfm-caption{ max-width:360px; text-align:right; margin-left:auto; } .gm-pfm-slide-title{ margin:0 0 10px; font-size:20px; line-height:1.02; font-weight:700; letter-spacing:-.03em; color:#fff; text-shadow:0 2px 12px rgba(0,0,0,.26); } .gm-pfm-slide-desc{ margin:0; font-size:12px; line-height:1.42; color:rgba(255,255,255,.78); text-shadow:0 2px 10px rgba(0,0,0,.24); } .gm-pfm-nav, .gm-pfm-thumb-nav{ width:58px; height:58px; min-width:58px; border:0; border-radius:50%; background:linear-gradient(180deg,#B89667 0%,#8F692C 100%); box-shadow:0 10px 24px rgba(184,138,59,.34); display:flex; align-items:center; justify-content:center; cursor:pointer; padding:0; transition:transform .2s ease,box-shadow .2s ease,opacity .2s ease; } .gm-pfm-nav svg, .gm-pfm-thumb-nav svg{ width:22px; height:22px; fill:#fff; } .gm-pfm-nav{ position:absolute; top:50%; transform:translateY(-50%); z-index:6; } .gm-pfm-nav:hover{ transform:translateY(calc(-50% — 1px)); } .gm-pfm-nav—prev{ left:12px; } .gm-pfm-nav—next{ right:12px; } .gm-pfm-dots{ display:flex; align-items:center; justify-content:center; gap:8px; padding:12px 0 0; } .gm-pfm-dot{ width:8px; height:8px; padding:0; border:0; border-radius:50%; background:rgba(255,255,255,.24); cursor:pointer; transition:transform .2s ease,background .2s ease; } .gm-pfm-dot.is-active{ background:#d0a35a; transform:scale(1.12); } .gm-pfm-thumbs-wrap{ position:relative; margin-top:12px; padding:0 36px; } .gm-pfm-thumbs-viewport{ overflow:hidden; width:100%; } .gm-pfm-thumbs{ display:flex; gap:10px; transition:transform .28s ease; will-change:transform; } .gm-pfm-thumb{ flex:0 0 100px; width:100px; padding:0; border:0; background:none; cursor:pointer; color:#fff; text-align:left; } .gm-pfm-thumb-card{ display:flex; flex-direction:column; overflow:hidden; border-radius:14px; border:2px solid rgba(255,255,255,.08); background:rgba(255,255,255,.03); transition:border-color .2s ease,transform .2s ease,box-shadow .2s ease; } .gm-pfm-thumb:hover .gm-pfm-thumb-card{ transform:translateY(-2px); box-shadow:0 10px 18px rgba(0,0,0,.18); } .gm-pfm-thumb.is-active .gm-pfm-thumb-card{ border-color:#B89667; box-shadow:0 10px 18px rgba(184,138,59,.16); } .gm-pfm-thumb-image{ display:block; width:100%; height:78px; object-fit:cover; background:#111; } .gm-pfm-thumb-body{ padding:7px 8px 8px; } .gm-pfm-thumb-title{ margin:0; font-size:10px; line-height:1.2; font-weight:700; color:rgba(255,255,255,.96); display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; min-height:24px; } .gm-pfm-thumb-desc{ margin:4px 0 0; font-size:8px; line-height:1.28; color:rgba(255,255,255,.74); display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; min-height:20px; } .gm-pfm-thumb-nav{ position:absolute; top:50%; transform:translateY(-50%); z-index:6; } .gm-pfm-thumb-nav:hover{ transform:translateY(calc(-50% — 1px)); } .gm-pfm-thumb-nav—prev{ left:0; } .gm-pfm-thumb-nav—next{ right:0; } .gm-pfm-thumb-nav.is-disabled{ opacity:.35; cursor:default; } /* V3.3: убраны нижние стрелки миниатюр */ .gm-pfm-thumb-nav{ display:none !important; } .gm-pfm-thumbs-wrap{ padding:0 !important; } @media(max-width:980px){ .gm-pfm-dialog{ width:min(94vw,752px); height:min(88vh,776px); } .gm-pfm-form-row{ grid-template-columns:1fr 1fr; } .gm-pfm-submit{ width:100%; } } @media(max-width:760px){ .gm-pfm-modal{ padding:12px; } .gm-pfm-dialog{ width:100%; height:calc(100vh — 24px); border-radius:22px; } .gm-pfm-top{ padding:18px 62px 14px 16px; } .gm-pfm-form-row{ grid-template-columns:1fr; } .gm-pfm-body{ padding:14px; } .gm-pfm-media{ aspect-ratio:1 / 1.04; border-radius:18px; } .gm-pfm-overlay{ padding:14px; } .gm-pfm-center-video{ left:16px; bottom:78px; } .gm-pfm-media.is-playing .gm-pfm-center-video{ transform:translateY(8px); } .gm-pfm-banner-inner{ max-width:100%; padding:10px 14px; border-radius:14px; font-size:15px; line-height:1.14; } .gm-pfm-bottom-row{ align-items:flex-end; justify-content:flex-end; } .gm-pfm-caption{ max-width:100%; text-align:right; } .gm-pfm-play{ padding:12px 16px 12px 14px; } .gm-pfm-play-ico{ width:52px; height:36px; min-width:52px; } .gm-pfm-play-label{ font-size:14px; } .gm-pfm-slide-title{ font-size:18px; } .gm-pfm-slide-desc{ font-size:12px; line-height:1.36; } .gm-pfm-nav, .gm-pfm-thumb-nav{ width:50px; height:50px; min-width:50px; } .gm-pfm-thumbs-wrap{ padding:0 26px; } .gm-pfm-thumb{ flex-basis:88px; width:88px; } .gm-pfm-thumb-image{ height:70px; } } /* GM HOME V7.1: readable e-mail CTA + CRM mail marker */ .gm-home-section-light .gm-site-mail-link, .gm-home-section-cream .gm-site-mail-link{ background:#fff!important; color:var(—gm-dark)!important; border-color:rgba(23,23,23,.16)!important; box-shadow:0 14px 34px rgba(26,22,18,.08); } .gm-home-section-light .gm-site-mail-link:hover, .gm-home-section-cream .gm-site-mail-link:hover{ background:var(—gm-dark)!important; color:#fff!important; border-color:var(—gm-dark)!important; } .gm-home-start .gm-site-mail-link{ background:transparent!important; color:#fff!important; border-color:rgba(255,255,255,.34)!important; box-shadow:none!important; } .gm-home-start .gm-site-mail-link:hover{ background:#fff!important; color:var(—gm-dark)!important; border-color:#fff!important; } (function(){ var modal = document.getElementById(‘gm-pfm-modal’); if(!modal) return; var items = [ {image:’https://garderobmaster.ru/wp-content/uploads/2026/03/IMG_20251220_202041.webp’,videoId:’vplvzluzwczsjfnohbwg’,title:’Гардеробная МДФ с покраской RAL’,desc:’Гардеробная МДФ с покраской RAL. Врезеровка, капители, картинные фасады, эскиз заказчика. Дизайн-проект GarderobeMaster, 2026 год.’}, {image:’https://garderobmaster.ru/wp-content/uploads/2026/03/2-scaled.webp’,videoId:’vplvo44vucvj4ts6wcsm’,title:’Гардеробная система Vitra Black’,desc:’Гардеробная система Vitra Black, материал МДФ EGGER с текстурой древесины, фурнитура Blum. Дизайн GarderobeMaster, 2026.’}, {image:’https://garderobmaster.ru/wp-content/uploads/2026/03/3-scaled.webp’,videoId:’vplvkmfow3apvx2qtlai’,title:’Гардеробная система Vitra Black’,desc:’Гардеробная система Vitra Black с дверями купе и отсеком для стиральной машины.’}, {image:’https://garderobmaster.ru/wp-content/uploads/2026/03/4-1-scaled.webp’,videoId:’vplvbaimwjvtfe5x5h7q’,title:’Гардеробная система Vitra Black’,desc:’Гардеробная система Vitra Black с сейфом и выдвижной гладильной доской. ЛДСП EGGER.’}, {image:’https://garderobmaster.ru/wp-content/uploads/2026/03/6-scaled.jpg’,videoId:’vplv6ee5wib66wtbuosr’,title:’Гардеробная классический шкаф’,desc:’Гардеробная классический шкаф, материал МДФ, окрас эмалью по RAL, фурнитура Blum. Дизайн GarderobeMaster, 2026.’}, {image:’https://garderobmaster.ru/wp-content/uploads/2026/03/8-scaled.jpg’,videoId:’vplvzknd7guzyf7mhqey’,title:’Гардеробная классический шкаф’,desc:’Гардеробная классический шкаф, материал ЛДСП EGGER текстура дерево, фурнитура Blum. Дизайн GarderobeMaster, 2026.’}, {image:’https://garderobmaster.ru/wp-content/uploads/2026/03/9-scaled.jpg’,videoId:’vplv3q6gs3s5epvjlrvr’,title:’Сетчатая гардеробная система’,desc:’Сетчатая гардеробная система. Дизайн GarderobeMaster, 2026.’}, {image:’https://garderobmaster.ru/wp-content/uploads/2026/03/10-scaled.jpg’,videoId:’vplvmyepnatcafi6djhf’,title:’Гардеробная система Vitra Black’,desc:’Гардеробная система Vitra Black, материал МДФ EGGER с текстурой древесины, фурнитура Blum. Дизайн GarderobeMaster, 2026.’}, {image:’https://garderobmaster.ru/wp-content/uploads/2026/03/12-scaled.jpg’,videoId:’vplv2y5mcjwnaee7n56n’,title:’Гардеробная классический шкаф’,desc:’Гардеробная классический шкаф, материал МДФ, окрас эмалью по RAL, фурнитура Blum. Дизайн GarderobeMaster, 2026.’} ]; var currentIndex = 0; var thumbOffset = 0; var isPlaying = false; var userEditedComment = false; var portfolioRendered = false; var body = modal.querySelector(‘.gm-pfm-body’); var closeBtn = modal.querySelector(‘.gm-pfm-close’); var media = document.getElementById(‘gmPfmMedia’); var visual = document.getElementById(‘gmPfmVisual’); var videoLoading = document.getElementById(‘gmPfmVideoLoading’); var videoLoadTimer = null; var title = document.getElementById(‘gmPfmTitle’); var desc = document.getElementById(‘gmPfmDesc’); var playBtn = document.getElementById(‘gmPfmPlay’); var playLabel = playBtn.querySelector(‘.gm-pfm-play-label’); var dotsWrap = document.getElementById(‘gmPfmDots’); var thumbsWrap = document.getElementById(‘gmPfmThumbs’); var thumbsViewport = modal.querySelector(‘.gm-pfm-thumbs-viewport’); var prevBtn = modal.querySelector(‘.gm-pfm-nav—prev’); var nextBtn = modal.querySelector(‘.gm-pfm-nav—next’); var prevThumbBtn = modal.querySelector(‘.gm-pfm-thumb-nav—prev’); var nextThumbBtn = modal.querySelector(‘.gm-pfm-thumb-nav—next’); var form = document.getElementById(‘gmPfmForm’); var status = document.getElementById(‘gmPfmStatus’); var submitBtn = form.querySelector(‘.gm-pfm-submit’); var commentField = document.getElementById(‘gm-pfm-comment’); var phoneField = document.getElementById(‘gm-pfm-phone’); function esc(str){ return String(str || »).replace(/&/g,’&’).replace(//g,’>’).replace(/»/g,’"’); } function playerSrc(id){ return ‘https://runtime.video.cloud.yandex.net/player/video/’ + encodeURIComponent(id) + ‘?autoplay=1&mute=0’; } function renderImage(item){ visual.innerHTML = ‘' + esc(item.title) + '‘; } function showVideoLoading(){ clearTimeout(videoLoadTimer); media.classList.add(‘is-video-loading’); } function hideVideoLoading(){ media.classList.remove(‘is-video-loading’); } function renderPlayer(item){ showVideoLoading(); var iframe = document.createElement(‘iframe’); iframe.className = ‘gm-pfm-iframe’; iframe.src = playerSrc(item.videoId); iframe.allow = ‘autoplay; fullscreen; accelerometer; gyroscope; picture-in-picture; encrypted-media’; iframe.allowFullscreen = true; iframe.loading = ‘eager’; iframe.scrolling = ‘no’; iframe.frameBorder = ‘0’; iframe.title = item.title || ‘Видео проекта’; iframe.addEventListener(‘load’,function(){ clearTimeout(videoLoadTimer); videoLoadTimer = setTimeout(hideVideoLoading,900); }); visual.innerHTML = »; visual.appendChild(iframe); /* На случай, если load от плеера не сработает или сработает некорректно. */ videoLoadTimer = setTimeout(hideVideoLoading,6500); } function setPlayingState(state){ isPlaying = !!state; media.classList.toggle(‘is-playing’,isPlaying); playLabel.textContent = isPlaying ? ‘Остановить видео’ : ‘Смотреть видео’; playBtn.setAttribute(‘aria-label’,isPlaying ? ‘Остановить видео’ : ‘Смотреть видео’); } function renderDots(){ dotsWrap.innerHTML = items.map(function(item,i){ return ‘‘; }).join(»); Array.prototype.forEach.call(dotsWrap.querySelectorAll(‘.gm-pfm-dot’),function(dot,i){ dot.addEventListener(‘click’,function(){ goTo(i); }); }); } function renderThumbs(){ thumbsWrap.innerHTML = items.map(function(item,i){ var loadingMode = i < 4 ? 'eager' : 'lazy'; return '' + '‘; }).join(»); Array.prototype.forEach.call(thumbsWrap.querySelectorAll(‘.gm-pfm-thumb’),function(btn,i){ btn.addEventListener(‘click’,function(e){ e.preventDefault(); goTo(i); }); }); } function updateActiveStates(){ Array.prototype.forEach.call(thumbsWrap.querySelectorAll(‘.gm-pfm-thumb’),function(btn,i){ btn.classList.toggle(‘is-active’,i === currentIndex); btn.setAttribute(‘aria-selected’,i === currentIndex ? ‘true’ : ‘false’); }); Array.prototype.forEach.call(dotsWrap.querySelectorAll(‘.gm-pfm-dot’),function(btn,i){ btn.classList.toggle(‘is-active’,i === currentIndex); }); } function getThumbStep(){ var firstThumb = thumbsWrap.querySelector(‘.gm-pfm-thumb’); if(!firstThumb) return 120; var thumbWidth = firstThumb.getBoundingClientRect().width; var styles = window.getComputedStyle(thumbsWrap); var gap = parseFloat(styles.columnGap || styles.gap || 10) || 10; return thumbWidth + gap; } function getMaxThumbOffset(){ return Math.max(0,thumbsWrap.scrollWidth — thumbsViewport.clientWidth); } function updateThumbButtons(){ var maxOffset = getMaxThumbOffset(); if(prevThumbBtn) prevThumbBtn.classList.toggle(‘is-disabled’,thumbOffset = maxOffset — 1); } function updateThumbTrack(){ var maxOffset = getMaxThumbOffset(); if(thumbOffset maxOffset) thumbOffset = maxOffset; thumbsWrap.style.transform = ‘translateX(‘ + (-thumbOffset) + ‘px)’; updateThumbButtons(); } function ensureThumbVisible(index){ var thumbs = thumbsWrap.querySelectorAll(‘.gm-pfm-thumb’); var target = thumbs[index]; if(!target) return; var thumbLeft = target.offsetLeft; var thumbRight = thumbLeft + target.offsetWidth; var visibleLeft = thumbOffset; var visibleRight = thumbOffset + thumbsViewport.clientWidth; var gap = 10; if(thumbLeft visibleRight) thumbOffset = thumbRight — thumbsViewport.clientWidth + gap; updateThumbTrack(); } function selectedComment(){ return ‘Интересует похожее решение: ‘ + items[currentIndex].title; } function updateSelectedProject(){ form.querySelector(‘[name=»button_label»]’).value = ‘Портфолио: ‘ + items[currentIndex].title; if(!userEditedComment){ commentField.value = selectedComment(); } } function ensurePortfolioRendered(){ if(portfolioRendered) return; renderDots(); renderThumbs(); portfolioRendered = true; } function renderHero(){ var item = items[currentIndex]; renderImage(item); title.textContent = item.title; desc.textContent = item.desc; setPlayingState(false); updateActiveStates(); ensureThumbVisible(currentIndex); updateSelectedProject(); } function goTo(index){ currentIndex = (index + items.length) % items.length; renderHero(); } function playCurrent(){ renderPlayer(items[currentIndex]); setPlayingState(true); } function stopVideo(){ clearTimeout(videoLoadTimer); hideVideoLoading(); renderImage(items[currentIndex]); setPlayingState(false); } function setStatus(type,message){ status.className = ‘gm-pfm-status is-visible ‘ + (type === ‘success’ ? ‘is-success’ : ‘is-error’); status.textContent = message; } function clearStatus(){ status.className = ‘gm-pfm-status’; status.textContent = »; } function contactLooksValid(value){ return (value || »).trim().length >= 3; } function openModal(){ modal.classList.add(‘is-open’); modal.setAttribute(‘aria-hidden’,’false’); document.documentElement.style.overflow = ‘hidden’; body.scrollTop = 0; clearStatus(); form.querySelector(‘[name=»consent»]’).checked = true; form.querySelector(‘[name=»landing_variant»]’).value = ‘portfolio-modal’; form.querySelector(‘[name=»page_url»]’).value = window.location.href; form.querySelector(‘[name=»started_at»]’).value = Math.floor(Date.now() / 1000).toString(); ensurePortfolioRendered(); renderHero(); setTimeout(function(){ updateThumbTrack(); ensureThumbVisible(currentIndex); },60); } function closeModal(){ modal.classList.remove(‘is-open’); modal.setAttribute(‘aria-hidden’,’true’); document.documentElement.style.overflow = »; if(isPlaying) stopVideo(); } document.addEventListener(‘click’,function(e){ var trigger = e.target.closest(‘.gm-portfolio-open’); if(!trigger) return; e.preventDefault(); openModal(); }); closeBtn.addEventListener(‘click’,closeModal); modal.addEventListener(‘click’,function(e){ if(e.target === modal) closeModal(); }); document.addEventListener(‘keydown’,function(e){ if(!modal.classList.contains(‘is-open’)) return; if(e.key === ‘Escape’) closeModal(); if(e.key === ‘ArrowLeft’) goTo(currentIndex — 1); if(e.key === ‘ArrowRight’) goTo(currentIndex + 1); }); playBtn.addEventListener(‘click’,function(){ if(isPlaying) stopVideo(); else playCurrent(); }); prevBtn.addEventListener(‘click’,function(){ goTo(currentIndex — 1); }); nextBtn.addEventListener(‘click’,function(){ goTo(currentIndex + 1); }); if(prevThumbBtn){ prevThumbBtn.addEventListener(‘click’,function(){ if(prevThumbBtn.classList.contains(‘is-disabled’)) return; thumbOffset -= getThumbStep() * 4; updateThumbTrack(); }); } if(nextThumbBtn){ nextThumbBtn.addEventListener(‘click’,function(){ if(nextThumbBtn.classList.contains(‘is-disabled’)) return; thumbOffset += getThumbStep() * 4; updateThumbTrack(); }); } commentField.addEventListener(‘input’,function(){ userEditedComment = true; }); form.addEventListener(‘submit’,function(e){ e.preventDefault(); clearStatus(); var phone = form.querySelector(‘[name=»phone»]’).value; if(!contactLooksValid(phone)){ setStatus(‘error’,’Укажите телефон, Telegram или e-mail, чтобы мы могли ответить.’); return; } if(!form.querySelector(‘[name=»consent»]’).checked){ setStatus(‘error’,’Нужно согласие на обработку персональных данных.’); return; } submitBtn.disabled = true; submitBtn.textContent = ‘Отправляем…’; fetch(‘/gm-lead/submit.php’,{ method:’POST’, body:new FormData(form), credentials:’same-origin’ }) .then(function(response){ return response.json().catch(function(){ throw new Error(‘Некорректный ответ сервера.’); }); }) .then(function(data){ if(data && data.ok){ setStatus(‘success’,data.message || ‘Спасибо. Заявка отправлена. Мы ответим удобным для вас способом.’); form.reset(); userEditedComment = false; updateSelectedProject(); form.querySelector(‘[name=»consent»]’).checked = true; }else{ setStatus(‘error’,(data && data.message) ? data.message : ‘Не удалось отправить заявку.’); } }) .catch(function(){ setStatus(‘error’,’Не удалось отправить заявку. Попробуйте ещё раз или позвоните нам: +7 (495) 220-0304.’); }) .finally(function(){ submitBtn.disabled = false; submitBtn.textContent = ‘Отправить’; }); }); window.addEventListener(‘resize’,function(){ updateThumbTrack(); ensureThumbVisible(currentIndex); }); updateSelectedProject(); })(); (function(){ var root = document.querySelector(‘.gm-home’); if(!root) return; root.addEventListener(‘click’,function(event){ var link = event.target.closest(‘[data-gm-scroll]’); if(!link) return; var href = link.getAttribute(‘href’); if(!href || href.charAt(0) !== ‘#’) return; var target = document.querySelector(href); if(!target) return; event.preventDefault(); var top = target.getBoundingClientRect().top + window.pageYOffset — 18; window.scrollTo({top:top, behavior:’smooth’}); }); function hideOldConsultant(){ var nodes = Array.prototype.slice.call(document.body.children || []); nodes.forEach(function(el){ if(!el || el.classList.contains(‘gm-lead-modal’) || el.classList.contains(‘gm-chat-modal’) || el.classList.contains(‘gm-pfm-modal’)) return; if(el.id === ‘wpadminbar’) return; var text = (el.textContent || »).replace(/s+/g,’ ‘).trim(); if(text.indexOf(‘Ваш консультант’) === -1) return; var style = window.getComputedStyle(el); if(style.position === ‘fixed’ || style.position === ‘sticky’ || style.position === ‘absolute’){ el.style.setProperty(‘display’,’none’,’important’); el.style.setProperty(‘visibility’,’hidden’,’important’); el.style.setProperty(‘pointer-events’,’none’,’important’); } }); } hideOldConsultant(); setTimeout(hideOldConsultant,300); setTimeout(hideOldConsultant,1000); setTimeout(hideOldConsultant,2500); })(); /* GM HOME FIX: mobile menu callback clone */ document.addEventListener(‘DOMContentLoaded’, function () { if (!document.querySelector(‘.gm-home’)) return; var navList = document.querySelector(‘.header__top .header__nav ul’); var sourceButton = document.querySelector(‘.header__contacts > .btn.js-modal[data-modal=»call»]’); if (!navList || !sourceButton || navList.querySelector(‘.gm-mobile-menu-callback’)) return; var item = document.createElement(‘li’); item.className = ‘menu-item gm-mobile-menu-callback’; var link = sourceButton.cloneNode(true); link.className = ‘gm-menu-callback js-modal’; link.textContent = ‘Позвонить вам?’; link.setAttribute(‘data-modal’, ‘call’); item.appendChild(link); navList.insertBefore(item, navList.firstElementChild); });