:root {
  --family-serif: "Times New Roman", Times, serif;
  --family-sans: "Times New Roman", Times, serif;
  --family-width: 1240px;
  --family-radius: 4px;
  --family-ease: cubic-bezier(0.22, 1, 0.36, 1);
}

* { box-sizing: border-box; }
html { overflow-x: hidden; scroll-behavior: smooth; scroll-padding-top: 82px; }
body { margin: 0; }
button, input, textarea, select { font: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }
img { display: block; max-width: 100%; }
a { color: inherit; text-decoration: none; }
address { font-style: normal; }
[hidden] { display: none !important; }

.family-site {
  --family-bg: #f3f5f0;
  --family-surface: #ffffff;
  --family-ink: #15241e;
  --family-muted: #617168;
  --family-accent: #19734e;
  --family-accent-strong: #0d5036;
  --family-highlight: #e55947;
  --family-line: rgba(20, 52, 39, 0.17);
  --family-dark: #10251d;
  --family-dark-2: #091711;
  min-width: 320px; overflow-x: hidden;
  color: var(--family-ink); background: var(--family-bg);
  font-family: var(--family-sans); font-size: 16px; line-height: 1.65; letter-spacing: 0;
}
.site-mahjong {
  --family-bg: #0b1713;
  --family-surface: #13231d;
  --family-ink: #f1ebdf;
  --family-muted: #b6b0a5;
  --family-accent: #c43e35;
  --family-accent-strong: #962c27;
  --family-highlight: #d3aa59;
  --family-line: rgba(230, 214, 179, 0.18);
  --family-dark: #0b1713;
  --family-dark-2: #07100d;
}

.family-cursor-light {
  position: fixed; z-index: 900; top: 0; left: 0; width: 440px; height: 440px; border-radius: 50%;
  pointer-events: none; opacity: 0; transform: translate3d(-500px, -500px, 0);
  background: radial-gradient(circle, rgba(214,174,93,0.11) 0%, rgba(196,62,53,0.035) 34%, transparent 68%);
  mix-blend-mode: screen; transition: opacity 0.35s ease; will-change: transform;
}
.site-mahjong.has-cursor-light .family-cursor-light { opacity: 1; }

.family-site h1, .family-site h2, .family-site h3, .family-site p { margin-top: 0; }
.family-site h1, .family-site h2, .family-site h3 {
  font-family: var(--family-serif); font-weight: 600; line-height: 1; letter-spacing: 0;
}
.family-site h2 { margin-bottom: 1.15rem; font-size: 3.6rem; }
.family-site h3 { font-size: 1.55rem; line-height: 1.15; }
.family-skip {
  position: fixed; z-index: 2000; top: 0.5rem; left: 0.5rem; padding: 0.7rem 1rem;
  color: #fff; background: #111; transform: translateY(-140%);
}
.family-skip:focus { transform: none; }

/* Header and family selector */
.family-nav {
  position: fixed; z-index: 1000; inset: 0 0 auto; height: 80px;
  color: #f8f5ec; border-bottom: 1px solid rgba(255,255,255,0.12);
  background: rgba(7, 19, 15, 0.68); backdrop-filter: blur(14px);
  transition: background 0.25s ease, box-shadow 0.25s ease;
}
.family-nav.is-stuck { background: rgba(7,19,15,0.94); box-shadow: 0 16px 45px rgba(0,0,0,0.24); }
.family-nav__inner {
  width: min(var(--family-width), calc(100% - 3rem)); height: 100%; margin: 0 auto;
  display: flex; align-items: center; gap: 2.5rem;
}
.family-switcher { position: relative; flex: 0 0 auto; z-index: 960; }
.family-brand {
  display: flex; align-items: center; gap: 0.75rem; padding: 0; border: 0;
  color: inherit; background: transparent; text-align: left; cursor: pointer;
}
.family-brand__menu-icon { width: 24px; display: grid; gap: 5px; flex: 0 0 auto; }
.family-brand__menu-icon i { display: block; width: 24px; height: 2px; background: currentColor; transition: transform .2s ease, opacity .2s ease; }
.family-switcher.is-open .family-brand__menu-icon i:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.family-switcher.is-open .family-brand__menu-icon i:nth-child(2) { opacity: 0; }
.family-switcher.is-open .family-brand__menu-icon i:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }
.family-brand__logo {
  width: 116px; height: 44px; display: grid; place-items: center;
  background: transparent; border: 0; border-radius: 0;
  transition: opacity 0.25s var(--family-ease);
}
.family-brand:hover .family-brand__logo,
.family-brand:focus-visible .family-brand__logo { opacity: 0.86; }
.family-brand__logo img { width: 112px; height: auto; max-height: 42px; object-fit: contain; }
.family-brand__text { display: flex; flex-direction: column; line-height: 1.08; }
.family-brand__text strong { font-family: var(--family-serif); font-size: 1.12rem; }
.family-brand__text small { margin-top: 0.16rem; color: #d9bd75; font-size: 0.63rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0; }
.family-brand__chevron {
  width: 7px; height: 7px; margin-left: 0.15rem; border-right: 1px solid #d9bd75; border-bottom: 1px solid #d9bd75;
  transform: rotate(45deg) translateY(-2px); transition: transform 0.25s ease;
}
.family-switcher.is-open .family-brand__chevron { transform: rotate(225deg) translate(-2px, -2px); }
.family-switcher__menu {
  position: absolute; z-index: 970; top: 100%; left: 0; width: 244px; padding: 0.45rem 0;
  opacity: 0; visibility: hidden; pointer-events: none; transform: translateY(8px);
  background: rgba(7,19,15,0.98); border: 1px solid rgba(217,189,117,0.32); border-top: 2px solid #d9bd75;
  box-shadow: 0 24px 60px rgba(0,0,0,0.35);
  transition: opacity 0.2s ease, visibility 0.2s ease, transform 0.2s ease;
}
.family-switcher.is-open .family-switcher__menu { opacity: 1; visibility: visible; pointer-events: auto; transform: none; }
.family-switcher__item { position: relative; }
.family-switcher__row { display: flex; align-items: stretch; }
.family-switcher__link {
  display: flex; align-items: center; flex: 1; min-width: 0; padding: 0.78rem 0.9rem;
  border-left: 2px solid transparent; color: #fff;
}
.family-switcher__link--plain { width: 100%; }
.family-switcher__link:hover, .family-switcher__link:focus-visible,
.family-switcher__item.is-open .family-switcher__link { background: rgba(217,189,117,0.1); border-left-color: #d9bd75; }
.family-switcher__link[aria-current="page"] { background: rgba(217,189,117,0.08); border-left-color: #d9bd75; }
.family-switcher__link strong { display: block; color: #fff; font-family: var(--family-serif); font-size: 1.05rem; font-weight: 600; }
.family-switcher__expand {
  position: relative; flex: 0 0 42px; width: 42px; margin: 0; padding: 0; border: 0;
  background: transparent; cursor: pointer;
}
.family-switcher__expand::before {
  content: ""; position: absolute; top: 50%; left: 50%; width: 7px; height: 7px;
  border-right: 1.5px solid #d9bd75; border-bottom: 1.5px solid #d9bd75;
  transform: translate(-70%, -50%) rotate(-45deg);
}
.family-switcher__item.is-open .family-switcher__expand::before { transform: translate(-40%, -50%) rotate(45deg); }
.family-switcher__flyout {
  position: absolute; z-index: 971; top: -0.45rem; left: calc(100% - 1px); min-width: 272px;
  padding: 1.15rem 0.75rem 0.8rem;
  opacity: 0; visibility: hidden; pointer-events: none;
  background: rgba(7,19,15,0.98); border: 1px solid rgba(217,189,117,0.32); border-top: 2px solid #d9bd75;
  box-shadow: 12px 18px 40px rgba(0,0,0,0.38);
}
.family-switcher__item.is-open .family-switcher__flyout { opacity: 1; visibility: visible; pointer-events: auto; }
.family-switcher__flyout > p {
  margin: 0 0 0.6rem; padding: 0 0.75rem; color: #d9bd75;
  font-size: 0.62rem; font-weight: 800; letter-spacing: 0.16em; text-transform: uppercase;
}
.family-switcher__flyout a {
  display: block; padding: 0.72rem 0.75rem; border-bottom: 1px solid rgba(255,255,255,0.07);
  color: rgba(255,255,255,0.86);
}
.family-switcher__flyout a:last-child { border-bottom: 0; }
.family-switcher__flyout a:hover, .family-switcher__flyout a:focus-visible,
.family-switcher__flyout a[aria-current="page"] { background: rgba(217,189,117,0.1); color: #fff; }
.family-switcher__flyout strong {
  display: block; color: #fff; font-family: var(--family-sans); font-size: 0.84rem; font-weight: 600;
}
.family-switcher__flyout span {
  display: block; margin-top: 0.2rem; color: rgba(255,255,255,0.58); font-size: 0.67rem; line-height: 1.45;
}
.family-nav__links { display: flex; align-items: center; justify-content: center; gap: 1.8rem; margin-left: auto; }
.family-nav__links a, .family-nav__portfolio summary { position: relative; color: rgba(255,255,255,0.74); font-size: 0.82rem; font-weight: 600; }
.family-nav__links > a::after, .family-nav__portfolio > summary::after { content: ""; position: absolute; inset: auto 0 -8px; height: 1px; background: #d9bd75; transform: scaleX(0); transition: transform 0.2s ease; }
.family-nav__links a:hover, .family-nav__links a:focus-visible, .family-nav__links a[aria-current="page"], .family-nav__portfolio summary:hover, .family-nav__portfolio summary:focus-visible, .family-nav__portfolio[open] summary { color: #fff; }
.family-nav__links > a:hover::after, .family-nav__links > a:focus-visible::after, .family-nav__links > a[aria-current="page"]::after, .family-nav__portfolio > summary:hover::after, .family-nav__portfolio > summary:focus-visible::after, .family-nav__portfolio[open] > summary::after { transform: scaleX(1); }
.family-nav__portfolio { position: relative; }
.family-nav__portfolio summary { display: flex; align-items: center; gap: 0.45rem; list-style: none; cursor: pointer; }
.family-nav__portfolio summary::-webkit-details-marker { display: none; }
.family-nav__portfolio summary::before {
  content: ""; width: 6px; height: 6px; border-right: 1px solid #d9bd75; border-bottom: 1px solid #d9bd75;
  transform: rotate(45deg) translateY(-2px); transition: transform 0.2s ease; order: 2;
}
.family-nav__portfolio[open] summary::before { transform: rotate(225deg) translate(-2px, -2px); }
.family-nav__portfolio-menu {
  position: absolute; top: calc(100% + 1rem); left: 50%; width: 230px; padding: 0.45rem;
  transform: translateX(-50%); background: rgba(7,19,15,0.98); border: 1px solid rgba(217,189,117,0.32); border-top: 2px solid #d9bd75;
  box-shadow: 0 24px 60px rgba(0,0,0,0.35);
}
.family-nav__portfolio-menu a { display: block; padding: 0.75rem; }
.family-nav__portfolio-menu a::after { display: none; }
.family-nav__portfolio-menu a:hover, .family-nav__portfolio-menu a:focus-visible { background: rgba(217,189,117,0.1); }
.family-nav__portfolio-menu strong, .family-nav__portfolio-menu span { display: block; }
.family-nav__portfolio-menu strong { color: #fff; font-family: var(--family-serif); font-size: 1rem; }
.family-nav__portfolio-menu span { margin-top: 0.18rem; color: rgba(255,255,255,0.58); font-size: 0.66rem; line-height: 1.4; }
.family-mobile-brand, .family-nav__mobile-portfolio { display: none; }
.family-nav__cta { flex: 0 0 auto; }
.locale-switcher { position: relative; flex: 0 0 auto; color: #f8f5ec; }
.locale-switcher__label {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0;
}
.locale-switcher select {
  min-width: 84px; height: 38px; padding: 0 1.8rem 0 0.65rem;
  color: #f8f5ec; background: rgba(7,19,15,0.76);
  border: 1px solid rgba(217,189,117,0.36); border-radius: 2px;
  font-size: 0.72rem; font-weight: 600; cursor: pointer;
  appearance: none; -webkit-appearance: none; -moz-appearance: none;
}
.locale-switcher::after {
  content: ""; position: absolute; right: 0.68rem; top: 50%; width: 6px; height: 6px;
  border-right: 1px solid #d9bd75; border-bottom: 1px solid #d9bd75;
  transform: translateY(-70%) rotate(45deg); pointer-events: none;
}
.locale-switcher select:focus-visible { outline: 2px solid #f0d891; outline-offset: 2px; }
.locale-switcher select option { color: #111; background: #fff; }
.family-burger { display: none; width: 42px; height: 42px; padding: 9px; border: 0; background: transparent; cursor: pointer; }
.family-burger span { display: block; width: 24px; height: 2px; margin: 5px auto; background: #fff; transition: transform 0.2s ease, opacity 0.2s ease; }
.family-nav.is-open .family-burger span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.family-nav.is-open .family-burger span:nth-child(2) { opacity: 0; }
.family-nav.is-open .family-burger span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

/* Buttons */
.family-button {
  min-height: 46px; display: inline-flex; align-items: center; justify-content: center;
  padding: 0.75rem 1.25rem; border: 1px solid transparent; border-radius: var(--family-radius);
  font-size: 0.82rem; font-weight: 600; cursor: pointer; transition: transform 0.2s var(--family-ease), background 0.2s ease, border-color 0.2s ease;
}
.family-button:hover, .family-button:focus-visible { transform: translateY(-2px); }
.family-button--solid { color: #fff; background: var(--family-accent); border-color: var(--family-accent); }
.family-button--solid:hover, .family-button--solid:focus-visible { background: var(--family-accent-strong); border-color: var(--family-accent-strong); }
.family-button--glass { color: #fff; background: rgba(8,18,14,0.28); border-color: rgba(255,255,255,0.48); backdrop-filter: blur(9px); }
.family-button--outline { color: var(--family-ink); background: transparent; border-color: currentColor; }
.site-mahjong .family-button--outline { color: #f1ebdf; }
.family-text-link { display: inline-flex; gap: 0.5rem; align-items: center; color: var(--family-accent); font-size: 0.84rem; font-weight: 600; }
.family-text-link span { transition: transform 0.2s ease; }
.family-text-link:hover span { transform: translateX(4px); }
.site-mahjong .family-text-link { color: var(--family-highlight); }

/* Hero */
.family-hero {
  --hero-x: 0px; --hero-y: 0px; --hero-copy-x: 0px; --hero-copy-y: 0px; --hero-note-x: 0px; --hero-note-y: 0px;
  position: relative; min-height: clamp(660px, 84svh, 820px); overflow: hidden; display: flex; align-items: center;
  color: #fff; perspective: 1400px; transform-style: preserve-3d;
}
.family-hero__image {
  position: absolute; inset: -2%; width: 104%; height: 104%; object-fit: cover;
  transform: translate3d(var(--hero-x), var(--hero-y), -18px) scale(1.055);
  transition: transform 0.22s ease-out; will-change: transform;
}
.site-matcha .family-hero__image { object-position: center 52%; }
.site-mahjong .family-hero__image { object-position: center 48%; }
.family-hero__video {
  position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center;
  background: var(--family-dark-2); pointer-events: none;
  opacity: 0; transition: opacity 0.5s ease;
}
.family-hero__video.is-playing { opacity: 1; }
/* The photo is only released after the video has faded in on top of it. */
.family-hero--video .family-hero__image { visibility: hidden; }
.family-hero__scrim { position: absolute; inset: 0; background: linear-gradient(90deg, rgba(6,22,16,0.93) 0%, rgba(6,22,16,0.64) 43%, rgba(6,22,16,0.08) 72%); transform: translateZ(4px); }
.site-mahjong .family-hero__scrim { background: linear-gradient(90deg, rgba(3,8,7,0.94) 0%, rgba(3,8,7,0.5) 43%, rgba(3,8,7,0.03) 72%); }
.family-hero__content {
  position: relative; z-index: 2; width: min(var(--family-width), calc(100% - 3rem)); margin: 4rem auto 0;
  transform: translate3d(var(--hero-copy-x), var(--hero-copy-y), 44px); transition: transform 0.24s ease-out; will-change: transform;
}
.family-hero__content > * { max-width: 610px; }
.family-eyebrow { margin-bottom: 0.8rem; color: var(--family-accent); font-size: 0.72rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0; }
.family-hero .family-eyebrow { color: #e1c77f; }
.family-hero h1 { margin-bottom: 1.1rem; font-size: 5.4rem; color: #fff; }
.family-hero__lead { margin-bottom: 2rem; color: rgba(255,255,255,0.83); font-size: 1.2rem; line-height: 1.6; }
.family-hero__actions { display: flex; flex-wrap: wrap; gap: 0.8rem; }
.family-hero__note { position: absolute; z-index: 2; right: max(1.5rem, calc((100% - var(--family-width)) / 2)); bottom: 2.2rem; max-width: min(290px, calc(100vw - 3rem)); padding-left: 1rem; border-left: 2px solid #d9bd75; text-align: right; overflow-wrap: anywhere; transform: translate3d(var(--hero-note-x), var(--hero-note-y), 58px); transition: transform 0.24s ease-out; }
.family-hero__note span, .family-hero__note strong { display: block; }
.family-hero__note span { color: rgba(255,255,255,0.62); font-size: 0.68rem; text-transform: uppercase; }
.family-hero__note strong { margin-top: 0.2rem; font-family: var(--family-serif); font-size: 1.2rem; }

.family-proof { min-height: 116px; display: grid; grid-template-columns: repeat(3, 1fr); color: #fff; background: var(--family-dark); }
.family-proof > div { min-width: 0; display: flex; align-items: center; gap: 1rem; padding: 1.6rem 2.5rem; border-right: 1px solid rgba(255,255,255,0.12); }
.family-proof > div:last-child { border-right: 0; }
.family-proof strong { color: #d9bd75; font-family: var(--family-serif); font-size: 1.45rem; }
.family-proof span { font-size: 0.8rem; font-weight: 500; }
.family-proof--practical strong { min-width: 3.6rem; font-family: var(--family-sans); font-size: 0.7rem; letter-spacing: 0.08em; text-transform: uppercase; }
.family-proof--practical span { color: rgba(255,255,255,0.82); line-height: 1.45; }
.family-proof--practical [data-business-status][data-open="true"]::before { content: ""; display: inline-block; width: 7px; height: 7px; margin-right: 0.5rem; border-radius: 50%; background: #62c79a; box-shadow: 0 0 0 4px rgba(98,199,154,0.12); }

/* Sections */
.family-section { padding: 7rem 1.5rem; }
.family-section--light { color: var(--family-ink); background: var(--family-bg); }
.family-section--dark { color: #f1ebdf; background: var(--family-dark); }
.family-section__head { width: min(760px, 100%); margin: 0 auto 3.5rem; text-align: center; }
.family-section__head > p:last-child { margin: 0 auto; color: var(--family-muted); max-width: 660px; }
.family-section--dark .family-section__head > p:last-child { color: rgba(241,235,223,0.65); }

/* Mahjong shop */
.mahjong-shop { padding: 4.5rem 1.5rem; color: #f3eee2; background: #07130f; border-top: 1px solid rgba(211,170,89,0.18); border-bottom: 1px solid rgba(211,170,89,0.18); }
.mahjong-shop__head {
  width: min(var(--family-width), 100%); margin: 0 auto 2rem; display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(360px, 0.72fr); gap: 4rem; align-items: end;
}
.mahjong-shop__head h2 { margin: 0; color: #fff; font-size: 3.8rem; }
.mahjong-shop__head > p { margin: 0 0 0.35rem; color: rgba(243,238,226,0.62); max-width: 540px; }
.mahjong-product {
  --spot-x: 50%; --spot-y: 50%; position: relative; isolation: isolate; overflow: hidden;
  width: min(var(--family-width), 100%); margin: 0 auto; display: grid;
  grid-template-columns: minmax(0, 1.12fr) minmax(420px, 0.88fr); align-items: stretch; color: #f3eee2;
  background: #0c1915; border: 1px solid rgba(211,170,89,0.4); box-shadow: 0 28px 80px rgba(0,0,0,0.28);
}
.mahjong-product::after {
  content: ""; position: absolute; z-index: 2; inset: 0; pointer-events: none; opacity: 0;
  background: radial-gradient(420px circle at var(--spot-x) var(--spot-y), rgba(220,180,100,0.12), transparent 65%);
  transition: opacity 0.25s ease;
}
.mahjong-product:hover::after { opacity: 1; }
.mahjong-product > * { position: relative; z-index: 1; }
.mahjong-product__media { min-height: 610px; margin: 0; display: flex; align-items: center; overflow: hidden; background: radial-gradient(circle at 52% 48%, #183229 0%, #08110d 72%); }
.mahjong-product__media > img { position: relative; z-index: 1; width: 100%; height: 100%; object-fit: contain; }
.mahjong-product__media[data-image-missing]::before {
  content: "Image available on request"; margin: auto; color: rgba(243,238,226,0.54);
  font-family: var(--family-serif); font-size: 1.35rem;
}
.mahjong-product__media figcaption {
  position: absolute; z-index: 2; left: 1rem; bottom: 1rem; max-width: calc(100% - 2rem); padding: 0.55rem 0.7rem;
  color: rgba(255,255,255,0.68); background: rgba(4,11,9,0.82); font-size: 0.66rem;
}
.mahjong-product__copy { padding: 2.5rem; background: linear-gradient(145deg, rgba(255,255,255,0.025), transparent 58%); }
.mahjong-product__copy h3 { margin-bottom: 0.75rem; color: #fff; font-size: 3.2rem; }
.mahjong-product__lead { color: rgba(243,238,226,0.68); }
.mahjong-product__details { margin: 1.25rem 0 0; }
.mahjong-product__details > div { display: grid; grid-template-columns: 100px 1fr; gap: 0.8rem; padding: 0.62rem 0; border-top: 1px solid rgba(255,255,255,0.14); }
.mahjong-product__details dt { color: rgba(243,238,226,0.5); font-size: 0.68rem; text-transform: uppercase; }
.mahjong-product__details dd { margin: 0; color: rgba(243,238,226,0.86); font-size: 0.8rem; }
.mahjong-product__price { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; margin: 0.9rem 0 1.15rem; padding-top: 0.8rem; border-top: 1px solid rgba(211,170,89,0.42); }
.mahjong-product__price span { color: rgba(243,238,226,0.5); font-size: 0.68rem; text-transform: uppercase; }
.mahjong-product__price strong { color: #d9bd75; font-family: var(--family-serif); font-size: 1.45rem; }
.mahjong-product__price del { margin-right: 0.5rem; color: rgba(243,238,226,0.38); font-size: 0.9rem; }
.mahjong-product__form label { display: grid; gap: 0.35rem; margin-bottom: 0.65rem; color: rgba(243,238,226,0.58); font-size: 0.7rem; font-weight: 600; }
.mahjong-product__form input, .mahjong-product__form textarea, .mahjong-product__form select {
  width: 100%; min-height: 44px; padding: 0.65rem; border: 1px solid rgba(255,255,255,0.2); border-radius: 0;
  color: #f3eee2; background: rgba(255,255,255,0.035); outline: none;
}
.mahjong-product__form textarea { resize: vertical; }
.mahjong-product__form input:focus, .mahjong-product__form textarea:focus, .mahjong-product__form select:focus { border-color: #d9bd75; box-shadow: 0 0 0 2px rgba(217,189,117,0.13); }
.mahjong-product__form select option { color: #111; background: #fff; }
.mahjong-product__form .is-invalid, .mahjong-product__form [aria-invalid="true"] { border-color: #e25b51; }
.mahjong-product__actions { display: grid; grid-template-columns: 1fr 1fr; gap: 0.65rem; }
.mahjong-set-list {
  width: min(var(--family-width), 100%); margin: 1.25rem auto 0; display: grid;
  grid-template-columns: repeat(auto-fit, minmax(420px, 1fr)); gap: 1rem;
}
.mahjong-set-list[hidden] { display: none; }
.mahjong-set-card {
  position: relative; display: grid; grid-template-columns: 180px minmax(0, 1fr);
  min-height: 250px; overflow: hidden; border: 1px solid rgba(211,170,89,0.32);
  color: #f3eee2; background: #0c1915; box-shadow: 0 18px 46px rgba(0,0,0,0.2);
}
.mahjong-set-card__media {
  min-height: 100%; display: grid; place-items: center; overflow: hidden;
  background: radial-gradient(circle at 50% 42%, #183229 0%, #08110d 76%);
}
.mahjong-set-card__media > img {
  position: relative; z-index: 1; width: 100%; height: 100%; object-fit: contain; object-position: center;
}
.mahjong-set-card__placeholder {
  max-width: 130px; color: rgba(243,238,226,0.48); text-align: center;
  font-family: var(--family-serif); font-size: 1.05rem; line-height: 1.25;
}
.mahjong-set-card__body { min-width: 0; padding: 1.25rem; }
.mahjong-set-card__meta { min-height: 1.5rem; display: flex; align-items: center; justify-content: space-between; gap: 0.75rem; }
.mahjong-set-card__meta > span {
  color: #d9bd75; font-size: 0.66rem; font-weight: 700; text-transform: uppercase;
}
.mahjong-set-card h3 { margin: 0.65rem 0 0.35rem; color: #fff; font-size: 1.8rem; }
.mahjong-set-card p { margin: 0; color: rgba(243,238,226,0.64); font-size: 0.78rem; }
.mahjong-set-card dl { margin: 0.9rem 0 0; }
.mahjong-set-card dl > div { display: grid; grid-template-columns: 85px 1fr; gap: 0.55rem; padding: 0.38rem 0; border-top: 1px solid rgba(255,255,255,0.1); }
.mahjong-set-card dt { color: rgba(243,238,226,0.44); font-size: 0.6rem; text-transform: uppercase; }
.mahjong-set-card dd { margin: 0; color: rgba(243,238,226,0.76); font-size: 0.68rem; }
.mahjong-set-card__footer { display: flex; align-items: end; justify-content: space-between; gap: 1rem; margin-top: 1rem; }
.mahjong-set-card__footer strong { color: #d9bd75; font-family: var(--family-serif); font-size: 1.15rem; }
.mahjong-set-card__footer del,
.session-card__meta del { margin-right: 0.35rem; color: rgba(243,238,226,0.4); font-size: 0.72em; }

/* Matcha retail catalogue */
.matcha-shop { color: #10251c; background: #e9eee8; border-bottom: 1px solid #b8c4bc; }
.matcha-shop__intro,
.matcha-shop > [data-filter-group] { width: min(var(--family-width), 100%); margin-inline: auto; }
.matcha-shop__intro {
  display: grid; grid-template-columns: minmax(0,0.9fr) minmax(340px,0.65fr); gap: 4rem;
  align-items: end; margin-bottom: 2.6rem; padding-top: 1rem; border-top: 2px solid #10251c;
}
.matcha-shop__intro h2 { margin: 0; font-size: 4.4rem; }
.matcha-shop__intro > p { margin: 0 0 0.5rem; color: #53645b; }
.matcha-shop__toolbar { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: 1.2rem; }
.matcha-shop__toolbar .family-tabs { flex: 1 1 auto; width: auto; margin: 0; }
.matcha-shop__toolbar > p { display: flex; align-items: baseline; gap: 0.35rem; margin: 0; color: #53645b; font-size: 0.68rem; text-transform: uppercase; }
.matcha-shop__toolbar > p strong { color: #b6332e; font-family: var(--family-serif); font-size: 2rem; }
.matcha-product-grid { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); border-top: 1px solid #9eaea4; border-left: 1px solid #9eaea4; }
.matcha-product-card {
  min-width: 0; color: #10251c; border-right: 1px solid #9eaea4; border-bottom: 1px solid #9eaea4;
  background: #f8f8f2; transition: border-color 0.25s ease, box-shadow 0.28s ease;
}
.matcha-product-card:hover, .matcha-product-card:focus-within { z-index: 2; border-color: #10251c; box-shadow: 0 24px 55px rgba(10,35,25,0.15); }
.matcha-product-card__media {
  position: relative; height: 155px; display: grid; place-items: center; overflow: hidden;
  color: #fff; background: #12372a; isolation: isolate;
}
.matcha-product-card__media::before {
  position: absolute; inset: 0; background: url("assets/matcha/matcha-collection.webp") center 58% / 165% auto no-repeat;
  filter: saturate(0.78) contrast(1.18); opacity: 0.47; content: "";
}
.matcha-product-card__media--image {
  height: 210px; padding: 0; background: linear-gradient(145deg, #f7f6ef, #e1e8e2);
  box-shadow: inset 0 -1px 0 #c2cdc5;
}
.matcha-product-card__media--image::before { display: none; }
.matcha-product-card:nth-child(3n+2) .matcha-product-card__media::before { background-position: 35% 48%; }
.matcha-product-card:nth-child(3n) .matcha-product-card__media::before { background-position: 78% 58%; }
.matcha-product-card__media img {
  position: relative; z-index: 1; width: 100%; height: 100%;
  object-fit: contain; object-position: center;
}
.matcha-product-card__media--image img {
  position: absolute; inset: 0.7rem; width: calc(100% - 1.4rem); height: calc(100% - 1.4rem);
  max-width: none; max-height: none;
}
.matcha-product-card__media > span {
  position: relative; z-index: 1; color: rgba(255,255,255,0.74);
  font-family: var(--family-serif); font-size: 3.2rem; font-weight: 500;
  text-shadow: 0 3px 18px rgba(0,0,0,0.3);
}
.matcha-product-card__media > small { position: absolute; z-index: 2; top: 0.85rem; left: 0.85rem; padding: 0.35rem 0.45rem; color: #fff; background: #b6332e; font-size: 0.57rem; font-weight: 800; text-transform: uppercase; }
.matcha-product-card__body { min-height: 260px; display: flex; flex-direction: column; padding: 1rem; }
.matcha-product-card__top { display: flex; justify-content: space-between; gap: 0.65rem; padding-bottom: 0.55rem; border-bottom: 1px solid #c9d1cb; }
.matcha-product-card__top span { color: #b6332e; font-size: 0.6rem; font-weight: 800; text-transform: uppercase; }
.matcha-product-card__top strong { max-width: 140px; display: flex; justify-content: flex-end; gap: 0.3rem; flex-wrap: wrap; font-size: 0.6rem; text-align: right; }
.matcha-product-card__top strong del, .matcha-product-dialog__top strong del { color: #718078; font-weight: 500; }
.matcha-product-card .offer-promotion { align-self: flex-start; margin: 0.55rem 0 0; }
.matcha-product-card h3 {
  display: -webkit-box; min-height: 2.2em; margin: 0.75rem 0 0.4rem; overflow: hidden;
  font-size: 1.55rem; -webkit-box-orient: vertical; -webkit-line-clamp: 2;
}
.matcha-product-card__body > p {
  display: -webkit-box; min-height: 2.8em; margin: 0 0 0.65rem; overflow: hidden;
  color: #53645b; font-size: 0.7rem; line-height: 1.4; -webkit-box-orient: vertical; -webkit-line-clamp: 2;
}
.matcha-product-card dl { margin: 0 0 0.65rem; border-top: 1px solid #d2d9d4; }
.matcha-product-card dl div { display: grid; grid-template-columns: 70px 1fr; gap: 0.55rem; padding: 0.45rem 0; border-bottom: 1px solid #d2d9d4; }
.matcha-product-card dt { color: #718078; font-size: 0.57rem; text-transform: uppercase; }
.matcha-product-card dd { margin: 0; font-size: 0.66rem; }
.site-matcha dd.matcha-strength {
  --strength-ink: #4f5e56; --strength-bg: #edf0ed; --strength-border: #bdc7c0;
  width: fit-content; min-width: 62px; padding: 0.18rem 0.45rem;
  color: var(--strength-ink); border: 1px solid var(--strength-border); border-radius: 3px;
  background: var(--strength-bg); font-size: 0.59rem; font-weight: 800; text-align: center; text-transform: uppercase;
}
.site-matcha dd.matcha-strength--gentle { --strength-ink: #195a39; --strength-bg: #e1eee5; --strength-border: #9ec3aa; }
.site-matcha dd.matcha-strength--medium { --strength-ink: #654900; --strength-bg: #f3e4b3; --strength-border: #cfb763; }
.site-matcha dd.matcha-strength--vivid { --strength-ink: #fff; --strength-bg: #19734e; --strength-border: #105f3f; }
.site-matcha dd.matcha-strength--strong { --strength-ink: #fff; --strength-bg: #a6332f; --strength-border: #84231f; }
.matcha-product-card__actions {
  display: grid; grid-template-columns: 1fr auto; gap: 0.55rem; align-items: center;
  margin-top: auto; padding-top: 0.65rem; border-top: 1px solid #c9d1cb;
}
.matcha-product-card__actions > button {
  min-height: 36px; padding: 0.45rem 0.65rem; color: #fff; border: 1px solid #19734e; border-radius: 3px;
  background: #19734e; box-shadow: 0 8px 18px rgba(25,115,78,0.14); font-size: 0.64rem; font-weight: 800; cursor: pointer;
  transition: color 0.2s ease, border-color 0.2s ease, background 0.2s ease, transform 0.2s ease;
}
.matcha-product-card__actions > button:hover,
.matcha-product-card__actions > button:focus-visible { color: #fff; border-color: #0d5036; background: #0d5036; transform: translateY(-2px); }
.matcha-product-card__actions .family-text-link {
  justify-content: flex-end; color: #53645b; font-size: 0.64rem; font-weight: 700; white-space: nowrap;
}
.matcha-product-card__actions .family-text-link:hover,
.matcha-product-card__actions .family-text-link:focus-visible { color: #19734e; }
.matcha-product-card[data-depth-panel] > .matcha-product-card__media { transform: translateZ(12px); }
.matcha-product-card[data-depth-panel] > .matcha-product-card__body { transform: translateZ(22px); }

.matcha-product-dialog {
  width: min(880px, calc(100% - 2rem)); max-height: calc(100dvh - 2rem); padding: 0; overflow: visible;
  color: #10251c; border: 1px solid #10251c; border-radius: 4px; background: #f8f8f2;
  box-shadow: 0 35px 100px rgba(4,19,13,0.38);
}
.matcha-product-dialog::backdrop { background: rgba(4,19,13,0.72); backdrop-filter: blur(5px); }
.matcha-product-dialog__close {
  position: absolute; z-index: 2; top: 0.75rem; right: 0.75rem; width: 38px; height: 38px; padding: 0;
  color: #fff; border: 1px solid rgba(255,255,255,0.55); border-radius: 3px; background: rgba(7,25,18,0.82);
  font-size: 1.45rem; line-height: 1; cursor: pointer;
}
.matcha-product-dialog__close:hover,
.matcha-product-dialog__close:focus-visible { background: #a6332f; }
.matcha-product-dialog__content { display: grid; grid-template-columns: minmax(260px,0.85fr) minmax(0,1.15fr); max-height: calc(100dvh - 2rem); overflow: auto; }
.matcha-product-dialog__media {
  min-height: 520px; display: grid; place-items: center; overflow: hidden; color: #fff;
  background: #12372a url("assets/matcha/matcha-collection.webp") 16% 55% / auto 125% no-repeat;
}
.matcha-product-dialog__media--image {
  padding: 1.25rem; background: linear-gradient(145deg, #f7f6ef, #dfe7e0);
}
.matcha-product-dialog__media > img { position: relative; z-index: 1; width: 100%; height: 100%; object-fit: contain; object-position: center; }
.matcha-product-dialog__media--image > img { width: auto; height: auto; max-width: 100%; max-height: 100%; }
.matcha-product-dialog__media > span { padding: 2rem; font-family: var(--family-serif); font-size: 3rem; text-align: center; text-shadow: 0 4px 25px rgba(0,0,0,0.35); }
.matcha-product-dialog__body { padding: 2.25rem; }
.matcha-product-dialog__top { display: flex; justify-content: space-between; gap: 1rem; padding: 0 3rem 0.75rem 0; border-bottom: 1px solid #c9d1cb; }
.matcha-product-dialog__top span { color: #b6332e; font-size: 0.63rem; font-weight: 800; text-transform: uppercase; }
.matcha-product-dialog__top strong { max-width: 180px; display: flex; justify-content: flex-end; gap: 0.35rem; flex-wrap: wrap; font-size: 0.7rem; text-align: right; }
.matcha-product-dialog h2 { margin: 1.35rem 0 0.75rem; font-size: 2.7rem; }
.matcha-product-dialog__body > p { margin-bottom: 1.2rem; color: #53645b; font-size: 0.83rem; }
.matcha-product-dialog dl { margin: 0 0 1.4rem; border-top: 1px solid #d2d9d4; }
.matcha-product-dialog dl div { display: grid; grid-template-columns: 82px 1fr; gap: 0.8rem; align-items: center; padding: 0.55rem 0; border-bottom: 1px solid #d2d9d4; }
.matcha-product-dialog dt { color: #718078; font-size: 0.58rem; text-transform: uppercase; }
.matcha-product-dialog dd { margin: 0; font-size: 0.72rem; }
.matcha-product-dialog .matcha-strength { justify-self: start; }

@media (max-width: 1199px) {
  .matcha-product-grid { grid-template-columns: repeat(3,minmax(0,1fr)); }
}

/* Mahjong routes */
.mahjong-paths {
  width: min(var(--family-width), calc(100% - 3rem)); display: grid; grid-template-columns: repeat(3,minmax(0,1fr));
  margin: 0 auto; color: #f3eee2; border-right: 1px solid rgba(217,189,117,0.2); background: #081711;
}
.mahjong-paths a {
  min-width: 0; display: grid; grid-template-columns: 34px 1fr; grid-template-rows: auto auto; column-gap: 0.8rem;
  padding: 1.25rem 1.4rem; color: inherit; border-left: 1px solid rgba(217,189,117,0.2);
  transition: color 0.2s ease, background 0.2s ease, transform 0.24s var(--family-ease);
}
.mahjong-paths a:hover, .mahjong-paths a:focus-visible { color: #fff; background: #12281f; transform: translateY(-3px); }
.mahjong-paths span { grid-row: 1 / 3; align-self: center; color: #d9bd75; font-family: var(--family-serif); font-size: 1.6rem; }
.mahjong-paths strong { align-self: end; font-family: var(--family-serif); font-size: 1.25rem; }
.mahjong-paths small { color: rgba(243,238,226,0.52); font-size: 0.6rem; }

/* Automatic mahjong tables */
.mahjong-machines { padding: 4.5rem 1.5rem; color: #f3eee2; background: #0e2119; }
.mahjong-machines__head,
.mahjong-machine-grid,
.mahjong-comparison,
.mahjong-disclosure { width: min(var(--family-width),100%); margin-inline: auto; }
.mahjong-machines__head {
  display: grid; grid-template-columns: minmax(0,0.9fr) minmax(340px,0.65fr); gap: 4rem;
  align-items: end; margin-bottom: 1.8rem; padding-top: 1rem; border-top: 2px solid #d9bd75;
}
.mahjong-machines__head h2 { margin: 0; color: #fff; font-size: 3.65rem; }
.mahjong-machines__head > p { margin: 0 0 0.5rem; color: rgba(243,238,226,0.65); }
.mahjong-machine-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 1rem; }
.mahjong-machine-card {
  min-width: 0; border: 1px solid rgba(217,189,117,0.28); background: #10271e; cursor: pointer;
  transition: border-color 180ms ease, box-shadow 180ms ease, background 180ms ease;
}
.mahjong-machine-card:hover { border-color: rgba(217,189,117,0.64); background: #132d22; box-shadow: 0 22px 50px rgba(0,0,0,0.24); }
.mahjong-machine-card:focus-visible { outline: 3px solid #d9bd75; outline-offset: 3px; border-color: #d9bd75; }
.mahjong-machine-card figure { position: relative; height: 220px; margin: 0; overflow: hidden; background: #09150f; }
.mahjong-machine-card figure > img {
  position: relative; z-index: 1; width: 100%; height: 100%; object-fit: contain; object-position: center;
  filter: saturate(0.8) contrast(1.08);
}
.mahjong-machine-card figure figcaption {
  position: absolute; z-index: 2; right: 0; bottom: 0; left: 0; display: flex; justify-content: space-between; gap: 1rem;
  padding: 0.75rem 0.9rem; color: #fff; background: rgba(5,18,12,0.9); font-size: 0.6rem; text-transform: uppercase;
}
.mahjong-machine-card figure figcaption span { color: #d9bd75; font-weight: 800; }
.mahjong-machine-card__body { min-height: 400px; display: flex; flex-direction: column; padding: 1.2rem; }
.mahjong-machine-card h3 { margin: 0 0 0.45rem; color: #fff; font-size: 1.9rem; }
.mahjong-machine-card__body > p { margin: 0 0 1rem; color: rgba(243,238,226,0.66); font-size: 0.78rem; }
.mahjong-machine-card dl { margin: 0; border-top: 1px solid rgba(255,255,255,0.12); }
.mahjong-machine-card dl div { display: grid; grid-template-columns: 72px 1fr; gap: 0.6rem; padding: 0.5rem 0; border-bottom: 1px solid rgba(255,255,255,0.1); }
.mahjong-machine-card dt { color: rgba(243,238,226,0.44); font-size: 0.57rem; text-transform: uppercase; }
.mahjong-machine-card dd { margin: 0; color: rgba(243,238,226,0.82); font-size: 0.66rem; }
.mahjong-machine-card ul { margin: 0.7rem 0 0.8rem; padding: 0; list-style: none; }
.mahjong-machine-card li { padding: 0.34rem 0; color: rgba(243,238,226,0.7); border-bottom: 1px solid rgba(255,255,255,0.08); font-size: 0.66rem; }
.mahjong-machine-card__footer { display: grid; gap: 0.75rem; margin-top: auto; padding-top: 0.85rem; border-top: 1px solid rgba(217,189,117,0.35); }
.mahjong-machine-card__footer > strong { color: #d9bd75; font-family: var(--family-serif); font-size: 1.1rem; }
.mahjong-machine-card__footer del { margin-right: 0.35rem; color: rgba(243,238,226,0.4); font-size: 0.72em; }
.mahjong-machine-card__footer .family-text-link { position: relative; z-index: 2; width: max-content; color: #d9bd75; cursor: pointer; }
.mahjong-machine-card__footer .family-text-link:hover,
.mahjong-machine-card__footer .family-text-link:focus-visible { color: #fff; }
.mahjong-machine-card[data-depth-panel] > figure { transform: translateZ(12px); }
.mahjong-machine-card[data-depth-panel] > .mahjong-machine-card__body { transform: translateZ(22px); }

.mahjong-machine-dialog {
  width: min(960px, calc(100% - 2rem)); max-height: calc(100dvh - 2rem); padding: 0; overflow: visible;
  color: #f3eee2; border: 1px solid rgba(217,189,117,0.6); border-radius: 4px; background: #0d2018;
  box-shadow: 0 36px 110px rgba(0,0,0,0.62);
}
.mahjong-machine-dialog::backdrop { background: rgba(2,10,7,0.82); backdrop-filter: blur(6px); }
.mahjong-machine-dialog__close {
  position: absolute; z-index: 5; top: 0.75rem; right: 0.75rem; width: 40px; height: 40px; padding: 0;
  color: #fff; border: 1px solid rgba(217,189,117,0.62); border-radius: 3px; background: rgba(7,18,13,0.9);
  font-size: 1.5rem; line-height: 1; cursor: pointer;
}
.mahjong-machine-dialog__close:hover,
.mahjong-machine-dialog__close:focus-visible { border-color: #fff; background: #a6332f; }
.mahjong-machine-dialog__content {
  display: grid; grid-template-columns: minmax(300px,0.92fr) minmax(0,1.08fr);
  max-height: calc(100dvh - 2rem); overflow: auto;
}
.mahjong-machine-dialog__media {
  position: relative; min-height: 570px; display: grid; place-items: center; overflow: hidden; padding: 1.4rem;
  background: #08150f;
}
.mahjong-machine-dialog__media > img {
  position: relative; z-index: 1; width: auto; height: auto; max-width: 100%; max-height: 100%; object-fit: contain; object-position: center;
}
.mahjong-machine-dialog__media > span {
  position: absolute; z-index: 2; top: 1rem; left: 1rem; padding: 0.32rem 0.5rem;
  color: #0a1a13; background: #d9bd75; font-size: 0.62rem; font-weight: 800; text-transform: uppercase;
}
.mahjong-machine-dialog__body { padding: 2.1rem; }
.mahjong-machine-dialog__top {
  display: flex; justify-content: space-between; gap: 1rem; padding: 0 3rem 0.8rem 0;
  border-bottom: 1px solid rgba(217,189,117,0.26);
}
.mahjong-machine-dialog__top > span { color: #d9bd75; font-size: 0.64rem; font-weight: 800; text-transform: uppercase; }
.mahjong-machine-dialog__top > strong { max-width: 210px; display: flex; justify-content: flex-end; gap: 0.4rem; flex-wrap: wrap; color: #d9bd75; font-family: var(--family-serif); font-size: 1rem; text-align: right; }
.mahjong-machine-dialog__top del { color: rgba(243,238,226,0.45); font-size: 0.78em; }
.mahjong-machine-dialog h2 { margin: 1.35rem 0 0.75rem; color: #fff; font-size: 2.8rem; }
.mahjong-machine-dialog__body > p { margin-bottom: 1.2rem; color: rgba(243,238,226,0.7); font-size: 0.82rem; }
.mahjong-machine-dialog dl { margin: 0 0 1.25rem; border-top: 1px solid rgba(255,255,255,0.13); }
.mahjong-machine-dialog dl div { display: grid; grid-template-columns: 92px 1fr; gap: 0.8rem; padding: 0.5rem 0; border-bottom: 1px solid rgba(255,255,255,0.1); }
.mahjong-machine-dialog dt { color: rgba(243,238,226,0.48); font-size: 0.58rem; text-transform: uppercase; }
.mahjong-machine-dialog dd { margin: 0; color: rgba(243,238,226,0.84); font-size: 0.69rem; }
.mahjong-machine-dialog__features { margin: 0 0 1.35rem; }
.mahjong-machine-dialog__features h3 { margin: 0 0 0.5rem; color: #d9bd75; font-family: var(--family-sans); font-size: 0.62rem; text-transform: uppercase; }
.mahjong-machine-dialog__features ul { display: grid; gap: 0.35rem; margin: 0; padding: 0; list-style: none; }
.mahjong-machine-dialog__features li { position: relative; padding-left: 1rem; color: rgba(243,238,226,0.72); font-size: 0.69rem; }
.mahjong-machine-dialog__features li::before { content: ""; position: absolute; top: 0.7em; left: 0; width: 5px; height: 5px; background: #d9bd75; transform: rotate(45deg); }
.mahjong-machine-dialog .family-button { width: 100%; justify-content: center; }
.mahjong-disclosure { margin-top: 1rem; border: 1px solid rgba(217,189,117,0.28); background: rgba(6,19,13,0.32); }
.mahjong-disclosure summary {
  position: relative; display: grid; grid-template-columns: minmax(110px,0.35fr) minmax(220px,0.8fr) minmax(240px,1fr);
  gap: 1rem; align-items: center; min-height: 68px; padding: 0.9rem 3.5rem 0.9rem 1.1rem; cursor: pointer; list-style: none;
}
.mahjong-disclosure summary::-webkit-details-marker { display: none; }
.mahjong-disclosure summary::after {
  content: "+"; position: absolute; right: 1.2rem; color: #d9bd75; font-size: 1.65rem;
  transition: transform 0.2s ease;
}
.mahjong-disclosure[open] summary::after { transform: rotate(45deg); }
.mahjong-disclosure summary:hover, .mahjong-disclosure summary:focus-visible { background: rgba(217,189,117,0.07); }
.mahjong-disclosure summary span { color: #d9bd75; font-size: 0.6rem; font-weight: 800; text-transform: uppercase; }
.mahjong-disclosure summary strong { color: #fff; font-family: var(--family-serif); font-size: 1.3rem; }
.mahjong-disclosure summary small { color: rgba(243,238,226,0.52); font-size: 0.65rem; }
.mahjong-disclosure__content { border-top: 1px solid rgba(217,189,117,0.22); }
.mahjong-comparison__table { overflow-x: auto; }
.mahjong-comparison table { width: 100%; border-collapse: collapse; white-space: nowrap; }
.mahjong-comparison th, .mahjong-comparison td { padding: 0.85rem 1rem; border-bottom: 1px solid rgba(255,255,255,0.1); text-align: left; font-size: 0.67rem; }
.mahjong-comparison thead th { color: rgba(243,238,226,0.45); font-size: 0.57rem; text-transform: uppercase; }
.mahjong-comparison tbody th { color: #d9bd75; }
.mahjong-comparison td { color: rgba(243,238,226,0.72); }
.mahjong-machine-enquiry { display: grid; grid-template-columns: minmax(0,0.7fr) minmax(440px,1fr); gap: 3rem; padding: 2rem; color: #10251c; background: #f2efe5; }
.mahjong-machine-enquiry h2, .mahjong-machine-enquiry h3 { margin: 0 0 0.65rem; font-size: 2.5rem; }
.mahjong-machine-enquiry > div > p:last-child { color: #58665f; }
.mahjong-machine-enquiry form label { display: grid; gap: 0.4rem; margin-bottom: 0.85rem; color: #58665f; font-size: 0.68rem; font-weight: 700; }
.mahjong-machine-enquiry input, .mahjong-machine-enquiry select { width: 100%; min-height: 46px; padding: 0.7rem; color: #10251c; border: 1px solid #b7c0ba; border-radius: 0; background: #fff; }
.mahjong-machine-enquiry .family-form__privacy { color: #66746c; }
.mahjong-enquiry-trigger { margin-top: 1.5rem; }
.mahjong-enquiry-dialog { width: min(920px, calc(100% - 2rem)); max-height: calc(100dvh - 2rem); padding: 0; overflow: visible; color: #10251c; border: 1px solid rgba(217,189,117,0.65); background: #f2efe5; box-shadow: 0 36px 110px rgba(0,0,0,0.62); }
.mahjong-enquiry-dialog::backdrop { background: rgba(2,10,7,0.82); backdrop-filter: blur(6px); }
.mahjong-enquiry-dialog__content { max-height: calc(100dvh - 2rem); overflow: auto; }
.mahjong-enquiry-dialog__close { position: absolute; z-index: 5; top: 0.75rem; right: 0.75rem; width: 40px; height: 40px; padding: 0; color: #10251c; border: 1px solid #65746c; background: rgba(255,255,255,0.94); font-size: 1.5rem; line-height: 1; cursor: pointer; }
.mahjong-enquiry-dialog__close:hover, .mahjong-enquiry-dialog__close:focus-visible { color: #fff; border-color: #a6332f; background: #a6332f; }

.mahjong-culture { display: grid; grid-template-columns: minmax(0,1fr) minmax(440px,0.9fr); color: #f3eee2; background: #07130f; }
.mahjong-culture__media { position: relative; min-height: 560px; margin: 0; overflow: hidden; }
.mahjong-culture__media img { width: 100%; height: 100%; object-fit: cover; filter: saturate(0.76) contrast(1.12); }
.mahjong-culture__media figcaption { position: absolute; right: 1.5rem; bottom: 1.5rem; display: flex; align-items: end; gap: 1rem; padding: 1rem 1.2rem; color: #fff; border: 1px solid rgba(217,189,117,0.5); background: rgba(5,16,11,0.88); }
.mahjong-culture__media figcaption > span { color: #d9bd75; font-family: var(--family-serif); font-size: 4rem; line-height: 0.8; }
.mahjong-culture__media figcaption p { margin: 0; font-size: 0.62rem; text-transform: uppercase; }
.mahjong-culture__media figcaption strong { color: #d9bd75; font-family: var(--family-serif); font-size: 1.2rem; text-transform: none; }
.mahjong-culture__copy { align-self: center; padding: 3.5rem; }
.mahjong-culture__copy h2 { color: #fff; font-size: 3.65rem; }
.mahjong-culture__copy > p:not(.family-eyebrow) { color: rgba(243,238,226,0.66); }
.mahjong-culture__copy dl { margin-top: 2rem; }
.mahjong-culture__copy dl div { display: grid; grid-template-columns: 72px 1fr; gap: 0.8rem; padding: 0.9rem 0; border-top: 1px solid rgba(255,255,255,0.13); }
.mahjong-culture__copy dt { color: #d9bd75; font-size: 0.62rem; text-transform: uppercase; }
.mahjong-culture__copy dd { margin: 0; color: rgba(243,238,226,0.72); font-size: 0.76rem; }
.site-mahjong #sessions, .site-mahjong .mahjong-faq { padding-block: 5rem; }
.site-mahjong #sessions .family-section__head { margin-bottom: 2.25rem; }

.family-socials { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); margin-top: 1.5rem; border-top: 1px solid var(--family-line); border-left: 1px solid var(--family-line); }
.family-socials a { min-width: 0; display: grid; gap: 0.2rem; padding: 0.8rem; color: var(--family-ink); border-right: 1px solid var(--family-line); border-bottom: 1px solid var(--family-line); }
.family-socials span { color: var(--family-accent); font-size: 0.58rem; font-weight: 800; text-transform: uppercase; }
.family-socials strong { overflow-wrap: anywhere; font-size: 0.72rem; }

/* Matcha cafe menu */
.matcha-catalogue { overflow: visible; padding-top: 3.75rem; padding-bottom: 3.75rem; background: #f2f3ed; }
.matcha-catalogue__intro {
  width: min(var(--family-width), 100%); display: grid; grid-template-columns: minmax(0,0.9fr) minmax(360px,0.7fr);
  gap: 3.5rem; align-items: end; margin: 0 auto 2rem; padding-top: 1rem; border-top: 2px solid #11251d;
}
.matcha-catalogue__intro h2 { max-width: 640px; margin: 0; font-size: 4.25rem; }
.matcha-catalogue__intro > p { max-width: 550px; margin: 0 0 0.55rem; color: var(--family-muted); font-size: 1rem; }
.matcha-catalogue__feature {
  position: relative; width: min(var(--family-width),100%); height: 230px; margin: 0 auto; overflow: hidden;
  color: #fff; border: 1px solid #10241b; background: #0a1712; box-shadow: 0 22px 58px rgba(12,42,29,0.14);
}
.matcha-catalogue__feature img { width: 100%; height: 100%; object-fit: cover; object-position: center 57%; }
.matcha-catalogue__feature figcaption {
  position: absolute; right: 0; bottom: 0; left: 0; display: grid; grid-template-columns: minmax(120px,0.45fr) 1fr auto;
  gap: 1.4rem; align-items: center; padding: 1.2rem 1.5rem; border-top: 1px solid rgba(255,255,255,0.25); background: rgba(7,25,18,0.94);
}
.matcha-catalogue__feature figcaption span { color: #f04a40; font-size: 0.68rem; font-weight: 800; text-transform: uppercase; }
.matcha-catalogue__feature figcaption strong { font-family: var(--family-serif); font-size: 1.6rem; font-weight: 600; }
.matcha-catalogue__feature figcaption small { color: rgba(255,255,255,0.72); font-size: 0.68rem; text-transform: uppercase; }
.matcha-catalogue__browser { width: min(var(--family-width),100%); margin: 1.35rem auto 0; }
.matcha-catalogue__toolbar {
  position: sticky; z-index: 30; top: 79px; display: flex; justify-content: space-between; gap: 2rem; align-items: end;
  padding: 0.8rem 0 0.9rem; border-top: 1px solid rgba(17,37,29,0.16); border-bottom: 2px solid #11251d;
  background: rgba(242,243,237,0.96); box-shadow: 0 12px 28px rgba(12,42,29,0.06); backdrop-filter: blur(12px);
}
.matcha-catalogue__toolbar .family-eyebrow { margin-bottom: 0.7rem; }
.family-tabs {
  --tab-hover-bg: rgba(25,115,78,0.085); --tab-hover-color: var(--family-ink); --tab-hover-accent: rgba(25,115,78,0.52);
  display: inline-grid; grid-auto-flow: column; grid-auto-columns: 1fr; max-width: 100%; margin-bottom: 1.6rem; border: 1px solid var(--family-line);
}
.family-tabs button {
  min-width: 84px; padding: 0.7rem 0.9rem; border: 0; border-right: 1px solid var(--family-line);
  color: var(--family-muted); background: transparent; font-size: 0.75rem; font-weight: 600; cursor: pointer;
  transition: color 0.22s ease, background 0.22s ease, box-shadow 0.22s ease, transform 0.22s var(--family-ease);
}
.family-tabs button:last-child { border-right: 0; }
.family-tabs button.is-active { color: #fff; background: var(--family-accent); }
.family-tabs--dark { --tab-hover-bg: rgba(211,170,89,0.1); --tab-hover-color: #fff; --tab-hover-accent: rgba(211,170,89,0.72); border-color: rgba(255,255,255,0.16); }
.family-tabs--dark button { color: rgba(255,255,255,0.64); border-right-color: rgba(255,255,255,0.16); }
.family-tabs button:not(.is-active):focus-visible {
  outline: 1px solid var(--tab-hover-accent); outline-offset: -2px; color: var(--tab-hover-color);
  background: var(--tab-hover-bg); box-shadow: inset 0 -2px 0 var(--tab-hover-accent), 0 10px 24px rgba(0,0,0,0.1);
}
.matcha-catalogue__toolbar .family-tabs { margin: 0; }
.matcha-catalogue__count { flex: 0 0 auto; display: flex; align-items: baseline; gap: 0.7rem; margin: 0; }
.matcha-catalogue__count strong { color: var(--family-accent); font-family: var(--family-serif); font-size: 3.3rem; line-height: 0.8; }
.matcha-catalogue__count span { color: var(--family-muted); font-size: 0.68rem; font-weight: 700; text-transform: uppercase; }
.matcha-menu-guidance {
  display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); margin: 1rem 0 0; padding: 0;
  border-top: 1px solid #bcc6bf; border-left: 1px solid #bcc6bf; list-style: none;
}
.matcha-menu-guidance li {
  min-width: 0; display: grid; grid-template-columns: auto 1fr; gap: 0.7rem; align-items: baseline; padding: 0.72rem 0.9rem;
  border-right: 1px solid #bcc6bf; border-bottom: 1px solid #bcc6bf; background: rgba(255,255,255,0.34);
}
.matcha-menu-guidance strong { color: var(--family-accent); font-size: 0.62rem; text-transform: uppercase; }
.matcha-menu-guidance span, .matcha-menu-guidance a { min-width: 0; color: var(--family-muted); font-size: 0.68rem; }
.matcha-menu-guidance a { text-decoration: underline; text-underline-offset: 3px; }
.matcha-menu-guidance a:hover, .matcha-menu-guidance a:focus-visible { color: #0d4f36; }
.menu-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); margin-top: 1rem; border-top: 1px solid #bcc6bf; border-left: 1px solid #bcc6bf; }
.menu-card {
  min-width: 0; min-height: 170px; display: grid; grid-template-columns: 92px minmax(0,1fr); color: var(--family-ink);
  border-right: 1px solid #bcc6bf; border-bottom: 1px solid #bcc6bf; background: #fbfaf5;
  transition: border-color 0.25s ease, box-shadow 0.28s ease;
}
.menu-card:hover, .menu-card:focus-within { z-index: 2; border-color: #153d2f; box-shadow: 0 18px 42px rgba(10,35,25,0.13); }
.menu-card__media {
  position: relative; min-height: 100%; overflow: hidden; background-color: #153d2f;
  background-image: url("assets/matcha/matcha-collection.webp"); background-repeat: no-repeat; background-size: auto 190%;
  filter: saturate(0.96) contrast(1.06); isolation: isolate;
}
.menu-card__media::after { content: ""; position: absolute; inset: 0; z-index: 1; background: rgba(8,37,27,0.16); transition: background 0.25s ease; }
.menu-card__media--image { background-color: #e5ebe6; background-image: none; }
.menu-card__media--image::after { background: transparent; }
.menu-card--latte .menu-card__media::after { background: rgba(250,245,233,0.06); }
.menu-card--seasonal .menu-card__media::after { background: rgba(164,49,45,0.2); }
.menu-card:hover .menu-card__media::after, .menu-card:focus-within .menu-card__media::after { background: rgba(8,37,27,0.05); }
.menu-card__media > img {
  position: absolute; inset: 0; z-index: 1; width: 100%; height: 100%;
  object-fit: contain; object-position: center;
}
.menu-card__media > span { position: absolute; z-index: 2; left: 0.7rem; bottom: 0.55rem; color: #fff; font-family: var(--family-serif); font-size: 2.4rem; line-height: 1; text-shadow: 0 2px 20px rgba(0,0,0,0.38); }
.menu-card__media > small { position: absolute; z-index: 2; top: 0.6rem; left: 0.6rem; max-width: calc(100% - 1.2rem); padding: 0.3rem 0.38rem; overflow: hidden; color: #fff; background: #ae332f; font-size: 0.52rem; font-weight: 800; text-overflow: ellipsis; text-transform: uppercase; white-space: nowrap; }
.menu-card[data-menu-id="usucha"] .menu-card__media { background-position: 5% 78%; }
.menu-card[data-menu-id="matcha-tonic"] .menu-card__media { background-position: 38% 45%; }
.menu-card[data-menu-id="house-matcha-latte"] .menu-card__media { background-position: 61% 46%; }
.menu-card[data-menu-id="hojicha-latte"] .menu-card__media { background-position: 94% 42%; }
.menu-card[data-menu-id="strawberry-matcha"] .menu-card__media { background-position: 52% 72%; }
.menu-card[data-menu-id="frog-special"] .menu-card__media { background-position: 72% 68%; }
.menu-card__body { min-width: 0; min-height: 170px; display: flex; flex-direction: column; padding: 0.85rem 0.9rem; }
.menu-card__meta { min-height: 25px; display: flex; justify-content: space-between; gap: 0.75rem; padding-bottom: 0.5rem; border-bottom: 1px solid var(--family-line); }
.menu-card__meta > span { color: var(--family-accent); font-size: 0.6rem; font-weight: 800; text-transform: uppercase; }
.menu-card__meta > strong { max-width: 170px; color: var(--family-ink); font-size: 0.64rem; font-weight: 600; text-align: right; }
.menu-card__meta del { margin-right: 0.35rem; color: var(--family-muted); font-weight: 400; }
.menu-card h3 { margin: 0.58rem 0 0.3rem; font-size: 1.4rem; line-height: 1.08; }
.menu-card__body > p {
  display: -webkit-box; min-height: 2.45em; margin: 0 0 0.65rem; overflow: hidden; color: var(--family-muted);
  font-size: 0.75rem; line-height: 1.45; -webkit-box-orient: vertical; -webkit-line-clamp: 2;
}
.menu-card__body > a { display: flex; justify-content: space-between; gap: 1rem; margin-top: auto; padding-top: 0.55rem; color: var(--family-accent); border-top: 1px solid var(--family-line); font-size: 0.67rem; font-weight: 800; }
.menu-card__body > a:hover, .menu-card__body > a:focus-visible { color: #0d4f36; }
.menu-card[data-depth-panel] > .menu-card__media { transform: translateZ(12px); }
.menu-card[data-depth-panel] > .menu-card__body { transform: translateZ(22px); }
.offer-promotion { padding: 0.18rem 0.35rem; color: #fff; background: var(--family-accent); font-size: 0.56rem; font-style: normal; font-weight: 700; text-transform: uppercase; }
.menu-card .offer-promotion { align-self: flex-start; margin: -0.15rem 0 0.55rem; }
.menu-browser__note { max-width: 820px; margin: 1rem 0 0; color: var(--family-muted); font-size: 0.7rem; }

/* Sessions */
.session-grid { width: min(var(--family-width), 100%); margin: 0 auto; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; }
.family-section--dark > [data-filter-group] > .family-tabs { display: grid; width: fit-content; margin: 0 auto 2rem; }
.session-card { position: relative; min-height: 500px; display: flex; flex-direction: column; padding: 2rem; border: 1px solid rgba(230,214,179,0.2); background: rgba(255,255,255,0.025); }
.session-card:hover { border-color: rgba(211,170,89,0.55); }
.session-card__number { color: rgba(211,170,89,0.22); font-family: var(--family-serif); font-size: 4rem; line-height: 1; }
.session-card h3 { margin-bottom: 1rem; color: #fff; font-size: 2rem; }
.session-card > p:not(.family-eyebrow) { color: rgba(241,235,223,0.68); }
.session-card__meta { margin: 1rem 0 0; border-top: 1px solid rgba(255,255,255,0.12); }
.session-card__meta > div { display: grid; grid-template-columns: 54px 1fr; gap: 0.75rem; padding: 0.5rem 0; border-bottom: 1px solid rgba(255,255,255,0.08); }
.session-card__meta span { color: rgba(241,235,223,0.45); font-size: 0.6rem; text-transform: uppercase; }
.session-card__meta strong { color: rgba(241,235,223,0.82); font-size: 0.68rem; font-weight: 500; }
.session-card ul { margin: 1.2rem 0 2rem; padding: 1.2rem 0 0; border-top: 1px solid rgba(255,255,255,0.12); list-style: none; }
.session-card li { position: relative; padding: 0.4rem 0 0.4rem 1.15rem; color: rgba(241,235,223,0.76); font-size: 0.77rem; }
.session-card li::before { content: ""; position: absolute; left: 0; top: 0.92rem; width: 5px; height: 5px; background: var(--family-highlight); }
.session-card .family-text-link { margin-top: auto; }

/* Editorial bands */
.family-editorial { padding: 7rem 1.5rem; color: #f5f2e9; background: var(--family-dark); }
.site-matcha .family-editorial { background: #153d2f; }
.family-editorial__inner { width: min(var(--family-width), 100%); margin: 0 auto; display: grid; grid-template-columns: 1.1fr 0.9fr; gap: 3.5rem; align-items: center; }
.family-editorial__media { margin: 0; overflow: hidden; border-radius: 0; }
.family-editorial__media img { display: block; width: 100%; height: 100%; max-height: 520px; object-fit: cover; }
.family-editorial__copy h2 { font-size: 4.2rem; }
.family-editorial__copy > p:not(.family-eyebrow) { color: rgba(255,255,255,0.68); max-width: 570px; }
.family-editorial__facts { margin: 0; }
.family-editorial__facts > div { display: grid; grid-template-columns: 120px 1fr; gap: 1rem; padding: 1.2rem 0; border-top: 1px solid rgba(255,255,255,0.16); }
.family-editorial__facts dt { color: #d9bd75; font-family: var(--family-serif); font-size: 1.2rem; }
.family-editorial__facts dd { margin: 0; color: rgba(255,255,255,0.72); }
.family-quote { margin: 0; padding-left: 2rem; border-left: 2px solid var(--family-highlight); }
.family-quote p { margin-bottom: 1rem; color: #fff; font-family: var(--family-serif); font-size: 2.2rem; line-height: 1.2; }
.family-quote cite { color: rgba(255,255,255,0.55); font-size: 0.72rem; font-style: normal; }

/* Mahjong table */
.table-feature { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(420px, 0.85fr); min-height: 720px; color: #f1ebdf; background: #101d18; }
.table-feature__media { min-height: 620px; margin: 0; overflow: hidden; }
.table-feature__media img { width: 100%; height: 100%; object-fit: cover; }
.table-feature__copy { align-self: center; max-width: 580px; padding: 4rem; }
.table-feature__copy h2 { font-size: 4rem; }
.table-feature__copy > p:not(.family-eyebrow) { color: rgba(241,235,223,0.65); }
.table-feature__copy dl { margin: 2rem 0 0; }
.table-feature__copy dl div { padding: 1rem 0; border-top: 1px solid rgba(255,255,255,0.14); }
.table-feature__copy dt { color: var(--family-highlight); font-size: 0.72rem; text-transform: uppercase; }
.table-feature__copy dd { margin: 0.25rem 0 0; color: rgba(241,235,223,0.8); }

/* Process */
.family-section--process { color: var(--family-ink); background: var(--family-surface); }
.site-mahjong .family-section--process { color: #f1ebdf; background: #14241e; }
.family-process { width: min(var(--family-width), 100%); margin: 0 auto; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); list-style: none; border-top: 1px solid var(--family-line); }
.family-process li {
  --surface-rx: 0deg; --surface-ry: 0deg;
  position: relative; min-height: 260px; padding: 2rem; border-right: 1px solid var(--family-line);
  transform-style: preserve-3d;
}
.family-process--four { grid-template-columns: repeat(4, minmax(0,1fr)); }
@media (max-width: 1040px) { .family-process--four { grid-template-columns: repeat(2, minmax(0,1fr)); } }
.family-process li:last-child { border-right: 0; }
.family-process span { color: var(--family-accent); font-family: var(--family-serif); font-size: 1.4rem; }
.family-process h3 { margin: 2.4rem 0 0.8rem; font-size: 1.8rem; }
.family-process p { color: var(--family-muted); font-size: 0.82rem; }
.site-mahjong .family-process { border-color: rgba(255,255,255,0.15); }
.site-mahjong .family-process li { border-color: rgba(255,255,255,0.15); }
.site-mahjong .family-process p { color: rgba(241,235,223,0.62); }

/* FAQ */
.family-faq { width: min(900px, 100%); margin: 0 auto; border-top: 1px solid rgba(255,255,255,0.16); }
.family-faq details { border-bottom: 1px solid rgba(255,255,255,0.16); }
.family-faq summary { position: relative; padding: 1.35rem 2.4rem 1.35rem 0; cursor: pointer; list-style: none; color: #fff; font-family: var(--family-serif); font-size: 1.35rem; }
.family-faq summary::-webkit-details-marker { display: none; }
.family-faq summary::after { content: "+"; position: absolute; right: 0; top: 1.15rem; color: var(--family-highlight); font-family: var(--family-sans); }
.family-faq details[open] summary::after { content: "-"; }
.family-faq details p { max-width: 720px; padding-bottom: 1.4rem; color: rgba(241,235,223,0.63); }

/* Visit and forms */
.family-visit { display: grid; grid-template-columns: 0.9fr 1.1fr; color: var(--family-ink); background: var(--family-bg); }
.family-visit > div { min-width: 0; padding: 6rem max(1.5rem, calc((100vw - var(--family-width)) / 2)); }
.family-visit__details { border-right: 1px solid var(--family-line); }
.family-visit__details h2, .family-enquiry h2 { font-size: 3.2rem; }
.family-visit__details > p:not(.family-eyebrow) { color: var(--family-muted); max-width: 540px; }
.family-visit address { margin: 2rem 0; border-top: 1px solid var(--family-line); }
.family-visit address div { display: grid; grid-template-columns: 90px 1fr; gap: 1rem; padding: 0.9rem 0.75rem; border-bottom: 1px solid var(--family-line); }
.family-visit address span { color: var(--family-muted); font-size: 0.7rem; text-transform: uppercase; }
.family-visit address strong, .family-visit address a { font-size: 0.84rem; }
.family-visit__actions { display: flex; flex-wrap: wrap; gap: 0.65rem; }
.family-enquiry { background: var(--family-surface); }
.family-enquiry__lead { max-width: 620px; margin: 0 0 1.75rem; color: var(--family-muted); line-height: 1.75; }
.family-form__row { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.family-enquiry label { display: grid; gap: 0.45rem; margin-bottom: 1rem; color: var(--family-muted); font-size: 0.72rem; font-weight: 600; }
.family-enquiry input, .family-enquiry textarea, .family-enquiry select {
  width: 100%; min-height: 48px; padding: 0.75rem; border: 1px solid var(--family-line); border-radius: 0;
  color: var(--family-ink); background: transparent; outline: none;
}
.family-enquiry textarea { resize: vertical; }
.family-enquiry input:focus, .family-enquiry textarea:focus, .family-enquiry select:focus { border-color: var(--family-accent); box-shadow: 0 0 0 2px color-mix(in srgb, var(--family-accent) 15%, transparent); }
.family-enquiry .is-invalid, .family-enquiry [aria-invalid="true"] { border-color: #c43e35; }
.family-choice-group {
  min-width: 0; margin: 0 0 1.15rem; padding: 0; border: 0;
}
.family-choice-group legend { margin-bottom: 0.65rem; color: var(--family-ink); font-size: 0.78rem; font-weight: 700; }
.family-choice-group__options { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 0.55rem; }
.family-choice-group__options--compact { grid-template-columns: repeat(3,minmax(0,1fr)); }
.family-choice-group__options label {
  min-height: 44px; display: flex; align-items: center; gap: 0.55rem; margin: 0; padding: 0.65rem 0.75rem;
  color: var(--family-muted); border: 1px solid var(--family-line); background: rgba(255,255,255,0.025); cursor: pointer;
  transition: color 0.2s ease, border-color 0.2s ease, background 0.2s ease;
}
.family-choice-group__options label:hover,
.family-choice-group__options label:focus-within { color: var(--family-ink); border-color: var(--family-accent); background: var(--row-focus-bg, rgba(25,115,78,0.06)); }
.family-choice-group__options input {
  width: 17px; height: 17px; min-height: 0; flex: 0 0 auto; margin: 0; padding: 0; border: 0;
  background: transparent; box-shadow: none; accent-color: var(--family-accent);
}
.family-choice-group.is-invalid .family-choice-group__options { outline: 1px solid #c43e35; outline-offset: 3px; }
.family-choice-group > .family-field-error { display: block; margin-top: 0.55rem; }
.family-field-error { min-height: 1.15em; color: #b52f28; font-size: 0.68rem; font-weight: 600; }
.site-mahjong .family-field-error { color: #ffaaa3; }
.family-form__privacy { margin: 1rem 0 0; color: var(--family-muted); font-size: 0.72rem; line-height: 1.6; }
.family-form__privacy a { color: var(--family-accent); text-decoration: underline; text-underline-offset: 3px; }
.site-mahjong .family-form__privacy a { color: var(--family-highlight); }
.family-form__status { min-height: 1.4em; margin: 0.7rem 0 0; color: var(--family-accent); font-size: 0.72rem; }

/* Matcha event booking: one primary task with a compact visit card. */
.family-visit--booking {
  grid-template-columns: minmax(0,1.85fr) minmax(280px,0.85fr);
  gap: clamp(2.5rem,5vw,5rem);
  align-items: start;
  padding: clamp(5rem,8vw,7.5rem) max(1.5rem,calc((100vw - var(--family-width)) / 2));
  background: linear-gradient(135deg, #f6f7f1 0%, var(--family-bg) 62%, #eef2e9 100%);
}
.family-visit--booking > .family-visit__header {
  grid-column: 1 / -1;
  max-width: 850px;
}
.matcha-event-grid { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: .85rem; }
.matcha-event-grid button { position: relative; min-width: 0; aspect-ratio: 4 / 5; padding: 0; overflow: hidden; color: #fff; border: 0; background: var(--family-dark); text-align: left; cursor: pointer; }
.matcha-event-grid img { width: 100%; height: 100%; object-fit: cover; transition: transform .55s var(--family-ease); }
.matcha-event-grid button::after { content: ""; position: absolute; inset: 35% 0 0; background: linear-gradient(transparent,rgba(5,18,12,.92)); }
.matcha-event-grid button > span { position: absolute; z-index: 2; inset: auto 1.2rem 1.1rem; display: grid; }
.matcha-event-grid strong { font-size: 1.55rem; }
.matcha-event-grid small { color: rgba(255,255,255,.72); font-size: .72rem; line-height: 1.45; }
.matcha-event-grid button:hover img, .matcha-event-grid button:focus-visible img { transform: scale(1.06); }
.matcha-pack-sizes { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 1px; margin: 0 0 2rem; padding: 1px; list-style: none; background: var(--family-line); }
.matcha-pack-sizes li { display: grid; gap: .15rem; padding: 1.15rem; background: var(--family-surface); text-align: center; }
.matcha-pack-sizes strong { color: var(--family-accent); font-size: 1.2rem; }
.matcha-pack-sizes span { color: var(--family-muted); font-size: .7rem; }
.matcha-event-dialog { width: min(920px,calc(100% - 2rem)); max-height: calc(100dvh - 2rem); padding: 0; overflow: auto; color: var(--family-ink); border: 1px solid var(--family-line); background: var(--family-surface); box-shadow: 0 35px 100px rgba(0,0,0,.35); }
.matcha-event-dialog::backdrop { background: rgba(6,18,13,.78); backdrop-filter: blur(6px); }
.matcha-event-dialog[open] { display: grid; grid-template-columns: minmax(0,1fr) minmax(320px,.85fr); }
.matcha-event-dialog > img { width: 100%; height: 100%; min-height: 520px; object-fit: cover; }
.matcha-event-dialog > div { align-self: center; padding: clamp(2rem,5vw,4rem); }
.matcha-event-dialog h2 { font-size: clamp(2.7rem,5vw,4.5rem); }
.matcha-event-dialog__close { position: absolute; z-index: 2; top: .75rem; right: .75rem; width: 42px; height: 42px; color: var(--family-ink); border: 1px solid var(--family-line); border-radius: 50%; background: rgba(255,255,255,.9); font-size: 1.7rem; cursor: pointer; }

/* Shared company content pages */
.site-content { color: var(--family-ink); background: var(--family-paper); }
.site-content main { min-height: 70vh; }
.content-hero { min-height: 470px; display: flex; align-items: flex-end; padding: 9rem max(1.5rem,calc((100% - var(--family-width))/2)) 5rem; color: #f7f3e9; background: linear-gradient(120deg,rgba(5,17,12,.96),rgba(13,45,32,.78)), url("assets/matcha/matcha-collection.webp") center/cover; }
.content-hero > div { width: min(760px,100%); }
.content-hero h1 { margin: .35rem 0 1rem; color: #fff; font-size: clamp(3.8rem,8vw,7.5rem); line-height: .88; }
.content-hero > div > p:last-child { max-width: 670px; margin: 0; color: rgba(255,255,255,.74); font-size: 1.05rem; line-height: 1.75; }
.content-section { width: min(var(--family-width),calc(100% - 3rem)); margin: 0 auto; padding: 6rem 0; }
.content-about-grid, .content-contact-grid { display: grid; grid-template-columns: minmax(0,1.2fr) minmax(320px,.8fr); gap: clamp(2rem,7vw,7rem); align-items: start; }
.content-prose { display: grid; gap: 1.2rem; }
.content-prose p { margin: 0; color: #4c5b54; font-size: 1.03rem; line-height: 1.85; }
.content-prose strong { color: var(--family-ink); letter-spacing: .07em; }
.content-callout, .content-hours, .content-contact-card { padding: clamp(1.7rem,4vw,3rem); border: 1px solid var(--family-line); background: var(--family-surface); box-shadow: 0 22px 60px rgba(20,38,30,.08); }
.content-callout h2, .content-hours h2, .content-contact-card h2 { margin: .5rem 0 1rem; font-size: clamp(2rem,4vw,3.1rem); }
.content-callout > p:not(.family-eyebrow), .content-hours > p:not(.family-eyebrow) { color: var(--family-muted); line-height: 1.7; }
.content-callout .family-button { margin-top: 1rem; }
.content-contact-card address { display: grid; gap: 0; margin-top: 1.5rem; font-style: normal; border-top: 1px solid var(--family-line); }
.content-contact-card address div { display: grid; grid-template-columns: 90px 1fr; gap: 1rem; padding: 1rem 0; border-bottom: 1px solid var(--family-line); }
.content-contact-card address span, .content-hours dt { color: var(--family-muted); font-size: .66rem; font-weight: 700; text-transform: uppercase; }
.content-contact-card address a, .content-contact-card address strong { font-size: .84rem; }
.content-actions { display: flex; flex-wrap: wrap; gap: .7rem; margin-top: 1.5rem; }
.content-hours dl { margin: 1.5rem 0; border-top: 1px solid var(--family-line); }
.content-hours dl div { display: flex; justify-content: space-between; gap: 1rem; padding: .72rem 0; border-bottom: 1px solid var(--family-line); }
.content-hours dd { margin: 0; font-size: .82rem; font-weight: 700; }

.site-contact {
  --family-sans: "Segoe UI", system-ui, -apple-system, Helvetica, Arial, sans-serif;
  --family-serif: "Segoe UI", system-ui, -apple-system, Helvetica, Arial, sans-serif;
  background: #f4f6f3;
  font-family: var(--family-sans);
}
.shop-contact-title {
  width: min(var(--family-width), calc(100% - 3rem));
  margin: 0 auto; padding: 8.5rem 0 2.4rem;
}
.shop-contact-title h1 { margin: 0 0 0.85rem; font-size: clamp(3.2rem, 6vw, 4.6rem); }
.shop-contact-title p { max-width: 640px; margin: 0; color: var(--family-muted); font-size: 1.05rem; line-height: 1.7; }
.shop-contact-panel {
  width: min(var(--family-width), calc(100% - 3rem));
  margin: 0 auto 4.5rem;
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(320px, 0.95fr);
  gap: 2.5rem;
  align-items: stretch;
}
.shop-contact-panel__media { margin: 0; border-radius: 18px; overflow: hidden; background: #dfe5e0; }
.shop-contact-panel__media img { width: 100%; height: 100%; min-height: 520px; object-fit: cover; }
.shop-contact-panel__info > h2 { margin: 0 0 0.7rem; font-size: clamp(2rem, 4vw, 2.6rem); }
.shop-contact-panel__info > p { margin: 0 0 1.6rem; color: var(--family-muted); line-height: 1.7; }
.shop-contact-methods {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1.35rem 1.5rem;
  margin: 0 0 1.6rem;
  padding: 0;
  list-style: none;
}
.shop-contact-methods li { display: grid; grid-template-columns: 42px minmax(0,1fr); gap: 0.85rem; align-items: start; }
.shop-contact-methods__icon {
  width: 42px; height: 42px; display: grid; place-items: center;
  color: var(--family-accent); border: 1px solid rgba(25,115,78,0.22); border-radius: 50%; background: #fff;
}
.shop-contact-methods__icon svg { width: 18px; height: 18px; }
.shop-contact-methods strong { display: block; margin-bottom: 0.2rem; font-size: 0.95rem; }
.shop-contact-methods a, .shop-contact-methods span { color: var(--family-muted); font-size: 0.88rem; line-height: 1.45; word-break: break-word; }
.shop-contact-hours {
  position: relative;
  overflow: hidden;
  padding: 1.4rem 1.45rem 1.2rem;
  color: #f7f3e9;
  border-radius: 16px;
  background: var(--family-dark, #10251d);
}
.shop-contact-hours::after {
  content: "";
  position: absolute; right: -8px; bottom: -18px;
  width: 92px; height: 92px;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(255,255,255,0.08)' d='M12 2a10 10 0 1 1 0 20 10 10 0 0 1 0-20zm0 3a1 1 0 0 0-1 1v5.2l3.4 2a1 1 0 1 0 1-1.74L13 10.4V6a1 1 0 0 0-1-1z'/%3E%3C/svg%3E") center/contain no-repeat;
  pointer-events: none;
}
.shop-contact-hours h3 { margin: 0 0 1rem; color: #fff; font-size: 1.35rem; }
.shop-contact-hours dl { margin: 0; }
.shop-contact-hours dl div { display: flex; justify-content: space-between; gap: 1rem; padding: 0.42rem 0; font-size: 0.92rem; }
.shop-contact-hours dt { font-weight: 600; }
.shop-contact-hours dd { margin: 0; color: rgba(247,243,233,0.82); }
.shop-contact-hours--light {
  margin-top: 1.25rem;
  color: var(--family-ink);
  background: #fff;
  border: 1px solid var(--family-line);
  box-shadow: 0 12px 30px rgba(20,38,30,0.06);
}
.shop-contact-hours--light::after { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='rgba(16,37,29,0.08)' d='M12 2a10 10 0 1 1 0 20 10 10 0 0 1 0-20zm0 3a1 1 0 0 0-1 1v5.2l3.4 2a1 1 0 1 0 1-1.74L13 10.4V6a1 1 0 0 0-1-1z'/%3E%3C/svg%3E"); }
.shop-contact-hours--light h3 { color: var(--family-ink); }
.shop-contact-hours--light dd { color: var(--family-muted); }
.shop-contact-followup {
  width: min(var(--family-width), calc(100% - 3rem));
  margin: 0 auto 4.5rem;
  display: grid;
  grid-template-columns: minmax(0,1fr) minmax(0,1fr);
  gap: 2.2rem;
  align-items: stretch;
}
.shop-contact-form-block,
.shop-contact-map-block {
  min-width: 0;
  display: flex;
  flex-direction: column;
  height: 100%;
}
.shop-contact-followup h2 { margin: 0 0 0.45rem; font-size: clamp(1.85rem, 3vw, 2.25rem); }
.shop-contact-followup > div > p { margin: 0 0 1rem; color: var(--family-muted); font-size: 0.92rem; line-height: 1.55; }
.shop-contact-form {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  flex: 1 1 auto;
  width: 100%;
  min-width: 0;
  padding: 1.25rem 1.3rem 1.15rem;
  background: #fff;
  border: 1px solid rgba(21,36,30,0.1);
  border-radius: 16px;
  box-shadow: 0 16px 40px rgba(16,28,22,0.07);
}
.shop-contact-form label { display: grid; gap: 0.35rem; width: 100%; min-width: 0; color: var(--family-ink); font-size: 0.9rem; font-weight: 700; }
.shop-contact-form input:not([type="checkbox"]),
.shop-contact-form textarea {
  width: 100%; min-height: 44px; padding: 0.7rem 0.85rem;
  color: var(--family-ink); border: 1px solid #d5ddd8; border-radius: 10px; background: #fff; font: inherit;
}
.shop-contact-form__message-wrap { position: relative; display: block; }
.shop-contact-form textarea { min-height: 168px; resize: vertical; padding-bottom: 1.7rem; }
.shop-contact-form input:not([type="checkbox"]):focus,
.shop-contact-form textarea:focus { outline: none; border-color: var(--family-accent); box-shadow: 0 0 0 3px rgba(25,115,78,0.12); }
.shop-contact-phone { display: grid; grid-template-columns: 72px minmax(0,1fr); gap: 0.55rem; }
.shop-contact-phone > span {
  display: grid; place-items: center; min-height: 46px;
  color: var(--family-ink); border: 1px solid #d5ddd8; border-radius: 10px; background: #f7f8f6; font-weight: 600;
}
.shop-contact-form__note { margin: -0.35rem 0 0; color: var(--family-muted); font-size: 0.78rem; }
.shop-contact-form small {
  position: absolute; right: 0.75rem; bottom: 0.55rem;
  color: #c43e35; font-size: 0.75rem; font-weight: 600; pointer-events: none;
}
.shop-contact-form__privacy {
  display: flex !important;
  flex-direction: row;
  flex-wrap: nowrap;
  align-items: center;
  gap: 0.55rem;
  width: 100%;
  overflow: visible;
  font-weight: 500;
  color: var(--family-muted);
  font-size: 0.85rem;
  line-height: 1.2;
}
.shop-contact-form__privacy input[type="checkbox"] {
  flex: 0 0 16px;
  width: 16px;
  min-width: 16px;
  height: 16px;
  min-height: 16px;
  margin: 0;
  padding: 0;
  accent-color: var(--family-accent);
}
.shop-contact-form__privacy span {
  flex: 0 1 auto;
  white-space: nowrap;
}
.shop-contact-form__privacy a {
  display: inline;
  color: var(--family-accent);
  text-decoration: underline;
  text-underline-offset: 2px;
}
.shop-contact-form .family-button { width: 100%; min-height: 46px; margin-top: auto; border-radius: 10px; }
.shop-contact-form .family-form__privacy,
.shop-contact-form .family-form__status { margin: 0.15rem 0 0; font-size: 0.7rem; }
.shop-contact-map {
  position: relative;
  flex: 1 1 auto;
  min-height: 0;
  overflow: hidden;
  border-radius: 16px;
  border: 1px solid var(--family-line);
  background: #dce3de;
}
.shop-contact-map iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.shop-contact-map__meta { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 0.7rem 1rem; margin-top: 0.85rem; }
.shop-contact-map__meta a { color: var(--family-accent); font-weight: 700; }
.shop-contact-faq {
  width: min(var(--family-width), calc(100% - 3rem));
  margin: 0 auto; padding: 0 0 6rem; text-align: center;
}
.shop-contact-faq h2 { margin: 0 0 0.55rem; }
.shop-contact-faq > p { margin: 0 auto 2rem; max-width: 520px; color: var(--family-muted); }
.shop-contact-faq__grid { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 1rem; text-align: left; }
.shop-contact-faq article {
  padding: 1.45rem 1.35rem 1.4rem;
  background: #fff;
  border: 1px solid rgba(21,36,30,0.12);
  border-radius: 16px;
}
.shop-contact-faq article span {
  display: inline-grid; place-items: center; min-width: 42px; height: 28px; margin-bottom: 0.9rem; padding: 0 0.55rem;
  color: var(--family-accent-strong); background: rgba(25,115,78,0.12); border-radius: 999px; font-size: 0.72rem; font-weight: 700;
}
.shop-contact-faq h3 { margin: 0 0 0.55rem; font-size: 1.15rem; line-height: 1.3; }
.shop-contact-faq article p { margin: 0; color: var(--family-muted); font-size: 0.92rem; line-height: 1.6; }
.shop-contact-top {
  position: fixed; z-index: 40; right: 1.2rem; bottom: 1.2rem; width: 46px; height: 46px;
  border-radius: 50%; background: var(--family-accent); box-shadow: 0 10px 24px rgba(13,80,54,0.28);
}
.shop-contact-top::before {
  content: ""; position: absolute; inset: 0; margin: auto; width: 10px; height: 10px;
  border-left: 2px solid #fff; border-top: 2px solid #fff; transform: rotate(45deg) translateY(3px);
}

.activity-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 1.25rem; }
.activity-card { overflow: hidden; border: 1px solid var(--family-line); background: var(--family-surface); box-shadow: 0 18px 55px rgba(20,38,30,.07); }
.activity-card > img, .activity-card__placeholder { width: 100%; aspect-ratio: 3 / 2; object-fit: cover; }
.activity-card__placeholder { display: grid; place-items: center; color: #d9bd75; background: #0b2118; }
.activity-card__placeholder span { font-family: var(--family-serif); font-size: 5rem; }
.activity-card__body { display: grid; gap: .8rem; padding: 1.5rem; }
.activity-card__body h2 { margin: 0; font-size: 2rem; }
.activity-card__body > p:not(.family-eyebrow) { margin: 0; color: var(--family-muted); line-height: 1.65; }
.activity-empty { max-width: 720px; margin: 0 auto; padding: 4rem 2rem; text-align: center; border: 1px solid var(--family-line); background: var(--family-surface); }
.activity-empty h2 { margin: .6rem 0 1rem; font-size: clamp(2.1rem,5vw,3.8rem); }
.activity-empty > p:last-child { color: var(--family-muted); }
.family-visit--booking .family-visit__header h2 {
  max-width: 760px;
  margin-bottom: 1rem;
  font-size: clamp(3.4rem,5vw,5rem);
}
.family-visit--booking .family-visit__header .family-enquiry__lead {
  max-width: 720px;
  margin-bottom: 0;
  font-size: 1rem;
}
.family-visit--booking > .family-enquiry {
  grid-column: 1;
  min-width: 0;
  padding: clamp(2rem,4vw,3.5rem);
  border: 1px solid var(--family-line);
  background: var(--family-surface);
  box-shadow: 0 24px 70px rgba(28,45,36,0.09);
}
.family-form-section + .family-form-section {
  margin-top: 2rem;
  padding-top: 2rem;
  border-top: 1px solid var(--family-line);
}
.family-form-section h3 {
  margin: 0 0 1.25rem;
  color: var(--family-ink);
  font-family: var(--family-sans);
  font-size: 0.76rem;
  font-weight: 800;
  letter-spacing: 0.11em;
  text-transform: uppercase;
}
.family-visit--booking .family-form-section > label:last-child { margin-bottom: 0; }
.family-visit--booking .family-choice-group:first-of-type { margin-top: 0.5rem; }
.family-visit--booking form > .family-button { min-width: 220px; margin-top: 2rem; }
.family-visit--booking > .family-visit__details {
  grid-column: 2;
  position: sticky;
  top: 104px;
  min-width: 0;
  padding: clamp(1.75rem,3vw,2.5rem);
  border: 1px solid var(--family-line);
  background: rgba(255,255,255,0.56);
  box-shadow: 0 18px 54px rgba(28,45,36,0.07);
}
.family-visit--booking .family-visit__details h3 {
  margin-bottom: 0.85rem;
  font-size: clamp(2rem,3vw,2.75rem);
}
.family-visit--booking .family-visit__details > p:not(.family-eyebrow) {
  color: var(--family-muted);
  font-size: 0.88rem;
  line-height: 1.7;
}
.family-visit--booking address {
  display: grid;
  gap: 1.05rem;
  margin: 2rem 0;
  border: 0;
}
.family-visit--booking address div {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0.28rem;
  padding: 0;
  border: 0;
}
.family-visit--booking address strong,
.family-visit--booking address a { font-size: 0.8rem; line-height: 1.55; }
.family-visit--booking .family-visit__actions {
  display: grid;
  gap: 1rem;
}
.family-visit--booking .family-visit__actions .family-button { width: 100%; }
.family-visit__directions {
  display: inline-flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 0.3rem 0;
  color: var(--family-accent);
  border-bottom: 1px solid color-mix(in srgb,var(--family-accent) 28%,transparent);
  font-size: 0.76rem;
  font-weight: 750;
}
.family-visit__directions:hover,
.family-visit__directions:focus-visible { color: var(--family-ink); border-color: var(--family-ink); }

.family-visit--mahjong { color: #f1ebdf; background: #0b1713; }
.family-visit--mahjong .family-visit__details { border-color: rgba(255,255,255,0.15); }
.family-visit--mahjong .family-visit__details > p:not(.family-eyebrow), .family-visit--mahjong address span { color: rgba(241,235,223,0.6); }
.family-visit--mahjong address, .family-visit--mahjong address div { border-color: rgba(255,255,255,0.14); }
.family-visit--mahjong .family-enquiry { background: #13231d; }
.family-visit--mahjong .family-enquiry label { color: rgba(241,235,223,0.62); }
.family-visit--mahjong .family-enquiry input, .family-visit--mahjong .family-enquiry textarea, .family-visit--mahjong .family-enquiry select { color: #f1ebdf; border-color: rgba(255,255,255,0.18); background: #13231d; }
.family-visit--mahjong .family-enquiry select option { color: #111; background: #fff; }
.family-visit--contact-only { grid-template-columns: 1fr; }
.family-visit--contact-only .family-visit__details {
  display: grid;
  grid-template-columns: minmax(0,0.75fr) minmax(360px,1.25fr);
  column-gap: clamp(3rem,8vw,8rem);
  align-items: start;
  border-right: 0;
}
.family-visit--contact-only .family-visit__details > .family-eyebrow,
.family-visit--contact-only .family-visit__details > h2,
.family-visit--contact-only .family-visit__details > p:not(.family-eyebrow) { grid-column: 1; }
.family-visit--contact-only .family-visit__details > address {
  grid-column: 2;
  grid-row: 1 / span 3;
  width: 100%;
  margin: 0;
}
.family-visit--contact-only .family-visit__details > .family-visit__actions {
  grid-column: 2;
  grid-row: 4;
  margin-top: 1rem;
}

.mobile-conversion-bar { display: none; }

/* Footer */
.family-footer {
  min-height: 0; display: grid;
  grid-template-columns: minmax(220px,0.85fr) minmax(300px,1.15fr) minmax(220px,0.8fr);
  grid-template-areas: "brand primary contact" "disclosure disclosure disclosure" "legal legal copyright";
  gap: 1.5rem 2.5rem; align-items: start;
  padding: 3.25rem max(1.5rem, calc((100vw - var(--family-width)) / 2)) 1.6rem;
  color: rgba(255,255,255,0.65); border-top: 1px solid rgba(211,170,89,0.22);
  background: linear-gradient(180deg, var(--family-dark-2), #07100d);
}
.family-footer > div:first-child { grid-area: brand; display: flex; align-items: center; gap: 0.9rem; }
.family-footer > div img { width: 172px; height: auto; max-width: 100%; padding: 0; border-radius: 0; background: transparent; object-fit: contain; }
.family-footer > div p { display: flex; flex-direction: column; margin: 0; }
.family-footer > div strong { color: #fff; font-family: var(--family-serif); font-size: 1.08rem; }
.family-footer > div span { margin-top: 0.12rem; color: rgba(255,255,255,0.5); font-size: 0.66rem; }
.family-footer > nav[aria-label="Footer navigation"] { grid-area: primary; }
.family-footer > nav[aria-label="Legal and policy links"] { grid-area: legal; }
.family-footer > p[data-legal-disclosure] {
  grid-area: disclosure; max-width: none; margin: 0; padding-top: 1.25rem;
  border-top: 1px solid rgba(255,255,255,0.1); color: rgba(255,255,255,0.5);
  font-size: 0.68rem; line-height: 1.55;
}
.family-footer > p:has([data-legal-contact-email]) {
  grid-area: contact; display: flex; flex-wrap: wrap; gap: 0.35rem 0.55rem; margin: 0;
  color: rgba(255,255,255,0.5); font-size: 0.7rem; line-height: 1.55;
}
.family-footer > p:has([data-legal-contact-email]) a { color: rgba(255,255,255,0.78); overflow-wrap: anywhere; }
.family-footer > p:last-child { grid-area: copyright; justify-self: end; margin: 0; color: rgba(255,255,255,0.42); font-size: 0.65rem; text-align: right; }
.family-footer nav { display: flex; flex-wrap: wrap; justify-content: flex-start; gap: 0.55rem 1.15rem; font-size: 0.7rem; }
.family-footer nav[aria-label="Footer navigation"] { align-content: start; padding-top: 0.35rem; }
.family-footer nav[aria-label="Legal and policy links"] { gap: 0.45rem 1rem; color: rgba(255,255,255,0.52); font-size: 0.64rem; }
.family-footer nav a, .family-footer nav button { transition: color 0.2s ease; }
.family-footer nav a:hover, .family-footer nav a:focus-visible,
.family-footer nav button:hover, .family-footer nav button:focus-visible,
.family-footer > p:has([data-legal-contact-email]) a:hover,
.family-footer > p:has([data-legal-contact-email]) a:focus-visible { color: #d9bd75; }

/* Privacy and customer information */
.site-policy { background: #edf1eb; }
.policy-nav {
  min-height: 76px; display: flex; align-items: center; justify-content: space-between; gap: 2rem;
  padding: 0 max(1.25rem, calc((100vw - 1040px) / 2)); color: #f8f5ec; background: #0b1713;
  border-bottom: 1px solid rgba(217,189,117,0.28);
}
.policy-nav__brand { display: flex; align-items: center; gap: 0.8rem; font-family: var(--family-serif); font-size: 1.15rem; }
.policy-nav__brand img { width: 132px; height: auto; max-height: 48px; object-fit: contain; }
.policy-nav nav { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 1rem; color: rgba(255,255,255,0.74); font-size: 0.78rem; font-weight: 600; }
.policy-nav .locale-switcher { margin-left: 0; }
.policy-nav a:hover, .policy-nav a:focus-visible { color: #fff; }
.policy-main { min-height: 70vh; }
.policy-hero {
  padding: 6rem 1.5rem 5rem; color: #f3eee2;
  background: linear-gradient(120deg, #0b1713 0%, #13281f 68%, #25170d 100%);
}
.policy-hero__inner, .policy-content { width: min(900px, 100%); margin: 0 auto; }
.policy-hero .family-eyebrow { color: #d9bd75; }
.policy-hero h1 { max-width: 780px; margin-bottom: 1rem; color: #fff; font-size: 4.5rem; }
.policy-hero p:last-child { max-width: 700px; margin-bottom: 0; color: rgba(255,255,255,0.72); font-size: 1.05rem; }
.policy-content { padding: 4.5rem 1.5rem 6rem; }
.policy-content section { padding: 2rem 0; border-bottom: 1px solid rgba(20,52,39,0.15); }
.policy-content section:first-child { padding-top: 0; }
.policy-content section:last-child { border-bottom: 0; }
.policy-content h2 { margin-bottom: 0.8rem; color: #183329; font-size: 2.2rem; }
.policy-content h3 { margin: 1.5rem 0 0.45rem; color: #183329; font-size: 1.35rem; }
.policy-content p, .policy-content li { color: #4f6258; }
.policy-content ul { margin: 0.8rem 0 0; padding-left: 1.25rem; }
.policy-content a { color: #126644; text-decoration: underline; text-underline-offset: 3px; }
.policy-updated { display: inline-block; margin-top: 1rem; color: #d9bd75; font-size: 0.74rem; font-weight: 600; }

.family-reveal { opacity: 1; transform: none; }
.family-js .family-reveal { opacity: 0; transform: translateY(28px); transition: opacity 0.7s var(--family-ease), transform 0.7s var(--family-ease); }
.family-js .family-reveal.is-visible { opacity: 1; transform: none; }

/* Shared 2.5D depth */
[data-depth-panel] {
  --depth-rx: 0deg; --depth-ry: 0deg; --depth-lift: 0px; --depth-reveal: 0px;
  transform: perspective(1400px) translate3d(0, calc(var(--depth-reveal) + var(--depth-lift)), 0) rotateX(var(--depth-rx)) rotateY(var(--depth-ry));
  transform-style: preserve-3d; transition: transform 0.28s var(--family-ease), box-shadow 0.28s ease, border-color 0.28s ease;
  will-change: transform;
}
.family-js [data-depth-panel].family-reveal {
  --depth-reveal: 28px;
  transform: perspective(1400px) translate3d(0, calc(var(--depth-reveal) + var(--depth-lift)), 0) rotateX(var(--depth-rx)) rotateY(var(--depth-ry));
  transition: opacity 0.7s var(--family-ease), transform 0.7s var(--family-ease), box-shadow 0.28s ease;
}
.family-js [data-depth-panel].family-reveal.is-visible {
  --depth-reveal: 0px;
  transform: perspective(1400px) translate3d(0, calc(var(--depth-reveal) + var(--depth-lift)), 0) rotateX(var(--depth-rx)) rotateY(var(--depth-ry));
}
.matcha-catalogue__feature[data-depth-panel] > img { transform: translateZ(10px) scale(1.015); }
.matcha-catalogue__feature[data-depth-panel] > figcaption { transform: translateZ(24px); }
.mahjong-product[data-depth-panel] > .mahjong-product__media { transform: translateZ(16px); }
.mahjong-product[data-depth-panel] > .mahjong-product__copy { transform: translateZ(26px); }
.session-card[data-depth-panel] > * { transform: translateZ(20px); }
.table-feature__media[data-depth-panel] img { transform: translateZ(18px) scale(1.025); transition: transform 0.35s var(--family-ease); }
.family-process { perspective: 1200px; }
.family-process li, .family-proof > div { transition: transform 0.28s var(--family-ease), background 0.28s ease, box-shadow 0.28s ease; }
.family-js .family-process li.family-reveal.is-visible {
  transition: opacity 0.7s var(--family-ease), transform 0.28s var(--family-ease), background 0.28s ease, box-shadow 0.28s ease;
}
.family-process li > span,
.family-process li > h3,
.family-process li > p,
.family-proof > div > * {
  position: relative; transform: translateZ(0); transition: transform 0.28s var(--family-ease);
}
.family-proof > div { --surface-rx: 0deg; --surface-ry: 0deg; transform-style: preserve-3d; }

/* Shared focus treatment for scannable information rows. */
.menu-row,
.matcha-product-card dl div,
.mahjong-machine-card dl div,
.mahjong-culture__copy dl div,
.mahjong-product__details > div,
.table-feature__copy dl div,
.family-editorial__facts > div,
.family-visit address div,
.family-faq details {
  --row-focus-bg: rgba(25,115,78,0.065);
  --row-focus-accent: var(--family-accent);
  --surface-rx: 0deg; --surface-ry: 0deg;
  padding-inline-start: 0.75rem;
  position: relative; transform-style: preserve-3d;
  transition: transform 0.28s var(--family-ease), background 0.28s ease, box-shadow 0.28s ease;
}
.mahjong-product__details > div,
.mahjong-machine-card dl div,
.mahjong-culture__copy dl div,
.table-feature__copy dl div,
.family-editorial__facts > div,
.site-mahjong .family-visit address div,
.family-faq details {
  --row-focus-bg: rgba(211,170,89,0.065);
  --row-focus-accent: #d9bd75;
}
.menu-row > *,
.matcha-product-card dl div > *,
.mahjong-machine-card dl div > *,
.mahjong-culture__copy dl div > *,
.mahjong-product__details > div > *,
.table-feature__copy dl div > *,
.family-editorial__facts > div > *,
.family-visit address div > *,
.family-faq details > * {
  position: relative; transform: translateZ(0); transition: transform 0.28s var(--family-ease);
}

@media (hover: hover) and (pointer: fine) {
  .family-tabs button:not(.is-active):hover {
    color: var(--tab-hover-color); background: var(--tab-hover-bg);
    box-shadow: inset 0 -2px 0 var(--tab-hover-accent), 0 10px 24px rgba(0,0,0,0.1);
    transform: translate3d(0,-2px,8px);
  }
  [data-depth-panel]:hover { --depth-lift: -6px; }
  .matcha-catalogue__feature[data-depth-panel]:hover { box-shadow: 0 38px 95px rgba(12,42,29,0.22); }
  .session-card[data-depth-panel]:hover { box-shadow: 0 24px 55px rgba(0,0,0,0.3); }
  .mahjong-set-card[data-depth-panel]:hover { box-shadow: 0 28px 64px rgba(0,0,0,0.34); }
  .family-process li:hover,
  .family-js .family-process li.family-reveal.is-visible:hover {
    z-index: 1;
    transform: perspective(1100px) translate3d(0,-10px,24px) rotateX(var(--surface-rx)) rotateY(var(--surface-ry));
    background: color-mix(in srgb, var(--family-surface) 92%, var(--family-accent));
    box-shadow: 0 28px 62px rgba(0,0,0,0.15);
  }
  .site-mahjong .family-process li:hover { background: #1a2d25; box-shadow: 0 24px 55px rgba(0,0,0,0.28); }
  .family-process li:hover > span { transform: translateZ(30px); }
  .family-process li:hover > h3 { transform: translateZ(22px); }
  .family-process li:hover > p { transform: translateZ(14px); }
  .menu-row:hover,
  .matcha-product-card dl div:hover,
  .mahjong-machine-card dl div:hover,
  .mahjong-culture__copy dl div:hover,
  .mahjong-product__details > div:hover,
  .table-feature__copy dl div:hover,
  .family-editorial__facts > div:hover,
  .family-visit address div:hover,
  .family-faq details:hover,
  .family-visit address div:focus-within,
  .family-faq details:focus-within {
    transform: perspective(900px) translate3d(7px,-2px,14px) rotateX(var(--surface-rx)) rotateY(var(--surface-ry));
    background: var(--row-focus-bg);
    box-shadow: inset 3px 0 0 var(--row-focus-accent), 0 16px 34px rgba(0,0,0,0.12);
  }
  .menu-row:hover > *,
  .matcha-product-card dl div:hover > *,
  .mahjong-machine-card dl div:hover > *,
  .mahjong-culture__copy dl div:hover > *,
  .mahjong-product__details > div:hover > *,
  .table-feature__copy dl div:hover > *,
  .family-editorial__facts > div:hover > *,
  .family-visit address div:hover > *,
  .family-faq details:hover > *,
  .family-visit address div:focus-within > *,
  .family-faq details:focus-within > * { transform: translateZ(14px); }
  .family-proof > div:hover {
    transform: perspective(900px) translate3d(0,-5px,12px) rotateX(var(--surface-rx)) rotateY(var(--surface-ry));
    background: rgba(255,255,255,0.045); box-shadow: 0 18px 38px rgba(0,0,0,0.16);
  }
  .family-proof > div:hover > * { transform: translateZ(16px); }
}

@media (max-width: 1040px) {
  .family-nav__inner { width: calc(100% - 2rem); gap: 1.2rem; }
  .family-nav__links { gap: 1.2rem; }
  .family-nav__cta { display: none; }
  .matcha-shop__intro, .mahjong-machines__head { grid-template-columns: 1fr 1fr; gap: 2.5rem; }
  .menu-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .mahjong-machine-enquiry { grid-template-columns: 1fr 1fr; gap: 2rem; }
  .mahjong-culture { grid-template-columns: 1fr; }
  .mahjong-culture__media { min-height: 520px; }
  .mahjong-culture__copy { padding: 4rem 2rem; }
  .matcha-catalogue__intro { grid-template-columns: 1fr 1fr; gap: 3rem; }
  .matcha-catalogue__intro h2 { font-size: 4rem; }
  .matcha-catalogue__feature { height: 300px; }
  .session-grid {
    grid-template-columns: none; grid-auto-flow: column; grid-auto-columns: minmax(300px,42vw);
    overflow-x: auto; padding-bottom: 0.75rem; scroll-snap-type: x proximity; scrollbar-color: #d9bd75 #081711;
  }
  .session-card { min-height: 430px; scroll-snap-align: start; }
  .mahjong-shop__head { gap: 2.5rem; }
  .mahjong-product { grid-template-columns: minmax(0, 1fr) minmax(380px, 0.9fr); }
  .mahjong-product__media { min-height: 560px; }
  .mahjong-product__copy { padding: 2rem; }
  .mahjong-set-list { grid-template-columns: 1fr; }
  .table-feature { grid-template-columns: 1fr; }
  .table-feature__media { min-height: 520px; }
  .table-feature__copy { max-width: none; padding: 4rem 2rem; }
  .family-editorial__inner { gap: 3rem; }
  .family-visit > div { padding: 5rem 2rem; }
}

@media (max-width: 900px) {
  .matcha-product-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .mahjong-paths { width: calc(100% - 2rem); }
  .mahjong-paths a { grid-template-columns: 28px 1fr; padding: 1rem; }
  .mahjong-machine-grid {
    grid-template-columns: none; grid-auto-flow: column; grid-auto-columns: minmax(280px,42vw);
    overflow-x: auto; padding-bottom: 0.75rem; scroll-snap-type: x proximity; scrollbar-color: #d9bd75 #081711;
  }
  .mahjong-machine-card { scroll-snap-align: start; }
  .mahjong-disclosure summary { grid-template-columns: minmax(100px,0.4fr) 1fr; }
  .mahjong-disclosure summary small { display: none; }
  .mahjong-product { grid-template-columns: 1fr; }
  .mahjong-product__media { aspect-ratio: 3 / 2; min-height: 0; }
  .mahjong-product__media img { object-fit: contain; object-position: center; }
  .family-visit--booking {
    grid-template-columns: 1fr;
    gap: 2rem;
    padding: 4.5rem 1.5rem;
  }
  .family-visit--booking > .family-visit__header,
  .family-visit--booking > .family-enquiry,
  .family-visit--booking > .family-visit__details { grid-column: 1; }
  .family-visit--booking > .family-enquiry { padding: 2rem; }
  .family-visit--booking > .family-visit__details { position: static; padding: 2rem; }
  .matcha-event-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
}

@media (max-width: 760px) {
  html { scroll-padding-top: 72px; }
  .mahjong-paths { width: 100%; grid-template-columns: 1fr; border-right: 0; }
  .mahjong-paths a { grid-template-columns: 38px 1fr; min-height: 72px; border-bottom: 1px solid rgba(217,189,117,0.2); }
  .matcha-shop, .mahjong-machines { padding: 3.5rem 1rem; }
  .matcha-shop__intro, .mahjong-machines__head { grid-template-columns: 1fr; gap: 0.8rem; margin-bottom: 1.6rem; }
  .matcha-shop__intro h2, .mahjong-machines__head h2 { font-size: 3rem; }
  .matcha-shop__toolbar { align-items: stretch; flex-direction: column; }
  .matcha-shop__toolbar .family-tabs { width: 100%; overflow-x: auto; }
  .matcha-product-grid { grid-template-columns: 1fr; }
  .mahjong-machine-grid { grid-auto-columns: minmax(280px,86vw); }
  .session-grid { grid-auto-columns: minmax(280px,86vw); }
  .matcha-product-card { display: grid; grid-template-columns: minmax(125px,0.38fr) minmax(0,0.62fr); }
  .matcha-product-card__media { height: 100%; min-height: 245px; }
  .matcha-product-card--with-image { grid-template-columns: 1fr; }
  .matcha-product-card--with-image .matcha-product-card__media--image { height: 210px; min-height: 0; }
  .matcha-product-card__body { min-height: 245px; padding: 0.9rem; }
  .matcha-product-card h3 { font-size: 1.55rem; }
  .matcha-product-card__actions { grid-template-columns: 1fr; }
  .matcha-product-card__actions .family-text-link { justify-content: space-between; }
  .matcha-product-dialog { max-height: calc(100dvh - 1rem); }
  .matcha-product-dialog__content { grid-template-columns: 1fr; max-height: calc(100dvh - 1rem); }
  .matcha-product-dialog__media { min-height: 190px; max-height: 230px; background-size: 115% auto; }
  .matcha-product-dialog__body { padding: 1.35rem; }
  .matcha-product-dialog h2 { padding-right: 2.5rem; font-size: 2.2rem; }
  .mahjong-machine-dialog { width: calc(100% - 1rem); max-height: calc(100dvh - 1rem); }
  .mahjong-machine-dialog__content { grid-template-columns: 1fr; max-height: calc(100dvh - 1rem); }
  .mahjong-machine-dialog__media { min-height: 220px; max-height: 260px; padding: 1rem; }
  .mahjong-machine-dialog__body { padding: 1.35rem; }
  .mahjong-machine-dialog h2 { padding-right: 2.5rem; font-size: 2.25rem; }
  .mahjong-machine-dialog dl div { grid-template-columns: 82px 1fr; }
  .mahjong-machine-card__body { min-height: 0; }
  .mahjong-machine-enquiry { grid-template-columns: 1fr; gap: 1.3rem; padding: 1.25rem; }
  .mahjong-machine-enquiry .family-form__row { grid-template-columns: 1fr; gap: 0; }
  .mahjong-disclosure summary { grid-template-columns: 1fr; gap: 0.15rem; padding: 0.85rem 3rem 0.85rem 1rem; }
  .mahjong-disclosure summary strong { font-size: 1.08rem; }
  .mahjong-culture__media { min-height: 400px; }
  .mahjong-culture__copy { padding: 3.5rem 1rem; }
  .mahjong-culture__copy h2 { font-size: 3rem; }
  .family-socials { grid-template-columns: 1fr; }
  body { padding-bottom: 64px; }
  .mobile-conversion-bar {
    position: fixed; z-index: 900; left: 0; right: 0; bottom: 0; height: 64px;
    display: grid; grid-template-columns: 1fr 1fr; padding: 8px max(8px, env(safe-area-inset-right)) max(8px, env(safe-area-inset-bottom)) max(8px, env(safe-area-inset-left));
    background: rgba(7,19,15,0.97); border-top: 1px solid rgba(217,189,117,0.34); box-shadow: 0 -10px 34px rgba(0,0,0,0.28); backdrop-filter: blur(12px);
  }
  .mobile-conversion-bar a { display: grid; place-items: center; min-width: 0; color: #f4eee2; border: 1px solid rgba(217,189,117,0.36); font-size: 0.74rem; font-weight: 700; text-align: center; }
  .mobile-conversion-bar a + a { color: #fff; background: var(--family-accent); border-color: var(--family-accent); }
  .family-nav { height: 72px; }
  .family-switcher { display: none; }
  .family-mobile-brand { display: block; flex: 0 0 auto; width: 96px; }
  .family-mobile-brand img { display: block; width: 92px; height: auto; max-height: 36px; object-fit: contain; }
  .family-brand__logo { width: 96px; height: 38px; }
  .family-brand__logo img { width: 92px; max-height: 36px; }
  .family-brand__text small { max-width: 155px; font-size: 0.56rem; }
  .site-content .family-nav__inner { gap: 0.75rem; }
  .site-content .family-brand { gap: 0.55rem; }
  .site-content .family-brand__logo { width: 84px; }
  .site-content .family-brand__logo img { width: 80px; }
  .site-content .family-brand__text small { display: none; }
  .family-brand__chevron { display: none; }
  .family-switcher__menu { width: min(320px, calc(100vw - 2rem)); }
  .family-burger { display: block; margin-left: auto; }
  .family-nav__links {
    position: fixed; top: 72px; right: 0; width: min(330px, 88vw); height: calc(100dvh - 72px);
    display: flex; flex-direction: column; align-items: stretch; justify-content: flex-start; gap: 1.35rem; padding: 2rem;
    overflow-y: auto;
    background: rgba(7,19,15,0.98); transform: translateX(100%); transition: transform 0.3s var(--family-ease);
  }
  .family-nav__mobile-portfolio {
    display: grid; grid-template-columns: 1fr 1fr; gap: 0.35rem 1rem;
    margin-bottom: 0.35rem; padding-bottom: 1.25rem; border-bottom: 1px solid rgba(217,189,117,0.3);
  }
  .family-nav__mobile-portfolio span { grid-column: 1 / -1; margin-bottom: 0.45rem; color: #d9bd75; font-size: 0.68rem; font-weight: 700; text-transform: uppercase; }
  .family-nav__mobile-portfolio a { padding: 0.35rem 0; font-size: 0.86rem; }
  .family-nav__mobile-portfolio a::after { display: none; }
  .family-nav__portfolio { display: none; }
  .family-nav__inner > .locale-switcher { margin-left: auto; }
  .family-nav__inner > .locale-switcher + .family-nav__cta + .family-burger { margin-left: 0; }
  .family-nav.is-open .family-nav__links { transform: none; }
  .family-nav__links a { font-size: 1rem; }
  .family-hero { min-height: 720px; align-items: flex-end; }
  .family-hero__image { object-position: 64% center; }
  .site-mahjong .family-hero__image { object-position: 62% center; }
  .family-hero__scrim, .site-mahjong .family-hero__scrim { background: linear-gradient(180deg, rgba(4,12,9,0.08) 20%, rgba(4,12,9,0.93) 78%); }
  .family-hero__content { width: calc(100% - 2rem); margin: 0 auto 5rem; }
  .family-hero h1 { font-size: 3.5rem; }
  .family-hero__lead { font-size: 1rem; }
  .family-hero__note { display: none; }
  .family-proof { grid-template-columns: 1fr; }
  .family-proof > div { min-height: 78px; padding: 1rem 1.5rem; border-right: 0; border-bottom: 1px solid rgba(255,255,255,0.12); }
  .family-proof > div:last-child { border-bottom: 0; }
  .family-section { padding: 5rem 1rem; }
  .family-site h2, .family-editorial__copy h2, .table-feature__copy h2 { font-size: 2.7rem; }
  .family-section__head { margin-bottom: 2.5rem; }
  .family-cursor-light { display: none; }
  .mahjong-shop { padding: 3.25rem 1rem; }
  .mahjong-shop__head { grid-template-columns: 1fr; gap: 0.65rem; margin-bottom: 1.5rem; }
  .mahjong-shop__head h2 { font-size: 2.7rem; }
  .mahjong-shop__head > p { margin: 0; }
  .mahjong-product__media { min-height: 0; }
  .mahjong-product__copy { padding: 1.6rem 1.25rem; }
  .mahjong-product__copy h3 { font-size: 2.4rem; }
  .mahjong-product__details > div { grid-template-columns: 86px 1fr; }
  .mahjong-product__form .family-form__row { grid-template-columns: minmax(0,1.25fr) minmax(0,0.75fr); gap: 0.65rem; }
  .matcha-catalogue { padding-top: 3.75rem; padding-bottom: 3.75rem; }
  .matcha-catalogue__intro { grid-template-columns: 1fr; gap: 0.85rem; margin-bottom: 1.5rem; }
  .matcha-catalogue__intro h2 { font-size: 3rem; }
  .matcha-catalogue__feature { height: 260px; }
  .matcha-catalogue__feature figcaption { grid-template-columns: 1fr; gap: 0.25rem; padding: 1rem; }
  .matcha-catalogue__feature figcaption strong { font-size: 1.35rem; }
  .matcha-catalogue__feature figcaption small { display: none; }
  .matcha-catalogue__browser { margin-top: 1.5rem; }
  .matcha-catalogue__toolbar { top: 71px; display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 0.75rem; align-items: end; padding: 0.65rem 0 0.75rem; }
  .matcha-catalogue__toolbar .family-eyebrow { display: none; }
  .matcha-catalogue__count { align-self: end; gap: 0.35rem; padding-bottom: 0.45rem; }
  .matcha-catalogue__count strong { font-size: 2.4rem; }
  .matcha-catalogue__count span { max-width: 54px; line-height: 1.15; }
  .family-tabs { width: 100%; grid-auto-flow: row; grid-template-columns: 1fr 1fr; }
  .family-tabs button { min-width: 0; border-bottom: 1px solid var(--family-line); }
  .family-tabs button:nth-child(2) { border-right: 0; }
  .matcha-menu-guidance { grid-template-columns: 1fr; }
  .matcha-menu-guidance li { grid-template-columns: 94px 1fr; padding: 0.58rem 0.7rem; }
  .menu-grid { grid-template-columns: 1fr; }
  .menu-card { min-height: 166px; grid-template-columns: 92px minmax(0,1fr); }
  .menu-card__media { height: 100%; min-height: 166px; background-size: auto 190%; }
  .menu-card__media > span { font-size: 2rem; }
  .menu-card__body { min-height: 166px; padding: 0.8rem 0.9rem; }
  .menu-card h3 { margin-top: 0.55rem; font-size: 1.42rem; }
  .menu-card__meta { min-height: 22px; gap: 0.55rem; padding-bottom: 0.4rem; }
  .menu-card__meta > strong { max-width: 145px; }
  .menu-card__body > p { min-height: 0; margin-bottom: 0.45rem; font-size: 0.7rem; -webkit-line-clamp: 2; }
  .menu-card__body > a { padding-top: 0.45rem; font-size: 0.64rem; }
  .session-card { padding: 1.5rem; }
  .table-feature__media { min-height: 360px; }
  .table-feature__copy { padding: 4rem 1rem; }
  .family-editorial { padding: 5rem 1rem; }
  .family-editorial__inner { grid-template-columns: 1fr; }
  .family-editorial__facts > div { grid-template-columns: 90px 1fr; }
  .family-quote p { font-size: 1.8rem; }
  .family-process, .family-process--four { grid-template-columns: 1fr; }
  .family-process li { min-height: 0; border-right: 0; border-bottom: 1px solid var(--family-line); }
  .family-process li:last-child { border-bottom: 0; }
  .family-process h3 { margin-top: 1.5rem; }
  .family-visit { grid-template-columns: 1fr; }
  .family-visit > div { padding: 4rem 1rem; }
  .family-visit__details { border-right: 0; border-bottom: 1px solid var(--family-line); }
  .family-visit--contact-only .family-visit__details { display: block; border-bottom: 0; }
  .family-visit--contact-only .family-visit__details > address { margin: 2rem 0; }
  .family-visit--contact-only .family-visit__details > .family-visit__actions { margin-top: 0; }
  .family-form__row { grid-template-columns: 1fr; gap: 0; }
  .family-choice-group__options { grid-template-columns: 1fr 1fr; }
  .family-footer {
    grid-template-columns: 1fr;
    grid-template-areas: "brand" "primary" "contact" "disclosure" "legal" "copyright";
    gap: 1.2rem; justify-items: start; padding-top: 2.5rem;
  }
  .family-footer nav { justify-content: flex-start; }
  .family-footer > p:last-child { justify-self: start; text-align: left; }
  .policy-nav { align-items: flex-start; flex-direction: column; padding-top: 1rem; padding-bottom: 1rem; }
  .policy-nav nav { justify-content: flex-start; }
  .policy-hero { padding: 4.5rem 1rem 3.5rem; }
  .policy-hero h1 { font-size: 3rem; }
  .policy-content { padding: 3rem 1rem 4rem; }
}

html[lang="zh-CN"] .family-site {
  font-family: "Microsoft YaHei", "PingFang SC", "Noto Sans CJK SC", sans-serif;
}
html[lang="zh-CN"] .family-site h1,
html[lang="zh-CN"] .family-site h2,
html[lang="zh-CN"] .family-site h3,
html[lang="zh-CN"] .family-brand__text strong,
html[lang="zh-CN"] .policy-nav__brand {
  font-family: "Songti SC", "STSong", "Noto Serif CJK SC", serif;
  letter-spacing: 0;
  line-height: 1.16;
}
html[lang="zh-CN"] .family-eyebrow,
html[lang="zh-CN"] .family-brand__text small { letter-spacing: 0; }
html[lang="zh-CN"] .family-hero h1 { font-size: 4.7rem; }

.family-footer button[data-analytics-settings],
.family-footer button[data-cookie-settings],
.policy-inline-button,
.footer button[data-cookie-settings],
.footer button[data-analytics-settings] {
  width: fit-content; padding: 0; color: inherit; border: 0; border-bottom: 1px solid currentColor;
  background: transparent; font: inherit; cursor: pointer;
}
.analytics-consent, .cookie-consent {
  position: fixed; z-index: 11050; left: 50%; bottom: 1rem; width: min(520px, calc(100% - 1.5rem));
  transform: translateX(-50%);
  display: grid !important; grid-template-columns: minmax(0,1fr) auto; gap: 0.65rem 0.85rem; align-items: center;
  padding: 0.7rem 0.85rem; color: #f4efe5; border: 1px solid rgba(211,170,89,0.4);
  border-radius: 10px; background: rgba(9,23,17,0.96); box-shadow: 0 10px 28px rgba(0,0,0,0.28);
  font-family: var(--family-sans); opacity: 1; visibility: visible; pointer-events: auto;
}
.analytics-consent strong, .cookie-consent strong {
  display: block; margin-bottom: 0.1rem; color: #f4efe5; font-size: 0.82rem; line-height: 1.2;
}
.analytics-consent p, .cookie-consent p { margin: 0; color: #b9c3bd; font-size: 0.72rem; line-height: 1.4; }
.analytics-consent p a, .cookie-consent p a { color: #d3aa59; text-decoration: underline; text-underline-offset: 2px; }
.cookie-consent__copy { min-width: 0; }
.analytics-consent__actions, .cookie-consent__actions {
  display: flex; flex-wrap: nowrap; gap: 0.4rem; justify-content: flex-end; align-items: center;
}
.analytics-consent button, .cookie-consent button {
  min-height: 32px; min-width: 0; padding: 0.35rem 0.65rem; color: #f4efe5; border: 1px solid rgba(244,239,229,0.26);
  border-radius: 6px; background: transparent; font-size: 0.72rem; font-weight: 600; white-space: nowrap; cursor: pointer;
}
.analytics-consent button[data-cookie-action="accept"],
.analytics-consent button[data-cookie-action="reject"],
.cookie-consent button[data-cookie-action="accept"],
.cookie-consent button[data-cookie-action="reject"] {
  color: #f4efe5; border-color: rgba(244,239,229,0.45); background: transparent;
}
.analytics-consent button[data-cookie-action="accept"],
.cookie-consent button[data-cookie-action="accept"] {
  color: #0c1b15; border-color: #d3aa59; background: #d3aa59;
}
.cookie-consent__panel { grid-column: 1 / -1; }
.cookie-consent:has(.cookie-consent__panel) {
  width: min(420px, calc(100% - 1.5rem));
  grid-template-columns: 1fr;
}
.cookie-consent__options {
  display: grid; grid-template-columns: 1fr 1fr; gap: 0.35rem 0.75rem; margin: 0.45rem 0 0.35rem; border: 0; padding: 0;
}
.cookie-consent__options label { display: flex; gap: 0.4rem; align-items: center; color: #d7ddd8; font-size: 0.72rem; line-height: 1.3; }
.cookie-consent__note { margin-top: 0.2rem !important; }
.map-consent-placeholder {
  display: grid; gap: 0.75rem; align-content: center; min-height: 280px; padding: 1.25rem;
  color: #f4efe5; border: 1px solid rgba(211,170,89,0.35); background: rgba(9,23,17,0.92);
}
.map-consent-placeholder p { margin: 0; color: #b9c3bd; font-size: 0.9rem; line-height: 1.55; }
.map-consent-placeholder[hidden] { display: none !important; }
.footer__legal-disclosure { margin-top: 0.85rem; max-width: 36rem; color: rgba(244,239,229,0.72); font-size: 0.72rem; line-height: 1.5; }
.family-footer [data-legal-disclosure] { max-width: 48rem; font-size: 0.78rem; line-height: 1.55; opacity: 0.88; }
.storefront-announcement {
  position: fixed; z-index: 1200; top: 94px; right: 1.25rem; width: min(380px, calc(100% - 2.5rem));
  display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 0.85rem 1rem;
  color: #f4efe5; border: 1px solid rgba(211,170,89,0.45); background: rgba(9,23,17,0.95);
  box-shadow: 0 12px 38px rgba(0,0,0,0.26); font-family: var(--family-sans); font-size: 0.82rem;
}
.storefront-announcement button { padding: 0; color: #d3aa59; border: 0; background: transparent; font-size: 1.3rem; cursor: pointer; }

.promotion-banner {
  position: relative; z-index: 950; margin-top: 80px;
  color: #fff; border-block: 1px solid rgba(230,197,124,0.5);
  background: #146343; box-shadow: 0 12px 34px rgba(0,0,0,0.22);
}
.site-mahjong .promotion-banner { background: #a72f27; }
.promotion-banner__inner {
  width: min(var(--family-width), calc(100% - 3rem)); min-height: 54px; margin: 0 auto;
  display: grid; grid-template-columns: auto minmax(0,1fr) auto auto; align-items: center; gap: 1rem;
}
.promotion-banner__eyebrow { color: #f1d28b; font-size: 0.66rem; font-weight: 800; text-transform: uppercase; }
.promotion-banner strong { min-width: 0; overflow-wrap: anywhere; font-family: var(--family-serif); font-size: 1.12rem; font-weight: 600; }
.promotion-banner__offer { color: rgba(255,255,255,0.8); font-size: 0.78rem; font-weight: 600; }
.promotion-banner__link {
  min-height: 34px; display: inline-flex; align-items: center; padding: 0.4rem 0.75rem;
  color: #102018; border: 1px solid #e2c272; background: #e2c272; font-size: 0.72rem; font-weight: 800;
}
.promotion-banner__link:hover, .promotion-banner__link:focus-visible { background: #f7e5b8; }
body.has-promotion-banner .family-hero { min-height: clamp(610px, calc(84svh - 54px), 766px); }
/* Mixed-aspect catalogue photos keep their full composition while a restrained,
   softened copy fills the fixed card frame behind them. */
.catalogue-image-frame {
  --catalogue-backdrop-opacity: 0.5;
  position: relative; isolation: isolate;
}
.catalogue-image-frame::before {
  content: ""; display: block; position: absolute; inset: -24px; z-index: 0; pointer-events: none;
  background: var(--catalogue-image) center / cover no-repeat;
  filter: blur(18px) saturate(0.72) brightness(0.88);
  opacity: var(--catalogue-backdrop-opacity); transform: scale(1.08);
}
.site-matcha .catalogue-image-frame { --catalogue-backdrop-opacity: 0.46; }
.site-matcha .catalogue-image-frame::before { filter: blur(18px) saturate(0.68) brightness(1.03); }
.site-mahjong .catalogue-image-frame { --catalogue-backdrop-opacity: 0.62; }
.site-mahjong .catalogue-image-frame::before { filter: blur(18px) saturate(0.7) brightness(0.68); }

[id^="product-"] { scroll-margin-top: 160px; }

@media (max-width: 760px) {
  html[lang="zh-CN"] .family-hero h1 { font-size: 3.1rem; }
  .analytics-consent, .cookie-consent {
    left: 0.75rem; right: 0.75rem; bottom: 4.6rem; width: auto; transform: none;
    grid-template-columns: 1fr; gap: 0.55rem; padding: 0.65rem 0.75rem;
  }
  .analytics-consent__actions, .cookie-consent__actions {
    display: grid; grid-template-columns: 1fr 1fr 1fr; width: 100%;
  }
  .analytics-consent button, .cookie-consent button { width: 100%; min-width: 0; padding: 0.4rem 0.35rem; }
  .cookie-consent__options { grid-template-columns: 1fr 1fr; }
  .storefront-announcement { top: 78px; right: 0.75rem; width: calc(100% - 1.5rem); }
  .promotion-banner { margin-top: 72px; }
  .promotion-banner__inner { width: calc(100% - 1.5rem); min-height: 62px; grid-template-columns: minmax(0,1fr) auto; gap: 0.2rem 0.75rem; padding-block: 0.55rem; }
  .promotion-banner__eyebrow, .promotion-banner__offer { grid-column: 1; }
  .promotion-banner strong { grid-column: 1; font-size: 1rem; }
  .promotion-banner__link { grid-column: 2; grid-row: 1 / 4; }
}

@media (max-width: 430px) {
  .matcha-product-card { grid-template-columns: 110px minmax(0,1fr); }
  .matcha-product-card--with-image { grid-template-columns: 1fr; }
  .matcha-product-card__media { min-height: 250px; }
  .matcha-product-card__body { min-height: 250px; padding: 0.7rem; }
  .matcha-product-card__top { display: grid; gap: 0.2rem; }
  .matcha-product-card__top strong { max-width: none; text-align: left; }
  .matcha-product-card h3 { min-height: 2.1em; margin-top: 0.55rem; font-size: 1.3rem; }
  .matcha-product-card__body > p { margin-bottom: 0.45rem; font-size: 0.64rem; }
  .matcha-product-card dl div { grid-template-columns: 58px 1fr; gap: 0.35rem; padding: 0.35rem 0; }
  .matcha-product-card__actions { grid-template-columns: 1fr auto; gap: 0.4rem; padding-top: 0.45rem; }
  .matcha-product-card__actions > button { min-height: 31px; padding: 0.3rem 0.4rem; font-size: 0.6rem; }
  .family-brand__text strong { font-size: 1rem; }
  .family-brand__text small { max-width: 128px; }
  .family-hero h1 { font-size: 3rem; }
  .family-hero__actions { align-items: stretch; flex-direction: column; }
  .family-hero__actions .family-button { width: 100%; }
  .mahjong-product__media { min-height: 0; }
  .mahjong-product__copy h3 { font-size: 2.25rem; }
  .mahjong-product__price { align-items: baseline; flex-direction: row; }
  .mahjong-product__actions { align-items: stretch; }
  .mahjong-product__actions .family-button { width: 100%; }
  .mahjong-set-card { grid-template-columns: 1fr; }
  .mahjong-set-card__media { aspect-ratio: 16 / 9; min-height: 0; }
  .mahjong-set-card__footer { align-items: start; flex-direction: column; }
  .family-visit address div { grid-template-columns: 1fr; gap: 0.25rem; }
  .family-visit--booking { padding: 3.75rem 1rem; }
  .family-visit--booking .family-visit__header h2 { font-size: 2.8rem; }
  .family-visit--booking > .family-enquiry,
  .family-visit--booking > .family-visit__details { padding: 1.35rem; }
  .family-visit--booking .family-choice-group__options,
  .family-visit--booking .family-choice-group__options--compact { grid-template-columns: 1fr; }
  .family-visit--booking form > .family-button { width: 100%; min-width: 0; }
  .matcha-pack-sizes { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .matcha-event-dialog[open] { grid-template-columns: 1fr; }
  .matcha-event-dialog > img { min-height: 0; aspect-ratio: 16 / 10; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { transition-duration: 0.01ms !important; animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; }
  .family-js .family-reveal { opacity: 1; transform: none; }
  .family-cursor-light { display: none; }
  .family-hero__video { display: none; }
  .family-hero--video .family-hero__image { visibility: visible; }
  .menu-row:hover,
  .matcha-product-card dl div:hover,
  .mahjong-machine-card dl div:hover,
  .mahjong-culture__copy dl div:hover,
  .mahjong-product__details > div:hover,
  .table-feature__copy dl div:hover,
  .family-editorial__facts > div:hover,
  .family-visit address div:hover,
  .family-faq details:hover { transform: none; }
  .family-process li:hover,
  .family-proof > div:hover { transform: none; }
  .family-process li:hover > *,
  .family-proof > div:hover > *,
  .menu-row:hover > *,
  .matcha-product-card dl div:hover > *,
  .mahjong-machine-card dl div:hover > *,
  .mahjong-culture__copy dl div:hover > *,
  .mahjong-product__details > div:hover > *,
  .table-feature__copy dl div:hover > *,
  .family-editorial__facts > div:hover > *,
  .family-visit address div:hover > *,
  .family-faq details:hover > * { transform: none; }
}

/* Shared corporate footer */
.corporate-footer {
  padding: 0 max(1.5rem, calc((100vw - 1200px) / 2));
  color: rgba(255,255,255,0.66);
  border-top: 1px solid rgba(217,189,117,0.24);
  background: #07100d;
  font-family: var(--family-sans);
}
.corporate-footer a { color: inherit; text-decoration: none; }
.corporate-footer__main {
  display: grid;
  grid-template-columns: minmax(260px,1.45fr) repeat(3,minmax(150px,0.7fr));
  gap: clamp(2rem,4vw,4.5rem);
  padding: 4.25rem 0 3.25rem;
}
.corporate-footer__brand img { width: 190px; height: auto; max-height: 68px; object-fit: contain; object-position: left center; }
.corporate-footer__brand > p { max-width: 340px; margin: 1.25rem 0 0; color: rgba(255,255,255,0.53); font-size: 0.76rem; line-height: 1.7; }
.corporate-footer__group { display: flex; flex-direction: column; align-items: flex-start; gap: 0.72rem; }
.corporate-footer__group > p { margin: 0 0 0.35rem; color: #fff; font-size: 0.68rem; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; }
.corporate-footer__group a { font-size: 0.72rem; line-height: 1.45; transition: color 0.2s ease; }
.corporate-footer__group a:hover,
.corporate-footer__group a:focus-visible,
.corporate-footer__bottom a:hover,
.corporate-footer__bottom a:focus-visible,
.corporate-footer__bottom button:hover,
.corporate-footer__bottom button:focus-visible { color: #d9bd75; }
.corporate-footer__contact address { margin-top: 0.2rem; color: rgba(255,255,255,0.46); font-size: 0.7rem; font-style: normal; line-height: 1.65; }
.corporate-footer__contact .corporate-footer__whatsapp { color: #d9bd75; font-weight: 700; }
.corporate-footer__follow-label { margin-top: .85rem !important; color: #fff !important; font-size: .64rem !important; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; }
.corporate-footer__socials {
  display: flex; flex-wrap: wrap; align-items: center; gap: 0.55rem; margin: 0.15rem 0 0.35rem;
}
.corporate-footer__socials a {
  width: 38px; height: 38px; display: grid; place-items: center; font-size: 0;
  color: #f4efe5; border: 1px solid rgba(217,189,117,0.38); border-radius: 50%;
  transition: color 0.2s ease, border-color 0.2s ease, background 0.2s ease;
}
.corporate-footer__socials a:hover,
.corporate-footer__socials a:focus-visible { color: #07100d; background: #d9bd75; border-color: #d9bd75; }
.corporate-footer__socials svg { width: 16px; height: 16px; }
.corporate-footer__social--xhs { width: auto !important; min-width: 38px; padding: 0 0.45rem; border-radius: 999px !important; }
.corporate-footer__social--xhs span { font-size: 0.58rem; font-weight: 700; letter-spacing: 0; line-height: 1; }

.google-reviews {
  padding: 5.5rem 0 6.5rem;
  background:
    radial-gradient(circle at 50% 0%, rgba(66,133,244,0.08), transparent 42%),
    linear-gradient(180deg, rgba(255,255,255,0.55), rgba(255,255,255,0.2));
}
.google-reviews__inner {
  width: min(1080px, calc(100% - 3rem));
  margin: 0 auto;
  text-align: center;
}
.google-reviews__head { display: flex; flex-direction: column; align-items: center; margin-bottom: 2.4rem; }
.google-reviews__head h2 { margin: 0.15rem 0 0.35rem; }
.google-reviews__badge {
  width: 46px; height: 46px; display: grid; place-items: center; margin-bottom: 0.85rem;
  background: #fff; border: 1px solid rgba(21,36,30,0.12); border-radius: 50%;
  box-shadow: 0 10px 24px rgba(20,38,30,0.08);
}
.google-reviews__badge svg { width: 24px; height: 24px; }
.google-reviews__score { margin: 0; color: #5f6368; font-size: 0.95rem; letter-spacing: 0.04em; }
.google-reviews__score span { color: #fbbc04; letter-spacing: 0.08em; }
.google-reviews__stage {
  position: relative;
  display: grid;
  grid-template-columns: 44px minmax(0,1fr) 44px;
  align-items: center;
  gap: 0.6rem;
}
.google-reviews__viewport {
  position: relative;
  min-height: 280px;
  overflow: visible;
}
.google-reviews__slide {
  position: absolute; left: 50%; top: 50%; width: min(560px, 92%);
  display: grid; place-items: center;
  opacity: 0; pointer-events: none;
  transform: translate(-50%, -50%) scale(0.92);
  transition: opacity 0.55s ease, transform 0.55s ease;
}
.google-reviews__slide.is-prev { opacity: 0.32; transform: translate(calc(-50% - 46%), -50%) scale(0.84); }
.google-reviews__slide.is-next { opacity: 0.32; transform: translate(calc(-50% + 46%), -50%) scale(0.84); }
.google-reviews__slide.is-active {
  position: relative; left: auto; top: auto; width: min(560px, 100%); margin: 0 auto;
  opacity: 1; pointer-events: auto; transform: none; z-index: 2;
}
.google-reviews__card {
  width: min(560px, 100%);
  padding: 1.55rem 1.65rem 1.45rem;
  text-align: left;
  background: #fff;
  border: 1px solid rgba(21,36,30,0.16);
  border-radius: 18px;
  box-shadow: 0 18px 40px rgba(16, 28, 22, 0.1);
}
.google-reviews__person { display: grid; grid-template-columns: 42px minmax(0,1fr) 22px; gap: 0.75rem; align-items: center; margin-bottom: 0.85rem; }
.google-reviews__person strong { display: block; color: var(--family-ink); font-size: 0.98rem; }
.google-reviews__person span { color: #5f6368; font-size: 0.78rem; }
.google-reviews__avatar {
  width: 42px; height: 42px; display: grid; place-items: center;
  color: #fff; background: #4285f4; border-radius: 50%; font-size: 1rem; font-weight: 700;
}
.google-reviews__g { width: 22px; height: 22px; }
.google-reviews__stars { margin: 0 0 0.7rem; color: #fbbc04; font-size: 1.05rem; letter-spacing: 0.08em; }
.google-reviews__quote { margin: 0; color: #202124; font-size: 1.02rem; line-height: 1.55; }
.google-reviews__nav {
  width: 44px; height: 44px; position: relative; z-index: 3;
  border: 1px solid rgba(21,36,30,0.16); border-radius: 50%; background: #fff; cursor: pointer;
  box-shadow: 0 8px 18px rgba(16,28,22,0.08);
}
.google-reviews__nav::before {
  content: ""; position: absolute; inset: 0; margin: auto; width: 8px; height: 8px;
  border-left: 2px solid #202124; border-bottom: 2px solid #202124; transform: rotate(45deg) translate(2px, -1px);
}
.google-reviews__nav--next::before { transform: rotate(-135deg) translate(2px, -1px); }
.google-reviews__dots { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.45rem; margin-top: 1.35rem; }
.google-reviews__dots button {
  width: 8px; height: 8px; padding: 0; border: 0; border-radius: 50%; background: rgba(21,36,30,0.18); cursor: pointer;
}
.google-reviews__dots button.is-active { background: #4285f4; transform: scale(1.25); }
.google-reviews__actions { display: flex; justify-content: center; margin-top: 1.7rem; }
.google-reviews__cta {
  color: #1a73e8; font-size: 0.95rem; font-weight: 600;
}
.google-reviews__cta:hover { text-decoration: underline; }
.corporate-footer__disclosure { margin: 0; padding: 1.2rem 0; border-top: 1px solid rgba(255,255,255,0.09); border-bottom: 1px solid rgba(255,255,255,0.09); color: rgba(255,255,255,0.42); font-size: 0.62rem; line-height: 1.65; }
.corporate-footer__bottom { min-height: 70px; display: flex; align-items: center; justify-content: space-between; gap: 2rem; }
.corporate-footer__bottom nav { display: flex; flex-wrap: wrap; gap: 0.55rem 1.15rem; }
.corporate-footer__bottom a,
.corporate-footer__bottom button,
.corporate-footer__bottom > p { margin: 0; color: rgba(255,255,255,0.46); font: inherit; font-size: 0.62rem; }
.corporate-footer__bottom button { padding: 0; border: 0; background: transparent; cursor: pointer; }
@media (max-width: 900px) {
  .corporate-footer__main { grid-template-columns: repeat(3,minmax(0,1fr)); }
  .corporate-footer__brand { grid-column: 1 / -1; }
}
@media (max-width: 620px) {
  .corporate-footer__main { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 2.25rem 1.5rem; padding: 3.25rem 0 2.5rem; }
  .corporate-footer__brand { grid-column: 1 / -1; }
  .corporate-footer__contact { grid-column: 1 / -1; }
  .corporate-footer__bottom { align-items: flex-start; flex-direction: column; padding: 1.25rem 0; }
}

@media (max-width: 1040px) {
  .activity-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
}

@media (max-width: 760px) {
  .family-switcher__menu { max-height: calc(100vh - 90px); overflow-y: auto; }
  .family-switcher__flyout {
    position: static; left: auto; min-width: 0; margin: 0 0.55rem 0.35rem 0.85rem;
    padding: 0.7rem 0.35rem 0.45rem;
    border: 0; border-left: 2px solid rgba(217,189,117,0.38); box-shadow: none;
  }
  .family-switcher__item:not(.is-open) .family-switcher__flyout { display: none; }
  .content-hero { min-height: 400px; padding-top: 8rem; padding-bottom: 3.5rem; }
  .content-section { width: min(100% - 2rem,var(--family-width)); padding: 4rem 0; }
  .shop-contact-title, .shop-contact-panel, .shop-contact-followup, .shop-contact-faq { width: min(100% - 2rem, var(--family-width)); }
  .shop-contact-title { padding-top: 7.5rem; }
  .shop-contact-panel, .shop-contact-followup, .shop-contact-faq__grid, .shop-contact-methods { grid-template-columns: 1fr; }
  .shop-contact-panel__media img { min-height: 280px; }
  .shop-contact-form { padding: 1.15rem; }
  .shop-contact-map { min-height: 280px; }
  .google-reviews { padding: 3.5rem 0 4.5rem; }
  .google-reviews__inner { width: min(100% - 2rem, 1080px); }
  .google-reviews__stage { grid-template-columns: 1fr; }
  .google-reviews__nav { display: none; }
  .google-reviews__slide.is-prev,
  .google-reviews__slide.is-next { display: none; }
  .google-reviews__card { padding: 1.25rem 1.15rem; }
  .google-reviews__quote { font-size: 0.98rem; }
  .content-about-grid, .content-contact-grid, .activity-grid { grid-template-columns: 1fr; }
  .content-contact-card address div { grid-template-columns: 72px 1fr; }
  .mahjong-enquiry-dialog { width: calc(100% - 1rem); max-height: calc(100dvh - 1rem); }
  .mahjong-enquiry-dialog__content { max-height: calc(100dvh - 1rem); }
}
