/* Bewdley Carnival Tickets – Public Styles */
@import url('https://fonts.googleapis.com/css2?family=Playfair+Display:wght@700;900&family=DM+Sans:wght@300;400;500;600&display=swap');

.bct-wrap { font-family:'DM Sans',sans-serif; max-width:900px; margin:0 auto; }

/* ── Calendar ── */
.bct-cal-card { background:#fff; border-radius:16px; padding:20px; box-shadow:0 2px 20px rgba(22,32,57,.07); margin-bottom:24px; }
.bct-cal-header { display:flex; align-items:center; justify-content:space-between; margin-bottom:16px; }
.bct-cal-title { font-family:'Playfair Display',serif; font-size:1.25rem; color:#162039; margin:0; }
.bct-cal-nav { display:inline-flex; align-items:center; justify-content:center; width:34px; height:34px; background:#f0ece4; border-radius:8px; text-decoration:none; color:#162039; font-size:1.3rem; font-weight:700; transition:background .15s; }
.bct-cal-nav:hover { background:#E8A020; color:#fff; }
.bct-cal-grid { display:grid; grid-template-columns:repeat(7,1fr); gap:3px; }
.bct-cal-dname { text-align:center; font-size:.65rem; font-weight:600; color:#aaa; text-transform:uppercase; letter-spacing:.08em; padding:4px 0; }
.bct-cal-day { aspect-ratio:1; display:flex; flex-direction:column; align-items:center; justify-content:center; font-size:.82rem; border-radius:8px; color:#444; position:relative; }
.bct-cal-empty { opacity:0; pointer-events:none; }
.bct-has-event { background:#162039; color:#fff; cursor:pointer; font-weight:600; transition:transform .15s,background .15s; }
.bct-has-event:hover { background:#C8272D; transform:scale(1.1); }
.bct-today { box-shadow:0 0 0 2px #E8A020; font-weight:700; }
.bct-dot { position:absolute; bottom:3px; width:4px; height:4px; border-radius:50%; background:#E8A020; }
.bct-cal-legend { display:flex; gap:1rem; margin-top:12px; flex-wrap:wrap; }
.bct-legend-item { display:flex; align-items:center; gap:.4rem; font-size:.72rem; color:#888; }
.bct-legend-dot { width:12px; height:12px; border-radius:3px; }

/* ── Day popup events ── */
.bct-day-events { background:#fff; border:1px solid #e8e0d4; border-radius:12px; padding:12px; margin-bottom:12px; }
.bct-mini-event { padding:10px 0; border-bottom:1px solid #f0ece4; }
.bct-mini-event:last-child { border-bottom:none; padding-bottom:0; }
.bct-mini-event strong { display:block; color:#162039; font-size:.95rem; margin:4px 0 2px; }
.bct-meta { font-size:.78rem; color:#888; }

/* ── Tags ── */
.bct-tag { display:inline-block; font-size:.65rem; font-weight:600; text-transform:uppercase; letter-spacing:.1em; padding:.2rem .6rem; border-radius:20px; margin-bottom:.3rem; }
.bct-tag-bingo  { background:#FFF0E0; color:#C47D00; }
.bct-tag-dance  { background:#E8F0FF; color:#2D5BE3; }
.bct-tag-quiz   { background:#F5E8FF; color:#7B2DBE; }
.bct-tag-raffle { background:#FFE8E8; color:#C8272D; }
.bct-tag-family { background:#E8FFE8; color:#1A7A1A; }
.bct-tag-music  { background:#E8F8FF; color:#0077AA; }
.bct-tag-general{ background:#f0ece4; color:#666; }

/* ── Events list ── */
.bct-events-list { display:flex; flex-direction:column; gap:12px; }
.bct-section-title { font-family:'Playfair Display',serif; font-size:1.3rem; color:#162039; margin:24px 0 14px; border-bottom:2px solid #E8A020; padding-bottom:6px; }
.bct-event-card { background:#fff; border-radius:14px; padding:16px 20px; box-shadow:0 2px 14px rgba(22,32,57,.06); display:flex; gap:16px; align-items:center; cursor:default; border-left:4px solid transparent; transition:transform .2s,box-shadow .2s,border-color .2s; }
.bct-event-card:hover { transform:translateY(-2px); box-shadow:0 8px 28px rgba(22,32,57,.11); border-left-color:#E8A020; }
.bct-event-date { background:#162039; color:#fff; border-radius:10px; padding:.6rem .9rem; text-align:center; min-width:52px; flex-shrink:0; }
.bct-date-day { font-family:'Playfair Display',serif; font-size:1.5rem; font-weight:700; display:block; line-height:1; }
.bct-date-mon { font-size:.65rem; text-transform:uppercase; letter-spacing:.1em; color:#E8A020; display:block; margin-top:2px; }
.bct-event-info { flex:1; }
.bct-event-info h4 { font-family:'Playfair Display',serif; font-size:1rem; color:#162039; margin:.3rem 0 .25rem; }
.bct-event-meta { font-size:.78rem; color:#888; display:flex; flex-wrap:wrap; gap:.6rem; }
.bct-event-right { display:flex; flex-direction:column; align-items:flex-end; gap:.5rem; flex-shrink:0; }
.bct-price { font-weight:700; color:#162039; font-size:1rem; }
.bct-sold { color:#C8272D; font-weight:700; }
.bct-sold-badge { background:#eee; color:#999; font-size:.75rem; font-weight:600; padding:.35rem .8rem; border-radius:8px; }
.bct-no-events { color:#888; font-style:italic; padding:20px 0; }

/* ── Buy button ── */
.bct-buy-btn { background:#C8272D; color:#fff; border:none; padding:.45rem 1.1rem; border-radius:8px; font-size:.8rem; font-weight:600; cursor:pointer; font-family:'DM Sans',sans-serif; transition:background .2s; white-space:nowrap; }
.bct-buy-btn:hover { background:#a81f24; }

/* ── Modal ── */
.bct-modal-overlay { position:fixed; inset:0; background:rgba(14,21,37,.72); backdrop-filter:blur(4px); display:flex; align-items:center; justify-content:center; z-index:99999; padding:1rem; }
.bct-modal { background:#fff; border-radius:20px; padding:2rem; width:100%; max-width:460px; position:relative; animation:bctSlideUp .3s ease; max-height:90vh; overflow-y:auto; }
@keyframes bctSlideUp { from { transform:translateY(30px); opacity:0; } to { transform:translateY(0); opacity:1; } }
.bct-modal-close { position:absolute; top:14px; right:14px; background:#f0ece4; border:none; width:32px; height:32px; border-radius:50%; font-size:1.1rem; cursor:pointer; color:#162039; display:flex; align-items:center; justify-content:center; line-height:1; }
.bct-modal h2 { font-family:'Playfair Display',serif; font-size:1.3rem; color:#162039; margin-bottom:.25rem; }
.bct-modal-meta { font-size:.82rem; color:#888; margin-bottom:1.25rem; display:flex; gap:.75rem; flex-wrap:wrap; }
.bct-form-group { margin-bottom:14px; }
.bct-form-group label { display:block; font-size:.82rem; font-weight:600; color:#555; margin-bottom:4px; }
.bct-form-group input { width:100%; padding:10px 12px; border:1.5px solid #ddd; border-radius:8px; font-size:.9rem; font-family:'DM Sans',sans-serif; transition:border-color .15s; }
.bct-form-group input:focus { border-color:#162039; outline:none; }
.bct-req { color:#C8272D; }
.bct-qty-group { display:flex; align-items:center; gap:16px; flex-wrap:wrap; }
.bct-qty-group label { margin-bottom:0; }
.bct-qty-control { display:flex; align-items:center; gap:12px; }
.bct-qty-btn { width:30px; height:30px; border-radius:50%; border:1.5px solid #162039; background:#fff; font-size:1.1rem; cursor:pointer; color:#162039; line-height:1; display:flex; align-items:center; justify-content:center; transition:background .15s; }
.bct-qty-btn:hover { background:#162039; color:#fff; }
#bct-qty-display { font-size:1.1rem; font-weight:700; min-width:24px; text-align:center; }
.bct-qty-avail { font-size:.78rem; color:#888; }
.bct-total-row { background:#f0ece4; border-radius:10px; padding:12px 16px; margin-bottom:14px; font-size:.95rem; display:flex; justify-content:space-between; align-items:center; }
.bct-total-row strong { font-size:1.15rem; color:#162039; }
.bct-submit-btn { width:100%; background:#C8272D; color:#fff; border:none; padding:.75rem; border-radius:10px; font-size:1rem; font-weight:600; cursor:pointer; font-family:'DM Sans',sans-serif; transition:background .2s; margin-top:4px; }
.bct-submit-btn:hover { background:#a81f24; }
.bct-submit-btn:disabled { background:#ccc; cursor:not-allowed; }
.bct-back-btn { width:100%; background:none; border:1.5px solid #ddd; color:#666; padding:.6rem; border-radius:10px; font-size:.9rem; cursor:pointer; font-family:'DM Sans',sans-serif; margin-top:8px; transition:border-color .15s; }
.bct-back-btn:hover { border-color:#162039; color:#162039; }
.bct-modal-step-title { font-family:'Playfair Display',serif; font-size:1.1rem; color:#162039; margin-bottom:.25rem; }
.bct-secure-note { font-size:.8rem; color:#888; margin-bottom:14px; }
#bct-payment-element { margin-bottom:14px; }
.bct-error { background:#fdf0f0; border:1px solid #f5c6cb; border-radius:8px; padding:10px 14px; font-size:.85rem; color:#721c24; margin-bottom:12px; }
.bct-confirmation { text-align:center; padding:1rem 0; }
.bct-checkmark { width:64px; height:64px; background:#d4edda; border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:2rem; color:#28a745; margin:0 auto 1rem; }
.bct-confirmation h3 { font-family:'Playfair Display',serif; font-size:1.4rem; color:#162039; margin-bottom:.5rem; }
.bct-confirmation p { color:#555; font-size:.9rem; line-height:1.6; margin-bottom:.5rem; }
.bct-conf-ref { font-size:1rem; margin-top:12px; }
.bct-conf-ref strong { letter-spacing:2px; color:#162039; font-size:1.1rem; }

@media (max-width: 600px) {
  .bct-event-card { flex-wrap:wrap; }
  .bct-event-right { flex-direction:row; align-items:center; width:100%; justify-content:space-between; }
}

/* ── Multi-type ticket selector ── */
#bct-ticket-selector { margin-bottom: 4px; }
.bct-type-row {
  display: flex; align-items: center; justify-content: space-between;
  padding: 10px 0; border-bottom: 1px solid #f0ece4;
}
.bct-type-row:last-child { border-bottom: none; }
.bct-type-info { flex: 1; }
.bct-type-info strong { display: block; font-size: .92rem; color: #162039; }
.bct-type-price { font-size: .82rem; color: #888; }
.bct-type-avail { font-size: .75rem; color: #aaa; margin-left: 6px; }
.bct-sold-tag { font-size: .72rem; color: #C8272D; font-weight: 600; margin-left: 6px; }
.bct-qty-ctrl { display: flex; align-items: center; gap: 10px; }
.bct-qty-ctrl.disabled { opacity: .4; }
.bct-q-btn {
  width: 28px; height: 28px; border-radius: 50%;
  border: 1.5px solid #162039; background: #fff;
  font-size: 1rem; cursor: pointer; color: #162039;
  display: flex; align-items: center; justify-content: center;
  line-height: 1; transition: background .12s;
}
.bct-q-btn:hover { background: #162039; color: #fff; }
.bct-q-btn:disabled { border-color: #ccc; color: #ccc; cursor: not-allowed; }
.bct-q-num { font-size: 1rem; font-weight: 700; min-width: 20px; text-align: center; }

/* ── Promo code ── */
.bct-promo-row { margin-bottom: 12px; }
.bct-promo-row label { display: block; font-size: .82rem; font-weight: 600; color: #555; margin-bottom: 4px; }
.bct-promo-input-wrap { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.bct-promo-input-wrap input {
  flex: 1; padding: 9px 12px; border: 1.5px solid #ddd; border-radius: 8px;
  font-size: .88rem; font-family: inherit; text-transform: uppercase;
  letter-spacing: .08em; transition: border-color .15s;
}
.bct-promo-input-wrap input:focus { border-color: #162039; outline: none; }
.bct-promo-btn {
  background: #162039; color: #fff; border: none; border-radius: 8px;
  padding: 9px 16px; font-size: .82rem; font-weight: 600;
  cursor: pointer; font-family: inherit; transition: background .15s; white-space: nowrap;
}
.bct-promo-btn:hover { background: #E8A020; }
.bct-promo-btn:disabled { background: #aaa; cursor: not-allowed; }
.bct-promo-remove {
  background: none; border: 1px solid #ddd; color: #999;
  border-radius: 8px; padding: 7px 12px; font-size: .78rem;
  cursor: pointer; font-family: inherit; transition: all .15s; white-space: nowrap;
}
.bct-promo-remove:hover { border-color: #C8272D; color: #C8272D; }
