/**
 * LT xMas Gift: the gift tag.
 * One bold element: the gift finder in the hero, six kraft tags hung from a length of twine, each hand-lettered with
 * who the gift is for and what it costs. The same tag starts every gift row in the catalogue and every stocking
 * filler. Order-by red marks deadlines only. Everything else is quiet: a frost page, kraft-tinted sections, hairline
 * rows, square photos, 2px corners, no shadows. Gelasio for everything except the tags, which use the Kalam hand.
 */

body {
	font-feature-settings: "kern" 1;
}

h1, h2, h3, h4,
.elementor-heading-title,
.lt-brand__name,
.lt-blog__title,
.lt-single__title,
.lt-404__title {
	letter-spacing: -0.012em;
}

.lt-num,
.lt-num p,
.lt-price__amount,
.lt-date__by {
	font-variant-numeric: lining-nums tabular-nums;
}

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

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

.lt-note.elementor-widget-text-editor {
	font-size: var(--lt-fs-sm);
}

/* Gift names: Gelasio italic, the way a shop's list names a gift. */
.elementor-heading-title em,
.elementor-widget-text-editor em {
	font-style: italic;
}

body .elementor-button {
	font-weight: 600;
	font-size: 1.0625rem;
	letter-spacing: 0.005em;
}

body .lt-menu a {
	font-weight: 500;
	font-size: var(--lt-fs-nav);
}

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

.e-con.lt-sec.lt-topbar-bar {
	--padding-top: 0.45rem;
	--padding-bottom: 0.45rem;
	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__match {
	flex: 1 1 auto;
	min-width: 0;
}

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

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

.lt-brand__name {
	font-family: var(--lt-font-display);
	font-weight: 700;
	font-size: 1.5rem;
}

body a.lt-header-cta,
body a.lt-drawer__cta {
	border-radius: 2px;
	font-family: var(--lt-font-ui);
	font-weight: 600;
}

/* ---------- Hero ---------- */

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

.lt-hero__title .elementor-heading-title {
	font-size: var(--lt-fs-hero);
	font-weight: 700;
	line-height: 1.02;
	letter-spacing: -0.02em;
	max-width: 11ch;
	color: var(--lt-ink);
}

.e-con.lt-hero__hours {
	max-width: 28rem;
}

.lt-hero__hours .lt-price__label p {
	font-weight: 600;
}

/* ---------- The gift tag ---------- */

.lt-tag.elementor-widget-text-editor {
	--lt-tag-w: 9.5rem;
	--lt-cut: 0.95rem;
	position: relative;
	width: var(--lt-tag-w);
	max-width: 100%;
	color: var(--lt-ink);
	font-family: var(--lt-font-hand);
	line-height: 1.12;
	text-align: center;
}

.lt-tag p {
	margin: 0;
	padding: 2.05rem 0.7rem 0.95rem;
	background:
		linear-gradient(135deg, transparent var(--lt-cut), var(--lt-tag) 0) top left / 51% 100% no-repeat,
		linear-gradient(225deg, transparent var(--lt-cut), var(--lt-tag) 0) top right / 51% 100% no-repeat;
}

.lt-tag a {
	display: block;
	color: var(--lt-ink);
	text-decoration: none;
}

.lt-tag a:hover .lt-tag__for {
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 0.15em;
}

.lt-tag__for {
	display: block;
	font-size: 1.1875rem;
	font-weight: 400;
}

.lt-tag__price {
	display: block;
	margin-top: 0.25rem;
	font-size: 1.375rem;
	font-weight: 700;
}

/* The punched hole: the ground shows through, with a pressed ring. */
.lt-tag.elementor-widget-text-editor::before {
	content: "";
	position: absolute;
	top: 0.7rem;
	left: 50%;
	width: 0.8rem;
	height: 0.8rem;
	margin-left: -0.4rem;
	border-radius: 50%;
	z-index: 1;
	background: var(--lt-base);
	box-shadow: inset 0 0 0 2px color-mix(in srgb, var(--lt-tag) 70%, var(--lt-ink));
}

.lt-tint .lt-tag.elementor-widget-text-editor::before {
	background: var(--lt-surface);
}

/* ---------- The twine (gift finder) ---------- */

.e-con.lt-hang {
	--drop: 1rem;
	--padding-top: var(--drop);
	--padding-bottom: 1.75rem;
	background: repeating-linear-gradient(90deg, var(--lt-primary) 0 7px, color-mix(in srgb, var(--lt-primary) 55%, var(--lt-base)) 7px 10px) top left / 100% 4px no-repeat;
}

.lt-twine > .lt-hang:nth-child(1) { --drop: 0.8rem; }
.lt-twine > .lt-hang:nth-child(2) { --drop: 2.6rem; }
.lt-twine > .lt-hang:nth-child(3) { --drop: 1.4rem; }
.lt-twine > .lt-hang:nth-child(4) { --drop: 3.4rem; }
.lt-twine > .lt-hang:nth-child(5) { --drop: 1.1rem; }
.lt-twine > .lt-hang:nth-child(6) { --drop: 2.2rem; }

/* The string, from the twine down to the hole. */
.lt-tag--hung.elementor-widget-text-editor::after {
	content: "";
	position: absolute;
	left: 50%;
	bottom: calc(100% - 0.75rem);
	width: 2px;
	margin-left: -1px;
	height: calc(var(--drop) + 0.75rem);
	z-index: 1;
	background: var(--lt-primary);
}

/* In the hero the tags are the one bold element: bigger, on a heavier twine. */
.lt-hero .lt-tag.elementor-widget-text-editor {
	--lt-tag-w: 11.25rem;
	--lt-cut: 1.1rem;
}

.lt-hero .lt-tag p {
	padding: 2.4rem 0.8rem 1.15rem;
}

.lt-hero .lt-tag__for {
	font-size: 1.375rem;
}

.lt-hero .lt-tag__price {
	font-size: 1.75rem;
}

.lt-tint .lt-tag--hung.elementor-widget-text-editor::after {
	background: var(--lt-primary);
}

/* One moment: the tags settle on the twine, each swinging once from its hole. */
.lt-hero .lt-tag--hung p {
	transform-origin: 50% 1.1rem;
	animation: lt-swing 0.9s cubic-bezier(0.3, 0.6, 0.4, 1) both;
}

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

@keyframes lt-swing {
	0% { transform: none; }
	18% { transform: rotate(5deg); }
	48% { transform: rotate(-2.5deg); }
	76% { transform: rotate(1deg); }
	100% { transform: none; }
}

@media (prefers-reduced-motion: reduce) {
	.lt-hero .lt-tag--hung p {
		animation: none;
	}
}

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

/* ---------- Gift rows (catalogue) ---------- */

.e-con.lt-gift {
	--padding-top: 1.25rem;
	--padding-bottom: 1.25rem;
}

.lt-gift > .lt-tag.elementor-widget-text-editor {
	--lt-tag-w: 100%;
}

.lt-gift p {
	margin: 0;
}

.lt-gift__name .elementor-heading-title {
	font-size: var(--lt-fs-md);
	font-weight: 600;
	line-height: 1.2;
}

.lt-gift__note.elementor-widget-text-editor {
	color: var(--lt-soft);
	max-width: 56ch;
}

.lt-gift > .elementor-widget-button {
	justify-self: end;
}

/* Stocking fillers */
.lt-filler > .lt-tag.elementor-widget-text-editor {
	--lt-tag-w: 100%;
}

.lt-filler__name.elementor-widget-text-editor {
	font-size: var(--lt-fs-fact);
	line-height: 1.35;
	text-align: center;
}

.lt-filler__name p {
	margin: 0;
}

/* ---------- Collections ---------- */

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

.lt-collection__title .elementor-heading-title a {
	color: var(--lt-ink);
}

.lt-collection__title .elementor-heading-title a:hover {
	color: var(--lt-primary);
}

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

.lt-collection__from.elementor-widget-text-editor {
	font-weight: 600;
	font-size: var(--lt-fs-fact);
}

.lt-collection p {
	margin: 0;
}

/* ---------- Last order dates (the only red) ---------- */

.e-con.lt-date {
	--padding-top: 1.1rem;
	--padding-bottom: 1.1rem;
}

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

.lt-date__how.elementor-widget-text-editor {
	color: var(--lt-soft);
	font-size: var(--lt-fs-fact);
}

.lt-date__by.elementor-widget-text-editor {
	color: var(--lt-accent);
	font-weight: 700;
	font-size: var(--lt-fs-md);
	line-height: 1.2;
	white-space: nowrap;
}

.lt-date__by p {
	margin: 0;
	padding-left: 0.85rem;
	border-left: 3px solid var(--lt-accent);
}

.lt-pl {
	display: block;
	color: var(--lt-soft);
	font-size: var(--lt-fs-sm);
	font-weight: 400;
}

/* ---------- Steps, prices, events ---------- */

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

.lt-dark .e-con.lt-step {
	border-top-color: color-mix(in srgb, var(--lt-on-dark) 22%, var(--lt-dark));
}

.lt-step__n.elementor-widget-text-editor {
	font-size: var(--lt-fs-lg);
	font-weight: 700;
	color: var(--lt-primary);
	line-height: 1;
}

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

.lt-step__n p {
	margin: 0;
}

.lt-step__title .elementor-heading-title {
	font-size: 1.3125rem;
}

.lt-step .elementor-widget-text-editor p {
	margin: 0;
}

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

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

.lt-price__amount {
	font-weight: 600;
	font-size: var(--lt-fs-fact);
}

.lt-hours:not(.lt-hero__hours) .lt-price:last-child .lt-price__amount {
	color: var(--lt-soft);
	font-weight: 400;
}

.e-con.lt-event {
	--padding-top: 1.25rem;
	--padding-bottom: 1.25rem;
}

.lt-event__date.elementor-widget-text-editor {
	font-weight: 600;
	font-size: var(--lt-fs-fact);
}

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

.lt-event__meta.elementor-widget-text-editor {
	font-size: var(--lt-fs-fact);
	color: var(--lt-soft);
}

.lt-event > .elementor-widget:last-child {
	justify-self: end;
}

/* Dark band buttons */
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);
}

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

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

.lt-pagehead__title .elementor-heading-title {
	max-width: 18ch;
}

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

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

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

.e-con.lt-maker {
	--padding-top: 1.1rem;
	--padding-bottom: 1.1rem;
}

.lt-map img {
	display: block;
	width: 100%;
	height: auto;
	border: 1px solid var(--lt-line);
}

.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;
}

.lt-footer__title .elementor-heading-title {
	font-size: var(--lt-fs-sm);
	font-weight: 600;
	letter-spacing: 0.01em;
}

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

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

/* ---------- Blog ---------- */

.lt-post__title {
	font-weight: 700;
}

.lt-single__content {
	font-size: var(--lt-fs-base);
}

/* ---------- Contact form ---------- */

.e-con.lt-form {
	border: 0;
	border-top: 3px solid var(--lt-primary);
	border-radius: 0;
	--lt-form-bg: var(--lt-base);
	background: var(--lt-base);
}

body .lt-form .wpforms-container {
	--wpforms-field-border-radius: 2px;
	--wpforms-button-border-radius: 2px;
}

/* ---------- Tablet ---------- */

@media (max-width: 1024px) {
	.e-con.lt-hero__text {
		max-width: 40rem;
	}

	.lt-maker > .elementor-widget-text-editor:last-child {
		grid-column: 2;
	}
}

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

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

	.lt-topbar-bar .lt-topbar__match {
		white-space: normal;
	}

	.e-con.lt-hang {
		--padding-bottom: 1.5rem;
	}

	.lt-tag.elementor-widget-text-editor {
		--lt-tag-w: 8.5rem;
	}

	.lt-tag__for {
		font-size: 1.0625rem;
	}

	.lt-tag__price {
		font-size: 1.25rem;
	}

	.lt-gift > .elementor-widget-button {
		justify-self: start;
	}

	.lt-gift > .lt-tag.elementor-widget-text-editor {
		--lt-tag-w: 8.5rem;
	}

	.e-con.lt-gift {
		--row-gap: 12px !important;
		--gap: 12px !important;
	}

	.lt-hero .lt-tag.elementor-widget-text-editor {
		--lt-tag-w: 9rem;
		--lt-cut: 0.95rem;
	}

	.lt-hero .lt-tag p {
		padding: 2.05rem 0.6rem 0.95rem;
	}

	.lt-hero .lt-tag__for {
		font-size: 1.125rem;
	}

	.lt-hero .lt-tag__price {
		font-size: 1.375rem;
	}

	.lt-event > .elementor-widget:last-child {
		justify-self: start;
	}

	.e-con.lt-event,
	.e-con.lt-date,
	.e-con.lt-maker {
		--gap: 6px !important;
		--row-gap: 6px !important;
	}

	.lt-maker > .elementor-widget-text-editor:last-child {
		grid-column: auto;
	}
}
