/* CHEERY — black lacquer, cherry red and warm metallic gold. */
:root {
  color-scheme: dark;
  --paper: #0b0707;
  --paper-light: #140d0e;
  --ink: #f7ead0;
  --muted: #c5b6a3;
  --wine: #b70a20;
  --wine-dark: #72000f;
  --cherry: #d91831;
  --blush: #5e1720;
  --line: #6e5331;
  --gaia-gold: #d5a64e;
  --gaia-gold-text: #efc977;
  --gaia-gold-light: #2a1812;
  --gaia-sage: #171011;
  --gaia-green-soft: #201214;
}

html { background: #080404; }
body {
  background:
    radial-gradient(circle at 82% 2%, #4a0b142e 0, transparent 27%),
    radial-gradient(circle at 8% 34%, #b70a2012 0, transparent 24%),
    var(--paper);
  color: var(--ink);
}
::selection { background: var(--cherry); color: #fff7e8; }
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible,
textarea:focus-visible, summary:focus-visible { outline-color: var(--gaia-gold); }

.site-header { background: #090505ed; border-bottom-color: #8f692f8c; backdrop-filter: blur(16px); }
.brand, .menu-dialog__top { color: var(--gaia-gold-text); }
.brand-type--wordmark strong {
  color: var(--gaia-gold-text);
  font-family: var(--sans);
  font-size: 24px;
  font-weight: 600;
  line-height: 1.15;
  letter-spacing: .2em;
}
.brand-type--wordmark > span { margin-top: 5px; color: #e7d5b4; font-size: 16px; font-weight: 600; letter-spacing: .31em; }
.brand-mark {
  width: 52px;
  height: 52px;
  flex: 0 0 52px;
  object-fit: contain;
  filter: drop-shadow(0 3px 8px #0009) drop-shadow(0 0 8px #b88a3c33);
}
.desktop-nav a { color: #eadcc4; }
.desktop-nav a::after { background: linear-gradient(90deg, var(--cherry), var(--gaia-gold)); }
.header-contact { color: var(--gaia-gold-text); border-bottom-color: #9a733d; }
.menu-toggle, .menu-close { color: var(--gaia-gold-text); }
.menu-dialog { background: #0d0809; color: var(--ink); }
.menu-dialog::backdrop { background: #020101d9; }
.menu-dialog nav a { border-bottom-color: #7c5d357a; }
.menu-dialog .nav-dropdown { border-left-color: var(--gaia-gold); }
.menu-dialog__foot { color: var(--muted); }
.menu-dialog__foot a { color: var(--gaia-gold-text); }
.preview-banner { background: #2a060b; color: #f0cd91; border-bottom: 1px solid #855f32; }

.eyebrow { color: var(--gaia-gold-text); }
.home-hero { position: relative; isolation: isolate; }
.home-hero::before {
  content: "";
  position: absolute;
  z-index: -1;
  width: 410px;
  height: 410px;
  border: 1px solid #d5a64e29;
  border-radius: 50%;
  left: -210px;
  top: 2%;
  box-shadow: 0 0 90px #9d001517;
}
.hero-copy h1 { color: #fff1d6; font-weight: 600; letter-spacing: -.015em; }
.hero-copy h1 .serif-accent { color: var(--cherry); text-shadow: 0 0 28px #b70a203d; }
.hero-description { color: #d0c0ad; }
.hero-footnote { color: #a99883; }
.hero-footnote__line { background: var(--gaia-gold); }
.hero-scene { padding-right: 24px; }
.hero-scene::before {
  content: "ADULT HOSPITALITY · TAIPEI";
  position: absolute;
  right: -42px;
  top: 74px;
  z-index: 3;
  writing-mode: vertical-rl;
  color: var(--gaia-gold-text);
  font: 16px/1.5 var(--sans);
  letter-spacing: .24em;
}
.hero-scene__image {
  background: #17090c;
  border: 1px solid #d5a64e8c;
  border-radius: 220px 220px 4px 4px;
  box-shadow: 21px 22px 0 #4b0811, 0 22px 70px #000b;
}
.hero-scene__image::after { background: linear-gradient(transparent 38%, #090203ed); }
.hero-scene__image img { object-position: 52% 50%; filter: saturate(.98) contrast(1.08) brightness(.9); }
.hero-scene__label { color: #fff0d2; }
.hero-stamp { background: linear-gradient(145deg, #c9142d, #71000f); color: #fff1d0; box-shadow: 0 12px 35px #0008; outline-color: #efc9778a; }
.hero-scene__caption { color: #aa9984; }
.statement-strip { background: linear-gradient(90deg, #240408, #5e0712 48%, #240408); color: #f6dfb4; border-block: 1px solid #c895427d; }
.statement-strip i { color: var(--gaia-gold-text); }

.button { background: linear-gradient(135deg, #c10d26, #78000f); border-color: #d5a64ea8; color: #fff0d2; box-shadow: 0 8px 22px #0004; }
.button:hover { background: linear-gradient(135deg, #dc1732, #8b0012); }
.button--light { background: #f0c977; border-color: #f0c977; color: #1a0808; }
.button--light:hover { background: #ffe2a4; }
.text-link:hover, .breadcrumbs a:hover, .journal-card h3 a:hover, .venue-card h3 a:hover { color: var(--gaia-gold-text); }

.section-heading > p, .venue-card > p, .journal-card__body > p:last-child,
.page-lead, .article-meta, .archive-summary { color: var(--muted); }
.mood-grid { border-color: #76582f; box-shadow: 0 28px 70px #0004; }
.mood-card { background: #140d0e; }
.mood-card:nth-child(2) { background: #240b0f; }
.mood-card:nth-child(3) { background: #180e0f; }
.mood-card + .mood-card { border-color: #76582f; }
.mood-card:hover { background: #330d14; }
.mood-card__number { color: var(--gaia-gold-text); }
.mood-card p { color: var(--muted); }
.mood-card__link { color: var(--gaia-gold-text); }
.mood-card__photo::after { background: linear-gradient(135deg, #9e00192e, transparent 52%, #d5a64e24); }
.mood-card__photo img { filter: saturate(.78) contrast(1.08) brightness(.78); }
.scene-disclaimer { color: #9e8e7a; }

.venue-card__visual { background: #24080d; }
.venue-card__visual--2 { background: #5e0712; }
.venue-card__visual--3 { background: #180d0e; }
.venue-card__arch, .venue-card__arch::after { border-color: #d5a64e85; }
.venue-card__monogram { color: #f0c977b8; }
.venue-card__meta, .venue-heading__emblem { color: var(--gaia-gold-text); }
.venue-card__meta span + span::before { color: #bd8e48; }
.venue-tags > span, .venue-filters > a { border-color: #76582f; color: #d7c5ab; }
.venue-filters > a:hover, .venue-filters > a[aria-current=page] { background: var(--wine); border-color: var(--gaia-gold); color: #fff5e4; }
.circle-link { border-color: #80613a; }

.approach-section { background: linear-gradient(135deg, #0b0707, #2e070d); color: #fff0d4; border-block: 1px solid #76582f; }
.approach-intro > p:not(.eyebrow), .approach-list p { color: #cdbca8; }
.approach-intro > .eyebrow, .approach-list li > span, .text-link--light, .closing-note .eyebrow { color: var(--gaia-gold-text); }
.approach-list li { border-bottom-color: #d5a64e38; }
.journal-list, .journal-card, .page-heading, .page-toc, .article-endnote, .article-navigation { border-color: #6e5331; }
.journal-card__index { color: #bd934f; }

.closing-note { background: linear-gradient(115deg, #66000e, #250408 72%); color: #fff0d4; border-block: 1px solid #d5a64e78; }
.site-footer { background: #080505; border-top: 1px solid #76582f; }
.footer-brand > a, .footer-contact > a:first-of-type { color: var(--gaia-gold-text); }
.footer-brand > p, .footer-contact > p, .footer-bottom { color: #ae9d88; }
.footer-brand > .footer-brand__identity { display: inline-flex; align-items: center; gap: 16px; }
.brand-mark--footer { width: 64px; height: 64px; flex-basis: 64px; }
.footer-brand__type { display: flex; flex-direction: column; }
.footer-brand__type > b { font: 500 25px/1.45 var(--sans); letter-spacing: .1em; }
.footer-brand__type > span { display: block; font: 16px/2 var(--sans); letter-spacing: .3em; }
.footer-bottom { border-top-color: #684e30; }
.footer-links > a:hover { color: var(--gaia-gold-text); }

.contact-rail { background: #100a0b; border-color: #76582f; box-shadow: 0 7px 28px #0009; }
.contact-rail > a, .contact-rail > button { color: var(--gaia-gold-text); }
.contact-rail > :not(:last-child) { border-color: #76582f; }
.contact-rail > a:hover, .contact-rail > button:hover { background: #310910; }
.gaia-toast { background: #24070c; color: #f6ddb0; border: 1px solid #a77a3c; }

.prose { color: #d0c2ae; }
.prose h2, .prose h3, .prose h4, .prose strong, .prose summary { color: #fff0d2; }
.prose a:not(.button) { color: var(--gaia-gold-text); text-decoration-color: #d5a64e80; }
.prose blockquote, .sidebar-contact, .gaia-budget { background: #201214; border-color: #76582f; }
.prose th, .prose .gaia-notice, .prose .gaia-note, .prose .notice,
.prose .callout, .prose aside { background: #2a1712; color: #e1d1bb; border-left-color: var(--gaia-gold); }
.prose th { color: #f5dcae; }
.prose th, .prose td { border-color: #684e30; }
.prose tr:nth-child(even) td { background: #160e0f; }
.page-toc nav a { border-bottom-color: #604729; color: #bcae9b; }
.sidebar-phone, .article-navigation__all { color: var(--gaia-gold-text); }
.gaia-budget label { color: #d5c5b0; }
.gaia-budget input:not([type=checkbox]):not([type=radio]), .gaia-budget select,
.prose input:not([type=checkbox]):not([type=radio]), .prose select, .prose textarea {
  background: #0d0909;
  border-color: #76582f;
  color: #f6ead0;
}
.gaia-budget output, .gaia-budget__result { background: #0f090a; color: var(--gaia-gold-text); border-top-color: var(--gaia-gold); }
.gaia-budget__result strong { color: var(--gaia-gold-text); }
.pagination a, .pagination span, .contact-options > *, .gaia-contact-grid > * { border-color: #684e30; }
.pagination .current { background: var(--wine); border-color: var(--gaia-gold); }

@media (max-width: 700px) {
  .brand-mark { width: 42px; height: 42px; flex-basis: 42px; }
  .brand-type--wordmark strong { font-size: 21px; }
  .brand-type--wordmark > span { font-size: 16px; letter-spacing: .24em; }
  .brand-mark--footer { width: 56px; height: 56px; flex-basis: 56px; }
  .footer-brand__type > b { font-size: 23px; }
  .hero-scene::before { display: none; }
  .hero-scene__image { box-shadow: 13px 14px 0 #4b0811, 0 20px 50px #0009; }
  .hero-scene__image img { object-position: 51% 50%; }
  .contact-rail { background: #0d0809; }
}

/* Edge-to-edge hero; top anchoring keeps the subject's face inside the frame. */
.home-hero { padding: 0; }
.home-hero::before { display: none; }
.home-hero .hero-grid { position: relative; width: 100%; min-height: 760px; min-height: clamp(760px, calc(100svh - 130px), 980px); display: flex; align-items: center; gap: 0; }
.home-hero .hero-scene { position: absolute; inset: 0; margin: 0; padding: 0; z-index: 0; }
.home-hero .hero-scene::before, .home-hero .hero-stamp, .home-hero .hero-scene__label { display: none; }
.home-hero .hero-scene__image { width: 100%; height: 100%; border: 0; border-radius: 0; box-shadow: none; }
.home-hero .hero-scene__image picture { display: block; width: 100%; height: 100%; }
.home-hero .hero-scene__image img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 0%; filter: none; }
.home-hero .hero-scene__image::after { inset: 0; background: linear-gradient(90deg, #080404e8 0%, #080404b0 29%, #08040418 60%, transparent 100%), linear-gradient(0deg, #080404b8, transparent 25%); }
.hero-carousel__slides { position: relative; overflow: hidden; background: #090505; }
.hero-carousel__slide { position: absolute; inset: 0; margin: 0; opacity: 0; visibility: hidden; transition: opacity 1.15s ease, visibility 1.15s; }
.hero-carousel__slide.is-active { opacity: 1; visibility: visible; z-index: 1; }
.hero-carousel__slide img { transform: scale(1.001); }
.hero-carousel__slide.is-active img { animation: cheery-hero-drift 8s ease-out both; }
@keyframes cheery-hero-drift { from { transform: scale(1.001); } to { transform: scale(1.035); } }
.hero-carousel__controls { position: absolute; z-index: 4; right: 24px; bottom: 43px; display: flex; align-items: center; gap: 13px; padding: 9px 11px; color: #efd59e; background: #09050599; border: 1px solid #b98a43a3; backdrop-filter: blur(8px); }
.hero-carousel__status { min-width: 142px; font: 600 16px/1.4 var(--sans); letter-spacing: .16em; text-align: right; }
.hero-carousel__dots { display: flex; align-items: center; gap: 7px; }
.hero-carousel__dot { width: 7px; height: 7px; padding: 0; border: 1px solid #e0b96f; border-radius: 50%; background: transparent; transition: width .25s ease, border-radius .25s ease, background .25s ease; }
.hero-carousel__dot.is-active { width: 23px; border-radius: 5px; background: #e0b96f; }
.hero-carousel__toggle { display: grid; place-items: center; width: 25px; height: 25px; padding: 0; border: 0; border-left: 1px solid #8c693d; color: #efd59e; background: transparent; font-size: 16px; }
.home-hero .hero-copy { position: relative; z-index: 1; width: min(46%, 620px); margin-left: max(56px, calc((100% - var(--container)) / 2)); padding: 56px 0 76px; }
.home-hero .hero-copy h1 { white-space: normal; font-size: clamp(42px, 4.6vw, 68px); }
.home-hero .hero-description { color: #f0e0ca; text-shadow: 0 2px 10px #000; }
.home-hero .hero-footnote { color: #e0cba9; }
.home-hero .hero-scene__caption { bottom: 15px; left: auto; right: 24px; color: #e0cba9; text-shadow: 0 1px 5px #000; }
@media (max-width: 900px) {
  .home-hero .hero-copy { margin-left: 28px; width: 46%; }
}
@media (max-width: 700px) {
  .home-hero .hero-grid { min-height: 850px; align-items: flex-end; }
  .home-hero .hero-copy { width: calc(100% - 40px); margin: 0 20px; padding: 360px 0 58px; }
  .home-hero .hero-copy h1 { font-size: clamp(35px, 9vw, 48px); line-height: 1.3; margin: 12px 0; }
  .home-hero .hero-copy h1 .serif-accent { display: inline; margin-left: 0; }
  .home-hero .hero-scene__image img { object-position: 57% top; }
  .home-hero .hero-scene__image::after { background: linear-gradient(0deg, #080404fa 0%, #080404d9 31%, #08040426 61%, transparent 100%); }
  .home-hero .hero-actions { gap: 18px; flex-direction: row; flex-wrap: wrap; }
  .home-hero .hero-scene__caption { left: 20px; right: 20px; bottom: 15px; font-size: 16px; }
  .hero-carousel__controls { top: 18px; right: 18px; bottom: auto; }
  .hero-carousel__status { display: none; }
}

/* Lightweight site-wide motion: JS reveals content only when it can observe it. */
.js-motion .motion-reveal { opacity: 0; transform: translateY(24px); transition: opacity .72s ease var(--motion-delay, 0ms), transform .72s cubic-bezier(.2,.7,.2,1) var(--motion-delay, 0ms); }
.js-motion .motion-reveal.is-in-view { opacity: 1; transform: translateY(0); }
.venue-card, .mood-card, .journal-card { transition: transform .35s ease, border-color .35s ease, box-shadow .35s ease; }
.venue-card:hover, .mood-card:hover { transform: translateY(-7px); }
.venue-card:hover .venue-card__visual, .mood-card:hover .mood-card__photo { box-shadow: 0 20px 45px #0007; }
.button { position: relative; overflow: hidden; isolation: isolate; }
.button::after { content: ""; position: absolute; inset: -60% auto -60% -35%; width: 22%; z-index: -1; background: #fff4d34d; transform: rotate(18deg); transition: left .55s ease; }
.button:hover::after { left: 118%; }
.brand-mark { transition: transform .35s ease, filter .35s ease; }
.brand:hover .brand-mark, .footer-brand__identity:hover .brand-mark { transform: rotate(-4deg) scale(1.06); filter: drop-shadow(0 5px 12px #000b) drop-shadow(0 0 12px #d5a54d66); }

@media (prefers-reduced-motion: reduce) {
  .hero-carousel__slide, .hero-carousel__dot, .motion-reveal, .venue-card, .mood-card, .journal-card, .brand-mark { transition: none !important; animation: none !important; }
  .js-motion .motion-reveal { opacity: 1; transform: none; }
  .button::after { display: none; }
}

/* Champagne-gold concierge rail, anchored on the left. */
.contact-rail.contact-rail--left {
  left: 12px; right: auto; bottom: 24px; height: auto;
  flex-direction: column; gap: 0; padding: 5px;
  background: linear-gradient(180deg, #350811f5 0%, #16090bf7 100%);
  border: 1px solid #c39b52; border-radius: 6px;
  box-shadow: 0 10px 30px #0009, inset 0 0 0 1px #fff0d20a;
  backdrop-filter: blur(12px);
}
.contact-rail.contact-rail--left > a,
.contact-rail.contact-rail--left > button {
  width: 58px; min-height: 66px; padding: 10px 6px;
  display: flex; flex-direction: column; gap: 7px;
  border: 0; border-radius: 0; background: transparent;
  color: #fff0d2; font-size: 16px; font-weight: 600; line-height: 1.3; letter-spacing: .08em;
  box-shadow: none;
  text-shadow: 0 1px 8px #000;
  transition: background .2s ease, color .2s ease, box-shadow .2s ease;
}
.contact-rail.contact-rail--left > :not(:last-child) { border-bottom: 1px solid #c39b5266; }
.contact-rail.contact-rail--left svg { width: 24px; height: 24px; color: #e4bb6b; stroke-width: 1.6; }
.contact-rail.contact-rail--left > :hover {
  background: linear-gradient(135deg, #a20c24, #65000f);
  color: #fff8e9;
  box-shadow: inset 3px 0 0 #e4bb6b;
}
.contact-rail.contact-rail--left > :focus-visible { outline: 2px solid #f0c879; outline-offset: -3px; }
@media (max-width: 700px) {
  body { padding-bottom: 0; }
  .contact-rail.contact-rail--left {
    left: max(8px, env(safe-area-inset-left)); right: auto;
    bottom: max(12px, env(safe-area-inset-bottom));
    width: 56px; height: auto; max-height: none;
    flex-direction: column; gap: 0; padding: 4px;
    overflow: hidden; border-width: 1px;
  }
  .contact-rail.contact-rail--left > a,
  .contact-rail.contact-rail--left > button {
    flex: 0 0 auto; width: 48px; min-width: 0; min-height: 56px; height: auto;
    padding: 7px 2px; flex-direction: column; justify-content: center; gap: 4px;
    overflow: hidden; font-size: 14px; line-height: 1; white-space: nowrap;
  }
  .contact-rail.contact-rail--left > :not(:last-child) {
    border-right: 0;
    border-bottom: 1px solid #c39b5266;
  }
  .contact-rail.contact-rail--left svg { width: 20px; height: 20px; }
  .contact-rail.contact-rail--left span { display: block; max-width: 100%; white-space: nowrap; }
}
@media (prefers-reduced-motion: reduce) {
  .contact-rail.contact-rail--left > a, .contact-rail.contact-rail--left > button { transition: none; }
}

.venue-heading--photo { position: relative; isolation: isolate; overflow: hidden; min-height: clamp(460px, 34vw, 680px); padding: 34px 0 28px; display: flex; align-items: center; background: #100a0b; }
.venue-heading__photo { position: absolute; inset: 0; z-index: -2; width: 100%; height: 100%; object-fit: cover; object-position: center top; }
.venue-heading--photo::before { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(90deg,#080404ed 0%,#080404b8 40%,#08040433 100%),linear-gradient(0deg,#080404a6,transparent 50%); }
.venue-heading--photo .venue-heading__emblem { display: none; }
.venue-heading--photo .breadcrumbs { color: #e2d3bd; }
.venue-heading--photo h1 { color: #fff1d6; text-shadow: 0 3px 22px #0008; }
.venue-heading--photo .page-lead { max-width: 620px; color: #e6d8c3; }
.venue-heading--photo .venue-tags > span { color: #f1d9ac; border-color: #bfa57785; background: #100a0b99; }
.venue-heading__photo-note { margin-top: 28px; color: #c0b09a; font-size: 16px; letter-spacing: .08em; }
.venue-heading--branded-cover { min-height: 0; aspect-ratio: 16 / 9; padding: 0; border-bottom: 0; }
.venue-heading--branded-cover::before { display: none; }
.venue-heading--branded-cover .venue-heading__photo { object-position: center; }
.venue-heading__row { display: grid; grid-template-columns: minmax(0, 1fr) minmax(430px, 560px); gap: clamp(48px, 6vw, 100px); align-items: center; }
.venue-heading__details { min-width: 0; }
.venue-featured-cover { margin: 0; }
.venue-featured-cover img { display: block; width: 100%; aspect-ratio: 16 / 9; object-fit: cover; border: 1px solid #7d603966; box-shadow: 0 18px 42px #1206071f; }
.venue-featured-cover figcaption { margin-top: 8px; color: #8f7c69; font-size: 13px; letter-spacing: .08em; text-align: left; }
@media (max-width: 1050px) and (min-width: 701px) {
  .venue-heading__row { grid-template-columns: minmax(0, 1fr) minmax(360px, 46%); gap: 36px; }
}
@media (max-width: 700px) {
  .venue-heading--photo { min-height: 440px; padding-block: 26px; }
  .venue-heading__photo { object-position: 65% top; }
  .venue-heading--photo::before { background: linear-gradient(90deg,#080404c9,#08040455),linear-gradient(0deg,#080404e6,transparent); }
  .venue-heading--photo .page-lead { max-width: 90%; }
  .venue-heading--branded-cover { min-height: 0; aspect-ratio: 16 / 9; padding: 0; }
  .venue-heading--branded-cover .venue-heading__photo { object-position: center; }
  .venue-heading__row { display: block; }
  .venue-featured-cover--heading { margin-top: 26px; }
}

/* A brief content-only dissolve; navigation and fixed controls remain steady. */
@keyframes cherry-content-arrive { from { opacity: .45; } to { opacity: 1; } }
@media screen and (prefers-reduced-motion: no-preference) {
  main#main { animation: cherry-content-arrive 180ms ease-out; }
}

@media print {
  .venue-heading__photo, .venue-heading--photo::before { display: none; }
  .venue-heading--photo { min-height: 0; background: #fff; }
  :root { color-scheme: light; }
  body, .prose, .prose h2, .prose h3, .prose h4, .prose strong { color: #111; background: #fff; }
}
