/* WordPress/Astra/WooCommerce integration layer for the v2 design system. */
:root {
  --vsek-admin-offset: 0px;
}

body.admin-bar { --vsek-admin-offset: 32px; }

body.vsek-v2,
body.vsek-v2 #page,
body.vsek-v2 .site-content {
  margin: 0;
  min-height: 100%;
  padding: 0;
  width: 100%;
}

body.vsek-v2 .site-header { top: var(--vsek-admin-offset); }
body.vsek-v2 .ast-container { max-width: none; padding: 0; }
body.vsek-v2 .site-primary { margin: 0; padding: 0; width: 100%; }
body.vsek-v2 .ast-separate-container #primary { margin: 0; }
body.vsek-v2 .entry-content { margin: 0; }

.main-nav > ul,
.footer-nav > ul {
  display: contents;
  list-style: none;
  margin: 0;
  padding: 0;
}

.main-nav li,
.footer-nav li { display: contents; }

.brand--original .custom-logo { height: auto; max-height: 43px; width: 226px; }
.header-search input::placeholder { color: #7c8495; opacity: 1; }
.header-search .icon { height: 20px; width: 20px; }
.header-search-wrap { min-width: 0; position: relative; z-index: 30; }
.header-search-wrap .header-search { width: 100%; }
.header-search input#site-search,
.mobile-search input[data-vsek-search-input] { box-sizing: border-box; height: 100%; min-height: 0; }
.header-socials a[href="#"] { pointer-events: none; }
.header-socials .social-button.is-disabled { cursor: default; filter: grayscale(.25); opacity: .48; }

/* Astra's generic link/button rules are more specific than the v2 utility
   classes. Keep the approved orange/outline controls consistent everywhere. */
body.vsek-v2 a.button.button--primary,
body.vsek-v2 button.button.button--primary,
body.vsek-v2 input.button.button--primary {
  color: #fff;
  background: #fd940f;
  border: 1px solid #fd940f;
  border-radius: 12px;
  font-weight: 760;
}

body.vsek-v2 a.button.button--primary:hover,
body.vsek-v2 button.button.button--primary:hover,
body.vsek-v2 input.button.button--primary:hover {
  color: #fff;
  background: #e98200;
  border-color: #e98200;
}

/* Astra applies its blue button focus colour after the callback modal returns
   focus to its opener. Preserve the orange CTA in every interaction state. */
body.vsek-v2 .navigation-row button.header-callback,
body.vsek-v2 .navigation-row button.header-callback:visited,
body.vsek-v2 .navigation-row button.header-callback:focus,
body.vsek-v2 .navigation-row button.header-callback:focus-visible,
body.vsek-v2 .navigation-row button.header-callback:active,
body.vsek-v2.modal-is-open .navigation-row button.header-callback {
  -webkit-tap-highlight-color: transparent;
  appearance: none;
  color: #fff !important;
  background: #fd940f !important;
  background-color: #fd940f !important;
  background-image: none !important;
  border-color: #fd940f !important;
}
body.vsek-v2 .navigation-row button.header-callback:hover {
  color: #fff !important;
  background: #e98200 !important;
  background-color: #e98200 !important;
  border-color: #e98200 !important;
}

/* The expanding search belongs to header-main, whose compact-header animation
   normally clips overflow. Keep it above the navigation row while expanded. */
body.vsek-v2 .site-header .header-main { position: relative; z-index: 4; }
body.vsek-v2 .site-header:not(.is-compact) .header-main { overflow: visible; }
body.vsek-v2 .site-header .navigation-row { z-index: 3; }

/* Predictive catalogue search. */
.site-search-results {
  position: absolute;
  z-index: 1000;
  top: calc(100% + 9px);
  right: 0;
  left: 0;
  max-height: min(520px, 70vh);
  overflow-y: auto;
  padding: 8px;
  background: #fff;
  border: 1px solid #e1e3ec;
  border-radius: 16px;
  box-shadow: 0 22px 60px rgba(16, 19, 104, .18);
}
.site-search-results[hidden] { display: none !important; }
.site-search-results__status {
  padding: 11px 12px;
  margin: 0;
  color: #687086;
  font-size: 14px;
}
.site-search-result {
  display: grid;
  grid-template-columns: 54px minmax(0, 1fr) auto;
  align-items: center;
  gap: 12px;
  min-height: 66px;
  padding: 7px 10px;
  color: #101368;
  border-radius: 11px;
  text-decoration: none;
}
.site-search-result:hover,
.site-search-result.is-active {
  color: #101368;
  background: #f3f4ff;
}
.site-search-result__image {
  display: grid;
  width: 54px;
  height: 54px;
  overflow: hidden;
  background: #f6f7fb;
  border-radius: 9px;
  place-items: center;
}
.site-search-result__image img { width: 100%; height: 100%; object-fit: contain; }
.site-search-result__copy { min-width: 0; }
.site-search-result__copy strong,
.site-search-result__copy small { display: block; }
.site-search-result__copy strong { overflow: hidden; font-size: 14px; text-overflow: ellipsis; white-space: nowrap; }
.site-search-result__copy small { margin-top: 3px; color: #687086; font-size: 12px; }
.site-search-result__price { color: #101368; font-size: 14px; font-weight: 800; white-space: nowrap; }
.site-search-result--category { grid-template-columns: 42px minmax(0, 1fr) auto; }
.site-search-result--category .site-search-result__image { width: 42px; height: 42px; color: #2c7f88; background: #e9f8fa; }
.site-search-result--category .site-search-result__image svg { width: 21px; height: 21px; }
.site-search-results__all {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  margin-top: 4px;
  color: #101368;
  background: #fff8ee;
  border-radius: 10px;
  font-size: 13px;
  font-weight: 750;
}

/* Attribute help and instant catalogue filtering. */
.filter-group { position: relative; }
.filter-group__title { display: inline-flex; min-width: 0; align-items: center; gap: 8px; }
.filter-help {
  display: inline-grid;
  width: 21px;
  height: 21px;
  flex: 0 0 21px;
  padding: 0;
  color: #101368;
  background: #eef0fb;
  border: 1px solid rgba(16, 19, 104, .12);
  border-radius: 50%;
  font: 800 12px/1 Inter, sans-serif;
  cursor: help;
  place-items: center;
}
.filter-help:hover,
.filter-help[aria-expanded="true"] { color: #fff; background: #101368; }
.filter-help__bubble {
  position: relative;
  z-index: 3;
  margin: -5px 16px 13px;
  padding: 12px 13px;
  color: #485267;
  background: #f6f7ff;
  border: 1px solid #e1e3ef;
  border-radius: 11px;
  box-shadow: 0 10px 24px rgba(16, 19, 104, .09);
  font-size: 13px;
  line-height: 1.48;
}
.filter-help__bubble[hidden] { display: none !important; }
.filter-auto-status { display: block; color: #697286; font-size: 13px; line-height: 1.4; }
.catalog-filters.is-loading { cursor: progress; opacity: .74; pointer-events: none; }

body.vsek-v2 a.button.button--outline,
body.vsek-v2 button.button.button--outline {
  color: #101368;
  background: #fff;
  border: 1px solid rgba(16, 19, 104, .17);
  border-radius: 12px;
  font-weight: 740;
}

body.vsek-v2 a.button.button--outline:hover,
body.vsek-v2 button.button.button--outline:hover {
  color: #fd940f;
  background: #fff8ee;
  border-color: rgba(253, 148, 15, .4);
}

.woocommerce-notices-wrapper:not(:empty),
.woocommerce-message,
.woocommerce-info,
.woocommerce-error {
  border: 0;
  border-radius: 14px;
  box-shadow: 0 8px 30px rgba(16, 19, 104, .08);
  margin: 20px auto;
  max-width: 1240px;
}

.woocommerce-message { border-left: 4px solid #50b4be; }
.woocommerce-error { border-left: 4px solid #e14b4b; }

.catalog-product-grid > ul.products,
.catalog-product-grid.products,
.product-accessories ul.products {
  display: grid;
  gap: 20px;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  list-style: none;
  margin: 0;
  padding: 0;
}

.product-accessories ul.products { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.catalog-product-grid ul.products li.product,
.product-accessories li.product { float: none !important; margin: 0 !important; width: auto !important; }

/* The wrapper contains WooCommerce's own UL. It must not become a second
   three-column grid or the UL itself occupies only one third of the row. */
body.vsek-v2 .catalog-product-grid { display: block; width: 100%; }
body.vsek-v2 .catalog-product-grid > ul.products {
  display: grid !important;
  grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
  width: 100% !important;
}

/* List mode needs to beat Astra's flex card declaration as well as the
   WooCommerce column widths. */
body.vsek-v2 .catalog-product-grid.is-list > ul.products,
body.vsek-v2 .catalog-product-grid > ul.products.is-list {
  grid-template-columns: minmax(0, 1fr) !important;
}
body.vsek-v2 .catalog-product-grid.is-list > ul.products > li.product.product-card,
body.vsek-v2 .catalog-product-grid > ul.products.is-list > li.product.product-card {
  display: grid !important;
  width: 100% !important;
  min-height: 290px;
  grid-template-columns: minmax(240px, 30%) minmax(0, 1fr);
  grid-template-rows: auto 1fr;
}
body.vsek-v2 .catalog-product-grid.is-list .product-card__top { grid-column: 1 / -1; grid-row: 1; }
body.vsek-v2 .catalog-product-grid.is-list .product-card__image { height: 100%; min-height: 230px; grid-column: 1; grid-row: 1 / 3; padding-top: 44px; }
body.vsek-v2 .catalog-product-grid.is-list .product-card__body { grid-column: 2; grid-row: 1 / 3; padding: 30px; }

.product-card__rating .star-rating {
  color: #fd940f;
  float: none;
  font-size: 14px;
  margin: 0;
}

.product-card h2.woocommerce-loop-product__title {
  color: #101368;
  font-size: 19px;
  font-weight: 780;
  line-height: 1.25;
  margin: 0;
  padding: 0;
}
.product-card h2.woocommerce-loop-product__title a { color: inherit; text-decoration: none; }
.product-card h2.woocommerce-loop-product__title a:hover { color: #fd940f; }

.product-card__price .price { align-items: baseline; display: flex; flex-wrap: wrap; gap: 8px; }
.product-card__price .price ins { order: -1; text-decoration: none; }
.product-card__price .price del { opacity: .55; }

.product-card .add_to_cart_button,
.product-card .product_type_variable,
.product-card .product_type_external {
  align-items: center;
  display: flex;
  justify-content: center;
  text-decoration: none;
}

.product-card .added_to_cart { display: block; margin-top: 8px; text-align: center; }
.product-card__tools button.is-active { background: #fff1df; color: #fd940f; }

.vsek-product-carousel { overflow: hidden; }
.vsek-product-carousel .product-grid {
  display: grid;
  gap: 20px;
  grid-auto-columns: calc((100% - 60px) / 4);
  grid-auto-flow: column;
  list-style: none;
  margin: 0;
  overflow-x: auto;
  padding: 4px 2px 18px;
  scroll-behavior: smooth;
  scroll-snap-type: x mandatory;
  scrollbar-color: #c8cad8 transparent;
}
.vsek-product-carousel > .product-grid {
  grid-template-columns: none !important;
  width: 100% !important;
}
.vsek-product-carousel .product-card { float: none !important; margin: 0 !important; width: auto !important; }
.vsek-product-carousel .product-card { scroll-snap-align: start; }
.vsek-carousel-controls { display: flex; gap: 8px; }
.vsek-carousel-controls button { background: #fff; border: 1px solid #e1e3ec; border-radius: 50%; color: #101368; height: 44px; width: 44px; }
.vsek-carousel-controls button:hover { border-color: #fd940f; color: #fd940f; }
.vsek-empty { background: #f6f7fb; border-radius: 16px; color: #657080; padding: 28px; width: 100%; }

.catalog-product-grid.is-list ul.products,
.catalog-product-grid ul.products.is-list { grid-template-columns: 1fr !important; }
.catalog-product-grid.is-list .product-card { display: grid; grid-template-columns: 220px 1fr; }

.vsek-product-gallery .woocommerce-product-gallery {
  float: none !important;
  margin: 0 !important;
  width: 100% !important;
}
.vsek-product-gallery { position: relative; }
.vsek-product-gallery > .product-stage__badges { left: 18px; position: absolute; top: 18px; z-index: 5; }
.vsek-product-gallery > .product-stage__tools { position: absolute; right: 18px; top: 18px; z-index: 5; }

.vsek-product-gallery .woocommerce-product-gallery__wrapper {
  background: #fff;
  border: 1px solid #e9ebf3;
  border-radius: 24px;
  margin: 0;
  overflow: hidden;
  padding: 32px;
}

.vsek-product-gallery .woocommerce-product-gallery__image img { margin: auto; max-height: 520px; object-fit: contain; }
.vsek-product-gallery .flex-control-thumbs { display: grid; gap: 10px; grid-template-columns: repeat(4, 1fr); list-style: none; margin: 12px 0 0; padding: 0; }
.vsek-product-gallery .flex-control-thumbs li { border: 1px solid #e9ebf3; border-radius: 12px; cursor: pointer; overflow: hidden; }
.vsek-product-gallery .flex-control-thumbs img { aspect-ratio: 1; object-fit: contain; padding: 8px; }

.vsek-product-cart form.cart { margin: 0; }
.vsek-product-cart form.cart .quantity { float: none; margin: 0; }
.vsek-product-cart form.cart .button { background: #fd940f; border-radius: 12px; min-height: 52px; }
.vsek-product-cart .variations { margin: 0 0 18px; width: 100%; }
.vsek-product-cart .variations th,
.vsek-product-cart .variations td { display: block; padding: 5px 0; text-align: left; }
.vsek-product-cart .variations select { border: 1px solid #dfe2ec; border-radius: 10px; min-height: 46px; width: 100%; }
.vsek-product-cart .single_variation_wrap { margin-top: 14px; }

.product-tab-panel[hidden] { display: none !important; }
.product-tab-panel .woocommerce-Reviews { max-width: none; }
.product-specifications table { border-collapse: collapse; width: 100%; }
.product-specifications th,
.product-specifications td { border-bottom: 1px solid #e9ebf3; padding: 14px 10px; text-align: left; }

.vsek-content-shell { padding: 56px 0 88px; }
.vsek-content-shell__inner { margin: 0 auto; max-width: 840px; }
.vsek-content-shell h1 { color: #101368; font-size: clamp(34px, 5vw, 58px); margin-bottom: 28px; }
.vsek-content-shell .entry-content { font-size: 18px; line-height: 1.75; }

/* Astra scroll-to-top: circular hit area with a truly centred glyph. */
body.vsek-v2 #ast-scroll-top.ast-scroll-top-icon {
  box-sizing: border-box;
  width: 52px;
  height: 52px;
  padding: 0 !important;
  border-radius: 50% !important;
  line-height: 1;
  place-items: center;
}
body.vsek-v2 #ast-scroll-top.ast-scroll-top-icon.active { display: grid !important; }
body.vsek-v2 #ast-scroll-top .ast-icon,
body.vsek-v2 #ast-scroll-top .icon-arrow { display: grid; width: 100%; height: 100%; place-items: center; }
body.vsek-v2 #ast-scroll-top .ast-arrow-svg { display: block; margin: 0; }

/* Product-page cleanup requested for v1.0.2. */
body.vsek-v2.single-product .single-product-category { display: none !important; }
body.vsek-v2.single-product .product-description__copy { width: 100%; max-width: none; }

/* Keep secondary copy legible throughout the store. */
body.vsek-v2 { font-size: 16px; }
body.vsek-v2 .catalog-toolbar__summary span,
body.vsek-v2 .catalog-sort span,
body.vsek-v2 .filter-options label,
body.vsek-v2 .catalog-product-card__rating,
body.vsek-v2 .product-card__type,
body.vsek-v2 .product-card__rating,
body.vsek-v2 .stock { font-size: 12px; }
body.vsek-v2 .stock.out-of-stock { color: #fd940f !important; }
body.vsek-v2 .filter-group summary,
body.vsek-v2 .product-card ul,
body.vsek-v2 .service-card p,
body.vsek-v2 .advantage-grid article p { font-size: 14px; }
body.vsek-v2 .product-tabs button { font-size: 14px; }

.footer-rating-badge { width: 150px; height: 50px; margin-top: 18px; overflow: hidden; border-radius: 8px; }
.footer-rating-badge iframe { display: block; width: 150px; height: 50px; border: 0; }

/* Eight service categories in two balanced rows. */
.section-heading__actions { display: flex; align-items: center; gap: 14px; }
.services .vsek-carousel-controls button:first-child .icon { transform: rotate(90deg); }
.services .vsek-carousel-controls button:last-child .icon { transform: rotate(-90deg); }
.services .vsek-carousel-controls { display: none; }
.service-card-carousel { width: 100%; overflow: visible; }
body.vsek-v2 .services .service-card-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 18px;
  overflow: visible;
  padding: 3px 2px 18px;
}
body.vsek-v2 .services .service-card { min-width: 0; }
body.vsek-v2 .services .service-card:nth-child(7) .service-card__icon::before { content: "⚙"; }
body.vsek-v2 .services .service-card:nth-child(8) .service-card__icon::before { content: "▶"; }

/* Product photography on the homepage is shown neutrally: no decorative tilt
   or per-card colour cast that changes the appearance of the actual product. */
body.vsek-v2 .popular .product-card__image,
body.vsek-v2 .popular .product-card:nth-child(n) .product-card__image {
  background: #fff !important;
}
body.vsek-v2 .popular .product-card__image img,
body.vsek-v2 .popular .product-card:nth-child(n) .product-card__image img,
body.vsek-v2 .popular .product-card:hover .product-card__image img {
  transform: none !important;
}

.vsek-honeypot {
  height: 1px !important;
  left: -10000px !important;
  opacity: 0 !important;
  overflow: hidden !important;
  position: absolute !important;
  width: 1px !important;
}

[data-vsek-lead-form] button[aria-busy="true"] { cursor: wait; opacity: .72; }
[data-vsek-lead-form].is-success .field,
[data-vsek-lead-form].is-success > .consent { display: none; }
[data-vsek-lead-form].is-success button[type="submit"] { display: none; }
[data-vsek-lead-form].is-success .form-message { color: #18764a; font-weight: 700; }

.featured-article__visual > img,
.article-card__visual > img,
.article-hero__visual > img,
.related-visual > img { height: 100%; object-fit: cover; width: 100%; }

.vsek-post-pagination { margin-top: 34px; }
.vsek-post-pagination .nav-links { display: flex; gap: 8px; justify-content: center; }
.vsek-post-pagination a,
.vsek-post-pagination .current { align-items: center; border: 1px solid #e1e3ec; border-radius: 10px; display: inline-flex; height: 42px; justify-content: center; min-width: 42px; padding: 0 10px; text-decoration: none; }
.vsek-post-pagination .current { background: #101368; color: #fff; }

.screen-reader-text {
  clip: rect(1px, 1px, 1px, 1px);
  clip-path: inset(50%);
  height: 1px;
  overflow: hidden;
  position: absolute !important;
  width: 1px;
  word-wrap: normal !important;
}

:focus-visible { outline: 3px solid rgba(253, 148, 15, .55); outline-offset: 3px; }

@media (max-width: 980px) {
  body.admin-bar { --vsek-admin-offset: 46px; }
  body.vsek-v2 .catalog-product-grid > ul.products { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
  .product-accessories ul.products { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .vsek-product-carousel .product-grid { grid-auto-columns: calc((100% - 20px) / 2); }
  .header-search-wrap:not(.header-search-wrap--mobile) { display: none; }
  .header-search-wrap--mobile { display: block; margin-bottom: 20px; }
  .header-search-wrap--mobile .mobile-search { margin-bottom: 0; }
  .site-search-results--mobile { position: relative; top: auto; margin-top: 8px; }
  body.vsek-v2 .services .service-card-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 600px) {
  body.admin-bar { --vsek-admin-offset: 0px; }
  body.vsek-v2 .catalog-product-grid > ul.products,
  .product-accessories ul.products { grid-template-columns: 1fr !important; }
  .vsek-product-carousel .product-grid { grid-auto-columns: min(86%, 330px); }
  .catalog-product-grid.is-list .product-card { display: block; }
  body.vsek-v2 .catalog-product-grid.is-list > ul.products > li.product.product-card,
  body.vsek-v2 .catalog-product-grid > ul.products.is-list > li.product.product-card { display: flex !important; min-height: 0; }
  .section-heading__actions { width: 100%; align-items: stretch; flex-direction: column; }
  .section-heading__actions .vsek-carousel-controls { order: 2; }
  body.vsek-v2 .services .service-card-grid { grid-template-columns: 1fr; }
}

/* Release 1.0.6: consistent control alignment and dynamic category artwork. */
body.vsek-v2 .button.button--primary,
body.vsek-v2 .button.button--outline,
body.vsek-v2 .product-card__buy {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  line-height: 1.2;
}

body.vsek-v2 .button.button--primary > .icon--arrow,
body.vsek-v2 .button.button--outline > .icon--arrow {
  display: none;
}

body.vsek-v2 .product-card__buy {
  padding-top: 0;
  padding-bottom: 0;
  text-align: center;
}

body.vsek-v2 .quiz__label {
  color: #eff7ff;
  background: rgb(255 169 45 / 19%);
  border-color: rgb(255 205 134 / 36%);
}

/* Keep only the main quiz heading light on the dark quiz background. */
body.vsek-v2 .quiz .quiz__intro > h2 {
  color: #eff7ff;
}

body.vsek-v2 .vsek-carousel-controls button,
body.vsek-v2 [data-carousel-prev],
body.vsek-v2 [data-carousel-next] {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  line-height: 1;
  text-align: center;
}

body.vsek-v2 .vsek-carousel-controls button > .icon {
  display: block;
  margin: 0;
}

body.vsek-v2 .category-card__art > img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  filter: drop-shadow(0 16px 18px rgb(16 19 104 / 15%));
  transition: transform var(--transition);
}

body.vsek-v2 .category-card:hover .category-card__art > img {
  transform: translateY(-4px) scale(1.025);
}

body.vsek-v2 .stock.on-backorder,
body.vsek-v2 .product-stock.on-backorder,
body.vsek-v2 .product-stock.out-of-stock {
  color: #e98200 !important;
}

.mobile-menu__socials {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin-top: 22px;
  padding: 16px 18px;
  background: #f6f7ff;
  border: 1px solid #e8e9f2;
  border-radius: 15px;
}

.mobile-menu__socials > strong {
  color: #101368;
  font-size: 14px;
}

.mobile-menu__socials > div {
  display: flex;
  gap: 9px;
}

.mobile-menu__socials .is-disabled {
  cursor: default;
  opacity: .45;
}

@media (max-width: 600px) {
  body.vsek-v2 .button.button--primary {
    align-items: center;
    justify-content: center;
  }

  body.vsek-v2 .button.button--primary > .icon--cart,
  body.vsek-v2 .button.button--primary > span {
    align-self: center;
  }
}

@media (max-width: 350px) {
  body.vsek-v2 .header-main__inner {
    gap: 3px;
  }

  body.vsek-v2 .brand--original {
    margin-right: 0;
  }

  body.vsek-v2 .mobile-sticky-sales-phone {
    min-width: 106px;
    flex: 0 0 106px;
    align-items: flex-start;
    justify-content: center;
    margin-right: 2px;
    margin-left: 0;
    transform: translateX(-3px);
  }

  body.vsek-v2 .cart-button--mobile {
    margin-left: 0;
  }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; transition-duration: .01ms !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; }
}
