/*
Theme Name: Ladybird
Theme URI: https://lexitalbot.music
Author: James
Description: A hazy, dark block theme for Ladybird (Lexi Talbot): shoegaze, dreampop and post-rock. Self-hosted fonts, a gigs list managed from the admin, and a homepage created on activation.
Version: 0.1.0
Requires at least: 6.6
Tested up to: 6.8
Requires PHP: 8.0
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: ladybird
*/

/* ------------------------------------------------------------------
   Base
------------------------------------------------------------------ */
html { scroll-behavior: smooth; }
body { -webkit-font-smoothing: antialiased; overflow-x: hidden; }

/* Film grain over the whole site: a small tile, so it stays cheap */
body::before {
	content: "";
	position: fixed;
	inset: 0;
	z-index: 9999;
	pointer-events: none;
	opacity: 0.1;
	mix-blend-mode: overlay;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

a { text-underline-offset: 0.25em; }
:where(a):focus-visible,
:where(button):focus-visible,
:where(input):focus-visible { outline: 2px solid var(--wp--preset--color--candle); outline-offset: 3px; }

/* Small uppercase labels */
.lb-label {
	font-family: var(--wp--preset--font-family--body);
	font-size: var(--wp--preset--font-size--label);
	font-weight: 400;
	letter-spacing: 0.32em;
	text-transform: uppercase;
	color: var(--wp--preset--color--candle);
	margin: 0;
}
.lb-meta {
	font-size: 0.875rem;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: var(--wp--preset--color--smoke);
}

/* ------------------------------------------------------------------
   Header: oval wordmark + nav
------------------------------------------------------------------ */
.lb-header { position: relative; z-index: 5; padding: 2rem var(--wp--preset--spacing--40); }
/* On the homepage the header floats over the hero haze */
body.home header.wp-block-template-part { position: absolute; top: 0; left: 0; right: 0; z-index: 5; }
body.home.admin-bar header.wp-block-template-part { top: 32px; }
@media (max-width: 782px) { body.home.admin-bar header.wp-block-template-part { top: 46px; } }

/* Sections */
.lb-section { padding-block: clamp(4.5rem, 9vw, 7.5rem); }
.lb-section > .lb-inner, .lb-hero > .lb-inner { max-width: 1200px; margin-inline: auto; padding-inline: 0; }
.lb-wordmark { margin: 0; }
.lb-wordmark a {
	display: inline-block;
	border: 1px solid rgba(236, 228, 239, 0.6);
	border-radius: 999px;
	padding: 0.45rem 1.75rem 0.55rem;
	font-family: var(--wp--preset--font-family--wordmark);
	font-style: italic;
	font-weight: 400;
	font-size: 1.625rem;
	text-transform: lowercase;
	letter-spacing: 0;
	text-decoration: none;
	color: var(--wp--preset--color--mist);
	transition: border-color 0.25s ease, color 0.25s ease;
}
.lb-wordmark a:hover { border-color: var(--wp--preset--color--candle); color: var(--wp--preset--color--candle); }

.lb-nav .wp-block-navigation-item__content,
.lb-nav .wp-block-navigation-item a {
	font-size: var(--wp--preset--font-size--label);
	letter-spacing: 0.26em;
	text-transform: uppercase;
	font-weight: 400;
	text-decoration: none;
	padding: 0.75rem 0;
}
.lb-nav .wp-block-navigation-item__content:hover { color: var(--wp--preset--color--candle); }
.wp-block-navigation__responsive-container.is-menu-open {
	background-color: var(--wp--preset--color--night) !important;
	color: var(--wp--preset--color--mist) !important;
}

/* ------------------------------------------------------------------
   Hero with haze
------------------------------------------------------------------ */
.lb-hero {
	position: relative;
	overflow: hidden;
	isolation: isolate;
	min-height: 46rem;
	margin-block-start: 0;
	padding-top: 11rem;
	padding-bottom: clamp(5rem, 10vw, 9.5rem);
}
.lb-hero::before {
	content: "";
	position: absolute;
	inset: -10% -15% -10% -15%;
	z-index: -1;
	pointer-events: none;
	background:
		radial-gradient(closest-side at 18% 22%, rgba(107, 74, 143, 0.62), rgba(107, 74, 143, 0) 100%),
		radial-gradient(closest-side at 82% 38%, rgba(184, 98, 127, 0.5), rgba(184, 98, 127, 0) 100%),
		radial-gradient(closest-side at 48% 112%, rgba(227, 183, 120, 0.3), rgba(227, 183, 120, 0) 100%);
	background-size: 80% 110%, 70% 95%, 60% 80%;
	background-position: 0% 0%, 100% 30%, 45% 100%;
	background-repeat: no-repeat;
}
/* header sits on top of the hero haze */
.lb-hero > .lb-hero-header { position: relative; }

.lb-hero-title {
	font-size: clamp(4.5rem, 14vw, 11.875rem) !important;
	line-height: 0.92 !important;
	letter-spacing: -0.02em;
	margin: 1.75rem 0 0 !important;
}
.lb-hero-by { margin: 1.4rem 0 0; font-size: 0.875rem; letter-spacing: 0.26em; text-transform: uppercase; color: var(--wp--preset--color--smoke); }
.lb-hero-tag {
	font-family: var(--wp--preset--font-family--display);
	font-style: italic;
	font-weight: 400;
	font-size: clamp(1.5rem, 3vw, 2.125rem);
	line-height: 1.3;
	color: var(--wp--preset--color--lilac);
	max-width: 35rem;
	margin: 2.25rem 0 0;
}
.lb-hero-actions { margin-top: 3rem; }

/* ------------------------------------------------------------------
   Buttons
------------------------------------------------------------------ */
.wp-block-button__link {
	text-transform: uppercase;
	letter-spacing: 0.24em;
	font-weight: 500;
	text-decoration: none;
	transition: background-color 0.25s ease, color 0.25s ease, border-color 0.25s ease;
}
.wp-block-button__link:hover { background-color: var(--wp--preset--color--mist); color: var(--wp--preset--color--night); }
.wp-block-button.is-style-outline > .wp-block-button__link {
	background: transparent;
	color: var(--wp--preset--color--mist);
	border: 1px solid rgba(236, 228, 239, 0.5);
	font-weight: 400;
}
.wp-block-button.is-style-outline > .wp-block-button__link:hover {
	background: transparent;
	color: var(--wp--preset--color--candle);
	border-color: var(--wp--preset--color--candle);
}

/* ------------------------------------------------------------------
   Listen
------------------------------------------------------------------ */
.lb-listen { display: grid; grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr); gap: clamp(2rem, 6vw, 4rem); align-items: center; }
.lb-cover { margin: 0; max-width: 460px; width: 100%; }
.lb-cover img { display: block; width: 100%; aspect-ratio: 1 / 1; object-fit: cover; }
.lb-release-title { font-size: clamp(3.75rem, 8vw, 7rem) !important; line-height: 0.95 !important; margin: 1.1rem 0 0 !important; letter-spacing: -0.015em; }
.lb-embed {
	margin-top: 2.25rem;
	min-height: 152px;
	border: 1px dashed rgba(236, 228, 239, 0.35);
	display: flex;
	align-items: center;
	justify-content: center;
	text-align: center;
	padding: 1rem;
}
.lb-embed p { margin: 0; font-size: 0.8125rem; letter-spacing: 0.2em; text-transform: uppercase; color: var(--wp--preset--color--smoke); }
.lb-streaming { display: flex; flex-wrap: wrap; gap: 0.5rem 2rem; margin-top: 1.75rem; }
.lb-streaming p { margin: 0; }
.lb-streaming a {
	display: inline-block;
	padding: 0.75rem 0;
	font-size: var(--wp--preset--font-size--label);
	letter-spacing: 0.24em;
	text-transform: uppercase;
	font-weight: 400;
	text-decoration: none;
	border-bottom: 1px solid rgba(236, 228, 239, 0.4);
}
.lb-streaming a:hover { color: var(--wp--preset--color--candle); border-color: var(--wp--preset--color--candle); }
.wp-block-embed iframe, .wp-block-embed__wrapper iframe { max-width: 100%; }

@media (max-width: 800px) {
	.lb-listen { grid-template-columns: minmax(0, 1fr); }
}

/* ------------------------------------------------------------------
   Live / gigs
------------------------------------------------------------------ */
.lb-live { border-block: 1px solid rgba(236, 228, 239, 0.08); }
.lb-section-title { font-size: clamp(3.5rem, 7vw, 6rem) !important; line-height: 1 !important; margin: 1.1rem 0 3.5rem !important; }
.lb-gigs .wp-block-post-template { list-style: none; margin: 0; padding: 0; border-bottom: 1px solid rgba(236, 228, 239, 0.2); }
.lb-gig {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: 0.75rem 2.5rem;
	padding: 1.9rem 0;
	border-top: 1px solid rgba(236, 228, 239, 0.2);
}
.lb-gig > * { margin-block: 0; }
.lb-gig-date {
	flex: 0 0 12.5rem;
	font-family: var(--wp--preset--font-family--display);
	font-style: italic;
	font-weight: 400;
	font-size: 2.125rem;
	line-height: 1.1;
	color: var(--wp--preset--color--candle);
}
.lb-gig-venue { flex: 1 1 16rem; font-family: var(--wp--preset--font-family--body) !important; font-style: normal !important; font-size: 1.375rem !important; font-weight: 400 !important; letter-spacing: 0 !important; line-height: 1.3 !important; margin: 0 !important; }
.lb-gig-venue a { text-decoration: none; }
.lb-gig-city { flex: 1 1 10rem; font-size: 1rem; color: var(--wp--preset--color--smoke); }
.lb-gig .wp-block-buttons { margin: 0; }
.lb-gig .wp-block-button__link {
	background: transparent;
	color: var(--wp--preset--color--mist);
	padding: 0.75rem 0;
	border-radius: 0;
	border-bottom: 1px solid rgba(236, 228, 239, 0.4);
	font-weight: 400;
	font-size: var(--wp--preset--font-size--label);
}
.lb-gig .wp-block-button__link:hover { background: transparent; color: var(--wp--preset--color--candle); border-bottom-color: var(--wp--preset--color--candle); }
/* no ticket link entered: hide the button */
.lb-gig .wp-block-buttons:has(.wp-block-button__link:not([href])),
.lb-gig .wp-block-buttons:has(.wp-block-button__link[href=""]) { display: none; }
.lb-nogigs { margin: 0; padding: 1.9rem 0; border-block: 1px solid rgba(236, 228, 239, 0.2); font-family: var(--wp--preset--font-family--display); font-style: italic; font-size: 1.75rem; color: var(--wp--preset--color--lilac); }

/* ------------------------------------------------------------------
   About
------------------------------------------------------------------ */
.lb-about { display: grid; grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.15fr); gap: clamp(2rem, 6vw, 4.5rem); align-items: center; }
.lb-portrait { margin: 0; max-width: 480px; width: 100%; }
.lb-portrait img { display: block; width: 100%; aspect-ratio: 4 / 5; object-fit: cover; }
.lb-about-lead {
	font-size: clamp(2.125rem, 4.4vw, 3.5rem) !important;
	line-height: 1.15 !important;
	margin: 1.5rem 0 0 !important;
}
.lb-about-body { max-width: 32.5rem; font-size: 1.125rem; line-height: 1.7; color: var(--wp--preset--color--lilac); margin-top: 1.75rem; }
@media (max-width: 800px) {
	.lb-about { grid-template-columns: minmax(0, 1fr); }
}

/* ------------------------------------------------------------------
   Mailing list
------------------------------------------------------------------ */
.lb-list { position: relative; overflow: hidden; isolation: isolate; border-top: 1px solid rgba(236, 228, 239, 0.08); text-align: center; }
.lb-list::before {
	content: "";
	position: absolute;
	inset: -60% 15% -40% 15%;
	z-index: -1;
	pointer-events: none;
	background: radial-gradient(closest-side, rgba(107, 74, 143, 0.35), rgba(107, 74, 143, 0) 100%);
}
.lb-list-title { font-size: clamp(2.75rem, 6vw, 4.5rem) !important; line-height: 1.05 !important; margin: 1.25rem 0 0 !important; }
.lb-list-blurb { max-width: 28.75rem; margin: 1.25rem auto 0; font-size: 1.0625rem; line-height: 1.7; color: var(--wp--preset--color--lilac); }
.lb-form { display: flex; flex-wrap: wrap; gap: 0.75rem; justify-content: center; margin-top: 2.5rem; }
.lb-form label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.lb-form input[type="email"],
.lb-form input[type="text"] {
	flex: 1 1 17.5rem;
	min-width: 0;
	box-sizing: border-box;
	padding: 1rem 1.25rem;
	background: rgba(20, 16, 28, 0.6);
	border: 1px solid rgba(236, 228, 239, 0.45);
	border-radius: 0;
	color: var(--wp--preset--color--mist);
	font-family: var(--wp--preset--font-family--body);
	font-weight: 300;
	font-size: 1rem;
}
.lb-form input::placeholder { color: var(--wp--preset--color--smoke); }
.lb-form button {
	padding: 1rem 2rem;
	background: var(--wp--preset--color--candle);
	color: var(--wp--preset--color--night);
	border: 0;
	border-radius: 0;
	font-family: var(--wp--preset--font-family--body);
	font-weight: 500;
	font-size: var(--wp--preset--font-size--label);
	letter-spacing: 0.24em;
	text-transform: uppercase;
	cursor: pointer;
	transition: background-color 0.25s ease;
}
.lb-form button:hover { background: var(--wp--preset--color--mist); }

/* ------------------------------------------------------------------
   Footer
------------------------------------------------------------------ */
.lb-footer { border-top: 1px solid rgba(236, 228, 239, 0.12); }
.lb-footer p { margin: 0; }
.lb-footer-name { font-family: var(--wp--preset--font-family--wordmark); font-style: italic; font-size: 1.25rem; color: var(--wp--preset--color--smoke); }
.lb-footer-links { display: flex; flex-wrap: wrap; gap: 0.5rem 2rem; }
.lb-footer-links a {
	display: inline-block;
	padding: 0.75rem 0;
	font-size: var(--wp--preset--font-size--label);
	letter-spacing: 0.24em;
	text-transform: uppercase;
	font-weight: 400;
	text-decoration: none;
}
.lb-footer-links a:hover { color: var(--wp--preset--color--candle); }

/* ------------------------------------------------------------------
   Inner pages and journal
------------------------------------------------------------------ */
.lb-page-title { font-size: clamp(3rem, 7vw, 5.5rem) !important; line-height: 1 !important; margin-bottom: 2rem !important; }
.lb-entry-content > * + * { margin-block-start: 1.5em; }
.lb-entry-content p { line-height: 1.75; }
.wp-block-post-title a { text-decoration: none; }
.wp-block-post-title a:hover { color: var(--wp--preset--color--candle); }
.lb-post-meta { font-size: 0.875rem; letter-spacing: 0.18em; text-transform: uppercase; color: var(--wp--preset--color--smoke); }
.lb-post-list { list-style: none; padding: 0; margin: 0; }
.lb-post-item { padding: 2.25rem 0; border-top: 1px solid rgba(236, 228, 239, 0.18); }
.lb-post-item > * { margin-block: 0; }
.lb-post-item > * + * { margin-block-start: 0.9rem; }
.wp-block-search__input { background: rgba(20, 16, 28, 0.6); color: var(--wp--preset--color--mist); border: 1px solid rgba(236, 228, 239, 0.45); border-radius: 0; padding: 0.9rem 1.1rem; }

/* ------------------------------------------------------------------
   Layout fixes: full-bleed sections, left alignment, spacing
------------------------------------------------------------------ */
.wp-site-blocks > * + * { margin-block-start: 0; }
.wp-block-post-content > .lb-hero,
.wp-block-post-content > .lb-section { margin-block: 0; }
/* constrained layout centres narrow children; keep text left-aligned except the mailing list */
.lb-hero > *,
.lb-section:not(.lb-list) > * { margin-left: 0 !important; margin-right: auto !important; }
.lb-live { background: var(--wp--preset--color--dusk); }
.lb-gig-date { text-transform: lowercase; }
.lb-footer { padding: 2.5rem var(--wp--preset--spacing--40) 3.5rem; }
.lb-page { padding-block: 5rem 7rem; }
.lb-footer-links { display: flex; flex-wrap: wrap; gap: 0.5rem 2rem; }
.lb-streaming { display: flex; flex-wrap: wrap; gap: 0.5rem 2rem; }

@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	* { transition: none !important; }
}
