Help
RSS
API
Feed
Maltego
Contact
Domain > sem-dv.ru
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2013-06-17
176.57.209.92
(
ClassC
)
2026-02-02
31.31.197.45
(
ClassC
)
Port 80
HTTP/1.1 302 FoundServer: nginxDate: Mon, 02 Feb 2026 19:29:47 GMTContent-Type: text/html; charsetiso-8859-1Transfer-Encoding: chunkedConnection: keep-aliveLocation: https://sem-dv.ru/ !DOCTYPE HTML PUBLIC -//IETF//DTD HTML 2.0//EN>html>head>title>302 Found/title>/head>body>h1>Found/h1>p>The document has moved a hrefhttps://sem-dv.ru/>here/a>./p>/body>/html>
Port 443
HTTP/1.1 200 OKServer: nginxDate: Mon, 02 Feb 2026 19:29:48 GMTContent-Type: text/htmlTransfer-Encoding: chunkedConnection: keep-aliveVary: Accept-Encoding !DOCTYPE html>html langru>head> meta charsetutf-8> title>СтройЭлектроМонтаж-ДВ — Электромонтажные работы под ключ в Хабаровске/title> meta nameviewport contentwidthdevice-width, initial-scale1.0, viewport-fitcover> meta namedescription contentСтройЭлектроМонтаж-ДВ — профессиональные электромонтажные работы под ключ в Хабаровске и ДФО. СКС, силовые сети, проектирование, ввод в эксплуатацию. Гарантия до 3 лет. Работаем 24/7.> meta namekeywords contentэлектромонтаж, СКС, проектирование, Хабаровск, электроустановочные работы> meta nameauthor contentСтройЭлектроМонтаж-ДВ> meta nametheme-color content#0b1223> meta namecolor-scheme contentdark> meta propertyog:title contentСтройЭлектроМонтаж-ДВ — Электромонтажные работы под ключ> meta propertyog:description contentПрофессиональные электромонтажные работы в Хабаровске. СКС, силовые сети, гарантия до 3 лет.> meta propertyog:type contentwebsite> meta propertyog:image content/og-image.jpg> meta propertyog:url contenthttps://sem-dv.ru> link relpreconnect hrefhttps://fonts.googleapis.com> link relpreconnect hrefhttps://fonts.gstatic.com crossorigin> link relpreconnect hrefhttps://images.unsplash.com> link hrefhttps://fonts.googleapis.com/css2?familyInter:wght@400;500;600;700;800&displayswap relstylesheet> link relicon href/favicon.ico sizesany> link relicon href/favicon.svg typeimage/svg+xml> link relapple-touch-icon href/apple-touch-icon.png> link relmanifest href/manifest.json> link relstylesheet hrefhttps://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css integritysha512-Avb2QiuDEEvB4bZJYdft2mNjVShBftLdPG8FJ0V7irTLQ8Uo0qcPxh4Plq7G5tGm0rU+1SPhVotteLpBERwTkw crossoriginanonymous referrerpolicyno-referrer> style> :root { --bg-1: #0b1223; --bg-2: #0f1a33; --txt: #eaf2ff; --muted: #9db3cf; --primary: #34d399; --accent: #60a5fa; --warning: #f59e0b; --danger: #ef4444; --glass: rgba(255, 255, 255, 0.08); --glass-brd: rgba(255, 255, 255, 0.2); --gradient-hero: linear-gradient(135deg, #0b1223 0%, #10213f 35%, #0c244c 60%, #0b1223 100%); --gradient-accent: conic-gradient(from 180deg at 50% 50%, #1dd4b7, #60a5fa, #8b5cf6, #34d399); --btn-grad: linear-gradient(135deg, #34d399 0%, #60a5fa 100%); --btn-grad-2: linear-gradient(135deg, #8b5cf6 0%, #60a5fa 100%); --shadow-lg: 0 20px 60px rgba(0, 0, 0, 0.45); --shadow-md: 0 10px 30px rgba(0, 0, 0, 0.35); --radius: 16px; --radius-lg: 22px; --blur: 24px; --container-max: 1200px; --container-padding: 20px; --header-height: 70px; /* Safe area support for iPhone */ --safe-area-inset-top: env(safe-area-inset-top, 0px); --safe-area-inset-right: env(safe-area-inset-right, 0px); --safe-area-inset-bottom: env(safe-area-inset-bottom, 0px); --safe-area-inset-left: env(safe-area-inset-left, 0px); } /* Reset и базовые стили */ *, *::before, *::after { box-sizing: border-box; } html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; -webkit-tap-highlight-color: transparent; } html, body { height: 100%; margin: 0; padding: 0; } body { font-family: Inter, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Arial, sans-serif; color: var(--txt); line-height: 1.6; background: radial-gradient(1200px 800px at 120% -10%, rgba(29, 212, 183, 0.12), transparent 50%), radial-gradient(1000px 700px at -10% 110%, rgba(96, 165, 250, 0.10), transparent 50%), var(--gradient-hero); background-attachment: fixed; overflow-x: hidden; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; padding-top: var(--safe-area-inset-top); padding-left: var(--safe-area-inset-left); padding-right: var(--safe-area-inset-right); padding-bottom: var(--safe-area-inset-bottom); } /* Утилиты */ .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; } .container { max-width: var(--container-max); margin: 0 auto; padding: 0 max(var(--container-padding), var(--safe-area-inset-left)); width: 100%; } /* Анимированный фон */ .animated-bg::before, .animated-bg::after { content: ; position: fixed; inset: auto -20% -20% -20%; height: 60vh; background: radial-gradient(closest-side at 50% 50%, rgba(141, 97, 255, 0.24), transparent 55%); filter: blur(60px); animation: float1 18s ease-in-out infinite alternate; z-index: -1; } .animated-bg::after { inset: -20% -20% auto -20%; background: radial-gradient(closest-side at 50% 50%, rgba(52, 211, 153, 0.18), transparent 55%); animation: float2 20s ease-in-out infinite alternate; } @keyframes float1 { from { transform: translateY(0); } to { transform: translateY(-40px); } } @keyframes float2 { from { transform: translateY(0); } to { transform: translateY(40px); } } /* Header */ .header { position: fixed; top: var(--safe-area-inset-top); left: 0; right: 0; z-index: 1000; backdrop-filter: blur(var(--blur)); background: linear-gradient(180deg, rgba(255, 255, 255, 0.06), rgba(255, 255, 255, 0.02)); border-bottom: 1px solid var(--glass-brd); transition: all 0.3s ease; padding: 0 var(--safe-area-inset-left) 0 var(--safe-area-inset-right); } .header__row { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: clamp(12px, 3vw, 20px); padding: 12px 0; min-height: var(--header-height); } .brand { display: flex; align-items: center; gap: 8px; font-weight: 800; letter-spacing: 0.2px; text-decoration: none; color: inherit; font-size: clamp(12px, 2.5vw, 14px); white-space: nowrap; min-width: 0; } .brand__logo { width: clamp(32px, 8vw, 36px); height: clamp(32px, 8vw, 36px); border-radius: 10px; background: var(--gradient-accent); box-shadow: 0 6px 20px rgba(0, 0, 0, 0.35), inset 0 0 30px rgba(255, 255, 255, 0.08); display: grid; place-items: center; color: #0b1223; font-size: clamp(14px, 4vw, 16px); flex-shrink: 0; } .brand__text { font-size: clamp(10px, 2.5vw, 16px); min-width: 0; overflow: hidden; text-overflow: ellipsis; } /* Navigation */ .nav { display: flex; justify-content: center; } .nav__list { display: flex; gap: clamp(8px, 2vw, 16px); list-style: none; margin: 0; padding: 0; flex-wrap: wrap; justify-content: center; } .nav__link { padding: 6px 10px; border-radius: 8px; color: var(--muted); text-decoration: none; transition: all 0.25s; font-weight: 500; font-size: clamp(12px, 1.8vw, 13px); white-space: nowrap; touch-action: manipulation; } .nav__link:hover, .nav__link:focus { color: #fff; background: rgba(255, 255, 255, 0.06); outline: none; } .header__cta { display: flex; align-items: center; gap: clamp(6px, 1.5vw, 8px); justify-self: end; flex-shrink: 0; } /* Buttons */ .btn { display: inline-flex; align-items: center; justify-content: center; padding: clamp(8px, 2vw, 10px) clamp(12px, 3vw, 14px); border-radius: 12px; border: 1px solid var(--glass-brd); background: var(--btn-grad); color: #08111f; font-weight: 700; text-decoration: none; box-shadow: var(--shadow-md); transition: all 0.2s; cursor: pointer; font-size: clamp(12px, 2vw, 13px); white-space: nowrap; touch-action: manipulation; min-height: 44px; /* iOS accessibility */ -webkit-user-select: none; user-select: none; } .btn:hover, .btn:focus { transform: translateY(-2px); filter: saturate(1.15); outline: none; } .btn:active { transform: translateY(0); } .btn--ghost { background: linear-gradient(180deg, rgba(255, 255, 255, 0.08), rgba(255, 255, 255, 0.02)); color: #eaf2ff; border: 1px solid var(--glass-brd); } .btn--alt { background: var(--btn-grad-2); color: #0b1223; } .btn--sm { padding: clamp(6px, 1.5vw, 8px) clamp(10px, 2.5vw, 12px); font-size: clamp(11px, 1.8vw, 12px); min-height: 40px; } /* Mobile menu */ .burger { display: none; flex-direction: column; gap: 4px; background: none; border: none; cursor: pointer; padding: 8px; border-radius: 8px; width: 44px; height: 44px; justify-content: center; align-items: center; touch-action: manipulation; -webkit-tap-highlight-color: transparent; } .burger__line { width: 20px; height: 2px; background: #cfe1ff; border-radius: 2px; transition: all 0.3s; } .burger.active .burger__line:nth-child(1) { transform: rotate(45deg) translate(5px, 5px); } .burger.active .burger__line:nth-child(2) { opacity: 0; } .burger.active .burger__line:nth-child(3) { transform: rotate(-45deg) translate(5px, -5px); } .mobile-nav { position: fixed; top: 75px; left: 0; right: 0; z-index: 999; display: none; padding: 16px max(20px, var(--safe-area-inset-left)) max(20px, var(--safe-area-inset-bottom)); backdrop-filter: blur(20px); background: linear-gradient(180deg, rgba(7, 8, 51, 0.6), rgba(7, 8, 51, 0.6)); border-bottom: 0px solid var(--glass-brd); max-height: 300px; overflow-y: auto; -webkit-overflow-scrolling: touch; } .mobile-nav.open { /* Сдвиг основного контента когда меню открыто */body.menu-open main { margin-top: calc(var(--header-height) + var(--safe-area-inset-top) + 300px); transition: margin-top 0.3s ease;}body:not(.menu-open) main { transition: margin-top 0.3s ease;} display: block; }/* Затемнение фона под мобильным меню */.mobile-nav-overlay { position: fixed; top: calc(var(--header-height) + var(--safe-area-inset-top)); left: 0; right: 0; bottom: 0; background: rgba(0, 0, 0, 0.6); z-index: 998; opacity: 0; visibility: hidden; transition: opacity 0.3s ease, visibility 0.3s ease; backdrop-filter: blur(4px);}.mobile-nav-overlay.active { opacity: 1; visibility: visible;} .mobile-nav__list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; } .mobile-nav__link { display: block; padding: 12px 16px; border-radius: 12px; color: #eaf2ff; text-decoration: none; transition: all 0.25s; font-weight: 500; min-height: 44px; display: flex; align-items: center; touch-action: manipulation; } .mobile-nav__link:hover, .mobile-nav__link:focus { background: rgba(255, 255, 255, 0.06); } .mobile-nav__cta { margin-top: 16px; padding-top: 16px; border-top: 1px solid var(--glass-brd); display: flex; flex-direction: column; gap: 12px; } /* Main content */ main { margin-top: calc(var(--header-height) + var(--safe-area-inset-top)); } /* Carousel */ .carousel { position: relative; isolation: isolate; } .carousel__viewport { position: relative; height: clamp(50vh, 70vh, 720px); min-height: 400px; overflow: hidden; border-radius: 0 0 var(--radius-lg) var(--radius-lg); box-shadow: var(--shadow-lg); touch-action: pan-x; } .slide { position: absolute; inset: 0; opacity: 0; transition: opacity 0.8s, transform 0.8s; transform: scale(1.02); background: #000; pointer-events: none; } .slide.is-active { opacity: 1; transform: scale(1); pointer-events: auto; } .slide__img { width: 100%; height: 100%; object-fit: cover; opacity: 0.9; filter: saturate(1.05) contrast(1.05); } .slide__overlay { position: absolute; inset: 0; background: radial-gradient(1200px 600px at 70% 30%, rgba(13, 192, 235, 0.25), transparent 55%), linear-gradient(180deg, rgba(9, 16, 34, 0.15) 0%, rgba(9, 16, 34, 0.55) 60%, rgba(9, 16, 34, 0.9) 100%); } .slide__content { position: absolute; left: 0; right: 0; bottom: clamp(20px, 5vh, 40px); display: flex; justify-content: center; padding: 0 max(20px, var(--safe-area-inset-left)) 0 max(20px, var(--safe-area-inset-right)); } .glass { backdrop-filter: blur(var(--blur)); background: linear-gradient(180deg, rgba(255, 255, 255, 0.14), rgba(255, 255, 255, 0.06)); border: 1px solid var(--glass-brd); box-shadow: 0 10px 40px rgba(0, 0, 0, 0.35), inset 0 0 60px rgba(255, 255, 255, 0.04); } .hero-card { max-width: min(1000px, 90vw); width: 100%; border-radius: 20px; padding: clamp(16px, 4vw, 24px); display: flex; align-items: center; gap: clamp(16px, 4vw, 20px); } .hero-card__icon { min-width: clamp(40px, 10vw, 48px); min-height: clamp(40px, 10vw, 48px); border-radius: 12px; background: var(--gradient-accent); display: grid; place-items: center; color: #08111f; font-size: clamp(16px, 4vw, 18px); flex-shrink: 0; } .hero-title { font-size: clamp(18px, 5vw, 28px); margin: 0 0 6px 0; letter-spacing: 0.2px; font-weight: 800; line-height: 1.2; } .hero-sub { margin: 0; color: var(--muted); font-size: clamp(12px, 3vw, 15px); line-height: 1.4; } .hero-actions { margin-left: auto; display: flex; gap: 12px; flex-wrap: wrap; flex-shrink: 0; } /* Carousel controls */ .carousel__controls { position: absolute; inset: 0; display: flex; justify-content: space-between; align-items: center; padding: 12px max(12px, var(--safe-area-inset-left)) 12px max(12px, var(--safe-area-inset-right)); pointer-events: none; } .ctrl { pointer-events: auto; width: clamp(40px, 10vw, 44px); height: clamp(40px, 10vw, 44px); border-radius: 12px; background: rgba(255, 255, 255, 0.12); backdrop-filter: blur(16px); border: 1px solid var(--glass-brd); display: grid; place-items: center; color: #eaf2ff; transition: all 0.2s; cursor: pointer; touch-action: manipulation; } .ctrl:hover, .ctrl:focus { background: rgba(255, 255, 255, 0.18); outline: none; } .dots { position: absolute; left: 50%; bottom: 16px; transform: translateX(-50%); display: flex; gap: 8px; } .dot { width: clamp(6px, 2vw, 8px); height: clamp(6px, 2vw, 8px); border-radius: 50%; background: rgba(255, 255, 255, 0.35); border: 1px solid var(--glass-brd); transition: all 0.25s; cursor: pointer; touch-action: manipulation; min-width: 24px; min-height: 24px; display: flex; align-items: center; justify-content: center; } .dot::after { content: ; width: clamp(6px, 2vw, 8px); height: clamp(6px, 2vw, 8px); background: currentColor; border-radius: 50%; } .dot.is-active { background: #fff; box-shadow: 0 0 0 4px rgba(255, 255, 255, 0.08); transform: scale(1.2); } /* Sections */ section { padding: clamp(40px, 8vw, 60px) 0; } .section-head { margin-bottom: 24px; text-align: center; } .h2 { font-size: clamp(20px, 5vw, 32px); margin: 0 0 8px 0; font-weight: 800; letter-spacing: 0.2px; } .lead { color: var(--muted); margin: 0; font-size: clamp(14px, 3vw, 16px); } /* Accordion */ .services-acc, .accordion { display: grid; gap: 12px; } .acc { border-radius: 14px; border: 1px solid var(--glass-brd); overflow: hidden; background: linear-gradient(180deg, rgba(255, 255, 255, 0.09), rgba(255, 255, 255, 0.04)); backdrop-filter: blur(20px); } .acc__head { display: flex; align-items: center; gap: 14px; padding: 16px; cursor: pointer; transition: all 0.25s; min-height: 60px; touch-action: manipulation; } .acc__head:hover { background: rgba(255, 255, 255, 0.04); } .acc__icon { width: clamp(28px, 6vw, 32px); height: clamp(28px, 6vw, 32px); border-radius: 8px; background: var(--gradient-accent); display: grid; place-items: center; color: #0b1223; flex-shrink: 0; font-size: clamp(12px, 3vw, 14px); } .acc__title { margin: 0; font-weight: 700; font-size: clamp(14px, 3.5vw, 16px); line-height: 1.3; } .acc__toggle { margin-left: auto; transition: transform 0.25s; color: #d9e6ff; flex-shrink: 0; font-size: clamp(14px, 3vw, 16px); } .acc.open .acc__toggle { transform: rotate(180deg); } .acc__body { max-height: 0; overflow: hidden; transition: max-height 0.4s ease; padding: 0 16px 0 clamp(48px, 12vw, 62px); color: var(--muted); } .acc.open .acc__body { padding: 0 16px 16px clamp(48px, 12vw, 62px); } /* Cards */ .card { border-radius: var(--radius); padding: clamp(16px, 4vw, 20px); border: 1px solid var(--glass-brd); box-shadow: var(--shadow-md); } .card--glass { background: linear-gradient(180deg, rgba(255, 255, 255, 0.08), rgba(255, 255, 255, 0.03)); backdrop-filter: blur(var(--blur)); } /* Lists */ .ul { display: grid; gap: 8px; margin: 12px 0 0 0; list-style: none; padding: 0; } .ul li { display: flex; gap: 8px; align-items: flex-start; } .ul i { color: var(--primary); margin-top: 2px; flex-shrink: 0; font-size: 12px; } /* Pills */ .pill { display: inline-flex; align-items: center; gap: 6px; padding: 4px 8px; border-radius: 999px; border: 1px solid var(--glass-brd); background: rgba(255, 255, 255, 0.06); backdrop-filter: blur(12px); font-size: clamp(10px, 2vw, 11px); color: #cfe1ff; font-weight: 500; margin-bottom: 12px; } /* Gallery */ .gallery { position: relative; overflow: hidden; border-radius: var(--radius); height: 100%; min-height: 280px; } .gallery img { width: 100%; height: 100%; object-fit: cover; transform: scale(1.02); } .gallery::after { content: ; position: absolute; inset: 0; background: linear-gradient(180deg, transparent, rgba(11, 18, 35, 0.6)); } /* Career section */ .career { display: grid; grid-template-columns: 1.2fr 0.8fr; gap: 24px; align-items: stretch; } /* Team */ .team { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(250px, 100%), 1fr)); gap: 20px; } .member { text-align: center; border-radius: 16px; border: 1px solid var(--glass-brd); background: linear-gradient(180deg, rgba(255, 255, 255, 0.10), rgba(255, 255, 255, 0.04)); backdrop-filter: blur(18px); box-shadow: var(--shadow-md); padding: 20px; } .avatar { width: clamp(60px, 15vw, 80px); height: clamp(60px, 15vw, 80px); border-radius: 50%; margin: 0 auto 12px auto; overflow: hidden; border: 2px solid rgba(255, 255, 255, 0.3); } .avatar img { width: 100%; height: 100%; object-fit: cover; } .role { color: #cde0ff; font-size: clamp(12px, 2.5vw, 13px); margin: 4px 0; } .soc { margin-top: 12px; display: flex; justify-content: center; gap: 8px; } .soc a { width: 32px; height: 32px; border-radius: 8px; border: 1px solid var(--glass-brd); display: grid; place-items: center; background: rgba(255, 255, 255, 0.06); color: inherit; text-decoration: none; transition: all 0.25s; font-size: 14px; touch-action: manipulation; } .soc a:hover { background: rgba(255, 255, 255, 0.1); } /* Projects */ .projects-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(280px, 100%), 1fr)); gap: 16px; } .project { position: relative; border-radius: 16px; overflow: hidden; border: 1px solid var(--glass-brd); background: linear-gradient(180deg, rgba(255, 255, 255, 0.10), rgba(255, 255, 255, 0.04)); backdrop-filter: blur(12px); box-shadow: var(--shadow-md); cursor: pointer; transition: all 0.3s; touch-action: manipulation; } .project:hover { transform: translateY(-4px); box-shadow: 0 20px 40px rgba(0, 0, 0, 0.4); } .project__thumb { height: clamp(160px, 30vw, 200px); object-fit: cover; width: 100%; } .project__cap { position: absolute; left: 0; right: 0; bottom: 0; padding: 12px 14px; background: linear-gradient(180deg, transparent, rgba(11, 18, 35, 0.85)); font-size: clamp(12px, 2.5vw, 13px); } .project__cap b { display: block; font-weight: 600; margin-bottom: 2px; font-size: clamp(13px, 3vw, 14px); } /* Partners */ .partners-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(140px, 100%), 1fr)); gap: 16px; } .partner { height: clamp(60px, 15vw, 80px); display: flex; align-items: center; justify-content: center; border-radius: 12px; border: 1px solid var(--glass-brd); background: linear-gradient(180deg, rgba(255, 255, 255, 0.10), rgba(255, 255, 255, 0.04)); backdrop-filter: blur(14px); box-shadow: var(--shadow-md); color: #d9e6ff; transition: all 0.3s; } .partner:hover { transform: translateY(-2px); background: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0.08)); } .partner img { max-height: clamp(60px, 8vw, 40px); opacity: 0.9; filter: contrast(1.1) saturate(1.1); filter: grayscale(100%) } .partner:hover img { filter: grayscale(0%); /* Цветные при наведении */ } .partner span { opacity: 0.9; font-weight: 600; font-size: clamp(12px, 3vw, 14px); text-align: center; } /* Reviews */ .reviews-container { position: relative; } .reviews-track { display: flex; gap: 16px; overflow-x: auto; padding: 8px 0 16px; scroll-snap-type: x mandatory; scrollbar-width: thin; scrollbar-color: var(--glass-brd) transparent; scroll-behavior: smooth; -webkit-overflow-scrolling: touch; } .reviews-track::-webkit-scrollbar { height: 6px; } .reviews-track::-webkit-scrollbar-track { background: transparent; border-radius: 3px; } .reviews-track::-webkit-scrollbar-thumb { background: var(--glass-brd); border-radius: 3px; } .reviews-track::-webkit-scrollbar-thumb:hover { background: var(--accent); } .review { min-width: clamp(260px, 70vw, 350px); max-width: 350px; flex: 0 0 auto; scroll-snap-align: start; border-radius: 16px; border: 1px solid var(--glass-brd); background: linear-gradient(180deg, rgba(255, 255, 255, 0.12), rgba(255, 255, 255, 0.05)); backdrop-filter: blur(14px); box-shadow: var(--shadow-md); padding: 18px; transition: all 0.3s; } .review:hover { transform: translateY(-2px); box-shadow: 0 15px 35px rgba(0, 0, 0, 0.4); } .review__head { display: flex; align-items: center; gap: 12px; margin-bottom: 12px; } .review__ava { width: clamp(36px, 8vw, 44px); height: clamp(36px, 8vw, 44px); border-radius: 50%; overflow: hidden; border: 2px solid rgba(255, 255, 255, 0.3); flex-shrink: 0; } .review__ava img { width: 100%; height: 100%; object-fit: cover; } .review__info h4 { margin: 0 0 4px 0; font-size: clamp(13px, 3vw, 15px); font-weight: 600; } .stars { color: #f6d365; font-size: clamp(12px, 2.5vw, 14px); } .review__text { font-size: clamp(13px, 2.8vw, 14px); line-height: 1.5; color: var(--muted); margin: 0; } .reviews__controls { display: flex; gap: 8px; justify-content: center; margin-top: 16px; } .rctrl { width: 40px; height: 40px; border-radius: 10px; border: 1px solid var(--glass-brd); background: rgba(255, 255, 255, 0.08); display: grid; place-items: center; color: #eaf2ff; cursor: pointer; transition: all 0.25s; touch-action: manipulation; } .rctrl:hover, .rctrl:focus { background: rgba(255, 255, 255, 0.14); transform: translateY(-1px); } .rctrl:disabled { opacity: 0.5; cursor: not-allowed; transform: none; } /* Contact form */ .contact-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; } .form .row { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-bottom: 12px; } .input, .textarea, .select { width: 100%; padding: 12px 14px; border-radius: 12px; border: 1px solid var(--glass-brd); background: linear-gradient(180deg, rgba(255, 255, 255, 0.08), rgba(255, 255, 255, 0.02)); color: #eaf2ff; outline: none; font-family: inherit; transition: all 0.25s; font-size: clamp(13px, 3vw, 14px); min-height: 44px; -webkit-appearance: none; appearance: none; } .input:focus, .textarea:focus, .select:focus { border-color: var(--accent); box-shadow: 0 0 0 3px rgba(96, 165, 250, 0.1); } .input::placeholder, .textarea::placeholder { color: var(--muted); } .textarea { min-height: 100px; resize: vertical; } .check { display: flex; gap: 10px; align-items: flex-start; color: #cfe1ff; font-size: clamp(12px, 2.5vw, 13px); margin: 10px 0 16px 0; } .check input { margin-top: 3px; flex-shrink: 0; width: 16px; height: 16px; accent-color: var(--accent); } /* Map */ .map { height: clamp(250px, 50vw, 320px); border-radius: 16px; border: 1px solid var(--glass-brd); overflow: hidden; } .map iframe { width: 100%; height: 100%; border: none; } /* Footer */ .footer { padding: 40px 0 max(20px, var(--safe-area-inset-bottom)); border-top: 1px solid var(--glass-brd); background: linear-gradient(180deg, rgba(255, 255, 255, 0.02), rgba(255, 255, 255, 0.04)); backdrop-filter: blur(16px); } .footer__grid { display: grid; grid-template-columns: 1.2fr 1fr 1fr; gap: 24px; align-items: start; } .footer__brand { display: flex; align-items: center; gap: 10px; margin-bottom: 12px; } .footer small { color: #a9bfdb; display: block; line-height: 1.5; font-size: clamp(12px, 2.5vw, 13px); } .footer ul { list-style: none; padding: 0; margin: 0; display: grid; gap: 6px; } .footer a { color: #cfe1ff; text-decoration: none; transition: all 0.25s; font-size: clamp(13px, 2.8vw, 14px); touch-action: manipulation; } .footer a:hover { text-decoration: underline; color: var(--accent); } .footer__bottom { margin-top: 24px; padding-top: 16px; border-top: 1px solid var(--glass-brd); display: flex; justify-content: space-between; gap: 12px; flex-wrap: wrap; color: #a9bfdb; font-size: clamp(11px, 2.2vw, 12px); } /* Modals */ .modal { position: fixed; inset: 0; z-index: 2000; display: none; align-items: center; justify-content: center; padding: max(20px, var(--safe-area-inset-top)) max(20px, var(--safe-area-inset-right)) max(20px, var(--safe-area-inset-bottom)) max(20px, var(--safe-area-inset-left)); } .modal.open { display: flex; } .modal__overlay { position: absolute; inset: 0; background: rgba(0, 0, 0, 0.6); backdrop-filter: blur(8px); } .modal__body { position: relative; max-width: min(520px, 90vw); width: 100%; border-radius: 18px; padding: clamp(20px, 5vw, 24px); border: 1px solid var(--glass-brd); background: linear-gradient(180deg, rgba(255, 255, 255, 0.12), rgba(255, 255, 255, 0.06)); backdrop-filter: blur(20px); box-shadow: var(--shadow-lg); color: #eaf2ff; max-height: 90vh; overflow-y: auto; -webkit-overflow-scrolling: touch; } .modal__close { position: absolute; top: 10px; right: 10px; width: 36px; height: 36px; border-radius: 10px; border: 1px solid var(--glass-brd); background: rgba(255, 255, 255, 0.08); display: grid; place-items: center; color: #eaf2ff; cursor: pointer; transition: all 0.25s; touch-action: manipulation; } .modal__close:hover { background: rgba(255, 255, 255, 0.14); } .modal h3 { margin: 6px 0 8px 0; font-weight: 700; font-size: clamp(16px, 4vw, 18px); } .modal .desc { color: #cfe1ff; margin-bottom: 16px; font-size: clamp(13px, 3vw, 14px); } .modal .row { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-bottom: 12px; } /* Lightbox */ .modal--lightbox .modal__body { max-width: 90vw; max-height: 90vh; padding: 16px; } .lightbox-img { max-width: 100%; max-height: 70vh; border-radius: 12px; display: block; margin: 0 auto; } .lightbox-content { text-align: center; margin-top: 16px; } .lightbox-title { font-size: clamp(16px, 4vw, 18px); font-weight: 600; margin: 0 0 8px 0; color: var(--txt); } .lightbox-desc { color: var(--muted); margin: 0; font-size: clamp(13px, 3vw, 14px); line-height: 1.5; } /* Loading state for lightbox image */ .lightbox-img.loading { opacity: 0.5; } .lightbox-loading { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); color: var(--muted); font-size: clamp(13px, 3vw, 14px); display: none; } .lightbox-loading.show { display: block; } .lightbox-error { text-align: center; color: var(--danger); font-size: clamp(13px, 3vw, 14px); padding: 20px; display: none; } .lightbox-error.show { display: block; } /* Animations */ .reveal { opacity: 0; transform: translateY(20px); transition: all 0.6s cubic-bezier(0.2, 0.7, 0.2, 1); } .reveal.visible { opacity: 1; transform: none; } /* Media Queries - Desktop First Approach */ /* Large Desktop (1440px+) */ @media (min-width: 1440px) { :root { --container-max: 1400px; --container-padding: 32px; } .hero-card { padding: 32px; } section { padding: 80px 0; } } /* Desktop (1200px - 1439px) */ @media (max-width: 1439px) and (min-width: 1200px) { :root { --container-padding: 24px; } .nav__list { gap: 12px; } .nav__link { font-size: 12px; padding: 4px 8px; } } /* Small Desktop / Large Laptop (1024px - 1199px) */ @media (max-width: 1199px) and (min-width: 1024px) { .career { grid-template-columns: 1fr; } .contact-grid { grid-template-columns: 1fr; } .footer__grid { grid-template-columns: 1fr 1fr; } .team { grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); } } /* Tablet Landscape (768px - 1023px) */ @media (max-width: 1023px) and (min-width: 768px) { .hero-card { padding: 20px; gap: 16px; } .hero-actions { margin-left: 0; margin-top: 12px; width: 100%; } .carousel__viewport { height: 60vh; min-height: 400px; } .projects-grid { grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); } } /* Tablet Portrait / Mobile Landscape (481px - 767px) */ @media (max-width: 767px) { :root { --header-height: 65px; } .nav { display: none; } .burger { display: flex; } .header__row { grid-template-columns: auto auto; gap: 12px; } .header__cta { gap: 6px; } .hero-card { flex-direction: column; align-items: flex-start; text-align: left; padding: 18px; } .hero-actions { width: 100%; } .team { grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); } section { padding: 40px 0; } .acc__body { padding: 0 16px 0 48px; } .acc.open .acc__body { padding: 0 16px 16px 48px; } .footer__grid { grid-template-columns: 1fr; gap: 20px; } } /* Mobile Portrait (320px - 480px) */ @media (max-width: 480px) { :root { --container-padding: 16px; --header-height: 60px; } .brand { font-size: 12px; gap: 8px; } .brand__logo { width: 32px; height: 32px; font-size: 14px; } .team { grid-template-columns: 1fr; } .partners-grid { grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); } .partner { height: 70px; } .partner span { font-size: 12px; } section { padding: 32px 0; } .carousel__viewport { min-height: 350px; } .hero-card { padding: 16px; } .project__thumb { height: 160px; } .review { min-width: 260px; } .modal .row { grid-template-columns: 1fr; } .form .row { grid-template-columns: 1fr; } .hero-actions .btn { width: 100%; } .modal__body { padding: 20px; } } /* Small Mobile (up to 319px) */ @media (max-width: 319px) { :root { --container-padding: 12px; } .hero-card { padding: 12px; } .brand__text { display: none; } } /* iPhone specific styles */ @media only screen and (device-width: 393px) and (device-height: 852px) and (-webkit-device-pixel-ratio: 3) { /* iPhone 14 Pro */ .hero-card { max-width: 85vw; } } @media only screen and (device-width: 390px) and (device-height: 844px) and (-webkit-device-pixel-ratio: 3) { /* iPhone 12/13/14 */ .carousel__viewport { height: 55vh; } } @media only screen and (device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 2) { /* iPhone 11/XR */ .hero-title { font-size: 22px; } } /* Android specific optimizations */ @media screen and (-webkit-min-device-pixel-ratio: 2) and (max-width: 767px) { .btn { min-height: 48px; /* Android accessibility guidelines */ } .dot { min-width: 32px; min-height: 32px; } .ctrl { min-width: 48px; min-height: 48px; } } /* Accessibility improvements */ @media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; } .animated-bg::before, .animated-bg::after { animation: none; } html { scroll-behavior: auto; } } /* High contrast mode */ @media (prefers-contrast: high) { :root { --glass-brd: rgba(255, 255, 255, 0.5); --glass: rgba(255, 255, 255, 0.15); } .btn { border-width: 2px; } } /* Dark mode support (already dark but for consistency) */ @media (prefers-color-scheme: dark) { :root { color-scheme: dark; } } /* Focus styles for better accessibility */ *:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; } .btn:focus-visible, .ctrl:focus-visible, .dot:focus-visible { outline: 2px solid var(--primary); } /* Touch device optimizations */ @media (hover: none) and (pointer: coarse) { .hero-card:hover, .project:hover, .review:hover, .partner:hover { transform: none; } .btn:hover { transform: none; } } /* Hover device optimizations */ @media (hover: hover) and (pointer: fine) { .carousel__controls { opacity: 0; transition: opacity 0.3s; } .carousel:hover .carousel__controls { opacity: 1; } } /* Print styles */ @media print { .header, .carousel__controls, .dots, .modal, .reviews__controls, .burger { display: none !important; } body { background: white !important; color: black !important; } main { margin-top: 0 !important; } } /* Orientation change handling */ @media (orientation: landscape) and (max-height: 500px) { .carousel__viewport { height: 80vh; } .hero-card { flex-direction: row; align-items: center; } .hero-actions { margin-left: auto; margin-top: 0; width: auto; } } /* Ultra-wide screens */ @media (min-aspect-ratio: 21/9) { .container { max-width: 1600px; } .hero-card { max-width: 1200px; } } /* Конверсионная секция */.cta-section { padding: clamp(30px, 6vw, 50px) 0; position: relative; overflow: hidden;}.cta-card { border-radius: 24px; padding: clamp(24px, 5vw, 40px); border: 1px solid var(--glass-brd); box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3), inset 0 0 60px rgba(255, 255, 255, 0.05); position: relative; display: grid; grid-template-columns: 1fr auto; gap: clamp(20px, 4vw, 32px); align-items: center; max-width: 1200px; margin: 0 auto;}.cta-content { display: flex; gap: clamp(16px, 3vw, 20px); align-items: center;}.cta-icon { width: clamp(50px, 12vw, 70px); height: clamp(50px, 12vw, 70px); border-radius: 16px; background: var(--gradient-accent); display: grid; place-items: center; color: #0b1223; font-size: clamp(20px, 5vw, 28px); flex-shrink: 0; box-shadow: 0 10px 30px rgba(52, 211, 153, 0.3); animation: pulse-glow 3s ease-in-out infinite;}@keyframes pulse-glow { 0%, 100% { box-shadow: 0 10px 30px rgba(52, 211, 153, 0.3); transform: scale(1); } 50% { box-shadow: 0 15px 40px rgba(52, 211, 153, 0.5); transform: scale(1.05); }}.cta-text { flex: 1; min-width: 0;}.cta-title { font-size: clamp(20px, 5vw, 32px); font-weight: 800; margin: 0 0 8px 0; line-height: 1.2; background: linear-gradient(135deg, #fff 0%, #34d399 100%); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;}.cta-subtitle { font-size: clamp(14px, 3.5vw, 18px); color: var(--muted); margin: 0 0 16px 0; line-height: 1.4;}.cta-features { display: flex; gap: clamp(8px, 2vw, 12px); flex-wrap: wrap;}.cta-feature { display: flex; align-items: center; gap: 6px; font-size: clamp(12px, 2.5vw, 14px); color: var(--muted); white-space: nowrap;}.cta-feature i { color: var(--primary); font-size: clamp(10px, 2vw, 12px);}.cta-action { display: flex; flex-direction: column; align-items: center; gap: 16px; flex-shrink: 0;}/* Главная кнопка */.btn-calculate { display: flex; align-items: center; gap: clamp(12px, 3vw, 16px); padding: clamp(16px, 4vw, 20px) clamp(20px, 5vw, 28px); border-radius: 18px; border: none; background: linear-gradient(135deg, #e36521 0%, #f02813 50%, #a91000 100%); color: #0b1223; font-weight: 800; font-size: clamp(14px, 3.5vw, 18px); cursor: pointer; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); position: relative; overflow: hidden; box-shadow: 0 10px 30px rgba(52, 211, 153, 0.4), inset 0 1px 0 rgba(255, 255, 255, 0.3); text-decoration: none; min-height: clamp(60px, 15vw, 80px); transform: translateY(0); user-select: none; touch-action: manipulation;}.btn-calculate::before { content: ; position: absolute; inset: 0; background: linear-gradient(135deg, rgba(255, 255, 255, 0.2) 0%, transparent 50%); opacity: 0; transition: opacity 0.3s ease;}.btn-calculate:hover { transform: translateY(-3px) scale(1.02); box-shadow: 0 20px 50px rgba(52, 211, 153, 0.5), inset 0 1px 0 rgba(255, 255, 255, 0.4);}.btn-calculate:hover::before { opacity: 1;}.btn-calculate:active { transform: translateY(-1px) scale(1.01); transition: all 0.1s ease;}.btn-calculate__icon { width: clamp(24px, 6vw, 32px); height: clamp(24px, 6vw, 32px); border-radius: 50%; background: rgba(255, 255, 255, 0.2); display: grid; place-items: center; font-size: clamp(12px, 3vw, 16px); transition: all 0.3s ease;}.btn-calculate:hover .btn-calculate__icon { background: rgba(255, 255, 255, 0.3); transform: rotate(10deg);}.btn-calculate__text { display: flex; flex-direction: column; align-items: flex-start; line-height: 1.2;}.main-text { font-weight: 800; font-size: clamp(14px, 3.5vw, 18px);}.sub-text { font-weight: 600; font-size: clamp(11px, 2.8vw, 14px); opacity: 0.8;}.btn-calculate__arrow { font-size: clamp(14px, 3.5vw, 18px); transition: transform 0.3s ease;}.btn-calculate:hover .btn-calculate__arrow { transform: translateX(4px);}/* Элементы доверия */.cta-trust { display: flex; gap: clamp(8px, 2vw, 12px); flex-wrap: wrap; justify-content: center;}.trust-item { display: flex; align-items: center; gap: 6px; font-size: clamp(11px, 2.5vw, 13px); color: var(--muted); white-space: nowrap;}.trust-item i { color: var(--primary); font-size: clamp(10px, 2vw, 12px);}/* Адаптив */@media (max-width: 768px) { .cta-card { grid-template-columns: 1fr; text-align: center; padding: clamp(20px, 5vw, 24px); } .cta-content { flex-direction: column; text-align: center; } .cta-features { justify-content: center; } .btn-calculate { width: 100%; justify-content: center; }}@media (max-width: 480px) { .cta-features { flex-direction: column; align-items: center; gap: 6px; } .btn-calculate__text { align-items: center; } .cta-trust { flex-direction: column; gap: 8px; }} /style>/head>body> div classanimated-bg> header classheader rolebanner> div classcontainer> div classheader__row> a href#home classbrand aria-labelСтройЭлектроМонтаж-ДВ - главная страница> div classbrand__logo aria-hiddentrue> i classfa-solid fa-bolt>/i> /div> span classbrand__text>СтройЭлектроМонтаж‑ДВ/span> /a> nav classnav rolenavigation aria-labelОсновная навигация> ul classnav__list> li>a href#services classnav__link>Услуги/a>/li> li>a href#how classnav__link>Процесс работы/a>/li> li>a href#projects classnav__link>Проекты/a>/li> li>a href#team classnav__link>Команда/a>/li> li>a href#reviews classnav__link>Отзывы/a>/li> li>a href#contacts classnav__link>Контакты/a>/li> /ul> /nav> div classheader__cta> a classbtn btn--ghost btn--sm hreftel:+79142006068 aria-labelПозвонить по телефону> i classfa-solid fa-phone aria-hiddentrue>/i> +7 (914) 200‑60‑68 /a> button classbtn btn--alt btn--sm data-modalmodal-order>Заявка/button> button classburger idburger aria-labelОткрыть мобильное меню aria-expandedfalse> span classburger__line>/span> span classburger__line>/span> span classburger__line>/span> /button> /div> /div> /div> div classmobile-nav-overlay idmobileNavOverlay>/div> nav classmobile-nav idmobileNav rolenavigation aria-labelМобильная навигация> ul classmobile-nav__list> li>a href#services classmobile-nav__link>Услуги/a>/li> li>a href#how classmobile-nav__link>Процесс работы/a>/li> li>a href#projects classmobile-nav__link>Проекты/a>/li> li>a href#team classmobile-nav__link>Команда/a>/li> li>a href#reviews classmobile-nav__link>Отзывы/a>/li> li>a href#contacts classmobile-nav__link>Контакты/a>/li> /ul> div classmobile-nav__cta> a classbtn btn--ghost hreftel:+79142006068> i classfa-solid fa-phone aria-hiddentrue>/i> Позвонить /a> button classbtn btn--alt data-modalmodal-order>Оставить заявку/button> /div> /nav> /header> main idhome> section classcarousel aria-labelКлючевые направления деятельности> div classcarousel__viewport idcarousel> div classslide is-active> img classslide__img src../../img/carousel-1.jpg altЭлектромонтаж на промышленном объекте loadingeager> div classslide__overlay>/div> div classslide__content> div classhero-card glass> div classhero-card__icon aria-hiddentrue> i classfa-solid fa-plug>/i> /div> div> h1 classhero-title>Электромонтажные работы под ключ/h1> p classhero-sub>Проектирование, монтаж, ввод в эксплуатацию. Гарантия до 3 лет. Работаем 24/7./p> /div> div classhero-actions> button classbtn onclickscrollToSection(services)>Наши услуги/button> button classbtn btn--ghost data-modalmodal-order>Получить смету/button> /div> /div> /div> /div> div classslide> img classslide__img src../../img/carousel-4.jpg altСКС и слаботочные системы loadinglazy> div classslide__overlay>/div> div classslide__content> div classhero-card glass> div classhero-card__icon aria-hiddentrue> i classfa-solid fa-network-wired>/i> /div> div> h2 classhero-title>СКС и слаботочные системы/h2> p classhero-sub>Надежная передача данных: проектирование, монтаж и тестирование СКС./p> /div> div classhero-actions> button classbtn onclickscrollToSection(how)>Процесс работы/button> button classbtn btn--ghost data-modalmodal-callback>Задать вопрос/button> /div> /div> /div> /div> div classslide> img classslide__img src../../img/carousel-5.webp altИнженерная надежность и безопасность loadinglazy> div classslide__overlay>/div> div classslide__content> div classhero-card glass> div classhero-card__icon aria-hiddentrue> i classfa-solid fa-shield-halved>/i> /div> div> h2 classhero-title>Инженерная надежность и безопасность/h2> p classhero-sub>Соответствие нормам и стандартам. Собственная культура качества./p> /div> div classhero-actions> button classbtn onclickscrollToSection(team)>Наша команда/button> button classbtn btn--ghost data-modalmodal-order>Связаться/button> /div> /div> /div> /div> div classcarousel__controls> button classctrl idprev aria-labelПредыдущий слайд> i classfa-solid fa-chevron-left aria-hiddentrue>/i> /button> button classctrl idnext aria-labelСледующий слайд> i classfa-solid fa-chevron-right aria-hiddentrue>/i> /button> /div> div classdots iddots aria-labelИндикация слайдов roletablist>/div> /div> /section>section classcta-section> div classcontainer> div classcta-card glass reveal> div classcta-content> div classcta-icon> i classfa-solid fa-calculator>/i> /div> div classcta-text> h2 classcta-title>Узнайте точную стоимость вашего проекта/h2> p classcta-subtitle>/p> div classcta-features> span classcta-feature> i classfa-solid fa-check>/i> Точный расчет материалов /span> span classcta-feature> i classfa-solid fa-check>/i> Учёт всех работ /span> span classcta-feature> i classfa-solid fa-check>/i> Фиксированная цена /span> /div> /div> /div> div classcta-action> button classbtn-calculate data-modalmodal-calculate> span classbtn-calculate__icon> i classfa-solid fa-calculator>/i> /span> span classbtn-calculate__text> span classmain-text>Рассчитать проект/span> /span> span classbtn-calculate__arrow> i classfa-solid fa-arrow-right>/i> /span> /button> div classcta-trust> div classtrust-item> i classfa-solid fa-shield-check>/i> /div> div classtrust-item> i classfa-solid fa-clock>/i> span>Работаем 24/7/span> /div> /div> /div> /div> /div>/section> section idservices> div classcontainer> header classsection-head reveal> h2 classh2>Наши услуги/h2> p classlead>Профессионально. Прозрачно. С гарантией./p> /header> div classservices-acc data-accordion> article classacc reveal> header classacc__head rolebutton tabindex0 aria-expandedtrue> div classacc__icon aria-hiddentrue> i classfa-solid fa-microscope>/i> /div> h3 classacc__title>Услуги электротехнической лаборатории/h3> i classfa-solid fa-chevron-down acc__toggle aria-hiddentrue>/i> /header> div classacc__body> p>Выполняем высоковольтные замеры и тестирование:/p> ul classul> li>i classfa-solid fa-check aria-hiddentrue>/i>div>Высоковольтное тестирование оборудования/div>/li> li>i classfa-solid fa-check aria-hiddentrue>/i>div>Замер сопротивления изоляции/div>/li> li>i classfa-solid fa-check aria-hiddentrue>/i>div>Тестирование кабельных линий до 10 кВ с различными типами изоляции/div>/li> li>i classfa-solid fa-check aria-hiddentrue>/i>div>Замер сопротивления заземляющих контуров и металлических соединений/div>/li> li>i classfa-solid fa-check aria-hiddentrue>/i>div>Диагностика измерительных трансформаторов, силовых трансформаторов и прочего электрооборудования/div>/li> /ul> div styledisplay:flex;gap:12px;margin-top:14px;flex-wrap:wrap> button classbtn data-modalmodal-order>Заказать/button> button classbtn btn--ghost data-modalmodal-callback>Получить консультацию/button> /div> /div> /article> article classacc reveal> header classacc__head rolebutton tabindex0 aria-expandedfalse> div classacc__icon aria-hiddentrue> i classfa-solid fa-compass-drafting>/i> /div> h3 classacc__title>Проектирование объектов электроэнергетики/h3> i classfa-solid fa-chevron-down acc__toggle aria-hiddentrue>/i> /header> div classacc__body> ul classul> li>i classfa-solid fa-check aria-hiddentrue>/i>div>Разработка систем электрического питания/div>/li> li>i classfa-solid fa-check aria-hiddentrue>/i>div>Создание схем релейной защиты и автоматических систем (РЗА)/div>/li> li>i classfa-solid fa-check aria-hiddentrue>/i>div>Расчеты уставок для устройств РЗА и противоаварийной автоматики/div>/li> li>i classfa-solid fa-check aria-hiddentrue>/i>div>Создание проектной документации при модернизации электроэнергетических объектов/div>/li> /ul> div styledisplay:flex;gap:12px;margin-top:14px;flex-wrap:wrap> button classbtn data-modalmodal-order>Заказать/button> button classbtn btn--ghost data-modalmodal-callback>Обсудить проект/button> /div> /div> /article> article classacc reveal> header classacc__head rolebutton tabindex0 aria-expandedfalse> div classacc__icon aria-hiddentrue> i classfa-solid fa-screwdriver-wrench>/i> /div> h3 classacc__title>Электроустановочные работы/h3> i classfa-solid fa-chevron-down acc__toggle aria-hiddentrue>/i> /header> div classacc__body> ul classul> li>i classfa-solid fa-check aria-hiddentrue>/i>div>Установка КТПН, распределительных устройств 6–10 кВ/div>/li> li>i classfa-solid fa-check aria-hiddentrue>/i>div>Установка электрооборудования напряжением 0,4–35 кВ/div>/li> li>i classfa-solid fa-check aria-hiddentrue>/i>div>Прокладка и подсоединение силовых и контрольных кабелей/div>/li> li>i classfa-solid fa-check aria-hiddentrue>/i>div>Установка вторичного коммутационного оборудования (шкафы РЗА, ПА, АСУ ТП)/div>/li> li>i classfa-solid fa-check aria-hiddentrue>/i>div>Монтаж слаботочных систем: сигнализация (охранная/пожарная), СКУД/div>/li> /ul> div styledisplay:flex;gap:12px;margin-top:14px;flex-wrap:wrap> button classbtn data-modalmodal-order>Заказать/button> button classbtn btn--ghost data-modalmodal-callback>Консультация/button> /div> /div> /article> article classacc reveal> header classacc__head rolebutton tabindex0 aria-expandedfalse> div classacc__icon aria-hiddentrue> i classfa-solid fa-truck-fast>/i> /div> h3 classacc__title>Поставки оборудования/h3> i classfa-solid fa-chevron-down acc__toggle aria-hiddentrue>/i> /header> div classacc__body> p>Обеспечиваем поставку электротехнического оборудования:/p> ul classul> li>i classfa-solid fa-check aria-hiddentrue>/i>div>Кабельные изделия/div>/li> li>i classfa-solid fa-check aria-hiddentrue>/i>div>Вспомогательные материалы/div>/li> li>i classfa-solid fa-check aria-hiddentrue>/i>div>Основное оборудование: трансформаторное оборудование, управляющие шкафы, распределительные устройства и другая продукция/div>/li> /ul> div styledisplay:flex;gap:12px;margin-top:14px;flex-wrap:wrap> button classbtn data-modalmodal-order>Запросить прайс/button> button classbtn btn--ghost data-modalmodal-callback>Уточнить наличие/button> /div> /div> /article> /div> /div> /section> section idhow> div classcontainer> header classsection-head reveal> h2 classh2>Как мы работаем/h2> span classpill> i classfa-solid fa-circle-check aria-hiddentrue>/i> Точность - критерий качества производимых работ /span> /header> div classaccordion> article classacc reveal> header classacc__head rolebutton tabindex0 aria-expandedtrue> div classacc__icon aria-hiddentrue> i classfa-solid fa-route>/i> /div> h3 classacc__title>Выезд на объект и оценка объема работ/h3> i classfa-solid fa-chevron-down acc__toggle aria-hiddentrue>/i> /header> div classacc__body> p>Выезжаем на объект, фиксируем исходные данные и требования, даем рекомендации, готовим предварительную смету и план-график./p> /div> /article> article classacc reveal> header classacc__head rolebutton tabindex0 aria-expandedfalse> div classacc__icon aria-hiddentrue> i classfa-solid fa-drafting-compass>/i> /div> h3 classacc__title>Планирование СКС/h3> i classfa-solid fa-chevron-down acc__toggle aria-hiddentrue>/i> /header> div classacc__body> p>Проектируем структурированную кабельную систему: учитываем нагрузки, требования безопасности, возможности масштабирования и бюджет./p> /div> /article> article classacc reveal> header classacc__head rolebutton tabindex0 aria-expandedfalse> div classacc__icon aria-hiddentrue> i classfa-solid fa-box-open>/i> /div> h3 classacc__title>Подбор материалов, комплектующих и оборудования/h3> i classfa-solid fa-chevron-down acc__toggle aria-hiddentrue>/i> /header> div classacc__body> p>Работаем с проверенными поставщиками: подбираем сертифицированное оборудование и материалы с учетом сроков поставки и гарантии./p> /div> /article> article classacc reveal> header classacc__head rolebutton tabindex0 aria-expandedfalse> div classacc__icon aria-hiddentrue> i classfa-solid fa-hard-hat>/i> /div> h3 classacc__title>Монтажные работы/h3> i classfa-solid fa-chevron-down acc__toggle aria-hiddentrue>/i> /header> div classacc__body> p>Проводим монтаж по проектной документации, соблюдая технику безопасности и стандарты качества, ведем авторский и технический надзор./p> /div> /article> article classacc reveal> header classacc__head rolebutton tabindex0 aria-expandedfalse> div classacc__icon aria-hiddentrue> i classfa-solid fa-shield-check>/i> /div> h3 classacc__title>Тестирование СКС и сдача объекта/h3> i classfa-solid fa-chevron-down acc__toggle aria-hiddentrue>/i> /header> div classacc__body> p>Выполняем измерения и испытания, оформляем отчетную документацию, обучаем персонал и сдаем объект в эксплуатацию с гарантией./p> /div> /article> /div> /div> /section> section idprojects> div classcontainer> header classsection-head reveal> h2 classh2>Наши проекты/h2> p classlead>Ключевые реализованные объекты и результаты в цифрах/p> /header> div classprojects-grid> figure classproject reveal data-src../../img/tu.webp data-titleВыполнение ТУ data-descПолный цикл работ: проектирование системы электроснабжения, монтаж оборудования, пуско-наладочные работы и ввод в эксплуатацию. Срок реализации: 4 месяца. rolebutton tabindex0> img classproject__thumb src../../img/tu.jpg altМодернизация электроснабжения промышленного предприятия loadinglazy> figcaption classproject__cap> b>Выполнение ТУ/b> span>Проектирование, монтаж, пуско‑наладка/span> /figcaption> /figure> figure classproject reveal data-src../../img/energo.webp data-titleМонтаж и ПНР энергоблока data-descКомплексный монтаж с полным циклом работ от проектирования до ввода в эксплуатацию rolebutton tabindex0> img classproject__thumb src../../img/pnr.jpg altМонтаж и ПНР энергоблока loadinglazy> figcaption classproject__cap> b>Монтаж и ПНР энергоблока/b> span>Полный цикл работ до ввода в эксплуатацию/span> /figcaption> /figure> figure classproject reveal data-src../../img/montcoll.jpeg data-titleМонтаж и расключение ВРУ, ЩР, ЩО и тд. data-descМонтаж и расключение ВРУ, ЩР, ЩО и тд. rolebutton tabindex0> img classproject__thumb src../../img/montobch.jpg altМонтаж loadinglazy> figcaption classproject__cap> b>Монтаж и расключение ВРУ, ЩР, ЩО и тд./b> span>Монтаж и расключение ВРУ, ЩР, ЩО и тд./span> /figcaption> /figure> figure classproject reveal data-src../../img/ktpn.webp data-titleМонтаж КТПН data-descМонтаж комплектной трансформаторной подстанции наружной установки rolebutton tabindex0> img classproject__thumb src../../img/ktpn.jpg altМонтаж КТПН loadinglazy> figcaption classproject__cap> b>Монтаж КТПН/b> span>Монтаж комплектной трансформаторной подстанции наружной установки/span> /figcaption> /figure> figure classproject reveal data-src../../img/orucoll.jpeg data-titleРаботы на ОРУ data-descРаботы на ОРУ 35 и 220 кВ rolebutton tabindex0> img classproject__thumb src../../img/oruobch.jpg altРаботы на ОРУ loadinglazy> figcaption classproject__cap> b>Работы на ОРУ/b> span>Работы на ОРУ 35 и 220 кВ/span> /figcaption> /figure> figure classproject reveal data-src../../img/vl.webp data-titleРемонт ВЛ-6кВ data-descРемонт ВЛ-6кВ rolebutton tabindex0> img classproject__thumb src../../img/vl.jpg altРемонт ВЛ-6кВ loadinglazy> figcaption classproject__cap> b>Ремонт ВЛ-6кВ/b> span>Ремонт ВЛ-6кВ/span> /figcaption> /figure> figure classproject reveal data-src../../img/kvl6.webp data-titleСтроительство КВЛ 6кВ (ТМ-35) data-descСтроительство КВЛ 6кВ (ТМ-35) rolebutton tabindex0> img classproject__thumb src../../img/kvl.jpg altСтроительство КВЛ 6кВ (ТМ-35) loadinglazy> figcaption classproject__cap> b>Строительство КВЛ 6кВ (ТМ-35)/b> span>Строительство КВЛ 6кВ (ТМ-35)/span> /figcaption> /figure> figure classproject reveal data-src../../img/estak.webp data-titleСтроительство эстакад data-descСтроительство эстакад rolebutton tabindex0> img classproject__thumb src../../img/est.jpg altСтроителство эстакад loadinglazy> figcaption classproject__cap> b>Строительство эстакад/b> span>Строительство эстакад/span> /figcaption> /figure> /div> /div> /section> section idteam> div classcontainer> header classsection-head reveal> h2 classh2>Наша команда/h2> p classlead>Люди, которые создают надежную энергетику/p> /header> div classteam> article classmember reveal> div classavatar> img src../../img/ava.png altСветлана Заморкина, генеральный директор loadinglazy> /div> h3>Светлана Борисовна Заморкина/h3> div classrole>Директор/div> p classlead stylemargin-top:8px>Стратегия, качество услуг, взаимодействие с заказчиками./p> div classsoc> a hreftel:+79142006068 titleПозвонить aria-labelПозвонить директору> i classfa-solid fa-phone aria-hiddentrue>/i> /a> a hrefmailto:sem-dv@inbox.ru titleНаписать aria-labelНаписать директору> i classfa-solid fa-envelope aria-hiddentrue>/i> /a> /div> /article> article classmember reveal> div classavatar> img src../../img/ava.png altАртем Заморкин, технический директор loadinglazy> /div> h3>Артем Викторович Заморкин/h3> div classrole>Мастер строительно-монтажных работ/div> p classlead stylemargin-top:8px>Проектирование, инженерный надзор, внедрение технологий./p> div classsoc> a hreftel:+79142006068 titleПозвонить aria-labelПозвонить> i classfa-solid fa-phone aria-hiddentrue>/i> /a> a hrefmailto:sem-dv@inbox.ru titleНаписать aria-labelНаписать> i classfa-solid fa-envelope aria-hiddentrue>/i> /a> /div> /article> article classmember reveal> div classavatar> img src../../img/ava.png altЗаморкин, главный инженер loadinglazy> /div> h3>Роман Викторович Заморкин/h3> div classrole>Мастер строительно-монтажных работ/div> p classlead stylemargin-top:8px>Планирование СКС, стандартизация, распределение нагрузок./p> div classsoc> a hreftel:+79142006068 titleПозвонить aria-labelПозвонить> i classfa-solid fa-phone aria-hiddentrue>/i> /a> a hrefmailto:sem-dv@inbox.ru titleНаписать aria-labelНаписать > i classfa-solid fa-envelope aria-hiddentrue>/i> /a> /div> /article> /div> div classcareer reveal stylemargin-top: 60px;> div classcard card--glass> div classpill> i classfa-solid fa-bolt aria-hiddentrue>/i> Промышленная электроэнергетика /div> h3 stylemargin:12px 0 10px 0;>Начни свою карьеру с нами/h3> ul classul> li>i classfa-solid fa-star aria-hiddentrue>/i>div>strong>Сильная команда/strong>: наставничество и обмен опытом с ведущими инженерами./div>/li> li>i classfa-solid fa-medal aria-hiddentrue>/i>div>strong>Рост и обучение/strong>: сертификация, курсы и реальные карьерные траектории./div>/li> li>i classfa-solid fa-wallet aria-hiddentrue>/i>div>strong>Достойные условия/strong>: конкурентная зарплата, премии за результат./div>/li> li>i classfa-solid fa-shield-heart aria-hiddentrue>/i>div>strong>Безопасность/strong>: современные СИЗ и инвентарь, четкие регламенты./div>/li> li>i classfa-solid fa-calendar-check aria-hiddentrue>/i>div>strong>Гибкий график/strong> и командировки по согласованию./div>/li> /ul> div styledisplay:flex;gap:12px;margin-top:18px;flex-wrap:wrap> button classbtn data-modalmodal-order>Откликнуться/button> a classbtn btn--ghost href#team>Познакомиться с командой/a> /div> /div> div classgallery roleimg aria-labelКоманда инженеров за работой> img src../../img/carier.avif altКоманда инженеров loadinglazy> /div> /div> /div> /section> section idpartners stylepadding: 40px 0;> div classcontainer> header classsection-head reveal> h2 classh2>Наши партнеры/h2> p classlead>Сотрудничаем с надежными производителями и подрядчиками/p> /header> div classpartners-grid> div classpartner reveal roleimg aria-labelПартнер ТЕХНОНИКОЛЬ> img src../../img/Tehnonikol.png altЛоготип ТЕХНОНИКОЛЬ loadinglazy> /div> div classpartner reveal roleimg aria-labelПартнер ПОЛИМЕТАЛЛ> img src../../img/Polimetal.png altЛоготип ПОЛИМЕТАЛЛ loadinglazy> /div> div classpartner reveal roleimg aria-labelПартнер ССР> img src../../img/ssr.png altЛоготип ССР loadinglazy> /div> div classpartner reveal roleimg aria-labelПартнер БМК ГРУПП> img src../../img/bmk.png altЛоготип БМК ГРУПП loadinglazy> /div> div classpartner reveal roleimg aria-labelПартнер ВОСТОК ВОЛЬТ> img src../../img/vostok.png altЛоготип ВОСТОК ВОЛЬТ loadinglazy> /div> div classpartner reveal roleimg aria-labelПартнер Legrand> img src../../img/NPZ.png altЛоготип Legrand loadinglazy> /div>/div> section idreviews> div classcontainer> header classsection-head reveal> h2 classh2>Отзывы о нашей работе/h2> p classlead>Нам доверяют и рекомендуют/p> /header> div classreviews-container> div classreviews-track idreviewsTrack roleregion aria-labelОтзывы клиентов> article classreview reveal> header classreview__head> div classreview__ava> img src../../img/ava.png altАлександр П. loadinglazy> /div> div classreview__info> h4>Александр П./h4> div classstars roleimg aria-label5 звезд из 5>★★★★★/div> /div> /header> p classreview__text>Заказывали реконструкцию РУ‑10 кВ. Все работы выполнены качественно и в срок. Документация и испытания — на высоте. Рекомендую!/p> /article> article classreview reveal> header classreview__head> div classreview__ava> img src../../img/ava.png altМария И. loadinglazy> /div> div classreview__info> h4>Мария И./h4> div classstars roleimg aria-label5 звезд из 5>★★★★★/div> /div> /header> p classreview__text>СКС в офисе сделали быстро, аккуратно и с понятной маркировкой. Рекомендую как надежного подрядчика. Цена соответствует качеству./p> /article> article classreview reveal> header classreview__head> div classreview__ava> img src../../img/ava.png altОлег Н. loadinglazy> /div> div classreview__info> h4>Олег Н./h4> div classstars roleimg aria-label4 звезды из 5>★★★★☆/div> /div> /header> p classreview__text>Пуско‑наладка и испытания выполнены без замечаний. Понравилась коммуникация и прозрачность сметы. Будем обращаться еще./p> /article> article classreview reveal> header classreview__head> div classreview__ava> img src../../img/ava.png altЕкатерина С. loadinglazy> /div> div classreview__info> h4>Екатерина С./h4> div classstars roleimg aria-label5 звезд из 5>★★★★★/div> /div> /header> p classreview__text>Отличная команда профессионалов. Выезд и замер были бесплатными, что приятно удивило. Работают с соблюдением всех норм безопасности./p> /article> article classreview reveal> header classreview__head> div classreview__ava> img src../../img/ava.png altДмитрий В. loadinglazy> /div> div classreview__info> h4>Дмитрий В./h4> div classstars roleimg aria-label5 звезд из 5>★★★★★/div> /div> /header> p classreview__text>Выполняли электромонтаж на нашем производстве. Все сроки соблюдены, качество отличное. Гарантийное обслуживание на высоте./p> /article> article classreview reveal> header classreview__head> div classreview__ava> img src../../img/ava.png altАнна К. loadinglazy> /div> div classreview__info> h4>Анна К./h4> div classstars roleimg aria-label4 звезды из 5>★★★★☆/div> /div> /header> p classreview__text>Проектирование и монтаж системы видеонаблюдения выполнили профессионально. Консультации по эксплуатации очень помогли./p> /article> /div> div classreviews__controls> button classrctrl idrevPrev aria-labelПоказать предыдущие отзывы> i classfa-solid fa-chevron-left aria-hiddentrue>/i> /button> button classrctrl idrevNext aria-labelПоказать следующие отзывы> i classfa-solid fa-chevron-right aria-hiddentrue>/i> /button> /div> /div> /div> /section> section idcontacts> div classcontainer> header classsection-head reveal> h2 classh2>Свяжитесь с нами/h2> p classlead>Быстро ответим и подготовим предложение по вашему проекту/p> /header> div classcontact-grid> div classcard card--glass reveal> h3 stylemargin:0 0 8px 0;>Контакты/h3> p classlead>г. Хабаровск · Работаем по ДФО/p> address styledisplay:grid;gap:10px;margin:16px 0 18px 0;font-style:normal> div> i classfa-solid fa-phone aria-hiddentrue>/i> a hreftel:+79142006068>+7 (914) 200‑60‑68/a> /div> div> i classfa-solid fa-envelope aria-hiddentrue>/i> a hrefmailto:sem-dv@inbox.ru>sem-dv@inbox.ru/a> /div> div> i classfa-solid fa-globe aria-hiddentrue>/i> a hrefhttp://sem-dv.ru/ target_blank relnoopener noreferrer>sem-dv.ru/a> /div> /address> div styledisplay:flex;gap:12px;margin-bottom:12px;flex-wrap:wrap> button classbtn data-modalmodal-order> i classfa-solid fa-paper-plane aria-hiddentrue>/i> Оставить заявку /button> button classbtn btn--ghost data-modalmodal-callback> i classfa-solid fa-phone-volume aria-hiddentrue>/i> Обратный звонок /button> /div> form idcontactForm classform novalidate> div classrow> input classinput typetext namename placeholderВаше имя * required aria-labelВаше имя> input classinput typetel namephone placeholderТелефон * required aria-labelНомер телефона> /div> div classrow> input classinput typeemail nameemail placeholderEmail aria-labelЭлектронная почта> select classselect nameservice aria-labelВыберите услугу> option value>Выберите услугу/option> option>Электротехническая лаборатория/option> option>Проектирование/option> option>Электроустановочные работы/option> option>Поставки оборудования/option> /select> /div> textarea classtextarea namemessage placeholderКратко опишите задачу aria-labelОписание задачи>/textarea> label classcheck> input typecheckbox required aria-describedbyprivacy-notice> span idprivacy-notice>Я согласен(а) с политикой обработки персональных данных/span> /label> button classbtn typesubmit>Отправить заявку/button> /form> /div> div classmap reveal idmap> iframe titleКарта: местоположение офиса в Хабаровске srchttps://yandex.ru/map-widget/v1/?umconstructor%3A85b3c2b3f9f5c2c1c7e9f4d59f7f7b95a6d1b2f1a2b3c4d5e6&sourceconstructor width100% height100% frameborder0 loadinglazy> /iframe> /div> /div> /div> /section> /main> footer classfooter rolecontentinfo> div classcontainer> div classfooter__grid> div> div classfooter__brand> div classbrand__logo aria-hiddentrue> i classfa-solid fa-bolt>/i> /div> strong>СтройЭлектроМонтаж‑ДВ/strong> /div> small>Профессиональные электромонтажные работы под ключ.Работа 24/7./small> a hrefprivacy target_blank>Пользовательское соглашение/a> /div> nav aria-labelНавигация в подвале сайта> strong>Навигация/strong> ul> li>a href#services>Услуги/a>/li> li>a href#how>Процесс работы/a>/li> li>a href#projects>Проекты/a>/li> li>a href#team>Команда/a>/li> li>a href#reviews>Отзывы/a>/li> li>a href#contacts>Контакты/a>/li> /ul> /nav> div> strong>Контакты/strong> ul> li>a hreftel:+79142006068>+7 (914) 200‑60‑68/a>/li> li>a hrefmailto:sem-dv@inbox.ru>sem-dv@inbox.ru/a>/li> li>a hrefhttp://sem-dv.ru/ target_blank relnoopener noreferrer>sem-dv.ru/a>/li> /ul> /div> /div> div classfooter__bottom> div>© 2025 СтройЭлектроМонтаж‑ДВ/div> div> ДФО/div> /div> /div> /footer> /div> div classmodal idmodal-callback aria-hiddentrue roledialog aria-labelledbycallback-title> div classmodal__overlay data-closemodal>/div> div classmodal__body glass> button classmodal__close data-closemodal aria-labelЗакрыть модальное окно> i classfa-solid fa-xmark aria-hiddentrue>/i> /button> h3 idcallback-title>Обратный звонок/h3> p classdesc>Оставьте номер — перезвоним в течение 15 минут/p> form idform-callback novalidate> div classrow> input classinput namename typetext placeholderВаше имя * required aria-labelВаше имя> input classinput namephone typetel placeholderТелефон * required aria-labelНомер телефона> /div> div classrow> select classselect nametime aria-labelУдобное время для звонка> option value>Удобное время/option> option>9:00–12:00/option> option>12:00–15:00/option> option>15:00–18:00/option> /select> input classinput nametopic typetext placeholderТема (необязательно) aria-labelТема обращения> /div> label classcheck> input typecheckbox required aria-describedbycallback-privacy> span idcallback-privacy>Согласен(а) на обработку персональных данных/span> /label> button classbtn typesubmit>Жду звонка/button> /form> /div> /div> div classmodal idmodal-order aria-hiddentrue roledialog aria-labelledbyorder-title> div classmodal__overlay data-closemodal>/div> div classmodal__body glass> button classmodal__close data-closemodal aria-labelЗакрыть модальное окно> i classfa-solid fa-xmark aria-hiddentrue>/i> /button> h3 idorder-title>Оставить заявку/h3> p classdesc>Расскажите о задаче — подготовим смету и сроки/p> form idform-order novalidate> div classrow> input classinput namename typetext placeholderВаше имя * required aria-labelВаше имя> input classinput namephone typetel placeholderТелефон * required aria-labelНомер телефона> /div> div classrow> input classinput nameemail typeemail placeholderEmail (необязательно) aria-labelЭлектронная почта> select classselect nameservice required aria-labelВыберите услугу> option value>Выберите услугу */option> option>Электротехническая лаборатория/option> option>Проектирование/option> option>Электроустановочные работы/option> option>Поставки оборудования/option> /select> /div> textarea classtextarea namemessage placeholderКратко опишите задачу aria-labelОписание задачи>/textarea> label classcheck> input typecheckbox required aria-describedbyorder-privacy> span idorder-privacy>Согласен(а) на обработку персональных данных/span> /label> button classbtn typesubmit>Отправить/button> /form> /div> /div> div classmodal modal--lightbox idmodal-lightbox aria-hiddentrue roledialog aria-labelledbylightbox-title> div classmodal__overlay data-closemodal>/div> div classmodal__body> button classmodal__close data-closemodal aria-labelЗакрыть галерею> i classfa-solid fa-xmark aria-hiddentrue>/i> /button> div classlightbox-loading idlightbox-loading>Загрузка изображения.../div> div classlightbox-error idlightbox-error>Ошибка загрузки изображения/div> img classlightbox-img idlightbox-img alt roleimg> div classlightbox-content> h3 classlightbox-title idlightbox-title>/h3> p classlightbox-desc idlightbox-desc>/p> /div> /div> /div>div classmodal idmodal-calculate aria-hiddentrue roledialog aria-labelledbycalculate-title> div classmodal__overlay data-closemodal>/div> div classmodal__body glass> button classmodal__close data-closemodal aria-labelЗакрыть модальное окно> i classfa-solid fa-xmark aria-hiddentrue>/i> /button> h3 idcalculate-title>Рассчитать проект/h3> p classdesc>Опишите ваш проект, и мы подготовим точную смету с материалами и работами/p> form idform-calculate novalidate> div classrow> input classinput namename typetext placeholderВаше имя * required aria-labelВаше имя> input classinput namephone typetel placeholderТелефон * required aria-labelНомер телефона> /div> div classrow> input classinput nameemail typeemail placeholderEmail aria-labelЭлектронная почта> select classselect nameobject_type aria-labelТип объекта> option value>Тип объекта/option> option>Жилой дом/option> option>Квартира/option> option>Офис/option> option>Торговое помещение/option> option>Производство/option> option>Склад/option> option>Другое/option> /select> /div> div classrow> input classinput namearea typenumber placeholderПлощадь объекта, м² aria-labelПлощадь объекта> select classselect nameurgency aria-labelСроки выполнения> option value>Сроки выполнения/option> option>Срочно (до 1 недели)/option> option>В течение месяца/option> option>2-3 месяца/option> option>Не ограничено/option> /select> /div> textarea classtextarea namemessage placeholderОпишите подробно ваш проект: какие работы нужны, особенности объекта, дополнительные требования aria-labelОписание проекта>/textarea> label classcheck> input typecheckbox required aria-describedbycalculate-privacy> span idcalculate-privacy>Согласен(а) на обработку персональных данных/span> /label> button classbtn typesubmit>Получить расчет/button> /form> /div>/div> script> use strict; // Utility functions const $ (selector, context document) > context.querySelector(selector); const $$ (selector, context document) > context.querySelectorAll(selector); // Mobile navigation class MobileNav { constructor() { this.burger $(#burger); this.mobileNav $(#mobileNav); this.overlay $(#mobileNavOverlay); // ДОБАВЬТЕ this.isOpen false; this.init(); } init() { if (!this.burger || !this.mobileNav) return; this.burger.addEventListener(click, () > this.toggle()); // Close on link click $$(#mobileNav a, #mobileNav button).forEach(element > { element.addEventListener(click, () > this.close()); }); // Close on outside click document.addEventListener(click, (e) > { if (this.isOpen && !this.burger.contains(e.target) && !this.mobileNav.contains(e.target)) { this.close(); } // ДОБАВЬТЕ: Закрытие при клике на overlay if (this.overlay) { this.overlay.addEventListener(click, () > this.close()); } }); // Close on escape document.addEventListener(keydown, (e) > { if (e.key Escape && this.isOpen) { this.close(); } }); } toggle() { this.isOpen ? this.close() : this.open(); } open() { this.isOpen true; this.mobileNav.classList.add(open); this.burger.classList.add(active); this.burger.setAttribute(aria-expanded, true); // ДОБАВЬТЕ ЭТИ СТРОКИ if (this.overlay) { this.overlay.classList.add(active); } document.body.style.overflow hidden; } close() { this.isOpen false; this.mobileNav.classList.remove(open); this.burger.classList.remove(active); this.burger.setAttribute(aria-expanded, false); // ДОБАВЬТЕ ЭТИ СТРОКИ if (this.overlay) { this.overlay.classList.remove(active); } document.body.style.overflow ; }} // Smooth scroll class SmoothScroll { constructor() { this.init(); } init() { $$(ahref^#).forEach(link > { link.addEventListener(click, (e) > { const href link.getAttribute(href); if (href && href.length > 1) { const target $(href); if (target) { e.preventDefault(); const headerHeight $(.header)?.offsetHeight || 70; const targetPosition target.getBoundingClientRect().top + window.pageYOffset - headerHeight; window.scrollTo({ top: targetPosition, behavior: smooth }); } } }); }); } } // Carousel class Carousel { constructor(selector) { this.viewport $(selector); if (!this.viewport) return; this.slides $$(.slide, this.viewport); this.dotsContainer $(#dots); this.prevBtn $(#prev); this.nextBtn $(#next); this.currentIndex 0; this.autoplayTimer null; this.autoplayDelay 5000; this.touchStartX 0; this.touchEndX 0; this.init(); } init() { if (this.slides.length 0) return; this.createDots(); this.bindEvents(); this.startAutoplay(); } createDots() { if (!this.dotsContainer) return; this.slides.forEach((_, index) > { const dot document.createElement(button); dot.className `dot${index 0 ? is-active : }`; dot.setAttribute(aria-label, `Перейти к слайду ${index + 1}`); dot.addEventListener(click, () > this.goToSlide(index, true)); this.dotsContainer.appendChild(dot); }); } bindEvents() { this.prevBtn?.addEventListener(click, () > this.prevSlide()); this.nextBtn?.addEventListener(click, () > this.nextSlide()); // Pause on hover (desktop only) if (window.matchMedia((hover: hover)).matches) { this.viewport.addEventListener(mouseenter, () > this.stopAutoplay()); this.viewport.addEventListener(mouseleave, () > this.startAutoplay()); } // Keyboard navigation this.viewport.addEventListener(keydown, (e) > { if (e.key ArrowLeft) this.prevSlide(); if (e.key ArrowRight) this.nextSlide(); }); // Touch events for mobile this.viewport.addEventListener(touchstart, (e) > { this.touchStartX e.changedTouches0.screenX; }, { passive: true }); this.viewport.addEventListener(touchend, (e) > { this.touchEndX e.changedTouches0.screenX; this.handleSwipe(); }, { passive: true }); } handleSwipe() { const swipeThreshold 50; const diff this.touchStartX - this.touchEndX; if (Math.abs(diff) > swipeThreshold) { if (diff > 0) { this.nextSlide(); } else { this.prevSlide(); } } } goToSlide(index, userTriggered false) { this.currentIndex (index + this.slides.length) % this.slides.length; // Update slides this.slides.forEach((slide, i) > { slide.classList.toggle(is-active, i this.currentIndex); }); // Update dots $$(.dot, this.dotsContainer).forEach((dot, i) > { dot.classList.toggle(is-active, i this.currentIndex); }); if (userTriggered) { this.restartAutoplay(); } } nextSlide() { this.goToSlide(this.currentIndex + 1, true); } prevSlide() { this.goToSlide(this.currentIndex - 1, true); } startAutoplay() { this.stopAutoplay(); this.autoplayTimer setInterval(() > { this.goToSlide(this.currentIndex + 1); }, this.autoplayDelay); } stopAutoplay() { if (this.autoplayTimer) { clearInterval(this.autoplayTimer); this.autoplayTimer null; } } restartAutoplay() { this.stopAutoplay(); this.startAutoplay(); } } // Accordion class Accordion { constructor(selector) { this.containers $$(selector); this.init(); } init() { this.containers.forEach(container > { const accordions $$(.acc, container); accordions.forEach(acc > { const header $(.acc__head, acc); const body $(.acc__body, acc); if (!header || !body) return; // Make header focusable and add keyboard support if (!header.hasAttribute(tabindex)) { header.setAttribute(tabindex, 0); } header.addEventListener(click, () > this.toggle(acc, container)); header.addEventListener(keydown, (e) > { if (e.key Enter || e.key ) { e.preventDefault(); this.toggle(acc, container); } }); }); // Open first accordion by default const firstAcc $(.acc, container); if (firstAcc && !firstAcc.classList.contains(open)) { this.open(firstAcc); } }); } toggle(accordion, container) { const isOpen accordion.classList.contains(open); if (isOpen) { this.close(accordion); } else { // Close other accordions in the same container $$(.acc.open, container).forEach(openAcc > { if (openAcc ! accordion) { this.close(openAcc); } }); this.open(accordion); } } open(accordion) { const body $(.acc__body, accordion); const header $(.acc__head, accordion); if (!body) return; accordion.classList.add(open); header?.setAttribute(aria-expanded, true); body.style.maxHeight body.scrollHeight + px; } close(accordion) { const body $(.acc__body, accordion); const header $(.acc__head, accordion); if (!body) return; accordion.classList.remove(open); header?.setAttribute(aria-expanded, false); body.style.maxHeight null; } } // Scroll reveal animation class ScrollReveal { constructor() { this.observer null; this.init(); } init() { if (!window.IntersectionObserver) return; this.observer new IntersectionObserver((entries) > { entries.forEach(entry > { if (entry.isIntersecting) { entry.target.classList.add(visible); this.observer.unobserve(entry.target); } }); }, { threshold: 0.15, rootMargin: 0px 0px -50px 0px }); $$(.reveal).forEach(el > { this.observer.observe(el); }); } } // Phone input mask class PhoneMask { constructor() { this.init(); } init() { $$(inputtypetel).forEach(input > { input.addEventListener(input, () > this.maskPhone(input)); input.addEventListener(keydown, (e) > this.handleKeydown(e)); }); } maskPhone(input) { let value input.value.replace(/\D/g, ); // Handle Russian numbers if (value.startsWith(8)) { value 7 + value.slice(1); } else if (!value.startsWith(7)) { value 7 + value; } // Limit length value value.slice(0, 11); // Format if (value.length > 1) { value value.replace(/(\d{1})(\d{0,3})(\d{0,3})(\d{0,2})(\d{0,2})/, (match, p1, p2, p3, p4, p5) > { let result `+${p1}`; if (p2) result + ` (${p2}`; if (p3) result + `) ${p3}`; if (p4) result + `-${p4}`; if (p5) result + `-${p5}`; return result; }); } input.value value; } handleKeydown(e) { // Allow: backspace, delete, tab, escape, enter if (46, 8, 9, 27, 13.indexOf(e.keyCode) ! -1 || // Allow: Ctrl+A, Ctrl+C, Ctrl+V, Ctrl+X (e.keyCode 65 && e.ctrlKey true) || (e.keyCode 67 && e.ctrlKey true) || (e.keyCode 86 && e.ctrlKey true) || (e.keyCode 88 && e.ctrlKey true)) { return; } // Ensure that it is a number and stop the keypress if ((e.shiftKey || (e.keyCode 48 || e.keyCode > 57)) && (e.keyCode 96 || e.keyCode > 105)) { e.preventDefault(); } } } // Form handling class FormHandler { constructor() { this.init(); } init() { // Contact form const contactForm $(#contactForm); if (contactForm) { contactForm.addEventListener(submit, (e) > this.handleSubmit(e, contactForm)); } // Callback form const callbackForm $(#form-callback); if (callbackForm) { callbackForm.addEventListener(submit, (e) > this.handleSubmit(e, callbackForm)); } // Calculate form const calculateForm $(#form-calculate); if (calculateForm) { calculateForm.addEventListener(submit, (e) > this.handleSubmit(e, calculateForm)); } // Order form const orderForm $(#form-order); if (orderForm) { orderForm.addEventListener(submit, (e) > this.handleSubmit(e, orderForm)); } } async handleSubmit(e, form) { e.preventDefault(); if (!form.checkValidity()) { this.showValidationErrors(form); return; } const submitBtn $(buttontypesubmit, form); const originalText submitBtn.textContent; try { // Show loading state submitBtn.textContent Отправка...; submitBtn.disabled true; // Simulate API call await this.submitForm(form); // Success this.showSuccess(); form.reset(); this.closeModal(); } catch (error) { this.showError(Произошла ошибка при отправке. Попробуйте еще раз.); } finally { // Restore button submitBtn.textContent originalText; submitBtn.disabled false; } } async submitForm(form) { // Simulate network delay await new Promise(resolve > setTimeout(resolve, 1200)); // Here you would normally send data to your server const formData new FormData(form); const data Object.fromEntries(formData.entries()); console.log(Form data:, data); // Simulate success return { success: true }; } showValidationErrors(form) { const firstInvalidField $(.input:invalid, .textarea:invalid, .select:invalid, form); if (firstInvalidField) { firstInvalidField.focus(); } alert(Пожалуйста, проверьте корректность заполнения полей и согласие на обработку персональных данных.); } showSuccess() { alert(Спасибо! Ваша заявка отправлена. Мы свяжемся с вами в ближайшее время.); } showError(message) { alert(message); } closeModal() { if (window.modalSystemInstance) { window.modalSystemInstance.closeModal(); } } } // Modal system class ModalSystem { constructor() { this.activeModal null; window.modalSystemInstance this; // Global reference for easy access this.init(); } init() { // Open modal buttons $$(data-modal).forEach(btn > { btn.addEventListener(click, () > { const modalId btn.getAttribute(data-modal); this.openModal(modalId); }); }); // Close modal buttons and overlay clicks document.addEventListener(click, (e) > { if (e.target.hasAttribute(data-close) && e.target.getAttribute(data-close) modal) { this.closeModal(); } if (e.target.classList.contains(modal__overlay)) { this.closeModal(); } }); // Keyboard handling document.addEventListener(keydown, (e) > { if (e.key Escape && this.activeModal) { this.closeModal(); } }); } openModal(modalId) { const modal $(`#${modalId}`); if (!modal) return; // Close any open modal first this.closeModal(); // Open new modal modal.classList.add(open); modal.setAttribute(aria-hidden, false); document.body.style.overflow hidden; this.activeModal modal; // Focus first focusable element const firstFocusable $(input, textarea, select, button, modal); if (firstFocusable) { setTimeout(() > firstFocusable.focus(), 100); } } closeModal() { if (!this.activeModal) return; this.activeModal.classList.remove(open); this.activeModal.setAttribute(aria-hidden, true); document.body.style.overflow ; this.activeModal null; } } // Reviews scroller class ReviewsScroller { constructor() { this.track $(#reviewsTrack); this.prevBtn $(#revPrev); this.nextBtn $(#revNext); this.scrollAmount 320; this.init(); } init() { if (!this.track) return; this.prevBtn?.addEventListener(click, () > this.scroll(-1)); this.nextBtn?.addEventListener(click, () > this.scroll(1)); // Update button states this.track.addEventListener(scroll, () > this.updateButtons()); this.updateButtons(); // Touch/swipe support let startX 0; let scrollLeft 0; let isDragging false; this.track.addEventListener(touchstart, (e) > { startX e.touches0.pageX - this.track.offsetLeft; scrollLeft this.track.scrollLeft; isDragging true; }, { passive: true }); this.track.addEventListener(touchmove, (e) > { if (!isDragging) return; e.preventDefault(); const x e.touches0.pageX - this.track.offsetLeft; const walk (x - startX) * 2; this.track.scrollLeft scrollLeft - walk; }); this.track.addEventListener(touchend, () > { isDragging false; }, { passive: true }); // Mouse drag support for desktop if (window.matchMedia((hover: hover)).matches) { this.track.addEventListener(mousedown, (e) > { startX e.pageX - this.track.offsetLeft; scrollLeft this.track.scrollLeft; isDragging true; this.track.style.cursor grabbing; e.preventDefault(); }); document.addEventListener(mousemove, (e) > { if (!isDragging) return; e.preventDefault(); const x e.pageX - this.track.offsetLeft; const walk (x - startX) * 2; this.track.scrollLeft scrollLeft - walk; }); document.addEventListener(mouseup, () > { isDragging false; if (this.track) { this.track.style.cursor grab; } }); } } scroll(direction) { this.track.scrollBy({ left: direction * this.scrollAmount, behavior: smooth }); } updateButtons() { if (!this.prevBtn || !this.nextBtn) return; const isAtStart this.track.scrollLeft 0; const isAtEnd this.track.scrollLeft > this.track.scrollWidth - this.track.clientWidth - 1; this.prevBtn.disabled isAtStart; this.nextBtn.disabled isAtEnd; } } // Lightbox for project images class Lightbox { constructor() { this.modal $(#modal-lightbox); this.img $(#lightbox-img); this.title $(#lightbox-title); this.desc $(#lightbox-desc); this.loading $(#lightbox-loading); this.error $(#lightbox-error); this.modalSystem null; this.init(); } init() { if (!this.modal) return; $$(.projectdata-src).forEach(project > { project.addEventListener(click, () > this.open(project)); project.addEventListener(keydown, (e) > { if (e.key Enter || e.key ) { e.preventDefault(); this.open(project); } }); }); } setModalSystem(modalSystem) { this.modalSystem modalSystem; } open(project) { const src project.getAttribute(data-src); const title project.getAttribute(data-title); const desc project.getAttribute(data-desc); if (!src || !this.img) return; // Reset states this.hideError(); this.hideLoading(); this.img.style.display none; // Set content if (this.title) { this.title.textContent title || ; } if (this.desc) { this.desc.textContent desc || ; } // Show loading this.showLoading(); // Load image const tempImg new Image(); tempImg.onload () > { // Image loaded successfully this.img.src src; this.img.alt title || ; this.img.style.display block; this.hideLoading(); }; tempImg.onerror () > { // Image failed to load this.hideLoading(); this.showError(); }; // Start loading tempImg.src src; // Open modal using ModalSystem if (this.modalSystem) { this.modalSystem.openModal(modal-lightbox); } else if (window.modalSystemInstance) { window.modalSystemInstance.openModal(modal-lightbox); } } showLoading() { if (this.loading) { this.loading.classList.add(show); } } hideLoading() { if (this.loading) { this.loading.classList.remove(show); } } showError() { if (this.error) { this.error.classList.add(show); } } hideError() { if (this.error) { this.error.classList.remove(show); } } } // Header scroll effect class HeaderScroll { constructor() { this.header $(.header); this.lastScrollY window.scrollY; this.init(); } init() { if (!this.header) return; window.addEventListener(scroll, () > { const currentScrollY window.scrollY; if (currentScrollY > 100) { this.header.style.background linear-gradient(180deg, rgba(255,255,255,0.12), rgba(255,255,255,0.08)); this.header.style.borderBottom 1px solid rgba(255,255,255,0.3); } else { this.header.style.background linear-gradient(180deg, rgba(255,255,255,0.06), rgba(255,255,255,0.02)); this.header.style.borderBottom 1px solid rgba(255,255,255,0.2); } this.lastScrollY currentScrollY; }); } } // Performance monitor class PerformanceMonitor { constructor() { this.init(); } init() { // Report performance metrics if (window.performance && window.performance.navigation) { window.addEventListener(load, () > { setTimeout(() > { const perfData performance.getEntriesByType(navigation)0; console.log(Page load time:, Math.round(perfData.loadEventEnd - perfData.loadEventStart)); }, 0); }); } // Check for memory leaks in development if (process?.env?.NODE_ENV development) { setInterval(() > { if (window.performance?.memory) { console.log(Memory usage:, { used: Math.round(window.performance.memory.usedJSHeapSize / 1048576), total: Math.round(window.performance.memory.totalJSHeapSize / 1048576), limit: Math.round(window.performance.memory.jsHeapSizeLimit / 1048576) }); } }, 30000); } } } // Function for scrolling to sections function scrollToSection(sectionId) { const target document.getElementById(sectionId); if (!target) return; const header document.querySelector(.header); const headerHeight header ? header.offsetHeight : 70; const targetPosition target.getBoundingClientRect().top + window.pageYOffset - headerHeight; // Close mobile menu if open if (window.mobileNavInstance) { window.mobileNavInstance.close(); } window.scrollTo({ top: targetPosition, behavior: smooth }); } // Initialize everything when DOM is ready document.addEventListener(DOMContentLoaded, () > { // Check for reduced motion preference const prefersReducedMotion window.matchMedia((prefers-reduced-motion: reduce)).matches; if (prefersReducedMotion) { document.documentElement.style.setProperty(--animation-duration, 0.01ms); } // Initialize all components window.mobileNavInstance new MobileNav(); new SmoothScroll(); new Carousel(#carousel); new Accordion(.services-acc, .accordion); new ScrollReveal(); new PhoneMask(); new FormHandler(); // Create ModalSystem first const modalSystem new ModalSystem(); new ReviewsScroller(); // Create Lightbox and connect it to ModalSystem const lightbox new Lightbox(); lightbox.setModalSystem(modalSystem); new HeaderScroll(); new PerformanceMonitor(); // Add loaded class to body document.body.classList.add(loaded); }); // Service Worker registration (optional) if (serviceWorker in navigator) { window.addEventListener(load, () > { navigator.serviceWorker.register(/sw.js) .then(registration > { console.log(SW registered: , registration); }) .catch(registrationError > { console.log(SW registration failed: , registrationError); }); }); } /script> script typeapplication/ld+json> { @context: https://schema.org, @type: LocalBusiness, name: СтройЭлектроМонтаж-ДВ, description: Профессиональные электромонтажные работы под ключ в Хабаровске и ДФО, url: https://sem-dv.ru, telephone: +7-914-200-60-68, email: sem-dv@inbox.ru, address: { @type: PostalAddress, addressLocality: Хабаровск, addressRegion: Хабаровский край, addressCountry: RU }, geo: { @type: GeoCoordinates, latitude: 48.4827, longitude: 135.0839 }, openingHours: Mo-Su 00:00-23:59, priceRange: $$, serviceArea: { @type: GeoCircle, geoMidpoint: { @type: GeoCoordinates, latitude: 48.4827, longitude: 135.0839 }, geoRadius: 1000000 }, areaServed: Дальневосточный федеральный округ } /script>/body>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]