/* Supplemental styles. Load after the page's preserved original CSS. */
[hidden] { display: none !important; }
html, body, #template-container, #main-content { min-width: 0; max-width: 100%; }
body { font-family: Oxygen, Arial, sans-serif; }
#template-container { justify-content: flex-start; }
#template-container > header, #template-container > footer, #main-content { flex-shrink: 0; }
#template-container > footer { margin-top: auto; }

/* Keep the original header design in normal flow so the archive note is visible. */
#header-container { position: relative; top: auto; left: auto; }
#main-content { margin-top: 0 !important; }
#main-content #promo-image-container { margin-top: 0 !important; }
body[data-page="rv-camping"] #service-container { padding-bottom: 2rem; }
#review-container, #gallery-header { margin-top: 3rem; }
#review-container { margin-bottom: 3rem; }
#header-flex-logo, #header-flex-info, #header-menu, #header-nav-container { min-width: 0; }
#header-phone-link, #footer-phone-text { white-space: nowrap; }
#header-custom-button { max-width: 100%; }
#header-custom-button a { overflow-wrap: anywhere; }

#toggle-small-header-button {
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  min-width: 2.75rem;
  min-height: 2.75rem;
  margin: 0 auto;
  padding: .4rem;
  border: 1px solid #bbb;
  border-radius: .25rem;
  background: #fff;
  color: #000;
  cursor: pointer;
}
#toggle-small-header-button .line1 { margin-top: 0; }
#small-menulist { min-width: 0 !important; max-width: 100%; }
#service-nav-button { position: relative; }
#service-nav-button > .restore-services-toggle {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 110px;
  min-height: 40px;
  padding: 8px 5px;
  border: 0;
  border-radius: 4px;
  background: transparent;
  color: #000;
  text-align: center;
  cursor: pointer;
}
#service-nav-button > .restore-services-toggle:hover { font-weight: 700; }
#service-nav-button > .restore-services-toggle::after { content: "▾"; margin-left: .4rem; font-size: .7em; }
#service-nav-button.has-current-page > .restore-services-toggle { background: #505e86; color: #fff; font-weight: 700; }
#service-nav-list { top: 100%; left: 0; z-index: 110; max-width: min(24rem, 90vw); box-shadow: 0 .35rem .8rem rgb(0 0 0 / 18%); }
body.js-ready #service-nav-list:not([hidden]) { display: flex; flex-direction: column; visibility: visible; opacity: 1; }
#service-nav-list a { min-height: 2.75rem; overflow-wrap: anywhere; }

.restore-archive-note {
  width: 100%;
  margin: 0;
  padding: .55rem 1rem;
  border-bottom: 1px solid #dce0e8;
  background: #f3f4f7;
  color: #35405b;
  font-size: .8125rem;
  line-height: 1.5;
  text-align: center;
  overflow-wrap: anywhere;
}
.restore-archive-note a, .restore-panel a, .restore-embed a { text-decoration: underline; text-underline-offset: .15em; }
.restore-panel {
  max-width: 100%;
  margin: 1rem 0;
  padding: 1.25rem;
  border: 1px solid #d8dce5;
  border-radius: .25rem;
  background: #fff;
  color: #222;
  line-height: 1.65;
  overflow-wrap: anywhere;
}
.restore-panel > * + * { margin-top: .75rem; }
.restore-panel :is(ul, ol) { padding-left: 1.5rem; }
.restore-unavailable-image {
  display: grid;
  place-items: center;
  width: 100%;
  max-width: 100%;
  min-height: 8rem;
  padding: 1rem;
  border: 1px dashed #9499a5;
  background: #f4f5f7;
  color: #404753;
  font-size: .9rem;
  line-height: 1.5;
  text-align: center;
  overflow-wrap: anywhere;
}
.restore-embed {
  display: grid;
  place-items: center;
  gap: .65rem;
  width: 100%;
  max-width: 100%;
  min-height: 9rem;
  padding: 1.5rem;
  border: 1px solid #d7dce5;
  background: #f0f2f6;
  color: #303b55;
  line-height: 1.6;
  text-align: center;
  overflow-wrap: anywhere;
}
#map-section-container, #map-wrapper-bg, #map-wrapper { height: auto; min-height: 0; }
#main-content #map-wrapper { margin-top: 0; }

/* Full review text is the default. JS adds the opt-in collapsing classes. */
.review-message { max-height: none !important; overflow: visible; overflow-wrap: anywhere; }
.review-cover, .review-hide-button {
  display: none !important;
  position: static !important;
  width: auto !important;
  height: auto !important;
  margin-top: .75rem;
  background: none !important;
}
body.js-ready .restore-review-expandable.restore-review-collapsed .review-message { max-height: 6em !important; overflow: hidden; }
body.js-ready .restore-review-expandable.restore-review-collapsed .review-cover,
body.js-ready .restore-review-expandable:not(.restore-review-collapsed) .review-hide-button { display: flex !important; justify-content: flex-start; }
.review-more-btn, .review-hide-btn { min-height: 2.75rem; height: auto; max-width: 100%; padding: .5rem .7rem; border: 1px solid #b7bfce; background: #f2f4f8; color: #253450; cursor: pointer; }
.review-name { overflow-wrap: anywhere; }

#gallery-wrapper { min-width: 0; max-width: 100%; }
.gallery-image { min-width: 0; }
.gallery-image a[data-zoom] { display: block; width: 100%; height: 100%; }
.gallery-image img { width: 100%; max-width: 100%; object-fit: cover; }
a[data-zoom] { cursor: zoom-in; }

#restoreImageDialog {
  width: min(72rem, calc(100% - 2rem));
  max-width: calc(100% - 2rem);
  max-height: calc(100vh - 2rem);
  max-height: calc(100dvh - 2rem);
  margin: auto;
  padding: 1rem;
  border: 1px solid #b7bdc9;
  border-radius: .3rem;
  background: #fff;
  color: #172033;
  overflow: auto;
}
#restoreImageDialog:not([open]) { display: none; }
#restoreImageDialog::backdrop { background: rgb(0 0 0 / 82%); }
#restoreImageDialog [data-dialog-close] { display: block; margin: 0 0 .8rem auto; }
.restore-dialog-toolbar { display: flex; align-items: center; flex-wrap: wrap; gap: .6rem; margin-bottom: .8rem; }
#restoreImageDialog .restore-dialog-toolbar [data-dialog-close] { margin: 0 0 0 auto; }
.restore-dialog-toolbar .restore-image-position { min-width: 4rem; text-align: center; }
#restoreImageDialog button {
  min-width: 2.75rem;
  min-height: 2.75rem;
  padding: .5rem .8rem;
  border: 1px solid #bcc3d0;
  border-radius: .2rem;
  background: #eef0f5;
  color: #202d47;
  cursor: pointer;
}
#restoreDialogImage { display: block; width: auto; max-width: 100%; height: auto; max-height: 74vh; margin: auto; object-fit: contain; }
#restoreDialogCaption { margin-top: .8rem; line-height: 1.5; overflow-wrap: anywhere; }
.restore-image-navigation { display: flex; align-items: center; justify-content: center; flex-wrap: wrap; gap: .8rem; margin-top: 1rem; }
.restore-image-navigation span { min-width: 4rem; text-align: center; }

form[data-restored-disabled] { max-width: 100%; }
form[data-restored-disabled] fieldset { min-width: 0; max-width: 100%; margin: 0; padding: 0; border: 0; }
form[data-restored-disabled] :disabled { opacity: 1; }
form[data-restored-disabled] :is(input, textarea, select) { max-width: 100%; }
form[data-restored-disabled] textarea { min-height: 8rem; max-height: 18rem; resize: vertical; }
#access-page { width: 100%; padding: 2rem 1rem; }
#access-container { display: block; width: 100%; max-width: 900px; margin: 0 auto; color: #222; line-height: 1.65; overflow-wrap: anywhere; }
#access-container > * + * { margin-top: 1rem; }
.restore-booking { padding-bottom: 2rem; }
.restore-booking > .restore-page-title { margin: 2rem 1rem 1.5rem; font-size: clamp(1.6rem, 5vw, 2.2rem); }
.restore-site-map { columns: 2 16rem; padding: 0 1.5rem; line-height: 1.8; }

#footer-background { height: auto; min-height: 250px; padding: 1.5rem 0; }
#footer-section-list > li, #footer-section-list > div, #footer-wrapper { min-width: 0; }
#footer-keys { overflow-wrap: anywhere; }
#value-list { min-height: 40px; height: auto; padding: .5rem; }
:is(a, button, input, select, textarea):focus-visible { outline: 3px solid #285a9a; outline-offset: 3px; }

@media (max-width: 1250px) {
  #service-nav-button > .restore-services-toggle { width: 80px; }
}
@media (min-width: 961px) {
  #small-menulist { display: none !important; }
}
@media (max-width: 960px) {
  #header-menu, #header-nav-container { width: 100%; }
  #header-phone-text { font-size: clamp(1.2rem, 6.5vw, 1.875rem); }
  #header-custom-button { margin-right: 0; }
  body:not(.js-ready) #toggle-small-header-button { display: none; }
  body:not(.js-ready) #small-menulist { display: block !important; max-height: none !important; overflow: visible; }
  body.js-ready #small-menulist:not([hidden]) { display: block; max-height: min(65vh, 32rem); overflow: auto; }
  #small-menulist > li { width: 90%; }
  #small-menulist a { min-height: 2.75rem; }
  #footer-background { min-height: 0; }
  #footer-section-list { gap: 1rem; }
  #footer-phone-container, #footer-social-container, #footer-copyright { max-height: none; }
}
@media (max-width: 600px) {
  #main-content { width: 100%; }
  #main-content :is(#about-wrapper, #service-wrapper, #introduction-fg, #form-content-container, #form-wrapper, #contact-title) { min-width: 0; max-width: 100%; }
  #promo-image-title, #promo-image-description, .text-content { overflow-wrap: anywhere; }
  #review-container, #gallery-header { margin-top: 2rem; }
  #gallery-header { margin-bottom: 2rem; }
  #main-content > div[style*="margin-left"] { margin-left: 1rem !important; }
  #main-content > div[style*="margin-left"] > div[style*="margin-right"] { margin-right: 1rem !important; }
  #main-content .form-container { display: block; width: 100%; }
  #form-section-1, #form-section-2, #form-section-3 { width: 100%; min-width: 0; margin: 1rem 0; }
  #form-wrapper :is(input, textarea, select) { width: 100%; }
  #form-wrapper .restore-panel { padding: 1rem; }
  #restoreImageDialog { width: calc(100% - 1rem); max-width: calc(100% - 1rem); padding: .75rem; }
}
@media (prefers-reduced-motion: reduce) {
  html, body, #small-menulist { scroll-behavior: auto !important; transition: none !important; }
}

/* Targeted corrections verified against the integrated original templates. */
.restore-skip {
  position: fixed;
  top: .75rem;
  left: .75rem;
  z-index: 1000;
  width: 1px;
  height: 1px;
  padding: 0;
  border: 0;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  clip-path: inset(50%);
  white-space: nowrap;
  background: #fff;
  color: #202d47;
}
.restore-skip:focus {
  width: auto;
  height: auto;
  max-width: calc(100% - 1.5rem);
  padding: .7rem 1rem;
  border: 2px solid #505e86;
  border-radius: .2rem;
  overflow: visible;
  clip: auto;
  clip-path: none;
}

body[data-page="rv-camping"] #service-container {
  width: min(1070px, 100%);
  max-width: 100%;
  min-width: 0;
}
body[data-page="rv-camping"] #introduction-bg,
body[data-page="rv-camping"] #introduction-fg { min-width: 0; max-width: 100%; }

body[data-page="contact"] :is(#introduction-bg, #introduction-fg, #form-content-container) { min-width: 0; max-width: 100%; }
body[data-page="contact"] #form-content-container { width: 100%; margin-inline: auto; }
#form-wrapper {
  display: block;
  width: 100%;
  max-width: 900px;
  min-width: 0;
  margin-inline: auto;
  padding: 1.5rem 1rem;
}
#form-wrapper form[data-restored-disabled] { display: block; width: 100%; max-width: 900px; margin: 0 auto; }
#form-wrapper .restore-panel { width: 100%; text-align: left; }
#form-wrapper .form-container { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; gap: 1.25rem; width: 100%; min-width: 0; }
#form-wrapper :is(#form-section-1, #form-section-2, #form-section-3) { width: 100%; min-width: 0; height: auto; margin: 0; }
#form-wrapper #form-section-3 { grid-column: 1 / -1; }
#form-wrapper :is(.form-align, .form-align-2) { width: 100%; min-width: 0; }
#form-wrapper :is(input, textarea, select) { width: 100%; max-width: 100%; }
#form-wrapper textarea { height: 12rem; }

#gallery-wrapper {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .8rem;
  width: min(1100px, calc(100% - 2rem));
  margin: 0 auto 2rem;
  overflow: visible;
}
#gallery-wrapper .gallery-image {
  display: block;
  width: 100% !important;
  height: clamp(14rem, 28vw, 24rem);
  margin: 0;
  border: 1px solid #d7dce5;
  background: #eef1f6;
  overflow: hidden;
}
#gallery-wrapper .gallery-image :is(a[data-zoom], picture) { display: block; width: 100%; height: 100%; }
#gallery-wrapper .gallery-image img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: center;
}
#gallery-wrapper .gallery-image img:hover { transform: none; }

@media (max-width: 800px) {
  body[data-page="rv-camping"] #service-container { display: block; padding-inline: 1rem; }
  body[data-page="rv-camping"] :is(#introduction-bg, #introduction-fg) { width: 100% !important; min-width: 0; max-width: 100%; }
}
@media (max-width: 700px) {
  #form-wrapper .form-container { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 600px) {
  #gallery-wrapper { grid-template-columns: minmax(0, 1fr); }
}
