/*
Theme Name: Punk Rock Comics
Theme URI: https://punkrockcomics.com
Author: Jersey Devil Web
Author URI: https://jerseydevilweb.com
Description: Vintage newsprint blog theme for Punk Rock Comics: indie comics from the past, new indie releases, dollar bin finds and vintage books.
Version: 1.0.2
Requires at least: 6.0
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: punkrockcomics
*/

/* ---------- Tokens ---------- */
:root {
	--paper: #f2ead6;
	--paper-dark: #e6dbbf;
	--ink: #1b1814;
	--ink-soft: #4a443b;
	--green: #034639;
	--green-light: #0b6b58;
	--plum: #51033b;
	--plum-light: #7a1660;
	--rule: 3px solid var(--ink);
	--font-display: "Alfa Slab One", Georgia, serif;
	--font-body: "Source Serif 4", Georgia, serif;
	--font-type: "Special Elite", "Courier New", monospace;
	--wrap: 1180px;
	--shadow: 6px 6px 0 var(--ink);
}

/* ---------- Base ---------- */
*, *::before, *::after { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; }

body {
	margin: 0;
	background-color: var(--paper);
	/* faint halftone + paper grain */
	background-image:
		radial-gradient(rgba(27, 24, 20, 0.07) 1px, transparent 1.2px),
		linear-gradient(180deg, rgba(255, 255, 255, 0.25), rgba(0, 0, 0, 0.03));
	background-size: 6px 6px, 100% 100%;
	color: var(--ink);
	font-family: var(--font-body);
	font-size: 1.125rem;
	line-height: 1.7;
}

img { max-width: 100%; height: auto; display: block; }

a { color: var(--plum); text-decoration-thickness: 2px; text-underline-offset: 3px; }
a:hover, a:focus { color: var(--green); }

h1, h2, h3, h4, h5, h6 {
	font-family: var(--font-display);
	font-weight: 400;
	line-height: 1.15;
	margin: 1.6em 0 0.5em;
	letter-spacing: 0.01em;
}

h1 { font-size: clamp(2rem, 4.5vw, 3.25rem); }
h2 { font-size: clamp(1.6rem, 3vw, 2.25rem); }
h3 { font-size: 1.5rem; }

p { margin: 0 0 1.2em; }

hr { border: 0; border-top: var(--rule); margin: 2.5em 0; }

blockquote {
	margin: 2em 0;
	padding: 1.2em 1.5em;
	background: #fff8e6;
	border: var(--rule);
	box-shadow: var(--shadow);
	font-family: var(--font-type);
	font-size: 1.1rem;
}
blockquote p:last-child { margin-bottom: 0; }

code, pre { font-family: var(--font-type); }
pre { background: var(--paper-dark); padding: 1em; overflow-x: auto; border: 2px solid var(--ink); }

table { width: 100%; border-collapse: collapse; margin: 1.5em 0; }
th, td { border: 2px solid var(--ink); padding: 0.5em 0.75em; text-align: left; }
th { background: var(--green); color: var(--paper); font-family: var(--font-type); font-weight: 400; }

.screen-reader-text {
	position: absolute !important;
	width: 1px; height: 1px;
	overflow: hidden; clip: rect(1px, 1px, 1px, 1px);
	white-space: nowrap;
}
.skip-link:focus {
	clip: auto; width: auto; height: auto;
	top: 8px; left: 8px; z-index: 1000;
	padding: 0.6em 1em;
	background: var(--ink); color: var(--paper);
}

.wrap { max-width: var(--wrap); margin: 0 auto; padding: 0 20px; }

/* ---------- Masthead ---------- */
.dateline {
	border-bottom: 2px solid var(--ink);
	font-family: var(--font-type);
	font-size: 0.85rem;
	text-transform: uppercase;
	letter-spacing: 0.08em;
}
.dateline .wrap {
	display: flex;
	justify-content: space-between;
	gap: 1em;
	padding-top: 0.45em;
	padding-bottom: 0.45em;
}

.masthead {
	padding: 1.5em 0 1.25em;
	text-align: center;
}
.masthead-inner {
	display: grid;
	grid-template-columns: 1fr auto 1fr;
	align-items: center;
	gap: 1.5em;
}

.price-box, .issue-box {
	justify-self: start;
	border: var(--rule);
	background: var(--paper);
	padding: 0.5em 0.9em;
	font-family: var(--font-type);
	text-transform: uppercase;
	line-height: 1.2;
	box-shadow: 4px 4px 0 var(--ink);
	transform: rotate(-3deg);
}
.price-box strong {
	display: block;
	font-family: var(--font-display);
	font-weight: 400;
	font-size: 1.9rem;
	color: var(--plum);
}
.issue-box { justify-self: end; transform: rotate(2deg); max-width: 12em; font-size: 0.85rem; }

.site-branding a { text-decoration: none; color: inherit; display: inline-block; }
.site-branding .custom-logo { max-height: 150px; width: auto; margin: 0 auto; }
.site-title {
	margin: 0.15em 0 0;
	font-family: var(--font-display);
	font-weight: 400;
	font-size: clamp(2.2rem, 6vw, 4.25rem);
	line-height: 1;
	text-transform: uppercase;
	color: var(--green);
	text-shadow: 3px 3px 0 #cbbb92;
}
.site-description {
	margin: 0.6em 0 0;
	font-family: var(--font-type);
	text-transform: uppercase;
	letter-spacing: 0.12em;
	font-size: 0.95rem;
}

/* double rule like a newspaper */
.double-rule {
	border: 0;
	border-top: 4px solid var(--ink);
	border-bottom: 1px solid var(--ink);
	height: 7px;
	margin: 0;
}

/* ---------- Navigation ---------- */
.main-nav {
	background: var(--green);
	border-bottom: var(--rule);
}
.main-nav ul {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
}
.main-nav li { position: relative; }
.main-nav a {
	display: block;
	padding: 0.7em 1.1em;
	color: var(--paper);
	text-decoration: none;
	font-family: var(--font-display);
	text-transform: uppercase;
	font-size: 0.95rem;
	letter-spacing: 0.04em;
}
.main-nav a:hover,
.main-nav a:focus,
.main-nav .current-menu-item > a,
.main-nav .current-cat > a {
	background: var(--plum);
	color: #fff;
}
.main-nav .sub-menu {
	display: none;
	position: absolute;
	top: 100%;
	left: 0;
	z-index: 50;
	min-width: 200px;
	flex-direction: column;
	background: var(--green);
	border: var(--rule);
}
.main-nav li:hover > .sub-menu,
.main-nav li:focus-within > .sub-menu { display: flex; }

.nav-toggle {
	display: none;
	width: 100%;
	padding: 0.75em 1em;
	background: var(--green);
	color: var(--paper);
	border: 0;
	font-family: var(--font-display);
	font-size: 1rem;
	text-transform: uppercase;
	letter-spacing: 0.05em;
	cursor: pointer;
}

/* ---------- Layout ---------- */
.site-main { padding: 2.5em 0 4em; }

.section-head {
	display: flex;
	align-items: center;
	gap: 0.8em;
	margin: 0 0 1.5em;
}
.section-head h2, .section-head h1 { margin: 0; font-size: 1.6rem; text-transform: uppercase; }
.section-head::after { content: ""; flex: 1; border-top: var(--rule); }

.archive-header {
	margin-bottom: 2em;
	padding: 1.2em 1.5em;
	background: var(--plum);
	color: var(--paper);
	border: var(--rule);
	box-shadow: var(--shadow);
}
.archive-header h1 { margin: 0; text-transform: uppercase; }
.archive-header .archive-description { font-family: var(--font-type); margin-top: 0.5em; }
.archive-header .archive-description p:last-child { margin: 0; }

/* ---------- Category stamp ---------- */
.stamp {
	display: inline-block;
	padding: 0.2em 0.6em;
	background: var(--plum);
	color: #fff;
	font-family: var(--font-type);
	font-size: 0.8rem;
	text-transform: uppercase;
	letter-spacing: 0.08em;
	text-decoration: none;
	border: 2px solid var(--ink);
	transform: rotate(-2deg);
}
.stamp:hover, .stamp:focus { background: var(--green); color: #fff; }

.entry-meta {
	font-family: var(--font-type);
	font-size: 0.85rem;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	color: var(--ink-soft);
}
.entry-meta a { color: inherit; }

/* ---------- Lead story ---------- */
.lead-story {
	display: grid;
	grid-template-columns: 1.3fr 1fr;
	background: #fffaf0;
	border: var(--rule);
	box-shadow: 8px 8px 0 var(--ink);
	margin-bottom: 3em;
}
.lead-story .card-image { border-right: var(--rule); min-height: 320px; }
.lead-story .card-body { padding: 2em; display: flex; flex-direction: column; justify-content: center; }
.lead-story .card-title { font-size: clamp(1.8rem, 3.5vw, 2.6rem); }
.lead-kicker {
	font-family: var(--font-type);
	text-transform: uppercase;
	letter-spacing: 0.15em;
	color: var(--green);
	margin-bottom: 0.5em;
}

/* ---------- Cards ---------- */
.post-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 2em;
}

.card {
	display: flex;
	flex-direction: column;
	background: #fffaf0;
	border: var(--rule);
	box-shadow: var(--shadow);
	transition: transform 0.15s ease, box-shadow 0.15s ease;
}
.card:hover { transform: translate(-3px, -3px); box-shadow: 9px 9px 0 var(--ink); }

.card-image {
	position: relative;
	display: block;
	aspect-ratio: 4 / 3;
	overflow: hidden;
	border-bottom: var(--rule);
	background: var(--green);
	text-decoration: none;
}
.card-image img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	filter: sepia(0.15) contrast(1.05);
}
/* halftone overlay on images */
.card-image::after {
	content: "";
	position: absolute;
	inset: 0;
	background-image: radial-gradient(rgba(27, 24, 20, 0.18) 1px, transparent 1.4px);
	background-size: 4px 4px;
	pointer-events: none;
	mix-blend-mode: multiply;
}
.card-image.no-image {
	display: grid;
	place-items: center;
	background:
		radial-gradient(rgba(242, 234, 214, 0.18) 2px, transparent 2.5px) 0 0 / 12px 12px,
		var(--green);
}
.card-image.no-image span {
	font-family: var(--font-display);
	font-size: 2.5rem;
	color: var(--paper);
	text-shadow: 3px 3px 0 var(--ink);
	transform: rotate(-6deg);
}

.card-body { padding: 1.25em 1.4em 1.5em; flex: 1; display: flex; flex-direction: column; }
.card-title { margin: 0.5em 0 0.4em; font-size: 1.4rem; }
.card-title a { color: var(--ink); text-decoration: none; }
.card-title a:hover, .card-title a:focus { color: var(--plum); text-decoration: underline; }
.card-excerpt { font-size: 1rem; color: var(--ink-soft); }
.card-excerpt p { margin: 0 0 1em; }
.card .read-more { margin-top: auto; }

.read-more {
	align-self: flex-start;
	font-family: var(--font-display);
	text-transform: uppercase;
	font-size: 0.9rem;
	color: var(--green);
	text-decoration: none;
	border-bottom: 3px solid var(--plum);
}
.read-more:hover, .read-more:focus { color: var(--plum); }

/* ---------- Buttons ---------- */
.button, button, input[type="submit"], .wp-block-button__link,
.woocommerce a.button, .woocommerce button.button {
	display: inline-block;
	padding: 0.6em 1.3em;
	background: var(--green);
	color: var(--paper);
	border: var(--rule);
	border-radius: 0;
	box-shadow: 4px 4px 0 var(--ink);
	font-family: var(--font-display);
	font-weight: 400;
	font-size: 1rem;
	text-transform: uppercase;
	text-decoration: none;
	cursor: pointer;
	transition: transform 0.1s ease, box-shadow 0.1s ease;
}
.button:hover, button:hover, input[type="submit"]:hover, .wp-block-button__link:hover,
.woocommerce a.button:hover, .woocommerce button.button:hover {
	background: var(--plum);
	color: #fff;
	transform: translate(2px, 2px);
	box-shadow: 2px 2px 0 var(--ink);
}

input[type="text"], input[type="email"], input[type="search"], input[type="url"], textarea {
	width: 100%;
	padding: 0.6em 0.8em;
	background: #fffaf0;
	border: var(--rule);
	border-radius: 0;
	font-family: var(--font-body);
	font-size: 1rem;
	color: var(--ink);
}

/* ---------- Pagination ---------- */
.pagination { margin-top: 3em; }
.pagination .nav-links { display: flex; flex-wrap: wrap; gap: 0.5em; justify-content: center; }
.pagination .page-numbers {
	min-width: 2.6em;
	padding: 0.4em 0.8em;
	text-align: center;
	border: var(--rule);
	background: #fffaf0;
	color: var(--ink);
	text-decoration: none;
	font-family: var(--font-display);
}
.pagination .page-numbers.current, .pagination a.page-numbers:hover { background: var(--plum); color: #fff; }

/* ---------- Single post ---------- */
.single-wrap { max-width: 780px; margin: 0 auto; }

.entry-header { text-align: center; margin-bottom: 2em; }
.entry-header .entry-title { margin: 0.4em 0 0.3em; }

.entry-hero {
	margin: 0 0 2.5em;
	border: var(--rule);
	box-shadow: 8px 8px 0 var(--ink);
	background: var(--green);
}
.entry-hero img { width: 100%; }

.entry-content > *:first-child { margin-top: 0; }
.entry-content > p:first-of-type::first-letter {
	float: left;
	margin: 0.08em 0.1em 0 0;
	font-family: var(--font-display);
	font-size: 4.2em;
	line-height: 0.8;
	color: var(--plum);
}
.entry-content img, .entry-content .wp-block-image img { border: var(--rule); }
.entry-content figcaption, .wp-caption-text {
	font-family: var(--font-type);
	font-size: 0.85rem;
	text-align: center;
	margin-top: 0.5em;
}
.alignleft { float: left; margin: 0.3em 1.5em 1em 0; }
.alignright { float: right; margin: 0.3em 0 1em 1.5em; }
.aligncenter { margin-left: auto; margin-right: auto; }

.entry-footer {
	margin-top: 3em;
	padding-top: 1.2em;
	border-top: var(--rule);
	display: flex;
	flex-wrap: wrap;
	gap: 0.5em;
	align-items: center;
}
.tag-link {
	padding: 0.15em 0.6em;
	border: 2px solid var(--ink);
	background: #fffaf0;
	font-family: var(--font-type);
	font-size: 0.85rem;
	color: var(--ink);
	text-decoration: none;
}
.tag-link:hover { background: var(--green); color: var(--paper); }

.post-navigation {
	margin-top: 3em;
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 1.5em;
}
.post-navigation a {
	display: block;
	padding: 1em 1.2em;
	border: var(--rule);
	background: #fffaf0;
	box-shadow: 4px 4px 0 var(--ink);
	color: var(--ink);
	text-decoration: none;
	font-family: var(--font-display);
	line-height: 1.3;
}
.post-navigation .nav-next { text-align: right; }
.post-navigation .nav-label {
	display: block;
	font-family: var(--font-type);
	font-size: 0.8rem;
	text-transform: uppercase;
	color: var(--plum);
}

/* ---------- Comments ---------- */
.comments-area { margin-top: 4em; }
.comment-list { list-style: none; padding: 0; }
.comment-list .children { list-style: none; padding-left: 1.5em; }
.comment-body {
	margin-bottom: 1.5em;
	padding: 1em 1.2em;
	border: 2px solid var(--ink);
	background: #fffaf0;
}
.comment-meta { font-family: var(--font-type); font-size: 0.85rem; }
.comment-meta .avatar { float: left; margin-right: 0.8em; border: 2px solid var(--ink); }
.comment-content { clear: both; padding-top: 0.5em; }

/* ---------- Footer ---------- */
.site-footer {
	background: var(--green);
	color: var(--paper);
	border-top: var(--rule);
	padding: 3em 0 1.5em;
	text-align: center;
}
.site-footer a { color: var(--paper); }
.site-footer a:hover { color: #fff; }
.footer-logo a { display: inline-block; margin: 0 auto 1em; padding: 0.5em 1.2em; background: var(--paper); border: var(--rule); box-shadow: 5px 5px 0 var(--ink); transform: rotate(-2deg); }
.footer-logo .custom-logo { max-height: 100px; width: auto; }
.footer-tagline { font-family: var(--font-type); text-transform: uppercase; letter-spacing: 0.1em; }
.footer-nav ul { list-style: none; margin: 1.2em 0; padding: 0; display: flex; flex-wrap: wrap; justify-content: center; gap: 0.4em 1.5em; }
.footer-nav a { font-family: var(--font-display); text-transform: uppercase; text-decoration: none; font-size: 0.9rem; }
.footer-copy {
	margin-top: 2em;
	padding-top: 1em;
	border-top: 1px dashed rgba(242, 234, 214, 0.5);
	font-family: var(--font-type);
	font-size: 0.8rem;
}

/* ---------- Search form / 404 ---------- */
.search-form { display: flex; gap: 0.6em; max-width: 520px; margin: 1.5em auto; }
.search-form label { flex: 1; }
.not-found { text-align: center; max-width: 640px; margin: 0 auto; }
.not-found .big {
	font-family: var(--font-display);
	font-size: clamp(5rem, 15vw, 9rem);
	line-height: 1;
	color: var(--plum);
	text-shadow: 6px 6px 0 var(--ink);
	transform: rotate(-4deg);
	margin: 0.2em 0;
}

/* ---------- WooCommerce basics ---------- */
.woocommerce ul.products li.product {
	background: #fffaf0;
	border: var(--rule);
	box-shadow: var(--shadow);
	padding: 1em;
}
.woocommerce ul.products li.product .woocommerce-loop-product__title { font-family: var(--font-display); font-weight: 400; }
.woocommerce span.onsale { background: var(--plum); border: 2px solid var(--ink); border-radius: 0; }
.woocommerce .price { color: var(--green) !important; font-family: var(--font-type); }

/* ---------- Responsive ---------- */
@media (max-width: 960px) {
	.post-grid { grid-template-columns: repeat(2, 1fr); }
	.lead-story { grid-template-columns: 1fr; }
	.lead-story .card-image { border-right: 0; border-bottom: var(--rule); min-height: 0; }
}

@media (max-width: 720px) {
	body { font-size: 1.05rem; }
	.masthead-inner { grid-template-columns: 1fr; }
	.price-box, .issue-box { display: none; }
	.dateline .wrap { justify-content: center; }
	.dateline .dateline-extra { display: none; }
	.nav-toggle { display: block; }
	.main-nav ul { display: none; flex-direction: column; }
	.main-nav.is-open ul { display: flex; }
	.main-nav a { border-top: 1px solid rgba(242, 234, 214, 0.25); text-align: center; }
	.main-nav .sub-menu { position: static; display: flex; border: 0; }
	.post-grid { grid-template-columns: 1fr; }
	.post-navigation { grid-template-columns: 1fr; }
	.post-navigation .nav-next { text-align: left; }
	.lead-story .card-body { padding: 1.4em; }
	.alignleft, .alignright { float: none; margin: 1em 0; }
}
