/* VIVI Life Ticket Archive
   Filter Panel 完全沿用品牌 Archive 與網站基礎設定；本檔只保留94小確幸列表必要排版。 */
.vivi-lite-ticket-archive-page .vivi-ticket-grid {
	display: grid;
	grid-template-columns: repeat(5, minmax(0, 1fr));
	gap: 20px;
	width: min(100% - 20px, var(--vivi-container));
	margin: 0 auto;
}

.vivi-lite-ticket-archive-page .vivi-ticket-card-link {
	min-width: 0;
}


.vivi-lite-ticket-archive-page .vivi-ticket-card-meta {
	margin: -4px 0 12px;
	color: var(--vivi-color-text-muted);
}

.vivi-lite-ticket-archive-page .vivi-ticket-load-more,
.vivi-lite-ticket-archive-page .vivi-ticket-load-complete {
	width: 100%;
	max-width: var(--vivi-container);
	margin: 24px auto 0;
	text-align: center;
}

.vivi-lite-ticket-archive-page .vivi-ticket-load-more {
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 44px;
}

.vivi-lite-ticket-archive-page .vivi-ticket-load-more .vivi-brand-load-more-status {
	justify-content: center;
}

.vivi-lite-ticket-archive-page.vivi-ticket-loading .vivi-ticket-archive-content {
	opacity: .62;
	pointer-events: none;
}

@media (max-width: 767px) {
	.vivi-lite-ticket-archive-page .vivi-brand-archive-hero .vivi-brand-archive-stats {
		display: none;
	}

	.vivi-lite-ticket-archive-page .vivi-ticket-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 14px;
		width: min(100% - 20px, var(--vivi-container));
	}


}

/* v0.10.271：商品、94小確幸與 94小確幸列表圖片統一為 1:1；移除舊有固定高度、contain 與重複修補。 */
.vivi-lite-ticket-archive-page .vivi-ticket-title-link,
.vivi-lite-ticket-archive-page .vivi-ticket-brand-profile-link {
	color: inherit;
	text-decoration: none;
}

.vivi-lite-ticket-archive-page .vivi-ticket-title-link:hover,
.vivi-lite-ticket-archive-page .vivi-ticket-brand-profile-link:hover {
	text-decoration: underline;
	text-underline-offset: 3px;
}

.vivi-lite-ticket-archive-page .vivi-ticket-grid {
	align-items: stretch !important;
	grid-auto-rows: 1fr !important;
}

.vivi-lite-ticket-archive-page .vivi-ticket-grid > .vivi-ticket-card {
	align-self: stretch !important;
}

.vivi-lite-ticket-archive-page .vivi-ticket-card {
	display: flex !important;
	flex-direction: column !important;
	height: 100% !important;
	min-height: 0 !important;
	overflow: hidden !important;
}

.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-ticket-image-link {
	display: block !important;
	width: 100% !important;
	aspect-ratio: 1 / 1 !important;
	line-height: 0 !important;
	flex: 0 0 auto !important;
	background: var(--vivi-color-card) !important;
	color: inherit;
	text-decoration: none;
}

.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-product-image {
	position: relative !important;
	display: block !important;
	width: 100% !important;
	height: 100% !important;
	min-height: 0 !important;
	aspect-ratio: 1 / 1 !important;
	background-image: none !important;
	background-color: var(--vivi-color-card) !important;
	background-size: cover !important;
	background-repeat: no-repeat !important;
	background-position: center center !important;
	overflow: hidden !important;
}

.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-ticket-card-img {
	position: absolute !important;
	inset: 0 !important;
	display: block !important;
	width: 100% !important;
	height: 100% !important;
	max-width: none !important;
	max-height: none !important;
	transform: none !important;
	object-fit: cover !important;
	object-position: center center !important;
}

.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-product-body {
	display: flex !important;
	flex: 1 1 auto !important;
	flex-direction: column !important;
	padding: 16px 16px 18px !important;
}

.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-product-body h3 {
	min-height: 50px !important;
	margin: 0 0 10px !important;
}

.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-product-brand {
	min-height: 18px !important;
	margin: 0 0 8px !important;
}

.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-ticket-card-meta {
	min-height: 18px !important;
	margin: 0 0 10px !important;
}

.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-product-body > div {
	margin-top: auto !important;
	padding-top: 10px !important;
}

@media (max-width: 767px) {
	.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-product-body {
		padding: 12px 12px 14px !important;
	}

	.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-product-body h3 {
		min-height: 44px !important;
	}

	.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-product-body > div {
		padding-top: 8px !important;
	}
}


/* v84：94小確幸售完商品只保留「完售」徽章，不讓圖片變霧或被白色遮罩覆蓋；僅限94小確幸頁。 */
.vivi-lite-ticket-archive-page .vivi-ticket-card.is-soldout,
.vivi-lite-ticket-archive-page .vivi-ticket-card.is-soldout .vivi-ticket-image-link,
.vivi-lite-ticket-archive-page .vivi-ticket-card.is-soldout .vivi-product-image,
.vivi-lite-ticket-archive-page .vivi-ticket-card.is-soldout .vivi-ticket-card-img {
	opacity: 1 !important;
	filter: none !important;
	mix-blend-mode: normal !important;
}

.vivi-lite-ticket-archive-page .vivi-ticket-card.is-soldout .vivi-product-image::before,
.vivi-lite-ticket-archive-page .vivi-ticket-card.is-soldout .vivi-product-image::after,
.vivi-lite-ticket-archive-page .vivi-ticket-card.is-soldout .vivi-ticket-image-link::before,
.vivi-lite-ticket-archive-page .vivi-ticket-card.is-soldout .vivi-ticket-image-link::after {
	content: none !important;
	display: none !important;
	background: transparent !important;
}

.vivi-lite-ticket-archive-page .vivi-ticket-card.is-soldout .vivi-product-soldout {
	z-index: 5 !important;
}


/* v93：94小確幸排序下拉選單寬度收斂；僅限94小確幸頁。 */
.vivi-lite-ticket-archive-page .vivi-ticket-sort-bar {
	width: min(100% - 20px, var(--vivi-container));
	margin: 12px auto 16px;
	display: flex;
	align-items: center;
	justify-content: flex-end;
	gap: 8px;
}

.vivi-lite-ticket-archive-page .vivi-ticket-sort-label {
	font-size: var(--vivi-fs-small);
	line-height: var(--vivi-lh-compact);
	color: var(--vivi-color-text-muted);
	white-space: nowrap;
}

.vivi-lite-ticket-archive-page .vivi-ticket-sort-select {
	width: 156px !important;
	min-width: 156px !important;
	max-width: 156px !important;
	padding-left: 12px !important;
	padding-right: 28px !important;
}

@media (max-width: 767px) {
	.vivi-lite-ticket-archive-page .vivi-ticket-sort-bar {
		width: min(100% - 20px, var(--vivi-container));
		margin: 10px auto 14px;
	}

	.vivi-lite-ticket-archive-page .vivi-ticket-sort-select {
		width: 144px !important;
		min-width: 144px !important;
		max-width: 144px !important;
	}
}

/* v159：94小確幸與 94小確幸空狀態區塊寬度改為列表容器 100%。 */
.vivi-lite-ticket-archive-page .vivi-ticket-archive-content > .vivi-brand-empty {
	width: min(100% - 20px, var(--vivi-container));
	max-width: var(--vivi-container);
	box-sizing: border-box;
	margin-left: auto;
	margin-right: auto;
}

@media (max-width: 767px) {
	.vivi-lite-ticket-archive-page .vivi-ticket-archive-content > .vivi-brand-empty {
		width: min(100% - 20px, var(--vivi-container));
	}
}

/* v160：94小確幸頁面加入首頁同款倒數計時器；只限 94小確幸 Lite Page。 */
.vivi-lite-94-deals-page .vivi-94-deals-countdown-section {
	width: min(100% - 20px, var(--vivi-container));
	margin: 0 auto 18px;
}

.vivi-lite-94-deals-page .vivi-94-deals-countdown-card {
	display: grid;
	grid-template-columns: minmax(220px, 38%) minmax(0, 1fr);
	min-height: 0;
	height: auto;
	border-radius: var(--vivi-radius, 8px);
	overflow: hidden;
	background: linear-gradient(135deg, var(--vivi-color-card) 0%, color-mix(in srgb, var(--vivi-color-bg-warm) 82%, transparent) 100%);
}

.vivi-lite-94-deals-page .vivi-94-deals-countdown-card .vivi-countdown-banner {
	width: 100%;
	height: 100%;
	min-height: 210px;
	object-fit: cover;
	object-position: center;
}

.vivi-lite-94-deals-page .vivi-94-deals-countdown-card .vivi-countdown-panel {
	align-content: center;
	gap: 14px;
	padding: 24px;
}

.vivi-lite-94-deals-page .vivi-94-deals-countdown-card .vivi-countdown-label {
	color: var(--vivi-color-text-light);
	font-size: var(--vivi-ticket-main-countdown-label-size);
	font-weight: var(--vivi-fw-bold);
	line-height: 1.35;
	letter-spacing: .06em;
}

.vivi-lite-94-deals-page .vivi-94-deals-countdown-card .vivi-countdown-time {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 10px;
}

.vivi-lite-94-deals-page .vivi-94-deals-countdown-card .vivi-countdown-time span {
	display: grid;
	align-content: center;
	justify-items: center;
	min-height: 72px;
	background: var(--vivi-color-card);
	border: 1px solid color-mix(in srgb, var(--vivi-color-black) 8%, transparent);
	border-radius: var(--vivi-radius, 8px);
}

.vivi-lite-94-deals-page .vivi-94-deals-countdown-card .vivi-countdown-time strong {
	color: var(--vivi-black);
	font-size: var(--vivi-ticket-main-countdown-number-size);
	font-weight: var(--vivi-fw-bold);
	line-height: 1;
	letter-spacing: .02em;
	font-variant-numeric: tabular-nums;
}

.vivi-lite-94-deals-page .vivi-94-deals-countdown-card .vivi-countdown-time em {
	margin-top: 6px;
	color: var(--vivi-color-text-light);
	font-size: var(--vivi-ticket-main-countdown-unit-size);
	font-style: normal;
	font-weight: var(--vivi-fw-bold);
}

/* v0.10.237：活動中只改三個倒數時間格；標題與其餘視覺固定使用活動未開始時的中性樣式。 */
.vivi-lite-94-deals-page .vivi-94-deals-countdown-card.is-vivi-deal-active > .vivi-countdown-panel > .vivi-countdown-time > span {
	background: #C1121F !important;
	border-color: #C1121F !important;
}

.vivi-lite-94-deals-page .vivi-94-deals-countdown-card.is-vivi-deal-active > .vivi-countdown-panel > .vivi-countdown-time > span > strong,
.vivi-lite-94-deals-page .vivi-94-deals-countdown-card.is-vivi-deal-active > .vivi-countdown-panel > .vivi-countdown-time > span > em {
	color: #fff !important;
}

.vivi-lite-94-deals-page .vivi-94-countdown-note {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	min-height: 40px;
	margin-top: 2px;
	padding: 0 14px;
	color: var(--vivi-black);
	background: color-mix(in srgb, var(--vivi-color-card) 86%, transparent);
	border: 1px solid var(--vivi-border);
	border-radius: var(--vivi-radius, 8px);
	font-size: var(--vivi-ticket-main-countdown-unit-size);
	font-weight: var(--vivi-fw-bold);
	letter-spacing: .06em;
	text-decoration: none;
}

@media (max-width: 767px) {
	.vivi-lite-94-deals-page .vivi-94-deals-countdown-section {
		width: min(100% - 20px, var(--vivi-container));
		margin-bottom: 14px;
	}

	.vivi-lite-94-deals-page .vivi-94-deals-countdown-card {
		display: flex;
		flex-direction: column;
		border-radius: var(--vivi-radius, 8px);
	}

	.vivi-lite-94-deals-page .vivi-94-deals-countdown-card .vivi-countdown-banner {
		height: 150px;
		min-height: 150px;
	}

	.vivi-lite-94-deals-page .vivi-94-deals-countdown-card .vivi-countdown-panel {
		gap: 9px;
		padding: 14px 14px 15px;
	}

	.vivi-lite-94-deals-page .vivi-94-deals-countdown-card .vivi-countdown-label {
		font-size: var(--vivi-ticket-main-countdown-label-size);
	}

	.vivi-lite-94-deals-page .vivi-94-deals-countdown-card .vivi-countdown-time span {
		min-height: 54px;
		padding-top: 10px;
		padding-bottom: 10px;
	}

	.vivi-lite-94-deals-page .vivi-94-deals-countdown-card .vivi-countdown-time strong {
		font-size: var(--vivi-ticket-main-countdown-number-size);
	}
}

/* v162：手機板 94小確幸頁面上方倒數區塊，寬度對齊下方內容容器。 */
@media (max-width: 767px) {
	.vivi-lite-94-deals-page .vivi-94-deals-countdown-section {
		width: 100% !important;
		max-width: 100% !important;
		margin-left: 0 !important;
		margin-right: 0 !important;
	}
}

/* v163：94小確幸與 94小確幸 Loop List 寬度對齊 Filter 區塊。 */
.vivi-lite-ticket-archive-page .vivi-ticket-archive-content,
.vivi-lite-ticket-archive-page .vivi-ticket-grid,
.vivi-lite-ticket-archive-page .vivi-ticket-load-more,
.vivi-lite-ticket-archive-page .vivi-ticket-load-complete,
.vivi-lite-ticket-archive-page .vivi-ticket-archive-content > .vivi-brand-empty {
	width: 100% !important;
	max-width: none !important;
	box-sizing: border-box !important;
	margin-left: 0 !important;
	margin-right: 0 !important;
}

@media (max-width: 767px) {
	.vivi-lite-ticket-archive-page .vivi-ticket-archive-content,
	.vivi-lite-ticket-archive-page .vivi-ticket-grid,
	.vivi-lite-ticket-archive-page .vivi-ticket-load-more,
	.vivi-lite-ticket-archive-page .vivi-ticket-load-complete,
	.vivi-lite-ticket-archive-page .vivi-ticket-archive-content > .vivi-brand-empty {
		width: 100% !important;
		max-width: none !important;
		margin-left: 0 !important;
		margin-right: 0 !important;
	}
}

/* v165：手機板 Loop List 與商品卡片固定使用列表容器 100% 寬度，避免右側空白。 */
@media (max-width: 767px) {
	.vivi-lite-ticket-archive-page .vivi-ticket-grid {
		grid-template-columns: 1fr !important;
		width: 100% !important;
		max-width: 100% !important;
		margin-left: 0 !important;
		margin-right: 0 !important;
		box-sizing: border-box !important;
	}

	.vivi-lite-ticket-archive-page .vivi-ticket-grid > *,
	.vivi-lite-ticket-archive-page .vivi-ticket-grid > .vivi-ticket-card,
	.vivi-lite-ticket-archive-page .vivi-ticket-grid .vivi-ticket-card,
	.vivi-lite-ticket-archive-page .vivi-ticket-grid .vivi-product-card,
	.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-ticket-image-link,
	.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-product-image,
	.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-ticket-card-img,
	.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-product-body {
		width: 100% !important;
		max-width: 100% !important;
		min-width: 0 !important;
		box-sizing: border-box !important;
	}
}

/* v171：手機板票券 Loop List 協調版；改為滿版橫式卡片，降低列表厚重感並對齊其他區塊節奏。 */
@media (max-width: 767px) {
	.vivi-lite-ticket-archive-page .vivi-ticket-grid {
		grid-template-columns: 1fr !important;
		gap: 14px !important;
		width: 100% !important;
		max-width: 100% !important;
		margin-left: 0 !important;
		margin-right: 0 !important;
	}

	.vivi-lite-ticket-archive-page .vivi-ticket-grid > .vivi-ticket-card,
	.vivi-lite-ticket-archive-page .vivi-ticket-card.vivi-product-card {
		display: grid !important;
		grid-template-columns: minmax(124px, 42%) minmax(0, 1fr) !important;
		align-items: stretch !important;
		width: 100% !important;
		max-width: 100% !important;
		min-height: 152px !important;
		height: auto !important;
		border-radius: var(--vivi-radius, 8px) !important;
		background: var(--vivi-color-card) !important;
		border: 1px solid var(--vivi-border) !important;
		box-shadow: var(--vivi-shadow-soft) !important;
		overflow: hidden !important;
	}

	.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-ticket-image-link {
		display: block !important;
		align-self: start !important;
		width: 100% !important;
		height: auto !important;
		min-height: 0 !important;
		aspect-ratio: 1 / 1 !important;
		background: var(--vivi-color-card) !important;
	}

	.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-product-image {
		width: 100% !important;
		height: 100% !important;
		min-height: 0 !important;
		aspect-ratio: 1 / 1 !important;
		background: var(--vivi-color-card) !important;
		overflow: hidden !important;
	}

	.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-ticket-card-img {
		position: absolute !important;
		inset: 0 !important;
		width: 100% !important;
		height: 100% !important;
		max-width: none !important;
		max-height: none !important;
		transform: none !important;
		object-fit: cover !important;
		object-position: center center !important;
	}

	.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-product-body {
		display: flex !important;
		flex-direction: column !important;
		justify-content: flex-start !important;
		min-width: 0 !important;
		width: 100% !important;
		padding: 13px 13px 12px !important;
	}

	.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-product-body h3 {
		min-height: 0 !important;
		margin: 0 0 7px !important;
	}

	.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-product-body h3,
	.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-product-body h3 a,
	.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-ticket-title-link {
		display: -webkit-box !important;
		-webkit-line-clamp: 2 !important;
		-webkit-box-orient: vertical !important;
		overflow: hidden !important;
	}

	.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-product-brand,
	.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-ticket-brand-profile-link {
		display: -webkit-box !important;
		-webkit-line-clamp: 1 !important;
		-webkit-box-orient: vertical !important;
		overflow: hidden !important;
		margin: 0 !important;
	}

	.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-product-body > .vivi-ticket-price-row {
		margin-top: auto !important;
		padding-top: 9px !important;
		display: flex !important;
		flex-direction: row !important;
		align-items: baseline !important;
		justify-content: flex-end !important;
		gap: 7px !important;
		width: 100% !important;
		text-align: right !important;
	}

	.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-ticket-price-old {
		white-space: nowrap !important;
	}

	.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-ticket-price-sale {
		white-space: nowrap !important;
	}

	.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-product-image > span,
	.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-product-soldout {
		min-height: 25px !important;
		padding: 3px 8px !important;
		border-radius: var(--vivi-radius, 8px) !important;
		line-height: 1 !important;
		font-weight: var(--vivi-fw-bold) !important;
		letter-spacing: .01em !important;
		box-shadow: 0 6px 16px color-mix(in srgb, var(--vivi-color-black) 12%, transparent) !important;
	}

	.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-product-image > span {
		left: 8px !important;
		top: 8px !important;
		max-width: calc(100% - 16px) !important;
	}

	.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-product-soldout {
		right: 8px !important;
		top: 8px !important;
		z-index: 7 !important;
	}
}

@media (max-width: 374px) {
	.vivi-lite-ticket-archive-page .vivi-ticket-grid > .vivi-ticket-card,
	.vivi-lite-ticket-archive-page .vivi-ticket-card.vivi-product-card {
		grid-template-columns: minmax(116px, 40%) minmax(0, 1fr) !important;
		min-height: 144px !important;
	}

	.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-ticket-image-link,
	.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-product-image {
		min-height: 0 !important;
		aspect-ratio: 1 / 1 !important;
	}

	.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-product-body {
		padding: 11px 11px 10px !important;
	}
}

/* 0.11.42：完售徽章的桌機與手機定位相同，合併舊版雙重媒體查詢。 */
.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-product-image > em.vivi-product-soldout,
.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-product-soldout {
	position: absolute !important;
	left: 50% !important;
	top: 50% !important;
	right: auto !important;
	bottom: auto !important;
	transform: translate(-50%, -50%) !important;
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	width: 68px !important;
	height: 68px !important;
	min-width: 68px !important;
	min-height: 68px !important;
	max-width: 68px !important;
	max-height: 68px !important;
	padding: 0 !important;
	border-radius: var(--vivi-radius, 8px) !important;
	text-align: center !important;
	white-space: nowrap !important;
	border: 1px solid color-mix(in srgb, var(--vivi-color-text-inverse) 72%, transparent) !important;
	z-index: 12 !important;
	pointer-events: none !important;
}


/* 0.11.42：94小確幸／94小確幸 Loop List 與商品 Popup 字級基準。
   Loop List 以 767px 切換；商品 Popup 以 820px 切換，避免 701–820px 誤用桌機字級。 */
body.vivi-lite-ticket-archive-page,
body.vivi-lite-ticket-single-page {
	--vivi-ticket-loop-title-size: 20px;
	--vivi-ticket-loop-brand-size: 14px;
	--vivi-ticket-loop-old-price-size: 14px;
	--vivi-ticket-loop-sale-price-size: 18px;
	--vivi-ticket-loop-tag-size: 12px;
	--vivi-ticket-popup-title-size: 20px;
	--vivi-ticket-popup-body-size: 16px;
	--vivi-ticket-popup-secondary-size: 14px;
	--vivi-ticket-popup-meta-size: 12px;
	--vivi-ticket-popup-brand-tag-size: 11px;
	--vivi-ticket-popup-button-size: 14px;
	--vivi-ticket-popup-price-size: 34px;
	--vivi-ticket-main-countdown-label-size: 18px;
	--vivi-ticket-main-countdown-number-size: 32px;
	--vivi-ticket-main-countdown-unit-size: 12px;
	--vivi-ticket-popup-countdown-label-size: 18px;
	--vivi-ticket-popup-countdown-number-size: 32px;
	--vivi-ticket-popup-countdown-unit-size: 12px;
}

@media (max-width: 767px) {
	body.vivi-lite-ticket-archive-page {
		--vivi-ticket-loop-title-size: 17px;
		--vivi-ticket-loop-brand-size: 12px;
		--vivi-ticket-loop-old-price-size: 14px;
		--vivi-ticket-loop-sale-price-size: 17px;
		--vivi-ticket-loop-tag-size: 11px;
		--vivi-ticket-main-countdown-label-size: 15px;
		--vivi-ticket-main-countdown-number-size: 24px;
		--vivi-ticket-main-countdown-unit-size: 11px;
	}
}

@media (max-width: 820px) {
	body.vivi-lite-ticket-archive-page,
	body.vivi-lite-ticket-single-page {
		--vivi-ticket-popup-title-size: 17px;
		--vivi-ticket-popup-body-size: 14px;
		--vivi-ticket-popup-secondary-size: 12px;
		--vivi-ticket-popup-meta-size: 11px;
		--vivi-ticket-popup-brand-tag-size: 11px;
		--vivi-ticket-popup-button-size: 13px;
		--vivi-ticket-popup-price-size: 24px;
		--vivi-ticket-popup-countdown-label-size: 15px;
		--vivi-ticket-popup-countdown-number-size: 24px;
		--vivi-ticket-popup-countdown-unit-size: 11px;
	}
}

/* 0.11.42：票券 Loop Item 最終文字標準。 */
.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-ticket-card-meta {
	display: none !important;
}

.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-ticket-title-link,
.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-product-body h3,
.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-product-body h3 a {
	font-family: var(--vivi-font-heading) !important;
	font-size: var(--vivi-ticket-loop-title-size) !important;
	line-height: var(--vivi-lh-compact) !important;
	font-weight: var(--vivi-fw-bold) !important;
	letter-spacing: .01em !important;
	color: var(--vivi-color-heading) !important;
}

.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-product-brand,
.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-ticket-brand-profile-link,
.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-ticket-card-meta {
	font-family: var(--vivi-font-body) !important;
	font-size: var(--vivi-ticket-loop-brand-size) !important;
	line-height: var(--vivi-lh-compact) !important;
	font-weight: var(--vivi-fw-bold) !important;
	color: var(--vivi-color-text-muted) !important;
}

.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-product-body > .vivi-ticket-price-row {
	display: flex !important;
	align-items: baseline !important;
	justify-content: flex-start !important;
	gap: 8px !important;
	width: 100% !important;
	margin-top: auto !important;
	padding-top: 10px !important;
	text-align: left !important;
	line-height: var(--vivi-lh-compact) !important;
}

.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-ticket-price-old {
	order: 1 !important;
	display: inline-block !important;
	width: auto !important;
	margin: 0 !important;
	font-family: var(--vivi-font-body) !important;
	font-size: var(--vivi-ticket-loop-old-price-size) !important;
	line-height: var(--vivi-lh-compact) !important;
	font-weight: var(--vivi-fw-regular) !important;
	color: color-mix(in srgb, var(--vivi-color-text) 72%, transparent) !important;
	white-space: nowrap !important;
}

.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-ticket-price-sale {
	order: 2 !important;
	display: inline-block !important;
	width: auto !important;
	margin: 0 !important;
	font-family: var(--vivi-font-body) !important;
	font-size: var(--vivi-ticket-loop-sale-price-size) !important;
	line-height: var(--vivi-lh-compact) !important;
	font-weight: var(--vivi-fw-bold) !important;
	color: var(--vivi-color-primary) !important;
	white-space: nowrap !important;
}

.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-ticket-title-discount,
.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-ticket-price-discount {
	display: none !important;
}

.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-product-image > span.vivi-ticket-image-discount,
.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-ticket-image-discount {
	position: absolute !important;
	left: 12px !important;
	right: auto !important;
	top: 12px !important;
	bottom: auto !important;
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	width: auto !important;
	height: auto !important;
	min-width: 0 !important;
	min-height: 0 !important;
	max-width: calc(100% - 20px) !important;
	padding: 4px 9px !important;
	border-radius: var(--vivi-radius, 8px) !important;
	font-family: var(--vivi-font-body) !important;
	font-size: var(--vivi-ticket-loop-tag-size) !important;
	line-height: 1.1 !important;
	font-weight: var(--vivi-fw-bold) !important;
	letter-spacing: .02em !important;
	white-space: nowrap !important;
	overflow: hidden !important;
	text-overflow: ellipsis !important;
	color: var(--vivi-color-primary) !important;
	background: var(--vivi-color-card) !important;
	border: 1px solid color-mix(in srgb, var(--vivi-color-primary) 55%, transparent) !important;
	box-shadow: 0 2px 8px color-mix(in srgb, var(--vivi-color-black) 10%, transparent) !important;
	z-index: 9 !important;
	pointer-events: none !important;
}

.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-product-image > em.vivi-product-soldout,
.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-product-soldout {
	font-family: var(--vivi-font-body) !important;
	font-size: var(--vivi-ticket-loop-title-size) !important;
	line-height: 1 !important;
	font-weight: var(--vivi-fw-bold) !important;
	letter-spacing: .03em !important;
	color: var(--vivi-color-text-inverse) !important;
	background: var(--vivi-color-black-soft) !important;
	border-color: color-mix(in srgb, var(--vivi-color-text-inverse) 72%, transparent) !important;
	box-shadow: 0 8px 22px color-mix(in srgb, var(--vivi-color-black) 22%, transparent) !important;
}

@media (max-width: 767px) {
	.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-ticket-title-link,
	.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-product-body h3,
	.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-product-body h3 a {
		line-height: var(--vivi-lh-heading) !important;
	}

	.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-product-body > .vivi-ticket-price-row {
		display: grid !important;
		grid-template-columns: auto auto !important;
		grid-template-areas: "old sale" !important;
		align-items: baseline !important;
		justify-content: end !important;
		justify-items: end !important;
		column-gap: 6px !important;
		row-gap: 0 !important;
		width: 100% !important;
		margin-top: auto !important;
		padding-top: 8px !important;
		text-align: right !important;
	}

	.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-ticket-price-old {
		grid-area: old !important;
		line-height: var(--vivi-lh-body) !important;
		font-weight: var(--vivi-fw-regular) !important;
		text-align: right !important;
	}

	.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-ticket-price-sale {
		grid-area: sale !important;
		line-height: var(--vivi-lh-heading) !important;
		font-weight: var(--vivi-fw-bold) !important;
		text-align: right !important;
	}

	.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-product-image > span.vivi-ticket-image-discount,
	.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-ticket-image-discount {
		left: 8px !important;
		top: 8px !important;
		max-width: calc(100% - 16px) !important;
		padding: 3px 7px !important;
	}
}

/* v347：商品 Popup 樣式全面對齊網站基本設定與動態 Popup。 */
body.vivi-ticket-popup-open {
	overflow: hidden !important;
}

.vivi-lite-ticket-archive-page .vivi-ticket-card {
	cursor: pointer;
}


.vivi-ticket-popup-loading,
.vivi-ticket-popup-error {
	min-height: 100%;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: var(--vivi-space-sm, 12px);
	padding: var(--vivi-space-2xl, 48px) var(--vivi-space-lg, 24px);
	text-align: center;
	color: var(--vivi-color-text-muted, #5A5A5A);
	font-size: var(--vivi-fs-small);
	font-weight: var(--vivi-fw-bold);
}

.vivi-ticket-popup-error h2 {
	margin: 0;
	color: var(--vivi-color-heading, #000);
	font-size: var(--vivi-fs-h3);
	font-weight: var(--vivi-fw-bold);
	line-height: var(--vivi-lh-compact, 1.45);
}

.vivi-ticket-popup-error p {
	margin: 0;
	color: var(--vivi-color-text-muted, #5A5A5A);
}

.vivi-ticket-popup-spinner {
	width: 34px;
	height: 34px;
	border-radius: var(--vivi-radius, 8px);
	border: 3px solid color-mix(in srgb, var(--vivi-color-primary, #996515) 16%, transparent);
	border-top-color: var(--vivi-color-primary, #996515);
	animation: viviTicketPopupSpin .8s linear infinite;
}

@keyframes viviTicketPopupSpin {
	to { transform: rotate(360deg); }
}

.vivi-ticket-popup-detail {
	display: block;
	background: var(--vivi-color-card, #fff);
	color: var(--vivi-color-text, #5A5A5A);
}

.vivi-ticket-popup-media {
	background: var(--vivi-color-bg-soft, #F2F4F5);
	padding: var(--vivi-space-lg, 24px);
	border-radius: var(--vivi-radius, 8px);
	display: flex;
	flex-direction: column;
	gap: var(--vivi-space-sm, 12px);
}

.vivi-ticket-popup-main-img {
	width: 100%;
	max-height: none;
	aspect-ratio: 1 / 1;
	object-fit: cover;
	border-radius: var(--vivi-radius, 8px);
	display: block;
	background: var(--vivi-color-bg-soft, #F2F4F5);
}

.vivi-ticket-popup-image-empty {
	width: 100%;
	aspect-ratio: 1 / 1;
	border-radius: var(--vivi-radius, 8px);
	background: var(--vivi-color-bg-soft, #F2F4F5);
	display: grid;
	place-items: center;
	font-weight: var(--vivi-fw-bold);
	letter-spacing: .16em;
	color: var(--vivi-color-text-light, #647385);
}


.vivi-ticket-popup-info {
	padding: var(--vivi-space-xl, 32px) var(--vivi-space-xl, 32px) var(--vivi-space-xl, 32px);
	display: flex;
	flex-direction: column;
	gap: var(--vivi-space-lg, 24px);
}

.vivi-ticket-popup-section {
	padding: var(--vivi-space-lg, 24px) 0 0;
	border-top: 1px solid var(--vivi-color-border, #D6D9DD);
}

.vivi-ticket-popup-section:first-child {
	padding-top: 0;
	border-top: 0;
}

.vivi-ticket-popup-section h3 {
	margin: 0 0 var(--vivi-space-sm, 12px);
	font-size: var(--vivi-ticket-popup-title-size);
	font-weight: var(--vivi-fw-bold);
	line-height: var(--vivi-lh-compact, 1.45);
	letter-spacing: .02em;
	color: var(--vivi-color-heading, #000);
}

.vivi-ticket-popup-price-section {
	display: flex;
	flex-direction: column;
	gap: var(--vivi-space-sm, 12px);
}

.vivi-ticket-popup-tags {
	display: flex;
	flex-wrap: wrap;
	gap: var(--vivi-space-xs, 8px);
}

.vivi-ticket-popup-tags span {
	display: inline-flex;
	align-items: center;
	min-height: 28px;
	padding: 5px 10px;
	border-radius: var(--vivi-radius, 8px);
	background: color-mix(in srgb, var(--vivi-color-primary, #996515) 10%, var(--vivi-color-card, #fff));
	font-size: var(--vivi-ticket-popup-brand-tag-size);
	font-weight: var(--vivi-fw-bold);
	line-height: 1;
	color: var(--vivi-color-primary, #996515);
}

.vivi-ticket-popup-tags span.is-soldout {
	background: var(--vivi-color-black-soft, #5A5A5A);
	color: var(--vivi-color-text-inverse, #fff);
}

.vivi-ticket-popup-title {
	margin: 0;
	font-size: var(--vivi-ticket-popup-title-size);
	font-weight: var(--vivi-fw-bold);
	line-height: var(--vivi-lh-heading, 1.12);
	letter-spacing: .01em;
	color: var(--vivi-color-heading, #000);
}

.vivi-ticket-popup-brand {
	display: flex;
	gap: var(--vivi-space-xs, 8px);
	align-items: center;
	margin: 0;
	color: var(--vivi-color-text-muted, #5A5A5A);
}

.vivi-ticket-popup-brand span {
	font-size: var(--vivi-ticket-popup-meta-size);
}

.vivi-ticket-popup-brand a,
.vivi-ticket-popup-brand strong {
	color: inherit;
	font-weight: var(--vivi-fw-bold);
	text-decoration: none;
}

.vivi-ticket-popup-price-row {
	display: flex;
	align-items: baseline;
	flex-wrap: wrap;
	gap: var(--vivi-space-xs, 8px) var(--vivi-space-sm, 12px);
	margin: var(--vivi-space-2xs, 4px) 0 0;
}

.vivi-ticket-popup-price-row del {
	color: var(--vivi-color-text-light, #647385);
	font-size: var(--vivi-ticket-popup-secondary-size);
}

.vivi-ticket-popup-price-row strong {
	font-size: var(--vivi-ticket-popup-price-size);
	font-weight: var(--vivi-fw-bold);
	line-height: 1;
	color: var(--vivi-color-primary, #996515);
}

.vivi-ticket-popup-discount {
	font-size: var(--vivi-ticket-popup-meta-size);
	font-weight: var(--vivi-fw-bold);
	border-radius: var(--vivi-radius, 8px);
	padding: 5px 10px;
	background: var(--vivi-color-card, #fff);
	color: var(--vivi-status-soldout, #C1121F);
	border: 1px solid color-mix(in srgb, var(--vivi-status-soldout, #C1121F) 55%, transparent);
	box-shadow: 0 2px 8px rgba(0, 0, 0, .10);
}

.vivi-ticket-popup-description,
.vivi-ticket-popup-short-description {
	font-size: var(--vivi-ticket-popup-body-size);
	line-height: 1.85;
	color: var(--vivi-color-text, #5A5A5A);
}

.vivi-ticket-popup-description p,
.vivi-ticket-popup-short-description p {
	margin: 0 0 .85em;
}

.vivi-ticket-popup-description p:last-child,
.vivi-ticket-popup-short-description p:last-child {
	margin-bottom: 0;
}

/* 0.11.43：商品 Popup 票券規範採摘要展開式呈現，避免長規範佔滿視窗。 */
.vivi-ticket-popup-rules-section {
	--vivi-ticket-rules-collapsed-height: 260px;
	overflow-anchor: none;
}

.vivi-ticket-popup-rules-shell {
	position: relative;
}

.vivi-ticket-popup-rules-section.is-enhanced.has-overflow .vivi-ticket-popup-rules-shell {
	overflow: hidden;
	transition: max-height .32s cubic-bezier(.22, 1, .36, 1);
}

.vivi-ticket-popup-rules-fade {
	display: none;
	position: absolute;
	right: 0;
	bottom: 0;
	left: 0;
	height: 104px;
	pointer-events: none;
	background: linear-gradient(180deg, rgba(255, 255, 255, 0) 0%, color-mix(in srgb, var(--vivi-color-card, #fff) 94%, transparent) 56%, var(--vivi-color-card, #fff) 100%);
	transition: opacity .2s ease;
}

.vivi-ticket-popup-rules-section.is-enhanced.has-overflow:not(.is-expanded) .vivi-ticket-popup-rules-fade {
	display: block;
}

.vivi-ticket-popup-rules-section.is-expanded .vivi-ticket-popup-rules-fade {
	opacity: 0;
}

.vivi-ticket-popup-rules-section .vivi-ticket-popup-short-description > :first-child {
	margin-top: 0;
}

.vivi-ticket-popup-rules-section .vivi-ticket-popup-short-description ol,
.vivi-ticket-popup-rules-section .vivi-ticket-popup-short-description ul {
	margin: .2em 0 0;
	padding-left: 1.65em;
}

.vivi-ticket-popup-rules-section .vivi-ticket-popup-short-description li + li {
	margin-top: .38em;
}

.vivi-ticket-popup-rules-toggle {
	position: relative;
	z-index: 2;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 10px;
	width: 100%;
	min-height: 46px;
	margin: var(--vivi-space-sm, 12px) 0 0;
	padding: 10px 18px;
	border: 1px solid var(--vivi-color-border, #D6D9DD);
	border-radius: var(--vivi-radius, 8px);
	background: linear-gradient(180deg, var(--vivi-color-card, #fff) 0%, var(--vivi-color-bg-soft, #F2F4F5) 100%);
	box-shadow: 0 8px 22px rgba(0, 0, 0, .06);
	font-family: var(--vivi-font-body);
	font-size: var(--vivi-ticket-popup-button-size);
	font-weight: var(--vivi-fw-bold);
	line-height: 1.2;
	color: var(--vivi-color-heading, #000);
	cursor: pointer;
	transition: border-color .2s ease, box-shadow .2s ease, transform .2s ease, background-color .2s ease;
	-webkit-tap-highlight-color: transparent;
}

.vivi-ticket-popup-rules-toggle[hidden] {
	display: none !important;
}

.vivi-ticket-popup-rules-toggle:hover,
.vivi-ticket-popup-rules-toggle:focus-visible {
	border-color: color-mix(in srgb, var(--vivi-color-heading, #000) 42%, var(--vivi-color-border, #D6D9DD));
	box-shadow: 0 10px 26px rgba(0, 0, 0, .09);
	transform: translateY(-1px);
	outline: none;
}

.vivi-ticket-popup-rules-toggle:active {
	transform: translateY(0);
}

.vivi-ticket-popup-rules-toggle-icon {
	display: inline-block;
	width: 9px;
	height: 9px;
	border-right: 2px solid currentColor;
	border-bottom: 2px solid currentColor;
	transform: rotate(45deg) translate(-1px, -1px);
	transform-origin: center;
	transition: transform .25s ease;
}

.vivi-ticket-popup-rules-toggle[aria-expanded="true"] .vivi-ticket-popup-rules-toggle-icon {
	transform: rotate(-135deg) translate(-1px, -1px);
}

.vivi-ticket-popup-meta {
	display: grid;
	gap: var(--vivi-space-xs, 8px);
	padding: var(--vivi-space-md, 16px);
	border: 1px solid var(--vivi-color-border, #D6D9DD);
	border-radius: var(--vivi-radius, 8px);
	background: var(--vivi-color-bg-warm, #F2F4F5);
}

.vivi-ticket-popup-meta div {
	display: grid;
	grid-template-columns: 90px 1fr;
	gap: var(--vivi-space-sm, 12px);
	align-items: start;
}

.vivi-ticket-popup-meta span {
	font-size: var(--vivi-ticket-popup-meta-size);
	font-weight: var(--vivi-fw-bold);
	color: var(--vivi-color-text-light, #647385);
}

.vivi-ticket-popup-meta strong {
	font-size: var(--vivi-ticket-popup-secondary-size);
	font-weight: var(--vivi-fw-bold);
	line-height: var(--vivi-lh-compact, 1.45);
	color: var(--vivi-color-text, #5A5A5A);
}

.vivi-ticket-popup-meta strong a {
	color: var(--vivi-color-primary, #996515);
	font-weight: var(--vivi-fw-bold);
	text-decoration: none;
	border-bottom: 1px solid color-mix(in srgb, var(--vivi-color-primary, #996515) 45%, transparent);
}

.vivi-ticket-popup-meta strong a:hover,
.vivi-ticket-popup-meta strong a:focus-visible {
	color: var(--vivi-color-alternate-text, var(--vivi-color-primary, #996515));
	border-bottom-color: currentColor;
}

/* 0.11.44：商品 Popup 購買操作列固定滿版，數量與加入購物車各占一半。 */
.vivi-ticket-popup-actions {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	align-items: stretch;
	width: 100%;
	gap: var(--vivi-space-sm, 12px);
	margin-top: var(--vivi-space-md, 16px);
}

.vivi-ticket-popup-actions.has-fixed-quantity {
	grid-template-columns: minmax(0, 1fr);
}

.vivi-ticket-popup-qty {
	display: grid;
	grid-template-columns: 44px minmax(0, 1fr) 44px;
	align-items: stretch;
	width: 100%;
	min-width: 0;
	min-height: var(--vivi-btn-height, 44px);
	border: 1px solid color-mix(in srgb, var(--vivi-color-primary, #996515) 34%, transparent);
	border-radius: var(--vivi-radius, 8px);
	overflow: hidden;
	background: var(--vivi-color-card, #fff);
}

.vivi-ticket-popup-qty-btn {
	appearance: none;
	border: 0;
	background: var(--vivi-color-bg-warm, #F2F4F5);
	color: var(--vivi-color-primary, #996515);
	font-size: var(--vivi-fs-body-lg);
	font-weight: var(--vivi-fw-bold);
	cursor: pointer;
}

.vivi-ticket-popup-qty-btn:hover,
.vivi-ticket-popup-qty-btn:focus-visible {
	background: color-mix(in srgb, var(--vivi-color-primary, #996515) 12%, var(--vivi-color-card, #fff));
	outline: none;
}

.vivi-ticket-popup-qty-btn:disabled {
	opacity: .42;
	cursor: not-allowed;
}

.vivi-ticket-popup-qty-input {
	width: 100%;
	min-width: 0;
	border: 0;
	border-left: 1px solid color-mix(in srgb, var(--vivi-color-primary, #996515) 18%, transparent);
	border-right: 1px solid color-mix(in srgb, var(--vivi-color-primary, #996515) 18%, transparent);
	text-align: center;
	font-size: var(--vivi-ticket-popup-secondary-size);
	font-weight: var(--vivi-fw-bold);
	color: var(--vivi-color-heading, #000);
	background: var(--vivi-color-card, #fff);
	outline: none;
}

.vivi-ticket-popup-qty-input::-webkit-outer-spin-button,
.vivi-ticket-popup-qty-input::-webkit-inner-spin-button {
	-webkit-appearance: none;
	margin: 0;
}

.vivi-ticket-popup-qty-input[type=number] {
	-moz-appearance: textfield;
}

.vivi-ticket-popup-actions .vivi-btn {
	justify-content: center;
	width: 100%;
	min-width: 0;
	height: var(--vivi-btn-height, 44px);
	min-height: var(--vivi-btn-height, 44px);
	max-height: var(--vivi-btn-height, 44px);
	font-size: var(--vivi-ticket-popup-button-size);
}

.vivi-ticket-popup-cart[disabled],
.vivi-ticket-popup-cart.is-loading {
	opacity: .72;
	cursor: wait;
}

.vivi-ticket-popup-cart-message,
.vivi-ticket-popup-stock-note {
	grid-column: 1 / -1;
	display: block;
	font-size: var(--vivi-ticket-popup-secondary-size);
	line-height: var(--vivi-lh-compact, 1.45);
	font-weight: var(--vivi-fw-bold);
}

.vivi-ticket-popup-stock-note {
	font-size: var(--vivi-ticket-popup-meta-size);
	font-weight: var(--vivi-fw-regular);
	color: var(--vivi-color-text-light, #647385);
}

.vivi-ticket-popup-cart-message[hidden] {
	display: none !important;
}

.vivi-ticket-popup-cart-message.is-success {
	color: var(--vivi-status-success, #166534);
}

.vivi-ticket-popup-cart-message.is-error {
	color: var(--vivi-status-error, #B42318);
}

.vivi-ticket-popup-profile {
	white-space: nowrap;
}

.vivi-ticket-popup-address-row strong {
	white-space: pre-line;
}

.vivi-ticket-popup-soldout-note {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: var(--vivi-btn-height, 44px);
	padding: 0 var(--vivi-space-md, 16px);
	border-radius: var(--vivi-radius, 8px);
	background: var(--vivi-color-bg-soft, #F2F4F5);
	color: var(--vivi-color-text-muted, #5A5A5A);
	font-weight: var(--vivi-fw-bold);
}

.vivi-ticket-popup-howto-img {
	display: block;
	width: 100%;
	height: auto;
	border-radius: var(--vivi-radius, 8px);
	box-shadow: var(--vivi-shadow-card, 0 18px 45px rgba(0, 0, 0, .07));
	background: var(--vivi-color-bg-soft, #F2F4F5);
}

.vivi-ticket-popup-review-summary {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: var(--vivi-space-xs, 8px);
	margin-bottom: var(--vivi-space-sm, 12px);
}

.vivi-ticket-popup-review-stars {
	letter-spacing: .08em;
	color: var(--vivi-color-primary, #996515);
}

.vivi-ticket-popup-review-summary strong {
	font-size: var(--vivi-fs-body-lg);
	font-weight: var(--vivi-fw-bold);
	color: var(--vivi-color-heading, #000);
}

.vivi-ticket-popup-review-summary small {
	color: var(--vivi-color-text-muted, #5A5A5A);
	font-size: var(--vivi-ticket-popup-meta-size);
}

.vivi-ticket-popup-review-list {
	display: grid;
	gap: var(--vivi-space-sm, 12px);
}

.vivi-ticket-popup-review-item {
	padding: var(--vivi-space-md, 16px);
	border: 1px solid var(--vivi-color-border, #D6D9DD);
	border-radius: var(--vivi-radius, 8px);
	background: var(--vivi-color-bg-soft, #F2F4F5);
}

.vivi-ticket-popup-review-head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--vivi-space-sm, 12px);
	margin-bottom: var(--vivi-space-xs, 8px);
}

.vivi-ticket-popup-review-head strong {
	font-size: var(--vivi-ticket-popup-secondary-size);
	font-weight: var(--vivi-fw-bold);
	color: var(--vivi-color-heading, #000);
}

.vivi-ticket-popup-review-head span {
	font-size: var(--vivi-ticket-popup-meta-size);
	letter-spacing: .08em;
	color: var(--vivi-color-primary, #996515);
}

.vivi-ticket-popup-review-item p,
.vivi-ticket-popup-empty-note {
	margin: 0;
	font-size: var(--vivi-ticket-popup-secondary-size);
	line-height: var(--vivi-lh-body, 1.7);
	color: var(--vivi-color-text-muted, #5A5A5A);
}

.vivi-ticket-popup-membership-gate {
	margin-top: var(--vivi-space-md, 16px);
	display: grid;
	gap: var(--vivi-space-sm, 12px);
	padding: var(--vivi-space-md, 16px);
	border: 1px solid color-mix(in srgb, var(--vivi-color-primary, #996515) 32%, transparent);
	border-radius: var(--vivi-radius, 8px);
	background: color-mix(in srgb, var(--vivi-color-primary, #996515) 8%, var(--vivi-color-card, #fff));
	color: var(--vivi-color-text, #5A5A5A);
}

.vivi-ticket-popup-membership-gate strong {
	font-size: var(--vivi-ticket-popup-body-size);
	font-weight: var(--vivi-fw-bold);
	line-height: var(--vivi-lh-compact, 1.45);
	color: var(--vivi-color-primary, #996515);
}

.vivi-ticket-popup-membership-gate p {
	margin: 0;
	font-size: var(--vivi-ticket-popup-secondary-size);
	line-height: var(--vivi-lh-body, 1.7);
	color: var(--vivi-color-text, #5A5A5A);
}

.vivi-ticket-popup-membership-actions {
	display: flex;
	flex-wrap: wrap;
	gap: var(--vivi-space-sm, 12px);
	margin-top: var(--vivi-space-2xs, 4px);
}

.vivi-ticket-popup-membership-actions .vivi-btn {
	justify-content: center;
	height: var(--vivi-btn-height, 44px);
	min-height: var(--vivi-btn-height, 44px);
	max-height: var(--vivi-btn-height, 44px);
}


/* v349：商品 Popup 會員資格與 94小確幸倒數提示。 */
.vivi-ticket-popup-deal-countdown {
	margin-top: var(--vivi-space-md, 16px);
	display: block;
	border-radius: var(--vivi-radius, 8px);
	background: linear-gradient(135deg, var(--vivi-color-card, #fff) 0%, color-mix(in srgb, var(--vivi-color-bg-warm, #F2F4F5) 86%, transparent) 100%);
	overflow: hidden;
	border: 1px solid color-mix(in srgb, var(--vivi-color-primary, #996515) 20%, var(--vivi-color-border, #D6D9DD));
}

.vivi-ticket-popup-deal-countdown .vivi-countdown-panel {
	display: grid;
	gap: var(--vivi-space-sm, 12px);
	padding: var(--vivi-space-md, 16px);
}

.vivi-ticket-popup-deal-countdown .vivi-countdown-label {
	color: var(--vivi-color-text-light, #647385);
	font-size: var(--vivi-ticket-popup-countdown-label-size);
	font-weight: var(--vivi-fw-bold);
	line-height: var(--vivi-lh-compact, 1.45);
	letter-spacing: .06em;
}

.vivi-ticket-popup-deal-countdown .vivi-countdown-time {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: var(--vivi-space-xs, 8px);
}

.vivi-ticket-popup-deal-countdown .vivi-countdown-time span {
	display: grid;
	align-content: center;
	justify-items: center;
	min-height: 64px;
	padding: 10px 6px;
	background: var(--vivi-color-card, #fff);
	border: 1px solid color-mix(in srgb, var(--vivi-color-black, #000) 8%, transparent);
	border-radius: var(--vivi-radius, 8px);
}

.vivi-ticket-popup-deal-countdown .vivi-countdown-time strong {
	color: var(--vivi-color-heading, #000);
	font-size: var(--vivi-ticket-popup-countdown-number-size);
	font-weight: var(--vivi-fw-bold);
	line-height: 1;
	letter-spacing: .02em;
	font-variant-numeric: tabular-nums;
}

.vivi-ticket-popup-deal-countdown .vivi-countdown-time em {
	margin-top: 6px;
	color: var(--vivi-color-text-light, #647385);
	font-size: var(--vivi-ticket-popup-countdown-unit-size);
	font-style: normal;
	font-weight: var(--vivi-fw-bold);
}

.vivi-ticket-popup-deal-countdown.is-vivi-deal-active > .vivi-countdown-panel > .vivi-countdown-time > span {
	background: #C1121F !important;
	border-color: #C1121F !important;
}

.vivi-ticket-popup-deal-countdown.is-vivi-deal-active > .vivi-countdown-panel > .vivi-countdown-time > span > strong,
.vivi-ticket-popup-deal-countdown.is-vivi-deal-active > .vivi-countdown-panel > .vivi-countdown-time > span > em {
	color: #fff !important;
}

.vivi-ticket-popup-deal-note,
.vivi-ticket-popup-soldout-gate,
.vivi-ticket-popup-stock-gate {
	margin-top: var(--vivi-space-md, 16px);
	display: grid;
	gap: var(--vivi-space-xs, 8px);
	padding: var(--vivi-space-md, 16px);
	border: 1px solid var(--vivi-color-border, #D6D9DD);
	border-radius: var(--vivi-radius, 8px);
	background: var(--vivi-color-bg-warm, #F2F4F5);
}

.vivi-ticket-popup-deal-note strong,
.vivi-ticket-popup-soldout-gate strong,
.vivi-ticket-popup-stock-gate strong {
	font-size: var(--vivi-ticket-popup-body-size);
	font-weight: var(--vivi-fw-bold);
	line-height: var(--vivi-lh-compact, 1.45);
	color: var(--vivi-color-primary, #996515);
}

.vivi-ticket-popup-soldout-gate strong,
.vivi-ticket-popup-stock-gate strong {
	color: var(--vivi-status-soldout, #C1121F);
}

.vivi-ticket-popup-deal-note p,
.vivi-ticket-popup-soldout-gate p,
.vivi-ticket-popup-stock-gate p {
	margin: 0;
	font-size: var(--vivi-ticket-popup-secondary-size);
	line-height: var(--vivi-lh-body, 1.7);
	color: var(--vivi-color-text, #5A5A5A);
}

@media (max-width: 820px) {
	.vivi-ticket-popup-rules-section {
		--vivi-ticket-rules-collapsed-height: 220px;
	}

	.vivi-ticket-popup-rules-fade {
		height: 88px;
	}

	.vivi-ticket-popup-rules-toggle {
		min-height: 44px;
		padding: 9px 14px;
	}

	.vivi-ticket-popup-media {
		border-radius: var(--vivi-radius, 8px);
		padding: var(--vivi-space-sm, 12px);
	}


	.vivi-ticket-popup-info {
		padding: var(--vivi-space-lg, 24px) var(--vivi-space-md, 16px) var(--vivi-space-lg, 24px);
		gap: var(--vivi-space-md, 16px);
	}

	.vivi-ticket-popup-section {
		padding-top: var(--vivi-space-lg, 24px);
	}

	.vivi-ticket-popup-section h3 {
		font-size: var(--vivi-ticket-popup-title-size);
		margin-bottom: var(--vivi-space-sm, 12px);
	}

	.vivi-ticket-popup-title {
		font-size: var(--vivi-ticket-popup-title-size);
	}

	.vivi-ticket-popup-price-row strong {
		font-size: var(--vivi-ticket-popup-price-size);
	}

	.vivi-ticket-popup-description,
	.vivi-ticket-popup-short-description {
		font-size: var(--vivi-ticket-popup-body-size);
		line-height: 1.75;
	}

	.vivi-ticket-popup-meta div {
		grid-template-columns: 74px 1fr;
	}


}

@media (max-width: 767px) {
	.vivi-ticket-popup-membership-actions {
		flex-direction: column;
	}

	.vivi-ticket-popup-membership-actions .vivi-btn {
		width: 100%;
	}
}


/* v351：商品 Popup 內不顯示 94小確幸說明文字，保留頁面主倒數區原本顯示。 */
.vivi-ticket-popup-deal-countdown .vivi-countdown-more,
.vivi-ticket-popup-deal-countdown .vivi-94-countdown-note {
	display: none !important;
}

/* v354：94小確幸商品 Popup 完售狀態參照 Loop Item，在商品主圖正中間顯示完售徽章。 */
.vivi-ticket-popup-media.is-soldout {
	position: relative;
}

.vivi-ticket-popup-soldout-badge {
	position: absolute !important;
	left: 50% !important;
	top: 50% !important;
	right: auto !important;
	bottom: auto !important;
	transform: translate(-50%, -50%) !important;
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	width: 68px !important;
	height: 68px !important;
	min-width: 68px !important;
	min-height: 68px !important;
	max-width: 68px !important;
	max-height: 68px !important;
	padding: 0 !important;
	border-radius: var(--vivi-radius, 8px) !important;
	font-size: var(--vivi-ticket-popup-title-size) !important;
	line-height: 1 !important;
	font-weight: var(--vivi-fw-bold) !important;
	letter-spacing: .03em !important;
	text-align: center !important;
	white-space: nowrap !important;
	font-style: normal !important;
	color: var(--vivi-color-text-inverse) !important;
	background: var(--vivi-color-black-soft) !important;
	border: 1px solid color-mix(in srgb, var(--vivi-color-text-inverse) 72%, transparent) !important;
	box-shadow: 0 8px 22px color-mix(in srgb, var(--vivi-color-black) 22%, transparent) !important;
	z-index: 12 !important;
	pointer-events: none !important;
}


/* 商品單頁 / Popup：票券規範與分享 icon 採用網站基礎設定的 Loop Action Icon。 */
.vivi-ticket-popup-share-row.vivi-loop-action-icons {
	display: inline-flex;
	align-items: center;
	justify-content: flex-start;
	gap: 14px;
	margin-top: var(--vivi-space-sm, 12px);
	color: var(--vivi-loop-action-icon-color, var(--vivi-color-text-muted));
}

.vivi-ticket-popup-share-row .vivi-loop-action-icon {
	color: inherit;
	text-decoration: none;
}

.vivi-ticket-popup-share-row .vivi-loop-action-icon .vivi-bb-icon,
.vivi-ticket-popup-share-row .vivi-loop-action-icon .vivi-bb-icon::before {
	width: var(--vivi-loop-action-icon-size, 26px);
	min-width: var(--vivi-loop-action-icon-size, 26px);
	height: var(--vivi-loop-action-icon-size, 26px);
	min-height: var(--vivi-loop-action-icon-size, 26px);
	font-size: var(--vivi-loop-action-icon-size, 26px);
	line-height: 1;
}

.vivi-ticket-popup-share-row .vivi-loop-action-icon:hover,
.vivi-ticket-popup-share-row .vivi-loop-action-icon:focus-visible {
	color: var(--vivi-loop-action-icon-active-color, var(--vivi-color-primary));
}


.vivi-ticket-share-options {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 10px;
	margin-bottom: 16px;
}

.vivi-ticket-share-option {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 44px;
	border: 1px solid var(--vivi-color-border);
	border-radius: var(--vivi-radius, 8px);
	background: var(--vivi-color-bg-soft);
	color: var(--vivi-color-text);
	font-size: var(--vivi-fs-small);
	font-weight: var(--vivi-fw-bold);
	text-decoration: none;
	cursor: pointer;
}

.vivi-ticket-share-option:hover,
.vivi-ticket-share-option:focus-visible {
	border-color: var(--vivi-blue, var(--vivi-color-primary, #996515));
	color: var(--vivi-blue, var(--vivi-color-primary, #996515));
	outline: none;
}

.vivi-ticket-share-copy {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	gap: 8px;
}

.vivi-ticket-share-copy input {
	min-width: 0;
	border: 1px solid var(--vivi-color-border);
	border-radius: var(--vivi-radius, 8px);
	padding: 10px 14px;
	font-size: var(--vivi-fs-xs);
	color: var(--vivi-color-text);
	background: #fff;
}

.vivi-ticket-share-copy button {
	border: 0;
	border-radius: var(--vivi-radius, 8px);
	padding: 10px 16px;
	background: var(--vivi-blue, var(--vivi-color-primary, #996515));
	color: #fff;
	font-size: var(--vivi-fs-xs);
	font-weight: var(--vivi-fw-bold);
	cursor: pointer;
}

.vivi-ticket-share-note {
	min-height: 18px;
	margin-top: 10px;
	font-size: var(--vivi-fs-xs);
	color: var(--vivi-color-text-muted);
}

/* v364：商品 Popup 開啟時，分享視窗必須位於商品 Popup 之上。 */


@media (max-width: 520px) {
	.vivi-ticket-share-options {
		grid-template-columns: 1fr;
	}
	.vivi-ticket-share-copy {
		grid-template-columns: 1fr;
	}
}

.vivi-ticket-single-main {
	min-height: 100vh;
	background: var(--vivi-color-bg-soft, #FCFAF2);
	padding: var(--vivi-page-main-padding-top) var(--vivi-page-padding-x, 10px) var(--vivi-page-main-padding-bottom);
}

.vivi-ticket-single-shell {
	width: min(920px, 100%);
	margin: 0 auto;
}

.vivi-ticket-single-topbar {
	display: flex;
	align-items: center;
	justify-content: flex-start;
	margin-bottom: var(--vivi-space-md, 16px);
}

.vivi-ticket-single-back {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 40px;
	padding: 9px 16px;
	border: 1px solid var(--vivi-color-border, #D6D9DD);
	border-radius: var(--vivi-radius, 8px);
	background: var(--vivi-color-card, #fff);
	color: var(--vivi-color-heading, #393432);
	font-size: var(--vivi-fs-small);
	font-weight: var(--vivi-fw-bold);
	text-decoration: none;
}

.vivi-ticket-single-back::before {
	content: '←';
	margin-right: 6px;
}

.vivi-ticket-single-back:hover,
.vivi-ticket-single-back:focus-visible {
	border-color: var(--vivi-color-primary, #996515);
	color: var(--vivi-color-primary, #996515);
	outline: none;
}

.vivi-ticket-single-card {
	border: 1px solid var(--vivi-color-border, #D6D9DD);
	border-radius: var(--vivi-radius, 8px);
	background: var(--vivi-color-card, #fff);
	box-shadow: var(--vivi-shadow-card, 0 16px 46px rgba(0, 0, 0, .06));
	overflow: hidden;
}

.vivi-ticket-single-card .vivi-ticket-popup-detail {
	width: 100%;
	min-height: 0;
}

.vivi-ticket-single-card .vivi-ticket-popup-media {
	border-radius: 0;
}

.vivi-ticket-single-card .vivi-ticket-popup-info {
	padding-bottom: var(--vivi-space-xl, 32px);
}

@media (max-width: 767px) {


	.vivi-ticket-share-options,
	.vivi-ticket-share-copy {
		grid-template-columns: 1fr;
	}

	.vivi-ticket-single-main {
		padding: var(--vivi-mobile-page-main-padding-top) var(--vivi-mobile-padding-x, 10px) var(--vivi-mobile-page-main-padding-bottom);
	}

	.vivi-ticket-single-topbar {
		margin-bottom: var(--vivi-space-sm, 12px);
	}

	.vivi-ticket-single-card {
		border-radius: var(--vivi-radius, 8px);
	}
}

/* v358：手機板商品 Popup 視覺整理，避免內容擁擠並讓購買操作更適合 330px 寬度。 */
@media (max-width: 820px) {


	.vivi-ticket-popup-media {
		padding: 10px;
		gap: 8px;
	}


	.vivi-ticket-popup-info {
		padding: 18px 16px 28px;
		gap: 16px;
	}

	.vivi-ticket-popup-section {
		padding-top: 16px;
	}

	.vivi-ticket-popup-title {
		font-size: var(--vivi-ticket-popup-title-size);
		line-height: 1.18;
		padding-right: 38px;
	}

	.vivi-ticket-popup-price-section {
		gap: 10px;
	}

	.vivi-ticket-popup-price-row {
		gap: 8px;
		align-items: baseline;
	}


	.vivi-ticket-popup-discount {
		font-size: var(--vivi-ticket-popup-meta-size);
		padding: 4px 8px;
	}


	.vivi-ticket-popup-meta {
		padding: 14px;
		gap: 8px;
		border-radius: var(--vivi-radius, 8px);
	}

	.vivi-ticket-popup-meta div {
		grid-template-columns: 72px minmax(0, 1fr);
		gap: 8px;
	}

	.vivi-ticket-popup-meta span {
		font-size: var(--vivi-ticket-popup-meta-size);
		line-height: 1.45;
	}

	.vivi-ticket-popup-meta strong {
		font-size: var(--vivi-ticket-popup-secondary-size);
		line-height: 1.5;
		min-width: 0;
		word-break: break-word;
	}

	.vivi-ticket-popup-actions {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 10px;
	}

	.vivi-ticket-popup-actions.has-fixed-quantity {
		grid-template-columns: minmax(0, 1fr);
	}

	.vivi-ticket-popup-qty {
		grid-template-columns: 36px minmax(0, 1fr) 36px;
		min-height: 42px;
	}

	.vivi-ticket-popup-qty-input {
		width: 100%;
		font-size: var(--vivi-ticket-popup-secondary-size);
	}

	.vivi-ticket-popup-actions .vivi-ticket-popup-cart {
		width: 100%;
		min-height: 42px;
		padding-left: 14px;
		padding-right: 14px;
	}

	.vivi-ticket-popup-cart-message,
	.vivi-ticket-popup-stock-note {
		grid-column: 1 / -1;
		font-size: var(--vivi-ticket-popup-meta-size);
	}

	.vivi-ticket-popup-membership-gate {
		padding: 14px;
		gap: 10px;
		border-radius: var(--vivi-radius, 8px);
	}

	.vivi-ticket-popup-membership-gate strong {
		font-size: var(--vivi-ticket-popup-body-size);
	}

	.vivi-ticket-popup-membership-gate p {
		font-size: var(--vivi-ticket-popup-secondary-size);
		line-height: 1.65;
	}

	.vivi-ticket-popup-howto-img {
		border-radius: var(--vivi-radius, 8px);
	}

	.vivi-ticket-popup-share-row.vivi-loop-action-icons {
		gap: 14px;
	}

	.vivi-ticket-popup-review-item {
		padding: 14px;
		border-radius: var(--vivi-radius, 8px);
	}
}

@media (max-width: 360px) {
	.vivi-ticket-popup-info {
		padding-left: 14px;
		padding-right: 14px;
	}

	.vivi-ticket-popup-meta {
		padding: 12px;
	}

	.vivi-ticket-popup-meta div {
		grid-template-columns: 68px minmax(0, 1fr);
	}

}


/* v361：VIVI家族商品頁與 Popup 不使用加入購物車 AJAX，改為直接前往結帳頁。 */
.vivi-ticket-family-checkout-actions {
	display: flex;
	align-items: center;
	margin-top: var(--vivi-space-md, 16px);
}

.vivi-ticket-family-checkout-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: min(320px, 100%);
	min-height: var(--vivi-btn-height, 44px);
	text-decoration: none;
}

@media (max-width: 820px) {
	.vivi-ticket-family-checkout-actions {
		display: block;
	}

	.vivi-ticket-family-checkout-btn {
		width: 100%;
	}
}

/* v401: share close button uses CSS icon only; do not show fallback text. */


/* v0.10.271：商品、94小確幸與 94小確幸 Popup／內層主圖統一為 1:1。
   生活誌動態 Popup 不套用本規則，維持原比例與既有最高高度。 */
:root{
  --vivi-popup-media-gap-bottom:18px;
  --vivi-popup-media-bg:var(--vivi-color-bg-soft, #F2F4F5);
  --vivi-popup-media-radius:var(--vivi-radius, 8px);
}

.vivi-popup-panel .vivi-ticket-popup-detail > .vivi-ticket-popup-media,
.vivi-popup-panel .vivi-ticket-popup-media{
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  width:min(100%, 560px) !important;
  max-width:560px !important;
  min-width:0 !important;
  height:auto !important;
  max-height:none !important;
  min-height:0 !important;
  aspect-ratio:1 / 1 !important;
  margin:0 auto var(--vivi-popup-media-gap-bottom) !important;
  padding:0 !important;
  box-sizing:border-box !important;
  overflow:hidden !important;
  border-radius:var(--vivi-popup-media-radius) !important;
  background:var(--vivi-popup-media-bg) !important;
}

.vivi-popup-panel .vivi-ticket-popup-main-img,
.vivi-popup-panel .vivi-ticket-popup-image-empty{
  display:block !important;
  width:100% !important;
  max-width:100% !important;
  min-width:0 !important;
  height:100% !important;
  max-height:none !important;
  min-height:0 !important;
  aspect-ratio:1 / 1 !important;
  object-fit:cover !important;
  object-position:center center !important;
  margin:0 !important;
  padding:0 !important;
  border-radius:0 !important;
  background:var(--vivi-popup-media-bg) !important;
  box-sizing:border-box !important;
}

@media (max-width:767px){
  .vivi-popup-panel .vivi-ticket-popup-detail > .vivi-ticket-popup-media,
  .vivi-popup-panel .vivi-ticket-popup-media{
    width:100% !important;
    max-width:100% !important;
    margin:0 0 var(--vivi-popup-media-gap-bottom) !important;
  }
}

/* v0.10.168：94小確幸與 94小確幸上方間距統一，範圍切換按鈕整合至搜尋工具列。 */
.vivi-lite-ticket-archive-page .vivi-brand-archive-main {
	padding-top: 20px;
}

.vivi-lite-ticket-archive-page .vivi-ticket-filter-top {
	align-items: center;
}

.vivi-lite-ticket-archive-page .vivi-ticket-view-switch {
	display: flex;
	align-items: center;
	gap: var(--vivi-space-xs, 8px);
	flex: 0 0 auto;
	min-width: max-content;
}

.vivi-lite-ticket-archive-page .vivi-ticket-view-button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	height: 44px;
	min-height: 44px;
	max-height: 44px;
	padding: 0 18px;
	border: 1px solid var(--vivi-color-border);
	border-radius: var(--vivi-radius, 8px);
	background: var(--vivi-color-card);
	color: var(--vivi-color-text-muted);
	font-size: var(--vivi-fs-button);
	font-weight: var(--vivi-fw-button);
	line-height: var(--vivi-lh-compact);
	text-decoration: none;
	white-space: nowrap;
	transition: background-color var(--vivi-transition), border-color var(--vivi-transition), color var(--vivi-transition);
}

.vivi-lite-ticket-archive-page .vivi-ticket-view-button:hover {
	border-color: var(--vivi-color-border-strong);
	background: var(--vivi-color-bg-soft);
	color: var(--vivi-color-heading);
}

.vivi-lite-ticket-archive-page .vivi-ticket-view-button:focus-visible {
	outline: 2px solid color-mix(in srgb, var(--vivi-color-primary) 34%, transparent);
	outline-offset: 2px;
}

.vivi-lite-ticket-archive-page .vivi-ticket-view-button.is-active {
	border-color: var(--vivi-color-black);
	background: var(--vivi-color-black);
	color: var(--vivi-color-text-inverse);
}

.vivi-lite-ticket-archive-page .vivi-ticket-groups-filter {
	grid-template-columns: max-content minmax(260px, 1fr);
}

.vivi-lite-ticket-archive-page .vivi-ticket-groups-filter .vivi-groups-query-row {
	display: contents;
}

.vivi-lite-ticket-archive-page .vivi-ticket-groups-filter .vivi-groups-search-field {
	grid-column: auto;
}

@media (max-width: 767px) {
	.vivi-lite-ticket-archive-page .vivi-ticket-filter-top {
		display: grid;
		grid-template-columns: minmax(0, 1fr);
		gap: 10px;
		align-items: stretch;
	}

	.vivi-lite-ticket-archive-page .vivi-ticket-view-switch {
		display: grid;
		grid-template-columns: repeat(2, minmax(0, 1fr));
		width: 100%;
		min-width: 0;
		gap: 10px;
	}

	.vivi-lite-ticket-archive-page .vivi-ticket-view-button {
		width: 100%;
		min-width: 0;
		height: 44px;
		min-height: 44px;
		max-height: 44px;
		padding-inline: 10px;
		box-sizing: border-box;
	}

	.vivi-lite-ticket-archive-page .vivi-ticket-filter-top .vivi-brand-filter-keyword {
		width: 100%;
		min-width: 0;
	}

	.vivi-lite-ticket-archive-page .vivi-ticket-groups-filter {
		display: grid !important;
		grid-template-columns: minmax(0, 1fr) !important;
		width: 100% !important;
		gap: 10px !important;
		align-items: stretch !important;
	}

	.vivi-lite-ticket-archive-page .vivi-ticket-groups-filter .vivi-ticket-view-switch {
		grid-column: 1;
	}

	.vivi-lite-ticket-archive-page .vivi-ticket-groups-filter .vivi-groups-query-row {
		display: grid !important;
		grid-template-columns: minmax(0, 1fr) !important;
		grid-column: 1 !important;
		width: 100% !important;
		min-width: 0 !important;
		gap: 10px !important;
		align-items: stretch !important;
	}

	.vivi-lite-ticket-archive-page .vivi-ticket-groups-filter .vivi-groups-search-field,
	.vivi-lite-ticket-archive-page .vivi-ticket-groups-filter .vivi-groups-search-field input {
		display: block !important;
		grid-column: 1 / -1 !important;
		width: 100% !important;
		max-width: none !important;
		min-width: 0 !important;
		box-sizing: border-box !important;
	}
}

/* VIVI Ticket v0.10.095：brand_category 改為平面品牌類別。 */
.vivi-ticket-popup-brand-tags{
	display:flex;
	flex-wrap:wrap;
	align-items:center;
	gap:5px;
	min-width:0;
}
.vivi-ticket-popup-brand-tags em{
	display:inline-flex;
	align-items:center;
	min-height:22px;
	max-width:132px;
	padding:3px 8px;
	overflow:hidden;
	border:1px solid rgba(17,24,39,.09);
	border-radius:var(--vivi-radius, 8px);
	background:#fff;
	color:var(--vivi-color-text,#374151);
	font-size:var(--vivi-ticket-popup-brand-tag-size);
	font-style:normal;
	font-weight:600;
	line-height:1.2;
	text-overflow:ellipsis;
	white-space:nowrap;
	box-sizing:border-box;
}
@media (max-width:767px){
	.vivi-ticket-popup-brand-tags em{
		max-width:108px;
		min-height:20px;
		padding:2px 7px;
		font-size:var(--vivi-ticket-popup-brand-tag-size);
	}
}


/* 票券沿用所屬品牌座標，支援初始距離排序與卡片距離資訊。 */
.vivi-lite-ticket-archive-page .vivi-ticket-keyword-row,
.vivi-lite-group-tickets-page .vivi-ticket-keyword-row,
.vivi-group-tickets-filter-form .vivi-ticket-keyword-row{
	display:flex;
	align-items:center;
	gap:10px;
	flex:1 1 320px;
	min-width:0;
	max-width:100%;
}

.vivi-lite-ticket-archive-page .vivi-ticket-keyword-row .vivi-brand-filter-keyword,
.vivi-lite-group-tickets-page .vivi-ticket-keyword-row .vivi-brand-filter-keyword,
.vivi-group-tickets-filter-form .vivi-ticket-keyword-row .vivi-brand-filter-keyword{
	flex:1 1 auto;
	width:auto;
	min-width:0;
}

/* 搜尋列只保留關鍵字欄位；定位由頁面初始流程自動取得。 */
.vivi-ticket-distance{
	display:flex;
	align-items:center;
	gap:5px;
	margin:6px 0 0;
	color:var(--vivi-color-text-muted);
	font-size:var(--vivi-fs-xs, 12px);
	font-weight:500;
	line-height:1.35;
}

.vivi-ticket-distance .vivi-bb-icon,
.vivi-ticket-distance .vivi-bb-icon::before{
	display:inline-flex;
	align-items:center;
	justify-content:center;
	width:14px;
	min-width:14px;
	height:14px;
	margin:0;
	font-size:14px;
	line-height:1;
}

@media (max-width:767px){
	.vivi-lite-ticket-archive-page .vivi-ticket-keyword-row,
	.vivi-lite-group-tickets-page .vivi-ticket-keyword-row,
	.vivi-group-tickets-filter-form .vivi-ticket-keyword-row{
		width:100%;
		flex:1 1 auto;
	}
}


/* v0.10.231：iOS Safari 票券排序選單固定為全站 44px 控制高度。
   移除 iOS 原生 select 額外內距與圓角計算，避免手機板高度跳動。 */
@media (max-width: 767px) {
	.vivi-lite-ticket-archive-page .vivi-ticket-sort-select {
		display: block !important;
		height: 44px !important;
		min-height: 44px !important;
		max-height: 44px !important;
		box-sizing: border-box !important;
		padding: 0 34px 0 12px !important;
		margin: 0 !important;
		border: 1px solid var(--vivi-form-border, #d9dee7) !important;
		border-radius: var(--vivi-radius, 8px) !important;
		font-family: inherit !important;
		font-size: 16px !important;
		font-weight: inherit !important;
		line-height: 42px !important;
		text-indent: 0 !important;
		vertical-align: middle !important;
		-webkit-appearance: none !important;
		appearance: none !important;
		background-color: var(--vivi-form-bg, #fff) !important;
		background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5 6 6.5 11 1.5' fill='none' stroke='%23666' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") !important;
		background-repeat: no-repeat !important;
		background-position: right 12px center !important;
		background-size: 12px 8px !important;
	}
}

/* 0.10.286：94小確幸與 94小確幸直接沿用生活誌 List 的載入卡片樣式。 */
[data-vivi-ticket-page][data-vivi-ticket-initial-distance-pending="1"] .vivi-ticket-archive-content > :not(.vivi-ticket-initial-loading),
.vivi-ticket-archive-content.is-loading > :not(.vivi-ticket-initial-loading) {
	display: none !important;
	pointer-events: none !important;
}

body.vivi-lite-ticket-archive-page .vivi-ticket-initial-loading {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: var(--vivi-space-xs);
	min-height: 220px;
	padding: var(--vivi-space-2xl) var(--vivi-space-lg);
	border: 1px solid var(--vivi-color-border);
	border-radius: var(--vivi-radius, 8px);
	background: var(--vivi-color-card);
	box-shadow: var(--vivi-shadow-soft);
	color: var(--vivi-color-text-muted);
	text-align: center;
}

body.vivi-lite-ticket-archive-page .vivi-ticket-initial-loading strong {
	color: var(--vivi-color-heading);
	font-size: var(--vivi-fs-h3);
	font-weight: var(--vivi-fw-heading);
	line-height: var(--vivi-lh-compact);
}

body.vivi-lite-ticket-archive-page .vivi-ticket-initial-loading > span:last-child {
	max-width: 430px;
	margin: 0;
	color: var(--vivi-color-text-muted);
	font-size: var(--vivi-fs-small);
	font-weight: var(--vivi-fw-regular);
	line-height: var(--vivi-lh-body);
}

body.vivi-lite-ticket-archive-page .vivi-ticket-loading-spinner {
	display: block;
	width: 34px;
	height: 34px;
	border-radius: var(--vivi-radius, 8px);
	border: 3px solid rgba(153, 101, 21, .18);
	border-top-color: var(--vivi-blue, var(--vivi-color-primary, #996515));
	animation: viviTicketListSpin .78s linear infinite;
}

@keyframes viviTicketListSpin {
	to { transform: rotate(360deg); }
}

@media (max-width: 767px) {
	body.vivi-lite-ticket-archive-page .vivi-ticket-initial-loading {
		min-height: 190px;
		border-right: 0;
		border-left: 0;
		border-radius: 0;
		box-shadow: none;
	}
}

@media (prefers-reduced-motion: reduce) {
	body.vivi-lite-ticket-archive-page .vivi-ticket-loading-spinner {
		animation-duration: 1.5s;
	}
}

/* 0.10.283：94小確幸與 94小確幸的品牌類別、品牌標籤統一為單行水平滑動。 */
body.vivi-lite-ticket-archive-page .vivi-ticket-horizontal-filter{
	width:100%;
	max-width:100%;
	min-width:0;
	overflow:hidden;
}
body.vivi-lite-ticket-archive-page .vivi-ticket-brand-tag-filter{
	margin-top:0;
}
body.vivi-lite-ticket-archive-page .vivi-ticket-brand-tag-filter .vivi-brand-map-tag-tabs-row{
	display:block;
	width:100%;
	max-width:100%;
	min-width:0;
	padding-right:0;
}
body.vivi-lite-ticket-archive-page [data-vivi-ticket-horizontal-scroll]{
	display:flex !important;
	flex:1 1 auto !important;
	flex-wrap:nowrap !important;
	align-items:center;
	width:100% !important;
	max-width:100% !important;
	min-width:0 !important;
	overflow-x:auto !important;
	overflow-y:hidden !important;
	padding-bottom:3px;
	-webkit-overflow-scrolling:touch;
	overscroll-behavior-x:contain;
	scroll-snap-type:x proximity;
	scrollbar-width:none;
	-ms-overflow-style:none;
	touch-action:pan-x pan-y;
	cursor:grab;
	box-sizing:border-box;
}
body.vivi-lite-ticket-archive-page [data-vivi-ticket-horizontal-scroll]::-webkit-scrollbar{
	display:none;
	width:0;
	height:0;
}
body.vivi-lite-ticket-archive-page [data-vivi-ticket-horizontal-scroll].is-dragging{
	cursor:grabbing;
	scroll-behavior:auto;
	user-select:none;
	-webkit-user-select:none;
}
body.vivi-lite-ticket-archive-page [data-vivi-ticket-horizontal-scroll]:focus-visible{
	outline:2px solid color-mix(in srgb,var(--vivi-color-primary,#111827) 38%,transparent);
	outline-offset:2px;
}
body.vivi-lite-ticket-archive-page [data-vivi-ticket-horizontal-scroll] > .vivi-brand-category-tag,
body.vivi-lite-ticket-archive-page [data-vivi-ticket-horizontal-scroll] > .vivi-brand-map-tag-choice{
	flex:0 0 auto !important;
	scroll-snap-align:start;
}
@media (max-width:860px){
	body.vivi-lite-ticket-archive-page [data-vivi-ticket-horizontal-scroll]{
		padding-bottom:2px;
	}
}

@media (prefers-reduced-motion: reduce) {
	.vivi-ticket-popup-rules-section.is-enhanced.has-overflow .vivi-ticket-popup-rules-shell,
	.vivi-ticket-popup-rules-fade,
	.vivi-ticket-popup-rules-toggle,
	.vivi-ticket-popup-rules-toggle-icon {
		transition: none !important;
	}
}
