/* The original exported styles define the visual design. These rules replace
   only the WordPress-dependent interactions and add keyboard/motion support. */
:root { --brandnerhof-accent: #d46a5e; }
html { scroll-behavior: smooth; overflow-x: clip; }
body { margin: 0; overflow-x: clip; }
img { max-width: 100%; }
:focus-visible { outline: 2px solid var(--brandnerhof-accent); outline-offset: 4px; }
.elementor-location-header { position: sticky; top: -20px; z-index: 100; }
.elementor-invisible { visibility: visible !important; }
.elementor-widget-nav-menu button.elementor-menu-toggle,
.elementor-widget-nav-menu button.elementor-menu-toggle:hover,
.elementor-widget-nav-menu button.elementor-menu-toggle:focus { color: #2e3237; background: transparent; border: 0; padding: 8px; line-height: 1; }
.elementor-nav-menu--main .menu-item-has-children { position: relative; }
.elementor-widget-nav-menu .elementor-nav-menu--main .sub-menu { --dropdown-gap: 26px; display: none; position: absolute; top: 100%; left: 0; width: 350px; max-width: calc(100vw - 32px); margin: var(--dropdown-gap) 0 0; z-index: 110; }
/* Keep the original visual offset, but give the pointer a continuous hit area
   between the trigger and its child menu. Without this, :hover ends in the gap. */
.elementor-widget-nav-menu .elementor-nav-menu--main .sub-menu::before { content: ''; position: absolute; left: 0; right: 0; bottom: 100%; height: var(--dropdown-gap); background: transparent; }
.elementor-nav-menu--main .sub-menu a { white-space: normal !important; }
.elementor-nav-menu--main > ul > .menu-item-has-children { display: flex; align-items: center; }
.elementor-nav-menu--main > ul > .menu-item-has-children > a { padding-right: 4px !important; }
.elementor-widget-nav-menu .elementor-nav-menu--main li:hover > .sub-menu,
.elementor-widget-nav-menu .elementor-nav-menu--main li:focus-within > .sub-menu,
.elementor-widget-nav-menu .elementor-nav-menu--main li[data-open] > .sub-menu { display: block; }
.elementor-widget-nav-menu .elementor-nav-menu--main li[data-closed] > .sub-menu { display: none; }
.submenu-toggle { display: inline-flex; align-items: center; justify-content: center; min-width: 44px; height: 44px; border: 0; border-radius: 0; background: transparent; color: inherit; padding: 10px; line-height: 1; cursor: pointer; }
.submenu-toggle:hover, .submenu-toggle:focus { background: transparent; color: inherit; }
nav.elementor-nav-menu--dropdown .submenu-toggle { position: absolute; right: 0; top: 0; }
nav.elementor-nav-menu--dropdown li { position: relative; }
nav.elementor-nav-menu--dropdown .sub-menu { display: none; padding-left: 18px; }
nav.elementor-nav-menu--dropdown li[data-open] > .sub-menu { display: block; }
.elementor-widget-nav-menu nav.elementor-nav-menu__container[aria-hidden="true"] { display: none; }
.elementor-widget-nav-menu nav.elementor-nav-menu__container[aria-hidden="false"] { display: block; max-height: calc(100dvh - 90px); overflow-y: auto; }
.elementor-widget-media-carousel .elementor-main-swiper { overflow: hidden; }
.elementor-widget-media-carousel .elementor-main-swiper .swiper-slide { flex-shrink: 0; width: 100%; }
.elementor-widget-media-carousel .elementor-main-swiper .swiper-slide[hidden] { display: none !important; }
.elementor-widget-media-carousel .elementor-thumbnails-swiper .swiper-wrapper { display: flex; gap: 10px; }
.elementor-widget-media-carousel .elementor-thumbnails-swiper .swiper-slide { flex: 0 0 calc(25% - 7.5px); min-width: 0; cursor: pointer; }
.elementor-thumbnails-swiper .swiper-slide[aria-current="true"] { opacity: 1; outline: 2px solid var(--brandnerhof-accent); outline-offset: -2px; }
.elementor-thumbnails-swiper .swiper-slide:not([aria-current="true"]) { opacity: .65; }
.elementor-swiper-button { cursor: pointer; }
.carousel-pause { position: absolute; z-index: 2; bottom: 12px; right: 12px; min-height: 44px; padding: 8px 12px; font-size: 12px; background: #fff; color: #191919; border: 0; opacity: .9; }
.booking-fallback { margin-top: 12px; font-size: 14px; line-height: 1.5; }
.booking-fallback a { color: #a64c42; text-decoration: underline; }
.booking-fallback.widget-loaded { font-size: 12px; color: #666; }
.booking-fallback.widget-loaded::before { content: ''; }
#EBSM_iframeWrap { min-width: 0 !important; max-width: calc(100vw - 32px) !important; box-sizing: border-box; }
#EBSM_iframe { width: 100% !important; }
/* The embedded provider's 160px horizontal padding plus nowrap clips the
   final label/price on phones. Do not alter its validation or submit handler. */
#ebFrontEndFrame #ebbeStepFourSubmit { min-width: 0; max-width: 100%; height: auto; padding: 14px 16px; white-space: normal; }
/* Its animated arrow panels cover the wrapped label on keyboard focus. */
#ebFrontEndFrame #ebbeStepFourSubmit::before,
#ebFrontEndFrame #ebbeStepFourSubmit::after { display: none; }
#ebFrontEndFrame #ebbeStepFourSubmit .button-label { display: flex; flex-wrap: wrap; justify-content: center; gap: 4px 12px; min-width: 0; max-width: 100%; white-space: normal; }
#ebFrontEndFrame #ebbeStepFourSubmit .button-label .text,
#ebFrontEndFrame #ebbeStepFourSubmit .button-label .price { white-space: normal; }
#ebFrontEndFrame .ebbeBookingSummary h3,
#ebFrontEndFrame #ebbeBookingSummary h3 { overflow-wrap: anywhere; hyphens: auto; }
.close_EBSM_overlay { right: -10px !important; }
.map-consent { min-height: 350px; display: flex; flex-direction: column; gap: 12px; align-items: center; justify-content: center; text-align: center; padding: 24px; background: #f4f4f4; }
.map-consent p { margin: 0; }
.map-consent small { max-width: 480px; font-size: 13px; }
.map-consent .map-load { background: var(--brandnerhof-accent); border: 0; color: white; }
.map-consent iframe { width: 100%; height: 400px; border: 0; }
.map-consent:has(iframe) { padding: 0; }
.privacy-controls { text-align: center; padding: 15px; font-size: 14px; }
.privacy-controls button { color: #191919; border-color: #d46a5e; }
.weather-panel { background: white; color: #191919; padding: 28px 24px 18px; text-align: center; line-height: 1.5; }
.weather-panel .weather-place { color: inherit; font-size: 15px; font-weight: 500; line-height: 1.4; margin: 0; overflow-wrap: anywhere; }
.weather-panel .temp { margin-top: 18px; }
.weather-panel .degrees { display: block; font-family: 'Nunito Sans',sans-serif; font-size: 48px; line-height: 1; letter-spacing: -.04em; }
.weather-panel .summary { font-size: 11px; line-height: 1.5; text-transform: uppercase; letter-spacing: .06em; margin-top: 18px; color: #666; }
.weather-forecast { margin: 20px 0; }
.weather-day { display: grid; grid-template-columns: minmax(0,1fr) 24px max-content; align-items: center; gap: 5px; padding: 8px 0; text-align: left; font-size: 14px; line-height: 1.4; }
.weather-day + .weather-day { border-top: 1px solid #ddd; }
.weather-day-name { overflow-wrap: anywhere; }
.weather-day-icon { text-align: center; }
.weather-day-icon .sw { margin: 0; font-size: 18px; }
.weather-day-temperature { white-space: nowrap; font-variant-numeric: tabular-nums; }
.weather-day-min { color: #666; }
.weather-fallback { font-size: 12px; color: inherit; }
.weather-credit { display: block; font-size: 10px; line-height: 1.5; color: #666; }
.weather-credit a { color: inherit; }
.weather-hero.elementor-section > .elementor-container { gap: 24px; }
.weather-hero.elementor-section > .elementor-container > .elementor-column:not(.weather-column) { flex: 1 1 0%; width: auto; min-width: 0; }
.weather-hero.elementor-section > .elementor-container > .weather-column.elementor-column { flex: 0 0 238px; width: 238px; min-width: 0; }
.weather-column.elementor-column > .elementor-widget-wrap { padding: 0; }
.brandnerhof-lightbox { border: 0; padding: 0; max-width: min(94vw,1400px); max-height: 94dvh; background: #111; color: white; }
.brandnerhof-lightbox::backdrop { background: #000c; }
.brandnerhof-lightbox img { display: block; max-height: 86dvh; width: auto; max-width: 94vw; object-fit: contain; }
.brandnerhof-lightbox button { position: absolute; right: 10px; top: 10px; border: 0; padding: 8px 12px; color: white; background: #0009; font-size: 24px; }
/* Keep legal URLs and long German labels inside their own column. */
#content .elementor-widget-text-editor, #content .elementor-heading-title,
.elementor-location-footer .elementor-widget { overflow-wrap: anywhere; hyphens: auto; min-width: 0; }
#content .elementor-heading-title { hyphens: none; overflow-wrap: break-word; }
.elementor-column, .elementor-widget-wrap, .elementor-widget-container { min-width: 0; }
.elementor-icon-list-text { min-width: 0; overflow-wrap: anywhere; }
.elementor-icon-list-icon { flex-shrink: 0; }
.privacy-controls button { min-height: 44px; }
.elementor a.elementor-button, .map-consent .map-load { background-color: #ad4d42 !important; color: #fff !important; min-height: 44px; display: inline-flex; align-items: center; justify-content: center; }
.elementor a.elementor-button:hover, .elementor a.elementor-button:focus,
.map-consent .map-load:hover, .map-consent .map-load:focus { background-color: #8e3f36 !important; color: #fff !important; }
.elementor-widget-media-carousel .elementor-swiper-button { min-width: 44px; min-height: 44px; display: flex; align-items: center; justify-content: center; }
.elementor-widget-media-carousel .elementor-thumbnails-swiper .swiper-slide { min-height: 44px; }
#EBSM_iframeWrap:focus { outline: 2px solid #ad4d42; }
.close_EBSM_overlay { min-width: 44px; min-height: 44px; display: flex; align-items: center; justify-content: center; background-color: #333; }
/* Elementor uses its tablet breakpoint for the hamburger, not its phone one. */
@media (max-width:1024px) {
  .elementor-widget-nav-menu nav.elementor-nav-menu__container[aria-hidden="false"] { position: absolute; top: calc(100% + 12px); left: auto; right: 0; width: min(390px,calc(100vw - 24px)); min-width: 0; max-height: calc(100dvh - 160px); margin-top: 8px; z-index: 111; background: white; box-shadow: 0 12px 24px #0002; overflow-y: auto; }
  .elementor-widget-nav-menu.elementor-nav-menu--toggle .elementor-menu-toggle.elementor-active + nav.elementor-nav-menu__container[aria-hidden="false"] { max-height: var(--navigation-height,calc(100dvh - 160px)); transform: none; animation: none; overscroll-behavior: contain; }
  .elementor-nav-menu--dropdown .elementor-item { padding-right: 54px !important; min-height: 44px; }
  .elementor-nav-menu--dropdown .elementor-sub-item { white-space: normal; min-height: 44px; }
  .weather-hero.elementor-section > .elementor-container { flex-direction: column; align-items: stretch; gap: 24px; padding: 40px 20px 28px; }
  .weather-hero.elementor-section > .elementor-container > .elementor-column:not(.weather-column),
  .weather-hero.elementor-section > .elementor-container > .weather-column.elementor-column { flex: 0 0 auto; width: 100%; }
  .weather-panel { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1.4fr); column-gap: 24px; padding: 18px 20px 12px; max-width: 720px; margin: 0 auto; }
  .weather-current { align-self: center; }
  .weather-panel .temp { margin-top: 8px; }
  .weather-panel .degrees { font-size: 36px; }
  .weather-panel .summary { margin-top: 8px; }
  .weather-forecast { margin: 0; }
  .weather-footer { grid-column: 1 / -1; display: flex; flex-wrap: wrap; justify-content: center; gap: 4px 12px; margin-top: 10px; }
}
@media (min-width:768px) and (max-width:1024px) {
  .elementor-location-footer .elementor-container { flex-wrap: wrap; }
  .elementor-location-footer .elementor-column { min-width: 220px; flex: 1 1 40%; }
  .quick-search-column .elementor-heading-title { font-size: 24px; }
}
@media (min-width:1025px) {
  .elementor-widget-nav-menu nav.elementor-nav-menu__container[aria-hidden="false"] { display: none; }
}
@media (max-width:480px) {
  .weather-hero.elementor-section > .elementor-container { padding: 28px 16px 20px; }
  .weather-panel { display: block; padding: 14px; }
  .weather-current { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 2px 12px; align-items: center; text-align: left; }
  .weather-panel .temp { margin: 0; grid-column: 2; grid-row: 1 / 3; }
  .weather-panel .weather-place { font-size: 14px; }
  .weather-panel .summary { margin: 0; grid-column: 1; font-size: 10px; }
  .weather-forecast { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 8px; margin-top: 12px; }
  .weather-day { display: flex; flex-direction: column; gap: 3px; padding: 8px 0 0; border-top: 1px solid #ddd; text-align: center; font-size: 13px; }
}
@media (max-width:767px) {
  .elementor-location-header { top: -20px; }
  .elementor-widget-media-carousel .elementor-thumbnails-swiper .swiper-slide { flex-basis: calc(33.333% - 7px); }
  .elementor-thumbnails-swiper { overflow-x: auto; }
  .booking-fallback { font-size: 13px; }
  #ebSmallSearch, #ebOffer, #pricesFrame, #ebFrontEndFrame { max-width: 100%; }
  #pricesFrame .EBPRC-category-buttons { display: flex !important; flex-direction: column; height: auto !important; gap: 8px; }
  #pricesFrame .EBPRC-category-cta { display: flex !important; flex-wrap: wrap; height: auto !important; width: 100% !important; gap: 4px; }
  #pricesFrame .EBPRC-category-cta .EBPRC-button { margin: 0 !important; }
  .fancybox-wrap.fancybox-type-iframe { width: calc(100vw - 24px) !important; left: 12px !important; }
  .fancybox-type-iframe .fancybox-skin { width: auto !important; padding: 8px !important; }
  .fancybox-type-iframe .fancybox-inner, .fancybox-type-iframe .fancybox-iframe { width: 100% !important; max-width: 100% !important; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
}
