/*
 * Rock Bands For Hire — front-end styles.
 * Theme-agnostic: inherits fonts and uses block-theme presets when present
 * (tuned for Twenty Twenty-Five), with sensible fallbacks for classic themes.
 * Copyright (c) 2026 Matt Faler. GPL-2.0-or-later.
 */
.gbfh {
	--gbfh-fg: var(--wp--preset--color--contrast, #111);
	--gbfh-bg: var(--wp--preset--color--base, #fff);
	--gbfh-accent: var(--wp--preset--color--accent-1, #6d28d9);
	--gbfh-accent-fg: var(--wp--preset--color--contrast, #fff);
	--gbfh-muted: color-mix(in srgb, var(--gbfh-fg) 60%, transparent);
	--gbfh-line: color-mix(in srgb, var(--gbfh-fg) 14%, transparent);
	--gbfh-soft: color-mix(in srgb, var(--gbfh-fg) 4%, var(--gbfh-bg));
	--gbfh-radius: 12px;
	--gbfh-gap: var(--wp--preset--spacing--40, 1.25rem);
	color: var(--gbfh-fg);
	box-sizing: border-box;
}
.gbfh *, .gbfh *::before, .gbfh *::after { box-sizing: inherit; }
.gbfh h2 { font-size: var(--wp--preset--font-size--large, 1.5rem); margin: 0 0 .5em; }
.gbfh h3 { font-size: var(--wp--preset--font-size--medium, 1.15rem); margin: 0 0 .25em; }

/* Buttons & inputs */
.gbfh-button {
	display: inline-flex; align-items: center; gap: .35em; cursor: pointer;
	padding: .65em 1.15em; border-radius: 999px; border: 1px solid transparent;
	background: var(--gbfh-accent); color: var(--gbfh-accent-fg);
	font: inherit; font-weight: 600; text-decoration: none; line-height: 1.2;
}
.gbfh-button:hover, .gbfh-button:focus-visible { filter: brightness(.95); text-decoration: none; }
.gbfh-button--ghost { background: transparent; border-color: var(--gbfh-line); color: var(--gbfh-fg); }
.gbfh-button--small { padding: .45em .9em; font-size: .9em; }
.gbfh-link { background: none; border: 0; padding: 0; color: inherit; text-decoration: underline; cursor: pointer; font: inherit; font-size: .9em; margin-right: 1em; }
.gbfh-link--danger { color: #b91c1c; }
.gbfh input[type="text"], .gbfh input[type="email"], .gbfh input[type="tel"], .gbfh input[type="url"],
.gbfh input[type="number"], .gbfh input[type="date"], .gbfh input[type="time"], .gbfh input[type="password"], .gbfh select, .gbfh textarea {
	width: 100%; padding: .6em .75em; border: 1px solid var(--gbfh-line); border-radius: 8px;
	background: var(--gbfh-bg); color: var(--gbfh-fg); font: inherit;
}
.gbfh input:focus, .gbfh select:focus, .gbfh textarea:focus { outline: 2px solid var(--gbfh-accent); outline-offset: 1px; }
.gbfh-field { margin: 0 0 1em; }
.gbfh-field > label, .gbfh-label { display: block; font-weight: 600; font-size: .9em; margin-bottom: .3em; }
.gbfh-inline { display: flex; gap: .5em; align-items: center; flex-wrap: wrap; }
.gbfh-inline input { flex: 1 1 12em; }
.gbfh-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr)); gap: 0 1rem; }
.gbfh-checks { display: flex; flex-wrap: wrap; gap: .35em 1em; }
.gbfh-checks label { font-weight: 400; white-space: nowrap; }
.gbfh-form fieldset { border: 1px solid var(--gbfh-line); border-radius: var(--gbfh-radius); padding: 1rem 1.25rem .25rem; margin: 0 0 1.25rem; }
.gbfh-form legend { font-weight: 700; padding: 0 .4em; }
.gbfh-hp { position: absolute !important; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.gbfh-small { font-size: .85em; color: var(--gbfh-muted); }
.gbfh-advanced summary { cursor: pointer; font-size: .9em; margin-bottom: .5em; }

/* Notices */
.gbfh-notice { padding: .8em 1em; border-radius: 8px; margin: 0 0 1em; border-left: 4px solid; }
.gbfh-notice ul { margin: 0; padding-left: 1.2em; }
.gbfh-notice--ok { background: #ecfdf5; border-color: #059669; color: #064e3b; }
.gbfh-notice--warn { background: #fffbeb; border-color: #d97706; color: #78350f; }
.gbfh-notice--error { background: #fef2f2; border-color: #dc2626; color: #7f1d1d; }

/* Directory */
.gbfh-directory__head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: .5em 1em; }
.gbfh-directory__status { margin: 0; color: var(--gbfh-muted); font-size: .95em; }
.gbfh-filters {
	display: flex; flex-wrap: wrap; gap: .75rem 1rem; align-items: flex-end;
	padding: 1rem; margin: 0 0 1.25rem; border-radius: var(--gbfh-radius); background: var(--gbfh-soft);
}
.gbfh-filters .gbfh-field { margin: 0; flex: 0 1 11rem; }
.gbfh-filters .gbfh-field--location { flex: 1 1 20rem; }
.gbfh-field--toggle label { font-weight: 400; display: flex; gap: .4em; align-items: center; padding-bottom: .6em; }
.gbfh-view-toggle { display: inline-flex; border: 1px solid var(--gbfh-line); border-radius: 999px; overflow: hidden; margin-left: auto; }
.gbfh-view-toggle button { border: 0; background: transparent; color: inherit; padding: .55em 1.1em; cursor: pointer; font: inherit; }
.gbfh-view-toggle button.is-active { background: var(--gbfh-fg); color: var(--gbfh-bg); }
.gbfh-map { height: 26rem; border-radius: var(--gbfh-radius); margin: 0 0 1.25rem; z-index: 0; }
.gbfh-map--small { height: 14rem; margin: 0; }
.gbfh-results { display: grid; gap: var(--gbfh-gap); }
.gbfh-directory.is-loading .gbfh-results { opacity: .5; transition: opacity .2s; }
.gbfh-empty { padding: 2rem; text-align: center; color: var(--gbfh-muted); background: var(--gbfh-soft); border-radius: var(--gbfh-radius); }
.gbfh-more { text-align: center; margin: 1.5rem 0; }
.gbfh-cta { text-align: center; margin-top: 2rem; color: var(--gbfh-muted); }

/* Card */
.gbfh-card {
	display: grid; grid-template-columns: 11rem 1fr; gap: 1.25rem; padding: 1rem;
	border: 1px solid var(--gbfh-line); border-radius: var(--gbfh-radius); background: var(--gbfh-bg);
}
.gbfh-card__media { display: block; aspect-ratio: 4 / 3; border-radius: 8px; overflow: hidden; background: var(--gbfh-soft); }
.gbfh-card__media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.gbfh-card__placeholder { display: grid; place-items: center; height: 100%; font-size: 2.5rem; color: var(--gbfh-muted); }
.gbfh-card__title a { color: inherit; text-decoration: none; }
.gbfh-card__title a:hover { text-decoration: underline; }
.gbfh-card__meta { display: flex; flex-wrap: wrap; gap: .3em .9em; margin: 0 0 .4em; font-size: .92em; color: var(--gbfh-muted); }
.gbfh-card__distance { font-weight: 700; color: var(--gbfh-fg); }
.gbfh-card__excerpt { margin: .4em 0; font-size: .95em; }
.gbfh-card__foot { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: .5em; margin: .6em 0 0; }
.gbfh-card__rate { font-weight: 600; }
.gbfh-tags { display: flex; flex-wrap: wrap; gap: .35em; margin: 0 0 .4em; }
.gbfh-tag { font-size: .78em; padding: .2em .65em; border-radius: 999px; background: var(--gbfh-soft); border: 1px solid var(--gbfh-line); }
.gbfh-directory.is-map-view .gbfh-results { grid-template-columns: repeat(auto-fill, minmax(18rem, 1fr)); }
.gbfh-directory.is-map-view .gbfh-card { grid-template-columns: 1fr; }
@media (max-width: 600px) {
	.gbfh-card { grid-template-columns: 1fr; }
	.gbfh-view-toggle { margin-left: 0; }
}

/* Single band */
.gbfh-band__header { margin-bottom: 1rem; }
.gbfh-band__rate { font-size: 1.15em; font-weight: 700; margin: .3em 0 0; }
.gbfh-badge { font-size: .8em; padding: .2em .7em; border-radius: 999px; font-weight: 600; }
.gbfh-badge--ok { background: #dcfce7; color: #14532d; }
.gbfh-badge--off { background: #f3f4f6; color: #374151; }
.gbfh-gallery { display: grid; grid-template-columns: repeat(4, 1fr); gap: .5rem; margin: 0 0 1.5rem; }
.gbfh-gallery__item { display: block; border-radius: 8px; overflow: hidden; aspect-ratio: 1; }
.gbfh-gallery__item--lead { grid-column: span 2; grid-row: span 2; }
.gbfh-gallery__item img { width: 100%; height: 100%; object-fit: cover; display: block; }
.gbfh-band__layout { display: grid; grid-template-columns: minmax(0, 2fr) minmax(16rem, 1fr); gap: 2rem; }
.gbfh-band__layout section { margin-bottom: 2rem; }
.gbfh-panel { border: 1px solid var(--gbfh-line); border-radius: var(--gbfh-radius); padding: 1.1rem 1.25rem; margin-bottom: 1rem; background: var(--gbfh-bg); }
.gbfh-contact { list-style: none; margin: 0; padding: 0; }
.gbfh-contact li { padding: .35em 0; border-bottom: 1px solid var(--gbfh-line); }
.gbfh-contact li:last-child { border-bottom: 0; }
.gbfh-embed { margin: 0 0 1rem; }
.gbfh-embed iframe { width: 100%; max-width: 100%; border-radius: 8px; }
.gbfh-embed iframe[src*="youtube"], .gbfh-embed iframe[src*="vimeo"] { aspect-ratio: 16 / 9; height: auto; }
@media (max-width: 800px) {
	.gbfh-band__layout { grid-template-columns: 1fr; }
	.gbfh-gallery { grid-template-columns: repeat(2, 1fr); }
}

/* Dashboard & account */
.gbfh-tabs { display: flex; flex-wrap: wrap; gap: .25rem; border-bottom: 1px solid var(--gbfh-line); margin: 0 0 1.5rem; }
.gbfh-tabs__tab { padding: .6em 1em; text-decoration: none; color: var(--gbfh-muted); border-bottom: 3px solid transparent; margin-bottom: -1px; }
.gbfh-tabs__tab.is-active { color: var(--gbfh-fg); border-bottom-color: var(--gbfh-accent); font-weight: 600; }
.gbfh-tabs__logout { margin-left: auto; padding: .6em 0; font-size: .9em; }
.gbfh-owner-band { display: grid; grid-template-columns: 6rem 1fr; gap: 1rem; padding: 1rem 0; border-bottom: 1px solid var(--gbfh-line); }
.gbfh-owner-band__thumb { width: 6rem; height: 6rem; border-radius: 8px; overflow: hidden; background: var(--gbfh-soft); display: grid; place-items: center; font-size: 2rem; }
.gbfh-owner-band__thumb img { width: 100%; height: 100%; object-fit: cover; }
.gbfh-owner-band p { margin: .3em 0; }
.gbfh-owner-band__actions { display: flex; flex-wrap: wrap; gap: .4em; }
.gbfh-status { display: inline-block; font-size: .78em; font-weight: 700; padding: .15em .6em; border-radius: 999px; margin-right: .4em; background: #f3f4f6; color: #374151; }
.gbfh-status--live { background: #dcfce7; color: #14532d; }
.gbfh-status--pending { background: #fef3c7; color: #78350f; }
.gbfh-status--rejected { background: #fee2e2; color: #7f1d1d; }
.gbfh-photo-grid { display: flex; flex-wrap: wrap; gap: .75rem; margin-bottom: 1rem; }
.gbfh-photo { display: grid; gap: .2em; font-size: .85em; }
.gbfh-photo img { width: 6rem; height: 6rem; object-fit: cover; border-radius: 6px; }
.gbfh-inquiry { border: 1px solid var(--gbfh-line); border-radius: 8px; padding: .75rem 1rem; margin-bottom: .6rem; }
.gbfh-inquiry summary { cursor: pointer; }
.gbfh-inquiry summary .gbfh-small { display: block; }
.gbfh-dl { display: grid; grid-template-columns: 7rem 1fr; gap: .3em 1em; margin: .75em 0 0; }
.gbfh-dl dt { font-weight: 600; }
.gbfh-dl dd { margin: 0; }
.gbfh-account__cols { display: grid; grid-template-columns: repeat(auto-fit, minmax(18rem, 1fr)); gap: 1.5rem; }
.gbfh-lead { font-size: 1.1em; }

/* Live shows ("Come see us live") */
.gbfh-show-list { display: grid; gap: .75rem; }
.gbfh-shows .gbfh-show-list { grid-template-columns: repeat(auto-fill, minmax(min(100%, 22rem), 1fr)); }
.gbfh-show {
	display: grid; grid-template-columns: 4.25rem 1fr auto; gap: 1rem; align-items: center; padding: .85rem 1rem;
	border: 1px solid var(--gbfh-line); border-radius: var(--gbfh-radius); background: var(--gbfh-bg);
}
.gbfh-shows .gbfh-show { grid-template-columns: 4.25rem 1fr; }
.gbfh-shows .gbfh-show__cta { grid-column: 2; }
.gbfh-show--today { border-color: var(--gbfh-accent); box-shadow: inset 4px 0 0 var(--gbfh-accent); }
.gbfh-show__date {
	display: grid; justify-items: center; align-content: center; gap: 0; padding: .4rem 0; border-radius: 8px;
	background: var(--gbfh-fg); color: var(--gbfh-bg); line-height: 1.05; text-transform: uppercase; text-align: center;
}
.gbfh-show__wd, .gbfh-show__mon { font-size: .72em; font-weight: 700; letter-spacing: .06em; }
.gbfh-show__day { font-size: 1.7em; font-weight: 800; }
.gbfh-show__band { margin: 0 0 .15em; }
.gbfh-show__band a { color: inherit; text-decoration: none; }
.gbfh-show__band a:hover { text-decoration: underline; }
.gbfh-show__venue { margin: 0 0 .2em; display: flex; flex-wrap: wrap; gap: .2em .6em; align-items: baseline; }
.gbfh-show__time { color: var(--gbfh-muted); font-size: .92em; }
.gbfh-show .gbfh-card__meta { margin: 0 0 .2em; }
.gbfh-show .gbfh-card__loc { color: inherit; }
.gbfh-show__notes { margin: .2em 0 0; font-size: .9em; color: var(--gbfh-muted); }
.gbfh-show__cta { margin: 0; }
.gbfh-badge--live { background: var(--gbfh-accent); color: var(--gbfh-accent-fg); text-transform: uppercase; letter-spacing: .05em; }
.gbfh-shows__bar { display: flex; justify-content: flex-end; margin: 0 0 .75rem; }
.gbfh-shows--tonight .gbfh-directory__head { margin-bottom: .25rem; }
.gbfh-card__next { margin: .3em 0; font-size: .9em; font-weight: 600; }
.gbfh-card__next a { color: inherit; }
.gbfh-show-admin { list-style: none; margin: 0 0 1.5rem; padding: 0; }
.gbfh-show-admin__item { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: .5rem 1rem; padding: .75rem 0; border-bottom: 1px solid var(--gbfh-line); }
.gbfh-show-admin__item.is-editing { background: var(--gbfh-soft); padding-left: .5rem; padding-right: .5rem; }
.gbfh-show-admin__actions { display: flex; gap: .5rem; align-items: center; }
.gbfh-owner-shows__pick { margin: 0 0 1rem; }
.gbfh-owner-shows__pick select { width: auto; }
@media (max-width: 600px) {
	.gbfh-show { grid-template-columns: 3.6rem 1fr; }
	.gbfh-show__cta { grid-column: 2; }
}

/* Keep wide layouts readable in block themes (alignwide can be very wide). */
.gbfh.alignwide { max-width: min(var(--wp--style--global--wide-size, 1200px), 1200px); margin-left: auto !important; margin-right: auto !important; }
.gbfh-single-band .wp-block-post-title.alignwide { max-width: min(var(--wp--style--global--wide-size, 1200px), 1200px); margin-left: auto; margin-right: auto; }
