/*
 * Gemma Joe's foundations for Elementor Free widgets.
 * Scoped selectors beat stock widget/kit defaults; explicit page/widget controls
 * can still override these foundations. Explicit layout controls remain editable.
 */

/* Connect Elementor's global defaults to the theme's existing design tokens. */
body[class*="elementor-kit-"] {
  --e-global-color-primary: var(--gj-ink);
  --e-global-color-secondary: var(--gj-muted);
  --e-global-color-text: var(--gj-ink);
  --e-global-color-accent: var(--gj-cherry);
  --e-global-typography-primary-font-family: var(--gj-display);
  --e-global-typography-primary-font-weight: 400;
  --e-global-typography-secondary-font-family: var(--gj-display);
  --e-global-typography-secondary-font-weight: 400;
  --e-global-typography-text-font-family: var(--gj-body);
  --e-global-typography-text-font-weight: 400;
  --e-global-typography-accent-font-family: var(--gj-body);
  --e-global-typography-accent-font-weight: 700;
}

.elementor {
  font-family: var(--gj-body);
  font-size: 1.0625rem;
  line-height: 1.65;
  color: inherit;
  --widgets-spacing: 24px;
}

/* Heading and Text Editor, including rich text inside other basic widgets. */
.elementor .elementor-widget-heading,
.elementor .elementor-widget-text-editor {
  color: inherit;
  font-family: var(--gj-body);
}
.elementor .elementor-widget-heading .elementor-heading-title,
.elementor .elementor-widget-text-editor :is(h1,h2,h3,h4,h5,h6) {
  color: inherit;
  line-height: 1.12;
  margin: 0 0 .65em;
  text-wrap: balance;
  overflow-wrap: break-word;
}
.elementor .elementor-widget-heading :is(h1,h2).elementor-heading-title,
.elementor .elementor-widget-text-editor :is(h1,h2) {
  font-family: var(--gj-display);
  font-weight: 400;
  letter-spacing: .015em;
}
.elementor .elementor-widget-heading h1.elementor-heading-title,
.elementor .elementor-widget-text-editor h1 { font-size: clamp(2.8rem,7vw,6rem); }
.elementor .elementor-widget-heading h2.elementor-heading-title,
.elementor .elementor-widget-text-editor h2 { font-size: clamp(2rem,4vw,3.5rem); }
.elementor .elementor-widget-heading :is(h3,h4,h5,h6).elementor-heading-title,
.elementor .elementor-widget-text-editor :is(h3,h4,h5,h6) {
  font-family: var(--gj-body);
  font-weight: 700;
  letter-spacing: 0;
}
.elementor .elementor-widget-heading h3.elementor-heading-title,
.elementor .elementor-widget-text-editor h3 { font-size: clamp(1.4rem,2.2vw,1.8rem); }
.elementor .elementor-widget-heading h4.elementor-heading-title,
.elementor .elementor-widget-text-editor h4 { font-size: 1.25rem; }
.elementor .elementor-widget-heading h5.elementor-heading-title,
.elementor .elementor-widget-text-editor h5 { font-size: 1.125rem; }
.elementor .elementor-widget-heading h6.elementor-heading-title,
.elementor .elementor-widget-text-editor h6 { font-size: 1rem; }
.elementor .elementor-widget-heading :is(div,span,p).elementor-heading-title {
  font: inherit;
}
.elementor .elementor-widget-heading .elementor-heading-title a { color: inherit; }
.elementor .elementor-widget-text-editor { line-height: 1.65; overflow-wrap: break-word; }
.elementor .elementor-widget-text-editor p { margin: 0 0 1.3em; }
.elementor .elementor-widget-text-editor :is(p,ul,ol,blockquote):last-child { margin-bottom: 0; }
.elementor .elementor-widget-text-editor :is(ul,ol) { padding-inline-start: 1.5em; }
.elementor .elementor-widget-text-editor li + li { margin-top: .4em; }
.elementor .elementor-widget-text-editor li::marker { color: var(--gj-cherry); }
.elementor .elementor-widget-text-editor a {
  color: var(--gj-cherry);
  text-decoration: underline;
  text-underline-offset: .2em;
}
.elementor .elementor-widget-text-editor blockquote {
  border-inline-start: 3px solid var(--gj-cherry);
  color: inherit;
  padding: .25rem 0 .25rem 1.5rem;
  margin: 2rem 0;
  font-size: clamp(1.2rem,2vw,1.55rem);
}
.elementor .elementor-widget-text-editor table { font-family: inherit; }
.elementor .elementor-widget-text-editor :is(th,td) { border-color: var(--gj-line); }
.elementor .elementor-widget-text-editor th { background: var(--gj-paper); }
.elementor .elementor-drop-cap { color: var(--gj-cherry); font-family: var(--gj-display); }
.elementor .elementor-drop-cap-view-stacked .elementor-drop-cap { background-color: var(--gj-cherry); color: #fff; }

/* Button: native Elementor sizes/alignment remain available in its controls. */
.elementor .elementor-widget-button .elementor-button {
  min-height: 48px;
  padding: .85rem 1.5rem;
  border: 1px solid transparent;
  border-radius: 3px;
  background-color: var(--gj-cherry);
  color: #fff;
  font-family: var(--gj-body);
  font-size: 1rem;
  font-weight: 700;
  line-height: 1.35;
  text-decoration: none;
  transition: background-color 180ms ease,color 180ms ease,box-shadow 180ms ease;
}
.elementor .elementor-widget-button .elementor-button:is(:hover,:focus-visible) {
  background-color: var(--gj-ink);
  color: #fff;
}
.elementor .elementor-widget-button .elementor-size-xs { padding: .65rem 1rem; font-size: .875rem; }
.elementor .elementor-widget-button .elementor-size-md { padding: 1rem 1.75rem; }
.elementor .elementor-widget-button .elementor-size-lg { padding: 1.15rem 2rem; font-size: 1.125rem; }
.elementor .elementor-widget-button .elementor-size-xl { padding: 1.3rem 2.25rem; font-size: 1.25rem; }
.elementor .elementor-button .elementor-button-icon { display: inline-flex; align-items: center; }
.elementor .elementor-button .elementor-button-icon svg { fill: currentColor; }

/* Image, gallery, carousel, video, audio, map. Do not change Swiper positioning. */
.elementor .elementor-widget-image img,
.elementor .elementor-image-gallery .gallery-item img,
.elementor .elementor-image-carousel-wrapper .swiper-slide-image {
  max-width: 100%;
  height: auto;
  border-radius: var(--gj-radius);
}
.elementor .elementor-widget-image :is(figure,figcaption) { margin-inline: 0; }
.elementor .elementor-widget-image .widget-image-caption,
.elementor .elementor-image-gallery .gallery-caption,
.elementor .elementor-image-carousel-caption {
  padding-block: .65rem;
  color: var(--gj-muted);
  font: .875rem/1.5 var(--gj-body);
}
.elementor .elementor-image-gallery .gallery-item { padding: .6rem; }
.elementor .elementor-widget-video :is(.elementor-wrapper,.elementor-custom-embed-image-overlay),
.elementor .elementor-widget-google_maps .elementor-custom-embed,
.elementor .elementor-widget-audio iframe {
  overflow: hidden;
  border-radius: var(--gj-radius);
}
.elementor .elementor-widget-google_maps iframe { display: block; border: 0; }
.elementor .elementor-custom-embed-play :is(i,svg) { color: var(--gj-cream); fill: var(--gj-cream); }
.elementor .elementor-swiper-button {
  color: var(--gj-ink);
  background: var(--gj-paper);
  border-radius: 50%;
  padding: .6rem;
  box-shadow: 0 2px 12px #281e1b20;
}
.elementor .swiper-pagination-bullet { background-color: var(--gj-muted); }
.elementor .swiper-pagination-bullet-active { background-color: var(--gj-cherry); }

/* Divider and Spacer: retain widget-authored height, orientation and width. */
.elementor .elementor-widget-divider { --divider-color: var(--gj-line); --divider-border-width: 1px; }
.elementor .elementor-widget-divider .elementor-divider__text {
  color: var(--gj-muted);
  font-family: var(--gj-body);
  font-size: .875rem;
  font-weight: 700;
  letter-spacing: .08em;
}
.elementor .elementor-widget-spacer .elementor-spacer-inner { max-width: 100%; }

/* Icon, Icon List, Image Box and Icon Box. Social network colors are preserved. */
.elementor .elementor-widget-icon .elementor-icon,
.elementor .elementor-widget-icon-box .elementor-icon,
.elementor .elementor-widget-icon-list .elementor-icon-list-icon {
  color: var(--gj-cherry);
  fill: var(--gj-cherry);
}
.elementor .elementor-widget-icon-list .elementor-icon-list-icon :is(i,svg) { color: inherit; fill: currentColor; }
.elementor .elementor-widget-icon.elementor-view-stacked .elementor-icon,
.elementor .elementor-widget-icon-box.elementor-view-stacked .elementor-icon {
  background-color: var(--gj-cherry);
  color: #fff;
  fill: #fff;
}
.elementor .elementor-widget-icon.elementor-view-framed .elementor-icon,
.elementor .elementor-widget-icon-box.elementor-view-framed .elementor-icon { border-color: var(--gj-cherry); }
.elementor .elementor-widget-icon-list .elementor-icon-list-item { padding-block: .35rem; }
.elementor .elementor-widget-icon-list .elementor-icon-list-text {
  color: inherit;
  font: 1rem/1.6 var(--gj-body);
}
.elementor .elementor-widget-icon-list .elementor-icon-list-item a { color: inherit; }
.elementor .elementor-widget-icon-list .elementor-icon-list-item a:hover .elementor-icon-list-text { color: var(--gj-cherry); }
.elementor .elementor-widget-icon-box .elementor-icon-box-title,
.elementor .elementor-widget-image-box .elementor-image-box-title {
  color: inherit;
  margin: 0 0 .65rem;
  font: 700 clamp(1.25rem,2vw,1.6rem)/1.25 var(--gj-body);
}
.elementor .elementor-widget-icon-box .elementor-icon-box-title a,
.elementor .elementor-widget-image-box .elementor-image-box-title a { color: inherit; }
.elementor .elementor-widget-icon-box .elementor-icon-box-description,
.elementor .elementor-widget-image-box .elementor-image-box-description {
  color: var(--gj-muted);
  margin: 0;
  font: 1rem/1.65 var(--gj-body);
}
.elementor .elementor-widget-image-box .elementor-image-box-img img { border-radius: var(--gj-radius); }
.elementor .elementor-widget-social-icons .elementor-social-icon { border-radius: 50%; transition: opacity 180ms ease; }
.elementor .elementor-widget-social-icons .elementor-social-icon:hover { opacity: .85; }

/* Counter, Progress Bar, Testimonial and star/rating widgets. */
.elementor .elementor-widget-counter .elementor-counter-number-wrapper {
  color: var(--gj-cherry);
  font: 400 clamp(2.5rem,6vw,4rem)/1.1 var(--gj-display);
}
.elementor .elementor-widget-counter .elementor-counter-title { color: inherit; font: 700 1rem/1.5 var(--gj-body); }
.elementor .elementor-widget-progress .elementor-title { color: inherit; font: 700 1rem/1.5 var(--gj-body); }
.elementor .elementor-widget-progress .elementor-progress-wrapper { background-color: var(--gj-line); border-radius: 4px; overflow: hidden; }
.elementor .elementor-widget-progress .elementor-progress-bar {
  background-color: var(--gj-cherry);
  color: #fff;
  min-height: 36px;
  font: 700 .875rem/36px var(--gj-body);
}
.elementor .elementor-widget-testimonial .elementor-testimonial-wrapper {
  background: var(--gj-paper);
  border: 1px solid var(--gj-line);
  border-radius: var(--gj-radius);
  padding: clamp(1.25rem,3vw,2rem);
}
.elementor .elementor-widget-testimonial .elementor-testimonial-content { color: inherit; font: 1.2rem/1.65 var(--gj-body); }
.elementor .elementor-widget-testimonial .elementor-testimonial-name { color: var(--gj-cherry); font: 700 1rem/1.5 var(--gj-body); }
.elementor .elementor-widget-testimonial .elementor-testimonial-job { color: var(--gj-muted); font: .875rem/1.5 var(--gj-body); }
.elementor .elementor-widget-testimonial .elementor-testimonial-image img { object-fit: cover; border-radius: 50%; }
.elementor .elementor-widget-star-rating .elementor-star-rating { color: var(--gj-line); }
.elementor .elementor-widget-star-rating .elementor-star-rating i:before { color: var(--gj-cherry); }
.elementor .elementor-widget-rating { --e-rating-icon-marked-color: var(--gj-cherry); --e-rating-icon-color: var(--gj-line); }
.elementor .elementor-star-rating__title { color: inherit; font-family: var(--gj-body); }

/* Legacy Tabs, Accordion and Toggle. Their JS retains control of open/hidden states. */
.elementor :is(.elementor-widget-tabs,.elementor-widget-accordion,.elementor-widget-toggle) {
  --e-global-color-primary: var(--gj-ink);
  --e-global-color-text: var(--gj-ink);
  --e-global-color-accent: var(--gj-cherry);
}
.elementor .elementor-widget-tabs .elementor-tab-title,
.elementor .elementor-widget-accordion .elementor-tab-title,
.elementor .elementor-widget-toggle .elementor-tab-title {
  color: var(--gj-ink);
  background-color: var(--gj-paper);
  border-color: var(--gj-line);
  padding: 1rem 1.25rem;
  font: 700 1rem/1.5 var(--gj-body);
}
.elementor .elementor-widget-tabs .elementor-tab-title.elementor-active {
  background-color: var(--gj-cherry);
  color: #fff;
}
.elementor .elementor-widget-accordion .elementor-tab-title.elementor-active,
.elementor .elementor-widget-toggle .elementor-tab-title.elementor-active { color: var(--gj-cherry); }
.elementor :is(.elementor-widget-tabs,.elementor-widget-accordion,.elementor-widget-toggle) .elementor-tab-title a { color: inherit; }
.elementor :is(.elementor-widget-tabs,.elementor-widget-accordion,.elementor-widget-toggle) .elementor-tab-content {
  background-color: var(--gj-paper);
  border-color: var(--gj-line);
  color: var(--gj-ink);
  padding: 1.25rem;
  font: 1rem/1.65 var(--gj-body);
}
.elementor .elementor-accordion .elementor-accordion-item,
.elementor .elementor-toggle .elementor-toggle-item { border-color: var(--gj-line); }
.elementor :is(.elementor-accordion-icon,.elementor-toggle-icon) :is(i,svg) { color: inherit; fill: currentColor; }

/* Current nested Tabs / Accordion markup. Never force display or panel heights. */
.elementor .elementor-widget-n-tabs .e-n-tab-title {
  background-color: var(--gj-paper);
  color: var(--gj-ink);
  border: 1px solid var(--gj-line);
  border-radius: 3px;
  min-height: 48px;
  padding: .85rem 1.25rem;
  font: 700 1rem/1.5 var(--gj-body);
}
.elementor .elementor-widget-n-tabs .e-n-tab-title[aria-selected="true"] { background-color: var(--gj-cherry); color: #fff; border-color: var(--gj-cherry); }
.elementor .elementor-widget-n-tabs .e-n-tab-title-text { color: inherit; }
.elementor .elementor-widget-n-tabs .e-n-tab-icon :is(i,svg) { color: inherit; fill: currentColor; }
.elementor .elementor-widget-n-accordion .e-n-accordion-item { border: 1px solid var(--gj-line); border-radius: var(--gj-radius); background: var(--gj-paper); }
.elementor .elementor-widget-n-accordion .e-n-accordion-item + .e-n-accordion-item { margin-top: .75rem; }
.elementor .elementor-widget-n-accordion .e-n-accordion-item-title {
  min-height: 48px;
  padding: 1rem 1.25rem;
  background: var(--gj-paper);
  color: var(--gj-ink);
  border-radius: inherit;
  font: 700 1rem/1.5 var(--gj-body);
}
.elementor .elementor-widget-n-accordion .e-n-accordion-item[open] > .e-n-accordion-item-title { color: var(--gj-cherry); }
.elementor .elementor-widget-n-accordion .e-n-accordion-item-title-text { color: inherit; }
.elementor .elementor-widget-n-accordion .e-n-accordion-item-title-icon :is(i,svg) { fill: currentColor; color: inherit; }

/* Alerts retain distinct semantic accents and their native dismiss behavior. */
.elementor .elementor-alert {
  position: relative;
  background-color: var(--gj-paper);
  color: var(--gj-ink);
  border: 1px solid var(--gj-line);
  border-inline-start-width: 4px;
  border-radius: 4px;
  padding: 1.25rem 3.5rem 1.25rem 1.25rem;
}
.elementor .elementor-alert.elementor-alert-info { border-inline-start-color: #31647b; }
.elementor .elementor-alert.elementor-alert-success { border-inline-start-color: #386047; }
.elementor .elementor-alert.elementor-alert-warning { border-inline-start-color: #95601c; }
.elementor .elementor-alert.elementor-alert-danger { border-inline-start-color: var(--gj-cherry); }
.elementor .elementor-alert .elementor-alert-title { color: inherit; font: 700 1.1rem/1.5 var(--gj-body); }
.elementor .elementor-alert .elementor-alert-description { color: inherit; font: 1rem/1.65 var(--gj-body); }
.elementor .elementor-alert .elementor-alert-dismiss {
  color: var(--gj-muted);
  background: transparent;
  border: 0;
  min-width: 44px;
  min-height: 44px;
  padding: .5rem;
}

/* Forms embedded by Shortcode, HTML, Sidebar or WordPress widgets. */
.elementor :is(.elementor-widget-shortcode,.elementor-widget-html,.elementor-widget-sidebar,.elementor-widget-wp-widget-block) {
  font-family: var(--gj-body);
  color: inherit;
}
.elementor form :is(input:not([type]),input[type="text"],input[type="email"],input[type="tel"],input[type="url"],input[type="search"],input[type="password"],input[type="number"],input[type="date"],textarea,select) {
  color: var(--gj-ink);
  background-color: var(--gj-paper);
  border: 1px solid var(--gj-muted);
  border-radius: 3px;
  padding: .8rem;
  font: 1rem/1.5 var(--gj-body);
}
.elementor form label { font-family: var(--gj-body); }
.elementor form :is(input[type="checkbox"],input[type="radio"]) { width: auto; accent-color: var(--gj-cherry); }
.elementor form :is(button[type="submit"],input[type="submit"]) {
  background-color: var(--gj-cherry);
  color: #fff;
  min-height: 48px;
  border-radius: 3px;
  font-family: var(--gj-body);
  font-weight: 700;
}
.elementor .elementor-widget-menu-anchor { scroll-margin-top: calc(var(--gj-header-height,0px) + var(--gj-admin-offset,0px) + 1rem); }
.elementor .elementor-widget-read-more { font: 700 1rem/1.5 var(--gj-body); color: var(--gj-cherry); }
.elementor .elementor-widget-text-path { color: var(--gj-cherry); fill: currentColor; font-family: var(--gj-display); }
.elementor :is(a,button,input,textarea,select,summary,[tabindex]):focus-visible { outline: 3px solid var(--gj-cherry); outline-offset: 4px; }

@media (max-width:600px) {
  .elementor { font-size: 1rem; }
  .elementor .elementor-image-gallery .gallery-item { padding: .35rem; }
  .elementor .elementor-widget-button .elementor-button { max-width: 100%; white-space: normal; }
  .elementor .elementor-widget-tabs .elementor-tab-title { padding: .85rem 1rem; }
}
@media (prefers-reduced-motion:reduce) {
  .elementor .elementor-button,
  .elementor .elementor-social-icon { transition: none; }
}

/* Edge-to-edge defaults. Authored --padding-* and container widths still win.
 * Inherit these variables through nested containers rather than adding a gutter
 * at each level. Set a boxed width and padding on the intended content container.
 */
.elementor {
  --container-default-padding-top: 0px;
  --container-default-padding-right: 0px;
  --container-default-padding-bottom: 0px;
  --container-default-padding-left: 0px;
}
.elementor .e-con {
  --container-max-width: 100%;
}
:where(.elementor) .elementor-section-boxed > .elementor-container {
  max-width: 100%;
}
:where(.elementor) .elementor-column-gap-default > :where(.elementor-column) > .elementor-element-populated {
  padding: 0;
}
/* Opt-in content shell; Elementor's explicit per-element controls take priority. */
.elementor .gj-section{--width:min(1280px,calc(100% - 48px));--margin-left:auto;--margin-right:auto;--container-max-width:1280px}
@media(max-width:599px){.elementor .gj-section{--width:min(1280px,calc(100% - 32px))}}
