/*
Theme Name: Bottom Up Lounge
Theme URI: https://bottomuplounge.com/
Author: Built for Bottom Up Lounge LLC
Description: Custom theme for Bottom Up Restaurant & Lounge LLC, Fort Lauderdale FL. Ivory, black & gold brand scheme; menu management, table reservations, catering, online ordering via WooCommerce. Visual design mirrors the Bottom Up React build.
Version: 3.1.3
Requires at least: 6.0
Tested up to: 6.7
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: bottomup-lounge
*/

/* ============ Design tokens — matched to the React build ============ */
:root {
  --bul-gold: #c8a24a;
  --bul-gold-deep: #9c7a2b;
  --bul-gold-soft: #e8d08a;
  --bul-ink: #0b0b0b;
  --bul-bg: #faf9f6;            /* marble */
  --bul-charcoal: #1f1f1f;
  --bul-bg-soft: #f4f1ea;
  --bul-line: rgba(31,31,31,.10);
  --bul-muted: rgba(31,31,31,.65);
  --bul-danger: #b0493f;
  --bul-success: #6f8f57;
  --bul-font-head: "Playfair Display", Georgia, "Times New Roman", serif;
  --bul-font-body: "Poppins", -apple-system, "Segoe UI", sans-serif;
  --bul-max: 1280px;
}

/* ============ Base ============ */
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; overflow-x: clip; }
body { overflow-x: clip; }
body {
  margin: 0;
  background: var(--bul-bg);
  color: var(--bul-charcoal);
  font-family: var(--bul-font-body);
  font-weight: 400;
  font-size: 16px;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
::selection { background: var(--bul-gold); color: var(--bul-ink); }
img { max-width: 100%; height: auto; display: block; }
a { color: var(--bul-gold-deep); text-decoration: none; transition: color .2s ease; }
a:hover { color: var(--bul-gold); }
h1, h2, h3, h4 { font-family: var(--bul-font-head); font-weight: 600; line-height: 1.2; margin: 0 0 .5em; color: var(--bul-ink); }
p { margin: 0 0 1em; }
strong, b { font-weight: 600; }
:focus-visible { outline: 2px solid var(--bul-gold-deep); outline-offset: 3px; border-radius: 2px; }

.bul-wrap { max-width: var(--bul-max); margin: 0 auto; padding: 0 24px; }
@media (max-width: 640px) { .bul-wrap { padding: 0 16px; } }
.bul-section { padding: 80px 0; }
@media (min-width: 1024px) { .bul-section { padding: 96px 0; } }
.bul-section--tight { padding: 56px 0; }
.bul-section--soft { background: rgba(255,255,255,.6); }
.bul-section--dark { background: var(--bul-ink); color: #fff; }
.bul-center { text-align: center; }

/* Eyebrow / kicker */
.bul-kicker {
  display: block; text-transform: uppercase; letter-spacing: .22em;
  font-size: 13px; font-weight: 600; color: var(--bul-gold-deep); margin: 0 0 12px;
}
.bul-section--dark .bul-kicker { color: var(--bul-gold-soft); }

.bul-section-title { font-size: clamp(30px, 3.4vw, 36px); font-weight: 600; margin-bottom: 0; }
.bul-title-dark { color: #fff; }
.bul-lead { color: var(--bul-muted); font-size: 17px; line-height: 1.65; max-width: 640px; }
.bul-center .bul-lead { margin-left: auto; margin-right: auto; }
.bul-body-text { font-size: 16px; line-height: 1.7; color: rgba(31,31,31,.78); margin: 0; }
.bul-section--dark .bul-body-text { color: rgba(255,255,255,.8); }

/* Gold gradient text — dark backgrounds */
.bul-gold-text {
  background: linear-gradient(115deg, var(--bul-gold-soft) 0%, var(--bul-gold) 45%, var(--bul-gold-deep) 100%);
  -webkit-background-clip: text; background-clip: text; color: transparent;
}

/* Thin gold gradient divider */
.bul-divider {
  height: 1px; width: 96px; margin: 22px 0;
  background: linear-gradient(90deg, transparent, var(--bul-gold) 20%, var(--bul-gold) 80%, transparent);
  opacity: .85;
}
.bul-divider--center { margin-left: auto; margin-right: auto; }
.bul-divider--sm { width: 64px; margin: 14px 0 18px; }
.bul-rule { width: 96px; height: 1px; margin: 20px auto; background: linear-gradient(90deg, transparent, var(--bul-gold) 20%, var(--bul-gold) 80%, transparent); }

/* Scroll reveal (mirrors React Reveal) */
.bul-reveal { opacity: 0; transform: translateY(26px); transition: opacity .7s ease, transform .7s cubic-bezier(.22,1,.36,1); transition-delay: var(--reveal-delay, 0ms); }
.bul-reveal.is-visible { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) { .bul-reveal { opacity: 1; transform: none; transition: none; } }

/* ============ Buttons — React variants ============ */
.bul-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  min-height: 44px; padding: 10px 24px; border-radius: 6px;
  font-family: var(--bul-font-body); font-weight: 500; font-size: 15px; line-height: 1.2;
  border: 2px solid transparent; cursor: pointer; transition: all .2s ease;
  text-align: center;
}
.bul-btn--gold { background: var(--bul-gold); color: var(--bul-ink); box-shadow: 0 1px 3px rgba(11,11,11,.15); }
.bul-btn--gold:hover { background: var(--bul-gold-deep); color: #fff; }
.bul-btn--dark { background: var(--bul-ink); color: #fff; box-shadow: 0 1px 3px rgba(11,11,11,.15); }
.bul-btn--dark:hover { background: var(--bul-charcoal); color: #fff; }
.bul-btn--outline { border-color: var(--bul-ink); color: var(--bul-ink); background: transparent; }
.bul-btn--outline:hover { background: var(--bul-ink); color: #fff; }
.bul-btn--outline-light { border-color: rgba(255,255,255,.8); color: #fff; background: transparent; }
.bul-btn--outline-light:hover { border-color: #fff; background: #fff; color: var(--bul-ink); }
.bul-btn--ghost { border-color: var(--bul-gold); color: var(--bul-gold-deep); background: transparent; }
.bul-btn--ghost:hover { background: var(--bul-gold); color: var(--bul-ink); }
.bul-btn--lg { min-height: 52px; padding: 14px 32px; font-size: 16px; }
.bul-btn--sm { min-height: 36px; padding: 7px 16px; font-size: 14px; }
.bul-btn-row { display: flex; gap: 14px; flex-wrap: wrap; margin-top: 30px; }
.bul-btn-row--center { justify-content: center; }
.bul-center .bul-btn-row { justify-content: center; }

/* ============ Top bar ============ */
.bul-topbar { background: var(--bul-ink); color: rgba(255,255,255,.85); font-size: 13px; }
.bul-topbar .bul-wrap { display: flex; align-items: center; justify-content: space-between; height: 36px; gap: 16px; }
.bul-topbar-phone { display: inline-flex; align-items: center; gap: 6px; color: rgba(255,255,255,.85); font-weight: 500; letter-spacing: .02em; }
.bul-topbar-phone:hover { color: var(--bul-gold-soft); }
.bul-topbar-phone svg { width: 14px; height: 14px; color: var(--bul-gold); flex: none; }
.bul-topbar-addr { display: none; align-items: center; gap: 6px; }
.bul-topbar-addr svg { width: 14px; height: 14px; color: var(--bul-gold); flex: none; }
@media (min-width: 768px) { .bul-topbar-addr { display: inline-flex; } }

/* ============ Header ============ */
.bul-header {
  position: sticky; top: 0; z-index: 40;
  background: rgba(250,249,246,.95); backdrop-filter: blur(8px);
  transition: box-shadow .3s ease;
}
.bul-header.is-scrolled { box-shadow: 0 2px 20px rgba(11,11,11,.10); }
.bul-header .bul-wrap { display: flex; align-items: center; justify-content: space-between; gap: 16px; height: 80px; }
.bul-brand { flex: none; display: inline-flex; align-items: center; font-family: var(--bul-font-head); font-size: 26px; font-weight: 600; color: var(--bul-ink); }
.bul-brand span { color: var(--bul-gold-deep); }
.bul-brand img, .bul-brand .custom-logo { height: 56px; width: auto; max-width: none; }
@media (min-width: 640px) { .bul-brand img, .bul-brand .custom-logo { height: 64px; } }
/* WP custom-logo markup is a link itself — size it wherever it lands in the header/menu */
.bul-header a.custom-logo-link, .bul-mm-head a.custom-logo-link { display: inline-flex; align-items: center; flex: none; }
.bul-header img.custom-logo, .bul-mm-head img.custom-logo { height: 56px !important; width: auto !important; max-width: none; }
@media (min-width: 640px) { .bul-header img.custom-logo, .bul-mm-head img.custom-logo { height: 64px !important; } }
.bul-nav { display: none; }
.bul-nav ul { display: flex; gap: 28px; list-style: none; margin: 0; padding: 0; align-items: center; }
.bul-nav a {
  position: relative; display: inline-block; padding: 8px 0;
  color: var(--bul-charcoal); font-size: 15px; font-weight: 500; letter-spacing: .01em;
}
.bul-nav a::after {
  content: ""; position: absolute; left: 0; right: 0; bottom: -2px; height: 2px;
  background: var(--bul-gold); transform: scaleX(0); transform-origin: left; transition: transform .3s ease;
}
.bul-nav a:hover { color: var(--bul-gold-deep); }
.bul-nav a:hover::after { transform: scaleX(1); }
.bul-nav li.current-menu-item > a, .bul-nav li.current_page_item > a { color: var(--bul-gold-deep); }
.bul-nav li.current-menu-item > a::after, .bul-nav li.current_page_item > a::after { transform: scaleX(1); }
@media (min-width: 1024px) { .bul-nav { display: block; } }
.bul-header-actions { display: flex; align-items: center; gap: 8px; flex: none; }
.bul-cart-btn {
  position: relative; display: inline-flex; align-items: center; justify-content: center;
  width: 42px; height: 42px; border-radius: 999px; color: var(--bul-charcoal);
}
.bul-cart-btn:hover { background: rgba(200,162,74,.15); color: var(--bul-gold-deep); }
.bul-cart-btn svg { width: 24px; height: 24px; }
.bul-cart-count {
  position: absolute; top: -2px; right: -2px; min-width: 20px; height: 20px;
  display: inline-flex; align-items: center; justify-content: center;
  padding: 0 5px; border-radius: 999px; background: var(--bul-gold); color: var(--bul-ink);
  font-size: 11px; font-weight: 600; line-height: 1;
}
.bul-header-cta { display: none; align-items: center; gap: 12px; }
.bul-header-cta .bul-btn { min-height: 44px; padding: 10px 22px; }
@media (min-width: 768px) { .bul-header-cta { display: flex; } }
.bul-menu-toggle {
  display: inline-flex; align-items: center; justify-content: center;
  width: 42px; height: 42px; border: 0; border-radius: 999px; background: transparent;
  color: var(--bul-charcoal); cursor: pointer;
}
.bul-menu-toggle:hover { background: rgba(200,162,74,.15); }
.bul-menu-toggle svg { width: 24px; height: 24px; }
@media (min-width: 1024px) { .bul-menu-toggle { display: none; } }

/* Full-screen mobile menu */
.bul-mobile-menu {
  position: fixed; inset: 0; z-index: 60; background: var(--bul-bg);
  display: flex; flex-direction: column;
  opacity: 0; visibility: hidden; transition: opacity .3s ease, visibility .3s;
}
.bul-mobile-menu[hidden] { display: none; }
.bul-mobile-menu.is-open { opacity: 1; visibility: visible; }
.bul-mm-head { display: flex; align-items: center; justify-content: space-between; height: 80px; padding: 0 16px; }
@media (min-width: 640px) { .bul-mm-head { padding: 0 24px; } }
.bul-mm-close {
  display: inline-flex; align-items: center; justify-content: center;
  width: 42px; height: 42px; border: 0; border-radius: 999px; background: transparent;
  color: var(--bul-charcoal); cursor: pointer;
}
.bul-mm-close:hover { background: rgba(200,162,74,.15); }
.bul-mm-close svg { width: 24px; height: 24px; }
.bul-mm-nav { flex: 1; overflow-y: auto; display: flex; flex-direction: column; justify-content: center; padding: 0 32px; }
.bul-mm-nav ul { list-style: none; margin: 0; padding: 0; }
.bul-mm-nav li { border-bottom: 1px solid var(--bul-line); }
.bul-mm-nav a {
  display: block; padding: 14px 0; font-family: var(--bul-font-head);
  font-size: 30px; font-weight: 600; color: var(--bul-ink);
  opacity: 0; transform: translateY(16px); transition: opacity .3s ease, transform .3s ease;
}
.bul-mobile-menu.is-open .bul-mm-nav a { opacity: 1; transform: none; }
.bul-mm-nav li:nth-child(1) a { transition-delay: 0ms; }
.bul-mm-nav li:nth-child(2) a { transition-delay: 30ms; }
.bul-mm-nav li:nth-child(3) a { transition-delay: 60ms; }
.bul-mm-nav li:nth-child(4) a { transition-delay: 90ms; }
.bul-mm-nav li:nth-child(5) a { transition-delay: 120ms; }
.bul-mm-nav li:nth-child(6) a { transition-delay: 150ms; }
.bul-mm-nav li:nth-child(7) a { transition-delay: 180ms; }
.bul-mm-nav li.current-menu-item > a, .bul-mm-nav li.current_page_item > a { color: var(--bul-gold-deep); }
.bul-mm-cta { display: flex; gap: 12px; padding: 24px 24px 40px; }
.bul-mm-cta .bul-btn { flex: 1; }
body.bul-menu-open { overflow: hidden; }
@media (min-width: 1024px) { .bul-mobile-menu { display: none; } }

/* ============ Hero (photo) ============ */
.bul-hero {
  position: relative; display: flex; align-items: center; justify-content: center;
  min-height: 88svh; overflow: hidden; background: var(--bul-ink); text-align: center;
}
.bul-hero-img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.bul-hero-overlay {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(11,11,11,.70) 0%, rgba(11,11,11,.55) 45%, rgba(11,11,11,.80) 100%);
}
.bul-hero-inner { position: relative; z-index: 1; max-width: 896px; margin: 0 auto; padding: 96px 24px 128px; }
.bul-hero-eyebrow {
  margin: 0 0 16px; font-size: 13px; font-weight: 600;
  letter-spacing: .28em; text-transform: uppercase; color: var(--bul-gold-soft);
}
.bul-hero h1 {
  font-size: clamp(48px, 7vw, 72px); font-weight: 600; line-height: 1.08; color: #fff; margin: 0;
}
.bul-hero-sub { margin: 24px auto 0; max-width: 672px; font-size: 18px; line-height: 1.65; color: rgba(255,255,255,.85); }
.bul-hero-btns { margin-top: 36px; display: flex; flex-direction: column; align-items: stretch; justify-content: center; gap: 12px; }
@media (min-width: 640px) { .bul-hero-btns { flex-direction: row; align-items: center; } }

/* ============ Quick links (overlapping cards) ============ */
.bul-quick { position: relative; z-index: 10; max-width: 1152px; margin: -96px auto 0; padding: 0 24px; }
@media (max-width: 640px) { .bul-quick { padding: 0 16px; } }
.bul-quick-grid { display: grid; gap: 16px; }
@media (min-width: 640px) { .bul-quick-grid { grid-template-columns: repeat(3, 1fr); } }
.bul-quick-card {
  display: flex; align-items: center; gap: 16px; padding: 20px;
  background: #fff; border: 1px solid rgba(200,162,74,.30); border-radius: 12px;
  box-shadow: 0 10px 40px rgba(11,11,11,.10); transition: all .25s ease;
}
.bul-quick-card:hover { transform: translateY(-4px); box-shadow: 0 16px 50px rgba(11,11,11,.14); color: inherit; }
.bul-quick-icon {
  flex: none; width: 48px; height: 48px; border-radius: 999px;
  display: inline-flex; align-items: center; justify-content: center;
  background: rgba(200,162,74,.15); color: var(--bul-gold-deep); transition: all .25s ease;
}
.bul-quick-card:hover .bul-quick-icon { background: var(--bul-gold); color: var(--bul-ink); }
.bul-quick-icon svg { width: 24px; height: 24px; }
.bul-quick-text { flex: 1; min-width: 0; }
.bul-quick-title { display: block; font-family: var(--bul-font-head); font-size: 18px; font-weight: 600; color: var(--bul-ink); }
.bul-quick-desc { display: block; font-size: 14px; color: rgba(31,31,31,.6); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.bul-quick-arrow { flex: none; width: 20px; height: 20px; color: var(--bul-gold-deep); transition: transform .25s ease; }
.bul-quick-card:hover .bul-quick-arrow { transform: translateX(4px); }

/* ============ Layout grids & splits ============ */
.bul-grid { display: grid; gap: 24px; }
@media (min-width: 640px) { .bul-grid--3 { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) {
  .bul-grid--3 { grid-template-columns: repeat(3, 1fr); }
  .bul-grid--2 { grid-template-columns: repeat(2, 1fr); }
}
.bul-split { display: grid; gap: 44px; }
@media (min-width: 1024px) { .bul-split { grid-template-columns: 1fr 1fr; gap: 64px; } }
.bul-split--center { align-items: center; }

/* Framed image (Welcome) */
.bul-frame-img { position: relative; }
.bul-frame-img::before {
  content: ""; position: absolute; top: -16px; left: -16px; right: 16px; bottom: 16px;
  border: 2px solid rgba(200,162,74,.6); border-radius: 16px;
}
.bul-frame-img img { position: relative; width: 100%; aspect-ratio: 4/3; object-fit: cover; border-radius: 16px; box-shadow: 0 24px 48px rgba(11,11,11,.16); }
@media (max-width: 767px) {
  /* Hero quick cards: let descriptions wrap instead of clipping mid-word */
  .bul-quick-card { padding: 16px; gap: 12px; }
  .bul-quick-desc { white-space: normal; overflow: visible; text-overflow: clip; }
  /* Framed Welcome image: smaller frame offset, evenly inset so it stays centered */
  .bul-frame-img { margin: 10px 10px 0; }
  .bul-frame-img::before { top: -10px; left: -10px; right: 10px; bottom: 10px; }
}

/* Generic card (inner pages) */
.bul-card {
  background: #fff; border: 1px solid var(--bul-line);
  border-radius: 12px; padding: 36px 32px;
  box-shadow: 0 8px 30px rgba(11,11,11,.05); transition: all .25s ease;
}
.bul-card:hover { transform: translateY(-4px); box-shadow: 0 16px 45px rgba(11,11,11,.10); }
.bul-card h3 { font-size: 24px; margin-bottom: 8px; }
.bul-card p { color: var(--bul-muted); font-size: 15.5px; margin-bottom: 0; }
.bul-card .bul-icon { font-size: 28px; margin-bottom: 14px; }
.bul-card-num { font-family: var(--bul-font-head); font-size: 40px; font-weight: 600; color: var(--bul-gold); margin-bottom: 8px; line-height: 1; }
.bul-card .bul-card-link { display: inline-block; margin-top: 16px; font-size: 14px; font-weight: 500; color: var(--bul-gold-deep); }

/* Media frame (inner pages) */
.bul-media-frame { border-radius: 16px; overflow: hidden; box-shadow: 0 24px 48px rgba(11,11,11,.14); }
.bul-media-frame .bul-media-inner { position: relative; min-height: 380px; }
.bul-media-frame .bul-media-inner img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }

/* ============ Dish cards (Guest Favorites) ============ */
.bul-dish-card {
  display: flex; flex-direction: column; overflow: hidden;
  background: #fff; border: 1px solid var(--bul-line); border-radius: 16px;
  box-shadow: 0 8px 30px rgba(11,11,11,.06); transition: all .25s ease;
}
.bul-dish-card:hover { transform: translateY(-4px); box-shadow: 0 16px 45px rgba(11,11,11,.12); }
.bul-dish-card-media { overflow: hidden; }
.bul-dish-card-media img { width: 100%; aspect-ratio: 4/3; object-fit: cover; transition: transform .5s ease; }
.bul-dish-card:hover .bul-dish-card-media img { transform: scale(1.05); }
.bul-dish-card-body { display: flex; flex-direction: column; flex: 1; padding: 20px; }
.bul-dish-card-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.bul-dish-card-body h3 { font-size: 20px; margin: 0; }
.bul-price-pill {
  flex: none; padding: 4px 12px; border-radius: 999px;
  background: rgba(200,162,74,.15); color: var(--bul-gold-deep);
  font-size: 14px; font-weight: 600; white-space: nowrap;
}
.bul-dish-card-body p { margin: 8px 0 0; flex: 1; font-size: 15px; color: rgba(31,31,31,.65); }
.bul-dish-card-body .bul-btn { margin-top: 16px; align-self: flex-start; }

/* ============ Weekend soups (dark) ============ */
.bul-soup-img { width: 100%; aspect-ratio: 4/3; object-fit: cover; border-radius: 16px; border: 1px solid rgba(200,162,74,.25); box-shadow: 0 24px 48px rgba(0,0,0,.45); }
.bul-soup-lines { margin: 0; font-size: 18px; line-height: 1.7; color: rgba(255,255,255,.8); }
.bul-soup-lines strong { color: #fff; }
.bul-soup-note { margin: 12px 0 0; color: rgba(255,255,255,.6); }

/* ============ Lunch band ============ */
.bul-lunch {
  border-top: 1px solid rgba(200,162,74,.25); border-bottom: 1px solid rgba(200,162,74,.25);
  background-color: var(--bul-bg);
  background-image:
    radial-gradient(ellipse 60% 40% at 15% 0%, rgba(200,162,74,.07), transparent 60%),
    radial-gradient(ellipse 50% 35% at 90% 100%, rgba(200,162,74,.05), transparent 60%);
}
.bul-lunch-inner { max-width: 896px; margin: 0 auto; padding: 56px 24px; text-align: center; }
.bul-lunch .bul-body-text { max-width: 672px; margin: 0 auto; }

/* ============ Lounge overlap images ============ */
.bul-lounge-imgs { position: relative; padding: 0 0 40px 24px; }
@media (min-width: 640px) { .bul-lounge-imgs { padding-left: 40px; } }
.bul-lounge-main { width: 100%; aspect-ratio: 4/3; object-fit: cover; border-radius: 16px; box-shadow: 0 24px 48px rgba(11,11,11,.16); }
.bul-lounge-small {
  position: absolute; left: 0; bottom: 0; width: 160px; aspect-ratio: 1; object-fit: cover;
  border-radius: 16px; border: 4px solid var(--bul-bg); box-shadow: 0 24px 48px rgba(11,11,11,.22);
}
@media (min-width: 640px) { .bul-lounge-small { width: 224px; } }

/* ============ Catering banner ============ */
.bul-catering-banner { position: relative; overflow: hidden; background: var(--bul-ink); padding: 96px 0; }
@media (min-width: 1024px) { .bul-catering-banner { padding: 128px 0; } }
.bul-cb-img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: .4; }
.bul-cb-overlay { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(11,11,11,.70), rgba(11,11,11,.60) 50%, rgba(11,11,11,.80)); }
.bul-cb-inner { position: relative; z-index: 1; max-width: 768px; margin: 0 auto; padding: 0 24px; text-align: center; }
.bul-cb-inner h2 { font-size: clamp(30px, 3.4vw, 36px); color: #fff; margin: 0; }
.bul-cb-inner p { margin: 20px auto 0; max-width: 672px; font-size: 18px; line-height: 1.65; color: rgba(255,255,255,.8); }

/* ============ Gallery + lightbox ============ */
.bul-gallery { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; }
@media (min-width: 640px) { .bul-gallery { gap: 16px; } }
@media (min-width: 1024px) { .bul-gallery { grid-template-columns: repeat(3, 1fr); } }
.bul-gallery-item {
  display: block; width: 100%; padding: 0; border: 0; cursor: pointer;
  border-radius: 12px; overflow: hidden; box-shadow: 0 1px 4px rgba(11,11,11,.10); background: none;
}
.bul-gallery-item img { width: 100%; aspect-ratio: 1; object-fit: cover; transition: transform .5s ease; }
.bul-gallery-item:hover img { transform: scale(1.05); }
.bul-gallery-caption { text-align: center; color: var(--bul-muted); font-family: var(--bul-font-head); font-size: 18px; margin-top: 20px; }
.bul-lightbox {
  position: fixed; inset: 0; z-index: 80; display: flex; align-items: center; justify-content: center;
  background: rgba(11,11,11,.90); padding: 16px;
}
.bul-lightbox[hidden] { display: none; }
.bul-lb-img { max-height: 85vh; max-width: 100%; border-radius: 8px; object-fit: contain; box-shadow: 0 24px 60px rgba(0,0,0,.5); }
.bul-lb-btn {
  position: absolute; display: inline-flex; align-items: center; justify-content: center;
  width: 44px; height: 44px; border: 0; border-radius: 999px; cursor: pointer;
  background: rgba(255,255,255,.10); color: #fff; transition: background .2s ease;
}
.bul-lb-btn:hover { background: rgba(255,255,255,.20); }
.bul-lb-btn svg { width: 24px; height: 24px; }
.bul-lb-close { top: 16px; right: 16px; }
.bul-lb-prev { left: 8px; }
.bul-lb-next { right: 8px; }
@media (min-width: 640px) { .bul-lb-prev { left: 24px; } .bul-lb-next { right: 24px; } }

/* ============ Visit ============ */
.bul-visit-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 16px; font-size: 16px; }
.bul-visit-list li { display: flex; gap: 12px; align-items: flex-start; }
.bul-visit-list svg { flex: none; width: 20px; height: 20px; margin-top: 3px; color: var(--bul-gold-deep); }
.bul-visit-list a { color: var(--bul-charcoal); }
.bul-visit-list a:hover { color: var(--bul-gold-deep); }
.bul-map { border-radius: 16px; overflow: hidden; border: 1px solid var(--bul-line); box-shadow: 0 16px 40px rgba(11,11,11,.10); height: 100%; }
.bul-map iframe { width: 100%; height: 320px; border: 0; display: block; }
.bul-map--tall iframe { height: 100%; min-height: 380px; }

/* ============ Closing CTA ============ */
.bul-cta-title { font-size: clamp(36px, 4.6vw, 48px); color: #fff; margin: 0; }
.bul-cta-sub { margin: 20px 0 0; font-size: 18px; color: rgba(255,255,255,.75); }

/* ============ Page hero (inner pages, React style) ============ */
.bul-page-hero { position: relative; overflow: hidden; background: var(--bul-ink); text-align: center; }
.bul-page-hero-img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: .35; }
.bul-page-hero-overlay { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(11,11,11,.70), rgba(11,11,11,.55) 50%, rgba(11,11,11,.85)); }
.bul-page-hero-inner { position: relative; z-index: 1; max-width: 896px; margin: 0 auto; padding: 80px 24px; }
@media (min-width: 1024px) { .bul-page-hero-inner { padding: 96px 24px; } }
.bul-page-hero h1 { font-size: clamp(36px, 4.6vw, 48px); font-weight: 600; color: #fff; margin: 0; }
.bul-page-hero .bul-lead { color: rgba(255,255,255,.8); font-size: 18px; margin: 20px auto 0; }
.bul-page-hero .bul-kicker { color: var(--bul-gold-soft); }
.bul-page-hero .bul-divider { margin: 20px auto 0; }
.bul-page-hero .bul-btn-row { justify-content: center; }
/* Templates that place .bul-wrap directly inside the hero */
.bul-page-hero > .bul-wrap { position: relative; z-index: 1; padding-top: 80px; padding-bottom: 80px; }

/* ============ Menu list ============ */
.bul-menu-nav {
  position: sticky; top: 80px; z-index: 30; display: flex; gap: 8px; flex-wrap: wrap;
  padding: 12px 0; margin-bottom: 28px; background: var(--bul-bg);
}
.bul-menu-nav a {
  padding: 8px 16px; border-radius: 999px; border: 1px solid rgba(200,162,74,.4);
  color: var(--bul-charcoal); font-size: 14px; font-weight: 500; background: #fff;
}
.bul-menu-nav a:hover { background: var(--bul-gold); color: var(--bul-ink); border-color: var(--bul-gold); }
.bul-menu-cat { margin-bottom: 56px; scroll-margin-top: 170px; }
.bul-menu-cat > h3 {
  font-size: 28px; padding-bottom: 12px; margin-bottom: 4px;
  display: flex; align-items: baseline; gap: 16px;
}
.bul-menu-cat > h3::after { content: ""; flex: 1; border-bottom: 1px solid rgba(200,162,74,.45); transform: translateY(-6px); }
.bul-dish { display: flex; justify-content: space-between; align-items: baseline; gap: 20px; padding: 14px 0; border-bottom: 1px dotted #d9cdb2; }
.bul-dish:last-child { border-bottom: 0; }
.bul-dish h4 { font-size: 17px; margin-bottom: 2px; font-family: var(--bul-font-body); font-weight: 500; letter-spacing: .01em; }
.bul-dish p { color: var(--bul-muted); font-size: 14px; margin: 0; }
.bul-dish .bul-price { color: var(--bul-gold-deep); font-family: var(--bul-font-head); font-size: 20px; font-weight: 600; white-space: nowrap; }

/* ============ Forms ============ */
.bul-form { max-width: 700px; }
.bul-form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
@media (max-width: 640px) { .bul-form-row { grid-template-columns: 1fr; } }
.bul-field { margin-bottom: 20px; }
.bul-field label { display: block; font-size: 13px; font-weight: 500; letter-spacing: .06em; margin-bottom: 8px; color: var(--bul-charcoal); }
.bul-field input, .bul-field select, .bul-field textarea {
  width: 100%; padding: 12px 16px; border-radius: 6px;
  border: 1px solid rgba(31,31,31,.18); background: #fff; color: var(--bul-charcoal);
  font-size: 16px; font-family: inherit; transition: .2s ease;
}
.bul-field input:focus, .bul-field select:focus, .bul-field textarea:focus {
  outline: none; border-color: var(--bul-gold); box-shadow: 0 0 0 3px rgba(200,162,74,.18);
}
.bul-field textarea { min-height: 130px; resize: vertical; }
.bul-notice { padding: 14px 18px; border-radius: 6px; margin-bottom: 22px; font-size: 15px; }
.bul-notice--success { background: #f2f6ec; border: 1px solid var(--bul-success); color: #4c6a3c; }
.bul-notice--error { background: #faf0ee; border: 1px solid var(--bul-danger); color: #96443c; }

/* Contact info rows */
.bul-info-row { margin-bottom: 24px; font-size: 16px; }
.bul-info-row strong { display: block; font-size: 12px; letter-spacing: .2em; text-transform: uppercase; font-weight: 600; color: var(--bul-gold-deep); margin-bottom: 6px; }
.bul-tip { color: var(--bul-muted); font-size: 14px; }

/* ============ Footer (React) ============ */
.bul-footer { background: var(--bul-ink); color: #fff; padding: 56px 0 0; }
@media (max-width: 767px) { .bul-footer { padding-bottom: 64px; } }
.bul-footer-grid { display: grid; gap: 40px; margin-bottom: 48px; }
@media (min-width: 640px) { .bul-footer-grid { grid-template-columns: 1fr 1fr; } }
@media (min-width: 1024px) { .bul-footer-grid { grid-template-columns: repeat(4, 1fr); } }
.bul-footer-logo { height: 80px; width: auto; }
.bul-footer-tagline { margin: 16px 0 0; max-width: 300px; font-size: 15px; line-height: 1.65; color: rgba(255,255,255,.7); }
.bul-footer h4 { font-family: var(--bul-font-head); font-size: 18px; font-weight: 600; color: var(--bul-gold); margin: 0; }
.bul-footer .bul-divider { margin: 14px 0 18px; }
.bul-footer ul { list-style: none; margin: 0; padding: 0; }
.bul-footer li { margin-bottom: 10px; }
.bul-footer a { color: rgba(255,255,255,.7); font-size: 15px; }
.bul-footer a:hover { color: var(--bul-gold-soft); }
.bul-footer-visit li { display: flex; gap: 10px; align-items: flex-start; font-size: 15px; color: rgba(255,255,255,.7); }
.bul-footer-visit svg { flex: none; width: 16px; height: 16px; margin-top: 3px; color: var(--bul-gold); }
.bul-socials { display: flex; gap: 12px; }
.bul-socials a {
  display: inline-flex; align-items: center; justify-content: center;
  width: 44px; height: 44px; border-radius: 999px;
  border: 1px solid rgba(255,255,255,.2); color: rgba(255,255,255,.8); transition: all .2s ease;
}
.bul-socials a:hover { border-color: var(--bul-gold); color: var(--bul-gold); }
.bul-socials svg { width: 20px; height: 20px; }
.bul-footer-note { margin: 16px 0 0; font-size: 14px; color: rgba(255,255,255,.5); }
.bul-footer-bottom {
  border-top: 1px solid rgba(255,255,255,.10); padding: 24px 0;
  display: flex; flex-direction: column; align-items: center; gap: 12px;
  font-size: 14px; color: rgba(255,255,255,.5); text-align: center;
}
@media (min-width: 640px) { .bul-footer-bottom { flex-direction: row; justify-content: space-between; text-align: left; } }
.bul-footer-legal { display: inline-flex; gap: 24px; flex-wrap: wrap; justify-content: center; }
.bul-footer-legal a { font-size: 14px; color: rgba(255,255,255,.5); }
.bul-footer-legal a:hover { color: var(--bul-gold-soft); }
.bul-widget { margin-top: 16px; font-size: 14px; color: rgba(255,255,255,.6); }

/* ============ Sticky mobile action bar (React) ============ */
.bul-mobile-bar {
  display: none; position: fixed; bottom: 0; left: 0; right: 0; z-index: 40;
  background: rgba(11,11,11,.97); backdrop-filter: blur(8px);
  border-top: 1px solid rgba(200,162,74,.25);
}
.bul-mobile-bar a {
  flex: 1; display: flex; flex-direction: column; align-items: center; gap: 4px;
  padding: 12px 6px; color: rgba(255,255,255,.85); font-size: 12px; font-weight: 500;
}
.bul-mobile-bar a + a { border-left: 1px solid rgba(255,255,255,.10); }
.bul-mobile-bar svg { width: 20px; height: 20px; color: var(--bul-gold); }
.bul-mobile-bar a:active { background: rgba(255,255,255,.05); }
@media (max-width: 767px) {
  .bul-mobile-bar { display: flex; }
  body { padding-bottom: 65px; }
}

/* ============ WooCommerce touches ============ */
.woocommerce ul.products li.product .button,
.woocommerce a.button, .woocommerce button.button, .woocommerce input.button,
.woocommerce #respond input#submit {
  background: var(--bul-gold); color: var(--bul-ink); border-radius: 6px;
  font-family: var(--bul-font-body); font-weight: 500; padding: 12px 22px;
}
.woocommerce ul.products li.product .button:hover,
.woocommerce a.button:hover, .woocommerce button.button:hover { background: var(--bul-gold-deep); color: #fff; }
.woocommerce ul.products li.product .price,
.woocommerce div.product p.price, .woocommerce div.product span.price { color: var(--bul-gold-deep); font-weight: 600; }
.woocommerce ul.products li.product .woocommerce-loop-product__title { font-family: var(--bul-font-head); font-weight: 600; color: var(--bul-ink); padding-left: 18px; padding-right: 18px; }
.woocommerce ul.products li.product { background: #fff; border: 1px solid var(--bul-line); border-radius: 16px; overflow: hidden; padding-bottom: 18px; box-shadow: 0 8px 30px rgba(11,11,11,.05); }
.woocommerce ul.products li.product a img { margin-bottom: 14px; }
.woocommerce ul.products li.product .price, .woocommerce ul.products li.product .button { margin-left: 18px; margin-right: 18px; }
.woocommerce-message, .woocommerce-info { border-top-color: var(--bul-gold); }
.woocommerce-message::before, .woocommerce-info::before { color: var(--bul-gold-deep); }

/* ============ v3.1.0 — Inner pages (React parity) ============ */
.bul-gold-grad {
  background: linear-gradient(115deg, var(--bul-gold-soft) 0%, var(--bul-gold) 45%, var(--bul-gold-deep) 100%);
  -webkit-background-clip: text; background-clip: text; color: transparent;
}
.bul-h2 { font-family: var(--bul-font-head); font-size: clamp(28px, 3.2vw, 36px); font-weight: 600; color: var(--bul-ink); margin: 0; line-height: 1.2; }
.bul-body { font-size: 16px; line-height: 1.7; color: rgba(31,31,31,.75); margin: 0; }
.bul-band-white { background: rgba(255,255,255,.6); }
.bul-reveal.is-in { opacity: 1; transform: none; }
@media (min-width: 1024px) { .bul-grid--4 { grid-template-columns: repeat(4, 1fr); } }
@media (min-width: 640px) and (max-width: 1023px) { .bul-grid--4 { grid-template-columns: repeat(2, 1fr); } }

/* Photo hero (inner pages) */
.bul-hero-photo { position: relative; overflow: hidden; background: var(--bul-ink); text-align: center; }
.bul-hero-photo > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: .35; }
.bul-hero-photo::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(11,11,11,.70), rgba(11,11,11,.55) 50%, rgba(11,11,11,.85)); }
.bul-hero-photo__inner { position: relative; z-index: 1; max-width: 896px; margin: 0 auto; padding: 80px 24px; }
@media (min-width: 1024px) { .bul-hero-photo__inner { padding: 96px 24px; } }
.bul-hero-photo h1 { font-size: clamp(36px, 4.6vw, 48px); font-weight: 600; color: #fff; margin: 0; }
.bul-hero-photo p { color: rgba(255,255,255,.85); font-size: 18px; line-height: 1.65; margin: 22px auto 0; max-width: 672px; }
.bul-hero-photo .bul-divider { margin: 20px auto 0; }

/* Light hero (Contact) */
.bul-hero-light { border-bottom: 1px solid rgba(200,162,74,.25); }
.bul-hero-light .bul-wrap { padding-top: 56px; padding-bottom: 56px; }
@media (min-width: 1024px) { .bul-hero-light .bul-wrap { padding-top: 72px; padding-bottom: 72px; } }
.bul-hero-light h1 { font-size: clamp(36px, 4.6vw, 48px); font-weight: 600; color: var(--bul-ink); margin: 0; }
.bul-hero-light p { color: rgba(31,31,31,.7); font-size: 18px; margin: 20px auto 0; max-width: 672px; }
.bul-hero-light .bul-divider { margin: 20px auto 0; }

/* Form card + success card */
.bul-form--card { background: #fff; border: 1px solid rgba(200,162,74,.35); border-radius: 16px; padding: 24px; box-shadow: 0 18px 45px rgba(11,11,11,.10); }
@media (min-width: 640px) { .bul-form--card { padding: 32px; } }
.bul-success-card { background: #fff; border: 1px solid rgba(200,162,74,.45); border-radius: 16px; padding: 40px 32px; box-shadow: 0 18px 45px rgba(11,11,11,.12); text-align: center; }
.bul-success-ic { display: inline-flex; align-items: center; justify-content: center; width: 56px; height: 56px; border-radius: 50%; background: rgba(200,162,74,.15); color: var(--bul-gold-deep); font-size: 28px; font-weight: 600; }
.bul-success-card h3 { font-family: var(--bul-font-head); font-size: 30px; font-weight: 600; color: var(--bul-ink); margin: 20px 0 0; }
.bul-success-card p { color: rgba(31,31,31,.72); font-size: 16px; line-height: 1.65; margin: 14px auto 0; max-width: 480px; }
.bul-success-card p a { color: var(--bul-gold-deep); font-weight: 500; }

/* ---- Menu browser ---- */
.bul-minfo { display: flex; gap: 12px; border: 1px solid rgba(200,162,74,.5); background: rgba(200,162,74,.08); border-radius: 12px; padding: 16px 20px; margin-bottom: 32px; }
.bul-minfo p { margin: 0; font-size: 15px; line-height: 1.65; color: var(--bul-charcoal); }
.bul-minfo-ic { flex: none; width: 20px; height: 20px; margin-top: 2px; border-radius: 50%; border: 2px solid var(--bul-gold-deep); color: var(--bul-gold-deep); font-size: 12px; font-weight: 700; display: flex; align-items: center; justify-content: center; font-style: normal; }
.bul-msearch { position: relative; margin-bottom: 8px; }
.bul-msearch input { width: 100%; height: 48px; padding: 0 16px 0 44px; border: 1px solid var(--bul-line); border-radius: 8px; background: #fff; font: inherit; font-size: 15px; color: var(--bul-ink); }
.bul-msearch input:focus { outline: none; border-color: var(--bul-gold); box-shadow: 0 0 0 3px rgba(200,162,74,.25); }
.bul-msearch-ic { position: absolute; left: 16px; top: 50%; transform: translateY(-50%); width: 16px; height: 16px; color: rgba(31,31,31,.4); pointer-events: none; }
.bul-msearch-ic svg { width: 100%; height: 100%; display: block; }
.bul-mtabs { position: sticky; top: 80px; z-index: 30; display: flex; gap: 8px; overflow-x: auto; scrollbar-width: none; background: rgba(250,249,246,.95); backdrop-filter: blur(6px); padding: 12px 24px; margin: 0 -24px; }
.bul-mtabs::-webkit-scrollbar { display: none; }
@media (max-width: 640px) { .bul-mtabs { padding: 12px 16px; margin: 0 -16px; } }
body.admin-bar .bul-mtabs { top: 112px; }
@media (max-width: 782px) { body.admin-bar .bul-mtabs { top: 126px; } }
.bul-mtab { flex: none; border: 1px solid rgba(31,31,31,.15); background: #fff; color: rgba(31,31,31,.7); border-radius: 999px; padding: 8px 16px; font: inherit; font-size: 14px; font-weight: 500; white-space: nowrap; cursor: pointer; transition: all .2s ease; }
.bul-mtab:hover { border-color: var(--bul-gold-deep); color: var(--bul-ink); }
.bul-mtab.is-active { background: var(--bul-ink); border-color: var(--bul-ink); color: #fff; }
.bul-msec { padding: 24px 0 8px; scroll-margin-top: 150px; }
.bul-msec-head { display: flex; align-items: center; gap: 16px; margin-bottom: 8px; }
.bul-msec-head h2 { font-family: var(--bul-font-head); font-size: clamp(24px, 2.6vw, 30px); font-weight: 600; color: var(--bul-ink); margin: 0; }
.bul-msec-line { flex: 1; height: 1px; background: linear-gradient(90deg, var(--bul-gold), transparent); opacity: .6; }
.bul-msec-note { font-size: 14px; color: rgba(31,31,31,.6); margin: 0 0 4px; }
.bul-msub { font-size: 13px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: rgba(31,31,31,.5); margin: 20px 0 2px; }
.bul-dishgrid { display: grid; }
@media (min-width: 1024px) { .bul-dishgrid { grid-template-columns: 1fr 1fr; column-gap: 40px; } }
.bul-dish { display: flex; align-items: flex-start; gap: 12px; justify-content: flex-start; padding: 16px 0; border-bottom: 1px solid rgba(31,31,31,.08); }
@media (min-width: 640px) { .bul-dish { gap: 16px; } }
.bul-dish-img { flex: none; width: 64px; height: 64px; border-radius: 8px; object-fit: cover; box-shadow: 0 2px 8px rgba(11,11,11,.12); }
@media (min-width: 640px) { .bul-dish-img { width: 80px; height: 80px; } }
.bul-dish-main { flex: 1; min-width: 0; }
.bul-dish-top { display: flex; align-items: baseline; gap: 8px; }
.bul-dish-top h3 { font-family: var(--bul-font-body); font-size: 16px; font-weight: 500; color: var(--bul-ink); margin: 0; letter-spacing: .01em; }
.bul-tag { flex: none; background: var(--bul-gold); color: var(--bul-ink); font-size: 11px; font-weight: 600; border-radius: 999px; padding: 2px 9px; white-space: nowrap; }
.bul-dots { flex: 1; min-width: 16px; border-bottom: 2px dotted rgba(31,31,31,.25); transform: translateY(-4px); margin: 0 4px; }
.bul-dish-price { flex: none; font-family: var(--bul-font-head); font-size: 18px; font-weight: 600; color: var(--bul-ink); white-space: nowrap; }
.bul-dish-desc { font-size: 14px; line-height: 1.6; color: rgba(31,31,31,.6); margin: 4px 0 0; }
.bul-var-pills { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 9px; }
.bul-var-pill { border: 1px solid rgba(156,122,43,.5); background: rgba(200,162,74,.10); color: var(--bul-ink); border-radius: 999px; padding: 6px 14px; font-size: 13px; font-weight: 500; text-decoration: none; transition: all .2s ease; }
a.bul-var-pill:hover { background: var(--bul-gold); }
.bul-add-btn { flex: none; width: 36px; height: 36px; margin-top: 2px; border-radius: 50%; background: var(--bul-gold); color: var(--bul-ink); font-size: 21px; line-height: 1; display: flex; align-items: center; justify-content: center; text-decoration: none; box-shadow: 0 2px 6px rgba(11,11,11,.15); transition: all .2s ease; }
.bul-add-btn:hover { background: var(--bul-gold-deep); color: #fff; transform: scale(1.06); }
.bul-dish .added_to_cart, .bul-var-pills + .added_to_cart { font-size: 12px; font-weight: 500; color: var(--bul-gold-deep); white-space: nowrap; align-self: center; }
.bul-mresults-count { font-size: 14px; color: rgba(31,31,31,.6); margin: 8px 0 4px; }
.bul-rlabel { font-size: 12px; font-weight: 500; letter-spacing: .06em; text-transform: uppercase; color: var(--bul-gold-deep); margin: 14px 0 0; }
.bul-mempty { text-align: center; color: rgba(31,31,31,.6); padding: 40px 0; margin: 0; }
.bul-mfoot { border-top: 1px solid var(--bul-line); padding-top: 24px; margin-top: 40px; text-align: center; font-size: 14px; color: rgba(31,31,31,.55); }

/* ---- Catering ---- */
.bul-chips { display: flex; flex-wrap: wrap; justify-content: center; gap: 12px; margin-top: 32px; }
.bul-chip { display: inline-flex; align-items: center; gap: 10px; border: 1px solid rgba(200,162,74,.4); background: #fff; border-radius: 999px; padding: 10px 20px; font-size: 15px; font-weight: 500; color: var(--bul-charcoal); box-shadow: 0 2px 8px rgba(11,11,11,.05); }
.bul-chip svg { width: 18px; height: 18px; color: var(--bul-gold-deep); flex: none; }
.bul-step-card { background: var(--bul-bg); border: 1px solid var(--bul-line); border-radius: 16px; padding: 24px; box-shadow: 0 2px 10px rgba(11,11,11,.05); height: 100%; }
.bul-step-num { display: flex; align-items: center; justify-content: center; width: 44px; height: 44px; border-radius: 50%; background: var(--bul-gold); color: var(--bul-ink); font-family: var(--bul-font-head); font-size: 20px; font-weight: 600; }
.bul-step-card h3 { font-family: var(--bul-font-head); font-size: 18px; font-weight: 600; color: var(--bul-ink); margin: 16px 0 0; }
.bul-step-card p { font-size: 15px; line-height: 1.65; color: rgba(31,31,31,.65); margin: 8px 0 0; }
.bul-ptable-card { background: #fff; border: 1px solid var(--bul-line); border-radius: 16px; box-shadow: 0 18px 45px rgba(11,11,11,.10); overflow: hidden; margin-top: 32px; }
.bul-ptable-scroll { overflow-x: auto; }
.bul-ptable { width: 100%; min-width: 640px; border-collapse: collapse; text-align: left; }
.bul-ptable thead th { background: var(--bul-ink); color: #fff; padding: 16px 20px; font-size: 14px; font-weight: 600; letter-spacing: .02em; }
.bul-ptable thead th:first-child { font-family: var(--bul-font-head); font-size: 16px; }
.bul-ptable tbody td { padding: 14px 20px; border-top: 1px solid rgba(31,31,31,.06); vertical-align: middle; }
.bul-ptable tbody tr:hover { background: rgba(200,162,74,.05); }
.bul-ptable-name { display: block; font-weight: 500; color: var(--bul-ink); }
.bul-ptable-desc { display: block; font-size: 14px; color: rgba(31,31,31,.55); }
.bul-ptable-cell { display: flex; align-items: center; gap: 12px; }
.bul-ptable-price { width: 56px; flex: none; font-size: 15px; font-weight: 600; color: var(--bul-gold-deep); }
.bul-stepper { display: inline-flex; align-items: center; gap: 6px; }
.bul-stepper-btn { width: 28px; height: 28px; border-radius: 50%; border: 1px solid rgba(31,31,31,.2); background: transparent; color: var(--bul-charcoal); font-size: 15px; line-height: 1; display: flex; align-items: center; justify-content: center; cursor: pointer; transition: all .2s ease; padding: 0; }
.bul-stepper-btn:hover { border-color: var(--bul-gold-deep); color: var(--bul-gold-deep); }
.bul-stepper-qty { width: 28px; text-align: center; font-size: 14px; font-weight: 600; color: var(--bul-ink); }
.bul-ptable-foot { display: flex; flex-direction: column; align-items: center; gap: 8px; border-top: 1px solid rgba(200,162,74,.3); background: var(--bul-bg); padding: 16px 20px; }
@media (min-width: 640px) { .bul-ptable-foot { flex-direction: row; justify-content: space-between; } }
.bul-ptable-note { font-size: 14px; font-style: italic; color: rgba(31,31,31,.6); }
.bul-ptable-total { font-size: 18px; color: rgba(31,31,31,.65); }
.bul-ptable-total strong { font-family: var(--bul-font-head); font-size: 24px; font-weight: 600; color: var(--bul-ink); margin-left: 6px; }
.bul-radio-cards { display: grid; gap: 8px; }
@media (min-width: 640px) { .bul-radio-cards { grid-template-columns: 1fr 1fr; } }
.bul-radio-card { display: flex; align-items: center; gap: 12px; border: 2px solid rgba(31,31,31,.15); border-radius: 8px; padding: 12px 16px; cursor: pointer; font-size: 14px; font-weight: 500; color: var(--bul-ink); transition: all .2s ease; }
.bul-radio-card input { width: 16px; height: 16px; accent-color: #9c7a2b; margin: 0; }
.bul-radio-card:has(input:checked) { border-color: var(--bul-gold-deep); background: rgba(200,162,74,.10); }
.bul-cat-summary { background: rgba(200,162,74,.10); border-radius: 12px; padding: 16px; margin-bottom: 24px; }
.bul-cat-summary-title { font-size: 14px; font-weight: 600; color: var(--bul-ink); margin: 0 0 8px; }
.bul-cat-summary ul { list-style: none; margin: 0; padding: 0; }
.bul-cat-summary li { display: flex; justify-content: space-between; gap: 12px; font-size: 14px; color: rgba(31,31,31,.75); padding: 2px 0; }
.bul-cat-summary-total { border-top: 1px solid rgba(200,162,74,.3); padding-top: 8px; margin: 8px 0 0; text-align: right; font-weight: 600; color: var(--bul-ink); font-size: 15px; }
.bul-faq-item { border-bottom: 1px solid var(--bul-line); }
.bul-faq-item summary { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 18px 4px; font-size: 16px; font-weight: 500; color: var(--bul-ink); cursor: pointer; list-style: none; }
.bul-faq-item summary::-webkit-details-marker { display: none; }
.bul-faq-chev { flex: none; width: 10px; height: 10px; border-right: 2px solid var(--bul-gold-deep); border-bottom: 2px solid var(--bul-gold-deep); transform: rotate(45deg); transition: transform .25s ease; }
.bul-faq-item[open ] .bul-faq-chev { transform: rotate(225deg); }
.bul-faq-body { padding: 0 4px 18px; font-size: 15.5px; line-height: 1.7; color: rgba(31,31,31,.7); }
.bul-ctaband { background: var(--bul-ink); padding: 80px 0; }
.bul-ctaband h2 { font-family: var(--bul-font-head); font-size: clamp(30px, 3.6vw, 36px); font-weight: 600; color: #fff; margin: 0; }
.bul-ctaband-note { margin: 24px 0 0; font-size: 14px; color: rgba(255,255,255,.5); }

/* ---- Reservations ---- */
.bul-res-grid { display: grid; gap: 32px; }
@media (min-width: 1024px) { .bul-res-grid { grid-template-columns: minmax(0,1fr) 380px; } }
.bul-aside-card { background: var(--bul-ink); border-radius: 16px; overflow: hidden; box-shadow: 0 18px 45px rgba(11,11,11,.18); }
@media (min-width: 1024px) { .bul-aside-card { position: sticky; top: 104px; } }
.bul-aside-body { padding: 24px 28px 28px; }
.bul-aside-body h2 { font-family: var(--bul-font-head); font-size: 24px; font-weight: 600; color: var(--bul-gold); margin: 0; }
.bul-aside-list { list-style: none; margin: 0; padding: 0; }
.bul-aside-list li { position: relative; padding-left: 18px; margin-top: 14px; font-size: 15px; line-height: 1.65; color: rgba(255,255,255,.8); }
.bul-aside-list li::before { content: ""; position: absolute; left: 0; top: 9px; width: 6px; height: 6px; border-radius: 50%; background: var(--bul-gold); }
.bul-aside-list a { color: var(--bul-gold-soft); font-weight: 500; }
.bul-aside-card > img { display: block; width: 100%; aspect-ratio: 16/9; object-fit: cover; }
.bul-call-btn { margin-top: 16px; display: flex; align-items: center; justify-content: center; gap: 8px; border: 2px solid var(--bul-ink); background: #fff; color: var(--bul-ink); border-radius: 16px; padding: 14px 24px; font-weight: 500; font-size: 15px; text-decoration: none; transition: all .2s ease; }
.bul-call-btn svg { width: 16px; height: 16px; flex: none; }
.bul-call-btn:hover { background: var(--bul-ink); color: #fff; }

/* ---- Our Story ---- */
.bul-story-img { width: 100%; aspect-ratio: 4/3; object-fit: cover; border-radius: 16px; box-shadow: 0 24px 48px rgba(11,11,11,.16); display: block; }
.bul-darkband { background: var(--bul-ink); padding: 96px 0; }
.bul-darkband h2 { font-family: var(--bul-font-head); font-size: clamp(30px, 3.4vw, 36px); font-weight: 600; color: #fff; margin: 14px 0 0; }
.bul-darkband .bul-divider { margin: 24px auto; }
.bul-darkband p { font-size: 18px; line-height: 1.7; color: rgba(255,255,255,.8); margin: 0; }
.bul-founder { border: 2px dashed rgba(200,162,74,.5); background: rgba(200,162,74,.05); border-radius: 16px; padding: 40px 32px; text-align: center; }
.bul-founder h3 { font-family: var(--bul-font-head); font-size: 24px; font-weight: 600; color: var(--bul-ink); margin: 0; }
.bul-founder p { margin: 12px auto 0; max-width: 576px; font-size: 15px; line-height: 1.65; color: rgba(31,31,31,.6); }
.bul-promise-card { background: #fff; border: 1px solid var(--bul-line); border-radius: 16px; padding: 28px; text-align: center; box-shadow: 0 2px 10px rgba(11,11,11,.05); height: 100%; }
.bul-promise-ic { display: flex; align-items: center; justify-content: center; width: 52px; height: 52px; margin: 0 auto; border-radius: 50%; background: rgba(200,162,74,.15); color: var(--bul-gold-deep); }
.bul-promise-ic svg { width: 24px; height: 24px; }
.bul-promise-card h3 { font-family: var(--bul-font-head); font-size: 20px; font-weight: 600; color: var(--bul-ink); margin: 16px 0 0; }
.bul-promise-card p { font-size: 15px; line-height: 1.65; color: rgba(31,31,31,.65); margin: 8px 0 0; }
.bul-strip { display: flex; gap: 16px; overflow-x: auto; padding-bottom: 8px; scrollbar-width: none; }
.bul-strip::-webkit-scrollbar { display: none; }
.bul-strip img { flex: none; width: 256px; height: 176px; object-fit: cover; border-radius: 12px; box-shadow: 0 8px 24px rgba(11,11,11,.12); }
@media (min-width: 640px) { .bul-strip img { width: 320px; height: 208px; } }

/* ---- Contact ---- */
.bul-contact-grid { display: grid; gap: 32px; }
@media (min-width: 1024px) { .bul-contact-grid { grid-template-columns: 380px minmax(0,1fr); } }
.bul-info-card { display: flex; gap: 16px; background: #fff; border: 1px solid var(--bul-line); border-radius: 12px; padding: 20px; box-shadow: 0 2px 10px rgba(11,11,11,.05); margin-bottom: 16px; }
.bul-info-ic { flex: none; display: flex; align-items: center; justify-content: center; width: 44px; height: 44px; border-radius: 50%; background: rgba(200,162,74,.15); color: var(--bul-gold-deep); }
.bul-info-ic svg { width: 20px; height: 20px; }
.bul-info-card h2 { font-family: var(--bul-font-head); font-size: 18px; font-weight: 600; color: var(--bul-ink); margin: 0; }
.bul-info-card p { font-size: 15px; line-height: 1.6; color: rgba(31,31,31,.7); margin: 4px 0 0; }
.bul-info-card a { color: inherit; text-decoration: none; }
.bul-info-card a:hover { color: var(--bul-gold-deep); }
.bul-contact-socials { display: flex; gap: 12px; padding: 4px; }
.bul-social-btn { display: flex; align-items: center; justify-content: center; width: 44px; height: 44px; border-radius: 50%; border: 1px solid rgba(31,31,31,.15); color: rgba(31,31,31,.7); transition: all .2s ease; }
.bul-social-btn svg { width: 20px; height: 20px; }
.bul-social-btn:hover { border-color: var(--bul-gold-deep); color: var(--bul-gold-deep); }
.bul-mapframe { border-radius: 16px; overflow: hidden; border: 1px solid var(--bul-line); box-shadow: 0 18px 45px rgba(11,11,11,.10); }
.bul-mapframe iframe { display: block; width: 100%; height: 320px; border: 0; }
@media (min-width: 1024px) { .bul-mapframe iframe { height: 384px; } }
