/*!
 * Venue Watch Party Booking — public styles.
 * Base styles only; the bulk of look-and-feel is controlled per widget via
 * Elementor Style controls. Selectors are namespaced under .vwpb-res.
 */

.vwpb-res * { box-sizing: border-box; }

/* Calendar ---------------------------------------------------------------- */
.vwpb-calendar { width: 100%; }
.vwpb-calendar__grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; }
.vwpb-calendar__dow { font-weight: 600; text-align: center; padding: 6px 0; }
.vwpb-calendar__cell { min-height: 96px; min-width: 0; border: 1px solid rgba(0,0,0,.08); border-radius: 8px; padding: 6px; }
.vwpb-calendar__cell--empty { border: none; }
.vwpb-calendar__daynum { font-size: 12px; opacity: .7; margin-bottom: 4px; }
.vwpb-calendar__fulldate { display: none; }
.vwpb-event { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 6px; font-size: 12px; line-height: 1.25; margin-top: 5px; padding: 5px 7px; border-radius: 6px; background: rgba(0,0,0,.045); text-decoration: none; color: inherit; transition: background .12s ease, transform .12s ease; }
.vwpb-event:hover { background: rgba(184,134,11,.16); transform: translateY(-1px); }
.vwpb-event--soldout { opacity: .5; pointer-events: none; }
.vwpb-event__flags { display: inline-flex; gap: 3px; flex: none; }
.vwpb-event__flags img { width: 20px; height: 14px; object-fit: cover; border-radius: 2px; box-shadow: 0 0 0 1px rgba(0,0,0,.08); }
.vwpb-event__label { font-weight: 600; flex: 1 1 auto; min-width: 0; overflow-wrap: anywhere; }
.vwpb-event__time { font-size: 11px; opacity: .7; flex: none; }

/* Match cards ------------------------------------------------------------- */
.vwpb-matches { display: grid; gap: 16px; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); }
.vwpb-match-card { border: 1px solid rgba(0,0,0,.1); border-radius: 10px; padding: 16px; }
.vwpb-match-card__teams { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.vwpb-match-card__team { display: flex; align-items: center; gap: 6px; }
.vwpb-match-card__team.is-vertical { flex-direction: column; }
.vwpb-match-card__flag { width: 28px; height: 20px; object-fit: cover; border-radius: 2px; flex: none; }
.vwpb-match-card__logo { width: 24px; height: 24px; object-fit: contain; flex: none; }
.vwpb-badge { display: inline-block; font-size: 11px; padding: 2px 8px; border-radius: 999px; background: rgba(0,0,0,.08); }
.vwpb-badge--soldout { background: #c0392b; color: #fff; }
.vwpb-badge--available { background: #1e7e34; color: #fff; }

/* Reservation form -------------------------------------------------------- */
.vwpb-form { max-width: 560px; }
.vwpb-form .vwpb-field { margin-bottom: 14px; }
.vwpb-form label { display: block; font-weight: 600; margin-bottom: 4px; }
.vwpb-form input, .vwpb-form select, .vwpb-form textarea { width: 100%; }
.vwpb-summary { border: 1px solid rgba(0,0,0,.1); border-radius: 8px; padding: 14px; margin: 16px 0; }
.vwpb-summary__row { display: flex; justify-content: space-between; padding: 3px 0; }
.vwpb-summary__row--total { font-weight: 700; border-top: 1px solid rgba(0,0,0,.1); margin-top: 6px; padding-top: 8px; }
.vwpb-notice { padding: 10px 12px; border-radius: 6px; margin: 10px 0; }
.vwpb-notice--error { background: #fdecea; color: #611a15; }
.vwpb-notice--success { background: #edf7ed; color: #1e4620; }

/* Reservation form — match header + hall chooser -------------------------- */
.vwpb-form__match { display: flex; align-items: center; gap: 10px; margin: 4px 0 16px; font-size: 18px; font-weight: 700; }
.vwpb-form__match .vwpb-match-card__flag { width: 32px; height: 22px; }
.vwpb-hallchoose { display: flex; flex-wrap: wrap; gap: 10px; margin: 8px 0 16px; }
.vwpb-hallchoose__opt { flex: 1 1 180px; display: flex; align-items: center; gap: 8px; border: 1px solid rgba(0,0,0,.15); border-radius: 8px; padding: 10px 12px; cursor: pointer; }
.vwpb-hallchoose__opt:has(input:checked) { border-color: #b8860b; box-shadow: 0 0 0 1px #b8860b inset; }
.vwpb-hallchoose__opt .vwpb-hallchoose__name { font-weight: 600; }
.vwpb-hallchoose__opt .vwpb-hallchoose__type { font-size: 12px; opacity: .65; }
.vwpb-hall-block { margin-bottom: 8px; }
.vwpb-packages { background: rgba(184,134,11,.08); border-radius: 8px; padding: 10px 12px; margin: 8px 0; font-size: 14px; }
.vwpb-package { margin: 2px 0; }
.vwpb-alacarte { font-style: italic; opacity: .8; margin-top: 6px; }
.vwpb-unit-radios { display: flex; flex-wrap: wrap; gap: 12px; }

/* Flat booking-option selector */
.vwpb-offers { display: flex; flex-direction: column; gap: 8px; margin-top: 6px; }
.vwpb-offer { display: flex; align-items: center; gap: 8px; border: 1px solid rgba(0,0,0,.15); border-radius: 8px; padding: 10px 12px; cursor: pointer; }
.vwpb-offer:hover { border-color: rgba(184,134,11,.6); }
.vwpb-offer:has(input:checked) { border-color: #b8860b; box-shadow: 0 0 0 1px #b8860b inset; }
.vwpb-offer__label { font-weight: 600; }
.vwpb-offer__avail { font-weight: 400; opacity: .65; font-size: 13px; }

/* Buttons ----------------------------------------------------------------- */
.vwpb-btn { display: inline-block; padding: 10px 18px; border-radius: 6px; background: #b8860b; color: #fff; text-decoration: none; border: none; cursor: pointer; font-weight: 600; line-height: 1.2; transition: opacity .15s ease; }
.vwpb-btn:hover { opacity: .9; color: #fff; }
.vwpb-btn[disabled], .vwpb-btn.is-disabled { opacity: .5; pointer-events: none; }
.vwpb-cta { display: flex; flex-wrap: wrap; gap: 12px; }

/* Match list -------------------------------------------------------------- */
.vwpb-match-list__heading { margin-bottom: 16px; }
.vwpb-match-card__date { font-size: 13px; opacity: .75; margin-bottom: 6px; }
.vwpb-match-card__vs { opacity: .6; padding: 0 6px; font-size: 12px; }
.vwpb-match-card__title { font-weight: 700; }
.vwpb-match-card__hall { font-size: 13px; opacity: .8; margin: 6px 0; }
.vwpb-match-card__avail { margin: 8px 0; }
.vwpb-match-card .vwpb-btn { margin-top: 10px; }
.vwpb-empty { opacity: .7; font-style: italic; }

/* Calendar header --------------------------------------------------------- */
.vwpb-calendar__head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px; }
.vwpb-calendar__title { font-size: 20px; font-weight: 700; }
.vwpb-calendar__nav a { text-decoration: none; padding: 2px 10px; border: 1px solid rgba(0,0,0,.15); border-radius: 4px; margin-left: 4px; }
.vwpb-calendar__cell--today { background: rgba(184,134,11,.12); }

/* Gallery ----------------------------------------------------------------- */
.vwpb-gallery { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.vwpb-gallery__item { margin: 0; }
.vwpb-gallery img { width: 100%; height: 100%; object-fit: cover; display: block; border-radius: 6px; }

/* Hall info / promo / parking / call ------------------------------------- */
.vwpb-hall__pricing { list-style: none; padding: 0; }
.vwpb-hall__pricing li { padding: 2px 0; }
.vwpb-promo { padding: 16px; border-radius: 8px; background: rgba(184,134,11,.1); }
.vwpb-parking__heading { margin-bottom: 6px; }
.vwpb-call { display: inline-flex; align-items: center; gap: 8px; text-decoration: none; font-weight: 600; }
.vwpb-call__number { font-weight: 700; }
.vwpb-showings { list-style: none; padding: 0; }
.vwpb-showing { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; padding: 8px 0; border-bottom: 1px solid rgba(0,0,0,.08); }

/* Receipt ----------------------------------------------------------------- */
.vwpb-receipt { max-width: 640px; }
.vwpb-receipt__line { display: flex; justify-content: space-between; padding: 4px 0; }
.vwpb-receipt__total { font-weight: 700; border-top: 1px solid rgba(0,0,0,.15); margin-top: 8px; padding-top: 8px; }
.vwpb-receipt__code { font-size: 22px; font-weight: 700; letter-spacing: 1px; }

/* Responsive -------------------------------------------------------------- */
@media ( max-width: 782px ) {
	.vwpb-gallery { grid-template-columns: repeat(2, 1fr); }
}

@media ( max-width: 600px ) {
	/* Calendar: collapse the 7-column month grid into a stacked agenda that
	   shows only the days that have matches. */
	.vwpb-calendar__grid { display: block; }
	.vwpb-calendar__dow,
	.vwpb-calendar__cell--empty,
	.vwpb-calendar__cell { display: none; }
	.vwpb-calendar__cell--has-events {
		display: block; width: auto; min-height: 0; margin: 0 0 10px;
		border: 1px solid rgba(0,0,0,.12); border-radius: 10px; padding: 10px 12px;
	}
	.vwpb-calendar__cell--has-events.vwpb-calendar__cell--today { background: rgba(184,134,11,.12); }
	.vwpb-calendar__cell--has-events .vwpb-calendar__daynum { display: none; }
	.vwpb-calendar__fulldate { display: block; font-weight: 700; font-size: 14px; margin-bottom: 6px; opacity: .85; }
	.vwpb-event { font-size: 14px; padding: 9px 11px; }
	.vwpb-event__flags img { width: 26px; height: 18px; }
	.vwpb-calendar__head { flex-wrap: wrap; gap: 8px; }
	.vwpb-calendar__title { font-size: 18px; }

	/* Cards / galleries stack */
	.vwpb-gallery { grid-template-columns: 1fr; }
	.vwpb-matches { grid-template-columns: 1fr; }
	.vwpb-match-card__teams { flex-wrap: wrap; }

	/* Forms: full-width fields, stacked options */
	.vwpb-form { max-width: 100%; }
	.vwpb-form .vwpb-field { width: 100% !important; }
	.vwpb-hallchoose__opt { flex-basis: 100%; }
	.vwpb-offer { padding: 12px; }
	.vwpb-cta { flex-direction: column; align-items: stretch; }
	.vwpb-cta .vwpb-btn { text-align: center; }
	.vwpb-showing { gap: 4px 8px; }
}
