/* Integration only: the supplied layout and original relief CSS stay intact. */
.relief-light-guides { position: absolute; z-index: 50; overflow: hidden; pointer-events: none; }
.relief-light-guides[hidden], .relief-light-guide[hidden] { display: none; }
.relief-light-guide { position: absolute; border: 1px dashed #8e3129; border-radius: 50%; transform: translate(-50%, -50%); }
.relief-light-guide b { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); display: grid; place-items: center; width: 24px; height: 24px; border-radius: 50%; background: #8e3129; color: #efeee9; font: 400 14px/1 Arial, sans-serif; }
[hidden] { display: none !important; }
.mobile-navigation, .mobile-book { display: none; }
.site-header { z-index: 5; }
.service-image { position: relative; }
/* Switch only once a complete WebGL frame exists. Simultaneous opacity fades
   exposed the light page through both versions of the same photograph. */
[data-curved-photo] img,
[data-curved-photo] .curved-photo-canvas { transition: none; }
.photo-depth { translate: 0 var(--photo-depth-y, 0px); }
@media (prefers-reduced-motion: reduce) {
  .photo-depth { translate: none; }
}
.photo-controls select {
  width: 100%;
  padding: 10px 8px;
  margin-top: 8px;
  background: var(--paper);
  color: var(--ink);
  border: 1px solid var(--rule);
  font: inherit;
}
[data-scroll-curve] .curved-photo-canvas {
  left: calc(-4% - 128px);
  top: calc(-4% - 128px);
  width: calc(108% + 256px);
  height: calc(108% + 256px);
}
.booking-notice {
  width: min(calc(100% - var(--gutter) * 2), 1440px);
  margin: 0 auto 32px;
  font-size: var(--type-ui);
  line-height: 1.6;
  color: var(--accent);
}
.booking-notice a { text-decoration: underline; }
.card-choice { min-width: 0; }
.card-name, .card-note, .summary-row dd { overflow-wrap: anywhere; }
.calendar-grid { grid-template-columns: repeat(7, minmax(0, 1fr)); }
.cal-legend { flex-wrap: wrap; }

@media (max-width: 1023px) {
  .site-header { height: 80px; gap: 18px; }
  .site-header > .brand { margin-right: auto; }
  .site-header > nav { display: none; }
  .mobile-navigation, .mobile-book { display: block; }
  .mobile-navigation summary {
    min-height: 44px;
    display: flex;
    align-items: center;
    cursor: pointer;
    font-size: 14px;
    list-style: none;
  }
  .mobile-navigation summary::-webkit-details-marker { display: none; }
  .mobile-navigation nav {
    position: absolute;
    top: 100%;
    left: var(--gutter);
    right: var(--gutter);
    padding: 18px 24px;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 6px;
    background: var(--paper);
    border: 1px solid var(--rule);
  }
  .mobile-navigation nav > a:not(:first-child) { display: flex; }
  .mobile-navigation nav a { min-height: 44px; align-items: center; }
  .mobile-book { padding: 10px 14px; border: 1px solid var(--accent); color: var(--accent); font-size: 14px; }
}

@media (max-width: 380px) {
  .site-header { gap: 12px; }
  .site-header > .brand { font-size: 21px; }
  .mobile-book { padding-inline: 10px; }
  .review { padding-inline: 20px; }
}

/* Paper grain (paper-grain.js): above the page, below the E settings panel. */
.paper-grain {
  position: fixed;
  inset: 0;
  z-index: 15;
  pointer-events: none;
  background-repeat: repeat;
  contain: strict;
}
@media print { .paper-grain { display: none; } }
