/*
 * 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;
}

/* ============================================================
   Microsite top bar (#mp_bar) reskin.
   The bar (parent theme partials/microsite/universal_nav.php, styled in
   metrocorp/.../templates/_microsite.scss) shows the Philly wordmark plus a
   hover dropdown. We override here rather than in the parent SASS so no
   philly.css recompile / METROCORP_VERSION bump is needed — reskin.css loads
   after philly.css, so these win.
   ============================================================ */

/* Swap the old sprite Philadelphia mark for the reskin wordmark. The bar is
   black, so we use a white-filled copy of phillymag-PHILADELPHIA.svg.
   Left-aligned, 20px tall, bottom-aligned so the "p" descender sits ~3px above
   the bar's bottom edge. */
.microsite #mp_bar nav .dropdown a.dropdown_logo.philly {
	position: relative;
	background: url("../images/microsite/phillymag-PHILADELPHIA-white.svg") no-repeat left bottom 3px;
	background-size: auto 20px;
}

/* The old sprite baked a dropdown caret in next to the wordmark; the clean SVG
   doesn't, so redraw it as a small white down-triangle. Vertically centered in
   the bar; `left` sits it just past the wordmark (nudge if the size changes). */
.microsite #mp_bar nav .dropdown a.dropdown_logo.philly::after {
	content: "";
	position: absolute;
	left: 110px;
	top: 50%;
	transform: translateY(-50%);
	width: 0;
	height: 0;
	border-left: 4px solid transparent;
	border-right: 4px solid transparent;
	border-top: 5px solid #fff;
}

/* Dropdown items: OTT Buzz (Black is the only bundled face, so weight 500
   currently renders as 900 until an OTT Buzz Medium is added), 18px,
   capitalized. Matches the specificity of the parent's Heroic rule and wins
   by load order. */
.microsite #mp_bar nav .dropdown .mp-submenu-wrap ul li a {
	font-family: "OTT Buzz", "Helvetica Neue", Arial, sans-serif;
	font-size: 18px;
	font-weight: 500;
	text-transform: capitalize;
}
