/* Shared service experience. Uses the public site's light/dark colour tokens. */
body[data-service-experience] {
  --sx-line: var(--premium-line, #d9cec0);
  --sx-paper: var(--premium-ivory, #f7f2ea);
  --sx-ink: var(--premium-ink, #30251f);
  --sx-muted: var(--color-text-light, #65584e);
}
body[data-service-experience]
  :is(.sx-home-search, .sx-finder-controls, .sx-service-index, .sx-guide-filter)
  :focus-visible {
  outline: 3px solid #568c96;
  outline-offset: 4px;
}
body[data-service-experience] .sx-service-hero {
  min-height: 0 !important;
  padding: 145px 0 52px !important;
  background: #241a15 !important;
  isolation: isolate;
}
body[data-service-experience] .sx-service-hero::before,
body[data-service-experience] .sx-service-hero::after {
  display: none !important;
}
body[data-service-experience] .sx-hero-grid {
  display: grid !important;
  grid-template-columns: minmax(0, 1.12fr) minmax(0, 0.88fr);
  align-items: center;
  gap: 5%;
  text-align: left;
  max-width: 1240px !important;
}
body[data-service-experience] .sx-service-hero h1 {
  max-width: 720px;
  font-size: clamp(2.65rem, 4.8vw, 4.8rem) !important;
  line-height: 1.05 !important;
  margin: 16px 0 22px !important;
  color: #fff6ea !important;
  letter-spacing: -0.035em;
}
body[data-service-experience] .sx-service-hero p {
  font-size: 1rem !important;
  line-height: 1.8;
  max-width: 630px;
  color: #e1d2c1 !important;
  margin: 0 !important;
}
body[data-service-experience] .sx-service-hero .section-subtitle {
  color: #d8b58c !important;
}
body[data-service-experience] .sx-hero-art {
  margin: 0;
  min-width: 0;
}
.sx-hero-art img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 3/2;
  object-fit: cover;
  border-radius: 95px 95px 5px 5px;
}
.sx-hero-art figcaption {
  font-size: 10px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: #d8c8b8;
  margin-top: 10px;
}
.sx-hero-actions {
  display: flex;
  gap: 14px;
  flex-wrap: wrap;
  margin-top: 26px;
}
.sx-hero-actions .btn {
  font-size: 0.7rem;
  letter-spacing: 0.07em;
  white-space: normal;
  text-align: center;
  min-height: 46px;
}
body[data-service-experience] .sx-guide-hero {
  padding-bottom: 40px !important;
}
body[data-service-experience] .sx-guide-hero h1 {
  font-size: clamp(2.5rem, 4.1vw, 4.1rem) !important;
}
body[data-service-experience] :is(#service-content, #article-content) {
  padding-top: 42px !important;
  padding-bottom: 65px !important;
}
body[data-service-experience] #service-content > .container {
  max-width: 980px !important;
}
body[data-service-experience] :is(#service-content, #article-content) h2 {
  scroll-margin-top: 110px;
}
body[data-service-experience] :is(#service-content, #article-content) p {
  line-height: 1.85;
}
.sx-price-section {
  margin: 30px 0 44px;
  scroll-margin-top: 110px;
}
.sx-price-note {
  font-size: 0.8rem !important;
  color: var(--sx-muted);
}
.sx-price-list {
  margin-top: 20px;
  border-top: 1px solid var(--sx-line);
}
.sx-price-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 110px 145px;
  gap: 22px;
  align-items: center;
  padding: 22px 0;
  border-bottom: 1px solid var(--sx-line);
}
body[data-service-experience] .sx-price-row h3 {
  font-size: 1.35rem;
  line-height: 1.25;
  margin: 0 !important;
}
.sx-price-row p {
  font-size: 0.78rem !important;
  margin: 9px 0 0 !important;
  line-height: 1.6 !important;
  color: var(--sx-muted);
}
.sx-price-meta {
  display: flex;
  flex-direction: column;
  gap: 7px;
}
.sx-price-meta strong {
  font-size: 1rem;
  font-weight: 600;
}
.sx-price-meta span {
  font-size: 0.78rem;
  color: var(--sx-muted);
}
.sx-price-book {
  font-size: 0.73rem !important;
  min-height: 44px;
  border: 1px solid var(--sx-line);
  border-radius: 4px;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 10px;
  text-decoration: none !important;
  line-height: 1.5;
}
.sx-price-book:hover {
  background: var(--sx-line);
}
.sx-related {
  margin: 38px 0;
}
.sx-related-links {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
}
.sx-related-links a {
  padding: 12px 16px;
  border: 1px solid var(--sx-line);
  border-radius: 5px;
  font-size: 0.85rem;
  min-height: 44px;
}
.sx-section-heading {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 32px;
  margin-bottom: 30px;
}
.sx-section-heading > p {
  max-width: 410px;
  font-size: 0.95rem;
  color: var(--sx-muted);
}
.sx-home-search {
  display: flex;
  align-items: end;
  gap: 16px;
  max-width: 760px;
  margin: 0 0 35px;
}
.sx-home-search label {
  flex: 1;
  display: grid;
  gap: 8px;
  font-size: 0.75rem;
  font-weight: 600;
}
.sx-home-search input {
  font: inherit;
  font-size: 1rem;
  padding: 14px 16px;
  min-height: 50px;
  border: 1px solid var(--sx-line);
  border-radius: 4px;
  background: var(--sx-paper);
  color: var(--sx-ink);
  width: 100%;
}
.sx-home-search button {
  min-height: 50px;
}
.sx-family-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 24px;
}
.sx-family-card {
  border: 1px solid var(--sx-line);
  border-radius: 12px;
  overflow: hidden;
  background: var(--sx-paper);
}
.sx-family-card > img {
  width: 100%;
  height: auto;
  aspect-ratio: 3/2;
  object-fit: cover;
}
.sx-family-card > div {
  padding: 23px;
}
.sx-family-card h3 {
  font-size: 1.8rem;
  line-height: 1.2;
  margin-bottom: 12px;
}
.sx-family-card p {
  font-size: 0.88rem;
  line-height: 1.7;
  color: var(--sx-muted);
  margin: 0 0 20px;
}
.sx-family-card a {
  font-size: 0.8rem;
  text-underline-offset: 4px;
  display: inline-flex;
  min-height: 44px;
  align-items: center;
}
.sx-directory-utility {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
  margin: 28px 0 0;
  font-size: 0.8rem;
}
body[data-service-experience] .sx-catalogue {
  padding-top: 40px !important;
  scroll-margin-top: 100px;
  content-visibility: visible !important;
}
body[data-service-experience] .catalogue-intro {
  display: flex !important;
  align-items: end;
  justify-content: space-between;
  gap: 25px;
  margin-bottom: 28px;
}
.catalogue-intro > div {
  max-width: 700px;
}
.sx-finder-controls {
  display: flex;
  align-items: end;
  flex-wrap: wrap;
  gap: 16px;
  padding: 22px;
  background: var(--sx-paper);
  border: 1px solid var(--sx-line);
  border-radius: 10px;
  margin: 22px 0;
}
.sx-finder-controls label {
  display: flex;
  flex: 1;
  flex-direction: column;
  gap: 8px;
  min-width: 160px;
  font-size: 0.73rem;
  font-weight: 600;
}
.sx-finder-controls label:first-child {
  flex: 2;
  min-width: 240px;
}
.sx-finder-controls input,
.sx-finder-controls select {
  width: 100%;
  min-height: 50px;
  border: 1px solid var(--sx-line);
  border-radius: 4px;
  padding: 10px 13px;
  font: inherit;
  font-size: 0.9rem;
  background: var(--sx-paper);
  color: var(--sx-ink);
}
.sx-reset {
  min-height: 50px;
  border: 1px solid var(--sx-line);
  background: transparent;
  color: var(--sx-ink);
  font: inherit;
  font-size: 0.8rem;
  padding: 10px 18px;
  border-radius: 4px;
  cursor: pointer;
}
.sx-result-bar {
  display: flex;
  justify-content: space-between;
  gap: 18px;
  margin: 0 0 8px;
}
.sx-result-bar p,
#public-service-catalogue-status {
  font-size: 0.75rem !important;
  color: var(--sx-muted);
  margin: 0 0 12px !important;
}
body[data-service-experience] .sx-service-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 18px;
  margin-top: 24px;
}
body[data-service-experience] .sx-service-card {
  display: flex !important;
  position: static !important;
  flex-direction: column;
  gap: 0;
  padding: 23px !important;
  border: 1px solid var(--sx-line) !important;
  border-radius: 10px;
  min-width: 0;
  text-align: left !important;
  margin: 0 !important;
  background: var(--sx-paper) !important;
}
body[data-service-experience] .sx-service-card .sx-eyebrow {
  font-size: 0.65rem !important;
  line-height: 1.5;
  color: var(--sx-muted) !important;
  letter-spacing: 0.07em;
  margin: 0 0 13px !important;
}
body[data-service-experience] .sx-service-card .menu-item-name {
  font-size: 1.45rem !important;
  font-weight: 500 !important;
  line-height: 1.25 !important;
  letter-spacing: 0 !important;
  margin: 0 !important;
  overflow-wrap: anywhere;
  color: var(--sx-ink) !important;
}
body[data-service-experience] .sx-service-card .menu-item-details {
  display: flex !important;
  justify-content: space-between;
  align-items: center;
  flex-direction: row !important;
  gap: 14px;
  position: static !important;
  margin: 22px 0 !important;
  padding: 0 !important;
  width: auto !important;
}
body[data-service-experience] .sx-service-card .menu-item-price {
  font-size: 1.22rem !important;
  position: static !important;
  color: var(--sx-ink) !important;
  white-space: normal !important;
  line-height: 1.3;
}
body[data-service-experience] .sx-service-card .menu-item-duration {
  font-size: 0.77rem !important;
  color: var(--sx-muted) !important;
  white-space: normal !important;
}
body[data-service-experience] .sx-service-card .sx-service-note {
  font-size: 0.76rem !important;
  line-height: 1.7;
  margin: 0 0 22px !important;
  color: var(--sx-muted) !important;
}
body[data-service-experience] .sx-service-card .menu-item-book {
  position: static !important;
  transform: none !important;
  display: flex !important;
  justify-content: center;
  align-items: center;
  min-height: 46px;
  margin-top: auto !important;
  width: 100% !important;
  padding: 12px !important;
  font-size: 0.72rem !important;
  font-weight: 600 !important;
  letter-spacing: 0 !important;
  line-height: 1.5 !important;
  text-align: center;
  white-space: normal !important;
  background: var(--sx-ink) !important;
  color: var(--sx-paper) !important;
  border: 1px solid var(--sx-ink) !important;
  border-radius: 4px;
  text-decoration: none;
}
body[data-service-experience] .sx-service-card .sx-guide-link {
  display: flex;
  justify-content: center;
  align-items: center;
  min-height: 44px;
  font-size: 0.72rem;
  line-height: 1.5;
  margin-top: 8px;
  text-align: center;
  color: var(--sx-ink);
}
.sx-more {
  display: flex;
  margin: 25px auto;
}
.sx-menu-note {
  font-size: 0.78rem !important;
  color: var(--sx-muted);
  text-align: center;
  max-width: 800px;
  margin: 25px auto !important;
  line-height: 1.8;
}
.sx-empty {
  padding: 40px 20px;
  text-align: center;
  border: 1px dashed var(--sx-line);
  border-radius: 8px;
}
.sx-empty p {
  margin: 15px 0;
}
.sx-service-index {
  margin: 22px 0;
  border: 1px solid var(--sx-line);
  padding: 17px 22px;
  border-radius: 8px;
}
.sx-service-index summary {
  cursor: pointer;
  font-size: 0.9rem;
  min-height: 44px;
  display: list-item;
  align-content: center;
}
.sx-guide-index {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 4px 24px;
  list-style: none;
  padding: 20px 0 0;
}
.sx-guide-index a {
  display: flex;
  align-items: center;
  min-height: 44px;
  font-size: 0.78rem;
  line-height: 1.6;
  text-decoration: underline;
  text-underline-offset: 3px;
}
body[data-service-experience] .sx-footer {
  padding: 55px 0 24px !important;
  background: #211915 !important;
  color: #f5eadb;
  content-visibility: visible !important;
}
.sx-footer-grid {
  display: grid;
  grid-template-columns: 1.15fr 0.7fr 1.2fr 1fr;
  gap: 35px;
}
.sx-footer-grid > * {
  min-width: 0;
}
.sx-footer h2 {
  font-family: var(--font-body, Arial, sans-serif) !important;
  font-size: 0.74rem !important;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: #e4c99f !important;
  margin: 0 0 17px !important;
}
.sx-footer p,
.sx-footer a {
  color: #e3d6c5 !important;
  font-size: 0.78rem !important;
  line-height: 1.85 !important;
}
.sx-footer p {
  margin-bottom: 15px !important;
}
.sx-footer .footer-brand .logo {
  display: block;
  margin-bottom: 16px;
}
.sx-footer .footer-brand .btn {
  font-size: 0.65rem !important;
  color: #211915 !important;
  background: #f5eadb !important;
  min-height: 44px;
  margin-top: 7px;
}
.sx-footer .footer-links {
  padding: 0;
  margin: 0;
  list-style: none;
}
.sx-footer .footer-links li {
  margin: 0 !important;
}
.sx-footer .footer-links a {
  display: inline-flex;
  align-items: center;
  min-height: 32px;
  padding: 3px 0;
}
.sx-footer .footer-bottom {
  margin-top: 35px !important;
  padding-top: 20px !important;
  border-top: 1px solid #514236;
  display: flex;
  justify-content: space-between;
  gap: 20px;
}
.sx-footer .footer-bottom p {
  font-size: 0.7rem !important;
  margin: 0 !important;
}
.sx-footer .footer-brand .logo-image {
  width: 150px;
  height: auto;
  filter: brightness(0) invert(1);
}
.sx-quick-contact {
  display: grid;
  grid-template-columns: 1.2fr 1fr 1fr;
  gap: 22px;
  margin-bottom: 32px;
}
.sx-quick-contact > div {
  padding: 22px;
  border: 1px solid var(--sx-line);
  border-radius: 8px;
}
.sx-quick-contact h2 {
  font-size: 1.5rem;
}
.sx-quick-contact p,
.sx-quick-contact a {
  font-size: 0.85rem;
  line-height: 1.8;
}
.sx-quick-contact a {
  display: inline-flex;
  min-height: 44px;
  align-items: center;
}
.sx-guide-filter {
  margin: 24px 0;
  display: flex;
  align-items: center;
  gap: 16px;
}
.sx-guide-filter label {
  font-size: 0.85rem;
}
.sx-guide-filter select {
  padding: 12px;
  border: 1px solid var(--sx-line);
  background: var(--sx-paper);
  color: var(--sx-ink);
  border-radius: 4px;
  min-height: 48px;
  font: inherit;
  font-size: 0.9rem;
}
.sx-guide-filter-status {
  font-size: 0.8rem;
}
@media (max-width: 1000px) {
  .sx-family-grid,
  body[data-service-experience] .sx-service-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .sx-footer-grid {
    grid-template-columns: 1fr 1fr;
    gap: 30px;
  }
  .sx-guide-index {
    grid-template-columns: 1fr 1fr;
  }
  .sx-price-row {
    grid-template-columns: minmax(0, 1fr) 100px 125px;
    gap: 15px;
  }
}
@media (max-width: 760px) {
  body[data-service-experience] .sx-service-hero {
    padding: 105px 0 35px !important;
  }
  body[data-service-experience] .sx-hero-grid {
    grid-template-columns: 1fr !important;
    gap: 25px;
  }
  .sx-hero-art img {
    max-height: 250px;
    object-fit: cover;
    border-radius: 75px 75px 5px 5px;
  }
  .sx-hero-art {
    width: 100%;
    max-width: 500px;
  }
  .sx-hero-art figcaption {
    font-size: 9px;
  }
  body[data-service-experience] .sx-service-hero h1 {
    font-size: 2.9rem !important;
  }
  body[data-service-experience] .sx-service-hero p {
    font-size: 0.87rem !important;
  }
  .sx-hero-actions .btn {
    flex: 1;
    min-width: 130px;
    padding: 12px 10px;
  }
  .sx-price-row {
    grid-template-columns: minmax(0, 1fr) 105px;
  }
  .sx-price-book {
    grid-column: 1/-1;
    justify-self: start;
    min-width: 155px;
  }
  .sx-price-row h3 {
    font-size: 1.25rem !important;
  }
  .sx-section-heading {
    display: block;
  }
  .sx-section-heading > p {
    margin-top: 15px;
  }
  .sx-quick-contact {
    grid-template-columns: 1fr;
  }
  .sx-footer-grid {
    gap: 30px 24px;
  }
  .sx-guide-hero .sx-hero-art {
    display: none;
  }
  .sx-finder-controls {
    padding: 16px;
  }
  .sx-finder-controls label:first-child {
    min-width: 100%;
  }
  .sx-finder-controls .sx-reset {
    align-self: end;
  }
  .sx-footer .footer-links a {
    min-height: 40px;
  }
  .sx-footer .footer-bottom {
    display: block;
  }
  .sx-footer .footer-bottom p + p {
    margin-top: 10px !important;
  }
  body[data-service-experience] .sx-footer {
    padding-bottom: calc(90px + env(safe-area-inset-bottom)) !important;
  }
}
@media (max-width: 540px) {
  .sx-home-search {
    display: block;
  }
  .sx-home-search button {
    margin-top: 12px;
    width: 100%;
  }
  .sx-family-grid,
  body[data-service-experience] .sx-service-grid {
    grid-template-columns: 1fr;
  }
  .sx-family-card {
    display: grid;
    grid-template-columns: 115px minmax(0, 1fr);
    align-items: stretch;
  }
  .sx-family-card > img {
    height: 100%;
    min-height: 175px;
    object-fit: cover;
  }
  .sx-family-card > div {
    padding: 17px;
  }
  .sx-family-card h3 {
    font-size: 1.5rem;
  }
  .sx-family-card p {
    font-size: 0.75rem;
    margin-bottom: 6px;
  }
  .sx-family-card a {
    font-size: 0.7rem;
  }
  .sx-directory-utility {
    display: block;
    line-height: 2.2;
  }
  .sx-footer-grid {
    grid-template-columns: 1fr 1fr;
  }
  .sx-footer-grid > .footer-brand,
  .sx-footer-grid > .footer-contact {
    grid-column: 1/-1;
  }
  .sx-footer-services {
    display: block;
  }
  .sx-finder-controls label {
    min-width: 100%;
  }
  .sx-finder-controls .sx-reset {
    width: 100%;
  }
  .sx-result-bar {
    display: block;
  }
  .sx-result-bar p {
    margin-bottom: 5px !important;
  }
  .sx-guide-index {
    grid-template-columns: 1fr;
  }
  .sx-hero-actions {
    flex-direction: column;
  }
  .sx-hero-art img {
    max-height: 210px;
  }
  .sx-price-row {
    grid-template-columns: minmax(0, 1fr) 95px;
    gap: 12px;
  }
  .sx-price-meta strong {
    font-size: 0.88rem;
  }
  .sx-service-index {
    padding: 12px 16px;
  }
  body[data-service-experience] .catalogue-intro {
    display: block !important;
  }
  .catalogue-calendar-link {
    margin-top: 18px;
  }
  .sx-guide-filter {
    align-items: start;
    flex-direction: column;
  }
}
.sx-help {
  position: fixed;
  right: 22px;
  bottom: 22px;
  z-index: 995;
  color: var(--sx-ink);
}
.sx-help > summary {
  list-style: none;
  cursor: pointer;
  border: 1px solid #8c7158;
  border-radius: 50px;
  background: #30251f;
  color: #fff5e8;
  padding: 12px 18px;
  min-height: 48px;
  font: 600 12px/1.5 var(--font-body, Arial, sans-serif);
  box-shadow: 0 4px 14px #0002;
}
.sx-help > summary::-webkit-details-marker {
  display: none;
}
.sx-help > summary:focus-visible {
  outline: 3px solid #568c96;
  outline-offset: 4px;
}
.sx-help-panel {
  position: absolute;
  bottom: 62px;
  right: 0;
  width: min(280px, calc(100vw - 32px));
  background: var(--sx-paper);
  border: 1px solid var(--sx-line);
  padding: 16px;
  border-radius: 10px;
  box-shadow: 0 10px 35px #0003;
}
.sx-help-panel p {
  font-size: 0.9rem;
  margin: 0 0 10px;
  font-weight: 600;
}
.sx-help-panel a,
.sx-help-panel button {
  display: flex;
  align-items: center;
  width: 100%;
  min-height: 44px;
  text-align: left;
  border: 0;
  background: transparent;
  color: var(--sx-ink);
  font: inherit;
  font-size: 0.8rem;
  padding: 9px 3px;
  cursor: pointer;
  text-decoration: underline;
  text-underline-offset: 3px;
}
.sx-help-panel a:focus-visible,
.sx-help-panel button:focus-visible {
  outline: 2px solid currentColor;
  outline-offset: 2px;
}
body[data-service-experience] .scroll-top-btn {
  display: none !important;
}
@media (max-width: 768px) {
  .sx-help {
    right: 16px;
    bottom: calc(90px + env(safe-area-inset-bottom));
  }
  .sx-help > summary {
    min-height: 44px;
    padding: 10px 15px;
  }
}

/* Hidden filtered cards and unavailable controls must win over legacy display rules. */
body[data-service-experience]
  :is(
    .sx-service-card,
    .sx-finder-controls,
    #service-finder-empty,
    #service-finder-more,
    .blog-card,
    .whatsapp-btn,
    #chat-toggle-btn,
    #sx-account-retry
  )[hidden] {
  display: none !important;
}

.sx-account-help,
.sx-account-retry {
  font-size: 0.82rem !important;
  max-width: 460px;
  text-align: center;
  line-height: 1.8;
}
.sx-account-help a {
  display: inline-flex;
  min-height: 44px;
  align-items: center;
  text-decoration: underline;
}
.sx-account-retry .btn {
  margin-top: 12px;
}
.chat-active .sx-help {
  visibility: hidden;
}
/* Dialog close must make its return control focusable in the same task. */
#sx-help,
#sx-help-toggle {
  transition: none !important;
}
