/* Small local overrides for the static copy. The legacy theme styles remain intact. */

.contact_form input:disabled,
.contact_form textarea:disabled,
#contact-form input:disabled,
#contact-form textarea:disabled,
.contact-form input:disabled,
.contact-form textarea:disabled {
  opacity: 1;
  color: inherit;
  -webkit-text-fill-color: currentColor;
  cursor: default;
}

.contact_form button:disabled,
.contact_form input[type="submit"]:disabled,
#contact-form button:disabled,
#contact-form input[type="submit"]:disabled,
.contact-form button:disabled,
.contact-form input[type="submit"]:disabled,
#place_order:disabled {
  cursor: not-allowed !important;
  opacity: 1;
}

#place_order:disabled:hover,
#place_order:disabled:focus {
  border-color: #56479e !important;
  background-color: #56479e !important;
  color: #fff !important;
}

#contact-form input[type="submit"]:disabled {
  appearance: none !important;
  -webkit-appearance: none !important;
  border-color: #56479e !important;
  background: #fff !important;
  color: #666 !important;
}

#contact-form input[type="submit"]:disabled:hover,
#contact-form input[type="submit"]:disabled:focus {
  border-color: #56479e !important;
  background: #56479e !important;
  color: #fff !important;
  cursor: not-allowed !important;
  opacity: 1 !important;
}

.fullwidth-text-white #contact-form input[type="submit"]:disabled {
  border-color: #fff !important;
  background: transparent !important;
  color: #fff !important;
}

.fullwidth-text-white #contact-form input[type="submit"]:disabled:hover,
.fullwidth-text-white #contact-form input[type="submit"]:disabled:focus {
  border-color: #fff !important;
  background: #fff !important;
  color: #333 !important;
}

#topcarta > a[href="/cart"],
#topcarta > a[href="/cart/"] {
  position: relative;
  display: inline-flex;
  width: 24px;
  height: 24px;
  align-items: center;
  justify-content: center;
}

#topcarta > a > svg {
  display: block;
  width: 20px;
  height: 18px !important;
  margin: 0 !important;
}

#topcarta > a > span.cart-counts {
  position: absolute !important;
  top: -6px !important;
  right: -8px !important;
  left: auto !important;
  display: inline-flex;
  width: 20px !important;
  height: 20px !important;
  align-items: center;
  justify-content: center;
  margin: 0 !important;
  border-radius: 50%;
  background: #ff4f40;
  color: #fff;
  font: 12px/1 Arial, sans-serif;
  z-index: 3002;
  transition: transform .18s ease;
}

#topcarta > a > span.cart-counts:empty {
  display: none !important;
}

#topcarta > a > span.cart-counts.static-pulse {
  animation: static-cart-pulse .5s ease;
}

@keyframes static-cart-pulse {
  0%, 100% { transform: scale(1); }
  45% { transform: scale(1.28); }
}

@media (max-width: 979px) {
  #header #topcarta {
    position: absolute !important;
    top: 50% !important;
    right: 82px !important;
    float: none !important;
    margin: 0 !important;
    transform: translateY(-46%) !important;
  }

  #header #advanced_menu_toggle {
    position: absolute !important;
    top: 2px !important;
    right: 20px !important;
    display: block !important;
    float: none !important;
    width: 42px !important;
    height: 60px !important;
    margin: 0 !important;
    line-height: 60px !important;
    text-align: center !important;
    z-index: 3001;
  }

  #header #logo {
    max-width: calc(100% - 140px) !important;
    overflow: hidden;
  }

  #header #logo .logo-h1 {
    margin-right: 0;
    white-space: nowrap;
  }
}

@media (max-width: 769px) {
  #header #logo {
    margin-left: 16px !important;
    max-width: calc(100% - 140px) !important;
  }
}

@media (max-width: 405px) {
  #header #logo .smallphone {
    display: none !important;
  }

  #header #logo .logo-h1 {
    font-size: clamp(14px, 4.5vw, 20px);
  }
}

button,
a.button,
.ux-btn,
.promote-button,
.woocommerce a.button,
.woocommerce button.button,
.woocommerce .button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  vertical-align: middle;
}

/* Blog previous/next links contain layered labels; center each label within
   the existing fixed-height control instead of flex-centering the link. */
.post-navi-a {
  display: block;
}

.post-navi-a .post-navi-a-inn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
  line-height: normal;
}

/* Keep desktop navigation gaps even, including the final Contact-to-cart gap. */
@media (min-width: 1200px) {
  #header #navi > div > ul > li {
    margin-right: 30px;
  }

  #header #navi > div > ul > li:last-child {
    margin-right: -4px;
  }
}

@media (min-width: 980px) {
  /* Keep a little scroll range available so the 404 page can animate to its
     intended opening position while the fixed header and footer stay in place. */
  body.error404 {
    min-height: calc(100vh + 120px);
  }

  body.error404 > #wrap-outer {
    min-height: calc(100vh + 120px);
  }

  html:has(body.error404) {
    scroll-behavior: auto !important;
  }
}

.post-navi-a .post-navi-front,
.post-navi-a .post-navi-back {
  display: flex;
  align-items: center;
  justify-content: center;
  line-height: 1.2;
}

/* Keep the static service tables clean and lightly striped. */
body.page-id-3500 .tablepress {
  margin-top: 1em !important;
  margin-bottom: 0 !important;
  border: 0 !important;
}

body.page-id-3500 .tablepress th,
body.page-id-3500 .tablepress td,
body.page-id-3500 .tablepress thead th,
body.page-id-3500 .tablepress tbody td,
body.page-id-3500 .tablepress tfoot th {
  border: 0 !important;
}

body.page-id-3500 .tablepress tbody tr {
  border-top: 0 !important;
}

body.page-id-3500 .tablepress .odd td {
  background-color: #f8f7fc !important;
}

.post-navi-a .post-navi-front {
  height: 100%;
}

.post-navi-a .post-navi-back {
  box-sizing: border-box;
  height: 100%;
}

input[type="submit"],
input[type="button"] {
  text-align: center;
  vertical-align: middle;
}

.static-cart-message {
  display: block !important;
}

.static-cart-updated-wrap {
  height: 0;
  overflow: hidden;
  transition: height .42s cubic-bezier(.2, .75, .25, 1);
}

.static-cart-updated-message {
  opacity: 0;
  transition: opacity .28s ease;
}

.static-cart-updated-wrap.is-open .static-cart-updated-message {
  opacity: 1;
}

@media (prefers-reduced-motion: reduce) {
  .static-cart-updated-wrap,
  .static-cart-updated-message { transition: none; }
}

.woocommerce table.static-cart-table,
.woocommerce table.woocommerce-checkout-review-order-table {
  border-collapse: separate !important;
  border-spacing: 1px !important;
  border-radius: 0 !important;
  background: #fff !important;
  box-shadow: none !important;
}

.woocommerce table.static-cart-table {
  border: 1px solid #e1e1e1 !important;
}

.woocommerce table.woocommerce-checkout-review-order-table {
  border: 1px solid #e1e1e1 !important;
}

.woocommerce table.static-cart-table th,
.woocommerce table.static-cart-table td,
.woocommerce table.woocommerce-checkout-review-order-table th,
.woocommerce table.woocommerce-checkout-review-order-table td {
  border: 0 !important;
  box-shadow: none !important;
}

.woocommerce table.static-cart-table thead th,
.woocommerce table.woocommerce-checkout-review-order-table thead th {
  background: #e1dcf4 !important;
}

.woocommerce table.static-cart-table tbody td,
.woocommerce table.static-cart-table tfoot td,
.woocommerce table.woocommerce-checkout-review-order-table tbody td {
  background: #fff !important;
}

.woocommerce table.static-cart-table td.product-remove,
.woocommerce table.static-cart-table td.product-thumbnail {
  text-align: center !important;
  vertical-align: middle !important;
}

.static-cart-table td.product-remove button.remove {
  float: none !important;
  margin: 0 auto !important;
}

.static-cart-table td.product-thumbnail > a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.static-cart-table .product-thumbnail img {
  margin-right: auto;
  margin-left: auto;
}

.woocommerce table.shop_table_responsive.static-cart-table tfoot tr.cart-subtotal td::before {
  content: none !important;
  display: none !important;
}

.woocommerce table.static-cart-table tfoot td::before,
.woocommerce table.woocommerce-checkout-review-order-table tfoot td::before,
.woocommerce table.woocommerce-checkout-review-order-table tfoot th::before {
  content: none !important;
  display: none !important;
}

.static-cart-table .product-thumbnail img {
  display: block;
  width: 76px;
  height: auto;
}

.static-cart-table .product-remove a {
  cursor: pointer;
}

.static-cart-table .product-remove button.remove {
  display: block;
  width: 1em;
  height: 1em;
  margin: 0 auto;
  padding: 0;
  appearance: none;
  border: 0;
  border-radius: 50%;
  background: transparent;
  color: red !important;
  font: 700 1.5em/1 Arial, sans-serif;
  text-align: center;
  text-decoration: none;
  transition: color .2s ease, background-color .2s ease;
  cursor: pointer;
}

.static-cart-table .product-remove button.remove:hover,
.static-cart-table .product-remove button.remove:focus-visible {
  background: red;
  color: #fff !important;
}

.woocommerce .wc-proceed-to-checkout a.checkout-button,
.woocommerce .return-to-shop a.button {
  border: 2px solid #56479e !important;
  border-radius: 0 !important;
  background: #fff !important;
  color: #56479e !important;
  font-family: 'pt sans narrow', sans-serif;
  transition: background-color .5s ease-out, color .5s ease-out, border-color .5s ease-out;
}

.woocommerce .wc-proceed-to-checkout a.checkout-button:hover,
.woocommerce .wc-proceed-to-checkout a.checkout-button:focus,
.woocommerce .return-to-shop a.button:hover,
.woocommerce .return-to-shop a.button:focus {
  border-color: #56479e !important;
  background: #56479e !important;
  color: #fff !important;
}

.woocommerce .wc-proceed-to-checkout a.checkout-button {
  display: flex;
  align-items: center;
  justify-content: center;
}

.woocommerce .return-to-shop a.button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.woocommerce .return-to-shop a.wc-backward {
  padding-top: 20px !important;
  padding-bottom: 20px !important;
}

.woocommerce #place_order {
  box-sizing: border-box !important;
  min-height: 50px !important;
  height: 50px !important;
  padding: 0 14px !important;
  line-height: 46px !important;
}

.woocommerce-checkout #billing_city {
  height: 30px !important;
  box-sizing: border-box !important;
  line-height: normal !important;
  padding: 0 34px 0 10px !important;
  vertical-align: middle !important;
  appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%23777' stroke-width='1.4'/%3E%3C/svg%3E") !important;
  background-repeat: no-repeat !important;
  background-position: right 10px center !important;
  background-size: 12px 8px !important;
}

.woocommerce a.add_to_cart_button,
.woocommerce button.single_add_to_cart_button {
  transition: background-color .5s ease-out, color .5s ease-out, border-color .5s ease-out;
}

.woocommerce .single_add_to_cart_button.loading,
.woocommerce .add_to_cart_button.loading {
  pointer-events: none;
}

.woocommerce .static-added-to-cart {
  display: block !important;
  margin-top: 8px;
  color: #666;
  text-decoration: none;
}

.static-cart-table .static-quantity {
  display: inline-flex;
  align-items: stretch;
  width: auto;
  border: 1px solid #dadada;
}

.static-cart-table .static-quantity button,
.static-cart-table .static-quantity input {
  min-width: 34px;
  height: 38px;
  margin: 0;
  border: 0;
  background: #fff;
  color: inherit;
  text-align: center;
}

.static-cart-table .static-quantity button {
  cursor: pointer;
}

.static-cart-table .static-quantity button:hover,
.static-cart-table .static-quantity button:focus-visible {
  background: #56479e;
  color: #fff;
}

.static-cart-table .static-quantity input {
  width: 42px;
  padding: 0 4px;
  border-right: 1px solid #dadada;
  border-left: 1px solid #dadada;
  appearance: textfield;
}

.static-cart-table .static-quantity input::-webkit-inner-spin-button,
.static-cart-table .static-quantity input::-webkit-outer-spin-button {
  margin: 0;
  appearance: none;
}

.static-checkout-empty {
  margin: 24px 0;
}

#shipping_method {
  margin: 0;
  padding: 0;
  list-style: none;
}

#shipping_method li {
  list-style: none;
}

#shipping_method li label {
  line-height: 1.45;
}

@media (max-width: 767px) {
  #content {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    box-sizing: border-box !important;
  }

  #content_wrap.container {
    width: 90% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    box-sizing: border-box !important;
  }

  .woocommerce,
  .woocommerce-cart-form,
  .cart-collaterals,
  .cart_totals {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    box-sizing: border-box !important;
  }

  .woocommerce table.shop_table_responsive.static-cart-table {
    display: block !important;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    table-layout: fixed !important;
    box-sizing: border-box !important;
  }

  .woocommerce table.shop_table_responsive.static-cart-table > tbody,
  .woocommerce table.shop_table_responsive.static-cart-table > tfoot,
  .woocommerce table.shop_table_responsive.static-cart-table > tfoot > tr,
  .woocommerce table.shop_table_responsive.static-cart-table > tbody > tr {
    display: block !important;
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
  }

  .woocommerce table.shop_table_responsive.static-cart-table tr td {
    display: block !important;
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box !important;
    white-space: normal !important;
    overflow-wrap: anywhere !important;
  }

  .woocommerce table.shop_table_responsive.static-cart-table tr.cart_item td:not(.product-remove):not(.product-thumbnail) {
    display: flex !important;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    text-align: right !important;
  }

  .woocommerce table.shop_table_responsive.static-cart-table tr.cart_item td::before {
    float: none !important;
    width: auto !important;
    margin: 0 !important;
    flex: 0 0 auto;
    text-align: left !important;
  }

  .woocommerce table.shop_table_responsive.static-cart-table td.product-name,
  .woocommerce table.shop_table_responsive.static-cart-table td.product-name a {
    white-space: normal !important;
    overflow-wrap: anywhere !important;
  }

  .woocommerce table.shop_table_responsive.static-cart-table td.product-name a {
    flex: 1 1 auto;
    min-width: 0;
    text-align: right;
  }

  .woocommerce table.shop_table_responsive.static-cart-table td.product-thumbnail {
    display: none !important;
  }

  .woocommerce table.shop_table_responsive.static-cart-table tr td.product-remove {
    display: flex !important;
    align-items: center;
    justify-content: flex-start !important;
    text-align: left !important;
  }

  .static-cart-table td.product-remove::before,
  .static-cart-table td.product-thumbnail::before {
    content: none !important;
    display: none !important;
  }

  .woocommerce table.shop_table_responsive.static-cart-table td.product-remove button.remove {
    flex: 0 0 auto;
    margin-left: 0 !important;
    margin-right: auto !important;
  }

  .woocommerce table.shop_table_responsive.static-cart-table tfoot tr.cart-subtotal td::before {
    content: none !important;
    display: none !important;
  }

  .woocommerce table.shop_table_responsive.static-cart-table tfoot tr.cart-subtotal td:first-child {
    text-align: right !important;
  }

  .static-cart-table .product-thumbnail img {
    width: 56px;
  }

  .static-cart-table .product-quantity {
    min-width: 0;
  }
}

/* Keep the catalog label's text space when the button is centered. */
.woocommerce a.add_to_cart_button {
  display: inline-block !important;
}

/* Inputs do not support flex text alignment, so center their text with the
   same inner line height while preserving the existing button dimensions. */
#contact-form input[type="submit"],
.contact_form input[type="submit"],
.contactform input[type="submit"] {
  line-height: 46px !important;
  text-align: center !important;
}

#place_order {
  box-sizing: border-box !important;
  min-height: 50px !important;
  height: 50px !important;
  padding: 0 14px !important;
  line-height: 46px !important;
  display: inline-block !important;
  vertical-align: middle !important;
  text-align: center !important;
}

#place_order.button {
  background: #fff !important;
  color: #56479e !important;
}

#place_order.button:disabled:hover,
#place_order.button:disabled:focus {
  background: #56479e !important;
  color: #fff !important;
}

/* The legacy isotope script lays out the team cards as absolute items. A
   normal grid keeps all four visible and adapts cleanly at narrow widths. */
#team.fullwidth-wrap {
  height: auto !important;
  min-height: 0 !important;
}

#team .container-isotope {
  position: relative !important;
  width: 100% !important;
  height: auto !important;
}

#team .isotope.team-isotope {
  display: grid !important;
  grid-template-columns: minmax(0, 1fr);
  gap: 0;
  position: relative !important;
  width: 100% !important;
  height: auto !important;
  margin: 0 !important;
  opacity: 1 !important;
  transform: none !important;
}

#team .isotope.team-isotope > .isotope-item {
  display: block !important;
  position: relative !important;
  inset: auto !important;
  width: 100% !important;
  height: auto !important;
  margin: 0 !important;
  transform: none !important;
}

#team .isotope.team-isotope > .isotope-item > .inside,
#team .team-item,
#team .team-item .img-wrap,
#team .team-item .team-img {
  width: 100% !important;
}

@media (min-width: 600px) {
  #team .isotope.team-isotope {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (min-width: 981px) {
  #team.fullwidth-wrap {
    padding-top: 80px !important;
  }

  #team .isotope.team-isotope {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}

/* Keep the home page's split photo sections visible and legible when the
   legacy 50/50 columns become too narrow for tablet and phone widths. */
@media (max-width: 979px) {
  body.page-id-3489 .fullwidth-half .full-half-inn > .row-fluid {
    display: flex;
    flex-wrap: wrap;
  }

  body.page-id-3489 .fullwidth-half .full-half-inn > .row-fluid > .fullwrap-half {
    box-sizing: border-box;
    float: none !important;
    width: 100% !important;
    margin-left: 0 !important;
  }

  body.page-id-3489 .fullwidth-half .full-half-inn > .row-fluid > .fullwrap-half-bg {
    display: block !important;
    visibility: visible !important;
    height: auto !important;
    min-height: 0 !important;
    aspect-ratio: 3 / 2;
    background-color: #fff;
    background-position: center !important;
    background-repeat: no-repeat !important;
    background-size: contain !important;
  }

  body.page-id-3489 .fullwidth-half .full-half-inn > .row-fluid > .fullwrap-half-content {
    padding: 36px clamp(24px, 8vw, 80px) !important;
  }
}

#top-slider.static-home-slider {
  position: relative;
  width: 100%;
  height: min(1400px, calc(100vh + 100px));
  min-height: 480px;
  overflow: hidden;
  background: #fff;
}

.static-home-slider__slide {
  position: absolute;
  inset: 0;
  opacity: 0;
  pointer-events: none;
  transition: opacity 1.1s ease;
}

.static-home-slider__slide.is-active {
  opacity: 1;
  pointer-events: auto;
}

.static-home-slider__photo {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  max-width: none;
  object-fit: cover;
  object-position: center;
}

.static-home-slider__logo {
  position: absolute;
  top: 50%;
  left: 0;
  display: block;
  width: 100%;
  height: auto;
  max-width: none;
  transform: translateY(-50%);
}

.static-home-slider__dots {
  position: absolute;
  top: 50%;
  right: 26px;
  z-index: 2;
  display: flex;
  flex-direction: column;
  gap: 8px;
  transform: translateY(-50%);
}

.static-home-slider__dots button {
  box-sizing: border-box;
  width: 17px;
  height: 17px;
  min-width: 17px;
  min-height: 17px;
  padding: 0;
  border: 2px solid rgba(40, 40, 40, .42);
  border-radius: 50%;
  background: rgba(255, 255, 255, .82);
  cursor: pointer;
}

.static-home-slider__dots button[aria-current="true"] {
  border-color: #191919;
  background: #fff;
}

@media (max-width: 979px) {
  #top-slider.static-home-slider {
    height: auto !important;
    min-height: 0;
    aspect-ratio: 3 / 2;
    background: #fff;
  }

  #top-slider.static-home-slider .static-home-slider__photo {
    object-fit: contain;
    background: #fff;
  }

  .static-home-slider__dots {
    right: 14px;
  }

  .static-home-slider__dots button {
    width: 14px;
    height: 14px;
    min-width: 14px;
    min-height: 14px;
  }
}

@media (max-width: 599px) {
  .static-home-slider__dots {
    display: none;
  }
}

/* Homepage preloader: draw a centered rule, expand its color vertically,
   fade the logo tile, then fade the full overlay. */
.page-loading {
  --loader-logo-size: clamp(150px, 19vh, 210px);
  --loader-logo-offset: clamp(75px, 9.5vh, 105px);
  z-index: 9999;
  overflow: hidden;
  background: #e3e6ff !important;
  transition: opacity .7s ease, visibility 0s linear .7s;
}

.page-loading.visible {
  opacity: 1 !important;
  visibility: visible !important;
  pointer-events: auto;
  transition: opacity .7s ease;
}

.page-loading::before {
  content: "";
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  background: #a89fcc;
  z-index: 0;
  transform: scaleY(0);
  transform-origin: center;
  transition: transform .72s cubic-bezier(.72, 0, .28, 1);
}

.page-loading.static-home-loader.static-loader-expanding::before {
  transform: scaleY(1);
}

.page-loading .page-loading-inn {
  z-index: 1;
  background: transparent !important;
}

.page-loading .page-loading-transform {
  position: fixed;
  top: calc(39.5% - var(--loader-logo-offset));
  left: calc(50% - var(--loader-logo-offset));
  width: var(--loader-logo-size);
  height: var(--loader-logo-size);
  margin: 0;
  transform: none !important;
  z-index: 4;
}

.page-loading .site-loading-logo.centered-ux {
  position: absolute;
  inset: 0;
  left: 0;
  top: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
  background: #e3e6ff;
  transform: none !important;
  z-index: 5;
  opacity: 1;
  transition: opacity .5s ease;
}

.page-loading .site-loading-logo .logo-h1 {
  max-width: 160px;
  margin: 0;
  padding: 0;
  line-height: 1.2;
  text-align: center;
}

.page-loading.static-home-loader.static-loader-logo-fading .site-loading-logo {
  opacity: 0;
}

.page-loading .loading-transform {
  position: fixed;
  top: 50%;
  left: 0;
  width: 100vw;
  margin: 0;
  z-index: 3;
}

.page-loading .spinner {
  width: 100vw;
  height: 1px;
  margin: 0;
}

.page-loading.visible .spinner:before {
  content: "";
  position: absolute;
  top: 0;
  left: 50%;
  width: 100vw;
  max-width: 100vw;
  height: 1px;
  background: #a89fcc;
  transform: translateX(-50%) scaleX(0);
  transform-origin: center;
  animation: static-loader-grow 1s linear forwards;
}

@keyframes static-loader-grow {
  from { transform: translateX(-50%) scaleX(0); }
  to { transform: translateX(-50%) scaleX(1); }
}

.page-loading.static-home-loader.static-loader-expanding .spinner:before {
  opacity: 0;
  transition: opacity .12s linear;
}

.page-loading.static-loader-done:not(.visible) {
  transition: none !important;
}

/* This legacy mask normally fades out through a removed page-loader script. */
#site-loading-mask { display: none !important; }

/* Keep the footer wordmark centered with the ramp and copyright line. */
#footer #logo-footer .logo-h1 {
  margin-right: 0;
}

#footer .copyright {
  text-align: center;
}

