/*
Theme Name: Sanctue Elementor
Theme URI: https://example.com/
Author: Moving Forward Group
Author URI: https://example.com/
Description: A lightweight Elementor-friendly WordPress and WooCommerce theme for Sanctue. The theme provides the branded header, footer, menus, Customizer controls and WooCommerce integration while leaving page layouts to Elementor.
Version: 1.0.1
Requires at least: 6.2
Tested up to: 6.8
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: sanctue-elementor
Tags: e-commerce, custom-logo, custom-menu, featured-images, full-width-template, translation-ready, elementor
*/

:root {
  --sanctue-cream: #ebe6e4;
  --sanctue-paper: #f6f3f1;
  --sanctue-sage: #c6c098;
  --sanctue-lavender: #b2abc2;
  --sanctue-clay: #a68d78;
  --sanctue-ink: #3a322c;
  --sanctue-ink-soft: #6b6058;
  --sanctue-line: rgba(58, 50, 44, 0.14);
  --sanctue-white: #fffdfb;
  --sanctue-serif: "Inria Serif", "Times New Roman", serif;
  --sanctue-sans: "Inria Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --sanctue-container: 1180px;
  --sanctue-ease: cubic-bezier(.4, 0, .2, 1);
}

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  background: var(--sanctue-cream);
  color: var(--sanctue-ink);
  font-family: var(--sanctue-sans);
  font-weight: 300;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}
img { max-width: 100%; height: auto; }
a { color: inherit; }
.screen-reader-text {
  position: absolute !important;
  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 !important;
  top: 12px; left: 12px; z-index: 99999;
  width: auto; height: auto; clip: auto;
  padding: 12px 16px;
  background: var(--sanctue-paper);
  color: var(--sanctue-ink);
}
:focus-visible { outline: 2px solid var(--sanctue-clay); outline-offset: 3px; }

.sanctue-container {
  width: min(100% - 64px, var(--sanctue-container));
  margin-inline: auto;
}
.sanctue-site-main { min-height: 40vh; }
.sanctue-content-width {
  width: min(100% - 64px, 900px);
  margin-inline: auto;
  padding-block: 72px;
}
.sanctue-content-width h1,
.sanctue-content-width h2,
.sanctue-content-width h3,
.sanctue-content-width h4 {
  color: var(--sanctue-ink);
  font-family: var(--sanctue-serif);
  font-weight: 400;
  line-height: 1.25;
}
.sanctue-content-width a { color: var(--sanctue-clay); }

/* Header */
.sanctue-site-header {
  position: sticky;
  top: 0;
  z-index: 1000;
  background: color-mix(in srgb, var(--sanctue-cream) 92%, transparent);
  -webkit-backdrop-filter: blur(8px);
  backdrop-filter: blur(8px);
  border-bottom: 1px solid var(--sanctue-line);
}
.admin-bar .sanctue-site-header { top: 32px; }
.sanctue-nav {
  position: relative;
  min-height: 78px;
  display: grid;
  grid-template-columns: minmax(130px, 1fr) auto minmax(130px, 1fr);
  align-items: center;
  gap: 28px;
}
.sanctue-brand { justify-self: start; line-height: 1; }
.sanctue-brand a { display: inline-flex; align-items: center; text-decoration: none; }
.sanctue-brand-text {
  color: var(--sanctue-ink);
  font-family: var(--sanctue-serif);
  font-size: 1.55rem;
  letter-spacing: .04em;
}
.sanctue-brand .custom-logo {
  display: block;
  width: auto;
  max-width: 190px;
  max-height: 54px;
  object-fit: contain;
}
.sanctue-primary-navigation { justify-self: center; }
.sanctue-nav-links,
.sanctue-nav-links ul {
  list-style: none;
  margin: 0;
  padding: 0;
}
.sanctue-nav-links {
  display: flex;
  align-items: center;
  gap: 2rem;
  color: var(--sanctue-ink);
  font-size: .79rem;
  font-weight: 400;
  letter-spacing: .09em;
  text-transform: uppercase;
}
.sanctue-nav-links li { position: relative; }
.sanctue-nav-links a {
  position: relative;
  display: block;
  padding: 27px 0 24px;
  color: inherit;
  text-decoration: none;
  white-space: nowrap;
}
.sanctue-nav-links > li > a::after {
  content: "";
  position: absolute;
  left: 0; right: 100%; bottom: 20px;
  height: 1px;
  background: var(--sanctue-clay);
  transition: right .3s var(--sanctue-ease);
}
.sanctue-nav-links > li:hover > a::after,
.sanctue-nav-links > .current-menu-item > a::after,
.sanctue-nav-links > .current-menu-ancestor > a::after { right: 0; }
.sanctue-nav-links .sub-menu {
  position: absolute;
  top: calc(100% - 8px);
  left: -20px;
  min-width: 210px;
  padding: 10px 0;
  visibility: hidden;
  opacity: 0;
  transform: translateY(8px);
  background: var(--sanctue-paper);
  border: 1px solid var(--sanctue-line);
  box-shadow: 0 18px 40px rgba(58, 50, 44, .1);
  transition: opacity .2s ease, transform .2s ease, visibility .2s ease;
}
.sanctue-nav-links li:hover > .sub-menu,
.sanctue-nav-links li:focus-within > .sub-menu {
  visibility: visible;
  opacity: 1;
  transform: translateY(0);
}
.sanctue-nav-links .sub-menu a {
  padding: 10px 20px;
  letter-spacing: .05em;
  white-space: normal;
}
.sanctue-nav-links .sub-menu a:hover { color: var(--sanctue-clay); }
.sanctue-nav-actions {
  justify-self: end;
  display: flex;
  align-items: center;
  gap: 17px;
}
.sanctue-cart-link {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  color: var(--sanctue-ink);
  font-size: .79rem;
  letter-spacing: .09em;
  text-decoration: none;
  text-transform: uppercase;
}
.sanctue-cart-count {
  min-width: 20px;
  height: 20px;
  padding-inline: 5px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 999px;
  background: var(--sanctue-clay);
  color: var(--sanctue-white);
  font-size: .67rem;
  font-weight: 700;
  letter-spacing: 0;
}
.sanctue-menu-toggle {
  display: none;
  width: 42px;
  height: 42px;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--sanctue-ink);
  cursor: pointer;
}
.sanctue-menu-toggle span,
.sanctue-menu-toggle::before,
.sanctue-menu-toggle::after {
  content: "";
  display: block;
  width: 24px;
  height: 1px;
  margin: 6px auto;
  background: currentColor;
  transition: transform .25s ease, opacity .25s ease;
}
.sanctue-menu-toggle[aria-expanded="true"] span { opacity: 0; }
.sanctue-menu-toggle[aria-expanded="true"]::before { transform: translateY(7px) rotate(45deg); }
.sanctue-menu-toggle[aria-expanded="true"]::after { transform: translateY(-7px) rotate(-45deg); }

/* Footer */
.sanctue-site-footer {
  border-top: 1px solid var(--sanctue-line);
  background: var(--sanctue-cream);
  color: var(--sanctue-ink);
  padding: 64px 0 36px;
}
.sanctue-footer-grid {
  display: grid;
  grid-template-columns: 1.45fr 1fr 1fr 1fr;
  gap: 42px;
  margin-bottom: 48px;
}
.sanctue-footer-brand { margin-bottom: 16px; }
.sanctue-footer-brand .custom-logo { max-width: 180px; max-height: 56px; width: auto; }
.sanctue-footer-description {
  max-width: 34ch;
  margin: 0;
  color: var(--sanctue-ink-soft);
  font-size: .91rem;
}
.sanctue-footer-heading {
  margin: 0 0 18px;
  color: var(--sanctue-ink);
  font-family: var(--sanctue-sans);
  font-size: .75rem;
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
}
.sanctue-footer-menu,
.sanctue-contact-list {
  display: flex;
  flex-direction: column;
  gap: 9px;
  margin: 0;
  padding: 0;
  list-style: none;
  color: var(--sanctue-ink-soft);
  font-size: .9rem;
}
.sanctue-footer-menu a,
.sanctue-contact-list a {
  color: inherit;
  text-decoration: none;
  transition: color .2s ease;
}
.sanctue-footer-menu a:hover,
.sanctue-contact-list a:hover { color: var(--sanctue-clay); }
.sanctue-footer-bottom {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  padding-top: 24px;
  border-top: 1px solid var(--sanctue-line);
  color: var(--sanctue-ink-soft);
  font-size: .78rem;
}

/* Standard WordPress content */
.sanctue-post-list { display: grid; gap: 42px; }
.sanctue-post-card { padding-bottom: 42px; border-bottom: 1px solid var(--sanctue-line); }
.sanctue-post-card h2 { margin-bottom: 8px; }
.sanctue-post-card h2 a { color: inherit; text-decoration: none; }
.sanctue-post-meta { color: var(--sanctue-ink-soft); font-size: .82rem; }
.navigation.pagination { margin-top: 42px; }
.nav-links { display: flex; gap: 9px; flex-wrap: wrap; }
.page-numbers { padding: 7px 12px; border: 1px solid var(--sanctue-line); text-decoration: none; }
.page-numbers.current { background: var(--sanctue-clay); color: white; border-color: var(--sanctue-clay); }

/* WooCommerce */
.sanctue-woocommerce-wrap {
  width: min(100% - 64px, var(--sanctue-container));
  margin-inline: auto;
  padding-block: 72px;
}
.woocommerce .woocommerce-breadcrumb { color: var(--sanctue-ink-soft); font-size: .82rem; }
.woocommerce h1,
.woocommerce h2,
.woocommerce h3,
.woocommerce div.product .product_title {
  color: var(--sanctue-ink);
  font-family: var(--sanctue-serif);
  font-weight: 400;
}
.woocommerce ul.products { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 34px; }
.woocommerce ul.products::before,
.woocommerce ul.products::after { display: none; }
.woocommerce ul.products li.product { width: auto !important; margin: 0 !important; float: none !important; }
.woocommerce ul.products li.product a img { margin-bottom: 18px; background: var(--sanctue-paper); }
.woocommerce ul.products li.product .woocommerce-loop-product__title { padding: 0; font-size: 1.18rem; }
.woocommerce ul.products li.product .price,
.woocommerce div.product p.price,
.woocommerce div.product span.price { color: var(--sanctue-ink); font-family: var(--sanctue-serif); }
.woocommerce span.onsale {
  min-width: auto;
  min-height: auto;
  padding: 7px 11px;
  border-radius: 0;
  background: var(--sanctue-clay);
  font-size: .7rem;
  line-height: 1;
  text-transform: uppercase;
}
.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button,
.woocommerce #respond input#submit,
.woocommerce a.button.alt,
.woocommerce button.button.alt,
.woocommerce input.button.alt {
  border-radius: 0;
  background: var(--sanctue-clay);
  color: var(--sanctue-white);
  font-family: var(--sanctue-sans);
  font-size: .78rem;
  font-weight: 700;
  letter-spacing: .07em;
  text-transform: uppercase;
  transition: background .25s ease;
}
.woocommerce a.button:hover,
.woocommerce button.button:hover,
.woocommerce input.button:hover,
.woocommerce #respond input#submit:hover,
.woocommerce a.button.alt:hover,
.woocommerce button.button.alt:hover,
.woocommerce input.button.alt:hover { background: var(--sanctue-ink); color: var(--sanctue-white); }
.woocommerce-message,
.woocommerce-info { border-top-color: var(--sanctue-clay); background: var(--sanctue-paper); }
.woocommerce-message::before,
.woocommerce-info::before { color: var(--sanctue-clay); }
.woocommerce form .form-row input.input-text,
.woocommerce form .form-row textarea,
.woocommerce select,
.select2-container--default .select2-selection--single {
  min-height: 44px;
  border: 1px solid var(--sanctue-line);
  border-radius: 0;
  background: var(--sanctue-paper);
}
.woocommerce table.shop_table { border-color: var(--sanctue-line); border-radius: 0; }
.woocommerce div.product .woocommerce-tabs ul.tabs li { border-radius: 0; background: var(--sanctue-paper); }

/* Elementor compatibility */
.elementor-page .sanctue-site-main { overflow: clip; }
.elementor-template-full-width .sanctue-site-main,
.elementor-page .sanctue-site-main { width: 100%; }

@media (max-width: 1024px) {
  .sanctue-nav { grid-template-columns: 1fr auto; }
  .sanctue-primary-navigation {
    position: absolute;
    top: 100%; left: 0; right: 0;
    display: none;
    background: var(--sanctue-cream);
    border-bottom: 1px solid var(--sanctue-line);
  }
  .sanctue-primary-navigation.is-open { display: block; }
  .sanctue-nav-links { display: block; padding: 14px 32px 22px; }
  .sanctue-nav-links a { padding: 10px 0; }
  .sanctue-nav-links > li > a::after { display: none; }
  .sanctue-nav-links .sub-menu {
    position: static;
    display: block;
    min-width: 0;
    padding: 0 0 5px 18px;
    visibility: visible;
    opacity: 1;
    transform: none;
    border: 0;
    box-shadow: none;
    background: transparent;
  }
  .sanctue-nav-links .sub-menu a { padding: 7px 0; }
  .sanctue-menu-toggle { display: block; }
  .sanctue-footer-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .woocommerce ul.products { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

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

@media (max-width: 640px) {
  .sanctue-container,
  .sanctue-content-width,
  .sanctue-woocommerce-wrap { width: min(100% - 36px, var(--sanctue-container)); }
  .sanctue-nav { min-height: 70px; gap: 12px; }
  .sanctue-brand .custom-logo { max-width: 145px; max-height: 46px; }
  .sanctue-cart-label { display: none; }
  .sanctue-nav-actions { gap: 7px; }
  .sanctue-nav-links { padding-inline: 18px; }
  .sanctue-site-footer { padding-top: 48px; }
  .sanctue-footer-grid { grid-template-columns: 1fr; gap: 32px; }
  .sanctue-footer-bottom { align-items: flex-start; flex-direction: column; }
  .woocommerce ul.products { grid-template-columns: 1fr; }
}

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