/* ==========================================================================
   Regal Court — scoped site layer, 1.4.1 (2026-08-07)

   Architecture: Kadence Customizer / theme mods own the palette, the type
   scale, global buttons, header + footer builder settings and content widths.
   Native Kadence block attributes own per-row surfaces, spacing, separators,
   destinations and the Floor Plans tab component. THIS FILE owns only what
   neither surface can express: scoped page composition, the single scroll
   offset, the single focus treatment, media presentation, and the handful of
   contrast repairs that must survive generated block CSS.

   Rules for this file:
     - exactly one owner per concern (scroll, focus, tabs, cards, footer);
     - no rule duplicates a value the Customizer or a block attribute already
       sets — 1.3.x tab colours, panel frames, surface gradients and divider
       fills were all removed because native state now carries them;
     - palette references go through var(--global-paletteN) so the layer
       tracks the theme instead of pinning a literal.
   ========================================================================== */

:root {
  /* --- boundary + accent roles -----------------------------------------
     --regal-boundary  #9C8358 = 3.62:1 on white, 3.38:1 on warm paper p8.
                       The single "component edge" colour: accordions, cards,
                       tab panels, form controls.
     --regal-luminous  #E3BF7C = 7.99:1 against ink. Reserved for controls
                       sitting on photography and for links on dark surfaces,
                       where a p1 fill cannot show its own edge.            */
  --regal-boundary: #9c8358;
  --regal-luminous: #e3bf7c;
  --regal-luminous-strong: #f2c96c;

  /* --- the one scroll offset -------------------------------------------
     The real fixed chrome is the BCIO promo banner (which publishes its own
     height as --bcio-banner-height: 58px desktop / 92px <=640px) plus the
     fixed Kadence main header, measured at 81px and held stable by matching
     logo_width and header_sticky_logo_width. Below the 1024px Kadence
     breakpoint the site header is NOT fixed, so only the banner counts.     */
  --regal-header-height: 81px;
  --regal-scroll-offset: calc(var(--bcio-banner-height, 58px) + var(--regal-header-height));
}

@media (max-width: 1024px) {
  :root { --regal-header-height: 0px; }
}

/* ==========================================================================
   1. SCROLL — single owner
   The repair layer no longer scrolls anything. Kadence's own JavaScript
   anchor scroller is switched off through its supported `no-anchor-scroll`
   body class (added by this plugin's PHP), so hash navigation is handled by
   the browser and positioned by exactly one declaration below. There is no
   scroll-margin-top anywhere: a second offset mechanism is what produced the
   doubled 264/208px landings in the pre-round-3 audit.
   ========================================================================== */

html {
  scroll-behavior: smooth;
  scroll-padding-top: var(--regal-scroll-offset);
  overflow-x: clip;
}

body {
  overflow-x: clip;
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }

  a,
  button,
  .kt-button,
  .kt-blocks-accordion-header,
  [id^="kt-accordion-header"] {
    transition: none !important;
  }
}

/* ==========================================================================
   2. FOCUS — single owner
   Two-tone so it is never colour-only and always shows on both light and dark
   surfaces: a white halo immediately around the control, then a deep-gold
   ring. Overrides the theme's hide-focus-outline behaviour.
   ========================================================================== */

a:focus-visible,
button:focus-visible,
[role="button"]:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
summary:focus-visible,
.kt-button:focus-visible,
.kt-tab-title:focus-visible,
.kt-blocks-accordion-header:focus-visible,
[id^="kt-accordion-header"]:focus-visible,
.kt-svg-icon-link:focus-visible,
.kt-blocks-info-box-link-wrap:focus-visible,
.kb-advanced-image-link:focus-visible,
.regal-lightbox-trigger:focus-visible,
.regal-lightbox__close:focus-visible,
.regal-lightbox__previous:focus-visible,
.regal-lightbox__next:focus-visible,
.bcio-assistloop-launcher:focus-visible,
.bcio-floating-call-cta:focus-visible {
  outline: 2px solid #ffffff !important;
  outline-offset: 2px !important;
  box-shadow: 0 0 0 4px var(--global-palette2, #6b5326) !important;
}

/* ==========================================================================
   3. TYPE + WIDTH GUARDS
   The global scale (h1 56/44/34) is a theme mod. This only stops the display
   headings from clipping at narrow viewports; it sets no sizes.
   ========================================================================== */

.entry-content h1 {
  max-width: calc(100vw - 3rem);
  margin-inline: auto;
  overflow-wrap: anywhere;
}

@media (max-width: 767px) {
  .entry-content h1 { max-width: calc(100vw - 2rem); }
}

/* Captions are intentionally omitted across the public site. */
.regal-lightbox__caption,
.slbCaption,
.slbDetails,
.glightbox-container .gslide-description,
.wp-block-image > figcaption,
.wp-block-kadence-image > figcaption,
.kb-gallery-figure > figcaption,
.kadence-blocks-gallery-item__caption,
.kb-gal-image-caption {
  display: none !important;
}

/* ==========================================================================
   4. OVERLAY STACKING
   Keeps the fixed offer banner from covering the mobile drawer or a modal
   close control. Protected BCIO markup is untouched; only z-order and
   visibility while another overlay is open.
   ========================================================================== */

body.showing-popup-drawer-from-right .bcio-flex-pay-top-banner,
html.slbActive .bcio-flex-pay-top-banner,
html.regal-lightbox-open .bcio-flex-pay-top-banner {
  opacity: 0 !important;
  visibility: hidden !important;
  pointer-events: none !important;
}

#mobile-drawer,
.popup-drawer { z-index: 2147483100 !important; }

.slbOverlay,
.slbWrapOuter,
.slbWrap { z-index: 2147483200 !important; }

.slbImage {
  width: auto !important;
  max-width: calc(100vw - 2rem) !important;
  max-height: calc(100dvh - 2rem) !important;
  object-fit: contain !important;
}

/* ==========================================================================
   5. HOME — composition only
   The 1.3.x alternating gradient/pattern sections were removed entirely: the
   rows carry palette surfaces natively now (p7 sand / p8 warm paper / p9
   white), which is what removed the near-white seams and the gradient a solid
   divider fill could never match.
   ========================================================================== */

/* Welcome panel: a deliberate two-column composition instead of a tall field. */
.page-id-2204 #home-intro {
  min-height: 0 !important;
  overflow: hidden;
}

.page-id-2204 #home-intro > .kt-row-column-wrap {
  width: min(100%, 1200px);
  margin-inline: auto;
}

@media (min-width: 1025px) {
  .page-id-2204 #home-intro > .kt-row-column-wrap {
    display: grid !important;
    grid-template-columns: minmax(0, 1.15fr) minmax(320px, 0.85fr) !important;
    grid-template-rows: auto auto auto;
    grid-template-areas:
      "welcome-image welcome-kicker"
      "welcome-image welcome-title"
      "welcome-image welcome-button";
    align-content: center;
    align-items: center;
    gap: 1.25rem clamp(2.5rem, 4.5vw, 4.5rem);
    padding: clamp(3rem, 4.5vw, 4.5rem) clamp(2rem, 3.5vw, 3.5rem) !important;
  }

  .page-id-2204 #home-intro .wp-block-kadence-column,
  .page-id-2204 #home-intro .kt-inside-inner-col {
    display: contents !important;
  }

  .page-id-2204 #home-intro .kb-image2204_501f81-dd {
    grid-area: welcome-image;
    width: 100%;
    height: 100%;
    min-height: 420px;
    margin: 0 !important;
    overflow: hidden;
  }

  .page-id-2204 #home-intro .kb-image2204_501f81-dd .kb-is-ratio-image {
    width: 100% !important;
    height: 100% !important;
    padding-bottom: 0 !important;
  }

  .page-id-2204 #home-intro .kb-image2204_501f81-dd img {
    inset: 0 !important;
    width: 100% !important;
    height: 100% !important;
    object-fit: cover !important;
  }

  .page-id-2204 #home-intro .kt-adv-heading2204_1efdbe-4c {
    grid-area: welcome-kicker;
    margin: 0 !important;
  }

  .page-id-2204 #home-intro .kt-adv-heading2204_8a7af1-e0 {
    grid-area: welcome-title;
    width: 100%;
    margin: 0 !important;
    text-align: left !important;
  }

  .page-id-2204 #home-intro .kb-btns2204_65bfdd-91 {
    grid-area: welcome-button;
    width: auto !important;
    margin: 0 !important;
    justify-content: flex-start !important;
  }
}

/* "Inside Regal Court": bound the card and centre its measured prose. */
.page-id-2204 .kb-row-layout-id2204_d7ed85-cf > .kt-row-column-wrap {
  width: min(calc(100% - 2rem), 1140px);
  margin-inline: auto;
  padding: clamp(2rem, 4vw, 3.5rem) clamp(1.5rem, 3.5vw, 3.5rem);
  border: 1px solid rgba(156, 131, 88, 0.4);
  background: var(--global-palette9, #ffffff);
}

.page-id-2204 .kb-row-layout-id2204_d7ed85-cf .kt-adv-heading2204_2db4d3-c4,
.page-id-2204 .kb-row-layout-id2204_d7ed85-cf .kt-adv-heading2204_c6be13-f5,
.page-id-2204 .kb-row-layout-id2204_d7ed85-cf .wp-block-paragraph {
  width: min(100%, 68ch);
  margin-inline: auto;
  text-align: center !important;
}

/* The nested action row under that card contributed a 150px empty band. */
.page-id-2204 .kb-row-layout-id2204_26e977-96,
.page-id-2204 .kb-row-layout-id2204_26e977-96 .kt-row-column-wrap,
.page-id-2204 .kb-row-layout-id2204_26e977-96 .wp-block-kadence-column,
.page-id-2204 .kb-row-layout-id2204_26e977-96 .kt-inside-inner-col {
  min-height: 0 !important;
}

.page-id-2204 .kb-row-layout-id2204_26e977-96 .kt-row-column-wrap {
  padding-block: 0.75rem !important;
}

/* ==========================================================================
   6. PLAN FIGURES — one open presentation everywhere
   The owner asked for the borderless treatment and explicitly for no borders
   around the third tab's interior images. So no plan image anywhere gets a
   frame, canvas or shadow: the tab panel's own native 1px boundary is the only
   container, and these rules do nothing but give every plan one contained
   height so the cards align. `object-fit: contain` letterboxes — a plan is
   never cropped or replaced.

   NOTE (1.3.1 defect, fixed here): the old selector was `.page-id-2481
   .kb-advanced-image-link`, unscoped to the entry content. The FOOTER logo is
   also a .kb-advanced-image-link, so on Floor Plans it inherited min-height
   260px + a 420px image box and rendered as a 286x460px empty white card —
   the exact footer failure the owner captured. Every rule below is scoped to
   .entry-content.
   ========================================================================== */

.page-id-2481 .entry-content .kb-advanced-image-link,
.page-id-2204 .entry-content .kb-advanced-image-link[href*="/uploads/"] {
  display: block;
  width: 100%;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: none;
  box-shadow: none;
}

.page-id-2481 .entry-content .kt-tabs-id2481_861e2b-0c .wp-block-kadence-image,
.page-id-2481 .entry-content .kt-tabs-id2481_861e2b-0c .wp-block-kadence-image figure {
  padding: 0;
  border: 0;
  border-radius: 0;
  background: none;
  box-shadow: none;
}

.page-id-2481 .entry-content .kt-tabs-id2481_861e2b-0c .wp-block-kadence-image img,
.page-id-2481 .entry-content .kb-advanced-image-link img,
.page-id-2204 .entry-content .kb-advanced-image-link[href*="/uploads/"] img {
  display: block;
  width: 100% !important;
  height: min(34vw, 400px) !important;
  margin: 0 auto !important;
  object-fit: contain !important;
  transform: none !important;
}

.page-id-2481 .entry-content .wp-block-kadence-tabs .wp-block-kadence-column,
.page-id-2481 .entry-content .kt-tabs-content-wrap .wp-block-kadence-column {
  min-width: 0;
}

/* Inquiry actions share one baseline across every panel. */
.page-id-2481 .entry-content .kt-tabs-id2481_861e2b-0c .kt-tab-inner-content-inner > .kb-row-layout-wrap > .kt-row-column-wrap > .wp-block-kadence-column > .kt-inside-inner-col {
  height: 100%;
}

.page-id-2481 .entry-content .kt-tabs-id2481_861e2b-0c .kb-buttons-wrap {
  margin-top: auto;
}

.page-id-2481 .entry-content .kt-tabs-id2481_861e2b-0c .kt-tab-title {
  min-height: 44px;
}

@media (max-width: 767px) {
  .page-id-2481 .entry-content .kt-tabs-id2481_861e2b-0c .wp-block-kadence-image img,
  .page-id-2481 .entry-content .kb-advanced-image-link img,
  .page-id-2204 .entry-content .kb-advanced-image-link[href*="/uploads/"] img {
    height: auto !important;
    max-height: 72dvh !important;
  }

  /* Mobile accordion state.
     Two sources of truth exist and they disagree in one case. Before any
     interaction Kadence hides the closed panes from its STYLESHEET and
     `kt-tab-title-active` on the title is correct. After `setActiveWithHash()`
     resolves a #customtabN hash it writes an INLINE `display` on the panes but
     leaves the active class on the block's initial tab — so the gold fill could
     sit on a closed section while an open one looked inactive.
     So: follow the class by default, and let an inline display override it once
     JavaScript has written one. Each accordion title is the immediate previous
     sibling of the pane it controls. Source order matters — the "block" rule
     must come last. */
  .kt-tabs-id2481_861e2b-0c > .kt-tabs-content-wrap > .kt-tabs-accordion-title .kt-tab-title,
  .kt-tabs-id2481_861e2b-0c > .kt-tabs-content-wrap > .kt-tabs-accordion-title:has(+ .wp-block-kadence-tab[style*="display: none"]) .kt-tab-title {
    border-color: var(--global-palette1, #916c24) !important;
    color: var(--global-palette2, #6b5326) !important;
    background: var(--global-palette9, #ffffff) !important;
  }

  .kt-tabs-id2481_861e2b-0c > .kt-tabs-content-wrap > .kt-tabs-accordion-title.kt-tab-title-active .kt-tab-title,
  .kt-tabs-id2481_861e2b-0c > .kt-tabs-content-wrap > .kt-tabs-accordion-title:has(+ .wp-block-kadence-tab[style*="display: block"]) .kt-tab-title {
    border-color: var(--global-palette1, #916c24) !important;
    color: #ffffff !important;
    background: var(--global-palette1, #916c24) !important;
  }
}

/* ==========================================================================
   7. FOOTER — compact two-part grid
   Uses only the existing widget blocks: the wordmark, the gold rule and the
   contact heading. Nothing is added, removed or reordered; the desktop grid
   places the mark against a left-aligned rule + contact stack, and the mobile
   stack is the natural document flow, centred.
   ========================================================================== */

@media (min-width: 768px) {
  .site-top-footer-wrap .kadence-columnd3ca42-0c > .kt-inside-inner-col {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    grid-template-rows: auto auto;
    grid-template-areas:
      "mark rule"
      "mark contact";
    align-items: start;
    column-gap: clamp(2.25rem, 5vw, 4.5rem);
    row-gap: 0.65rem;
  }

  .site-top-footer-wrap .kb-image4f992a-1e {
    grid-area: mark;
    align-self: center;
    margin: 0 !important;
  }

  .site-top-footer-wrap .kt-block-spacer-587ac1-d5 {
    grid-area: rule;
    align-self: end;
    margin: 0 !important;
  }

  .site-top-footer-wrap .kt-block-spacer-587ac1-d5 .kt-block-spacer {
    justify-content: flex-start !important;
    text-align: left !important;
  }

  .site-top-footer-wrap .kt-block-spacer-587ac1-d5 .kt-divider {
    margin-inline: 0 !important;
  }

  .site-top-footer-wrap .kt-adv-headingec36cd-eb {
    grid-area: contact;
    margin: 0 !important;
    text-align: left !important;
  }
}

/* Guarantee the wordmark can never inherit a card box again, at any width. */
.site-footer .kb-advanced-image-link {
  display: inline-block;
  width: auto;
  min-height: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: none;
  box-shadow: none;
}

.site-footer .kb-advanced-image-link img {
  width: 100% !important;
  height: auto !important;
  max-height: none !important;
  object-fit: initial !important;
}

.site-footer .kt-adv-headingec36cd-eb a {
  text-underline-offset: 0.18em;
}

/* Footer navigation: 44px targets and a readable rhythm. */
.site-middle-footer-wrap .footer-navigation .menu-item > a {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  padding-inline: 0.85rem;
}

/* ==========================================================================
   8. BOUNDARIES — one card/accordion edge
   #9C8358 clears 3:1 on both white and warm paper. The inset ring survives the
   generated block CSS on Contact, which sets border-top-width:0.
   ========================================================================== */

.kt-blocks-accordion-header,
[id^="kt-accordion-header"] {
  border: 1px solid var(--regal-boundary) !important;
  box-shadow: inset 0 0 0 1px var(--regal-boundary);
}

.kb-row-layout-id9_26df73-ae .kt-blocks-info-box-link-wrap,
.kb-row-layout-id2504_b80ef7-3e .kt-blocks-info-box-link-wrap {
  border: 1px solid var(--regal-boundary) !important;
}

.kt-blocks-accordion-icon-trigger {
  border: 1px solid rgba(156, 131, 88, 0.55);
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.72);
}

/* ==========================================================================
   9. CONTROLS ON PHOTOGRAPHY
   A p1 fill has no discernible edge over a photo, so these controls keep a
   persistent 2px luminous edge (>=3:1 against both the fill and typical
   imagery). White label on p1 is 4.801:1; on the p2 hover it is 7.265:1.
   ========================================================================== */

.kb-row-layout-id9_9654eb-7e .kt-button,
.kb-row-layout-id16_6d84ef-2d .kt-button,
.kb-row-layout-id2574_fd84c8-87 .kt-button,
.kb-row-layout-id2204_9fa016-6d .kt-button,
.kb-row-layout-id3529_ac3aff-05 .kt-button,
.kb-row-layout-id14_f4fb33-38 .kt-button {
  border: 2px solid var(--regal-luminous) !important;
  color: #ffffff !important;
  background: var(--global-palette1, #916c24) !important;
}

.kb-row-layout-id9_9654eb-7e .kt-button .kt-btn-inner-text,
.kb-row-layout-id16_6d84ef-2d .kt-button .kt-btn-inner-text,
.kb-row-layout-id2574_fd84c8-87 .kt-button .kt-btn-inner-text,
.kb-row-layout-id2204_9fa016-6d .kt-button .kt-btn-inner-text,
.kb-row-layout-id3529_ac3aff-05 .kt-button .kt-btn-inner-text,
.kb-row-layout-id14_f4fb33-38 .kt-button .kt-btn-inner-text {
  color: #ffffff !important;
}

.kb-row-layout-id9_9654eb-7e .kt-button:hover,
.kb-row-layout-id16_6d84ef-2d .kt-button:hover,
.kb-row-layout-id2574_fd84c8-87 .kt-button:hover,
.kb-row-layout-id2204_9fa016-6d .kt-button:hover,
.kb-row-layout-id3529_ac3aff-05 .kt-button:hover,
.kb-row-layout-id14_f4fb33-38 .kt-button:hover,
.kb-row-layout-id9_9654eb-7e .kt-button:active,
.kb-row-layout-id16_6d84ef-2d .kt-button:active,
.kb-row-layout-id2574_fd84c8-87 .kt-button:active,
.kb-row-layout-id2204_9fa016-6d .kt-button:active,
.kb-row-layout-id3529_ac3aff-05 .kt-button:active,
.kb-row-layout-id14_f4fb33-38 .kt-button:active {
  border-color: var(--regal-luminous) !important;
  color: #ffffff !important;
  background: var(--global-palette2, #6b5326) !important;
}

/* NOTE — a rule was deliberately REMOVED here in Round 3.
   1.3.1 forced `.kt-button.kb-btn-global-fill { color: #fff !important }` to
   guarantee white labels on the bronze fill. But nine buttons across Amenities,
   Schedule a Tour, FAQ and Pet Policy carry that role class while their own
   block attributes set `background: rgba(0,0,0,0)` and `color: palette1` — they
   are gold text links with an arrow, not filled buttons. The blanket rule
   overrode their gold and rendered them white on white: invisible. Measured
   1.00:1, and visible as blank space in the Round 2 screenshots. The Round 2
   review dismissed exactly these as "ratio-1.00 descendant button text"
   detector artifacts; they were real.
   Kadence already emits white labels for genuinely filled buttons from the
   `buttons_color` theme mod (palette9), so the rule was redundant there and
   harmful here. Each block's own `color` attribute now wins. */

.page-numbers.current,
span.page-numbers.current,
.page-numbers.current:hover {
  color: #ffffff !important;
  background-color: var(--global-palette1, #916c24) !important;
}

/* Image-backed outline CTAs use the luminous surface with ink lettering
   (#2C2C2C on #E3BF7C = 7.986:1) and invert to p1/white on hover. */
.kb-row-layout-id2504_13938a-cb .kt-button,
.kb-row-layout-id3916_39a0e1-c9 .kt-button,
.kb-row-layout-id2481_245c57-c2 .kt-button,
.kb-row-layout-id2204_01b5d5-08 .kt-button,
.kb-row-layout-id2504_13938a-cb .kt-button .kt-btn-inner-text,
.kb-row-layout-id3916_39a0e1-c9 .kt-button .kt-btn-inner-text,
.kb-row-layout-id2481_245c57-c2 .kt-button .kt-btn-inner-text,
.kb-row-layout-id2204_01b5d5-08 .kt-button .kt-btn-inner-text {
  border: 2px solid var(--global-palette1, #916c24) !important;
  color: #2c2c2c !important;
  background: var(--regal-luminous) !important;
}

.kb-row-layout-id2504_13938a-cb .kt-button:hover,
.kb-row-layout-id3916_39a0e1-c9 .kt-button:hover,
.kb-row-layout-id2481_245c57-c2 .kt-button:hover,
.kb-row-layout-id2204_01b5d5-08 .kt-button:hover,
.kb-row-layout-id2504_13938a-cb .kt-button:active,
.kb-row-layout-id3916_39a0e1-c9 .kt-button:active,
.kb-row-layout-id2481_245c57-c2 .kt-button:active,
.kb-row-layout-id2204_01b5d5-08 .kt-button:active,
.kb-row-layout-id2504_13938a-cb .kt-button:hover .kt-btn-inner-text,
.kb-row-layout-id3916_39a0e1-c9 .kt-button:hover .kt-btn-inner-text,
.kb-row-layout-id2481_245c57-c2 .kt-button:hover .kt-btn-inner-text,
.kb-row-layout-id2204_01b5d5-08 .kt-button:hover .kt-btn-inner-text {
  border-color: var(--regal-luminous) !important;
  color: #ffffff !important;
  background: var(--global-palette1, #916c24) !important;
}

/* Target size. The global button padding (16/32) yields 55-61px, but many
   Kadence buttons carry their own block-level padding — measured 5.76px, which
   renders a 35-43px control. The design system specifies a 44px minimum, so it
   is guaranteed here rather than left to per-block attributes. Labels,
   destinations, type scale and horizontal rhythm are untouched; buttons are
   already display:flex, so centring the label is a no-op for the ones that
   already clear 44px. */
.kt-button,
.fluentform .ff-el-submit-button,
.fluentform .ff_submit_btn_wrapper button,
.site-header .kb-header-button,
.regal-lightbox__close,
.regal-lightbox__previous,
.regal-lightbox__next {
  min-height: 44px;
}

.kt-button {
  align-items: center;
  justify-content: center;
}

/* ==========================================================================
   10. FORMS — contrast only. Markup, fields, validation and destinations are
   untouched by this layer.
   ========================================================================== */

.fluentform .ff-el-form-control {
  border: 1px solid var(--regal-boundary) !important;
  color: var(--global-palette4, #515151) !important;
}

.fluentform .ff-el-form-control::placeholder,
.fluentform ::placeholder {
  color: var(--global-palette5, #5c5c5c) !important;
  opacity: 1 !important;
}

.fluentform .ff-el-submit-button,
.fluentform button.ff-el-submit-button,
.fluentform .ff_submit_btn_wrapper button {
  color: #ffffff !important;
  background: var(--global-palette1, #916c24) !important;
}

.fluentform .ff-el-submit-button:hover,
.fluentform .ff-el-submit-button:active,
.fluentform .ff-el-submit-button:focus-visible,
.fluentform .ff_submit_btn_wrapper button:hover,
.fluentform .ff_submit_btn_wrapper button:active,
.fluentform .ff_submit_btn_wrapper button:focus-visible {
  color: #ffffff !important;
  background: var(--global-palette2, #6b5326) !important;
}

/* Move In Special renders its form over the dark hero image. */
.page-id-3529 .fluentform .ff-el-form-control {
  border-color: rgba(255, 255, 255, 0.72) !important;
  color: #ffffff !important;
  background: rgba(23, 22, 18, 0.72) !important;
}

.page-id-3529 .fluentform .ff-el-form-control::placeholder,
.page-id-3529 .fluentform ::placeholder {
  color: rgba(255, 255, 255, 0.88) !important;
}

.page-id-3529 .fluentform label,
.page-id-3529 .fluentform .ff-el-input--label {
  color: #ffffff !important;
}

.page-id-3529 .fluentform .ff-el-submit-button,
.page-id-3529 .fluentform .ff_submit_btn_wrapper button {
  border: 2px solid var(--regal-luminous) !important;
}

/* ==========================================================================
   11. PROTECTED FLOATING INTEGRATIONS — edge + state only
   Copy, behaviour, destination and placement are BCIO's. This adds the
   persistent 3:1 boundary they lack against varied page content.
   ========================================================================== */

.bcio-assistloop-launcher,
.bcio-floating-call-cta {
  box-shadow: 0 0 0 2px var(--regal-luminous) !important;
}

.bcio-assistloop-launcher:hover,
.bcio-floating-call-cta:hover {
  box-shadow: 0 0 0 2px var(--regal-luminous-strong) !important;
}

.bcio-floating-call-cta {
  color: #ffffff !important;
  background: var(--global-palette2, #6b5326) !important;
}

.bcio-floating-call-cta:hover,
.bcio-floating-call-cta:active {
  color: #ffffff !important;
  background: var(--global-palette1, #916c24) !important;
}

/* The promotional Apply Now banner keeps its luminous surface + dark text. */
a.bcio-banner-apply,
a.bcio-banner-apply:visited,
a.bcio-banner-apply:hover,
a.bcio-banner-apply:active,
a.bcio-banner-apply:focus,
a.bcio-banner-apply:focus-visible {
  color: #111111 !important;
  background: var(--regal-luminous) !important;
}

a.bcio-banner-apply:hover,
a.bcio-banner-apply:active { background: #d9ae61 !important; }

/* ==========================================================================
   12. PAGE-LEVEL CONTRAST REPAIRS
   ========================================================================== */

/* About "Welcome Home" sits on a bright image. Blend a restrained ink veil
   into the image-owning row itself; worst-region sampling is 5.07:1 while the
   photograph retains its tonal detail. */
.kb-row-layout-id8_c48128-05 {
  background-color: rgba(0, 0, 0, 0.18) !important;
  background-blend-mode: multiply !important;
}

/* Palette 1 is the brighter gold fill/accent role. These four normal-size
   editorial labels sit on warm-paper or sand surfaces, so use palette 2's
   deep-gold text role (6.00:1 on sand; 6.80:1 on warm paper). */
.page-id-2204 .kt-adv-heading2204_1efdbe-4c,
.page-id-2504 .kt-adv-heading2504_03f5e5-af,
.page-id-3916 .kt-adv-heading3916_ed2414-ff,
.page-id-3916 .kt-adv-heading3916_f70630-d9,
.page-id-2504 .kt-blocks-info-box-learnmore {
  color: var(--global-palette2, #6b5326) !important;
}

.page-id-2504 .kt-blocks-info-box-link-wrap:hover .kt-blocks-info-box-learnmore,
.page-id-2504 .kt-blocks-info-box-link-wrap:focus-visible .kt-blocks-info-box-learnmore {
  color: var(--global-palette3, #2c2c2c) !important;
  text-decoration: underline;
  text-underline-offset: 0.18em;
}

/* FAQ numbered cards: the numerals were large enough to collide with the
   titles. Scale and rhythm only — copy, cards and order are unchanged. */
.kb-row-layout-id2504_b80ef7-3e .kt-blocks-info-box-number {
  margin-bottom: 0.85rem !important;
  font-size: clamp(3.25rem, 6vw, 4.75rem) !important;
  line-height: 1 !important;
}

.kb-row-layout-id2504_b80ef7-3e .kt-blocks-info-box-learn-more,
.kb-row-layout-id2504_b80ef7-3e .kt-blocks-info-box-title {
  margin-top: 0 !important;
}

@media (max-width: 767px) {
  .kb-row-layout-id2504_b80ef7-3e .kt-blocks-info-box-number {
    margin-bottom: 0.7rem !important;
    font-size: 3rem !important;
  }
}

/* FAQ icon medallions. */
.page-id-2504 .kadence-info-box-icon-container {
  display: grid !important;
  width: 72px !important;
  height: 72px !important;
  margin-inline: auto !important;
  place-items: center;
  border: 1px solid rgba(156, 131, 88, 0.46);
  border-radius: 50%;
  background: var(--global-palette9, #ffffff);
}

.page-id-2504 .kt-info-svg-icon,
.page-id-2504 .kt-info-svg-icon svg {
  width: 31px !important;
  height: 31px !important;
  color: var(--global-palette2, #6b5326) !important;
  stroke-width: 1.65 !important;
}

.page-id-2504 .kt-accordion-wrap,
.page-id-2504 .wp-block-kadence-accordion {
  width: min(100%, 1000px);
  margin-inline: auto;
}

@media (max-width: 767px) {
  .page-id-2504 .kadence-info-box-icon-container {
    width: 62px !important;
    height: 62px !important;
  }
}

/* ==========================================================================
   13. NEWS ARCHIVE — compact editorial grid
   ========================================================================== */

body.blog #archive-container {
  width: min(100%, 1200px);
  max-width: none;
  margin-inline: auto;
  gap: clamp(1.25rem, 2.4vw, 2rem);
}

/* Kadence's global narrow-content class constrains the archive's parent to
   760px before the grid can use its own 1200px width. Release that one parent
   on the News archive only; page/post reading widths stay untouched. */
body.blog .content-container.site-container {
  width: 100%;
  max-width: 1248px;
  margin-inline: auto;
}

body.blog #archive-container .loop-entry {
  overflow: hidden;
  border: 1px solid rgba(156, 131, 88, 0.35);
  background: var(--global-palette9, #ffffff);
}

body.blog #archive-container .post-thumbnail img {
  width: 100%;
  aspect-ratio: 16 / 10;
  object-fit: cover;
}

body.blog #archive-container .entry-content-wrap { padding: clamp(1.2rem, 2vw, 1.7rem); }

@media (min-width: 1120px) {
  body.blog #archive-container { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; }
}

@media (max-width: 1119px) and (min-width: 700px) {
  body.blog #archive-container { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
}

@media (max-width: 699px) {
  body.blog #archive-container { grid-template-columns: minmax(0, 1fr) !important; }
}

/* ==========================================================================
   14. LIGHTBOX — banner-safe, keyboard-operable
   ========================================================================== */

.regal-lightbox {
  position: fixed;
  inset: 0;
  z-index: 2147483647;
  display: grid;
  place-items: center;
  padding: max(1rem, env(safe-area-inset-top)) max(1rem, env(safe-area-inset-right)) max(1rem, env(safe-area-inset-bottom)) max(1rem, env(safe-area-inset-left));
  background: rgba(10, 9, 7, 0.94);
  opacity: 0;
  visibility: hidden;
  transition: opacity 180ms ease, visibility 180ms ease;
}

.regal-lightbox.is-open { opacity: 1; visibility: visible; }

.regal-lightbox__stage {
  position: relative;
  display: grid;
  width: min(1180px, calc(100vw - 2rem));
  height: min(850px, calc(100dvh - 2rem));
  place-items: center;
}

.regal-lightbox__image {
  display: block;
  max-width: 100%;
  max-height: calc(100dvh - 3rem);
  background: #ffffff;
  object-fit: contain;
}

.regal-lightbox__close,
.regal-lightbox__previous,
.regal-lightbox__next {
  position: absolute;
  display: grid;
  width: 48px;
  height: 48px;
  padding: 0;
  place-items: center;
  border: 1px solid rgba(255, 255, 255, 0.65);
  border-radius: 50%;
  color: #ffffff;
  background: rgba(20, 18, 14, 0.86);
  font: 700 27px/1 sans-serif;
  cursor: pointer;
}

.regal-lightbox__close { z-index: 2; top: 0; right: 0; }
.regal-lightbox__previous,
.regal-lightbox__next { top: 50%; transform: translateY(-50%); }
.regal-lightbox__previous { left: 0.5rem; }
.regal-lightbox__next { right: 0.5rem; }

.regal-lightbox-trigger { cursor: zoom-in; }

html.regal-lightbox-open,
html.regal-lightbox-open body { overflow: hidden !important; }

a.regal-upgraded-button { text-decoration: none; }

@media (prefers-reduced-motion: reduce) {
  .regal-lightbox { transition: none; }
}

@media (max-width: 767px) {
  .regal-lightbox__stage { width: calc(100vw - 1.2rem); height: calc(100dvh - 1.2rem); }
  .regal-lightbox__image { max-height: calc(100dvh - 6.75rem); }
  .regal-lightbox__close,
  .regal-lightbox__previous,
  .regal-lightbox__next { width: 44px; height: 44px; }
  .regal-lightbox__close { top: max(0.25rem, env(safe-area-inset-top)); right: max(0.25rem, env(safe-area-inset-right)); }
  .regal-lightbox__previous { left: 0.15rem; }
  .regal-lightbox__next { right: 0.15rem; }
}

/* Lightbox-enabled ratio images keep the width supplied by their figure. */
.wp-block-kadence-image > a.regal-lightbox-trigger {
  display: block;
  width: 100%;
  height: 100%;
  padding: 0;
  overflow: hidden;
  border-radius: inherit;
}

.wp-block-kadence-image > a.regal-lightbox-trigger > .kb-is-ratio-image { width: 100%; }

.wp-block-kadence-image > a.regal-lightbox-trigger > .kb-is-ratio-image > img {
  inset: 0;
  width: 100%;
  height: 100%;
}

/* ==========================================================================
   15. MOBILE MEDIA — carousels built by the JS layer
   ========================================================================== */

.regal-home-media-strip,
.regal-mobile-gallery-controls { display: none; }

@media (max-width: 1024px) {
  .site-header-main-section-right .site-header-item:not(.site-header-focus-item) { margin-inline: 0.2rem; }

  .page-id-2204 #home-intro > .kt-row-column-wrap {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) !important;
    gap: 1.15rem;
    padding: clamp(2.5rem, 7vw, 4rem) clamp(1.25rem, 6vw, 3rem) !important;
    place-items: center;
  }

  .page-id-2204 #home-intro .wp-block-kadence-column,
  .page-id-2204 #home-intro .kt-inside-inner-col { display: contents !important; }

  .page-id-2204 #home-intro .kt-adv-heading2204_1efdbe-4c { grid-row: 1; margin: 0 !important; text-align: center !important; }
  .page-id-2204 #home-intro .kt-adv-heading2204_8a7af1-e0 { grid-row: 2; width: min(100%, 18ch); margin: 0 auto !important; text-align: center !important; }
  .page-id-2204 #home-intro .kb-btns2204_65bfdd-91 { grid-row: 3; width: auto !important; margin: 0 !important; justify-content: center !important; }

  .page-id-2204 .kb-row-layout-id2204_d7ed85-cf > .kt-row-column-wrap {
    display: block !important;
    padding: clamp(2rem, 7vw, 3.5rem) clamp(1.25rem, 6vw, 2.5rem) !important;
  }

  .page-id-2204 .kb-row-layout-id2204_d7ed85-cf > .kt-row-column-wrap > .wp-block-kadence-column,
  .page-id-2204 .kb-row-layout-id2204_d7ed85-cf .kt-inside-inner-col {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    min-height: 0 !important;
  }

  .page-id-2204 .kb-row-layout-id2204_d7ed85-cf > .kt-row-column-wrap > .wp-block-kadence-column { display: block !important; margin: 0 !important; }
  .page-id-2204 .kb-row-layout-id2204_d7ed85-cf > .kt-row-column-wrap > .wp-block-kadence-column + .wp-block-kadence-column { margin-top: 1rem !important; }

  .page-id-2204 .kb-row-layout-id2204_d7ed85-cf .kt-inside-inner-col {
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
    justify-content: center !important;
  }

  .page-id-2204 .kb-row-layout-id2204_d7ed85-cf .kadence-column2204_2a5f7e-bb,
  .page-id-2204 .kb-row-layout-id2204_d7ed85-cf .kadence-column2204_2a5f7e-bb > .kt-inside-inner-col {
    position: static !important;
    inset: auto !important;
    margin-inline: 0 !important;
    padding-inline: 0 !important;
    transform: none !important;
  }

  .page-id-2204 .kb-row-layout-id2204_d7ed85-cf .kt-adv-heading2204_c6be13-f5,
  .page-id-2204 .kb-row-layout-id2204_d7ed85-cf .wp-block-paragraph {
    width: 100% !important;
    max-width: 100% !important;
    margin-inline: 0 !important;
    padding-inline: 0 !important;
    box-sizing: border-box;
    align-self: center !important;
  }

  .page-id-2204 .kb-row-layout-id2204_26e977-96 > .kt-row-column-wrap {
    grid-template-columns: minmax(0, 1fr) !important;
    gap: 0 !important;
    padding-block: 0.75rem !important;
  }

  .page-id-2204 .kb-row-layout-id2204_26e977-96 .kadence-column2204_b2afe3-b4,
  .page-id-2204 .kb-row-layout-id2204_26e977-96 .kt-block-spacer-2204_6a4731-1c { display: none !important; }

  .page-id-2204 .kt-adv-heading2204_38878b-06 {
    width: calc(100vw - 3rem) !important;
    max-width: 100% !important;
    margin-inline: auto !important;
    white-space: normal !important;
    text-align: center !important;
  }
}

@media (max-width: 767px) {
  .page-id-2204 .kt-adv-heading2204_9c8518-e6,
  .page-id-2204 .kt-adv-heading2204_9c8518-e6 em,
  .page-id-14 .kt-adv-heading14_3a530f-89,
  .page-id-14 .kt-adv-heading14_44c3fa-6c,
  .page-id-9 .kt-adv-heading9_62bf50-93,
  .page-id-9 .kt-adv-heading9_4bd7e6-8c {
    width: 100% !important;
    max-width: 34rem !important;
    margin-inline: auto !important;
    padding-inline: 0 !important;
    text-align: center !important;
  }

  .page-id-2204 .kt-adv-heading2204_9c8518-e6 em { display: block; }

  .page-id-2204 .kb-image2204_350ac1-28,
  .page-id-2204 .kb-image2204_983b53-a8,
  .page-id-2204 .kb-image2204_e9ba3d-79,
  .page-id-2204 .kb-image2204_846198-39 {
    position: relative !important;
    inset: auto !important;
    width: 100% !important;
    max-width: 100% !important;
    margin-inline: auto !important;
    transform: none !important;
  }

  .page-id-2204 .regal-original-media-block,
  .page-id-2204 .regal-home-later-static,
  .page-id-14 .regal-mobile-static-companion { display: none !important; }

  .regal-home-media-strip {
    display: flex;
    width: 100%;
    margin: 0;
    padding: 0.8rem 1rem 1.25rem;
    gap: 0.65rem;
    overflow-x: auto;
    overscroll-behavior-inline: contain;
    scroll-padding-inline: 1rem;
    scroll-snap-type: inline mandatory;
    scrollbar-width: none;
  }

  .regal-home-media-strip::-webkit-scrollbar { display: none; }

  .regal-home-media-strip__item {
    flex: 0 0 min(86vw, 620px);
    padding: 0;
    overflow: hidden;
    border: 0;
    background: transparent;
    scroll-snap-align: center;
    cursor: pointer;
  }

  .regal-home-media-strip__item img { display: block; width: 100%; aspect-ratio: 16 / 10; object-fit: cover; }

  .page-id-14 .kb-gallery-ul.regal-mobile-gallery-list {
    position: relative !important;
    display: flex !important;
    grid-template-columns: none !important;
    width: 100%;
    height: auto !important;
    gap: 0.85rem !important;
    overflow-x: auto !important;
    overscroll-behavior-inline: contain;
    scroll-padding-inline: 0.5rem;
    scroll-snap-type: inline mandatory;
    scrollbar-width: thin;
  }

  .page-id-14 .kb-gallery-ul.regal-mobile-gallery-list > .regal-mobile-gallery-item {
    position: relative !important;
    inset: auto !important;
    display: block !important;
    flex: 0 0 min(86vw, 410px) !important;
    width: min(86vw, 410px) !important;
    max-width: none !important;
    margin: 0 !important;
    transform: none !important;
    scroll-snap-align: center;
  }

  .page-id-14 .kb-gallery-ul.regal-mobile-gallery-list > .regal-mobile-gallery-item .kb-gallery-figure,
  .page-id-14 .kb-gallery-ul.regal-mobile-gallery-list > .regal-mobile-gallery-item .kb-gallery-image-contain {
    position: relative !important;
    inset: auto !important;
    width: 100% !important;
    height: auto !important;
    margin: 0 !important;
    transform: none !important;
  }

  .page-id-14 .kb-gallery-ul.regal-mobile-gallery-list > .regal-mobile-gallery-item img {
    display: block;
    width: 100% !important;
    height: min(68vw, 360px) !important;
    object-fit: cover !important;
  }

  .regal-mobile-gallery-controls {
    display: flex;
    justify-content: flex-end;
    gap: 0.55rem;
    margin: 0.75rem 0 0;
  }

  .regal-mobile-gallery-controls button {
    display: grid;
    width: 44px;
    height: 44px;
    padding: 0;
    place-items: center;
    border: 1px solid var(--regal-boundary);
    border-radius: 50%;
    color: var(--global-palette3, #2c2c2c);
    background: var(--global-palette9, #ffffff);
    font-size: 1.35rem;
    cursor: pointer;
  }

  [data-aos="fade-left"],
  [data-aos="fade-right"] { opacity: 1 !important; transform: none !important; }
}
