{"id":41131,"date":"2026-06-02T08:45:55","date_gmt":"2026-06-02T05:45:55","guid":{"rendered":"https:\/\/specservis.com.ua\/projects\/"},"modified":"2026-07-16T10:52:13","modified_gmt":"2026-07-16T07:52:13","slug":"projects","status":"publish","type":"page","link":"https:\/\/specservis.com.ua\/en\/projects\/","title":{"rendered":"Projects"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"41131\" class=\"elementor elementor-41131 elementor-41056\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-76d7584 e-con-full e-flex e-con e-parent\" data-id=\"76d7584\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-cc537eb elementor-widget__width-inherit elementor-widget elementor-widget-html\" data-id=\"cc537eb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<meta charset=\"UTF-8\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link rel=\"stylesheet\" href=\"https:\/\/fonts.googleapis.com\/css2?family=Montserrat:wght@400;500;600;700&display=swap\">\n\n<style>\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   \u0421\u041f\u0415\u0426\u0421\u0415\u0420\u0412\u0406\u0421 \u2014 \u041a\u0415\u0419\u0421\u0418 \/ \u041f\u0420\u041e\u0404\u041a\u0422\u0418\n   Brand: #29264B #252A83 #D02832 #468DCB #333681\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n#ssCases *{box-sizing:border-box;margin:0;padding:0}\n#ssCases{font-family:'Montserrat',sans-serif;color:#29264B;--primary:#29264B;--accent:#252A83;--red:#D02832;--blue:#468DCB;--blue2:#333681}\n#ssCases *{font-family:'Montserrat',sans-serif}\n\n\/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n   1. HERO \u2014 fullscreen video gallery\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n#ssCases .hero{position:relative;height:100vh;min-height:600px;overflow:hidden;background:#000}\n#ssCases .hero-slide{position:absolute;inset:0;opacity:0;transition:opacity 1s ease;pointer-events:none}\n#ssCases .hero-slide.active{opacity:1;pointer-events:auto}\n#ssCases .hero-slide iframe,#ssCases .hero-slide video{position:absolute;top:50%;left:50%;width:100vw;height:56.25vw;min-height:100vh;min-width:177.78vh;transform:translate(-50%,-50%);border:none;pointer-events:none}\n#ssCases .hero-slide .hero-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}\n#ssCases .hero-overlay{position:absolute;inset:0;background:linear-gradient(90deg,rgba(41,38,75,.85) 0%,rgba(41,38,75,.4) 40%,rgba(41,38,75,.2) 70%,rgba(41,38,75,.6) 100%);z-index:2}\n#ssCases .hero-grain{position:absolute;inset:0;z-index:3;opacity:.04;pointer-events:none;background-image:url(\"data:image\/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http:\/\/www.w3.org\/2000\/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4'\/%3E%3C\/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'\/%3E%3C\/svg%3E\")}\n\n#ssCases .hero-content{position:absolute;inset:0;z-index:5;display:flex;flex-direction:column;justify-content:center;padding:0 6vw;pointer-events:none}\n#ssCases .hero-eyebrow{display:inline-flex;align-items:center;gap:10px;color:var(--blue);font-size:13px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;margin-bottom:20px;opacity:0;animation:heroUp .8s .2s forwards}\n#ssCases .hero-eyebrow::before{content:'';width:40px;height:2px;background:var(--red)}\n#ssCases .hero-title{font-size:50px;font-weight:700;color:#fff;line-height:1.05;letter-spacing:-.02em;max-width:14ch;margin-bottom:24px;text-shadow:0 4px 40px rgba(0,0,0,.4);opacity:0;animation:heroUp .8s .35s forwards}\n#ssCases .hero-sub{font-size:clamp(15px,1.6vw,19px);font-weight:500;color:rgba(255,255,255,.85);max-width:48ch;line-height:1.6;margin-bottom:40px;opacity:0;animation:heroUp .8s .5s forwards}\n#ssCases .hero-cta{display:inline-flex;align-items:center;gap:12px;background:var(--red);color:#fff;font-size:15px;font-weight:700;padding:18px 34px;border:none;border-radius:999px;cursor:pointer;pointer-events:auto;width:fit-content;transition:transform .25s,box-shadow .25s,background .25s;opacity:0;animation:heroUp .8s .65s forwards;text-decoration:none}\n#ssCases .hero-cta:hover{transform:translateY(-3px);box-shadow:0 16px 40px rgba(208,40,50,.4);background:#b8222b}\n#ssCases .hero-cta svg{width:20px;height:20px;animation:bobV 1.6s ease-in-out infinite}\n@keyframes heroUp{from{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}\n@keyframes bobV{0%,100%{transform:translateY(0)}50%{transform:translateY(4px)}}\n\n\/* hero side info \u2014 current case name *\/\n#ssCases .hero-counter{position:absolute;right:6vw;bottom:120px;z-index:6;text-align:right;pointer-events:none}\n#ssCases .hero-counter .cur{font-size:64px;font-weight:700;color:#fff;line-height:1;text-shadow:0 4px 30px rgba(0,0,0,.5)}\n#ssCases .hero-counter .tot{font-size:20px;font-weight:500;color:rgba(255,255,255,.5)}\n\n\/* hero nav arrows *\/\n#ssCases .hero-nav{position:absolute;z-index:7;bottom:48px;left:6vw;display:flex;gap:12px}\n#ssCases .hero-arrow{width:56px;height:56px;border-radius:50%;border:1.5px solid rgba(255,255,255,.4);background:rgba(255,255,255,.08);backdrop-filter:blur(8px);color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .25s}\n#ssCases .hero-arrow:hover{background:#fff;color:var(--accent);border-color:#fff}\n#ssCases .hero-arrow svg{width:22px;height:22px}\n\n\/* hero progress dots *\/\n#ssCases .hero-dots{position:absolute;z-index:7;bottom:64px;right:6vw;display:flex;flex-direction:column;gap:10px}\n#ssCases .hero-dot{width:3px;height:32px;border-radius:2px;background:rgba(255,255,255,.25);cursor:pointer;transition:background .3s}\n#ssCases .hero-dot.active{background:var(--red)}\n\n\/* scroll hint *\/\n#ssCases .scroll-hint{position:absolute;bottom:28px;left:50%;transform:translateX(-50%);z-index:7;color:rgba(255,255,255,.6);font-size:11px;letter-spacing:.2em;text-transform:uppercase;display:flex;flex-direction:column;align-items:center;gap:8px;pointer-events:none}\n#ssCases .scroll-hint .line{width:1px;height:40px;background:linear-gradient(rgba(255,255,255,.6),transparent);animation:scrollLine 2s ease-in-out infinite}\n@keyframes scrollLine{0%{transform:scaleY(0);transform-origin:top}50%{transform:scaleY(1);transform-origin:top}51%{transform:scaleY(1);transform-origin:bottom}100%{transform:scaleY(0);transform-origin:bottom}}\n\n\/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n   2. CASES GRID \u2014 fullbleed 3-col, 3:4\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n#ssCases .grid-intro{text-align:center;padding:80px 24px 56px;background:#fff}\n#ssCases .grid-intro .eyebrow{color:var(--red);font-size:13px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;margin-bottom:14px}\n#ssCases .grid-intro h2{font-size:50px;font-weight:700;color:var(--primary);line-height:1.1;letter-spacing:-.01em}\n#ssCases .grid-intro p{font-size:16px;color:#6b6b8d;max-width:560px;margin:16px auto 0;line-height:1.6}\n\n#ssCases .cases-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}\n#ssCases .case-card{position:relative;aspect-ratio:3\/4;overflow:hidden;cursor:pointer;background:#252A83}\n#ssCases .case-card-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .9s cubic-bezier(.22,1,.36,1);filter:saturate(.9)}\n#ssCases .case-card:hover .case-card-bg{transform:scale(1.08)}\n#ssCases .case-card-shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(41,38,75,.1) 0%,rgba(41,38,75,.35) 50%,rgba(41,38,75,.92) 100%);transition:background .4s;z-index:1}\n#ssCases .case-card:hover .case-card-shade{background:linear-gradient(180deg,rgba(37,42,131,.3) 0%,rgba(37,42,131,.5) 50%,rgba(41,38,75,.95) 100%)}\n#ssCases .case-card-num{position:absolute;top:28px;left:28px;z-index:3;font-size:14px;font-weight:700;color:rgba(255,255,255,.65);letter-spacing:.1em}\n#ssCases .case-card-content{position:absolute;left:0;right:0;bottom:0;z-index:3;padding:36px 32px;transform:translateY(0);transition:transform .4s cubic-bezier(.22,1,.36,1)}\n#ssCases .case-card:hover .case-card-content{transform:translateY(-8px)}\n#ssCases .case-card-tag{display:inline-block;font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--blue);margin-bottom:12px;padding:4px 12px;border-radius:20px;background:rgba(70,141,203,.15);backdrop-filter:blur(4px)}\n#ssCases .case-card-title{font-size:clamp(24px,2.4vw,34px);font-weight:700;color:#fff;line-height:1.05;letter-spacing:-.01em;margin-bottom:10px}\n#ssCases .case-card-sub{font-size:14px;font-weight:500;color:rgba(255,255,255,.75);line-height:1.5;max-width:90%;opacity:0;max-height:0;overflow:hidden;transition:opacity .4s,max-height .4s}\n#ssCases .case-card:hover .case-card-sub{opacity:1;max-height:100px}\n#ssCases .case-card-arrow{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) scale(.4);z-index:3;width:88px;height:88px;border-radius:50%;background:var(--red);display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .4s,transform .5s cubic-bezier(.34,1.56,.64,1)}\n#ssCases .case-card:hover .case-card-arrow{opacity:1;transform:translate(-50%,-50%) scale(1)}\n#ssCases .case-card-arrow svg{width:34px;height:34px;stroke:#fff}\n\n\/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n   3. CASE DETAIL \u2014 fullscreen overlay\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n#ssCases .detail{position:fixed;inset:0;z-index:100000;background:#fff;overflow-y:auto;overflow-x:hidden;opacity:0;visibility:hidden;transform:scale(1.04);transition:opacity .5s ease,transform .5s ease,visibility .5s}\n#ssCases .detail.open{opacity:1;visibility:visible;transform:scale(1)}\n\n#ssCases .detail-close{position:fixed;top:24px;right:24px;z-index:100002;width:56px;height:56px;border-radius:50%;background:rgba(255,255,255,.95);backdrop-filter:blur(12px);border:1px solid rgba(232,232,239,.6);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .25s;box-shadow:0 8px 32px rgba(0,0,0,.18)}\n#ssCases .detail-close:hover{background:var(--red);border-color:var(--red);transform:rotate(90deg)}\n#ssCases .detail-close:hover svg{stroke:#fff}\n#ssCases .detail-close svg{width:22px;height:22px;stroke:var(--primary);transition:stroke .25s}\n\n\/* detail hero *\/\n#ssCases .d-hero{position:relative;min-height:75vh;display:flex;align-items:flex-end;overflow:hidden;background:#252A83}\n#ssCases .d-hero-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.55}\n#ssCases .d-hero-shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(41,38,75,.3),rgba(41,38,75,.85));z-index:1}\n#ssCases .d-hero-inner{position:relative;z-index:2;padding:0 6vw 64px;max-width:1100px;width:100%;margin:0 auto}\n#ssCases .d-hero-tag{display:inline-flex;align-items:center;gap:10px;color:var(--blue);font-size:13px;font-weight:700;letter-spacing:.15em;text-transform:uppercase;margin-bottom:20px}\n#ssCases .d-hero-tag::before{content:'';width:32px;height:2px;background:var(--red)}\n#ssCases .d-hero-title{font-size:50px;font-weight:700;color:#fff;line-height:1.04;letter-spacing:-.02em;margin-bottom:20px;max-width:18ch}\n#ssCases .d-hero-meta{display:flex;flex-wrap:wrap;gap:32px;margin-top:28px}\n#ssCases .d-hero-meta-item .l{font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:rgba(255,255,255,.5);margin-bottom:4px}\n#ssCases .d-hero-meta-item .v{font-size:15px;font-weight:700;color:#fff}\n\n\/* sticky scroll layout: text left, video right *\/\n#ssCases .d-scroll{position:relative;max-width:1280px;margin:0 auto;padding:0 6vw;display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:start}\n#ssCases .d-scroll-left{padding:80px 0}\n#ssCases .d-scroll-right{position:sticky;top:0;height:100vh;display:flex;align-items:center}\n#ssCases .d-video-wrap{width:100%;aspect-ratio:9\/16;max-height:82vh;background:#000;overflow:hidden;border-radius:4px;box-shadow:0 30px 80px rgba(41,38,75,.25);position:relative}\n#ssCases .d-video-wrap iframe,#ssCases .d-video-wrap video,#ssCases .d-video-wrap img{position:absolute;inset:0;width:100%;height:100%;border:none;object-fit:cover}\n\n\/* content blocks inside left column *\/\n#ssCases .d-block{margin-bottom:64px}\n#ssCases .d-block:last-child{margin-bottom:0}\n#ssCases .d-block-label{display:inline-block;font-size:12px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--red);margin-bottom:16px}\n#ssCases .d-block h3{font-size:50px;font-weight:700;color:var(--primary);line-height:1.1;letter-spacing:-.01em;margin-bottom:18px}\n#ssCases .d-block p{font-size:15px;line-height:1.8;color:#4a4a6a;margin-bottom:14px}\n#ssCases .d-block p strong{color:var(--primary);font-weight:700}\n\n\/* stats row *\/\n#ssCases .d-stats{display:grid;grid-template-columns:1fr 1fr;gap:2px;background:#e8e8ef;margin:8px 0}\n#ssCases .d-stat{background:var(--accent);padding:28px 24px;color:#fff}\n#ssCases .d-stat:nth-child(4n+2),#ssCases .d-stat:nth-child(4n+3){background:#fff;color:var(--primary)}\n#ssCases .d-stat .n{font-size:40px;font-weight:700;line-height:1;letter-spacing:-.02em}\n#ssCases .d-stat .l{font-size:12px;font-weight:600;letter-spacing:.03em;margin-top:8px;opacity:.8;line-height:1.4}\n\n\/* bullet list *\/\n#ssCases .d-list{list-style:none;margin-top:8px}\n#ssCases .d-list li{position:relative;padding-left:30px;font-size:15px;line-height:1.7;color:#4a4a6a;margin-bottom:14px}\n#ssCases .d-list li::before{content:'';position:absolute;left:0;top:9px;width:14px;height:14px;border:3px solid var(--red);border-radius:50%}\n\n\/* gallery dots (mobile) *\/\n#ssCases .d-gallery-dots{display:none;justify-content:center;gap:8px;margin-top:16px}\n#ssCases .d-gallery-dots span{width:8px;height:8px;border-radius:50%;background:rgba(37,42,131,.2);cursor:pointer;transition:background .25s,width .25s}\n#ssCases .d-gallery-dots span.active{background:#252A83;width:24px;border-radius:4px}\n\n\/* gallery *\/\n#ssCases .d-gallery{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-top:8px}\n#ssCases .d-gallery img{width:100%;aspect-ratio:4\/3;object-fit:cover;cursor:pointer;transition:transform .4s;background:#e8e8ef}\n#ssCases .d-gallery img:hover{transform:scale(.98)}\n#ssCases .d-gallery .wide{grid-column:1\/-1;aspect-ratio:16\/9}\n\n\/* drawings header \u2014 center *\/\n#ssCases .d-drawings-inner .d-block-label{display:block;text-align:center}\n#ssCases .d-drawings h3{text-align:center}\n#ssCases .d-gallery img{width:100%;aspect-ratio:4\/3;object-fit:cover;cursor:pointer;transition:transform .4s;background:#e8e8ef}\n#ssCases .d-gallery img:hover{transform:scale(.98)}\n#ssCases .d-gallery .wide{grid-column:1\/-1;aspect-ratio:16\/9}\n\n\/* drawings \u2014 dark bg *\/\n#ssCases .d-drawings{background:var(--accent);margin:0 -4vw;padding:72px 4vw}\n#ssCases .d-drawings-inner{max-width:1280px;margin:0 auto}\n#ssCases .d-drawings .d-block-label{color:var(--blue)}\n#ssCases .d-drawings h3{color:#fff}\n#ssCases .d-draw-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin-top:24px}\n#ssCases .d-draw{background:#fff;border-radius:4px;overflow:hidden}\n#ssCases .d-draw img{width:100%;aspect-ratio:4\/3;object-fit:cover;display:block}\n#ssCases .d-draw .cap{padding:14px 18px;font-size:13px;font-weight:600;color:var(--primary)}\n\n\/* quote *\/\n#ssCases .d-quote{margin:0 -4vw;padding:80px 6vw;background:var(--accent);color:#fff;text-align:center}\n#ssCases .d-quote blockquote{font-size:50px;font-weight:700;line-height:1.25;max-width:900px;margin:0 auto;letter-spacing:-.01em;background:transparent!important;border:none!important;padding:0!important;color:#fff}\n#ssCases .d-quote .src{margin-top:24px;font-size:14px;font-weight:500;color:rgba(255,255,255,.6)}\n\n\/* detail CONTACTS \u2014 \u0437\u0430\u043c\u0456\u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0438 *\/\n#ssCases .d-contacts{padding:80px 6vw;background:#fff;text-align:center}\n#ssCases .d-contacts h3{font-size:50px;font-weight:700;color:var(--primary);margin-bottom:48px;line-height:1.1}\n#ssCases .d-contacts h3 em{font-style:normal;color:var(--accent)}\n#ssCases .d-contacts-grid{display:flex;flex-wrap:wrap;justify-content:center;gap:20px;max-width:780px;margin:0 auto}\n#ssCases .d-contact{flex:0 1 380px;max-width:420px;display:flex;align-items:center;gap:18px;padding:24px 28px;border:1.5px solid #e8e8ef;border-radius:999px;text-decoration:none;color:inherit;transition:all .25s;background:#fff}\n#ssCases .d-contact:hover{border-color:var(--accent);transform:translateY(-2px);box-shadow:0 12px 32px rgba(37,42,131,.12)}\n#ssCases .d-contact-icon{width:48px;height:48px;border-radius:50%;background:rgba(37,42,131,.08);display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:background .25s}\n#ssCases .d-contact:hover .d-contact-icon{background:var(--accent)}\n#ssCases .d-contact-icon svg{width:22px;height:22px;stroke:var(--accent);transition:stroke .25s}\n#ssCases .d-contact:hover .d-contact-icon svg{stroke:#fff}\n#ssCases .d-contact-text{text-align:left;flex:1;min-width:0}\n#ssCases .d-contact-label{font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:#6b6b8d;margin-bottom:2px}\n#ssCases .d-contact-value{font-size:17px;font-weight:700;color:var(--primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n\n\/* RELATED cases \u2014 \u0456\u043d\u0448\u0456 \u043a\u0435\u0439\u0441\u0438 \u043f\u0456\u0434 \u043f\u043e\u0442\u043e\u0447\u043d\u0438\u043c *\/\n#ssCases .d-related{padding:80px 6vw 100px;background:#f8f8fb}\n#ssCases .d-related-head{max-width:1280px;margin:0 auto 40px;text-align:center}\n#ssCases .d-related-label{display:inline-block;font-size:12px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--red);margin-bottom:14px}\n#ssCases .d-related h3{font-size:50px;font-weight:700;color:var(--primary);line-height:1.1}\n#ssCases .d-related-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:0;max-width:1280px;margin:0 auto;border-radius:24px;overflow:hidden}\n#ssCases .d-related-card{position:relative;aspect-ratio:3\/4;overflow:hidden;cursor:pointer;background:#252A83}\n#ssCases .d-related-card img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .8s cubic-bezier(.22,1,.36,1)}\n#ssCases .d-related-card:hover img{transform:scale(1.08)}\n#ssCases .d-related-card-shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(41,38,75,.1) 0%,rgba(41,38,75,.4) 50%,rgba(41,38,75,.92) 100%);z-index:1}\n#ssCases .d-related-card-content{position:absolute;left:0;right:0;bottom:0;z-index:2;padding:28px 26px}\n#ssCases .d-related-card-tag{display:inline-block;font-size:10px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--blue);margin-bottom:10px;padding:3px 10px;border-radius:20px;background:rgba(70,141,203,.15);backdrop-filter:blur(4px)}\n#ssCases .d-related-card-title{font-size:22px;font-weight:700;color:#fff;line-height:1.1;letter-spacing:-.01em}\n#ssCases .d-related-card-arrow{position:absolute;top:24px;right:24px;width:44px;height:44px;border-radius:50%;background:rgba(255,255,255,.15);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;z-index:2;transition:all .3s}\n#ssCases .d-related-card:hover .d-related-card-arrow{background:var(--red);transform:rotate(-45deg)}\n#ssCases .d-related-current{opacity:.75}\n#ssCases .d-related-current-badge{position:absolute;top:20px;left:20px;z-index:3;background:rgba(255,255,255,.2);backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.3);border-radius:999px;padding:5px 14px;font-size:11px;font-weight:700;color:#fff;letter-spacing:.08em;text-transform:uppercase}\n#ssCases .d-related-card-arrow svg{width:18px;height:18px;stroke:#fff}\n\n\/* \u043f\u043b\u0435\u0439\u0441\u0445\u043e\u043b\u0434\u0435\u0440 \u043a\u0430\u0440\u0442\u043a\u0430 \u043a\u043e\u043b\u0438 \u043d\u0435\u043c\u0430 related *\/\n#ssCases .d-related-placeholder{background:linear-gradient(135deg,#252A83 0%,#29264B 60%,#1c1a3a 100%);cursor:default;position:relative}\n#ssCases .d-related-placeholder::before{content:'';position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.04) 1px,transparent 1px);background-size:32px 32px;opacity:.5}\n#ssCases .d-related-placeholder .d-related-card-shade{background:linear-gradient(180deg,transparent 0%,transparent 60%,rgba(28,26,58,.4) 100%)}\n#ssCases .d-related-placeholder-inner{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:24px;z-index:2}\n#ssCases .d-related-placeholder-title{font-size:18px;font-weight:700;color:#fff;letter-spacing:.04em;margin-bottom:6px}\n#ssCases .d-related-placeholder-sub{font-size:12px;font-weight:500;color:rgba(255,255,255,.55);letter-spacing:.08em;text-transform:uppercase}\n\n\/* lightbox *\/\n#ssCases .lightbox{position:fixed;inset:0;z-index:100001;background:rgba(10,10,25,.95);display:none;align-items:center;justify-content:center;padding:32px;cursor:zoom-out}\n#ssCases .lightbox.open{display:flex}\n#ssCases .lightbox img{max-width:92vw;max-height:90vh;object-fit:contain}\n#ssCases .lightbox-close{position:absolute;top:24px;right:24px;width:48px;height:48px;border-radius:50%;background:rgba(255,255,255,.12);border:none;color:#fff;font-size:28px;cursor:pointer;display:flex;align-items:center;justify-content:center}\n\n\/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n   MOBILE\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n\/* \u2550\u2550\u2550 BLUEPRINT \u2014 \u043f\u0440\u043e\u0444\u0435\u0441\u0456\u0439\u043d\u0435 \u0456\u043d\u0436\u0435\u043d\u0435\u0440\u043d\u0435 \u043a\u0440\u0435\u0441\u043b\u0435\u043d\u043d\u044f (\u0431\u0456\u043b\u0438\u0439 \u043f\u0430\u043f\u0456\u0440) \u2550\u2550\u2550 *\/\n#ssCases .ss-anim{position:relative;height:640px;background:#fafbfd;overflow:hidden;display:flex;align-items:center;justify-content:center;font-family:'Montserrat',sans-serif}\n#ssCases .ss-anim::before{content:'';position:absolute;inset:0;background-image:linear-gradient(rgba(37,42,131,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(37,42,131,.04) 1px,transparent 1px);background-size:40px 40px;background-position:center center;pointer-events:none}\n#ssCases .ss-anim::after{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at center,transparent 40%,rgba(250,251,253,.7) 100%);pointer-events:none}\n\n#ssCases .ss-anim-frame{position:relative;width:92%;max-width:1100px;height:78%;border:1px solid rgba(37,42,131,.18);padding:0;z-index:2;background:transparent}\n#ssCases .ss-anim-frame::before,#ssCases .ss-anim-frame::after{content:'';position:absolute;background:transparent;pointer-events:none}\n#ssCases .ss-anim-frame::before{top:-6px;left:-6px;width:12px;height:12px;border-top:1.5px solid rgba(37,42,131,.5);border-left:1.5px solid rgba(37,42,131,.5)}\n#ssCases .ss-anim-frame::after{top:-6px;right:-6px;width:12px;height:12px;border-top:1.5px solid rgba(37,42,131,.5);border-right:1.5px solid rgba(37,42,131,.5)}\n#ssCases .ss-anim-frame-bl,#ssCases .ss-anim-frame-br{position:absolute;width:12px;height:12px}\n#ssCases .ss-anim-frame-bl{bottom:-6px;left:-6px;border-bottom:1.5px solid rgba(37,42,131,.5);border-left:1.5px solid rgba(37,42,131,.5)}\n#ssCases .ss-anim-frame-br{bottom:-6px;right:-6px;border-bottom:1.5px solid rgba(37,42,131,.5);border-right:1.5px solid rgba(37,42,131,.5)}\n\n#ssCases .ss-anim svg{width:100%;height:100%;display:block;overflow:visible}\n\n\/* \u2500\u2500 \u0417\u0410\u0426\u0418\u041a\u041b\u0415\u041d\u0410 \u0410\u041d\u0406\u041c\u0410\u0426\u0406\u042f \u043c\u0430\u043b\u044e\u0432\u0430\u043d\u043d\u044f \u2500\u2500 *\/\n@keyframes bpDraw{\n  0%      { stroke-dashoffset:2400; opacity:1 }\n  35%     { stroke-dashoffset:0;    opacity:1 }\n  85%     { stroke-dashoffset:0;    opacity:1 }\n  95%     { stroke-dashoffset:0;    opacity:0 }\n  100%    { stroke-dashoffset:2400; opacity:0 }\n}\n@keyframes bpFade{\n  0%, 22%  { opacity:0 }\n  32%, 85% { opacity:1 }\n  95%,100% { opacity:0 }\n}\n@keyframes bpFadeLate{\n  0%, 40%  { opacity:0 }\n  50%, 85% { opacity:1 }\n  95%,100% { opacity:0 }\n}\n\n#ssCases .bp-line{fill:none;stroke:#252A83;stroke-width:1.2;stroke-dasharray:2400;stroke-dashoffset:2400;animation:bpDraw 10s ease-in-out infinite}\n#ssCases .bp-line.thick{stroke-width:1.8;stroke:#29264B}\n#ssCases .bp-line.thin{stroke-width:.8;stroke:rgba(37,42,131,.7)}\n#ssCases .bp-line.dim{stroke-dasharray:4,4;stroke:rgba(37,42,131,.45);stroke-width:.8}\n#ssCases .bp-line.axis{stroke-dasharray:1,3;stroke:rgba(37,42,131,.35);stroke-width:.7}\n\n#ssCases .bp-tick{opacity:0;animation:bpFade 10s ease-in-out infinite}\n#ssCases .bp-text{font-family:'Courier New',monospace;font-size:10px;font-weight:700;fill:#252A83;letter-spacing:.06em;opacity:0;animation:bpFade 10s ease-in-out infinite}\n#ssCases .bp-text.big{font-size:14px;fill:#29264B;letter-spacing:.15em}\n#ssCases .bp-text.dim{fill:rgba(37,42,131,.7);font-weight:600}\n#ssCases .bp-text.delay-1{animation:bpFadeLate 10s ease-in-out infinite}\n#ssCases .bp-text.delay-2{animation:bpFadeLate 10s ease-in-out infinite;animation-delay:.2s}\n#ssCases .bp-text.delay-3{animation:bpFadeLate 10s ease-in-out infinite;animation-delay:.4s}\n\n#ssCases .bp-vertex{opacity:0;animation:bpFade 10s ease-in-out infinite}\n\n\/* \u0432\u0435\u0440\u0445\u043d\u0456\u0439 \u0440\u044f\u0434\u043e\u043a: \u043f\u0440\u043e\u0454\u043a\u0442 + \u0448\u0442\u0430\u043c\u043f *\/\n#ssCases .bp-header{position:absolute;top:-28px;left:0;right:0;display:flex;justify-content:space-between;align-items:center;font-family:'Courier New',monospace;font-size:10px;font-weight:700;color:rgba(37,42,131,.7);letter-spacing:.18em;text-transform:uppercase;padding:0 4px}\n#ssCases .bp-header span{display:flex;align-items:center;gap:8px}\n#ssCases .bp-header span::before{content:'';width:6px;height:6px;background:#252A83;display:inline-block}\n\n\/* \u043d\u0438\u0436\u043d\u0456\u0439 \u0448\u0442\u0430\u043c\u043f \u2014 \u043a\u0443\u0442\u043e\u0432\u0438\u0439 \u0431\u043b\u043e\u043a *\/\n#ssCases .bp-stamp{position:absolute;bottom:-1px;right:-1px;background:#fff;border:1px solid rgba(37,42,131,.5);padding:12px 18px;display:flex;flex-direction:column;gap:4px;font-family:'Courier New',monospace;color:#29264B;letter-spacing:.1em;text-transform:uppercase;font-size:9px;line-height:1.4;min-width:200px;opacity:0;animation:bpFadeLate 10s ease-in-out infinite;animation-delay:.6s;box-shadow:0 4px 16px rgba(37,42,131,.08)}\n#ssCases .bp-stamp-row{display:flex;justify-content:space-between;gap:16px}\n#ssCases .bp-stamp-row .k{color:rgba(37,42,131,.55);font-weight:500}\n#ssCases .bp-stamp-row .v{color:#29264B;font-weight:700}\n#ssCases .bp-stamp-title{font-size:11px;color:#29264B;font-weight:700;letter-spacing:.16em;border-bottom:1px solid rgba(37,42,131,.3);padding-bottom:6px;margin-bottom:4px}\n\n\/* \u0437\u043e\u0432\u043d\u0456\u0448\u043d\u0456\u0439 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a *\/\n#ssCases .bp-eyebrow{position:absolute;top:28px;left:0;right:0;text-align:center;font-family:'Courier New',monospace;font-size:11px;font-weight:700;letter-spacing:.4em;color:#D02832;text-transform:uppercase;z-index:3}\n#ssCases .bp-caption{position:absolute;bottom:32px;left:0;right:0;text-align:center;font-family:'Montserrat',sans-serif;font-size:14px;font-weight:600;letter-spacing:.12em;color:rgba(41,38,75,.85);text-transform:uppercase;z-index:3;padding:0 24px}\n\n@media(max-width:900px){\n  #ssCases .ss-anim{height:520px}\n  #ssCases .bp-stamp{min-width:160px;padding:10px 14px;font-size:8px}\n}\n@media(max-width:600px){\n  #ssCases .ss-anim{height:440px}\n  #ssCases .ss-anim-frame{width:88%;height:70%}\n  #ssCases .bp-eyebrow{top:18px;font-size:10px;letter-spacing:.3em}\n  #ssCases .bp-caption{bottom:18px;font-size:11px}\n  #ssCases .bp-stamp{display:none}\n  #ssCases .bp-header{top:-22px;font-size:8px}\n  #ssCases .bp-text{font-size:9px}\n  #ssCases .bp-text.big{font-size:11px}\n}\n\n\/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n@media(max-width:900px){\n  #ssCases .hero-title{font-size:42px}\n  #ssCases .grid-intro h2{font-size:40px}\n  #ssCases .d-hero-title{font-size:42px}\n  #ssCases .d-block h3{font-size:38px}\n  #ssCases .d-quote blockquote{font-size:34px}\n  #ssCases .d-contacts h3,#ssCases .d-related h3{font-size:38px}\n  #ssCases .cases-grid{grid-template-columns:1fr 1fr}\n  #ssCases .d-scroll{grid-template-columns:1fr;gap:0}\n  #ssCases .d-scroll-right{position:relative;height:auto;top:auto;padding:32px 0 0}\n  #ssCases .d-video-wrap{aspect-ratio:16\/9;max-height:none;border-radius:16px}\n  \/* on mobile the box is already 16:9 like the source video \u2014 undo the desktop overscale *\/\n  #ssCases .d-video-wrap .vid-embed-wrap iframe{width:100% !important;height:100% !important;left:50% !important;transform:translate(-50%,-50%) !important}\n  #ssCases .d-scroll-left{padding:32px 0 48px}\n  #ssCases .d-gallery{grid-template-columns:1fr}\n  \/* mobile gallery \u2192 horizontal swipe slider *\/\n  #ssCases [data-gallery-slider]{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:12px;-webkit-overflow-scrolling:touch;scrollbar-width:none;grid-template-columns:unset}\n  #ssCases [data-gallery-slider]::-webkit-scrollbar{display:none}\n  #ssCases [data-gallery-slider] img{flex:0 0 88%;scroll-snap-align:center;border-radius:12px;aspect-ratio:4\/3!important;width:88%!important;grid-column:unset!important}\n  #ssCases .d-gallery-dots{display:flex}\n  \/* drawings \u2014 \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0438\u0439 \u0441\u043b\u0430\u0439\u0434\u0435\u0440 *\/\n  #ssCases .d-draw-grid{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:16px;margin-top:24px;padding-bottom:8px;-webkit-overflow-scrolling:touch;scrollbar-width:none}\n  #ssCases .d-draw-grid::-webkit-scrollbar{display:none}\n  #ssCases .d-draw{flex:0 0 85%;scroll-snap-align:center;border-radius:16px}\n  #ssCases .d-draw img{aspect-ratio:4\/3}\n  #ssCases .d-draw-dots{display:flex;justify-content:center;gap:8px;margin-top:20px}\n  #ssCases .d-draw-dots span{width:8px;height:8px;border-radius:50%;background:rgba(255,255,255,.3);transition:background .25s,width .25s}\n  #ssCases .d-draw-dots span.active{background:#fff;width:24px;border-radius:4px}\n  \/* related \u2014 2 \u043a\u043e\u043b\u043e\u043d\u043a\u0438 *\/\n  #ssCases .d-related-grid{grid-template-columns:1fr 1fr;border-radius:16px}\n  \/* \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u0438 \u2014 \u0441\u0442\u0435\u043a *\/\n  #ssCases .d-contacts-grid{flex-direction:column;align-items:stretch;max-width:100%}\n  #ssCases .d-contact{max-width:100%;flex:none;width:100%}\n}\n@media(max-width:600px){\n  #ssCases .hero-title{font-size:34px}\n  #ssCases .grid-intro h2{font-size:32px}\n  #ssCases .d-hero-title{font-size:34px}\n  #ssCases .d-block h3{font-size:30px;margin-bottom:14px}\n  #ssCases .d-quote blockquote{font-size:26px}\n  #ssCases .d-contacts h3,#ssCases .d-related h3{font-size:30px}\n  \/* \u0437\u0431\u0456\u043b\u044c\u0448\u0443\u0454\u043c\u043e \u0447\u0438\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u0456\u0441\u0442\u044c \u0442\u0435\u043a\u0441\u0442\u0443 \u043d\u0430 \u043c\u043e\u0431\u0456\u043b\u0446\u0456 *\/\n  #ssCases .d-block p{font-size:16px;line-height:1.75}\n  #ssCases .d-list li{font-size:16px;line-height:1.7;padding-left:32px}\n  #ssCases .d-list li::before{top:8px;width:12px;height:12px;border-width:2.5px}\n  #ssCases .d-stat .n{font-size:34px}\n  #ssCases .d-stat .l{font-size:13px}\n  #ssCases .d-hero-meta-item .v{font-size:14px}\n  #ssCases .hero{height:100vh;min-height:520px}\n  #ssCases .hero-content{padding:0 24px;justify-content:flex-end;padding-bottom:160px}\n  #ssCases .hero-counter{display:none}\n  #ssCases .hero-nav{left:24px;bottom:90px}\n  #ssCases .hero-arrow{width:48px;height:48px}\n  #ssCases .hero-dots{right:24px;bottom:96px}\n  #ssCases .scroll-hint{display:none}\n  #ssCases .cases-grid{grid-template-columns:1fr}\n  #ssCases .case-card{aspect-ratio:4\/3}\n  \/* mobile: no hover, show sub always + arrow always *\/\n  #ssCases .case-card-sub{opacity:1;max-height:100px}\n  #ssCases .case-card-arrow{display:none}\n  #ssCases .case-card-content{transform:none}\n  #ssCases .grid-intro{padding:56px 20px 40px}\n  #ssCases .d-stats{grid-template-columns:1fr 1fr}\n  #ssCases .detail-close{top:14px;right:14px;width:48px;height:48px}\n  #ssCases .d-hero-meta{gap:20px}\n  \/* \u043f\u0440\u0438\u0431\u0438\u0440\u0430\u0454\u043c\u043e \u0432\u0456\u0434\u0441\u0442\u0443\u043f \u043c\u0456\u0436 \u0432\u0456\u0434\u0435\u043e-\u0431\u043b\u043e\u043a\u043e\u043c \u0456 \u0441\u0438\u043d\u0456\u043c \u0431\u043b\u043e\u043a\u043e\u043c \u043a\u0440\u0435\u0441\u043b\u0435\u043d\u044c *\/\n  #ssCases .d-scroll{padding:0 24px}\n  #ssCases .d-scroll-right{padding-top:0;padding-bottom:0}\n  #ssCases .d-scroll-left{padding-bottom:32px}\n  #ssCases .d-drawings,#ssCases .d-quote{margin:0 -24px}\n  #ssCases .d-drawings{padding:48px 24px;margin-top:32px}\n  #ssCases .d-drawings-inner{padding:0}\n  #ssCases .d-contacts{padding:48px 24px}\n  #ssCases .d-related{padding:56px 24px 80px}\n  #ssCases .d-related-grid{grid-template-columns:1fr;border-radius:20px}\n  #ssCases .d-related-card{aspect-ratio:4\/3}\n}\n<\/style>\n\n<div id=\"ssCases\">\n\n  <!-- \u2550\u2550\u2550 1. HERO VIDEO GALLERY \u2550\u2550\u2550 -->\n  <section class=\"hero\" id=\"ssHero\">\n    <div class=\"hero-slides\" id=\"ssHeroSlides\"><\/div>\n    <div class=\"hero-overlay\"><\/div>\n    <div class=\"hero-grain\"><\/div>\n\n    <div class=\"hero-content\">\n      <span class=\"hero-eyebrow\" id=\"heroEyebrow\">Our Projects<\/span>\n      <h1 class=\"hero-title\" id=\"heroTitle\"><\/h1>\n      <p class=\"hero-sub\" id=\"heroSub\"><\/p>\n      <a class=\"hero-cta\" id=\"heroCta\">\n        View Case Study\n        <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\"><path d=\"M12 5v14M19 12l-7 7-7-7\"\/><\/svg>\n      <\/a>\n    <\/div>\n\n    <div class=\"hero-counter\">\n      <span class=\"cur\" id=\"heroCur\">01<\/span><span class=\"tot\" id=\"heroTot\"><\/span>\n    <\/div>\n\n    <div class=\"hero-nav\">\n      <div class=\"hero-arrow\" onclick=\"ssHeroPrev()\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M19 12H5M12 19l-7-7 7-7\"\/><\/svg><\/div>\n      <div class=\"hero-arrow\" onclick=\"ssHeroNext()\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M5 12h14M12 5l7 7-7 7\"\/><\/svg><\/div>\n    <\/div>\n\n    <div class=\"hero-dots\" id=\"ssHeroDots\"><\/div>\n\n    <div class=\"scroll-hint\"><span class=\"line\"><\/span>Scroll<\/div>\n  <\/section>\n\n  <!-- \u2550\u2550\u2550 2. CASES GRID \u2550\u2550\u2550 -->\n  <section class=\"grid-intro\" id=\"cases\">\n    <div class=\"eyebrow\">Portfolio<\/div>\n    <h2>Case Studies We Are Proud Of<\/h2>\n    <p>Real facilities, real figures, real results. Every project is a story from damage to restoration.<\/p>\n  <\/section>\n  <div class=\"cases-grid\" id=\"ssGrid\"><\/div>\n\n  <!-- \u2550\u2550\u2550 BLUEPRINT \u2014 \u043f\u0440\u043e\u0444\u0435\u0441\u0456\u0439\u043d\u0435 \u0456\u043d\u0436\u0435\u043d\u0435\u0440\u043d\u0435 \u043a\u0440\u0435\u0441\u043b\u0435\u043d\u043d\u044f \u2550\u2550\u2550 -->\n  <section class=\"ss-anim\" id=\"ssAnim\">\n\n    <div class=\"bp-eyebrow\">\u2014 Engineering Precision \u2014<\/div>\n\n    <div class=\"ss-anim-frame\">\n      <div class=\"ss-anim-frame-bl\"><\/div>\n      <div class=\"ss-anim-frame-br\"><\/div>\n\n      <div class=\"bp-header\">\n        <span>ARCH\/2026 \u00b7 FACADE 1-3<\/span>\n        <span>SCALE 1:100<\/span>\n      <\/div>\n\n      <svg viewBox=\"0 0 1100 460\" preserveAspectRatio=\"xMidYMid meet\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n\n        <!-- \u2500\u2500 \u041e\u0421\u041d\u041e\u0412\u041d\u0406 \u041e\u0421\u0406 (\u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u0456 \u0448\u0442\u0440\u0438\u0445\u043e\u0432\u0430\u043d\u0456) \u2500\u2500 -->\n        <line class=\"bp-line axis\" x1=\"180\" y1=\"40\" x2=\"180\" y2=\"430\"\/>\n        <line class=\"bp-line axis\" x1=\"340\" y1=\"40\" x2=\"340\" y2=\"430\"\/>\n        <line class=\"bp-line axis\" x1=\"550\" y1=\"40\" x2=\"550\" y2=\"430\"\/>\n        <line class=\"bp-line axis\" x1=\"760\" y1=\"40\" x2=\"760\" y2=\"430\"\/>\n        <line class=\"bp-line axis\" x1=\"920\" y1=\"40\" x2=\"920\" y2=\"430\"\/>\n\n        <!-- \u043e\u0441\u0456 \u043f\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f (\u043a\u043e\u043b\u0430 \u0437 \u043b\u0456\u0442\u0435\u0440\u0430\u043c\u0438) -->\n        <g class=\"bp-vertex\">\n          <circle cx=\"180\" cy=\"30\" r=\"9\" fill=\"none\" stroke=\"#252A83\" stroke-width=\"1\"\/>\n          <text x=\"180\" y=\"33\" text-anchor=\"middle\" font-family=\"Courier New,monospace\" font-size=\"9\" font-weight=\"700\" fill=\"#252A83\">A<\/text>\n          <circle cx=\"340\" cy=\"30\" r=\"9\" fill=\"none\" stroke=\"#252A83\" stroke-width=\"1\"\/>\n          <text x=\"340\" y=\"33\" text-anchor=\"middle\" font-family=\"Courier New,monospace\" font-size=\"9\" font-weight=\"700\" fill=\"#252A83\">B<\/text>\n          <circle cx=\"550\" cy=\"30\" r=\"9\" fill=\"none\" stroke=\"#252A83\" stroke-width=\"1\"\/>\n          <text x=\"550\" y=\"33\" text-anchor=\"middle\" font-family=\"Courier New,monospace\" font-size=\"9\" font-weight=\"700\" fill=\"#252A83\">C<\/text>\n          <circle cx=\"760\" cy=\"30\" r=\"9\" fill=\"none\" stroke=\"#252A83\" stroke-width=\"1\"\/>\n          <text x=\"760\" y=\"33\" text-anchor=\"middle\" font-family=\"Courier New,monospace\" font-size=\"9\" font-weight=\"700\" fill=\"#252A83\">D<\/text>\n          <circle cx=\"920\" cy=\"30\" r=\"9\" fill=\"none\" stroke=\"#252A83\" stroke-width=\"1\"\/>\n          <text x=\"920\" y=\"33\" text-anchor=\"middle\" font-family=\"Courier New,monospace\" font-size=\"9\" font-weight=\"700\" fill=\"#252A83\">E<\/text>\n        <\/g>\n\n        <!-- \u2500\u2500 \u041e\u0421\u041d\u041e\u0412\u041d\u0418\u0419 \u041a\u041e\u041d\u0422\u0423\u0420 \u0411\u0423\u0414\u0406\u0412\u041b\u0406 \u2500\u2500 -->\n        <path class=\"bp-line thick\" d=\"M180,250 L340,250 L340,400 L180,400 Z\"\/>\n        <path class=\"bp-line thick\" d=\"M340,160 L760,160 L760,400 L340,400\"\/>\n        <path class=\"bp-line thick\" d=\"M760,250 L920,250 L920,400 L760,400\"\/>\n        <path class=\"bp-line thick\" d=\"M340,160 L550,90 L760,160\"\/>\n        <path class=\"bp-line\" d=\"M340,140 L760,140\"\/>\n\n        <!-- \u2500\u2500 \u0426\u041e\u041a\u041e\u041b\u042c \u2500\u2500 -->\n        <path class=\"bp-line\" d=\"M150,400 L950,400\"\/>\n        <path class=\"bp-line\" d=\"M120,415 L980,415\"\/>\n        <path class=\"bp-line\" d=\"M90,430 L1010,430\"\/>\n\n        <!-- \u2500\u2500 \u041f\u041e\u0412\u0415\u0420\u0425\u041e\u0412\u0406 \u041b\u0406\u041d\u0406\u0407 \u2500\u2500 -->\n        <path class=\"bp-line thin\" d=\"M340,250 L760,250\"\/>\n        <path class=\"bp-line thin\" d=\"M180,320 L920,320\"\/>\n\n        <!-- \u2500\u2500 \u0412\u0406\u041a\u041d\u0410 \u2500\u2500 -->\n        <g>\n          <rect class=\"bp-line thin\" x=\"200\" y=\"270\" width=\"22\" height=\"38\" fill=\"none\"\/>\n          <rect class=\"bp-line thin\" x=\"240\" y=\"270\" width=\"22\" height=\"38\" fill=\"none\"\/>\n          <rect class=\"bp-line thin\" x=\"280\" y=\"270\" width=\"22\" height=\"38\" fill=\"none\"\/>\n          <rect class=\"bp-line thin\" x=\"200\" y=\"340\" width=\"22\" height=\"38\" fill=\"none\"\/>\n          <rect class=\"bp-line thin\" x=\"240\" y=\"340\" width=\"22\" height=\"38\" fill=\"none\"\/>\n          <rect class=\"bp-line thin\" x=\"280\" y=\"340\" width=\"22\" height=\"38\" fill=\"none\"\/>\n        <\/g>\n        <g>\n          <rect class=\"bp-line thin\" x=\"360\" y=\"180\" width=\"26\" height=\"50\" fill=\"none\"\/>\n          <rect class=\"bp-line thin\" x=\"408\" y=\"180\" width=\"26\" height=\"50\" fill=\"none\"\/>\n          <rect class=\"bp-line thin\" x=\"456\" y=\"180\" width=\"26\" height=\"50\" fill=\"none\"\/>\n          <rect class=\"bp-line thin\" x=\"504\" y=\"180\" width=\"26\" height=\"50\" fill=\"none\"\/>\n          <rect class=\"bp-line thin\" x=\"570\" y=\"180\" width=\"26\" height=\"50\" fill=\"none\"\/>\n          <rect class=\"bp-line thin\" x=\"618\" y=\"180\" width=\"26\" height=\"50\" fill=\"none\"\/>\n          <rect class=\"bp-line thin\" x=\"666\" y=\"180\" width=\"26\" height=\"50\" fill=\"none\"\/>\n          <rect class=\"bp-line thin\" x=\"714\" y=\"180\" width=\"26\" height=\"50\" fill=\"none\"\/>\n        <\/g>\n        <!-- \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u0438\u0439 \u0432\u0445\u0456\u0434 -->\n        <path class=\"bp-line thick\" d=\"M530,400 L530,330 L570,330 L570,400\"\/>\n        <line class=\"bp-line thin\" x1=\"550\" y1=\"330\" x2=\"550\" y2=\"400\"\/>\n        <rect class=\"bp-line thin\" x=\"510\" y=\"270\" width=\"20\" height=\"40\" fill=\"none\"\/>\n        <rect class=\"bp-line thin\" x=\"540\" y=\"270\" width=\"20\" height=\"40\" fill=\"none\"\/>\n        <rect class=\"bp-line thin\" x=\"570\" y=\"270\" width=\"20\" height=\"40\" fill=\"none\"\/>\n        <g>\n          <rect class=\"bp-line thin\" x=\"780\" y=\"270\" width=\"22\" height=\"38\" fill=\"none\"\/>\n          <rect class=\"bp-line thin\" x=\"820\" y=\"270\" width=\"22\" height=\"38\" fill=\"none\"\/>\n          <rect class=\"bp-line thin\" x=\"860\" y=\"270\" width=\"22\" height=\"38\" fill=\"none\"\/>\n          <rect class=\"bp-line thin\" x=\"780\" y=\"340\" width=\"22\" height=\"38\" fill=\"none\"\/>\n          <rect class=\"bp-line thin\" x=\"820\" y=\"340\" width=\"22\" height=\"38\" fill=\"none\"\/>\n          <rect class=\"bp-line thin\" x=\"860\" y=\"340\" width=\"22\" height=\"38\" fill=\"none\"\/>\n        <\/g>\n\n        <!-- \u2500\u2500 \u0424\u041b\u0410\u0413\u0428\u0422\u041e\u041a \u2500\u2500 -->\n        <line class=\"bp-line thick\" x1=\"550\" y1=\"90\" x2=\"550\" y2=\"55\"\/>\n        <circle class=\"bp-tick\" cx=\"550\" cy=\"54\" r=\"2.5\" fill=\"#252A83\"\/>\n\n        <!-- \u2500\u2500 \u0420\u041e\u0417\u041c\u0406\u0420\u041d\u0406 \u041b\u0406\u041d\u0406\u0407 \u0417\u041d\u0418\u0417\u0423 \u2500\u2500 -->\n        <g class=\"bp-tick\">\n          <line x1=\"180\" y1=\"445\" x2=\"180\" y2=\"455\" stroke=\"#252A83\" stroke-width=\"1\"\/>\n          <line x1=\"340\" y1=\"445\" x2=\"340\" y2=\"455\" stroke=\"#252A83\" stroke-width=\"1\"\/>\n          <line x1=\"550\" y1=\"445\" x2=\"550\" y2=\"455\" stroke=\"#252A83\" stroke-width=\"1\"\/>\n          <line x1=\"760\" y1=\"445\" x2=\"760\" y2=\"455\" stroke=\"#252A83\" stroke-width=\"1\"\/>\n          <line x1=\"920\" y1=\"445\" x2=\"920\" y2=\"455\" stroke=\"#252A83\" stroke-width=\"1\"\/>\n          <line x1=\"180\" y1=\"450\" x2=\"920\" y2=\"450\" stroke=\"#252A83\" stroke-width=\"1\"\/>\n          <polygon points=\"180,450 188,447 188,453\" fill=\"#252A83\"\/>\n          <polygon points=\"920,450 912,447 912,453\" fill=\"#252A83\"\/>\n        <\/g>\n\n        <text class=\"bp-text delay-1\" x=\"260\" y=\"467\" text-anchor=\"middle\">6 200<\/text>\n        <text class=\"bp-text delay-1\" x=\"445\" y=\"467\" text-anchor=\"middle\">8 400<\/text>\n        <text class=\"bp-text delay-1\" x=\"655\" y=\"467\" text-anchor=\"middle\">8 400<\/text>\n        <text class=\"bp-text delay-1\" x=\"840\" y=\"467\" text-anchor=\"middle\">6 200<\/text>\n\n        <!-- \u2500\u2500 \u0412\u0418\u041d\u041e\u0421\u041d\u0406 \u041f\u0406\u0414\u041f\u0418\u0421\u0418 \u2500\u2500 -->\n        <g class=\"bp-text delay-2\">\n          <line x1=\"450\" y1=\"115\" x2=\"450\" y2=\"80\" stroke=\"#252A83\" stroke-width=\".7\" stroke-dasharray=\"3,3\"\/>\n          <line x1=\"450\" y1=\"80\" x2=\"320\" y2=\"80\" stroke=\"#252A83\" stroke-width=\".7\"\/>\n          <circle cx=\"450\" cy=\"115\" r=\"2\" fill=\"#252A83\"\/>\n          <text x=\"316\" y=\"83\" text-anchor=\"end\" font-family=\"Courier New,monospace\" font-size=\"9\" font-weight=\"700\" fill=\"#252A83\">PEDIMENT \u00b7 RESTORATION<\/text>\n        <\/g>\n\n        <g class=\"bp-text delay-2\">\n          <line x1=\"550\" y1=\"365\" x2=\"690\" y2=\"365\" stroke=\"#252A83\" stroke-width=\".7\" stroke-dasharray=\"3,3\"\/>\n          <line x1=\"690\" y1=\"365\" x2=\"690\" y2=\"395\" stroke=\"#252A83\" stroke-width=\".7\"\/>\n          <circle cx=\"550\" cy=\"365\" r=\"2\" fill=\"#252A83\"\/>\n          <text x=\"694\" y=\"398\" font-family=\"Courier New,monospace\" font-size=\"9\" font-weight=\"700\" fill=\"#252A83\">MAIN ENTRANCE<\/text>\n        <\/g>\n\n        <g class=\"bp-text delay-3\">\n          <line x1=\"251\" y1=\"280\" x2=\"130\" y2=\"280\" stroke=\"#252A83\" stroke-width=\".7\" stroke-dasharray=\"3,3\"\/>\n          <line x1=\"130\" y1=\"280\" x2=\"130\" y2=\"265\" stroke=\"#252A83\" stroke-width=\".7\"\/>\n          <circle cx=\"251\" cy=\"280\" r=\"2\" fill=\"#252A83\"\/>\n          <text x=\"125\" y=\"262\" text-anchor=\"end\" font-family=\"Courier New,monospace\" font-size=\"9\" font-weight=\"700\" fill=\"#252A83\">WINDOWS \u00b7 42 pcs<\/text>\n        <\/g>\n\n        <g class=\"bp-text delay-3\">\n          <line x1=\"260\" y1=\"225\" x2=\"260\" y2=\"140\" stroke=\"#252A83\" stroke-width=\".7\" stroke-dasharray=\"3,3\"\/>\n          <line x1=\"260\" y1=\"140\" x2=\"100\" y2=\"140\" stroke=\"#252A83\" stroke-width=\".7\"\/>\n          <circle cx=\"260\" cy=\"225\" r=\"2\" fill=\"#252A83\"\/>\n          <text x=\"96\" y=\"143\" text-anchor=\"end\" font-family=\"Courier New,monospace\" font-size=\"9\" font-weight=\"700\" fill=\"#252A83\">LEFT WING<\/text>\n          <text x=\"96\" y=\"155\" text-anchor=\"end\" font-family=\"Courier New,monospace\" font-size=\"8\" font-weight=\"500\" fill=\"rgba(37,42,131,.6)\">C16P REINFORCEMENT<\/text>\n        <\/g>\n\n        <g class=\"bp-text delay-3\">\n          <line x1=\"840\" y1=\"225\" x2=\"840\" y2=\"140\" stroke=\"#252A83\" stroke-width=\".7\" stroke-dasharray=\"3,3\"\/>\n          <line x1=\"840\" y1=\"140\" x2=\"1000\" y2=\"140\" stroke=\"#252A83\" stroke-width=\".7\"\/>\n          <circle cx=\"840\" cy=\"225\" r=\"2\" fill=\"#252A83\"\/>\n          <text x=\"1004\" y=\"143\" font-family=\"Courier New,monospace\" font-size=\"9\" font-weight=\"700\" fill=\"#252A83\">RIGHT WING<\/text>\n          <text x=\"1004\" y=\"155\" font-family=\"Courier New,monospace\" font-size=\"8\" font-weight=\"500\" fill=\"rgba(37,42,131,.6)\">M16 THREADED RODS<\/text>\n        <\/g>\n\n        <!-- \u2500\u2500 \u0412\u0418\u0421\u041e\u0422\u041d\u0406 \u0412\u0406\u0414\u041c\u0406\u0422\u041a\u0418 \u2500\u2500 -->\n        <g class=\"bp-text delay-2\">\n          <line x1=\"60\" y1=\"90\" x2=\"80\" y2=\"90\" stroke=\"#252A83\" stroke-width=\".7\"\/>\n          <text x=\"56\" y=\"93\" text-anchor=\"end\" font-family=\"Courier New,monospace\" font-size=\"9\" font-weight=\"700\" fill=\"#252A83\">+12.40<\/text>\n          <line x1=\"60\" y1=\"160\" x2=\"80\" y2=\"160\" stroke=\"#252A83\" stroke-width=\".7\"\/>\n          <text x=\"56\" y=\"163\" text-anchor=\"end\" font-family=\"Courier New,monospace\" font-size=\"9\" font-weight=\"700\" fill=\"#252A83\">+8.20<\/text>\n          <line x1=\"60\" y1=\"250\" x2=\"80\" y2=\"250\" stroke=\"#252A83\" stroke-width=\".7\"\/>\n          <text x=\"56\" y=\"253\" text-anchor=\"end\" font-family=\"Courier New,monospace\" font-size=\"9\" font-weight=\"700\" fill=\"#252A83\">+3.60<\/text>\n          <line x1=\"60\" y1=\"400\" x2=\"80\" y2=\"400\" stroke=\"#252A83\" stroke-width=\".7\"\/>\n          <text x=\"56\" y=\"403\" text-anchor=\"end\" font-family=\"Courier New,monospace\" font-size=\"9\" font-weight=\"700\" fill=\"#252A83\">\u00b10.00<\/text>\n        <\/g>\n\n      <\/svg>\n\n      <!-- \u0448\u0442\u0430\u043c\u043f -->\n      <div class=\"bp-stamp\">\n        <div class=\"bp-stamp-title\">SPECSERVIS LLC<\/div>\n        <div class=\"bp-stamp-row\"><span class=\"k\">Facility<\/span><span class=\"v\">\u2116001<\/span><\/div>\n        <div class=\"bp-stamp-row\"><span class=\"k\">Date<\/span><span class=\"v\">2026<\/span><\/div>\n        <div class=\"bp-stamp-row\"><span class=\"k\">Sheet<\/span><span class=\"v\">AR-01<\/span><\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"bp-caption\">Every project begins with precise engineering calculations<\/div>\n  <\/section>\n\n  <!-- \u2550\u2550\u2550 3. CASE DETAIL OVERLAY \u2550\u2550\u2550 -->\n  <div class=\"detail\" id=\"ssDetail\">\n    <div id=\"ssDetailBody\"><\/div>\n  <\/div>\n\n  <!-- \u0445\u0440\u0435\u0441\u0442\u0438\u043a \u041f\u041e\u0417\u0410 detail \u2014 \u0437\u0430\u0432\u0436\u0434\u0438 fixed \u043f\u043e\u0432\u0435\u0440\u0445 \u0432\u0441\u044c\u043e\u0433\u043e -->\n  <div class=\"detail-close\" id=\"ssDetailClose\" onclick=\"ssCloseDetail()\" style=\"display:none\">\n    <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"2\"><line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"\/><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"\/><\/svg>\n  <\/div>\n\n  <!-- lightbox -->\n  <div class=\"lightbox\" id=\"ssLightbox\" onclick=\"ssCloseLightbox()\">\n    <button class=\"lightbox-close\" onclick=\"ssCloseLightbox()\">\u00d7<\/button>\n    <img decoding=\"async\" id=\"ssLightboxImg\" src=\"\" alt=\"\">\n  <\/div>\n\n<\/div>\n\n<script>\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   \u2591\u2591  \u0414\u0410\u041d\u0406 \u041a\u0415\u0419\u0421\u0406\u0412 \u2014 \u0440\u0435\u0434\u0430\u0433\u0443\u044e\u0442\u044c\u0441\u044f \u041d\u0415 \u0422\u0423\u0422  \u2591\u2591\n   \u041a\u043e\u0436\u0435\u043d \u043a\u0435\u0439\u0441 \u0442\u0435\u043f\u0435\u0440 \u2014 \u043e\u043a\u0440\u0435\u043c\u0438\u0439 \u0437\u0430\u043f\u0438\u0441 \u0442\u0438\u043f\u0443 \"\u041a\u0435\u0439\u0441\" \u0443 WordPress\n   (\u043f\u0443\u043d\u043a\u0442 \u043c\u0435\u043d\u044e \"\u041a\u0435\u0439\u0441\u0438\" \u0432 \u0430\u0434\u043c\u0456\u043d\u0446\u0456). \u041e\u0431\u043a\u043b\u0430\u0434\u0438\u043d\u043a\u0430 = featured image,\n   \u0434\u043e\u0434\u0430\u0442\u043a\u043e\u0432\u0456 \u0444\u043e\u0442\u043e \u2014 \u0431\u043b\u043e\u043a \"\u0413\u0430\u043b\u0435\u0440\u0435\u044f\" \u0443 \u0442\u0435\u043a\u0441\u0442\u0456 \u0437\u0430\u043f\u0438\u0441\u0443, \u0440\u0435\u0448\u0442\u0430 \u043f\u043e\u043b\u0456\u0432 \u2014\n   ACF. \u0426\u0435\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u043f\u0456\u0434\u0442\u044f\u0433\u0443\u0454 \u0457\u0445 \u0447\u0435\u0440\u0435\u0437 REST API \u043f\u0440\u0438 \u0437\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0435\u043d\u043d\u0456\n   \u0441\u0442\u043e\u0440\u0456\u043d\u043a\u0438, \u0442\u043e\u0436 \u0431\u0443\u0434\u044c-\u044f\u043a\u0430 \u0437\u043c\u0456\u043d\u0430 \u0432 \u0430\u0434\u043c\u0456\u043d\u0446\u0456 \u0437\u02bc\u044f\u0432\u043b\u044f\u0454\u0442\u044c\u0441\u044f \u0442\u0443\u0442 \u043e\u0434\u0440\u0430\u0437\u0443.\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\nvar SS_DATA = [];\n\n\/* Short card titles (key = case slug). Full title is shown inside the opened case.\n   Cases missing from this map fall back to the full title. *\/\nvar SS_SHORT_TITLES = {\n  'ohmatdyt-korpus-3': 'Okhmatdyt \\u2013 Building No. 3',\n  'reabilitatsiynyy-blok-u-12-y-likarni': 'Rehabilitation Unit at Hospital No. 12',\n  'obsluhovuvannya-medzakladiv': 'Healthcare Facility Maintenance',\n  'kapitalnyy-remont-prymischennya-veteranskyy-prostir-u-m-bucha-kyivskoi-oblasti': 'Veteran Space Center in Bucha',\n  'protyradiatsiyne-ukryttya': 'Radiation Protection Shelter',\n  'budivnytstvo-ta-rekonstruktsiya-ukryttiv-u-navchalnyh-zakladah-mista-kyeva': 'Shelters in Kyiv Schools',\n  'budivnytstvo-bomboshovysch': 'Construction of Bomb Shelters',\n  'kyiv-dp-medychni-zakupivli-ukrainy-derzhavne-pidpryemstvo-scho-zakupovue-liky-ta-medvyroby-za-koshty-derzhbyudzhetu-dlya-bezoplatnoho-likuvannya-patsientiv': 'Medical Procurement of Ukraine',\n  'kapitalnyy-remont-zahysnoi-sporudy-tsyvilnoho-zahystu-z-oblashtuvannyam-druhoho-vyhodu-v-doshkilnomu-navchalnomu-zakladi-573-obolonskyy-rayon-m-kyiv': 'Shelter at Preschool No. 573',\n  'kondytsiyuvannya-holovnoho-ofisu-ukrsibbank': 'UkrSibbank Headquarters',\n  'systema-chystyh-prymischen-dlya-umedo-group': 'Cleanrooms for Umedo Group',\n  'montazh-systemy-kondytsiyuvannya-dlya-halafarm': 'Air Conditioning for Galafarm',\n  'kondytsionuvannya-ta-ventylyatsiya-dlya-jack-house': 'HVAC Systems for Jack House',\n  'montazh-systemy-kondytsiyuvannya-dlya-bts-da-vinchi': 'Da Vinci Business Center',\n  'avtomobilni-salony': 'Automotive Dealerships',\n  'medychni-laboratorii': 'Medical Laboratories',\n  'torhovi-ta-biznes-tsentry': 'Retail and Business Centers',\n  'produktovi-riteyl-merezhi': 'Food Retail Chains',\n  'farmatsevtychne-vyrobnytstvo': 'Pharmaceutical Manufacturing',\n  'syrni-zavody-ta-vyrobnytstva': 'Cheese Production Facilities',\n  'molochni-zavody-ta-vyrobnytstva': 'Dairy Plants and Manufacturing',\n  'skladski-prymischennya': 'Warehouse Facilities',\n  'pyvzavody-ta-pyvovarni': 'Breweries and Beer Production'\n};\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   \u2591\u2591  \u0414\u0412\u0418\u0413\u0423\u041d \u2014 \u043d\u0438\u0436\u0447\u0435 \u043d\u0435 \u0440\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438  \u2591\u2591\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n(function(){\n  var root = document.getElementById('ssCases');\n\n  function videoEmbed(v, poster, autoplay, loop, coverBox){\n    if(!v || (!v.id && !v.url)){\n      return poster ? '<img decoding=\"async\" class=\"hero-img\" src=\"'+poster+'\" alt=\"\">' : '<div style=\"position:absolute;inset:0;background:linear-gradient(135deg,#29264B,#252A83)\"><\/div>';\n    }\n    if(v.type==='mp4' || v.type==='file'){\n      var attrs = 'playsinline muted'+(autoplay?' autoplay':'')+(loop?' loop':'')+(poster?' poster=\"'+poster+'\"':'');\n      return '<video '+attrs+'><source src=\"'+v.url+'\" type=\"video\/mp4\"><\/video>';\n    }\n    if(v.type==='youtube'){\n      var p = 'autoplay='+(autoplay?1:0)+'&mute=1&controls=0&showinfo=0&rel=0&modestbranding=1&playsinline=1&iv_load_policy=3&fs=0&disablekb=1&cc_load_policy=0&color=white';\n      if(loop) p += '&loop=1&playlist='+v.id;\n      \/* coverBox: the wrapping box has a fixed aspect different from the source\n         video (e.g. a 9:16 sticky box with a 16:9 YouTube source) \u2014 plain 100%\/100%\n         would letterbox, since iframes ignore object-fit. Overscale + center instead. *\/\n      var iframeStyle = 'position:absolute;top:50%;left:50%;width:100%;height:100%;transform:translate(-50%,-50%);border:0;pointer-events:none';\n      if(coverBox && v.horizontal){\n        iframeStyle = 'position:absolute;top:50%;left:50%;width:320%;height:100%;transform:translate(-50%,-50%);border:0;pointer-events:none';\n      }\n      return '<div class=\"vid-embed-wrap\" style=\"position:absolute;inset:0;overflow:hidden\">'+\n        '<iframe src=\"https:\/\/www.youtube.com\/embed\/'+v.id+'?'+p+'\" allow=\"autoplay; encrypted-media\" allowfullscreen style=\"'+iframeStyle+'\"><\/iframe>'+\n        '<div style=\"position:absolute;bottom:-2px;left:-2px;right:-2px;height:60px;background:linear-gradient(to top,rgba(41,38,75,.4),transparent);pointer-events:none\"><\/div>'+\n        '<div style=\"position:absolute;bottom:0;right:0;width:130px;height:50px;background:linear-gradient(to top left,rgba(41,38,75,.95) 30%,transparent 80%);pointer-events:none\"><\/div>'+\n        '<a href=\"#\" onclick=\"return false\" style=\"position:absolute;inset:0;cursor:default\" tabindex=\"-1\"><\/a>'+\n      '<\/div>';\n    }\n    if(v.type==='vimeo'){\n      return '<iframe src=\"https:\/\/player.vimeo.com\/video\/'+v.id+'?autoplay='+(autoplay?1:0)+'&muted=1&loop='+(loop?1:0)+'&background=1\" allow=\"autoplay; fullscreen\"><\/iframe>';\n    }\n    return '';\n  }\n\n  \/* \u2500\u2500\u2500 LOAD CASES FROM WORDPRESS (REST) \u2500\u2500\u2500 *\/\n  function ytId(url){\n    if(!url) return '';\n    var m = url.match(\/(?:youtu\\.be\\\/|[?&]v=|embed\\\/)([A-Za-z0-9_-]{6,})\/);\n    return m ? m[1] : '';\n  }\n\n  var CTR={\"41464\": {\"title\": \"Okhmatdyt \u2013 Building No. 3\", \"acf\": {\"case_tag\": \"Restoration \u00b7 Kyiv\", \"case_subtitle\": \"A comprehensive turnkey package of emergency stabilization, restoration, and conservation works for this historic landmark building.\", \"case_customer\": \"National Specialized Children\u2019s Hospital \u201cOkhmatdyt\u201d of the Ministry of Health of Ukraine\", \"case_location\": \"Kyiv, Viacheslava Chornovola Street\", \"case_status\": \"Commissioned\", \"case_intro_heading\": \"Turnkey Restoration\", \"case_intro_text\": \"A comprehensive package of emergency stabilization, conservation, and restoration works for a historic landmark dating back to 1904 \u2014 from structural stabilization and reinforcement to fa\u00e7ade restoration.\\nThe project required specialized restoration techniques, including crack injection, reconstruction of original brick masonry, structural wall reinforcement with steel elements, and the installation of a new roof.\", \"case_works_heading\": \"Project Scope\", \"case_works_list\": \"Stabilization of load-bearing walls along the entire building perimeter\\nReinforcement of exterior walls using steel structures: C16P channels, 6 mm steel plates, and M16 Grade 8.8 threaded rods\\nInjection repair of 42 structural cracks using specialized restoration technology and materials\\nReconstruction of original brick masonry while preserving the building\u2019s historic appearance\\nInstallation of a new roof and complete replacement of fa\u00e7ade metal cladding\\nCorrosion protection and fire-resistant treatment of all steel structures\\nInstallation of drainage systems and conservation of window openings\", \"case_stats\": \"3 | Fa\u00e7ades fully restored\\n42 | Structural cracks repaired\\n156 m | Steel reinforcement structures installed\\n100% | Facility successfully commissioned\", \"case_quote\": \"The facility was commissioned in full compliance with the approved project documentation and all applicable architectural heritage restoration standards.\", \"case_quote_source\": \"SpecServis LLC\"}}, \"41465\": {\"title\": \"Rehabilitation Unit at Hospital No. 12\", \"acf\": {\"case_tag\": \"Renovation \u00b7 Kyiv\", \"case_subtitle\": \"Major renovation and turnkey fit-out of a rehabilitation department for military personnel, funded by the city budget.\", \"case_customer\": \"Kyiv City Clinical Hospital No. 12\", \"case_location\": \"Kyiv\", \"case_status\": \"Commissioned\", \"case_intro_heading\": \"Major Renovation Funded by the Municipal Budget\", \"case_intro_text\": \"The rehabilitation unit for military personnel at Kyiv City Clinical Hospital No. 12 involved the complete renovation and reconfiguration of part of a hospital floor into a modern rehabilitation space designed to support the recovery and well-being of Ukraine\u2019s defenders.\\nPrior to the start of construction, our specialists conducted a comprehensive assessment of the premises and developed tailored solutions that met healthcare facility requirements and ensured accessibility for people with reduced mobility.\", \"case_works_heading\": \"Scope of Work\", \"case_works_list\": \"Complete demolition of existing structures and construction of a new rehabilitation space from the ground up\\nBarrier-free, single-level flooring finished with medical-grade linoleum, along with widened door openings\\nNew sound-insulated partitions, laminated wall panels, and ceramic tile finishes in sanitary facilities\\nMoisture-resistant suspended Armstrong ceilings with integrated lighting\\nComplete replacement of all engineering systems: water supply, wastewater, electrical, ventilation, and air conditioning\\nPrivate bathroom facilities in every patient room and backup power supply from two independent power sources\\nFire alarm system, access control system, structured cabling network, and nurse call system\\nFire-rated aluminum door systems, handrails, and germicidal lighting fixtures\", \"case_stats\": \"2 | Independent backup power sources per patient room\\n1 | Entire floor fully rebuilt and renovated\", \"case_quote_source\": \"SpecServis LLC\"}}, \"41473\": {\"title\": \"Healthcare Facility Maintenance\", \"acf\": {\"case_tag\": \"Maintenance Services \u00b7 Kyiv\", \"case_subtitle\": \"Maintenance and servicing of ventilation and air conditioning systems at the National Specialized Children\u2019s Hospital \u201cOkhmatdyt\u201d.\", \"case_customer\": \"National Specialized Children\u2019s Hospital \u201cOkhmatdyt\u201d of the Ministry of Health of Ukraine\", \"case_location\": \"Kyiv\", \"case_status\": \"Ongoing Service Contract\", \"case_intro_heading\": \"Comprehensive Healthcare Facility Maintenance\", \"case_intro_text\": \"At the National Specialized Children\u2019s Hospital \u201cOkhmatdyt\u201d, the SpecServis team delivered a comprehensive range of maintenance, repair, and modernization services:\", \"case_works_heading\": \"Scope of Services\", \"case_works_list\": \"Ventilation and air conditioning systems\\nVentilation units, refrigeration equipment, and air conditioning systems across all hospital buildings\\nWater treatment systems serving all hospital buildings\\nLaboratory fume hoods and ventilation cabinets\\nLaundry equipment\\nCommercial kitchen equipment\\nUltra-low temperature freezers for stem cell storage\\nTransfusion medicine department equipment\\nRefrigeration equipment for kitchens and storage facilities\\nInstallation of ventilation systems in a basic civil protection shelter\", \"case_stats\": \"10 | Engineering systems and service areas covered\\n1 | The largest children\u2019s hospital in Ukraine\", \"case_quote_source\": \"SpecServis LLC\"}}, \"41474\": {\"title\": \"Major Renovation of the Veteran Space Center in Bucha, Kyiv Region\", \"acf\": {\"case_tag\": \"Renovation \u00b7 Bucha\", \"case_subtitle\": \"For us, this project was about much more than renovating a building. It was about creating a place where veterans can find support, care, and a sense of community. The SpecServis team carried out a complete major renovation from the ground up, transforming an outdated facility into a modern, functional, and welcoming space for the people who defended our country.\", \"case_location\": \"Bucha, Kyiv Region\", \"case_status\": \"Commissioned\", \"case_intro_heading\": \"Barrier-Free Space for Veterans\", \"case_intro_text\": \"Major renovation of a facility for veterans in Bucha, designed to provide accessible, well-organized spaces and unrestricted movement for people of all abilities.\\nThe project included the complete demolition of existing structures, construction of new walls, installation of porcelain tile flooring, modernization of engineering systems, and construction of an external granite-clad access ramp, all carried out in accordance with the approved design documentation.\", \"case_works_heading\": \"Scope of Works\", \"case_works_list\": \"Complete demolition of existing partitions, floor coverings, and interior finishes\\nConstruction of new walls and reinforcement of door openings with steel structural elements\\nInstallation of drywall framing systems, plastering, and final interior finishing works\\nDecorative wall plastering and installation of porcelain tile flooring\\nInstallation of a Grilyato suspended ceiling system, stretch ceilings, and glass partitions in sanitary facilities\\nFull installation of electrical systems, water supply, wastewater systems, and air conditioning systems\\nConstruction of an external granite-clad access ramp to ensure barrier-free accessibility\", \"case_stats\": \"7 | Project phases \u2014 from demolition to final fit-out\\n100% | Fully accessible facility\", \"case_quote_source\": \"SpecServis LLC\"}}, \"41475\": {\"title\": \"Radiation Protection Shelter\", \"acf\": {\"case_tag\": \"Civil Protection Facility \u00b7 Kyiv\", \"case_subtitle\": \"Comprehensive renovation of a civil protection facility (radiation protection shelter), including the preparation of premises for CT scanner installation.\", \"case_customer\": \"Kyiv City Clinical Hospital No. 12\", \"case_location\": \"Kyiv\", \"case_status\": \"Commissioned\", \"case_intro_heading\": \"Major Overhaul of a Radiation Protection Shelter\", \"case_intro_text\": \"The SpecServis team successfully completed a comprehensive major renovation of a civil protection facility \u2014 a radiation protection shelter \u2014 as well as the premises intended for the installation of a CT scanner at the Municipal Non-Commercial Enterprise Kyiv City Clinical Hospital No. 12.\\nThe facility serves a dual purpose: under normal conditions, the premises are used to accommodate diagnostic medical equipment, while in the event of a threat, they fulfill their primary function as a civil protection shelter. All design and construction solutions were developed in full compliance with the applicable Ukrainian building regulations (DBN) governing dual-purpose shelter facilities.\", \"case_works_heading\": \"Scope of Works\", \"case_works_list\": \"Major renovation of the civil protection shelter\\nConstruction and fit-out of CT scanner facilities\\nVentilation, electrical, and water supply systems\\nFinishing works in compliance with civil protection shelter requirements\", \"case_stats\": \"2 | Facility functions \u2014 shelter and CT suite\", \"case_quote_source\": \"SpecServis LLC\"}}, \"41476\": {\"title\": \"Construction and Reconstruction of Shelters in Educational Facilities Across Kyiv\", \"acf\": {\"case_tag\": \"Protective Shelters \u00b7 Kyiv\", \"case_subtitle\": \"At a time when children\u2019s safety has become a top priority, the SpecServis team undertook one of its most responsible missions \u2014 transforming outdated basement spaces in Kyiv\u2019s schools and kindergartens into modern, fully functional protective shelters. This project goes beyond renovation; it is about creating a safe environment where students, educators, and staff can feel secure when it matters most.\", \"case_location\": \"Kyiv\", \"case_status\": \"Commissioned\", \"case_intro_heading\": \"About the Project\", \"case_intro_text\": \"Major renovation and reconstruction of civil protection shelters in more than 28 educational institutions across Kyiv, including schools, gymnasiums, lyceums, and kindergartens, in compliance with the requirements of DBN B.2.2-5:2023.\\nEach facility is equipped with essential protective infrastructure, including structural reinforcement, filtered ventilation systems, backup power supply, water supply, and communication networks. The shelters are designed to accommodate children for extended periods and are suitable for everyday use when not serving their protective function.\", \"case_works_heading\": \"Scope of Works\", \"case_works_list\": \"Specialized School No. 3\\nRomano-Germanic Gymnasium No. 123\\nSlavic Gymnasium\\nGeneral Secondary School Grades 1\u201311 No. 62\\nMezhyhirska Gymnasium No. 19\\nSpecialized School No. 127\\nGymnasium No. 315\\nSpecialized General Secondary School No. 291\\nSpecialized School Grades 1\u201311 No. 113\\nCompensatory (Sanatorium-Type) Preschool Institution No. 163\\nSpecialized General Secondary School Grades 1\u201311 No. 314\\nSpecialized General Secondary School Grades 1\u201311 with Advanced Foreign Language Studies No. 329\\nSpecialized General Secondary School Grades 1\u201311 No. 329 \u201cLogos\u201d named after Georgiy Gongadze\\nSecondary School No. 10\\nDialog Gymnasium\\nPrimary School No. 295\\nInternational Relations Gymnasium No. 323\\nScandinavian Gymnasium\\nSpecialized General Secondary School Grades 1\u201311 No. 316\\nPodil Lyceum No. 100\\nSecondary School No. 156\\nInternational Relations Gymnasium No. 323\\nSocial and Natural Sciences Lyceum No. 303\\nKyiv Engineering Gymnasium\\nPrimary School No. 333\\nSchool Grades 1\u201311 No. 217\\nSchool Grades 1\u201311 No. 289\\nPrimary School No. 332\", \"case_stats\": \"28 | Educational institutions\\nDBN B.2.2-5:2023 | Compliance standard\", \"case_quote_source\": \"SpecServis LLC\"}}, \"41477\": {\"title\": \"Construction of Bomb Shelters\", \"acf\": {\"case_tag\": \"Protective Shelters \u00b7 Darnytskyi District\", \"case_subtitle\": \"Installation of ventilation systems in shelters (bomb shelters) at educational institutions in the Darnytskyi and Podilskyi districts of Kyiv.\", \"case_location\": \"Kyiv, Darnytskyi District\", \"case_status\": \"Commissioned\", \"case_intro_heading\": \"Ventilation Systems for Basic Shelters in Educational Facilities\", \"case_intro_text\": \"Major renovation of basic shelters and civil protection facilities in educational institutions across Kyiv, including the installation of ventilation systems, lighting, and infrastructure designed to support the safe accommodation of children for extended periods.\", \"case_works_heading\": \"Facilities\", \"case_works_list\": \"Specialized School No. 3\\nRomano-Germanic Gymnasium No. 123\\nSlavic Gymnasium\\nGeneral Secondary School No. 62\\nMezhyhirska Gymnasium No. 19\\nSpecialized School No. 127\\nGymnasium No. 315\\nSpecialized General Secondary School No. 291\\nSpecialized School No. 113\\nCompensatory (Sanatorium-Type) Preschool Institution No. 163\\nSpecialized General Secondary School No. 314\\nSpecialized General Secondary School No. 329 with Advanced Foreign Language Studies\\nSpecialized School No. 329 \u201cLogos\u201d named after Georgiy Gongadze\\nSecondary School No. 10\\nDialog Gymnasium\\nPrimary School No. 295\\nInternational Relations Gymnasium No. 323\\nScandinavian Gymnasium\\nSpecialized General Secondary School No. 316\\nPodil Lyceum No. 100\\nSecondary School No. 156\\nSocial and Natural Sciences Lyceum No. 303\\nKyiv Engineering Gymnasium\\nPrimary School No. 333\\nSchool No. 217\\nSchool No. 289\\nPrimary School No. 332\", \"case_stats\": \"27 | Facilities\", \"case_quote_source\": \"SpecServis LLC\"}}, \"41478\": {\"title\": \"Kyiv Medical Procurement of Ukraine\", \"acf\": {\"case_tag\": \"Cold Storage Facilities \u00b7 Kyiv\", \"case_subtitle\": \"For the state-owned enterprise Medical Procurement of Ukraine, the SpecServis team supplied, installed, and delivered a turnkey cold storage facility at a pharmaceutical warehouse in Kyiv \u2014 an enterprise that plays a critical role in ensuring access to free medical treatment for patients across Ukraine. The warehouse operates around the clock, and pharmaceuticals require precise temperature control with no margin for error. Our objective was to complete the project accurately, efficiently, and without disrupting the client\u2019s operational processes.\", \"case_customer\": \"SE \u201cMedical Procurement of Ukraine\u201d\", \"case_location\": \"Kyiv\", \"case_status\": \"Commissioned \u00b7 24-Month Warranty\", \"case_intro_heading\": \"Pharmaceutical Cold Storage Chamber\", \"case_intro_text\": \"For the State Enterprise \u201cMedical Procurement of Ukraine\u201d, the SpecServis team designed and installed a pharmaceutical cold storage chamber at a medical warehouse. The facility has external dimensions of 14,700 \u00d7 8,100 \u00d7 4,000 mm and a storage volume of up to 443 m\u00b3.\\nTwo independent refrigeration units with automatic backup switching maintain a stable temperature range of +2\u00b0C to +8\u00b0C around the clock. Upon project completion, the client received the full set of technical documentation along with a 24-month warranty.\", \"case_works_heading\": \"Scope of Works\", \"case_works_list\": \"Design of a support structure made of AISI 304 stainless steel\\nInstallation of modular sandwich panels with a fire-resistant PIR core\\nInstallation of premium-grade sliding cold room doors with electric drive\\nInstallation of two independent refrigeration units with automatic backup switching\\nIntegration of temperature and humidity monitoring sensors at eight control points\\nCommissioning, testing, and handover of the complete project documentation package\", \"case_stats\": \"443 m\u00b3 | Internal chamber volume\\n2 | Independent refrigeration units\\n+2\u2026+8\u00b0C | Stable temperature range\\n24 months | Warranty\", \"case_quote_source\": \"SpecServis LLC\"}}, \"41479\": {\"title\": \"Major Renovation of a Civil Protection Shelter with a Secondary Exit at Preschool No. 573, Obolonskyi District, Kyiv\", \"acf\": {\"case_tag\": \"Protective Shelter \u00b7 Obolonskyi District\", \"case_subtitle\": \"A kindergarten is a place where children\u2019s safety is non-negotiable. The SpecServis team carried out a comprehensive renovation of the civil protection shelter at Preschool No. 573 in Kyiv\u2019s Obolonskyi District, transforming an outdated basement utility space into a fully functional shelter with a capacity of 150 occupants, fully compliant with civil protection requirements. All works were completed without interrupting the educational process.\", \"case_customer\": \"Education Department of the Obolonskyi District State Administration\", \"case_location\": \"Kyiv, Obolonskyi District\", \"case_status\": \"Commissioned\", \"case_intro_heading\": \"Shelter with a Secondary Exit at a Preschool Facility\", \"case_intro_text\": \"Major renovation of a civil protection shelter with the construction of a secondary emergency exit at Preschool No. 573 (Obolonskyi District), funded by the local government budget. The shelter has a total area of 178.78 m\u00b2 and a capacity of 150 occupants.\\nThe project included a complete range of engineering solutions, including filtered ventilation, electric heating, an emergency drinking water reserve, and a fire alarm system, as well as an inclined platform lift and tactile way-finding elements to ensure accessibility for people with disabilities.\", \"case_works_heading\": \"Scope of Works\", \"case_works_list\": \"Lowering of the floor level and construction of new internal partitions\\nConstruction of a secondary external exit with reinforced concrete stairs\\nRadiation protection assessment and design (Protection Class P-1 Shelter)\\nSupply and exhaust ventilation system with air filtration and heating\\nElectric heating system and a 1,500-liter emergency drinking water reserve\\nFire alarm, public address and warning system, and gas detection system\\nInstallation of an inclined platform lift and tactile wayfinding elements for people with disabilities\", \"case_stats\": \"178.78 m\u00b2 | Shelter area\\n150 | Occupancy capacity\\n1,000 | Protection factor (P-1 shelter class)\\n1,500 L | Emergency drinking water reserve\", \"case_quote_source\": \"SpecServis LLC\"}}, \"41480\": {\"title\": \"Air Conditioning System for UkrSibbank Headquarters\", \"acf\": {\"case_tag\": \"Air Conditioning \u00b7 Kharkiv\", \"case_subtitle\": \"Design and installation of ventilation and air conditioning systems for the UkrSibbank headquarters in Kharkiv, covering a total area of 2,500 m\u00b2.\", \"case_customer\": \"JSC \u201cUkrSibbank\u201d\", \"case_location\": \"Kharkiv\", \"case_status\": \"Commissioned\", \"case_intro_heading\": \"Climate Control Systems for a Bank Headquarters\", \"case_intro_text\": \"The SpecServis team designed the ventilation and air conditioning systems for the headquarters of JSC UkrSibbank in Kharkiv, an administrative building with a total floor area of 2,500 m\u00b2. The project included thermal load calculations for open-plan office areas, meeting rooms, and server rooms with stringent temperature control requirements.\\nThe solution was developed to achieve an optimal balance between energy efficiency and occupant comfort. It features dedicated air conditioning circuits for zones with different thermal loads, a supply and exhaust ventilation system with heat recovery, and the ability to manage indoor climate conditions independently on each floor through zoned control.\", \"case_works_heading\": \"Scope of Works\", \"case_works_list\": \"Premises assessment and thermal load analysis\\nVentilation and air conditioning system design\\nSelection of energy-efficient HVAC equipment for office and server environments\\nDevelopment of a zoned indoor climate control system\", \"case_stats\": \"2,500 m\u00b2 | Total office area\", \"case_quote_source\": \"SpecServis LLC\"}}, \"41481\": {\"title\": \"Cleanroom System for Umedo Group\", \"acf\": {\"case_tag\": \"Cleanrooms \u00b7 Pharmaceuticals\", \"case_subtitle\": \"Design and installation of a cleanroom ventilation system for Umedo Group, one of the largest manufacturers of disposable syringes in Europe.\", \"case_customer\": \"Umedo Group\", \"case_status\": \"Commissioned\", \"case_intro_heading\": \"Ventilation for Medical Device Manufacturing\", \"case_intro_text\": \"Umedo Group is one of the largest manufacturers of disposable syringes in Europe. For the company\u2019s new production site, SpecServis designed and installed a ventilation system for premises with the cleanliness class required for medical device manufacturing.\\nThe project provided a stable indoor climate with controlled air exchange rates, HEPA-grade air filtration, and positive pressure maintenance in clean areas \u2014 critical parameters for compliance with production sanitary standards.\", \"case_works_heading\": \"Scope of Works\", \"case_works_list\": \"Design of a ventilation system for cleanroom-class premises\\nAir exchange rate calculations and selection of HEPA filters\\nInstallation of air handling units and duct systems\\nCommissioning and air cleanliness parameter measurements\", \"case_quote_source\": \"SpecServis LLC\"}}, \"41482\": {\"title\": \"Air Conditioning System Installation for Galafarm\", \"acf\": {\"case_tag\": \"Pharmaceuticals \u00b7 Warehousing\", \"case_subtitle\": \"The specialists of the SpecServis Group carried out the design and installation of ventilation and air conditioning systems for the pharmaceutical storage facilities of Galafarm.\", \"case_customer\": \"Galafarm\", \"case_status\": \"Commissioned\", \"case_intro_heading\": \"Pharmaceutical Warehouse Ventilation and Air Conditioning\", \"case_intro_text\": \"SpecServis specialists designed and installed ventilation and air conditioning systems for Galafarm\u2019s pharmaceutical warehouse facilities, taking into account the strict temperature requirements for pharmaceutical storage.\\nPharmaceutical warehouses require a stable indoor climate throughout the year. To ensure reliable operation, the solution included redundancy for critical equipment as well as automated temperature and humidity control throughout the storage areas.\", \"case_works_heading\": \"Scope of Works\", \"case_works_list\": \"Design of the warehouse ventilation and air conditioning system\\nSelection of equipment in accordance with pharmaceutical storage requirements\\nInstallation of air conditioning systems and automated climate control systems\\nTesting and commissioning\", \"case_quote_source\": \"SpecServis LLC\"}}, \"41483\": {\"title\": \"Air Conditioning and Ventilation Systems for Jack House\", \"acf\": {\"case_tag\": \"HoReCa\", \"case_subtitle\": \"Our specialists designed ventilation and air conditioning systems for the restaurant, kitchen, fitness center, and SPA facilities of the Jack House residential complex.\", \"case_customer\": \"Jack House Residential Complex\", \"case_status\": \"Commissioned\", \"case_intro_heading\": \"Ventilation for the Restaurant, Kitchen, and SPA Area\", \"case_intro_text\": \"SpecServis designed ventilation and air conditioning systems for multiple functional areas of the Jack House residential complex, each with its own indoor climate requirements, including the restaurant, kitchen, fitness center, and SPA facilities.\\nEach area was equipped with a customized engineering solution: high-capacity exhaust ventilation with grease filtration for the kitchen, increased air exchange rates for the fitness center, humidity control for the SPA area, and comfortable air conditioning for the restaurant.\", \"case_works_heading\": \"Scope of Works\", \"case_works_list\": \"Design of a kitchen ventilation system with grease extraction and filtration\\nAirflow and air exchange calculations for the fitness center\\nSelection of humidity control equipment for the SPA area\\nDesign and installation of the restaurant air conditioning system\", \"case_quote_source\": \"SpecServis LLC\"}}, \"41484\": {\"title\": \"Air Conditioning System Installation for the Da Vinci Business Center\", \"acf\": {\"case_tag\": \"Air Conditioning \u00b7 Kyiv\", \"case_subtitle\": \"To ensure a comfortable indoor climate in the modern offices of the Da Vinci Business Center, the SpecServis team installed two VRF systems with a total capacity of 50 kW and 56 ducted indoor units.\", \"case_customer\": \"Da Vinci Business Center\", \"case_status\": \"Commissioned\", \"case_intro_heading\": \"VRF System for a Business Center\", \"case_intro_text\": \"To create a comfortable indoor climate in the modern offices of the Da Vinci Business Center, the SpecServis team installed two VRF systems with a total capacity of 50 kW and 56 ducted indoor units.\\nThe system maintains optimal indoor temperatures throughout the year, ensuring a stable and comfortable environment for both occupants and visitors.\", \"case_works_heading\": \"Scope of Works\", \"case_works_list\": \"Thermal load calculations for the business center\\nSelection of a 50 kW VRF system\\nInstallation of 56 ducted indoor units\\nTesting, commissioning, and system balancing\", \"case_stats\": \"2 | 50 kW VRF systems\\n56 | Ducted indoor units\", \"case_quote_source\": \"SpecServis LLC\"}}, \"41485\": {\"title\": \"Automotive Dealerships\", \"acf\": {\"case_tag\": \"Automotive Dealerships \u00b7 Maintenance\", \"case_subtitle\": \"Maintenance and repair of an Emicon chiller system for Winner Group Ukraine.\", \"case_customer\": \"Winner Group Ukraine\", \"case_status\": \"Ongoing Maintenance Contract\", \"case_intro_heading\": \"Chiller Maintenance Services for Automotive Dealerships\", \"case_intro_text\": \"SpecServis provides repair and scheduled maintenance services for an Emicon chiller system operated by Winner Group Ukraine, a key component of the air conditioning systems serving the company\u2019s automotive dealership network.\\nChillers at automotive dealerships operate almost year-round, maintaining a comfortable indoor environment in showrooms and service areas. Regular preventive maintenance \u2014 including scheduled inspections, refrigerant recharging, and replacement of wear components \u2014 helps prevent unexpected breakdowns and minimizes downtime during peak operating periods.\", \"case_works_heading\": \"Scope of Works\", \"case_works_list\": \"Diagnostics and repair of the Emicon chiller system\\nScheduled maintenance of the refrigeration circuit\\nRefrigerant charging and level monitoring\\nReplacement of wear components and filters\", \"case_quote_source\": \"SpecServis LLC\"}}, \"41486\": {\"title\": \"Medical Laboratories\", \"acf\": {\"case_tag\": \"Healthcare\", \"case_subtitle\": \"Design and installation of ventilation and air conditioning systems for the Dila Medical Laboratory Network.\", \"case_customer\": \"Dila Medical Laboratory Network\", \"case_status\": \"Commissioned\", \"case_intro_heading\": \"Ventilation Systems for a Medical Laboratory Network\", \"case_intro_text\": \"SpecServis designed and installed ventilation and air conditioning systems for the Dila Medical Laboratory Network, meeting the strict environmental requirements of facilities used for storing biological samples and laboratory reagents.\\nBecause stable temperature and humidity conditions are essential for the reliable operation of laboratory equipment and the accuracy of diagnostic testing, the systems were engineered with built-in capacity reserves and designed for continuous 24\/7 operation.\", \"case_works_heading\": \"Scope of Works\", \"case_works_list\": \"Installation of ventilation systems for laboratory facilities\\nInstallation of air conditioning systems meeting precise temperature control requirements\\nTesting and commissioning\\nTechnical support following facility commissioning\", \"case_quote_source\": \"SpecServis LLC\"}}, \"41487\": {\"title\": \"Retail and Business Centers\", \"acf\": {\"case_tag\": \"Business Centers \u00b7 Podil\", \"case_subtitle\": \"Maintenance and repair of a Climaveneta chiller system for the Illinskyi Business Center in Kyiv\u2019s Podil district.\", \"case_customer\": \"Illinskyi Business Center\", \"case_location\": \"Podil District, Kyiv\", \"case_status\": \"Ongoing Maintenance Contract\", \"case_intro_heading\": \"Business Center Chiller Maintenance\", \"case_intro_text\": \"SpecServis provides repair and scheduled maintenance services for the Climaveneta chiller system at the Illinskyi Business Center in Kyiv\u2019s Podil District. The chiller serves as the primary cooling source for the building\u2019s air conditioning system.\\nCentralized chiller systems in business centers operate under continuous load, serving dozens of office spaces simultaneously. Regular technical maintenance and timely repairs are essential to ensuring uninterrupted operation and maintaining a comfortable indoor environment for tenants and visitors.\", \"case_works_heading\": \"Scope of Works\", \"case_works_list\": \"Diagnostics and repair of the Climaveneta chiller system\\nScheduled preventive maintenance\\nMonitoring and adjustment of refrigeration circuit parameters\\nEmergency call-out service and troubleshooting\", \"case_quote_source\": \"SpecServis LLC\"}}, \"41488\": {\"title\": \"Food Retail Chains\", \"acf\": {\"case_tag\": \"Retail\", \"case_subtitle\": \"Maintenance and servicing of refrigeration systems for a national food retail chain.\", \"case_status\": \"Ongoing Maintenance Contract\", \"case_intro_heading\": \"Refrigeration System Maintenance for Retail Chains\", \"case_intro_text\": \"SpecServis delivers comprehensive maintenance services for the refrigeration infrastructure of a national food retail chain, including refrigerated display units in retail stores and centralized refrigeration systems at warehouse and distribution facilities.\\nReliable refrigeration is critical to product quality, food safety, and business continuity. To ensure uninterrupted operation, maintenance services include scheduled preventive inspections, continuous system monitoring, and rapid response to emergency service requests.\", \"case_works_heading\": \"Scope of Works\", \"case_works_list\": \"Scheduled maintenance of refrigeration equipment in retail sales areas\\nDiagnostics and repair of refrigeration systems\\nMonitoring of temperature-controlled storage conditions\\nEmergency response and dispatch support services\", \"case_quote_source\": \"SpecServis LLC\"}}, \"41489\": {\"title\": \"Pharmaceutical Manufacturing\", \"acf\": {\"case_tag\": \"Pharmaceuticals \u00b7 Manufacturing\", \"case_subtitle\": \"Design and installation of ventilation and air conditioning systems for the Umedo Group pharmaceutical manufacturing facility.\", \"case_customer\": \"Umedo Group\", \"case_status\": \"Commissioned\", \"case_intro_heading\": \"Ventilation System for Pharmaceutical Manufacturing\", \"case_intro_text\": \"For Umedo Group \u2014 one of Europe\u2019s largest manufacturers of disposable medical products \u2014 SpecServis designed and installed ventilation and air conditioning systems for the production facilities.\\nPharmaceutical manufacturing requires strict control of air quality, temperature, and humidity throughout all areas of the facility, from production lines to finished goods warehouses. Therefore, the solution was developed in compliance with Good Manufacturing Practice (GMP) requirements, ensuring a stable and controlled environment for manufacturing operations.\", \"case_works_heading\": \"Scope of Works\", \"case_works_list\": \"Design of ventilation systems for production facilities\\nAir exchange calculations for manufacturing lines\\nInstallation of ventilation and air conditioning systems\\nTesting and commissioning in accordance with GMP requirements\", \"case_quote_source\": \"SpecServis LLC\"}}, \"41490\": {\"title\": \"Cheese Production Facilities\", \"acf\": {\"case_tag\": \"Food Industry\", \"case_subtitle\": \"Scheduled maintenance of a MYCOM electric motor and screw compressor at the \u201cPyriatyn\u201d cheese production facility.\", \"case_customer\": \"Pyriatyn Cheese Factory\", \"case_status\": \"Ongoing Maintenance Contract\", \"case_intro_heading\": \"Maintenance of Refrigeration Equipment for Cheese Production\", \"case_intro_text\": \"SpecServis provides scheduled maintenance services for the electric motor and MYCOM screw compressor at the \u201cPyriatyn\u201d Cheese Factory \u2014 key components of the plant\u2019s industrial refrigeration system.\\nMYCOM screw compressors operate continuously, maintaining the temperature conditions required for cheese maturation and storage. Scheduled inspections, oil replacement, and component diagnostics help prevent unplanned downtime and ensure uninterrupted operation of the production line.\", \"case_works_heading\": \"Scope of Works\", \"case_works_list\": \"Scheduled maintenance of the MYCOM screw compressor\\nDiagnostics and maintenance of the electric motor\\nOil and consumables replacement\\nMonitoring and adjustment of refrigeration circuit parameters\", \"case_quote_source\": \"SpecServis LLC\"}}, \"41491\": {\"title\": \"Dairy Processing Plants and Manufacturing Facilities\", \"acf\": {\"case_tag\": \"Food Industry\", \"case_subtitle\": \"Design and installation of a cold storage facility for the \u201cYagotynske for Children\u201d dairy production plant.\", \"case_customer\": \"Yagotynske for Children\", \"case_status\": \"Commissioned\", \"case_intro_heading\": \"Cold Storage Facility for Dairy Production\", \"case_intro_text\": \"For the \u201cYagotynske for Children\u201d dairy plant, SpecServis designed and installed a cold storage facility for dairy products, ensuring strict temperature control throughout every stage of the process \u2014 from production to dispatch.\\nAs infant and children\u2019s dairy products require particularly stringent cold-chain management, the facility is equipped with redundant refrigeration units, an automated monitoring system, and an alarm system that immediately detects and reports any deviations from the specified temperature range.\", \"case_works_heading\": \"Scope of Works\", \"case_works_list\": \"Engineering design of the cold storage facility tailored to production requirements\\nSelection of redundant refrigeration equipment to ensure uninterrupted operation\\nInstallation of the cold room structure and refrigeration units\\nDeployment of automated temperature monitoring and alarm system\", \"case_quote_source\": \"SpecServis LLC\"}}, \"41492\": {\"title\": \"Warehouse Facilities\", \"acf\": {\"case_tag\": \"Warehousing\", \"case_subtitle\": \"Design and installation of ventilation and air conditioning systems for the \u201cGalafarm\u201d pharmaceutical warehouse.\", \"case_customer\": \"Galafarm\", \"case_status\": \"Commissioned\", \"case_intro_heading\": \"Ventilation and Air Conditioning for Warehouse Facilities\", \"case_intro_text\": \"SpecServis designed and installed a ventilation and air conditioning system for the \u201cGalafarm\u201d pharmaceutical warehouse, representing one of our solutions for warehouse facilities with stringent temperature-control requirements.\\nWarehouses are characterized by large air volumes and uneven heat loads caused by the movement of goods and the operation of equipment. To ensure stable indoor conditions, the system was engineered with additional capacity reserves and the ability to provide zoned climate control across different areas of the facility.\", \"case_works_heading\": \"Scope of Works\", \"case_works_list\": \"Site survey of the warehouse facilities and load calculations\\nDesign of the ventilation and air conditioning system\\nInstallation of equipment and air duct systems\\nTesting, commissioning, and system start-up\", \"case_quote_source\": \"SpecServis LLC\"}}, \"41493\": {\"title\": \"Breweries and Beer Production Facilities\", \"acf\": {\"case_tag\": \"Brewing\", \"case_subtitle\": \"Baltimore condenser refurbishment and replacement of two condenser sections on a GEA Grasso refrigeration system at the \u201cRohan\u201d Brewery.\", \"case_customer\": \"Rohan Brewery\", \"case_status\": \"Commissioned\", \"case_intro_heading\": \"Brewery Refrigeration Equipment Repair\", \"case_intro_text\": \"For the \u201cRohan\u201d Brewery, SpecServis carried out the repair of a Baltimore condenser and the replacement of two sections of a GEA Grasso refrigeration system \u2014 a critical component of the brewery\u2019s cooling infrastructure.\\nRefrigeration systems at breweries maintain the precise temperatures required for fermentation and beer storage. Any equipment downtime can have a direct impact on the production cycle, so the repair work was completed promptly, minimizing disruption to brewery operations.\", \"case_works_heading\": \"Scope of Works\", \"case_works_list\": \"Comprehensive diagnostics of the Baltimore condenser\\nRepair works and restoration of condenser operating parameters\\nReplacement of two sections of the GEA Grasso refrigeration unit\\nPost-repair testing, commissioning, and performance verification\", \"case_quote_source\": \"SpecServis LLC\"}}};\nfunction trCase(item){var t=CTR[String(item.id)];if(t){if(t.title&&item.title)item.title.rendered=t.title;if(t.acf){item.acf=item.acf||{};for(var k in t.acf){item.acf[k]=t.acf[k];}}}return item;}\nfunction mapCase(item){\n    var acf = item.acf || {};\n    var computed = item.case_computed || {};\n    var videoUrl = computed.video_url || '';\n    var horizontal = !!acf.case_video_horizontal;\n    var heroVideo = videoUrl ? {type:'mp4', url:videoUrl, horizontal:horizontal} : (acf.case_video_youtube ? {type:'youtube', id:ytId(acf.case_video_youtube), horizontal:horizontal} : null);\n    var cover = computed.cover || '';\n\n    var blocks = [];\n    if(acf.case_intro_text){\n      blocks.push({ type:'text', h: acf.case_intro_heading||'', p: acf.case_intro_text.split('\\n').filter(Boolean) });\n    }\n    if(acf.case_works_list){\n      blocks.push({ type:'list', h: acf.case_works_heading||'', items: acf.case_works_list.split('\\n').filter(Boolean) });\n    }\n    if(acf.case_stats){\n      var statItems = acf.case_stats.split('\\n').filter(Boolean).map(function(line){\n        var parts = line.split('|');\n        return { n:(parts[0]||'').trim(), l:(parts[1]||'').trim() };\n      });\n      if(statItems.length) blocks.push({ type:'stats', items:statItems });\n    }\n    if(computed.gallery && computed.gallery.length){\n      blocks.push({ type:'gallery', h:'Photo Gallery', images: computed.gallery.map(function(src,i){ return {src:src, wide:i===0}; }) });\n    }\n\n    var meta = [];\n    if(acf.case_customer) meta.push({l:'Client', v:acf.case_customer});\n    if(acf.case_location) meta.push({l:'Location', v:acf.case_location});\n    if(acf.case_year) meta.push({l:'Year', v:acf.case_year});\n    if(acf.case_status) meta.push({l:'Status', v:acf.case_status});\n\n    return {\n      id: item.slug,\n      tag: acf.case_tag || '',\n      title: (item.title && item.title.rendered) || '',\n      shortTitle: SS_SHORT_TITLES[item.slug] || ((item.title && item.title.rendered) || ''),\n      subtitle: acf.case_subtitle || '',\n      heroVideo: heroVideo,\n      heroImage: cover,\n      cover: cover,\n      meta: meta,\n      detailVideo: heroVideo,\n      detailVideoPoster: cover,\n      blocks: blocks,\n      quote: acf.case_quote ? {text:acf.case_quote, src:acf.case_quote_source||''} : null\n    };\n  }\n\n  \/* \u2500\u2500\u2500 HERO \u2500\u2500\u2500 *\/\n  var hi = 0, heroTimer;\n  var slidesWrap = document.getElementById('ssHeroSlides');\n  var dotsWrap = document.getElementById('ssHeroDots');\n  var grid = document.getElementById('ssGrid');\n\n  function renderHeroText(i){\n    var c = SS_DATA[i];\n    document.getElementById('heroTitle').textContent = c.shortTitle;\n    document.getElementById('heroSub').textContent = c.subtitle;\n    document.getElementById('heroCur').textContent = String(i+1).padStart(2,'0');\n    document.getElementById('heroCta').onclick = function(){ ssOpenDetail(c.id); };\n    \/* re-trigger anim *\/\n    ['heroTitle','heroSub'].forEach(function(id){\n      var el = document.getElementById(id);\n      el.style.animation='none'; void el.offsetWidth; el.style.animation='';\n    });\n  }\n\n  window.ssHeroGo = function(i){\n    var slides = slidesWrap.querySelectorAll('.hero-slide');\n    var dots = dotsWrap.querySelectorAll('.hero-dot');\n    slides[hi].classList.remove('active');\n    dots[hi].classList.remove('active');\n    hi = (i + SS_DATA.length) % SS_DATA.length;\n    slides[hi].classList.add('active');\n    dots[hi].classList.add('active');\n    renderHeroText(hi);\n    resetHeroTimer();\n  };\n  window.ssHeroNext = function(){ ssHeroGo(hi+1); };\n  window.ssHeroPrev = function(){ ssHeroGo(hi-1); };\n\n  function resetHeroTimer(){\n    clearInterval(heroTimer);\n    if(SS_DATA.length>1) heroTimer = setInterval(function(){ ssHeroNext(); }, 8000);\n  }\n\n  function renderCases(){\n    SS_DATA.forEach(function(c, i){\n      var slide = document.createElement('div');\n      slide.className = 'hero-slide' + (i===0?' active':'');\n      \/* slider = static images only (case covers), no video.\n         Try the full-size original (no -WxH suffix), fall back to the sized copy. *\/\n      if(c.heroImage){\n        var fullSrc = c.heroImage.replace(\/-\\d+x\\d+(\\.\\w+)$\/, '$1');\n        slide.innerHTML = '<img decoding=\"async\" class=\"hero-img\" src=\"'+fullSrc+'\" alt=\"\" onerror=\"if(this.src!==\\''+c.heroImage+'\\'){this.src=\\''+c.heroImage+'\\'}else{this.style.opacity=0}\">';\n      } else {\n        slide.innerHTML = '<div style=\"position:absolute;inset:0;background:linear-gradient(135deg,#29264B,#252A83)\"><\/div>';\n      }\n      slidesWrap.appendChild(slide);\n\n      var dot = document.createElement('div');\n      dot.className = 'hero-dot' + (i===0?' active':'');\n      dot.onclick = function(){ ssHeroGo(i); };\n      dotsWrap.appendChild(dot);\n    });\n\n    document.getElementById('heroTot').textContent = ' \/ ' + String(SS_DATA.length).padStart(2,'0');\n    if(SS_DATA.length) renderHeroText(0);\n    resetHeroTimer();\n\n    \/* \u2500\u2500\u2500 GRID \u2500\u2500\u2500 *\/\n    SS_DATA.forEach(function(c, i){\n      var card = document.createElement('div');\n      card.className = 'case-card';\n      card.onclick = function(){ ssOpenDetail(c.id); };\n      card.innerHTML =\n        '<img decoding=\"async\" class=\"case-card-bg\" src=\"'+c.cover+'\" alt=\"'+c.title+'\" onerror=\"this.style.opacity=0\">'+\n        '<div class=\"case-card-shade\"><\/div>'+\n        '<div class=\"case-card-num\">'+String(i+1).padStart(2,'0')+' \u2014<\/div>'+\n        '<div class=\"case-card-arrow\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"2\"><path d=\"M7 17L17 7M17 7H8M17 7V16\"\/><\/svg><\/div>'+\n        '<div class=\"case-card-content\">'+\n          '<span class=\"case-card-tag\">'+c.tag+'<\/span>'+\n          '<div class=\"case-card-title\">'+c.shortTitle+'<\/div>'+\n          '<div class=\"case-card-sub\">'+c.subtitle+'<\/div>'+\n        '<\/div>';\n      grid.appendChild(card);\n    });\n  }\n\n  fetch('\/wp-json\/wp\/v2\/cases?per_page=50&orderby=date&order=asc')\n    .then(function(r){ return r.json(); })\n    .then(function(items){\n      SS_DATA = (Array.isArray(items) ? items : []).map(trCase).map(mapCase);\n      renderCases();\n    })\n    .catch(function(err){ console.error('ssCases: failed to load cases', err); });\n\n  \/* \u2500\u2500\u2500 DETAIL \u2500\u2500\u2500 *\/\n  window.ssOpenDetail = function(id){\n    var c = SS_DATA.find(function(x){ return x.id===id; });\n    if(!c) return;\n    var body = document.getElementById('ssDetailBody');\n\n    var html = '';\n    \/* hero *\/\n    html += '<div class=\"d-hero\">';\n    html += '<img decoding=\"async\" class=\"d-hero-bg\" src=\"'+(c.heroImage||c.cover)+'\" alt=\"\" onerror=\"this.style.display=\\'none\\'\">';\n    html += '<div class=\"d-hero-shade\"><\/div>';\n    html += '<div class=\"d-hero-inner\">';\n    html += '<span class=\"d-hero-tag\">'+c.tag+'<\/span>';\n    html += '<h1 class=\"d-hero-title\">'+c.title+'<\/h1>';\n    if(c.meta){\n      html += '<div class=\"d-hero-meta\">';\n      c.meta.forEach(function(m){ html += '<div class=\"d-hero-meta-item\"><div class=\"l\">'+m.l+'<\/div><div class=\"v\">'+m.v+'<\/div><\/div>'; });\n      html += '<\/div>';\n    }\n    html += '<\/div><\/div>';\n\n    \/* scroll layout *\/\n    html += '<div class=\"d-scroll\"><div class=\"d-scroll-left\">';\n    (c.blocks||[]).forEach(function(b){\n      if(b.type==='text'){\n        html += '<div class=\"d-block\">';\n        if(b.label) html += '<span class=\"d-block-label\">'+b.label+'<\/span>';\n        if(b.h) html += '<h3>'+b.h+'<\/h3>';\n        (b.p||[]).forEach(function(par){ html += '<p>'+par+'<\/p>'; });\n        html += '<\/div>';\n      }\n      else if(b.type==='stats'){\n        html += '<div class=\"d-block\"><div class=\"d-stats\">';\n        b.items.forEach(function(s){ html += '<div class=\"d-stat\"><div class=\"n\">'+s.n+'<\/div><div class=\"l\">'+s.l+'<\/div><\/div>'; });\n        html += '<\/div><\/div>';\n      }\n      else if(b.type==='list'){\n        html += '<div class=\"d-block\">';\n        if(b.label) html += '<span class=\"d-block-label\">'+b.label+'<\/span>';\n        if(b.h) html += '<h3>'+b.h+'<\/h3>';\n        html += '<ul class=\"d-list\">';\n        b.items.forEach(function(li){ html += '<li>'+li+'<\/li>'; });\n        html += '<\/ul><\/div>';\n      }\n      else if(b.type==='gallery'){\n        html += '<div class=\"d-block\">';\n        if(b.label) html += '<span class=\"d-block-label\">'+b.label+'<\/span>';\n        if(b.h) html += '<h3>'+b.h+'<\/h3>';\n        html += '<div class=\"d-gallery\" data-gallery-slider>';\n        b.images.forEach(function(im){ html += '<img decoding=\"async\" class=\"'+(im.wide?'wide':'')+'\" src=\"'+im.src+'\" onclick=\"ssLightbox(this.src)\" onerror=\"this.style.display=\\'none\\'\">'; });\n        html += '<\/div>';\n        html += '<div class=\"d-gallery-dots\" data-gallery-dots><\/div>';\n        html += '<\/div>';\n      }\n    });\n    html += '<\/div>';\n\n    \/* sticky video right *\/\n    html += '<div class=\"d-scroll-right\"><div class=\"d-video-wrap\">';\n    html += videoEmbed(c.detailVideo, c.detailVideoPoster, true, true, true);\n    html += '<\/div><\/div><\/div>';\n\n    \/* drawings *\/\n    if(c.drawings){\n      html += '<div class=\"d-drawings\"><div class=\"d-drawings-inner\">';\n      html += '<span class=\"d-block-label\">'+c.drawings.label+'<\/span>';\n      html += '<h3>'+c.drawings.h+'<\/h3>';\n      html += '<div class=\"d-draw-grid\" data-slider>';\n      c.drawings.items.forEach(function(d){\n        html += '<div class=\"d-draw\"><img decoding=\"async\" src=\"'+d.src+'\" onclick=\"ssLightbox(this.src)\" onerror=\"this.parentNode.style.display=\\'none\\'\"><div class=\"cap\">'+d.cap+'<\/div><\/div>';\n      });\n      html += '<\/div>';\n      \/* mobile dots *\/\n      html += '<div class=\"d-draw-dots\" data-dots><\/div>';\n      html += '<\/div><\/div>';\n    }\n\n    \/* quote *\/\n    if(c.quote){\n      html += '<div class=\"d-quote\"><blockquote>\u00ab'+c.quote.text+'\u00bb<\/blockquote>';\n      if(c.quote.src) html += '<div class=\"src\">\u2014 '+c.quote.src+'<\/div>';\n      html += '<\/div>';\n    }\n\n    \/* CONTACTS \u2014 \u0437\u0430\u043c\u0456\u0441\u0442\u044c \u0447\u0435\u0440\u0432\u043e\u043d\u043e\u0457 \u043a\u043d\u043e\u043f\u043a\u0438 *\/\n    html += '<div class=\"d-contacts\">';\n    html += '<h3>Do you have <em>a similar project<\/em>?<\/h3>';\n    html += '<div class=\"d-contacts-grid\">';\n    html += '<a class=\"d-contact\" href=\"tel:+380800403911\">'+\n      '<div class=\"d-contact-icon\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"2\"><path d=\"M22 16.92v3a2 2 0 01-2.18 2 19.79 19.79 0 01-8.63-3.07 19.5 19.5 0 01-6-6 19.79 19.79 0 01-3.07-8.67A2 2 0 014.11 2h3a2 2 0 012 1.72 12.84 12.84 0 00.7 2.81 2 2 0 01-.45 2.11L8.09 9.91a16 16 0 006 6l1.27-1.27a2 2 0 012.11-.45 12.84 12.84 0 002.81.7A2 2 0 0122 16.92z\"\/><\/svg><\/div>'+\n      '<div class=\"d-contact-text\"><div class=\"d-contact-label\">Call us<\/div><div class=\"d-contact-value\">0 800 403 911<\/div><\/div>'+\n    '<\/a>';\n    html += '<a class=\"d-contact\" href=\"mailto:info@specservis.com.ua\">'+\n      '<div class=\"d-contact-icon\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"2\"><path d=\"M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z\"\/><polyline points=\"22,6 12,13 2,6\"\/><\/svg><\/div>'+\n      '<div class=\"d-contact-text\"><div class=\"d-contact-label\">Email us<\/div><div class=\"d-contact-value\">info@specservis.com.ua<\/div><\/div>'+\n    '<\/a>';\n    html += '<\/div><\/div>';\n\n    \/* RELATED CASES \u2014 \u0432\u0441\u0456 \u043f\u0440\u043e\u0454\u043a\u0442\u0438 \u044f\u043a \u043d\u0430 \u0433\u043e\u043b\u043e\u0432\u043d\u0456\u0439 *\/\n    html += '<div class=\"d-related\">';\n    html += '<div class=\"d-related-head\">';\n    html += '<div class=\"d-related-label\">All Projects<\/div>';\n    html += '<h3>See Also<\/h3>';\n    html += '<\/div>';\n    html += '<div class=\"d-related-grid\">';\n    SS_DATA.forEach(function(r){\n      var isCurrent = r.id === c.id;\n      html += '<div class=\"d-related-card'+(isCurrent?' d-related-current':'')+'\" onclick=\"'+(isCurrent?'':' ssOpenDetail(\\''+r.id+'\\')')+'\"'+( isCurrent?' style=\"cursor:default\"':'')+'>'+\n        '<img decoding=\"async\" src=\"'+r.cover+'\" alt=\"'+r.title+'\" onerror=\"this.style.opacity=0\">'+\n        '<div class=\"d-related-card-shade\"><\/div>'+\n        (isCurrent ? '<div class=\"d-related-current-badge\">Now viewing<\/div>' : '<div class=\"d-related-card-arrow\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"2\"><path d=\"M7 17L17 7M17 7H8M17 7V16\"\/><\/svg><\/div>')+\n        '<div class=\"d-related-card-content\">'+\n          '<span class=\"d-related-card-tag\">'+r.tag+'<\/span>'+\n          '<div class=\"d-related-card-title\">'+r.shortTitle+'<\/div>'+\n        '<\/div>'+\n      '<\/div>';\n    });\n    \/* \u044f\u043a\u0449\u043e \u043a\u0435\u0439\u0441\u0456\u0432 \u043c\u0435\u043d\u0448\u0435 3 \u2014 \u0434\u043e\u0434\u0430\u0454\u043c\u043e \u043f\u043b\u0435\u0439\u0441\u0445\u043e\u043b\u0434\u0435\u0440\u0438 \u0434\u043e 3 *\/\n    var placeholders = 3 - SS_DATA.length;\n    for(var k=0; k<placeholders; k++){\n      html += '<div class=\"d-related-card d-related-placeholder\">'+\n        '<div class=\"d-related-card-shade\"><\/div>'+\n        '<div class=\"d-related-placeholder-inner\">'+\n          '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"rgba(255,255,255,.5)\" stroke-width=\"1.5\" style=\"width:48px;height:48px;margin-bottom:16px\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><path d=\"M12 6v6l4 2\"\/><\/svg>'+\n          '<div class=\"d-related-placeholder-title\">Coming soon<\/div>'+\n          '<div class=\"d-related-placeholder-sub\">In preparation<\/div>'+\n        '<\/div>'+\n      '<\/div>';\n    }\n    html += '<\/div><\/div>';\n\n    body.innerHTML = html;\n    document.getElementById('ssDetail').classList.add('open');\n    document.getElementById('ssDetailClose').style.display = 'flex';\n    document.getElementById('ssDetail').scrollTop = 0;\n    document.body.style.overflow = 'hidden';\n\n    \/* \u2500\u2500\u2500 SLIDERS INIT (gallery + drawings, mobile) \u2500\u2500\u2500 *\/\n    setTimeout(function(){\n      \/* GALLERY *\/\n      body.querySelectorAll('[data-gallery-slider]').forEach(function(sl){\n        var db = sl.parentNode.querySelector('[data-gallery-dots]');\n        if(!db) return;\n        var imgs = sl.querySelectorAll('img');\n        if(imgs.length < 2){ db.style.display='none'; return; }\n        db.innerHTML = '';\n        imgs.forEach(function(_, i){\n          var d = document.createElement('span');\n          if(i===0) d.classList.add('active');\n          d.onclick = function(){ imgs[i].scrollIntoView({behavior:'smooth',inline:'center',block:'nearest'}); };\n          db.appendChild(d);\n        });\n        sl.addEventListener('scroll', function(){\n          var dots = db.querySelectorAll('span');\n          var idx = Math.round(sl.scrollLeft \/ ((imgs[0]?imgs[0].offsetWidth:sl.clientWidth) + 12));\n          dots.forEach(function(d,i){ d.classList.toggle('active', i===idx); });\n        }, {passive:true});\n      });\n      \/* DRAWINGS *\/\n      var slider = body.querySelector('[data-slider]');\n      var dotsBox = body.querySelector('[data-dots]');\n      if(!slider || !dotsBox) return;\n      var slides = slider.querySelectorAll('.d-draw');\n      if(slides.length < 2){ dotsBox.style.display='none'; return; }\n      dotsBox.innerHTML = '';\n      slides.forEach(function(_, i){\n        var d = document.createElement('span');\n        if(i===0) d.classList.add('active');\n        d.onclick = function(){ slides[i].scrollIntoView({behavior:'smooth',inline:'center',block:'nearest'}); };\n        dotsBox.appendChild(d);\n      });\n      slider.addEventListener('scroll', function(){\n        var dots = dotsBox.querySelectorAll('span');\n        var idx = Math.round(slider.scrollLeft \/ (slides[0].offsetWidth + 16));\n        dots.forEach(function(d,i){ d.classList.toggle('active', i===idx); });\n      }, {passive:true});\n    }, 50);\n  };\n\n  window.ssCloseDetail = function(){\n    document.getElementById('ssDetail').classList.remove('open');\n    document.getElementById('ssDetailClose').style.display = 'none';\n    document.body.style.overflow = '';\n    setTimeout(function(){ document.getElementById('ssDetailBody').innerHTML=''; }, 500);\n  };\n\n  \/* lightbox *\/\n  window.ssLightbox = function(src){\n    document.getElementById('ssLightboxImg').src = src;\n    document.getElementById('ssLightbox').classList.add('open');\n  };\n  window.ssCloseLightbox = function(){\n    document.getElementById('ssLightbox').classList.remove('open');\n  };\n\n  document.addEventListener('keydown', function(e){\n    if(e.key==='Escape'){\n      if(document.getElementById('ssLightbox').classList.contains('open')) ssCloseLightbox();\n      else if(document.getElementById('ssDetail').classList.contains('open')) ssCloseDetail();\n    }\n  });\n})();\n<\/script>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Creating a reliablefuture for Ukraine Bomb shelters and medical facilities, schools and government institutions, major renovations and complex engineering systems \u2014 each completed facility is a testament to the depth of our expertise and responsibility to the country. PROJECT GALLERY Our projects SpecServis construction and engineering company has become a reliable partner of the state&hellip;<\/p>\n","protected":false},"author":1,"featured_media":41136,"parent":0,"menu_order":1,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"_acf_changed":false,"_yoast_wpseo_focuskw":"","_yoast_wpseo_title":"Successfully implemented more than 1,000 projects - portfolio","_yoast_wpseo_metadesc":"Bomb shelters and medical facilities, schools and government institutions, major renovations and complex engineering systems. Successfully implemented more than 1,000 projects.","footnotes":""},"class_list":["post-41131","page","type-page","status-publish","has-post-thumbnail","hentry"],"acf":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/specservis.com.ua\/en\/wp-json\/wp\/v2\/pages\/41131","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/specservis.com.ua\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/specservis.com.ua\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/specservis.com.ua\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/specservis.com.ua\/en\/wp-json\/wp\/v2\/comments?post=41131"}],"version-history":[{"count":0,"href":"https:\/\/specservis.com.ua\/en\/wp-json\/wp\/v2\/pages\/41131\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/specservis.com.ua\/en\/wp-json\/wp\/v2\/media\/41136"}],"wp:attachment":[{"href":"https:\/\/specservis.com.ua\/en\/wp-json\/wp\/v2\/media?parent=41131"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}