/* Buttons */
.pe-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: var(--space-sm);
	padding: 0.75em 1.5em;
	font-family: var(--font-display);
	font-weight: 600;
	font-size: var(--font-size-sm);
	border-radius: var(--radius-pill);
	border: 2px solid transparent;
	cursor: pointer;
	transition: transform var(--transition-fast), box-shadow var(--transition-fast), opacity var(--transition-fast);
	text-decoration: none;
	white-space: nowrap;
}

.pe-btn:hover {
	transform: translateY(-1px);
	box-shadow: var(--shadow-md);
	color: inherit;
}

.pe-btn--primary {
	background: var(--gradient-cta);
	color: #fff !important;
	border-color: transparent;
}

.pe-btn--primary:hover {
	color: #fff !important;
}

.pe-btn--outline {
	background: transparent;
	color: var(--theme-primary);
	border-color: var(--theme-primary);
}

.pe-btn--outline:hover {
	background: var(--color-primary-light);
	color: var(--theme-primary) !important;
}

.pe-btn--ghost {
	background: var(--color-primary-light);
	color: var(--theme-primary);
}

.pe-btn--sm {
	padding: 0.5em 1em;
	font-size: var(--font-size-xs);
}

.pe-btn--block {
	width: 100%;
}

.pe-btn:disabled,
.pe-btn.is-loading {
	opacity: 0.65;
	cursor: not-allowed;
	transform: none;
}

/* Cards */
.pe-card {
	background: var(--color-surface);
	border-radius: var(--radius-lg);
	box-shadow: var(--shadow-card);
	overflow: hidden;
	transition: transform var(--transition-base), box-shadow var(--transition-base);
}

.pe-card:hover {
	transform: translateY(-4px);
	box-shadow: var(--shadow-lg);
}

.pe-card__image {
	aspect-ratio: 4 / 3;
	overflow: hidden;
	background: var(--color-primary-light);
}

.pe-card__image img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform var(--transition-slow);
}

.pe-card:hover .pe-card__image img {
	transform: scale(1.04);
}

.pe-card__body {
	padding: var(--space-lg);
}

.pe-card__title {
	font-size: var(--font-size-lg);
	margin-bottom: var(--space-sm);
}

.pe-card__text {
	color: var(--color-text-muted);
	font-size: var(--font-size-sm);
}

.pe-card__badge {
	display: inline-block;
	padding: 0.2em 0.65em;
	font-size: var(--font-size-xs);
	font-weight: 600;
	border-radius: var(--radius-pill);
	background: var(--color-primary-light);
	color: var(--theme-primary);
	margin-bottom: var(--space-sm);
}

/* Category card variant tints */
.pe-card--style1 .pe-card__badge { background: color-mix(in srgb, var(--theme-primary) 15%, white); }
.pe-card--style2 .pe-card__badge { background: color-mix(in srgb, #7ecaf6 40%, var(--color-primary-light)); color: #1a6fa8; }
.pe-card--style3 .pe-card__badge { background: color-mix(in srgb, #7bd0c1 40%, var(--color-primary-light)); color: #1a7a6a; }
.pe-card--style4 .pe-card__badge { background: color-mix(in srgb, #c75b9b 30%, var(--color-primary-light)); }
.pe-card--style5 .pe-card__badge { background: color-mix(in srgb, #ae85ca 30%, var(--color-primary-light)); color: #6b3d8a; }
.pe-card--style6 .pe-card__badge { background: color-mix(in srgb, #8499e7 30%, var(--color-primary-light)); color: #3d4fa8; }
.pe-card--style9 .pe-card__badge { background: var(--gradient-cta); color: #fff; }

.pe-card--ticket .pe-card__price {
	font-family: var(--font-display);
	font-size: var(--font-size-2xl);
	font-weight: 700;
	color: var(--theme-primary);
	margin: var(--space-sm) 0 var(--space-md);
}

.pe-card--link {
	display: block;
	color: inherit;
	text-decoration: none;
}

.pe-card--link:hover {
	color: inherit;
}

/* Section header */
.pe-section-header {
	text-align: center;
	margin-bottom: var(--space-xl);
}

.pe-section-header__title {
	margin-bottom: var(--space-sm);
}

.pe-section-header__subtitle {
	color: var(--color-text-muted);
	font-size: var(--font-size-lg);
	max-width: 36rem;
	margin-inline: auto;
}

.pe-section-header__action {
	margin-top: var(--space-md);
}

/* News banner */
.pe-news-banner {
	display: block;
	background: var(--gradient-banner);
	color: #fff;
	border-radius: var(--radius-lg);
	padding: var(--space-lg) var(--space-xl);
	margin-bottom: var(--space-xl);
	box-shadow: var(--shadow-md);
	animation: pe-slide-in 0.5s ease-out;
}

.pe-news-banner:hover {
	color: #fff;
	transform: translateY(-2px);
	box-shadow: var(--shadow-lg);
	transition: transform var(--transition-base), box-shadow var(--transition-base);
}

.pe-news-banner__label {
	font-family: var(--font-display);
	font-weight: 700;
	font-size: var(--font-size-sm);
	text-transform: uppercase;
	letter-spacing: 0.08em;
	opacity: 0.9;
	margin-bottom: var(--space-xs);
}

.pe-news-banner__content {
	font-size: var(--font-size-lg);
}

@keyframes pe-slide-in {
	from { opacity: 0; transform: translateY(-12px); }
	to { opacity: 1; transform: translateY(0); }
}

/* Countdown */
.pe-countdown {
	text-align: center;
}

.pe-countdown__active {
	display: block;
}

.pe-countdown__finished {
	display: none;
}

.pe-countdown.is-finished .pe-countdown__active {
	display: none;
}

.pe-countdown.is-finished .pe-countdown__finished {
	display: block;
}

.pe-countdown:not(.is-finished) .pe-countdown__finished {
	display: none;
}

.pe-countdown__label {
	font-family: var(--font-display);
	font-size: var(--font-size-lg);
	color: var(--color-text-muted);
	margin-bottom: var(--space-lg);
}

.pe-countdown__grid {
	display: flex;
	justify-content: center;
	gap: var(--space-md);
	flex-wrap: wrap;
}

.pe-countdown__unit {
	background: var(--color-surface);
	border-radius: var(--radius-lg);
	padding: var(--space-lg) var(--space-xl);
	min-width: 6rem;
	box-shadow: var(--shadow-card);
	border: 2px solid var(--color-primary-light);
}

.pe-countdown__value {
	display: block;
	font-family: var(--font-display);
	font-size: var(--font-size-3xl);
	font-weight: 700;
	color: var(--theme-primary);
	line-height: 1;
}

.pe-countdown__name {
	display: block;
	font-size: var(--font-size-xs);
	text-transform: uppercase;
	letter-spacing: 0.1em;
	color: var(--color-text-muted);
	margin-top: var(--space-sm);
}

.pe-countdown__caption {
	margin-top: var(--space-lg);
	color: var(--color-text-muted);
	font-size: var(--font-size-sm);
}

.pe-countdown__finished {
	position: relative;
	overflow: hidden;
	padding: var(--space-xl) var(--space-lg);
	border-radius: var(--radius-lg);
	background: linear-gradient(145deg, var(--color-surface) 0%, color-mix(in srgb, var(--theme-primary) 8%, var(--color-surface)) 100%);
	border: 2px solid var(--color-primary-light);
	box-shadow: var(--shadow-card);
}

.pe-countdown__finished-emoji {
	font-size: 3rem;
	line-height: 1;
	margin-bottom: var(--space-md);
	animation: pe-countdown-pop 0.6s cubic-bezier(0.34, 1.56, 0.64, 1) both;
}

.pe-countdown__finished-title {
	font-family: var(--font-display);
	font-size: var(--font-size-xl);
	font-weight: 700;
	color: var(--theme-primary);
	margin-bottom: var(--space-sm);
	animation: pe-countdown-fade-up 0.5s ease 0.15s both;
}

.pe-countdown__finished-message {
	color: var(--color-text-muted);
	font-size: var(--font-size-base);
	line-height: 1.6;
	animation: pe-countdown-fade-up 0.5s ease 0.3s both;
}

.pe-countdown__confetti {
	position: absolute;
	inset: 0;
	pointer-events: none;
	overflow: hidden;
}

.pe-countdown__confetti-piece {
	position: absolute;
	top: -12px;
	left: var(--x);
	width: 8px;
	height: 12px;
	border-radius: 2px;
	opacity: 0;
	animation: pe-countdown-confetti-fall var(--duration) ease-in var(--delay) forwards;
	transform: rotate(var(--rotation));
}

@keyframes pe-countdown-pop {
	from { opacity: 0; transform: scale(0.4); }
	to { opacity: 1; transform: scale(1); }
}

@keyframes pe-countdown-fade-up {
	from { opacity: 0; transform: translateY(12px); }
	to { opacity: 1; transform: translateY(0); }
}

@keyframes pe-countdown-confetti-fall {
	0% {
		opacity: 1;
		transform: translateY(0) rotate(0deg);
	}
	100% {
		opacity: 0;
		transform: translateY(220px) rotate(var(--rotation));
	}
}

/* Forms */
.pe-field {
	margin-bottom: var(--space-md);
}

.pe-field label {
	display: block;
	font-weight: 600;
	font-size: var(--font-size-sm);
	margin-bottom: var(--space-xs);
}

.pe-input,
.pe-textarea,
.pe-select {
	width: 100%;
	padding: 0.75em 1em;
	border: 2px solid var(--color-border);
	border-radius: var(--radius-md);
	background: var(--color-surface);
	color: var(--color-text);
	transition: border-color var(--transition-fast);
}

.pe-input:focus,
.pe-textarea:focus,
.pe-select:focus {
	border-color: var(--theme-primary);
	outline: none;
}

.pe-textarea {
	min-height: 10rem;
	resize: vertical;
}

.pe-form-row {
	display: grid;
	gap: var(--space-md);
}

@media (min-width: 600px) {
	.pe-form-row--2 {
		grid-template-columns: 1fr 1fr;
	}
}

/* Alerts */
.pe-alert {
	padding: var(--space-md) var(--space-lg);
	border-radius: var(--radius-md);
	font-weight: 600;
}

.pe-alert--success {
	background: var(--color-success);
	color: #fff;
}

.pe-alert--error {
	background: var(--color-error);
	color: #fff;
}

/* Badge */
.pe-badge {
	display: inline-block;
	padding: 0.35em 0.85em;
	font-family: var(--font-display);
	font-size: var(--font-size-xs);
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	border-radius: var(--radius-pill);
	background: var(--gradient-cta);
	color: #fff;
}

/* Breadcrumb */
.pe-breadcrumb {
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-sm);
	font-size: var(--font-size-sm);
	color: var(--color-text-muted);
	margin-bottom: var(--space-lg);
}

.pe-breadcrumb a {
	color: var(--theme-primary);
}

.pe-breadcrumb__sep {
	opacity: 0.5;
}

/* Page hero (inner pages) */
.pe-page-hero {
	padding-block: var(--space-xl) var(--space-lg);
	text-align: center;
}

.pe-page-hero__title {
	margin-bottom: var(--space-sm);
}

.pe-page-hero__subtitle {
	color: var(--color-text-muted);
	font-size: var(--font-size-lg);
}

/* Transport list */
.pe-transport-list {
	display: flex;
	flex-direction: column;
	gap: var(--space-md);
	margin-top: var(--space-lg);
}

.pe-transport-item {
	display: flex;
	align-items: flex-start;
	gap: var(--space-md);
	padding: var(--space-md);
	background: var(--color-surface);
	border-radius: var(--radius-md);
	border: 1px solid var(--color-border);
}

.pe-transport-item i {
	color: var(--theme-primary);
	font-size: 1.25rem;
	margin-top: 0.15em;
	flex-shrink: 0;
}

/* Lightbox */
.pe-lightbox {
	position: fixed;
	inset: 0;
	z-index: 2000;
	background: rgba(26, 26, 46, 0.92);
	display: flex;
	align-items: center;
	justify-content: center;
	padding: var(--space-lg);
	opacity: 0;
	visibility: hidden;
	transition: opacity var(--transition-base), visibility var(--transition-base);
}

.pe-lightbox.is-open {
	opacity: 1;
	visibility: visible;
}

.pe-lightbox__img {
	max-width: 100%;
	max-height: 90vh;
	border-radius: var(--radius-md);
	box-shadow: var(--shadow-lg);
}

.pe-lightbox__close {
	position: absolute;
	top: var(--space-lg);
	right: var(--space-lg);
	background: var(--color-surface);
	border: none;
	width: 2.5rem;
	height: 2.5rem;
	border-radius: 50%;
	font-size: 1.5rem;
	line-height: 1;
	color: var(--color-text);
}

/* Mascotte / scroll top */
.pe-mascotte {
	position: fixed;
	bottom: var(--space-lg);
	right: var(--space-lg);
	z-index: 100;
	cursor: pointer;
	transition: transform var(--transition-fast);
	border: none;
	background: none;
	padding: 0;
}

.pe-mascotte:hover {
	transform: scale(1.08);
}

.pe-mascotte img {
	width: clamp(64px, 8vw, 96px);
	height: auto;
	filter: drop-shadow(var(--shadow-md));
}

@media (max-width: 900px) {
	.pe-mascotte {
		bottom: var(--space-md);
		right: var(--space-md);
	}

	.pe-mascotte img {
		width: 56px;
	}
}

/* Grid utilities */
.pe-grid {
	display: grid;
	gap: var(--space-lg);
}

.pe-grid--2 {
	grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
}

.pe-grid--3 {
	grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
}

.pe-grid--tickets {
	grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
}

/* Event agenda */
.pe-agenda-wrap {
	max-width: 48rem;
	margin-inline: auto;
}

.pe-agenda {
	display: flex;
	flex-direction: column;
	gap: var(--space-sm);
}

.pe-agenda__month {
	display: flex;
	align-items: center;
	gap: var(--space-md);
	margin-top: var(--space-lg);
	margin-bottom: var(--space-xs);
}

.pe-agenda__month:first-child {
	margin-top: 0;
}

.pe-agenda__month::before,
.pe-agenda__month::after {
	content: '';
	flex: 1;
	height: 1px;
	background: var(--color-border);
}

.pe-agenda__month-label {
	font-family: var(--font-display);
	font-size: var(--font-size-sm);
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	color: var(--theme-primary);
	white-space: nowrap;
}

.pe-agenda__item {
	display: grid;
	grid-template-columns: auto 1fr auto;
	align-items: center;
	gap: var(--space-md);
	padding: var(--space-md) var(--space-lg);
	background: var(--color-surface);
	border-radius: var(--radius-lg);
	border: 1px solid var(--color-border);
	box-shadow: var(--shadow-sm);
	color: inherit;
	text-decoration: none;
	transition: transform var(--transition-base), box-shadow var(--transition-base), border-color var(--transition-base);
}

.pe-agenda__item:hover {
	transform: translateX(4px);
	box-shadow: var(--shadow-card);
	border-color: color-mix(in srgb, var(--theme-primary) 35%, var(--color-border));
	color: inherit;
}

.pe-agenda__thumb {
	width: 4.5rem;
	height: 4.5rem;
	border-radius: var(--radius-md);
	overflow: hidden;
	flex-shrink: 0;
	background: var(--color-primary-light);
}

.pe-agenda__thumb img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.pe-agenda__info {
	min-width: 0;
}

.pe-agenda__title {
	font-size: var(--font-size-base);
	font-weight: 600;
	margin-bottom: 0.2em;
	line-height: 1.3;
}

.pe-agenda__meta {
	display: flex;
	align-items: center;
	gap: 0.4em;
	color: var(--color-text-muted);
	font-size: var(--font-size-sm);
	margin: 0;
}

.pe-agenda__meta i {
	color: var(--theme-primary);
	font-size: 0.85em;
}

.pe-agenda__action {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 2rem;
	height: 2rem;
	border-radius: 50%;
	background: var(--color-primary-light);
	color: var(--theme-primary);
	font-size: 0.85rem;
	transition: background var(--transition-base), color var(--transition-base);
}

.pe-agenda__item:hover .pe-agenda__action {
	background: var(--theme-primary);
	color: #fff;
}

@media (max-width: 540px) {
	.pe-agenda__item {
		grid-template-columns: auto 1fr;
		padding: var(--space-md);
	}

	.pe-agenda__action {
		display: none;
	}
}

/* Map embed */
.pe-map {
	border-radius: var(--radius-lg);
	overflow: hidden;
	box-shadow: var(--shadow-sm);
	aspect-ratio: 16 / 9;
	margin-top: var(--space-lg);
}

.pe-map iframe {
	width: 100%;
	height: 100%;
}

/* Empty state */
.pe-empty {
	text-align: center;
	padding: var(--space-2xl) var(--space-lg);
	color: var(--color-text-muted);
}

.pe-empty__icon {
	font-size: 3rem;
	margin-bottom: var(--space-md);
	opacity: 0.5;
}
