/* ZooReviews UI. Loaded by zr_child_enqueue_ui() under a content-hashed filename;
   see the note in ../style.css for why the name carries a hash. */

/* Image credit captions */
.zr-photo-credit {
    display: block;
    font-size: 0.85em;
    color: #666;
    font-style: italic;
    margin-top: .35em;
}

/* Facility hub pages (/zoo/<facility>/) */
.zr-hub-intro {
    max-width: 760px;
    margin: 0 auto 1.5em;
    text-align: center;
}
.zr-hub-meta {
    text-transform: uppercase;
    letter-spacing: .08em;
    font-size: .78em;
    color: #8a8a8a;
    margin: 0 0 .4em;
}
.zr-hub-blurb {
    font-size: 1.02em;
    color: #555;
    margin: 0;
}
.zr-hub-site { white-space: nowrap; font-weight: 600; }

/* --- Clickable hero (see js/hero-link.js) ------------------------------- */
.post-slide { position: relative; }

.post-slide > .zr-hero-link,
.post-slide .slide-content article > .zr-slide-link {
	position: absolute;
	inset: 0;
	display: block;
	/* No visual change: these exist purely to catch the click. */
	background: transparent;
	text-indent: -9999px;
	overflow: hidden;
}

.post-slide > .zr-hero-link { z-index: 2; }
.post-slide .slide-content article { position: relative; }
.post-slide .slide-content article > .zr-slide-link { z-index: 1; }

/* The caption card sits above the hero overlay so its own links still work. */
.post-slide .owl-carousel { z-index: 3; }

/* These go somewhere other than the post, so lift them above both overlays. */
.post-slide .slide-content .post__cat { position: relative; z-index: 3; }
.post-slide .owl-dots,
.post-slide .owl-nav { position: relative; z-index: 5; }

.post-slide > .zr-hero-link:focus-visible,
.post-slide .slide-content article > .zr-slide-link:focus-visible { outline: none; }


/* =========================================================================
   ZooReviews UI kit, rebuilt 2026-09-08 on Eric's note that the pull quotes,
   the related block and the facility footer all read cheap.

   Three complaints, three causes:
     - Quotes: the parent theme sets blockquote text to rgba(0,0,0,.5) with a
       #eee rule and a #eee 5em quote glyph. Half-opacity grey on white is the
       contrast problem, and the glyph was the loudest thing in the block.
     - Related: an unstyled <ul> with a hairline on the left is a list, not a
       card. Three gold links stacked also read as an ad unit.
     - Facility footer: a sentence with a link in it is not a call to action.

   Palette is the site's own: #F9B700 is the theme accent (Customizer
   --color-logo / --color-links-hover) and #2E7D4F is the green this footer
   has always used. Nothing new was invented. The neutrals are warm-biased
   toward the gold rather than pure grey, which is most of why this now reads
   as chosen rather than default.

   Single-theme light on purpose. The site has no dark mode enabled (body
   carries no .suga-dark-mode class), so a prefers-color-scheme block here
   would darken these three components inside a page that stayed white.
   ========================================================================= */
.zr-cta,
.zr-related,
.typography-copy blockquote,
.comment-content blockquote {
	--zr-gold: #F9B700;
	--zr-gold-deep: #8A5E00;
	--zr-green: #2E7D4F;
	--zr-green-deep: #1E4C33;
	--zr-ink: #1B1917;
	--zr-ink-soft: #33302B;
	--zr-muted: #6E6A63;
	--zr-surface: #FBFAF7;
	--zr-line: rgba(27, 25, 23, .11);
	--zr-shadow: 0 1px 2px rgba(27, 25, 23, .05), 0 8px 24px -12px rgba(27, 25, 23, .16);
}

/* --- Pull quotes ------------------------------------------------------- */
.typography-copy blockquote,
.comment-content blockquote {
	position: relative;
	margin: 2em 0;
	padding: 1.5em 1.75em 1.4em 2em;
	border: 1px solid var(--zr-line);
	border-left: 4px solid var(--zr-gold);
	border-radius: 3px;
	background: var(--zr-surface);
	box-shadow: var(--zr-shadow);
	color: var(--zr-ink-soft);
	font-size: 1.14em;
	line-height: 1.62;
	overflow: hidden;
}

/* The glyph becomes a watermark instead of a 5em grey block above the text. */
.typography-copy blockquote::before,
.comment-content blockquote::before {
	content: '\201C';
	position: absolute;
	top: .02em;
	right: .3em;
	margin: 0;
	color: var(--zr-gold);
	opacity: .13;
	font-family: "Noto Serif", Georgia, serif;
	font-size: 4.6em;
	font-weight: 700;
	line-height: 1;
	pointer-events: none;
}

.typography-copy blockquote p,
.comment-content blockquote p {
	position: relative;
	margin: 0 0 .55em;
	color: var(--zr-ink-soft);
}
.typography-copy blockquote p:last-child,
.comment-content blockquote p:last-child { margin-bottom: 0; }

/* House markup is  "quote"<br><em>Attribution</em>  so br+em is the
   attribution and nothing else. Targeting bare `em` would have restyled every
   italicised binomial inside a quote. */
.typography-copy blockquote br + em,
.comment-content blockquote br + em,
.typography-copy blockquote cite,
.comment-content blockquote cite {
	display: block;
	margin-top: .95em;
	padding-top: .8em;
	border-top: 1px solid var(--zr-line);
	color: var(--zr-ink);
	font-size: .74em;
	font-style: normal;
	font-weight: 600;
	letter-spacing: .045em;
	line-height: 1.45;
}
.typography-copy blockquote br + em::before,
.comment-content blockquote br + em::before,
.typography-copy blockquote cite::before,
.comment-content blockquote cite::before {
	content: '';
	display: inline-block;
	width: 1.5em;
	margin-right: .6em;
	border-top: 2px solid var(--zr-gold);
	vertical-align: .3em;
}

/* --- More from ZooReviews ---------------------------------------------- */
.zr-related {
	margin: 2.4em 0 1.6em;
	padding: 1.4em 1.6em 1.5em;
	border: 1px solid var(--zr-line);
	border-radius: 6px;
	background: var(--zr-surface);
	box-shadow: var(--zr-shadow);
}
.zr-related .zr-related__head,
.typography-copy .zr-related .zr-related__head {
	margin: 0 0 .9em;
	padding: 0 0 .7em;
	border-bottom: 1px solid var(--zr-line);
	color: var(--zr-ink);
	font-size: .82em;
	font-weight: 700;
	letter-spacing: .14em;
	text-transform: uppercase;
	opacity: 1;
	position: relative;
}
.zr-related .zr-related__head::after {
	content: '';
	position: absolute;
	left: 0;
	bottom: -1px;
	width: 2.6em;
	border-bottom: 2px solid var(--zr-gold);
}
.zr-related ul {
	margin: 0;
	padding: 0;
	list-style: none;
}
.zr-related li {
	margin: 0;
	border-top: 1px solid var(--zr-line);
	line-height: 1.45;
}
.zr-related li:first-child { border-top: 0; }
.zr-related li a {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 1em;
	padding: .72em 0;
	color: var(--zr-ink);
	font-weight: 600;
	text-decoration: none;
	transition: color .18s ease;
}
.zr-related li a::after {
	content: '\2192';
	flex: none;
	color: var(--zr-gold-deep);
	font-weight: 400;
	font-size: 1.05em;
	opacity: .75;
	transition: transform .18s ease, opacity .18s ease;
}
.zr-related li a:hover,
.zr-related li a:focus { color: var(--zr-gold-deep); }
.zr-related li a:hover::after,
.zr-related li a:focus::after { opacity: 1; transform: translateX(.28em); }

/* --- Facility call to action ------------------------------------------- */
.zr-cta {
	margin: 2.4em 0 1.4em;
	padding: 1.6em 1.8em 1.75em;
	border-radius: 8px;
	background: linear-gradient(160deg, #23573B 0%, var(--zr-green-deep) 62%, #1A4229 100%);
	box-shadow: 0 1px 2px rgba(27, 25, 23, .06), 0 14px 34px -18px rgba(30, 76, 51, .55);
	color: #fff;
}
.zr-cta .zr-cta__eyebrow,
.typography-copy .zr-cta .zr-cta__eyebrow {
	margin: 0 0 1.05em;
	padding-bottom: .7em;
	border-bottom: 1px solid rgba(255, 255, 255, .17);
	color: var(--zr-gold);
	font-size: .74em;
	font-weight: 700;
	letter-spacing: .16em;
	text-transform: uppercase;
}
.zr-cta__row + .zr-cta__row {
	margin-top: 1.4em;
	padding-top: 1.3em;
	border-top: 1px solid rgba(255, 255, 255, .14);
}
.zr-cta .zr-cta__title,
.typography-copy .zr-cta .zr-cta__title {
	margin: 0 0 .8em;
	color: #fff;
	font-size: 1.32em;
	font-weight: 700;
	line-height: 1.25;
}
.zr-cta__actions {
	display: flex;
	flex-wrap: wrap;
	gap: .6em;
}
.zr-cta__btn {
	display: inline-flex;
	align-items: center;
	gap: .5em;
	padding: .68em 1.15em;
	border: 1px solid transparent;
	border-radius: 4px;
	font-size: .9em;
	font-weight: 600;
	line-height: 1.2;
	text-decoration: none;
	transition: background-color .18s ease, border-color .18s ease, color .18s ease, transform .18s ease;
}
.zr-cta__btn--primary {
	background: var(--zr-gold);
	color: #1B1917;
}
.zr-cta__btn--primary:hover,
.zr-cta__btn--primary:focus {
	background: #FFC933;
	color: #1B1917;
	transform: translateY(-1px);
}
.zr-cta__btn--ghost {
	border-color: rgba(255, 255, 255, .38);
	color: #fff;
}
.zr-cta__btn--ghost:hover,
.zr-cta__btn--ghost:focus {
	border-color: var(--zr-gold);
	background: rgba(255, 255, 255, .08);
	color: #fff;
	transform: translateY(-1px);
}
/* The two glyphs have different metrics: U+2197 renders noticeably larger and higher
   than U+2192 at the same size, so the ghost button's arrow read as oversized next to
   the primary button's. Pin both. */
.zr-cta__arrow {
	font-size: .92em;
	line-height: 1;
	transition: transform .18s ease;
}
.zr-cta__btn:hover .zr-cta__arrow { transform: translateX(.2em); }

.zr-cta__btn:focus-visible,
.zr-related li a:focus-visible {
	outline: 2px solid var(--zr-gold);
	outline-offset: 3px;
}

@media (max-width: 520px) {
	.zr-cta { padding: 1.35em 1.25em 1.5em; }
	.zr-cta__actions { flex-direction: column; align-items: stretch; }
	.zr-cta__btn { justify-content: center; }
	.zr-related { padding: 1.2em 1.15em 1.3em; }
	.typography-copy blockquote,
	.comment-content blockquote { padding: 1.3em 1.2em 1.2em 1.4em; font-size: 1.06em; }
	.typography-copy blockquote::before,
	.comment-content blockquote::before { font-size: 3.6em; }
	.zr-related li a { gap: .6em; }
}

/* Visible Q&A block (zr_append_faq). The markup earns nothing from Google since the
   May 2026 FAQ rich-result deprecation; the rendered words are the whole point. */
.zr-faq { margin: 2.4em 0 1.4em; }
.zr-faq__head {
	margin: 0 0 .7em;
	font-size: 1.15em;
	padding-bottom: .35em;
	border-bottom: 2px solid rgba(0, 0, 0, .12);
}
.zr-faq dl { margin: 0; }
.zr-faq dt {
	font-weight: 700;
	margin-top: 1em;
	line-height: 1.4;
}
.zr-faq dd { margin: .3em 0 0; }
.zr-faq dd p { margin: 0 0 .5em; }
