:root {
	--gpv-ink: #25241f;
	--gpv-muted: #6f6a61;
	--gpv-paper: #fffdf8;
	--gpv-soft: #f5f0e6;
	--gpv-gold: #b58a3d;
	--gpv-gold-dark: #7f5d20;
	--gpv-line: #e5dccd;
	--gpv-radius: 22px;
}
.gpv-directory, .gpv-profile { color: var(--gpv-ink); font-family: inherit; }
.gpv-directory { max-width: 1240px; margin: 0 auto; }
.gpv-directory__intro { max-width: 760px; margin: 0 0 clamp(26px, 4vw, 48px); }
.gpv-directory__eyebrow, .gpv-card__category, .gpv-profile__category { color: var(--gpv-gold-dark); font-size: .75rem; font-weight: 700; letter-spacing: .105em; line-height: 1.5; margin: 0 0 9px; text-transform: uppercase; }
.gpv-directory__intro h2 { font-size: clamp(2rem, 4.4vw, 3.65rem); letter-spacing: -.035em; line-height: 1.05; margin: 0 0 20px; max-width: 720px; }
.gpv-directory__intro > p:last-child { color: var(--gpv-muted); font-size: clamp(1rem, 1.5vw, 1.17rem); line-height: 1.75; margin: 0; max-width: 660px; }
.gpv-directory__tools { background: var(--gpv-soft); border: 1px solid var(--gpv-line); border-radius: var(--gpv-radius); margin-bottom: 20px; padding: clamp(16px, 2.5vw, 28px); }
.gpv-search { align-items: center; background: #fff; border: 1px solid var(--gpv-line); border-radius: 999px; display: flex; gap: 11px; padding: 0 18px; transition: border-color .2s, box-shadow .2s; }
.gpv-search:focus-within { border-color: var(--gpv-gold); box-shadow: 0 0 0 3px rgba(181,138,61,.14); }
.gpv-search svg { fill: none; height: 19px; stroke: currentColor; stroke-linecap: round; stroke-width: 1.7; width: 19px; }
.gpv-search input { appearance: none; background: transparent; border: 0 !important; box-shadow: none !important; color: var(--gpv-ink); flex: 1; font: inherit; min-height: 50px; outline: 0; padding: 0 !important; width: 100%; }
.gpv-filters { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 16px; }
.gpv-filters button { appearance: none; background: transparent; border: 1px solid #d8cdbb; border-radius: 999px; color: var(--gpv-ink); cursor: pointer; font: inherit; font-size: .85rem; font-weight: 600; line-height: 1.2; min-height: 37px; padding: 8px 14px; transition: all .18s ease; }
.gpv-filters button:hover, .gpv-filters button:focus-visible { border-color: var(--gpv-gold); color: var(--gpv-gold-dark); }
.gpv-filters button.is-active { background: var(--gpv-ink); border-color: var(--gpv-ink); color: #fff; }
.gpv-results { color: var(--gpv-muted); font-size: .83rem; margin: 0 0 14px; }
.gpv-grid { display: grid; gap: clamp(18px, 2.3vw, 30px); }
.gpv-grid--1 { grid-template-columns: 1fr; }
.gpv-grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.gpv-grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.gpv-card { background: var(--gpv-paper); border: 1px solid var(--gpv-line); border-radius: var(--gpv-radius); display: grid; grid-template-columns: minmax(150px, 35%) 1fr; min-height: 305px; overflow: hidden; transition: border-color .22s ease, box-shadow .22s ease, transform .22s ease; }
.gpv-grid--3 .gpv-card { display: flex; flex-direction: column; }
.gpv-card:hover { border-color: #d5c4a8; box-shadow: 0 18px 45px rgba(65,50,27,.09); transform: translateY(-3px); }
.gpv-card[hidden] { display: none !important; }
.gpv-card__image { background: #e9e1d4; display: block; min-height: 100%; overflow: hidden; text-decoration: none; }
.gpv-grid--3 .gpv-card__image { aspect-ratio: 16 / 10; min-height: 0; }
.gpv-card__image img { display: block; height: 100%; object-fit: cover; transition: transform .5s ease; width: 100%; }
.gpv-card:hover .gpv-card__image img { transform: scale(1.025); }
.gpv-card__placeholder { align-items: center; background: linear-gradient(145deg, #eee4d4, #d8c29e); color: #6e5427; display: flex; font-size: clamp(2rem, 4vw, 4rem); font-weight: 600; height: 100%; justify-content: center; letter-spacing: .05em; min-height: 240px; }
.gpv-card__body { display: flex; flex-direction: column; padding: clamp(20px, 2.5vw, 31px); }
.gpv-card h3 { font-size: clamp(1.28rem, 2vw, 1.65rem); letter-spacing: -.018em; line-height: 1.2; margin: 0 0 10px; }
.gpv-card h3 a { color: inherit; text-decoration: none; }
.gpv-card__location { color: var(--gpv-muted); font-size: .83rem; line-height: 1.5; margin: 0 0 13px; }
.gpv-card__excerpt { color: #504c45; display: -webkit-box; font-size: .94rem; line-height: 1.65; margin: 0 0 21px; overflow: hidden; -webkit-box-orient: vertical; -webkit-line-clamp: 4; }
.gpv-card__actions { align-items: center; display: flex; flex-wrap: wrap; gap: 12px 18px; margin-top: auto; }
.gpv-link { color: var(--gpv-gold-dark); font-size: .88rem; font-weight: 700; text-decoration: none; }
.gpv-link:hover { text-decoration: underline; text-underline-offset: 3px; }
.gpv-link--muted { color: var(--gpv-muted); font-weight: 600; }
.gpv-no-results, .gpv-empty { background: var(--gpv-soft); border-radius: 16px; color: var(--gpv-muted); margin: 20px 0 0; padding: 28px; text-align: center; }
.gpv-profile { margin: 0 auto; max-width: 1160px; padding: clamp(35px, 6vw, 90px) clamp(20px, 4vw, 48px); }
.gpv-profile__back { font-size: .9rem; margin: 0 0 clamp(25px, 4vw, 50px); }
.gpv-profile__back a { color: var(--gpv-muted); text-decoration: none; }
.gpv-profile__hero { align-items: center; display: grid; gap: clamp(26px, 5vw, 70px); grid-template-columns: minmax(240px, 40%) 1fr; margin-bottom: clamp(40px, 7vw, 80px); }
.gpv-profile__hero img { aspect-ratio: 4 / 3; border-radius: var(--gpv-radius); height: auto; object-fit: cover; width: 100%; }
.gpv-profile__hero h1 { font-size: clamp(2.25rem, 5.5vw, 4.8rem); letter-spacing: -.045em; line-height: .98; margin: 0; }
.gpv-profile__lead { color: var(--gpv-muted); font-size: clamp(1.05rem, 2vw, 1.27rem); line-height: 1.65; margin: 22px 0 0; }
.gpv-profile__layout { align-items: start; display: grid; gap: clamp(35px, 6vw, 85px); grid-template-columns: minmax(0, 1fr) minmax(250px, 330px); }
.gpv-profile__content { font-size: 1.04rem; line-height: 1.8; }
.gpv-profile__content > :first-child { margin-top: 0; }
.gpv-profile__content h2, .gpv-profile__content h3 { line-height: 1.2; margin-top: 1.7em; }
.gpv-contact { background: var(--gpv-soft); border: 1px solid var(--gpv-line); border-radius: var(--gpv-radius); padding: clamp(23px, 3vw, 34px); position: sticky; top: 28px; }
.gpv-contact h2 { font-size: 1.35rem; margin: 0 0 22px; }
.gpv-contact dl, .gpv-contact dd { margin: 0; }
.gpv-contact dl > div { border-top: 1px solid var(--gpv-line); padding: 13px 0; }
.gpv-contact dt { color: var(--gpv-muted); font-size: .72rem; font-weight: 700; letter-spacing: .075em; text-transform: uppercase; }
.gpv-contact dd { line-height: 1.5; margin-top: 4px; overflow-wrap: anywhere; }
.gpv-contact a { color: var(--gpv-gold-dark); }
.gpv-social { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 19px; }
.gpv-social a { border: 1px solid #d6c7ad; border-radius: 999px; font-size: .78rem; font-weight: 650; padding: 7px 11px; text-decoration: none; }
@media (max-width: 900px) {
	.gpv-grid--3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.gpv-profile__layout { grid-template-columns: 1fr; }
	.gpv-contact { position: static; }
}
@media (max-width: 720px) {
	.gpv-grid--2, .gpv-grid--3 { grid-template-columns: 1fr; }
	.gpv-card, .gpv-grid--3 .gpv-card { display: grid; grid-template-columns: 120px 1fr; min-height: 0; }
	.gpv-card__image, .gpv-grid--3 .gpv-card__image { aspect-ratio: auto; min-height: 100%; }
	.gpv-card__placeholder { font-size: 1.8rem; min-height: 220px; }
	.gpv-card__excerpt { -webkit-line-clamp: 3; }
	.gpv-profile__hero { align-items: start; grid-template-columns: 1fr; }
	.gpv-profile__hero img { aspect-ratio: 16 / 10; max-width: 580px; }
}
@media (max-width: 480px) {
	.gpv-card, .gpv-grid--3 .gpv-card { display: flex; flex-direction: column; }
	.gpv-card__image, .gpv-grid--3 .gpv-card__image { aspect-ratio: 16 / 10; min-height: 0; }
	.gpv-card__body { padding: 21px; }
	.gpv-filters { flex-wrap: nowrap; margin-left: -16px; margin-right: -16px; overflow-x: auto; padding: 0 16px 5px; scrollbar-width: thin; }
	.gpv-filters button { flex: 0 0 auto; }
}
@media (prefers-reduced-motion: reduce) {
	.gpv-card, .gpv-card__image img { transition: none; }
}

