/* XPRS Hotelier — base layer: reset, typography, motion primitives. */

*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  -webkit-text-size-adjust: 100%;
  scroll-behavior: smooth;
  scroll-padding-top: calc(var(--xh-admin-bar-height) + var(--xh-header-height) + var(--xh-space-5));
}

body {
  margin: 0;
  background: var(--xh-color-surface);
  color: var(--xh-color-ink);
  font-family: var(--xh-font-body);
  font-size: var(--xh-text-base);
  line-height: var(--xh-leading-body);
  font-feature-settings: "kern" 1, "liga" 1;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  overflow-x: hidden;
  transition: background-color var(--xh-duration) var(--xh-ease), color var(--xh-duration) var(--xh-ease);
}

body.xh-no-scroll {
  overflow: hidden;
}

img,
picture,
video,
iframe,
svg {
  max-width: 100%;
  display: block;
}

img,
video {
  height: auto;
}

h1, h2, h3, h4, h5, h6 {
  font-family: var(--xh-font-display);
  font-weight: 400;
  line-height: var(--xh-leading-tight);
  letter-spacing: var(--xh-tracking-tight);
  margin: 0 0 var(--xh-space-4);
  text-wrap: balance;
}

/* Display titles decide their own measure; avoid forcing short names to balance. */
.xh-hero__title,
.xh-pagehead__title,
.xh-archive-head__title { text-wrap: wrap; }

h1 { font-size: var(--xh-text-3xl); }
h2 { font-size: var(--xh-text-2xl); }
h3 { font-size: var(--xh-text-xl); }
h4 { font-size: var(--xh-text-lg); line-height: var(--xh-leading-snug); }
h5, h6 {
  font-family: var(--xh-font-body);
  font-size: var(--xh-text-xs);
  font-weight: 600;
  letter-spacing: var(--xh-tracking-wide);
  text-transform: uppercase;
  line-height: 1.4;
}

p, ul, ol, dl, blockquote, figure, table, pre {
  margin: 0 0 var(--xh-space-4);
}

a {
  color: inherit;
  text-decoration-thickness: 1px;
  text-underline-offset: 0.22em;
  text-decoration-color: color-mix(in srgb, currentColor 45%, transparent);
  transition: color var(--xh-duration-fast) var(--xh-ease), text-decoration-color var(--xh-duration-fast) var(--xh-ease);
}

a:hover {
  color: var(--xh-color-accent);
  text-decoration-color: currentColor;
}

:focus-visible {
  outline: 2px solid var(--xh-color-accent);
  outline-offset: 3px;
  border-radius: 1px;
}

button,
input,
select,
textarea {
  font: inherit;
  color: inherit;
}

button {
  background: none;
  border: 0;
  cursor: pointer;
}

blockquote {
  border: 0;
  margin-inline: 0;
  padding-left: var(--xh-space-5);
  border-left: 1px solid var(--xh-color-accent);
  font-family: var(--xh-font-display);
  font-size: var(--xh-text-xl);
  line-height: 1.35;
}

hr {
  border: 0;
  border-top: 1px solid var(--xh-color-line);
  margin: var(--xh-space-7) 0;
}

table {
  width: 100%;
  border-collapse: collapse;
  font-size: var(--xh-text-sm);
}

th, td {
  border-bottom: 1px solid var(--xh-color-line);
  padding: var(--xh-space-3) var(--xh-space-3) var(--xh-space-3) 0;
  text-align: left;
}

th {
  font-family: var(--xh-font-body);
  font-size: var(--xh-text-xs);
  font-weight: 600;
  letter-spacing: var(--xh-tracking-wide);
  text-transform: uppercase;
  color: var(--xh-color-muted);
}

::selection {
  background: color-mix(in srgb, var(--xh-color-accent) 28%, transparent);
}

/* Prose */
.xh-prose {
  max-width: var(--xh-measure);
}

.xh-prose--full { max-width: none; }

.xh-prose > :last-child { margin-bottom: 0; }

.xh-prose > h2,
.xh-prose > h3 {
  margin-top: var(--xh-space-7);
}

.xh-prose > p:first-of-type {
  font-size: var(--xh-text-md);
}

/* Utility text */
.xh-eyebrow {
  font-size: var(--xh-text-xs);
  font-weight: 600;
  letter-spacing: var(--xh-tracking-wide);
  text-transform: uppercase;
  color: var(--xh-color-muted);
  margin: 0 0 var(--xh-space-3);
}

.xh-caption {
  font-size: var(--xh-text-sm);
  color: var(--xh-color-muted);
}

.xh-label {
  font-size: var(--xh-text-2xs);
  font-weight: 600;
  letter-spacing: var(--xh-tracking-wider);
  text-transform: uppercase;
  color: var(--xh-color-muted);
}

.xh-display {
  font-family: var(--xh-font-display);
  font-size: var(--xh-text-4xl);
  line-height: var(--xh-leading-tight);
}

.xh-screen-reader-text,
.screen-reader-text {
  position: absolute !important;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.xh-skip-link {
  position: absolute;
  left: -9999px;
  z-index: 200;
}

.xh-skip-link:focus {
  left: var(--xh-space-4);
  top: var(--xh-space-4);
  background: var(--xh-color-surface);
  padding: var(--xh-space-3) var(--xh-space-4);
  border: 1px solid var(--xh-color-line-strong);
}

/* Rule / hairline flourish used between editorial bands. */
.xh-rule {
  height: 1px;
  background: var(--xh-color-line);
  border: 0;
  margin: 0;
}

.xh-mark {
  display: inline-block;
  width: 34px;
  height: 1px;
  background: var(--xh-color-accent);
  vertical-align: middle;
}

/*
 * Reveal-on-scroll system. Content is visible by default; the animation is
 * only armed once JS has added .xh-js to <html>, so a failed or blocked
 * script can never leave the page half invisible.
 */
.xh-js [data-xh-reveal] {
  opacity: 0;
  transform: translate3d(0, 22px, 0);
  transition: opacity var(--xh-duration-slow) var(--xh-ease-out),
    transform var(--xh-duration-slow) var(--xh-ease-out);
  will-change: opacity, transform;
}

.xh-js [data-xh-reveal="fade"] { transform: none; }
.xh-js [data-xh-reveal="left"] { transform: translate3d(-28px, 0, 0); }
.xh-js [data-xh-reveal="right"] { transform: translate3d(28px, 0, 0); }
.xh-js [data-xh-reveal="scale"] { transform: scale(0.97); }

.xh-js [data-xh-revealed="true"] {
  opacity: 1;
  transform: none;
}

.xh-stagger > * {
  transition-delay: calc(var(--xh-stagger-index, 0) * 90ms);
}

/* Slow zoom for hero media. */
@keyframes xh-slow-zoom {
  from { transform: scale(1); }
  to { transform: scale(1.09); }
}

@keyframes xh-fade-up {
  from { opacity: 0; transform: translate3d(0, 18px, 0); }
  to { opacity: 1; transform: none; }
}

@keyframes xh-scroll-cue {
  0%, 100% { transform: translateY(0); opacity: 0.4; }
  50% { transform: translateY(8px); opacity: 1; }
}

/* Without scripting the drawer never opens, so keep it fully out of the way. */
.no-js .xh-drawer,
.no-js .xh-mega { display: none !important; }
.no-js .xh-nav { display: flex !important; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
  [data-xh-reveal] { opacity: 1; transform: none; }
}
