/* 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 {
	display: flex;
	flex-direction: column;
	height: 100%;
	min-height: 408px;
}

.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-product-image {
	flex: 0 0 190px;
}

.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-product-body {
	display: flex;
	flex: 1;
	flex-direction: column;
}

.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-product-body div {
	margin-top: auto;
}

.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-ticket-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 14px;
		width: min(100% - 20px, var(--vivi-container));
	}

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

	.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-product-image {
		flex-basis: 150px;
		min-height: 150px;
	}
}

/* v78：生活票券 Loop Item 單項調整。 */
.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-ticket-image-link {
	display: block;
	color: inherit;
	text-decoration: none;
}

.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-product-image {
	width: 100%;
	aspect-ratio: 1 / 1;
	flex: 0 0 auto;
	min-height: 0;
}

.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-product-body h3 {
	font-size: var(--vivi-fs-body);
	line-height: var(--vivi-lh-compact);
}

.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;
}

/* v79：生活票券 Loop Item 圖片完整顯示、價格區間距、商品名稱字級。 */
.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-product-image {
	background-size: contain;
	background-repeat: no-repeat;
	background-position: center center;
	background-color: var(--vivi-color-card);
}

.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-product-body div {
	margin-top: 18px;
}

.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-product-body h3 {
	font-size: var(--vivi-fs-small);
	line-height: var(--vivi-lh-compact);
}

@media (max-width: 767px) {
	.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-product-body div {
		margin-top: 12px;
	}
}


/* v80：修正 v79 因快取與既有規則導致未生效；僅限生活票券 Loop Item。 */
.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-product-image {
	aspect-ratio: 1 / 1 !important;
	width: 100% !important;
	min-height: 0 !important;
	background-size: contain !important;
	background-repeat: no-repeat !important;
	background-position: center center !important;
}

.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-product-body {
	display: flex !important;
	flex-direction: column !important;
}

.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-product-body > div {
	margin-top: 20px !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;
}

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

/* v81：生活票券 Loop Item 圖片完整顯示、價格不固定貼底；僅限生活票券頁。 */
.vivi-lite-ticket-archive-page .vivi-ticket-grid > .vivi-ticket-card {
	align-self: start !important;
}

.vivi-lite-ticket-archive-page .vivi-ticket-card {
	height: auto !important;
	min-height: 0 !important;
}

.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-ticket-image-link {
	display: block !important;
	width: 100% !important;
}

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

.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-ticket-card-img {
	display: block !important;
	width: 100% !important;
	height: 100% !important;
	object-fit: contain !important;
	object-position: center center !important;
}

.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-product-body {
	flex: none !important;
	display: block !important;
}

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

.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-ticket-card-meta {
	margin-bottom: 8px !important;
}

@media (max-width: 767px) {
	.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-product-body > div {
		margin-top: 8px !important;
	}
}


/* v82：生活票券 Loop Item 圖片正方形完整顯示，並讓卡片高度一致；僅限生活票券頁。 */
.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;
}

.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;
}

.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: contain !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;
	object-fit: contain !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-bottom: 10px !important;
}

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

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

.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-product-body > div {
	margin-top: 8px !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 {
		margin-top: 6px !important;
	}
}


/* v83：生活票券 Loop Item 最終修正：圖片用完整原圖比例顯示，價格固定在卡片底部；僅限生活票券頁。 */
.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;
}

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

.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-ticket-card-img {
	position: absolute !important;
	top: 50% !important;
	left: 50% !important;
	width: 100% !important;
	height: 100% !important;
	max-width: 100% !important;
	max-height: 100% !important;
	transform: translate(-50%, -50%) !important;
	object-fit: contain !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: 22px;
	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: 16px;
}

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

.vivi-lite-94-deals-page .vivi-94-deals-countdown-card.is-vivi-deal-active .vivi-countdown-time span {
	background: var(--vivi-color-primary) !important;
	border-color: var(--vivi-color-primary) !important;
}

.vivi-lite-94-deals-page .vivi-94-deals-countdown-card.is-vivi-deal-active .vivi-countdown-time strong,
.vivi-lite-94-deals-page .vivi-94-deals-countdown-card.is-vivi-deal-active .vivi-countdown-time em {
	color: var(--vivi-color-text-inverse) !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: 999px;
	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: 18px;
	}

	.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: 18px !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;
		width: 100% !important;
		height: 100% !important;
		min-height: 152px !important;
		aspect-ratio: auto !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: 152px !important;
		aspect-ratio: auto !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:not(.vivi-ticket-image-location),
	.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-ticket-image-location,
	.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-product-soldout {
		min-height: 25px !important;
		padding: 3px 8px !important;
		border-radius: 999px !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:not(.vivi-ticket-image-location) {
		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;
	}

	.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-ticket-image-location {
		right: 8px !important;
		bottom: 8px !important;
		max-width: calc(100% - 16px) !important;
		background: color-mix(in srgb, var(--vivi-color-black) 72%, transparent) !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: 144px !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: 50% !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: 50% !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: 999px !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 > span.vivi-ticket-image-location,
.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-ticket-image-location {
	position: absolute !important;
	left: auto !important;
	right: 12px !important;
	top: auto !important;
	bottom: 12px !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: 999px !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-text-inverse) !important;
	background: color-mix(in srgb, var(--vivi-color-black) 72%, transparent) !important;
	border: 0 !important;
	box-shadow: 0 6px 16px color-mix(in srgb, var(--vivi-color-black) 12%, transparent) !important;
	z-index: 8 !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;
	}

	.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-product-image > span.vivi-ticket-image-location,
	.vivi-lite-ticket-archive-page .vivi-ticket-card .vivi-ticket-image-location {
		right: 8px !important;
		bottom: 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-pill, 999px);
	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-xl, 28px) var(--vivi-radius-xl, 28px) 0 0;
	display: flex;
	flex-direction: column;
	gap: var(--vivi-space-sm, 12px);
}

.vivi-ticket-popup-main-img {
	width: 100%;
	max-height: 560px;
	aspect-ratio: 16 / 9;
	object-fit: contain;
	border-radius: var(--vivi-radius-lg, 20px);
	display: block;
	background: var(--vivi-color-bg-soft, #F2F4F5);
}

.vivi-ticket-popup-image-empty {
	width: 100%;
	aspect-ratio: 16 / 9;
	border-radius: var(--vivi-radius-lg, 20px);
	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-pill, 999px);
	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-pill, 999px);
	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-lg, 20px);
	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, 42px);
	border: 1px solid color-mix(in srgb, var(--vivi-color-primary, #996515) 34%, transparent);
	border-radius: var(--vivi-radius-pill, 999px);
	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;
	min-height: var(--vivi-btn-height, 42px);
	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, 42px);
	padding: 0 var(--vivi-space-md, 16px);
	border-radius: var(--vivi-radius-pill, 999px);
	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-lg, 20px);
	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-md, 14px);
	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-lg, 20px);
	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;
	min-height: var(--vivi-btn-height, 42px);
}


/* v349：商品 Popup 會員資格與 94小確幸倒數提示。 */
.vivi-ticket-popup-deal-countdown {
	margin-top: var(--vivi-space-md, 16px);
	display: block;
	border-radius: var(--vivi-radius-lg, 20px);
	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-primary, #996515);
	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-md, 14px);
}

.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-time span {
	background: var(--vivi-status-soldout, #C1121F);
	border-color: var(--vivi-status-soldout, #C1121F);
}

.vivi-ticket-popup-deal-countdown.is-vivi-deal-active .vivi-countdown-time strong,
.vivi-ticket-popup-deal-countdown.is-vivi-deal-active .vivi-countdown-time em {
	color: var(--vivi-color-text-inverse, #fff);
}

.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-pill, 999px);
	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-lg, 20px);
	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-lg, 20px) var(--vivi-radius-lg, 20px) 0 0;
		padding: var(--vivi-space-sm, 12px);
	}

	.vivi-ticket-popup-main-img,
	.vivi-ticket-popup-image-empty {
		border-radius: var(--vivi-radius-md, 14px);
		aspect-ratio: 4 / 3;
		max-height: 430px;
	}

	.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: 50% !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: 999px;
	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: 999px;
	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: 999px;
	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-pill, 999px);
	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-xl, 28px);
	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-lg, 22px);
	}
}

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

	

	

	

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

	.vivi-ticket-popup-main-img,
	.vivi-ticket-popup-image-empty {
		aspect-ratio: 4 / 3;
		max-height: 300px;
		border-radius: var(--vivi-radius-md, 14px);
	}

	.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-md, 14px);
	}

	.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-md, 14px);
	}

	.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-md, 14px);
	}

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

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

@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, 42px);
	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.9.460: Popup media fixed display area standard.
   Requirement: keep top/left/right spacing inside popup, use a fixed media display area,
   and scale the actual image proportionally without cropping. */
:root{
  --vivi-popup-media-gap-x:22px;
  --vivi-popup-media-gap-top:22px;
  --vivi-popup-media-gap-bottom:18px;
  --vivi-popup-media-height:clamp(360px, 56vh, 560px);
  --vivi-popup-media-bg:var(--vivi-color-bg-soft, #F2F4F5);
  --vivi-popup-media-radius:18px;
}

/* restore content padding around the media area */
.vivi-popup-panel .vivi-activity-detail > .vivi-activity-detail-gallery,
.vivi-popup-panel .vivi-activity-detail > .vivi-activity-detail-image,
.vivi-popup-panel .vivi-ticket-popup-detail > .vivi-ticket-popup-media{
  display:block !important;
  width:100% !important;
  max-width:100% !important;
  min-width:0 !important;
  height:var(--vivi-popup-media-height) !important;
  max-height:var(--vivi-popup-media-height) !important;
  min-height:0 !important;
  margin:0 0 var(--vivi-popup-media-gap-bottom) 0 !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;
}

/* carousel/single image containers must fill the fixed display area */
.vivi-popup-panel .vivi-activity-detail-gallery-viewport,
.vivi-popup-panel .vivi-activity-detail-gallery-track,
.vivi-popup-panel .vivi-activity-detail-gallery-slide,
.vivi-popup-panel .vivi-activity-detail-image,
.vivi-popup-panel .vivi-ticket-popup-media{
  width:100% !important;
  max-width:100% !important;
  height:var(--vivi-popup-media-height) !important;
  max-height:var(--vivi-popup-media-height) !important;
  min-height:0 !important;
  box-sizing:border-box !important;
  background:var(--vivi-popup-media-bg) !important;
}

.vivi-popup-panel .vivi-activity-detail-gallery-slide,
.vivi-popup-panel .vivi-activity-detail-image,
.vivi-popup-panel .vivi-ticket-popup-media{
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
}

/* actual media: proportional scaling, no cropping */
.vivi-popup-panel .vivi-activity-detail-gallery-slide img,
.vivi-popup-panel .vivi-activity-detail-image img,
.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:100% !important;
  min-height:0 !important;
  object-fit:contain !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;
}

/* keep close button above media but not inside the image display math */


@media (max-width:767px){
  :root{
    --vivi-popup-media-height:clamp(250px, 42vh, 390px);
    --vivi-popup-media-radius:16px;
  }
  .vivi-popup-panel .vivi-activity-detail > .vivi-activity-detail-gallery,
  .vivi-popup-panel .vivi-activity-detail > .vivi-activity-detail-image,
  .vivi-popup-panel .vivi-ticket-popup-detail > .vivi-ticket-popup-media{
    width:100% !important;
    max-width:100% !important;
    margin-left:0 !important;
    margin-right:0 !important;
    margin-top:0 !important;
  }
}


/* v0.9.535: 94小確幸標題下方 Page Tabs，沿用網站基礎設定 Page Tabs 元件。 */
.vivi-lite-94-deals-page .vivi-ticket-page-tabs {
	margin: 20px 0 0;
}

.vivi-lite-94-deals-page .vivi-ticket-page-tabs + .vivi-brand-filter-panel {
	margin-top: 20px;
}

@media (max-width: 767px) {
	.vivi-lite-94-deals-page .vivi-ticket-page-tabs {
		margin-top: 16px;
	}

	.vivi-lite-94-deals-page .vivi-ticket-page-tabs + .vivi-brand-filter-panel {
		margin-top: 16px;
	}
}
