Primary Tavern Inaugral Experience September 10th

Primary Tavern Presents

Miranda’s Jazz Salon

An intimate evening of jazz, tapas & wine
Thursday • September 10, 2026
6:00 – 9:00 PM • Ocala, Florida
Miranda's Jazz Salon at Primary Tavern - September 10, 2026
September 10 • One Night Only

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.

The Setting

Step Inside Primary Tavern

Your table is waiting.

Swipe or use the arrows to explore
September 10

Your Evening

$50 Per Guest
The Complete Evening
Live performance with Miranda Madison & pianist
Chef-created tapas throughout the evening
Soft drinks included
Wine available separately

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.

One Little Mystery

Miranda’s Favorite

Chef Kelley is creating a special dessert exclusively for the September 10 Jazz Salon.

The rest remains a surprise.
Join Us

Primary Tavern

Thursday, September 10 • 6–9 PM
4043 NW Blitchton Road
Ocala, Florida
352-421-9788
Seating is first come, first served.
Please contact Primary Tavern directly with questions about attending the evening.
Contact Primary Tavern
Miranda Madison • The Vintage Songstress

<!-- =========================================================
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 &amp; 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>
&nbsp;/&nbsp;
<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;
"
>
&#8249;
</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;
"
>
&#8250;
</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>