/* erotic massage near me
   Burgundy and ivory. Shares nothing with the three sibling domains, which run violet/pink
   (amn-), espresso/amber (hen-) and slate/jade (nmn-). Four exact-match domains over one
   listing pool must not also look like one template (network Rule 15). */

:root {
  --ivory: #f7f1ea;
  --ivory-soft: #b39ea0;
  --wine: #1b0f13;
  --wine-2: #26161c;
  --wine-3: #341f27;
  --line: #452b34;
  --rouge: #c2415c;
  --rouge-lit: #e4708a;
  --gilt: #cba765;
  --r: 3px;
}

* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0; background: var(--wine); color: var(--ivory);
  font: 16px/1.7 "Charter", "Iowan Old Style", Cambria, Georgia, serif;
  overflow-x: hidden; padding-bottom: 64px;
}
img { max-width: 100%; height: auto; display: block; }
a { color: var(--rouge-lit); text-decoration: none; }
a:hover { text-decoration: underline; }
.emn-wrap { max-width: 1240px; margin: 0 auto; padding: 0 20px; }
h1 { font-size: clamp(28px, 5.4vw, 43px); line-height: 1.08; margin: 0 0 10px; font-weight: 400; letter-spacing: -.01em; }

.emn-jump { position: absolute; left: -9999px; }
.emn-jump:focus { left: 14px; top: 14px; z-index: 99; background: var(--rouge); color: #fff; padding: 10px 16px; }

/* ── head ────────────────────────────────────────────────────────────── */
.emn-head { border-bottom: 1px solid var(--line); background: var(--wine-2); }
.emn-head-in { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding-top: 12px; padding-bottom: 12px; }
.emn-brand { display: inline-flex; align-items: center; gap: 10px; color: var(--ivory); }
.emn-brand:hover { text-decoration: none; }
.emn-brand img { border-radius: var(--r); flex-shrink: 0; }
.emn-brand-txt { display: flex; flex-direction: column; line-height: 1.05; }
.emn-brand-txt b { font-size: 17px; font-weight: 600; letter-spacing: .01em; }
.emn-brand-txt small { font-family: ui-sans-serif, system-ui, sans-serif; font-size: 9.5px; letter-spacing: .32em; text-transform: uppercase; color: var(--ivory-soft); margin-top: 3px; }
.emn-watch {
  font-family: ui-sans-serif, system-ui, sans-serif; font-size: 12.5px; font-weight: 700;
  letter-spacing: .04em; text-transform: uppercase; padding: 9px 16px;
  border: 1px solid var(--gilt); color: var(--gilt); white-space: nowrap;
}
.emn-watch:hover { text-decoration: none; background: var(--gilt); color: var(--wine); }

/* ── open ────────────────────────────────────────────────────────────── */
.emn-open { padding: 34px 0 22px; }
.emn-open-line { color: var(--ivory-soft); font-size: 17.5px; margin: 0 0 18px; }
.emn-open-line b { color: var(--ivory); }
.emn-find { display: flex; align-items: center; gap: 13px; flex-wrap: wrap; font-family: ui-sans-serif, system-ui, sans-serif; }
.emn-find button {
  background: var(--rouge); color: #fff; border: 0; padding: 13px 22px;
  font-size: 14.5px; font-weight: 700; cursor: pointer; letter-spacing: .02em;
}
.emn-find button:hover { background: var(--rouge-lit); }
.emn-find button:disabled { opacity: .55; cursor: wait; }
.emn-find span { font-size: 12.5px; color: var(--ivory-soft); }
.emn-aside { font-family: ui-sans-serif, system-ui, sans-serif; font-size: 14px; color: var(--ivory-soft); border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); padding: 12px 0; margin: 0 0 18px; }

/* ── board ───────────────────────────────────────────────────────────── */
.emn-count { display: flex; align-items: baseline; justify-content: space-between; gap: 14px; flex-wrap: wrap; margin: 0 0 14px; font-family: ui-sans-serif, system-ui, sans-serif; }
.emn-count p { margin: 0; font-size: 13.5px; color: var(--ivory-soft); }
.emn-count b { color: var(--ivory); }
.emn-count a { font-size: 13px; font-weight: 700; }

.emn-grid { display: grid; gap: 14px; grid-template-columns: repeat(2, 1fr); }
/* Two columns of tiles on a phone leaves ~168px for up to three actions. Sharing that row
   equally truncated "WhatsApp" and wrapped "See studio" onto a second line. So make the split
   deliberate instead: contacts share the top row, the primary action takes a row of its own. */
@media (max-width: 520px) {
  .emn-act { font-size: 11px; padding: 10px 4px; }
  .emn-act-main { flex: 1 0 100%; }
}
@media (min-width: 760px)  { .emn-grid { grid-template-columns: repeat(3, 1fr); gap: 18px; } }
@media (min-width: 1120px) { .emn-grid { grid-template-columns: repeat(4, 1fr); } }

/* Photo fills the tile; an inset panel carries the name; actions sit below. */
.emn-card { background: var(--wine-2); border: 1px solid var(--line); display: flex; flex-direction: column; }
.emn-card:hover { border-color: var(--rouge); }
.emn-card-gold { border: 1px solid var(--gilt); box-shadow: inset 0 0 0 1px rgba(203,167,101,.35); }
.emn-card-img { position: relative; display: block; aspect-ratio: 5 / 4; background: var(--wine-3); overflow: hidden; }
.emn-card-img > img { width: 100%; height: 100%; object-fit: cover; transition: transform .35s ease; }
.emn-card:hover .emn-card-img > img { transform: scale(1.035); }
.emn-card-none { display: grid; place-items: center; height: 100%; font-size: 34px; color: rgba(194,65,92,.3); }
.emn-seal {
  position: absolute; top: 0; left: 0; font-family: ui-sans-serif, system-ui, sans-serif;
  background: var(--gilt); color: var(--wine); font-size: 9.5px; font-weight: 900;
  letter-spacing: .12em; padding: 5px 9px;
}
.emn-card-inset {
  position: absolute; left: 10px; right: 10px; bottom: 10px; display: block;
  background: rgba(20, 11, 14, .84); backdrop-filter: blur(3px);
  border-left: 2px solid var(--rouge); padding: 9px 11px;
}
.emn-card-inset b { display: block; font-size: 15px; font-weight: 600; line-height: 1.25; color: var(--ivory); }
.emn-card-inset em {
  display: flex; align-items: center; gap: 6px; font-style: normal; margin-top: 4px;
  font-family: ui-sans-serif, system-ui, sans-serif; font-size: 12px; color: var(--ivory-soft);
}
.emn-card-inset em img { width: 17px; height: 12px; flex-shrink: 0; object-fit: cover; }

.emn-card-acts { display: flex; flex-wrap: wrap; gap: 1px; background: var(--line); margin-top: auto; }
.emn-act {
  flex: 1 1 auto; min-width: 0; white-space: nowrap; text-align: center;
  font-family: ui-sans-serif, system-ui, sans-serif;
  font-size: 11.5px; font-weight: 700; padding: 9px 6px; background: var(--wine-2); color: var(--ivory);
}
.emn-act:hover { text-decoration: none; background: var(--wine-3); }
.emn-act-wa { background: #0d6455; color: #fff; }
.emn-act-main { background: var(--rouge); color: #fff; }

.emn-more { text-align: center; margin: 24px 0 0; }
.emn-own { text-align: center; margin: 16px 0 0; font-family: ui-sans-serif, system-ui, sans-serif; font-size: 13px; }
.emn-own a { color: var(--ivory-soft); }
.emn-cta { display: inline-block; font-family: ui-sans-serif, system-ui, sans-serif; font-weight: 700; font-size: 14px; padding: 13px 28px; background: var(--rouge); color: #fff; letter-spacing: .02em; }
.emn-cta:hover { text-decoration: none; background: var(--rouge-lit); }
.emn-cta-sm { padding: 9px 16px; font-size: 12.5px; margin-top: 9px; }

/* ── reading ─────────────────────────────────────────────────────────── */
/* ONE measure for every block in here. In `ch` on each block the intro (19px) and the body
   (17px) resolved to different widths and the left edge stepped inward halfway down. */
.emn-read { max-width: 660px; margin: 46px auto 0; }
.emn-copy { color: #e6d9d5; font-size: 17px; line-height: 1.78; }
.emn-copy-open { font-size: 19px; color: var(--ivory); border-bottom: 1px solid var(--line); padding-bottom: 22px; margin-bottom: 26px; }
.emn-copy p { margin: 0 0 18px; }
.emn-copy h2 { font-size: clamp(21px, 3vw, 28px); margin: 36px 0 12px; color: var(--ivory); font-weight: 400; line-height: 1.22; }
/* Venue copy comes from the studio and leans on h3. Unstyled it was browser-default bold at
   body size, so a ten-heading description read as one undifferentiated block. */
.emn-copy h3 { font-size: 18px; margin: 26px 0 8px; color: var(--ivory); font-weight: 600; line-height: 1.3; }
.emn-copy ul, .emn-copy ol { margin: 0 0 18px; padding-left: 22px; }
.emn-copy li { margin: 0 0 6px; }
.emn-copy strong { color: #fff; font-weight: 600; }
.emn-copy a { color: var(--gilt); }

.emn-faq { margin: 46px 0 8px; }
.emn-faq h2 { font-size: clamp(21px, 3vw, 28px); margin: 0 0 14px; font-weight: 400; }
/* Disclosure rows with a hairline, the fourth FAQ treatment across the four sites. */
.emn-faq details { border-bottom: 1px solid var(--line); }
.emn-faq summary { cursor: pointer; padding: 15px 0; font-weight: 600; list-style: none; display: flex; justify-content: space-between; gap: 14px; }
.emn-faq summary::-webkit-details-marker { display: none; }
.emn-faq summary::after { content: '+'; color: var(--rouge); font-weight: 400; font-size: 20px; line-height: 1; }
.emn-faq details[open] summary::after { content: '\2212'; }
.emn-faq details > div { padding: 0 0 16px; color: #ddcdc9; font-size: 16px; }

/* ── place ───────────────────────────────────────────────────────────── */
.emn-path { font-family: ui-sans-serif, system-ui, sans-serif; font-size: 12.5px; color: var(--ivory-soft); margin: 18px 0 12px; }
.emn-seal-wide { display: inline-block; font-family: ui-sans-serif, system-ui, sans-serif; background: var(--gilt); color: var(--wine); font-size: 11px; font-weight: 900; letter-spacing: .12em; padding: 7px 14px; margin: 0 0 10px; }
.emn-place-where { display: flex; align-items: center; gap: 9px; font-size: 17px; color: var(--ivory-soft); margin: 0 0 14px; }
.emn-place-where b { color: var(--ivory); font-size: 19px; }
.emn-place-where img { width: 22px; height: 16px; object-fit: cover; }
.emn-facts { list-style: none; display: flex; flex-wrap: wrap; gap: 0; padding: 0; margin: 0 0 20px; font-family: ui-sans-serif, system-ui, sans-serif; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.emn-facts li { font-size: 12px; color: var(--ivory-soft); padding: 9px 16px 9px 0; }
.emn-facts b { color: var(--ivory); }

.emn-reachbar { display: flex; flex-wrap: wrap; gap: 1px; background: var(--line); margin: 0 0 22px; font-family: ui-sans-serif, system-ui, sans-serif; }
.emn-reach { flex: 1 1 140px; text-align: center; padding: 14px 16px; font-weight: 700; font-size: 14.5px; color: #fff; background: var(--wine-3); }
.emn-reach:hover { text-decoration: none; filter: brightness(1.12); }
.emn-reach-wa { background: #0d6455; }
.emn-reach-tel { background: var(--rouge); }
.emn-reach-tg { background: #2b7fa8; }
.emn-reach-other { background: var(--wine-3); color: var(--ivory); }

/* Tight EVEN mosaic, no hero: the fourth gallery shape after the three siblings' lead-image
   layouts. The hero rule this replaced spanned 4x2 with aspect-ratio:auto, so the lead photo's
   natural height set the row height and left a void the size of the image beside it. */
.emn-gallery { display: grid; gap: 4px; grid-template-columns: repeat(3, 1fr); margin: 0 0 22px; }
@media (min-width: 760px)  { .emn-gallery { grid-template-columns: repeat(5, 1fr); } }
@media (min-width: 1120px) { .emn-gallery { grid-template-columns: repeat(6, 1fr); } }
.emn-frame { padding: 0; border: 0; background: var(--wine-3); cursor: zoom-in; overflow: hidden; aspect-ratio: 1; }
.emn-frame > img { width: 100%; height: 100%; object-fit: cover; }

.emn-place-body { display: grid; gap: 26px; grid-template-columns: 1fr; }
@media (min-width: 1000px) { .emn-place-body { grid-template-columns: minmax(0, 1fr) 310px; } }
.emn-place-lead { font-size: 18px; margin: 0 0 14px; }
.emn-box { border: 1px solid var(--line); padding: 15px; margin-bottom: 13px; }
.emn-box-h { font-family: ui-sans-serif, system-ui, sans-serif; font-size: 11px; letter-spacing: .14em; text-transform: uppercase; color: var(--ivory-soft); font-weight: 800; margin: 0 0 10px; }
.emn-hours { margin: 0; font-family: ui-sans-serif, system-ui, sans-serif; font-size: 13.5px; }
.emn-hours > div { display: flex; justify-content: space-between; gap: 12px; padding: 6px 0; border-bottom: 1px solid var(--line); }
.emn-hours > div:last-child { border-bottom: 0; }
.emn-hours-shut { color: var(--ivory-soft); }
.emn-hours dt { text-transform: uppercase; letter-spacing: .08em; color: var(--ivory-soft); font-weight: 700; }
.emn-hours dd { margin: 0; }
.emn-links { display: flex; flex-wrap: wrap; gap: 6px; margin: 0; font-family: ui-sans-serif, system-ui, sans-serif; }
.emn-links a { font-size: 12.5px; font-weight: 700; padding: 7px 12px; border: 1px solid var(--line); color: var(--ivory); }
.emn-plug { display: block; text-align: center; padding: 16px; background: linear-gradient(135deg, var(--rouge), #7d2338); color: #fff; }
.emn-plug b { display: block; font-size: 17px; }
.emn-plug span { font-family: ui-sans-serif, system-ui, sans-serif; font-size: 12.5px; color: rgba(255,255,255,.85); }
.emn-return { margin: 28px 0 0; }

.emn-bar { display: none; }
@media (max-width: 760px) {
  .emn-bar { display: flex; gap: 1px; background: var(--line); position: fixed; left: 0; right: 0; bottom: 0; z-index: 64; padding-bottom: env(safe-area-inset-bottom); }
  .emn-place { padding-bottom: 72px; }
  /* A free venue page carries BOTH the cams ribbon and this contact bar, and they are both
     pinned to the bottom. Reaching the studio wins; the sidebar still advertises the cams. */
  body:has(.emn-bar) .emn-ribbon { display: none; }
}

/* ── lightbox ────────────────────────────────────────────────────────── */
.emn-lightbox { position: fixed; inset: 0; z-index: 95; background: rgba(12, 6, 8, .97); display: grid; place-items: center; }
.emn-lightbox[hidden] { display: none; }
.emn-lightbox img { max-width: 94vw; max-height: 86vh; object-fit: contain; }
.emn-lightbox button { position: absolute; width: 46px; height: 46px; border: 1px solid var(--line); background: rgba(255,255,255,.06); color: #fff; font-size: 25px; cursor: pointer; }
.emn-lightbox button:hover { background: rgba(255,255,255,.16); }
.emn-lightbox [data-x] { top: 16px; right: 16px; font-size: 27px; }
.emn-lightbox [data-back] { left: 14px; top: 50%; transform: translateY(-50%); }
.emn-lightbox [data-on] { right: 14px; top: 50%; transform: translateY(-50%); }
.emn-lightbox p { position: absolute; bottom: 18px; left: 50%; transform: translateX(-50%); margin: 0; font-family: ui-sans-serif, system-ui, sans-serif; font-size: 12.5px; color: var(--ivory-soft); }

/* ── foot ────────────────────────────────────────────────────────────── */
.emn-foot { border-top: 1px solid var(--line); margin-top: 50px; padding: 28px 0 18px; background: var(--wine-2); }
.emn-foot-lead { margin: 0 0 6px; }
.emn-foot-note { font-family: ui-sans-serif, system-ui, sans-serif; font-size: 12.5px; color: var(--ivory-soft); margin: 0 0 12px; }
.emn-foot-do { margin: 14px 0; font-family: ui-sans-serif, system-ui, sans-serif; font-size: 13.5px; }

.emn-ribbon { position: fixed; left: 0; right: 0; bottom: 0; z-index: 62; background: var(--wine-3); border-top: 1px solid var(--gilt); }
.emn-ribbon a {
  display: flex; align-items: center; justify-content: center; gap: 10px; max-width: 1240px;
  margin: 0 auto; padding: 11px 20px calc(11px + env(safe-area-inset-bottom));
  color: var(--ivory); font-family: ui-sans-serif, system-ui, sans-serif; font-size: 13px;
}
.emn-ribbon a:hover { text-decoration: none; }
.emn-ribbon b { color: var(--gilt); }
.emn-ribbon span { background: var(--rouge); color: #fff; font-weight: 700; font-size: 12px; padding: 6px 13px; }

/* Keyboard focus: the browser default is invisible on this palette. */
a:focus-visible, button:focus-visible, summary:focus-visible {
  outline: 2px solid var(--gilt); outline-offset: 3px;
}
.emn-card-img:focus-visible, .emn-frame:focus-visible { outline-offset: -3px; }

@media (prefers-reduced-motion: reduce) { * { animation: none !important; transition: none !important; } }
