/* VIVI Life Ticket Archive
   Filter Panel 完全沿用品牌 Archive 與網站基礎設定；本檔只保留生活票券列表必要排版。 */
.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小確幸列表圖片統一為 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,
.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-product-body h3 a {
	font-size: var(--vivi-fs-small) !important;
	line-height: var(--vivi-lh-compact) !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：生活票券售完商品只保留「完售」徽章，不讓圖片變霧或被白色遮罩覆蓋；僅限生活票券頁。 */
.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：生活票券排序下拉選單寬度收斂；僅限生活票券頁。 */
.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小確幸空狀態區塊寬度改為列表容器 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-fs-body);
	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-fs-h2);
	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-fs-xs);
	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-fs-xs);
	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-fs-body);
	}

	.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-fs-h3);
	}
}

/* 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小確幸 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;
	}
}

/* v161：手機板生活票券與 94小確幸 Loop List 改為每行 1 個商品；僅限票券 Archive 頁，不影響首頁與共用元件。 */
@media (max-width: 767px) {
	.vivi-lite-ticket-archive-page .vivi-ticket-grid {
		grid-template-columns: 1fr !important;
		gap: 16px !important;
		width: min(100% - 20px, var(--vivi-container)) !important;
	}

	.vivi-lite-ticket-archive-page .vivi-ticket-grid > .vivi-ticket-card {
		width: 100% !important;
	}
}

/* v164：手機板生活票券與 94小確幸 Loop Item 寬度固定為 100%；只限票券 Archive 頁。 */
@media (max-width: 767px) {
	.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 {
		width: 100% !important;
		max-width: 100% !important;
		min-width: 0 !important;
		box-sizing: border-box !important;
	}
}

/* v165：修正手機板 Loop List 右側空白；移除 v161 遺留的 100% - 20px 縮寬設定，讓商品卡片吃滿列表容器。 */
@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;
		font-size: var(--vivi-fs-h2) !important;
		line-height: 1.18 !important;
		font-weight: var(--vivi-fw-bold) !important;
		letter-spacing: .01em !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;
		color: var(--vivi-color-text-muted) !important;
		font-size: var(--vivi-fs-body-lg) !important;
		line-height: var(--vivi-lh-compact) !important;
		font-weight: var(--vivi-fw-bold) !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 {
		font-size: var(--vivi-fs-body-lg) !important;
		line-height: 1.15 !important;
		color: var(--vivi-color-text-light) !important;
		white-space: nowrap !important;
	}

	.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-ticket-price-sale {
		font-size: var(--vivi-fs-h2) !important;
		line-height: 1.08 !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-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;
		font-size: var(--vivi-fs-h3) !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;
	}
}

/* v189：手機板完售標籤維持置中圓形徽章，但尺寸放大一點。 */
@media (max-width: 767px) {
	.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;
		font-size: var(--vivi-fs-h3) !important;
		line-height: 1 !important;
		font-weight: var(--vivi-fw-bold) !important;
		letter-spacing: .03em !important;
		text-align: center !important;
		white-space: nowrap !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;
	}
}


/* v190：電腦版完售標籤也改為商品圖片正中間的圓形徽章，與手機板一致。 */
@media (min-width: 768px) {
	.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;
		font-size: var(--vivi-fs-h3) !important;
		line-height: 1 !important;
		font-weight: var(--vivi-fw-bold) !important;
		letter-spacing: .03em !important;
		text-align: center !important;
		white-space: nowrap !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;
	}
}


/* v520：票券 Loop Item 最終文字標準。
   - 刪除 v166～v186 舊版手機字級與價格反覆覆蓋。
   - 顏色、字級、字重、行高全部回到 vivi-base.css 設計變數。
   - 本段只管理票券卡片文字、標籤與價格，不影響商品 Popup。 */
.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-fs-body-lg) !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-fs-small) !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-fs-small) !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-fs-body-lg) !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-fs-xs) !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-fs-h3) !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 {
		font-size: var(--vivi-fs-h3) !important;
		line-height: var(--vivi-lh-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-size: var(--vivi-fs-small) !important;
		line-height: var(--vivi-lh-compact) !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;
		font-size: var(--vivi-fs-body) !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;
		font-size: var(--vivi-fs-h3) !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;
		font-size: var(--vivi-fs-xs) !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-fs-h3);
	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-fs-xs);
	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-fs-h2);
	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-fs-xs);
}

.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-fs-body);
}

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

.vivi-ticket-popup-discount {
	font-size: var(--vivi-fs-small);
	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-fs-body);
	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;
}

.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-fs-xs);
	font-weight: var(--vivi-fw-bold);
	color: var(--vivi-color-text-light, #647385);
}

.vivi-ticket-popup-meta strong {
	font-size: var(--vivi-fs-small);
	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;
}

.vivi-ticket-popup-actions {
	display: flex;
	align-items: center;
	gap: var(--vivi-space-sm, 12px);
	flex-wrap: wrap;
	margin-top: var(--vivi-space-md, 16px);
}

.vivi-ticket-popup-qty {
	display: inline-grid;
	grid-template-columns: 38px 58px 38px;
	align-items: stretch;
	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: 58px;
	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-fs-small);
	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;
	height: var(--vivi-btn-height, 44px);
	min-height: var(--vivi-btn-height, 44px);
	max-height: var(--vivi-btn-height, 44px);
	font-size: var(--vivi-fs-button);
}

.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 {
	flex: 1 0 100%;
	display: block;
	font-size: var(--vivi-fs-small);
	line-height: var(--vivi-lh-compact, 1.45);
	font-weight: var(--vivi-fw-bold);
}

.vivi-ticket-popup-stock-note {
	font-size: var(--vivi-fs-xs);
	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-fs-xs);
}

.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-fs-small);
	font-weight: var(--vivi-fw-bold);
	color: var(--vivi-color-heading, #000);
}

.vivi-ticket-popup-review-head span {
	font-size: var(--vivi-fs-xs);
	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-fs-small);
	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-fs-body);
	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-fs-small);
	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-fs-body-lg);
	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-fs-h2);
	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-fs-xs);
	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-countdown .vivi-94-countdown-note {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	min-height: 38px;
	padding: 0 14px;
	color: var(--vivi-color-heading, #000);
	background: color-mix(in srgb, var(--vivi-color-card, #fff) 86%, transparent);
	border: 1px solid var(--vivi-color-border, #D6D9DD);
	border-radius: var(--vivi-radius, 8px);
	font-size: var(--vivi-fs-xs);
	font-weight: var(--vivi-fw-bold);
	letter-spacing: .06em;
	text-decoration: none;
}

.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-fs-body);
	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-fs-small);
	line-height: var(--vivi-lh-body, 1.7);
	color: var(--vivi-color-text, #5A5A5A);
}

@media (max-width: 640px) {
	.vivi-ticket-popup-actions {
		display: grid;
		grid-template-columns: 132px minmax(0, 1fr);
	}

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

	.vivi-ticket-popup-qty {
		grid-template-columns: 36px 56px 36px;
	}

	.vivi-ticket-popup-cart-message {
		grid-column: 1 / -1;
	}
}

@media (max-width: 820px) {
	.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-fs-h3);
		margin-bottom: var(--vivi-space-sm, 12px);
	}

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

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

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

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

	.vivi-ticket-popup-actions {
		display: grid;
		grid-template-columns: 1fr;
	}

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

}

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

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


/* v350：手機板商品 Popup 高度同步扣除全站底部快捷按鈕，避免 Popup 被快捷列覆蓋。 */
@media (max-width: 820px) {
}


/* 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-fs-h3) !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));
}

body.vivi-ticket-share-open {
	overflow: hidden !important;
}


.vivi-ticket-share-panel h2 {
	margin: 0 44px 8px 0;
	font-size: var(--vivi-fs-h3);
	line-height: 1.25;
	color: var(--vivi-color-heading, #393432);
}

.vivi-ticket-share-panel p {
	margin: 0 0 18px;
	color: var(--vivi-color-text-muted);
	font-size: var(--vivi-fs-small);
	line-height: 1.7;
}


.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-fs-h3);
		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-price-row strong {
		font-size: var(--vivi-fs-h2);
	}

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

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

	.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-fs-xs);
		line-height: 1.45;
	}

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

	.vivi-ticket-popup-actions {
		display: flex;
		align-items: stretch;
		gap: 10px;
		flex-wrap: wrap;
	}

	.vivi-ticket-popup-qty {
		flex: 0 0 auto;
		grid-template-columns: 38px 54px 38px;
		min-height: 42px;
		justify-self: flex-start;
	}

	.vivi-ticket-popup-qty-input {
		width: 54px;
		font-size: var(--vivi-fs-small);
	}

	.vivi-ticket-popup-actions .vivi-ticket-popup-cart {
		flex: 1 1 150px;
		width: auto;
		min-height: 42px;
		padding-left: 14px;
		padding-right: 14px;
	}

	.vivi-ticket-popup-actions.has-fixed-quantity .vivi-ticket-popup-cart,
	.vivi-ticket-popup-actions:not(:has(.vivi-ticket-popup-qty)) .vivi-ticket-popup-cart {
		flex-basis: 100%;
		width: 100%;
	}

	.vivi-ticket-popup-cart-message,
	.vivi-ticket-popup-stock-note {
		flex: 1 0 100%;
		font-size: var(--vivi-fs-xs);
	}

	.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-fs-small);
	}

	.vivi-ticket-popup-membership-gate p {
		font-size: var(--vivi-fs-xs);
		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);
	}

	.vivi-ticket-popup-actions .vivi-ticket-popup-cart {
		flex-basis: 100%;
		width: 100%;
	}
}


/* 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%;
	}
}

/* v363: 商品分享視窗手機板也維持與動態分享視窗一致，不做底部抽屜。 */
@media (max-width: 767px) {
	
	
}

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


/* v0.10.271：商品、生活票券與 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小確幸上方間距統一，範圍切換按鈕整合至搜尋工具列。 */
.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-brand-archive-main {
		padding-top: 20px;
	}

	.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:11px;
	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:10px;
	}
}


/* 票券沿用所屬品牌座標，支援初始距離排序與卡片距離資訊。 */
.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;
	}
}


/* 0.10.230：生活票券／94小確幸取消隨機排列；定位失敗時改為最新上架的穩定順序。 */


/* 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小確幸直接沿用生活誌 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小確幸的品牌類別、品牌標籤統一為單行水平滑動。 */
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;
	}
}
