/*
Theme Name: Joelle Mbede
Theme URI: https://joelleportfolio.com
Author: Joelle Mbede
Author URI: https://joelleportfolio.com
Description: Joelle Mbede portfolio and shop theme, built for a refined visual editing workflow.
Version: 2.2.1
Requires at least: 6.5
Tested up to: 7.0
Requires PHP: 7.4
Text Domain: joelle-mbede
Tags: portfolio, ecommerce, elementor, woocommerce, custom-logo, custom-menu, featured-images, full-width-template
*/

html {
  scroll-behavior: smooth;
}

body {
  font-family: "Teko", sans-serif;
  color: #111111;
  background: #ffffff;
}

body.admin-bar .site-header {
  top: 32px;
}

@media (max-width: 782px) {
  body.admin-bar .site-header {
    top: 46px;
  }
}

.site-main {
  min-height: 60vh;
}

.screen-reader-text {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.screen-reader-text:focus {
  position: fixed;
  top: 1rem;
  left: 1rem;
  z-index: 100000;
  width: auto;
  height: auto;
  padding: 0.75rem 1rem;
  clip: auto;
  background: #000000;
  color: #ffffff;
}

.site-header .custom-logo-link,
.site-header .site-logo {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
}

.ap-nav-menu,
.ap-mobile-nav-menu {
  margin: 0;
  padding: 0;
  list-style: none;
}

.ap-nav-menu {
  display: flex;
  align-items: center;
  gap: 2rem;
}

.ap-nav-menu a,
.ap-mobile-nav-menu a {
  letter-spacing: 0.2em;
  text-transform: uppercase;
  text-decoration: none;
  transition: opacity 0.2s ease;
}

.ap-nav-menu a:hover,
.ap-mobile-nav-menu a:hover {
  opacity: 0.55;
}

.ap-mobile-nav {
  display: none;
}

.ap-mobile-nav.is-open {
  display: block;
}

.ap-menu-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.ap-menu-toggle .ap-menu-close {
  display: none;
}

.ap-menu-toggle[aria-expanded="true"] .ap-menu-open {
  display: none;
}

.ap-menu-toggle[aria-expanded="true"] .ap-menu-close {
  display: inline;
}

.ap-section-pattern {
  position: absolute;
  inset: 0;
  pointer-events: none;
  opacity: 0.09;
}

.ap-button,
.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button,
.woocommerce #respond input#submit {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.75rem;
  padding: 1rem 2rem;
  background: #000000;
  color: #ffffff;
  border: 2px solid #000000;
  text-transform: uppercase;
  letter-spacing: 0.2em;
  text-decoration: none;
  transition: transform 0.25s ease, background-color 0.25s ease, color 0.25s ease, border-color 0.25s ease;
}

.ap-button:hover,
.woocommerce a.button:hover,
.woocommerce button.button:hover,
.woocommerce input.button:hover,
.woocommerce #respond input#submit:hover {
  background: #f24822;
  border-color: #f24822;
  color: #ffffff;
  transform: translateY(-2px);
}

.ap-button--outline,
.woocommerce .return-to-shop .button,
.woocommerce .cart .button,
.woocommerce .cart input.button {
  background: transparent;
  color: #000000;
}

.ap-button--outline:hover,
.woocommerce .return-to-shop .button:hover,
.woocommerce .cart .button:hover,
.woocommerce .cart input.button:hover {
  color: #ffffff;
}

.ap-dot {
  width: 0.75rem;
  height: 1.25rem;
  border-radius: 999px;
  background: #ffc943;
  position: relative;
}

.ap-dot::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  top: 50%;
  height: 1px;
  background: #f24822;
  transform: translateY(-50%);
}

.ap-divider {
  height: 0.25rem;
  background: #000000;
}

.ap-divider--inverse {
  background: #ffffff;
}

.ap-divider-colors {
  display: flex;
  gap: 0.25rem;
}

.ap-divider-colors span {
  width: 2rem;
  height: 0.25rem;
}

.ap-card-shell {
  position: relative;
  overflow: hidden;
}

.ap-card-shell::after {
  content: "";
  position: absolute;
  inset: 0;
  border: 4px solid #000000;
  opacity: 0;
  transform: scale(1.08);
  transition: opacity 0.3s ease, transform 0.3s ease;
}

.ap-card-shell:hover::after,
.ap-card-shell:focus-within::after {
  opacity: 1;
  transform: scale(1);
}

.ap-work-image {
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: grayscale(100%);
  transition: transform 0.6s ease, filter 0.6s ease;
}

.ap-card-shell:hover .ap-work-image,
.ap-card-shell:focus-within .ap-work-image {
  transform: scale(1.05);
  filter: grayscale(0%);
}

.ap-image-overlay {
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0.78);
  color: #ffffff;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  transition: opacity 0.3s ease;
}

.ap-card-shell:hover .ap-image-overlay,
.ap-card-shell:focus-within .ap-image-overlay {
  opacity: 1;
}

.ap-chip {
  display: inline-flex;
  align-items: center;
  padding: 0.5rem 1rem;
  border: 2px solid #000000;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  transition: background-color 0.25s ease, color 0.25s ease, transform 0.25s ease;
}

.ap-chip:hover {
  background: #000000;
  color: #ffffff;
  transform: translateY(-1px);
}

.ap-filter-button.is-active {
  background: #ffffff;
  color: #000000;
}

.ap-filter-button[hidden],
.ap-filter-item[hidden],
.ap-modal[hidden] {
  display: none !important;
}

.ap-modal {
  position: fixed;
  inset: 0;
  z-index: 999;
  background: rgba(0, 0, 0, 0.85);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1rem;
}

.ap-modal-panel {
  position: relative;
  width: min(100%, 72rem);
  max-height: 90vh;
  overflow-y: auto;
  background: #ffffff;
  color: #111111;
}

.ap-modal-close {
  position: absolute;
  top: 1rem;
  right: 1rem;
  z-index: 2;
  width: 2.75rem;
  height: 2.75rem;
  background: #000000;
  color: #ffffff;
  border: 0;
  cursor: pointer;
}

.ap-modal-open {
  cursor: pointer;
}

.ap-corner {
  position: absolute;
  width: 6rem;
  height: 6rem;
  pointer-events: none;
}

.ap-corner--top-left {
  top: 0;
  left: 0;
}

.ap-corner--top-right {
  top: 0;
  right: 0;
  transform: rotate(90deg);
}

.ap-corner--bottom-right {
  right: 0;
  bottom: 0;
  transform: rotate(180deg);
}

.ap-corner--bottom-left {
  left: 0;
  bottom: 0;
  transform: rotate(270deg);
}

.ap-floating-symbol {
  animation: apFloat 5s ease-in-out infinite;
}

.ap-floating-symbol--slow {
  animation-duration: 6.5s;
}

.ap-scroll-strip {
  width: max-content;
  animation: apScroll 30s linear infinite;
}

.js-reveal {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 0.7s ease, transform 0.7s ease;
}

.js-reveal.is-visible {
  opacity: 1;
  transform: translateY(0);
}

.elementor-editor-active .js-reveal,
.elementor-editor-preview .js-reveal {
  opacity: 1;
  transform: none;
}

.ap-entry-content > * + * {
  margin-top: 1.25rem;
}

.ap-prose {
  font-size: 1.2rem;
  line-height: 1.8;
}

.ap-prose ul,
.ap-prose ol {
  margin-left: 1.5rem;
  list-style: initial;
}

.ap-prose ol {
  list-style: decimal;
}

.ap-generic-card {
  border: 4px solid #000000;
  padding: 2rem;
  background: #ffffff;
}

.ap-shop-hero,
.ap-page-hero {
  padding-top: 10rem;
  padding-bottom: 4rem;
}

.ap-woocommerce-shell .woocommerce-result-count,
.ap-woocommerce-shell .woocommerce-ordering {
  margin-bottom: 2rem;
}

.ap-woocommerce-shell ul.products {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 2rem;
}

.ap-woocommerce-shell ul.products::before,
.ap-woocommerce-shell ul.products::after {
  display: none;
}

.ap-woocommerce-shell ul.products li.product {
  width: auto !important;
  margin: 0 !important;
  float: none !important;
  padding: 0 !important;
  display: flex;
  flex-direction: column;
  gap: 1rem;
}

.ap-woocommerce-shell ul.products li.product a img {
  width: 100%;
  aspect-ratio: 1;
  object-fit: cover;
  margin: 0 0 1rem;
  filter: grayscale(100%);
  transition: filter 0.4s ease, transform 0.4s ease;
}

.ap-woocommerce-shell ul.products li.product:hover a img {
  filter: grayscale(0%);
  transform: scale(1.02);
}

.ap-woocommerce-shell .woocommerce-loop-product__title,
.ap-woocommerce-shell .product_title {
  font-family: "Righteous", sans-serif;
  letter-spacing: 0.15em;
  text-transform: uppercase;
}

.ap-woocommerce-shell span.price {
  color: #111111 !important;
  font-size: 1.4rem !important;
}

.ap-woocommerce-shell .quantity .qty {
  min-height: 3rem;
  border: 2px solid #000000;
}

.ap-woocommerce-shell div.product div.images img,
.ap-woocommerce-shell div.product div.summary {
  margin-bottom: 2rem;
}

.ap-woocommerce-shell .woocommerce-message,
.ap-woocommerce-shell .woocommerce-info,
.ap-woocommerce-shell .woocommerce-error {
  border-top-color: #000000;
}

.ap-woocommerce-shell .woocommerce-message::before,
.ap-woocommerce-shell .woocommerce-info::before,
.ap-woocommerce-shell .woocommerce-error::before {
  color: #000000;
}

.ap-woocommerce-shell .related.products {
  margin-top: 4rem;
}

.ap-search-form {
  display: flex;
  gap: 1rem;
  flex-wrap: wrap;
}

.ap-search-form input[type="search"] {
  flex: 1 1 16rem;
  min-height: 3.5rem;
  border-bottom: 2px solid #000000;
  padding: 0.75rem 0;
  outline: none;
}

.ap-contact-field {
  width: 100%;
  background: transparent;
  border: 0;
  border-bottom: 2px solid #d1d5db;
  padding: 0.9rem 0;
  outline: none;
  transition: border-color 0.2s ease;
}

.ap-contact-field:focus {
  border-color: #000000;
}

.ap-social-grid {
  display: flex;
  gap: 1rem;
  flex-wrap: wrap;
}

.ap-social-link {
  width: 3.5rem;
  height: 3.5rem;
  border: 2px solid #000000;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  text-transform: uppercase;
  transition: background-color 0.25s ease, color 0.25s ease, transform 0.25s ease;
}

.ap-social-link:hover {
  background: #000000;
  color: #ffffff;
  transform: rotate(5deg) scale(1.05);
}

.ap-footer-note {
  color: #6b7280;
}


@keyframes apFloat {
  0%,
  100% {
    transform: translateY(0) rotate(0deg);
  }

  50% {
    transform: translateY(-18px) rotate(8deg);
  }
}

@keyframes apScroll {
  0% {
    transform: translateX(0);
  }

  100% {
    transform: translateX(-50%);
  }
}

@media (max-width: 767px) {
  .ap-nav-menu {
    display: none;
  }
}

/* Layout values follow the original portfolio. Elementor's individual controls override these defaults. */
:root { --jm-red:#f24822; --jm-green:#66d575; --jm-gold:#ffc943; }
body { font-family:sans-serif; font-weight:400; }
.elementor.elementor :is(.jm-hero,:where(.elementor-top-section:has(.ap-native-hero-title))) > .elementor-container,.elementor.elementor :is(.jm-hero,:where(.elementor-top-section:has(.ap-native-hero-title))) .elementor-column,.elementor.elementor :is(.jm-hero,:where(.elementor-top-section:has(.ap-native-hero-title))) .elementor-widget-wrap { position:static; }
html { scroll-padding-top:0; }
.jm-fr { display:none; }
html[lang="fr"] .jm-en { display:none; }
html[lang="fr"] .jm-fr { display:revert; }
.elementor.elementor :is(.jm-section,:where(.elementor-top-section:has([class*="ap-native-"]))) { padding:0 48px; background:#fff; color:#252525; }
.elementor.elementor :is(.jm-section,:where(.elementor-top-section:has([class*="ap-native-"]))) > .elementor-container { max-width:1280px; margin:auto; }
.elementor.elementor :is(.jm-section,:where(.elementor-top-section:has([class*="ap-native-"]))) .elementor-widget-wrap { padding:0; align-content:flex-start; }
.elementor.elementor :is(.jm-section,:where(.elementor-top-section:has([class*="ap-native-"]))) .elementor-widget { --kit-widget-spacing:0px; }
.elementor.elementor :is(.jm-text,:where([class*="ap-native-"])) p { margin:0; }
.elementor.elementor :is(.jm-section,:where(.elementor-top-section:has([class*="ap-native-"]))) h1,.elementor.elementor :is(.jm-section,:where(.elementor-top-section:has([class*="ap-native-"]))) h2,.elementor.elementor :is(.jm-section,:where(.elementor-top-section:has([class*="ap-native-"]))) h3,.elementor.elementor :is(.jm-section,:where(.elementor-top-section:has([class*="ap-native-"]))) h4 { font-weight:500; line-height:1; color:inherit; }
.elementor.elementor :is(.jm-text,:where([class*="ap-native-"])) { font-family:sans-serif; font-weight:400; }
.elementor.elementor :is(.jm-text,:where([class*="ap-native-"])) .elementor-heading-title { color:inherit; }
.elementor.elementor :is(.jm-button,:where(.ap-native-button)) .elementor-button { border-radius:0; padding:16px 32px; font-family:sans-serif; font-size:14px; font-weight:400; letter-spacing:.2em; line-height:20px; background:#000; color:#fff; transition:background .3s,color .3s,transform .3s; }
.elementor.elementor :is(.jm-button,:where(.ap-native-button)) .elementor-button:hover { transform:scale(1.05); background:var(--jm-red); color:#fff; }
.elementor.elementor :is(.jm-outline,:where(.ap-native-button-outline,.ap-native-button-light-outline)) .elementor-button { background:transparent; border:2px solid currentColor; color:inherit; }
.elementor.elementor :is(.jm-outline,:where(.ap-native-button-outline,.ap-native-button-light-outline)) .elementor-button:hover { background:#000; color:#fff; }
.elementor.elementor .jm-divider { margin-top:32px; width:128px; }
.elementor.elementor .jm-divider .elementor-divider { padding:0; padding-block:0; }
.jm-divider::after { content:""; display:block; width:104px; height:4px; margin-top:8px; background:linear-gradient(90deg,var(--jm-red) 0 32px,transparent 32px 36px,var(--jm-green) 36px 68px,transparent 68px 72px,var(--jm-gold) 72px); }
.elementor.elementor :is(.jm-heading,:where(.elementor-top-section:has(.ap-native-section-title))) { padding-top:128px; padding-bottom:80px; text-align:center; }
.elementor.elementor :is(.jm-heading,:where(.elementor-top-section:has(.ap-native-section-title))) :is(.jm-section-title,:where(.ap-native-section-title)) { margin-top:32px; margin-bottom:24px; }
.elementor.elementor :is(.jm-section-title,:where(.ap-native-section-title)) .elementor-heading-title { font-family:Righteous,sans-serif; font-size:72px; letter-spacing:.3em; }
.elementor.elementor #shop :is(.jm-section-title,:where(.ap-native-section-title)) .elementor-heading-title { font-family:Arial,sans-serif; }
.elementor.elementor :is(.jm-section-subtitle,:where(.ap-native-section-subtitle)) { font-size:20px; line-height:28px; letter-spacing:.2em; color:#4b5563; }
.elementor.elementor :is(.jm-heading,:where(.elementor-top-section:has(.ap-native-section-title))) .jm-divider { margin-left:auto; margin-right:auto; }
.elementor.elementor :is(.jm-align-left,:where(.elementor-top-section:has(.ap-native-section-title):not(:has(.ap-native-section-subtitle)))) { text-align:left; }
.elementor.elementor :is(.jm-align-left,:where(.elementor-top-section:has(.ap-native-section-title):not(:has(.ap-native-section-subtitle)))) :is(.jm-section-title,:where(.ap-native-section-title)) { margin-top:0; }
.elementor.elementor :is(.jm-align-left,:where(.elementor-top-section:has(.ap-native-section-title):not(:has(.ap-native-section-subtitle)))) .jm-divider { margin-left:0; }
.elementor.elementor :is(.jm-align-left,:where(.elementor-top-section:has(.ap-native-section-title):not(:has(.ap-native-section-subtitle)))) .jm-divider { margin-top:0; }
.elementor.elementor :is(.jm-dark,:where(.elementor-top-section:has(:is(.ap-native-product-image,.ap-native-shop-cta-text,.ap-native-shop-filters)))) { background:#000; color:#fff; }
.elementor.elementor :is(.jm-dark,:where(.elementor-top-section:has(:is(.ap-native-product-image,.ap-native-shop-cta-text,.ap-native-shop-filters)))) :is(.jm-section-subtitle,:where(.ap-native-section-subtitle)),.elementor.elementor :is(.jm-dark,:where(.elementor-top-section:has(:is(.ap-native-product-image,.ap-native-shop-cta-text,.ap-native-shop-filters)))) :is(.jm-body,:where(.ap-native-project-description,.ap-native-about-text,.ap-native-contact-text)) { color:#9ca3af; }
.elementor.elementor :is(.jm-dark,:where(.elementor-top-section:has(:is(.ap-native-product-image,.ap-native-shop-cta-text,.ap-native-shop-filters)))) :is(.jm-outline,:where(.ap-native-button-outline,.ap-native-button-light-outline)) .elementor-button { color:#fff; }
.elementor.elementor :is(.jm-dark,:where(.elementor-top-section:has(:is(.ap-native-product-image,.ap-native-shop-cta-text,.ap-native-shop-filters)))) :is(.jm-outline,:where(.ap-native-button-outline,.ap-native-button-light-outline)) .elementor-button:hover { background:#fff; color:#000; }

.elementor.elementor :is(.jm-hero,:where(.elementor-top-section:has(.ap-native-hero-title))) { min-height:100vh; padding:80px 16px 0; display:flex; align-items:center; overflow:hidden; position:relative; }
.elementor.elementor :is(.jm-hero,:where(.elementor-top-section:has(.ap-native-hero-title))) > .elementor-container { width:100%; max-width:none; }
.elementor.elementor :is(.jm-hero,:where(.elementor-top-section:has(.ap-native-hero-title))) .elementor-widget-wrap { justify-content:center; align-content:center; text-align:center; gap:16px; }
.elementor.elementor :is(.jm-hero,:where(.elementor-top-section:has(.ap-native-hero-title))) .elementor-widget { z-index:1; }
.elementor.elementor :is(.jm-hero-logo,:where(.elementor-widget-html:has(.ap-native-hero-mark))) { height:96px; margin-bottom:32px; }
.elementor.elementor :is(.jm-hero-logo,:where(.elementor-widget-html:has(.ap-native-hero-mark))) img { display:block; width:104px; height:104px; max-width:none; margin:-4px auto; }
.elementor.elementor :is(.jm-hero-title,:where(.ap-native-hero-title)) { margin-bottom:8px; }
.elementor.elementor :is(.jm-hero-title,:where(.ap-native-hero-title)) .elementor-heading-title { font-family:Righteous,sans-serif; font-size:96px; letter-spacing:.5em; line-height:1; }
.elementor.elementor :is(.jm-hero-role,:where(.ap-native-hero-role)) { margin-bottom:48px; font-size:20px; line-height:28px; letter-spacing:.5em; color:#4b5563; }
.elementor.elementor :is(.jm-hero-action,:where(.elementor-top-section:has(.ap-native-hero-title) .ap-native-button)) { display:flex; width:auto; margin:0; }
.elementor.elementor :is(.jm-hero-action,:where(.elementor-top-section:has(.ap-native-hero-title) .ap-native-button)) .elementor-widget-container { height:100%; display:flex; }
.elementor.elementor :is(.jm-hero-action,:where(.elementor-top-section:has(.ap-native-hero-title) .ap-native-button)) .elementor-button { display:flex; align-items:center; justify-content:center; }
.elementor.elementor :is(.jm-hero-pattern,:where(.elementor-widget-html:has(.ap-section-pattern))).elementor-widget { position:absolute; inset:0; width:100%; height:100%; z-index:0; pointer-events:none; }
.elementor.elementor :is(.jm-hero-pattern,:where(.elementor-widget-html:has(.ap-section-pattern))) .elementor-widget-container { width:100%; height:100%; }
.elementor.elementor .jm-hero-sankofa.elementor-widget,.elementor.elementor .jm-hero-sun.elementor-widget { position:absolute; width:96px; height:96px; opacity:.2; pointer-events:none; animation:apFloat 4s ease-in-out infinite; }
.elementor.elementor .jm-hero-sankofa.elementor-widget { left:48px; top:128px; color:var(--jm-gold); }
.elementor.elementor .jm-hero-sun.elementor-widget { right:48px; bottom:128px; color:var(--jm-red); animation-duration:5s; }
.elementor.elementor :is(.jm-hero-strip,:where(.elementor-widget-html:has(.ap-scroll-strip))).elementor-widget { position:absolute; bottom:0; left:0; right:0; width:100%; }
.elementor.elementor :is(.jm-down,:where(.elementor-widget-html:has(.ap-native-down))).elementor-widget { position:relative; bottom:128px; width:100%; height:32px; margin-top:64px; left:auto; animation:jmBounce 2s infinite; }
.elementor.elementor :is(.jm-down,:where(.elementor-widget-html:has(.ap-native-down))) .elementor-button { background:transparent; color:#000; padding:0; font-family:serif; font-size:32px; line-height:40px; }

.elementor.elementor :is(.jm-work-row,:where(.elementor-top-section:has(.ap-native-work-image))) { padding-bottom:128px; }
.elementor.elementor #work { background-repeat:no-repeat; background-size:128px 128px; background-position:40px 80px; }
.elementor.elementor .jm-work-last { background-repeat:no-repeat; background-size:160px 160px; background-position:right 40px bottom 160px; }
.elementor.elementor :is(.jm-work-row,:where(.elementor-top-section:has(.ap-native-work-image))) > .elementor-container { gap:48px; align-items:center; }
.elementor.elementor :is(.jm-work-row,:where(.elementor-top-section:has(.ap-native-work-image))) .elementor-column { width:calc(50% - 24px); }
.elementor.elementor .jm-reverse > .elementor-container { flex-direction:row-reverse; }
.elementor.elementor :is(.jm-project-image,:where(.ap-native-work-image)) { overflow:hidden; aspect-ratio:4/3; }
.elementor.elementor :is(.jm-project-image,:where(.ap-native-work-image)) .elementor-widget-container,.elementor.elementor :is(.jm-project-image,:where(.ap-native-work-image)) a { display:block; height:100%; position:relative; }
.elementor.elementor :is(.jm-project-image,:where(.ap-native-work-image)) img { display:block; width:100%; height:100%; aspect-ratio:4/3; object-fit:cover; filter:grayscale(1); transition:filter .6s,transform .6s; }
.elementor.elementor :is(.jm-project-image,:where(.ap-native-work-image)):hover img { filter:none; transform:scale(1.05); }
:is(.jm-project-image,:where(.ap-native-work-image)) a::before { content:""; position:absolute; inset:0; background:#000; opacity:0; z-index:1; transition:opacity .3s; }
:is(.jm-project-image,:where(.ap-native-work-image)) a::after { content:""; position:absolute; inset:0; border:4px solid #000; background:url("assets/images/arrow-up-right.svg") center / 48px 48px no-repeat; opacity:0; transform:scale(1.1); z-index:2; transition:opacity .3s,transform .3s; }
:is(.jm-project-image,:where(.ap-native-work-image)) a:is(:hover,:focus-visible)::before { opacity:.8; }
:is(.jm-project-image,:where(.ap-native-work-image)) a:is(:hover,:focus-visible)::after { opacity:1; transform:scale(1); }
.elementor.elementor :is(.jm-meta,:where(.ap-native-meta)) { color:#6b7280; font-size:14px; line-height:20px; letter-spacing:.3em; margin-bottom:8px; }
.elementor.elementor :is(.jm-project-title,:where(.ap-native-project-title)) { margin-bottom:24px; }
.elementor.elementor :is(.jm-project-title,:where(.ap-native-project-title)) .elementor-heading-title { display:inline-block; font-family:Righteous,sans-serif; font-size:48px; letter-spacing:.2em; border-bottom:4px solid var(--jm-red); padding-bottom:16px; }
.elementor.elementor :is(.jm-work-row,:where(.elementor-top-section:has(.ap-native-work-image))) :is(.jm-button,:where(.ap-native-button)) .elementor-button { padding:12px 32px; }
.elementor.elementor :is(.jm-body,:where(.ap-native-project-description,.ap-native-about-text,.ap-native-contact-text)) { color:#4b5563; font-size:18px; line-height:1.625; margin-bottom:32px; }
.elementor.elementor :is(.jm-small-title,:where(.ap-native-small-title)) .elementor-heading-title { font-family:sans-serif; font-size:20px; line-height:28px; letter-spacing:.3em; }
.elementor.elementor :is(.jm-small-title,:where(.ap-native-small-title)) { margin-top:32px; margin-bottom:24px; }

.elementor.elementor :is(.jm-two-column,:where(.elementor-top-section:has(:is(.ap-native-about-intro,.ap-native-contact-title)))) { padding-bottom:128px; }
.elementor.elementor :is(.jm-two-column,:where(.elementor-top-section:has(:is(.ap-native-about-intro,.ap-native-contact-title)))) > .elementor-container { gap:80px; }
.elementor.elementor :is(.jm-two-column,:where(.elementor-top-section:has(:is(.ap-native-about-intro,.ap-native-contact-title)))) .elementor-column { width:calc(50% - 40px); }
.elementor.elementor .jm-about-dots { margin-bottom:32px; }
.elementor.elementor :is(.jm-about-content,:where(.elementor-top-section:has(.ap-native-about-intro))) { background-repeat:no-repeat; background-size:384px 384px; background-position:left bottom 80px; }
.elementor.elementor :is(.jm-about-intro,:where(.ap-native-about-intro)) { font-size:30px; line-height:1.625; margin-bottom:32px; }
.elementor.elementor .jm-chip { width:auto; margin:0 12px 12px 0; }
.elementor.elementor .jm-chip .elementor-button { background:transparent; color:#000; border:2px solid #000; padding:8px 16px; letter-spacing:.05em; }
.elementor.elementor .jm-chip .elementor-button { position:relative; }
.elementor.elementor .jm-chip .elementor-button:hover { background:#000; color:#fff; transform:scale(1.1); }
.jm-chip .elementor-button::before { content:""; position:absolute; top:0; left:0; width:6px; height:6px; background:var(--jm-red); opacity:0; transition:opacity .3s; }
.jm-chip .elementor-button:hover::before { opacity:1; }
.elementor.elementor :is(.jm-portrait,:where(.ap-native-portrait)) .jm-image-frame { display:block; width:100%; border:4px solid #000; margin:auto; }
.elementor.elementor :is(.jm-portrait,:where(.ap-native-portrait)) img:not(.jm-image-overlay) { display:block; width:100%; max-width:448px; aspect-ratio:4/7; border:0; }
.elementor.elementor .jm-image-frame { position:relative; display:inline-block; max-width:448px; }
.elementor.elementor .jm-image-frame .jm-image-overlay { position:absolute; inset:0; width:100%; height:100%; border:0; pointer-events:none; }
.jm-image-frame::before,.jm-image-frame::after { content:""; position:absolute; z-index:2; left:0; right:0; height:24px; pointer-events:none; background:linear-gradient(90deg,var(--jm-red) 0 24px,transparent 24px calc(100% - 24px),var(--jm-green) calc(100% - 24px)); }
.jm-image-frame::before { top:0; }
.jm-image-frame::after { bottom:0; background:linear-gradient(90deg,var(--jm-gold) 0 24px,transparent 24px calc(100% - 24px),var(--jm-red) calc(100% - 24px)); }
.elementor.elementor :is(.jm-down,:where(.elementor-widget-html:has(.ap-native-down))) img { width:32px; height:32px; }
.elementor.elementor :is(.jm-about-content,:where(.elementor-top-section:has(.ap-native-about-intro))) .elementor-column:nth-child(2) .elementor-widget-wrap { align-content:center; }
.elementor.elementor :is(.jm-about-content,:where(.elementor-top-section:has(.ap-native-about-intro))) .jm-divider { width:100%; margin-top:48px; }
.elementor.elementor :is(.jm-about-content,:where(.elementor-top-section:has(.ap-native-about-intro))) .jm-divider::after { margin-top:4px; width:152px; background:linear-gradient(90deg,var(--jm-red) 0 48px,transparent 48px 52px,var(--jm-green) 52px 100px,transparent 100px 104px,var(--jm-gold) 104px); }
.elementor.elementor :is(.jm-quote,:where(.ap-native-quote)) { margin-top:32px; font-size:18px; line-height:28px; font-style:italic; color:#4b5563; }

.elementor.elementor .jm-products-section { padding-bottom:0; }
.elementor.elementor :is(#shop,.jm-products-section,:is(.jm-shop-cta,:where(.elementor-top-section:has(.ap-native-shop-cta-text)))) { background-repeat:no-repeat; background-size:var(--jm-pattern-size,100%) var(--jm-pattern-size,100%); background-position:center var(--jm-pattern-y,0px); }
.jm-product-filters { display:flex; justify-content:center; gap:16px; flex-wrap:wrap; margin-bottom:64px; }
.jm-product-filters button { position:relative; border:2px solid #fff; padding:12px 32px; color:#fff; background:transparent; font:inherit; font-size:14px; line-height:20px; font-weight:500; letter-spacing:.2em; transition:background .3s,color .3s,transform .3s; }
.jm-product-filters button.is-active,.jm-product-filters button:hover { background:#fff; color:#000; }
.jm-product-filters button:hover { transform:scale(1.05); }
.jm-product-filters button.is-active::before,.jm-product-filters button.is-active::after { content:""; position:absolute; top:0; width:8px; height:8px; background:var(--jm-red); }
.jm-product-filters button.is-active::before { left:0; }.jm-product-filters button.is-active::after { right:0; background:var(--jm-green); }
.jm-product-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:32px; }
.jm-product[hidden] { display:none; }
.jm-product-media { position:relative; aspect-ratio:3/4; background:#fff; margin-bottom:16px; overflow:hidden; }
.jm-product-media img { width:100%; height:100%; object-fit:cover; filter:grayscale(1); transition:transform .6s,filter .6s; }
.jm-product:hover .jm-product-media img { transform:scale(1.1); filter:none; }
.jm-product-type { position:absolute; z-index:1; left:16px; top:16px; padding:4px 12px; font-size:12px; line-height:16px; letter-spacing:.2em; background:#fff; color:#000; }
.jm-product-actions { position:absolute; inset:0; background:#000c; opacity:0; transition:opacity .3s; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:16px; }
.jm-product:hover .jm-product-actions,.jm-product:focus-within .jm-product-actions { opacity:1; }
.jm-product-actions .ap-button--outline { color:#fff; border-color:#fff; }
.jm-product-actions .ap-button { display:inline-flex; gap:8px; align-items:center; padding:12px 24px; background:#fff; color:#000; border:0; font:500 14px/20px Arial,sans-serif; letter-spacing:.2em; cursor:pointer; }
.jm-product-actions .ap-button--outline { background:transparent; color:#fff; border:2px solid #fff; }
.jm-product-actions .ap-button--outline:hover { background:#fff; color:#000; }
.jm-product-actions .ap-button:hover { transform:scale(1.05); }.jm-product-actions .ap-button:active { transform:scale(.95); }
.jm-product-actions .ap-button svg { width:18px; height:18px; }
.jm-product-actions .ap-button:disabled { cursor:not-allowed; }
.elementor.elementor .jm-product h3 { font:inherit; font-size:18px; font-weight:500; line-height:28px; letter-spacing:.2em; margin:0 0 8px; }
.jm-product-description { font-size:14px; line-height:20px; color:#9ca3af; margin-bottom:12px; }
.jm-product-price { font-size:24px; line-height:32px; letter-spacing:.05em; }
.elementor.elementor :is(.jm-shop-cta,:where(.elementor-top-section:has(.ap-native-shop-cta-text))) { padding-top:80px; padding-bottom:128px; text-align:center; }
.elementor.elementor :is(.jm-shop-cta,:where(.elementor-top-section:has(.ap-native-shop-cta-text))) :is(.jm-body,:where(.ap-native-project-description,.ap-native-about-text,.ap-native-contact-text)) { margin-top:24px; margin-bottom:24px; font-size:16px; line-height:24px; letter-spacing:.025em; }
.elementor.elementor :is(.jm-shop-cta,:where(.elementor-top-section:has(.ap-native-shop-cta-text))) .elementor-button-wrapper { line-height:24px; }
.elementor.elementor :is(.jm-shop-cta,:where(.elementor-top-section:has(.ap-native-shop-cta-text))) :is(.jm-button,:where(.ap-native-button)) { padding-bottom:.4em; }
:is(.jm-shop-cta,:where(.elementor-top-section:has(.ap-native-shop-cta-text))) .elementor-button { position:relative; }
:is(.jm-shop-cta,:where(.elementor-top-section:has(.ap-native-shop-cta-text))) .elementor-button::before,:is(.jm-shop-cta,:where(.elementor-top-section:has(.ap-native-shop-cta-text))) .elementor-button::after { content:""; position:absolute; width:8px; height:8px; opacity:0; transition:opacity .3s; }
:is(.jm-shop-cta,:where(.elementor-top-section:has(.ap-native-shop-cta-text))) .elementor-button::before { top:0; left:0; background:var(--jm-red); }:is(.jm-shop-cta,:where(.elementor-top-section:has(.ap-native-shop-cta-text))) .elementor-button::after { bottom:0; right:0; background:var(--jm-green); }
:is(.jm-shop-cta,:where(.elementor-top-section:has(.ap-native-shop-cta-text))) .elementor-button:hover::before,:is(.jm-shop-cta,:where(.elementor-top-section:has(.ap-native-shop-cta-text))) .elementor-button:hover::after { opacity:1; }
.elementor.elementor :is(.jm-contact-title,:where(.ap-native-contact-title)) .elementor-heading-title { font-size:30px; line-height:36px; letter-spacing:.2em; }
.elementor.elementor :is(.jm-contact-title,:where(.ap-native-contact-title)) { margin-bottom:32px; }
.elementor.elementor .jm-contact-link .elementor-button { background:transparent; color:#000; padding:0; font-size:20px; letter-spacing:.05em; }
.elementor.elementor .jm-contact-link { margin-bottom:32px; }
.elementor.elementor .jm-contact-location { margin-bottom:40px; font-size:20px; letter-spacing:.05em; }
.elementor.elementor .jm-contact-detail { padding:0; margin:16px 0 16px; }
.elementor.elementor .jm-contact-detail > .elementor-container { gap:24px; flex-wrap:nowrap; }
.elementor.elementor .jm-contact-detail .elementor-column:first-child { width:64px; flex-shrink:0; }
.elementor.elementor .jm-contact-detail .elementor-column:last-child { width:calc(100% - 88px); }
.elementor.elementor .jm-contact-icon { width:64px; height:64px; border:2px solid #000; display:grid; place-items:center; position:relative; }
.elementor.elementor .jm-contact-icon img { width:24px; height:24px; }
.jm-contact-icon::before,.jm-contact-icon::after { content:""; position:absolute; top:-5px; width:8px; height:8px; background:var(--jm-red); }
.jm-contact-icon::before { left:-5px; }
.jm-contact-icon::after { right:-5px; background:var(--jm-green); }
.elementor.elementor .jm-contact-detail .jm-contact-link,.elementor.elementor .jm-contact-detail .jm-contact-location { margin-bottom:0; }
.elementor.elementor .jm-contact-detail .jm-contact-link .elementor-button,.elementor.elementor .jm-contact-detail .jm-contact-location { line-height:28px; }
.elementor.elementor :is(.jm-contact-content,:where(.elementor-top-section:has(.ap-native-contact-title))) .jm-contact-detail { margin:0 0 32px; }
.elementor.elementor :is(.jm-contact-content,:where(.elementor-top-section:has(.ap-native-contact-title))) :is(.jm-body,:where(.ap-native-project-description,.ap-native-about-text,.ap-native-contact-text)) { margin-bottom:80px; }
.elementor.elementor :is(.jm-contact-content,:where(.elementor-top-section:has(.ap-native-contact-title))) .jm-contact-detail + :is(.jm-meta,:where(.ap-native-meta)) { margin-top:48px; margin-bottom:8px; }
.elementor.elementor :is(.jm-contact-content,:where(.elementor-top-section:has(.ap-native-contact-title))) .jm-social .elementor-button { font-size:12px; }
.elementor.elementor .jm-social { width:auto; margin:16px 16px 0 0; }
.elementor.elementor .jm-social .elementor-button { width:56px; height:56px; display:grid; place-items:center; background:transparent; color:#000; border:2px solid #000; padding:0; }
.jm-form { padding:48px; border:4px solid #000; position:relative; }
.jm-form::before,.jm-form::after { content:""; position:absolute; width:24px; height:24px; background:var(--jm-red); }
.jm-form::before { top:0; left:0; }
.jm-form::after { right:0; bottom:0; }
.jm-form { background:linear-gradient(var(--jm-green),var(--jm-green)) right top / 24px 24px no-repeat,linear-gradient(var(--jm-green),var(--jm-green)) left bottom / 24px 24px no-repeat; }
.jm-form label { display:block; font-size:14px; line-height:20px; letter-spacing:.05em; margin-bottom:8px; }
.jm-form input:not([type=hidden]),.jm-form select,.jm-form textarea { width:100%; padding:12px 0; margin:0 0 24px; border:0; border-bottom:2px solid #d1d5db; border-radius:0; background:#fff; color:#252525; font:inherit; font-size:16px; line-height:24px; }
.jm-form :is(input,select,textarea):focus { outline:2px solid #000; outline-offset:2px; }
.jm-form button { width:100%; background:#000; color:#fff; padding:16px; border:0; font:inherit; font-size:14px; line-height:20px; font-weight:500; letter-spacing:.2em; }
.jm-form button { display:flex; justify-content:center; align-items:center; gap:12px; transition:transform .3s,background .3s; }
.jm-form button:hover { transform:scale(1.02); background:var(--jm-red); }.jm-form button svg { width:18px; height:18px; }
.jm-form textarea { resize:none; }

.jm-product-preview { position:fixed; inset:0; margin:auto; padding:0; border:0; width:calc(100% - 32px); max-width:896px; max-height:calc(100vh - 32px); background:#fff; color:#252525; font:400 16px/24px Arial,sans-serif; }
.jm-product-preview::backdrop { background:#000c; backdrop-filter:blur(4px); }
.jm-product-preview[open] { animation:jmPreviewIn .35s ease-out; }
.jm-preview-panel { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); position:relative; }
.jm-preview-image { aspect-ratio:1; position:relative; background:#f3f4f6; }
.jm-preview-image img { width:100%; height:100%; object-fit:cover; }
.jm-preview-image .jm-product-type { padding:8px 16px; }
.jm-preview-details { padding:48px; }
.elementor.elementor .jm-preview-details h2 { font:500 30px/36px Arial,sans-serif; letter-spacing:.2em; margin:0 0 16px; }
.jm-preview-details .jm-product-description { font-size:16px; line-height:26px; color:#4b5563; margin-bottom:24px; }
.jm-preview-details .jm-product-price { font-size:36px; line-height:40px; margin-bottom:32px; }
.jm-preview-close { position:absolute; right:16px; top:16px; width:40px; height:40px; border:0; background:#000; color:#fff; z-index:2; font:30px/1 Arial,sans-serif; cursor:pointer; transition:transform .3s; }
.jm-preview-close:hover { transform:rotate(90deg) scale(1.1); }
.jm-preview-quantity { display:block; font:400 14px/20px Arial,sans-serif; letter-spacing:.05em; margin-bottom:12px; }
.jm-preview-counter { display:flex; gap:16px; align-items:center; margin-bottom:24px; }
.jm-preview-counter button { width:40px; height:40px; padding:0; border:2px solid #000; border-radius:0; background:#fff; color:#000; font:20px/28px Arial,sans-serif; cursor:pointer; }
.jm-preview-counter button:hover { background:#000; color:#fff; }
.jm-preview-counter input { width:48px; padding:0; border:0; text-align:center; appearance:textfield; background:#fff; color:#252525; font:20px/28px Arial,sans-serif; }
.jm-preview-counter input::-webkit-inner-spin-button,.jm-preview-counter input::-webkit-outer-spin-button { appearance:none; margin:0; }
.jm-preview-features { margin-top:32px; padding-top:32px; border-top:1px solid #e5e7eb; color:#6b7280; font:14px/20px Arial,sans-serif; }
.jm-preview-features p { margin:0 0 12px; }.jm-preview-features p:last-child { margin-bottom:0; }
.jm-preview-details .ap-button { display:flex; align-items:center; justify-content:center; gap:12px; width:100%; border:0; padding:16px; background:#000; color:#fff; font:400 14px/20px Arial,sans-serif; letter-spacing:.2em; }
.jm-preview-details .ap-button svg { width:20px; height:20px; }
.jm-preview-details .ap-button:disabled { cursor:not-allowed; }
@keyframes jmPreviewIn { from { opacity:0; transform:translateY(50px) scale(.9); } to { opacity:1; transform:none; } }

.elementor.elementor .jm-header { position:fixed; top:0; left:0; right:0; width:100vw; z-index:99; border-bottom:2px solid #000; }
body.admin-bar .elementor.elementor .jm-header { top:32px; }
.elementor.elementor .jm-header > .elementor-container { min-height:80px; align-items:center; }
.elementor.elementor .jm-header > .elementor-container { max-width:1184px; }
.elementor.elementor .jm-header .elementor-column:first-child { width:20%; }
.elementor.elementor .jm-header .elementor-column:last-child { width:80%; }
.elementor.elementor .jm-header .elementor-widget-wrap { align-items:center; align-content:center; flex-wrap:nowrap; gap:8px; }
.elementor.elementor .jm-header .elementor-column:last-child .elementor-widget-wrap { justify-content:flex-end; gap:32px; }
.elementor.elementor .jm-header .elementor-widget { width:auto; }
.elementor.elementor .jm-header-logo img { width:40px; height:40px; max-width:none; }
.elementor.elementor .jm-initials { font-size:20px; line-height:28px; letter-spacing:.3em; }
.elementor.elementor .jm-header .jm-nav-link,.elementor.elementor .jm-header .jm-nav-link .elementor-widget-container { display:flex; }
.elementor.elementor .jm-nav-link .elementor-button { color:#000; background:transparent; padding:0; letter-spacing:.2em; font-size:14px; white-space:nowrap; }
.elementor.elementor .jm-nav-link .elementor-button:hover { opacity:.5; background:transparent; color:#000; transform:none; }
.jm-language { display:flex; align-items:center; gap:8px; padding:8px 16px; border:2px solid #000; background:#fff; font:inherit; font-size:14px; line-height:20px; letter-spacing:.05em; cursor:pointer; }
.jm-cart { display:flex; align-items:center; justify-content:center; padding:8px 24px; background:#000; color:#fff; position:relative; }
.jm-cart svg { width:18px; height:18px; }
.jm-cart-count { position:absolute; right:-8px; top:-8px; background:var(--jm-red); color:#fff; border-radius:50%; min-width:20px; text-align:center; }
.elementor.elementor .jm-menu-toggle { display:none; }
.elementor.elementor .jm-social .elementor-button-icon { margin:0; font-size:24px; }
.elementor.elementor .jm-social .elementor-button-text:empty { display:none; }
.elementor.elementor .jm-footer { padding:0 48px 128px; text-align:center; }
.elementor.elementor .jm-footer > .elementor-container { max-width:1280px; }
.elementor.elementor .jm-footer-dots { margin-top:48px; margin-bottom:24px; }
.elementor.elementor .jm-copyright { font-size:14px; line-height:20px; letter-spacing:.2em; margin-bottom:8px; }
.elementor.elementor .jm-footer-note { font-size:12px; line-height:16px; letter-spacing:.025em; color:#6b7280; }

.elementor.elementor .jm-project-dialog { display:none; position:fixed; top:5vh; bottom:5vh; left:50%; width:calc(100% - 32px); max-width:1152px; transform:translateX(-50%); z-index:1000; overflow:auto; padding:0; border:0; box-shadow:0 0 0 100vmax #000e; }
.elementor.elementor .jm-project-dialog.is-open { display:block; }
.elementor.elementor .jm-project-dialog > .elementor-container { min-height:100%; }
.elementor.elementor .jm-modal-hero { padding:0; height:400px; position:relative; overflow:hidden; }
.jm-modal-hero > .elementor-container,.jm-modal-hero .elementor-column,.jm-modal-hero .elementor-widget-wrap { position:static; height:100%; }
.elementor.elementor .jm-modal-hero .elementor-widget-wrap { align-content:flex-end; }
.elementor.elementor .jm-modal-cover { position:absolute; inset:0; width:100%; height:100%; }
.elementor.elementor .jm-modal-cover img { width:100%; height:400px; object-fit:cover; }
.jm-modal-cover::after { content:""; position:absolute; inset:0; background:linear-gradient(0deg,#000c,#0006,transparent); pointer-events:none; }
.elementor.elementor .jm-dialog-close { position:absolute; top:24px; right:24px; width:auto; z-index:5; }
.elementor.elementor .jm-dialog-close .elementor-button { padding:0; width:48px; height:48px; display:grid; place-items:center; font-size:30px; letter-spacing:0; }
.elementor.elementor .jm-modal-title { margin:24px 48px 16px; width:calc(100% - 96px); }
.elementor.elementor .jm-modal-title .elementor-heading-title { font:500 60px/1.1 Arial,sans-serif; letter-spacing:.3em; color:#fff; }
.elementor.elementor .jm-modal-category { margin:0 48px 48px; width:calc(100% - 96px); font-size:20px; letter-spacing:.2em; color:#fbbf24; }
.elementor.elementor .jm-modal-hero .elementor-widget-jm_motif { z-index:1; }
.elementor.elementor .jm-modal-meta { padding:48px; border-bottom:4px solid #000; }
.elementor.elementor .jm-modal-meta > .elementor-container { gap:24px; }
.elementor.elementor .jm-modal-meta .elementor-column { width:calc(25% - 18px); border:2px solid #000; padding:24px; text-align:center; }
.elementor.elementor .jm-modal-meta :is(.jm-meta,:where(.ap-native-meta)) { font-size:12px; margin:12px 0 8px; }
.elementor.elementor .jm-modal-icon img { width:32px; height:32px; }
.elementor.elementor .jm-modal-value { font-size:16px; letter-spacing:.025em; }
.elementor.elementor .jm-modal-overview { padding:48px 48px 0; }
.elementor.elementor .jm-modal-heading { margin:0 0 24px; }
.elementor.elementor .jm-modal-heading .elementor-heading-title { font-size:30px; letter-spacing:.2em; }
.jm-modal-heading .elementor-heading-title::before { content:""; display:inline-block; width:48px; height:4px; vertical-align:middle; margin-right:16px; background:#b45309; }
.elementor.elementor .jm-modal-solutions { padding:16px 48px 48px; }
.elementor.elementor .jm-modal-solutions > .elementor-container { gap:32px; }
.elementor.elementor .jm-modal-solutions .elementor-column { width:calc(50% - 16px); background:#f9fafb; border-left:4px solid #b45309; padding:32px; }
.elementor.elementor .jm-modal-solutions .elementor-column:last-child { border-left-color:#000; }
.elementor.elementor .jm-modal-solutions :is(.jm-small-title,:where(.ap-native-small-title)) { margin:0 0 16px; }
.elementor.elementor .jm-modal-solutions :is(.jm-body,:where(.ap-native-project-description,.ap-native-about-text,.ap-native-contact-text)) { font-size:16px; margin:0; }
.elementor.elementor .jm-modal-gallery-title { padding:0 48px; }
.elementor.elementor .jm-modal-gallery { padding:0 48px 48px; }
.elementor.elementor .jm-modal-gallery > .elementor-container { gap:24px; }
.elementor.elementor .jm-modal-gallery .elementor-column { width:calc(50% - 12px); }
.jm-modal-gallery-image { overflow:hidden; border:4px solid #000; }
.jm-modal-gallery-image img { aspect-ratio:4/3; object-fit:cover; filter:grayscale(1); transition:filter .5s; }
.jm-modal-gallery-image:hover img { filter:none; }
.elementor.elementor .jm-modal-extras { padding:0 48px 48px; }
.elementor.elementor .jm-modal-extras > .elementor-container { gap:32px; }
.elementor.elementor .jm-modal-extras .elementor-column { width:calc(50% - 16px); }
.elementor.elementor .jm-modal-extras :is(.jm-small-title,:where(.ap-native-small-title)) { margin:0 0 16px; }
.elementor.elementor .jm-swatch { width:auto; margin:0 12px 24px 0; }
.elementor.elementor .jm-swatch .elementor-button { width:64px; height:64px; padding:0; border:2px solid #000; position:relative; }
.jm-swatch .elementor-button-text { opacity:0; position:absolute; top:72px; left:50%; transform:translateX(-50%); font-size:12px; letter-spacing:0; color:#111; }
.jm-swatch:hover .elementor-button-text,.jm-swatch:focus-within .elementor-button-text { opacity:1; }
.elementor.elementor .jm-modal-cta { padding:48px; text-align:center; }
.elementor.elementor .jm-modal-cta-title { margin:24px 0; }
.elementor.elementor .jm-modal-cta-title .elementor-heading-title { font-size:30px; letter-spacing:.2em; }
.elementor.elementor .jm-modal-corner { position:absolute; width:96px; height:96px; z-index:4; pointer-events:none; }
.jm-corner-tl { top:0; left:0; }.jm-corner-tr { top:0; right:0; }.jm-corner-bl { bottom:0; left:0; }.jm-corner-br { bottom:0; right:0; }
.elementor-editor-active .elementor.elementor .jm-project-dialog,.elementor-editor-preview .elementor.elementor .jm-project-dialog { display:block; position:relative; inset:auto; transform:none; box-shadow:none; margin:40px auto; }
.elementor-editor-active .jm-header,.elementor-editor-preview .jm-header { position:relative; top:auto; }
.elementor-editor-active :is(.jm-hero-pattern,:where(.elementor-widget-html:has(.ap-section-pattern))),.elementor-editor-active .jm-hero-sankofa,.elementor-editor-active .jm-hero-sun { pointer-events:auto; }
.js-reveal { opacity:1; transform:none; }
@keyframes jmBounce { 50% { transform:translateY(10px); } }
@keyframes jmHeroFloat { 50% { transform:translateY(-20px) rotate(10deg); } }
@keyframes jmHeroSun { 50% { transform:translateY(20px) rotate(-10deg); } }
.elementor.elementor .jm-hero-sankofa.elementor-widget { animation-name:jmHeroFloat; }
.elementor.elementor .jm-hero-sun.elementor-widget { animation-name:jmHeroSun; }
@media(min-width:640px) and (max-width:767px) { .elementor.elementor :is(.jm-hero-title,:where(.ap-native-hero-title)) .elementor-heading-title { font-size:48px; line-height:48px; letter-spacing:.5em; } }
@media(min-width:768px) and (max-width:1023px) { .elementor.elementor :is(.jm-hero-title,:where(.ap-native-hero-title)) .elementor-heading-title { font-size:72px; } }
@media(max-width:1023px) {
  .elementor.elementor :is(.jm-section,:where(.elementor-top-section:has([class*="ap-native-"]))) { padding-left:24px; padding-right:24px; }
  .elementor.elementor :is(.jm-hero,:where(.elementor-top-section:has(.ap-native-hero-title))) { padding-left:16px; padding-right:16px; }
  .elementor.elementor :is(.jm-two-column,:where(.elementor-top-section:has(:is(.ap-native-about-intro,.ap-native-contact-title)))) > .elementor-container { flex-wrap:wrap; gap:80px; }
  .elementor.elementor :is(.jm-two-column,:where(.elementor-top-section:has(:is(.ap-native-about-intro,.ap-native-contact-title)))) .elementor-column { width:100%; }
  .jm-product-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .elementor.elementor .jm-header .elementor-column:last-child .elementor-widget-wrap { gap:16px; }
}
@media(max-width:767px) {
  .elementor.elementor :is(.jm-hero-title,:where(.ap-native-hero-title)) .elementor-heading-title { font-size:36px; line-height:40px; letter-spacing:.3em; }
  .elementor.elementor :is(.jm-hero-role,:where(.ap-native-hero-role)) { font-size:14px; line-height:20px; letter-spacing:.3em; }
  .elementor.elementor :is(.jm-section-title,:where(.ap-native-section-title)) .elementor-heading-title { font-size:48px; line-height:48px; letter-spacing:.3em; overflow-wrap:anywhere; }
  .elementor.elementor :is(.jm-work-row,:where(.elementor-top-section:has(.ap-native-work-image))) > .elementor-container { flex-direction:column; gap:48px; }
  .elementor.elementor :is(.jm-work-row,:where(.elementor-top-section:has(.ap-native-work-image))) .elementor-column { width:100%; }
  .elementor.elementor :is(.jm-project-title,:where(.ap-native-project-title)) .elementor-heading-title { font-size:36px; line-height:40px; }
  .elementor.elementor :is(.jm-about-intro,:where(.ap-native-about-intro)) { font-size:24px; }
  .jm-product-grid { grid-template-columns:1fr; }
  .jm-preview-panel { grid-template-columns:1fr; }.jm-preview-details { padding:32px; }
  .jm-form { padding:24px; }
  .elementor.elementor .jm-contact-link .elementor-button { font-size:16px; overflow-wrap:anywhere; }
  .elementor.elementor .jm-header { padding:0 16px; }
  body.admin-bar .elementor.elementor .jm-header { top:46px; }
  .elementor.elementor .jm-header .elementor-column:first-child { width:104px; }
  .elementor.elementor .jm-header .elementor-column:last-child { width:calc(100% - 104px); }
  .elementor.elementor .jm-header .elementor-column:last-child .elementor-widget-wrap { gap:12px; }
  .elementor.elementor .jm-header .jm-initials { display:block; }
  .elementor.elementor .jm-header .jm-nav-link,.elementor.elementor .jm-header .elementor-widget-jm_language { display:none; }
  .elementor.elementor .jm-menu-toggle { display:block; }
  .elementor.elementor .jm-menu-toggle .elementor-button { padding:8px; background:transparent; color:#000; font-size:22px; }
  .elementor.elementor .jm-header.is-menu-open::after { content:""; position:absolute; top:80px; left:0; right:0; height:260px; background:#fff; border-bottom:2px solid #000; z-index:-1; }
  .elementor.elementor .jm-header.is-menu-open .jm-nav-link,.elementor.elementor .jm-header.is-menu-open .elementor-widget-jm_language { display:block; position:fixed; left:24px; right:24px; width:auto; text-align:left; top:104px; }
  .elementor.elementor .jm-header.is-menu-open .jm-nav-link:nth-child(2) { top:164px; }
  .elementor.elementor .jm-header.is-menu-open .jm-nav-link:nth-child(3) { top:224px; }
  .elementor.elementor .jm-header.is-menu-open .elementor-widget-jm_language { top:272px; }
  body.admin-bar .elementor.elementor .jm-header.is-menu-open :is(.jm-nav-link,:where(.elementor-widget-jm_language)) { transform:translateY(46px); }
  .elementor.elementor .jm-header.is-menu-open .jm-nav-link .elementor-button { font-size:18px; letter-spacing:.2em; }
  .elementor.elementor .jm-nav-link .elementor-button { font-size:11px; letter-spacing:.08em; }
  .jm-language { padding:8px; font-size:12px; gap:4px; }
  .jm-cart { padding:8px; }
  .elementor.elementor .jm-modal-title { margin-left:24px; margin-right:24px; width:calc(100% - 48px); }
  .elementor.elementor .jm-modal-title .elementor-heading-title { font-size:36px; letter-spacing:.2em; overflow-wrap:anywhere; }
  .elementor.elementor .jm-modal-category { margin-left:24px; margin-right:24px; }
  .elementor.elementor .jm-modal-meta,.elementor.elementor .jm-modal-overview,.elementor.elementor .jm-modal-cta { padding:24px; }
  .elementor.elementor .jm-modal-solutions,.elementor.elementor .jm-modal-gallery,.elementor.elementor .jm-modal-extras { padding:0 24px 24px; }
  .elementor.elementor .jm-modal-gallery-title { padding:0 24px; }
  .elementor.elementor .jm-modal-meta > .elementor-container,.elementor.elementor .jm-modal-solutions > .elementor-container,.elementor.elementor .jm-modal-gallery > .elementor-container,.elementor.elementor .jm-modal-extras > .elementor-container { flex-wrap:wrap; }
  .elementor.elementor .jm-modal-meta .elementor-column,.elementor.elementor .jm-modal-solutions .elementor-column,.elementor.elementor .jm-modal-gallery .elementor-column,.elementor.elementor .jm-modal-extras .elementor-column { width:100%; }
}
@media(min-width:640px) and (max-width:767px) {
  .elementor.elementor :is(.jm-hero-title,:where(.ap-native-hero-title)) .elementor-heading-title { font-size:48px; line-height:48px; letter-spacing:.5em; }
  .elementor.elementor :is(.jm-hero-role,:where(.ap-native-hero-role)) { font-size:16px; line-height:24px; letter-spacing:.5em; }
}
/* Earlier Elementor documents use ap-native roles and HTML decorations, not jm roles. */
.elementor.elementor .elementor-top-section:has([class*="ap-native-"]) .elementor-widget { --kit-widget-spacing:0px; --widgets-spacing:0px; }
.elementor.elementor :is(.ap-native-hero-role,.ap-native-section-subtitle,.ap-native-meta) .elementor-heading-title { font:inherit; letter-spacing:inherit; color:inherit; }
.elementor.elementor .elementor-top-section:has(.ap-native-hero-title)::before,
.elementor.elementor .elementor-top-section:has(.ap-native-hero-title)::after { content:""; position:absolute; width:96px; height:96px; opacity:.2; pointer-events:none; background:center / contain no-repeat; }
.elementor.elementor .elementor-top-section:has(.ap-native-hero-title)::before { top:128px; left:48px; background-image:url("assets/images/sankofa.svg"); animation:jmHeroFloat 4s infinite; }
.elementor.elementor .elementor-top-section:has(.ap-native-hero-title)::after { bottom:128px; right:48px; background-image:url("assets/images/sun.svg"); animation:jmHeroSun 5s infinite; }
.elementor.elementor .ap-native-hero-mark { height:96px; display:flex; justify-content:center; }
.elementor.elementor .elementor-widget-html:has(.ap-native-hero-mark) { margin-bottom:32px; }
.elementor.elementor .ap-native-hero-mark > div { flex-shrink:0; }
.elementor.elementor .elementor-top-section:has(.ap-native-hero-title) .ap-section-pattern { opacity:1; }
.elementor.elementor .elementor-top-section:has(.ap-native-hero-title) .ap-section-pattern svg { opacity:.1; }
.elementor.elementor .ap-native-down { width:32px; height:32px; margin:auto; font-size:0; background:url("assets/images/chevron.svg") center / contain no-repeat; }
.elementor.elementor .elementor-widget-html:has(.ap-native-down) { pointer-events:none; }
.elementor.elementor .elementor-top-section:has(.ap-native-hero-title) .ap-native-button .elementor-button { display:flex; align-items:center; justify-content:center; height:100%; }
.elementor.elementor .elementor-top-section:has(.ap-native-section-title) .elementor-widget-html:has(.ap-divider) { margin-top:32px; }
.elementor.elementor .elementor-top-section:has(.ap-native-section-title):not(:has(.ap-native-section-subtitle)) .elementor-widget-html:has(.ap-divider) { margin-top:0; }
.elementor.elementor .elementor-top-section:has(.ap-native-section-title):not(:has(.ap-native-section-subtitle)) .elementor-widget-html:has(.ap-divider) > div { margin-left:0; }
.elementor.elementor .elementor-top-section:has(.ap-native-shop-filters) { background:#000 url("assets/images/kente-background.svg") 40px 80px / 128px 128px no-repeat; }
.elementor.elementor .elementor-top-section:has(.ap-native-shop-filters) .ap-native-section-title .elementor-heading-title { font-family:Arial,sans-serif; }
.elementor.elementor .elementor-top-section:has(.ap-native-about-intro) { background-image:url("assets/images/about-background.svg"); }
.elementor.elementor .elementor-top-section:has(.ap-native-work-image):has(+ .elementor-top-section .ap-native-section-title) { background:url("assets/images/kente-background.svg") right 40px bottom 160px / 160px 160px no-repeat; }
.elementor.elementor .ap-native-portrait img { width:448px; max-width:100%; border:4px solid #000; aspect-ratio:4/7; object-fit:cover; }
.elementor.elementor .ap-native-lines { width:128px; margin:32px auto; }
.elementor.elementor .ap-native-lines > div { height:4px; background:#000; margin-bottom:8px; }
.elementor.elementor .ap-native-lines > span { display:inline-block; width:32px; height:4px; margin-right:4px; background:var(--jm-red); }
.elementor.elementor .ap-native-lines > span:nth-of-type(2) { background:var(--jm-green); }
.elementor.elementor .ap-native-lines > span:nth-of-type(3) { background:var(--jm-gold); }
.elementor.elementor .ap-native-chips { display:flex; flex-wrap:wrap; gap:12px; }
.elementor.elementor .ap-native-chips span { border:2px solid #000; padding:8px 16px; font:16px/24px Arial,sans-serif; text-transform:uppercase; }
.elementor.elementor .ap-native-shop-filters { display:flex; justify-content:center; gap:24px; margin-top:48px; }
.elementor.elementor .ap-native-shop-filters button { padding:12px 32px; border:2px solid #fff; background:none; color:#fff; font:16px/24px Arial,sans-serif; letter-spacing:.1em; }
.elementor.elementor .ap-native-shop-filters button:is(:first-child,:hover) { background:#fff; color:#000; }
.elementor.elementor .elementor-top-section:has(.ap-native-product-image) { padding-bottom:48px; }
.elementor.elementor .elementor-top-section:has(.ap-native-product-image) > .elementor-container { gap:48px; }
.elementor.elementor .elementor-top-section:has(.ap-native-product-image) .elementor-column { width:calc((100% - 96px)/3); }
.elementor.elementor .ap-native-product-image { margin-bottom:24px; overflow:hidden; }
.elementor.elementor .ap-native-product-image img { width:100%; aspect-ratio:1; object-fit:cover; filter:grayscale(1); transition:filter .6s,transform .6s; }
.elementor.elementor .ap-native-product-image:hover img { filter:none; transform:scale(1.1); }
.elementor.elementor .ap-native-product-title .elementor-heading-title { font:500 24px/32px Arial,sans-serif; letter-spacing:.1em; }
.elementor.elementor .ap-native-product-desc { font:16px/24px Arial,sans-serif; color:#9ca3af; margin:12px 0 16px; }
.elementor.elementor .ap-native-product-desc p { margin:0; }
.elementor.elementor .ap-native-product-price { margin-bottom:24px; }
.elementor.elementor .ap-native-product-price .elementor-heading-title { font:500 30px/36px Arial,sans-serif; }
.elementor.elementor .ap-native-button-light .elementor-button { background:#fff; color:#000; }
.elementor.elementor .ap-native-shop-cta-text { margin:24px 0; }
.elementor.elementor .ap-native-shop-cta-text .elementor-heading-title { font:20px/28px Arial,sans-serif; color:#9ca3af; }
@media(max-width:1023px) {
  .elementor.elementor .elementor-top-section:has(.ap-native-product-image) > .elementor-container { flex-wrap:wrap; }
  .elementor.elementor .elementor-top-section:has(.ap-native-product-image) .elementor-column { width:calc(50% - 24px); }
}
@media(max-width:767px) {
  .elementor.elementor .elementor-top-section:has(.ap-native-product-image) .elementor-column { width:100%; }
  .elementor.elementor .ap-native-shop-filters { gap:12px; flex-wrap:wrap; }
  .elementor.elementor .ap-native-shop-filters button { padding:12px 20px; }
}
@media(prefers-reduced-motion:reduce) { html { scroll-behavior:auto; } *,*::before,*::after { animation:none !important; transition:none !important; } }
