/* ==========================================================================
   com_gather — front-end styles
   Self-contained and mobile-first, so it looks consistent on any Joomla
   template (Cassiopeia/Bootstrap or YOOtheme/UIkit) without depending on the
   active template's CSS framework. Everything is scoped under .com-gather.
   ========================================================================== */

.com-gather {
	--cg-accent: #2563eb;
	--cg-accent-dark: #1d4ed8;
	--cg-danger: #dc2626;
	--cg-ink: #1f2937;
	--cg-muted: #6b7280;
	--cg-line: #e5e7eb;
	--cg-soft: #f9fafb;
	--cg-card: #ffffff;
	--cg-radius: 10px;
	--cg-gap: 1rem;

	max-width: 720px;
	margin-inline: auto;
	color: var(--cg-ink);
	font-size: 1rem;
	line-height: 1.5;
	-webkit-text-size-adjust: 100%;
}

.com-gather *,
.com-gather *::before,
.com-gather *::after {
	box-sizing: border-box;
}

.com-gather h2 {
	font-size: 1.6rem;
	line-height: 1.2;
	margin: 0 0 .75rem;
}

.com-gather h3 {
	font-size: 1.15rem;
	margin: 1.5rem 0 .75rem;
}

.com-gather a {
	color: var(--cg-accent);
}

.com-gather .com-gather-note {
	color: var(--cg-muted);
	margin: 0 0 1rem;
}

.com-gather .com-gather-empty,
.com-gather .com-gather-full {
	background: var(--cg-soft);
	border: 1px solid var(--cg-line);
	border-radius: var(--cg-radius);
	padding: 1rem 1.25rem;
	color: var(--cg-muted);
	text-align: center;
}

.com-gather .com-gather-range {
	font-weight: 600;
	color: var(--cg-muted);
	margin: 0 0 1.25rem;
}

.com-gather .com-gather-cat-desc {
	margin: 0 0 1.5rem;
	color: var(--cg-ink);
}

.com-gather .com-gather-cat-desc > :first-child {
	margin-top: 0;
}

.com-gather .com-gather-cat-desc > :last-child {
	margin-bottom: 0;
}

.com-gather .com-gather-cat-img {
	display: block;
	width: 100%;
	max-height: 320px;
	object-fit: cover;
	border-radius: var(--cg-radius);
	margin: 0 0 1rem;
}

/* --------------------------------------------------------------------------
   Forms — labels stacked above full-width inputs (standard, mobile-first)
   -------------------------------------------------------------------------- */
.com-gather form {
	margin: 0;
}

.com-gather fieldset {
	border: 1px solid var(--cg-line);
	border-radius: var(--cg-radius);
	padding: 1.25rem;
	margin: 0 0 1.25rem;
	min-width: 0;
}

.com-gather legend {
	font-weight: 600;
	font-size: 1.05rem;
	padding: 0 .4rem;
	width: auto;
	margin-left: -.4rem;
}

.com-gather .com-gather-field {
	margin-bottom: 1rem;
}

.com-gather .com-gather-field:last-child {
	margin-bottom: 0;
}

.com-gather .com-gather-field label {
	display: block;
	font-weight: 600;
	font-size: .9rem;
	margin-bottom: .35rem;
}

.com-gather .com-gather-field input[type="text"],
.com-gather .com-gather-field input[type="email"],
.com-gather .com-gather-field input[type="tel"],
.com-gather .com-gather-field input[type="number"],
.com-gather .com-gather-field input[type="time"],
.com-gather .com-gather-field input[type="date"],
.com-gather .com-gather-field textarea,
.com-gather .com-gather-field select {
	display: block;
	width: 100%;
	padding: .6rem .75rem;
	font-size: 1rem;
	line-height: 1.4;
	color: var(--cg-ink);
	background-color: #fff;
	border: 1px solid #cbd5e1;
	border-radius: 8px;
	transition: border-color .15s ease, box-shadow .15s ease;
}

.com-gather .com-gather-field textarea {
	min-height: 5.5rem;
	resize: vertical;
}

.com-gather .com-gather-field input:focus,
.com-gather .com-gather-field textarea:focus,
.com-gather .com-gather-field select:focus {
	outline: none;
	border-color: var(--cg-accent);
	box-shadow: 0 0 0 3px rgba(37, 99, 235, .15);
}

.com-gather .com-gather-field small {
	display: block;
	margin-top: .35rem;
	font-size: .8rem;
	color: var(--cg-muted);
}

.com-gather .com-gather-field label span[aria-hidden="true"] {
	color: var(--cg-danger);
}

/* Honeypot — visually and from-AT hidden, but present in the DOM */
.com-gather .com-gather-hp {
	position: absolute !important;
	left: -9999px !important;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

/* Google Places search box */
.com-gather .com-gather-places-box {
	width: 100%;
}
.com-gather .com-gather-places-box gmp-place-autocomplete {
	width: 100%;
	display: block;
}

/* --------------------------------------------------------------------------
   Buttons — touch-friendly, full-width on phones then inline
   -------------------------------------------------------------------------- */
.com-gather .com-gather-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: .4rem;
	width: 100%;
	padding: .7rem 1.1rem;
	margin: 0;
	font-size: 1rem;
	font-weight: 600;
	line-height: 1.2;
	text-align: center;
	text-decoration: none;
	color: var(--cg-ink);
	background: #fff;
	border: 1px solid #cbd5e1;
	border-radius: 8px;
	cursor: pointer;
	transition: background-color .15s ease, border-color .15s ease, transform .05s ease;
}

.com-gather .com-gather-btn + .com-gather-btn {
	margin-top: .6rem;
}

.com-gather .com-gather-btn:hover {
	border-color: var(--cg-muted);
	text-decoration: none;
}

.com-gather .com-gather-btn:active {
	transform: translateY(1px);
}

.com-gather .com-gather-btn--primary {
	color: #fff;
	background: var(--cg-accent);
	border-color: var(--cg-accent);
}

.com-gather .com-gather-btn--primary:hover {
	background: var(--cg-accent-dark);
	border-color: var(--cg-accent-dark);
}

.com-gather .com-gather-btn--ghost {
	background: transparent;
	color: var(--cg-accent);
	border-color: var(--cg-accent);
}

.com-gather .com-gather-btn--ghost:hover {
	background: rgba(37, 99, 235, .06);
}

.com-gather .com-gather-btn--danger {
	color: #fff;
	background: var(--cg-danger);
	border-color: var(--cg-danger);
}

.com-gather .com-gather-btn--danger-ghost {
	width: auto;
	color: var(--cg-danger);
	background: transparent;
	border-color: #f0b4b4;
}

.com-gather .com-gather-btn--danger-ghost:hover {
	background: rgba(220, 38, 38, .06);
	border-color: var(--cg-danger);
}

.com-gather .com-gather-btn--flash {
	color: #fff;
	background: var(--cg-danger);
	border-color: var(--cg-danger);
	font-weight: 700;
}

.com-gather .com-gather-btn--flash:hover {
	background: #b91c1c;
	border-color: #b91c1c;
}

.com-gather .com-gather-btn--disabled,
.com-gather .com-gather-btn[disabled] {
	opacity: .55;
	pointer-events: none;
}

/* --------------------------------------------------------------------------
   Event detail — heading + meta list
   -------------------------------------------------------------------------- */
.com-gather .com-gather-week-detail__head {
	margin: 0 0 1.25rem;
}

.com-gather .com-gather-week-detail__title {
	margin: 0;
}

.com-gather .com-gather-week-detail__date {
	margin: .3rem 0 0;
	color: var(--cg-muted);
	font-weight: 500;
}

.com-gather .com-gather-meta {
	margin: 0 0 1.5rem;
	border: 1px solid var(--cg-line);
	border-radius: var(--cg-radius);
	overflow: hidden;
}

.com-gather .com-gather-meta dt {
	font-size: .75rem;
	letter-spacing: .03em;
	text-transform: uppercase;
	color: var(--cg-muted);
	padding: .75rem 1rem .15rem;
}

.com-gather .com-gather-meta dd {
	margin: 0;
	padding: 0 1rem .75rem;
	font-weight: 500;
	border-bottom: 1px solid var(--cg-line);
}

.com-gather .com-gather-meta dd:last-child {
	border-bottom: 0;
}

.com-gather .com-gather-maps {
	display: inline-block;
	margin-left: .35rem;
	font-size: .85rem;
	font-weight: 600;
	white-space: nowrap;
}

/* Claim-hosting call to action */
.com-gather .com-gather-claim-cta {
	margin: 0 0 1.5rem;
	padding: 1.1rem 1.25rem;
	border: 1px dashed #cbd5e1;
	border-radius: var(--cg-radius);
	background: var(--cg-soft);
}

.com-gather .com-gather-claim-cta .com-gather-note {
	margin-top: 0;
}

/* Attendee list (host view) */
.com-gather .com-gather-attendees {
	margin-top: 1.5rem;
}

.com-gather .com-gather-attendee-list {
	list-style: none;
	margin: 0;
	padding: 0;
}

.com-gather .com-gather-attendee-list li {
	padding: .65rem .85rem;
	border: 1px solid var(--cg-line);
	border-radius: 8px;
	margin-bottom: .5rem;
	background: #fff;
}

.com-gather .com-gather-attendee-name {
	font-weight: 600;
}

.com-gather .com-gather-attendee-contact {
	display: block;
	font-size: .85rem;
	color: var(--cg-muted);
	margin-top: .15rem;
}

.com-gather .com-gather-attendee-contact a {
	white-space: nowrap;
}

.com-gather .com-gather-attendee-note {
	color: var(--cg-muted);
}

/* Attendee row: details on the left, host's remove button on the right. */
.com-gather .com-gather-attendee-list li {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: .75rem;
}

.com-gather .com-gather-attendee-main {
	min-width: 0;
}

.com-gather .com-gather-attendee-action {
	margin: 0;
	flex: 0 0 auto;
}

.com-gather .com-gather-btn--sm {
	width: auto;
	padding: .3rem .7rem;
	font-size: .8rem;
	font-weight: 600;
}

/* Cancelled sign-up: kept on the list, dimmed and struck through. */
.com-gather .com-gather-attendee--cancelled {
	opacity: .7;
}

.com-gather .com-gather-attendee--cancelled .com-gather-attendee-name {
	text-decoration: line-through;
}

.com-gather .com-gather-attendee-badge {
	display: inline-block;
	margin-left: .35rem;
	padding: .05rem .45rem;
	border-radius: 999px;
	background: var(--cg-soft);
	border: 1px solid var(--cg-line);
	font-size: .7rem;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: .03em;
	color: var(--cg-muted);
	vertical-align: middle;
}

.com-gather .com-gather-attendee-cancelnote {
	display: block;
	margin-top: .15rem;
	font-size: .8rem;
	color: var(--cg-muted);
}

/* Release block */
.com-gather .com-gather-release {
	margin-top: 2rem;
	padding-top: 1.5rem;
	border-top: 1px solid var(--cg-line);
}

.com-gather .com-gather-week__count {
	font-weight: 600;
	margin: 1rem 0;
}

.com-gather .com-gather-back {
	margin-top: 1.5rem;
}

.com-gather .com-gather-back a {
	font-weight: 600;
	text-decoration: none;
}

/* --------------------------------------------------------------------------
   RSVP edit view — guest updating their own sign-up
   -------------------------------------------------------------------------- */
.com-gather-rsvp-edit .com-gather-form {
	padding: 1.35rem 1.4rem;
	border: 1px solid var(--cg-line);
	border-radius: var(--cg-radius);
	background: var(--cg-card);
}

.com-gather-rsvp-edit .com-gather-form-actions {
	margin-top: 1.35rem;
	padding-top: 1.15rem;
	border-top: 1px solid var(--cg-line);
}

.com-gather-rsvp-edit .com-gather-form-actions .com-gather-btn {
	margin: 0;
}

.com-gather-rsvp-edit .com-gather-rsvp-cancel {
	margin-top: 1.5rem;
	padding-top: 1.35rem;
	border-top: 1px solid var(--cg-line);
}

.com-gather-rsvp-edit .com-gather-rsvp-cancel .com-gather-note {
	margin-bottom: .6rem;
}

.com-gather-rsvp-edit .com-gather-cancel {
	margin: 0;
}

/* --------------------------------------------------------------------------
   Next gathering — featured card
   Sets the single "next event" apart from the intro text with an accent
   header (eyebrow + title + date) and a lifted card body.
   -------------------------------------------------------------------------- */
.com-gather .com-gather-featured {
	position: relative;
	margin: 0 0 1.5rem;
	border: 1px solid var(--cg-line);
	border-radius: var(--cg-radius);
	background: var(--cg-card);
	box-shadow: 0 14px 34px -16px rgba(37, 99, 235, .45);
	overflow: hidden;
}

.com-gather .com-gather-featured__head {
	padding: 1.4rem 1.5rem 1.3rem;
	background: linear-gradient(135deg, var(--cg-accent), var(--cg-accent-dark));
	color: #fff;
}

.com-gather .com-gather-featured__eyebrow {
	display: inline-block;
	margin-bottom: .55rem;
	padding: .22rem .6rem;
	border-radius: 999px;
	background: rgba(255, 255, 255, .18);
	font-size: .7rem;
	font-weight: 700;
	letter-spacing: .09em;
	text-transform: uppercase;
}

.com-gather .com-gather-featured__title {
	margin: 0;
	color: #fff;
	font-size: 1.7rem;
	line-height: 1.15;
}

.com-gather .com-gather-featured__date {
	margin: .35rem 0 0;
	color: rgba(255, 255, 255, .88);
	font-weight: 600;
}

.com-gather .com-gather-featured__body {
	padding: 1.4rem 1.5rem 1.5rem;
}

.com-gather .com-gather-featured__body > :first-child {
	margin-top: 0;
}

.com-gather .com-gather-featured__body > :last-child {
	margin-bottom: 0;
}

@media (max-width: 480px) {
	.com-gather .com-gather-featured__head {
		padding: 1.15rem 1.15rem 1.05rem;
	}

	.com-gather .com-gather-featured__title {
		font-size: 1.45rem;
	}

	.com-gather .com-gather-featured__body {
		padding: 1.15rem 1.15rem 1.25rem;
	}
}

/* --------------------------------------------------------------------------
   Schedule / upcoming — week cards
   -------------------------------------------------------------------------- */
.com-gather .com-gather-weeks {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	gap: var(--cg-gap);
}

.com-gather .com-gather-week {
	display: flex;
	flex-direction: column;
	gap: .85rem;
	border: 1px solid var(--cg-line);
	border-left: 4px solid var(--cg-line);
	border-radius: var(--cg-radius);
	background: var(--cg-card);
	padding: 1.15rem 1.3rem;
}

.com-gather .com-gather-week--claimed {
	border-left-color: var(--cg-accent);
}

.com-gather .com-gather-week--open {
	border-left-color: #f59e0b;
}

/* Title (category) + date subtitle */
.com-gather .com-gather-week__title {
	margin: 0;
	font-size: 1.2rem;
	font-weight: 700;
	line-height: 1.25;
}

.com-gather .com-gather-week__date {
	margin: .2rem 0 0;
	font-size: .9rem;
	font-weight: 500;
	color: var(--cg-muted);
}

/* Meta: host + location/time */
.com-gather .com-gather-week__meta {
	display: flex;
	flex-direction: column;
	gap: .15rem;
}

.com-gather .com-gather-week__host {
	margin: 0;
	font-weight: 600;
}

.com-gather .com-gather-week__where {
	margin: 0;
	color: var(--cg-muted);
}

/* Status row: badge + going count on one line */
.com-gather .com-gather-week__status {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: .5rem .65rem;
}

.com-gather .com-gather-week__status .com-gather-week__count {
	margin: 0;
	font-weight: 600;
}

.com-gather .com-gather-badge {
	display: inline-block;
	font-size: .72rem;
	font-weight: 700;
	letter-spacing: .03em;
	text-transform: uppercase;
	padding: .25rem .6rem;
	border-radius: 999px;
}

.com-gather .com-gather-badge--open {
	color: #92400e;
	background: #fef3c7;
}

.com-gather .com-gather-week__cap {
	color: var(--cg-muted);
	font-weight: 400;
}

/* Actions: buttons share the row (side by side), capped so they don't go
   full-width on large cards; they shrink to fit and wrap only when very narrow */
.com-gather .com-gather-week__actions {
	display: flex;
	flex-wrap: wrap;
	gap: .6rem;
	margin-top: .15rem;
}

.com-gather .com-gather-week__actions .com-gather-btn {
	flex: 1 1 auto;
	width: auto;
	margin: 0;
	padding: .6rem 1rem;
}

/* Beat the generic sibling-button margin from the responsive block below */
.com-gather .com-gather-week__actions .com-gather-btn + .com-gather-btn {
	margin-left: 0;
}

/* Pagination (Joomla outputs its own markup) */
.com-gather .pagination {
	margin-top: 1.5rem;
}

/* --------------------------------------------------------------------------
   Larger screens
   -------------------------------------------------------------------------- */
@media (min-width: 560px) {
	/* Buttons size to content and sit inline */
	.com-gather .com-gather-btn {
		width: auto;
	}

	.com-gather .com-gather-btn + .com-gather-btn {
		margin-top: 0;
		margin-left: .6rem;
	}

	/* Schedule card actions: cap button width so they don't stretch on big cards */
	.com-gather .com-gather-week__actions .com-gather-btn {
		max-width: 240px;
	}

	/* Meta becomes a tidy two-column grid */
	.com-gather .com-gather-meta {
		display: grid;
		grid-template-columns: max-content 1fr;
	}

	.com-gather .com-gather-meta dt {
		padding: .8rem 1rem;
		border-bottom: 1px solid var(--cg-line);
		display: flex;
		align-items: center;
	}

	.com-gather .com-gather-meta dd {
		padding: .8rem 1rem;
		display: flex;
		align-items: center;
	}
}

@media (min-width: 820px) {
	/* Schedule shows two cards per row on wider screens */
	.com-gather-schedule .com-gather-weeks {
		grid-template-columns: 1fr 1fr;
	}
}

/* Location maps: Street View photo + interactive embed on the event page */
.com-gather .com-gather-map {
	display: grid;
	gap: 0.75rem;
	margin: 0 0 1rem;
}

.com-gather .com-gather-streetview {
	margin: 0;
}

.com-gather .com-gather-streetview img,
.com-gather .com-gather-embedmap iframe {
	display: block;
	width: 100%;
	height: 240px;
	border: 0;
	border-radius: 8px;
}

.com-gather .com-gather-streetview img {
	object-fit: cover;
}

@media (min-width: 680px) {
	.com-gather .com-gather-map {
		grid-template-columns: 1fr 1fr;
	}
}

/* Meta rows that hold more than a single value (host name + contact, location +
   place details) stack vertically instead of becoming side-by-side flex columns. */
.com-gather .com-gather-meta dd.com-gather-dd-stack {
	flex-direction: column;
	align-items: flex-start;
	gap: 0.25rem;
}

/* Google Places snapshot (cuisine / price / rating / blurb) under the location */
.com-gather .com-gather-place-meta {
	font-size: 0.85rem;
	font-weight: 400;
	color: var(--cg-muted);
}

.com-gather .com-gather-place-summary {
	font-size: 0.85rem;
	font-weight: 400;
	font-style: italic;
	color: var(--cg-muted);
}

.com-gather .com-gather-host-contact {
	font-size: 0.9rem;
	font-weight: 400;
}

/* The host page gets a warm, "you're special" treatment. Change --cg-host to
   re-theme it (e.g. an emerald #047857 or a royal purple #6d28d9). */
.com-gather-host {
	--cg-host: #b45309;
	--cg-host-dark: #92400e;
	background: linear-gradient(180deg, #fffbeb 0%, var(--cg-card) 140px);
	border: 1px solid #fde68a;
	border-top: 4px solid var(--cg-host);
	border-radius: var(--cg-radius);
	padding: 1.5rem 1.5rem 1.75rem;
	box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06);
}

.com-gather-host .com-gather-host-eyebrow {
	margin: 0 0 0.15rem;
	font-size: 0.72rem;
	font-weight: 700;
	letter-spacing: 0.09em;
	text-transform: uppercase;
	color: var(--cg-host);
}

.com-gather-host .com-gather-host-eyebrow::before {
	content: "\2605 "; /* star */
}

.com-gather-host > h2 {
	margin-top: 0;
}

.com-gather-host legend {
	color: var(--cg-host);
	font-weight: 700;
}

.com-gather-host .com-gather-btn--primary {
	background: var(--cg-host);
	border-color: var(--cg-host);
}

.com-gather-host .com-gather-btn--primary:hover,
.com-gather-host .com-gather-btn--primary:focus {
	background: var(--cg-host-dark);
	border-color: var(--cg-host-dark);
}

/* Past ("expired") events — muted look in lists + a notice on the detail page */
.com-gather .com-gather-badge--past {
	background: #e5e7eb;
	color: #4b5563;
}

.com-gather .com-gather-week--past {
	opacity: 0.85;
}

.com-gather .com-gather-week--past .com-gather-week__title {
	color: var(--cg-muted);
}

.com-gather .com-gather-past-note {
	margin: 0 0 1rem;
	padding: 0.5rem 0.85rem;
	border-radius: var(--cg-radius);
	background: #f3f4f6;
	color: #4b5563;
	font-size: 0.9rem;
	font-weight: 600;
}

/* Poll suggestion phase: the "add this suggestion" confirm row */
.com-gather .com-gather-suggest-so-far {
	margin: 1rem 0 0.5rem;
	font-weight: 700;
}

.com-gather .com-gather-suggest-preview {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 0.75rem;
	flex-wrap: wrap;
	margin-top: 0.75rem;
	padding: 0.6rem 0.85rem;
	border: 1px solid var(--cg-line);
	border-radius: var(--cg-radius);
	background: #f0fdf4;
}

/* Invite people (host page): copyable sign-up link + email-it form */
.com-gather .com-gather-invite {
	margin-top: 1.5rem;
	padding: 1rem 1.25rem;
	border: 1px solid var(--cg-line);
	border-radius: var(--cg-radius);
	background: #f8fafc;
}

.com-gather .com-gather-invite > h3 {
	margin: 0 0 0.35rem;
}

.com-gather .com-gather-invite__copy {
	display: flex;
	gap: 0.5rem;
	margin: 0.75rem 0 1rem;
}

.com-gather .com-gather-invite__copy input {
	flex: 1;
	min-width: 0;
	font-size: 0.9rem;
}

.com-gather .com-gather-invite__send {
	display: flex;
	gap: 0.5rem;
}

.com-gather .com-gather-invite__send input {
	flex: 1;
	min-width: 0;
}

@media (max-width: 480px) {
	.com-gather .com-gather-invite__copy,
	.com-gather .com-gather-invite__send {
		flex-direction: column;
	}
}

/* Poll: "added a venue" nudge + "tick at least one" warning */
.com-gather .com-gather-cand-added {
	display: block;
	margin-top: 0.35rem;
	color: #15803d;
	font-weight: 600;
}

.com-gather .com-gather-poll-warn {
	margin: 0 0 0.75rem;
	color: #b91c1c;
	font-weight: 600;
}

/* "No activity" — a past slot that had no host and no sign-ups */
.com-gather .com-gather-badge--empty {
	background: #fef3c7;
	color: #92400e;
}

/* Upcoming / Past tabs on the schedule */
.com-gather .com-gather-tabs {
	display: flex;
	gap: 0.25rem;
	border-bottom: 2px solid var(--cg-line);
	margin: 0 0 1.25rem;
}

.com-gather .com-gather-tab {
	padding: 0.6rem 1.1rem;
	font-weight: 600;
	color: var(--cg-muted);
	text-decoration: none;
	border-bottom: 3px solid transparent;
	margin-bottom: -2px;
}

.com-gather .com-gather-tab:hover {
	color: var(--cg-ink);
}

.com-gather .com-gather-tab.is-active {
	color: var(--cg-accent);
	border-bottom-color: var(--cg-accent);
}

/* <button> tabs (host page) need a UA reset to match the anchor tabs. */
.com-gather button.com-gather-tab {
	background: none;
	border: 0;
	border-bottom: 3px solid transparent;
	margin-bottom: -2px;
	font: inherit;
	line-height: 1.2;
	cursor: pointer;
}

.com-gather .com-gather-form-save {
	margin-top: .5rem;
}

/* --------------------------------------------------------------------------
   Dashboard — next-per-category cards + chosen venues
   -------------------------------------------------------------------------- */
.com-gather-dashboard .com-gather-dash-title {
	margin: 0 0 .5rem;
}

.com-gather-dashboard .com-gather-dash-h {
	margin: 2rem 0 1rem;
	font-size: 1.15rem;
}

.com-gather-dashboard .com-gather-dash-h:first-of-type {
	margin-top: 1.25rem;
}

.com-gather-dashboard .com-gather-dash-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
	gap: 1rem;
}

/* Category card — one per category, links to the event */
.com-gather-dashboard .com-gather-dash-card {
	display: flex;
	flex-direction: column;
	border: 1px solid var(--cg-line);
	border-radius: var(--cg-radius);
	overflow: hidden;
	background: var(--cg-card);
	color: var(--cg-ink);
	text-decoration: none;
	transition: border-color .15s ease, box-shadow .15s ease, transform .05s ease;
}

.com-gather-dashboard .com-gather-dash-card:hover {
	border-color: var(--cg-accent);
	box-shadow: 0 10px 26px -14px rgba(37, 99, 235, .4);
}

.com-gather-dashboard .com-gather-dash-card__img {
	display: block;
	height: 120px;
	background-size: cover;
	background-position: center;
	background-color: var(--cg-soft);
}

.com-gather-dashboard .com-gather-dash-card__img--empty {
	background-image: linear-gradient(135deg, var(--cg-accent), var(--cg-accent-dark));
	opacity: .9;
}

.com-gather-dashboard .com-gather-dash-card__body {
	display: flex;
	flex-direction: column;
	gap: .2rem;
	padding: .85rem 1rem 1rem;
}

.com-gather-dashboard .com-gather-dash-card__cat {
	font-weight: 700;
	font-size: 1.05rem;
	line-height: 1.2;
}

.com-gather-dashboard .com-gather-dash-card__date {
	color: var(--cg-muted);
	font-weight: 500;
}

.com-gather-dashboard .com-gather-dash-card__where {
	color: var(--cg-muted);
	font-size: .9rem;
}

.com-gather-dashboard .com-gather-dash-card__foot {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: .5rem;
	margin-top: .55rem;
}

.com-gather-dashboard .com-gather-dash-card__count {
	font-weight: 600;
	font-size: .9rem;
}

/* Chosen-venue card */
.com-gather-dashboard .com-gather-dash-loc {
	display: flex;
	flex-direction: column;
	border: 1px solid var(--cg-line);
	border-radius: var(--cg-radius);
	overflow: hidden;
	background: var(--cg-card);
}

.com-gather-dashboard .com-gather-dash-loc__img {
	margin: 0;
	height: 130px;
	background: var(--cg-soft);
}

.com-gather-dashboard .com-gather-dash-loc__img img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.com-gather-dashboard .com-gather-dash-loc__body {
	padding: .8rem 1rem 1rem;
}

.com-gather-dashboard .com-gather-dash-loc__name {
	margin: 0;
	font-weight: 700;
}

.com-gather-dashboard .com-gather-dash-loc__addr,
.com-gather-dashboard .com-gather-dash-loc__meta {
	margin: .2rem 0 0;
	color: var(--cg-muted);
	font-size: .9rem;
}

.com-gather-dashboard .com-gather-dash-loc__foot {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: .5rem;
	margin: .6rem 0 0;
}

.com-gather-dashboard .com-gather-dash-loc__count {
	font-weight: 600;
	font-size: .85rem;
	color: var(--cg-muted);
}

/* --------------------------------------------------------------------------
   Confirm modal — replaces the native browser confirm()
   -------------------------------------------------------------------------- */
.com-gather-modal-overlay {
	position: fixed;
	inset: 0;
	z-index: 2000;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 1rem;
	background: rgba(17, 24, 39, .55);
	animation: com-gather-fade .12s ease-out;
}

.com-gather-modal {
	width: 100%;
	max-width: 400px;
	padding: 1.5rem 1.5rem 1.25rem;
	background: #fff;
	border-radius: 14px;
	box-shadow: 0 24px 60px -12px rgba(0, 0, 0, .45);
	animation: com-gather-pop .14s ease-out;
}

.com-gather-modal__msg {
	margin: 0 0 1.4rem;
	font-size: 1.05rem;
	line-height: 1.5;
	color: var(--cg-ink);
}

.com-gather-modal__actions {
	display: flex;
	flex-wrap: wrap;
	gap: .6rem;
	justify-content: flex-end;
}

.com-gather-modal__actions .com-gather-btn {
	width: auto;
	margin: 0;
}

@keyframes com-gather-fade {
	from { opacity: 0; }
	to   { opacity: 1; }
}

@keyframes com-gather-pop {
	from { opacity: 0; transform: translateY(8px) scale(.98); }
	to   { opacity: 1; transform: none; }
}

@media (prefers-reduced-motion: reduce) {
	.com-gather-modal-overlay,
	.com-gather-modal {
		animation: none;
	}
}

/* --------------------------------------------------------------------------
   Event photo — hero image + host upload preview
   -------------------------------------------------------------------------- */
.com-gather .com-gather-hero {
	margin: 0 0 1.25rem;
	border-radius: var(--cg-radius);
	overflow: hidden;
	background: var(--cg-soft);
}

.com-gather .com-gather-hero img {
	display: block;
	width: 100%;
	max-height: 380px;
	object-fit: cover;
}

.com-gather .com-gather-image-preview {
	margin: 0 0 .6rem;
}

.com-gather .com-gather-image-preview img {
	display: block;
	width: 100%;
	max-width: 320px;
	border-radius: 8px;
	border: 1px solid var(--cg-line);
}

.com-gather .com-gather-image-remove {
	display: inline-flex;
	align-items: center;
	gap: .4rem;
	margin-top: .4rem;
	font-size: .85rem;
	font-weight: 500;
	color: var(--cg-muted);
}

.com-gather .com-gather-image-google {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: .5rem;
	margin-top: .4rem;
}

/* --------------------------------------------------------------------------
   Photo gallery — display (under the hero) + host-side editor
   -------------------------------------------------------------------------- */
.com-gather .com-gather-gallery {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(90px, 1fr));
	gap: .5rem;
	margin: 0 0 1.25rem;
}

.com-gather .com-gather-gallery__item {
	display: block;
	aspect-ratio: 1 / 1;
	border-radius: 8px;
	overflow: hidden;
	border: 1px solid var(--cg-line);
}

.com-gather .com-gather-gallery__item img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.com-gather .com-gather-gallery-help {
	margin-bottom: .6rem !important;
}

.com-gather .com-gather-gallery-edit {
	list-style: none;
	margin: 0 0 .75rem;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
	gap: .75rem;
}

.com-gather .com-gather-gallery-edit__item {
	position: relative;
	border: 1px solid var(--cg-line);
	border-radius: 8px;
	padding: .5rem;
	background: #fff;
}

.com-gather .com-gather-gallery-edit__item.is-hero {
	border-color: var(--cg-accent);
	box-shadow: 0 0 0 1px var(--cg-accent);
}

.com-gather .com-gather-gallery-edit__item img {
	width: 100%;
	height: 96px;
	object-fit: cover;
	border-radius: 6px;
	display: block;
	margin-bottom: .4rem;
}

.com-gather .com-gather-gallery-edit__hero,
.com-gather .com-gather-gallery-edit__del {
	display: flex;
	align-items: center;
	gap: .35rem;
	font-size: .8rem;
	font-weight: 500;
	margin: 0;
}

.com-gather .com-gather-gallery-edit__del {
	color: var(--cg-danger);
}

.com-gather .com-gather-gallery-edit__tag {
	position: absolute;
	top: .75rem;
	right: .75rem;
	background: rgba(17, 24, 39, .7);
	color: #fff;
	font-size: .65rem;
	font-weight: 600;
	padding: .05rem .4rem;
	border-radius: 999px;
}

.com-gather .com-gather-gallery-add {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: .6rem;
}

/* --------------------------------------------------------------------------
   RSVP — jump button + carded sign-up block on the event page
   -------------------------------------------------------------------------- */
.com-gather .com-gather-rsvp-jump {
	margin: 0 0 1.25rem;
}

.com-gather .com-gather-rsvp-jump .com-gather-btn {
	width: auto;
}

.com-gather .com-gather-rsvp-block {
	scroll-margin-top: 1rem;
	margin-top: 1.5rem;
	padding: 1.35rem 1.4rem 1.5rem;
	border: 1px solid var(--cg-line);
	border-radius: var(--cg-radius);
	background: var(--cg-soft);
}

.com-gather .com-gather-rsvp-block__title {
	margin-top: 0;
}

@media (min-width: 600px) {
	.com-gather .com-gather-rsvp-jump .com-gather-btn {
		min-width: 240px;
	}
}

.com-gather .com-gather-google-preview {
	margin: .6rem 0 0;
}

.com-gather .com-gather-google-preview img {
	display: block;
	width: 100%;
	max-width: 280px;
	border-radius: 8px;
	border: 1px solid var(--cg-line);
	margin-bottom: .3rem;
}

/* --------------------------------------------------------------------------
   Venue poll — voting options (event page) + candidate editor (host page)
   -------------------------------------------------------------------------- */
.com-gather .com-gather-poll-options {
	list-style: none;
	margin: 0 0 1.25rem;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: .6rem;
}

.com-gather .com-gather-poll-option {
	border: 1px solid var(--cg-line);
	border-radius: var(--cg-radius);
	padding: .7rem .85rem;
	background: #fff;
}

.com-gather .com-gather-poll-option__pick {
	display: flex;
	align-items: flex-start;
	gap: .6rem;
	margin: 0;
	cursor: pointer;
	font-weight: 400;
}

.com-gather .com-gather-poll-option__body {
	display: flex;
	gap: .7rem;
	flex: 1;
	min-width: 0;
}

.com-gather .com-gather-poll-option__img {
	width: 72px;
	height: 72px;
	object-fit: cover;
	border-radius: 8px;
	flex: 0 0 auto;
}

.com-gather .com-gather-poll-option__text {
	display: flex;
	flex-direction: column;
	gap: .1rem;
	min-width: 0;
}

.com-gather .com-gather-poll-option__name {
	font-weight: 700;
}

.com-gather .com-gather-poll-option__addr,
.com-gather .com-gather-poll-option__meta {
	color: var(--cg-muted);
	font-size: .9rem;
}

.com-gather .com-gather-poll-option__tally {
	display: flex;
	align-items: center;
	gap: .6rem;
	margin: .5rem 0 0 1.9rem;
}

.com-gather .com-gather-poll-bar {
	flex: 1;
	height: 8px;
	background: var(--cg-soft);
	border-radius: 999px;
	overflow: hidden;
}

.com-gather .com-gather-poll-bar__fill {
	display: block;
	height: 100%;
	background: var(--cg-accent);
}

.com-gather .com-gather-poll-option__count {
	font-size: .85rem;
	font-weight: 600;
	color: var(--cg-muted);
	white-space: nowrap;
}

/* Host-side candidate editor */
.com-gather .com-gather-pollfield {
	border-top: 1px solid var(--cg-line);
	padding-top: 1rem;
}

.com-gather .com-gather-poll-toggle {
	display: flex;
	align-items: center;
	gap: .5rem;
	font-weight: 600;
	margin-bottom: .25rem;
}

.com-gather .com-gather-poll-candidates-label {
	display: block;
	font-weight: 600;
	font-size: .9rem;
	margin: 1rem 0 .35rem;
}

.com-gather .com-gather-candidates {
	list-style: none;
	margin: 0 0 .75rem;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: .5rem;
}

.com-gather .com-gather-candidate {
	display: flex;
	align-items: center;
	gap: .6rem;
	border: 1px solid var(--cg-line);
	border-radius: 8px;
	padding: .5rem .6rem;
}

.com-gather .com-gather-candidate__img {
	width: 54px;
	height: 54px;
	object-fit: cover;
	border-radius: 6px;
	flex: 0 0 auto;
}

.com-gather .com-gather-candidate__info {
	display: flex;
	flex-direction: column;
	min-width: 0;
	flex: 1;
}

.com-gather .com-gather-candidate__info span {
	color: var(--cg-muted);
	font-size: .85rem;
}

.com-gather .com-gather-candidate__remove {
	flex: 0 0 auto;
}

.com-gather .com-gather-poll-close {
	margin-top: .5rem;
}

/* ------------------------------------------------------------------ */
/* Flash update — urgent host broadcast                                */
/* ------------------------------------------------------------------ */

/* The loud banner on the event page. */
.com-gather .com-gather-flash {
	display: flex;
	gap: .75rem;
	align-items: flex-start;
	margin: 0 0 1.25rem;
	padding: .9rem 1rem;
	border: 1px solid #f0b4b4;
	border-left: 4px solid var(--cg-danger);
	border-radius: var(--cg-radius);
	background: #fef2f2;
}

.com-gather .com-gather-flash__badge {
	flex: 0 0 auto;
	display: inline-block;
	padding: .15rem .5rem;
	border-radius: 999px;
	background: var(--cg-danger);
	color: #fff;
	font-size: .72rem;
	font-weight: 700;
	letter-spacing: .02em;
	text-transform: uppercase;
	white-space: nowrap;
}

.com-gather .com-gather-flash__body {
	min-width: 0;
}

.com-gather .com-gather-flash__msg {
	margin: 0;
	color: #7f1d1d;
	font-weight: 600;
}

.com-gather .com-gather-flash__meta {
	margin: .35rem 0 0;
	color: var(--cg-muted);
	font-size: .82rem;
}

/* The host's compose box (Contact tab). */
.com-gather .com-gather-flash-host {
	margin-top: 1.5rem;
	padding-top: 1.25rem;
	border-top: 1px solid var(--cg-line);
}

.com-gather .com-gather-flash-live {
	margin: .75rem 0 1rem;
	padding: .75rem .9rem;
	border: 1px solid #f0b4b4;
	border-radius: var(--cg-radius);
	background: #fef2f2;
}

.com-gather .com-gather-flash-live__label {
	margin: 0 0 .35rem;
	color: #7f1d1d;
	font-size: .82rem;
	font-weight: 700;
}

.com-gather .com-gather-flash-live__msg {
	margin: 0 0 .6rem;
	padding-left: .75rem;
	border-left: 3px solid #f0b4b4;
	color: var(--cg-ink);
}

.com-gather .com-gather-flash-sms {
	display: flex;
	align-items: center;
	gap: .5rem;
	margin: .25rem 0 .1rem;
	font-weight: 600;
}

.com-gather .com-gather-flash-sms input {
	width: auto;
	margin: 0;
}

/* ------------------------------------------------------------------ */
/* Poll votes (host view)                                              */
/* ------------------------------------------------------------------ */
.com-gather .com-gather-votes {
	margin-top: 1.5rem;
	padding-top: 1.25rem;
	border-top: 1px solid var(--cg-line);
}

.com-gather .com-gather-votes__group {
	margin: 0 0 .9rem;
}

.com-gather .com-gather-votes__cand {
	display: flex;
	align-items: center;
	gap: .5rem;
	margin-bottom: .3rem;
}

.com-gather .com-gather-votes__list {
	list-style: none;
	margin: 0;
	padding: 0 0 0 .25rem;
}

.com-gather .com-gather-votes__list li {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: .5rem;
	padding: .3rem 0;
	border-bottom: 1px solid var(--cg-soft);
}

.com-gather .com-gather-votes__who {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: .1rem .5rem;
	min-width: 0;
}

.com-gather .com-gather-votes__name {
	font-weight: 600;
}

.com-gather .com-gather-votes__time {
	color: var(--cg-muted);
	font-size: .82rem;
}

.com-gather .com-gather-candidate__suggester {
	display: block;
	color: var(--cg-muted);
	font-size: .8rem;
}

/* ------------------------------------------------------------------ */
/* Event theme + rich-text note                                        */
/* ------------------------------------------------------------------ */
.com-gather .com-gather-theme {
	margin: 0 0 1rem;
	font-size: 1.25rem;
	font-weight: 700;
	line-height: 1.3;
	color: var(--cg-ink);
}

/* Rich note from the WYSIWYG editor — keep tags readable and contained. */
.com-gather .com-gather-note-body > :first-child { margin-top: 0; }
.com-gather .com-gather-note-body > :last-child { margin-bottom: 0; }

.com-gather .com-gather-note-body p { margin: 0 0 .6rem; }

.com-gather .com-gather-note-body ul,
.com-gather .com-gather-note-body ol {
	margin: 0 0 .6rem;
	padding-left: 1.25rem;
}

.com-gather .com-gather-note-body h2,
.com-gather .com-gather-note-body h3,
.com-gather .com-gather-note-body h4 {
	margin: .8rem 0 .4rem;
	line-height: 1.25;
}

.com-gather .com-gather-note-body a {
	color: var(--cg-accent);
	text-decoration: underline;
	word-break: break-word;
}

.com-gather .com-gather-note-body img {
	max-width: 100%;
	height: auto;
}

/* Standalone Details block — a featured card so it stands out from the meta. */
.com-gather .com-gather-note-block {
	margin: 0 0 1.5rem;
	padding: 1.1rem 1.35rem 1.25rem;
	background: var(--cg-soft);
	border: 1px solid var(--cg-line);
	border-left: 4px solid var(--cg-accent);
	border-radius: var(--cg-radius);
}

.com-gather .com-gather-note-block__title {
	margin: 0 0 .65rem;
	font-size: .8rem;
	font-weight: 700;
	letter-spacing: .05em;
	text-transform: uppercase;
	color: var(--cg-accent);
}

.com-gather .com-gather-note-body {
	line-height: 1.65;
	color: var(--cg-ink);
}

/* Blockquote inside the published Details — accented + tinted to read as a pull-quote. */
.com-gather .com-gather-note-body blockquote {
	margin: 0 0 .9rem;
	padding: .55rem .95rem;
	border-left: 3px solid var(--cg-accent);
	border-radius: 0 6px 6px 0;
	background: rgba(37, 99, 235, .06);
	color: var(--cg-ink);
	font-style: italic;
}

/* Blockquote inside the editor stays subtle (no card tint). */
.com-gather .com-gather-rte__area blockquote {
	margin: 0 0 .7rem;
	padding: .3rem 0 .3rem .9rem;
	border-left: 3px solid var(--cg-line);
	color: var(--cg-muted);
	font-style: italic;
}

.com-gather .com-gather-captcha-field {
	margin: .25rem 0 1rem;
}

/* Minimal rich-text editor (host page Details field). */
.com-gather .com-gather-rte {
	border: 1px solid var(--cg-line);
	border-radius: var(--cg-radius);
	background: #fff;
	overflow: hidden;
}

.com-gather .com-gather-rte__bar {
	display: flex;
	flex-wrap: wrap;
	gap: .25rem;
	padding: .35rem;
	border-bottom: 1px solid var(--cg-line);
	background: var(--cg-soft);
}

.com-gather .com-gather-rte__btn {
	min-width: 2rem;
	padding: .2rem .5rem;
	border: 1px solid var(--cg-line);
	border-radius: 6px;
	background: #fff;
	color: var(--cg-ink);
	font-size: .95rem;
	line-height: 1.4;
	cursor: pointer;
}

.com-gather .com-gather-rte__btn:hover {
	background: rgba(37, 99, 235, .06);
	border-color: var(--cg-accent);
}

.com-gather .com-gather-rte__area {
	min-height: 170px;
	max-height: 460px;
	overflow-y: auto;
	padding: .6rem .75rem;
	outline: none;
}

.com-gather .com-gather-rte__area:focus {
	box-shadow: inset 0 0 0 2px rgba(37, 99, 235, .25);
}

.com-gather .com-gather-rte__area > :first-child { margin-top: 0; }
.com-gather .com-gather-rte__area > :last-child { margin-bottom: 0; }
.com-gather .com-gather-rte__area ul,
.com-gather .com-gather-rte__area ol { padding-left: 1.25rem; }
.com-gather .com-gather-rte__area a { color: var(--cg-accent); text-decoration: underline; }

.com-gather .com-gather-captcha-field > div {
	max-width: 100%;
	overflow-x: auto;
}
