/**
 * LT Disco: the tempo map.
 * One bold element: the night band hero (tonight's DJ sets as touching blocks, width = slot, height = BPM,
 * on one 90 to 140 BPM scale, the door strip under it on the same time line).
 * Everything else is quiet daylight: hairline rows, 3px corners, no shadows, no glow.
 * Rammetto One (one heavy wide weight) for names and headings; Kulim Park for text, labels and numbers.
 */

body {
	font-synthesis-weight: none;
	--lt-bpm-unit: 0.4rem;
}

h1, h2, h3, h4, h5, h6,
.elementor-heading-title,
.lt-brand__name,
.lt-blog__title,
.lt-single__title,
.lt-404__title {
	font-weight: 400;
	letter-spacing: -0.01em;
}

.lt-h3 .elementor-heading-title {
	font-size: var(--lt-fs-xl);
}

.lt-h4 .elementor-heading-title {
	font-size: var(--lt-fs-md);
}

body .elementor-button {
	letter-spacing: 0.01em;
}

/* ---------- Top bar and header ---------- */

.e-con.lt-sec.lt-topbar-bar {
	--padding-top: 0.5rem;
	--padding-bottom: 0.5rem;
	font-size: var(--lt-fs-sm);
}

.lt-topbar-bar .elementor-widget-text-editor {
	color: var(--lt-on-dark);
	white-space: nowrap;
}

.lt-topbar-bar .lt-topbar__tonight {
	flex: 1 1 auto;
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
}

.lt-dot {
	display: inline-block;
	width: 0.55rem;
	height: 0.55rem;
	margin-right: 0.55rem;
	border-radius: 50%;
	background: var(--lt-accent);
	vertical-align: 0.05em;
}

.lt-header {
	border-bottom-color: var(--lt-line);
}

.lt-brand__mark {
	width: 2.4rem;
	height: 2.4rem;
}

.lt-brand__name {
	font-size: 1.3rem;
	letter-spacing: 0;
}

body .lt-menu a {
	font-weight: 600;
}

/* ---------- Home hero: the night band ---------- */

.e-con.lt-hero {
	--padding-top: clamp(3rem, 1.8rem + 4.5vw, 5.5rem);
	--padding-bottom: clamp(3rem, 1.8rem + 4.5vw, 5.5rem);
}

.lt-hero__when {
	color: var(--lt-on-dark-soft);
	font-size: var(--lt-fs-md);
	font-weight: 600;
}

.lt-dark .lt-hero__when.elementor-widget-text-editor {
	color: var(--lt-on-dark-soft);
}

.lt-hero__title .elementor-heading-title {
	font-size: var(--lt-fs-hero);
	line-height: 0.98;
	letter-spacing: -0.02em;
	color: var(--lt-on-dark);
}

body .lt-dark .elementor-widget-button.lt-btn--primary .elementor-button {
	background: var(--lt-on-dark);
	color: var(--lt-dark);
}

body .lt-dark .elementor-widget-button.lt-btn--primary .elementor-button:hover {
	background: #FFFFFF;
	color: var(--lt-dark);
}

/* ---------- The tempo map ---------- */

.lt-tempo .elementor-widget-text-editor {
	max-width: none;
}

.e-con.lt-tempo__chart,
.e-con.lt-tempo__hours,
.e-con.lt-door {
	--gap: 0 10px;
}

.lt-tempo__axis {
	color: var(--lt-on-dark-soft);
	font-size: 0.8125rem;
	font-weight: 600;
	text-align: right;
	font-variant-numeric: tabular-nums;
}

.lt-dark .lt-tempo__axis.elementor-widget-text-editor {
	color: var(--lt-on-dark-soft);
}

.lt-tempo__axis p {
	height: calc(var(--lt-bpm-unit) * 10);
	margin: 0 !important;
	line-height: 1;
	transform: translateY(-0.5em);
}

.e-con.lt-tempo__plot {
	min-height: calc(var(--lt-bpm-unit) * 50);
	align-items: end;
	background-image: repeating-linear-gradient(to top, color-mix(in srgb, var(--lt-on-dark) 22%, transparent) 0 1px, transparent 1px calc(var(--lt-bpm-unit) * 10));
	background-position: left bottom;
	border-bottom: 2px solid var(--lt-on-dark-soft);
}

@media (min-width: 768px) {
	.e-con.lt-tempo__plot {
		grid-template-rows: minmax(0, 1fr) !important;
		align-content: stretch !important;
	}
}

.e-con.lt-set {
	--padding-top: 0.55rem;
	--padding-bottom: 0.55rem;
	--padding-left: 0.6rem;
	--padding-right: 0.5rem;
	justify-content: flex-start;
	align-self: end;
	min-height: calc((var(--lt-bpm, 110) - 90) * var(--lt-bpm-unit));
	background-color: color-mix(in srgb, var(--lt-on-dark) 11%, var(--lt-dark));
	border-top: 3px solid var(--lt-on-dark);
	border-left: 1px solid var(--lt-dark);
}

.e-con.lt-set.is-peak {
	background-color: var(--lt-accent);
	border-top-color: var(--lt-accent);
}

.lt-set__time,
.lt-set__bpm {
	font-size: 0.8125rem;
	line-height: 1.3;
	font-variant-numeric: tabular-nums;
}

.lt-dark .lt-set__time.elementor-widget-text-editor,
.lt-dark .lt-set__bpm.elementor-widget-text-editor {
	color: var(--lt-on-dark-soft);
}

.lt-set__dj .elementor-heading-title {
	font-family: var(--lt-font-ui, var(--lt-font-body));
	font-size: 1rem;
	font-weight: 700;
	line-height: 1.2;
	letter-spacing: 0;
}

.lt-dark .lt-set.is-peak :is(.elementor-heading-title, .elementor-widget-text-editor),
.lt-dark .lt-set.is-peak .lt-set__time.elementor-widget-text-editor,
.lt-dark .lt-set.is-peak .lt-set__bpm.elementor-widget-text-editor {
	color: var(--lt-dark);
}

/* One moment: the blocks rise from the baseline, left to right. */
.lt-tempo--hero .e-con.lt-set {
	transform-origin: 50% 100%;
	animation: lt-rise 0.5s cubic-bezier(0.2, 0.7, 0.2, 1) both;
}

.lt-tempo--hero .lt-set:nth-child(2) { animation-delay: 0.07s; }
.lt-tempo--hero .lt-set:nth-child(3) { animation-delay: 0.14s; }
.lt-tempo--hero .lt-set:nth-child(4) { animation-delay: 0.21s; }
.lt-tempo--hero .lt-set:nth-child(5) { animation-delay: 0.28s; }
.lt-tempo--hero .lt-set:nth-child(6) { animation-delay: 0.35s; }

@keyframes lt-rise {
	from {
		transform: scaleY(0.2);
		opacity: 0.4;
	}
	to {
		transform: none;
		opacity: 1;
	}
}

@media (prefers-reduced-motion: reduce) {
	.lt-tempo--hero .e-con.lt-set {
		animation: none;
	}
}

.lt-tempo__unit {
	color: var(--lt-on-dark-soft);
	font-size: 0.75rem;
	font-weight: 700;
	text-align: right;
}

.lt-dark .lt-tempo__unit.elementor-widget-text-editor {
	color: var(--lt-on-dark-soft);
}

.lt-tempo__hour {
	padding: 0.35rem 0 0 0.35rem;
	border-left: 1px solid color-mix(in srgb, var(--lt-on-dark) 35%, transparent);
	font-size: 0.8125rem;
	font-variant-numeric: tabular-nums;
}

.lt-dark .lt-tempo__hour.elementor-widget-text-editor {
	color: var(--lt-on-dark-soft);
}

.lt-tempo__hour span {
	float: right;
	padding-right: 0.25rem;
}

.e-con.lt-door__cell {
	--padding-top: 0.6rem;
	--padding-bottom: 0.6rem;
	--padding-left: 0.6rem;
	--padding-right: 0.5rem;
	border-top: 3px solid var(--lt-on-dark-soft);
	border-left: 1px solid var(--lt-dark);
	background-color: color-mix(in srgb, var(--lt-on-dark) 6%, var(--lt-dark));
}

.e-con.lt-door__cell.is-closed {
	border-top-color: color-mix(in srgb, var(--lt-on-dark) 30%, transparent);
	background-color: transparent;
	background-image: repeating-linear-gradient(135deg, color-mix(in srgb, var(--lt-on-dark) 16%, transparent) 0 2px, transparent 2px 9px);
}

.lt-door__price {
	font-size: var(--lt-fs-md);
	font-weight: 700;
	line-height: 1.15;
}

.lt-door__when {
	font-size: 0.8125rem;
	line-height: 1.3;
}

.lt-dark .lt-door__when.elementor-widget-text-editor {
	color: var(--lt-on-dark-soft);
}

.lt-tempo__caption {
	margin-top: 0.4rem;
	font-size: var(--lt-fs-sm);
}

.lt-dark .lt-tempo__caption.elementor-widget-text-editor {
	color: var(--lt-on-dark-soft);
	max-width: 70ch;
}

/* Tempo classes: the set height is (BPM - 90) units on every chart. */
.lt-bpm-90 { --lt-bpm: 90; }
.lt-bpm-91 { --lt-bpm: 91; }
.lt-bpm-92 { --lt-bpm: 92; }
.lt-bpm-93 { --lt-bpm: 93; }
.lt-bpm-94 { --lt-bpm: 94; }
.lt-bpm-95 { --lt-bpm: 95; }
.lt-bpm-96 { --lt-bpm: 96; }
.lt-bpm-97 { --lt-bpm: 97; }
.lt-bpm-98 { --lt-bpm: 98; }
.lt-bpm-99 { --lt-bpm: 99; }
.lt-bpm-100 { --lt-bpm: 100; }
.lt-bpm-101 { --lt-bpm: 101; }
.lt-bpm-102 { --lt-bpm: 102; }
.lt-bpm-103 { --lt-bpm: 103; }
.lt-bpm-104 { --lt-bpm: 104; }
.lt-bpm-105 { --lt-bpm: 105; }
.lt-bpm-106 { --lt-bpm: 106; }
.lt-bpm-107 { --lt-bpm: 107; }
.lt-bpm-108 { --lt-bpm: 108; }
.lt-bpm-109 { --lt-bpm: 109; }
.lt-bpm-110 { --lt-bpm: 110; }
.lt-bpm-111 { --lt-bpm: 111; }
.lt-bpm-112 { --lt-bpm: 112; }
.lt-bpm-113 { --lt-bpm: 113; }
.lt-bpm-114 { --lt-bpm: 114; }
.lt-bpm-115 { --lt-bpm: 115; }
.lt-bpm-116 { --lt-bpm: 116; }
.lt-bpm-117 { --lt-bpm: 117; }
.lt-bpm-118 { --lt-bpm: 118; }
.lt-bpm-119 { --lt-bpm: 119; }
.lt-bpm-120 { --lt-bpm: 120; }
.lt-bpm-121 { --lt-bpm: 121; }
.lt-bpm-122 { --lt-bpm: 122; }
.lt-bpm-123 { --lt-bpm: 123; }
.lt-bpm-124 { --lt-bpm: 124; }
.lt-bpm-125 { --lt-bpm: 125; }
.lt-bpm-126 { --lt-bpm: 126; }
.lt-bpm-127 { --lt-bpm: 127; }
.lt-bpm-128 { --lt-bpm: 128; }
.lt-bpm-129 { --lt-bpm: 129; }
.lt-bpm-130 { --lt-bpm: 130; }
.lt-bpm-131 { --lt-bpm: 131; }
.lt-bpm-132 { --lt-bpm: 132; }
.lt-bpm-133 { --lt-bpm: 133; }
.lt-bpm-134 { --lt-bpm: 134; }
.lt-bpm-135 { --lt-bpm: 135; }
.lt-bpm-136 { --lt-bpm: 136; }
.lt-bpm-137 { --lt-bpm: 137; }
.lt-bpm-138 { --lt-bpm: 138; }
.lt-bpm-139 { --lt-bpm: 139; }
.lt-bpm-140 { --lt-bpm: 140; }

/* Tablet: smaller units so the chart stays readable. */
@media (max-width: 1024px) {
	body {
		--lt-bpm-unit: 0.36rem;
	}

	.e-con.lt-set {
		--padding-left: 0.45rem;
		--padding-right: 0.35rem;
	}

	.lt-set__dj .elementor-heading-title {
		font-size: 0.9375rem;
	}
}

/* Phone: the chart becomes the running order, one set per row, tempo as a bar. */
@media (max-width: 767px) {
	.lt-tempo__axis,
	.e-con.lt-tempo__hours,
	.lt-door .lt-tempo__unit {
		display: none;
	}

	.e-con.lt-tempo__plot {
		min-height: 0;
		background-image: none;
		border-bottom: 0;
		border-top: 1px solid color-mix(in srgb, var(--lt-on-dark) 25%, transparent);
	}

	.e-con.lt-set {
		min-height: 0;
		--padding-top: 0.75rem;
		--padding-bottom: 1.1rem;
		--padding-left: 0;
		--padding-right: 0;
		border: 0;
		border-bottom: 1px solid color-mix(in srgb, var(--lt-on-dark) 25%, transparent);
		background-color: transparent;
		background-image: linear-gradient(var(--lt-on-dark-soft), var(--lt-on-dark-soft));
		background-size: calc((var(--lt-bpm, 110) - 90) * 2%) 5px;
		background-position: left bottom 0.45rem;
		background-repeat: no-repeat;
	}

	.e-con.lt-set.is-peak {
		background-color: transparent;
		background-image: linear-gradient(var(--lt-accent), var(--lt-accent));
		background-size: calc((var(--lt-bpm, 110) - 90) * 2%) 7px;
	}

	.lt-dark .lt-set.is-peak .elementor-heading-title {
		color: var(--lt-on-dark);
	}

	.lt-dark .lt-set.is-peak .lt-set__time.elementor-widget-text-editor,
	.lt-dark .lt-set.is-peak .lt-set__bpm.elementor-widget-text-editor {
		color: var(--lt-accent);
	}

	.lt-tempo--hero .e-con.lt-set {
		animation: none;
	}

	.e-con.lt-door {
		--gap: 6px 0 !important;
	}

	.e-con.lt-door__cells {
		--gap: 2px !important;
	}

	.e-con.lt-door__cell {
		border-left: 0;
	}
}

/* ---------- Weekly nights and residents ---------- */

.lt-night__day {
	color: var(--lt-soft);
	font-size: var(--lt-fs-sm);
	font-weight: 600;
}

.lt-night__name .elementor-heading-title {
	font-size: var(--lt-fs-lg);
}

.lt-night__name a {
	color: inherit;
	text-decoration: none;
}

.lt-night__name a:hover {
	text-decoration: underline;
	text-decoration-thickness: 2px;
	text-underline-offset: 0.2em;
}

.lt-night__sound {
	font-weight: 600;
}

.lt-night__hours {
	color: var(--lt-soft);
	font-size: var(--lt-fs-sm);
	font-variant-numeric: tabular-nums;
}

.lt-night__door {
	text-align: right;
}

.e-con.lt-range {
	height: 10px;
	background: var(--lt-line);
	border-radius: 2px;
	overflow: hidden;
}

.e-con.lt-range > .e-con {
	min-height: 0;
	height: 10px;
	--padding-top: 0;
	--padding-bottom: 0;
	--padding-left: 0;
	--padding-right: 0;
}

.e-con.lt-range > .e-con.lt-range__fill {
	background: var(--lt-primary);
}

.lt-range__label {
	color: var(--lt-soft);
	font-size: var(--lt-fs-sm);
	font-variant-numeric: tabular-nums;
}

.lt-resident__name .elementor-heading-title {
	font-size: var(--lt-fs-md);
}

.lt-resident__style {
	color: var(--lt-ink);
}

@media (max-width: 767px) {
	.e-con.lt-night,
	.e-con.lt-resident {
		--gap: 10px !important;
		--row-gap: 10px !important;
	}

	.lt-night__door {
		text-align: left;
	}
}

/* ---------- Prices and panels ---------- */

.lt-price__label {
	font-size: var(--lt-fs-base);
	font-weight: 600;
}

.lt-price__note {
	color: var(--lt-soft);
	font-size: var(--lt-fs-sm);
}

.lt-price__amount {
	font-size: var(--lt-fs-md);
	font-weight: 700;
	font-variant-numeric: tabular-nums;
	text-align: right;
}

.e-con.lt-panel {
	--padding-top: 2rem;
	--padding-bottom: 2rem;
	--padding-left: 2rem;
	--padding-right: 2rem;
	align-self: start;
	background: var(--lt-surface);
	border-top: 4px solid var(--lt-primary);
}

.lt-tint .e-con.lt-panel {
	background: var(--lt-base);
}

/* ---------- Inner pages ---------- */

.e-con.lt-pagehead {
	--padding-top: clamp(3rem, 2rem + 4vw, 5.5rem);
	--padding-bottom: clamp(2.5rem, 1.5rem + 3vw, 4rem);
	border-bottom: 1px solid var(--lt-line);
}

.lt-pagehead__title .elementor-heading-title {
	font-size: var(--lt-fs-3xl);
	max-width: 18ch;
}

/* Warm-up, peak, last hour: a real sequence, drawn as a rising and falling rule. */
.e-con.lt-steps {
	border-top: 3px solid var(--lt-primary);
}

.e-con.lt-steps__step {
	--padding-top: 1.5rem;
	--padding-right: 2rem;
	--padding-bottom: 0.5rem;
	--padding-left: 0;
}

.lt-steps__when {
	color: var(--lt-primary);
	font-size: var(--lt-fs-sm);
	font-weight: 700;
}

.lt-steps__when p::before {
	content: "";
	display: block;
	width: 15px;
	height: 15px;
	margin: -2.05rem 0 1.2rem;
	border-radius: 50%;
	background: var(--lt-surface);
	box-shadow: inset 0 0 0 3px var(--lt-primary);
}

@media (max-width: 767px) {
	.e-con.lt-steps {
		border-top: 0;
		border-left: 3px solid var(--lt-primary);
	}

	.e-con.lt-steps__step {
		--padding-left: 1.5rem;
		--padding-top: 0.25rem;
		--padding-bottom: 1.25rem;
	}

	.lt-steps__when p {
		position: relative;
	}

	.lt-steps__when p::before {
		position: absolute;
		top: 0.15rem;
		left: calc(-1.5rem - 9px);
		margin: 0;
	}
}

.e-con.lt-people {
	border-top: 1px solid var(--lt-line);
	--padding-top: 1.75rem;
}

/* Contact desks */
.e-con.lt-desks {
	border-top: 1px solid var(--lt-line);
}

.e-con.lt-desk {
	--padding-top: 2rem;
	--padding-bottom: 2rem;
	--padding-right: 2rem;
	border-bottom: 1px solid var(--lt-line);
}

.lt-desk a {
	font-weight: 600;
}

.lt-map img {
	display: block;
	width: 100%;
	aspect-ratio: 4 / 3;
	border: 1px solid var(--lt-line);
	border-radius: 3px;
}

/* Night pages: the map band */
.e-con.lt-night-map {
	--padding-top: clamp(3rem, 2rem + 3.5vw, 5rem);
	--padding-bottom: clamp(3rem, 2rem + 3.5vw, 5rem);
}

/* Call to action band */
.lt-cta__title .elementor-heading-title {
	font-size: var(--lt-fs-3xl);
	color: var(--lt-on-dark);
}

/* ---------- Footer ---------- */

.e-con.lt-sec.lt-footer {
	--padding-top: 4rem;
	--padding-bottom: 2.5rem;
}

.lt-footer__brand .elementor-heading-title {
	font-size: 1.75rem;
	color: var(--lt-on-dark);
}

.lt-footer__title .elementor-heading-title {
	font-family: var(--lt-font-ui, var(--lt-font-body));
	font-size: var(--lt-fs-base);
	font-weight: 700;
	letter-spacing: 0;
	color: var(--lt-on-dark-soft);
}

.lt-links {
	margin: 0;
	padding: 0;
	list-style: none;
}

.lt-links li {
	margin: 0 0 0.5rem;
}

.lt-credit-bar {
	border-top: 1px solid color-mix(in srgb, var(--lt-on-dark) 14%, transparent);
}

/* ---------- Blog, questions ---------- */

.lt-posts--grid .lt-post {
	border-top: 3px solid var(--lt-primary);
	padding-top: 1rem;
}

.lt-posts--grid .lt-post.has-img {
	border-top: 0;
	padding-top: 0;
}

body .lt-faq .elementor-tab-title a,
body .lt-faq .elementor-tab-title.elementor-active a {
	font-weight: 400;
	font-size: 1.25rem;
}

/* ---------- Phones ---------- */

@media (max-width: 767px) {
	.lt-topbar-bar .lt-topbar__line:not(.lt-topbar__tonight) {
		display: none;
	}

	.lt-topbar-bar .elementor-widget-text-editor {
		white-space: normal;
	}

	.lt-hero__title .elementor-heading-title {
		line-height: 1.02;
	}
}

/* Contact form panel: a daylight panel with a booth-blue top rule; fields keep the small radius. */
.e-con.lt-form {
	border: 0;
	border-top: 4px solid var(--lt-primary);
	background: var(--lt-base);
}

body .lt-form .wpforms-container .wpforms-field-label {
	font-size: 1rem;
	font-weight: 700;
}

@media (max-width: 767px) {
	.lt-h3 .elementor-heading-title {
		font-size: var(--lt-fs-lg);
	}
}
