/*
Theme Name:   PixelWire
Theme URI:    https://example.com/pixelwire
Author:       Tox
Author URI:   https://example.com
Description:  A bold, red-and-black gaming/news magazine theme with a hero slider, card-grid archives, tag-colored categories and a rich sidebar. Designed to showcase games imported with the IGDB Game Importer plugin alongside regular blog posts.
Version:      2.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:  pixelwire
Tags:         news, blog, entertainment, custom-menu, featured-images, footer-widgets, full-width-template, sticky-post, threaded-comments

This is a from-scratch original theme. Any resemblance to other magazine/news
themes is a matter of shared genre convention (bold section banners, card
grids, colored category pills) rather than copied code or assets.
*/

/* ==========================================================================
   Design tokens
   ========================================================================== */
:root {
	--pw-red: #ee1a3c;
	--pw-red-dark: #c8102e;
	--pw-black: #15161a;
	--pw-dark: #1c1d22;
	--pw-gray-900: #222329;
	--pw-gray-700: #52535a;
	--pw-gray-500: #767781;
	--pw-gray-300: #d9dadd;
	--pw-gray-100: #f4f4f6;
	--pw-white: #ffffff;
	--pw-green: #16a34a;
	--pw-blue: #2f7fe0;
	--pw-pink: #ec4899;
	--pw-purple: #8b5cf6;
	--pw-orange: #f0902e;
	--pw-teal: #0d9488;
	--pw-yellow: #eab308;

	--pw-font-heading: 'Barlow Condensed', 'Arial Narrow', sans-serif;
	--pw-font-body: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;

	--pw-radius: 4px;
	--pw-container: 1240px;
	--pw-shadow: 0 2px 10px rgba(20, 20, 25, 0.06);

	/* Semantic tokens: everything above is the raw palette (used directly by
	   chrome that's intentionally dark in both color schemes -- the top
	   utility bar, hero, footer, video strip, tab nav). Content surfaces and
	   text use these instead, so a single override block below is enough to
	   flip the whole site to a dark scheme without touching every rule that
	   uses a light gray or white. */
	--pw-page-bg: var(--pw-white);
	--pw-surface: var(--pw-white);
	--pw-surface-alt: var(--pw-gray-100);
	--pw-border: var(--pw-gray-300);
	--pw-text: var(--pw-gray-900);
	--pw-text-strong: var(--pw-black);
	--pw-text-secondary: var(--pw-gray-700);
	--pw-text-muted: var(--pw-gray-500);
}

/* Dark color scheme: set by PixelWire -> Colors -> "Color scheme" (see
   inc/theme-options.php), which puts data-pw-theme="dark" on <html>.
   Palette tokens (--pw-red, --pw-black, etc.) and anything already
   dark-on-purpose in light mode (topbar, hero, footer, video strip, tab
   nav) are untouched -- only the tokens above, which back the pages'
   light surfaces and body text, change. */
:root[data-pw-theme="dark"] {
	color-scheme: dark;
	--pw-page-bg: #121317;
	--pw-surface: #1c1d22;
	--pw-surface-alt: #26272e;
	--pw-border: #35363e;
	--pw-text: #e3e4e8;
	--pw-text-strong: #ffffff;
	--pw-text-secondary: #c1c2c9;
	--pw-text-muted: #9a9ba5;
}

/* "Auto" color scheme: follow the visitor's OS-level preference instead of
   a fixed site-wide choice. Same values as the explicit dark override
   above, just gated by prefers-color-scheme instead of the attribute. */
@media (prefers-color-scheme: dark) {
	:root[data-pw-theme="auto"] {
		color-scheme: dark;
		--pw-page-bg: #121317;
		--pw-surface: #1c1d22;
		--pw-surface-alt: #26272e;
		--pw-border: #35363e;
		--pw-text: #e3e4e8;
		--pw-text-strong: #ffffff;
		--pw-text-secondary: #c1c2c9;
		--pw-text-muted: #9a9ba5;
	}
}

/* ==========================================================================
   Reset & base
   ========================================================================== */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
	margin: 0;
	font-family: var(--pw-font-body);
	color: var(--pw-text);
	background: var(--pw-page-bg);
	font-size: 16px;
	line-height: 1.65;
}
img { max-width: 100%; height: auto; display: block; }
a { color: inherit; text-decoration: none; }
ul, ol { margin: 0; padding: 0; list-style: none; }
button { font-family: inherit; cursor: pointer; }
h1, h2, h3, h4, h5, h6 {
	font-family: var(--pw-font-heading);
	font-weight: 700;
	line-height: 1.2;
	margin: 0 0 0.5em;
	letter-spacing: 0.2px;
}
p { margin: 0 0 1.2em; }
.pw-container {
	max-width: var(--pw-container);
	margin: 0 auto;
	padding: 0 20px;
}
.screen-reader-text {
	position: absolute !important;
	width: 1px; height: 1px;
	overflow: hidden;
	clip: rect(1px, 1px, 1px, 1px);
}

/* "Skip to content" link: invisible until a keyboard user tabs to it, so
   they aren't forced through the whole header/nav on every page load. */
.pw-skip-link {
	position: absolute;
	top: -100px;
	left: 10px;
	z-index: 999999;
	background: var(--pw-black);
	color: #fff;
	padding: 12px 20px;
	border-radius: 0 0 var(--pw-radius) var(--pw-radius);
	transition: top .2s ease;
}
.pw-skip-link:focus {
	top: 0;
	outline: 2px solid var(--pw-red);
	outline-offset: -2px;
}

/* ==========================================================================
   Icons (CSS-mask based, inherit currentColor)
   ========================================================================== */
.pw-icon {
	display: inline-block;
	width: 14px;
	height: 14px;
	background-color: currentColor;
	vertical-align: -2px;
	margin-right: 5px;
	-webkit-mask-repeat: no-repeat;
	mask-repeat: no-repeat;
	-webkit-mask-position: center;
	mask-position: center;
	-webkit-mask-size: contain;
	mask-size: contain;
}
.pw-icon-calendar { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7 2v3M17 2v3M3 9h18M5 5h14a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2z' fill='none' stroke='%23000' stroke-width='2'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7 2v3M17 2v3M3 9h18M5 5h14a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2z' fill='none' stroke='%23000' stroke-width='2'/%3E%3C/svg%3E"); }
.pw-icon-user { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='8' r='4' fill='none' stroke='%23000' stroke-width='2'/%3E%3Cpath d='M4 21c0-4 4-6 8-6s8 2 8 6' fill='none' stroke='%23000' stroke-width='2'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='8' r='4' fill='none' stroke='%23000' stroke-width='2'/%3E%3Cpath d='M4 21c0-4 4-6 8-6s8 2 8 6' fill='none' stroke='%23000' stroke-width='2'/%3E%3C/svg%3E"); }
.pw-icon-comment { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M4 4h16v12H8l-4 4V4z' fill='none' stroke='%23000' stroke-width='2' stroke-linejoin='round'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M4 4h16v12H8l-4 4V4z' fill='none' stroke='%23000' stroke-width='2' stroke-linejoin='round'/%3E%3C/svg%3E"); }
.pw-icon-clock { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='9' fill='none' stroke='%23000' stroke-width='2'/%3E%3Cpath d='M12 7v5l4 2' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='9' fill='none' stroke='%23000' stroke-width='2'/%3E%3Cpath d='M12 7v5l4 2' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E"); }
.pw-icon-eye { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M2 12s4-7 10-7 10 7 10 7-4 7-10 7-10-7-10-7z' fill='none' stroke='%23000' stroke-width='2'/%3E%3Ccircle cx='12' cy='12' r='3' fill='none' stroke='%23000' stroke-width='2'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M2 12s4-7 10-7 10 7 10 7-4 7-10 7-10-7-10-7z' fill='none' stroke='%23000' stroke-width='2'/%3E%3Ccircle cx='12' cy='12' r='3' fill='none' stroke='%23000' stroke-width='2'/%3E%3C/svg%3E"); }
.pw-icon-search { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='7' fill='none' stroke='%23000' stroke-width='2'/%3E%3Cpath d='M21 21l-4.3-4.3' stroke='%23000' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='7' fill='none' stroke='%23000' stroke-width='2'/%3E%3Cpath d='M21 21l-4.3-4.3' stroke='%23000' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E"); }
.pw-icon-cart { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M3 4h2l2.4 12.4a2 2 0 0 0 2 1.6h8.2a2 2 0 0 0 2-1.6L21 8H6' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3Ccircle cx='9' cy='21' r='1.4'/%3E%3Ccircle cx='18' cy='21' r='1.4'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M3 4h2l2.4 12.4a2 2 0 0 0 2 1.6h8.2a2 2 0 0 0 2-1.6L21 8H6' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3Ccircle cx='9' cy='21' r='1.4'/%3E%3Ccircle cx='18' cy='21' r='1.4'/%3E%3C/svg%3E"); }
.pw-icon-menu { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M3 6h18M3 12h18M3 18h18' stroke='%23000' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M3 6h18M3 12h18M3 18h18' stroke='%23000' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E"); }
.pw-icon-grid { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Crect x='3' y='3' width='8' height='8' rx='1.5'/%3E%3Crect x='13' y='3' width='8' height='8' rx='1.5'/%3E%3Crect x='3' y='13' width='8' height='8' rx='1.5'/%3E%3Crect x='13' y='13' width='8' height='8' rx='1.5'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Crect x='3' y='3' width='8' height='8' rx='1.5'/%3E%3Crect x='13' y='3' width='8' height='8' rx='1.5'/%3E%3Crect x='3' y='13' width='8' height='8' rx='1.5'/%3E%3Crect x='13' y='13' width='8' height='8' rx='1.5'/%3E%3C/svg%3E"); }
.pw-icon-list { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='4' cy='6' r='1.6'/%3E%3Ccircle cx='4' cy='12' r='1.6'/%3E%3Ccircle cx='4' cy='18' r='1.6'/%3E%3Cpath d='M9 6h12M9 12h12M9 18h12' stroke='%23000' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='4' cy='6' r='1.6'/%3E%3Ccircle cx='4' cy='12' r='1.6'/%3E%3Ccircle cx='4' cy='18' r='1.6'/%3E%3Cpath d='M9 6h12M9 12h12M9 18h12' stroke='%23000' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E"); }
.pw-icon-chevron-right { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9 6l6 6-6 6' fill='none' stroke='%23000' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9 6l6 6-6 6' fill='none' stroke='%23000' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); margin-right: 6px; }
.pw-icon-arrow-up { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 19V5M5 12l7-7 7 7' fill='none' stroke='%23000' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 19V5M5 12l7-7 7 7' fill='none' stroke='%23000' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); margin-right: 0; }
.pw-icon-phone { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M22 16.9v3a2 2 0 0 1-2.2 2 19.8 19.8 0 0 1-8.6-3.1 19.5 19.5 0 0 1-6-6 19.8 19.8 0 0 1-3.1-8.7A2 2 0 0 1 4.1 2h3a2 2 0 0 1 2 1.7c.1.9.3 1.8.6 2.7a2 2 0 0 1-.5 2.1L8 9.7a16 16 0 0 0 6 6l1.2-1.2a2 2 0 0 1 2.1-.5c.9.3 1.8.5 2.7.6a2 2 0 0 1 1.7 2z' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M22 16.9v3a2 2 0 0 1-2.2 2 19.8 19.8 0 0 1-8.6-3.1 19.5 19.5 0 0 1-6-6 19.8 19.8 0 0 1-3.1-8.7A2 2 0 0 1 4.1 2h3a2 2 0 0 1 2 1.7c.1.9.3 1.8.6 2.7a2 2 0 0 1-.5 2.1L8 9.7a16 16 0 0 0 6 6l1.2-1.2a2 2 0 0 1 2.1-.5c.9.3 1.8.5 2.7.6a2 2 0 0 1 1.7 2z' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); }

/* Social icons: colored circular badges (brand-neutral solid dot + initial-less glyph via mask) */
.pw-social-icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 30px;
	height: 30px;
	border-radius: 50%;
	background-color: var(--pw-gray-700);
	position: relative;
	flex: 0 0 auto;
}
.pw-social-icon::before {
	content: '';
	position: absolute;
	inset: 8px;
	background-color: #fff;
	-webkit-mask-repeat: no-repeat; mask-repeat: no-repeat;
	-webkit-mask-position: center; mask-position: center;
	-webkit-mask-size: contain; mask-size: contain;
}
.pw-social-facebook { background-color: #1877f2; }
.pw-social-twitter { background-color: #14171a; }
.pw-social-linkedin { background-color: #0a66c2; }
.pw-social-pinterest { background-color: #e60023; }
.pw-social-instagram { background: radial-gradient(circle at 30% 110%, #fdf497, #fd5949 45%, #d6249f 70%, #285AEB); }
.pw-social-youtube { background-color: #ff0000; }
.pw-social-facebook::before { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M14 9h3V6h-3c-2 0-3.5 1.5-3.5 3.5V11H8v3h2.5v7h3v-7H16l.5-3h-3V9.7c0-.4.3-.7.5-.7z'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M14 9h3V6h-3c-2 0-3.5 1.5-3.5 3.5V11H8v3h2.5v7h3v-7H16l.5-3h-3V9.7c0-.4.3-.7.5-.7z'/%3E%3C/svg%3E"); }
.pw-social-twitter::before { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M22 5.9c-.7.3-1.5.6-2.3.7.8-.5 1.4-1.3 1.7-2.3-.8.5-1.7.8-2.6 1a4.1 4.1 0 0 0-7 3.7A11.6 11.6 0 0 1 3.4 4.6a4.1 4.1 0 0 0 1.3 5.5c-.7 0-1.3-.2-1.9-.5v.1c0 2 1.4 3.6 3.3 4a4.2 4.2 0 0 1-1.9.1 4.1 4.1 0 0 0 3.8 2.9A8.3 8.3 0 0 1 2 18.4a11.6 11.6 0 0 0 6.3 1.8c7.5 0 11.7-6.4 11.7-11.9v-.5c.8-.6 1.5-1.3 2-2z'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M22 5.9c-.7.3-1.5.6-2.3.7.8-.5 1.4-1.3 1.7-2.3-.8.5-1.7.8-2.6 1a4.1 4.1 0 0 0-7 3.7A11.6 11.6 0 0 1 3.4 4.6a4.1 4.1 0 0 0 1.3 5.5c-.7 0-1.3-.2-1.9-.5v.1c0 2 1.4 3.6 3.3 4a4.2 4.2 0 0 1-1.9.1 4.1 4.1 0 0 0 3.8 2.9A8.3 8.3 0 0 1 2 18.4a11.6 11.6 0 0 0 6.3 1.8c7.5 0 11.7-6.4 11.7-11.9v-.5c.8-.6 1.5-1.3 2-2z'/%3E%3C/svg%3E"); }
.pw-social-linkedin::before { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M4.98 3.5a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5zM3 9h4v12H3V9zm7 0h3.8v1.7h.05c.53-1 1.83-2 3.77-2 4.03 0 4.77 2.65 4.77 6.1V21H18v-5.6c0-1.35-.02-3.08-1.88-3.08-1.88 0-2.17 1.47-2.17 2.98V21H10V9z'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M4.98 3.5a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5zM3 9h4v12H3V9zm7 0h3.8v1.7h.05c.53-1 1.83-2 3.77-2 4.03 0 4.77 2.65 4.77 6.1V21H18v-5.6c0-1.35-.02-3.08-1.88-3.08-1.88 0-2.17 1.47-2.17 2.98V21H10V9z'/%3E%3C/svg%3E"); }
.pw-social-pinterest::before { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2a10 10 0 0 0-3.6 19.3c0-.8 0-1.8.2-2.6l1.4-6s-.3-.7-.3-1.7c0-1.6 1-2.8 2.1-2.8 1 0 1.5.7 1.5 1.6 0 1-.6 2.4-1 3.8-.3 1.1.6 2 1.7 2 2 0 3.6-2.2 3.6-5.2 0-2.7-2-4.6-4.8-4.6-3.3 0-5.2 2.4-5.2 4.9 0 1 .4 2 .9 2.6.1.1.1.2.1.4l-.4 1.3c0 .2-.2.3-.4.2-1.4-.6-2.3-2.6-2.3-4.2 0-3.4 2.5-6.6 7.2-6.6 3.8 0 6.7 2.7 6.7 6.2 0 3.7-2.3 6.7-5.6 6.7-1.1 0-2.1-.6-2.5-1.2l-.7 2.6c-.2 1-.9 2.2-1.4 3A10 10 0 1 0 12 2z'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2a10 10 0 0 0-3.6 19.3c0-.8 0-1.8.2-2.6l1.4-6s-.3-.7-.3-1.7c0-1.6 1-2.8 2.1-2.8 1 0 1.5.7 1.5 1.6 0 1-.6 2.4-1 3.8-.3 1.1.6 2 1.7 2 2 0 3.6-2.2 3.6-5.2 0-2.7-2-4.6-4.8-4.6-3.3 0-5.2 2.4-5.2 4.9 0 1 .4 2 .9 2.6.1.1.1.2.1.4l-.4 1.3c0 .2-.2.3-.4.2-1.4-.6-2.3-2.6-2.3-4.2 0-3.4 2.5-6.6 7.2-6.6 3.8 0 6.7 2.7 6.7 6.2 0 3.7-2.3 6.7-5.6 6.7-1.1 0-2.1-.6-2.5-1.2l-.7 2.6c-.2 1-.9 2.2-1.4 3A10 10 0 1 0 12 2z'/%3E%3C/svg%3E"); }
.pw-social-instagram::before { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Crect x='3' y='3' width='18' height='18' rx='5' fill='none' stroke='%23000' stroke-width='2'/%3E%3Ccircle cx='12' cy='12' r='4' fill='none' stroke='%23000' stroke-width='2'/%3E%3Ccircle cx='17.5' cy='6.5' r='1.2'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Crect x='3' y='3' width='18' height='18' rx='5' fill='none' stroke='%23000' stroke-width='2'/%3E%3Ccircle cx='12' cy='12' r='4' fill='none' stroke='%23000' stroke-width='2'/%3E%3Ccircle cx='17.5' cy='6.5' r='1.2'/%3E%3C/svg%3E"); }
.pw-social-youtube::before { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M10 9l5 3-5 3V9z'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M10 9l5 3-5 3V9z'/%3E%3C/svg%3E"); }

/* ==========================================================================
   Top utility bar & header
   ========================================================================== */
.pw-topbar { background: var(--pw-black); color: #cfd0d6; font-size: 13px; }
.pw-topbar__inner { display: flex; align-items: center; justify-content: space-between; height: 38px; }
.pw-topbar__left { display: flex; align-items: center; gap: 18px; }
.pw-topbar__phone, .pw-topbar__login { color: #cfd0d6; }
.pw-topbar__phone .pw-icon { background-color: var(--pw-red); }
.pw-topbar__login + .pw-topbar__login { margin-left: 10px; }
.pw-topbar__socials { display: flex; gap: 8px; }
.pw-topbar__socials .pw-social-icon { width: 24px; height: 24px; }

.pw-header { background: var(--pw-surface); border-bottom: 1px solid var(--pw-border); position: relative; z-index: 30; }
.pw-header__inner { display: flex; align-items: center; gap: 30px; padding: 16px 20px; }
.pw-branding { display: flex; flex-direction: column; margin-right: auto; }
.pw-logo-text { font-family: var(--pw-font-heading); font-weight: 800; font-size: 30px; letter-spacing: 1px; color: var(--pw-text-strong); }
.pw-tagline { font-size: 11px; letter-spacing: 1.5px; color: var(--pw-text-muted); text-transform: uppercase; }
.custom-logo-link img { max-height: 56px; width: auto; }

.pw-main-nav { flex: 1 1 auto; }
.pw-nav-menu { display: flex; gap: 28px; align-items: center; }
.pw-nav-menu > li { position: relative; }
.pw-nav-menu > li > a {
	display: block;
	padding: 10px 0;
	font-family: var(--pw-font-heading);
	font-weight: 700;
	font-size: 15px;
	letter-spacing: 0.5px;
	text-transform: uppercase;
	color: var(--pw-text-strong);
}
.pw-nav-menu > li > a:hover,
.pw-nav-menu > li.current-menu-item > a { color: var(--pw-red); }
.pw-nav-menu ul {
	position: absolute;
	top: 100%; left: 0;
	background: var(--pw-surface);
	min-width: 200px;
	box-shadow: var(--pw-shadow);
	border-top: 3px solid var(--pw-red);
	display: none;
	z-index: 40;
}
.pw-nav-menu li:hover > ul { display: block; }
.pw-nav-menu ul li a { display: block; padding: 10px 16px; font-size: 14px; text-transform: none; font-weight: 500; }
.pw-nav-menu ul li a:hover { background: var(--pw-surface-alt); color: var(--pw-red); }

.pw-header__actions { display: flex; align-items: center; gap: 10px; }
.pw-icon-btn { background: none; border: none; padding: 8px; color: var(--pw-text-strong); display: inline-flex; }
.pw-icon-btn .pw-icon { width: 18px; height: 18px; margin: 0; }
.pw-header-search { background: var(--pw-surface-alt); border-bottom: 1px solid var(--pw-border); padding: 16px 0; }
.pw-header-search[hidden] { display: none; }

.pw-floating-cta {
	position: fixed;
	right: 24px;
	bottom: 90px;
	background: var(--pw-green);
	color: #fff;
	font-weight: 700;
	padding: 12px 22px;
	border-radius: 999px;
	box-shadow: 0 6px 16px rgba(0,0,0,.2);
	z-index: 50;
}

/* ==========================================================================
   Hero
   ========================================================================== */
.pw-hero { position: relative; height: 34vh; min-height: 240px; max-height: 340px; overflow: hidden; background: var(--pw-black); }
.pw-hero__slides { position: relative; width: 100%; height: 100%; }
.pw-hero__slide { position: absolute; inset: 0; opacity: 0; visibility: hidden; transition: opacity .5s ease; }
.pw-hero__slide.is-active { opacity: 1; visibility: visible; }
.pw-hero__bg { position: absolute; inset: 0; background-size: cover; background-position: center; }
.pw-hero__bg--placeholder { background: linear-gradient(135deg, #2a2c33, #46474e); }
/* Same treatment as the single game page's cover art (.pw-single__media--game):
   a blurred, darkened copy of the image fills the banner as a backdrop, while
   the real image sits on top of it uncropped ("contain"), so none of the
   artwork is cut off no matter its aspect ratio -- this shows more of each
   game's image than the old cover/crop background did. */
.pw-hero__bg-backdrop {
	position: absolute;
	inset: -20px;
	background-size: cover;
	background-position: center;
	filter: blur(24px) brightness(.5);
	transform: scale(1.1);
}
.pw-hero__bg-image { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; }
.pw-hero__scrim { position: absolute; inset: 0; background: linear-gradient(90deg, rgba(10,10,12,.9) 0%, rgba(10,10,12,.55) 45%, rgba(10,10,12,.15) 100%); }
.pw-hero__content { position: relative; height: 100%; display: flex; flex-direction: column; justify-content: center; max-width: 640px; color: #fff; }
.pw-hero__title { font-size: 44px; margin: 14px 0 12px; }
.pw-hero__title a { color: var(--pw-red); }
.pw-hero__excerpt { color: #d7d8dd; max-width: 480px; }
.pw-entry-meta--hero { margin-bottom: 6px; color: #d7d8dd; }
.pw-entry-meta--hero .pw-icon { background-color: var(--pw-red); }
.pw-hero__nav {
	position: absolute; top: 50%; transform: translateY(-50%);
	width: 44px; height: 44px; border-radius: 50%;
	background: rgba(255,255,255,.15); color: #fff; border: none;
	font-size: 24px; z-index: 5;
}
.pw-hero__nav:hover { background: rgba(255,255,255,.3); }
.pw-hero__nav--prev { left: 20px; }
.pw-hero__nav--next { right: 20px; }

/* ==========================================================================
   Section banners & layout grids
   ========================================================================== */
.pw-section-bar {
	background: var(--pw-red);
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 12px 20px;
	margin-bottom: 20px;
	border-radius: var(--pw-radius);
}
/* font-weight:700 here isn't just stylistic: a pure #FF0000-style accent
   red against white text sits right at the edge of WCAG AA contrast for
   normal text, so bumping the weight keeps it comfortably within the
   "large/bold text" AA threshold regardless of which red is picked. */
.pw-section-bar__title { color: #fff; font-size: 18px; font-weight: 700; text-transform: uppercase; margin: 0; }
.pw-section-bar__more { color: #fff; opacity: .9; }
.pw-section-bar__more .pw-icon { margin: 0; width: 16px; height: 16px; }

/* Taxonomy archive term description (Company/Platform/Genre/etc "about" text) */
.pw-term-description { margin: -6px 0 24px; padding: 16px 18px; background: var(--pw-surface-alt); border-radius: var(--pw-radius); color: var(--pw-text-secondary); font-size: 15px; line-height: 1.6; }
.pw-term-description p { margin-bottom: 1em; }
.pw-term-description p:last-child { margin-bottom: 0; }

.pw-home-columns { display: grid; grid-template-columns: minmax(0, 2.6fr) minmax(260px, 1fr); gap: 34px; padding-top: 40px; }
.pw-page-columns { display: grid; grid-template-columns: minmax(0, 2.6fr) minmax(260px, 1fr); gap: 34px; padding: 40px 20px; }
.pw-home-section { margin-bottom: 40px; }
/* Related Games on the single game page directly follows whatever the last
   game-detail block happened to be (Related Links, videos, screenshots...),
   none of which reserve space below themselves -- without its own top
   margin it sat right up against that content. */
.pw-home-section--related-games { margin-top: 40px; }
.pw-home-main { min-width: 0; }

/* ==========================================================================
   Pills / badges
   ========================================================================== */
.pw-pill {
	display: inline-block;
	color: #fff;
	font-size: 12px;
	font-weight: 700;
	text-transform: uppercase;
	padding: 5px 12px;
	border-radius: 3px;
}
a.pw-pill:hover { opacity: .9; }

/* ==========================================================================
   Cards: grid
   ========================================================================== */
.pw-card-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px; }
.pw-card { background: var(--pw-surface); transition: box-shadow .2s ease; }
.pw-card:hover { box-shadow: var(--pw-shadow); }
.pw-card__media { position: relative; display: block; aspect-ratio: 16/10; overflow: hidden; border-radius: var(--pw-radius); background: var(--pw-surface-alt); }
.pw-card__img { width: 100%; height: 100%; object-fit: cover; transition: transform .3s ease; }
.pw-card:hover .pw-card__img { transform: scale(1.05); }
.pw-card__media .pw-pill { position: absolute; top: 10px; left: 10px; }
.pw-card__body { padding-top: 12px; text-align: center; }
.pw-card__title { font-size: 17px; margin: 6px 0 0; }
.pw-card__title a:hover { color: var(--pw-red); }
.pw-entry-meta--compact { font-size: 12px; color: var(--pw-text-muted); }

.pw-placeholder-img {
	width: 100%; height: 100%;
	background: repeating-linear-gradient(135deg, var(--pw-surface-alt), var(--pw-surface-alt) 12px, var(--pw-page-bg) 12px, var(--pw-page-bg) 24px);
	min-height: 140px;
}

/* Cards: horizontal list */
.pw-card-list-group { display: flex; flex-direction: column; gap: 26px; }
.pw-card-list { display: grid; grid-template-columns: 260px 1fr; gap: 22px; padding-bottom: 26px; border-bottom: 1px solid var(--pw-border); }
.pw-card-list__media { display: block; border-radius: var(--pw-radius); overflow: hidden; aspect-ratio: 5/3; background: var(--pw-surface-alt); }
.pw-card-list__img { width: 100%; height: 100%; object-fit: cover; transition: transform .3s ease; }
.pw-card-list:hover .pw-card-list__img { transform: scale(1.05); }
.pw-card-list__title { font-size: 20px; margin: 8px 0 8px; }
.pw-card-list__title a:hover { color: var(--pw-red); }
.pw-card-list__excerpt { color: var(--pw-text-secondary); }

/* ==========================================================================
   Thumbnail / list view toggle
   ========================================================================== */
.pw-view-toggle {
	display: inline-flex;
	gap: 2px;
	background: var(--pw-surface-alt);
	border-radius: var(--pw-radius);
	padding: 3px;
	margin-bottom: 22px;
}
.pw-view-toggle__btn {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	border: none;
	background: transparent;
	color: var(--pw-text-secondary);
	font-size: 13px;
	font-weight: 600;
	padding: 7px 14px;
	border-radius: 3px;
	cursor: pointer;
}
.pw-view-toggle__btn .pw-icon { margin: 0; width: 14px; height: 14px; background-color: currentColor; }
.pw-view-toggle__btn:hover { color: var(--pw-text-strong); }
.pw-view-toggle__btn.is-active { background: var(--pw-surface); color: var(--pw-red); box-shadow: var(--pw-shadow); }

.pw-listing[data-pw-view-mode="list"] .pw-card-grid { display: none; }
.pw-listing[data-pw-view-mode="list"] .pw-title-list { display: block; }
.pw-listing:not([data-pw-view-mode="list"]) .pw-title-list { display: none; }

.pw-title-list {
	list-style: none;
	margin: 0;
	padding: 0;
	background: var(--pw-surface);
	border: 1px solid var(--pw-border);
	border-radius: var(--pw-radius);
}
.pw-title-list__item {
	border-bottom: 1px solid var(--pw-border);
}
.pw-title-list__item:last-child { border-bottom: none; }
.pw-title-list__item:nth-child(even) { background: var(--pw-surface-alt); }
.pw-title-list__item a {
	display: block;
	padding: 14px 18px;
	font-family: var(--pw-font-heading);
	font-size: 18px;
	letter-spacing: .2px;
	color: var(--pw-text);
	border-left: 3px solid transparent;
}
.pw-listing__sentinel { padding: 24px 0 4px; text-align: center; }
.pw-listing__loading { display: none; color: var(--pw-text-muted); font-size: 13px; }
.pw-listing__sentinel.is-loading .pw-listing__loading { display: inline-block; }

.pw-title-list__item a:hover {
	color: var(--pw-red);
	background: var(--pw-surface-alt);
	border-left-color: var(--pw-red);
}

/* Featured grid (big + small list) */
.pw-featured-grid { display: grid; grid-template-columns: 1.4fr 1fr; gap: 18px; }
.pw-featured-grid__main { position: relative; display: block; border-radius: var(--pw-radius); overflow: hidden; aspect-ratio: 4/3; background: var(--pw-surface-alt); }
.pw-featured-grid__main img { width: 100%; height: 100%; object-fit: cover; transition: transform .3s ease; }
.pw-featured-grid__main:hover img { transform: scale(1.05); }
.pw-featured-grid__main .pw-pill { position: absolute; top: 10px; left: 10px; z-index: 2; }
/* Title + excerpt overlay for the first/main featured item only -- the
   smaller list items alongside it stay image + title, no excerpt. */
.pw-featured-grid__main-scrim { position: absolute; inset: 0; z-index: 0; background: linear-gradient(0deg, rgba(10,10,12,.9) 0%, rgba(10,10,12,.45) 55%, rgba(10,10,12,0) 100%); }
.pw-featured-grid__main-caption { position: absolute; left: 0; right: 0; bottom: 0; z-index: 1; padding: 18px; color: #fff; }
.pw-featured-grid__main-caption h3 { font-size: 20px; margin: 0 0 6px; color: #fff; }
.pw-featured-grid__main-caption p { font-size: 13px; color: rgba(255,255,255,.85); margin: 0; max-width: 90%; }
.pw-featured-grid__list { display: flex; flex-direction: column; gap: 14px; }
.pw-featured-grid__item { display: grid; grid-template-columns: 80px 1fr; gap: 12px; align-items: center; }
.pw-featured-grid__item-media { display: block; border-radius: var(--pw-radius); overflow: hidden; aspect-ratio: 4/3; background: var(--pw-surface-alt); }
.pw-featured-grid__item-media img { width: 100%; height: 100%; object-fit: cover; transition: transform .3s ease; }
.pw-featured-grid__item-media:hover img { transform: scale(1.08); }
.pw-featured-grid__item-body h4 { font-size: 14px; margin: 4px 0 0; }
.pw-featured-grid__item-body .pw-meta-item { font-size: 11px; color: var(--pw-text-muted); }

/* Mini list items (Recent/Popular, Upcoming, Most Viewed) */
.pw-mini-item { display: grid; grid-template-columns: 62px 1fr; gap: 12px; padding: 12px 0; border-bottom: 1px solid var(--pw-border); }
.pw-mini-item:last-child { border-bottom: none; }
.pw-mini-item__media { display: block; border-radius: var(--pw-radius); overflow: hidden; aspect-ratio: 1/1; background: var(--pw-surface-alt); }
.pw-mini-item__img { width: 100%; height: 100%; object-fit: cover; transition: transform .3s ease; }
.pw-mini-item__media:hover .pw-mini-item__img { transform: scale(1.08); }
.pw-mini-item__label { display: block; font-size: 10px; text-transform: uppercase; color: var(--pw-red); font-weight: 700; letter-spacing: .5px; }
.pw-mini-item__date { display: flex; align-items: center; font-size: 11px; color: var(--pw-text-muted); margin: 2px 0; }
.pw-mini-item__title { font-size: 14px; margin: 0; line-height: 1.35; }
.pw-mini-item__title a:hover { color: var(--pw-red); }

/* ==========================================================================
   Tabs
   ========================================================================== */
.pw-tabs__nav { display: flex; }
.pw-tabs__tab { flex: 1; background: var(--pw-black); color: #fff; border: none; padding: 12px 0; font-weight: 700; text-transform: uppercase; font-size: 13px; }
.pw-tabs__tab.is-active { background: var(--pw-red); }
.pw-tabs__panel { display: none; padding-top: 6px; }
.pw-tabs__panel.is-active { display: block; }
.pw-tabs__empty { color: var(--pw-text-muted); font-size: 13px; padding: 12px 0; }

/* ==========================================================================
   Sidebar
   ========================================================================== */
.pw-sidebar { min-width: 0; }
.pw-widget { margin-bottom: 30px; }
.pw-term-list li { display: flex; align-items: center; justify-content: space-between; padding: 10px 0; border-bottom: 1px solid var(--pw-border); font-size: 14px; }
.pw-term-list li:last-child { border-bottom: none; }
.pw-term-list a { display: flex; align-items: center; flex: 1; padding: 2px 8px 2px 4px; margin: 0 -8px 0 -4px; border-radius: 3px; transition: background-color .15s ease, color .15s ease; }
.pw-term-list a:hover { background: var(--pw-surface-alt); color: var(--pw-red); }
.pw-term-list a .pw-icon { background-color: var(--pw-red); width: 10px; height: 10px; }
.pw-term-count { color: var(--pw-text-muted); font-size: 13px; }
.pw-term-list__empty { color: var(--pw-text-muted); font-size: 13px; }

.pw-follow-list { display: flex; flex-direction: column; gap: 8px; }
.pw-follow-row {
	display: flex; align-items: center; gap: 10px;
	color: #fff; font-weight: 700; text-transform: uppercase; font-size: 13px;
	padding: 12px 16px; border-radius: var(--pw-radius);
}
.pw-follow-row .pw-icon-chevron-right { margin-left: auto; background-color: #fff; opacity: .8; }
.pw-follow-row--facebook { background: #1877f2; }
.pw-follow-row--twitter { background: #14171a; }
.pw-follow-row--instagram { background: linear-gradient(135deg, #fd5949, #d6249f, #285AEB); }
.pw-follow-row--youtube { background: #ff0000; }

.pw-tag-cloud { display: flex; flex-wrap: wrap; gap: 8px; }
.pw-tag { display: inline-block; background: var(--pw-surface-alt); color: var(--pw-text-secondary); font-size: 12px; padding: 7px 12px; border-radius: 3px; border: 1px solid var(--pw-border); }
.pw-tag:hover { background: var(--pw-red); border-color: var(--pw-red); color: #fff; }

.pw-newsletter-box { background: var(--pw-red); color: #fff; padding: 24px; border-radius: var(--pw-radius); text-align: center; margin-bottom: 30px; }
.pw-newsletter-box__title { color: #fff; font-size: 22px; margin-bottom: 2px; }
.pw-newsletter-box__subtitle { font-size: 13px; opacity: .9; margin-bottom: 16px; }
.pw-newsletter-form__input { width: 100%; border: none; border-radius: 3px; padding: 12px 14px; margin-bottom: 10px; font-size: 14px; }
.pw-newsletter-form__button { width: 100%; background: var(--pw-black); color: #fff; border: none; padding: 12px; font-weight: 700; border-radius: 3px; }
.pw-newsletter-form__message { font-size: 12px; margin: 8px 0 0; min-height: 1em; }
/* Honeypot anti-spam field: hidden from sighted and screen-reader users alike, but still present in the DOM so bots that auto-fill every input keep filling it. */
.pw-newsletter-form__hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; overflow: hidden; }

/* ==========================================================================
   Video strip
   ========================================================================== */
.pw-video-section { background: var(--pw-gray-900); padding: 40px 0; margin: 10px 0 40px; }
.pw-video-section__title { color: #fff; margin-bottom: 20px; }
.pw-video-strip { display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px; }
.pw-video-card__thumb { position: relative; display: block; width: 100%; aspect-ratio: 16/10; border: none; padding: 0; border-radius: var(--pw-radius); overflow: hidden; background: var(--pw-black); }
.pw-video-card__thumb img { width: 100%; height: 100%; object-fit: cover; opacity: .85; }
.pw-video-card__thumb .pw-pill { position: absolute; top: 10px; left: 10px; }
.pw-video-card__play {
	position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);
	width: 46px; height: 46px; border-radius: 50%;
	background: rgba(255,255,255,.9);
}
.pw-video-card__play::before {
	content: ''; position: absolute; top: 50%; left: 54%; transform: translate(-50%, -50%);
	border-style: solid; border-width: 8px 0 8px 13px; border-color: transparent transparent transparent var(--pw-red);
}
.pw-video-card__title { color: #fff; font-size: 15px; margin-top: 10px; }
.pw-video-card__title a:hover { color: var(--pw-red); }

.pw-video-strip--embed { grid-template-columns: repeat(2, 1fr); }
.pw-video-embed { position: relative; padding-top: 56.25%; border-radius: var(--pw-radius); overflow: hidden; }
.pw-video-embed iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }

/* Video modal (JS-triggered) */
.pw-video-modal { position: fixed; inset: 0; background: rgba(10,10,12,.9); z-index: 100; display: none; align-items: center; justify-content: center; padding: 30px; }
.pw-video-modal.is-open { display: flex; }
.pw-video-modal__inner { position: relative; width: 100%; max-width: 900px; aspect-ratio: 16/9; }
.pw-video-modal__inner iframe { width: 100%; height: 100%; border: 0; }
.pw-video-modal__close { position: absolute; top: -40px; right: 0; background: none; border: none; color: #fff; font-size: 28px; }

/* ==========================================================================
   Single post / game
   ========================================================================== */
.pw-single__media { position: relative; border-radius: var(--pw-radius); overflow: hidden; margin-bottom: 20px; }
.pw-single__media img { width: 100%; max-height: 520px; object-fit: cover; }
.pw-single__media-placeholder { height: 340px; }
.pw-single__media .pw-pill { position: absolute; top: 14px; left: 14px; }
/* Both sit above the backdrop/cover image added for .pw-single__media--game
   below, which needs its own stacking order (backdrop, then image). */
.pw-single__media .pw-pill { z-index: 2; }

/* Game hero: IGDB's cover art is usually portrait box art (or otherwise
   not the same shape as a blog post's landscape photo), so cropping it to
   the same wide banner ("cover", above) left it looking zoomed in, with
   most of the artwork cut off. A blurred, darkened copy of the same image
   fills the banner as a backdrop, while the real cover art sits on top of
   it uncropped ("contain"), so the whole cover is always visible no matter
   its aspect ratio. */
.pw-single__media--game { aspect-ratio: 16 / 7; background: var(--pw-black); }
.pw-single__media--game .pw-single__media-backdrop {
	position: absolute;
	inset: -20px;
	background-size: cover;
	background-position: center;
	filter: blur(24px) brightness(.5);
	transform: scale(1.1);
}
.pw-single__media--game img { position: relative; z-index: 1; width: 100%; height: 100%; max-height: none; object-fit: contain; }
.pw-single__media--game .pw-single__media-placeholder { height: 100%; }
.pw-single__date { display: flex; align-items: center; font-size: 13px; color: var(--pw-text-muted); margin-bottom: 10px; }
.pw-single__title { font-size: 32px; color: var(--pw-text-strong); }
/* Title + IGDB rating badge share one row, with the badge pushed to the
   right-hand end of the line. Wraps to its own line under the title on
   narrow screens rather than squeezing the two together. */
.pw-single__title-row { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 8px 16px; }
.pw-single__title-row .pw-single__title { margin: 0; }
/* Wrapper around the [pixelwire_post_rating] shortcode output from the
   companion Pixelwire Post Ratings plugin -- the plugin's own CSS styles
   the stars themselves, this just places the block in the header rhythm. */
.pw-single__rating { margin: 8px 0 12px; }
/* IGDB user-rating badge, shown to the right of the title on the single
   game page. Can be hidden site-wide via the PixelWire > Game Page
   Sections option. */
.pw-single__igdb-rating { display: inline-flex; align-items: center; gap: 8px; flex-shrink: 0; margin-left: auto; }
.pw-single__igdb-rating-badge {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 40px;
	height: 40px;
	border-radius: 50%;
	background: var(--pw-red);
	color: var(--pw-white);
	font-family: var(--pw-font-heading);
	font-weight: 700;
	font-size: 16px;
	line-height: 1;
	flex-shrink: 0;
}
.pw-single__igdb-rating-label { font-size: 12px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--pw-text-muted); }
.pw-single__meta-row { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px; padding-bottom: 18px; border-bottom: 1px solid var(--pw-border); margin-bottom: 24px; }
.pw-entry-meta { display: flex; flex-wrap: wrap; gap: 16px; font-size: 13px; color: var(--pw-text-muted); }
.pw-meta-item { display: inline-flex; align-items: center; }
.pw-share { display: flex; align-items: center; gap: 8px; }
.pw-share__label { font-weight: 700; font-size: 13px; margin-right: 4px; }
.pw-share .pw-social-icon { width: 28px; height: 28px; }

.pw-game-facts { background: var(--pw-surface-alt); border-radius: var(--pw-radius); padding: 14px 18px; margin-bottom: 16px; font-size: 14px; }
.pw-game-facts__row { padding: 4px 0; }
.pw-game-facts__row a { text-decoration: underline; text-decoration-color: var(--pw-text-muted); text-underline-offset: 2px; }
.pw-game-facts__row a:hover { color: var(--pw-red); text-decoration-color: var(--pw-red); }
.pw-single__tags { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 10px; }

.pw-single__content { font-size: 16px; color: var(--pw-text); }
.pw-single__content p { margin-bottom: 1.4em; }
.pw-single__content h2, .pw-single__content h3 { margin-top: 1.4em; }
.pw-single__content blockquote {
	background: var(--pw-surface-alt);
	border-left: 4px solid var(--pw-red);
	padding: 22px 26px;
	font-style: italic;
	font-weight: 600;
	font-size: 18px;
	border-radius: var(--pw-radius);
	position: relative;
	margin: 1.6em 0;
}
.pw-single__content img { border-radius: var(--pw-radius); }
.pw-single__content ul, .pw-single__content ol { list-style: revert; padding-left: 1.4em; margin-bottom: 1.4em; }
.pw-single__tags .pw-tag, .pw-single__tags .pw-pill {}

.pw-game-gallery, .pw-game-videos, .pw-game-links, .pw-game-store { margin-top: 30px; }

/* "Get The Game" store buttons (Steam / GOG). The logo files themselves
   live in assets/img/ (steam-logo.png / gog-logo.png) -- see the README in
   that folder for provenance/usage-guideline notes. Both official logos are
   solid black artwork on a transparent background, so the buttons use a
   plain white card rather than a dark brand color behind them -- a dark
   background would make the logo unreadable. If a logo file is ever
   missing, the whole button hides itself instead of showing a broken image
   or an empty white box. */
.pw-store-links { display: flex; flex-wrap: wrap; align-items: stretch; gap: 12px; }
.pw-store-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 10px 20px;
	border-radius: var(--pw-radius);
	background: #fff;
	border: 1px solid var(--pw-gray-300);
	transition: border-color .2s ease, box-shadow .2s ease;
}
.pw-store-btn:hover { border-color: var(--pw-red); box-shadow: 0 2px 10px rgba(20,20,25,.08); }
.pw-store-btn__logo { display: block; width: auto; height: 34px; object-fit: contain; }
/* The GOG mark is close to square (icon + wordmark stacked) rather than a
   wide horizontal lockup like Steam's, so matching Steam's logo height
   alone leaves it looking small and swimming in the button's padding --
   sized taller here so the two buttons read as visually balanced. */
.pw-store-btn__logo--gog { height: 52px; }

/* "Download" button: for a game that only has a direct download / itch.io /
   developer-site link (the "Download Link" field on the plugin's game edit
   screen) rather than a Steam or GOG listing. Built the same way as those
   two -- an icon tile plus a wordmark -- but entirely original artwork
   rather than any real brand's logo, since there isn't a real storefront
   to represent here. */
.pw-store-btn--download { gap: 12px; font-family: var(--pw-font-heading); font-weight: 700; font-size: 16px; letter-spacing: .5px; text-transform: uppercase; color: var(--pw-black); }
.pw-store-btn__badge {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 34px;
	height: 34px;
	border: 2px solid var(--pw-black);
	border-radius: 6px;
	flex: 0 0 auto;
}
.pw-store-btn__badge-icon {
	width: 18px;
	height: 18px;
	background-color: var(--pw-black);
	-webkit-mask-repeat: no-repeat; mask-repeat: no-repeat;
	-webkit-mask-position: center; mask-position: center;
	-webkit-mask-size: contain; mask-size: contain;
	-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 3v11M7.5 10.5L12 15l4.5-4.5M5 19h14' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
	        mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 3v11M7.5 10.5L12 15l4.5-4.5M5 19h14' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
}
.pw-game-gallery__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }
.pw-game-gallery__item { position: relative; display: block; border-radius: var(--pw-radius); overflow: hidden; aspect-ratio: 16/10; background: var(--pw-surface-alt); cursor: zoom-in; }
.pw-game-gallery__item img { width: 100%; height: 100%; object-fit: cover; transition: transform .3s ease; }
.pw-game-gallery__item:hover img { transform: scale(1.06); }
.pw-game-gallery__zoom {
	position: absolute;
	top: 50%; left: 50%;
	width: 36px; height: 36px;
	margin: -18px 0 0 -18px;
	border-radius: 50%;
	background: rgba(10, 10, 12, .6);
	display: flex; align-items: center; justify-content: center;
	opacity: 0;
	transition: opacity .2s ease;
}
.pw-game-gallery__item:hover .pw-game-gallery__zoom { opacity: 1; }
.pw-game-gallery__zoom .pw-icon { margin: 0; width: 16px; height: 16px; background-color: #fff; }

/* ==========================================================================
   Screenshot lightbox
   ========================================================================== */
.pw-lightbox { position: fixed; inset: 0; background: rgba(10, 10, 12, .92); z-index: 100; display: none; align-items: center; justify-content: center; padding: 30px; }
.pw-lightbox.is-open { display: flex; }
.pw-lightbox__inner { position: relative; max-width: 1100px; max-height: 100%; }
.pw-lightbox__img { display: block; max-width: 100%; max-height: 80vh; margin: 0 auto; border-radius: var(--pw-radius); box-shadow: 0 10px 40px rgba(0, 0, 0, .5); }
.pw-lightbox__close { position: absolute; top: -40px; right: 0; background: none; border: none; color: #fff; font-size: 28px; line-height: 1; cursor: pointer; }
.pw-lightbox__counter { position: absolute; bottom: -30px; left: 0; right: 0; text-align: center; color: #fff; font-size: 13px; opacity: .75; }
.pw-lightbox__nav {
	position: fixed; top: 50%; transform: translateY(-50%);
	width: 44px; height: 44px; border-radius: 50%;
	background: rgba(255, 255, 255, .15); color: #fff; border: none;
	font-size: 24px; z-index: 101; cursor: pointer;
}
.pw-lightbox__nav:hover { background: rgba(255, 255, 255, .3); }
.pw-lightbox__nav--prev { left: 20px; }
.pw-lightbox__nav--next { right: 20px; }
.pw-game-links ul { list-style: disc; padding-left: 1.4em; }
.pw-game-links a:hover { color: var(--pw-red); }

.pw-author-box { display: flex; gap: 18px; background: var(--pw-surface-alt); border-radius: var(--pw-radius); padding: 22px; margin-top: 34px; }
.pw-author-box__avatar img { border-radius: 50%; }
.pw-author-box__name { margin-bottom: 4px; }
.pw-author-box__bio { color: var(--pw-text-secondary); margin: 0; }

/* ==========================================================================
   Comments
   ========================================================================== */
.pw-comments { margin-top: 40px; }
.pw-comment-list .comment { margin-bottom: 20px; }
.pw-comment-list .comment-body { background: var(--pw-surface-alt); border-radius: var(--pw-radius); padding: 18px; }
.pw-comment-list .comment-author .avatar { border-radius: 50%; float: left; margin-right: 14px; }
.pw-comment-list .comment-meta { font-size: 13px; color: var(--pw-text-muted); }
.pw-input {
	width: 100%; border: 1px solid var(--pw-border); border-radius: var(--pw-radius);
	padding: 12px 14px; font-family: inherit; font-size: 14px; margin-bottom: 14px;
	background: var(--pw-surface-alt);
	color: var(--pw-text);
}
.comment-form-author, .comment-form-email { display: inline-block; width: 49%; }
.comment-form-author { margin-right: 2%; }
.pw-btn, input[type="submit"].pw-btn {
	background: var(--pw-red); color: #fff; border: none; font-weight: 700;
	padding: 12px 26px; border-radius: var(--pw-radius);
}
.pw-btn-outline {
	display: inline-block; border: 2px solid var(--pw-red); color: var(--pw-red);
	font-weight: 700; text-transform: uppercase; font-size: 12px; letter-spacing: .5px;
	padding: 10px 20px; border-radius: 2px;
}
.pw-btn-outline:hover { background: var(--pw-red); color: #fff; }

/* ==========================================================================
   404 & pagination
   ========================================================================== */
.pw-404 { text-align: center; padding: 60px 0; }
.pw-404__code { font-size: 90px; color: var(--pw-red); margin-bottom: 0; }
.pw-404 .pw-search-form { max-width: 400px; margin: 24px auto; }

.pw-pagination { display: flex; gap: 8px; margin-top: 30px; }
.pw-pagination .page-numbers {
	display: inline-flex; align-items: center; justify-content: center;
	min-width: 38px; height: 38px; border-radius: var(--pw-radius);
	background: var(--pw-surface-alt); color: var(--pw-text); font-weight: 700; font-size: 14px; padding: 0 10px;
}
.pw-pagination .page-numbers.current { background: var(--pw-red); color: #fff; }

.pw-search-form { display: flex; }
.pw-search-form__input { flex: 1; border: 1px solid var(--pw-border); border-radius: 3px 0 0 3px; padding: 12px; background: var(--pw-surface); color: var(--pw-text); }
.pw-search-form__button { background: var(--pw-red); color: #fff; border: none; padding: 0 18px; border-radius: 0 3px 3px 0; }

/* ==========================================================================
   Footer
   ========================================================================== */
.pw-footer { background: var(--pw-black); color: #b7b8be; margin-top: 20px; }
/* 3 columns by default now that the "Stay Connected" 4th column is gone;
   auto-fit rather than a fixed repeat(3, 1fr) so a 4th column reappears at
   a sensible width on its own if footer-4's widget area is ever filled. */
.pw-footer__columns { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 30px; padding: 50px 20px; }
.pw-footer-widget__title { color: #fff; font-size: 17px; margin-bottom: 16px; }
.pw-footer__logo { color: #fff; }
.pw-footer__about { margin-top: 10px; font-size: 14px; }
.pw-footer-list li { padding: 6px 0; border-bottom: 1px solid rgba(255,255,255,.08); }
.pw-footer-list a:hover, .pw-footer-menu a:hover { color: var(--pw-red); }
.pw-footer-menu li { padding: 6px 0; }
.pw-footer__bottom { border-top: 1px solid rgba(255,255,255,.1); }
.pw-footer__bottom-inner { display: flex; align-items: center; justify-content: space-between; padding: 18px 20px; flex-wrap: wrap; gap: 10px; }
.pw-footer__credit { margin: 0; font-size: 13px; }
.pw-footer__powered-by { margin: 0; font-size: 12px; opacity: .7; }
.pw-footer__powered-by a { color: inherit; text-decoration: underline; text-decoration-color: rgba(255,255,255,.3); }
.pw-footer__powered-by a:hover { text-decoration-color: currentColor; }
.pw-footer__socials { display: flex; gap: 8px; }

.pw-back-to-top {
	position: fixed; right: 24px; bottom: 24px;
	width: 44px; height: 44px; border-radius: 50%;
	background: var(--pw-red); color: #fff; border: none;
	display: none; align-items: center; justify-content: center;
	box-shadow: 0 4px 12px rgba(0,0,0,.25); z-index: 50;
}
.pw-back-to-top.is-visible { display: flex; }
.pw-back-to-top .pw-icon { margin: 0; background-color: #fff; }

/* ==========================================================================
   Mobile
   ========================================================================== */
.pw-mobile-toggle { display: none; }

@media (max-width: 1024px) {
	.pw-home-columns, .pw-page-columns { grid-template-columns: 1fr; }
	.pw-card-grid { grid-template-columns: repeat(2, 1fr); }
	.pw-featured-grid { grid-template-columns: 1fr; }
	.pw-video-strip { grid-template-columns: repeat(2, 1fr); }
	.pw-footer__columns { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 782px) {
	.pw-topbar__login { display: none; }
	.pw-main-nav {
		position: absolute; top: 100%; left: 0; right: 0;
		background: var(--pw-surface); border-top: 1px solid var(--pw-border);
		max-height: 0; overflow: hidden; transition: max-height .25s ease;
	}
	.pw-main-nav.is-open { max-height: 80vh; overflow-y: auto; }
	.pw-nav-menu { flex-direction: column; align-items: stretch; gap: 0; padding: 10px 20px; }
	.pw-nav-menu > li > a { padding: 12px 0; border-bottom: 1px solid var(--pw-border); }
	.pw-nav-menu ul { position: static; box-shadow: none; border-top: none; display: block; padding-left: 14px; }
	.pw-mobile-toggle { display: inline-flex; }
	.pw-hero__title { font-size: 30px; }
	.pw-hero { height: auto; min-height: 220px; }
	.pw-card-grid { grid-template-columns: 1fr; }
	.pw-card-list { grid-template-columns: 1fr; }
	.pw-video-strip { grid-template-columns: 1fr; }
	.pw-game-gallery__grid { grid-template-columns: repeat(2, 1fr); }
	.pw-footer__columns { grid-template-columns: 1fr; }
	.comment-form-author, .comment-form-email { width: 100%; margin-right: 0; }
}

/* ==========================================================================
   Reduced motion: honor the OS-level "reduce motion" preference by cutting
   every animation/transition down to effectively instant. The hero
   slider's autoplay timer is also skipped in JS (see main.js) -- this
   covers the CSS-driven effects (card/gallery hover zoom, slide fades,
   the mobile nav's height transition, etc.).
   ========================================================================== */
@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after {
		animation-duration: 0.001ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.001ms !important;
		scroll-behavior: auto !important;
	}
}
