/*
 * Philly Mag reskin — scoped overrides layered on top of parent philly.css.
 *
 * Font format: all families now ship as WOFF2 (after the foundry's
 * "Collected for Production" drop). No OTF fallbacks needed.
 */

/* ---------- Queens (logo/display) ---------- */

@font-face {
	font-family: "Queens Compressed";
	src: url("../fonts/queens/QueensCompressed_W-Regular.woff2") format("woff2");
	font-weight: 400;
	font-style: normal;
	font-display: swap;
}
@font-face {
	font-family: "Queens Compressed";
	src: url("../fonts/queens/QueensCompressed_W-Medium.woff2") format("woff2");
	font-weight: 500;
	font-style: normal;
	font-display: swap;
}
@font-face {
	font-family: "Queens Compressed";
	src: url("../fonts/queens/QueensCompressed_W-Bold.woff2") format("woff2");
	font-weight: 700;
	font-style: normal;
	font-display: swap;
}

/* ---------- MD Lórien (italic editorial accents) ---------- */

@font-face {
	font-family: "MD Lorien";
	src: url("../fonts/md-lorien/MDLorien-Regular.woff2") format("woff2");
	font-weight: 400;
	font-style: normal;
	font-display: swap;
}
@font-face {
	font-family: "MD Lorien";
	src: url("../fonts/md-lorien/MDLorien-Italic.woff2") format("woff2");
	font-weight: 400;
	font-style: italic;
	font-display: swap;
}
@font-face {
	font-family: "MD Lorien";
	src: url("../fonts/md-lorien/MDLorien-Book.woff2") format("woff2");
	font-weight: 500;
	font-style: normal;
	font-display: swap;
}
@font-face {
	font-family: "MD Lorien";
	src: url("../fonts/md-lorien/MDLorien-BookItalic.woff2") format("woff2");
	font-weight: 500;
	font-style: italic;
	font-display: swap;
}

/* ---------- OTT Buzz Black (primary nav) ---------- */

@font-face {
	font-family: "OTT Buzz";
	src: url("../fonts/ott-buzz/OTT_Buzz-Black.woff2") format("woff2");
	font-weight: 900;
	font-style: normal;
	font-display: swap;
}

/* ---------- FAIRE Octave (body/dek) ---------- */

@font-face {
	font-family: "FAIRE Octave";
	src: url("../fonts/faire-octave/FAIRE-Octave-Regular.woff2") format("woff2");
	font-weight: 400;
	font-style: normal;
	font-display: swap;
}
@font-face {
	font-family: "FAIRE Octave";
	src: url("../fonts/faire-octave/FAIRE-Octave-RegularItalic.woff2") format("woff2");
	font-weight: 400;
	font-style: italic;
	font-display: swap;
}
@font-face {
	font-family: "FAIRE Octave";
	src: url("../fonts/faire-octave/FAIRE-Octave-Bold.woff2") format("woff2");
	font-weight: 700;
	font-style: normal;
	font-display: swap;
}
@font-face {
	font-family: "FAIRE Octave";
	src: url("../fonts/faire-octave/FAIRE-Octave-BoldItalic.woff2") format("woff2");
	font-weight: 700;
	font-style: italic;
	font-display: swap;
}

/* ============================================================
   Header
   ============================================================ */

/* Center logo image, sized to the SVG's native height. Reset inherited margins. */
.site-header .header-logo,
.site-header .header-logo h1,
.site-header .header-logo div {
	margin: 0;
	padding: 0;
}
.site-header .header-logo .header-logo-img {
	display: block;
	max-width: 100%;
	height: auto;
	margin: 0 auto;
	padding: 0;
}

/* Align all three header columns (Become-a-Member / logo / Newsletters) to the
   logo baseline. Parent uses align-items: center; switch to flex-end so the
   CTA text sits on the same baseline as the logo. */
.site-header .site-header-inner {
	align-items: flex-end;
}

/* Home page only: parent CSS forces .site-header to height: 135px;
   padding: 4px 0 at the stuck-menu breakpoint (≥60.625em), which
   cramps the larger Philadelphia logo. Unset the fixed height and
   use 33px vertical padding so the header sizes to its contents.
   Verticals keep the parent sizing because their 60px-capped wordmark
   already fits the 135px slot. */
body.home .site-header,
body.front-page .site-header {
	height: auto;
	padding: 33px 0;
}

/* "Become a Member" / "Newsletters" — live text replacing the old SVG icons.
   Center each link inside its flex/grid header column.
   padding-bottom shifts the text up off the logo's descender (the "p" tail
   in "Philadelphia") so it visually sits on the logo's typographic baseline. */
.site-header .header-cta-block {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	text-align: center;
	padding-bottom: 12px;
}
.site-header .header-cta {
	display: inline-block;
	font-family: "MD Lorien", Georgia, serif;
	font-style: italic;
	font-weight: 500; /* Book */
	font-size: 21px;
	line-height: 1.2;
	text-align: center;
	text-decoration: none;
	color: #D2232A;
	font-feature-settings: "swsh";
}
.site-header .header-cta:hover,
.site-header .header-cta:focus {
	color: #000;
	text-decoration: none;
}

/* Hide the old thin-line/SVG icon wrappers if any remain. */
.site-header .header-social .thin-line,
.site-header .header-subscribe .thin-line {
	display: none;
}

/* "Become a Member" / "Newsletters" inside the mobile menu drawer
   (.header-tablet-elements, shown when .js-header-menu-compact.js-expanded).
   The desktop site-header is hidden on mobile, so these are the only place
   mobile users see the CTAs. Same MD Lorien Italic treatment as desktop. */
.header-tablet-elements .header-mobile-cta {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 16px;
	width: 100%;
}
.header-tablet-elements .header-mobile-cta .header-cta {
	display: inline-block;
	font-family: "MD Lorien", Georgia, serif;
	font-style: italic;
	font-weight: 500;
	font-size: 21px;
	line-height: 1.2;
	text-align: center;
	text-decoration: none;
	color: #D2232A;
	font-feature-settings: "swsh";
}
.header-tablet-elements .header-mobile-cta .header-cta:hover,
.header-tablet-elements .header-mobile-cta .header-cta:focus {
	color: #000;
	text-decoration: none;
}

/* On desktop the same two CTAs already live in the site-header. Hide the
   drawer copy so templates whose body class isn't in the parent's
   .home/.page/.single/.search/.archive whitelist (e.g. body.error404)
   don't show duplicate Become a Member / Newsletters links when the
   hamburger is opened at desktop width. */
@media (min-width: 60.625em) {
	.header-tablet-elements .header-mobile-cta {
		display: none;
	}
}

/* Patch the parent's 404 gap: it only switches .header-menu-wrapper to
   display:flex on .home / .page / .single / .search / .archive, and only
   hides .mobile-menu-toggle on those same body classes. body.error404
   misses both, so desktop ends up with no horizontal nav and a stranded
   hamburger. Mirror the .page/.single/.search/.archive rules at the
   $bp-stuck-menu breakpoint (60.625em / 970px). */
@media (min-width: 60.625em) {
	body.error404 .header-menu-wrapper {
		display: flex;
		justify-content: space-between;
		flex: 1;
	}
	body.error404 .mobile-menu-toggle {
		display: none;
	}
}

/* Drop the hairline above the nav strip — parent sets
   .header-navigation { border-top: 1px solid #ddd; border-bottom: 1px solid #ddd }
   and on non-home templates the top border becomes the line between the
   page-top banner ad and the rest of the header. Per spec, remove it.
   The bottom border stays — it still separates the nav strip from the
   logo header / page content. */
.header-navigation {
	border-top: 0;
}

/* Primary nav — OTT Buzz Black, no dashes, no current-site arrow.
   Top-level link font-family + size only. text-transform/padding/weight/
   letter-spacing are set by the broader `.menu-header-main a` rule below
   (per client spec, applies to both top-level and sub-menu items). */
.header-navigation .menu-header-main > li > a {
	font-family: "OTT Buzz", "Helvetica Neue", Arial, sans-serif;
	font-size: 21px;
}

/* Client-specified menu link properties — applied to ALL menu links
   (top-level and sub-menu). Don't add other declarations here. */
.menu-header-main a {
	text-transform: capitalize;
	padding: 5px 0;
	font-weight: 500;
	letter-spacing: 0.04em;
}

/* Sub-menu items use FAIRE Octave (not OTT Buzz). */
.js-header-menu-full .menu-header-main .sub-menu > li a {
	font-family: "FAIRE Octave", Helvetica, sans-serif;
	font-size: 14px;
}

/* Mobile drawer: dropdown (sub-menu) links match the top-level header
   menu typeface (OTT Buzz) for visual consistency inside the drawer.
   Size kept below the 21px top-level items so the hierarchy reads.
   Breakpoint matches the parent's $bp-large-menu (970px). */
@media (max-width: 60.5em) {
	.js-header-menu-full .menu-header-main .sub-menu > li a {
		font-family: "OTT Buzz", "Helvetica Neue", Arial, sans-serif;
		font-size: 16px;
	}
}

/* Parent theme has a media-queried rule:
     @media (min-width: 52.1875em) {
       .js-header-menu-full .menu-header-main .menu-item-has-children:not(.no-children) > a {
         padding-right: 13px;
       }
     }
   ...that reintroduces 13px right padding on dropdown items at ≥835px,
   leftover from the removed chevron. Force it back to 0 so dropdown items
   match non-dropdown spacing. */
.header-navigation .menu-header-main .menu-item-has-children:not(.no-children) > a,
.header-navigation .menu-header-main .menu-item-has-children > a {
	padding-right: 0 !important;
}

/* Remove the dash separators between top-level nav items. */
.header-navigation .menu-header-main > li::before,
.header-navigation .menu-header-main > li::after,
.header-navigation .menu-header-main > li + li::before {
	content: none !important;
	display: none !important;
	border: 0 !important;
}

/* Remove the arrow/indicator on the currently active item. */
.header-navigation .menu-header-main > li.current-menu-item > a::before,
.header-navigation .menu-header-main > li.current-menu-item > a::after,
.header-navigation .menu-header-main > li.current-menu-ancestor > a::before,
.header-navigation .menu-header-main > li.current-menu-ancestor > a::after {
	content: none !important;
	display: none !important;
}

/* Dropdown-indicator arrows on menu items with children.
   Desktop (>= 768px): hide entirely.
   Mobile  (< 768px) : keep, but recolor red → black. */
@media (min-width: 768px) {
	.header-navigation .menu-header-main .menu-item-has-children:not(.no-children) > a::after {
		content: none !important;
		display: none !important;
		border: 0 !important;
	}
}
@media (max-width: 767px) {
	.header-navigation .menu-header-main .menu-item-has-children:not(.no-children) > a::after {
		border-top-color: #000 !important;
	}
}

/* ============================================================
   Front-page river
   ============================================================ */

/* "LATEST STORIES" / "Trending" / "Page not found" / "2026 Issues" / etc.
   — Queens Compressed Bold 28px, hairline rules on the SIDES of the text.
   Applies to every .title-line section header regardless of tag (h1/h2/h3),
   so 404, issues, newsletters, page-events, etc. all match the front-page
   river style. .presented-by is an inline "Sponsor Content" label using
   the same class and is intentionally excluded.
   Parent styles use !important on this selector, so we match it. */
h1.title-line,
h2.title-line,
h3.title-line,
.list-content > .container h2.title-line,
.list-content h2.title-line {
	display: flex !important;
	align-items: center !important;
	gap: 16px !important;
	font-family: "Queens Compressed", Georgia, serif !important;
	font-weight: 700 !important;
	font-size: 28px !important;
	letter-spacing: 0.04em !important;
	text-transform: uppercase !important;
	text-align: center !important;
	background: none !important;
	border: 0 !important;
	padding: 16px 0 !important;
}
h1.title-line::before,
h1.title-line::after,
h2.title-line::before,
h2.title-line::after,
h3.title-line::before,
h3.title-line::after {
	content: "" !important;
	flex: 1 !important;
	height: 1px !important;
	background: #000 !important;
	/* Override the parent's PNG-pattern "dots" background. */
	background-image: none !important;
	border-top: 0 !important;
	width: auto !important;
	top: auto !important;
}

/* Section dividers between river chunks — was dots, now hairline. */
hr.double {
	border: 0;
	border-top: 1px solid #000;
	margin: 32px 0;
	background: none;
	height: 0;
}

/* Single-post + page templates drop a standalone <div class="container">
   <hr class="double"></div> right under the topic-bar/vertical title.
   Per reskin spec the line should go. Scoped to :only-child so river
   dividers (which sit alongside .content-with-sidebar inside .container)
   are unaffected. */
.container > hr.double:only-child {
	display: none;
}

/* River entry typography */
.list-post .post-slug,
.list-post a.post-slug,
.list-post a.post-slug:link,
.list-post a.post-slug:visited {
	font-family: "MD Lorien", Georgia, serif;
	font-style: italic;
	font-weight: 500;
	font-size: 18px;
	text-transform: capitalize;
	letter-spacing: 0;
	color: #000;
	font-feature-settings: "swsh";
}
.list-post a.post-slug:hover,
.list-post a.post-slug:focus {
	color: #d2232a;
}
.list-post .post-title,
.list-post .post-title a {
	font-family: "Queens Compressed", Georgia, serif;
	font-weight: 500;
	font-size: 24px;
	line-height: 1.15;
}
.list-post .post-excerpt,
.list-post .post-excerpt p {
	font-family: "FAIRE Octave", Georgia, serif;
	font-weight: 400;
	font-size: 16px;
	line-height: 22px;
}
.list-post .post-excerpt {
	margin-top: 5px;
}
/* Author byline — MD Lórien Book Italic, black.
   Parent helper outputs literal "By "; we want that lowercase, but the author
   name (inside the <a>) must keep its natural casing. */
.list-post .byline-wrapper,
.list-post .author-byline,
.list-post .byline,
.list-post .author-name,
.list-post .byline-wrapper a,
.list-post .author-byline a,
.list-post .byline a,
.list-post .author-name a,
.list-post .presented-by,
.list-post .presented-by a {
	font-family: "MD Lorien", Georgia, serif;
	font-style: italic;
	font-weight: 500;
	font-size: 18px;
	letter-spacing: 0;
	color: #000;
	font-feature-settings: "swsh";
}

/* Lowercase only the wrapper's own text ("By "), not the link inside it. */
.list-post .byline-wrapper {
	text-transform: lowercase;
}
.list-post .byline-wrapper .byline,
.list-post .byline-wrapper a {
	text-transform: none;
}

/* Sponsored content entries — #F3F3F3 background between rules. */
.list-post.is-sponsored {
	background: #F3F3F3;
	padding: 16px;
}

/* ============================================================
   Lead editorial / marquee (section-lead-editorial.php)
   ============================================================ */

/* Place card directly below the image instead of overlapping it.
   Parent sets margin-top: -78px which collides with the larger reskin title. */
.featured-post .featured-post-card {
	margin-top: 0;
	max-width: 100%;
	padding: 16px 0 0;
	background: none;
}

/* Full-width marquee only (homepage + anywhere the .container wrapper is
   used, NOT vertical landings which wrap in .content-with-sidebar):
   100px gutters L/R on the card. Desktop only — mobile keeps full width. */
@media (min-width: 768px) {
	.container > .featured-post .featured-post-card {
		margin-left: 100px;
		margin-right: 100px;
		max-width: calc(100% - 200px);
	}
}

/* Hero marquee — single big featured story. */
.featured-post .featured-post-card .post-slug,
.featured-post .featured-post-card a.post-slug:link,
.featured-post .featured-post-card a.post-slug:visited {
	font-family: "MD Lorien", Georgia, serif;
	font-style: italic;
	font-weight: 500;
	font-size: 21px;
	text-transform: capitalize;
	letter-spacing: 0;
	color: #000;
	font-feature-settings: "swsh";
}
.featured-post .featured-post-card a.post-slug:hover,
.featured-post .featured-post-card a.post-slug:focus {
	color: #d2232a;
}
.featured-post .featured-post-card .post-title,
.featured-post .featured-post-card .post-title a {
	font-family: "Queens Compressed", Georgia, serif;
	font-weight: 500;
	font-size: 39px;
	line-height: 42px;
}
.featured-post .featured-post-card .post-excerpt,
.featured-post .featured-post-card .post-excerpt p {
	font-family: "FAIRE Octave", Georgia, serif;
	font-weight: 400;
	font-size: 16px;
	line-height: 22px;
}
/* Marquee excerpt sits 5px below the title (was inherited 10px from parent). */
.featured-post .featured-post-card .post-excerpt {
	margin-top: 5px;
}

/* 3-column story ribbon under the marquee. */
.grid-content .grid-post .post-slug,
.grid-content .grid-post a.post-slug:link,
.grid-content .grid-post a.post-slug:visited {
	font-family: "MD Lorien", Georgia, serif;
	font-style: italic;
	font-weight: 500;
	font-size: 18px;
	text-transform: capitalize;
	letter-spacing: 0;
	color: #000;
	font-feature-settings: "swsh";
}
.grid-content .grid-post a.post-slug:hover,
.grid-content .grid-post a.post-slug:focus {
	color: #d2232a;
}
.grid-content .grid-post .post-title,
.grid-content .grid-post .post-title a {
	font-family: "Queens Compressed", Georgia, serif;
	font-weight: 500;
	font-size: 24px;
	line-height: 25px;
}

/* "You Might Also Like" related-posts module under single posts.
   Titles are <span class="post-title"><p>...</p></span> inside
   .related-module .grid-post. Override the story-ribbon Queens
   Compressed treatment above (which has 3-class specificity) with a
   4-class selector, and also target the inner <p> so the font reaches
   the actual text node. */
.related-module .grid-content .grid-post .post-title,
.related-module .grid-content .grid-post .post-title p {
	font-family: "FAIRE Octave", Georgia, serif;
	font-weight: 600;
	font-size: 14px;
	line-height: 1.2;
}

/* Parent CSS lands .related-module .post-slug { text-transform: uppercase },
   which would re-uppercase the "Sponsor Content" PHP string back to
   "SPONSOR CONTENT". Beat that 2-class selector with a 3-class one. */
.related-module .grid-post .post-slug {
	text-transform: capitalize;
}

/* Story-ribbon excerpt (the .guide-list block below each .post-title in
   .grid-content cards) — same FAIRE Octave Regular 16px / 22px line-height
   used by river and marquee excerpts. Parent renders this block as a plain
   .guide-list div; some entries also wrap text in Word-paste spans
   (.TextRun / .NormalTextRun / .EOP) so we force the font down through
   any nested wrappers. */
.grid-content .grid-post .guide-list,
.grid-content .grid-post .guide-list p,
.grid-content .grid-post .guide-list span {
	font-family: "FAIRE Octave", Georgia, serif;
	font-weight: 400;
	font-size: 16px;
	line-height: 22px;
}
.grid-content .grid-post .guide-list {
	margin-top: 5px;
}
/* Match .post-excerpt p — strip the browser's default <p> margin so the
   .guide-list block hugs its container instead of stacking extra space. */
.grid-content .grid-post .guide-list p {
	margin: 0;
}

/* ============================================================
   Footer
   ============================================================ */

/* Footer nav (About / Contact / Magazine / ...) — OTT Buzz Black 21px. */
.site-footer .menu-footer-main > li > a,
.site-footer .footer-navigation a {
	font-family: "OTT Buzz", "Helvetica Neue", Arial, sans-serif;
	font-weight: 900;
	font-size: 21px;
	text-transform: none;
	letter-spacing: 0.02em;
}

/* Footer logo — sized via img, parent wrapper margin/padding zeroed.
   The SVG ships with only a viewBox (no width/height attrs), so an explicit
   width is required — otherwise the browser renders it 0x0. */
.site-footer .footer-logo,
.site-footer .footer-logo span {
	display: inline-block;
	margin: 0;
	padding: 0;
}
.site-footer .footer-logo .footer-logo-img {
	display: block;
	width: 220px;
	height: auto;
}
@media (max-width: 767px) {
	.site-footer .footer-logo .footer-logo-img {
		width: 130px;
	}
}

/* Mobile nav-bar logo — same new SVG. Sized for the compact nav strip. */
.header-navigation .navigation-logo .navigation-logo-img {
	display: block;
	width: 130px;
	height: auto;
}

/* Mobile section-front (the secondary logo block shown on archive/single below
   the nav strip). Parent CSS only styled the old <svg> sprite — our <img>
   needs explicit centering/sizing, and the tagline needs the reskin font
   since it's outside .site-header .header-logo. */
.mobile-section-front .mobile-section-front-logo-img {
	display: block;
	width: 220px;
	max-width: 90%;
	height: auto;
	margin: 0 auto;
}
.mobile-section-front .section-front-tagline {
	display: block;
	margin: 6px auto 0;
	text-align: center;
	font-family: "MD Lorien", Georgia, serif;
	font-style: italic;
	font-weight: 500;
	font-size: 16px;
	line-height: 1.2;
	color: #000;
	font-feature-settings: "swsh";
}

/* ============================================================
   Vertical pages — tagline beneath the wordmark logo
   ============================================================ */

/* The .section-front-tagline span is the per-vertical line ("All That's
   Fresh in Food & Drink", etc.) rendered beneath the THE SPECIAL /
   BE WELL PHILLY / etc. wordmarks.
   MD Lorien italic, Book, 21px per client spec. */
.site-header .header-logo .section-front-tagline {
	display: block;
	margin-top: 8px;
	font-family: "MD Lorien", Georgia, serif;
	font-style: italic;
	font-weight: 500;
	font-size: 21px;
	line-height: 1.2;
	color: #000;
	text-align: center;
	font-feature-settings: "swsh";
}

/* When a tagline is present, push the logo column's bottom up by the same
   12px the CTA columns use, so the tagline's baseline lines up with the
   CTA baselines (Become a Member / Newsletters). */
.site-header .header-logo:has(.section-front-tagline) {
	padding-bottom: 12px;
}
/* Vertical wordmark sizing — cap height at 60px, scale down on narrower
   screens. Homepage Philadelphia logo (no .section-front-tagline) is
   intentionally untouched. */
.site-header .header-logo:has(.section-front-tagline) .header-logo-img {
	max-width: 100%;
	width: auto;
	height: auto;
	max-height: 60px;
}

/* ============================================================
   Trending sidebar widget — match LATEST STORIES hairline styling
   ============================================================ */

/* The popular-content widget renders its title as
   <h2 class="widget-title title-line"><span>Trending</span></h2>.
   The h2.title-line global rule already provides the hairline-flanked layout
   via flex + ::before/::after pseudos. The inner <span> needs to stop
   eating all the room so the hairlines actually appear. */
.widget-title.title-line > span {
	flex: 0 0 auto;
	padding: 0 8px;
	white-space: nowrap;
}

/* Trending list-item titles — FAIRE Octave Bold (per screenshot 2b). */
.trending-post-title,
.trending-post-title.post-title,
.trending-post-title a,
.trending-post-title.post-title a {
	font-family: "FAIRE Octave", Georgia, serif;
	font-weight: 700;
}

/* Trending widget title bottom margin → 0. */
.trending-widget .widget-title.title-line,
.trending-widget h2.title-line,
.widget.trending-widget h2.title-line {
	margin-bottom: 0;
}

/* Nudge trending list-item numbers down 2px to align with the new title typography. */
.trending-widget > ol li:before {
	top: 2px;
}

/* ============================================================
   Single post / page typography
   ============================================================ */

/* Single-post rubric ("Opinion", "News", etc.) — the post-slug variant that
   sits above the article title with id="post-rubric". Same MD Lorien italic
   treatment as the river/marquee categories. */
.post-article .post-slug,
.post-article a.post-slug,
.post-article #post-rubric,
.post-article a.post-slug:link,
.post-article a.post-slug:visited {
	font-family: "MD Lorien", Georgia, serif !important;
	font-style: italic !important;
	font-weight: 500 !important;
	font-size: 18px !important;
	text-transform: capitalize !important;
	letter-spacing: 0 !important;
	color: #000 !important;
	font-feature-settings: "swsh";
}
.post-article a.post-slug:hover,
.post-article a.post-slug:focus,
.post-article a#post-rubric:hover,
.post-article a#post-rubric:focus {
	color: #d2232a !important;
}

/* Title — Queens Compressed Medium (same size as parent's $font-size-post-title). */
.post-article .post-title,
.single .post-article .post-title {
	font-family: "Queens Compressed", Georgia, serif;
	font-weight: 500;
}

/* Single post / page headline line-height. Scoped to h1.post-title so
   the trending widget (h3.trending-post-title.post-title) keeps its
   1.2 line-height. */
h1.post-title {
	line-height: 1.1;
}

/* Author archive (/author/<slug>/) — the author's name is rendered as
   <h1 class="post-title"> inside #author-page-info. It lives outside
   .post-article, so the single-post Queens Compressed override doesn't
   reach it. Apply the same family/weight here. */
#author-page-info h1.post-title {
	font-family: "Queens Compressed", Georgia, serif;
	font-weight: 500;
}

/* Dek / subhead — FAIRE Octave Regular 16px / 22px line-height. */
.post-article .post-excerpt,
.post-article .post-excerpt p,
.single .post-article .post-excerpt,
.single .post-article .post-excerpt p {
	font-family: "FAIRE Octave", Georgia, serif;
	font-weight: 400;
	font-size: 16px;
	line-height: 22px;
}

/* Byline ("By LEASON SHERMAN") — MD Lorien Italic, drop the parent's
   uppercase transformation. Parent applies text-transform: uppercase to
   .byline-wrapper a inside .post-article. */
.post-article .byline-wrapper,
.post-article .byline-wrapper a,
.post-article .byline,
.post-article .byline a,
.post-article .author-name,
.post-article .author-name a {
	font-family: "MD Lorien", Georgia, serif !important;
	font-style: italic !important;
	font-weight: 500 !important;
	font-size: 18px !important;
	text-transform: none !important;
	letter-spacing: 0 !important;
	color: #000 !important;
	font-feature-settings: "swsh";
}
/* Same "By" lowercase trick as on the river. */
.post-article .byline-wrapper {
	text-transform: lowercase !important;
	padding-top: 10px;
	padding-bottom: 5px;
}
.post-article .byline-wrapper .byline,
.post-article .byline-wrapper a {
	text-transform: none !important;
}

/* Middle-dot separator (·) between author name and date sits on the
   baseline by default — recenter it vertically with the surrounding text
   and nudge 2px upward per design.
   Parent compiled CSS lands its own rule on .post-article .byline-wrapper
   #byline-dot, so we bump specificity (author-date-wrapper + span#) and
   add !important to win. */
.post-article .byline-wrapper .author-date-wrapper span#byline-dot {
	vertical-align: middle !important;
	display: inline-block !important;
	line-height: 1 !important;
	position: relative !important;
	top: -2px !important;
}

/* Mobile (<48em): parent leaves a 9px margin-bottom on .author-date-wrapper
   which, stacked on top of our 5px byline-wrapper padding-bottom, makes
   the gap to the bottom hairline feel too airy. Desktop already zeroes
   this in parent CSS — mirror the same behavior on mobile. */
@media (max-width: 47.99em) {
	.post-article .byline-wrapper .author-date-wrapper {
		margin-bottom: 0;
	}
}

/* Publication date / timestamp inside the byline — Gotham 13px italic
   #909090 (matches photo caption styling per spec). Defeats the MD Lorien
   override applied to the byline-wrapper parent. */
.post-article .byline-wrapper [itemprop="datePublished"],
.post-article .byline-wrapper [itemprop="datePublished"] time,
.post-article .byline-wrapper time {
	font-family: "Gotham", "Helvetica Neue", Arial, sans-serif !important;
	font-style: italic !important;
	font-weight: 400 !important;
	font-size: 13px !important;
	color: #909090 !important;
	font-feature-settings: normal;
}

/* "Read More About:" tag-list label at the bottom of singles/pages —
   Queens Compressed Medium per client spec. */
.post-article .post-tags .post-subtitle,
.post-tags .post-subtitle,
body.page .wysiwyg .post-subtitle {
	font-family: "Queens Compressed", Georgia, serif !important;
	font-weight: 500 !important;
}

/* Wisepops in-article newsletter widget — 20px bottom padding so the
   sign-up box doesn't bump against whatever follows it in the post body.
   .wisepops-root is the wrapper injected by the Wisepops loader at runtime. */
.wisepops-root {
	padding-bottom: 20px;
}

/* Body copy — FAIRE Octave. Targets the wysiwyg article body wrapper,
   excluding captions/figcaptions (which stay in Gotham per spec). */
.post-article .post-article-content,
.post-article .post-article-content p,
.post-article-wrapper > article p,
.post-article-wrapper > article li,
.post-article-wrapper > article blockquote {
	font-family: "FAIRE Octave", Georgia, serif;
	font-weight: 400;
}

/* Captions stay Gotham — restore the parent default just in case our
   body-copy selector above caught them. */
.post-article figcaption,
.post-article .wp-caption-text,
.post-article-wrapper figcaption,
.post-article-wrapper .wp-caption-text,
body.page .wysiwyg figcaption,
body.page .wysiwyg .wp-caption-text {
	font-family: "Gotham", "Helvetica Neue", Arial, sans-serif !important;
}

/* ============================================================
   Page templates — mirror single-post typography
   (per /restaurants/50-best-restaurants/, /contact/, /about/)
   ============================================================ */

/* Page headings — Queens Compressed Medium (like single .post-title). */
body.page .wysiwyg h1,
body.page .wysiwyg h2,
body.page .wysiwyg h3 {
	font-family: "Queens Compressed", Georgia, serif;
	font-weight: 500;
}

/* Page body copy — FAIRE Octave (like single .post-article body). */
body.page .wysiwyg p,
body.page .wysiwyg li,
body.page .wysiwyg blockquote {
	font-family: "FAIRE Octave", Georgia, serif;
	font-weight: 400;
}

/* If a page renders the post excerpt (subhead/dek), match the single spec. */
body.page .wysiwyg .post-excerpt,
body.page .wysiwyg .post-excerpt p {
	font-family: "FAIRE Octave", Georgia, serif;
	font-weight: 400;
	font-size: 16px;
	line-height: 20px;
}

/* Page byline if present — same MD Lorien italic treatment. */
body.page .wysiwyg .byline-wrapper,
body.page .wysiwyg .byline-wrapper a,
body.page .wysiwyg .byline,
body.page .wysiwyg .byline a {
	font-family: "MD Lorien", Georgia, serif !important;
	font-style: italic !important;
	font-weight: 500 !important;
	font-size: 16px !important;
	text-transform: none !important;
	letter-spacing: 0 !important;
	color: #000 !important;
	font-feature-settings: "swsh";
}
body.page .wysiwyg .byline-wrapper {
	text-transform: lowercase !important;
}
body.page .wysiwyg .byline-wrapper .byline,
body.page .wysiwyg .byline-wrapper a {
	text-transform: none !important;
}

/* ============================================================
   Nativo-injected sponsored content
   ============================================================
   The parent's river partials drop empty placeholder divs at fixed
   positions (`.nativo-home-page-1/2/3` on the homepage,
   `.nativo-section-page-1/2/3` on vertical landing pages). Nativo's
   JS then injects sponsored cards into those divs.

   The injected markup doesn't pick up our .list-post.is-sponsored
   class because PHP never sees it. Apply the gray sponsored-card
   background to the containers themselves, and target the Nativo
   classes (.ntv-*) we can reach when the injection is HTML (vs
   sandboxed iframe — those we can't style). */

/* Once Nativo's load.js fires, it REPLACES the placeholder div
   (.nativo-home-page-N / .nativo-section-page-N / .nativo1/2/3)
   with its own markup: <div class="list-post ntv-hp ntvClickOut ...">
   — the original nativo-home-page-* class is gone. The injected element
   uses our regular .list-post structure (post-image-link + list-post-card
   + post-slug "Sponsor Content" + post-title + post-excerpt + byline-wrapper)
   so river typography applies automatically — but without .is-sponsored,
   the gray sponsored-card background is missed. Target Nativo's own
   markers (.ntv-hp on homepage placements, .ntvClickOut on any nativo ad)
   to apply the same gray treatment as .list-post.is-sponsored.

   The previous gray-box rule targeting the empty placeholder divs was
   removed — those divs sit unfilled before/without an ad and would
   otherwise show a stray gray box. */
.list-post.ntv-hp,
.list-post.ntvClickOut {
	background: #F3F3F3;
	padding: 16px !important;
	/* Nativo's inline style="margin-top: -20px; padding-top: 20px" is
	   left intact — it pulls the gray flush with the previous row's
	   border-bottom (matching the .gpt-ad.native-river behavior). */
}

/* Freestar/GAM native river slot — same gray sponsored-card treatment.
   The wrapper <div class="gpt-ad native-river"> is our DOM (Freestar
   leaves it for us to style); the <iframe> inside is cross-origin
   safeframe.googlesyndication.com and unreachable. The wrapper takes
   the gray background AND the .list-post box-model (border-bottom +
   padding-bottom + margin-bottom) so it slots into the river rhythm
   between regular .list-post rows — otherwise the hairline above
   appears 20px above the gray and the hairline below sits 20px+ below. */
.list-content .gpt-ad.native-river,
.gpt-ad.native-river {
	background: #F3F3F3;
	padding: 16px;
	padding-bottom: 0;
	margin-top: -20px;
	margin-bottom: 20px;
	border-bottom: 1px solid #ddd;
}

/* Nativo headline / title — match river .post-title spec. */
.list-content [class*="nativo-home-page"] .ntv-headline,
.list-content [class*="nativo-home-page"] .ntv-title,
.list-content [class*="nativo-section-page"] .ntv-headline,
.list-content [class*="nativo-section-page"] .ntv-title,
.list-content [class*="nativo-home-page"] h2,
.list-content [class*="nativo-home-page"] h3,
.list-content [class*="nativo-section-page"] h2,
.list-content [class*="nativo-section-page"] h3 {
	font-family: "Queens Compressed", Georgia, serif;
	font-weight: 500;
	font-size: 24px;
	line-height: 1.15;
}

/* Nativo rubric / sponsor label — match river .post-slug. */
.list-content [class*="nativo-home-page"] .ntv-rubric,
.list-content [class*="nativo-home-page"] .ntv-sponsor,
.list-content [class*="nativo-home-page"] .ntv-sponsor-name,
.list-content [class*="nativo-section-page"] .ntv-rubric,
.list-content [class*="nativo-section-page"] .ntv-sponsor,
.list-content [class*="nativo-section-page"] .ntv-sponsor-name {
	font-family: "MD Lorien", Georgia, serif;
	font-style: italic;
	font-weight: 500;
	font-size: 15px;
	text-transform: capitalize;
	letter-spacing: 0;
	color: #000;
	font-feature-settings: "swsh";
}

/* Nativo body/dek — match river .post-excerpt. */
.list-content [class*="nativo-home-page"] .ntv-description,
.list-content [class*="nativo-home-page"] .ntv-summary,
.list-content [class*="nativo-section-page"] .ntv-description,
.list-content [class*="nativo-section-page"] .ntv-summary,
.list-content [class*="nativo-home-page"] p,
.list-content [class*="nativo-section-page"] p {
	font-family: "FAIRE Octave", Georgia, serif;
	font-weight: 400;
	font-size: 16px;
	line-height: 22px;
}

/* ============================================================
   Find-a-pro container — 20px bottom padding
   ============================================================ */

.find-a-pro-container {
	padding-bottom: 20px;
}

/* ============================================================
   404 template body copy → FAIRE Octave (per spec). Targets the body
   text that follows the "Page not found" hairline title.
   ============================================================ */

body.error404 .wysiwyg,
body.error404 .wysiwyg p,
body.error404 .post-article,
body.error404 .post-article p,
body.error404 main p {
	font-family: "FAIRE Octave", Georgia, serif;
	font-weight: 400;
}

/* ============================================================
   Q&A post-slug exception — disable swsh swashes for "Q&A" rubric.
   reskin.js adds .is-qa to any .post-slug whose textContent is "Q&A"
   (case-insensitive, ampersand-tolerant); strip swsh swashes there so
   the "&" doesn't render as a curly variant.
   ============================================================ */

.post-slug.is-qa,
.post-slug.is-qa a,
a.post-slug.is-qa,
#post-rubric.is-qa {
	font-feature-settings: normal !important;
}
