/*
Theme Name:   Presswire
Theme URI:    https://gamesyncwp.com/presswire-theme/
Author:       GameSync WP
Author URI:   https://gamesyncwp.com
Description:  An editorial, magazine-style review theme for the GameSync WP Importer plugin -- warm paper tones, serif headlines and a verdict-badge review layout, built for sites that write about games rather than just catalog them. A second, distinct-looking premium option alongside PixelWire, included with the same GameSync WP Pro license.
Version:      1.1.0
Requires at least: 5.8
Requires PHP: 7.4
License:      GPL v2 or later
License URI:  https://www.gnu.org/licenses/gpl-2.0.html
Text Domain:  presswire
Tags:         news, blog, entertainment, custom-menu, featured-images, footer-widgets, full-width-template, threaded-comments

This is a from-scratch original theme. Any resemblance to other editorial/
magazine themes is a matter of shared genre convention (serif headlines,
byline blocks, index-style listings) rather than copied code or assets.

Presswire WordPress Theme, Copyright 2026 GameSync WP.
Presswire is distributed under the terms of the GNU GPL v2 or later.

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program. If not, see https://www.gnu.org/licenses/gpl-2.0.html.

Presswire loads the Fraunces and Source Sans 3 fonts from Google Fonts at
runtime (see functions.php) -- the same approach the premium PixelWire theme
already uses, since (unlike the free GameSync Lite theme) neither is bound
by wp.org's self-hosting requirement.
*/

/* ==========================================================================
   Design tokens
   ========================================================================== */
:root {
	--prw-cream: #faf6ee;
	--prw-paper: #ffffff;
	--prw-ink: #1c1a17;
	--prw-ink-soft: #55503f;
	--prw-ink-faint: #8a8371;
	--prw-rule: #e2d8c3;
	--prw-rule-strong: #cabd9c;
	--prw-accent: #b5541f;
	--prw-accent-dark: #8f4118;
	--prw-accent-soft: #f4e3d3;
	--prw-verdict-good: #2f6d4f;
	--prw-verdict-good-soft: #e1efe7;
	--prw-verdict-mid: #b5541f;
	--prw-verdict-mid-soft: #f4e3d3;
	--prw-verdict-low: #93382c;
	--prw-verdict-low-soft: #f3e0dc;

	--prw-font-display: 'Fraunces', 'Georgia', serif;
	--prw-font-body: 'Source Sans 3', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;

	--prw-radius: 3px;
	--prw-container: 1180px;
}

/* ==========================================================================
   Reset & base
   ========================================================================== */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
	margin: 0;
	background: var(--prw-cream);
	color: var(--prw-ink);
	font-family: var(--prw-font-body);
	font-size: 17px;
	line-height: 1.6;
}
img { max-width: 100%; height: auto; display: block; }
a { color: var(--prw-accent); text-decoration: none; }
a:hover { color: var(--prw-accent-dark); text-decoration: underline; }
h1, h2, h3, h4, h5, h6 {
	font-family: var(--prw-font-display);
	font-weight: 600;
	line-height: 1.15;
	margin: 0 0 0.5em;
	color: var(--prw-ink);
}
p { margin: 0 0 1.2em; }
ul, ol { padding-left: 1.3em; }
button, input, textarea, select { font-family: inherit; font-size: inherit; }
.screen-reader-text {
	position: absolute !important;
	width: 1px; height: 1px;
	overflow: hidden;
	clip: rect(1px, 1px, 1px, 1px);
	white-space: nowrap;
}
.prw-skip-link {
	position: absolute;
	left: -9999px;
	top: 0;
	background: var(--prw-ink);
	color: #fff;
	padding: 10px 18px;
	z-index: 10000;
	border-radius: 0 0 var(--prw-radius) 0;
}
.prw-skip-link:focus { left: 0; }

.prw-container {
	max-width: var(--prw-container);
	margin: 0 auto;
	padding: 0 24px;
}
.prw-container-page { padding-top: 48px; padding-bottom: 64px; }

/* ==========================================================================
   Masthead / header
   ========================================================================== */
.prw-topbar {
	background: var(--prw-ink);
	color: #cfc6b3;
	font-size: 13px;
}
.prw-topbar__inner {
	max-width: var(--prw-container);
	margin: 0 auto;
	padding: 7px 24px;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
}
.prw-topbar__date { letter-spacing: 0.03em; text-transform: uppercase; }
.prw-topbar a { color: #e7e0cf; }
.prw-topbar a:hover { color: #fff; }
.prw-topbar-menu { list-style: none; display: flex; gap: 18px; margin: 0; padding: 0; }

.prw-header {
	background: var(--prw-paper);
	border-bottom: 3px solid var(--prw-ink);
}
.prw-header__inner {
	max-width: var(--prw-container);
	margin: 0 auto;
	padding: 22px 24px 18px;
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: 14px;
}
.prw-branding { display: flex; flex-direction: column; }
.prw-logo-text {
	font-family: var(--prw-font-display);
	font-size: 34px;
	font-weight: 700;
	letter-spacing: -0.01em;
	color: var(--prw-ink);
}
.prw-logo-text:hover { color: var(--prw-ink); text-decoration: none; }
.custom-logo-link img { max-height: 56px; width: auto; }
.prw-tagline {
	font-size: 13px;
	color: var(--prw-ink-soft);
	text-transform: uppercase;
	letter-spacing: 0.08em;
	margin-top: 2px;
}

.prw-nav-menu-wrap { flex: 1 1 auto; }
.prw-nav-menu {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-wrap: wrap;
	gap: 4px 28px;
	justify-content: center;
	font-family: var(--prw-font-display);
	font-weight: 600;
	font-size: 15px;
	text-transform: uppercase;
	letter-spacing: 0.03em;
}
.prw-nav-menu a { color: var(--prw-ink); }
.prw-nav-menu a:hover, .prw-nav-menu .current-menu-item > a { color: var(--prw-accent); text-decoration: none; }
.prw-nav-menu ul { list-style: none; padding-left: 1em; }

.prw-header__actions { display: flex; align-items: center; gap: 8px; }
.prw-icon-btn {
	background: none;
	border: 1px solid var(--prw-rule-strong);
	border-radius: 50%;
	width: 36px;
	height: 36px;
	display: flex;
	align-items: center;
	justify-content: center;
	color: var(--prw-ink);
	cursor: pointer;
}
.prw-icon-btn:hover { border-color: var(--prw-accent); color: var(--prw-accent); }
.prw-mobile-toggle { display: none; }

.prw-header-search {
	display: none;
	background: var(--prw-cream);
	border-bottom: 1px solid var(--prw-rule);
}
.prw-header-search.is-open { display: block; }
.prw-header-search .prw-container { padding-top: 14px; padding-bottom: 14px; }

/* ==========================================================================
   Search form
   ========================================================================== */
.prw-search-form { display: flex; gap: 8px; }
.prw-search-form__input {
	flex: 1 1 auto;
	padding: 10px 14px;
	border: 1px solid var(--prw-rule-strong);
	border-radius: var(--prw-radius);
	background: var(--prw-paper);
}
.prw-search-form__button {
	background: var(--prw-ink);
	color: #fff;
	border: none;
	padding: 10px 18px;
	border-radius: var(--prw-radius);
	cursor: pointer;
	font-weight: 600;
}
.prw-search-form__button:hover { background: var(--prw-accent); }

/* ==========================================================================
   Kicker / section headers
   ========================================================================== */
.prw-kicker {
	display: inline-block;
	font-family: var(--prw-font-body);
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.09em;
	text-transform: uppercase;
	color: var(--prw-accent);
	margin-bottom: 8px;
}
.prw-section { margin-bottom: 56px; }
.prw-section-header {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	border-bottom: 2px solid var(--prw-ink);
	padding-bottom: 10px;
	margin-bottom: 24px;
	gap: 12px;
}
.prw-section-header__title { font-size: 22px; margin: 0; }
.prw-section-header__link { font-size: 14px; font-weight: 600; white-space: nowrap; }

/* ==========================================================================
   Front page lead + layout grid
   ========================================================================== */
.prw-lead {
	display: grid;
	grid-template-columns: 1.4fr 1fr;
	gap: 40px;
	padding: 40px 0 48px;
	border-bottom: 1px solid var(--prw-rule);
	margin-bottom: 40px;
}
.prw-lead__media { border-radius: var(--prw-radius); overflow: hidden; background: var(--prw-rule); aspect-ratio: 16 / 10; }
.prw-lead__media img { width: 100%; height: 100%; object-fit: cover; }
.prw-lead__title { font-size: 42px; margin: 6px 0 14px; }
.prw-lead__title a { color: var(--prw-ink); }
.prw-lead__title a:hover { color: var(--prw-accent); text-decoration: none; }
.prw-lead__dek { font-size: 18px; color: var(--prw-ink-soft); margin-bottom: 14px; }
.prw-lead__aside { display: flex; flex-direction: column; gap: 18px; }

.prw-page-columns {
	max-width: var(--prw-container);
	margin: 0 auto;
	padding: 40px 24px 64px;
	display: grid;
	grid-template-columns: 1fr 320px;
	gap: 48px;
	align-items: start;
}
.prw-page-columns--full { grid-template-columns: 1fr; }
.prw-main { min-width: 0; }

/* ==========================================================================
   Index list (games / posts listing rows)
   ========================================================================== */
.prw-index-list { display: flex; flex-direction: column; }
.prw-index-item {
	display: grid;
	grid-template-columns: 132px 1fr auto;
	gap: 20px;
	align-items: center;
	padding: 20px 0;
	border-bottom: 1px solid var(--prw-rule);
}
.prw-index-item:first-child { padding-top: 0; }
.prw-index-item__media {
	border-radius: var(--prw-radius);
	overflow: hidden;
	background: var(--prw-rule);
	aspect-ratio: 4 / 3;
}
.prw-index-item__body { min-width: 0; }
.prw-index-item__media img { width: 100%; height: 100%; object-fit: cover; }
.prw-index-item__title { font-size: 21px; margin: 0 0 6px; }
.prw-index-item__title a { color: var(--prw-ink); }
.prw-index-item__title a:hover { color: var(--prw-accent); text-decoration: none; }
.prw-index-item__dek { color: var(--prw-ink-soft); font-size: 15px; margin: 0 0 8px; }
.prw-index-item__facts { font-size: 13px; color: var(--prw-ink-faint); display: flex; flex-wrap: wrap; gap: 4px 14px; }
.prw-index-item__verdict { justify-self: end; }

.prw-placeholder-img {
	width: 100%; height: 100%;
	background: linear-gradient(135deg, var(--prw-rule) 0%, var(--prw-rule-strong) 100%);
}

/* ==========================================================================
   Verdict / score badge
   ========================================================================== */
.prw-verdict {
	display: inline-flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	width: 58px;
	height: 58px;
	border-radius: 50%;
	background: var(--prw-verdict-mid-soft);
	color: var(--prw-verdict-mid);
	font-family: var(--prw-font-display);
	line-height: 1;
	flex-shrink: 0;
}
.prw-verdict--good { background: var(--prw-verdict-good-soft); color: var(--prw-verdict-good); }
.prw-verdict--low { background: var(--prw-verdict-low-soft); color: var(--prw-verdict-low); }
.prw-verdict__score { font-size: 20px; font-weight: 700; }
.prw-verdict__scale { font-size: 9px; opacity: 0.75; margin-top: 1px; }
.prw-verdict--large { width: 92px; height: 92px; }
.prw-verdict--large .prw-verdict__score { font-size: 30px; }
.prw-verdict--large .prw-verdict__scale { font-size: 11px; }
.prw-verdict-block {
	display: flex;
	align-items: center;
	gap: 16px;
	background: var(--prw-paper);
	border: 1px solid var(--prw-rule);
	border-radius: var(--prw-radius);
	padding: 18px 22px;
	margin: 18px 0 28px;
}
.prw-verdict-block__label { font-family: var(--prw-font-display); font-size: 17px; font-weight: 600; margin: 0; }
.prw-verdict-block__hint { color: var(--prw-ink-soft); font-size: 14px; margin: 2px 0 0; }
/* When the companion Review Breakdown / Post Ratings plugin renders its own
   markup inside this wrapper, only lightly frame it -- never override its
   internal layout, since that plugin owns its own presentation. */
.prw-verdict-block--plugin { display: block; }

/* ==========================================================================
   Editor's Pick ribbon
   ========================================================================== */
.prw-editors-pick {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	font-size: 11px;
	font-weight: 700;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--prw-accent-dark);
	background: var(--prw-accent-soft);
	padding: 3px 9px;
	border-radius: 999px;
	margin-bottom: 8px;
}

/* ==========================================================================
   Sidebar
   ========================================================================== */
.prw-sidebar { display: flex; flex-direction: column; gap: 32px; }
.prw-widget { }
.prw-widget__title {
	font-family: var(--prw-font-display);
	font-size: 15px;
	text-transform: uppercase;
	letter-spacing: 0.05em;
	border-bottom: 2px solid var(--prw-ink);
	padding-bottom: 8px;
	margin-bottom: 14px;
}
.prw-widget-list { display: flex; flex-direction: column; }
.prw-widget-list a {
	display: flex;
	justify-content: space-between;
	color: var(--prw-ink);
	padding: 7px 0;
	border-bottom: 1px dashed var(--prw-rule);
	font-size: 14px;
}
.prw-widget-list a:hover { color: var(--prw-accent); text-decoration: none; }
.prw-widget-list .count { color: var(--prw-ink-faint); }

.prw-pick-list { display: flex; flex-direction: column; gap: 16px; }
.prw-pick-list-item { display: flex; gap: 12px; align-items: flex-start; }
.prw-pick-list-item__media {
	width: 64px; height: 64px; flex-shrink: 0;
	border-radius: var(--prw-radius);
	overflow: hidden;
	background: var(--prw-rule);
}
.prw-pick-list-item__media img { width: 100%; height: 100%; object-fit: cover; }
.prw-pick-list-item__title { font-size: 15px; margin: 0; line-height: 1.3; }
.prw-pick-list-item__title a { color: var(--prw-ink); }
.prw-pick-list-item__title a:hover { color: var(--prw-accent); text-decoration: none; }

/* ==========================================================================
   Single article / review
   ========================================================================== */
.prw-single__header { max-width: 760px; margin: 0 auto 24px; text-align: left; }
.prw-single__title { font-size: 44px; }
.prw-single--game .prw-single__title { font-size: 40px; }
.prw-entry-meta { color: var(--prw-ink-soft); font-size: 14px; }
.prw-entry-meta span:not(:last-child)::after { content: '\2014'; margin: 0 8px; color: var(--prw-rule-strong); }
.prw-byline { font-weight: 600; color: var(--prw-ink); }

.prw-single__media { margin-bottom: 28px; border-radius: var(--prw-radius); overflow: hidden; }
.prw-single__media img { width: 100%; }

.prw-single__content {
	max-width: 720px;
	font-size: 19px;
	line-height: 1.75;
}
.prw-single__content > p:first-of-type::first-letter {
	font-family: var(--prw-font-display);
	font-size: 3.6em;
	float: left;
	line-height: 0.8;
	padding: 6px 8px 0 0;
	color: var(--prw-accent);
}
.prw-single__content h2 { font-size: 27px; margin-top: 1.4em; }
.prw-single__content h3 { font-size: 22px; margin-top: 1.2em; }
.prw-single__content blockquote {
	border-left: 3px solid var(--prw-accent);
	margin: 1.6em 0;
	padding: 4px 0 4px 22px;
	font-family: var(--prw-font-display);
	font-size: 22px;
	font-style: italic;
	color: var(--prw-ink-soft);
}
.prw-single--game .prw-single__content { max-width: 100%; }

.prw-game-facts {
	background: var(--prw-paper);
	border: 1px solid var(--prw-rule);
	border-radius: var(--prw-radius);
	padding: 20px 24px;
	margin: 0 0 28px;
	max-width: 720px;
}
.prw-game-facts__row { display: flex; gap: 8px; padding: 6px 0; border-bottom: 1px dashed var(--prw-rule); font-size: 15px; }
.prw-game-facts__row:last-child { border-bottom: none; }
.prw-game-facts__row strong { min-width: 130px; color: var(--prw-ink-soft); font-weight: 600; }

.prw-tags { display: flex; flex-wrap: wrap; gap: 8px; margin: 8px 0 24px; }
.prw-tag {
	font-size: 13px;
	padding: 4px 12px;
	border: 1px solid var(--prw-rule-strong);
	border-radius: 999px;
	color: var(--prw-ink-soft);
}
.prw-tag:hover { border-color: var(--prw-accent); color: var(--prw-accent); text-decoration: none; }

.prw-gallery { max-width: 100%; margin: 32px 0; }
.prw-gallery__strip {
	display: flex;
	gap: 14px;
	overflow-x: auto;
	padding-bottom: 6px;
	scroll-snap-type: x proximity;
}
.prw-gallery__item {
	flex: 0 0 auto;
	width: 320px;
	border-radius: var(--prw-radius);
	overflow: hidden;
	scroll-snap-align: start;
	background: var(--prw-rule);
}
.prw-gallery__item img { width: 100%; display: block; }

.prw-author-box {
	display: flex;
	gap: 16px;
	align-items: flex-start;
	background: var(--prw-paper);
	border: 1px solid var(--prw-rule);
	border-radius: var(--prw-radius);
	padding: 20px;
	margin: 32px 0;
	max-width: 720px;
}
.prw-author-box img { border-radius: 50%; }
.prw-author-box__name { margin: 0 0 4px; font-size: 16px; }
.prw-author-box__bio { margin: 0; color: var(--prw-ink-soft); font-size: 14px; }

.prw-page-links { clear: both; margin: 24px 0; font-size: 14px; }
.prw-page-links a { border: 1px solid var(--prw-rule-strong); padding: 4px 10px; border-radius: var(--prw-radius); margin: 0 4px; }

/* ==========================================================================
   Buttons
   ========================================================================== */
.prw-btn, .prw-btn-outline {
	display: inline-block;
	font-family: var(--prw-font-display);
	font-weight: 600;
	padding: 11px 24px;
	border-radius: var(--prw-radius);
	cursor: pointer;
}
.prw-btn { background: var(--prw-ink); color: #fff; border: 1px solid var(--prw-ink); }
.prw-btn:hover { background: var(--prw-accent); border-color: var(--prw-accent); color: #fff; text-decoration: none; }
.prw-btn-outline { background: transparent; color: var(--prw-ink); border: 1px solid var(--prw-ink); }
.prw-btn-outline:hover { border-color: var(--prw-accent); color: var(--prw-accent); text-decoration: none; }

/* ==========================================================================
   Comments
   ========================================================================== */
.prw-comments { max-width: 720px; margin: 40px 0 0; }
.comments-title { font-size: 24px; }
.comment-list { list-style: none; margin: 0 0 24px; padding: 0; }
.comment-list .children { list-style: none; padding-left: 28px; }
.comment-list > li { border-top: 1px solid var(--prw-rule); padding: 18px 0; }
.comment-body { display: flex; gap: 14px; }
.comment-body .avatar { border-radius: 50%; }
.comment-meta { font-size: 13px; color: var(--prw-ink-faint); margin-bottom: 4px; }
.comment-content p { margin: 0 0 0.8em; }
.no-comments { color: var(--prw-ink-soft); }
.comment-form input[type="text"],
.comment-form input[type="email"],
.comment-form input[type="url"],
.comment-form textarea {
	width: 100%;
	padding: 10px 12px;
	border: 1px solid var(--prw-rule-strong);
	border-radius: var(--prw-radius);
	margin-bottom: 14px;
	background: var(--prw-paper);
}
.comment-form textarea { min-height: 130px; }

/* ==========================================================================
   404
   ========================================================================== */
.prw-404 { text-align: center; padding: 80px 0; }
.prw-404__code { font-size: 96px; margin-bottom: 0; color: var(--prw-rule-strong); }
.prw-404__text { font-size: 18px; color: var(--prw-ink-soft); margin-bottom: 28px; }
.prw-404 .prw-search-form { max-width: 420px; margin: 0 auto 20px; }

/* ==========================================================================
   Footer
   ========================================================================== */
.prw-footer { background: var(--prw-ink); color: #cfc6b3; margin-top: 40px; }
.prw-footer__columns {
	max-width: var(--prw-container);
	margin: 0 auto;
	padding: 44px 24px;
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 32px;
}
.prw-footer__col .prw-logo-text { color: #fff; }
.prw-footer__about { color: #b5ac96; font-size: 14px; }
.prw-footer-widget__title {
	font-family: var(--prw-font-display);
	font-size: 14px;
	text-transform: uppercase;
	letter-spacing: 0.05em;
	color: #fff;
	margin-bottom: 12px;
}
.prw-footer-menu { list-style: none; margin: 0; padding: 0; }
.prw-footer-menu li { margin-bottom: 6px; }
.prw-footer-menu a { color: #cfc6b3; }
.prw-footer-menu a:hover { color: #fff; }
.prw-footer__bottom { border-top: 1px solid #33302a; }
.prw-footer__bottom-inner {
	max-width: var(--prw-container);
	margin: 0 auto;
	padding: 16px 24px;
	display: flex;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: 6px;
	font-size: 13px;
	color: #9a927c;
}

/* ==========================================================================
   Responsive
   ========================================================================== */
@media (max-width: 900px) {
	.prw-lead { grid-template-columns: 1fr; }
	.prw-page-columns { grid-template-columns: 1fr; }
	.prw-footer__columns { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 680px) {
	.prw-nav-menu-wrap {
		display: none;
		flex-basis: 100%;
		order: 3;
	}
	.prw-nav-menu-wrap.is-open { display: block; }
	.prw-nav-menu { flex-direction: column; align-items: flex-start; gap: 10px; padding: 16px 0; }
	.prw-mobile-toggle { display: flex; }
	.prw-single__title { font-size: 30px; }
	.prw-lead__title { font-size: 30px; }
	.prw-index-item { grid-template-columns: 90px 1fr; }
	.prw-index-item__verdict { grid-column: 1 / -1; justify-self: start; margin-top: 8px; }
	.prw-footer__columns { grid-template-columns: 1fr; }
	.prw-game-facts__row strong { min-width: 100px; }
}
