/**
 * Goots Conference – Frontend Styles
 *
 * Minimal, theme-respecting styles. Uses CSS custom properties so WordPress
 * themes can override colors. Avoids opinionated typography — inherits from theme.
 */

/* ──────────────────────────────────────────────
   CSS Custom Properties (overridable by theme)
   ────────────────────────────────────────────── */

:root {
	--goots-primary: #6366f1;
	--goots-primary-hover: #4f46e5;
	--goots-primary-soft: rgba(99, 102, 241, 0.08);
	--goots-text: #1e293b;
	--goots-text-muted: #64748b;
	--goots-text-light: #94a3b8;
	--goots-border: #e2e8f0;
	--goots-border-strong: #cbd5e1;
	--goots-bg: #ffffff;
	--goots-bg-muted: #f8fafc;
	--goots-radius: 0.5rem;
	--goots-radius-lg: 0.75rem;
	--goots-success-bg: #dcfce7;
	--goots-success-text: #166534;
	--goots-warning-bg: #fef3c7;
	--goots-warning-text: #92400e;
	--goots-danger-bg: #fee2e2;
	--goots-danger-text: #991b1b;
	--goots-info-bg: #dbeafe;
	--goots-info-text: #1e40af;

	/* Elevation / motion tokens */
	--goots-shadow-sm: 0 1px 2px rgba(15, 23, 42, 0.05);
	--goots-shadow-md: 0 4px 12px rgba(15, 23, 42, 0.08);
	--goots-shadow-lg: 0 12px 32px rgba(15, 23, 42, 0.12);
	--goots-transition: 0.18s ease;

	/* Banner heights for conference cards */
	--goots-banner-small: 120px;
	--goots-banner-medium: 200px;
	--goots-banner-large: 320px;
}

/* ──────────────────────────────────────────────
   Grid Layouts — Mobile-first responsive columns
   ──────────────────────────────────────────────

   The block render emits THREE companion classes on the grid element:
     goots-columns-{N}            → desktop  (>= 1024px)
     goots-columns-tablet-{N}     → tablet   (>= 640px, < 1024px)
     goots-columns-mobile-{N}     → mobile   (default, < 640px)

   We define mobile values as the base, then escalate at the tablet and
   desktop breakpoints. The selectors target both the legacy named grids
   (goots-*-grid) and any descendant grid wrapper, which lets new blocks
   opt in by simply emitting the helper classes alongside `display: grid`.
   ────────────────────────────────────────────── */

.goots-conference-grid,
.goots-sponsor-grid,
.goots-ticket-grid,
.goots-addon-grid,
.goots-speakers-grid,
.goots-buy-tickets__grid {
	display: grid;
	gap: 1.5rem;
}

/* ── Base / mobile (default, < 640px) ─────────────── */
.goots-columns-mobile-1 { grid-template-columns: 1fr; }
.goots-columns-mobile-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.goots-columns-mobile-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.goots-columns-mobile-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }

/* Default fallback when no mobile-{n} class is set: collapse to 1 column. */
.goots-columns-1:not([class*="goots-columns-mobile-"]) { grid-template-columns: 1fr; }
.goots-columns-2:not([class*="goots-columns-mobile-"]) { grid-template-columns: 1fr; }
.goots-columns-3:not([class*="goots-columns-mobile-"]) { grid-template-columns: 1fr; }
.goots-columns-4:not([class*="goots-columns-mobile-"]) { grid-template-columns: 1fr; }

/* ── Tablet (>= 640px) ─────────────── */
@media (min-width: 640px) {
	.goots-columns-tablet-1 { grid-template-columns: 1fr; }
	.goots-columns-tablet-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.goots-columns-tablet-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.goots-columns-tablet-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

/* ── Desktop (>= 1024px) — `goots-columns-{N}` ─────────────── */
@media (min-width: 1024px) {
	.goots-columns-1 { grid-template-columns: 1fr; }
	.goots-columns-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.goots-columns-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.goots-columns-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

/* ──────────────────────────────────────────────
   Conference Cards
   ────────────────────────────────────────────── */

.goots-conference-card {
	border: 1px solid var(--goots-border);
	border-radius: var(--goots-radius-lg);
	overflow: hidden;
	transition: box-shadow 0.2s;
}

.goots-conference-card:hover {
	box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
}

.goots-conference-card__image img {
	width: 100%;
	height: 200px;
	object-fit: cover;
}

.goots-conference-card__body {
	padding: 1.5rem;
}

.goots-conference-card__title {
	margin: 0 0 0.5rem;
	font-size: 1.125rem;
}

.goots-conference-card__meta {
	color: var(--goots-text-muted);
	font-size: 0.875rem;
	margin: 0 0 0.25rem;
}

.goots-conference-card__description {
	font-size: 0.875rem;
	margin: 0.75rem 0;
	color: var(--goots-text);
}

/* ──────────────────────────────────────────────
   Conference Detail
   ────────────────────────────────────────────── */

.goots-conference-detail__banner img {
	width: 100%;
	border-radius: var(--goots-radius-lg);
	margin-bottom: 1.5rem;
}

.goots-conference-detail__meta {
	display: flex;
	flex-wrap: wrap;
	gap: 1rem;
	align-items: center;
	color: var(--goots-text-muted);
	margin-bottom: 1rem;
}

.goots-conference-detail__section {
	margin-top: 2rem;
}

/* ──────────────────────────────────────────────
   Tickets
   ────────────────────────────────────────────── */

.goots-ticket-card {
	border: 1px solid var(--goots-border);
	border-radius: var(--goots-radius);
	padding: 1.25rem;
}

.goots-ticket-card__name {
	margin: 0 0 0.5rem;
}

.goots-ticket-card__price {
	font-size: 1.5rem;
	font-weight: 700;
	margin: 0.5rem 0;
	color: var(--goots-primary);
}

/* ──────────────────────────────────────────────
   Sponsor Cards
   ────────────────────────────────────────────── */

.goots-sponsor-card {
	border: 2px solid var(--tier-color, var(--goots-primary));
	border-radius: var(--goots-radius-lg);
	padding: 1.5rem;
	text-align: center;
}

.goots-sponsor-card__badge {
	width: 1rem;
	height: 1rem;
	border-radius: 50%;
	background-color: var(--tier-color, var(--goots-primary));
	margin: 0 auto 0.75rem;
}

.goots-sponsor-card__name {
	margin: 0 0 0.5rem;
}

.goots-sponsor-card__price {
	font-size: 1.75rem;
	font-weight: 700;
	margin: 0.5rem 0;
}

.goots-sponsor-card__availability {
	font-size: 0.75rem;
	color: var(--goots-text-light);
	margin-top: 0.75rem;
}

.goots-sponsor-addons {
	margin-top: 2rem;
}

/* ──────────────────────────────────────────────
   Ticket Registration Wizard
   ────────────────────────────────────────────── */

.goots-ticket-registration {
	max-width: 700px;
}

.goots-registration__title {
	margin-bottom: 1.5rem;
}

.goots-ticket-selector {
	display: flex;
	flex-direction: column;
	gap: 0.75rem;
}

.goots-ticket-option {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 1rem;
	padding: 1rem 1.25rem;
	border: 2px solid var(--goots-border);
	border-radius: var(--goots-radius);
	transition: border-color 0.2s;
}

.goots-ticket-option--selected {
	border-color: var(--goots-primary);
	background-color: var(--goots-bg-muted);
}

.goots-ticket-option__name {
	margin: 0;
	font-size: 1rem;
}

.goots-ticket-option__desc {
	font-size: 0.875rem;
	color: var(--goots-text-muted);
	margin: 0.25rem 0 0;
}

.goots-ticket-option__action {
	display: flex;
	align-items: center;
	gap: 1rem;
	flex-shrink: 0;
}

.goots-ticket-option__price {
	font-weight: 700;
	font-size: 1.125rem;
	white-space: nowrap;
}

.goots-quantity-control {
	display: flex;
	align-items: center;
	gap: 0;
	border: 1px solid var(--goots-border);
	border-radius: var(--goots-radius);
	overflow: hidden;
}

.goots-qty-btn {
	width: 2rem;
	height: 2rem;
	border: none;
	background: var(--goots-bg-muted);
	cursor: pointer;
	font-size: 1rem;
	display: flex;
	align-items: center;
	justify-content: center;
}

.goots-qty-btn:hover {
	background: var(--goots-border);
}

.goots-qty-input {
	width: 2.5rem;
	height: 2rem;
	text-align: center;
	border: none;
	border-left: 1px solid var(--goots-border);
	border-right: 1px solid var(--goots-border);
	font-size: 0.875rem;
	-moz-appearance: textfield;
}

.goots-qty-input::-webkit-inner-spin-button,
.goots-qty-input::-webkit-outer-spin-button {
	-webkit-appearance: none;
	margin: 0;
}

.goots-registration__nav {
	display: flex;
	justify-content: space-between;
	align-items: center;
	margin-top: 2rem;
	padding-top: 1rem;
	border-top: 1px solid var(--goots-border);
}

.goots-registration__total {
	font-size: 1.125rem;
	font-weight: 600;
}

.goots-registration__buttons {
	display: flex;
	gap: 0.75rem;
}

.goots-registration__success {
	text-align: center;
	padding: 2rem;
}

.goots-summary-table {
	width: 100%;
	border-collapse: collapse;
	margin-bottom: 1rem;
}

.goots-summary-table th,
.goots-summary-table td {
	padding: 0.5rem 0.75rem;
	text-align: left;
	border-bottom: 1px solid var(--goots-border);
}

.goots-summary-table th {
	font-weight: 600;
	font-size: 0.875rem;
	color: var(--goots-text-muted);
}

/* ──────────────────────────────────────────────
   Agenda / Schedule
   ────────────────────────────────────────────── */

.goots-agenda__day {
	margin-bottom: 2rem;
}

.goots-agenda__day-heading {
	margin: 0 0 1rem;
	padding-bottom: 0.5rem;
	border-bottom: 2px solid var(--goots-primary);
}

.goots-agenda__sessions {
	display: flex;
	flex-direction: column;
	gap: 0.5rem;
}

.goots-agenda__session {
	display: flex;
	gap: 1.5rem;
	padding: 1rem;
	border: 1px solid var(--goots-border);
	border-radius: var(--goots-radius);
	transition: background-color 0.15s;
}

.goots-agenda__session:hover {
	background-color: var(--goots-bg-muted);
}

.goots-agenda__time {
	min-width: 80px;
	display: flex;
	flex-direction: column;
	align-items: flex-end;
	color: var(--goots-text-muted);
	font-size: 0.875rem;
}

.goots-agenda__start {
	font-weight: 600;
	color: var(--goots-text);
}

.goots-agenda__duration {
	font-size: 0.75rem;
	color: var(--goots-text-light);
}

.goots-agenda__session-title {
	margin: 0 0 0.25rem;
}

.goots-agenda__session-meta {
	display: flex;
	gap: 0.5rem;
	align-items: center;
	margin-bottom: 0.5rem;
}

.goots-agenda__room {
	font-size: 0.75rem;
	color: var(--goots-text-muted);
}

.goots-agenda__session-desc {
	font-size: 0.875rem;
	color: var(--goots-text-muted);
	margin: 0.5rem 0;
}

.goots-agenda__speakers {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	margin-top: 0.5rem;
}

.goots-speaker-chip {
	display: flex;
	align-items: center;
	gap: 0.375rem;
	font-size: 0.8125rem;
}

.goots-speaker-chip__avatar {
	width: 24px;
	height: 24px;
	border-radius: 50%;
	object-fit: cover;
}

.goots-speaker-chip__company {
	color: var(--goots-text-light);
	font-size: 0.75rem;
}

/* Keynote highlight */
.goots-session-type--keynote {
	border-left: 3px solid var(--goots-primary);
}

@media (max-width: 640px) {
	.goots-agenda__session {
		flex-direction: column;
		gap: 0.5rem;
	}
	.goots-agenda__time {
		flex-direction: row;
		align-items: center;
		gap: 0.5rem;
	}
}

/* ──────────────────────────────────────────────
   Auth Gate
   ────────────────────────────────────────────── */

.goots-auth-gate {
	max-width: 420px;
	margin: 0 auto;
}

.goots-auth-gate__tabs {
	display: flex;
	gap: 0;
	margin-bottom: 1.5rem;
	border-bottom: 2px solid var(--goots-border);
}

.goots-auth-tab {
	flex: 1;
	padding: 0.75rem 1rem;
	background: none;
	border: none;
	border-bottom: 2px solid transparent;
	margin-bottom: -2px;
	cursor: pointer;
	font-weight: 500;
	color: var(--goots-text-muted);
	transition: color 0.15s, border-color 0.15s;
}

.goots-auth-tab--active {
	color: var(--goots-primary);
	border-bottom-color: var(--goots-primary);
}

.goots-auth-gate__logged-in {
	text-align: center;
	padding: 1.5rem;
}

.goots-auth-error {
	padding: 0.75rem;
	background-color: var(--goots-danger-bg);
	color: var(--goots-danger-text);
	border-radius: var(--goots-radius);
	font-size: 0.875rem;
	margin-bottom: 0.75rem;
}

/* ──────────────────────────────────────────────
   My Registrations
   ────────────────────────────────────────────── */

.goots-registration-card {
	display: flex;
	justify-content: space-between;
	align-items: center;
	padding: 1rem 1.25rem;
	border: 1px solid var(--goots-border);
	border-radius: var(--goots-radius);
	margin-bottom: 0.75rem;
}

.goots-registration-card__meta {
	display: block;
	font-size: 0.875rem;
	color: var(--goots-text-muted);
}

.goots-registration-card__items {
	display: block;
	font-size: 0.75rem;
	color: var(--goots-text-light);
}

.goots-registration-card__status {
	display: flex;
	flex-direction: column;
	align-items: flex-end;
	gap: 0.25rem;
}

.goots-registration-card__total {
	font-weight: 700;
}

/* ──────────────────────────────────────────────
   Account Profile
   ────────────────────────────────────────────── */

.goots-account-profile {
	max-width: 550px;
}

.goots-account-profile__header {
	display: flex;
	gap: 1rem;
	align-items: center;
	margin-bottom: 2rem;
}

.goots-avatar {
	display: flex;
	align-items: center;
	justify-content: center;
	border-radius: 50%;
	background-color: var(--goots-primary);
	color: white;
	font-weight: 700;
}

.goots-avatar--lg {
	width: 64px;
	height: 64px;
	font-size: 1.5rem;
}

.goots-account-profile__name {
	margin: 0;
}

.goots-account-profile__email {
	color: var(--goots-text-muted);
	font-size: 0.875rem;
	margin: 0.125rem 0 0;
}

.goots-account-profile__details {
	color: var(--goots-text-light);
	font-size: 0.8125rem;
	margin: 0.125rem 0 0;
}

.goots-account-profile__danger-zone {
	margin-top: 2rem;
	padding-top: 1rem;
	border-top: 1px solid var(--goots-border);
}

.goots-profile-saved {
	color: var(--goots-success-text);
	font-weight: 500;
	font-size: 0.875rem;
}

/* ──────────────────────────────────────────────
   CFP
   ────────────────────────────────────────────── */

.goots-cfp__header {
	display: flex;
	align-items: center;
	gap: 1rem;
	margin-bottom: 1rem;
}

.goots-cfp__meta {
	display: flex;
	flex-wrap: wrap;
	gap: 1.5rem;
	margin: 1rem 0;
	font-size: 0.875rem;
}

.goots-cfp__track-list,
.goots-cfp__format-list {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	margin-top: 0.5rem;
}

.goots-cfp__form-wrapper {
	margin-top: 2rem;
}

.goots-cfp__success {
	text-align: center;
	padding: 2rem;
}

/* ──────────────────────────────────────────────
   Shared: Forms
   ────────────────────────────────────────────── */

.goots-form-row {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 0.75rem;
}

@media (max-width: 480px) {
	.goots-form-row {
		grid-template-columns: 1fr;
	}
}

.goots-form-field {
	margin-bottom: 0.75rem;
}

.goots-form-field label {
	display: block;
	margin-bottom: 0.25rem;
	font-weight: 500;
	font-size: 0.875rem;
}

.goots-form-field input,
.goots-form-field select,
.goots-form-field textarea {
	width: 100%;
	padding: 0.5rem 0.75rem;
	border: 1px solid var(--goots-border);
	border-radius: var(--goots-radius);
	font-size: 0.875rem;
	font-family: inherit;
	transition: border-color 0.15s;
}

.goots-form-field input:focus,
.goots-form-field select:focus,
.goots-form-field textarea:focus {
	outline: none;
	border-color: var(--goots-primary);
	box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.15);
}

.goots-form-actions {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	margin-top: 1rem;
}

.goots-fieldset {
	border: 1px solid var(--goots-border);
	border-radius: var(--goots-radius);
	padding: 1.25rem;
	margin: 0 0 1.5rem;
}

.goots-fieldset legend {
	font-weight: 600;
	padding: 0 0.5rem;
}

.goots-fieldset__desc {
	font-size: 0.875rem;
	color: var(--goots-text-muted);
	margin: 0 0 1rem;
}

.goots-required {
	color: var(--goots-danger-text);
}

.goots-checkbox-group {
	display: flex;
	flex-direction: column;
	gap: 0.375rem;
}

.goots-checkbox-label {
	display: flex;
	align-items: center;
	gap: 0.5rem;
	font-size: 0.875rem;
	cursor: pointer;
}

/* ──────────────────────────────────────────────
   Shared: Badges
   ────────────────────────────────────────────── */

.goots-badge {
	display: inline-block;
	padding: 0.125rem 0.625rem;
	border-radius: 9999px;
	font-size: 0.75rem;
	font-weight: 600;
	line-height: 1.5;
}

.goots-badge--open,
.goots-badge--success { background-color: var(--goots-success-bg); color: var(--goots-success-text); }
.goots-badge--closed,
.goots-badge--danger { background-color: var(--goots-danger-bg); color: var(--goots-danger-text); }
.goots-badge--paused,
.goots-badge--warning { background-color: var(--goots-warning-bg); color: var(--goots-warning-text); }
.goots-badge--info { background-color: var(--goots-info-bg); color: var(--goots-info-text); }
.goots-badge--neutral { background-color: var(--goots-bg-muted); color: var(--goots-text-muted); }

/* ──────────────────────────────────────────────
   Shared: Buttons
   ────────────────────────────────────────────── */

.goots-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 0.5rem 1.25rem;
	border: none;
	border-radius: var(--goots-radius);
	font-size: 0.875rem;
	font-weight: 600;
	font-family: inherit;
	cursor: pointer;
	transition: background-color 0.15s, opacity 0.15s;
	text-decoration: none;
}

.goots-btn:disabled {
	opacity: 0.5;
	cursor: not-allowed;
}

.goots-btn--primary {
	background-color: var(--goots-primary);
	color: white;
}

.goots-btn--primary:hover:not(:disabled) {
	background-color: var(--goots-primary-hover);
}

.goots-btn--secondary {
	background-color: var(--goots-bg-muted);
	color: var(--goots-text);
	border: 1px solid var(--goots-border);
}

.goots-btn--secondary:hover:not(:disabled) {
	background-color: var(--goots-border);
}

.goots-btn--full {
	width: 100%;
}

/* ──────────────────────────────────────────────
   Shared: Messages
   ────────────────────────────────────────────── */

.goots-error {
	padding: 0.75rem 1rem;
	background-color: var(--goots-danger-bg);
	color: var(--goots-danger-text);
	border-radius: var(--goots-radius);
	font-size: 0.875rem;
}

.goots-notice {
	padding: 1rem 1.25rem;
	background-color: var(--goots-bg-muted);
	border: 1px solid var(--goots-border);
	border-radius: var(--goots-radius);
	font-size: 0.875rem;
}

.goots-notice--warning {
	background-color: var(--goots-warning-bg);
	color: var(--goots-warning-text);
	border-color: transparent;
}

.goots-empty {
	padding: 2rem;
	text-align: center;
	color: var(--goots-text-muted);
}

/* ──────────────────────────────────────────────
   Skeleton loading
   ────────────────────────────────────────────── */

.goots-skeleton__item {
	height: 60px;
	border-radius: var(--goots-radius);
	background: linear-gradient(90deg, var(--goots-bg-muted) 25%, var(--goots-border) 50%, var(--goots-bg-muted) 75%);
	background-size: 200% 100%;
	animation: goots-shimmer 1.5s ease-in-out infinite;
	margin-bottom: 0.75rem;
}

@keyframes goots-shimmer {
	0% { background-position: 200% 0; }
	100% { background-position: -200% 0; }
}

/* ──────────────────────────────────────────────
   Conference Hero
   ────────────────────────────────────────────── */

.goots-conference-hero {
	background-size: cover;
	background-position: center;
	padding: 5rem 1.5rem;
	border-radius: var(--goots-radius-lg);
}

.goots-conference-hero--has-banner { color: #fff; }

.goots-conference-hero__inner {
	max-width: 880px;
	margin: 0 auto;
}

.goots-conference-hero--align-left   .goots-conference-hero__inner { text-align: left; margin-left: 0; }
.goots-conference-hero--align-center .goots-conference-hero__inner { text-align: center; }
.goots-conference-hero--align-right  .goots-conference-hero__inner { text-align: right; margin-right: 0; }

.goots-conference-hero__title {
	font-size: clamp(2rem, 5vw, 3.25rem);
	font-weight: 800;
	margin: 0 0 1rem;
	line-height: 1.1;
}

.goots-conference-hero__meta {
	display: flex;
	flex-wrap: wrap;
	gap: 1rem 1.5rem;
	justify-content: inherit;
	font-size: 1rem;
	opacity: 0.9;
}

.goots-conference-hero--align-center .goots-conference-hero__meta { justify-content: center; }

.goots-conference-hero__countdown {
	display: inline-flex;
	gap: 1rem;
	margin: 1.5rem 0 0;
	padding: 1rem 1.5rem;
	background: rgba(255, 255, 255, 0.1);
	border-radius: var(--goots-radius);
	backdrop-filter: blur(8px);
}

.goots-conference-hero:not(.goots-conference-hero--has-banner) .goots-conference-hero__countdown {
	background: var(--goots-bg-muted);
}

.goots-countdown__unit {
	display: flex;
	flex-direction: column;
	align-items: center;
	min-width: 56px;
	font-variant-numeric: tabular-nums;
}

.goots-countdown__unit span {
	font-size: 1.75rem;
	font-weight: 800;
	line-height: 1;
}

.goots-countdown__unit small {
	font-size: 0.6875rem;
	text-transform: uppercase;
	letter-spacing: 0.05em;
	opacity: 0.8;
	margin-top: 0.25rem;
}

.goots-conference-hero__cta {
	margin-top: 1.75rem;
}

.goots-btn--lg {
	padding: 0.875rem 2rem;
	font-size: 1rem;
}

/* ──────────────────────────────────────────────
   Buy Tickets (pricing cards)
   ────────────────────────────────────────────── */

.goots-buy-tickets__grid {
	display: grid;
	gap: 1.5rem;
}

.goots-buy-tickets__card {
	position: relative;
	border: 1px solid var(--goots-border);
	border-radius: var(--goots-radius-lg);
	padding: 1.75rem 1.5rem;
	display: flex;
	flex-direction: column;
	text-align: center;
	background: var(--goots-bg);
}

.goots-buy-tickets__card--featured {
	border: 2px solid var(--goots-primary);
	box-shadow: 0 8px 24px rgba(99, 102, 241, 0.15);
	transform: translateY(-4px);
}

.goots-buy-tickets__featured-flag {
	position: absolute;
	top: -0.75rem;
	left: 50%;
	transform: translateX(-50%);
	background: var(--goots-primary);
	color: #fff;
	padding: 0.25rem 0.75rem;
	border-radius: 999px;
	font-size: 0.6875rem;
	font-weight: 700;
	letter-spacing: 0.05em;
	text-transform: uppercase;
}

.goots-buy-tickets__name {
	font-size: 1.125rem;
	margin: 0 0 0.5rem;
	font-weight: 700;
}

.goots-buy-tickets__price {
	font-size: 2.5rem;
	font-weight: 800;
	margin: 0.5rem 0 0.75rem;
	color: var(--goots-text);
	line-height: 1;
}

.goots-buy-tickets__currency {
	font-size: 1.25rem;
	vertical-align: super;
	margin-right: 2px;
	color: var(--goots-text-muted);
}

.goots-buy-tickets__desc {
	color: var(--goots-text-muted);
	font-size: 0.875rem;
	margin: 0 0 1rem;
	min-height: 2.5rem;
}

.goots-buy-tickets__features {
	list-style: none;
	padding: 0;
	margin: 0 0 1.5rem;
	flex-grow: 1;
	font-size: 0.875rem;
	color: var(--goots-text);
}

.goots-buy-tickets__features li {
	padding: 0.375rem 0;
	border-top: 1px solid var(--goots-border);
}

.goots-buy-tickets__features li:first-child {
	border-top: none;
}

/* ──────────────────────────────────────────────
   Speakers Lineup
   ────────────────────────────────────────────── */

.goots-speakers-grid {
	display: grid;
	gap: 1.5rem;
}

.goots-speaker-card {
	text-align: center;
	padding: 1.25rem;
	border: 1px solid var(--goots-border);
	border-radius: var(--goots-radius-lg);
	background: var(--goots-bg);
}

.goots-speaker-card__avatar img,
.goots-speaker-card__avatar .goots-avatar {
	width: 96px;
	height: 96px;
	border-radius: 50%;
	object-fit: cover;
	margin: 0 auto 0.75rem;
	display: block;
}

.goots-avatar--lg {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	background: var(--goots-bg-muted);
	color: var(--goots-text-muted);
	font-weight: 700;
	font-size: 1.5rem;
}

.goots-speaker-card__name {
	margin: 0;
	font-size: 1.0625rem;
	font-weight: 700;
}

.goots-speaker-card__company {
	color: var(--goots-text-muted);
	font-size: 0.8125rem;
	margin: 0.25rem 0 0.75rem;
}

.goots-speaker-card__bio {
	color: var(--goots-text);
	font-size: 0.875rem;
	margin: 0.5rem 0 0.75rem;
	line-height: 1.5;
}

.goots-speaker-card__sessions {
	list-style: none;
	padding: 0.75rem 0 0;
	margin: 0.75rem 0 0;
	border-top: 1px solid var(--goots-border);
	font-size: 0.8125rem;
	color: var(--goots-text-muted);
}

.goots-speaker-card__sessions li {
	padding: 0.125rem 0;
}

/* Linked conference cards (anchor variant). */
a.goots-conference-card,
a.goots-conference-card:visited {
	color: inherit;
	text-decoration: none;
	display: block;
	transition: transform 0.15s ease, box-shadow 0.15s ease;
}
a.goots-conference-card:hover {
	transform: translateY(-2px);
	box-shadow: 0 8px 24px rgba(0, 0, 0, 0.08);
}

/* ──────────────────────────────────────────────
   ============================================
   Phase 3 — Block layout / variant polish
   ============================================
   Everything below was added to make Phase 2's
   semantic wrapper classes actually do something
   visually out of the box.
   ──────────────────────────────────────────── */

/* ──────────────────────────────────────────────
   Agenda — layout & grouping variants
   ────────────────────────────────────────────── */

.goots-agenda { display: block; }

.goots-agenda__group { margin-bottom: 2rem; }
.goots-agenda__group:last-child { margin-bottom: 0; }

.goots-agenda__group-heading {
	margin: 0 0 1rem;
	padding-bottom: 0.5rem;
	border-bottom: 2px solid var(--goots-primary);
}

/* Group spacing modifier */
.goots-agenda--group-day    .goots-agenda__group { margin-bottom: 2.5rem; }
.goots-agenda--group-track  .goots-agenda__group { margin-bottom: 2rem; }
.goots-agenda--group-room   .goots-agenda__group { margin-bottom: 1.5rem; }
.goots-agenda--group-none   .goots-agenda__group-heading { display: none; }

/* Layout: TIMELINE — left rail with a vertical line and time pills. */
.goots-agenda--layout-timeline .goots-agenda__sessions {
	position: relative;
	padding-left: 1.5rem;
}
.goots-agenda--layout-timeline .goots-agenda__sessions::before {
	content: "";
	position: absolute;
	left: 0.4rem;
	top: 0.5rem;
	bottom: 0.5rem;
	width: 2px;
	background: var(--goots-border);
}
.goots-agenda--layout-timeline .goots-agenda__session {
	position: relative;
	border: 1px solid var(--goots-border);
	background: var(--goots-bg);
}
.goots-agenda--layout-timeline .goots-agenda__session::before {
	content: "";
	position: absolute;
	left: -1.6rem;
	top: 1.25rem;
	width: 0.55rem;
	height: 0.55rem;
	border-radius: 50%;
	background: var(--goots-primary);
	box-shadow: 0 0 0 3px var(--goots-bg);
}
.goots-agenda--layout-timeline .goots-agenda__time {
	background: var(--goots-bg-muted);
	border-radius: 999px;
	padding: 0.25rem 0.75rem;
	min-width: 70px;
	height: max-content;
}

/* Layout: LIST — dense rows, minimal chrome. */
.goots-agenda--layout-list .goots-agenda__session {
	border: none;
	border-bottom: 1px solid var(--goots-border);
	border-radius: 0;
	padding: 0.75rem 0;
	gap: 1rem;
}
.goots-agenda--layout-list .goots-agenda__session:last-child {
	border-bottom: none;
}
.goots-agenda--layout-list .goots-agenda__sessions {
	gap: 0;
}

/* Layout: CARDS — roomy, elevated. */
.goots-agenda--layout-cards .goots-agenda__sessions {
	display: grid;
	gap: 1rem;
	grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
}
.goots-agenda--layout-cards .goots-agenda__session {
	display: flex;
	flex-direction: column;
	padding: 1.25rem;
	gap: 0.75rem;
	background: var(--goots-bg);
	box-shadow: var(--goots-shadow-sm);
	transition: transform var(--goots-transition), box-shadow var(--goots-transition);
}
.goots-agenda--layout-cards .goots-agenda__session:hover {
	transform: translateY(-2px);
	box-shadow: var(--goots-shadow-md);
}
.goots-agenda--layout-cards .goots-agenda__time {
	flex-direction: row;
	align-items: center;
	gap: 0.5rem;
	min-width: 0;
}

/* ──────────────────────────────────────────────
   Speakers Lineup — layout & avatar shape
   ────────────────────────────────────────────── */

/* Avatar shape modifiers */
.goots-avatar-shape-circle  .goots-speaker-card__avatar img,
.goots-avatar-shape-circle  .goots-speaker-card__avatar .goots-avatar { border-radius: 50%; }
.goots-avatar-shape-rounded .goots-speaker-card__avatar img,
.goots-avatar-shape-rounded .goots-speaker-card__avatar .goots-avatar { border-radius: var(--goots-radius-lg); }
.goots-avatar-shape-square  .goots-speaker-card__avatar img,
.goots-avatar-shape-square  .goots-speaker-card__avatar .goots-avatar { border-radius: 0; }

/* Layout: GRID is the default — already handled. */
.goots-speakers-layout-grid .goots-speakers-grid { /* default grid */ }

/* Layout: LIST — wide rows. */
.goots-speakers-layout-list .goots-speakers-grid {
	display: flex;
	flex-direction: column;
	gap: 0.75rem;
}
.goots-speakers-layout-list .goots-speaker-card {
	display: grid;
	grid-template-columns: auto 1fr;
	gap: 1rem;
	text-align: left;
	align-items: center;
	padding: 1rem;
}
.goots-speakers-layout-list .goots-speaker-card__avatar img,
.goots-speakers-layout-list .goots-speaker-card__avatar .goots-avatar {
	width: 64px;
	height: 64px;
	margin: 0;
}
.goots-speakers-layout-list .goots-speaker-card__sessions {
	grid-column: 2;
	border-top: 0;
	padding-top: 0;
	margin-top: 0.25rem;
}

/* Layout: CAROUSEL — horizontal scroll with snap. */
.goots-speakers-layout-carousel .goots-speakers-grid {
	display: flex;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	gap: 1rem;
	padding-bottom: 0.75rem;
	-webkit-overflow-scrolling: touch;
}
.goots-speakers-layout-carousel .goots-speaker-card {
	flex: 0 0 min(80vw, 280px);
	scroll-snap-align: start;
}

/* Speaker social row (rendered when showSocial is on). */
.goots-speaker-card__social {
	list-style: none;
	padding: 0.75rem 0 0;
	margin: 0.75rem 0 0;
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	justify-content: center;
	border-top: 1px solid var(--goots-border);
}
.goots-speaker-card__social li { margin: 0; }
.goots-speaker-card__social a {
	font-size: 0.75rem;
	color: var(--goots-primary);
	text-decoration: none;
	padding: 0.125rem 0.5rem;
	border-radius: 999px;
	background: var(--goots-primary-soft);
}
.goots-speaker-card__social a:hover {
	background: var(--goots-primary);
	color: #fff;
}

/* ──────────────────────────────────────────────
   Sponsor Tiers — layout variants
   ────────────────────────────────────────────── */

.goots-sponsor-tiers--layout-grid .goots-sponsor-grid { /* default */ }

/* List layout — wide rows. */
.goots-sponsor-tiers--layout-list .goots-sponsor-grid {
	display: flex;
	flex-direction: column;
	grid-template-columns: none;
	gap: 0.75rem;
}
.goots-sponsor-tiers--layout-list .goots-sponsor-card {
	display: grid;
	grid-template-columns: auto 1fr auto;
	align-items: center;
	gap: 1rem;
	text-align: left;
	padding: 1rem 1.25rem;
}
.goots-sponsor-tiers--layout-list .goots-sponsor-card__badge {
	margin: 0;
}
.goots-sponsor-tiers--layout-list .goots-sponsor-card__price {
	margin: 0;
	font-size: 1.25rem;
	white-space: nowrap;
}

/* Comparison layout — table-like, equal columns w/ aligned baseline. */
.goots-sponsor-tiers--layout-comparison .goots-sponsor-grid {
	align-items: stretch;
}
.goots-sponsor-tiers--layout-comparison .goots-sponsor-card {
	display: flex;
	flex-direction: column;
	justify-content: flex-start;
	background: var(--goots-bg);
	box-shadow: var(--goots-shadow-sm);
}

/* Featured highlight (applied both by sponsor-tiers block and conference-detail). */
.goots-sponsor-tier--featured,
.goots-sponsor--featured {
	border-width: 3px;
	box-shadow: var(--goots-shadow-md);
	transform: translateY(-2px);
	position: relative;
}

.goots-sponsor-card__featured-flag {
	position: absolute;
	top: -0.6rem;
	left: 50%;
	transform: translateX(-50%);
	background: var(--tier-color, var(--goots-primary));
	color: #fff;
	padding: 0.2rem 0.65rem;
	border-radius: 999px;
	font-size: 0.6875rem;
	font-weight: 700;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	white-space: nowrap;
}

.goots-sponsor-card__desc {
	font-size: 0.875rem;
	color: var(--goots-text-muted);
	margin: 0.5rem 0;
}

/* Sponsor add-on cards (small variant) */
.goots-sponsor-addons__title {
	margin: 0 0 0.75rem;
	font-size: 1rem;
}
.goots-addon-card,
.goots-sponsor-addon-card {
	border: 1px solid var(--goots-border);
	border-radius: var(--goots-radius);
	padding: 1rem;
	background: var(--goots-bg);
	transition: box-shadow var(--goots-transition);
}
.goots-addon-card:hover,
.goots-sponsor-addon-card:hover {
	box-shadow: var(--goots-shadow-sm);
}
.goots-addon-card__name,
.goots-sponsor-addon-card__name {
	margin: 0 0 0.25rem;
	font-size: 0.9375rem;
}
.goots-addon-card__price,
.goots-sponsor-addon-card__price {
	margin: 0;
	font-weight: 700;
	color: var(--goots-primary);
}
.goots-sponsor-addon-card__desc {
	font-size: 0.8125rem;
	color: var(--goots-text-muted);
	margin: 0.5rem 0 0;
}
.goots-sponsor-addon-grid {
	display: grid;
	gap: 1rem;
	grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
}

/* ──────────────────────────────────────────────
   Buy Tickets — layout, status & featured
   ────────────────────────────────────────────── */

.goots-buy-tickets--layout-grid .goots-buy-tickets__grid { /* default */ }

/* List layout — horizontal row per ticket. */
.goots-buy-tickets--layout-list .goots-buy-tickets__grid {
	display: flex;
	flex-direction: column;
	grid-template-columns: none;
	gap: 0.75rem;
}
.goots-buy-tickets--layout-list .goots-buy-tickets__card {
	display: grid;
	grid-template-columns: 1fr auto auto;
	align-items: center;
	gap: 1rem;
	text-align: left;
	padding: 1rem 1.25rem;
}
.goots-buy-tickets--layout-list .goots-buy-tickets__price {
	font-size: 1.5rem;
	margin: 0;
}
.goots-buy-tickets--layout-list .goots-buy-tickets__features {
	grid-column: 1 / -1;
	border-top: 1px solid var(--goots-border);
	margin: 0.5rem 0 0;
	padding-top: 0.5rem;
}
.goots-buy-tickets--layout-list .goots-buy-tickets__desc { min-height: 0; }

/* Carousel layout — horizontal scroll w/ snap. */
.goots-buy-tickets--layout-carousel .goots-buy-tickets__grid {
	display: flex;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	gap: 1rem;
	padding-bottom: 0.75rem;
	-webkit-overflow-scrolling: touch;
}
.goots-buy-tickets--layout-carousel .goots-buy-tickets__card {
	flex: 0 0 min(80vw, 320px);
	scroll-snap-align: start;
}

/* Comparison layout — equal height columns w/ feature lists aligned. */
.goots-buy-tickets--layout-comparison .goots-buy-tickets__grid {
	align-items: stretch;
}
.goots-buy-tickets--layout-comparison .goots-buy-tickets__card {
	box-shadow: var(--goots-shadow-sm);
}

/* Status badge positioning */
.goots-buy-tickets__status-badge {
	position: absolute;
	top: 0.75rem;
	right: 0.75rem;
	background: var(--goots-bg-muted);
	color: var(--goots-text-muted);
	padding: 0.2rem 0.55rem;
	border-radius: 999px;
	font-size: 0.6875rem;
	font-weight: 600;
	letter-spacing: 0.04em;
	text-transform: uppercase;
}
.goots-buy-tickets__status-badge--sold_out {
	background: var(--goots-danger-bg);
	color: var(--goots-danger-text);
}
.goots-buy-tickets__status-badge--expired {
	background: var(--goots-bg-muted);
	color: var(--goots-text-muted);
}
.goots-buy-tickets__status-badge--upcoming {
	background: var(--goots-info-bg);
	color: var(--goots-info-text);
}

/* Ticket status modifiers (applied at card root by both buy-tickets and
   conference-detail). */
.goots-ticket--sold-out,
.goots-ticket--expired {
	opacity: 0.7;
	background: var(--goots-bg-muted);
}
.goots-ticket--sold-out .goots-buy-tickets__price,
.goots-ticket--expired .goots-buy-tickets__price {
	color: var(--goots-text-muted);
	text-decoration: line-through;
}
.goots-ticket--upcoming {
	border-style: dashed;
	background: linear-gradient(180deg, var(--goots-bg) 0%, var(--goots-bg-muted) 100%);
}
.goots-ticket--available {
	/* default appearance */
}

/* Featured ticket — for both .goots-buy-tickets__card and conference-detail's
   .goots-ticket-card */
.goots-ticket--featured {
	border: 2px solid var(--goots-primary);
	box-shadow: var(--goots-shadow-md);
}

/* ──────────────────────────────────────────────
   Conference List — layout, card style, banner
   ────────────────────────────────────────────── */

.goots-conference-list--layout-grid .goots-conference-grid { /* default */ }

/* List layout — full-width horizontal rows. */
.goots-conference-list--layout-list .goots-conference-grid {
	display: flex;
	flex-direction: column;
	grid-template-columns: none;
	gap: 1rem;
}
.goots-conference-list--layout-list .goots-conference-card {
	display: grid;
	grid-template-columns: minmax(180px, 240px) 1fr;
	align-items: stretch;
}
.goots-conference-list--layout-list .goots-conference-card:not(:has(.goots-conference-card__image)) {
	grid-template-columns: 1fr;
}
.goots-conference-list--layout-list .goots-conference-card__image img {
	height: 100%;
	min-height: 160px;
}

/* Carousel layout — horizontal scroll with snap. */
.goots-conference-list--layout-carousel .goots-conference-grid {
	display: flex;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	gap: 1rem;
	padding-bottom: 0.75rem;
	-webkit-overflow-scrolling: touch;
}
.goots-conference-list--layout-carousel .goots-conference-card {
	flex: 0 0 min(85vw, 320px);
	scroll-snap-align: start;
}

/* Card style modifiers */
.goots-conference-list--card-compact .goots-conference-card__body {
	padding: 1rem;
}
.goots-conference-list--card-compact .goots-conference-card__description,
.goots-conference-list--card-compact .goots-conference-card__image {
	display: none;
}

.goots-conference-list--card-detailed .goots-conference-card__body {
	padding: 1.5rem;
}

.goots-conference-list--card-image_top .goots-conference-card {
	display: flex;
	flex-direction: column;
}
.goots-conference-list--card-image_top .goots-conference-card__image {
	order: -1;
}

/* Banner height modifiers (apply on the card's image inside the list). */
.goots-conference-list--banner-small  .goots-conference-card__image img { height: var(--goots-banner-small); }
.goots-conference-list--banner-medium .goots-conference-card__image img { height: var(--goots-banner-medium); }
.goots-conference-list--banner-large  .goots-conference-card__image img { height: var(--goots-banner-large); }

/* Per-card banner overrides (if a card opts in) */
.goots-conference-card--banner-small  .goots-conference-card__image img { height: var(--goots-banner-small); }
.goots-conference-card--banner-medium .goots-conference-card__image img { height: var(--goots-banner-medium); }
.goots-conference-card--banner-large  .goots-conference-card__image img { height: var(--goots-banner-large); }

/* Featured conference card */
.goots-conference-card--featured {
	border: 2px solid var(--goots-primary);
	box-shadow: var(--goots-shadow-md);
	position: relative;
}
.goots-conference-card--featured::after {
	content: "Featured";
	position: absolute;
	top: 0.75rem;
	left: 0.75rem;
	background: var(--goots-primary);
	color: #fff;
	padding: 0.2rem 0.65rem;
	border-radius: 999px;
	font-size: 0.6875rem;
	font-weight: 700;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	z-index: 1;
}

/* Meta icon spacing */
.goots-conference-card__meta .goots-icon {
	margin-right: 0.375rem;
	display: inline-block;
}

/* ──────────────────────────────────────────────
   Conference Detail — stacked / tabs / accordion
   ────────────────────────────────────────────── */

.goots-conference-detail__header {
	margin-bottom: 1.5rem;
}

.goots-conference-detail__title {
	margin: 0 0 0.5rem;
	font-size: clamp(1.5rem, 4vw, 2.25rem);
	line-height: 1.15;
}

.goots-conference-detail__section-title {
	margin: 0 0 1rem;
	padding-bottom: 0.5rem;
	border-bottom: 1px solid var(--goots-border);
}

.goots-conference-detail__description {
	font-size: 1rem;
	line-height: 1.6;
	color: var(--goots-text);
}

.goots-conference-detail__empty {
	color: var(--goots-text-muted);
	font-style: italic;
	margin: 0;
}

/* Stacked (default): no extra treatment needed. */

/* Tabs layout — visually present as a tab strip even without JS;
   sections collapse into a stack on narrow screens. */
.goots-conference-detail--layout-tabs .goots-conference-detail__section {
	margin-top: 0;
	padding: 1.5rem;
	border: 1px solid var(--goots-border);
	border-radius: var(--goots-radius-lg);
	background: var(--goots-bg);
	margin-bottom: 1rem;
}
.goots-conference-detail--layout-tabs .goots-conference-detail__section-title {
	margin-top: 0;
}

/* Accordion layout — sections render as expandable cards (visual cue only;
   JS would wire up click-to-toggle). */
.goots-conference-detail--layout-accordion .goots-conference-detail__section {
	margin-top: 0;
	border: 1px solid var(--goots-border);
	border-radius: var(--goots-radius);
	margin-bottom: 0.5rem;
	overflow: hidden;
}
.goots-conference-detail--layout-accordion .goots-conference-detail__section-title {
	margin: 0;
	padding: 0.875rem 1.25rem;
	background: var(--goots-bg-muted);
	border-bottom: 1px solid var(--goots-border);
	cursor: pointer;
	display: flex;
	justify-content: space-between;
	align-items: center;
}
.goots-conference-detail--layout-accordion .goots-conference-detail__section-title::after {
	content: "▾";
	color: var(--goots-text-muted);
}
.goots-conference-detail--layout-accordion .goots-conference-detail__section > *:not(.goots-conference-detail__section-title) {
	padding: 1.25rem;
}

/* ──────────────────────────────────────────────
   Conference Hero — layout variants
   ────────────────────────────────────────────── */

.goots-conference-hero { position: relative; }

/* Layout: CENTERED is the default and inherits existing rules. */

/* Layout: LEFT — text aligned left, narrow inner column on the left. */
.goots-hero--layout-left .goots-conference-hero__inner {
	max-width: 720px;
	margin-left: 0;
	text-align: left;
}
.goots-hero--layout-left .goots-conference-hero__meta { justify-content: flex-start; }

/* Layout: SPLIT — left text column, right negative space (so an editor can
   overlay a sibling block). On mobile this collapses. */
.goots-hero--layout-split .goots-conference-hero__inner {
	max-width: 600px;
	margin-left: 0;
	text-align: left;
}
@media (min-width: 1024px) {
	.goots-hero--layout-split { padding-right: 50%; }
}

/* Layout: MINIMAL — slimmer vertical padding, smaller title. */
.goots-hero--layout-minimal {
	padding: 2.5rem 1.5rem;
}
.goots-hero--layout-minimal .goots-conference-hero__title {
	font-size: clamp(1.5rem, 3vw, 2.25rem);
}
.goots-hero--layout-minimal .goots-conference-hero__countdown {
	padding: 0.5rem 0.75rem;
}

/* Countdown style variants */
.goots-countdown--compact .goots-countdown__unit span { font-size: 1.125rem; }
.goots-countdown--compact .goots-countdown__unit { min-width: 38px; }

.goots-countdown--inline {
	display: inline-flex;
	gap: 0.5rem;
	padding: 0.4rem 0.75rem;
}
.goots-countdown--inline .goots-countdown__unit {
	flex-direction: row;
	align-items: baseline;
	min-width: 0;
	gap: 0.25rem;
}
.goots-countdown--inline .goots-countdown__unit span { font-size: 1.125rem; }
.goots-countdown--inline .goots-countdown__unit small { margin-top: 0; }

/* Scroll-down indicator */
.goots-hero__scroll {
	position: absolute;
	left: 50%;
	bottom: 1rem;
	transform: translateX(-50%);
	font-size: 1.5rem;
	color: inherit;
	opacity: 0.7;
	text-decoration: none;
	line-height: 1;
	animation: goots-scroll-bounce 1.8s ease-in-out infinite;
}
.goots-hero__scroll:hover { opacity: 1; }

@keyframes goots-scroll-bounce {
	0%, 100% { transform: translate(-50%, 0); }
	50%      { transform: translate(-50%, 6px); }
}

@media (prefers-reduced-motion: reduce) {
	.goots-hero__scroll { animation: none; }
}

/* ──────────────────────────────────────────────
   Auth Gate — layout (tabs / side_by_side / register_first)
   ────────────────────────────────────────────── */

/* When tabs layout is active and mode=both we already render the tab strip. */
.goots-auth-gate__body { display: block; }
.goots-auth-gate__pane { padding: 0; }
.goots-auth-gate__heading { margin: 0 0 1rem; }

/* tabs body — single column, just shows the active pane. */
.goots-auth-gate__body--tabs .goots-auth-gate__pane { display: block; }
.goots-auth-gate__body--tabs .goots-auth-gate__pane[hidden] { display: none; }

/* side_by_side body — two columns on tablet+, stack on mobile. */
.goots-auth-gate__body--side_by_side {
	display: grid;
	grid-template-columns: 1fr;
	gap: 1.5rem;
}
@media (min-width: 768px) {
	.goots-auth-gate {
		max-width: 860px;
	}
	.goots-auth-gate__body--side_by_side {
		grid-template-columns: 1fr 1fr;
	}
	.goots-auth-gate__body--side_by_side .goots-auth-gate__pane {
		padding: 1.25rem;
		border: 1px solid var(--goots-border);
		border-radius: var(--goots-radius-lg);
		background: var(--goots-bg);
	}
}

/* register_first body — register on top, login below. */
.goots-auth-gate__body--register_first {
	display: flex;
	flex-direction: column;
	gap: 1.5rem;
}
.goots-auth-gate__body--register_first .goots-auth-gate__pane--register { order: -1; }

/* Forgot-password sub-form */
.goots-auth-form--forgot {
	margin-top: 0.75rem;
	padding: 1rem;
	background: var(--goots-bg-muted);
	border-radius: var(--goots-radius);
}
.goots-auth-forgot-link a {
	font-size: 0.8125rem;
	color: var(--goots-primary);
	text-decoration: none;
}
.goots-auth-forgot-link a:hover { text-decoration: underline; }

.goots-auth-success,
.goots-auth-forgot-success {
	padding: 0.75rem;
	background-color: var(--goots-success-bg);
	color: var(--goots-success-text);
	border-radius: var(--goots-radius);
	font-size: 0.875rem;
	margin-bottom: 0.75rem;
}

/* ──────────────────────────────────────────────
   My Registrations — layout & card style
   ────────────────────────────────────────────── */

.goots-my-registrations__title {
	margin: 0 0 1rem;
}

.goots-my-registrations__list {
	display: block;
}

.goots-my-registrations--list .goots-my-registrations__list {
	display: flex;
	flex-direction: column;
	gap: 0.75rem;
}

.goots-my-registrations--grid .goots-my-registrations__list {
	display: grid;
	gap: 0.75rem;
	grid-template-columns: 1fr;
}
@media (min-width: 640px) {
	.goots-my-registrations--grid[data-columns="2"] .goots-my-registrations__list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.goots-my-registrations--grid[data-columns="3"] .goots-my-registrations__list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.goots-my-registrations--grid[data-columns="4"] .goots-my-registrations__list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 1024px) {
	.goots-my-registrations--grid[data-columns="3"] .goots-my-registrations__list { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.goots-my-registrations--grid[data-columns="4"] .goots-my-registrations__list { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

/* Card style modifiers */
.goots-registration-card {
	background: var(--goots-bg);
	transition: box-shadow var(--goots-transition), transform var(--goots-transition);
}
.goots-registration-card:hover {
	box-shadow: var(--goots-shadow-sm);
}
.goots-registration-card__main {
	display: flex;
	flex-direction: column;
	gap: 0.125rem;
}
.goots-registration-card__conference {
	font-size: 0.9375rem;
	color: var(--goots-text);
	font-weight: 500;
}
.goots-registration-card__side {
	display: flex;
	flex-direction: column;
	align-items: flex-end;
	gap: 0.25rem;
}
.goots-registration-card--compact {
	padding: 0.625rem 1rem;
}
.goots-registration-card--detailed {
	padding: 1rem 1.25rem;
}
.goots-registration-card__actions .goots-btn--small {
	padding: 0.25rem 0.625rem;
	font-size: 0.75rem;
}

/* Table layout */
.goots-my-registrations__table {
	width: 100%;
	border-collapse: collapse;
	font-size: 0.875rem;
}
.goots-my-registrations__table th,
.goots-my-registrations__table td {
	padding: 0.625rem 0.75rem;
	text-align: left;
	border-bottom: 1px solid var(--goots-border);
}
.goots-my-registrations__table th {
	font-weight: 600;
	background: var(--goots-bg-muted);
	color: var(--goots-text-muted);
	font-size: 0.75rem;
	text-transform: uppercase;
	letter-spacing: 0.04em;
}
.goots-my-registrations__table tbody tr:hover {
	background: var(--goots-bg-muted);
}

.goots-my-registrations__empty p {
	margin: 0;
	color: var(--goots-text-muted);
}

/* ──────────────────────────────────────────────
   Account Profile — layout variants
   ────────────────────────────────────────────── */

.goots-account-profile__title { margin: 0 0 1.25rem; }
.goots-account-profile__info { display: block; }
.goots-account-profile__password { margin-top: 1rem; }
.goots-account-profile__password a {
	color: var(--goots-primary);
	text-decoration: none;
	font-size: 0.875rem;
}
.goots-account-profile__password a:hover { text-decoration: underline; }

/* two-column layout swap */
.goots-account-profile--two_column {
	max-width: 720px;
}
.goots-account-profile--single_column {
	max-width: 550px;
}

.goots-profile-error {
	color: var(--goots-danger-text);
	font-size: 0.875rem;
	font-weight: 500;
}

.goots-pw-status {
	font-size: 0.8125rem;
	color: var(--goots-text-muted);
}

/* ──────────────────────────────────────────────
   Custom Form — layout (stacked / accordion / tabs)
   ────────────────────────────────────────────── */

.goots-custom-form {
	max-width: 720px;
}

.goots-form__title {
	margin: 0 0 0.5rem;
}
.goots-form__description {
	color: var(--goots-text-muted);
	margin: 0 0 1.25rem;
	font-size: 0.9375rem;
}

.goots-form__progress {
	height: 4px;
	background: var(--goots-bg-muted);
	border-radius: 999px;
	margin: 0 0 1rem;
	overflow: hidden;
}
.goots-form__progress-bar {
	height: 100%;
	background: var(--goots-primary);
	width: 0%;
	transition: width 0.3s ease;
}

.goots-form__success {
	padding: 2rem;
	text-align: center;
	background: var(--goots-success-bg);
	color: var(--goots-success-text);
	border-radius: var(--goots-radius-lg);
}
.goots-form__success h4 {
	margin: 0 0 0.5rem;
}

.goots-form__auth-prompt {
	text-align: center;
}

.goots-form-field__hint {
	margin: 0.25rem 0 0;
	font-size: 0.75rem;
	color: var(--goots-text-light);
}

/* Form layout variants — accordion / tabs add chrome to the fieldsets so
   the visual hierarchy maps to what a JS enhancer would create. */
.goots-form--layout-stacked { /* default */ }

.goots-form--layout-accordion .goots-fieldset {
	padding: 0;
	overflow: hidden;
}
.goots-form--layout-accordion .goots-fieldset legend {
	padding: 0.75rem 1.25rem;
	background: var(--goots-bg-muted);
	width: 100%;
	box-sizing: border-box;
	margin: 0 0 1rem;
	border-bottom: 1px solid var(--goots-border);
}
.goots-form--layout-accordion .goots-fieldset > *:not(legend) {
	padding-left: 1.25rem;
	padding-right: 1.25rem;
}
.goots-form--layout-accordion .goots-fieldset > .goots-form-actions {
	padding-bottom: 1.25rem;
}

.goots-form--layout-tabs .goots-fieldset {
	border-top: 3px solid var(--goots-primary);
	padding-top: 1.5rem;
}
.goots-form--layout-tabs .goots-fieldset legend {
	color: var(--goots-primary);
	font-size: 0.875rem;
	text-transform: uppercase;
	letter-spacing: 0.05em;
}

.goots-form-field--consent label {
	font-weight: normal !important;
}

/* ──────────────────────────────────────────────
   Speaker CFP — deadline warnings, sub-blocks
   ────────────────────────────────────────────── */

.goots-speaker-cfp { max-width: 800px; }

.goots-cfp__title { margin: 0; }

.goots-cfp__description {
	margin: 1rem 0 1.5rem;
	color: var(--goots-text);
	line-height: 1.6;
}

.goots-cfp__deadline {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.5rem;
	padding: 0.625rem 0.875rem;
	background: var(--goots-bg-muted);
	border-radius: var(--goots-radius);
	font-size: 0.875rem;
}

.goots-cfp__limit {
	font-size: 0.875rem;
}

/* Deadline warning — urgent visual treatment. */
.goots-cfp-deadline--warning {
	background: var(--goots-warning-bg);
	color: var(--goots-warning-text);
	animation: goots-cfp-pulse 2s ease-in-out infinite;
}
.goots-cfp-deadline--past {
	background: var(--goots-danger-bg);
	color: var(--goots-danger-text);
}

.goots-cfp__countdown {
	margin-left: 0.25rem;
	font-variant-numeric: tabular-nums;
	font-weight: 600;
}

.goots-cfp__deadline-past {
	flex-basis: 100%;
	margin-top: 0.5rem;
	font-weight: 600;
}

.goots-cfp__tracks,
.goots-cfp__formats {
	margin-top: 1rem;
}
.goots-cfp__tracks h4,
.goots-cfp__formats h4 {
	margin: 0 0 0.5rem;
	font-size: 0.875rem;
	color: var(--goots-text-muted);
	text-transform: uppercase;
	letter-spacing: 0.04em;
}

.goots-cfp__my-submissions {
	margin: 1.5rem 0;
	padding: 1rem 1.25rem;
	background: var(--goots-bg-muted);
	border-radius: var(--goots-radius);
}
.goots-cfp__my-submissions h4 {
	margin: 0 0 0.5rem;
	font-size: 0.9375rem;
}
.goots-cfp__my-submissions-list {
	margin: 0;
	padding-left: 1.25rem;
	font-size: 0.875rem;
	color: var(--goots-text);
}

@keyframes goots-cfp-pulse {
	0%, 100% { box-shadow: 0 0 0 0 rgba(146, 64, 14, 0.25); }
	50%      { box-shadow: 0 0 0 6px rgba(146, 64, 14, 0); }
}

@media (prefers-reduced-motion: reduce) {
	.goots-cfp-deadline--warning { animation: none; }
}

/* ──────────────────────────────────────────────
   Shared hover polish (cards lift subtly)
   ────────────────────────────────────────────── */

.goots-ticket-card,
.goots-buy-tickets__card,
.goots-speaker-card,
.goots-conference-card,
.goots-sponsor-card {
	transition: transform var(--goots-transition), box-shadow var(--goots-transition);
}

.goots-ticket-card:hover,
.goots-buy-tickets__card:not(.goots-ticket--sold-out):not(.goots-ticket--expired):hover,
.goots-speaker-card:hover,
.goots-sponsor-card:hover {
	transform: translateY(-2px);
	box-shadow: var(--goots-shadow-md);
}

@media (prefers-reduced-motion: reduce) {
	.goots-ticket-card,
	.goots-buy-tickets__card,
	.goots-speaker-card,
	.goots-conference-card,
	.goots-sponsor-card,
	a.goots-conference-card {
		transition: none;
	}
	.goots-ticket-card:hover,
	.goots-buy-tickets__card:hover,
	.goots-speaker-card:hover,
	.goots-conference-card:hover,
	.goots-sponsor-card:hover,
	a.goots-conference-card:hover {
		transform: none;
	}
}

/* ──────────────────────────────────────────────
   Polished empty / error / notice states
   ────────────────────────────────────────────── */

.goots-empty {
	padding: 2.5rem 1.5rem;
	text-align: center;
	color: var(--goots-text-muted);
	background: var(--goots-bg-muted);
	border: 1px dashed var(--goots-border-strong);
	border-radius: var(--goots-radius-lg);
	font-size: 0.9375rem;
	line-height: 1.5;
}
.goots-empty::before {
	content: "";
	display: block;
	width: 32px;
	height: 32px;
	margin: 0 auto 0.75rem;
	border-radius: 50%;
	background: var(--goots-border);
	opacity: 0.6;
}

.goots-error {
	padding: 0.875rem 1.125rem;
	background-color: var(--goots-danger-bg);
	color: var(--goots-danger-text);
	border-radius: var(--goots-radius);
	font-size: 0.875rem;
	border-left: 3px solid currentColor;
}

.goots-notice {
	padding: 1rem 1.25rem;
	background-color: var(--goots-bg-muted);
	border: 1px solid var(--goots-border);
	border-radius: var(--goots-radius);
	font-size: 0.9375rem;
	color: var(--goots-text);
}

/* ──────────────────────────────────────────────
   Small button variant (used in registration-card actions)
   ────────────────────────────────────────────── */

.goots-btn--small {
	padding: 0.25rem 0.625rem;
	font-size: 0.75rem;
	border-radius: 0.375rem;
	background: var(--goots-bg-muted);
	color: var(--goots-text);
	border: 1px solid var(--goots-border);
	text-decoration: none;
}
.goots-btn--small:hover { background: var(--goots-border); }

/* ──────────────────────────────────────────────
   Editor-side safety: don't break the block placeholder
   that the editor renders inside useBlockProps. The editor
   wraps placeholder content in `.block-editor-block-list__block`
   and we explicitly avoid styling that wrapper so the dashed
   border / muted background stays intact.
   ────────────────────────────────────────────── */

.wp-block.is-selected .goots-empty,
.editor-styles-wrapper .goots-empty {
	background: transparent;
	border-style: dashed;
}

/* ──────────────────────────────────────────────
   Session Detail (drilldown) block
   ────────────────────────────────────────────── */

.goots-session-detail {
	max-width: 880px;
	margin: 0 auto;
	color: var(--goots-text);
}

.goots-session-detail__back {
	margin: 0 0 1rem;
	font-size: 0.875rem;
}
.goots-session-detail__back a {
	color: var(--goots-text-muted);
	text-decoration: none;
	transition: color var(--goots-transition);
}
.goots-session-detail__back a:hover { color: var(--goots-primary); }

.goots-session-detail__header { margin-bottom: 1.5rem; }
.goots-session-detail__title {
	margin: 0 0 0.5rem;
	font-size: clamp(1.75rem, 3vw, 2.5rem);
	line-height: 1.15;
	letter-spacing: -0.01em;
}
.goots-session-detail__meta {
	display: flex;
	flex-wrap: wrap;
	gap: 0.75rem 1.25rem;
	color: var(--goots-text-muted);
	font-size: 0.9375rem;
}
.goots-session-detail__when { font-weight: 600; color: var(--goots-text); }

.goots-session-detail__recording {
	margin: 0 0 2rem;
}
.goots-session-detail__recording-frame {
	position: relative;
	width: 100%;
	padding-bottom: 56.25%;
	background: #000;
	border-radius: var(--goots-radius-lg);
	overflow: hidden;
	box-shadow: var(--goots-shadow-lg);
}
.goots-session-detail__recording-frame iframe {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	border: 0;
}

.goots-session-detail__section { margin: 2rem 0; }
.goots-session-detail__section-title {
	margin: 0 0 1rem;
	font-size: 1.125rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	color: var(--goots-text-muted);
}
.goots-session-detail__description { font-size: 1.0625rem; line-height: 1.7; }

.goots-session-detail__speakers {
	display: grid;
	gap: 1rem;
	grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
}
.goots-session-detail__speaker {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	padding: 0.75rem;
	background: var(--goots-bg-muted);
	border: 1px solid var(--goots-border);
	border-radius: var(--goots-radius);
}
.goots-session-detail__speaker-photo {
	width: 48px;
	height: 48px;
	border-radius: 50%;
	object-fit: cover;
	flex-shrink: 0;
}
.goots-session-detail__speaker-name { font-weight: 600; }
.goots-session-detail__speaker-role { font-size: 0.8125rem; color: var(--goots-text-muted); }

.goots-session-detail__attachments {
	list-style: none;
	padding: 0;
	margin: 0;
	display: grid;
	gap: 0.5rem;
}
.goots-session-detail__attachment a {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	padding: 0.875rem 1rem;
	border: 1px solid var(--goots-border);
	border-radius: var(--goots-radius);
	background: var(--goots-bg);
	color: var(--goots-text);
	text-decoration: none;
	transition: border-color var(--goots-transition), background var(--goots-transition), transform var(--goots-transition);
}
.goots-session-detail__attachment a:hover {
	border-color: var(--goots-primary);
	background: var(--goots-primary-soft);
	transform: translateY(-1px);
}
.goots-session-detail__attachment-name { font-weight: 600; }
.goots-session-detail__attachment-size {
	font-size: 0.8125rem;
	color: var(--goots-text-muted);
	font-variant-numeric: tabular-nums;
}

/* ──────────────────────────────────────────────
 * Agenda — Calendar grid layout (1.4.0)
 * ──────────────────────────────────────────────*/
.goots-agenda-calendar {
	display: grid;
	grid-template-columns: minmax(60px, 80px) repeat(var(--goots-cal-cols, 1), 1fr);
	grid-template-rows: auto repeat(var(--goots-cal-rows, 1), minmax(18px, auto));
	gap: 1px;
	background: #e5e7eb;
	border: 1px solid #e5e7eb;
	border-radius: 8px;
	overflow: hidden;
	font-size: 0.875rem;
}
.goots-agenda-calendar__corner,
.goots-agenda-calendar__day-header,
.goots-agenda-calendar__time {
	background: #f8fafc;
}
.goots-agenda-calendar__day-header {
	padding: 0.5rem;
	text-align: center;
	font-weight: 600;
	position: sticky;
	top: 0;
	z-index: 2;
}
.goots-agenda-calendar__time {
	padding: 0.125rem 0.375rem;
	text-align: right;
	color: #64748b;
	font-size: 0.75rem;
	border-top: 1px dashed #e5e7eb;
}
.goots-agenda-calendar__time span {
	position: relative;
	top: -0.5em;
}
.goots-agenda-calendar__event {
	background: #eef2ff;
	border-left: 3px solid #6366f1;
	padding: 0.375rem 0.5rem;
	border-radius: 4px;
	overflow: hidden;
	margin: 1px;
}
.goots-agenda-calendar__event-time {
	font-size: 0.7rem;
	color: #475569;
}
.goots-agenda-calendar__event-title {
	font-weight: 600;
	line-height: 1.2;
}
.goots-agenda-calendar__event-title a { color: inherit; text-decoration: none; }
.goots-agenda-calendar__event-room {
	font-size: 0.7rem;
	color: #64748b;
}
.goots-session-type--keynote .goots-agenda-calendar__event,
.goots-agenda-calendar__event.goots-session-type--keynote { background: #fef3c7; border-left-color: #d97706; }
.goots-session-type--workshop .goots-agenda-calendar__event,
.goots-agenda-calendar__event.goots-session-type--workshop { background: #dcfce7; border-left-color: #16a34a; }
.goots-session-type--break .goots-agenda-calendar__event,
.goots-agenda-calendar__event.goots-session-type--break { background: #f1f5f9; border-left-color: #94a3b8; }

@media (max-width: 720px) {
	.goots-agenda-calendar {
		grid-template-columns: minmax(50px, 60px) repeat(var(--goots-cal-cols, 1), minmax(140px, 1fr));
		overflow-x: auto;
	}
}

/* ── Current Sponsors (logo wall) ─────────────────────────────────────── */
.goots-current-sponsors .goots-sponsor-tier-group + .goots-sponsor-tier-group { margin-top: 2rem; }
.goots-current-sponsors .goots-sponsor-tier-group__heading { margin: 0 0 1rem; text-align: center; }
.goots-sponsor-logo-grid { display: grid; gap: 1.5rem; align-items: center; }
.goots-current-sponsors.goots-columns-1 .goots-sponsor-logo-grid,
.goots-sponsor-logo-grid.goots-columns-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); }
.goots-sponsor-logo-grid.goots-columns-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.goots-sponsor-logo-grid.goots-columns-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.goots-sponsor-logo-grid.goots-columns-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.goots-sponsor-logo-grid.goots-columns-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.goots-sponsor-logo-grid.goots-columns-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); }
.goots-sponsor-logo-grid.goots-columns-7 { grid-template-columns: repeat(7, minmax(0, 1fr)); }
.goots-sponsor-logo-grid.goots-columns-8 { grid-template-columns: repeat(8, minmax(0, 1fr)); }
.goots-sponsor-card { display: flex; align-items: center; justify-content: center; padding: 1rem; min-height: 80px; background: #fff; border-radius: 0.5rem; transition: transform .15s ease, box-shadow .15s ease; }
.goots-sponsor-card:hover { transform: translateY(-2px); box-shadow: 0 4px 14px rgba(0,0,0,.06); }
.goots-sponsor-card img { max-width: 100%; max-height: 100%; height: auto; object-fit: contain; }
.goots-current-sponsors.goots-logo-size-sm .goots-sponsor-card { min-height: 60px; }
.goots-current-sponsors.goots-logo-size-lg .goots-sponsor-card { min-height: 120px; }
.goots-current-sponsors.is-monochrome .goots-sponsor-card img { filter: grayscale(1); opacity: .75; transition: filter .2s ease, opacity .2s ease; }
.goots-current-sponsors.is-monochrome .goots-sponsor-card:hover img { filter: grayscale(0); opacity: 1; }
@media (max-width: 1024px) {
  .goots-sponsor-logo-grid.goots-columns-tablet-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); }
  .goots-sponsor-logo-grid.goots-columns-tablet-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .goots-sponsor-logo-grid.goots-columns-tablet-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .goots-sponsor-logo-grid.goots-columns-tablet-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .goots-sponsor-logo-grid.goots-columns-tablet-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
  .goots-sponsor-logo-grid.goots-columns-tablet-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); }
}
@media (max-width: 600px) {
  .goots-sponsor-logo-grid.goots-columns-mobile-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); }
  .goots-sponsor-logo-grid.goots-columns-mobile-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .goots-sponsor-logo-grid.goots-columns-mobile-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .goots-sponsor-logo-grid.goots-columns-mobile-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

/* ──────────────────────────────────────────────────────────────────────
   Speaker Detail block (goots/speaker-detail)
   ────────────────────────────────────────────────────────────────────── */
.goots-speaker-detail { display: flex; flex-direction: column; gap: 1.5rem; }
.goots-speaker-detail__back { margin: 0; font-size: 0.875rem; }
.goots-speaker-detail__back a { color: inherit; opacity: 0.75; text-decoration: none; }
.goots-speaker-detail__back a:hover { opacity: 1; text-decoration: underline; }

.goots-speaker-detail__header {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 1.5rem;
  align-items: center;
}
.goots-speaker-detail__photo img,
.goots-speaker-detail__photo .goots-avatar {
  display: block;
  object-fit: cover;
  width: 8rem; height: 8rem;
  font-size: 2rem;
  background: #e2e8f0;
  color: #475569;
  display: flex; align-items: center; justify-content: center;
  font-weight: 600;
}
.goots-speaker-detail.goots-photo-size-sm .goots-speaker-detail__photo img,
.goots-speaker-detail.goots-photo-size-sm .goots-speaker-detail__photo .goots-avatar { width: 5rem; height: 5rem; font-size: 1.25rem; }
.goots-speaker-detail.goots-photo-size-md .goots-speaker-detail__photo img,
.goots-speaker-detail.goots-photo-size-md .goots-speaker-detail__photo .goots-avatar { width: 7rem; height: 7rem; font-size: 1.75rem; }
.goots-speaker-detail.goots-photo-size-xl .goots-speaker-detail__photo img,
.goots-speaker-detail.goots-photo-size-xl .goots-speaker-detail__photo .goots-avatar { width: 12rem; height: 12rem; font-size: 3rem; }

.goots-speaker-detail.goots-avatar-shape-circle  .goots-speaker-detail__photo img,
.goots-speaker-detail.goots-avatar-shape-circle  .goots-speaker-detail__photo .goots-avatar { border-radius: 9999px; }
.goots-speaker-detail.goots-avatar-shape-rounded .goots-speaker-detail__photo img,
.goots-speaker-detail.goots-avatar-shape-rounded .goots-speaker-detail__photo .goots-avatar { border-radius: 0.75rem; }
.goots-speaker-detail.goots-avatar-shape-square  .goots-speaker-detail__photo img,
.goots-speaker-detail.goots-avatar-shape-square  .goots-speaker-detail__photo .goots-avatar { border-radius: 0; }

.goots-speaker-detail__identity { min-width: 0; }
.goots-speaker-detail__name { margin: 0 0 0.25rem; line-height: 1.15; }
.goots-speaker-detail__role { margin: 0 0 0.5rem; color: #64748b; font-size: 0.95rem; }

.goots-speaker-detail__social { list-style: none; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: 0.5rem; }
.goots-speaker-detail__social a {
  display: inline-block;
  padding: 0.25rem 0.6rem;
  border: 1px solid #cbd5e1;
  border-radius: 9999px;
  font-size: 0.8125rem;
  color: inherit;
  text-decoration: none;
}
.goots-speaker-detail__social a:hover { background: #f1f5f9; }

.goots-speaker-detail__section { margin: 0; }
.goots-speaker-detail__section-title { margin: 0 0 0.75rem; font-size: 1.125rem; }
.goots-speaker-detail__bio { line-height: 1.6; }
.goots-speaker-detail__bio p:last-child { margin-bottom: 0; }

.goots-speaker-detail__sessions { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 0.5rem; }
.goots-speaker-detail__session {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 1rem;
  align-items: baseline;
  padding: 0.75rem 1rem;
  border: 1px solid #e2e8f0;
  border-radius: 0.5rem;
  background: #f8fafc;
}
.goots-speaker-detail__session-title { font-weight: 600; color: inherit; text-decoration: none; }
.goots-speaker-detail__session-title:hover { text-decoration: underline; }
.goots-speaker-detail__session-when { color: #64748b; font-size: 0.875rem; }
.goots-speaker-detail__session-role {
  margin-left: auto;
  padding: 0.125rem 0.5rem;
  background: #e0e7ff;
  color: #3730a3;
  border-radius: 9999px;
  font-size: 0.75rem;
  font-weight: 500;
}

@media (max-width: 640px) {
  .goots-speaker-detail__header { grid-template-columns: 1fr; text-align: center; }
  .goots-speaker-detail__photo { display: flex; justify-content: center; }
  .goots-speaker-detail__social { justify-content: center; }
}

/* ──────────────────────────────────────────────────────────────────────
   Conference Countdown block (goots/conference-countdown)
   ────────────────────────────────────────────────────────────────────── */
.goots-countdown-block { display: flex; flex-direction: column; gap: 0.5rem; }
.goots-countdown-block.goots-align-left   { align-items: flex-start; text-align: left; }
.goots-countdown-block.goots-align-center { align-items: center; text-align: center; }
.goots-countdown-block.goots-align-right  { align-items: flex-end; text-align: right; }
.goots-countdown-block__prefix { margin: 0; opacity: 0.85; }
.goots-countdown-block .goots-countdown {
  display: inline-flex;
  flex-wrap: wrap;
  gap: 1rem;
  align-items: baseline;
  font-variant-numeric: tabular-nums;
}
.goots-countdown-block .goots-countdown__unit {
  display: flex; flex-direction: column; align-items: center;
  min-width: 3.5rem;
}
.goots-countdown-block .goots-countdown__unit span { font-size: 2.25rem; font-weight: 700; line-height: 1; }
.goots-countdown-block .goots-countdown__unit small { font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.05em; opacity: 0.7; margin-top: 0.25rem; }
.goots-countdown-block.goots-countdown--compact .goots-countdown__unit span { font-size: 1.5rem; }
.goots-countdown-block.goots-countdown--inline .goots-countdown { gap: 0.5rem; }
.goots-countdown-block.goots-countdown--inline .goots-countdown__unit { flex-direction: row; gap: 0.25rem; align-items: baseline; }
.goots-countdown-block.goots-countdown--inline .goots-countdown__unit span { font-size: 1.125rem; }

/* ──────────────────────────────────────────────────────────────────────
   Conference Stats block (goots/conference-stats)
   ────────────────────────────────────────────────────────────────────── */
.goots-stats__heading { margin: 0 0 1rem; }
.goots-stats__grid {
  display: grid;
  gap: 1rem;
  grid-template-columns: repeat(var(--goots-stats-cols, 4), minmax(0, 1fr));
}
.goots-stats.goots-columns-1 .goots-stats__grid { grid-template-columns: repeat(1, minmax(0, 1fr)); }
.goots-stats.goots-columns-2 .goots-stats__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.goots-stats.goots-columns-3 .goots-stats__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.goots-stats.goots-columns-4 .goots-stats__grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.goots-stats.goots-columns-5 .goots-stats__grid { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.goots-stats.goots-columns-6 .goots-stats__grid { grid-template-columns: repeat(6, minmax(0, 1fr)); }
.goots-stat {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  text-align: center;
  padding: 1.25rem 1rem;
  border-radius: 0.75rem;
  background: rgba(15, 23, 42, 0.03);
}
.goots-stat__number { font-size: 2.25rem; font-weight: 700; line-height: 1; font-variant-numeric: tabular-nums; }
.goots-stat__label { margin-top: 0.5rem; font-size: 0.875rem; opacity: 0.75; }
@media (max-width: 720px) {
  .goots-stats.goots-columns-mobile-1 .goots-stats__grid { grid-template-columns: repeat(1, minmax(0, 1fr)); }
  .goots-stats.goots-columns-mobile-2 .goots-stats__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .goots-stats.goots-columns-mobile-3 .goots-stats__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

/* ──────────────────────────────────────────────────────────────────────
   Conference CTA block (goots/conference-cta)
   ────────────────────────────────────────────────────────────────────── */
.goots-cta {
  position: relative;
  padding: clamp(1.5rem, 4vw, 3rem);
  border-radius: 0.75rem;
  overflow: hidden;
}
.goots-cta--bg-image { background-size: cover; background-position: center; color: #fff; }
.goots-cta__overlay {
  position: absolute; inset: 0;
  background: #000;
  z-index: 0;
}
.goots-cta__inner { position: relative; z-index: 1; display: flex; flex-direction: column; gap: 0.75rem; }
.goots-cta.goots-align-left   .goots-cta__inner { align-items: flex-start; text-align: left; }
.goots-cta.goots-align-center .goots-cta__inner { align-items: center; text-align: center; }
.goots-cta.goots-align-right  .goots-cta__inner { align-items: flex-end; text-align: right; }
.goots-cta__heading { margin: 0; line-height: 1.15; }
.goots-cta__subheading { margin: 0; opacity: 0.85; max-width: 60ch; }
.goots-cta__actions { display: flex; flex-wrap: wrap; gap: 0.75rem; margin-top: 0.5rem; }
.goots-cta__btn {
  display: inline-block;
  padding: 0.75rem 1.5rem;
  border-radius: 9999px;
  font-weight: 600;
  text-decoration: none;
  transition: transform 0.15s ease, background 0.15s ease;
}
.goots-cta__btn:hover { transform: translateY(-1px); }
.goots-cta__btn--primary { background: currentColor; color: #fff; mix-blend-mode: normal; }
.goots-cta__btn--primary { background: #0f172a; color: #fff; }
.goots-cta__btn--secondary { background: transparent; color: inherit; border: 1px solid currentColor; }

/* ─── Form runtime (goots-form-runtime.js) ─────────────────────────────── */
/* These classes are emitted by the vanilla JS runtime that hydrates the
   mount divs in ticket-registration and custom-form. They mirror the
   structure of the SPA's React FormRenderer so the attendee surface looks
   close to the organiser preview without depending on Tailwind. */
.goots-form { display:flex; flex-direction:column; gap:1rem; }
.goots-form__empty { color:#64748b; font-size:.875rem; }

.goots-form-section { display:flex; flex-direction:column; gap:.75rem; }
.goots-form-section__header { border-bottom:1px solid #e2e8f0; padding-bottom:.5rem; }
.goots-form-section__title { margin:0; font-size:1rem; font-weight:600; color:#0f172a; }
.goots-form-section__description { margin:.25rem 0 0; font-size:.875rem; color:#64748b; }
.goots-form-section__grid { display:grid; grid-template-columns:1fr; gap:.75rem; }
@media (min-width: 640px) {
	.goots-form-section__grid--2 { grid-template-columns:1fr 1fr; }
	.goots-form-section__grid--3 { grid-template-columns:repeat(3, 1fr); }
}
.goots-form-field[data-field-width="half"]  { grid-column:span 1; }
.goots-form-field[data-field-width="third"] { grid-column:span 1; }
.goots-form-field[data-field-width="full"],
.goots-form-field:not([data-field-width]) { grid-column:1 / -1; }

.goots-form-field { display:flex; flex-direction:column; gap:.25rem; }
.goots-form-field__label { display:block; margin:0; padding:0; font-size:.875rem; font-weight:500; color:#334155; line-height:1.4; }
.goots-form-field__required { color:#dc2626; margin-left:.125rem; }
.goots-form-field__help { font-size:.75rem; color:#64748b; margin:0 0 .25rem; }
.goots-form-field__error { font-size:.75rem; color:#dc2626; margin:.125rem 0 0; }
.goots-form-field--has-error input,
.goots-form-field--has-error select,
.goots-form-field--has-error textarea { border-color:#dc2626; }

.goots-form-field input[type="text"],
.goots-form-field input[type="email"],
.goots-form-field input[type="tel"],
.goots-form-field input[type="url"],
.goots-form-field input[type="number"],
.goots-form-field input[type="date"],
.goots-form-field input[type="password"],
.goots-form-field select,
.goots-form-field textarea {
	width:100%; padding:.5rem .75rem; border:1px solid #cbd5e1; border-radius:.375rem;
	font-size:.875rem; background:#fff; color:#0f172a; box-sizing:border-box;
	margin:0; max-width:100%; line-height:1.4;
}

.goots-form__heading { margin:.5rem 0 0; font-size:1rem; font-weight:600; color:#0f172a; }
.goots-form__paragraph { margin:0; font-size:.875rem; color:#475569; line-height:1.5; }

/* Choice groups (radio/multi/checkbox). The inline label IS the row — it
   wraps the <input> and the option text — so it needs different sizing
   from the text-style fields. Spacing is tight so each option visually
   belongs to the group rather than floating in its own band. */
.goots-form__radio-group,
.goots-form__multi-group {
	display:flex; flex-direction:column; gap:.375rem;
	margin:.125rem 0 0; padding:0; list-style:none;
}

/* inline-flex (not flex) so the row hugs its content and the input stays
   glued to the text instead of being stretched by a parent. */
.goots-form__radio-option,
.goots-form__multi-option,
.goots-form__checkbox {
	display:inline-flex;
	align-items:center;
	gap:.5rem;
	cursor:pointer;
	font-weight:normal;
	font-size:.875rem;
	color:#334155;
	line-height:1.4;
	margin:0;
	padding:0;
}

/* Defensive overrides — many WP themes apply `input { width: 100%; }` as a
   blanket rule, which stretches radio/checkbox boxes to fill the row and
   pushes the text label to the next line. Force native sizing here. */
.goots-form__radio-option input,
.goots-form__multi-option input,
.goots-form__checkbox input {
	width:auto !important;
	min-width:0 !important;
	max-width:none !important;
	height:auto !important;
	margin:0 !important;
	padding:0 !important;
	flex:0 0 auto;
	box-sizing:content-box;
	appearance:auto;
	-webkit-appearance:auto;
}

.goots-form__file { display:flex; flex-direction:column; gap:.25rem; }
.goots-form__file-status { font-size:.75rem; color:#64748b; }

/* Multi-step progress dots */
.goots-form__steps { display:flex; align-items:center; gap:.5rem; margin-bottom:1rem; }
.goots-form__step {
	width:1.75rem; height:1.75rem; border-radius:9999px; display:flex; align-items:center;
	justify-content:center; font-size:.75rem; font-weight:500; background:#f1f5f9; color:#94a3b8;
}
.goots-form__step.is-active   { background:#7c3aed; color:#fff; }
.goots-form__step.is-complete { background:#ede9fe; color:#5b21b6; }
.goots-form__step-sep { flex:0 0 2rem; height:2px; background:#e2e8f0; }
