.dulce-breadcrumbs-container {
  display: inline-block;
  max-width: 100%;
  margin: 15px 0 25px;
  padding: 8px 16px;
  color: #5c3d2e;
  font-size: 13px;
  line-height: 1.4;
  background: #fdfaf7;
  border: 1px solid #f3ebe3;
  border-radius: 6px;
}

.dulce-breadcrumbs-container a {
  color: #8a4f28;
  font-weight: 500;
  text-decoration: underline;
  text-underline-offset: 0.15em;
}

.dulce-breadcrumbs-container a:hover,
.dulce-breadcrumbs-container a:focus-visible {
  color: #5c3d2e;
}

.dulce-mobile-cta {
  display: none;
}

@media (max-width: 767px) {
  body {
    padding-bottom: calc(64px + env(safe-area-inset-bottom, 0px));
  }

  .dulce-mobile-cta {
    position: fixed;
    z-index: 9990;
    right: 0;
    bottom: 0;
    left: 0;
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    min-height: 60px;
    padding-bottom: env(safe-area-inset-bottom, 0px);
    background: #fffaf6;
    border-top: 1px solid #e8d8ca;
    box-shadow: 0 -4px 16px rgb(61 38 24 / 14%);
  }

  .dulce-mobile-cta[hidden] {
    display: none;
  }

  /* Parent class repeated on every colour-bearing rule below, 2026-09-06. The
     CTAs are <a> elements, so Elementor's kit rule
     `.elementor-kit-427 a { color: var(--e-global-color-accent) }` matches them
     at (0,1,1) and out-specifies a single class at (0,1,0) -- so AT REST the
     intended brown/white lost and all four rendered #f4761f (Order 2.02:1, the
     other three 2.72:1, four axe SERIOUS nodes). Hover/focus were never
     affected: a pseudo-class counts in the class column, so those rules were
     already (0,2,0). Repeating the parent lifts rest to (0,2,0) and
     hover/focus to (0,3,0), winning on specificity alone. The colours are
     unchanged -- they already pass (9.37:1, 5.70:1, hover 6.50:1), so this is
     a cascade fix and no !important is needed. */
  .dulce-mobile-cta .dulce-mobile-cta__link {
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: 0;
    min-height: 44px;
    padding: 8px 4px;
    color: #5c3d2e;
    font-size: 12px;
    font-weight: 700;
    line-height: 1.15;
    text-align: center;
    text-decoration: none;
    border-right: 1px solid #eadfd5;
  }

  .dulce-mobile-cta__link:last-child {
    border-right: 0;
  }

  .dulce-mobile-cta .dulce-mobile-cta__link--order {
    color: #fff;
    background: #bf3217;
  }

  .dulce-mobile-cta .dulce-mobile-cta__link:hover,
  .dulce-mobile-cta .dulce-mobile-cta__link:focus-visible {
    color: #fff;
    background: #8a4f28;
    outline: 3px solid #fff;
    outline-offset: -4px;
  }
}

/* ---------------------------------------------------------------------------
   HEADER: condensed on mobile, pinned on desktop.

   Measured on production 2026-08-03 at 390x664: the mobile header was 145px,
   21.8% of the viewport. NN/g puts the ceiling for a PERSISTENT header at 10%
   (50-60px on mobile), so pinning it as-is was disqualified -- it had to shrink
   before it could be pinned.

   It was 145px because `[data-id="841ba79"]` is a 2-COLUMN GRID holding FOUR
   children, so it wrapped to two rows and forced every item to exactly 175px:

     row 1   logo [071d2f8]        hamburger [8133ee7]
     row 2   "Order Now" [dc7a0b1] VI/EN [dc7a0b2]

   That is not a designed two-row header, it is a grid with four cells. Dropping
   "Order Now" -- an action the always-visible bottom CTA bar already owns -- and
   reflowing the remaining three into one row lands inside the NN/g band.

   Every declaration here is !important on purpose. `[data-id=...]` is (0,1,0)
   and ties with Elementor's own `.e-con` rules, which land LATER in the
   combined stylesheet and therefore win the tie. That exact failure has now
   bitten three times this session (rail overflow-x in batch 44, and D1 below),
   so it is pre-empted rather than rediscovered.
   --------------------------------------------------------------------------- */

@media (max-width: 767px) {
  [data-id='841ba79'] {
    display: flex !important;
    flex-direction: row !important;
    flex-wrap: nowrap !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: 12px !important;
  }

  /* The bottom CTA bar owns Order. Two order affordances is the clutter. */
  [data-id='dc7a0b1'] {
    display: none !important;
  }

  [data-id='071d2f8'] {
    flex: 0 1 auto !important;
    max-width: 148px !important;
  }

  /* The logo drives the row height: unconstrained it renders 59px, which puts
     the revealed header at 79px (11.9%) -- over the 10% ceiling even though the
     at-rest cost is only the CTA bar. Capping it lands the row at ~64px. */
  [data-id='071d2f8'] img {
    max-height: 44px !important;
    width: auto !important;
    object-fit: contain !important;
  }

  [data-id='dc7a0b2'],
  [data-id='8133ee7'] {
    flex: 0 0 auto !important;
    width: auto !important;
  }

  /* sticky, NOT fixed: sticky keeps the header in flow, so nothing below it
     jumps up and no compensating body padding-top is needed.

     The target is the <header> WRAPPER, not the inner grid. A sticky element
     only sticks while its CONTAINING BLOCK is in view, and every container
     inside the header is itself only ~69px tall, so sticking any of them would
     release immediately. The wrapper's containing block is <body> (13,092px),
     and nothing in the chain clips overflow.

     Hidden by transform, never display:none -- the links must stay focusable. */
  .dulce-header-pinned {
    position: sticky !important;
    z-index: 9980 !important;
    top: 0 !important;
    transition: transform 220ms ease;
  }

  .dulce-header-pinned.dulce-header-hidden {
    transform: translateY(-100%) !important;
  }
}

/* Desktop: 74px on an 800px viewport is 9.25%, inside the 10% budget. */
@media (min-width: 768px) {
  header.elementor {
    position: sticky !important;
    z-index: 9980 !important;
    top: 0 !important;
  }
}

/* ---------------------------------------------------------------------------
   Bottom-inset hardening, and scroll-padding for both pinned edges.

   The `padding-bottom` rule already existed WITHOUT !important and was INERT:
   an inline <style> reset `body { padding: 0 }` ties on specificity (0,0,1) and
   lands later, so the computed value was 0px. That much is measured fact.

   BE PRECISE ABOUT WHAT THIS FIXES. It was first reported as "the CTA bar hides
   the footer links", but that was a MEASUREMENT ARTIFACT -- the probe sampled
   before the lazy-loaded Instagram feed finished expanding the page, so it was
   never actually at the document bottom. Re-measured after settling scrollHeight,
   both /en/ and /en/products/cakes/ are clear with the padding at 0px. So this
   is correctness hardening of a rule that was silently doing nothing, NOT the
   repair of a live overlap.

   scroll-padding keeps a focused control clear of BOTH pinned edges. The site
   passes WCAG 2.2 SC 2.4.11 with 0 entirely-obscured controls at both
   breakpoints, verified with stacking order respected (elementFromPoint, not
   geometry alone -- the skip link sits inside the header's box but paints above
   it at z-index 100000 and a geometry-only probe reports a false failure).
   Pinning a header is exactly what would regress this, so it is preventive.
   --------------------------------------------------------------------------- */

@media (max-width: 767px) {
  body {
    padding-bottom: calc(60px + env(safe-area-inset-bottom, 0px)) !important;
  }

  html {
    scroll-padding-top: 76px;
    scroll-padding-bottom: calc(60px + env(safe-area-inset-bottom, 0px));
  }
}

@media (min-width: 768px) {
  html {
    scroll-padding-top: 82px;
  }
}

/* The tablet logo [c652c2d] measures y:10-84 inside a 74px header and looks
   like an overflow bug. It is NOT one: the widget carries `margin-bottom:-20px`,
   an intentional oversized-logo treatment that breaks out of the header bar.
   Deliberately left alone -- constraining it fought the design and did not even
   remove the overhang, because the offset is the negative margin, not the image
   height. Recorded here so the next reader does not re-diagnose it. */

@media (prefers-reduced-motion: reduce) {
  .dulce-mobile-cta *,
  .dulce-breadcrumbs-container * {
    scroll-behavior: auto !important;
    transition: none !important;
  }

  /* The header still hides and reveals; it just does not animate. */
  .dulce-header-pinned {
    transition: none !important;
  }
}

/* ---------------------------------------------------------------------------
   Horizontal product rails.

   Editorial bakery layout (Crumbs & Doilies / Milk Bar / Levain): product rows
   scroll sideways instead of stacking, with the next card left peeking so the
   row reads as continuable.

   CSS only, deliberately. Mobile INP is 409ms against a 200ms bar, so a JS
   carousel would worsen the metric this is meant to improve. Native scroll-snap
   costs no main-thread work and stays usable with JS off.

   Measured on production 2026-08-02 (iPhone 13, 390x664):
     page 17475 -> 15608px (26.3 -> 23.5 screens); Best Sellers 2833 -> 1282px.
     Desktop unchanged at 10874 -> 10856px.
   Category Highlights was tried as a rail and REJECTED: it bought 6% on mobile
   and doubled desktop height (2443 -> 5032px), because that section already
   lays out multi-column on desktop.
   --------------------------------------------------------------------------- */

.dulce-rail,
[data-id="c11781c"],
[data-id="6db0e51"] {
  display: flex !important;
  /* Elementor containers carry flex-wrap:wrap. Left alone the cards stack one
     per row instead of forming a rail -- measured 1230px tall and not
     horizontally scrollable at all. */
  flex-wrap: nowrap !important;
  align-items: stretch !important;
  height: auto !important;
  gap: 16px;
  /* !important is load-bearing: Elementor's container CSS beats a plain
     declaration here, so overflow-x stayed `visible` while the !important
     nowrap/width rules above still applied. The cards were forced 1063px wide
     inside a 359px box with nothing to scroll them, so the page scrolled
     instead of the rail -- measured 688px of horizontal page overflow. */
  overflow-x: auto !important;
  overflow-y: hidden !important;
  scroll-snap-type: x mandatory;
  overscroll-behavior-x: contain;
  scrollbar-width: none;
  -ms-overflow-style: none;
}

.dulce-rail::-webkit-scrollbar,
[data-id="c11781c"]::-webkit-scrollbar,
[data-id="6db0e51"]::-webkit-scrollbar {
  display: none;
}

.dulce-rail > *,
[data-id="c11781c"] > *,
[data-id="6db0e51"] > * {
  flex: 0 0 auto !important;
  width: min(78vw, 340px) !important;
  scroll-snap-align: start;
}

/* Elementor gallery widgets: the same rail, sized to the image grid. */
.elementor-widget-gallery .e-gallery-container.e-gallery-grid {
  display: flex !important;
  flex-wrap: nowrap !important;
  grid-template-columns: none !important;
  height: auto !important;
  padding-bottom: 0 !important;
  gap: var(--hgap, 10px);
  overflow-x: auto !important;
  overflow-y: hidden !important;
  scroll-snap-type: x mandatory;
  overscroll-behavior-x: contain;
  scrollbar-width: none;
  -ms-overflow-style: none;
}

.elementor-widget-gallery .e-gallery-container.e-gallery-grid::-webkit-scrollbar {
  display: none;
}

.elementor-widget-gallery .e-gallery-container.e-gallery-grid .e-gallery-item {
  /* Elementor positions grid items with --column/--row; both are inert in flex,
     but the offsets are not, so they are reset explicitly. */
  position: relative;
  top: auto;
  left: auto;
  flex: 0 0 auto;
  width: min(70vw, 260px);
  height: auto;
  aspect-ratio: 1 / 1;
  scroll-snap-align: start;
}

.elementor-widget-gallery .e-gallery-container.e-gallery-grid .e-gallery-image {
  width: 100%;
  height: 100%;
  background-position: center;
  background-size: cover;
}

/* A keyboard-focusable rail must show where focus is. */
.dulce-rail:focus-visible,
.elementor-widget-gallery .e-gallery-container.e-gallery-grid:focus-visible {
  outline: 3px solid #8a4f28;
  outline-offset: 2px;
}

/* ---------------------------------------------------------------------------
   CATEGORY HIGHLIGHTS as a browse rail — MOBILE ONLY.

   Desktop already lays each category out as a row (image beside text) and is
   fine at 2,382px. Mobile stacks them into a column, ~770-1,050px per category,
   which made this the tallest section on the page at 3,634px (5.5 screens).

   An earlier attempt at this was recorded as "rejected -- doubles desktop
   height". That verdict was wrong on method, not on the idea: it applied at
   every breakpoint AND used a selector that never matched the four category
   blocks. Correctly scoped and correctly targeted, measured on production:
   section 3,634 -> 1,140px (-69%), page 15,608 -> 13,114px (23.5 -> 19.8
   screens), desktop unchanged at 2,382px.
   --------------------------------------------------------------------------- */

@media (max-width: 767px) {
  [data-id='cfd4206'] > .e-con-inner {
    position: relative;
    /* Room for the section heading, which is lifted out of the flow below. */
    padding-top: 58px;
    display: flex !important;
    /* Elementor sets flex-direction:column on its containers. Without this the
       cards stack vertically and the row never overflows, so nothing scrolls --
       the failure looked exactly like the CSS not applying at all. */
    flex-direction: row !important;
    flex-wrap: nowrap !important;
    align-items: flex-start !important;
    gap: 16px;
    overflow-x: auto !important;
    overflow-y: hidden !important;
    scroll-snap-type: x mandatory;
    overscroll-behavior-x: contain;
    scrollbar-width: none;
    -ms-overflow-style: none;
  }

  [data-id='cfd4206'] > .e-con-inner::-webkit-scrollbar {
    display: none;
  }

  /* The section heading is a sibling of the four category blocks, so it would
     otherwise become a rail item and scroll away sideways with them. */
  [data-id='cfd4206'] > .e-con-inner > [data-id='698ff32c'] {
    position: absolute;
    top: 0;
    right: 0;
    left: 0;
    width: auto !important;
  }

  [data-id='cfd4206'] > .e-con-inner > .e-con {
    flex: 0 0 auto !important;
    /* 86vw leaves the next category peeking, which is what says "swipe". */
    width: 86vw !important;
    scroll-snap-align: start;
  }
}

/* --- WCAG AA color contrast (2026-08-07, owner-directed) ---
   Brand orange #f4761f measures 2.67-2.81:1 against white/#fff8f0 at 16px text
   (axe/Lighthouse color-contrast fail on nav links, map/phone links, Instagram
   feed header). #c2410c is the darkest step of the same orange family that
   clears 4.5:1 on both backgrounds. Buttons with orange BACKGROUNDS are not
   affected - this targets orange TEXT only. */
nav.elementor-nav-menu--main .elementor-item,
.dulce-map-alt a,
.elementor-icon-list-item > a .elementor-icon-list-text,
.sbi_header_text h3,
.sbi_header_text .sbi_bio {
  color: #c2410c !important;
}

/* Links inside body text must be distinguishable from the surrounding copy
   (axe link-in-text-block). An underline satisfies the rule outright, with no
   contrast-against-text requirement. */
.dulce-map-alt a {
  text-decoration: underline !important;
}

nav.elementor-nav-menu--main .elementor-item:hover,
nav.elementor-nav-menu--main .elementor-item:focus,
.dulce-map-alt a:hover,
.dulce-map-alt a:focus {
  color: #9a3412 !important;
}

/* Complianz blocked-content placeholder button: white on #808080 is 3.94:1.
   #595959 clears 7:1 without changing the button's role as a muted notice. */
button.cmplz-blocked-content-notice {
  background-color: #595959 !important;
}

/* Family A residual: widget 731726f tel:/directions links, axe color-contrast
   2026-09-02. Same #c2410c/#9a3412 orange-family pair as the 2026-08-07 block
   above, scoped to this widget's links specifically. */
.elementor-element-731726f a {
  color: #c2410c !important;
}
.elementor-element-731726f a:hover,
.elementor-element-731726f a:focus {
  color: #9a3412 !important;
}

/* ---------------------------------------------------------------------------
   Family B, Pattern B: cakes page (post 1877), axe color-contrast 2026-09-04.
   Per docs/reviews/2026-08-02-contrast-remediation-spec.md, the owner-accepted
   fix for white/light text on the KEPT #E85A3F accent background is not a
   colour change -- it is raising the text to WCAG's "large text" threshold
   (>=18.66px AND bold, or >=24px any weight) so the 3:1 bar applies instead of
   4.5:1. Both existing ratios already clear 3:1 (3.52:1 for #fff, 3.08:1 for
   #f0f0f0), so the size/weight bump alone is sufficient -- #E85A3F is
   untouched.

   13 nodes across 6 distinct widgets on the accent-orange section of post
   1877: the section heading + its subtitle (both 17px/not-bold), four CTA
   ribbon badges (already bold at 15px, so only the size needs to move), and
   seven FAQ/detail text-editor blocks (18px/normal at 3.08:1, one px shy of
   the threshold). Scoped to these widget IDs only -- they are unique to this
   post, so the rule cannot affect any other page. */
.elementor-element-41a207d > h2,
.elementor-element-2915f43,
.elementor-element-2fc50684 > p,
.elementor-element-32f33e7 > p,
.elementor-element-4f6fb1f > p,
.elementor-element-cbd294c > div > div,
.elementor-element-e82d76f > p,
.elementor-element-2c69e26 > p,
.elementor-element-0c20151 > div > div {
  font-size: 19px !important;
  font-weight: 700 !important;
}

.elementor-element-2027894 .elementor-ribbon-inner,
.elementor-element-f225a4a .elementor-ribbon-inner,
.elementor-element-9ecd73c .elementor-ribbon-inner,
.elementor-element-bb4d791 .elementor-ribbon-inner {
  font-size: 19px !important;
}

/* ---------------------------------------------------------------------------
   Site-wide text contrast, 1.7.2-1.7.3 (2026-10-13, owner-approved global rule, se-125).

   F1. The kit rule `.elementor-kit-427 a { color: var(--e-global-color-accent) }`
   paints every text link #F4761F: 2.55-2.81:1 on the light surfaces (#FFF, #FFF8F0,
   #FCF2EA, #FDFAF7). PSI 2026-10-13 found it on /en/menu/ (heading links),
   /en/products/cakes/ (hub guides box) and every blog post. Content links take the
   orange-family pair already used above, #C2410C / #9A3412 (4.69-5.18:1), and links
   inside running text are underlined (axe link-in-text-block). Buttons are excluded.
   1.7.4: the colour is the brand terracotta #A54808 / hover #7C2D12 (4.7-5.95:1 and
   7.4-9.4:1 on every light surface incl. the #F5E1D2 peach cards, where #C2410C was
   4.09:1), and it is NOT !important: it only has to beat the kit rule (0,1,1), so a
   colour the designer set on a widget or inline (e.g. white links on an orange band)
   still wins. Staging 1.7.3 proved the !important version repainted those to 1.1:1. */
.elementor-widget-text-editor a:not(.elementor-button),
.elementor-widget-theme-post-content a:not(.elementor-button),
.elementor-heading-title a,
.elementor-post__title a,
.dulce-hub-guides a,
.dulce-cross-links-box a {
  color: #a54808;
}
.elementor-widget-text-editor a:not(.elementor-button):hover,
.elementor-widget-text-editor a:not(.elementor-button):focus,
.elementor-widget-theme-post-content a:not(.elementor-button):hover,
.elementor-widget-theme-post-content a:not(.elementor-button):focus,
.elementor-heading-title a:hover,
.elementor-heading-title a:focus,
.elementor-post__title a:hover,
.elementor-post__title a:focus,
.dulce-hub-guides a:hover,
.dulce-hub-guides a:focus,
.dulce-cross-links-box a:hover,
.dulce-cross-links-box a:focus {
  color: #7c2d12;
}
.elementor-widget-text-editor :is(p, li) a:not(.elementor-button),
.elementor-widget-theme-post-content :is(p, li) a:not(.elementor-button) {
  text-decoration: underline !important;
}

/* F2. Single blog posts render body copy in the kit primary #E85A3F: 3.34:1 on #FFF8F0
   (111 nodes on one post). Same remedy as the 2026-07-22 Customizer SVG fix: the
   accessible brand terracotta #A54808 (5.65:1 on #FFF8F0, 5.72:1 on #FDFAF7).
   Scoped to the blog template (Single Post, Elementor library 431), NOT `.single-post`:
   product pages are WordPress posts too (template 1750), and on staging that wider
   selector repainted the cakes #E85A3F band copy to #A54808 (1.04:1). */
.elementor-page-431 .elementor-widget-theme-post-content,
.elementor-page-431 .elementor-widget-theme-post-content :is(p, li, strong, em, blockquote),
.dulce-cross-links-box li {
  color: #a54808 !important;
}

/* F3. Text on the KEPT #E85A3F bands follows the owner-accepted Family B remedy
   (docs/reviews/2026-08-02-contrast-remediation-spec.md): large text (>=18.66px bold),
   so the 3:1 bar applies. Bands: cakes 6db6cb74 and 178c3641, About 60654174 and
   416318be; 1.7.4 adds the product-page bands with links (baked treats 3e65e5a4 and
   563c88b2, cafe drinks fa1809e, 1872 633ef2c2). Elementor 4 removed the inner widget wrapper, so the 1877 selectors above
   written as `> div > div` stopped matching; the bare element ids below restore them.
   Links on a band must not inherit F1 (#C2410C on #E85A3F is 1.47:1): they take
   near-black #1A1A1A (4.94:1, passes at any size), underlined. */
.elementor-element-cbd294c,
.elementor-element-cbd294c :is(p, span),
.elementor-element-0c20151,
.elementor-element-0c20151 :is(p, span),
.elementor-element-fa11c001 p,
.elementor-element-20ae78ec p,
.elementor-element-5f5cd3 p {
  font-size: 19px !important;
  font-weight: 700 !important;
}
.elementor-element-6db6cb74 a:not(.elementor-button),
.elementor-element-178c3641 a:not(.elementor-button),
.elementor-element-60654174 a:not(.elementor-button),
.elementor-element-416318be a:not(.elementor-button),
.elementor-element-3e65e5a4 a:not(.elementor-button),
.elementor-element-563c88b2 a:not(.elementor-button),
.elementor-element-fa1809e a:not(.elementor-button),
.elementor-element-633ef2c2 a:not(.elementor-button) {
  color: #1a1a1a !important;
  text-decoration: underline !important;
}
/* agy gate 2026-10-13: F1's :hover/:focus rule (0,3,1) outranks the band rule above
   (0,2,1), so without this a hovered or focused band link turned #9A3412 on #E85A3F
   (2.08:1). Same specificity as F1's hover, later in the file, so it wins. */
.elementor-element-6db6cb74 a:not(.elementor-button):is(:hover, :focus),
.elementor-element-178c3641 a:not(.elementor-button):is(:hover, :focus),
.elementor-element-60654174 a:not(.elementor-button):is(:hover, :focus),
.elementor-element-416318be a:not(.elementor-button):is(:hover, :focus),
.elementor-element-3e65e5a4 a:not(.elementor-button):is(:hover, :focus),
.elementor-element-563c88b2 a:not(.elementor-button):is(:hover, :focus),
.elementor-element-fa1809e a:not(.elementor-button):is(:hover, :focus),
.elementor-element-633ef2c2 a:not(.elementor-button):is(:hover, :focus) {
  color: #1a1a1a !important;
}
/* Codex gate 2026-10-13: publish_blog.py's CTA card renders its buttons as inline-styled
   anchors (white label on #3E2723 / #00B14F / #EE4D2D) inside .dulce-cta-buttons, not as
   .elementor-button, so F1 repainted the iPOS label #C2410C on #3E2723 (13.82:1 -> 2.67:1).
   Restore their white labels at F1's own specificity, later in the file. */
:is(.elementor-widget-theme-post-content, .elementor-widget-text-editor) .dulce-cta-buttons a,
:is(.elementor-widget-theme-post-content, .elementor-widget-text-editor) .dulce-cta-buttons a:is(:hover, :focus) {
  color: #ffffff !important;
  text-decoration: none !important;
}

/* 1.7.5 (2026-10-13, production PSI after 1.7.4):
   - About band copy (20ae78ec, 5f5cd3) reached 19px, but its <span>s carry an inline
     `font-weight: 400`, so they stayed below the bold large-text bar (white on #E85A3F
     3.52:1, 5 nodes). !important beats the non-important inline weight.
   - Blog template 431's related-posts widget sets its card titles to #E85A3F at widget
     level, which outranks the non-important F1 rule (3.34:1 on #FFF8F0, 3 nodes).
     Same terracotta pair as F1. */
.elementor-element-20ae78ec p span,
.elementor-element-5f5cd3 p span {
  font-weight: 700 !important;
}
.elementor-page-431 .elementor-post__title a {
  color: #a54808 !important;
}
.elementor-page-431 .elementor-post__title a:is(:hover, :focus) {
  color: #7c2d12 !important;
}
