/* Marco's developer brief (docs/OWNER-BRIEF-2026-10-06-CHECKLIST.md) — the owner layout's own styles.
   Linked ONLY by --owner-layout pages (src/build.py owner_css_version), so site/styles.css and the
   default build never move when these change. Same tokens as styles.css. */

/* ── Review badges ─────────────────────────────────────────────────────────────────────── */
.nt-pending { display: inline-block; margin: 0 0 8px; padding: 4px 10px; border-radius: 999px; font-size: 11px; font-weight: 700;
  letter-spacing: .08em; text-transform: uppercase; color: #160F04; background: #FFD36E; border: 1px solid #FFE6A8; }
.ow-confirm { display: inline-block; padding: 2px 8px; border-radius: 999px; font-size: 10.5px; font-weight: 700; letter-spacing: .1em;
  text-transform: uppercase; color: #FFC9DC; border: 1px solid rgba(255,45,122,.5); background: rgba(255,45,122,.1); }

/* ── Night page (P2) ────────────────────────────────────────────────────────────────────── */
.nt-facts { display: grid; gap: 6px; margin: 0 0 14px; }
.nt-facts div { display: flex; flex-wrap: wrap; gap: 4px 10px; align-items: baseline; text-shadow: 0 2px 12px rgba(0,0,0,.8); }
.nt-facts dt { font-size: 10.5px; letter-spacing: .18em; text-transform: uppercase; color: var(--gold); font-weight: 700; }
.nt-facts dd { margin: 0; color: var(--paper); font-size: 15px; overflow-wrap: anywhere; }
.nt-about p { max-width: 68ch; }
.nt-rel-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; grid-template-columns: repeat(auto-fit, minmax(min(240px, 100%), 1fr)); }
.nt-rel-list a { display: flex; align-items: center; min-height: 48px; padding: 10px 14px; border: 1px solid var(--line); border-radius: 12px;
  color: var(--paper); text-decoration: none; background: var(--glass); overflow-wrap: anywhere; }
.nt-rel-list a:hover { border-color: var(--gold); color: var(--gold-lit); }
/* Night pages: one "Celebrate with us →" line in place of the four Celebrate links (declutter, Cap 2026-10-25). */
.nt-cel-line { margin: 22px 0 0; }
.nt-cel-line a { display: inline-flex; align-items: center; gap: 6px; min-height: 44px; color: var(--gold-lit); font-weight: 700; text-decoration: underline;
  text-decoration-color: var(--gold-hair); text-underline-offset: 4px; }
.nt-cel-line a:hover { color: var(--gold); }
.nt-pn { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin: 0 0 30px; }
.nt-pn-a { display: flex; flex-direction: column; gap: 4px; padding: 12px 14px; border: 1px solid var(--gold-hair); border-radius: 12px; text-decoration: none; color: var(--paper); min-width: 0; }
.nt-pn-a:hover { border-color: var(--gold); }
.nt-pn-next { text-align: right; }
.nt-pn-k { font-size: 10.5px; letter-spacing: .16em; text-transform: uppercase; color: var(--gold); }
.nt-pn-n { font-family: var(--display); font-size: 20px; letter-spacing: .03em; overflow-wrap: anywhere; }

/* ── Offers, celebrations, visit, gallery, reserve (owner-render.js) ──────────────────── */
.ow-hero { padding-top: clamp(96px, 20vh, 200px); }
.ow-h1 { color: var(--gold-lit); font-size: clamp(34px, 9vw, 72px); line-height: 1; text-shadow: 0 2px 18px rgba(0,0,0,.75); overflow-wrap: anywhere; }
.ow-lede { text-transform: none; letter-spacing: .02em; }
.ow-actions { display: flex; flex-wrap: wrap; gap: 10px; margin: 14px 0 6px; }
.ow-actions .btn-gold { flex: 1 1 100%; justify-content: center; text-align: center; white-space: normal; }
.ow-actions .btn-ghost { flex: 1 1 auto; justify-content: center; }
.ow-num { font-weight: 400; opacity: .85; margin-left: 4px; white-space: nowrap; }
@media (min-width: 760px) { .ow-actions .btn-gold { flex: 0 1 auto; } }
.ow-grid { list-style: none; margin: 0; padding: 0; display: grid; gap: 12px; grid-template-columns: repeat(auto-fit, minmax(min(280px, 100%), 1fr)); }
.ow-card a { display: flex; flex-direction: column; height: 100%; border: 1px solid var(--gold-hair); border-radius: var(--radius); overflow: hidden;
  text-decoration: none; color: var(--paper); background: var(--ink-2); }
.ow-card a:hover { border-color: var(--gold); }
.ow-card-media { display: block; aspect-ratio: 16 / 9; overflow: hidden; }
.ow-card-media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ow-card-in { display: flex; flex-direction: column; gap: 6px; padding: 14px 16px 16px; }
.ow-card-h { font-family: var(--display); font-size: 25px; letter-spacing: .03em; color: var(--gold-lit); line-height: 1.08; overflow-wrap: anywhere; }
.ow-card-sub { font-size: 14px; color: var(--paper-dim); }
.ow-card-win { font-size: 12.5px; color: #FFC9DC; }
.ow-card-go { margin-top: auto; font-size: 12px; letter-spacing: .14em; text-transform: uppercase; color: var(--gold); font-weight: 700; }
.ow-offer { border-radius: var(--radius); padding: 18px; margin: 0 0 26px; background: var(--ink-2); }
.ow-offer-k { font-size: 12px; letter-spacing: .2em; text-transform: uppercase; color: var(--gold); margin: 0 0 8px; font-family: var(--body); }
.ow-offer-t { font-size: clamp(19px, 4.6vw, 24px); color: var(--paper); font-weight: 600; margin: 0 0 10px; }
.ow-code { font-size: 16px; margin: 0 0 10px; }
.ow-code b { font-family: var(--display); font-size: 26px; letter-spacing: .08em; color: var(--gold-lit); padding: 0 6px; border: 1px dashed var(--gold); border-radius: 8px; }
.ow-win { color: #FFC9DC; font-size: 14px; }
.ow-terms-h { font-size: 13px; letter-spacing: .14em; text-transform: uppercase; color: var(--paper-dim); margin: 14px 0 6px; font-family: var(--body); }
.ow-body p { max-width: 68ch; }
.ow-steps, .ow-list { margin: 0; padding-left: 20px; display: grid; gap: 8px; }
.ow-tonight { display: grid; grid-template-columns: 110px minmax(0, 1fr); gap: 0; margin: 0 0 26px; border: 1px solid var(--gold); border-radius: 14px;
  overflow: hidden; text-decoration: none; color: var(--paper); background: var(--ink-2); }
.ow-tonight img { width: 100%; height: 100%; object-fit: cover; display: block; min-height: 96px; }
.ow-tonight-t { display: flex; flex-direction: column; gap: 3px; padding: 12px 14px; min-width: 0; }
.ow-tonight-t .tag { align-self: flex-start; }
.ow-tonight-t b { font-family: var(--display); font-size: 24px; letter-spacing: .03em; color: var(--gold-lit); font-weight: 400; overflow-wrap: anywhere; }
.ow-tonight-t span { font-size: 14px; overflow-wrap: anywhere; }
.ow-tonight-sp { color: #FFC9DC; }
.ow-big { font-size: clamp(19px, 5vw, 26px); overflow-wrap: anywhere; }
.ow-big a { color: var(--gold-lit); }
.ow-hours { display: grid; gap: 6px; margin: 0 0 10px; }
.ow-hours div { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 4px 16px; border-bottom: 1px solid var(--line); padding: 8px 0; max-width: 520px; }
.ow-hours dt { color: var(--paper-dim); } .ow-hours dd { margin: 0; color: var(--paper); font-weight: 600; }
.ow-chips ul { list-style: none; margin: 0 0 18px; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.ow-chips a { display: inline-flex; align-items: center; min-height: 40px; padding: 6px 14px; border-radius: 999px; border: 1px solid var(--line);
  color: var(--paper); text-decoration: none; font-size: 14px; }
.ow-chips a[aria-current="true"] { border-color: var(--gold); color: #160F04; background: var(--gold); font-weight: 700; }
/* The gallery grid (Cap, 2026-10-25: "a grid style like an instagram profile"; functions/lib/gallery-grid.js, site/assets/gallery.js).
   Square tiles, 3 across edge to edge on a phone with 3px gaps; 4 across from 768px and 5 from 1024px inside the 1120px column,
   so a tile is never wider than about 216px. The squares are sized before any picture arrives (no layout shift). */
.ow-gal { list-style: none; margin: 0 calc(-1 * var(--gutter)) 16px; padding: 0; display: grid; gap: 3px; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.ow-gal-i { position: relative; overflow: hidden; background: var(--ink-2); aspect-ratio: 1 / 1; min-width: 0; }
.ow-gal-i img, .ow-gal-i video { width: 100%; height: 100%; object-fit: cover; display: block; }
.gg-a { display: block; width: 100%; height: 100%; color: inherit; -webkit-tap-highlight-color: transparent; }
.gg-a:focus-visible { outline: 3px solid var(--focus); outline-offset: -3px; }
.gg-a img { transition: filter .2s ease; }
@media (hover: hover) { .gg-a:hover img { filter: brightness(1.12); } }
.gg-badge { position: absolute; top: 6px; right: 6px; display: inline-flex; align-items: center; gap: 3px; padding: 4px 7px 4px 6px; border-radius: 999px;
  background: rgba(8, 7, 11, .62); color: #fff; font-size: 11.5px; font-weight: 700; line-height: 1; font-variant-numeric: tabular-nums; pointer-events: none; }
.gg-ph { background: linear-gradient(110deg, var(--ink-2) 30%, rgba(255,255,255,.05) 50%, var(--ink-2) 70%) 0 0 / 300% 100%; }
@media (min-width: 768px) {
  .ow-gal { margin: 0 0 20px; gap: 4px; grid-template-columns: repeat(4, minmax(0, 1fr)); }
}
@media (min-width: 1024px) { .ow-gal { grid-template-columns: repeat(5, minmax(0, 1fr)); } }
.ow-gal.gg-home { grid-template-columns: repeat(3, minmax(0, 1fr)); max-width: 720px; }
.gg-more { display: flex; justify-content: center; margin: 4px 0 22px; }
.gg-more[hidden] { display: none; }
/* Phone: the chips are one row that scrolls sideways inside itself (never the page), so the grid starts higher. */
@media (max-width: 767px) {
  .gg-chips { margin: 0 calc(-1 * var(--gutter)) 12px; }
  .gg-chips ul { flex-wrap: nowrap; overflow-x: auto; overscroll-behavior-x: contain; scrollbar-width: none; margin: 0; padding: 2px var(--gutter);
    scroll-padding-inline: var(--gutter); -webkit-mask-image: linear-gradient(90deg, #000 calc(100% - 28px), transparent); mask-image: linear-gradient(90deg, #000 calc(100% - 28px), transparent); }
  .gg-chips ul::-webkit-scrollbar { display: none; }
  .gg-chips li { flex: 0 0 auto; }
  .gg-chips a { white-space: nowrap; }
  .ow-gallery { padding-top: 8px; }
}
/* The viewer: full screen over everything but the age gate. */
html.gv-on { overflow: hidden; }
.gv { position: fixed; inset: 0; z-index: 95; display: grid; grid-template-rows: auto minmax(0, 1fr) auto; color: var(--paper);
  background: rgba(5, 4, 8, var(--gv-dim, 1)); }
.gv[hidden] { display: none; }
.gv-top { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: max(8px, env(safe-area-inset-top)) 8px 4px 16px; }
.gv-count { margin: 0; font-size: 14px; color: var(--paper-dim); font-variant-numeric: tabular-nums; }
.gv-btn { appearance: none; -webkit-appearance: none; border: 0; margin: 0; padding: 0; width: 48px; height: 48px; border-radius: 999px; background: rgba(255,255,255,.09);
  color: #fff; display: inline-flex; align-items: center; justify-content: center; cursor: pointer; }
.gv-btn:disabled { opacity: .28; cursor: default; }
.gv-btn:focus-visible { outline: 3px solid var(--focus); outline-offset: 2px; }
.gv-stage { position: relative; overflow: hidden; display: flex; align-items: center; justify-content: center; touch-action: none; min-height: 0; }
.gv-slide { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; }
.gv-media { max-width: 100%; max-height: 100%; width: auto; height: auto; object-fit: contain; display: block; user-select: none; -webkit-user-select: none; -webkit-user-drag: none; }
video.gv-media { width: 100%; height: 100%; background: #000; }
.gv-prev, .gv-next { position: absolute; top: 50%; transform: translateY(-50%); }
.gv-prev { left: 12px; } .gv-next { right: 12px; }
.gv-cap { width: 100%; max-width: 760px; margin: 0 auto; padding: 10px 16px max(14px, env(safe-area-inset-bottom)); min-height: 52px; }
.gv-cat { margin: 0 0 3px; font-size: 12px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--gold); }
.gv-alt { margin: 0; font-size: 14.5px; line-height: 1.45; color: var(--paper); }
.gv-cat[hidden], .gv-alt[hidden] { display: none; }
@media (max-width: 767px) { .gv-prev, .gv-next { display: none; } }
.gv-in-r { animation: gv-r .22s ease-out; } .gv-in-l { animation: gv-l .22s ease-out; }
@keyframes gv-r { from { transform: translate3d(40px, 0, 0); opacity: .35; } to { transform: none; opacity: 1; } }
@keyframes gv-l { from { transform: translate3d(-40px, 0, 0); opacity: .35; } to { transform: none; opacity: 1; } }
@media (prefers-reduced-motion: reduce) { .gv-in-r, .gv-in-l { animation: none; } .gg-a img { transition: none; } }
.ow-empty { padding: 22px; border: 1px dashed var(--gold-hair); border-radius: 14px; color: var(--paper-dim); margin: 0 0 22px; }
.ow-gal-cta { display: flex; flex-wrap: wrap; gap: 10px; }
.ow-res .form { max-width: 560px; }
.ow-res .form-fail { display: none; }
.ow-res .err { display: none; }

/* ── Home, owner layout (brief §02) ─────────────────────────────────────────────────────── */
.own-nav { background: var(--ink-2); border-bottom: 1px solid var(--gold-hair); position: relative; z-index: 5; }
.own-nav > .wrap > ul { list-style: none; margin: 0; padding: 0; display: flex; gap: 4px; overflow-x: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
.own-nav > .wrap > ul::-webkit-scrollbar { display: none; }
.own-nav a { display: inline-flex; align-items: center; min-height: 44px; padding: 0 12px; white-space: nowrap; color: var(--paper); text-decoration: none;
  font-size: 12.5px; letter-spacing: .1em; text-transform: uppercase; font-weight: 600; }
.own-nav a:hover { color: var(--gold-lit); }
.own-nav li.nav-day a { color: var(--gold); }
/* Declutter (Cap, 2026-10-25): phones (<768px) show Tonight · Events · Specials · Menu · Reserve and "More" (a native
   <details> disclosure: the rest of the sections in a sheet under the row, 44px targets, Esc / outside tap / Close shut
   it). 768px and up: every section in one row, no Reserve text link (the gold Reserve button is in the bar). */
.own-nav .nav-short, .own-nav li.nav-ph, .own-nav li.nav-more-li { display: none; }
.nav-more > summary { list-style: none; display: inline-flex; align-items: center; gap: 4px; min-height: 44px; padding: 0 6px; cursor: pointer;
  color: var(--gold-lit); font-size: 12px; letter-spacing: .06em; text-transform: uppercase; font-weight: 600; -webkit-tap-highlight-color: transparent; }
.nav-more > summary::-webkit-details-marker { display: none; }
.nav-more > summary svg { transition: transform .2s ease; }
.nav-more[open] > summary svg { transform: rotate(180deg); }
.nav-sheet { position: absolute; left: 0; right: 0; top: 100%; z-index: 40; padding: 8px var(--gutter) 12px; background: var(--ink-2);
  border-bottom: 1px solid var(--gold-hair); box-shadow: 0 18px 30px -12px rgba(0,0,0,.8); }
.nav-sheet ul { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 6px; }
.nav-sheet a { display: flex; width: 100%; min-height: 44px; padding: 0 12px; border: 1px solid var(--line); border-radius: 10px; background: var(--glass); font-size: 14px; letter-spacing: 0; text-transform: none; }
.nav-sheet .nav-close { display: block; width: 100%; min-height: 44px; margin-top: 8px; border: 1px solid var(--gold-hair); border-radius: 10px;
  background: transparent; color: var(--paper); font: 600 13px/1 var(--body); letter-spacing: .08em; text-transform: uppercase; cursor: pointer; }
@media (max-width: 767.98px) {
  .own-nav > .wrap > ul { overflow: visible; gap: 0; justify-content: space-between; flex-wrap: wrap; }
  /* One row from 360px in both languages: sentence case, tighter (EN ≈ 300px, ES ≈ 320px of 328); narrower phones wrap to two rows, never sideways. */
  .own-nav > .wrap > ul > li > a, .own-nav .nav-more > summary { padding: 0 3px; font-size: 12px; letter-spacing: 0; text-transform: none; }
  .own-nav .nav-more > summary svg { width: 12px; height: 12px; }
  .own-nav li.nav-x { display: none; }
  .own-nav li.nav-ph, .own-nav li.nav-more-li { display: list-item; }
  .own-nav .nav-full { display: none; }
  .own-nav .nav-short { display: inline; }
}
/* Tablets and small laptops: the full row, tighter, so all ten fit in one row from 768px. */
@media (min-width: 768px) and (max-width: 1099.98px) { .own-nav > .wrap > ul { gap: 0; justify-content: space-between; } .own-nav > .wrap > ul > li > a { padding: 0 6px; font-size: 11.5px; letter-spacing: .05em; } }
@media (max-width: 352px) { .own-nav > .wrap > ul > li > a, .own-nav .nav-more > summary { font-size: 11px; padding: 0 2px; } }
@media (prefers-reduced-motion: reduce) { .nav-more > summary svg { transition: none; } }
.hero-own .own-sub { margin-bottom: 12px; }
.tn-block { margin: 0 0 12px; padding: 12px 14px; border-left: 3px solid var(--gold); background: rgba(11,10,14,.55); backdrop-filter: blur(4px); border-radius: 0 12px 12px 0; max-width: 560px; }
.tn-eyebrow { margin: 0 0 4px; font-size: 13px; color: var(--paper); }
.tn-eyebrow .tag { margin: 0 6px 0 0; }
.tn-doors { color: var(--paper-dim); }
.tn-name { margin: 0; font-family: var(--display); font-size: clamp(26px, 7vw, 38px); letter-spacing: .03em; line-height: 1.05; }
.tn-name a { color: var(--gold-lit); text-decoration: none; }
.tn-event { margin: 4px 0 0; font-weight: 600; }
.tn-special { margin: 6px 0 0; font-size: 14px; color: #FFC9DC; }
.own-cta .btn-ghost[hidden] { display: none; }
.rail-offer a { border-color: var(--pink); }
.rail-offer .rail-day { color: #FFC9DC; }
.rail-offer.is-now a { box-shadow: 0 0 0 1px var(--pink), 0 0 26px -8px rgba(255,45,122,.9); }
.own-sec { padding: clamp(36px, 7vw, 64px) 0 0; }
.own-sub2 { color: var(--paper-dim); margin: -4px 0 16px; max-width: 60ch; }
.own-chips { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.own-chips a { display: inline-flex; align-items: center; min-height: 46px; padding: 8px 16px; border-radius: 999px; border: 1px solid rgba(232,181,74,.55);
  background: rgba(232,181,74,.08); color: var(--gold-lit); text-decoration: none; font-weight: 600; font-size: 14.5px; }
.own-chips a:hover { background: rgba(232,181,74,.18); }
.own-cards { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; grid-template-columns: repeat(auto-fill, minmax(min(240px, 100%), 1fr)); }
.own-cards a { position: relative; display: block; border-radius: 14px; overflow: hidden; text-decoration: none; color: var(--paper); border: 1px solid var(--gold-hair); }
.own-cards img { width: 100%; height: auto; aspect-ratio: 16 / 9; object-fit: cover; display: block; filter: brightness(.62); }
.own-cards span { position: absolute; left: 0; right: 0; bottom: 0; padding: 12px 14px; font-family: var(--display); font-size: 24px; letter-spacing: .03em; color: var(--gold-lit);
  background: linear-gradient(180deg, transparent, rgba(11,10,14,.9)); overflow-wrap: anywhere; }
.own-btns { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 6px; }
.own-posts { list-style: none; margin: 0 0 12px; padding: 0; display: grid; gap: 10px; grid-template-columns: repeat(auto-fill, minmax(min(280px, 100%), 1fr)); }
.own-posts a { display: flex; flex-direction: column; gap: 4px; height: 100%; padding: 14px 16px; border: 1px solid var(--line); border-radius: 12px; text-decoration: none; color: var(--paper); background: var(--glass); }
.own-posts b { color: var(--gold-lit); font-size: 17px; }
.own-posts span { color: var(--paper-dim); font-size: 14px; }
.own-visit-grid { display: grid; gap: 18px; grid-template-columns: repeat(auto-fit, minmax(min(300px, 100%), 1fr)); }
.own-big { font-size: clamp(20px, 5vw, 28px); margin: 0 0 10px; overflow-wrap: anywhere; }
.own-big a { color: var(--gold-lit); }
.own-visit { padding-bottom: clamp(30px, 6vw, 56px); }
/* The persistent phone bar (R1): always up on the owner layout, never hidden by the scroll script. */
.dock.dock-own { transform: none; pointer-events: auto; }
/* Night pages (declutter, Cap 2026-10-25): the bar waits while the hero's own Reserve button is on screen. It is fixed,
   so nothing on the page moves; it slides (no slide under prefers-reduced-motion). */
.dock.dock-own.dock-wait { transform: translate3d(0, 110%, 0); pointer-events: none; visibility: hidden;
  transition: transform .28s ease, visibility 0s linear .28s; }
.dock.dock-own:not(.dock-wait) { transition: transform .28s ease, visibility 0s; }
@media (prefers-reduced-motion: reduce) { .dock.dock-own, .dock.dock-own.dock-wait { transition: none; } }
@media (max-width: 899px) { body { padding-bottom: calc(56px + env(safe-area-inset-bottom)); } }

/* A long eyebrow (guide category) wraps instead of pushing a 280px screen sideways. */
.eyebrow { white-space: normal; overflow-wrap: anywhere; }

/* ── Round 2 (Cap): the three gold reservation segments, Call now · Text now ─────────────── */
.own-seg { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0; margin: 4px 0 10px; border-radius: 14px; overflow: hidden;
  border: 1px solid rgba(255,255,255,.35); box-shadow: 0 10px 28px -12px rgba(232,181,74,.9); }
.own-seg .seg { position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 5px; min-height: 64px; padding: 10px 6px;
  background: linear-gradient(180deg, var(--gold-lit) -20%, var(--gold) 35%, var(--gold-deep) 100%); color: #17120A; text-decoration: none; text-align: center;
  font-weight: 800; font-size: 12px; letter-spacing: .06em; text-transform: uppercase; line-height: 1.15; overflow: hidden; }
.own-seg .seg + .seg { border-left: 1px solid rgba(23,18,10,.35); }
.own-seg .seg:hover { filter: brightness(1.08); }
.own-seg .seg:focus-visible { outline: 3px solid var(--focus); outline-offset: -3px; z-index: 1; }
.own-seg .seg:active { filter: brightness(.94); }
.own-seg .seg span { overflow-wrap: anywhere; }
@media (min-width: 760px) { .own-seg .seg { flex-direction: row; gap: 8px; min-height: 56px; font-size: 13.5px; } }
@media (max-width: 339px) { .own-seg { grid-template-columns: 1fr 1fr; } .own-seg .seg:first-child { grid-column: 1 / -1; } .own-seg .seg:nth-child(2) { border-left: 0; } .own-seg .seg:nth-child(n+2) { border-top: 1px solid rgba(23,18,10,.35); } }
.own-cta2 { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.own-cta2 .btn { justify-content: center; }
.own-cta2 .btn[hidden] { display: none; }
.own-dir { display: none; margin: 8px 0 0; font-size: 14px; }
.own-dir a { color: var(--gold-lit); }
@media (min-width: 900px) { .own-dir { display: block; } }
#f-type.is-pick { outline: 2px solid var(--gold); outline-offset: 2px; }

/* ── Special events (Marco) ──────────────────────────────────────────────────────────────── */
.own-events { margin: 18px 0 0; }
.oe-head { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; margin: 0 0 10px; }
.oe-head h2 { margin: 0; font-size: clamp(24px, 6vw, 32px); }
.oe-head a { color: var(--gold-lit); font-size: 14px; white-space: nowrap; }
.ev-grid { list-style: none; margin: 0 0 22px; padding: 0; display: grid; gap: 12px; grid-template-columns: repeat(auto-fill, minmax(min(300px, 100%), 1fr)); }
.ev-card { display: flex; flex-direction: column; border: 1px solid var(--gold-hair); border-radius: var(--radius); overflow: hidden; background: rgba(19,17,24,.92); }
.ev-media img { width: 100%; height: auto; aspect-ratio: 16 / 9; object-fit: cover; display: block; }
.ev-in { display: flex; flex-direction: column; gap: 6px; padding: 12px 14px 14px; }
.ev-when { font-size: 12px; letter-spacing: .14em; text-transform: uppercase; color: var(--gold); font-weight: 700; }
.ev-title { font-family: var(--display); font-size: 24px; letter-spacing: .03em; color: var(--gold-lit); line-height: 1.08; overflow-wrap: anywhere; }
.ev-detail { font-size: 14px; color: var(--paper-dim); }
.ev-price { font-weight: 700; color: var(--paper); }
.ev-buy { margin-top: 4px; justify-content: center; }
.ev-buy[disabled] { opacity: .7; cursor: not-allowed; }
.ev-home .ev-card { flex-direction: row; }
.ev-home .ev-media { flex: 0 0 34%; }
.ev-home .ev-media img { height: 100%; aspect-ratio: auto; }
.ev-past summary { cursor: pointer; color: var(--paper-dim); margin: 0 0 12px; }
.rail-ticket a { border-color: var(--gold); }
.rail-ticket .rail-day { color: #17120A; background: var(--gold); padding: 1px 6px; border-radius: 4px; align-self: flex-start; }

/* Round 2 fixes: the day · doors line sits on its own line and never orphans "PM"; the autoplay
   fallback is a small pill top-right of the hero media, never over the reserve segments. */
.tn-when { display: block; white-space: nowrap; margin-top: 6px; }
@media (min-width: 560px) { .tn-when { display: inline; margin-top: 0; } }
.hero-own .hero-play { left: auto; right: 12px; top: 12px; transform: none; padding: 6px 12px 6px 8px; gap: 6px; font-size: 12px; z-index: 4; }
.hero-own .hero-play svg { width: 16px; height: 16px; }

/* ── Round 3 (Cap, iPhone review) ─────────────────────────────────────────────────────────── */
/* The events block is part of the hero, not a page section: no section padding (that was the gap). */
.hero-own .own-events { padding: 0; }
/* Wide screens: the hero grows with what is in it instead of a fixed viewport height. */
@media (min-width: 1100px) { .hero-own { height: auto; max-height: none; } }
.ow-two { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.ow-two .ow-card-h { font-size: clamp(18px, 4.6vw, 25px); }
.ow-two .ow-card-sub { display: none; }
@media (min-width: 760px) { .ow-two .ow-card-sub { display: block; } }
/* Celebration pages: "Plan your celebration" above the fold on a phone. */
@media (max-width: 759px) { .ow-hero { padding-top: 64px; } .ow-hero .ow-h1 { font-size: clamp(30px, 8.4vw, 44px); } }

/* ── Careers (Cap, 2026-10-07) ──────────────────────────────────────────────────────────── */
.cr-roles { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; grid-template-columns: repeat(auto-fill, minmax(min(280px, 100%), 1fr)); }
.cr-role { border: 1px solid var(--gold-hair); border-radius: 14px; padding: 14px 16px; background: var(--ink-2); }
.cr-role h3 { margin: 0 0 4px; font-size: 22px; color: var(--gold-lit); }
.cr-role p { margin: 0 0 8px; font-size: 14.5px; }
.cr-role details summary { cursor: pointer; color: var(--paper-dim); font-size: 13.5px; }
.cr-role ul { margin: 6px 0 0; padding-left: 18px; font-size: 14px; }
.cr-pay { font-weight: 600; }
.cr-form { max-width: 720px; }
.cr-form fieldset { border: 1px solid var(--line); border-radius: 12px; padding: 12px 14px; margin: 0 0 16px; min-width: 0; }
.cr-form legend { padding: 0 6px; font-weight: 600; }
.cr-grid { display: grid; gap: 6px 14px; grid-template-columns: repeat(auto-fill, minmax(min(210px, 100%), 1fr)); margin: 4px 0 10px; }
.cr-days { grid-template-columns: repeat(auto-fill, minmax(72px, 1fr)); }
.cr-chk { display: flex; align-items: center; gap: 8px; min-height: 40px; font-size: 15px; }
.cr-chk input { width: 20px; height: 20px; accent-color: var(--gold); flex: none; }
.cr-chk:has(input:disabled) { opacity: .5; } .cr-chk input:disabled { cursor: not-allowed; }
.cr-roles-note { margin: 0; min-height: 1.4em; color: var(--gold-lit); font-size: 14px; }
.cr-yn { display: flex; flex-wrap: wrap; gap: 6px 22px; align-items: center; }
.cr-yn legend { width: 100%; }
.cr-form .form-fail { display: none; }
.cr-legal { max-width: 720px; font-size: 13.5px; color: var(--paper-dim); margin-top: 18px; }
.cr-ok { font-size: 18px; font-weight: 600; }

/* ── Round 4 (Cap): the condensed hero — headline, one tonight line, one happy-hour pill, the
   three segments and Call · Text. Fits one iPhone screen above the bottom bar. ────────────── */
.hero-own { min-height: 0; padding-top: 22px; padding-bottom: 22px; }
.hero-own h1 { font-size: clamp(38px, 11vw, 96px); margin-bottom: 10px; }
@media (min-width: 900px) { .hero-own h1 { font-size: clamp(52px, 5.6vw, 84px); } }
.tn-line { margin: 0 0 10px; font-size: 15px; line-height: 1.45; color: var(--paper); text-shadow: 0 1px 10px rgba(0,0,0,.85);
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.tn-line .tn-k { color: var(--gold); font-weight: 700; letter-spacing: .14em; text-transform: uppercase; font-size: 12px; }
.tn-line .tn-dot { color: var(--paper-dim); }
.tn-line a { color: var(--gold-lit); font-weight: 700; text-decoration: none; }
.tn-line .deal-chip { font-size: 10px; vertical-align: 1px; }
.tn-line .tn-special-t { color: #FFC9DC; }
.hh-pill-row { position: relative; margin: 0 0 12px; }
.hh-pill { display: inline-flex; align-items: center; gap: 2px; padding: 5px 12px; border-radius: 999px; border: 1px solid var(--pink); background: rgba(11,10,14,.55);
  color: #FFC9DC; font: 600 13px/1.2 var(--body); letter-spacing: .04em; cursor: pointer; }
.hh-pill:focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; }
.hh-tip { position: absolute; left: 0; top: calc(100% + 6px); z-index: 6; max-width: 300px; padding: 8px 12px; border-radius: 10px; background: var(--ink-2);
  border: 1px solid var(--pink); color: var(--paper); font-size: 13.5px; box-shadow: 0 10px 30px rgba(0,0,0,.6); }
.hh-tip[hidden] { display: none; }
.own-seg { margin: 0 0 8px; }
.own-seg .seg { min-height: 56px; padding: 8px 6px; }
@media (min-width: 760px) { .own-seg .seg { min-height: 52px; } }
.own-cta2 { gap: 8px; }
.own-cta2 .btn { min-height: 44px; padding-top: 8px; padding-bottom: 8px; }
.own-dir { margin-top: 6px; }
/* Narrow phones: the play pill shrinks to its icon so it never sits on the headline (label stays in aria-label). */
@media (max-width: 379px) { .hero-own .hero-play { font-size: 0; gap: 0; padding: 6px; } .hero-own .hero-play svg { width: 14px; height: 14px; } }
/* The happy-hour pill stays one line on narrow phones. */
.hero-own .hh-pill .hh-label { font-size: 16px; white-space: nowrap; }
@media (max-width: 379px) { .hero-own .hh-pill { font-size: 11px; padding: 4px 10px; } .hero-own .hh-pill .hh-label { font-size: 13px; } }

/* ── Round 5 (Cap: "Too crowded. Retry."): the hero is exactly four things with air between them —
   headline · one plain Tonight line · the three segments · Call now · Text now. Tonight's deal and the
   happy-hour special moved to the first card of Trending Now; events sit below the hero. ─────────── */
.hero-own { padding-top: 26px; padding-bottom: 26px; }
.hero-own .hero-in > * { margin-top: 0; }
.hero-own h1 { font-size: clamp(34px, 10vw, 96px); margin-bottom: 24px; }
@media (min-width: 900px) { .hero-own h1 { font-size: clamp(52px, 5.6vw, 84px); } }
.hero-own .tn-line { margin: 0 0 26px; }
.hero-own .tn-line .tn-k { font-size: 12px; }
.hero-own .own-seg { margin: 0 0 24px; }
.hero-own .own-cta2 { margin: 0; }
@media (min-width: 900px) { .hero-own { padding-top: 48px; padding-bottom: 48px; } .hero-own .tn-line { margin-bottom: 32px; } .hero-own .own-seg { margin-bottom: 28px; } }
/* The autoplay fallback: a small round play icon, bottom-right of the media, no label (aria-label stays). */
.hero-own .hero-play { top: auto; left: auto; right: 12px; bottom: 12px; width: 36px; height: 36px; padding: 0; gap: 0;
  border-radius: 50%; font-size: 0; justify-content: center; transform: none; }
.hero-own .hero-play svg { width: 16px; height: 16px; margin: 0; }
/* Events: below the hero and the rail. */
.own-ev-out { background: var(--ink); }
.own-ev-out .own-events { margin: 0; padding: 22px 0 8px; }
/* Trending Now, first card: Tonight — night name, the deal, the happy hour with its special, Reserve. */
.rail-tn .rail-tn-in { display: flex; flex-direction: column; gap: 6px; height: 100%; padding: 12px 14px; border-radius: 14px;
  border: 1px solid var(--gold); background: linear-gradient(160deg, rgba(232,181,74,.12), rgba(11,10,14,.9) 60%);
  box-shadow: 0 0 0 1px var(--gold), 0 0 26px -8px rgba(232,181,74,.8); }
.rail-tn .rail-day { color: var(--gold); }
.rail-tn .rail-tn-name { text-decoration: none; }
.rail-tn-deal, .rail-tn-hh { font-size: 13px; line-height: 1.35; color: var(--paper); }
.rail-tn-deal .deal-chip { font-size: 10px; vertical-align: 1px; }
.rail-tn-hh .rtn-hh-l { color: #FFC9DC; font-weight: 700; }
.rail-tn-hh .rtn-hh-s { color: #FFC9DC; }
.rail-tn-res { margin-top: auto; align-self: flex-start; display: inline-flex; align-items: center; min-height: 36px; color: var(--gold); font-weight: 700; text-decoration: none; }
.rail-tn-deal[hidden], .rail-tn-hh[hidden] { display: none; }
.rail-card.rail-tn a { display: inline-flex; grid-template-columns: none; min-height: 0; height: auto; border: 0; border-radius: 0; background: none; overflow: visible; box-shadow: none; position: static; }
.rail-card.rail-tn a.rail-tn-res { min-height: 36px; }
@media (min-width: 860px) { .rail-card.rail-tn a { min-height: 0; } }
/* Phones: room under Call · Text for the round play icon, so it never sits on a button. */
@media (max-width: 899px) { .hero-own { padding-bottom: 60px; } }
.rail-card.rail-tn .rail-tn-in { position: relative; }
.rail-card.rail-tn a::before, .rail-card.rail-tn a::after { content: none; display: none; }

/* ── Final QA (2026-10-07) ─────────────────────────────────────────────────────────────── */
/* Tap targets ≥ 44px: the hit area grows, the type does not. */
.bar .wordmark { display: inline-flex; align-items: center; min-height: 44px; }
.langsw a { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; min-width: 44px; }
footer .foot-grid > div > a { display: flex; align-items: center; min-height: 44px; width: fit-content; }
footer .foot-grid > div > br { display: none; }
footer .foot-lang a { display: inline-flex; align-items: center; min-height: 44px; padding: 0 6px; }
.oe-head a { display: inline-flex; align-items: center; min-height: 44px; }
#ov-call { display: inline-flex; align-items: center; min-height: 44px; }
main a[href^="sms:"]:not(.btn), main a[href^="tel:"]:not(.btn) { display: inline-flex; align-items: center; min-height: 44px; }
.hh-pill { min-height: 44px; }
.ow-chips a { display: inline-flex; align-items: center; min-height: 44px; }
main details > summary { min-height: 44px; padding-top: 10px; padding-bottom: 10px; box-sizing: border-box; }
.check { position: relative; min-height: 44px; display: flex; align-items: flex-start; gap: 10px; }
.check input[type="checkbox"] { width: 22px; height: 22px; margin: 11px 0 0; flex: 0 0 auto; }
.check label { padding: 10px 0; }
.check-links { margin: -6px 0 12px 32px; font-size: 14px; }
.check-links a { text-decoration: underline; display: inline-block; padding: 12px 4px; }
/* 280px: buttons wrap instead of overflowing ("Bottles & bites: see the menu"). */
.btn { max-width: 100%; white-space: normal; text-align: center; }
/* The hero Tonight line: natural height, so the two-line rule can measure it (no clamp). */
.hero-own .tn-line { display: block; -webkit-line-clamp: unset; overflow: visible; }
/* An #anchor lands below the sticky header (the gate re-scroll, /celebrate/#parties). */
main [id] { scroll-margin-top: 120px; }

/* ── Round 6 (Cap): Marco's tagline under the headline and the neon HAPPY HOUR sign return. ── */
.hero-own h1 { font-size: clamp(32px, 9.4vw, 96px); margin-bottom: 8px; }
@media (min-width: 900px) { .hero-own h1 { font-size: clamp(52px, 5.6vw, 84px); } }
.hero-own .own-sub { margin: 0 0 20px; }
.hero-own .tn-line { margin: 0 0 20px; }
.hero-own .hh-banner { margin: 0 0 20px; }
.hero-own .own-seg { margin: 0 0 20px; }
@media (min-width: 900px) { .hero-own .own-sub { margin-bottom: 26px; } .hero-own .tn-line, .hero-own .hh-banner { margin-bottom: 26px; } .hero-own .own-seg { margin-bottom: 24px; } }

/* ── Round 7 (Cap): Tonight as a light-touch card, and the clip visible behind the whole hero. ── */
.hero-own .hero-shade { background:
  linear-gradient(180deg, rgba(11,10,14,.42) 0%, rgba(11,10,14,.12) 28%, rgba(11,10,14,.16) 70%, rgba(11,10,14,.78) 100%); }
.hero-own h1, .hero-own .own-sub, .hero-own .tn-card, .hero-own .hh-banner { text-shadow: 0 2px 14px rgba(0,0,0,.95), 0 0 2px rgba(0,0,0,.8); }
.hero-own .tn-card { margin: 28px 0; padding: 4px 0 4px 16px; border-left: 2px solid var(--gold); background: rgba(11,10,14,.14); border-radius: 0 10px 10px 0; }
.hero-own .tn-card p { margin: 0; }
.hero-own .tn-card p + p { margin-top: 11px; }
.hero-own .tn-eb .tag { display: inline-block; padding: 4px 12px; border: 1px solid var(--gold); border-radius: 999px; font-size: 11px; letter-spacing: .22em;
  text-transform: uppercase; color: var(--gold); background: rgba(11,10,14,.35); text-shadow: none; }
.hero-own .tn-when { font-size: 15px; color: var(--paper); }
.hero-own .tn-when .tn-doors { color: var(--paper-dim); }
.hero-own .tn-name a { font-family: var(--display); font-size: clamp(26px, 7.4vw, 40px); line-height: 1.05; letter-spacing: .03em; color: var(--gold-lit); text-decoration: none; text-transform: uppercase; }
.hero-own .tn-deal { font-size: 15px; color: #FFC9DC; }
.hero-own .tn-deal .deal-chip { font-size: 11px; vertical-align: 1px; text-shadow: none; }
.hero-own .own-sub { margin-bottom: 0; }
.hero-own .hh-banner { margin: 0 0 22px; }
/* Gradient-clipped headline and the neon sign keep their own glow: a dark text-shadow would show through them. */
.hero-own h1 { text-shadow: none; }
.hero-own h1 .l2 { text-shadow: 0 2px 14px rgba(0,0,0,.95); }
.hero-own .hh-banner { text-shadow: none; }
.hero-own .hh-banner .hh-text { text-shadow: 0 2px 10px rgba(0,0,0,.95), 0 0 2px rgba(0,0,0,.9); }
/* A soft local dusk behind the neon so it reads over bright frames of the clip. */
.hero-own .hh-banner { background: radial-gradient(70% 90% at 28% 50%, rgba(11,10,14,.5), rgba(11,10,14,0) 72%); }
/* Round 8 (Cap): headline one step up (~+15%), both lines (the second is .52em of the first). */
.hero-own h1 { font-size: clamp(37px, 10.8vw, 110px); }
@media (min-width: 900px) { .hero-own h1 { font-size: clamp(60px, 6.4vw, 96px); } }
/* Round 8b (Cap): headline one more step (~+30% vs round 5); the neon sign at ~60% with its glow. */
.hero-own h1 { font-size: clamp(42px, 12.2vw, 124px); }
@media (min-width: 900px) { .hero-own h1 { font-size: clamp(68px, 7.2vw, 108px); } }
.hero-own .hh-banner .hh-label { font-size: clamp(24px, 7.2vw, 46px); }
.hero-own .hh-banner .hh-text { font-size: clamp(10px, 2.9vw, 12.5px); }
@media (min-width: 900px) { .hero-own .hh-banner .hh-label { font-size: clamp(27px, 2.7vw, 38px); } }
/* Round 9 (Cap): neon sign at ~80% of the original (between the original and 60%), hours to match. */
.hero-own .hh-banner .hh-label { font-size: clamp(32px, 9.6vw, 61px); }
.hero-own .hh-banner .hh-text { font-size: clamp(10.5px, 3vw, 13px); }
@media (min-width: 900px) { .hero-own .hh-banner .hh-label { font-size: clamp(35px, 3.5vw, 51px); } }
/* Round 10 (Cap): no box, strip or side rules behind the neon — text straight on the backdrop. */
.hero-own .hh-banner { background: none; border: 0; box-shadow: none; padding: 0; }
.hero-own .hh-banner .hh-text::before, .hero-own .hh-banner .hh-text::after { content: none; display: none; }
.hero-own .hh-banner .hh-label { filter: drop-shadow(0 2px 6px rgba(0,0,0,.55)); }
.hero-own .hh-banner .hh-text { font-weight: 600; text-shadow: 0 1px 2px rgba(0,0,0,.95), 0 2px 12px rgba(0,0,0,.95), 0 0 24px rgba(0,0,0,.8); }
/* Careers redo: the three intro lines read as one block, the form follows close behind. */
.lp-body[data-w3p-sec="careers"] { padding-top: 0; }
.cr-intro p { margin: 0 0 10px; color: var(--paper-dim); }
.cr-form-sec { margin-top: 18px; }
/* Build flag HERO_TONIGHT_CARD = False (src/build.py): the hero's Tonight card keeps its space but is not shown. */
.hero-own.tn-off .tn-card { visibility: hidden; }
/* Bottles & bites strip under Monday–Sunday (Cap, 2026-10-08). */
.own-bb .own-bb-tiles { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 10px; max-width: 640px; }
.own-bb .own-bb-tiles a { display: flex; align-items: center; gap: 10px; min-height: 64px; padding: 12px 14px; border: 1px solid var(--gold); border-radius: 14px;
  color: var(--gold-lit); text-decoration: none; font-weight: 700; background: rgba(232,181,74,.06); }
.own-bb .own-bb-tiles a:hover, .own-bb .own-bb-tiles a:focus-visible { background: rgba(232,181,74,.14); }
.own-bb .own-bb-tiles svg { flex: 0 0 auto; color: var(--gold); }
.own-bb .own-bb-hh { margin: 12px 0 0; color: #FFC9DC; font-size: 14.5px; }
.nt-sec[id] { scroll-margin-top: 120px; }

/* ── /menu/ (Marco's real menu, 2026-10-09): two halves, compact cards, no prices. ───────────── */
.mn-top .mn-prices { color: var(--gold-lit); }
.mn-tabs { position: sticky; top: var(--bar-h, 62px); z-index: 20; background: rgba(11,10,14,.92); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
  border-top: 1px solid var(--gold-hair); border-bottom: 1px solid var(--gold-hair); }
.mn-tabs .wrap { display: flex; gap: 8px; padding-top: 8px; padding-bottom: 8px; }
.mn-tabs a { flex: 1 1 0; display: inline-flex; align-items: center; justify-content: center; min-height: 44px; border: 1px solid var(--gold); border-radius: 999px;
  color: var(--gold-lit); font-weight: 700; letter-spacing: .12em; text-transform: uppercase; font-size: 13px; text-decoration: none; }
.mn-tabs a:hover, .mn-tabs a:focus-visible { background: rgba(232,181,74,.14); }
@media (min-width: 900px) { .mn-tabs a { flex: 0 0 auto; padding: 0 28px; } }
.mn-body { padding-top: 18px; }
.mn-grp { scroll-margin-top: 130px; margin-bottom: 30px; }
.mn-grp-h { margin: 18px 0 12px; }
.mn-hero { border-radius: 14px; overflow: hidden; aspect-ratio: 16 / 6; border: 1px solid var(--gold-hair); }
.mn-hero img { display: block; width: 100%; height: 100%; object-fit: cover; }
.mn-cards { display: grid; grid-template-columns: 1fr; gap: 12px; }
@media (min-width: 900px) { .mn-cards { grid-template-columns: 1fr 1fr; } }
.mn-card { border: 1px solid var(--gold-hair); border-radius: 14px; background: rgba(255,255,255,.02); overflow: hidden; }
.mn-card-h { display: flex; align-items: center; gap: 8px; margin: 0; padding: 10px 14px; background: linear-gradient(90deg, rgba(232,181,74,.22), rgba(232,181,74,.04));
  border-bottom: 1px solid var(--gold-hair); color: var(--gold-lit); font-family: var(--display); font-size: 21px; letter-spacing: .05em; font-weight: 400; }
.mn-ic { color: var(--gold); flex: 0 0 auto; }
.mn-items { list-style: none; margin: 0; padding: 10px 14px 12px; display: grid; grid-template-columns: 1fr 1fr; gap: 8px 14px; }
@media (max-width: 339px) { .mn-items { grid-template-columns: 1fr; } }
@media (min-width: 900px) { .mn-items { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 1200px) { .mn-items { grid-template-columns: repeat(3, 1fr); } }
.mn-items li { display: flex; flex-direction: column; min-width: 0; }
.mn-n { color: var(--paper); font-size: 15px; line-height: 1.3; font-weight: 600; overflow-wrap: anywhere; }
.mn-d { color: var(--paper-dim); font-size: 12.5px; line-height: 1.35; font-weight: 400; }
.mn-chips-k { margin: 0 14px 6px; font-size: 11px; letter-spacing: .18em; text-transform: uppercase; color: var(--gold); }
.mn-chips { list-style: none; margin: 0 14px 12px; padding: 0; display: flex; flex-wrap: wrap; gap: 6px; }
.mn-chips li { padding: 5px 11px; border: 1px solid var(--gold-hair); border-radius: 999px; font-size: 13px; color: var(--paper); }
.mn-addon { margin: 0 14px 12px; padding-top: 8px; border-top: 1px dashed var(--gold-hair); font-size: 13.5px; color: var(--gold-lit); }
.own-bb .bb-t { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.own-bb .bb-t b { font-size: 16px; }
.own-bb .bb-t small { font-size: 12.5px; font-weight: 400; color: var(--paper-dim); line-height: 1.35; }
@media (max-width: 420px) { .own-bb .own-bb-tiles { grid-template-columns: 1fr; } }
.mn-hero { position: relative; aspect-ratio: auto; height: clamp(130px, 24vw, 260px); }
.mn-hero img { position: absolute; inset: 0; }
.lp-body.mn-body { padding-top: 14px; }
.mn-grp { padding: 0; } .mn-grp + .mn-grp { margin-top: 26px; }

/* ── Ticketed events (round 7): event page, checkout, tickets. ──────────────────────────────── */
.tk-demo { display: inline-block; padding: 3px 10px; border-radius: 999px; background: #FFD66B; color: #17120A; font: 700 11px/1.4 var(--body); letter-spacing: .16em; text-transform: uppercase; }
.ev-media { position: relative; }
.ev-media .tk-demo { position: absolute; top: 10px; left: 10px; }
.tk-demo-row { margin: 0 0 10px; }
.tk-testo { background: #FFC9DC; }
.tk-hero .tk-when { font-size: 17px; color: var(--paper); margin: 6px 0 2px; text-shadow: 0 1px 10px rgba(0,0,0,.9); }
.tk-hero .tk-where { color: var(--paper-dim); font-size: 14px; margin: 0; }
.tk-grid { display: grid; grid-template-columns: 1fr; gap: 22px; }
@media (min-width: 900px) { .tk-grid { grid-template-columns: minmax(0, 1fr) 440px; align-items: start; } }
.tk-buy, .tk-summary { border: 1px solid var(--gold-hair); border-radius: 16px; padding: 16px; background: rgba(255,255,255,.02); }
.tk-buy h2, .tk-summary h2 { margin-top: 0; }
.tk-tiers { list-style: none; margin: 0 0 12px; padding: 0; }
.tk-tier { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 0; border-bottom: 1px solid var(--gold-hair); }
.tk-tier:last-child { border-bottom: 0; }
.tk-tier.is-out { opacity: .55; }
.tk-t-txt { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.tk-t-name { color: var(--paper); font-size: 16px; }
.tk-t-detail { color: var(--paper-dim); font-size: 13px; }
.tk-t-meta { font-size: 13px; color: var(--paper-dim); }
.tk-t-price { color: var(--gold-lit); font-weight: 700; font-size: 15px; }
.tk-left { color: #FFC9DC; font-weight: 600; }
.tk-out { color: #FFC9DC; font-weight: 700; text-transform: uppercase; letter-spacing: .08em; }
.tk-step { display: inline-flex; align-items: center; gap: 4px; flex: 0 0 auto; }
.tk-btn { width: 44px; height: 44px; border-radius: 50%; border: 1px solid var(--gold); background: transparent; color: var(--gold-lit); font-size: 22px; line-height: 1; cursor: pointer; }
.tk-btn:focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; }
.tk-q { width: 44px; height: 44px; text-align: center; border-radius: 10px; border: 1px solid var(--gold-hair); background: var(--ink-2); color: var(--paper); font-size: 16px; -moz-appearance: textfield; }
.tk-q::-webkit-inner-spin-button, .tk-q::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }
.tk-sum { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px; margin: 4px 0 12px; font-size: 15px; color: var(--paper-dim); }
.tk-sum b { color: var(--gold-lit); font-size: 22px; }
.tk-fee { width: 100%; font-size: 12.5px; }
.tk-terms { margin: 0 0 14px; font-size: 13.5px; color: var(--paper-dim); }
.tk-terms summary { cursor: pointer; color: var(--gold); min-height: 32px; }
.tk-state { color: #FFC9DC; font-weight: 600; }
.tk-lines { list-style: none; margin: 0; padding: 0; }
.tk-lines li { display: flex; justify-content: space-between; gap: 10px; padding: 6px 0; border-bottom: 1px dashed var(--gold-hair); color: var(--paper); }
.tk-totl { display: flex; justify-content: space-between; margin: 10px 0 0; font-size: 16px; }
.tk-totl b { color: var(--gold-lit); font-size: 20px; }
.tk-change { display: inline-flex; align-items: center; min-height: 44px; color: var(--gold); }
.tk-test { border: 1px dashed #FFD66B; border-radius: 14px; padding: 12px 14px; margin: 14px 0; }
.tk-test legend { padding: 0 6px; color: #FFD66B; font-weight: 700; letter-spacing: .08em; font-size: 13px; }
.tk-note { color: var(--paper-dim); font-size: 13.5px; }
.tk-door { font-size: 16px; color: var(--paper); }
.tk-tickets { list-style: none; margin: 14px 0 20px; padding: 0; display: grid; grid-template-columns: 1fr; gap: 14px; }
@media (min-width: 700px) { .tk-tickets { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1100px) { .tk-tickets { grid-template-columns: repeat(3, 1fr); } }
.tk-ticket { display: flex; flex-direction: column; align-items: center; gap: 10px; padding: 16px; border: 1px solid var(--gold); border-radius: 16px; background: rgba(232,181,74,.05); }
.tk-ticket .qr { width: min(240px, 70vw); height: auto; border-radius: 8px; background: #fff; }
.tk-ticket.is-used { opacity: .6; }
.tk-tk-txt { display: flex; flex-direction: column; align-items: center; gap: 2px; text-align: center; }
.tk-code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; letter-spacing: .08em; color: var(--paper); font-size: 15px; }
.tk-tk-n { color: var(--paper-dim); font-size: 13px; }
.tk-card.is-out .ev-media img { filter: grayscale(.6); }

/* ── Round 7B (Cap: "not too many things going on"): a lighter home page. ───────────────────── */
/* Section row: at most 8 on phones (Visit and Reserve are already in the bottom bar). */
/* (The 2026-10 rule that hid Gallery / Visit / Reserve under 900px is replaced by the phone "More" row above.) */
/* Celebrate: four compact cards, two to a row on a phone. */
@media (max-width: 899px) {
  .own-cel .own-cards { grid-template-columns: 1fr 1fr; gap: 8px; }
  .own-cel .own-cards img { aspect-ratio: 4 / 3; }
  .own-cel .own-cards span { font-size: 17px; padding: 8px 10px; }
}
/* What you missed: folded into Inside Sweets as one scrolling row (its own heading kept for screen readers). */
.lwym { padding-top: 0 !important; margin-top: -6px; }
.lwym .eyebrow { display: none; }
.lwym h2 { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.lwym .lwym-grid { display: flex !important; flex-wrap: nowrap; overflow-x: auto; gap: 10px; scroll-snap-type: x mandatory; scrollbar-width: none; }
.lwym .lwym-grid::-webkit-scrollbar { display: none; }
.lwym .lwym-card { flex: 0 0 min(62vw, 260px); scroll-snap-align: start; }
.lwym .lwym-card figcaption { font-size: 12.5px; }
.own-inside { padding-bottom: 14px; }
/* Menu (Cap, 2026-10-09): the Bottles strip is the long bar (room-b), cropped on the counter and stools, a touch brighter. */
.mn-hero { height: clamp(150px, 26vw, 280px); }
.mn-hero img { object-position: 50% 66%; filter: brightness(1.25) saturate(1.05); }
/* Round 8 (Cap): the reel row under Inside Sweets has its own neon heading, "What you missed". */
.lwym h2.neon-h { position: static; width: auto; height: auto; overflow: visible; clip: auto; white-space: normal; margin: 22px 0 12px; }
/* Round 8 (Cap): the headline nearly fills a phone's width (~80% at 390), never overflowing at 280; desktop one step up. */
.hero-own h1 { font-size: clamp(40px, 17vw, 124px); }
@media (min-width: 900px) { .hero-own h1 { font-size: clamp(78px, 8.2vw, 124px); } }
/* Round 8 (Cap): with the big headline, everything through Call · Text stays above the phone's bottom bar.
   The switched-off Tonight card takes no space (HERO_TONIGHT_CARD = True brings it back with its spacing). */
.hero-own.tn-off .tn-card { display: none; }
.hero-own.tn-off .own-sub { margin-bottom: 36px; }
.hero-own .hh-banner { margin-bottom: 16px; }
.hero-own .own-seg { margin-bottom: 12px; }
/* Signature drinks: the club's two flyers side by side, each opening full size. */
.mn-flyers { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin: 0 0 12px; max-width: 640px; }
.mn-flyers a { display: block; border-radius: 12px; overflow: hidden; border: 1px solid var(--gold-hair); }
.mn-flyers img { display: block; width: 100%; height: auto; aspect-ratio: 2 / 3; object-fit: cover; }
/* Bottles & bites: three tiles — Bottles · Food · Frozen drinks & margaritas (the club's flyer behind the label). */
.own-bb .own-bb-tiles { grid-template-columns: 1fr 1fr; max-width: 960px; }
@media (min-width: 900px) { .own-bb .own-bb-tiles { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 899px) { .own-bb .bb-sig { grid-column: 1 / -1; } }
.own-bb .bb-sig a { min-height: 150px; align-items: flex-end; background-size: cover; background-position: center 30%; border-color: var(--pink); }
.own-bb .bb-sig .bb-t b { color: #FFC9DC; text-shadow: 0 2px 10px rgba(0,0,0,.9); font-size: 18px; }
.own-bb .bb-sig .bb-t small { color: var(--paper); }
@media (max-width: 420px) { .own-bb .own-bb-tiles { grid-template-columns: 1fr 1fr; } .own-bb .bb-t small { font-size: 11.5px; } .own-bb .own-bb-tiles a { padding: 10px; gap: 8px; } .own-bb .own-bb-tiles svg { width: 22px; height: 22px; } }

/* ── Marco's website specials (texts of 2026-10-10) ─────────────────────────────────────────── */
.ws-grid { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: 1fr; gap: 12px; }
@media (min-width: 760px) { .ws-grid { grid-template-columns: 1fr 1fr; } }
.ws-card { border: 1px solid var(--gold); border-radius: 16px; padding: 16px; background: linear-gradient(160deg, rgba(232,181,74,.14), rgba(11,10,14,.6) 70%); }
.ws-card h3 { margin: 0 0 6px; font-family: var(--display); font-weight: 400; font-size: 26px; letter-spacing: .03em; color: var(--gold-lit); }
.ws-line { margin: 0 0 8px; color: var(--paper); font-size: 16px; font-weight: 600; }
.ws-list { margin: 0 0 6px; color: var(--paper-dim); font-size: 13.5px; line-height: 1.5; }
.ws-list b { color: #FFC9DC; font-weight: 700; }
.ws-note { margin: 0; color: var(--gold); font-size: 13.5px; font-weight: 600; }
.ws-lines { margin: 6px 0 0; }
.ws-k { margin: 10px 0 2px; font-size: 11px; letter-spacing: .2em; text-transform: uppercase; color: var(--gold); }
.mn-ws { padding: 0 0 6px; }
.mn-ws-list { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
@media (max-width: 359px) { .mn-ws-list { grid-template-columns: 1fr; } }
.mn-ws-list a { display: flex; flex-direction: column; gap: 4px; height: 100%; padding: 12px; border: 1px solid var(--gold); border-radius: 14px; text-decoration: none; background: rgba(232,181,74,.08); }
.mn-ws-list b { color: var(--gold-lit); font-size: 14.5px; line-height: 1.25; }
.mn-ws-list span { color: var(--paper-dim); font-size: 12.5px; }
.mn-note { margin: 0; padding: 8px 14px; color: #FFC9DC; font-size: 13.5px; font-weight: 600; border-bottom: 1px dashed var(--gold-hair); }
.mn-tag { display: inline-block; margin-top: 2px; font-size: 10.5px; letter-spacing: .04em; color: #FFC9DC; border: 1px solid rgba(255,45,122,.5); border-radius: 999px; padding: 1px 7px; width: fit-content; }
/* Round 9 (Cap): the video shows through again — ~120px between the tagline and HAPPY HOUR — and the lower group
   ends near the hero's bottom edge (~24px under Call · Text). The play fallback moves to the top-right corner. */
.hero-own.tn-off .own-sub { margin-bottom: 120px; }
.hero-own { padding-bottom: 24px; }
@media (max-width: 899px) { .hero-own { padding-bottom: 24px; } }
@media (min-width: 900px) { .hero-own { padding-bottom: 24px; } .hero-own.tn-off .own-sub { margin-bottom: 140px; } }
.hero-own .hero-play { top: 12px; bottom: auto; right: 12px; }
/* Happy-hour specials (Cap, 2026-10-10: during happy hour only). */
.hero-own .hh-banner .hh-ws { display: block; margin-top: 2px; font-family: var(--body); font-size: clamp(10.5px, 3vw, 13px); letter-spacing: .06em; color: #FFC9DC; font-weight: 600;
  text-transform: none; text-shadow: 0 1px 2px rgba(0,0,0,.95), 0 2px 12px rgba(0,0,0,.95); white-space: nowrap; }
.hero-own .hh-banner .hh-ws[hidden] { display: none; }
.ws-only, .mn-ws-k { margin: -4px 0 12px; font-size: 12px; letter-spacing: .18em; text-transform: uppercase; color: #FFC9DC; font-weight: 700; }
@media (max-width: 379px) { .hero-own .hh-banner .hh-ws { white-space: normal; } }

/* Cap 2026-10-10: the happy-hour line breaks after the hours; the specials line never wraps (one step smaller under 360px). */
.hh-l2 { white-space: nowrap; }
@media (max-width: 359px) { .hh-l2 { font-size: .92em; } }

/* Booty & Bottles Saturday (Cap 2026-10-10): the whole flyer, 4:5, on the event page and the /events/ card. */
.tk-hero-flyer { min-height: 0; padding-top: 12px; background: #0b0710; }
.tk-hero-flyer .tk-flyer { padding: 0 16px; }
.tk-hero-flyer .tk-flyer-img { display: block; width: 100%; max-width: 560px; height: auto; aspect-ratio: 4 / 5; margin: 0 auto; border-radius: 14px; box-shadow: 0 10px 40px rgba(0,0,0,.6); }
.tk-hero-flyer .nt-hero-in { position: relative; padding-top: 18px; }
.tk-card-flyer .ev-media { aspect-ratio: 4 / 5; height: auto; }
.tk-card-flyer .ev-media img { aspect-ratio: 4 / 5; height: 100%; width: 100%; object-fit: contain; background: #0b0710; }

/* Specials & offers scroll (Cap 2026-10-10): sticky group row, grouped cards, 2-up on phones. */
.sc-filter { position: sticky; top: var(--bar-h, 62px); z-index: 20; background: rgba(11,7,16,.94); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); border-bottom: 1px solid rgba(255,201,220,.15); }
.sc-filter-in { display: flex; gap: 8px; overflow-x: auto; padding-top: 10px; padding-bottom: 10px; scrollbar-width: none; }
.sc-filter-in::-webkit-scrollbar { display: none; }
.sc-filter a { flex: 0 0 auto; display: inline-flex; align-items: center; min-height: 40px; padding: 0 14px; border-radius: 999px; border: 1px solid rgba(255,201,220,.35); color: var(--paper); text-decoration: none; font-size: 14px; font-weight: 600; white-space: nowrap; }
.sc-filter a:hover, .sc-filter a:focus-visible { background: rgba(255,45,138,.18); }
.sc-wrap { padding-top: 8px; }
.sc-group { scroll-margin-top: calc(var(--bar-h, 62px) + 70px); margin: 22px 0 6px; }
.sc-h { font-size: 20px; margin: 0 0 10px; color: var(--paper); }
.sc-grid { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
@media (min-width: 760px) { .sc-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; } }
@media (min-width: 1100px) { .sc-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.sc-card a { display: flex; flex-direction: column; height: 100%; border-radius: 14px; overflow: hidden; background: rgba(255,255,255,.04); border: 1px solid rgba(255,201,220,.14); color: var(--paper); text-decoration: none; }
.sc-media { display: block; aspect-ratio: 4 / 3; background: #0b0710; }
.sc-media img { display: block; width: 100%; height: 100%; object-fit: cover; }
.sc-txt { display: flex; flex-direction: column; gap: 4px; padding: 10px 10px 12px; }
.sc-chip { font-size: 11px; letter-spacing: .08em; text-transform: uppercase; color: #FFC9DC; font-weight: 700; }
.sc-t { font-size: 15px; line-height: 1.25; }
.sc-l { font-size: 13px; line-height: 1.35; color: var(--paper-dim); }
.sc-card.is-pending a { border-style: dashed; }

/* Cap (2026-10-10): the Tickets flyer is never cropped. Whole 4:5 image, contain, on a dark gold-tinted ground. */
.tk-card-flyer .ev-media { background: radial-gradient(120% 90% at 50% 30%, rgba(232,181,74,.22), rgba(19,15,10,.96) 70%); }
.tk-card-flyer .ev-media img { aspect-ratio: 4 / 5; width: 100%; height: auto; object-fit: contain; background: transparent; }
.ev-home .tk-card-flyer .ev-media img { height: auto; aspect-ratio: 4 / 5; }
@media (max-width: 759px) {
  .ev-home .tk-card-flyer { flex-direction: column; }
  .ev-home .tk-card-flyer .ev-media { flex: none; width: 100%; }
}
/* What's Happening TICKETS card: the whole flyer as the card, text on a bottom gradient. */
.rail-list { align-items: flex-start; }
.rail-card.rail-poster { flex: 0 0 min(56vw, 220px); }
.rail-card.rail-poster a { aspect-ratio: 4 / 5; min-height: 0; height: auto; }
.rail-card.rail-poster .rail-img { object-fit: cover; }
.rail-card.rail-poster a::before { background: linear-gradient(180deg, rgba(11,10,14,0) 45%, rgba(11,10,14,.82) 78%, rgba(11,10,14,.96) 100%); }
.rail-card.rail-poster .rail-txt { position: absolute; left: 0; right: 0; bottom: 0; margin: 0; min-height: 0; padding: 10px 12px 12px; justify-content: flex-end; }
.rail-card.rail-poster .rail-name { font-size: 20px; }
@media (min-width: 1100px) { .rail-card.rail-poster { width: 240px; } .rail-card.rail-poster .rail-txt { min-height: 0; margin: 0; } }
/* Desktop: the rail is a column again — cards stretch to its width; the poster keeps its own size. */
@media (min-width: 1100px) { .rail-list { align-items: stretch; } .rail-card.rail-poster { align-self: flex-start; } }
/* Spanish runs longer: the specials line scales down to stay on one line. */
:lang(es) .hh-l2 { font-size: min(1em, 3.3vw); }

/* Cap (2026-10-10, r14): every What's Happening card is the same fixed height — picture as cover, bottom gradient,
   text clamped — and the track is exactly one card tall (no dead space). The Tickets card uses the same frame with
   the flyer as its cover, centred on the lettering; the whole flyer stays on the event page and the Tickets section. */
:root { --rail-card-h: 300px; }
@media (min-width: 1100px) { :root { --rail-card-h: 320px; } }
.rail-list { align-items: stretch; }
.rail-card, .rail-card.rail-poster { flex: 0 0 min(72vw, 260px); width: auto; height: var(--rail-card-h); align-self: stretch; }
.rail-card a, .rail-card.rail-poster a { display: block; position: relative; height: var(--rail-card-h); min-height: 0; aspect-ratio: auto; overflow: hidden; }
.rail-card .rail-img, .rail-card.rail-poster .rail-img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center; }
.rail-card.rail-poster .rail-img { object-position: 50% 32%; }
.rail-card a::before, .rail-card.rail-poster a::before { background: linear-gradient(180deg, rgba(11,10,14,0) 30%, rgba(11,10,14,.78) 66%, rgba(11,10,14,.96) 100%); }
.rail-card .rail-txt, .rail-card.rail-poster .rail-txt { position: absolute; left: 0; right: 0; bottom: 0; margin: 0; min-height: 0; padding: 10px 14px 14px; justify-content: flex-end; }
.rail-card .rail-name { font-size: 22px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.rail-card .rail-tag { display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; overflow: hidden; }
.rail-card .rail-tag:empty { display: none; }
.rail-card.rail-tn .rail-tn-in { height: var(--rail-card-h); overflow: hidden; }
@media (min-width: 1100px) {
  .rail-list { max-height: calc(100vh - 140px); overflow-y: auto; scrollbar-width: thin; }
  .rail-card, .rail-card.rail-poster { flex: 0 0 var(--rail-card-h); width: auto; }
}

/* Specials & Offers hub cards: same treatment, equal heights, 2-up on phones. */
.sc-grid { grid-auto-rows: 240px; }
@media (min-width: 760px) { .sc-grid { grid-auto-rows: 280px; } }
.sc-card a { position: relative; display: block; height: 100%; }
.sc-media { position: absolute; inset: 0; aspect-ratio: auto; }
.sc-media::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(11,10,14,0) 28%, rgba(11,10,14,.8) 64%, rgba(11,10,14,.96) 100%); }
.sc-txt { position: absolute; left: 0; right: 0; bottom: 0; padding: 10px 10px 12px; }
.sc-t { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.sc-l { display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; overflow: hidden; }

/* r15 (Cap 2026-10-10): shorter cards — rail 240 phones / 260 desktop, hub 200 / 220; Tonight card has no gap above Reserve. */
:root { --rail-card-h: 240px; }
@media (min-width: 1100px) { :root { --rail-card-h: 260px; } }
.rail-card .rail-name { font-size: 20px; line-height: 1.05; }
.rail-card .rail-txt, .rail-card.rail-poster .rail-txt { padding: 8px 12px 12px; gap: 2px; }
.rail-card.rail-tn .rail-tn-in { justify-content: flex-start; gap: 4px; }
.rail-card.rail-tn .rail-tn-res { margin-top: 2px; }
.rail-card.rail-tn .rail-tn-name { font-size: 20px; }
.rail-tn-deal, .rail-tn-hh { font-size: 12.5px; line-height: 1.3; }
.sc-grid { grid-auto-rows: 200px; }
@media (min-width: 760px) { .sc-grid { grid-auto-rows: 220px; } }
.sc-t { font-size: 14px; }
.sc-l { font-size: 12px; }
.sc-txt { padding: 8px 9px 10px; gap: 2px; }
.rail-card.rail-tn .rail-tn-in { justify-content: center; }

/* ── Monday to Sunday · Find your reason to visit (Cap, 2026-10-12) ────────────────────────────── */
/* The old Monday-to-Sunday night cards, now carrying the audience offers: photo, small uppercase eyebrow,
   gold display title, 12px radius, thin gold border; 2 across on phones, 4 on wide screens; equal heights. */
.own-rs-eb { margin: 0 0 6px; }
.own-rs { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; grid-template-columns: repeat(2, minmax(0, 1fr)); grid-auto-rows: 1fr; }
@media (min-width: 760px) { .own-rs { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (min-width: 1000px) { .own-rs { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.own-rs li { display: flex; min-width: 0; }
.own-rs li[hidden] { display: none; }
.own-rs li > a, .own-rs .rs-all-in { display: flex; flex-direction: column; width: 100%; min-height: 44px; border: 1px solid var(--gold-hair); border-radius: 12px; overflow: hidden; text-decoration: none; color: var(--paper); background: var(--ink-2); }
.own-rs li > a:hover, .own-rs li > a:focus-visible { border-color: var(--gold); }
.own-rs img { width: 100%; height: auto; aspect-ratio: 16 / 10; object-fit: cover; display: block; background: var(--ink-2); }
.own-rs li > a > span { flex: 1 1 auto; display: flex; flex-direction: column; gap: 3px; padding: 8px 10px 12px; }
.own-rs b { font-family: var(--body); font-size: 10px; letter-spacing: .18em; text-transform: uppercase; color: var(--paper-dim); font-weight: 600; line-height: 1.3; overflow-wrap: anywhere; }
.own-rs .rs-t { font-family: var(--display); font-size: 17px; letter-spacing: .03em; color: var(--gold-lit); line-height: 1.12; overflow-wrap: anywhere; }
@media (min-width: 1000px) { .own-rs .rs-t { font-size: 19px; } }
/* The last card, like the old "All seven nights" cube: gold-tinted, "All offers →", and "All seven nights →". */
.own-rs .rs-all-in { justify-content: center; gap: 4px; padding: 10px 6px; background: linear-gradient(160deg, rgba(232,181,74,.18), rgba(19,17,24,.95)); border-color: var(--gold); min-height: 150px; }
.own-rs .rs-all-main { display: flex; flex-direction: column; justify-content: center; gap: 2px; min-height: 44px; padding: 6px 8px; font-family: var(--display); font-size: 22px; letter-spacing: .03em; color: var(--gold-lit); line-height: 1.1; text-decoration: none; overflow-wrap: anywhere; }
.own-rs .rs-all-nights { display: flex; align-items: center; min-height: 44px; padding: 0 8px; font-weight: 600; font-size: 14px; color: var(--paper); text-decoration: underline; text-decoration-color: var(--gold-hair); text-underline-offset: 3px; }
.own-rs .rs-all-main:hover, .own-rs .rs-all-nights:hover { color: var(--gold); }

/* ── CLS (2026-10-12): nothing the page already shows moves when /api/nights and /api/owner answer. ─────────── */
/* The happy-hour sign keeps its lines from the first paint (invisible until filled; folded away when off). */
.hh-banner.hh-wait { visibility: hidden; }
/* The rail's night cards wait, invisible but in place, until the offers have slotted in before them. */
.rail-list[data-wait] > .rail-card:not(.rail-tn) { visibility: hidden; }
/* The Tonight card's inside waits for /api/owner too (2026-10-25): tonight's flyer may lead it, and its lines must not jump. */
.rail-card.rail-tn[data-tn-wait] .rail-tn-in > * { visibility: hidden; }

/* Tonight's flyer in the Tonight card (Cap, 2026-10-25). The card keeps its height; the flyer shows whole (its own
   aspect, no crop) on the left, the night's name, doors and one line beside it, Reserve under them. */
.rtn-flyer[hidden], .rtn-line[hidden] { display: none; }
.rail-card.rail-tn .rtn-doors, .rail-card.rail-tn .rtn-line { font-size: 12.5px; line-height: 1.3; color: var(--paper-dim); }
.rail-card.rail-tn .rtn-line { color: var(--paper); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.rail-card.rail-tn .rtn-doors:empty { display: none; }
/* No flyer tonight: the card stays as it was (name, the night's deal, Reserve). */
.rail-card.rail-tn:not(.has-flyer) .rtn-doors, .rail-card.rail-tn:not(.has-flyer) .rtn-line { display: none; }
.rail-card.rail-tn.has-flyer .rail-tn-in { display: grid; grid-template-columns: auto minmax(0, 1fr); grid-auto-rows: min-content;
  column-gap: 10px; row-gap: 3px; align-content: center; justify-content: stretch; }
.rail-card.rail-tn.has-flyer .rail-tn-in > :not(.rtn-flyer) { grid-column: 2; }
.rail-card.rail-tn.has-flyer .rtn-flyer { grid-column: 1; grid-row: 1 / span 7; align-self: center; display: block; border-radius: 8px; overflow: hidden;
  border: 1px solid var(--gold-hair); line-height: 0; }
.rail-card.rail-tn.has-flyer .rtn-flyer img { display: block; width: auto; height: min(calc(var(--rail-card-h) - 40px), 150px); max-width: 116px; object-fit: contain; background: #000; }
.rail-card.rail-tn.has-flyer .rail-tn-name { font-size: 18px; }
.rail-card.rail-tn.has-flyer .rail-tn-res { margin-top: 4px; }
/* Desktop: the What's Happening column is its full scrolling height from the start (the offers fill it). */
@media (min-width: 1100px) { .rail-list { height: calc(100vh - 140px); } }

/* The one VIP line (Marco via Cap, 2026-10-22: no VIP-room wording on the website; guests call for VIP details).
   Used on the nights index (.nt-vip) since the 2026-10-25 declutter (the reserve forms carry it as .vip-hint). */
.vip-call { margin: 0; padding: 14px 16px; border: 1px solid var(--gold-hair); border-radius: 14px; background: rgba(255,255,255,.03); color: var(--paper-dim); text-align: center; }
.vip-call a, .vip-hint a { color: var(--gold); text-decoration: underline; text-underline-offset: 3px; white-space: nowrap; }
.nt-vip { margin-top: 26px; }
/* The happy-hour sign's second part is a link to the specials (Cap, 2026-10-15). */
.hh-banner .hh-text a { color: inherit; text-decoration: underline; text-underline-offset: 3px; }

/* ── Desktop grid (Cap 2026-10-21: "site looks real funny on desktop"). Layout only, ≥900px; phones untouched.
   One content width for header, nav, hero text, sections and footer (--maxw), wider gutters, and on ≥1100 the
   clip runs full-bleed behind both the hero text and What's Happening, which sits in the same content column,
   is exactly as tall as the hero and scrolls inside itself. */
@media (min-width: 900px) {
  :root { --gutter: 32px; }
  /* The tagline over the clip: heavier, a touch larger, a firm dark halo (it was thin gold on bright purple). */
  .hero-own .own-sub { font-size: 16px; font-weight: 600; color: var(--gold-lit);
    text-shadow: 0 1px 2px rgba(0,0,0,.95), 0 0 6px rgba(0,0,0,.9), 0 2px 18px rgba(0,0,0,.85); }
  .hero-own .own-sub .own-dot { color: #FF6FA6; }
}
@media (min-width: 1100px) { :root { --maxw: 1240px; } }
@media (min-width: 1600px) { :root { --maxw: 1360px; } }
@media (min-width: 1100px) {
  :root { --rail-w: 360px; --rail-gap: 40px; }
  .own-top { display: grid; grid-template-columns: minmax(0, 1fr); align-items: stretch; position: relative; }
  .own-top > .hero-own { grid-area: 1 / 1; height: auto; max-height: none;
    min-height: clamp(620px, calc(100svh - 108px), 880px); display: flex; align-items: center; }
  /* Hero text: the same left edge as the logo, and clear of the rail on the right. */
  .hero-own .hero-in { max-width: var(--maxw); width: 100%; margin: 0 auto;
    padding-right: calc(var(--gutter) + var(--rail-w) + var(--rail-gap)); }
  /* The play button sits at the hero text's right edge, not under the rail. */
  .hero-own .hero-play { right: calc(max(var(--gutter), (100% - var(--maxw)) / 2 + var(--gutter)) + var(--rail-w) + 12px); }
  /* What's Happening: same row as the hero, right edge on the content edge (lines up with Reserve in the bar).
     height 0 + min-height 100% = as tall as the hero, never taller; the list scrolls inside. */
  .own-top > .rail { grid-area: 1 / 1; justify-self: end; z-index: 3;
    width: var(--rail-w); margin: 24px max(var(--gutter), calc((100% - var(--maxw)) / 2 + var(--gutter))) 24px 0;
    height: 0; min-height: calc(100% - 48px); padding: 18px 14px 12px; display: flex; flex-direction: column;
    border: 1px solid var(--gold-hair); border-left: 1px solid var(--gold-hair); border-radius: 18px;
    background: rgba(11,10,14,.74); backdrop-filter: blur(10px) saturate(120%); -webkit-backdrop-filter: blur(10px) saturate(120%);
    box-shadow: 0 18px 50px -20px rgba(0,0,0,.9); }
  .own-top > .rail .rail-list { flex: 1 1 0; min-height: 0; height: auto; max-height: none; overflow-y: auto;
    scrollbar-width: thin; scrollbar-color: var(--gold-hair) transparent; padding-right: 2px; }
  .own-top > .rail .rail-all { flex: none; }
  /* Sections use the room: the menu tiles span the column, the forms sit beside their heading. */
  .own-bb .own-bb-tiles { max-width: none; }
  #reserve > .wrap, #list > .wrap { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
    grid-template-rows: auto auto auto 1fr; column-gap: 56px; align-items: start; }
  #reserve > .wrap > *, #list > .wrap > * { grid-column: 1; }
  #reserve > .wrap > #reserve-box, #list > .wrap > #list-box { grid-column: 2; grid-row: 1 / -1; }
  #reserve .form, #reserve .done, #list .form, #list .done { max-width: none; }
}
/* The section links span the content width: first word under the logo, last under Reserve. */
@media (min-width: 1100px) { .own-nav > .wrap > ul { justify-content: space-between; margin: 0 -12px; } }
/* Function-rendered pages (/reserve/, /offers/, /visit/ …): the heading block starts on the logo's edge like
   everything under it (it was a narrower centred column); a night page's buttons keep their own width. */
@media (min-width: 900px) {
  .lp-top > .wrap.prose { max-width: var(--maxw); }
  .lp-top > .wrap.prose > p { max-width: 64ch; }
}
@media (min-width: 1100px) { .nt-cta .btn-ghost { flex: 0 1 auto; min-width: 150px; } }
@media (min-width: 1100px) {
  .own-top > .rail .rtn-hh-s { white-space: normal; }          /* the Spanish specials line wraps inside the card */
  .lp-top .ow-actions .btn-ghost { flex: 0 1 auto; min-width: 150px; }
}
@media (min-width: 1100px) and (max-width: 1279.98px) { :root { --rail-w: 320px; --rail-gap: 28px; } }
/* /reserve/ and /es/reservar/ on desktop: the heading block and the form share one row (like the home page's
   reserve section) instead of a 560px form under the heading with the rest of the column empty. The heading
   stays in view beside the form while it scrolls; Call / Text / Directions stay under the form. Layout only;
   phones and tablets (< 1100px) keep the stacked page. */
@media (min-width: 1100px) {
  main:has(> .lp-body[data-w3p-sec="reserve"]) { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
    column-gap: 56px; align-items: start; max-width: var(--maxw); margin: 0 auto; padding: 0 var(--gutter); box-sizing: border-box; }
  main:has(> .lp-body[data-w3p-sec="reserve"]) > .lp-top { position: sticky; top: var(--bar-h, 62px); padding-bottom: 32px; }
  main:has(> .lp-body[data-w3p-sec="reserve"]) > .lp-body { padding-top: clamp(42px, 7.5vw, 84px); }
  main:has(> .lp-body[data-w3p-sec="reserve"]) > section > .wrap { max-width: none; padding: 0; }
  main:has(> .lp-body[data-w3p-sec="reserve"]) .ow-res .form { max-width: none; }
}

/* /tonight/ (Cap 2026-10-25): tonight's flyer big at the top, the caption under it, then the night. No flyer: the night's
   own picture behind, like the night page. functions/lib/tonight-render.js. */
.tn-has-flyer { display: block; min-height: 0; padding-top: 14px; }
.tn-flyers { display: grid; gap: 22px; justify-items: center; }
.tn-flyer { margin: 0; width: 100%; max-width: 560px; }
.tn-flyer-img { display: block; width: 100%; height: auto; border-radius: 14px; background: #0b0710; box-shadow: 0 10px 40px rgba(0,0,0,.6); }
.tn-cap { margin: 12px 2px 0; white-space: pre-line; overflow-wrap: anywhere; color: var(--paper); font-size: 15px; line-height: 1.5; }
@media (min-width: 900px) { .tn-flyers:has(> .tn-flyer:nth-child(2)) { grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; } }
.tn-all { margin: 28px 0 8px; font-size: 15px; }
.tn-all a { color: var(--gold); text-decoration: none; font-weight: 600; }
.tn-all a:hover, .tn-all a:focus-visible { text-decoration: underline; }
