/* Semantic Cheval Royal primitives layered over the transitional theme runtime. */
.cr-section,
.cr-widget { position: relative; }

.cr-section { container-type: inline-size; }
.cr-widget { min-width: 0; }
.cr-widget :where(h1, h2, h3, h4) { text-wrap: balance; }
.cr-widget :where(p, li) { text-wrap: pretty; }
.cr-widget :where(img, video, iframe) { max-width: 100%; }
.cr-widget :where(.card, .feature-box, .contact-card, .step-card, .testimonial-card) {
  border-color: var(--cr7-line);
  border-radius: var(--cr7-radius);
}
.cr-widget :where(.btn-primary, .btn-base-color):not(.cr-button) {
  border-color: var(--cr7-primary);
  background: var(--cr7-primary);
  color: var(--cr7-paper);
}
.cr-widget :where(.btn-primary, .btn-base-color):not(.cr-button):is(:hover, :focus-visible) {
  border-color: var(--cr7-primary-dark);
  background: var(--cr7-primary-dark);
  color: var(--cr7-paper);
}

.cr-site-header { position: relative; z-index: 100; }
.cr-site-header.is-scrolled .cr-navigation {
  box-shadow: 0 12px 34px rgb(15 17 21 / 10%);
  backdrop-filter: blur(16px);
}
.cr-navigation { transition: box-shadow .2s ease, background-color .2s ease; }
.cr-navigation__list { align-items: center; }
.cr-navigation__item > .nav-link { position: relative; font-weight: 650; }
.cr-navigation__item > .nav-link::after {
  position: absolute;
  right: .75rem;
  bottom: .4rem;
  left: .75rem;
  height: 2px;
  border-radius: 2px;
  background: var(--cr7-primary);
  content: "";
  opacity: 0;
  transform: scaleX(.45);
  transition: opacity .18s ease, transform .18s ease;
}
.cr-navigation__item:is(.active, .in-path) > .nav-link::after,
.cr-navigation__item > .nav-link:is(:hover, :focus-visible)::after { opacity: 1; transform: scaleX(1); }

.cr-section--hero,
.cr-section--banner,
.cr-widget--hero,
.cr-widget--banner { isolation: isolate; }
.cr-section[data-parallax-background-ratio] {
  --cr-parallax-y: 0px;
  background-position: center calc(50% + var(--cr-parallax-y)) !important;
}

.cr-widget--blog-posts .blog-post-item,
.cr-widget--category-tiles .category-tile-card,
.cr-widget--price-package .card,
.cr-widget--testimonials .testimonial-card {
  transition: border-color .2s ease, box-shadow .2s ease, transform .2s ease;
}
.cr-widget--blog-posts .blog-post-item:is(:hover, :focus-within),
.cr-widget--category-tiles .category-tile-card:is(:hover, :focus-within),
.cr-widget--price-package .card:is(:hover, :focus-within),
.cr-widget--testimonials .testimonial-card:is(:hover, :focus-within) {
  border-color: rgb(200 16 46 / 28%);
  box-shadow: var(--cr7-shadow);
  transform: translateY(-3px);
}

.cr-widget--faq .question-container { border: 0; background: transparent; color: inherit; }
.cr-widget--faq .answer-container[hidden] { display: none !important; }
.cr-widget--gallery .slider-wrapper {
  display: grid;
  grid-auto-columns: min(82vw, 46rem);
  grid-auto-flow: column;
  gap: 1rem;
  overflow-x: auto;
  overscroll-behavior-inline: contain;
  scroll-snap-type: inline mandatory;
}
.cr-widget--gallery .slider-item { scroll-snap-align: start; }
.cr-widget--video video { border-radius: var(--cr7-radius); background: #000; }
.cr-widget--newsletter .cr-form { display: grid; gap: .75rem; }
.cr-widget--open-hours,
.cr-widget--map { border: 1px solid var(--cr7-line); }

.cr-heading { max-width: 76rem; }
.cr-heading__title { margin-block: 0; }
.cr-heading__subtitle { max-width: 65ch; margin-block: .75rem 0; color: var(--cr7-muted); }
.cr-heading .heading-link { display: inline-grid; width: 1em; height: 1em; place-items: center; color: currentColor; opacity: .45; }
.cr-heading .heading-link:hover, .cr-heading .heading-link:focus-visible { opacity: 1; }

.cr-cta { margin-block: 1.5rem; }
.cr-button { display: inline-flex !important; min-height: 46px; align-items: center; justify-content: center; gap: .55rem; padding: .75rem 1.35rem !important; border: 1px solid transparent; border-radius: 999px; font-weight: 700; line-height: 1.2; text-decoration: none; }
.cr-button--primary { border-color: var(--cr7-primary) !important; background: var(--cr7-primary) !important; color: var(--cr7-paper) !important; }
.cr-button--primary:hover { border-color: var(--cr7-primary-dark) !important; background: var(--cr7-primary-dark) !important; color: var(--cr7-paper) !important; }

.cr-media { container-type: inline-size; }
.cr-media__frame { margin: 0; border-radius: var(--cr7-radius); background: var(--cr7-surface); }
.cr-media__image { display: block; }
.cr-media__overlay { max-width: min(100%, 42rem); }
.cr-media__badge { letter-spacing: .055em; }
.cr-media__caption { color: var(--cr7-muted); font-size: .875rem; }

.cr-form-builder { container-type: inline-size; }
.cr-form-builder form { display: grid; gap: 1.25rem; }
.cr-form-actions { display: flex; margin-top: .5rem; }
.cr-select { min-height: 48px; border-color: var(--cr7-line); border-radius: var(--cr7-radius-sm); background-color: var(--cr7-paper); color: var(--cr7-ink); }
.cr-form-builder .validation-message { min-height: 1.25em; margin-top: .35rem; color: #a30c24; font-size: .875rem; }
.cr-form-builder .validation-message:not(.show) { visibility: hidden; }
.cr-form-builder :where(input, select, textarea).is-invalid { border-color: #a30c24; box-shadow: 0 0 0 4px rgb(163 12 36 / 14%); }
.cr-form-builder :where(input, select, textarea).is-valid { border-color: #237a57; }

.cr-site-footer { border-top: 1px solid rgb(255 255 255 / 10%); background: var(--cr7-ink) !important; color: rgb(255 255 255 / 76%); }
.cr-site-footer a { color: inherit; }
.cr-site-footer a:hover, .cr-site-footer a:focus-visible { color: var(--cr7-paper); }

/* The canonical header uses a light navigation surface, including after scroll. */
.canvas7 #header .cr-navigation.header-light :is(.nav-link, .header-icon > .icon > a, .header-icon > .icon > button, .header-icon > .icon > a > i, .header-icon > .icon > button > i) {
  color: var(--cr7-ink) !important;
}
.canvas7 #header .cr-navigation .nav-link { white-space: nowrap; }
@media (min-width: 992px) {
  .canvas7 #header .cr-navigation > .container-fluid > .menu-order { flex: 1; width: auto; min-width: 0; }
  .canvas7 #header .cr-navigation > .container-fluid > :first-child { width: auto; }
  .canvas7 #header .cr-navigation .nav-link { padding-inline: clamp(.5rem, 1vw, 1rem) !important; }
}

/* Footer columns must also balance when an optional CMS menu is empty. */
/* Compact, nonmodal search disclosure below the header. */
.canvas7 #header .search-form-wrapper { position: fixed; inset: var(--cr-search-top, 80px) 0 auto; width: 100%; height: auto; padding: 24px max(20px, calc((100vw - 960px) / 2)); background: var(--cr7-paper); border-top: 1px solid var(--cr7-line); box-shadow: var(--cr7-shadow); cursor: default; visibility: hidden; opacity: 0; pointer-events: none; }
.canvas7 #header .search-form-wrapper.cr-search-open { display: block !important; visibility: visible; opacity: 1; pointer-events: auto; }
.canvas7 #header .search-form { position: static; width: 100%; height: auto; background: transparent; visibility: inherit; opacity: 1; }
.canvas7 #header .search-form-box { width: 100%; padding-right: 52px; }
.canvas7 #header .search-form-box [role="heading"] { font-size: 22px; line-height: 1.3; letter-spacing: 0; text-align: left !important; margin-bottom: 16px !important; color: var(--cr7-ink); }
.canvas7 #header .search-input { height: 52px; padding: 12px 56px 12px 16px; line-height: 1.5; border: 1px solid var(--cr7-line); border-radius: var(--cr7-radius-sm); color: var(--cr7-text); background: var(--cr7-surface); }
.canvas7 #header .search-input:focus { outline: 2px solid var(--cr7-primary); outline-offset: 2px; }
.canvas7 #header .search-input::placeholder { color: var(--cr7-muted); }
.canvas7 #header .search-button { right: 56px; bottom: 4px; width: 44px; height: 44px; font-size: 20px; color: var(--cr7-primary); }
.canvas7 #header .search-close { position: absolute; top: auto; right: max(20px, calc((100vw - 960px) / 2)); bottom: 28px; width: 44px; height: 44px; font-size: 22px; color: var(--cr7-ink); }
.canvas7 #header .header-search-form[aria-expanded="true"] { color: var(--cr7-primary); background: var(--cr7-surface); }
.canvas7 #header .search-close:focus-visible,.canvas7 #header .search-button:focus-visible { outline: 2px solid var(--cr7-primary); outline-offset: 2px; }
.cr-site-footer > .container > .row { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 2rem; }
.cr-site-footer > .container > .row:has(> :nth-child(5)) { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.cr-site-footer > .container > .row > * { width: auto; max-width: 100%; margin-top: 0; }
.canvas7 .cr-site-footer h3 { font-size: 1.125rem; line-height: 1.4; letter-spacing: 0; }
.canvas7 .cr-site-footer .text-dark-gray { color: var(--cr7-paper) !important; }
.cr-site-footer .footer-logo { width: min(100%, 200px); height: auto; object-fit: contain; }
.cr-site-footer .badge { white-space: normal; line-height: 1.5; }
.canvas7 .cr-site-footer { padding-block: 0; }
.canvas7 .cr-site-footer > .container > .row > * { margin-bottom: 0 !important; text-align: left !important; }
.canvas7 .cr-site-footer .footer-logo { width: 150px; }
.canvas7 .cr-site-footer .footer-logo-container { padding: 0; margin-inline: 0; }
.cr-site-footer .footer-logo-link { justify-content: flex-start; }
.cr-site-footer nav ul { padding: 0; margin: 0; list-style: none; }
.cr-site-footer nav li { padding: 0; margin: 0; }
.cr-site-footer nav a { display: inline-flex; align-items: center; min-height: 44px; }
/* Keep the shared social markup within the Canvas footer palette. */
.canvas7 .cr-site-footer .social-pulse-container .pulse { display: none; }
.canvas7 .cr-site-footer .social-pulse-container a { display: grid; place-items: center; width: 44px !important; height: 44px !important; border: 1px solid rgb(255 255 255 / 24%); border-radius: 50%; background: var(--cr7-ink-soft) !important; color: var(--cr7-paper); text-decoration: none; font-size: 18px; transform: none; }
.canvas7 .cr-site-footer .social-pulse-container a:hover { background: var(--cr7-primary) !important; }
.canvas7 .cr-site-footer .cr-site-footer__brand > .mt-3 { text-align: inherit; }
.canvas7 .cr-site-footer .contact-item > i { color: var(--cr7-paper); }
.canvas7 .cr-site-footer__hours > .btn-link { width: auto; min-height: 44px; padding: 8px 0; border: 0; border-radius: 0; background: transparent; box-shadow: none; color: var(--cr7-paper); text-transform: none; }
@media (min-width: 576px) and (max-width: 991.98px) {
  .cr-site-footer > .container > .row,
  .cr-site-footer > .container > .row:has(> :nth-child(5)) { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 575.98px) {
  .cr-site-footer > .container > .row,
  .cr-site-footer > .container > .row:has(> :nth-child(5)) { grid-template-columns: 1fr; gap: 1.5rem; }
  .canvas7 .cr-site-footer .footer-logo { width: 112px; }
  .canvas7 .cr-site-footer > .container > .row > * { text-align: center !important; }
  .cr-site-footer .footer-contact-info .contact-item { justify-content: center; }
  .cr-site-footer__brand { align-items: center; }
  .cr-site-footer__brand > * { width: 100%; text-align: center; }
  .cr-site-footer .footer-logo-link { justify-content: center; }
}

:where(.cr-site-header, .cr-section, .cr-widget, .cr-site-footer) :focus-visible {
  outline: 3px solid var(--cr7-accent);
  outline-offset: 3px;
}

@container (max-width: 44rem) {
  .cr-section :where(.sticky-column, .c-sidebar-section__sidebar) { position: static !important; }
}

@media (prefers-reduced-motion: reduce) {
  .cr-button,
  .cr-widget :where(.card, .feature-box, .contact-card, .step-card, .testimonial-card),
  .cr-navigation,
  .cr-navigation__item > .nav-link::after { transform: none !important; transition: none !important; }
  .cr-section[data-parallax-background-ratio] { background-position: center !important; }
}
