Miranda’s Jazz Salon
6:00 – 9:00 PM • Ocala, Florida
Join Us at Primary Tavern
Settle in for an intimate evening with Miranda Madison and special guest pianist Chris Kovic, with a repertoire curated especially for Primary Tavern.
Primary Tavern will accompany the music with chef-created tapas and soft drinks, while a visiting wine specialist introduces specially selected wines available throughout the evening.
Step Inside Primary Tavern
Your table is waiting.
Your Evening
Chef-created tapas throughout the evening
Soft drinks included
No advance ticket purchase is required. The $50 per guest price applies to event guests and payment is made directly to Primary Tavern at the close of the evening.
Miranda’s Favorite
Chef Kelley is creating a special dessert exclusively for the September 10 Jazz Salon.
Primary Tavern
Ocala, Florida
Please contact Primary Tavern directly with questions about attending the evening.
<!-- =========================================================
PRIMARY TAVERN — VISUAL ARRIVAL STORY
Replace the previous gallery section with this entire block
========================================================= -->
<section style="
background:#0b0908;
padding:95px 5%;
box-sizing:border-box;
">
<div style="
max-width:1000px;
margin:auto;
text-align:center;
">
<!-- SECTION INTRO -->
<div style="
color:#a97865;
font-family:Arial,Helvetica,sans-serif;
font-size:10px;
letter-spacing:5px;
text-transform:uppercase;
margin-bottom:17px;
">
The Setting
</div>
<h2 style="
margin:0;
color:#f2e6dd;
font-size:clamp(36px,5vw,54px);
font-weight:400;
line-height:1.15;
">
Step Inside Primary Tavern
</h2>
<div style="
width:70px;
height:1px;
background:#765649;
margin:25px auto;
"></div>
<p style="
max-width:600px;
margin:0 auto 42px;
color:#b6a8a0;
font-size:20px;
line-height:1.6;
font-style:italic;
">
Your table is waiting.
</p>
<!-- =====================================================
SLIDESHOW
===================================================== -->
<div
id="pt-gallery"
style="
position:relative;
width:100%;
max-width:900px;
margin:auto;
overflow:hidden;
background:#050404;
box-shadow:0 28px 80px rgba(0,0,0,.6);
"
>
<div
id="pt-gallery-track"
style="
display:flex;
width:100%;
transition:transform .8s ease;
touch-action:pan-y;
"
>
<!-- =================================================
1 — ARRIVAL
================================================= -->
<div
class="pt-slide"
data-eyebrow="Your Evening Begins"
data-title="Welcome to Primary Tavern"
data-caption="Tucked away in Ocala, an intimate evening awaits."
style="min-width:100%;"
>
<img
src="https://mirandamadison.com/wp-content/uploads/2026/08/FB_IMG_1787578047038-1.jpg"
alt="Exterior of Primary Tavern in Ocala"
style="
display:block;
width:100%;
height:600px;
object-fit:cover;
"
>
</div>
<!-- =================================================
2 — ENTER
================================================= -->
<div
class="pt-slide"
data-eyebrow="Come Inside"
data-title="Settle In"
data-caption="An intimate room, a table for the evening, and nowhere else you need to be."
style="min-width:100%;"
>
<img
src="https://mirandamadison.com/wp-content/uploads/2026/08/FB_IMG_1787578031255.jpg"
alt="Dining room inside Primary Tavern"
style="
display:block;
width:100%;
height:600px;
object-fit:cover;
"
>
</div>
<!-- =================================================
3 — BAR
================================================= -->
<div
class="pt-slide"
data-eyebrow="The Bar"
data-title="A Glass, Perhaps?"
data-caption="Specially selected wines will be introduced throughout the evening."
style="min-width:100%;"
>
<img
src="https://mirandamadison.com/wp-content/uploads/2026/08/FB_IMG_1787577625711.jpg"
alt="Wine and bar selection at Primary Tavern"
style="
display:block;
width:100%;
height:600px;
object-fit:cover;
"
>
</div>
<!-- =================================================
4 — WINE + BITE
================================================= -->
<div
class="pt-slide"
data-eyebrow="Sip & Savor"
data-title="Stay Awhile"
data-caption="Good wine, small bites and live jazz — some things needn't be complicated."
style="min-width:100%;"
>
<img
src="https://mirandamadison.com/wp-content/uploads/2026/08/FB_IMG_1787577697298.jpg"
alt="Wine and small plate at Primary Tavern"
style="
display:block;
width:100%;
height:600px;
object-fit:cover;
"
>
</div>
<!-- =================================================
5 — MORE BITES
================================================= -->
<div
class="pt-slide"
data-eyebrow="From the Table"
data-title="A Little Something..."
data-caption="Chef-created bites will accompany the evening from beginning to end."
style="min-width:100%;"
>
<img
src="https://mirandamadison.com/wp-content/uploads/2026/08/FB_IMG_1787577686276.jpg"
alt="Food and drink at Primary Tavern"
style="
display:block;
width:100%;
height:600px;
object-fit:cover;
"
>
</div>
<!-- =================================================
6 — CHEF
================================================= -->
<div
class="pt-slide"
data-eyebrow="From the Kitchen"
data-title="Meet Chef Kelley"
data-caption="Freshly prepared, thoughtfully presented, and never terribly interested in being ordinary."
style="min-width:100%;"
>
<img
src="https://mirandamadison.com/wp-content/uploads/2026/08/FB_IMG_1787577708497.jpg"
alt="Chef Kelley of Primary Tavern"
style="
display:block;
width:100%;
height:600px;
object-fit:cover;
"
>
</div>
<!-- =================================================
7 — FOOD
================================================= -->
<div
class="pt-slide"
data-eyebrow="Fresh From the Kitchen"
data-title="Made for the Table"
data-caption="The kitchen at Primary Tavern brings its own personality to the Salon."
style="min-width:100%;"
>
<img
src="https://mirandamadison.com/wp-content/uploads/2026/08/FB_IMG_1787577671467.jpg"
alt="Chef-prepared food at Primary Tavern"
style="
display:block;
width:100%;
height:600px;
object-fit:cover;
"
>
</div>
<!-- =================================================
8 — FOOD DETAIL
================================================= -->
<div
class="pt-slide"
data-eyebrow="Something Savory"
data-title="Small Plates. Big Personality."
data-caption="An evening designed for tasting, lingering and discovering what's coming next."
style="min-width:100%;"
>
<img
src="https://mirandamadison.com/wp-content/uploads/2026/08/FB_IMG_1787577661041.jpg"
alt="Small plate prepared at Primary Tavern"
style="
display:block;
width:100%;
height:600px;
object-fit:cover;
"
>
</div>
<!-- =================================================
9 — PASTRY BITES
================================================= -->
<div
class="pt-slide"
data-eyebrow="Another Taste"
data-title="Just One More..."
data-caption="Because nobody has ever improved an evening by rushing through it."
style="min-width:100%;"
>
<img
src="https://mirandamadison.com/wp-content/uploads/2026/08/FB_IMG_1787577638866.jpg"
alt="Chef-prepared bites at Primary Tavern"
style="
display:block;
width:100%;
height:600px;
object-fit:cover;
"
>
</div>
<!-- =================================================
10 — FRESH INGREDIENTS / CLOSE
================================================= -->
<div
class="pt-slide"
data-eyebrow="Primary Tavern"
data-title="Fresh. Local. Personal."
data-caption="The setting is ready. All that's missing is the music — and you."
style="min-width:100%;"
>
<img
src="https://mirandamadison.com/wp-content/uploads/2026/08/FB_IMG_1787577569708.jpg"
alt="Fresh ingredients at Primary Tavern"
style="
display:block;
width:100%;
height:600px;
object-fit:cover;
"
>
</div>
</div>
<!-- =====================================================
IMAGE COUNTER
===================================================== -->
<div style="
position:absolute;
top:18px;
right:20px;
z-index:5;
padding:7px 11px;
background:rgba(7,5,4,.65);
color:#e9ddd5;
font-family:Arial,Helvetica,sans-serif;
font-size:10px;
letter-spacing:2px;
">
<span id="pt-gallery-current">01</span>
/
<span id="pt-gallery-total">10</span>
</div>
<!-- =====================================================
LEFT ARROW
===================================================== -->
<button
type="button"
id="pt-gallery-prev"
aria-label="Previous image"
style="
position:absolute;
left:16px;
top:50%;
transform:translateY(-50%);
width:48px;
height:48px;
border:1px solid rgba(255,255,255,.42);
border-radius:50%;
background:rgba(8,6,5,.7);
color:#fff;
font-size:28px;
cursor:pointer;
z-index:6;
"
>
‹
</button>
<!-- =====================================================
RIGHT ARROW
===================================================== -->
<button
type="button"
id="pt-gallery-next"
aria-label="Next image"
style="
position:absolute;
right:16px;
top:50%;
transform:translateY(-50%);
width:48px;
height:48px;
border:1px solid rgba(255,255,255,.42);
border-radius:50%;
background:rgba(8,6,5,.7);
color:#fff;
font-size:28px;
cursor:pointer;
z-index:6;
"
>
›
</button>
</div>
<!-- =====================================================
EDITORIAL CAPTION
===================================================== -->
<div
id="pt-gallery-caption"
aria-live="polite"
style="
max-width:760px;
min-height:135px;
margin:0 auto;
padding:30px 25px 10px;
box-sizing:border-box;
text-align:center;
"
>
<div
id="pt-caption-eyebrow"
style="
color:#a97865;
font-family:Arial,Helvetica,sans-serif;
font-size:9px;
letter-spacing:4px;
text-transform:uppercase;
margin-bottom:9px;
"
>
Your Evening Begins
</div>
<div
id="pt-caption-title"
style="
color:#ead9ce;
font-size:27px;
font-style:italic;
line-height:1.35;
"
>
Welcome to Primary Tavern
</div>
<div
id="pt-caption-text"
style="
max-width:580px;
margin:9px auto 0;
color:#918680;
font-family:Arial,Helvetica,sans-serif;
font-size:13px;
line-height:1.7;
"
>
Tucked away in Ocala, an intimate evening awaits.
</div>
</div>
<!-- =====================================================
DOT NAVIGATION
===================================================== -->
<div
id="pt-gallery-dots"
style="
display:flex;
flex-wrap:wrap;
justify-content:center;
gap:9px;
margin-top:7px;
"
></div>
<!-- SMALL INSTRUCTION -->
<div style="
margin-top:20px;
color:#655e59;
font-family:Arial,Helvetica,sans-serif;
font-size:9px;
letter-spacing:2px;
text-transform:uppercase;
">
Swipe or use the arrows to explore
</div>
</div>
</section>
<!-- =========================================================
SLIDESHOW SCRIPT
Place this near the bottom of the page.
Remove the previous slideshow script.
========================================================= -->
<script>
(function () {
var gallery = document.getElementById('pt-gallery');
var track = document.getElementById('pt-gallery-track');
var prev = document.getElementById('pt-gallery-prev');
var next = document.getElementById('pt-gallery-next');
var dotsContainer = document.getElementById('pt-gallery-dots');
var eyebrow = document.getElementById('pt-caption-eyebrow');
var title = document.getElementById('pt-caption-title');
var caption = document.getElementById('pt-caption-text');
var currentDisplay = document.getElementById('pt-gallery-current');
var totalDisplay = document.getElementById('pt-gallery-total');
if (!gallery || !track) return;
var slides = track.getElementsByClassName('pt-slide');
var total = slides.length;
var current = 0;
var timer = null;
var startX = 0;
var endX = 0;
/* =========================================================
NUMBER FORMATTING
========================================================= */
function formatNumber(number) {
return number < 10 ? '0' + number : number;
}
totalDisplay.textContent = formatNumber(total);
/* =========================================================
CREATE NAVIGATION DOTS
========================================================= */
for (var i = 0; i < total; i++) {
var dot = document.createElement('button');
dot.type = 'button';
dot.setAttribute('aria-label', 'View image ' + (i + 1));
dot.setAttribute('data-slide', i);
dot.style.width = '8px';
dot.style.height = '8px';
dot.style.padding = '0';
dot.style.borderRadius = '50%';
dot.style.border = '0';
dot.style.cursor = 'pointer';
dot.style.background =
i === 0 ? '#b98470' : '#55443b';
dot.addEventListener('click', function () {
current = parseInt(
this.getAttribute('data-slide'),
10
);
updateGallery();
restartTimer();
});
dotsContainer.appendChild(dot);
}
/* =========================================================
UPDATE EVERYTHING
========================================================= */
function updateGallery() {
track.style.transform =
'translateX(-' + (current * 100) + '%)';
/* Update dots */
var dots = dotsContainer.children;
for (var i = 0; i < dots.length; i++) {
dots[i].style.background =
i === current
? '#b98470'
: '#55443b';
}
/* Update editorial caption */
var activeSlide = slides[current];
eyebrow.innerHTML =
activeSlide.getAttribute('data-eyebrow') || '';
title.innerHTML =
activeSlide.getAttribute('data-title') || '';
caption.innerHTML =
activeSlide.getAttribute('data-caption') || '';
/* Update image counter */
currentDisplay.textContent =
formatNumber(current + 1);
}
/* =========================================================
NEXT / PREVIOUS
========================================================= */
function nextSlide() {
current = (current + 1) % total;
updateGallery();
}
function previousSlide() {
current =
(current - 1 + total) % total;
updateGallery();
}
next.addEventListener('click', function () {
nextSlide();
restartTimer();
});
prev.addEventListener('click', function () {
previousSlide();
restartTimer();
});
/* =========================================================
AUTO PLAY
Slightly slower so visitors can actually read.
Civilization survives another day.
========================================================= */
function startTimer() {
if (timer !== null) return;
timer = setInterval(
nextSlide,
6500
);
}
function stopTimer() {
if (timer !== null) {
clearInterval(timer);
timer = null;
}
}
function restartTimer() {
stopTimer();
startTimer();
}
gallery.addEventListener(
'mouseenter',
stopTimer
);
gallery.addEventListener(
'mouseleave',
startTimer
);
/* =========================================================
TOUCH / SWIPE
========================================================= */
gallery.addEventListener(
'touchstart',
function (event) {
startX =
event.changedTouches[0].screenX;
},
{ passive:true }
);
gallery.addEventListener(
'touchend',
function (event) {
endX =
event.changedTouches[0].screenX;
var difference =
startX - endX;
if (Math.abs(difference) > 50) {
if (difference > 0) {
nextSlide();
} else {
previousSlide();
}
restartTimer();
}
},
{ passive:true }
);
/* =========================================================
KEYBOARD ACCESS
========================================================= */
gallery.setAttribute('tabindex', '0');
gallery.addEventListener(
'keydown',
function (event) {
if (event.key === 'ArrowRight') {
nextSlide();
restartTimer();
}
if (event.key === 'ArrowLeft') {
previousSlide();
restartTimer();
}
}
);
/* =========================================================
RESPONSIVE IMAGE HEIGHT
========================================================= */
function resizeSlides() {
var images =
track.getElementsByTagName('img');
for (var i = 0; i < images.length; i++) {
if (window.innerWidth < 480) {
images[i].style.height = '390px';
} else if (window.innerWidth < 750) {
images[i].style.height = '480px';
} else {
images[i].style.height = '600px';
}
}
}
resizeSlides();
window.addEventListener(
'resize',
resizeSlides
);
/* =========================================================
START
========================================================= */
updateGallery();
startTimer();
})();
</script>
