/**
 * TNT CMS — base.css
 * Shared structural styles. Loaded by every theme.
 * Colors and fonts are defined in theme-*.css via CSS variables — not here.
 */

html { scroll-behavior: smooth; }

body {
    font-family: var(--tnt-font-body, sans-serif);
    color:       var(--tnt-color-text, #333);
    background:  var(--tnt-color-bg,   #fff);
    line-height: 1.7;
    -webkit-font-smoothing: antialiased;
}

/* ── Header ─────────────────────────────────────────────────────────────── */
.tnt-header {
    position:   sticky;
    top:        0;
    z-index:    1030;
    background: var(--tnt-header-bg, #fff);
    box-shadow: var(--tnt-header-shadow, 0 2px 8px rgba(0,0,0,.08));
}
.tnt-header .navbar { padding: 0.75rem 0; }
.tnt-logo__text {
    font-family:     var(--tnt-font-heading, sans-serif);
    font-weight:     700;
    font-size:       1.4rem;
    color:           var(--tnt-color-primary, #0d6efd);
    text-decoration: none;
}
.tnt-logo__img { max-height: 52px; width: auto; }

/* ── Hero ───────────────────────────────────────────────────────────────── */
.tnt-hero {
    position:    relative;
    min-height:  var(--tnt-hero-height, 520px);
    display:     flex;
    align-items: center;
    overflow:    hidden;
    background:  var(--tnt-hero-bg, var(--tnt-color-primary, #0d6efd));
}
.tnt-hero__bg      { position: absolute; inset: 0; background-size: cover; background-position: center; }
.tnt-hero__overlay { position: absolute; inset: 0; background: var(--tnt-hero-overlay, rgba(0,0,0,.55)); }
.tnt-hero__content { position: relative; z-index: 2; padding: 4rem 0; color: #fff; }
.tnt-hero__heading {
    font-family:   var(--tnt-font-heading, sans-serif);
    font-size:     clamp(2rem, 5vw, 3.25rem);
    font-weight:   800;
    line-height:   1.15;
    margin-bottom: 1rem;
}
.tnt-hero__actions { display: flex; flex-wrap: wrap; gap: 1rem; }

/* ── Trust Bar ──────────────────────────────────────────────────────────── */
.tnt-trust-bar {
    background:    var(--tnt-trust-bar-bg, #f8f9fa);
    padding:       1.25rem 0;
    border-bottom: 1px solid var(--tnt-border-color, #dee2e6);
}
.tnt-trust-bar__item {
    display:         flex;
    align-items:     center;
    justify-content: center;
    gap:             0.5rem;
    font-weight:     600;
    font-size:       0.9rem;
}
.tnt-trust-bar__icon { font-size: 1.1rem; color: var(--tnt-color-primary); }

/* ── Section Titles ─────────────────────────────────────────────────────── */
.tnt-section-title {
    font-family:   var(--tnt-font-heading, sans-serif);
    font-size:     clamp(1.6rem, 3vw, 2.25rem);
    font-weight:   700;
    color:         var(--tnt-color-heading, #1a1a2e);
    margin-bottom: 0.5rem;
}

/* ── Content Areas ──────────────────────────────────────────────────────── */
.tnt-content-section { padding: 4rem 0; }
.tnt-content-area    { padding: 3.5rem 0 4rem; }

.tnt-body-content             { font-size: 1.05rem; line-height: 1.8; }
.tnt-body-content h2          { font-family: var(--tnt-font-heading); font-size: 1.7rem; font-weight: 700; margin-top: 2rem; margin-bottom: 0.75rem; color: var(--tnt-color-heading); }
.tnt-body-content h3          { font-family: var(--tnt-font-heading); font-size: 1.3rem; font-weight: 600; margin-top: 1.5rem; margin-bottom: 0.5rem; color: var(--tnt-color-heading); }
.tnt-body-content img         { max-width: 100%; height: auto; border-radius: 6px; margin: 1rem 0; }
.tnt-body-content ul,
.tnt-body-content ol          { padding-left: 1.5rem; margin-bottom: 1rem; }
.tnt-body-content a           { color: var(--tnt-color-primary); }

/* ── Page Banner ────────────────────────────────────────────────────────── */
.tnt-page-banner {
    position:   relative;
    background: var(--tnt-banner-bg, var(--tnt-color-primary, #0d6efd));
    color:      #fff;
    padding:    3rem 0 2rem;
    overflow:   hidden;
}
.tnt-page-banner__bg      { position: absolute; inset: 0; background-size: cover; background-position: center; }
.tnt-page-banner__overlay { position: absolute; inset: 0; background: var(--tnt-hero-overlay, rgba(0,0,0,.6)); }
.tnt-page-banner__inner   { position: relative; z-index: 2; color: #fff; }
.tnt-page-banner__h1 {
    font-family:   var(--tnt-font-heading);
    font-size:     clamp(1.6rem, 3.5vw, 2.5rem);
    font-weight:   800;
    margin-bottom: 0.5rem;
}
.tnt-page-banner__location { font-size: 1rem; opacity: 0.85; margin-bottom: 0.5rem; }

/* ── Breadcrumb ─────────────────────────────────────────────────────────── */
.tnt-breadcrumb { --bs-breadcrumb-divider-color: rgba(255,255,255,.6); margin-bottom: 0; }
.tnt-breadcrumb .breadcrumb-item a         { color: rgba(255,255,255,.8); text-decoration: none; }
.tnt-breadcrumb .breadcrumb-item a:hover   { color: #fff; }
.tnt-breadcrumb .breadcrumb-item.active    { color: rgba(255,255,255,.9); }
.tnt-breadcrumb .breadcrumb-item + .breadcrumb-item::before { color: rgba(255,255,255,.5); }

/* ── Service Cards ──────────────────────────────────────────────────────── */
.tnt-services { padding: 4rem 0; background: var(--tnt-services-bg, #f8f9fa); }
.tnt-service-card {
    display:        block;
    text-decoration: none;
    background:     var(--tnt-card-bg, #fff);
    border:         1px solid var(--tnt-border-color, #dee2e6);
    border-radius:  var(--tnt-radius, 8px);
    padding:        2rem 1.5rem;
    height:         100%;
    transition:     box-shadow 0.2s, transform 0.2s, border-color 0.2s;
    color:          var(--tnt-color-text);
}
.tnt-service-card:hover         { box-shadow: 0 8px 24px rgba(0,0,0,.1); transform: translateY(-3px); border-color: var(--tnt-color-primary); color: var(--tnt-color-text); }
.tnt-service-card__title        { font-family: var(--tnt-font-heading); font-size: 1.2rem; font-weight: 700; color: var(--tnt-color-heading); margin-bottom: 0.75rem; }
.tnt-service-card__desc         { font-size: 0.92rem; color: var(--tnt-color-muted); margin-bottom: 1rem; line-height: 1.6; }
.tnt-service-card__link         { font-size: 0.9rem; font-weight: 600; color: var(--tnt-color-primary); }

/* ── CTA Band ───────────────────────────────────────────────────────────── */
.tnt-cta-band           { background: var(--tnt-cta-bg, var(--tnt-color-primary)); color: #fff; padding: 4rem 0; }
.tnt-cta-band__heading  { font-family: var(--tnt-font-heading); font-size: clamp(1.5rem, 3vw, 2rem); font-weight: 700; margin-bottom: 0.75rem; }
.tnt-cta-band__sub      { font-size: 1.1rem; opacity: 0.9; margin-bottom: 2rem; }
.tnt-cta-band__actions  { display: flex; flex-wrap: wrap; gap: 1rem; justify-content: center; }

/* ── Inline CTA ─────────────────────────────────────────────────────────── */
.tnt-inline-cta {
    background:    var(--tnt-trust-bar-bg, #f8f9fa);
    border-left:   4px solid var(--tnt-color-primary);
    border-radius: var(--tnt-radius, 8px);
    padding:       2rem;
    margin-top:    3rem;
}
.tnt-inline-cta__heading { font-family: var(--tnt-font-heading); font-size: 1.4rem; font-weight: 700; margin-bottom: 0.5rem; }

/* ── Sidebar ────────────────────────────────────────────────────────────── */
.tnt-sidebar            { position: sticky; top: 100px; }
.tnt-sidebar-widget     { background: var(--tnt-card-bg, #fff); border: 1px solid var(--tnt-border-color, #dee2e6); border-radius: var(--tnt-radius, 8px); padding: 1.5rem; margin-bottom: 1.5rem; }
.tnt-sidebar-widget__title { font-family: var(--tnt-font-heading); font-size: 1.05rem; font-weight: 700; color: var(--tnt-color-heading); margin-bottom: 1rem; padding-bottom: 0.5rem; border-bottom: 2px solid var(--tnt-color-primary); }
.tnt-sidebar-cta        { background: var(--tnt-color-primary); border-color: var(--tnt-color-primary); color: #fff; text-align: center; }
.tnt-sidebar-cta .tnt-sidebar-widget__title { color: #fff; border-color: rgba(255,255,255,.3); }
.tnt-sidebar-phone      { display: block; font-size: 1.5rem; font-weight: 800; color: #fff; text-decoration: none; margin-bottom: 0.5rem; }
.tnt-sidebar-phone:hover { color: rgba(255,255,255,.85); }
.tnt-sidebar-links      { list-style: none; padding: 0; margin: 0; }
.tnt-sidebar-links li   { padding: 0.35rem 0; border-bottom: 1px solid var(--tnt-border-color); }
.tnt-sidebar-links li:last-child { border-bottom: none; }
.tnt-sidebar-links a    { color: var(--tnt-color-text); text-decoration: none; font-size: 0.95rem; }
.tnt-sidebar-links a:hover { color: var(--tnt-color-primary); }

/* ── Trust List ─────────────────────────────────────────────────────────── */
.tnt-trust-list__items          { list-style: none; padding: 0; margin: 0; }
.tnt-trust-list__items li       { padding: 0.35rem 0 0.35rem 1.5rem; position: relative; font-size: 0.95rem; border-bottom: 1px solid var(--tnt-border-color); }
.tnt-trust-list__items li:last-child { border-bottom: none; }
.tnt-trust-list__items li::before { content: '✓'; position: absolute; left: 0; color: var(--tnt-color-primary); font-weight: 700; }

/* ── Blog Post Cards ────────────────────────────────────────────────────── */
.tnt-blog-preview           { padding: 4rem 0; }
.tnt-post-card              { background: var(--tnt-card-bg, #fff); border: 1px solid var(--tnt-border-color, #dee2e6); border-radius: var(--tnt-radius, 8px); overflow: hidden; height: 100%; display: flex; flex-direction: column; transition: box-shadow 0.2s, transform 0.2s; }
.tnt-post-card:hover        { box-shadow: 0 6px 20px rgba(0,0,0,.09); transform: translateY(-2px); }
.tnt-post-card__img-wrap    { display: block; overflow: hidden; }
.tnt-post-card__img         { width: 100%; height: 200px; object-fit: cover; display: block; transition: transform 0.3s; }
.tnt-post-card:hover .tnt-post-card__img { transform: scale(1.03); }
.tnt-post-card__body        { padding: 1.25rem; flex: 1; display: flex; flex-direction: column; }
.tnt-post-card__date        { font-size: 0.8rem; color: var(--tnt-color-muted); margin-bottom: 0.4rem; }
.tnt-post-card__title       { font-family: var(--tnt-font-heading); font-size: 1.05rem; font-weight: 700; margin-bottom: 0.5rem; }
.tnt-post-card__title a     { color: var(--tnt-color-heading); text-decoration: none; }
.tnt-post-card__title a:hover { color: var(--tnt-color-primary); }
.tnt-post-card__excerpt     { font-size: 0.9rem; color: var(--tnt-color-muted); flex: 1; }
.tnt-post-card__more        { font-size: 0.88rem; font-weight: 600; color: var(--tnt-color-primary); text-decoration: none; margin-top: 0.75rem; display: inline-block; }

/* ── Blog Single ────────────────────────────────────────────────────────── */
.tnt-post-meta              { font-size: 0.9rem; color: rgba(255,255,255,.8); margin-bottom: 0.5rem; display: flex; flex-wrap: wrap; gap: 0.75rem; align-items: center; }
.tnt-post-featured-img      { width: 100%; border-radius: var(--tnt-radius); }
.tnt-tag                    { display: inline-block; background: var(--tnt-color-primary); color: #fff; font-size: 0.75rem; font-weight: 600; padding: 0.2rem 0.6rem; border-radius: 4px; }

/* ── Phone Button ───────────────────────────────────────────────────────── */
.tnt-btn-phone { display: inline-flex; align-items: center; gap: 0.5rem; font-weight: 700; }

/* ── Footer ─────────────────────────────────────────────────────────────── */
.tnt-footer         { background: var(--tnt-footer-bg, #1a1a2e); color: var(--tnt-footer-text, rgba(255,255,255,.8)); padding: 4rem 0 2rem; }
.tnt-footer__heading { font-family: var(--tnt-font-heading); font-size: 1rem; font-weight: 700; color: #fff; margin-bottom: 1rem; }
.tnt-footer__address { font-style: normal; font-size: 0.9rem; line-height: 1.7; }
.tnt-footer__phone,
.tnt-footer__email  { color: var(--tnt-footer-text); text-decoration: none; font-size: 0.95rem; }
.tnt-footer__phone:hover,
.tnt-footer__email:hover { color: #fff; }
.tnt-footer__links  { list-style: none; padding: 0; margin: 0; }
.tnt-footer__links li { padding: 0.3rem 0; }
.tnt-footer__links a { color: var(--tnt-footer-text); text-decoration: none; font-size: 0.9rem; }
.tnt-footer__links a:hover { color: #fff; }
.tnt-footer__bottom { margin-top: 3rem; padding-top: 1.5rem; border-top: 1px solid rgba(255,255,255,.1); }
.tnt-footer__bottom small { color: rgba(255,255,255,.5); }
.tnt-footer__bottom a { color: rgba(255,255,255,.6); text-decoration: none; }
.tnt-footer__bottom a:hover { color: #fff; }

/* ── 404 ────────────────────────────────────────────────────────────────── */
.tnt-404-content { padding: 8rem 1rem; }
.tnt-404__code   { font-size: 8rem; font-weight: 900; color: var(--tnt-color-primary); line-height: 1; }
.tnt-404__msg    { font-size: 2rem; font-weight: 700; margin-bottom: 1rem; }

/* ── Responsive ─────────────────────────────────────────────────────────── */
@media (max-width: 991.98px) {
    .tnt-sidebar { position: static; }
    .tnt-hero    { min-height: 400px; }
}
@media (max-width: 767.98px) {
    .tnt-cta-band__actions { flex-direction: column; align-items: center; }
    .tnt-hero__actions     { flex-direction: column; }
}

/* ── Contact Form ───────────────────────────────────────────────────────── */
.tnt-form-wrap {
    max-width: 640px;
}
.tnt-form .tnt-field {
    margin-bottom: 1.25rem;
}
.tnt-form label {
    display:       block;
    font-weight:   600;
    font-size:     0.9rem;
    margin-bottom: 0.4rem;
    color:         var(--tnt-color-heading);
}
.tnt-required {
    color: #dc3545;
    margin-left: 2px;
}
.tnt-form input[type="text"],
.tnt-form input[type="email"],
.tnt-form input[type="phone"],
.tnt-form input[type="tel"],
.tnt-form input[type="number"],
.tnt-form select,
.tnt-form textarea {
    display:        block;
    width:          100%;
    padding:        0.6rem 0.9rem;
    font-size:      1rem;
    font-family:    var(--tnt-font-body);
    color:          var(--tnt-color-text);
    background:     var(--tnt-color-bg);
    border:         1px solid var(--tnt-color-border);
    border-radius:  var(--tnt-radius);
    transition:     border-color 0.15s, box-shadow 0.15s;
    -webkit-appearance: none;
}
.tnt-form input:focus,
.tnt-form select:focus,
.tnt-form textarea:focus {
    outline:      none;
    border-color: var(--tnt-color-primary);
    box-shadow:   0 0 0 3px color-mix(in srgb, var(--tnt-color-primary) 15%, transparent);
}
.tnt-form textarea {
    resize:     vertical;
    min-height: 130px;
}
.tnt-field-submit {
    margin-top: 0.5rem;
}
.tnt-submit {
    display:       inline-block;
    padding:       0.7rem 2rem;
    background:    var(--tnt-color-primary);
    color:         #fff;
    font-family:   var(--tnt-font-heading);
    font-size:     1rem;
    font-weight:   700;
    border:        none;
    border-radius: var(--tnt-radius);
    cursor:        pointer;
    transition:    background 0.2s, transform 0.1s;
}
.tnt-submit:hover    { background: var(--tnt-color-primary-d); }
.tnt-submit:active   { transform: scale(0.98); }
.tnt-submit:disabled { opacity: 0.65; cursor: not-allowed; }

/* Form messages */
.tnt-form-messages {
    padding:       0.9rem 1.1rem;
    border-radius: var(--tnt-radius);
    font-weight:   600;
    margin-bottom: 1rem;
}
.tnt-form-messages.tnt-success {
    background: #d1fae5;
    color:      #065f46;
    border:     1px solid #6ee7b7;
}
.tnt-form-messages.tnt-error {
    background: #fee2e2;
    color:      #991b1b;
    border:     1px solid #fca5a5;
}

/* Radio & checkbox groups */
.tnt-radio-label,
.tnt-checkbox-label {
    display:       flex;
    align-items:   center;
    gap:           0.5rem;
    font-weight:   normal;
    cursor:        pointer;
    margin-bottom: 0.4rem;
}

/* ── Section Wrapper Shortcodes ──────────────────────────────────────── */

.tnt-section {
    position:   relative;
    width:      100%;
}
.tnt-section .container          { position: relative; z-index: 2; }
.tnt-section__inner              { width: 100%; }
.tnt-section__inner h2,
.tnt-section__inner h3           { font-family: var(--tnt-font-heading); }

/* Padding variants */
.tnt-section--pad-sm             { padding: 2rem 0; }
.tnt-section--pad-md             { padding: 3.5rem 0; }
.tnt-section--pad-lg             { padding: 5rem 0; }
.tnt-section--pad-xl             { padding: 7rem 0; }

/* Background variants */
.tnt-section--white              { background: #fff; }
.tnt-section--light              { background: var(--tnt-color-bg-alt, #f5f7fa); }
.tnt-section--dark               { background: var(--tnt-color-primary, #1B4FD8); color: #fff; }
.tnt-section--dark h1,
.tnt-section--dark h2,
.tnt-section--dark h3,
.tnt-section--dark h4            { color: #fff; }
.tnt-section--dark a:not(.btn):not(.dir-pill) { color: rgba(255,255,255,.85); text-decoration: underline; }
.tnt-section--dark .text-muted   { color: rgba(255,255,255,.65) !important; }

.tnt-section--accent             { background: var(--tnt-color-secondary, #FF6B35); color: #fff; }
.tnt-section--accent h1,
.tnt-section--accent h2,
.tnt-section--accent h3,
.tnt-section--accent h4          { color: #fff; }

.tnt-section--image              { background-size: cover; background-position: center; background-repeat: no-repeat; color: #fff; }
.tnt-section--image h1,
.tnt-section--image h2,
.tnt-section--image h3,
.tnt-section--image h4           { color: #fff; }
.tnt-section__overlay            { position: absolute; inset: 0; background: #000; z-index: 1; }

/* Light text modifier */
.tnt-section--text-light         { color: rgba(255,255,255,.9); }
.tnt-section--text-light h1,
.tnt-section--text-light h2,
.tnt-section--text-light h3      { color: #fff; }

/* ── Directory Module ───────────────────────────────────────────────────── */

/* City Venues Listing */
.dir-city-venues__header          { margin-bottom: 2rem; }
.dir-city-venues__title           { font-family: var(--tnt-font-heading); font-size: clamp(1.6rem, 3vw, 2.25rem); font-weight: 800; color: var(--tnt-color-heading); margin-bottom: 0.25rem; }
.dir-city-venues__meta            { font-size: 0.95rem; color: var(--tnt-color-muted); }
.dir-city-venues__intro           { font-size: 1.05rem; line-height: 1.7; color: var(--tnt-color-text); margin-bottom: 1.5rem; }

/* Venue Card */
.dir-venue-card                   { background: var(--tnt-color-card-bg, #fff); border: 1px solid var(--tnt-color-border, #e2e8f0); border-radius: var(--tnt-radius, 10px); overflow: hidden; height: 100%; display: flex; flex-direction: column; transition: box-shadow 0.2s, transform 0.15s; }
.dir-venue-card:hover             { box-shadow: 0 6px 20px rgba(0,0,0,.09); transform: translateY(-2px); }
.dir-venue-card__img-wrap         { display: block; overflow: hidden; background: #f1f5f9; aspect-ratio: 4 / 3; position: relative; }
.dir-venue-card__img              { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform 0.3s; position: absolute; inset: 0; }
.dir-venue-card:hover .dir-venue-card__img { transform: scale(1.03); }
.dir-venue-card__img-placeholder  { width: 100%; aspect-ratio: 4 / 3; display: flex; align-items: center; justify-content: center; background: #f1f5f9; color: var(--tnt-color-muted); font-size: 2rem; position: relative; }
.dir-venue-card__body             { padding: 1.25rem; flex: 1; display: flex; flex-direction: column; }
.dir-venue-card__name             { font-family: var(--tnt-font-heading); font-size: 1.1rem; font-weight: 700; color: var(--tnt-color-heading); margin: 0 0 0.35rem; line-height: 1.3; }
.dir-venue-card__name a           { color: inherit; text-decoration: none; }
.dir-venue-card__name a:hover     { color: var(--tnt-color-primary); }
.dir-venue-card__rating           { display: inline-flex; align-items: center; gap: 0.25rem; font-size: 0.78rem; font-weight: 700; position: absolute; top: 0.6rem; right: 0.6rem; background: var(--tnt-color-primary); color: #fff; padding: 0.2rem 0.55rem; border-radius: 20px; z-index: 2; line-height: 1; }
.dir-venue-card__rating-star      { color: #fbbf24; }
.dir-venue-card__location         { font-size: 0.88rem; color: var(--tnt-color-muted); margin-bottom: 0.5rem; }
.dir-venue-card__summary          { font-size: 0.88rem; color: var(--tnt-color-muted); line-height: 1.5; margin-bottom: 0; flex: 1; }
.dir-venue-card__actions          { display: flex; flex-wrap: wrap; gap: 0.5rem; padding: 1rem 1.25rem; border-top: 1px solid var(--tnt-color-border, #e2e8f0); margin-top: auto; }
.dir-venue-card__btn              { display: inline-flex; align-items: center; gap: 0.35rem; padding: 0.4rem 0.85rem; font-size: 0.82rem; font-weight: 600; border-radius: 6px; text-decoration: none; white-space: nowrap; transition: background 0.15s, color 0.15s; }
a.dir-venue-card__btn--primary     { background: var(--tnt-color-primary); color: #fff; }
a.dir-venue-card__btn--primary:hover { background: var(--tnt-color-primary-d); color: #fff; }
.dir-venue-card__btn--outline     { background: transparent; color: var(--tnt-color-text); border: 1px solid var(--tnt-color-border, #cbd5e1); }
.dir-venue-card__btn--outline:hover { background: #f1f5f9; color: var(--tnt-color-primary); border-color: var(--tnt-color-primary); }

/* Region Cities Grid */
.dir-region-cities__heading       { font-family: var(--tnt-font-heading); font-size: 1.3rem; font-weight: 700; }
.dir-city-card                    { display: flex; align-items: center; justify-content: space-between; padding: 1rem 1.25rem; background: var(--tnt-color-card-bg, #fff); border: 1px solid var(--tnt-color-border, #e2e8f0); border-radius: var(--tnt-radius, 10px); text-decoration: none; color: var(--tnt-color-text); transition: box-shadow 0.2s, border-color 0.15s; }
.dir-city-card:hover              { box-shadow: 0 4px 12px rgba(0,0,0,.08); border-color: var(--tnt-color-primary); color: var(--tnt-color-text); }
.dir-city-card__name              { font-weight: 600; color: var(--tnt-color-heading); }
.dir-city-card__count             { font-size: 0.85rem; color: var(--tnt-color-muted); margin-top: 0.15rem; }
.dir-city-card__badge             { background: var(--tnt-color-primary); color: #fff; font-size: 0.78rem; font-weight: 700; padding: 0.25rem 0.65rem; border-radius: 20px; flex-shrink: 0; }

/* Venue Detail Page */
.dir-venue-detail__hero-img       { width: 100%; max-height: 500px; object-fit: cover; border-radius: var(--tnt-radius, 10px); }
.dir-venue-detail__name           { font-family: var(--tnt-font-heading); font-size: clamp(1.8rem, 4vw, 2.5rem); font-weight: 800; margin-bottom: 0.25rem; }
.dir-venue-detail__rating         { display: inline-flex; align-items: center; gap: 0.3rem; font-size: 1rem; font-weight: 600; }
.dir-venue-detail__rating-star    { color: #f59e0b; font-size: 1.1rem; }
.dir-venue-detail__section-title  { font-family: var(--tnt-font-heading); font-size: 1.15rem; font-weight: 700; margin-bottom: 0.75rem; }
.dir-venue-detail__intro          { font-size: 1.05rem; line-height: 1.7; color: var(--tnt-color-text); margin-bottom: 0.5rem; }

/* Venue Detail Pill Buttons */
a.dir-pill                        { display: inline-block; padding: 0.45rem 1.1rem; font-size: 0.88rem; font-weight: 600; border-radius: 20px; text-decoration: none; border: 1px solid var(--tnt-color-border, #cbd5e1); color: var(--tnt-color-text); background: transparent; transition: background 0.15s, color 0.15s, border-color 0.15s; }
a.dir-pill:hover                  { background: #f1f5f9; color: var(--tnt-color-primary); border-color: var(--tnt-color-primary); }
a.dir-pill--filled                { background: var(--tnt-color-primary); color: #fff; border-color: var(--tnt-color-primary); }
a.dir-pill--filled:hover          { background: var(--tnt-color-primary-d); border-color: var(--tnt-color-primary-d); color: #fff; }

/* Directory Toolbar (Sort / Filter) */
.dir-toolbar                      { display: flex; flex-wrap: wrap; align-items: center; gap: 0.75rem; padding: 0.85rem 1rem; margin-bottom: 1.5rem; background: var(--tnt-color-card-bg, #fff); border: 1px solid var(--tnt-color-border, #e2e8f0); border-radius: var(--tnt-radius, 10px); }
.dir-toolbar__group               { display: flex; flex-wrap: wrap; align-items: center; gap: 0.35rem; }
.dir-toolbar__group--search       { margin-left: auto; }
.dir-toolbar__label               { font-size: 0.82rem; font-weight: 600; color: var(--tnt-color-muted); margin-right: 0.15rem; white-space: nowrap; }
.dir-toolbar__btn                 { display: inline-block; padding: 0.3rem 0.7rem; font-size: 0.82rem; font-weight: 600; border-radius: 6px; text-decoration: none; color: var(--tnt-color-text); background: transparent; border: 1px solid transparent; transition: background 0.15s, color 0.15s, border-color 0.15s; white-space: nowrap; }
.dir-toolbar__btn:hover           { background: #f1f5f9; color: var(--tnt-color-primary); }
.dir-toolbar__btn--active         { background: var(--tnt-color-primary); color: #fff !important; border-color: var(--tnt-color-primary); }
.dir-toolbar__btn--active:hover   { background: var(--tnt-color-primary-d); border-color: var(--tnt-color-primary-d); }
.dir-toolbar__btn--clear          { color: var(--tnt-color-muted); border: 1px solid var(--tnt-color-border, #cbd5e1); }
.dir-toolbar__btn--clear:hover    { color: #dc2626; border-color: #dc2626; background: #fef2f2; }
.dir-toolbar__search-form         { display: flex; align-items: stretch; }
.dir-toolbar__search-input        { padding: 0.3rem 0.6rem; font-size: 0.85rem; border: 1px solid var(--tnt-color-border, #cbd5e1); border-radius: 6px 0 0 6px; outline: none; width: 150px; max-width: 200px; }
.dir-toolbar__search-input:focus  { border-color: var(--tnt-color-primary); box-shadow: 0 0 0 2px rgba(var(--tnt-color-primary-rgb, 59,130,246), 0.15); }
.dir-toolbar__search-btn          { padding: 0.3rem 0.55rem; font-size: 0.85rem; border: 1px solid var(--tnt-color-border, #cbd5e1); border-left: 0; border-radius: 0 6px 6px 0; background: #f8fafc; cursor: pointer; line-height: 1; }
.dir-toolbar__search-btn:hover    { background: #e2e8f0; }

@media (max-width: 767.98px) {
    .dir-toolbar                   { flex-direction: column; align-items: stretch; gap: 0.5rem; }
    .dir-toolbar__group--search    { margin-left: 0; }
    .dir-toolbar__search-input     { flex: 1; width: auto; max-width: none; }
}

/* City FAQ Section */
.dir-city-faq                     { margin-top: 3rem; padding-top: 2rem; border-top: 1px solid var(--tnt-color-border, #e2e8f0); }
.dir-city-faq__item               { margin-bottom: 1.5rem; }
.dir-city-faq__q                  { font-family: var(--tnt-font-heading); font-size: 1.1rem; font-weight: 700; color: var(--tnt-color-heading); margin-bottom: 0.35rem; }
.dir-city-faq__a                  { font-size: 1rem; line-height: 1.7; color: var(--tnt-color-text); margin: 0; }
.dir-city-faq__a a                { color: var(--tnt-color-primary); }

/* Directory Pagination */
.dir-pagination .page-link        { color: var(--tnt-color-primary); border-color: var(--tnt-color-border); }
.dir-pagination .page-item.active .page-link { background: var(--tnt-color-primary); border-color: var(--tnt-color-primary); color: #fff; }
.dir-pagination .page-link:hover  { background: #f1f5f9; color: var(--tnt-color-primary-d); }

/* Footer Social Icons */
.tnt-footer__social               { display: flex; gap: 0.75rem; margin-top: 0.75rem; }
.tnt-footer__social a             { display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 36px; border-radius: 50%; border: 1px solid rgba(255,255,255,.3); color: rgba(255,255,255,.7); font-size: 1rem; text-decoration: none; transition: background 0.2s, color 0.2s, border-color 0.2s; }
.tnt-footer__social a:hover       { background: var(--tnt-color-primary); border-color: var(--tnt-color-primary); color: #fff; }

@media (max-width: 575.98px) {
    .dir-venue-card__img-wrap      { aspect-ratio: 4 / 3; }
    .dir-venue-card__actions       { flex-direction: column; }
    .dir-venue-card__btn           { justify-content: center; }
}

/* ═══════════════════════════════════════════════════════════════════════════
   ARTIST BROWSE & DETAIL
   ═══════════════════════════════════════════════════════════════════════════ */

/* Filter section */
.dir-artist-filters                { background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 10px; padding: 1.25rem; }

/* Featured / Newest Bands section */
.dir-artist-featured               { border-bottom: 1px solid #e2e8f0; padding-bottom: 1.5rem; }
.dir-artist-featured__heading      { font-family: var(--tnt-font-heading, sans-serif); font-size: 1.3rem; font-weight: 700; color: var(--tnt-color-heading, #1a1a2e); margin-bottom: 1rem; }

/* Collapsible genre filter */
.dir-artist-filters__genre-details { border: none; }
.dir-artist-filters__genre-toggle  { display: inline-flex; align-items: center; gap: .5rem; font-weight: 600; font-size: .9rem; cursor: pointer; color: var(--tnt-color-heading, #333); padding: .35rem 0; list-style: none; }
.dir-artist-filters__genre-toggle::-webkit-details-marker { display: none; }
.dir-artist-filters__genre-toggle::before { content: '\25B6'; font-size: .7rem; transition: transform .2s; }
.dir-artist-filters__genre-details[open] > .dir-artist-filters__genre-toggle::before { transform: rotate(90deg); }
.dir-artist-filters__genre-count   { background: var(--tnt-color-primary, #3b82f6); color: #fff; font-size: .72rem; font-weight: 700; padding: .15rem .5rem; border-radius: 20px; }

/* Artist Cards */
.dir-artist-card                   { background: #fff; border: 1px solid #e5e7eb; border-radius: 10px; overflow: hidden; height: 100%; transition: box-shadow .2s, transform .15s; }
.dir-artist-card:hover             { box-shadow: 0 6px 20px rgba(0,0,0,.1); transform: translateY(-2px); }
.dir-artist-card__img-wrap         { display: block; aspect-ratio: 1; overflow: hidden; background: #f0f0f0; position: relative; }
.dir-artist-card__img              { width: 100%; height: 100%; object-fit: cover; transition: transform .3s; }
.dir-artist-card:hover .dir-artist-card__img { transform: scale(1.04); }
.dir-artist-card__img-placeholder  { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; font-size: 3rem; color: #d1d5db; }
.dir-artist-card__new-badge        { position: absolute; top: .5rem; left: .5rem; background: #059669; color: #fff; font-size: .7rem; font-weight: 700; padding: .2rem .6rem; border-radius: 20px; letter-spacing: .5px; z-index: 2; }
.dir-artist-card__trend-badge      { position: absolute; top: .5rem; left: .5rem; background: #ea580c; color: #fff; font-size: .7rem; font-weight: 700; padding: .2rem .6rem; border-radius: 20px; letter-spacing: .5px; z-index: 2; }
.dir-artist-card__body             { padding: 1rem; }
.dir-artist-card__name             { font-size: 1.05rem; font-weight: 700; margin: 0 0 .4rem; line-height: 1.3; }
.dir-artist-card__name a           { color: inherit; text-decoration: none; }
.dir-artist-card__name a:hover     { color: var(--tnt-color-primary, #3b82f6); }
.dir-artist-card__genres           { display: flex; flex-wrap: wrap; gap: .3rem; margin-bottom: .5rem; }
.dir-artist-card__genre-badge      { display: inline-block; font-size: .7rem; font-weight: 600; padding: .15rem .55rem; border-radius: 20px; background: #eef2ff; color: #4338ca; white-space: nowrap; }
.dir-artist-card__location         { font-size: .82rem; color: #6b7280; margin-bottom: .5rem; }
.dir-artist-card__location i       { font-size: .75rem; }
.dir-artist-card__socials          { display: flex; gap: .6rem; margin-top: .25rem; }
.dir-artist-card__socials a        { color: #9ca3af; font-size: 1rem; transition: color .15s; }
.dir-artist-card__socials a:hover  { color: var(--tnt-color-primary, #3b82f6); }

/* Text wrapping protection — force normal wrapping even if parent has white-space:pre */
.dir-venue-detail,
.dir-venue-detail *,
.dir-artist-browse,
.dir-artist-browse *               { white-space: normal !important; overflow-wrap: break-word; word-break: break-word; }

/* Artist hero: full natural height, constrained to page width */
.dir-artist-detail--full-hero .dir-venue-detail__hero-img { max-height: none; object-fit: contain; }

/* Artist gallery thumbnail strip */
.dir-artist-gallery                { display: flex; gap: 0.75rem; overflow-x: auto; padding-bottom: 0.75rem; scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch; }
.dir-artist-gallery::-webkit-scrollbar { height: 6px; }
.dir-artist-gallery::-webkit-scrollbar-track { background: #f1f5f9; border-radius: 3px; }
.dir-artist-gallery::-webkit-scrollbar-thumb { background: #cbd5e1; border-radius: 3px; }
.dir-artist-gallery__thumb         { flex: 0 0 auto; width: 180px; height: 130px; border-radius: 8px; overflow: hidden; cursor: pointer; scroll-snap-align: start; border: 2px solid transparent; transition: border-color .15s, transform .15s; }
.dir-artist-gallery__thumb:hover   { border-color: var(--tnt-color-primary, #3b82f6); transform: scale(1.03); }
.dir-artist-gallery__thumb img     { width: 100%; height: 100%; object-fit: cover; display: block; }

/* Lightbox overlay */
.dir-lightbox                      { position: fixed; inset: 0; z-index: 9999; background: rgba(0,0,0,.9); display: flex; align-items: center; justify-content: center; opacity: 0; transition: opacity .25s; cursor: pointer; }
.dir-lightbox.active               { opacity: 1; }
.dir-lightbox__img                 { max-width: 90vw; max-height: 90vh; object-fit: contain; border-radius: 8px; box-shadow: 0 8px 40px rgba(0,0,0,.5); }
.dir-lightbox__close               { position: absolute; top: 1rem; right: 1.5rem; color: #fff; font-size: 2.5rem; font-weight: 300; line-height: 1; cursor: pointer; opacity: .7; transition: opacity .15s; background: none; border: none; }
.dir-lightbox__close:hover         { opacity: 1; }
.dir-lightbox__nav                 { position: absolute; top: 50%; transform: translateY(-50%); color: #fff; font-size: 2.5rem; cursor: pointer; opacity: .7; transition: opacity .15s; background: none; border: none; padding: 1rem; }
.dir-lightbox__nav:hover           { opacity: 1; }
.dir-lightbox__nav--prev           { left: 0.5rem; }
.dir-lightbox__nav--next           { right: 0.5rem; }

@media (max-width: 575.98px) {
    .dir-artist-gallery__thumb     { width: 140px; height: 100px; }
}

@media (max-width: 575.98px) {
    .dir-artist-card__img-wrap     { aspect-ratio: 4 / 3; }
}

/* ===================================================================
   Events Module — [events ...] shortcode (card grid)
   =================================================================== */
.tnt-events-list { margin: 1.5rem 0; }
.tnt-events-month { margin-bottom: 2.5rem; }
.tnt-events-date-heading {
    font-size: 1.1rem; text-transform: uppercase; letter-spacing: 1px;
    color: var(--accent-color, #c22); border-bottom: 2px solid currentColor;
    padding-bottom: .35rem; margin-bottom: 1rem;
}
.tnt-events-grid {
    display: grid; gap: 1.25rem;
    grid-template-columns: repeat(3, 1fr);
}
@media (max-width: 900px) {
    .tnt-events-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 600px) {
    .tnt-events-grid { grid-template-columns: 1fr; }
}
.tnt-event-card {
    display: flex; flex-direction: column;
    background: #fff; border: 1px solid #e5e5e5; border-radius: 8px;
    overflow: hidden; box-shadow: 0 1px 3px rgba(0,0,0,.06);
    transition: transform .15s ease, box-shadow .15s ease;
}
.tnt-event-card:hover { transform: translateY(-2px); box-shadow: 0 4px 12px rgba(0,0,0,.1); }
.tnt-event-card__thumb {
    position: relative; width: 100%; aspect-ratio: 16 / 9; overflow: hidden;
    background: #f0f0f0;
}
.tnt-event-card__thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.tnt-event-card__genre {
    position: absolute; top: 8px; right: 8px;
    background: rgba(0,0,0,.75); color: #fff;
    padding: 3px 10px; border-radius: 12px;
    font-size: .7rem; text-transform: uppercase; letter-spacing: .5px;
}
.tnt-event-card__body {
    flex: 1; display: flex; flex-direction: column;
    padding: .9rem 1rem 1rem;
}
.tnt-event-card__title {
    font-weight: 700; font-size: 1.05rem; line-height: 1.3;
    color: #222; margin-bottom: .5rem;
}
.tnt-event-card__meta {
    font-size: .85rem; color: #666; margin-bottom: 1rem; flex: 1;
}
.tnt-event-card__date {
    display: block; font-weight: 700; font-size: 1rem; color: #111;
    margin-bottom: .3rem;
}
.tnt-event-card__time {
    display: inline-block; font-weight: 600; color: #333;
    margin-bottom: .25rem;
}
.tnt-event-card__venue { font-weight: 700; color: #111; font-size: 1rem; margin-bottom: .15rem; }
.tnt-event-card__city { font-weight: 500; color: #555; font-size: .95rem; }
.tnt-event-card__actions {
    display: flex; gap: .5rem; margin-top: auto;
}
a.tnt-btn {
    flex: 1; display: inline-block; text-align: center;
    padding: .55rem .75rem; border-radius: 5px;
    font-size: .85rem; font-weight: 600; text-decoration: none;
    text-transform: uppercase; letter-spacing: .5px;
    transition: all .15s ease;
}
a.tnt-btn--primary,
a.tnt-btn--primary:link,
a.tnt-btn--primary:visited {
    background: #0d6efd; color: #fff !important;
}
a.tnt-btn--primary:hover {
    background: #c22; color: #fff !important; transform: translateY(-1px);
}
a.tnt-btn--secondary,
a.tnt-btn--secondary:link,
a.tnt-btn--secondary:visited {
    background: #fff; color: #0d6efd !important;
    border: 2px solid #0d6efd;
    padding: calc(.55rem - 2px) calc(.75rem - 2px);
}
a.tnt-btn--secondary:hover {
    background: #0d6efd; color: #fff !important;
}
.tnt-events-empty { padding: 1rem; color: #888; font-style: italic; }

/* ===================================================================
   Event Search — [event_search] shortcode (filter + grid)
   =================================================================== */
.tnt-event-search          { position: relative; }

/* Filter bar */
.tnt-es-filters {
    background: var(--tnt-color-card-bg, #fff);
    border: 1px solid var(--tnt-color-border, #e2e8f0);
    border-radius: var(--tnt-radius, 10px);
    padding: 1.25rem;
    margin-bottom: 1.5rem;
    display: flex; flex-direction: column; gap: 0.75rem;
}
.tnt-es-filters__row {
    display: flex; flex-wrap: wrap; gap: 0.6rem; align-items: stretch;
}
.tnt-es-input {
    flex: 1; min-width: 200px;
    padding: 0.6rem 1rem; font-size: 1rem;
    border: 1px solid var(--tnt-color-border, #cbd5e1);
    border-radius: 6px; outline: none;
    transition: border-color 0.15s, box-shadow 0.15s;
}
.tnt-es-input:focus {
    border-color: var(--tnt-color-primary);
    box-shadow: 0 0 0 3px rgba(59,130,246,.15);
}
.tnt-es-select {
    padding: 0.55rem 2rem 0.55rem 0.75rem; font-size: 0.9rem;
    border: 1px solid var(--tnt-color-border, #cbd5e1);
    border-radius: 6px; background: #fff; outline: none;
    cursor: pointer; min-width: 140px;
    -webkit-appearance: none; appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23666' d='M6 8L1 3h10z'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 0.7rem center;
    transition: border-color 0.15s;
}
.tnt-es-select:focus { border-color: var(--tnt-color-primary); }

/* Buttons */
.tnt-es-btn {
    padding: 0.55rem 1.25rem; font-size: 0.9rem; font-weight: 600;
    border-radius: 6px; border: none; cursor: pointer;
    white-space: nowrap; transition: background 0.15s, color 0.15s;
}
.tnt-es-btn--nearme {
    background: var(--tnt-color-primary); color: #fff;
}
.tnt-es-btn--nearme:hover { background: var(--tnt-color-primary-d, #1a44b8); }
.tnt-es-btn--active {
    background: #059669 !important; color: #fff !important;
}
.tnt-es-btn--clear {
    background: transparent; color: var(--tnt-color-muted, #64748b);
    border: 1px solid var(--tnt-color-border, #cbd5e1);
}
.tnt-es-btn--clear:hover {
    color: #dc2626; border-color: #dc2626; background: #fef2f2;
}

/* Summary */
.tnt-es-summary {
    display: flex; align-items: center; gap: 1rem;
    font-size: 0.95rem; font-weight: 600; color: var(--tnt-color-heading);
    margin-bottom: 1rem;
}
.tnt-es-nearme-label {
    font-size: 0.82rem; font-weight: 500;
    background: #ecfdf5; color: #059669;
    padding: 0.2rem 0.65rem; border-radius: 20px;
}

/* Distance badge on cards */
.tnt-event-card__distance {
    font-size: 0.8rem; font-weight: 600; color: #059669;
    margin-top: 0.2rem;
}

/* Loading overlay */
.tnt-es-loading {
    position: absolute; inset: 0; z-index: 10;
    background: rgba(255,255,255,.75);
    display: flex; align-items: center; justify-content: center;
    border-radius: var(--tnt-radius, 10px);
}
.tnt-es-spinner {
    width: 40px; height: 40px;
    border: 4px solid #e2e8f0;
    border-top-color: var(--tnt-color-primary);
    border-radius: 50%; animation: espin 0.7s linear infinite;
}
@keyframes espin { to { transform: rotate(360deg); } }

/* Pagination */
.tnt-es-pagination { margin-top: 2rem; }
.tnt-es-pagination .pagination .page-link {
    color: var(--tnt-color-primary); border-color: var(--tnt-color-border);
    cursor: pointer;
}
.tnt-es-pagination .page-item.active .page-link {
    background: var(--tnt-color-primary); border-color: var(--tnt-color-primary); color: #fff;
}

@media (max-width: 767.98px) {
    .tnt-es-filters__row   { flex-direction: column; }
    .tnt-es-input           { min-width: 0; }
    .tnt-es-select          { min-width: 0; width: 100%; }
}
