/* Xielo Lounge — shared base: reset, layout primitives, header/nav, hamburger menu.
   Each concept's own theme.css overrides colors, type, and section-specific styling. */

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; scroll-behavior: smooth; overflow-x: hidden; }
body { margin: 0; min-height: 100dvh; overflow-x: hidden; }
img { max-width: 100%; display: block; }
a { text-decoration: none; -webkit-tap-highlight-color: transparent; }
ul { margin: 0; padding: 0; list-style: none; }
button { font: inherit; cursor: pointer; -webkit-tap-highlight-color: transparent; }
a, button { touch-action: manipulation; }
.container { max-width: 720px; margin: 0 auto; padding-left: max(20px, env(safe-area-inset-left)); padding-right: max(20px, env(safe-area-inset-right)); }
.visually-hidden { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
.skip-link { position: absolute; left: 8px; top: -60px; z-index: 200; padding: 10px 18px; border-radius: 6px; transition: top .2s; }
.skip-link:focus { top: 8px; }

/* ── Header / Nav ─────────────────────────────────────────── */
.site-header {
  position: sticky; top: 0; z-index: 100;
  display: flex; align-items: center; justify-content: space-between;
  padding: 12px max(20px, env(safe-area-inset-left)) 12px max(20px, env(safe-area-inset-right));
  backdrop-filter: saturate(160%) blur(14px);
  -webkit-backdrop-filter: saturate(160%) blur(14px);
}
.site-header .brand { display: flex; align-items: center; gap: 10px; min-height: 44px; }
.site-header .brand img { height: 34px; width: auto; }
.site-header .brand-name { font-size: 15px; letter-spacing: 0.08em; }

.main-nav { display: none; }
.main-nav ul { display: flex; align-items: center; gap: 28px; }
.main-nav a { font-size: 13px; letter-spacing: 0.14em; text-transform: uppercase; white-space: nowrap; }

.site-header .nav-cta { display: none; }

.hamburger {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 5px; width: 44px; height: 44px; border: none; background: transparent; padding: 0;
  border-radius: 8px;
}
.hamburger span { display: block; width: 22px; height: 2px; border-radius: 2px; transition: transform .25s ease, opacity .25s ease; }
.hamburger[aria-expanded="true"] span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.hamburger[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
.hamburger[aria-expanded="true"] span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

.mobile-nav {
  position: fixed; inset: 0; z-index: 99;
  width: 100%; box-sizing: border-box;
  padding: max(24px, env(safe-area-inset-top)) max(24px, env(safe-area-inset-right)) max(24px, env(safe-area-inset-bottom)) max(24px, env(safe-area-inset-left));
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 30px;
  opacity: 0; visibility: hidden; transform: translateY(-8px);
  transition: opacity .3s ease, transform .3s ease, visibility 0s linear .3s;
}
.mobile-nav.is-open { opacity: 1; visibility: visible; transform: translateY(0); transition: opacity .3s ease, transform .3s ease; }
.mobile-nav a { font-family: inherit; font-size: 22px; letter-spacing: 0.06em; padding: 8px 12px; max-width: 100%; text-align: center; }
.mobile-nav .mobile-cta { margin-top: 10px; }

@media (min-width: 860px) {
  .main-nav { display: block; }
  .site-header .nav-cta { display: inline-flex; }
  .hamburger { display: none; }
  .mobile-nav { display: none; }
}

/* ── Sections ─────────────────────────────────────────────── */
section { padding: 64px 0; }
.section-eyebrow { font-size: 12px; letter-spacing: 0.32em; text-indent: 0.32em; text-transform: uppercase; margin: 0 0 14px; }
.section-heading { margin: 0 0 16px; line-height: 1.15; }
.center { text-align: center; }

/* ── Menu accordion (native <details>) ───────────────────── */
.menu-section { border-radius: 14px; overflow: hidden; }
.menu-section + .menu-section { margin-top: 14px; }
.menu-section summary {
  list-style: none; cursor: pointer; display: flex; align-items: center; justify-content: space-between;
  gap: 16px; padding: 20px 22px; min-height: 56px;
}
.menu-section summary::-webkit-details-marker { display: none; }
.menu-section summary .chev { font-size: 18px; transition: transform .3s ease; flex-shrink: 0; }
.menu-section[open] summary .chev { transform: rotate(180deg); }
.menu-items { padding: 0 22px 20px; }
.menu-item { display: flex; justify-content: space-between; align-items: baseline; gap: 14px; padding: 13px 0; border-bottom: 1px solid rgba(255,255,255,0.06); }
.menu-item:last-child { border-bottom: none; }
.menu-item .item-name { min-width: 0; }
.menu-item .item-es { display: block; line-height: 1.25; }
.menu-item .item-en { display: block; font-size: 12px; letter-spacing: 0.06em; text-transform: uppercase; margin-top: 2px; }
.menu-item .dots { flex: 1; border-bottom: 1px dotted rgba(255,255,255,0.15); transform: translateY(-5px); min-width: 16px; }
.menu-item .price { font-size: 16px; white-space: nowrap; }

/* ── Gallery ──────────────────────────────────────────────── */
.gallery-grid { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 12px; }
.gallery-grid img { width: 100%; height: 100%; object-fit: cover; }
.g-wide { grid-column: 1 / -1; }
.gallery-grid .g-item { overflow: hidden; border-radius: 16px; }
.gallery-grid .g-item img { transition: transform .5s ease; }
.gallery-grid .g-item:hover img { transform: scale(1.05); }

/* ── Hours ────────────────────────────────────────────────── */
.hours-grid { display: flex; flex-direction: column; gap: 16px; }
.hours-label { display: block; font-size: 13px; letter-spacing: 0.2em; text-transform: uppercase; margin-bottom: 6px; }

/* ── Buttons ──────────────────────────────────────────────── */
.btn { display: inline-flex; align-items: center; justify-content: center; min-height: 54px; max-width: 100%; box-sizing: border-box; padding: 14px 44px; font-size: 15px; line-height: 1.3; letter-spacing: 0.2em; text-indent: 0.2em; text-transform: uppercase; text-align: center; border-radius: 99px; transition: all .25s ease; white-space: normal; }

/* ── Footer ───────────────────────────────────────────────── */
.site-footer { padding: 40px 0 max(48px, env(safe-area-inset-bottom)); display: flex; flex-direction: column; align-items: center; gap: 14px; text-align: center; }
.ig-link { display: flex; align-items: center; gap: 10px; font-size: 16px; min-height: 44px; padding: 0 12px; }

@media (max-width: 480px) {
  .btn { padding: 12px 28px; letter-spacing: 0.14em; text-indent: 0.14em; }
}
