/*
Theme Name:     TattVibes
Theme URI:      https://tattvibes.com/
Template:       neve
Author:         TattVibes
Author URI:     https://tattvibes.com/
Description:    Child theme for TattVibes. A tattoo inspiration publication built for reading depth and ad network approval. Ships a custom header and footer, a two column single post layout with a sticky sidebar and an automatic table of contents, and preserves the site rule that every tattoo photograph carries its artist Instagram credit directly underneath it.
Version:        1.4.3
Requires PHP:   7.0
License:        GNU General Public License v2 or later
License URI:    https://www.gnu.org/licenses/gpl-2.0.html
Text Domain:    tattvibes
*/

/* ==========================================================================
   0. Fonts
   Self hosted variable fonts, preloaded from the head. Swap display means
   text is never invisible while a file is still on its way.
   ========================================================================== */

@font-face {
	font-family: "Bricolage Grotesque";
	font-style: normal;
	font-weight: 200 800;
	font-display: swap;
	src: url("assets/fonts/bricolage-grotesque-latin.woff2") format("woff2");
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
	font-family: "Bricolage Grotesque";
	font-style: normal;
	font-weight: 200 800;
	font-display: swap;
	src: url("assets/fonts/bricolage-grotesque-latin-ext.woff2") format("woff2");
	unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
	font-family: "Inter";
	font-style: normal;
	font-weight: 100 900;
	font-display: swap;
	src: url("assets/fonts/inter-latin.woff2") format("woff2");
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
	font-family: "Inter";
	font-style: normal;
	font-weight: 100 900;
	font-display: swap;
	src: url("assets/fonts/inter-latin-ext.woff2") format("woff2");
	unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* ==========================================================================
   1. Tokens
   ========================================================================== */

:root {
	--tv-rose: #AA6B69;
	--tv-rose-dark: #8A5250;
	--tv-ink: #1C1B18;
	--tv-cream: #E7DCDA;
	--tv-paper: #FFFFFF;
	--tv-line: #E0D2CE;
	--tv-muted: #8C7D79;

	/* Page sits on paper, raised boxes sit on cream. */
	--tv-page-bg: var(--tv-paper);
	--tv-surface: var(--tv-cream);

	--tv-font-head: "Bricolage Grotesque", "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;
	--tv-font-body: "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;

	--tv-wrap: 1240px;
	--tv-radius: 14px;
	--tv-radius-sm: 8px;
	--tv-header-h: 68px;

	--tv-shadow-lg: 0 12px 40px rgba(28, 27, 24, 0.12);
}

/* ==========================================================================
   2. Base
   ========================================================================== */

body.tv-theme {
	background-color: var(--tv-page-bg);
	color: var(--tv-ink);
	font-family: var(--tv-font-body);
	font-size: 17px;
	line-height: 1.7;
	-webkit-font-smoothing: antialiased;
	overflow-x: hidden;
}

.tv-theme h1,
.tv-theme h2,
.tv-theme h3,
.tv-theme h4,
.tv-theme h5,
.tv-theme h6 {
	font-family: var(--tv-font-head);
	font-weight: 700;
	line-height: 1.18;
	letter-spacing: -0.015em;
	color: var(--tv-ink);
	margin: 0 0 0.6em;
}

.tv-theme a {
	color: var(--tv-rose);
	text-decoration: none;
}

.tv-theme a:hover,
.tv-theme a:focus {
	color: var(--tv-rose-dark);
	text-decoration: underline;
}

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

.tv-theme p {
	margin: 0 0 1.25em;
}

.tv-site {
	display: flex;
	flex-direction: column;
	min-height: 100vh;
}

.tv-main {
	flex: 1 0 auto;
}

.tv-wrap {
	width: 100%;
	max-width: var(--tv-wrap);
	margin-inline: auto;
	padding-inline: 20px;
}

.screen-reader-text {
	position: absolute !important;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

.tv-skip {
	position: absolute;
	left: -9999px;
	top: 0;
	z-index: 999;
	background: var(--tv-rose);
	color: var(--tv-paper);
	padding: 12px 20px;
	border-radius: 0 0 var(--tv-radius-sm) 0;
}

.tv-skip:focus {
	left: 0;
	color: var(--tv-paper);
}

.tv-theme :focus-visible {
	outline: 2px solid var(--tv-rose);
	outline-offset: 2px;
}

/* ==========================================================================
   3. Buttons, tags and links
   ========================================================================== */

.tv-theme .tv-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	font-family: var(--tv-font-body);
	font-weight: 600;
	font-size: 0.8rem;
	letter-spacing: 0.09em;
	text-transform: uppercase;
	line-height: 1;
	padding: 15px 26px;
	border: 1px solid transparent;
	border-radius: 4px;
	cursor: pointer;
	text-decoration: none;
	transition: background-color 0.18s ease, color 0.18s ease, border-color 0.18s ease;
}

.tv-theme .tv-btn:hover,
.tv-theme .tv-btn:focus {
	text-decoration: none;
}

.tv-theme .tv-btn--rose,
.tv-theme .tv-news__form button {
	background: var(--tv-rose);
	color: var(--tv-paper);
}

.tv-theme .tv-btn--rose:hover,
.tv-theme .tv-btn--rose:focus,
.tv-theme .tv-news__form button:hover,
.tv-theme .tv-news__form button:focus {
	background: var(--tv-rose-dark);
	color: var(--tv-paper);
}

.tv-theme .tv-btn--outline {
	background: transparent;
	color: var(--tv-rose);
	border-color: var(--tv-rose);
}

.tv-theme .tv-btn--outline:hover,
.tv-theme .tv-btn--outline:focus {
	background: var(--tv-rose);
	color: var(--tv-paper);
}

.tv-theme .tv-btn--ink {
	background: var(--tv-ink);
	color: var(--tv-cream);
}

.tv-theme .tv-btn--ink:hover,
.tv-theme .tv-btn--ink:focus {
	background: var(--tv-rose);
	color: var(--tv-paper);
}

.tv-theme .tv-btn--ghost {
	background: var(--tv-paper);
	color: var(--tv-rose);
	border-color: var(--tv-line);
	width: 100%;
	border-radius: 999px;
}

.tv-theme .tv-btn--ghost:hover,
.tv-theme .tv-btn--ghost:focus {
	background: var(--tv-rose);
	border-color: var(--tv-rose);
	color: var(--tv-paper);
}

.tv-theme .tv-btn--ghost-ink {
	background: transparent;
	color: var(--tv-ink);
	border-color: var(--tv-ink);
}

.tv-theme .tv-btn--ghost-ink:hover,
.tv-theme .tv-btn--ghost-ink:focus {
	background: var(--tv-ink);
	color: var(--tv-cream);
}

.tv-theme .tv-tag {
	display: inline-block;
	font-size: 0.7rem;
	font-weight: 600;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--tv-paper);
	background: var(--tv-rose);
	padding: 6px 12px;
	border-radius: 999px;
	text-decoration: none;
}

.tv-theme .tv-tag:hover,
.tv-theme .tv-tag:focus {
	background: var(--tv-rose-dark);
	color: var(--tv-paper);
	text-decoration: none;
}

.tv-theme .tv-tag--sm {
	font-size: 0.64rem;
	padding: 5px 10px;
}

.tv-theme .tv-textlink {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	font-size: 0.74rem;
	font-weight: 600;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--tv-rose);
	text-decoration: none;
}

.tv-theme .tv-textlink:hover,
.tv-theme .tv-textlink:focus {
	color: var(--tv-rose-dark);
	text-decoration: none;
}

.tv-notice {
	border-radius: var(--tv-radius-sm);
	padding: 14px 18px;
	font-size: 0.95rem;
	margin-bottom: 18px;
	border: 1px solid var(--tv-line);
	background: var(--tv-paper);
	color: var(--tv-ink);
}

.tv-notice--ok {
	border-left: 4px solid var(--tv-rose);
}

.tv-notice--error {
	border-left: 4px solid var(--tv-ink);
}

/* ==========================================================================
   4. Header
   ========================================================================== */

.tv-header {
	position: sticky;
	top: 0;
	z-index: 200;
	background: var(--tv-paper);
	border-bottom: 1px solid var(--tv-line);
}

.tv-header__inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	min-height: var(--tv-header-h);
}

.tv-theme .tv-brand {
	display: inline-flex;
	align-items: center;
	text-decoration: none;
	flex-shrink: 0;
}

.tv-theme .tv-brand--header .tv-brand__mark {
	font-family: var(--tv-font-head);
	font-weight: 700;
	font-size: 1.4rem;
	letter-spacing: -0.02em;
	color: var(--tv-ink);
}

.tv-theme .tv-brand--header:hover .tv-brand__mark,
.tv-theme .tv-brand--header:focus .tv-brand__mark {
	color: var(--tv-rose);
}

.tv-brand__img {
	max-height: 44px;
	width: auto;
}

/* Explicit height plus the width and height attributes on the tag means the
   header reserves the right box before the logo decodes, so there is no layout
   shift and the mark never collapses if the image is slow. */
.tv-theme .tv-brand--header .tv-brand__img {
	height: 42px;
	width: auto;
	max-height: none;
}

/* Navigation */

.tv-nav {
	margin-left: auto;
}

.tv-theme .tv-nav__list {
	display: flex;
	align-items: center;
	gap: 4px;
	list-style: none;
	margin: 0;
	padding: 0;
}

.tv-theme .tv-nav__list li {
	position: relative;
	margin: 0;
}

.tv-theme .tv-nav__list a,
.tv-theme .tv-nav__toggle {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	font-family: var(--tv-font-body);
	font-size: 0.8rem;
	font-weight: 600;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--tv-ink);
	background: none;
	border: 0;
	padding: 10px 14px;
	border-radius: var(--tv-radius-sm);
	cursor: pointer;
	text-decoration: none;
	transition: color 0.18s ease, background-color 0.18s ease;
}

.tv-theme .tv-nav__list a:hover,
.tv-theme .tv-nav__list a:focus,
.tv-theme .tv-nav__toggle:hover,
.tv-theme .tv-nav__toggle:focus,
.tv-theme .tv-nav__list .current-menu-item > a {
	color: var(--tv-rose);
	background: var(--tv-cream);
	text-decoration: none;
}

.tv-theme .tv-nav__submenu {
	display: none;
	list-style: none;
	margin: 0;
	padding: 8px;
}

.tv-nav__item--has-children.is-open > .tv-nav__submenu {
	display: block;
}

/* Icon buttons. 44px square targets with a 24px glyph, drawn as cream discs
   so they read as intentional controls rather than stray glyphs. */
.tv-theme .tv-iconbtn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex-shrink: 0;
	width: 44px;
	height: 44px;
	padding: 0;
	border: 1px solid var(--tv-line);
	border-radius: 50%;
	background: var(--tv-cream);
	color: var(--tv-ink);
	cursor: pointer;
	transition: background-color 0.18s ease, color 0.18s ease, border-color 0.18s ease;
}

.tv-theme .tv-iconbtn .tv-icon {
	width: 24px;
	height: 24px;
}

.tv-theme .tv-iconbtn:hover,
.tv-theme .tv-iconbtn:focus,
.tv-theme .tv-iconbtn[aria-expanded="true"] {
	background: var(--tv-rose);
	border-color: var(--tv-rose);
	color: var(--tv-paper);
}

.tv-header__actions {
	display: flex;
	align-items: center;
	gap: 8px;
	margin-left: 6px;
}

.tv-menu-toggle__close {
	display: none;
}

.tv-menu-toggle[aria-expanded="true"] .tv-menu-toggle__close {
	display: inline-flex;
}

.tv-menu-toggle[aria-expanded="true"] .tv-menu-toggle__open {
	display: none;
}

/* Search bar */

.tv-searchbar {
	background: var(--tv-cream);
	border-top: 1px solid var(--tv-line);
	padding: 16px 0;
}

.tv-searchbar[hidden] {
	display: none;
}

.tv-search {
	display: flex;
	gap: 8px;
}

.tv-search__input {
	flex: 1;
	min-width: 0;
	font-family: var(--tv-font-body);
	font-size: 1rem;
	padding: 13px 16px;
	border-radius: 4px;
	border: 1px solid var(--tv-line);
	background: var(--tv-paper);
	color: var(--tv-ink);
}

.tv-search__submit {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	font-family: var(--tv-font-body);
	font-weight: 600;
	font-size: 0.78rem;
	letter-spacing: 0.09em;
	text-transform: uppercase;
	padding: 13px 22px;
	border: 0;
	border-radius: 4px;
	background: var(--tv-rose);
	color: var(--tv-paper);
	cursor: pointer;
}

.tv-search__submit:hover,
.tv-search__submit:focus {
	background: var(--tv-rose-dark);
}

/* ==========================================================================
   5. Homepage hero
   Cream band, headline and actions on the left, the newest guide's
   photograph on the right with an ink caption panel in the site's pin style.
   Kept to roughly one screen so the guides grid starts close to the fold.
   ========================================================================== */

.tv-hero {
	position: relative;
	background: var(--tv-cream);
	border-bottom: 1px solid var(--tv-line);
	overflow: hidden;
}

.tv-hero__inner {
	position: relative;
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: 32px;
	padding-block: 44px 48px;
}

.tv-hero__copy {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	min-width: 0;
}

.tv-hero__eyebrow {
	display: inline-flex;
	align-items: center;
	gap: 12px;
	font-size: 0.72rem;
	font-weight: 600;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: var(--tv-rose);
	margin: 0 0 18px;
}

.tv-hero__eyebrow::before {
	content: "";
	flex-shrink: 0;
	width: 30px;
	height: 2px;
	background: var(--tv-rose);
}

.tv-theme .tv-hero__title {
	font-size: clamp(2.35rem, 6.2vw, 4.3rem);
	line-height: 1.02;
	letter-spacing: -0.03em;
	color: var(--tv-ink);
	margin: 0 0 18px;
	max-width: 12ch;
}

.tv-hero__text {
	color: var(--tv-muted);
	font-size: 1.08rem;
	line-height: 1.6;
	margin: 0 0 28px;
	max-width: 46ch;
}

.tv-hero__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	margin: 0 0 30px;
}

.tv-theme .tv-hero__actions .tv-btn {
	padding: 17px 30px;
	font-size: 0.84rem;
}

.tv-theme .tv-hero__actions .tv-btn--outline {
	background: transparent;
	border-color: var(--tv-rose);
	color: var(--tv-rose);
}

.tv-theme .tv-hero__actions .tv-btn--outline:hover,
.tv-theme .tv-hero__actions .tv-btn--outline:focus {
	background: var(--tv-rose);
	color: var(--tv-paper);
}

.tv-hero__facts {
	display: flex;
	flex-wrap: wrap;
	gap: 10px 28px;
	list-style: none;
	margin: 0;
	padding: 18px 0 0;
	border-top: 1px solid var(--tv-line);
	font-size: 0.8rem;
	letter-spacing: 0.04em;
	color: var(--tv-muted);
	width: 100%;
	max-width: 46ch;
}

.tv-hero__facts li {
	display: inline-flex;
	align-items: baseline;
	gap: 6px;
	margin: 0;
}

.tv-hero__fact-num {
	font-family: var(--tv-font-head);
	font-weight: 700;
	font-size: 1.2rem;
	line-height: 1;
	color: var(--tv-ink);
}

/* Photograph frame with the ink caption panel. */

.tv-theme .tv-hero__media {
	position: relative;
	display: block;
	overflow: hidden;
	aspect-ratio: 4 / 3;
	border-radius: var(--tv-radius);
	background: var(--tv-ink);
	box-shadow: var(--tv-shadow-lg);
	text-decoration: none;
}

.tv-hero__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 0.6s ease;
}

.tv-hero__media:hover img,
.tv-hero__media:focus img {
	transform: scale(1.03);
}

.tv-hero__panel {
	position: absolute;
	left: 16px;
	right: 16px;
	bottom: 16px;
	display: flex;
	flex-direction: column;
	gap: 6px;
	padding: 18px 20px;
	background: var(--tv-ink);
	color: var(--tv-cream);
	border-radius: var(--tv-radius-sm);
}

.tv-hero__panel-label {
	font-size: 0.66rem;
	font-weight: 600;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: var(--tv-rose);
}

.tv-hero__panel-title {
	font-family: var(--tv-font-head);
	font-weight: 700;
	font-size: 1.12rem;
	line-height: 1.25;
	color: var(--tv-paper);
}

.tv-hero__panel-meta {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	font-size: 0.76rem;
	color: var(--tv-cream);
	opacity: 0.75;
}

.tv-hero__panel-cta {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	margin-top: 6px;
	font-size: 0.72rem;
	font-weight: 600;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--tv-rose);
}

.tv-hero__media:hover .tv-hero__panel-cta,
.tv-hero__media:focus .tv-hero__panel-cta {
	color: var(--tv-paper);
}

@media (min-width: 768px) {

	.tv-hero__inner {
		padding-block: 56px 60px;
	}

	.tv-theme .tv-hero__media {
		aspect-ratio: 16 / 10;
	}

	.tv-hero__panel {
		left: 22px;
		right: auto;
		bottom: 22px;
		max-width: 340px;
		padding: 20px 22px;
	}
}

@media (min-width: 900px) {

	.tv-hero__inner {
		grid-template-columns: minmax(0, 1.05fr) minmax(0, 0.95fr);
		align-items: center;
		gap: 48px;
		padding-block: 60px 64px;
	}

	.tv-theme .tv-hero__media {
		aspect-ratio: 5 / 4;
	}
}

@media (min-width: 1200px) {

	.tv-hero__inner {
		gap: 72px;
		padding-block: 68px 72px;
	}

	.tv-hero__panel {
		max-width: 360px;
	}
}

/* ==========================================================================
   7. Section headings, grids and cards
   ========================================================================== */

.tv-section {
	padding-block: 60px;
}

.tv-section--tight {
	padding-block: 46px 0;
}

.tv-section--tint {
	background: var(--tv-cream);
}

.tv-head {
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	gap: 20px;
	margin-bottom: 32px;
	padding-bottom: 16px;
	border-bottom: 1px solid var(--tv-line);
}

.tv-head__label {
	font-size: 0.7rem;
	font-weight: 600;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	color: var(--tv-rose);
	margin: 0 0 8px;
}

.tv-theme .tv-head__title {
	font-size: clamp(1.45rem, 3.2vw, 2.05rem);
	margin: 0;
}

.tv-head__note {
	flex-shrink: 0;
	font-size: 0.82rem;
	color: var(--tv-muted);
	margin: 0;
	padding-bottom: 3px;
}

.tv-head .tv-textlink {
	flex-shrink: 0;
	padding-bottom: 4px;
}

.tv-theme .tv-section-title {
	font-size: clamp(1.45rem, 3.2vw, 2.05rem);
	margin-bottom: 0;
}

.tv-grid {
	display: grid;
	gap: 36px 26px;
	grid-template-columns: 1fr;
}

/* Cards are borderless on purpose. The photograph is the card. */
.tv-card {
	background: transparent;
	border: 0;
	border-radius: 0;
	overflow: visible;
	display: flex;
	flex-direction: column;
}

.tv-card__media {
	display: block;
	aspect-ratio: 3 / 4;
	overflow: hidden;
	border-radius: var(--tv-radius-sm);
	background: var(--tv-cream);
}

.tv-card__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 0.5s ease;
}

.tv-card:hover .tv-card__media img {
	transform: scale(1.04);
}

.tv-card__placeholder {
	display: block;
	width: 100%;
	height: 100%;
	background: var(--tv-cream);
}

.tv-card__body {
	padding: 16px 0 0;
	display: flex;
	flex-direction: column;
	gap: 7px;
	flex: 1;
}

/* Inside a card the category reads as a small label, not a filled pill. */
.tv-theme .tv-card__body .tv-tag {
	align-self: flex-start;
	background: transparent;
	color: var(--tv-rose);
	padding: 0;
	border-radius: 0;
	font-size: 0.67rem;
	letter-spacing: 0.16em;
}

.tv-theme .tv-card__body .tv-tag:hover,
.tv-theme .tv-card__body .tv-tag:focus {
	background: transparent;
	color: var(--tv-rose-dark);
}

.tv-theme .tv-card__title {
	font-size: 1.12rem;
	line-height: 1.28;
	margin: 0;
}

.tv-theme .tv-card__title a {
	color: var(--tv-ink);
	text-decoration: none;
}

.tv-theme .tv-card__title a:hover,
.tv-theme .tv-card__title a:focus {
	color: var(--tv-rose);
	text-decoration: none;
}

.tv-card__excerpt {
	color: var(--tv-muted);
	font-size: 0.92rem;
	margin: 0;
}

.tv-card__meta {
	display: flex;
	align-items: center;
	gap: 6px;
	margin: auto 0 0;
	padding-top: 4px;
	font-size: 0.78rem;
	color: var(--tv-muted);
}

/* Full width call to action on every card, same corner radius as the other
   buttons on the site. */
.tv-theme .tv-card__cta {
	width: 100%;
	margin-top: 14px;
	padding: 14px 18px;
	border-radius: 4px;
	font-size: 0.78rem;
}

/* Reserved homepage advertising space. Invisible, spacing only. */
.tv-ad-slot--home {
	display: block;
	height: 1px;
	margin: 0;
	background: transparent;
}

/* ==========================================================================
   8. Category tiles
   ========================================================================== */

.tv-tiles {
	display: grid;
	grid-template-columns: 1fr;
	gap: 18px;
}

.tv-theme .tv-tile {
	position: relative;
	display: block;
	aspect-ratio: 4 / 5;
	overflow: hidden;
	border-radius: var(--tv-radius-sm);
	background: var(--tv-ink);
	text-decoration: none;
}

.tv-tile__media {
	position: absolute;
	inset: 0;
}

.tv-tile__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	opacity: 0.78;
	transition: transform 0.5s ease, opacity 0.3s ease;
}

.tv-tile:hover .tv-tile__media img {
	transform: scale(1.05);
	opacity: 0.62;
}

.tv-tile__body {
	position: absolute;
	inset-inline: 0;
	bottom: 0;
	display: flex;
	flex-direction: column;
	gap: 3px;
	padding: 22px 20px;
	background: linear-gradient(to top, rgba(28, 27, 24, 0.9), rgba(28, 27, 24, 0));
}

.tv-tile__name {
	font-family: var(--tv-font-head);
	font-weight: 700;
	font-size: 1.18rem;
	color: var(--tv-paper);
}

.tv-tile__count {
	font-size: 0.74rem;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--tv-cream);
	opacity: 0.75;
}

/* ==========================================================================
   9. Editorial standards strip
   ========================================================================== */

.tv-standards {
	display: grid;
	grid-template-columns: 1fr;
	gap: 26px;
	list-style: none;
	margin: 0;
	padding: 0;
}

.tv-standards li {
	margin: 0;
	padding-top: 18px;
	border-top: 2px solid var(--tv-rose);
}

.tv-theme .tv-standards h3 {
	font-size: 1.02rem;
	margin: 0 0 8px;
}

.tv-standards p {
	color: var(--tv-muted);
	font-size: 0.92rem;
	margin: 0 0 12px;
}

/* ==========================================================================
   10. Closing band
   ========================================================================== */

.tv-close {
	background: var(--tv-cream);
	padding-block: 56px;
}

.tv-close__inner {
	display: grid;
	grid-template-columns: 1fr;
	gap: 26px;
	align-items: center;
}

.tv-theme .tv-close__statement {
	font-size: clamp(1.3rem, 2.8vw, 1.8rem);
	line-height: 1.24;
	margin: 0 0 8px;
	max-width: 22ch;
}

.tv-close__text {
	color: var(--tv-muted);
	margin: 0;
	max-width: 46ch;
}

.tv-close .tv-news__small {
	color: var(--tv-muted);
	opacity: 1;
}

.tv-news--band .tv-news__form button {
	background: var(--tv-ink);
	color: var(--tv-cream);
}

.tv-news--band .tv-news__form button:hover,
.tv-news--band .tv-news__form button:focus {
	background: var(--tv-rose);
	color: var(--tv-paper);
}

/* ==========================================================================
   10. Banners, pagination, empty states
   ========================================================================== */

.tv-banner {
	background: var(--tv-ink);
	padding-block: 46px;
}

.tv-banner__eyebrow {
	display: inline-block;
	font-size: 0.72rem;
	font-weight: 600;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--tv-rose);
	margin-bottom: 12px;
}

.tv-theme .tv-banner__title {
	color: var(--tv-cream);
	font-size: clamp(1.7rem, 4.4vw, 2.7rem);
	margin-bottom: 10px;
	max-width: 26ch;
}

.tv-banner__sub,
.tv-banner__sub p {
	color: var(--tv-cream);
	opacity: 0.8;
	margin: 0;
	max-width: 62ch;
}

.tv-pagination {
	margin-top: 44px;
}

.tv-pagination ul {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 8px;
	list-style: none;
	margin: 0;
	padding: 0;
}

.tv-theme .tv-pagination a,
.tv-theme .tv-pagination span {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 44px;
	height: 44px;
	padding-inline: 14px;
	border-radius: 999px;
	font-weight: 600;
	font-size: 0.92rem;
	background: var(--tv-surface);
	border: 1px solid var(--tv-line);
	color: var(--tv-ink);
	text-decoration: none;
}

.tv-theme .tv-pagination a:hover,
.tv-theme .tv-pagination a:focus {
	background: var(--tv-rose);
	border-color: var(--tv-rose);
	color: var(--tv-paper);
	text-decoration: none;
}

.tv-theme .tv-pagination .current {
	background: var(--tv-rose);
	border-color: var(--tv-rose);
	color: var(--tv-paper);
}

.tv-empty {
	background: var(--tv-surface);
	border: 1px solid var(--tv-line);
	border-radius: var(--tv-radius);
	padding: 40px 24px;
	text-align: center;
	max-width: 640px;
	margin-inline: auto;
}

.tv-empty .tv-search {
	margin-block: 20px;
}

/* ==========================================================================
   11. Single post
   ========================================================================== */

.tv-post-head {
	padding-block: 38px 26px;
	max-width: 820px;
}

.tv-post-head .tv-tag {
	margin-bottom: 16px;
}

.tv-theme .tv-post-title {
	font-size: clamp(1.85rem, 5vw, 3rem);
	margin-bottom: 18px;
}

.tv-meta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px 20px;
	list-style: none;
	margin: 0;
	padding: 0;
	font-size: 0.88rem;
	color: var(--tv-muted);
}

.tv-meta li {
	display: flex;
	align-items: center;
	gap: 7px;
	margin: 0;
}

.tv-meta__avatar {
	border-radius: 50%;
}

.tv-single__grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: 40px;
	padding-bottom: 60px;
}

.tv-single__main {
	min-width: 0;
}

.tv-post-hero {
	margin: 0 0 28px;
	border-radius: var(--tv-radius);
	overflow: hidden;
}

.tv-post-hero img {
	width: 100%;
}

/* Table of contents */

.tv-toc {
	background: var(--tv-surface);
	border: 1px solid var(--tv-line);
	border-radius: var(--tv-radius);
	margin-bottom: 34px;
	overflow: hidden;
}

.tv-toc__head {
	display: flex;
	align-items: center;
	gap: 12px;
	width: 100%;
	padding: 16px 20px;
	background: none;
	border: 0;
	cursor: pointer;
	font-family: var(--tv-font-head);
	font-weight: 700;
	font-size: 1.02rem;
	color: var(--tv-ink);
	text-align: left;
}

.tv-toc__heading {
	display: inline-flex;
	align-items: center;
	gap: 9px;
}

.tv-toc__count {
	margin-left: auto;
	font-family: var(--tv-font-body);
	font-weight: 500;
	font-size: 0.8rem;
	color: var(--tv-muted);
}

.tv-toc__head .tv-icon--chevron {
	transition: transform 0.2s ease;
	color: var(--tv-muted);
}

.tv-toc__head[aria-expanded="true"] .tv-icon--chevron {
	transform: rotate(180deg);
}

.tv-theme .tv-toc__list {
	list-style: none;
	counter-reset: tvtoc;
	margin: 0;
	padding: 0 20px 18px;
	border-top: 1px solid var(--tv-line);
}

.tv-theme .tv-toc__item {
	counter-increment: tvtoc;
	margin: 0;
}

.tv-theme .tv-toc__item a {
	display: flex;
	gap: 10px;
	padding: 9px 0;
	color: var(--tv-ink);
	font-size: 0.95rem;
	text-decoration: none;
	border-bottom: 1px solid var(--tv-line);
}

.tv-theme .tv-toc__item:last-child a {
	border-bottom: 0;
}

.tv-theme .tv-toc__item a::before {
	content: counter(tvtoc);
	flex-shrink: 0;
	width: 1.7em;
	font-variant-numeric: tabular-nums;
	font-weight: 600;
	color: var(--tv-rose);
}

.tv-theme .tv-toc__item a:hover,
.tv-theme .tv-toc__item a:focus,
.tv-theme .tv-toc__item.is-active a {
	color: var(--tv-rose);
	text-decoration: none;
}

.tv-theme .tv-toc__item--h3 a {
	padding-left: 18px;
	font-size: 0.9rem;
}

/* Jump to the first photograph, sits between the contents and the article. */

.tv-jump {
	display: flex;
	justify-content: center;
	margin: 0 0 34px;
}

.tv-theme .tv-jump__btn {
	padding: 15px 32px;
	font-size: 0.82rem;
}

#tv-first-image {
	scroll-margin-top: calc(var(--tv-header-h) + 20px);
}

/* Article body */

.tv-entry {
	font-size: 1.08rem;
	line-height: 1.78;
}

.tv-entry > * {
	max-width: 100%;
}

.tv-theme .tv-entry h2 {
	font-size: clamp(1.35rem, 3.1vw, 1.75rem);
	margin-top: 2.4em;
	margin-bottom: 0.7em;
	scroll-margin-top: calc(var(--tv-header-h) + 20px);
}

.tv-theme .tv-entry h3 {
	font-size: 1.22rem;
	margin-top: 1.9em;
	margin-bottom: 0.6em;
	scroll-margin-top: calc(var(--tv-header-h) + 20px);
}

.tv-entry a {
	text-decoration: underline;
	text-underline-offset: 2px;
}

.tv-entry ul,
.tv-entry ol {
	margin: 0 0 1.4em;
	padding-left: 1.3em;
}

.tv-entry li {
	margin-bottom: 0.5em;
}

.tv-entry blockquote {
	margin: 1.8em 0;
	padding: 4px 0 4px 22px;
	border-left: 3px solid var(--tv-rose);
	color: var(--tv-muted);
	font-size: 1.06rem;
}

.tv-entry figure.wp-block-image,
.tv-entry .wp-block-image {
	margin: 1.6em 0 0;
	border-radius: var(--tv-radius);
	overflow: hidden;
}

.tv-entry figure.wp-block-image img {
	width: 100%;
	border-radius: var(--tv-radius);
}

/* --------------------------------------------------------------------------
   Artist credit line.

   Sits directly beneath its tattoo photograph and before the description
   paragraph. The handle text is never altered, it renders exactly as the
   artist writes it. Styling only, no content change.
   -------------------------------------------------------------------------- */

.tv-theme .tv-entry .tattoo-credit {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 7px;
	text-align: center;
	margin: 0.85em 0 2.2em;
	font-family: var(--tv-font-body);
	font-size: 0.76rem;
	font-weight: 500;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--tv-muted);
	line-height: 1.5;
}

.tv-theme .tv-entry .tattoo-credit::before {
	content: "";
	flex-shrink: 0;
	width: 15px;
	height: 15px;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%238C7D79' fill-rule='evenodd'%3E%3Cpath d='M7 2h10a5 5 0 0 1 5 5v10a5 5 0 0 1-5 5H7a5 5 0 0 1-5-5V7a5 5 0 0 1 5-5zm0 2a3 3 0 0 0-3 3v10a3 3 0 0 0 3 3h10a3 3 0 0 0 3-3V7a3 3 0 0 0-3-3H7zm5 3.5a4.5 4.5 0 1 1 0 9 4.5 4.5 0 0 1 0-9zm0 2a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5zM17.5 6a1 1 0 1 1 0 2 1 1 0 0 1 0-2z'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-size: contain;
}

.tv-theme .tv-entry .tattoo-credit a {
	color: var(--tv-rose);
	font-weight: 600;
	letter-spacing: 0.06em;
	text-transform: none;
	text-decoration: none;
	border-bottom: 1px solid transparent;
}

.tv-theme .tv-entry .tattoo-credit a:hover,
.tv-theme .tv-entry .tattoo-credit a:focus {
	color: var(--tv-rose-dark);
	border-bottom-color: var(--tv-rose-dark);
	text-decoration: none;
}

/* Reserved in content advertising space, invisible spacing only. */

.tv-ad-slot--incontent {
	display: block;
	height: 1px;
	margin: 3rem 0;
	background: transparent;
}

.tv-tags {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 8px;
	margin-top: 36px;
	padding-top: 22px;
	border-top: 1px solid var(--tv-line);
	font-size: 0.85rem;
}

.tv-tags__label {
	color: var(--tv-muted);
	text-transform: uppercase;
	letter-spacing: 0.1em;
	font-size: 0.72rem;
	font-weight: 600;
}

.tv-theme .tv-tags a {
	background: var(--tv-surface);
	border: 1px solid var(--tv-line);
	border-radius: 999px;
	padding: 5px 13px;
	color: var(--tv-ink);
	text-decoration: none;
}

.tv-theme .tv-tags a:hover,
.tv-theme .tv-tags a:focus {
	background: var(--tv-rose);
	border-color: var(--tv-rose);
	color: var(--tv-paper);
}

/* ==========================================================================
   12. Sidebar
   ========================================================================== */

.tv-sidebar {
	min-width: 0;
}

.tv-sidebar__sticky {
	display: flex;
	flex-direction: column;
	gap: 22px;
}

.tv-side-card {
	background: var(--tv-surface);
	border: 1px solid var(--tv-line);
	border-radius: var(--tv-radius);
	padding: 22px 20px;
}

.tv-theme .tv-side-title {
	font-size: 0.78rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--tv-ink);
	margin: 0 0 16px;
	padding-bottom: 12px;
	border-bottom: 1px solid var(--tv-line);
}

.tv-side-text {
	font-size: 0.9rem;
	color: var(--tv-muted);
	margin: 0 0 14px;
}

/* Author profile card */

.tv-authorcard {
	text-align: center;
}

.tv-authorcard .tv-side-title {
	text-align: left;
}

.tv-authorcard__img {
	width: 108px;
	height: 108px;
	margin: 4px auto 14px;
	border-radius: 50%;
	overflow: hidden;
	background: var(--tv-paper);
	border: 3px solid var(--tv-paper);
	box-shadow: 0 0 0 1px var(--tv-line);
	display: flex;
	align-items: center;
	justify-content: center;
}

.tv-authorcard__img img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.tv-avatar__monogram {
	font-family: var(--tv-font-head);
	font-weight: 700;
	font-size: 2.4rem;
	color: var(--tv-rose);
}

.tv-authorcard__name {
	font-family: var(--tv-font-head);
	font-weight: 700;
	font-size: 1.16rem;
	color: var(--tv-ink);
	margin: 0 0 3px;
}

.tv-authorcard__role {
	font-size: 0.72rem;
	font-weight: 600;
	letter-spacing: 0.13em;
	text-transform: uppercase;
	color: var(--tv-rose);
	margin: 0 0 14px;
}

.tv-authorcard__bio {
	font-size: 0.9rem;
	line-height: 1.62;
	color: var(--tv-muted);
	margin: 0 0 18px;
}

.tv-poplist,
.tv-catlist {
	list-style: none;
	margin: 0;
	padding: 0;
}

.tv-poplist__item {
	margin: 0;
}

.tv-poplist__item + .tv-poplist__item {
	border-top: 1px solid var(--tv-line);
}

.tv-theme .tv-poplist__link {
	display: flex;
	align-items: center;
	gap: 13px;
	padding: 12px 0;
	color: var(--tv-ink);
	text-decoration: none;
}

.tv-poplist__thumb {
	flex-shrink: 0;
	width: 62px;
	height: 62px;
	border-radius: var(--tv-radius-sm);
	overflow: hidden;
	background: var(--tv-paper);
}

.tv-poplist__thumb img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.tv-poplist__title {
	font-size: 0.9rem;
	font-weight: 500;
	line-height: 1.4;
}

.tv-theme .tv-poplist__link:hover .tv-poplist__title,
.tv-theme .tv-poplist__link:focus .tv-poplist__title {
	color: var(--tv-rose);
}

.tv-catlist li {
	margin: 0;
}

.tv-catlist li + li {
	border-top: 1px solid var(--tv-line);
}

.tv-theme .tv-catlist a {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 10px;
	padding: 11px 0;
	color: var(--tv-ink);
	font-size: 0.94rem;
	font-weight: 500;
	text-decoration: none;
}

.tv-theme .tv-catlist a:hover,
.tv-theme .tv-catlist a:focus {
	color: var(--tv-rose);
}

.tv-catlist__count {
	font-size: 0.78rem;
	color: var(--tv-muted);
	background: var(--tv-paper);
	border-radius: 999px;
	padding: 2px 10px;
}

/* Reserved sidebar advertising unit. Empty by design. */

.tv-adbox {
	border: 1px dashed var(--tv-line);
	border-radius: var(--tv-radius);
	background: var(--tv-surface);
	padding: 12px;
	text-align: center;
}

.tv-adbox__label {
	display: block;
	font-size: 0.66rem;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--tv-muted);
	margin-bottom: 10px;
}

.tv-adbox__inner {
	width: 100%;
	max-width: 300px;
	min-height: 250px;
	margin-inline: auto;
	background: var(--tv-paper);
	border-radius: var(--tv-radius-sm);
}

/* ==========================================================================
   13. Related posts
   ========================================================================== */

.tv-related {
	background: var(--tv-cream);
	border-top: 1px solid var(--tv-line);
	padding-block: 50px;
}

.tv-related .tv-card {
	background: var(--tv-paper);
}

.tv-related .tv-section-title {
	margin-bottom: 26px;
}

/* ==========================================================================
   14. Pages, forms and comments
   ========================================================================== */

.tv-page__body {
	width: 100%;
	margin-inline: auto;
	padding-block: 44px 66px;
}

.tv-entry--page {
	background: var(--tv-surface);
	border: 1px solid var(--tv-line);
	border-radius: var(--tv-radius);
	padding: 34px 28px;
}

.tv-form__row {
	display: grid;
	gap: 0 18px;
	grid-template-columns: 1fr;
}

.tv-form__field {
	margin-bottom: 18px;
}

.tv-form__field label,
.tv-commentform label {
	display: block;
	font-size: 0.78rem;
	font-weight: 600;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--tv-muted);
	margin-bottom: 7px;
}

.tv-req {
	color: var(--tv-rose);
}

.tv-theme input[type="text"],
.tv-theme input[type="email"],
.tv-theme input[type="url"],
.tv-theme input[type="search"],
.tv-theme textarea {
	width: 100%;
	font-family: var(--tv-font-body);
	font-size: 1rem;
	color: var(--tv-ink);
	background: var(--tv-paper);
	border: 1px solid var(--tv-line);
	border-radius: var(--tv-radius-sm);
	padding: 13px 15px;
}

.tv-theme textarea {
	resize: vertical;
}

.tv-theme input:focus,
.tv-theme textarea:focus {
	border-color: var(--tv-rose);
	outline: none;
	box-shadow: 0 0 0 3px rgba(170, 107, 105, 0.16);
}

.tv-form__actions {
	margin: 6px 0 0;
}

.tv-form__hp {
	position: absolute !important;
	left: -9999px;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

.tv-news__form {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
}

.tv-news__form input[type="email"] {
	flex: 1 1 200px;
	min-width: 0;
	font-size: 0.95rem;
	padding: 13px 16px;
	border-radius: 4px;
}

.tv-news__small {
	font-size: 0.76rem;
	margin: 10px 0 0;
	color: var(--tv-muted);
}

.tv-side-card--news .tv-news__small {
	color: var(--tv-muted);
}

.tv-comments {
	margin-top: 50px;
	padding-top: 34px;
	border-top: 1px solid var(--tv-line);
}

.tv-theme .tv-comments__title {
	font-size: 1.4rem;
	margin-bottom: 10px;
}

.tv-comments__note {
	color: var(--tv-muted);
	font-size: 0.94rem;
	margin-bottom: 22px;
}

.tv-theme .tv-commentlist,
.tv-theme .tv-commentlist .children {
	list-style: none;
	margin: 0 0 34px;
	padding: 0;
}

.tv-theme .tv-commentlist .children {
	margin: 18px 0 0 22px;
	padding-left: 18px;
	border-left: 2px solid var(--tv-line);
}

.tv-theme .tv-commentlist li.comment {
	margin-bottom: 22px;
}

.tv-theme .tv-commentlist .comment-body {
	background: var(--tv-surface);
	border: 1px solid var(--tv-line);
	border-radius: var(--tv-radius);
	padding: 20px;
}

.tv-theme .tv-commentlist .comment-author img {
	border-radius: 50%;
	margin-right: 10px;
}

.tv-theme .tv-commentlist .comment-author {
	display: flex;
	align-items: center;
	font-weight: 600;
}

.tv-theme .tv-commentlist .comment-meta,
.tv-theme .tv-commentlist .comment-metadata a {
	font-size: 0.8rem;
	color: var(--tv-muted);
}

.tv-theme .comment-reply-link {
	font-size: 0.8rem;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: 0.08em;
}

.tv-theme .comment-form-cookies-consent {
	display: flex;
	align-items: flex-start;
	gap: 9px;
	font-size: 0.88rem;
}

.tv-theme .comment-form-cookies-consent label {
	text-transform: none;
	letter-spacing: 0;
	font-weight: 400;
	color: var(--tv-ink);
	margin: 0;
}

.tv-theme .comment-form-cookies-consent input {
	width: auto;
	margin-top: 4px;
}

.tv-theme .form-submit {
	margin-top: 18px;
}

/* ==========================================================================
   15. 404
   ========================================================================== */

.tv-404__inner {
	padding-block: 70px 50px;
	text-align: center;
	max-width: 660px;
}

.tv-404__code {
	display: block;
	font-family: var(--tv-font-head);
	font-weight: 700;
	font-size: clamp(4rem, 16vw, 7.5rem);
	line-height: 1;
	color: var(--tv-rose);
	margin-bottom: 10px;
}

.tv-theme .tv-404__title {
	font-size: clamp(1.6rem, 4.4vw, 2.4rem);
	margin-bottom: 14px;
}

.tv-404__text {
	color: var(--tv-muted);
	margin-bottom: 26px;
}

.tv-404__search {
	margin-bottom: 26px;
}

.tv-404__actions {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 12px;
	margin: 0;
}

.tv-404__recent {
	padding-bottom: 66px;
}

.tv-404__recent .tv-section-title {
	text-align: center;
	margin-bottom: 26px;
}

/* ==========================================================================
   16. Footer
   ========================================================================== */

.tv-footer {
	background: var(--tv-ink);
	color: var(--tv-cream);
	margin-top: auto;
}

.tv-footer__grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: 34px;
	padding-block: 48px 40px;
}

.tv-theme .tv-brand--footer .tv-brand__mark {
	font-family: var(--tv-font-head);
	font-weight: 700;
	font-size: 1.3rem;
	color: var(--tv-cream);
}

.tv-theme .tv-brand--footer:hover .tv-brand__mark {
	color: var(--tv-rose);
}

.tv-footer__blurb {
	margin: 14px 0 16px;
	font-size: 0.92rem;
	opacity: 0.75;
	max-width: 34ch;
}

/* Column headings sit at 20px against 15px links, in the display face, with a
   short rose rule underneath so the hierarchy is obvious at a glance. */
.tv-theme .tv-footer__title {
	position: relative;
	font-family: var(--tv-font-head);
	font-size: 1.25rem;
	font-weight: 700;
	line-height: 1.2;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--tv-paper);
	margin: 0 0 20px;
	padding-bottom: 12px;
}

.tv-theme .tv-footer__title::after {
	content: "";
	position: absolute;
	left: 0;
	bottom: 0;
	width: 36px;
	height: 3px;
	border-radius: 2px;
	background: var(--tv-rose);
}

.tv-footer__list,
.tv-social {
	list-style: none;
	margin: 0;
	padding: 0;
}

.tv-footer__list li,
.tv-social li {
	margin: 0 0 10px;
}

.tv-theme .tv-footer__list a,
.tv-theme .tv-social a {
	color: var(--tv-cream);
	opacity: 0.8;
	font-size: 0.93rem;
	text-decoration: none;
}

.tv-theme .tv-footer__list a:hover,
.tv-theme .tv-footer__list a:focus,
.tv-theme .tv-social a:hover,
.tv-theme .tv-social a:focus {
	color: var(--tv-rose);
	opacity: 1;
	text-decoration: none;
}

.tv-social a {
	display: inline-flex;
	align-items: center;
	gap: 9px;
}

.tv-news--mini .tv-news__form {
	flex-direction: column;
	gap: 8px;
}

.tv-news--mini .tv-news__form input[type="email"] {
	flex: 1 1 auto;
	width: 100%;
}

.tv-news--mini .tv-news__form button {
	width: 100%;
}

.tv-footer .tv-news__small {
	color: var(--tv-cream);
	opacity: 0.6;
}

.tv-footer__bar {
	border-top: 1px solid rgba(231, 220, 218, 0.14);
	padding-block: 20px;
}

.tv-footer__barinner {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 8px 20px;
}

.tv-footer__barinner p {
	margin: 0;
	font-size: 0.82rem;
	opacity: 0.7;
}

/* ==========================================================================
   17. Responsive
   ========================================================================== */

@media (max-width: 1023px) {

	.tv-nav {
		position: fixed;
		inset: var(--tv-header-h) 0 0 auto;
		width: min(84vw, 340px);
		background: var(--tv-paper);
		border-left: 1px solid var(--tv-line);
		padding: 20px;
		overflow-y: auto;
		transform: translateX(100%);
		transition: transform 0.25s ease;
		visibility: hidden;
		box-shadow: var(--tv-shadow-lg);
	}

	.tv-nav.is-open {
		transform: translateX(0);
		visibility: visible;
	}

	.tv-theme .tv-nav__list {
		flex-direction: column;
		align-items: stretch;
		gap: 2px;
	}

	.tv-theme .tv-nav__list a,
	.tv-theme .tv-nav__toggle {
		width: 100%;
		justify-content: space-between;
		padding: 13px 12px;
		font-size: 0.82rem;
		border-bottom: 1px solid var(--tv-line);
		border-radius: 0;
	}

	.tv-theme .tv-nav__submenu {
		padding: 0 0 8px 12px;
	}

	.tv-theme .tv-nav__submenu a {
		font-size: 0.78rem;
		opacity: 0.85;
		border-bottom: 0;
		padding-block: 10px;
	}

	.tv-nav__item--has-children.is-open .tv-nav__toggle .tv-icon--chevron {
		transform: rotate(180deg);
	}

	/* Contents list starts collapsed on small screens. */
	.tv-theme .tv-toc__list {
		display: none;
	}

	.tv-theme .tv-toc.is-open .tv-toc__list {
		display: block;
	}
}

@media (min-width: 600px) {

	.tv-wrap {
		padding-inline: 28px;
	}

	.tv-grid--3,
	.tv-grid--4 {
		grid-template-columns: repeat(2, 1fr);
	}

	.tv-form__row {
		grid-template-columns: 1fr 1fr;
	}

	.tv-entry--page {
		padding: 44px 40px;
	}
}

@media (min-width: 768px) {

	.tv-section {
		padding-block: 80px;
	}

	.tv-banner {
		padding-block: 60px;
	}

	.tv-standards {
		grid-template-columns: repeat(2, 1fr);
		gap: 30px 34px;
	}

	.tv-tiles {
		grid-template-columns: repeat(3, 1fr);
	}

	.tv-close {
		padding-block: 76px;
	}

	.tv-close__inner {
		grid-template-columns: 1.1fr 1fr;
		gap: 48px;
	}

	.tv-ad-slot--home {
		margin: 8px 0;
	}

	.tv-news--band .tv-news__form {
		flex-wrap: nowrap;
	}

	/* Static pages read at a comfortable measure rather than full bleed. */
	.tv-page__body {
		width: 82%;
	}

	.tv-footer__grid {
		grid-template-columns: repeat(2, 1fr);
		gap: 40px;
	}

	.tv-post-head {
		padding-block: 52px 30px;
	}

	.tv-entry {
		font-size: 1.12rem;
	}
}

@media (min-width: 1024px) {

	:root {
		--tv-header-h: 76px;
	}

	/* Specificity matches the icon button rule so this still wins on desktop. */
	.tv-theme .tv-menu-toggle {
		display: none;
	}

	.tv-theme .tv-brand--header .tv-brand__img {
		height: 48px;
	}

	.tv-standards {
		grid-template-columns: repeat(4, 1fr);
	}

	.tv-grid--3 {
		grid-template-columns: repeat(3, 1fr);
	}

	.tv-grid--4 {
		grid-template-columns: repeat(4, 1fr);
	}

	/* Pages sit at seventy percent of the content width. */
	.tv-page__body {
		width: 70%;
	}

	/* Two column article: readable main column, sticky rail alongside. */
	.tv-single__grid {
		grid-template-columns: minmax(0, 68fr) minmax(0, 30fr);
		gap: 52px;
		padding-bottom: 80px;
	}

	.tv-sidebar__sticky {
		position: sticky;
		top: calc(var(--tv-header-h) + 24px);
	}

	.tv-footer__grid {
		grid-template-columns: 1.5fr 1fr 1.1fr 1.3fr;
		gap: 44px;
		padding-block: 62px 48px;
	}

	/* Categories dropdown. */
	.tv-theme .tv-nav__submenu {
		position: absolute;
		top: 100%;
		left: 0;
		z-index: 220;
		min-width: 230px;
		background: var(--tv-paper);
		border: 1px solid var(--tv-line);
		border-radius: var(--tv-radius-sm);
		box-shadow: var(--tv-shadow-lg);
	}

	.tv-theme .tv-nav__submenu a {
		display: block;
		width: 100%;
		color: var(--tv-ink);
		font-size: 0.74rem;
		padding: 10px 12px;
		border-radius: 6px;
	}

	.tv-theme .tv-nav__submenu a:hover,
	.tv-theme .tv-nav__submenu a:focus {
		background: var(--tv-cream);
		color: var(--tv-rose);
	}

	.tv-toc__head {
		cursor: default;
		pointer-events: none;
	}

	.tv-toc__head .tv-icon--chevron {
		display: none;
	}

	.tv-toc__list {
		display: block !important;
	}
}

@media (min-width: 1280px) {

	.tv-wrap {
		padding-inline: 32px;
	}

	.tv-single__grid {
		gap: 64px;
	}

	.tv-entry {
		font-size: 1.14rem;
	}
}

@media (prefers-reduced-motion: reduce) {

	.tv-theme *,
	.tv-theme *::before,
	.tv-theme *::after {
		animation-duration: 0.001ms !important;
		transition-duration: 0.001ms !important;
		scroll-behavior: auto !important;
	}
}
