/*
 Theme Name:   Luxrio Child
 Theme URI:    http://vecurosoft.com/products/wordpress/luxrio/
 Description:  This is a child theme for Luxrio WordPress Theme
 Author:       Vecurosoft
 Author URI:   http://vecurosoft.com/
 Template:     luxrio
 Version: 1.3.43
 Requires at least: 5.0
 Tested up to: 6.7
 Requires PHP: 7.0
 License:      GNU General Public License v2 or later
 License URI:  http://www.gnu.org/licenses/gpl-2.0.html
 Tags:         two-columns, three-columns, left-sidebar, right-sidebar, flexible-header, custom-background, custom-colors, custom-header, custom-menu, theme-options, editor-style, featured-images, microformats, post-formats,  sticky-post, threaded-comments, translation-ready
 Text Domain:  luxrio-child
*/

/*  [ Add your custom css below ]
- - - - - - - - - - - - - - - - - - - - */

/* 13.10.2026: wyglad wraca do oryginalnego Luxrio (decyzja Damiana). Zostaja tylko ponizsze poprawki. */

/* 20.10.2026: na ekranie ładowania animowane logo NiTaglio (assets/img/logo-nitaglio-animowane.svg, ustawienie motywu
   „Preloader image”); kulki motywu i dawna karafka z beczką schowane. */
.preloader .loader { display: none; }
.preloader-inner img { width: 300px; max-width: 76vw; height: auto; margin: 0 auto; }
/* Pierwsza strona w sesji: ekran ładowania trzyma się, aż animacja logo się skończy (skrypt w functions.php);
   !important wygrywa z display: none, które jQuery fadeOut z main.js motywu wpisuje w style elementu. */
html.ntg-intro .preloader { display: block !important; opacity: 1 !important; }

/* Italiana (krój ozdobny motywu) nie ma polskich liter; brakujące znaki biorą się z podobnego Marcellusa,
   a nie z przypadkowej czcionki systemowej. Kroje ładuje assets/fonts.css z serwera sklepu. */
:root {
  --special-font: "Italiana", "Marcellus", sans-serif;
}

/* Tylko po polsku: bez Wielkich Liter Na Początku Każdego Słowa (text-transform: capitalize z Luxrio).
   W angielskiej wersji, gdy dojdą języki, zostaje oryginalny styl motywu. */
html[lang|="pl"] :is(
.accordion-style1 .accordion-body, .accordion-style1 .accordion-button, .banner-style .banner-title,
.blog-style1 .blog-text, .blog-style1 p, .blog-style2 .blog-title, .blog-style3 .blog-text, .blog-style3 p,
.cart_table thead th, .cart_totals .woocommerce-shipping-destination, .cart_totals td:first-child,
.cart_totals th:first-child, .cate-style1 .cate-title, .category-filter .total,
.category-filter input[type=checkbox] ~ label, .comment-respond input[type=checkbox] ~ label, .comment-respond p,
.contact-info, .deal-content .sec-title,
.desc-content .woocommerce-product-attributes .woocommerce-product-attributes-item__label, .error-content p,
.feature-style__title, .footer-info.style2 p, .footer-menu2 a, .login-tab a, .main-menu ul.mega-menu > li > a,
.new-label, .newsletter-form .form-control, .offer-style .offer-title, .popup-overlay .popup-text,
.post-admin .post-text, .process-content p, .product-about .product-desc, .product-about .product-rating__total,
.product-about .product-title, .product-description .desc-content .desc-title, .product-details h2,
.product-style1 .product-title, .product-style2 .product-title, .product-style3 .product-title,
.recent-post .recent-post-meta a, .recent-post .recent-post-meta span, .sec-text,
.sidebar-area .newsletter-form button, .testi-style .testi-text, .testi-style.style2 .testi-text,
.view-style .view-title2, .vs-cart-wrapper .vs-btn, .vs-checkout-wrapper .vs-btn,
.vs-comments-wrap .comment-content p, .vs-comments-wrap .text:last-of-type, .vs-header__top--menu a,
.vs-mobile-menu .new-label, .vs-mobile-menu ul li a, .vs-sort-bar.style2 select,
.wc-block-components-checkout-step__description, .wc-block-components-checkout-step__title,
.widget .search-form input, .widget_shopping_cart .vs-btn,
.woocommerce--content .wc-block-components-product-metadata__description p,
.woocommerce-checkout #accountNewCreate + label, .woocommerce-checkout #ship-to-different-address label,
.woocommerce-checkout-payment .payment_box p, .woocommerce-form-login .custom-checkbox label,
.woocommerce-form-login .lost-link, .woocommerce-info, .woocommerce-message,
.woocommerce-product-details__short-description p, a#cancel-comment-reply-link,
div#woosq-popup .variations label, ul.woocommerce-error, .xoo-wsc-btn, .xoo-wsc-ft-btn
) {
  text-transform: none;
}

/* 20.10.2026: pasek „Nasi partnerzy” nad stopką (jak na haisberg.com), w kolorach Luxrio. Kreska przed pierwszym
   partnerem w każdym rzędzie jest ucięta: lista wysunięta o 17 px (16 px odstępu + 1 px kreski) pod overflow: hidden. */
.ntg-partnerzy {
  border-top: 1px solid var(--vs-border-color5, #2e343e);
  border-bottom: 1px solid var(--vs-border-color5, #2e343e);
}
.ntg-partnerzy__w {
  display: flex;
  align-items: center;
  gap: 6px 24px;
  padding-top: 8px;
  padding-bottom: 8px;
}
.ntg-partnerzy__tytul {
  margin: 0;
  font-size: 12px;
  line-height: 1.3;
  font-weight: 700;
  letter-spacing: .14em;
  text-transform: uppercase;
  white-space: nowrap;
  color: var(--theme-color, #ff3e01);
}
.ntg-partnerzy__obciecie { flex: 1; min-width: 0; overflow: hidden; }
.ntg-partnerzy__lista {
  list-style: none;
  display: flex;
  flex-wrap: wrap;
  gap: 8px 16px;
  width: calc(100% + 17px);
  margin: 0 0 0 -17px;
  padding: 0;
}
.ntg-partnerzy__lista > li { margin: 0; }
.ntg-partner {
  display: flex;
  align-items: center;
  gap: 8px;
  min-height: 40px;
  padding: 2px 0 2px 16px;
  border-left: 1px solid var(--vs-border-color5, #2e343e);
  color: var(--white-color, #fff);
  text-transform: none;
}
a.ntg-partner:hover, a.ntg-partner:focus-visible { color: var(--theme-color, #ff3e01); }
a.ntg-partner:focus-visible { outline: 0; }
a.ntg-partner:focus-visible .ntg-partner__domena { outline: 2px solid var(--theme-color, #ff3e01); outline-offset: 3px; }
.ntg-partner__ikona { flex: none; width: 32px; height: 32px; object-fit: contain; }
.ntg-partner__ikona--mala { width: 27px; height: 27px; margin: 0 2.5px; }
.ntg-partner__domena { font-size: 15px; font-weight: 600; white-space: nowrap; }
.ntg-partnerzy__sr {
  position: absolute !important;
  width: 1px; height: 1px; margin: -1px; overflow: hidden;
  clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}
@media (max-width: 991px) {
  .ntg-partnerzy__w { flex-direction: column; align-items: flex-start; }
  .ntg-partnerzy__obciecie { width: 100%; }
}

/* 20.10.2026: kategorie sklepu na górze karty produktu (functions.php), w stylu linków Luxrio. Na telefonie jeden rząd
   przewijany palcem. */
.ntg-kategorie { margin: 0 0 130px; border-bottom: 1px solid var(--vs-border-color5, #2e343e); }   /* odstęp od produktu: Damian, „zlewa się” */
.ntg-kategorie ul {
  list-style: none;
  margin: 0;
  padding: 0 0 22px;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 14px 38px;
}
.ntg-kategorie li { margin: 0; }
.ntg-kategorie a {
  font-size: 17px;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
  white-space: nowrap;
  color: var(--white-color, #fff);
}
.ntg-kategorie a:hover, .ntg-kategorie a:focus-visible, .ntg-kategorie a.ntg-kategorie__biezaca { color: var(--theme-color, #ff3e01); }
@media (max-width: 767px) {
  .ntg-kategorie { margin-bottom: 85px; }
  .ntg-kategorie a { font-size: 15px; }
  .ntg-kategorie ul { flex-wrap: nowrap; justify-content: flex-start; overflow-x: auto; gap: 0 22px; padding-bottom: 14px; scrollbar-width: thin; }
  .ntg-kategorie li { flex: none; }
}

/* 20.10.2026: tytuł i ścieżka w nagłówku strony nie wchodzą na zdjęcie po prawej stronie tła (Damian: „napisy nachodzą
   na obrazek”). Komputer: napisy w lewych 58%, długie nazwy produktów mniejszą czcionką. Telefon i tablet: napisy na całą
   szerokość, więc tło przyciemnione, żeby tekst był czytelny. */
@media (min-width: 992px) {
  .breadcumb-wrapper .breadcumb-content { max-width: 58%; }
  .single-product .breadcumb-wrapper .breadcumb-title { font-size: 46px; }
}
@media (max-width: 991.98px) {
  .breadcumb-wrapper::after { content: ''; position: absolute; inset: 0; background: rgba(0, 0, 0, 0.55); pointer-events: none; }
  .breadcumb-wrapper > .container { position: relative; z-index: 2; }
}

/* 25.10.2026: baner Luxrio „Product Banner” ze zdjęciem w tle (klasa ntg-baner-zdjecie w Zaawansowane → Klasy CSS
   widżetu; pierwszy: „Zestawy upominkowe” na stronie głównej). Komputer i tablet: tło (zdjęcie przy lewej krawędzi,
   na prawo przechodzi w kolor koca) zawsze na pełną wysokość, więc pudełko stoi w miejscu obrazka, a sam obrazek widżetu
   tylko trzyma to miejsce. Telefon (baner w kolumnie): bez tła, widać obrazek widżetu (to samo pudełko, wygaszone owalnie).
   !important, bo motyw wpisuje tło w atrybut style. */
.ntg-baner-zdjecie .banner-style {
  background-color: #d2d3d2;
  background-size: auto 100%;
  background-position: left center;
}
@media (min-width: 768px) {
  .ntg-baner-zdjecie .banner-img { visibility: hidden; }
}
@media (max-width: 767px) {
  .ntg-baner-zdjecie .banner-style { background-image: none !important; }
}

/* 25.10.2026: na telefonie film (wcześniej zdjęcie) w sekcji „Prezenty personalizowane” (Luxrio Product Category Tab)
   na szerokość ekranu: reguła motywu min-width: 590px (do 1500 px) wygrywała z min-width: 100% (do 767 px), więc pole
   miało 590 px i środek kadru wypadał poza ekran. */
@media (max-width: 767px) {
  .cate-layout2 .img-box1.style2 { min-width: 100%; }
}
/* 25.10.2026: ta sama sekcja niższa o ok. 20% (Damian: „zwęź o 20%”, chodziło o wysokość). Tylko od 1200 px, gdzie film
   stoi obok treści na całą wysokość sekcji; niżej film jest nad tekstem i zostają odstępy motywu.
   Odstęp nad tytułem 120 → 50 px, pod kartami 90 → 10 px (karty mają jeszcze swoje 30 px), pod tytułem 60 → 30 px.
   Ozdobnik „6” (.ele2) w górę o te same 70 px, inaczej przy 1400 px wchodził na „PERSONALIZOWANE”. */
@media (min-width: 1200px) {
  .cate-layout2.space { padding-top: 50px; padding-bottom: 10px; }
  .cate-layout2 .title-area { margin-bottom: 30px; }
  .cate-layout2 .ele2 { top: 44px; }
}
/* 25.10.2026: tytuł i karty bliżej filmu i miejsce na trzy karty (Damian: „przesuń trochę w lewo, dodaj trzeci widok”;
   suwaki zakładek mają slide_to_show 3). Motyw stawiał treść w prawych 7/12 stałego kontenera, a film miał 590 px
   do 1500 px i 892 px wyżej, więc na szerokim ekranie między filmem a tytułem było ok. 320 px pustego miejsca, a przy
   1501–1750 px film zachodził na treść. Teraz film ma 40% szerokości ekranu (od 500 do 892 px), a treść zaczyna się
   100 px za nim i ma najwyżej 860 px. */
@media (min-width: 1200px) {
  .cate-layout2 { --ntg-film: clamp(500px, 40vw, 892px); }
  .cate-layout2 .img-box1.style2 { min-width: 0; width: var(--ntg-film); }
  .cate-layout2 > .container { max-width: none; margin: 0; padding: 0 40px 0 calc(var(--ntg-film) + 100px); }
  .cate-layout2 > .container > .row { justify-content: flex-start !important; }
  .cate-layout2 .col-xl-7 { width: 100%; max-width: 860px; }
  .cate-layout2 .cate-content { padding-left: 0; }
}
/* 25.10.2026: karty w zakładkach równej wysokości (Damian: „zrób, żeby były równe”), także gdy nazwa ma dwie linie.
   Slajdy suwaka w rzędzie dostają wysokość najwyższego, a karta wypełnia slajd (30 px to jej dolny margines z motywu). */
.category-slider2 .slick-track { display: flex; }
.category-slider2 .slick-slide { height: auto; }
.category-slider2 .cate-style1 { height: calc(100% - 30px); }

/* 25.10.2026: suwak „Prezenty z grawerem” (Elementor 4835439, 5 produktów naraz) tak szeroki jak banery nad nim
   (Damian: „żeby było równe z sekcją powyżej”). Banery mają 1600 px; slajdy mają po 15 px wcięcia, więc kontener
   1630 px. Poniżej 1630 px kontener zajmuje cały ekran, a banery też. */
@media (min-width: 1200px) {
  .elementor-element-4835439 .product-slider-wrapper > .container { max-width: 1630px; }
}

/* 27.10.2026: jaśniejsze tło, paleta „grafit” (Damian: „tam, gdzie jest kolor całkiem czarny, produkty są słabo
   widoczne”). Do każdego ciemnego koloru Luxrio dodane to samo światło (liniowo), więc czerń #000 → #1c1e22, a reszta
   palety zachowuje kolejność. Blok wypisuje: node motyw/paleta-tla.js grafit "#1c1e22" (wyższa baza = jaśniej).
   --black-color zostaje czarny: to też kolor tekstu na jasnych banerach i nakładka na zdjęcia. */
:root {
  --black-bg: #1c1e22;
  --bg-color1: #26282e;
  --bg-color2: #212429;
  --bg-color3: #23262c;
  --bg-color4: #272b31;
  --bg-color5: #1d1f23;
  --bg-color6: #272b32;
  --bg-color7: #212429;
  --bg-color8: #262a31;
  --bg-color9: #202327;
  --bg-color10: #262a31;
  --bg-color13: #272b32;
  --bg-color14: #23272d;
  --vs-border-color2: #262a30;
  --vs-border-color3: #2f333b;
  --vs-border-color4: #2b3039;
  --vs-border-color5: #383d48;
  --vs-border-color6: #2b2c2f;
  --vs-border-color7: #2e2e31;
  --footer-text-color: #8c8c8c;   /* było #6f6f6f: na jaśniejszej stopce kontrast 4,5:1 */
  --gray-color3: #8c8c8c;         /* było #7d7c7c (licznik znaków, podpowiedzi generatora): na tle 5,0:1, w polach 4,5:1 */
  --ntg-tlo: #1c1e22;
  --ntg-kafel: #23262c;
  --ntg-kafel-srodek: #4e535c;
}
/* Czerń wpisana na sztywno w motyw i ekran ładowania. */
.extra-shape, #navbars, .preloader { background-color: var(--ntg-tlo); }
/* Kafelki produktów: jaśniejszy środek za zdjęciem, jak oświetlone studio (ciemny łupek odcina się od tła). */
.product-style3 .product-img { background: radial-gradient(ellipse 75% 65% at 50% 45%, var(--ntg-kafel-srodek) 0%, var(--ntg-kafel) 100%); }
.product-style2 .product-img { background: radial-gradient(ellipse 70% 60% at 50% 50%, var(--ntg-kafel-srodek) 0%, transparent 100%); }
/* Scena 3D na karcie produktu: to samo światło za przedmiotem. */
#ntg-scena { background: radial-gradient(ellipse 60% 55% at 50% 52%, var(--ntg-kafel-srodek) 0%, transparent 100%); }
.banner-style { background-color: color-mix(in srgb, var(--bg-color4) 95%, transparent); }
/* Sekcje Elementora (ich CSS ładuje się po motywie, stąd body na początku): strona główna 25, stopka 137, nagłówek 1337.
   Sekcja „Prezenty z grawerem” ma ciemną fakturę z obrazka: mieszanie „screen” z kolorem bazowym ją rozjaśnia. */
body .elementor-25 .elementor-element.elementor-element-c25843e:not(.elementor-motion-effects-element-type-background) { background-color: var(--ntg-tlo); background-blend-mode: screen; }
body .elementor-137 .elementor-element.elementor-element-67f5b0e:not(.elementor-motion-effects-element-type-background), .footer-copyright.style2 { background-color: var(--bg-color3); }
body .elementor-1337 .elementor-element.elementor-element-b095fab:not(.elementor-motion-effects-element-type-background) { background-color: color-mix(in srgb, var(--bg-color10) 85%, transparent); }
/* Sekcja bonu (assets/css/voucher-galeria.css ma kolory na sztywno i ładuje się później). Karta i partnerzy mają tło
   strony, nie jaśniejsze: pomarańczowe „Voucher” i strzałki zostają przy kontraście 4,7:1 (jaśniej spadało do 4,2). */
body .ntg-vg { background: var(--ntg-tlo); border-top-color: #2b2f36; }
body .ntg-vg__photo::after { background: linear-gradient(180deg, color-mix(in srgb, var(--ntg-tlo) 60%, transparent) 0%, transparent 28%, transparent 66%, color-mix(in srgb, var(--ntg-tlo) 75%, transparent) 100%); }
body .ntg-vg__partner { background: var(--ntg-tlo); border-color: #343940; }
body .ntg-vg__step:not(:last-child) .ntg-vg__rail::after { background: #3c4048; }
body .ntg-vg-card { background: var(--ntg-tlo); border-color: #31353d; }
body .ntg-vg-card__lines { background: repeating-linear-gradient(0deg, #1e2026 0 1px, var(--ntg-tlo) 1px 4px); }
