/* Controls */
.ve-controls { display:flex; align-items:center; gap:1rem; justify-content:space-between; margin-bottom: .75rem; flex-wrap:wrap; }
.ve-nav { display:flex; align-items:center; gap:.5rem; }
.ve-nav-btn { border:1px solid #e5e7eb; background:#fff; padding:.35rem .6rem; border-radius:8px; cursor:pointer; }
.ve-nav-current { min-width: 140px; text-align:center; }
.ve-pills { display:flex; gap:.5rem; flex-wrap:wrap; }
.ve-pill { border:1px solid #e5e7eb; background:#fff; padding:.3rem .6rem; border-radius:999px; cursor:pointer; }
.ve-pill.is-active { background:#111; color:#fff; border-color:#111; }
.ve-range .ve-pill { font-size:.9rem; }

/* Grid list */
.ve-events { display:grid; gap:1rem; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); }
.ve-event { position:relative; border:1px solid #e5e7eb; border-radius:12px; padding:12px; background:#fff; }
.ve-ribbon { position:absolute; top:10px; left:-10px; background:#e11d48; color:#fff; padding:.25rem .5rem; transform:rotate(-10deg); border-radius:6px; font-weight:700; box-shadow:0 2px 6px rgba(0,0,0,.15); }
.ve-title { margin:8px 0; font-size:1.05rem; }
.ve-meta { font-size:0.9rem; opacity:0.85; margin-bottom:6px; }
.ve-excerpt p { margin:0; }

.ve-buttons { display:flex; gap:.5rem; margin:.5rem 0; flex-wrap:wrap; }
.ve-btn { display:inline-block; padding:.4rem .6rem; border-radius:999px; border:1px solid #e5e7eb; text-decoration:none; }
.ve-btn-primary { background:#111; color:#fff; border-color:#111; }
.ve-map .ve-btn { font-size:.85rem; }

/* Poster 4:5 */
.ve-poster { display:block; border-radius:12px; overflow:hidden; }
.ve-poster img { width:100%; height:100%; object-fit:cover; aspect-ratio: 4 / 5; display:block; }
.ve-poster-fallback { display:flex; align-items:center; justify-content:center; aspect-ratio:4/5; background:#f3f4f6; color:#111; padding:8px; text-align:center; border-radius:12px;}

/* Calendar */
.ve-calendar-wrapper { width:100%; overflow:auto; }
.ve-calendar-grid { display:grid; grid-template-columns: repeat(7, 1fr); gap:6px; }
.ve-cal-cell { border:1px solid #e5e7eb; border-radius:10px; min-height:140px; background:#fff; padding:6px; display:flex; flex-direction:column; gap:6px; }
.ve-cal-out { opacity:0.5; }
.ve-cal-date { font-size:0.85rem; opacity:0.8; }
.ve-cal-event img { width:100%; height:auto; border-radius:8px; display:block; aspect-ratio:4/5; object-fit:cover; }
.ve-cal-actions .ve-btn { font-size:.8rem; padding:.25rem .5rem; }

/* Widget */
.ve-widget-list { list-style:none; margin:0; padding:0; }
.ve-widget-item { display:flex; align-items:center; gap:.5rem; margin:.4rem 0; }
.ve-widget-item a { text-decoration:none; }
.ve-widget-title { font-weight:600; }
.ve-widget-time { opacity:.7; font-size:.85em; margin-left:auto; }


/* === Venue Essentials — Brand Theme (North Star Cardiff) === */
:root {
  --ve-bg: #0b0f1a;
  --ve-bg-soft: #111627;
  --ve-card: #0f1424;
  --ve-text: #e5e7eb;
  --ve-muted: #9aa3b2;
  --ve-primary: #7c3aed; /* electric purple */
  --ve-primary-contrast: #ffffff;
  --ve-accent: #22c55e; /* green pill */
  --ve-danger: #ef4444;
  --ve-border: rgba(255,255,255,0.08);
  --ve-radius: 14px;
  --ve-shadow: 0 10px 30px rgba(0,0,0,0.35);
}

/* Unify list cards & calendar tiles */
.ve-events,
.ve-calendar-grid { background: linear-gradient(180deg, rgba(17,22,39,.4), rgba(11,15,26,.6)); padding: 8px; border-radius: 16px; border: 1px solid var(--ve-border); }

.ve-event,
.ve-cal-cell {
  position: relative;
  background: var(--ve-card);
  border:1px solid var(--ve-border);
  border-radius: var(--ve-radius);
  box-shadow: var(--ve-shadow);
  color: var(--ve-text);
}

.ve-title a, .ve-meta, .ve-widget-title, .ve-widget-time { color: var(--ve-text); }
.ve-price { color: #d1fadf; }

.ve-btn { background: rgba(255,255,255,.06); color: var(--ve-text); border-color: var(--ve-border); }
.ve-btn:hover { transform: translateY(-1px); background: rgba(255,255,255,.1); }
.ve-btn-primary { background: var(--ve-primary); color: var(--ve-primary-contrast); border-color: transparent; }

.ve-ribbon { background: var(--ve-danger); }

/* Calendar polish */
.ve-cal-date { color: var(--ve-muted); }
.ve-cal-out { opacity:.5; }
.ve-cal-item { display:flex; flex-direction:column; gap:4px; }
.ve-cal-event img { border-radius: 10px; }
.ve-cal-actions .ve-btn { font-size:.78rem; }

/* Pills */
.ve-pill { background: rgba(255,255,255,.06); color: var(--ve-text); border-color: var(--ve-border); }
.ve-pill.is-active { background: var(--ve-primary); color: var(--ve-primary-contrast); border-color: transparent; }

/* Widget card look */
.ve-widget-list { background: var(--ve-card); border:1px solid var(--ve-border); border-radius: var(--ve-radius); padding: 10px; box-shadow: var(--ve-shadow); }


/* === 1.3.7 Layout polish === */
/* Center controls & grids within a comfortable max width */
.ve-controls,
.ve-events,
.ve-calendar-grid { max-width: 1200px; margin-left: auto; margin-right: auto; }

/* Make lists breathe vertically */
.ve-events { margin-top: 16px; margin-bottom: 32px; }
.ve-calendar-wrapper { padding-bottom: 24px; }

/* Ensure blocks don't hug the left edge in narrow themes */
.ve-controls { padding-left: 8px; padding-right: 8px; }
.ve-events, .ve-calendar-grid { padding-left: 8px; padding-right: 8px; }



/* === VE Scroller (This Week) === */
.ve-scroller { position: relative; width:100%; max-width: var(--ve-content-max, 1200px); margin: 0 auto 28px; }
.ve-scroller-track {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: minmax(220px, 280px);
  gap: 14px;
  overflow-x: auto;
  padding: 8px 6px 10px;
  scroll-snap-type: x mandatory;
}
.ve-scroller-track::-webkit-scrollbar{ height:8px; }
.ve-scroller-track::-webkit-scrollbar-thumb{ background: rgba(255,255,255,.15); border-radius: 999px; }

.ve-card-mini {
  scroll-snap-align: start;
  background: var(--ve-card);
  border: 1px solid var(--ve-border);
  border-radius: var(--ve-radius);
  box-shadow: var(--ve-shadow);
  padding: 10px;
}
.ve-card-media img{ width:100%; height:auto; display:block; border-radius: 10px; aspect-ratio: 4/5; object-fit: cover; }
.ve-card-title{ font-size: 1rem; margin: 8px 0 4px; }
.ve-card-title a { color: var(--ve-text); text-decoration: none; }
.ve-card-meta { font-size: .9rem; color: var(--ve-muted); }


/* === 1.4.0 Width control === */
:root{ --ve-content-max: 1200px; }
.ve-controls, .ve-events, .ve-calendar-grid { width: 100%; max-width: var(--ve-content-max, none); margin-left:auto; margin-right:auto; }


/* Scroller arrows */
.ve-scroller { position: relative; }
.ve-scroll-arrow {
  position: absolute; top: 50%; transform: translateY(-50%);
  border: 1px solid var(--ve-border); background: rgba(15,20,36,.75);
  color: var(--ve-text); width: 36px; height: 36px; border-radius: 999px;
  display: none; align-items: center; justify-content: center; cursor: pointer; z-index: 2;
}
.ve-scroll-prev { left: -10px; }
.ve-scroll-next { right: -10px; }
@media (min-width: 900px){ .ve-scroll-arrow{ display:flex; } }

/* Compact card option */
.ve-card-mini--compact { padding: 6px; }
.ve-card-mini--compact .ve-card-title{ font-size: .95rem; margin:6px 0 2px; }
.ve-card-mini--compact .ve-card-meta{ font-size: .82rem; }
