/**
 * Pro Calendar — Frontend Styles
 * All classes are namespaced with .pcal- to avoid conflicts.
 * Brand colours are sourced from CSS variables set inline by PCAL_Assets.
 */

/* ============================================================
 * Single event details card
 * ============================================================ */
.pcal-card {
	background: #ffffff;
	border: 1px solid #e3e6ea;
	border-left: 5px solid var(--pcal-primary, #0f4c3a);
	border-radius: 6px;
	padding: 18px 22px;
	margin: 0 0 1.8em;
	box-shadow: 0 1px 2px rgba(0,0,0,0.04);
	position: relative;
}
.pcal-card__row {
	display: grid;
	grid-template-columns: 160px 1fr;
	gap: 8px 22px;
	padding: 10px 0;
	border-top: 1px solid #f0f1f3;
	align-items: start;
}
.pcal-card__row:first-child { border-top: 0; padding-top: 0; }
.pcal-card__row:last-child  { padding-bottom: 0; }

.pcal-card__label {
	font-weight: 700;
	font-size: 0.9em;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	color: #5b6470;
	padding-top: 2px;
	padding-right: 6px;
	word-break: keep-all;
	overflow-wrap: normal;
}
.pcal-card__value {
	color: #1d2327;
	line-height: 1.5;
	min-width: 0;
	word-wrap: break-word;
}
.pcal-card__when {
	font-weight: 600;
	color: var(--pcal-primary, #0f4c3a);
}
.pcal-card__venue-name,
.pcal-card__org-name {
	font-weight: 700;
	font-size: 1.05em;
	color: var(--pcal-primary, #0f4c3a);
	text-decoration: none;
}
.pcal-card__venue-name:hover,
.pcal-card__org-name:hover { text-decoration: underline; }

.pcal-card__address {
	font-style: normal;
	color: #5b6470;
	line-height: 1.55;
	margin: 4px 0 0;
	font-size: 0.95em;
}
.pcal-card__contact {
	margin-top: 8px;
	font-size: 0.92em;
	color: #5b6470;
}
.pcal-card__contact a {
	color: var(--pcal-primary, #0f4c3a);
	text-decoration: none;
	font-weight: 500;
}
.pcal-card__contact a:hover { text-decoration: underline; }
.pcal-card__directions::before {
	content: "📍";
	margin-right: 4px;
	font-size: 0.9em;
}

/* Featured badge on single event card */
.pcal-card.is-featured {
	border-left-color: #d4a017;
}
.pcal-card__featured-badge {
	display: inline-block;
	background: #d4a017;
	color: #fff;
	font-size: 0.72em;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	padding: 3px 8px;
	border-radius: 3px;
	margin-bottom: 10px;
}

@media (max-width: 600px) {
	.pcal-card { padding: 14px 16px; }
	.pcal-card__row {
		grid-template-columns: 1fr;
		gap: 2px;
		padding: 8px 0;
	}
	.pcal-card__label { padding-top: 0; }
}

/* ============================================================
 * Archive wrap (calendar shortcode container)
 * ============================================================ */
.pcal-archive-wrap { padding: 12px 0; }
.pcal-archive-inner { max-width: 1180px; margin: 0 auto; }

/* ============================================================
 * Toolbar (search + view switcher)
 * ============================================================ */
.pcal-toolbar {
	display: flex; flex-wrap: wrap; gap: 12px;
	align-items: center; justify-content: space-between;
	background: #fff;
	border: 1px solid #e3e6ea;
	border-radius: 8px;
	padding: 10px 14px;
	margin-bottom: 16px;
}
.pcal-toolbar__search {
	display: flex; align-items: center; gap: 8px;
	flex: 1 1 380px; min-width: 0;
}
.pcal-toolbar__icon { color: #5b6470; font-size: 1.1em; }
.pcal-toolbar__input {
	flex: 1; padding: 9px 10px;
	border: 1px solid #d6d9de; border-radius: 4px;
	background: #fff; min-width: 0;
}
.pcal-btn {
	border: 0; cursor: pointer;
	padding: 9px 16px; border-radius: 4px;
	font-weight: 600; text-decoration: none;
	display: inline-block;
}
.pcal-btn--primary {
	background: var(--pcal-accent, #0f4c3a);
	color: #fff;
}
.pcal-btn--primary:hover { filter: brightness(0.92); color: #fff; }

.pcal-toolbar__views { display: flex; gap: 4px; }
.pcal-viewbtn {
	padding: 8px 14px;
	border: 1px solid #d6d9de; background: #fff;
	color: #5b6470; text-decoration: none;
	border-radius: 4px; font-weight: 500;
}
.pcal-viewbtn.is-active {
	background: var(--pcal-accent, #0f4c3a);
	color: #fff;
	border-color: var(--pcal-accent, #0f4c3a);
}

/* ============================================================
 * Search banner
 * ============================================================ */
.pcal-search-banner {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 12px;
	background: #fff8e1;
	border: 1px solid #f0c000;
	border-radius: 6px;
	padding: 10px 14px;
	margin: 0 0 14px;
	font-size: 0.95em;
	color: #5b4a00;
	flex-wrap: wrap;
}
.pcal-search-banner__clear {
	color: var(--pcal-primary, #0f4c3a);
	text-decoration: none;
	font-weight: 600;
	font-size: 0.9em;
}
.pcal-search-banner__clear:hover { text-decoration: underline; }

/* ============================================================
 * Month navigation
 * ============================================================ */
.pcal-monthnav {
	display: flex; align-items: center; gap: 8px;
	margin: 6px 0 14px;
}
.pcal-monthnav__arrow,
.pcal-monthnav__today {
	border: 1px solid #d6d9de; background: #fff;
	padding: 6px 12px; border-radius: 4px;
	text-decoration: none; color: #1d2327;
	line-height: 1;
}
.pcal-monthnav__arrow:hover,
.pcal-monthnav__today:hover { background: #f6f7f9; }
.pcal-monthnav__title {
	margin: 0 0 0 8px;
	font-size: 1.4em; font-weight: 700;
	color: var(--pcal-primary, #0f4c3a);
}

/* ============================================================
 * Big calendar grid
 * ============================================================ */
.pcal-bigcal {
	border: 1px solid #e3e6ea;
	border-radius: 6px; overflow: hidden;
	background: #fff;
}
.pcal-bigcal__head {
	display: grid; grid-template-columns: repeat(7, 1fr);
	background: #f6f7f9;
	border-bottom: 1px solid #e3e6ea;
}
.pcal-bigcal__dow {
	padding: 8px;
	text-align: center;
	font-size: 0.85em;
	font-weight: 700;
	color: #5b6470;
	text-transform: uppercase;
	letter-spacing: 0.04em;
}
.pcal-bigcal__grid {
	display: grid; grid-template-columns: repeat(7, 1fr);
	gap: 1px;
	background: #e3e6ea;
}
.pcal-bigcal__cell {
	background: #fff;
	min-height: 130px;
	padding: 8px;
	position: relative;
}
.pcal-bigcal__cell.is-empty { background: #fafafa; }
.pcal-bigcal__cell.is-today { background: #f0f7f4; }
.pcal-bigcal__num {
	font-size: 1em; font-weight: 600;
	color: #1d2327; margin-bottom: 6px;
}
.pcal-bigcal__event {
	margin: 4px 0 6px;
	line-height: 1.3;
}
.pcal-bigcal__event.is-featured {
	border-left: 3px solid #d4a017;
	padding-left: 6px;
	background: linear-gradient(to right, rgba(212,160,23,0.08), transparent 60%);
	border-radius: 3px;
}
.pcal-bigcal__event.is-featured .pcal-bigcal__title::before {
	content: "★ ";
	color: #d4a017;
}
.pcal-bigcal__time {
	font-size: 0.78em;
	color: #5b6470;
	font-weight: 500;
}
.pcal-bigcal__title {
	display: block;
	color: var(--pcal-event, #0f4c3a);
	font-weight: 600;
	font-size: 0.88em;
	text-decoration: none;
}
.pcal-bigcal__title:hover { text-decoration: underline; }

/* ============================================================
 * List view (compact + card)
 * ============================================================ */
.pcal-list { list-style: none; margin: 0; padding: 0; }
.pcal-list--empty {
	padding: 14px 16px;
	background: #f6f7f9;
	border-radius: 6px;
	color: #5b6470;
}

.pcal-list--compact .pcal-list__item {
	border-bottom: 1px solid #eef0f2;
	margin: 0;
}
.pcal-list--compact .pcal-list__item:last-child { border-bottom: 0; }

.pcal-list__link {
	display: flex; align-items: center; gap: 14px;
	padding: 12px 4px;
	text-decoration: none;
	color: inherit;
}
.pcal-list__link:hover { background: #fafbfc; }

.pcal-list__date {
	display: flex; flex-direction: column;
	align-items: center; justify-content: center;
	width: 52px; min-width: 52px;
	border: 1px solid #e3e6ea;
	border-radius: 6px;
	padding: 6px 0;
	background: #fff;
}
.pcal-list__day {
	font-size: 1.4em; font-weight: 700;
	color: var(--pcal-primary, #0f4c3a);
	line-height: 1;
}
.pcal-list__mon {
	font-size: 0.72em;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	color: #5b6470;
	margin-top: 3px;
}
.pcal-list__body { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.pcal-list__title {
	font-weight: 600;
	color: #1d2327;
	font-size: 1.02em;
}
.pcal-list__meta {
	color: #5b6470;
	font-size: 0.88em;
}

/* Featured marker on list rows */
.pcal-list__item.is-featured .pcal-list__date {
	border-color: #d4a017;
	background: #fffdf2;
}
.pcal-list__item.is-featured .pcal-list__day { color: #d4a017; }
.pcal-list__item.is-featured .pcal-list__title::before {
	content: "★ ";
	color: #d4a017;
}

/* Card grid layout */
.pcal-list--card {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
	gap: 18px;
}
.pcal-list--card .pcal-list__item { list-style: none; }
.pcal-list__card {
	background: #fff;
	border: 1px solid #e3e6ea;
	border-radius: 6px;
	overflow: hidden;
	display: flex; flex-direction: column;
	height: 100%;
	box-shadow: 0 1px 2px rgba(0,0,0,0.04);
}
.pcal-list__thumb img {
	display: block;
	width: 100%;
	height: 160px;
	object-fit: cover;
}
.pcal-list__cardbody {
	padding: 12px 14px;
	display: flex; flex-direction: column; gap: 4px;
}
.pcal-list__cardbody .pcal-list__title a {
	color: var(--pcal-primary, #0f4c3a);
	text-decoration: none;
}
.pcal-list__cardbody .pcal-list__title a:hover { text-decoration: underline; }
.pcal-list__when { color: #1d2327; font-size: 0.92em; font-weight: 600; }
.pcal-list__venue { color: #5b6470; font-size: 0.9em; }
.pcal-list__excerpt { color: #5b6470; font-size: 0.92em; margin: 6px 0 4px; }
.pcal-list__more {
	margin-top: auto;
	color: var(--pcal-primary, #0f4c3a);
	font-weight: 600;
	text-decoration: none;
	font-size: 0.92em;
	padding-top: 6px;
}
.pcal-list__more:hover { text-decoration: underline; }

/* ============================================================
 * Filter bar (standalone search shortcode)
 * ============================================================ */
.pcal-filterbar {
	background: #f6f7f9;
	border: 1px solid #e3e6ea;
	border-radius: 6px;
	padding: 12px 14px;
	margin: 0 0 1.4em;
}
.pcal-filterbar__form {
	display: flex; flex-wrap: wrap; gap: 8px;
	align-items: center;
}
.pcal-filterbar__search {
	flex: 1 1 220px; min-width: 0;
	padding: 8px 10px;
	border: 1px solid #d6d9de;
	border-radius: 4px;
	background: #fff;
}
.pcal-filterbar__select {
	padding: 8px 10px;
	border: 1px solid #d6d9de;
	border-radius: 4px;
	background: #fff;
	min-width: 150px;
}
.pcal-filterbar__submit {
	background: var(--pcal-accent, #0f4c3a);
	color: #fff;
	border: 0;
	padding: 9px 18px;
	border-radius: 4px;
	cursor: pointer;
	font-weight: 600;
}
.pcal-filterbar__submit:hover { filter: brightness(0.92); }

/* ============================================================
 * Subscribe to calendar button
 * ============================================================ */
.pcal-subscribe {
	display: flex; align-items: center; gap: 12px;
	justify-content: flex-end;
	margin-top: 18px;
	flex-wrap: wrap;
}
.pcal-subscribe__btn {
	display: inline-block;
	padding: 8px 16px;
	background: #fff;
	border: 1px solid var(--pcal-accent, #0f4c3a);
	color: var(--pcal-accent, #0f4c3a);
	border-radius: 4px;
	text-decoration: none;
	font-weight: 600;
	font-size: 0.92em;
	white-space: nowrap;
}
.pcal-subscribe__btn:hover {
	background: var(--pcal-accent, #0f4c3a);
	color: #fff;
}
.pcal-subscribe__hint {
	color: #5b6470;
	font-size: 0.85em;
}
.pcal-credit {
	color: #8a94a3;
	font-size: 0.78em;
	margin-left: auto;
}
.pcal-credit a {
	color: #8a94a3;
	text-decoration: none;
}
.pcal-credit a:hover {
	color: var(--pcal-primary, #2972fa);
	text-decoration: underline;
}

/* ============================================================
 * Empty state
 * ============================================================ */
.pcal-empty {
	text-align: center;
	padding: 32px;
	color: #5b6470;
}
.pcal-archive__meta {
	color: var(--pcal-primary, #0f4c3a);
	font-size: 0.95em;
	margin: 4px 0 8px;
}

/* ============================================================
 * Mobile responsive overrides
 * ============================================================ */
@media (max-width: 720px) {
	.pcal-toolbar { flex-direction: column; align-items: stretch; }
	.pcal-toolbar__search { flex: 1 1 100%; }
	.pcal-toolbar__views  { justify-content: center; }
	.pcal-monthnav { flex-wrap: wrap; }
	.pcal-monthnav__title { flex-basis: 100%; margin: 6px 0 0; }
	.pcal-bigcal__cell { min-height: 70px; padding: 4px; }
	.pcal-bigcal__num  { font-size: 0.85em; }
	.pcal-bigcal__title { font-size: 0.78em; }
	.pcal-bigcal__time  { font-size: 0.7em; }
	.pcal-bigcal__dow   { font-size: 0.75em; padding: 6px 2px; }
}
@media (max-width: 600px) {
	.pcal-filterbar__select,
	.pcal-filterbar__search,
	.pcal-filterbar__submit { flex: 1 1 100%; }
	.pcal-subscribe { justify-content: center; margin-top: 16px; }
	.pcal-credit { margin-left: 0; flex-basis: 100%; text-align: center; margin-top: 6px; }
}

/* ============================================================
 * Recurring event indicator on calendar grid (1.2.0)
 * ============================================================ */
.pcal-bigcal__event.is-recurring .pcal-bigcal__title::before {
	content: "↻ ";
	opacity: 0.75;
	font-size: 0.9em;
}
.pcal-list__item.is-recurring .pcal-list__title::after {
	content: " ↻";
	opacity: 0.6;
	font-size: 0.85em;
	color: var(--pcal-primary, #0f4c3a);
}
/* 1.2.1: explicit inline glyph (in addition to ::after) so the recurring
   marker is visible even when ::after is suppressed by a theme reset. */
.pcal-list__recur {
	display: inline-block;
	margin-right: 4px;
	opacity: 0.7;
	color: var(--pcal-primary, #0f4c3a);
	font-size: 0.95em;
}

/* ============================================================
 * "This event recurs" banner on single event page (1.2.0)
 * ============================================================ */
.pcal-recur-banner {
	background: #f0f7f4;
	border: 1px solid #c6dfd2;
	border-left: 4px solid var(--pcal-primary, #0f4c3a);
	border-radius: 6px;
	padding: 12px 16px;
	margin: 0 0 1.2em;
	font-size: 0.95em;
}
.pcal-recur-banner__head {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px;
	color: #1d2327;
}
.pcal-recur-banner__icon {
	color: var(--pcal-primary, #0f4c3a);
	font-size: 1.3em;
	line-height: 1;
}
.pcal-recur-banner__rule {
	color: var(--pcal-primary, #0f4c3a);
	font-weight: 500;
}
.pcal-recur-banner__next {
	margin-top: 8px;
	color: #5b6470;
	font-size: 0.92em;
}
.pcal-recur-banner__nextlabel {
	font-weight: 600;
	margin-right: 6px;
}
.pcal-recur-banner__list {
	display: inline-flex;
	flex-wrap: wrap;
	gap: 4px 14px;
	margin: 0;
	padding: 0;
	list-style: none;
}
.pcal-recur-banner__list li {
	margin: 0;
}

/* ============================================================
 * Series management UI (1.3.0) — public month grid
 * ============================================================ */
.pcal-bigcal__event { position: relative; }
.pcal-bigcal__event.is-override::before {
	content: "✎ ";
	font-size: 0.85em;
	opacity: 0.75;
	color: var(--pcal-accent, #0f4c3a);
}

/* "⋯" toggle for touch users on the public grid (only rendered when
 * the viewer can edit_posts — see PCAL_Month_Grid). */
.pcal-ctx-toggle {
	position: absolute;
	top: 2px;
	right: 4px;
	background: transparent;
	border: 0;
	cursor: pointer;
	color: #5b6470;
	font-size: 1.05em;
	line-height: 1;
	padding: 2px 4px;
	opacity: 0;
	transition: opacity 0.15s ease;
}
.pcal-bigcal--editor .pcal-bigcal__event:hover .pcal-ctx-toggle,
.pcal-bigcal--editor .pcal-bigcal__event:focus-within .pcal-ctx-toggle {
	opacity: 1;
}
@media (pointer: coarse) {
	.pcal-bigcal--editor .pcal-ctx-toggle { opacity: 1; }
}
.pcal-ctx-toggle:hover { color: var(--pcal-primary, #0f4c3a); }

/* Right-click / touch menu */
.pcal-ctx {
	min-width: 200px;
	background: #fff;
	border: 1px solid #c6dfd2;
	box-shadow: 0 6px 18px rgba(0,0,0,0.12);
	border-radius: 6px;
	padding: 4px 0;
	font-size: 0.92em;
}
.pcal-ctx__item {
	display: block;
	width: 100%;
	text-align: left;
	background: transparent;
	border: 0;
	padding: 8px 14px;
	cursor: pointer;
	color: #1d2327;
	text-decoration: none;
	font: inherit;
}
.pcal-ctx__item:hover,
.pcal-ctx__item:focus {
	background: #f0f7f4;
	color: var(--pcal-primary, #0f4c3a);
	outline: none;
}

.pcal-bigcal__event.is-cancelled { opacity: 0.35; text-decoration: line-through; }

/* ============================================================
 * Week View (1.4.0)
 * ============================================================ */
.pcal-week {
	background: #fff;
	border: 1px solid #e0e6ea;
	border-radius: 6px;
	overflow: hidden;
	font-size: 0.92em;
}
.pcal-week__head,
.pcal-week__band {
	display: grid;
	grid-template-columns: 80px repeat(7, 1fr);
	border-bottom: 1px solid #e0e6ea;
}
.pcal-week__head { background: #f6f7f7; }
.pcal-week__gutter {
	padding: 8px 10px;
	color: #5b6470;
	font-size: 0.82em;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	border-right: 1px solid #e0e6ea;
	background: #f6f7f7;
}
.pcal-week__day-head {
	padding: 8px 10px;
	text-align: center;
	border-right: 1px solid #e0e6ea;
}
.pcal-week__day-head:last-child { border-right: 0; }
.pcal-week__day-head.is-today {
	background: #e6f4ea;
	color: var(--pcal-primary, #0f4c3a);
}
.pcal-week__dow {
	font-size: 0.78em;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	color: #5b6470;
}
.pcal-week__day-head.is-today .pcal-week__dow { color: var(--pcal-primary, #0f4c3a); }
.pcal-week__date-num { font-weight: 700; font-size: 1.2em; margin-right: 4px; }
.pcal-week__date-mon { color: #5b6470; font-size: 0.85em; }

.pcal-week__band-cell {
	padding: 4px 6px;
	border-right: 1px solid #e0e6ea;
	min-height: 28px;
	display: flex;
	flex-wrap: wrap;
	gap: 4px;
}
.pcal-week__band-cell:last-child { border-right: 0; }
.pcal-week__chip {
	display: inline-block;
	background: var(--pcal-primary, #0f4c3a);
	color: #fff;
	padding: 2px 8px;
	border-radius: 10px;
	font-size: 0.82em;
	text-decoration: none;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
	max-width: 100%;
	position: relative;
}
.pcal-week__chip:hover { background: var(--pcal-accent, #0f4c3a); }
.pcal-week__chip.is-recurring::before { content: "↻ "; opacity: 0.75; }
.pcal-week__chip.is-override::before  { content: "✎ "; opacity: 0.75; }

.pcal-week__grid {
	display: grid;
	grid-template-columns: 80px repeat(7, 1fr);
}
.pcal-week__gutter--hours {
	display: grid;
	grid-auto-rows: 32px;
	background: #fafbfb;
	padding: 0;
}
.pcal-week__hour-label {
	padding: 4px 8px;
	color: #5b6470;
	font-size: 0.78em;
	border-bottom: 1px solid #eef1f3;
	border-right: 1px solid #e0e6ea;
	text-align: right;
}
.pcal-week__col {
	display: grid;
	grid-auto-rows: 32px;
	border-right: 1px solid #e0e6ea;
	position: relative;
}
.pcal-week__col:last-child { border-right: 0; }
.pcal-week__col.is-today { background: #f5fbf7; }
.pcal-week__slot {
	border-bottom: 1px solid #f0f3f4;
}
.pcal-week__event {
	background: var(--pcal-primary, #0f4c3a);
	color: #fff;
	margin: 2px 4px;
	padding: 4px 8px;
	border-radius: 4px;
	font-size: 0.82em;
	overflow: hidden;
	display: flex;
	flex-direction: column;
	gap: 2px;
	position: relative;
	box-shadow: 0 1px 2px rgba(0,0,0,0.08);
}
.pcal-week__event-time { font-size: 0.85em; opacity: 0.85; }
.pcal-week__event-title {
	color: #fff;
	font-weight: 600;
	text-decoration: none;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}
.pcal-week__event-title:hover { text-decoration: underline; }
.pcal-week__event.is-recurring::before { content: "↻ "; opacity: 0.85; font-size: 0.85em; }
.pcal-week__event.is-override::before  { content: "✎ "; opacity: 0.85; font-size: 0.85em; }

@media (max-width: 760px) {
	.pcal-week__head,
	.pcal-week__band,
	.pcal-week__grid {
		grid-template-columns: 56px repeat(7, minmax(80px, 1fr));
	}
	.pcal-week { overflow-x: auto; }
}

/* ============================================================
 * Day View (1.4.0)
 * ============================================================ */
.pcal-day {
	background: #fff;
	border: 1px solid #e0e6ea;
	border-radius: 6px;
	padding: 18px 22px;
}
.pcal-day__header {
	display: flex;
	align-items: center;
	gap: 16px;
	padding-bottom: 14px;
	margin-bottom: 16px;
	border-bottom: 1px solid #e0e6ea;
}
.pcal-day__header.is-today { color: var(--pcal-primary, #0f4c3a); }
.pcal-day__date-num {
	font-size: 2.6em;
	font-weight: 700;
	line-height: 1;
	color: var(--pcal-primary, #0f4c3a);
}
.pcal-day__date-meta { display: flex; flex-direction: column; gap: 2px; }
.pcal-day__dow { font-weight: 600; font-size: 1.1em; }
.pcal-day__monyear { color: #5b6470; }
.pcal-day__today-badge {
	margin-left: auto;
	background: #e6f4ea;
	color: var(--pcal-primary, #0f4c3a);
	padding: 4px 12px;
	border-radius: 12px;
	font-size: 0.82em;
	font-weight: 600;
}
.pcal-day__list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 14px; }
.pcal-day__item {
	display: grid;
	grid-template-columns: 180px 1fr;
	gap: 18px;
	padding: 14px;
	border: 1px solid #e0e6ea;
	border-radius: 6px;
	background: #fff;
	position: relative;
}
.pcal-day__item.is-featured { border-left: 4px solid #d4a017; }
.pcal-day__item.is-override { border-left: 4px solid var(--pcal-accent, #0f4c3a); }
.pcal-day__time {
	font-weight: 600;
	color: var(--pcal-primary, #0f4c3a);
	font-size: 1.02em;
	white-space: nowrap;
	padding-right: 8px;
}
.pcal-day__title { margin: 0 0 6px; font-size: 1.15em; }
.pcal-day__title a { color: #1d2327; text-decoration: none; }
.pcal-day__title a:hover { text-decoration: underline; color: var(--pcal-primary, #0f4c3a); }
.pcal-day__badge { font-size: 0.85em; opacity: 0.7; margin-left: 4px; }
.pcal-day__venue, .pcal-day__organizer { color: #3c434a; font-size: 0.92em; margin-top: 2px; }
.pcal-day__excerpt { color: #5b6470; margin: 6px 0; font-size: 0.95em; }
.pcal-day__more {
	display: inline-block;
	margin-top: 4px;
	color: var(--pcal-event, #0f4c3a);
	font-weight: 600;
	text-decoration: none;
}
.pcal-day__more:hover { text-decoration: underline; }
.pcal-day__ctx { top: 8px; right: 8px; }

@media (max-width: 600px) {
	.pcal-day__item { grid-template-columns: 1fr; gap: 8px; }
}

/* ============================================================
 * Photo View (1.4.0)
 * ============================================================ */
.pcal-photo {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
	gap: 18px;
}
.pcal-photo__card {
	background: #fff;
	border: 1px solid #e0e6ea;
	border-radius: 8px;
	overflow: hidden;
	position: relative;
	transition: transform 0.18s ease, box-shadow 0.18s ease;
	display: flex;
	flex-direction: column;
}
.pcal-photo__card:hover {
	transform: translateY(-2px);
	box-shadow: 0 8px 22px rgba(0,0,0,0.08);
}
.pcal-photo__media {
	display: block;
	position: relative;
	aspect-ratio: 4 / 3;
	overflow: hidden;
	background: #f0f3f4;
}
@supports not (aspect-ratio: 4 / 3) {
	.pcal-photo__media {
		height: 0;
		padding-bottom: 75%;
	}
	.pcal-photo__media .pcal-photo__img {
		position: absolute;
		top: 0; left: 0;
	}
}
.pcal-photo__img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	transition: transform 0.4s ease;
}
.pcal-photo__card:hover .pcal-photo__img { transform: scale(1.04); }
.pcal-photo__date-badge {
	position: absolute;
	top: 10px;
	left: 10px;
	background: rgba(255,255,255,0.95);
	border-radius: 6px;
	padding: 4px 10px;
	display: inline-flex;
	flex-direction: column;
	align-items: center;
	min-width: 44px;
	box-shadow: 0 2px 6px rgba(0,0,0,0.12);
}
.pcal-photo__date-num { font-weight: 700; font-size: 1.2em; color: var(--pcal-primary, #0f4c3a); line-height: 1; }
.pcal-photo__date-mon { font-size: 0.7em; color: #5b6470; text-transform: uppercase; letter-spacing: 0.04em; }
.pcal-photo__body { padding: 14px 16px 16px; }
.pcal-photo__title { margin: 0 0 6px; font-size: 1.05em; }
.pcal-photo__title a { color: #1d2327; text-decoration: none; }
.pcal-photo__title a:hover { color: var(--pcal-primary, #0f4c3a); text-decoration: underline; }
.pcal-photo__badge { font-size: 0.82em; opacity: 0.7; margin-left: 4px; }
.pcal-photo__meta { color: #5b6470; font-size: 0.88em; }
.pcal-photo__card.is-featured { border-color: #d4a017; }
.pcal-photo__ctx { top: 10px; right: 10px; }

/* ============================================================
 * Front-end submission form (1.5.0)
 * ============================================================ */
.pcal-submit {
	background: #fff;
	border: 1px solid #e0e6ea;
	border-radius: 8px;
	padding: 22px 26px;
	max-width: 720px;
}
.pcal-submit--gated { text-align: center; padding: 32px; }

.pcal-submit__hint {
	color: #5b6470;
	font-size: 0.92em;
	margin: 0 0 16px;
	padding: 10px 14px;
	background: #f5fbf7;
	border-left: 3px solid var(--pcal-primary, #0f4c3a);
	border-radius: 4px;
}

.pcal-submit__flash {
	padding: 10px 14px;
	border-radius: 4px;
	margin: 0 0 16px;
	font-size: 0.95em;
}
.pcal-submit__flash--ok    { background: #e6f4ea; color: #1d6b3a; border-left: 3px solid #1d6b3a; }
.pcal-submit__flash--error { background: #fce8e6; color: #a50e0e; border-left: 3px solid #a50e0e; }
.pcal-submit__flash p { margin: 0; }

.pcal-submit__form { display: flex; flex-direction: column; gap: 14px; }
.pcal-submit__row { display: flex; flex-direction: column; gap: 6px; }
.pcal-submit__row label {
	font-weight: 600;
	color: #1d2327;
	font-size: 0.95em;
}
.pcal-submit__req { color: #a50e0e; }
.pcal-submit__row input[type="text"],
.pcal-submit__row input[type="date"],
.pcal-submit__row input[type="time"],
.pcal-submit__row textarea {
	width: 100%;
	padding: 8px 12px;
	border: 1px solid #c6dfd2;
	border-radius: 4px;
	font-size: 0.95em;
	font-family: inherit;
	box-sizing: border-box;
}
.pcal-submit__row input:focus,
.pcal-submit__row textarea:focus {
	outline: none;
	border-color: var(--pcal-primary, #0f4c3a);
	box-shadow: 0 0 0 2px rgba(15,76,58,0.15);
}
.pcal-submit__row input:disabled,
.pcal-submit__row textarea:disabled { background: #f6f7f7; color: #8b9499; }

.pcal-submit__row--inline { flex-direction: row; align-items: center; }
.pcal-submit__check {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	font-weight: 500 !important;
	cursor: pointer;
}
.pcal-submit__check input { margin: 0; }

.pcal-submit__grid {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: 14px;
}
@media (max-width: 600px) {
	.pcal-submit__grid { grid-template-columns: 1fr; }
}

.pcal-submit__actions {
	margin-top: 8px;
	display: flex;
	justify-content: flex-end;
}
.pcal-submit .pcal-btn {
	background: var(--pcal-primary, #0f4c3a);
	color: #fff;
	border: 0;
	padding: 10px 22px;
	border-radius: 4px;
	font-weight: 600;
	cursor: pointer;
	font-size: 0.95em;
}
.pcal-submit .pcal-btn:hover { background: var(--pcal-accent, #0f4c3a); }

/* ============================================================
 * 1.6.0.1: Theme byline suppression on single event pages.
 *
 * Most WordPress themes render the post author + publish date as
 * default post meta on every singular post. For Pro Calendar event
 * pages this is noise — the When/Where card already carries the real
 * event date, and the post author is irrelevant to the reader. We
 * hide the most common theme selectors when viewing a single
 * pcal_event. If your theme uses a different selector and the byline
 * still shows, add the selector to your child theme's CSS or let me
 * know which theme you're using.
 * ============================================================ */
body.single-pcal_event .entry-meta,
body.single-pcal_event .post-meta,
body.single-pcal_event .posted-on,
body.single-pcal_event .byline,
body.single-pcal_event .author.vcard,
body.single-pcal_event .entry-header .entry-meta,
body.single-pcal_event .entry-footer .posted-on,
body.single-pcal_event .post-meta-author,
body.single-pcal_event .post-meta-date,
body.single-pcal_event .meta-author,
body.single-pcal_event .meta-date,
body.single-pcal_event .entry-date,
body.single-pcal_event time.published,
body.single-pcal_event time.updated,
body.single-pcal_event .author-meta,
body.single-pcal_event .post__meta,
body.single-pcal_event header .post-info {
	display: none !important;
}

/* ============================================================
 * Custom-field filters (1.6.1)
 * ============================================================ */
.pcal-filters {
	background: #fff;
	border: 1px solid #e0e6ea;
	border-radius: 6px;
	padding: 14px 18px;
	margin: 0 0 18px;
}
.pcal-filters--empty { color: #5b6470; font-style: italic; }
.pcal-filters__form {
	display: flex;
	flex-wrap: wrap;
	gap: 12px 18px;
	align-items: flex-end;
}
.pcal-filters--stacked .pcal-filters__form {
	flex-direction: column;
	align-items: stretch;
}
.pcal-filters__row {
	display: flex;
	flex-direction: column;
	gap: 4px;
	min-width: 180px;
	flex: 1 1 auto;
}
.pcal-filters__row label {
	font-size: 0.82em;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	color: #5b6470;
}
.pcal-filters__row select {
	padding: 6px 10px;
	border: 1px solid #c6dfd2;
	border-radius: 4px;
	font-size: 0.95em;
	background: #fff;
	font-family: inherit;
}
.pcal-filters__row select:focus {
	outline: none;
	border-color: var(--pcal-primary, #0f4c3a);
	box-shadow: 0 0 0 2px rgba(15,76,58,0.15);
}
.pcal-filters__noopts { font-size: 0.92em; padding: 8px 0; }
.pcal-filters__actions {
	display: flex;
	align-items: center;
	gap: 12px;
	margin-left: auto;
}
.pcal-filters__reset {
	color: #5b6470;
	font-size: 0.9em;
	text-decoration: underline;
}
.pcal-filters__reset:hover { color: var(--pcal-primary, #0f4c3a); }
.pcal-filters .pcal-btn {
	background: var(--pcal-primary, #0f4c3a);
	color: #fff;
	border: 0;
	padding: 8px 18px;
	border-radius: 4px;
	font-weight: 600;
	cursor: pointer;
	font-size: 0.92em;
}
.pcal-filters .pcal-btn:hover { background: var(--pcal-accent, #0f4c3a); }

/* Active filter chips */
.pcal-cfchips {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	align-items: center;
}
.pcal-cfchips--compact {
	margin: 0 0 0 12px;
	font-size: 0.88em;
}
.pcal-cfchips--expanded {
	margin: 14px 0 18px;
	padding: 10px 14px;
	background: #f5fbf7;
	border: 1px solid #c6dfd2;
	border-radius: 6px;
}
.pcal-cfchips__label {
	font-weight: 600;
	color: var(--pcal-primary, #0f4c3a);
	margin-right: 4px;
	font-size: 0.92em;
}
.pcal-cfchip {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	background: var(--pcal-primary, #0f4c3a);
	color: #fff;
	padding: 3px 10px 3px 12px;
	border-radius: 14px;
	text-decoration: none;
	font-size: 0.88em;
	transition: background 0.15s ease;
}
.pcal-cfchip:hover {
	background: var(--pcal-accent, #0f4c3a);
	color: #fff;
}
.pcal-cfchip__field { font-weight: 600; }
.pcal-cfchip__value { font-weight: 400; }
.pcal-cfchip__x {
	font-size: 1.05em;
	margin-left: 2px;
	opacity: 0.85;
}
.pcal-cfchip:hover .pcal-cfchip__x { opacity: 1; }
.pcal-cfchip--clear {
	background: transparent;
	color: #a50e0e;
	border: 1px solid #f0c0c0;
}
.pcal-cfchip--clear:hover {
	background: #fce8e6;
	color: #a50e0e;
}

@media (max-width: 600px) {
	.pcal-filters__form { flex-direction: column; align-items: stretch; }
	.pcal-filters__actions { margin-left: 0; }
	.pcal-cfchips--compact { margin-left: 0; margin-top: 8px; }
}

/* ============================================================
 * RSVP form (2.0.0, restyled in 2.0.0.2 to match the When/Where card)
 * ============================================================ */
.pcal-rsvp {
	background: #ffffff;
	border: 1px solid #e3e6ea;
	border-left: 5px solid var(--pcal-primary, #0f4c3a);
	border-radius: 6px;
	padding: 18px 22px;
	margin: 0 0 1.8em;
	box-shadow: 0 1px 2px rgba(0,0,0,0.04);
	box-sizing: border-box;
	font-family: inherit;
	color: #1d2327;
	/* 2.0.0.6: NO inline width / max-width / display overrides.
	 * The form is now mounted as a sibling of .pcal-card inside the same
	 * constrained-layout parent (e.g. .entry-content.is-layout-constrained
	 * on block themes), so the WordPress :where() constraint applies
	 * naturally. Forcing width:100%!important here is what made earlier
	 * builds escape the constrained column. */
}

/* 2.0.0.3: Blocksy injects flow-spacing on every direct child of
 * .entry-content (`--block-spacing`, `.ct-content > * + *`, etc.).
 * Neutralise that on every descendant of the RSVP block so the inner
 * stack doesn't grow 40-50px white gaps between gauge / tickets / form. */
.pcal-rsvp,
.pcal-rsvp * {
	--theme-content-spacing: 0;
	--block-spacing: 0;
}
.pcal-rsvp > * { margin-top: 0 !important; }
.pcal-rsvp > * + * { margin-top: 0 !important; }
.pcal-rsvp p { margin: 0 !important; }
.pcal-rsvp__heading {
	margin: 0 0 14px !important;
	padding: 0 0 10px !important;
	border-bottom: 1px solid #f0f1f3;
	font-size: 1.05em;
	font-weight: 700;
	color: #1d2327;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	line-height: 1.3;
}
.pcal-rsvp__flash {
	padding: 10px 14px;
	border-radius: 4px;
	margin: 0 0 14px;
	font-size: 0.95em;
}
.pcal-rsvp__flash--ok    { background: #e6f4ea; color: #1d6b3a; border-left: 3px solid #1d6b3a; }
.pcal-rsvp__flash--error { background: #fce8e6; color: #a50e0e; border-left: 3px solid #a50e0e; }
.pcal-rsvp__flash p { margin: 0; }

.pcal-rsvp__gauge {
	background: #f5fbf7;
	border: 1px solid #c6dfd2;
	border-radius: 4px;
	padding: 8px 12px !important;
	margin: 0 0 14px !important;
}
.pcal-rsvp__gauge-bar {
	background: #e1ebe6;
	border-radius: 3px;
	height: 6px;
	overflow: hidden;
}
.pcal-rsvp__gauge-fill {
	background: var(--pcal-primary, #0f4c3a);
	height: 100%;
	transition: width 0.3s ease;
}
.pcal-rsvp__gauge-label {
	margin-top: 5px;
	font-size: 0.82em;
	color: var(--pcal-primary, #0f4c3a);
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: 0.04em;
}

.pcal-rsvp__tickets {
	display: flex;
	flex-direction: column;
	margin: 0 0 14px !important;
	padding: 0 !important;
}
.pcal-rsvp__ticket {
	display: grid !important;
	grid-template-columns: 1fr 90px !important;
	gap: 14px !important;
	padding: 10px 0 !important;
	margin: 0 !important;
	border-top: 1px solid #f0f1f3;
	align-items: center;
	background: transparent;
	border-left: 0;
	border-right: 0;
	border-bottom: 0;
	border-radius: 0;
}
.pcal-rsvp__ticket:first-child { border-top: 0 !important; padding-top: 0 !important; }
.pcal-rsvp__ticket:last-child  { padding-bottom: 0 !important; }
.pcal-rsvp__ticket.is-soldout {
	opacity: 0.6;
}
.pcal-rsvp__ticket-title {
	font-weight: 600;
	color: #1d2327;
	font-size: 1em;
	line-height: 1.3;
}
.pcal-rsvp__ticket-desc {
	color: #5b6470;
	font-size: 0.9em;
	margin-top: 2px;
}
.pcal-rsvp__ticket-meta {
	color: #5b6470;
	font-size: 0.82em;
	margin-top: 3px;
}
.pcal-rsvp__ticket-qty select {
	width: 100%;
	padding: 6px 8px;
	border: 1px solid #c6dfd2;
	border-radius: 4px;
	font-size: 0.95em;
	background: #fff;
	color: #1d2327;
}
.pcal-rsvp__ticket.is-soldout .pcal-rsvp__ticket-qty select {
	background: #f0f0f0;
	cursor: not-allowed;
}

.pcal-rsvp__person {
	display: grid !important;
	grid-template-columns: 1fr 1fr;
	gap: 12px 18px !important;
	padding-top: 14px !important;
	margin: 4px 0 0 0 !important;
	border-top: 1px solid #f0f1f3;
}
.pcal-rsvp__row {
	display: flex;
	flex-direction: column;
	gap: 4px;
	min-width: 0;
}
.pcal-rsvp__row:first-child { grid-column: 1 / -1; } /* Name field full width */
.pcal-rsvp__row label {
	font-weight: 700;
	color: #5b6470;
	font-size: 0.82em;
	text-transform: uppercase;
	letter-spacing: 0.04em;
}
.pcal-rsvp__req { color: #a50e0e; margin-left: 2px; }
.pcal-rsvp__row input[type="text"],
.pcal-rsvp__row input[type="email"],
.pcal-rsvp__row input[type="tel"] {
	display: block;
	width: 100%;
	padding: 9px 12px;
	border: 1px solid #c6dfd2;
	border-radius: 4px;
	background: #ffffff;
	color: #1d2327;
	font-size: 0.95em;
	line-height: 1.4;
	box-sizing: border-box;
	font-family: inherit;
	appearance: none;
	-webkit-appearance: none;
}
.pcal-rsvp__row input::placeholder { color: #98a2a8; }
.pcal-rsvp__row input:focus {
	outline: none;
	border-color: var(--pcal-primary, #0f4c3a);
	box-shadow: 0 0 0 2px rgba(15,76,58,0.15);
}

.pcal-rsvp__actions {
	margin-top: 16px !important;
	padding-top: 14px !important;
	border-top: 1px solid #f0f1f3;
	display: flex;
	justify-content: flex-end;
}
.pcal-rsvp .pcal-btn {
	background: var(--pcal-primary, #0f4c3a);
	color: #fff;
	border: 0;
	padding: 9px 26px !important;
	border-radius: 4px;
	font-weight: 600;
	cursor: pointer;
	font-size: 0.98em;
	line-height: 1.2 !important;
	height: auto !important;
	min-height: 0 !important;
	text-transform: none;
	letter-spacing: normal;
}
.pcal-rsvp .pcal-btn:hover { background: var(--pcal-accent, #0f4c3a); }
.pcal-rsvp .pcal-btn:disabled {
	background: #c0c8cd;
	cursor: not-allowed;
}

@media (max-width: 600px) {
	.pcal-rsvp { padding: 14px 16px; }
	.pcal-rsvp__ticket {
		grid-template-columns: 1fr;
		gap: 8px;
	}
	.pcal-rsvp__ticket-qty { width: 100%; }
	.pcal-rsvp__person { grid-template-columns: 1fr; }
	.pcal-rsvp__row:first-child { grid-column: auto; }
	.pcal-rsvp__actions { justify-content: stretch; }
	.pcal-rsvp__actions .pcal-btn { width: 100%; }
}

/* ============================================================
 * 2.1.0 — Paid ticket price pill
 * ============================================================ */
.pcal-rsvp__ticket-title {
	display: flex;
	align-items: baseline;
	gap: 10px;
	flex-wrap: wrap;
}
.pcal-rsvp__ticket-price {
	display: inline-block;
	font-size: 0.92em;
	font-weight: 700;
	color: var(--pcal-primary, #0f4c3a);
	background: #f5fbf7;
	border: 1px solid #c6dfd2;
	padding: 2px 8px;
	border-radius: 999px;
	white-space: nowrap;
}
.pcal-rsvp__ticket-price--free {
	color: #5b6470;
	background: #f0f1f3;
	border-color: #e3e6ea;
}

/* ============================================================
 * 2.1.1 — Upcoming Events compact add-on
 * Used by [pro_calendar_list compact="1"], native widget, and block.
 * Scoped under .pcal-upcoming so it never bleeds into the existing
 * .pcal-list shortcode CSS.
 * ============================================================ */
.pcal-upcoming {
	font-family: inherit;
	color: #1d2327;
	margin: 0 0 1.4em;
}
.pcal-upcoming__heading {
	font-size: 1.05em;
	font-weight: 700;
	color: var(--pcal-primary, #0f4c3a);
	margin: 0 0 10px;
	padding: 0 0 6px;
	border-bottom: 1px solid #e3e6ea;
	text-transform: uppercase;
	letter-spacing: 0.04em;
}
.pcal-upcoming__list {
	list-style: none;
	margin: 0;
	padding: 0;
}

/* ---- Compact mode (matches sidebar/widget aesthetic) ---- */
.pcal-upcoming--compact .pcal-upcoming__item {
	display: flex;
	align-items: flex-start;
	gap: 12px;
	padding: 10px 0;
	border-top: 1px solid #f0f1f3;
	margin: 0;
}
.pcal-upcoming--compact .pcal-upcoming__item:first-child {
	border-top: 0;
	padding-top: 4px;
}
.pcal-upcoming--compact .pcal-upcoming__pill {
	flex: 0 0 auto;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	min-width: 44px;
	padding: 4px 6px;
	background: #f5fbf7;
	border: 1px solid #c6dfd2;
	border-radius: 6px;
	line-height: 1.1;
}
.pcal-upcoming--compact .pcal-upcoming__pill-day {
	font-size: 1.25em;
	font-weight: 700;
	color: var(--pcal-primary, #0f4c3a);
}
.pcal-upcoming--compact .pcal-upcoming__pill-mon {
	font-size: 0.7em;
	font-weight: 700;
	color: #5b6470;
	letter-spacing: 0.06em;
	margin-top: 2px;
}
.pcal-upcoming--compact .pcal-upcoming__thumb {
	flex: 0 0 auto;
	display: block;
	width: 40px;
	height: 40px;
	overflow: hidden;
	border-radius: 4px;
}
.pcal-upcoming--compact .pcal-upcoming__thumb img {
	width: 40px;
	height: 40px;
	object-fit: cover;
	display: block;
}
.pcal-upcoming--compact .pcal-upcoming__body {
	flex: 1 1 auto;
	min-width: 0;
}
.pcal-upcoming--compact .pcal-upcoming__title {
	display: block;
	font-weight: 600;
	color: #1d2327;
	text-decoration: none;
	line-height: 1.3;
	word-wrap: break-word;
}
.pcal-upcoming--compact .pcal-upcoming__title:hover {
	color: var(--pcal-primary, #0f4c3a);
	text-decoration: underline;
}
.pcal-upcoming--compact .pcal-upcoming__time {
	font-size: 0.85em;
	color: #5b6470;
	margin-top: 2px;
}

/* ---- Classic mode (used when compact=false) ---- */
.pcal-upcoming--classic .pcal-upcoming__item {
	padding: 8px 0;
	border-top: 1px solid #f0f1f3;
}
.pcal-upcoming--classic .pcal-upcoming__when {
	font-size: 0.9em;
	color: #5b6470;
	margin-bottom: 2px;
}
.pcal-upcoming--classic .pcal-upcoming__title {
	display: block;
	font-weight: 600;
	color: var(--pcal-primary, #0f4c3a);
	text-decoration: none;
}

/* ---- Empty state ---- */
.pcal-upcoming__empty {
	color: #5b6470;
	margin: 0;
	padding: 8px 0;
}

/* ---- Footer "View Calendar" link ---- */
.pcal-upcoming__footer {
	margin: 12px 0 0;
	padding-top: 10px;
	border-top: 1px solid #e3e6ea;
}
.pcal-upcoming__viewall {
	display: inline-block;
	font-size: 0.92em;
	font-weight: 600;
	color: var(--pcal-primary, #0f4c3a);
	text-decoration: none;
}
.pcal-upcoming__viewall:hover {
	text-decoration: underline;
}

/* ============================================================
 * 2.2.0 — Door scanner [pro_calendar_checkin]
 * ============================================================ */
.pcal-scanner {
	max-width: 480px;
	margin: 0 auto;
	font-family: inherit;
	color: #1d2327;
}
.pcal-scanner--locked {
	background: #fff8e1;
	border: 1px solid #d4a017;
	border-radius: 6px;
	padding: 14px 18px;
}
.pcal-scanner__cam {
	position: relative;
	background: #000;
	border-radius: 6px;
	overflow: hidden;
	aspect-ratio: 4 / 3;
	margin-bottom: 12px;
}
.pcal-scanner__cam video {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}
.pcal-scanner__hint {
	position: absolute;
	left: 0; right: 0; bottom: 0;
	padding: 8px 12px;
	background: rgba(0,0,0,0.55);
	color: #fff;
	font-size: 0.9em;
	text-align: center;
}
.pcal-scanner__manual {
	display: flex;
	gap: 8px;
	align-items: center;
	background: #fff;
	border: 1px solid #e3e6ea;
	border-radius: 6px;
	padding: 10px 12px;
	margin-bottom: 12px;
}
.pcal-scanner__manual label {
	flex: 0 0 auto;
	font-size: 0.85em;
	color: #5b6470;
	font-weight: 600;
}
.pcal-scanner__manual input {
	flex: 1 1 auto;
	font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	padding: 8px 10px;
	border: 1px solid #c6dfd2;
	border-radius: 4px;
	min-width: 0;
}
.pcal-scanner__result {
	background: #fff;
	border: 1px solid #e3e6ea;
	border-radius: 6px;
	padding: 14px 16px;
}

/* 1.1.0: Sticky event highlight in month grid. */
.pcal-bigcal__event.is-sticky {
	background: #fff8e1;
	border-left: 3px solid #f59e0b;
	padding-left: 6px;
	font-weight: 600;
}
.pcal-bigcal__event.is-sticky::before {
	content: "📌";
	font-size: 0.85em;
	margin-right: 4px;
}

/* 1.1.0: Embedded venue map. */
.pcal-card__map iframe {
	display: block;
	max-width: 100%;
}
