/* ======================================================================
   SOBSTVENNYJ SLOJ PRAVOK — acoustic-solutions.co.uk
   Fajly temy iz arhiva NE trogaem, vse pravki tolko zdes.
   ====================================================================== */

/* ---------- KONTRAST ----------
   Tema ispolzuet #999 dlya menyu, dat, tegov i podpisej:
     #999 na #fff    = 2.85:1   (nado 4.5)
     #999 na #f9f9f9 = 2.71:1
   Temneem do #595959 — eto 7.0:1 na belom. Menyaem TOLKO svetlotu,
   ottenok seryj ostaetsya, oblik temy ne menyaetsya. */
.nav-holder nav li a,
.main-menu a,
.post-date,
.post-comments,
.tags-widget a,
.post-tags a,
.widget_tag_cloud a,
.balkon_sec-title span,
.grid-item a,
.grid-item span,
.folio-info a,
.testi-item .testi-author,
.breadcrumbs a,
.post-author,
.post-author a {
    color: #595959;
}

/* Ssylki pri navedenii — zametno temnee, chtoby otlichie bylo vidno */
.nav-holder nav li a:hover,
.post-tags a:hover,
.tags-widget a:hover,
.grid-item a:hover {
    color: #1f1f1f;
}

/* «scroll down» byl chernym na temnom (#000 na #292929 = 1.44) */
.scroll-down span,
.scroll-nav span,
.hero-wrap .scroll-down,
.scroll-down-wrap span {
    color: #e8e8e8;
}

/* ---------- PLENKA POD POTERYANNYM FONOM ----------
   У elementov <div class="bg" data-bg="..."> fotografii v arhive net.
   Ryadom lezhit <div class="overlay"> so sploshnym chernym — bez foto
   ona prevrashchaetsya v chernyj pryamougolnik. Gasim ee tam, gde
   podlozhki net. Na plitkah portfolio plenka nuzhna — ih ne trogaem. */
section.balkon_sec > .overlay,
.parallax-section > .overlay,
.header-section > .overlay {
    background-color: transparent !important;
}

/* ---------- MELKIJ SHRIFT NA TELEFONE ----------
   Podpisi plitok i knopki shli 10-11px — na uzkom ekrane ne chitaetsya. */
@media (max-width: 767px) {
    .balkon_sec-title span,
    .grid-item a,
    .grid-item span,
    .btn.float-btn,
    .post-date,
    .post-comments {
        font-size: 13px;
    }
}

/* ---------- DOBOR: selektory vzyaty iz zhivogo DOM ----------
   Pervye popytki ne srabotali — ya ugadyvala klassy. Vzyala cepochku
   predkov v brauzere. Sr. [[feedback-no-guessing]]. */

/* «scroll down»: chernyj tekst na temnoj shapke (#000 na #292929 = 1.44) */
.custom-scroll-link span,
.sect-scroll-link span,
.section-title .custom-scroll-link {
    color: #e8e8e8;
}

/* daty i kommentarii v bokovyh blokah novostej */
.widget-posts-date .post-comments,
.widget-posts-date .post-date,
.widget-posts-descr .post-comments,
ul li .post-comments {
    color: #595959;
}

/* tegi pod statyoj: .pr-tags li a — #999 na #f9f9f9 = 2.71 */
.pr-tags li a,
.pr-tags a,
.blog-text .pr-tags a {
    color: #595959;
}
.pr-tags li a:hover { color: #1f1f1f; }

/* blok  na /about-us: fioletovyj fon #6f3778, tekst chernyj
   (2.49:1). Fon zadan temoj — znachit tekst dolzhen byt svetlyj. */
.wpb_text_column.standout,
.wpb_text_column.standout p,
.wpb_text_column.standout a,
[style*="6f3778"] p,
[style*="6f3778"] {
    color: #ffffff;
}
.wpb_text_column.standout { padding: 22px 24px; }
.wpb_text_column.standout p { max-width: 1100px; margin: 0 auto; line-height: 1.6; }

/* Nomera v tochkah karuseli.
   ★Moya zhe pravka dala obratnyj effekt: #595959 horosho chitaetsya
   na belom (7.0:1), no na TEMNOJ sekcii otzyvov (#292929) daet 2.08.
   Poetomu cvet zavisit ot fona: na svetlom temnyj, na temnom svetlyj. */
.swiper-pagination-bullet,
.swiper-pagination span {
    color: #595959;
}
.parallax-section .swiper-pagination span,
.header-section .swiper-pagination span,
.testilider .swiper-pagination span,
section[class*="dark"] .swiper-pagination span,
.testimonials-slider-holder .swiper-pagination span {
    color: #e8e8e8;
}

/* Na telefone ssylki i knopki shli 10-11px — melko dlya chteniya.
   Podnimaem do 13px TOLKO na uzkih ekranah, dizajn ne menyaem. */
@media (max-width: 767px) {
    .content-holder a,
    .grid-item a,
    .btn,
    .btn.float-btn,
    .pr-tags a,
    .post-date,
    .post-comments,
    .balkon_sec-title span {
        font-size: 13px;
    }
}


/* ---------- PLITKI TOVAROV: dovodka ----------
   Posle snyatiya dublej ostalos tri nedochota, vidnyh na skrinshote:
   1) v plitke stoit LOGOTIP (AAS_2020-Website.png) — u etih tovarov
      sobstvennogo foto net ni na sajte, ni v arhive. Logotip v roli
      foto tovara vyglyadit polomkoj, poetomu pryachem ego;
   2) pod spiskom visit indikator zagruzki AJAX, kotoryj nikogda
      ne dozhdetsya otveta;
   3) plitki idut v stroku vo vsyu shirinu — raskladyvaem setkoj. */

/* 1. logotip v roli foto tovara */
.grid-item img[src*=AAS_2020],
.gallery-items img[src*=AAS_2020],
.folio-info img[src*=AAS_2020] { display: none !important; }

/* 2. vechnyj indikator zagruzki */
.vc_grid-loading,
.vc_grid .vc_grid-loading,
.vc-gitem-zone-img-blur,
.grid-loading,
#loader-wrapper .loader-section { display: none !important; }

/* 3. setka: plitki v ryad po shirine ekrana.
   ★Snachala ya napisala pravilo shiroko — i ono popalo na stranicy
   kategorij portfolio, gde u temy SVOYA klad ka (masonry): kartochki
   razъehalis, foto vylezlo za plitku. Ogranichivaem oblast: tolko
   spiski tovarov vnutri .post-container, bez stranic-galerej. */
.post-container > .gallery-items,
.display-page .post-container .gallery-items {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
    gap: 22px;
    align-items: start;
    margin-top: 28px;
}
.post-container > .gallery-items > .grid-item,
.display-page .post-container .gallery-items > .grid-item {
    width: auto !important;
    position: relative !important;
    left: auto !important;
    top: auto !important;
    border: 1px solid #e6e6e6;
    padding: 20px 22px;
    background: #fff;
}
/* strelka-ssylka v plitke: pod tekstom, a ne v dalekom prave */
.post-container .gallery-items .grid-item a[class*=btn],
.display-page .gallery-items .grid-item a[class*=btn] {
    margin-top: 10px;
}

/* ---------- PUSTYE OBERTKI ----------
   Posle snyatiya AJAX-setki ostalis kontejnery bez soderzhimogo:
   vc_row na 400px i sekcii na 141px, kotorye prosto zanimayut mesto.
   Schlopyvaem ih, no TOLKO kogda vnutri net ni teksta, ni kartinki
   (:has proveryaet eto nadezhnee, chem ugadyvanie po klassu). */
.vc_row:not(:has(img)):not(:has(p)):not(:has(h1,h2,h3,h4)):not(:has(a[href])),
.balkon_sec:not(:has(img)):not(:has(p)):not(:has(h1,h2,h3,h4)):not(:has(a[href])) {
    display: none;
}

/* zapas dlya brauzerov bez :has() — ubiraem hotya by vnutrennie otstupy */
@supports not selector(:has(*)) {
    .vc_row-fluid:empty,
    .balkon_sec:empty { display: none; }
}

/* ---------- GALEREI PORTFOLIO: raskladka bez skripta ----------
   Plitki .gallery-item stoyat position:absolute — ih rasstavlyal
   skript Isotope, kotorogo v arhive net. Bez nego kontejner ne znaet
   svoyu vysotu, kartochki naezzhayut drug na druga, a foto vylezaet
   za plitku (vidno na /portfolio_cat/*).

   Vozvrashchaem v potok i raskladyvaem setkoj — CSS spravlyaetsya sam. */
.gallery-items {
    display: grid !important;
    grid-template-columns: repeat(auto-fit, minmax(290px, 1fr));
    gap: 24px;
    height: auto !important;
    position: relative;
}
.gallery-items > .gallery-item,
.gallery-items > .grid-item {
    position: relative !important;
    left: auto !important;
    top: auto !important;
    width: auto !important;
    height: auto !important;
    margin: 0 !important;
}
/* dve kolonki na uzkom ekrane, odna na telefone */
@media (max-width: 1023px) {
    .gallery-items { grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); }
}

/* foto plitki: rovnaya vysota, chtoby ryad ne prygal */
.gallery-items .gallery-item img,
.gallery-items .grid-item img {
    display: block;
    width: 100% !important;
    height: 230px !important;
    object-fit: cover;
}

/* podpis pod foto */
.gallery-items .grid-item {
    border: 1px solid #e6e6e6;
    border-top: 0;
    background: #fff;
}

/* ---------- «scroll down» ----------
   Ssylka stoit position:absolute i vyezzhaet za nizhnij kraj temnoj
   shapki: belyj blok nizhe naezzhaet na nee (vidno na /portfolio_cat/*).
   Vozvrashchaem v potok — ona i tak idet poslednej v svoem bloke. */
.section-title .custom-scroll-link,
.header-section .custom-scroll-link,
.sect-scroll-link {
    position: relative !important;
    bottom: auto !important;
    left: auto !important;
    display: inline-flex;
    align-items: center;
    gap: 10px;
    margin-top: 26px;
}

/* ---------- PUSTOJ SLOJ FONA NA SHAPKE ----------
   Pod temnoj shapkoj vidneetsya belyj pryamougolnik: eto sloj,
   v kotoryj skript dolzhen byl podstavit fonovoe foto iz data-bg.
   Fotografii v arhive net, sloj ostalsya belym i perekryvaet shapku.
   Delaem ego prozrachnym — togda viden fon sekcii. */
.header-section .bg,
.parallax-section .bg,
.header-section > .bg[data-bg],
.balkon_page_head_sec .bg {
    background-color: transparent !important;
}
/* dekorativnyj holst s tochkami poverh shapki — on zhe daet belyj ottenok */
.partcile-dec canvas { opacity: .35; }

/* Knopki v bannerah i plitkah na telefone shli 10.2-11px.
   Selektory vzyaty iz DOM: .hero-item a.btn, a ne ugadany. */
@media (max-width: 767px) {
    .hero-item a.btn,
    .hero-item .btn,
    .grid-item a,
    .gallery-item a,
    .folio-info a,
    a.btn.float-btn {
        font-size: 13px !important;
    }
}

/* Metki kategorij v lente novostej: 11px na telefone. */
@media (max-width: 767px) {
    .wppsac-post-categories-list a,
    .wppsac-post-categories-list li,
    .wppsac-post-date,
    .wppsac-post-content a {
        font-size: 13px !important;
    }
}

/* ---------- PUSTOJ KONTEJNER AJAX-SETKI ----------
   vc_grid-container derzhit 380-538px pustoty: v nego skript dolzhen byl
   zagruzit tovary, no v statike zagruzhat nekomu. Vnutri net ni plitok,
   ni kartinok — tolko pustaya obolochka. Ubiraem ee, chtoby stranica
   ne obryvalas bolshoj dyroj pered knopkoj «Back». */
.vc_grid-container:not(:has(.vc_grid-item)),
.vc_grid:not(:has(.vc_gitem-zone)),
.vc_grid-container-wrapper:not(:has(img)):not(:has(h3)):not(:has(h4)) {
    display: none !important;
}

@supports not selector(:has(*)) {
    .vc_grid-container:empty,
    .vc_grid:empty { display: none !important; }
}

/* ---------- PUSTOTA V vc_row ----------
   Roditel 503px, a edinstvennyj rebenok — 56px. Raznicu derzhit
   float vnutri, ne uchtennyj v potoke (klassicheskij sluchaj,
   uzhe vstrechalsya na drugom sajte — sr. zapis pro float v podvale).
   Lechitsya display:flow-root na RODITELE, a ne clear u soseda. */
.vc_row.wpb_row.vc_row-fluid {
    display: flow-root;
}
/* kolonka vnutri tozhe dolzhna soderzhat svoi float-y */
.wpb_column > .vc_column-inner > .wpb_wrapper {
    display: flow-root;
}

/* ======================================================================
   PODVAL — acoustic-solutions.co.uk
   ====================================================================== */

/* ---------- P0: podval ne viden na desktope ----------
   Tema `balkon` prizhimaet podval k nizu okna (position:fixed), a mesto
   pod nego rezerviroval element .height-emulator, kotoryj stavil skript.
   Skripta v staticheskoj kopii net -> na shirine >=1065px podval lezhit
   POD kontentom i posetitel ego ne vidit voobshche.
   Proverila zamerom: position:fixed, document.elementFromPoint v centre
   podvala vozvrashchaet <p> stranicy, prokrutki net (scrollHeight == okno).
   Na <=1064px tema sama perevodit ego v potok — delaem tak zhe vsegda. */
footer.content-footer {
    position: relative !important;
    left: 0 !important;
    right: auto !important;
    bottom: auto !important;
    float: left;
    width: 100%;
    padding-top: 0;
}

/* belaya plashka na pravye 50%: nuzhna byla fiksirovannomu podvalu,
   v potoke ona tolko perekryvaet soderzhimoe */
.content-footer:before { display: none; }

/* ---------- Otstupy ----------
   Bylo `90px 0 70px 50px`: asimmetrichno (sprava 0), i 160px pustogo
   mesta vokrug odnoj stroki kopirajta. */
.footer-inner {
    padding: 64px 48px 48px;
}

/* u pustogo podvala (tema pryachet .footer-widgets-row:empty) ostavlyaem
   tolko vozduh pod kopirajt */
.footer-inner:has(.footer-widgets-row:empty) {
    padding-top: 28px;
    padding-bottom: 28px;
}

/* ---------- Zagolovki kolonok ----------
   Byli 10.2px — MELCHE ssylok (12px): `.footer-header{font-size:.85rem}`
   i vlozhennyj `span.wid-tit{font-size:1em}` dayut 0.85 x 0.85.
   Vidimost zadaem trekingom i kapsom, a ne kegl'em — tak zagolovok
   chitaetsya kak zagolovok, ne sorevnuyas po razmeru so ssylkami. */
.footer-header { text-align: left; font-size: 1rem; }
.footer-header span.wid-tit {
    font-size: .78rem;
    letter-spacing: .13em;
    text-transform: uppercase;
    color: #292929;
    font-weight: 700;
}
/* dekorativnaya liniya viseLA sleva ot zagolovka v vozduhe */
.footer-header:before { display: none; }

/* ---------- Setka kolonok ----------
   3 x col-md-3 = 9 iz 12 -> sprava ostavalos 256px mertvoj zony.
   I klass col-md-* v Bootstrap 3 rabotaet ot 992px, poetomu na 768-991px
   kolonki shlepalis v odnu vo vsyu shirinu. Perevodim ryad na grid. */
.footer-widgets-row {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
    gap: 36px 32px;
    margin: 0;
}
.footer-widgets-row > .dynamic-footer-widget {
    width: auto;
    float: none;
    padding: 0;
}

/* ---------- Ssylki ----------
   Byl shag 22px pri vysote stroki 15px: i tesno, i ne popast palcem. */
.footer-widget ul { margin: 0; padding: 0; list-style: none; }
.footer-widget li { margin: 0; }
.footer-widget li a {
    display: block;
    padding: 8px 0;
    font-size: 13px;
    line-height: 1.35;
    color: #595959;
    transition: color .18s cubic-bezier(.22,1,.36,1);
}
.footer-widget li a:hover,
.footer-widget li a:focus-visible {
    color: #6f3778;          /* akcent temy — v podvale ego ne bylo voobshche */
}

/* ---------- Kopirajt ----------
   Vyravnivalsya po drugoj osi, chem kolonki (raspora col-md-3). */
.footer-copyright-row .policy-box {
    padding-top: 22px;
    border-top: 1px solid #ececec;
}
.footer-inner:has(.footer-widgets-row:empty) .policy-box {
    padding-top: 0;
    border-top: none;
}
.policy-box p { margin: 0; font-size: 12px; color: #595959; }

/* ---------- Telefon ---------- */
@media (max-width: 600px) {
    .footer-inner { padding: 40px 20px 32px; }
    .footer-widgets-row { grid-template-columns: 1fr; gap: 32px; }
    /* mezhgruppovoj otstup dolzhen byt ZAMETNO bolshe vnutrigruppovogo,
       inache kolonki chitayutsya kak odin spisok */
    .footer-widgets-row > .dynamic-footer-widget { margin-bottom: 8px; }
    .footer-widget li a { padding: 11px 0; }   /* tach-cel ~44px */
}

@media (prefers-reduced-motion: reduce) {
    .footer-widget li a { transition: none; }
}

/* ---------- Vysota stranicy ----------
   Tema zadaet  — stranica ne rastet pod kontent,
   prokrutki net, i podval (teper v potoke) okazyvaetsya nizhe vidimoj
   oblasti bez vozmozhnosti do nego doekhat.
   Zamer: html.scrollHeight=1500 pri clientHeight=900, zapas 600px,
   no body.scrollHeight=900 — stranica schitaet sebya rovno v okno.
   Snimaem fiksirovannuyu vysotu: vysota po soderzhimomu. */
html, body {
    height: auto !important;
    min-height: 100%;
    overflow-y: visible !important;
}

/* ---------- VOZVRASHCHAEM STRANICU V POTOK ----------
   Tema balkon svyorstana "na ves ekran": #main, #wrapper i .content-holder
   stoyat position:absolute s height:100%, a prokruchival vnutrennij
   kontejner skript temy. Skripta v staticheskoj kopii net, poetomu:
     * body shlopyvaetsya (zamer: body.scrollHeight = 16px),
     * stranica ne prokruchivaetsya (zapas 0),
     * podval, vernuvshijsya v potok, uezzhaet nizhe vidimoj oblasti
       i do nego nelzya doekhat.

   Eto te zhe pravila, chto ya stavila ranshe dlya ostalnyh stranic:
   na stranicah tovarov oni prosto ne byli podklyucheny — tam drugoj
   nabor stilej. Sr. [[wayback-fullscreen-theme-collapses-page]]. */
#main,
#wrapper {
    position: static !important;
    height: auto !important;
    width: auto !important;
    opacity: 1 !important;
}

.content-holder {
    position: static !important;
    left: auto !important;
    top: auto !important;
    right: auto !important;
    bottom: auto !important;
    height: auto !important;
    padding-left: 80px;
    padding-top: 70px;
}

@media (max-width: 767px) {
    .content-holder { padding-left: 0; }
}

/* ---------- PRAVKA r24: zagolovki i setka ----------
   Zamer pokazal dve oshibki v moih zhe pravilah vyshe.

   1. ZAGOLOVKI byli 9.36px — MELCHE ssylok (13px), to est v tochnosti
      ta zhe oshibka, kotoruyu ya pytalas ispravit.
      Prichina: tema stavit `html { font-size: 75% }`, poetomu 1rem = 12px,
      a ne 16px. Moi `.78rem` prevratilis v 9.36px.
      ★V etoj teme `rem` vryot — zadayom kegl v px.

   2. SETKA: `repeat(auto-fit, minmax(210px, 1fr))` pri shirine ryada
      1008px narezala CHETYRE dorozhki po 228px — kolonok tri, chetvyortaya
      pustaya, poetomu kolonki nachinalis ne u levogo kraya.
      Na 768px ta zhe auto-fit dala DVE dorozhki i tretya kolonka
      («Company») ushla na vtoruyu stroku: vysota podvala 747px.
      Kolonok u nas rovno tri — zadayom tri dorozhki yavno. */
.footer-header span.wid-tit {
    font-size: 13px;
    letter-spacing: .12em;
}

.footer-widgets-row {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    max-width: 1000px;
}

/* bootstrap `.row` tyanet margin: 0 -15px, a .dynamic-footer-widget
   (col-md-3) — padding: 0 15px. V grid eto tolko sdvigaet kolonki
   vpravo ot kraya plashki. */
.footer-widgets-row { margin-left: 0; margin-right: 0; }

/* planshet: tri uzkie kolonki ne vlezayut — dve chitayutsya luchshe,
   chem tri po 190px s perenosom slov */
@media (max-width: 860px) {
    .footer-widgets-row { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 600px) {
    .footer-widgets-row { grid-template-columns: 1fr; }
}

/* ---------- PRAVKA r25: klirfiks sel v setku ----------
   ★NAJDENO ZAMEROM, a ne ugadano: u ryada est klass `row`, a bootstrap
   dayot `.row::before` i `.row::after` s `content:" "; display:table`
   (plugins.css, pravilo .clearfix::before/.container::before/...).

   V obychnom bloke eti psevdoelementy nevidimy — oni tolko zamykayut
   obtekanie. No kogda ya perevela ryad v `display:grid`, oni stali
   POLNOCENNYMI elementami setki i zanyali pervuyu i poslednyuyu yachejki:
       [::before] [Products] [Case Studies]
       [Company ] [::after ]
   Otsyuda i pustota sleva (x=520 vmesto 176), i perenos tretej kolonki
   na vtoruyu stroku na VSEH shirinah (vysota podvala 680 vmesto ~400).

   Grid sam zamykaet obtekanie, poetomu klirfiks zdes ne nuzhen voobshche. */
.footer-widgets-row::before,
.footer-widgets-row::after {
    display: none;
}

/* ---------- PRAVKA r26: dyry mezhdu kolonkami i vozduh ----------
   Na snimke 768px vidno to, chego ne pokazyvali chisla: dve dorozhki
   dayut «lesenku» — pod korotkoj kolonkoj «Products» 200px pustoty,
   a «Company» nachinaetsya tolko posle samoj dlinnoj «Case Studies».
   Tri kolonki pri 592px dayut po ~190px — nazvaniyam ob'ektov hvataet
   (oni i tak perenosyatsya v dve stroki), i lesenki net.
   Dve dorozhki ostavlyaem tolko tam, gde tri uzhe ne chitayutsya. */
@media (max-width: 860px) {
    .footer-widgets-row { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 32px 22px; }
}
@media (max-width: 700px) {
    .footer-widgets-row { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    /* vyravnivaem po verhu kazhdoj stroki, chtoby ne bylo lesenki */
    .footer-widgets-row > .dynamic-footer-widget { align-self: start; }
}

/* telefon: mezhdu gruppami bylo ~70px — podval rastyagivalsya na 986px.
   Dlya odnoj kolonki razdelitel vazhnee rasstoyaniya. */
@media (max-width: 600px) {
    .footer-widgets-row { gap: 26px; }
    .footer-widgets-row > .dynamic-footer-widget { margin-bottom: 0; }
    .footer-widget ul { margin-top: 2px; }
}

/* kolonka s nazvaniyami ob'ektov — samye dlinnye stroki na sajte.
   Perenos po slovam vmesto razryva poperyok nazvaniya shkoly. */
.footer-widget li a {
    overflow-wrap: break-word;
    text-wrap: pretty;
}

/* ---------- Knopka «naverh» ----------
   Chyornyj kvadrat 60x60 lezhit poverh ugla podvala i perekryvaet
   kopirajt. V teme on byl nad tyomnym podvalom, u nas podval belyj. */
.to-top, #to-top, .to-top-btn {
    background: #6f3778 !important;
    border-radius: 50%;
    width: 44px; height: 44px; line-height: 44px;
    right: 20px; bottom: 20px;
    box-shadow: 0 6px 18px rgba(0,0,0,.18);
}

/* ---------- PRAVKA r27: na telefone snova stalo dve kolonki ----------
   ★Moya zhe oshibka poryadka pravil: blok `max-width:600px` vyshe zadayot
   tolko `gap`, a `grid-template-columns: 1fr` iz bolee rannego bloka
   perebivaetsya POZDNIM `repeat(2, …)` iz bloka `max-width:700px`
   (oba podhodyat pri 390px, pobezhdaet posledneye).
   Zamer: dorozhki 162px — nazvanie shkoly v takuyu kolonku ne vlezaet.
   Zadayom odnu kolonku yavno v tom zhe bloke, chto i gap. */
@media (max-width: 600px) {
    .footer-widgets-row { grid-template-columns: minmax(0, 1fr); }
}

/* ---------- PRAVKA r28: otstupy zagolovka kolonki ----------
   ★Zamer, a ne glazomer: tema dayot `.footer-header` margin 25px/15px
   i padding-top 12px. Poetomu:
     * nad zagolovkom 37px + moj gap 26px = ~63px mezhdu gruppami,
       podval na telefone rastyagivalsya na 956px;
     * pod zagolovkom 17px, a nad nim 37px — zagolovok okazyvalsya
       BLIZHE k chuzhomu spisku sverhu, chem k svoemu snizu,
       i gruppirovka chitalas naoborot.
   Svyaz «zagolovok — ego spisok» dolzhna byt tesnee, chem mezhgruppovaya:
   zadayom 10px pod zagolovkom protiv 26px mezhdu kolonkami. */
.footer-header {
    margin: 0 0 10px;
    padding: 0;
}

/* ---------- PRAVKA r29: zagolovki sdvinuty vpravo ot ssylok ----------
   ★Chisla sovpadali, oshibku pokazal SNIMOK: getBoundingClientRect
   u `span.wid-tit` dayot x=176, kak i u ssylok — no span inline
   i nesyot `padding-left: 15px` ot temy (tam sleva byla dekorativnaya
   liniya, kotoruyu ya vyklyuchila eshchyo v r21 cherez .footer-header:before).
   Ramka nachinaetsya v 176, a BUKVY — v 191. Levyj kraj kolonki lomaetsya.
   Sr. [[feedback-my-detector-lies-first]]. */
.footer-header span.wid-tit {
    padding-left: 0;
}

/* ---------- PRAVKA r30: podval shablona single-products ----------
   ★Proverka vseh 87 stranic (ne treh) nashla: na 7 stranicah shablona
   `single-products` podval nachinaetsya ot x=0, bez bokovogo otstupa
   v 125px, kotoryj na ostalnyh stranicah dayot `.content-holder`.
   Kolonki stoyali pravilno otnositelno svoej plashki, no ne sovpadali
   s levym kraem kontenta stranicy — na glaz podval «uezzhal» vlevo.
   Vyravnivaem plashku podvala s kontentom na etih shablonah. */
.page-template-single-products footer.content-footer .footer-inner,
.page-template-single-products-php footer.content-footer .footer-inner {
    padding-left: 125px;
}

@media (max-width: 767px) {
    .page-template-single-products footer.content-footer .footer-inner,
    .page-template-single-products-php footer.content-footer .footer-inner {
        padding-left: 20px;
    }
}

/* ---------- PRAVKA r31: vyravnivanie podvala po levomu krayu ----------
   ★Zamer sravneniem horoshej i plohoj stranicy pokazal: delo NE v
   paddinge (.footer-inner vezde 48px), a v POZICII samoj plashki:
       /about-us/               innerX = 128  -> kolonki v 176 ✓
       /products/acoustic-panels/ innerX =  51 -> kolonki v  99 ✗
   Raznica 77px prihodit ot `.content-holder`, kotoryj na obychnyh
   stranicah sdvigaet ves blok vpravo, a na shablonah tovara i novosti
   podval lezhit vne ego.

   ★Pervaya popytka byla po klassu `page-template-single-products` —
   on est tolko na /products/, a na vlozhennyh stranicah tovara klass
   drugoj: `products-template-default single-products`. Odin i tot zhe
   defekt, raznye klassy; beryom OBSHCHIJ priznak.
   Sr. [[feedback-my-detector-lies-first]]. */
body.single-products footer.content-footer .footer-inner,
body.single-post footer.content-footer .footer-inner {
    padding-left: 125px;
}

@media (max-width: 767px) {
    body.single-products footer.content-footer .footer-inner,
    body.single-post footer.content-footer .footer-inner {
        padding-left: 20px;
    }
}

/* ---------- PRAVKA r32: otmena r31 i pravilnoe uslovie ----------
   ★r31 byla po klassu `single-products`/`single-post` — i promahnulas:
   eti klassy est u OBEIH grupp stranic, poetomu 125px slozhilis s
   otstupom .content-holder tam, gde podval i tak stoyal verno (253px).

   Zamer shesti stranic nashyol nastoyashchij priznak — eto NE klass
   shablona, a STRUKTURA:
       podval VNUTRI .content-holder -> footerX=80  (holder dayot 80px)
       podval SNARUZHI .content-holder -> footerX=0  (otstupa net)
   Imenno vtoraya gruppa i uezzhala vlevo.
   Zadayom otstup tolko toj gruppe, u kotoroj ego net — po strukture. */
body.single-products footer.content-footer .footer-inner,
body.single-post footer.content-footer .footer-inner {
    padding-left: 48px;                 /* otmenyaem r31 */
}

/* podval, lezhashchij vne .content-holder, kompensiruet ego 80px sam */
.content-holder + footer.content-footer .footer-inner,
#main > footer.content-footer .footer-inner,
#wrapper > footer.content-footer .footer-inner,
body > footer.content-footer .footer-inner {
    padding-left: 128px;
}

@media (max-width: 767px) {
    body.single-products footer.content-footer .footer-inner,
    body.single-post footer.content-footer .footer-inner,
    .content-holder + footer.content-footer .footer-inner,
    #main > footer.content-footer .footer-inner,
    #wrapper > footer.content-footer .footer-inner,
    body > footer.content-footer .footer-inner {
        padding-left: 20px;
    }
}

/* PRAVKA r33: kompensaciya byla 128px, zamer dal levyj kraj 179
   vmesto 176 — promah rovno na 3px. Struktura verna, chislo net. */
.content-holder + footer.content-footer .footer-inner,
#main > footer.content-footer .footer-inner,
#wrapper > footer.content-footer .footer-inner,
body > footer.content-footer .footer-inner {
    padding-left: 125px;
}
@media (max-width: 767px) {
    .content-holder + footer.content-footer .footer-inner,
    #main > footer.content-footer .footer-inner,
    #wrapper > footer.content-footer .footer-inner,
    body > footer.content-footer .footer-inner { padding-left: 20px; }
}

/* ---------- PRAVKA r34: rywok galerei pri zagruzke ----------
   Zamer po vremeni (0/200/400/600/900 ms) pokazal: poka skript masonry
   raskladyvaet plitki, .gallery-item stoyat v ryad i vylezayut do 1930px
   pri okne 1280 — poyavlyaetsya gorizontalnaya prokrutka. K 900 ms
   raskladka zakanchivaetsya i scrollWidth vozvrashchaetsya k 1280.

   Eto ne defekt vyorstki, no posetitel sekundu vidit dyorgayushchuyusya
   stranicu i polosu prokrutki. Gasim vyhod za kraj na vremya raskladki:
   kontejner galerei i tak dolzhen derzhat svoi plitki vnutri sebya.

   ★Imenno iz-za etogo okna moya obshchaya proverka (zhdala 500 ms)
   «nahodila» prokrutku na 7 stranicah, a otdelnaya (1200 ms) — net.
   Sr. [[feedback-my-checks-lie-three-ways]]. */
.gallery-items,
.grid-gallery,
.portfolio-holder,
.content-holder { overflow-x: clip; }

/* ---------- PRAVKA r35: tekst tovara na vsyu shirinu ----------
   Stranicy tovara svyorstany v dve kolonki vc_col-sm-6: sleva tekst,
   sprava byla galereya Visual Composer. Galereya gruzila foto cherez
   admin-ajax.php — v staticheskoj kopii eto ne rabotaet, kontejner
   ostavalsya pustym, i pravaya POLOVINA stranicy zияla pustotoj.

   Foto vernut nelzya: CDX po /wp-content/uploads/ dayot vsego 7 kartinok,
   vse uzhe na diske. Mediabiblioteka v arhiv ne popala.
   Myortvye kontejnery udaleny (24 shtuki na 20 stranicah), a kolonke
   s tekstom otdayom vsyu shirinu — inache ona ostanetsya uzkoj polosoj
   sleva pri pustoj polovine sprava. */
.vc_row > .wpb_column.vc_col-sm-6:only-child,
.vc_row > .wpb_column.vc_col-sm-6:first-child:last-child {
    width: 100%;
}

/* dlina stroki: tekst na 1100px chitaetsya ploho (norma 65-75 znakov) */
.wpb_text_column .wpb_wrapper > p,
.wpb_text_column .wpb_wrapper > ul {
    max-width: 68ch;
}

/* PRAVKA r36: pustye kolonki udaleny iz razmetki (20 sht), sosednie
   rasshireny do sm-12. CSS-selektor :only-child ne srabotal — pustaya
   kolonka ostavalas v DOM sosedom, poetomu pravila razmetkoj.
   Ogranichenie 68ch teper meshaet: na uzkoj kolonke ono szhimalo tekst
   eshchyo silnee. Dayom normalnuyu dlinu stroki ot shiriny kontejnera. */
.wpb_text_column .wpb_wrapper > p,
.wpb_text_column .wpb_wrapper > ul {
    max-width: 78ch;
}

/* PRAVKA r37: tekst szhimal MOJ ZHE max-width.
   ★Zamer cepochki roditelej: kolonka razdvinulas do 1069px, a
   ul.mybullet imel max-width = 499.95px — eto moi "78ch".
   Pri shrifte 13px  dayot ~6.4px, poetomu 78ch = 500px, a ne
   78 znakov. Sr. [[feedback-ch-unit-is-not-a-character]].
   Zadayom dlinu stroki v px: ~75 znakov pri 13px eto ~720px. */
.wpb_text_column .wpb_wrapper > p,
.wpb_text_column .wpb_wrapper > ul,
.wpb_text_column .wpb_wrapper ul.mybullet {
    max-width: 760px;
}

/* ======================================================================
   PRAVKA r38: STRANICY TOVARA — akkordeon, dlina stroki, ssylki
   ====================================================================== */

/* ---------- Akkordeon ne rabotaet ----------
   Zamer: vtoraya panel imeet vc_active=false (zakryta), no eyo telo
   stoit display:block vysotoj 219px — ona vsyo ravno pokazana.
   Skript Visual Composer v staticheskoj kopii ne otrabatyvaet:
   paneli ne svorachivayutsya i ne raskryvayutsya po kliku.

   Nerabochij vidzhet huzhe ego otsutstviya — posetitel zhmyot
   na zagolovok i nichego ne proishodit. Prevrashchaem akkordeon
   v obychnye razdely: vsyo otkryto, zagolovki chitayutsya kak
   zagolovki, kursor ne obeshchaet klik. */
.vc_tta-panel .vc_tta-panel-body {
    display: block !important;
    height: auto !important;
    padding: 0;
    border: 0;
}

.vc_tta-panel-heading {
    background: none !important;
    border: 0 !important;
    margin: 0 0 14px;
    padding: 0;
}

.vc_tta-panel-title {
    font-size: 19px;
    font-weight: 600;
    line-height: 1.3;
    letter-spacing: -0.01em;
    color: #1a1a1a;
    margin: 0;
}

.vc_tta-panel-title > a {
    cursor: default;            /* klikat ne po chemu */
    color: inherit;
    padding: 0 !important;
    pointer-events: none;
}

/* strelka «razvernut» u nerabochego akkordeona */
.vc_tta-controls-icon { display: none !important; }

/* razdelyaem razdely vozduhom, a ne ramkami */
.vc_tta-panel {
    border: 0 !important;
    background: none !important;
    margin: 0 0 40px;
}
.vc_tta-panel:last-child { margin-bottom: 0; }

/* ---------- Dlina stroki ----------
   Tekst vnutri akkordeona shyol na vse 1189px: na takoj shirine
   glaz teryaet nachalo sleduyushchej stroki (norma 65-75 znakov). */
.vc_tta-panel-body p,
.vc_tta-panel-body ul,
.vc_tta-panel-body ol,
.wpb_text_column .wpb_wrapper > p,
.wpb_text_column .wpb_wrapper > ul,
.wpb_text_column .wpb_wrapper ul.mybullet {
    max-width: 760px;
}

/* ---------- Ssylki ne vyglyadyat ssylkami ----------
   Zamer: cvet rgb(0,0,0), podcherkivaniya net — brochury i tovary
   nelzya otlichit ot obychnogo teksta. */
.vc_tta-panel-body a {
    color: #6f3778;
    text-decoration: underline;
    text-underline-offset: 3px;
    text-decoration-thickness: 1px;
    text-decoration-color: rgba(111, 55, 120, .35);
    transition: text-decoration-color .18s cubic-bezier(.22,1,.36,1);
}
.vc_tta-panel-body a:hover,
.vc_tta-panel-body a:focus-visible {
    text-decoration-color: #6f3778;
}

/* spiski ssylok: shag i tach-cel */
.vc_tta-panel-body p { margin: 0 0 4px; }
.vc_tta-panel-body p a { display: inline-block; padding: 7px 0; }

/* ---------- Provaly ----------
   Mezhdu spiskom i «Download Product Literature» bylo 130px,
   pered podvalom 180px — tema rezervirovala mesto pod kartinki,
   kotoryh net. */
.vc_row.vc_custom_1516196051334,
.page-content-inner .vc_row { margin-bottom: 0; }

.page-content-inner .vc_row + .vc_row { margin-top: 34px; }

.post-container { padding-bottom: 24px; }

@media (prefers-reduced-motion: reduce) {
    .vc_tta-panel-body a { transition: none; }
}

/* ---------- PRAVKA r39: provaly na stranicah tovara ----------
   Zamer cepochki roditelej dal tochnye chisla, a ne na glaz:

   1. Posle spiska «Product Info» 85px pustoty:
        .wpb_text_column { margin-bottom: 35px }  (tema)
      + 50px mezhdu ryadami vc_row.
      Eto mesto tema rezervirovala pod kartinku, kotoroj u nas net.

   2. Pered podvalom 174px:
        section            padding-bottom: 90px
        article            margin-bottom: 30px + padding-bottom: 30px
        .post-container    padding-bottom: 24px
      Chetyre otstupa skladyvayutsya drug na druga. */
.page-content-inner .wpb_text_column { margin-bottom: 18px; }

.page-content-inner .vc_row + .vc_row { margin-top: 18px; }

/* hvost stranicy: ostavlyaem odin osmyslennyj otstup vmesto chetyryoh */
.content .container > .row > .col-md-12 > .post-container {
    padding-bottom: 0;
}
.post-container > article.content-page {
    margin-bottom: 0;
    padding-bottom: 0;
}
.content > section,
.content-holder .content > section {
    padding-bottom: 48px;
}

@media (max-width: 767px) {
    .content > section,
    .content-holder .content > section { padding-bottom: 32px; }
}

/* ---------- PRAVKA r40: inlajnovye otstupy Visual Composer ----------
   ★Zamer nashyol istochnik: `.vc_custom_1516193619344 { margin-top: 50px }`
   — eto inlajnovyj <style> v samoj stranice. On idyot POZZHE moego
   fajla, poetomu moi 18px proigryvali, i razryv ostavalsya 50px.

   Po sajtu takih pravil 58 (26 padding-top, 24 margin-top, 7 margin-bottom,
   1 padding-bottom ot 40px i bolshe). Vse oni rezervirovali mesto pod
   kartinki i fonovye izobrazheniya, kotoryh v nashej kopii net —
   poetomu vmesto ritma oni dayut pustotu.

   Perebivaem tolko VNUTRI kontentnoj oblasti: shapku, banner i
   podval ne trogaem, tam otstupy rabotayut po naznacheniyu. */
.page-content-inner .vc_row[class*="vc_custom_"] {
    margin-top: 18px !important;
    margin-bottom: 0 !important;
}

.page-content-inner .vc_row[class*="vc_custom_"]:first-child {
    margin-top: 0 !important;
}

.page-content-inner .vc_column-inner[class*="vc_custom_"],
.page-content-inner .wpb_column[class*="vc_custom_"] {
    padding-top: 0 !important;
    padding-bottom: 0 !important;
}

/* ---------- PRAVKA r41: ostatochnye 50px i shag ssylok ----------
   Zamer razlozhil razryv 86px: 18px moj margin-bottom + 18px mezhdu
   ryadami + 50px VNUTRI kontejnera akkordeona (.vc_tta-panels-container
   i .vc_tta-panels nesut svoi otstupy, rasschitannye na ramki paneley,
   kotorye ya ubrala).

   I shag ssylok na brochury: vysota kazhdoj 48px pri shage 52 —
   moj `padding: 7px 0` na inline-block plyus margin abzaca. Dlya
   spiska iz pyati punktov eto slishkom razrezhenno; 44px — ravno
   minimalnoj tach-celi, bolshe ne nuzhno. */
.vc_tta-panels-container,
.vc_tta-panels,
.vc_tta.vc_general .vc_tta-panels-container {
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    background: none !important;
}

.vc_tta-panel-body > .wpb_text_column { margin-bottom: 0 !important; }

/* shag ssylok: 44px (tach-cel) vmesto 52px */
.vc_tta-panel-body p a {
    padding: 5px 0;
}
.vc_tta-panel-body p { margin: 0; }

/* spisok «See More Products» byl ploten — tam shag 22px, dovodim
   do toj zhe tach-celi, chto i brochury */
.vc_tta-panel-body p:only-child a { padding: 5px 0; }

/* ---------- PRAVKA r42: raspornye bloki Visual Composer ----------
   ★Zamer sosedej nashyol vinovnika 50px: div.vc_empty_space —
   spec. raspornyj blok VC, pustoj, vysotoj rovno 50px.
   Po sajtu ih 12 na 12 stranicah.

   V ishodnom sajte oni otdelyali tekst ot KARTINOK. Kartinok
   v nashej kopii net (mediabiblioteka ne arhivirovalas), poetomu
   raspory prosto rvut tekst pustotoj.
   Szhimaem do osmyslennogo otstupa vmesto polnogo udaleniya:
   razdely vsyo-taki nuzhno otdelyat drug ot druga. */
.page-content-inner .vc_empty_space {
    height: 16px !important;
}

@media (max-width: 767px) {
    .page-content-inner .vc_empty_space { height: 12px !important; }
}

/* ---------- PRAVKA r43: banner na glavnoj shlopnulsya ----------
   ★MOYA OSHIBKA, najdena zamerom: .home-slider imeet vysotu 0.

   Slajder svyorstan kak  — on bral
   vysotu ot roditelya. Ya zadala  (pravka vozvrata stranicy v potok:
   tema balkon bez svoego skripta shlopyvala body do 16px).
   Procent ot  schitaetsya kak 0 — banner ischez.

   Kartinki pri etom na meste: tri fonovyh izobrazheniya zagruzheny.
   Zadayom slajderu sobstvennuyu vysotu v vh vmesto procenta ot
   roditelya — tak on ne zavisit ot togo, v potoke stranica ili net. */
.home-slider,
.fs-gallery-wrap.full-height,
.home-slider .swiper-container {
    height: 78vh !important;
    min-height: 460px !important;
}

.home-slider .swiper-slide,
.home-slider .swiper-wrapper {
    height: 100% !important;
}

/* fonovye kadry slajdera */
.home-slider .bg {
    background-size: cover;
    background-position: center;
}

@media (max-width: 767px) {
    .home-slider,
    .fs-gallery-wrap.full-height,
    .home-slider .swiper-container {
        height: 60vh !important;
        min-height: 360px !important;
    }
}

/* ======================================================================
   PRAVKA r44: GLAVNAYA — kegl, zagolovki, provaly
   ====================================================================== */

/* ---------- Tekst 12px pri zagolovkah 30px ----------
   ★Zamer: abzacy pod «Welcome to» i «Products» — 12px, zagolovki 30px.
   Prichina ta zhe, chto s podvalom: tema stavit html{font-size:75%},
   poetomu 1rem = 12px, i abzacy nasleduyut kroshechnyj kegl.
   Na snimke oni chitayutsya kak melkaya podpis, a ne kak tekst.
   Sr. [[rem-vryot-pri-font-size-75]]. */
.page-content-inner .wpb_text_column p,
.content .wpb_text_column p {
    font-size: 15px;
    line-height: 1.65;
}

/* lid pod glavnym zagolovkom — chut krupnee ostalnogo */
.page-content-inner h1.bold-title + p,
.page-content-inner h1.bold-title ~ p {
    font-size: 16px;
    line-height: 1.6;
}

/* ---------- Zagolovki razdelov vrazbroj ----------
   Zamer: «Products» — h3, 30px, po centru;
          «Latest News» — h3, 21px, po levomu krayu.
   Odinakovye po smyslu razdely oformleny po-raznomu.
   Privodim k odnomu: razmer kak u «Products», vyravnivanie po levomu
   krayu — tak zhe, kak stoyat «Latest News» i «Latest Completed Projects»,
   kotoryh bolshinstvo. */
.content .wpb_text_column h3:not(.bold-title) {
    font-size: 28px;
    font-weight: 700;
    line-height: 1.2;
    letter-spacing: -0.015em;
    margin: 0 0 10px;
}

/* ---------- Dlina stroki ----------
   Abzac na 760px pri 15px — okolo 95 znakov, dlinnovato. */
.page-content-inner .wpb_text_column p { max-width: 680px; }

/* centrirovannye bloki derzhim po centru */
.page-content-inner .wpb_text_column p[style*="center"] {
    margin-left: auto;
    margin-right: auto;
}

/* ---------- Provaly mezhdu razdelami ----------
   Tema rezervirovala mesto pod kartinki razdelov. */
.content > section.balkon_sec { padding-top: 48px; padding-bottom: 48px; }
.content > section.balkon_sec:first-of-type { padding-top: 0; }

@media (max-width: 767px) {
    .content > section.balkon_sec { padding-top: 32px; padding-bottom: 32px; }
    .page-content-inner .wpb_text_column p { font-size: 15px; }
    .content .wpb_text_column h3:not(.bold-title) { font-size: 22px; }
}

/* ---------- Ryad bannera s nulevoj vysotoj ----------
   wpb_row.full-height imeet height:0 po toj zhe prichine, chto byl
   slajder: procent ot roditelya s height:auto. Slajdy vnutri stoyat
   absolyutno i vidny, no nulevoj roditel — eto mina na budushchee. */
.content-holder .wpb_row.full-height {
    height: auto !important;
    min-height: 0;
}

/* ---------- PRAVKA r45: pravila r44 ne dostali do abzacev ----------
   ★Zamer cepochki roditelej: p -> wpb_wrapper -> wpb_text_column ->
   wpb_wrapper -> vc_column-inner -> wpb_column -> row -> container ->
   section.balkon_sec -> content-holder.
   NI .page-content-inner, NI .content v cepochke NET — na glavnoj
   sekcii lezhat pryamo v .content-holder, a ya trebovala etih predkov.
   Spisok podoshedshih pravil byl pust, poetomu 12px i ostalis.

   Zadayom ot .content-holder — on est na vseh stranicah. */
.content-holder .wpb_text_column p {
    font-size: 15px !important;
    line-height: 1.65;
    max-width: 680px;
}

.content-holder .wpb_text_column p[style*="center"] {
    margin-left: auto;
    margin-right: auto;
}

.content-holder h1.bold-title + p {
    font-size: 16px !important;
}

.content-holder .wpb_text_column h3:not(.bold-title) {
    font-size: 28px;
    font-weight: 700;
    line-height: 1.2;
    letter-spacing: -0.015em;
    margin: 0 0 10px;
}

.content-holder > section.balkon_sec,
.content-holder section.balkon_sec {
    padding-top: 48px;
    padding-bottom: 48px;
}

@media (max-width: 767px) {
    .content-holder .wpb_text_column p { font-size: 15px !important; }
    .content-holder .wpb_text_column h3:not(.bold-title) { font-size: 22px; }
    .content-holder section.balkon_sec { padding-top: 32px; padding-bottom: 32px; }
}
