/*
Theme Name: HullTV
Theme URI: https://hulltv.net/
Description: HullTV (Hull Community Television) — a child theme of Twenty Twenty-Five. Carries the station's brand tokens; everything else is inherited from the WordPress core parent theme so it stays supported and updatable.
Author: Technology Investments Inc.
Template: twentytwentyfive
Version: 1.0.0
Requires at least: 6.7
Requires PHP: 7.2
License: GPL-2.0-or-later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: hulltv
Tags: block-styles, full-site-editing, accessibility-ready, custom-colors, custom-menu, one-column, wide-blocks
*/

/* Design tokens live in theme.json. This file holds only what theme.json
   cannot express: legacy content compatibility and schedule layout. */

/* Match the fixed Monochrome scale. Twenty Twenty-Five makes these values
   fluid, which shrinks the entire site at phone and tablet widths. */
body {
	font-size: 18px;
	font-weight: 300;
	line-height: 1.875;
}

.wp-block-button__link {
	font-family: "Arial Narrow", Arial, sans-serif;
	font-stretch: condensed;
	letter-spacing: 1px;
	width: auto;
}

header.wp-block-template-part + main {
	margin-block-start: 0;
}

.hulltv-header {
	background: #fff;
	box-sizing: border-box;
	height: 83px;
	padding: 10px 40px;
	position: sticky;
	top: 0;
	z-index: 9999;
}

.hulltv-header .wp-block-site-title {
	font-size: 18px;
	line-height: 1.2;
	margin: 0;
}

.hulltv-header .wp-block-navigation-item__content {
	color: #000;
	font-size: 15px;
	font-weight: 400;
	line-height: 1;
	padding: 20px 10px;
}

.hulltv-header .wp-block-navigation-item__content:is(:hover, :focus),
.hulltv-header .wp-block-navigation-item__content[aria-current="page"] {
	color: #06c;
}

.hulltv-header-actions {
	gap: 10px;
}

.hulltv-header-search .wp-block-search__inside-wrapper {
	padding: 0;
}

.hulltv-header-search .wp-block-search__button {
	background: transparent;
	color: #000;
	padding: 10px;
}

.hulltv-footer {
	align-items: center;
	background: #000;
	box-sizing: border-box;
	color: #fff;
	display: flex;
	font-size: 13px;
	justify-content: center;
	line-height: 1;
	min-height: 94px;
	padding: 40px 0;
	text-align: center;
}

.hulltv-footer p {
	margin: 0;
}

/* Production's "before footer" call to action, on every page. */
.hulltv-footer-cta {
	background: linear-gradient(45deg, #06c, #028ef9);
	color: #fff;
	font-size: 20px;
	line-height: 1.6;
	padding: 45px 20px 40px;
}

.hulltv-footer-cta p {
	margin: 0;
}

.hulltv-footer-cta__button {
	background: #fff;
	border-radius: 3px;
	color: #000;
	display: inline-block;
	font-family: "Arial Narrow", Arial, sans-serif;
	font-size: 14px;
	font-stretch: condensed;
	letter-spacing: 1px;
	line-height: 1;
	margin: 8px 0 0 12px;
	padding: 15px 20px;
	text-decoration: none;
	text-transform: uppercase;
}

.hulltv-footer-cta__button:is(:hover, :focus-visible) {
	background: #000;
	color: #fff;
}

/* Search results: the same thumbnail cards as the Video on Demand grid. */
.hulltv-results {
	padding: 40px 20px 60px;
}

.hulltv-results .wp-block-query-title {
	font-size: clamp(28px, 4vw, 40px);
	margin-bottom: 20px;
}

.hulltv-results .wp-block-search {
	margin-bottom: 32px;
}

.hulltv-results .wp-block-post-template {
	gap: 24px;
	margin: 0 0 40px;
}

.hulltv-result {
	background: #fff;
	border-radius: 8px;
	box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12);
	height: 100%;
	overflow: hidden;
}

.hulltv-result .wp-block-post-featured-image {
	background: #f3f4f6;
	margin: 0;
}

.hulltv-result .wp-block-post-title {
	font-size: 16px;
	font-weight: 600;
	line-height: 1.3;
	margin: 0;
	padding: 12px;
}

.hulltv-result .wp-block-post-title a {
	color: #111827;
	text-decoration: none;
}

.hulltv-result .wp-block-post-title a:is(:hover, :focus-visible) {
	color: #06c;
}

/* 404: short, on-brand, with ways back into the content. */
.hulltv-404 {
	min-height: 50vh;
	padding: 60px 20px 80px;
}

.hulltv-404 h1 {
	font-size: clamp(32px, 5vw, 48px);
	margin-bottom: 16px;
}

.hulltv-404 .wp-block-search {
	margin-block: 24px;
}

/* Topic links as a wrap of pills (Video on Demand page, 404). */
.hulltv-topics {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	list-style: none;
	padding: 0;
}

.hulltv-topics a {
	border: 1px solid #c9d6e3;
	border-radius: 999px;
	color: #06c;
	display: inline-block;
	font-weight: 600;
	line-height: 1.4;
	padding: 10px 16px;
	text-decoration: none;
}

.hulltv-topics a:is(:hover, :focus-visible) {
	background: #eef4fa;
}

@media (max-width: 781px) {
	.hulltv-results .wp-block-post-template {
		gap: 12px;
		grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
	}

	.hulltv-result .wp-block-post-title {
		font-size: 15px;
		padding: 8px;
	}
}

@media (max-width: 1023px) {
	.hulltv-header {
		padding-inline: 20px;
	}

	.hulltv-header-search {
		display: none;
	}

	.gpb-monochrome-section-title-and-text-columns > .gb-layout-column-wrap > .gb-block-layout-column > .gb-block-layout-column-inner > .wp-block-heading:first-child,
	.gpb-monochrome-section-title-and-logos h2,
	.gpb-monochrome-section-title-and-text-columns .gb-block-container h2,
	.gpb-altitude-section-website-preview .wp-block-paragraph {
		font-size: clamp(48px, 18vw, 140px) !important;
		overflow-wrap: anywhere;
	}

	.hulltv-header .wp-block-navigation {
		position: static;
	}

	.hulltv-header .wp-block-navigation__responsive-container-open {
		align-items: center;
		background: #fff;
		box-sizing: border-box;
		color: #000;
		display: flex;
		font-family: Mulish, sans-serif;
		font-size: 15px;
		font-weight: 400;
		gap: 5px;
		height: 61px;
		line-height: 21px;
		padding: 20px 0;
	}

	.hulltv-header .wp-block-navigation__responsive-container-open::after {
		content: "MENU";
	}

	.hulltv-header .wp-block-navigation__responsive-container-open svg {
		width: 20px;
	}

	.hulltv-header .wp-block-navigation__responsive-container {
		display: none !important;
	}

	/* Full-width drop-down under the header with left-aligned links, like
	   production. height:auto (not a fixed 276px) so larger phone text sizes
	   grow the panel instead of spilling out of it; bottom:auto undoes core's
	   full-screen inset. */
	.hulltv-header .wp-block-navigation__responsive-container.is-menu-open {
		background: #fff;
		bottom: auto;
		box-sizing: border-box;
		display: block !important;
		height: auto;
		left: 0;
		padding: 0 0 16px;
		position: absolute;
		top: 74px;
		width: 100%;
	}

	/* Core lays the open menu out as a full-screen modal: right-aligned
	   items, 1.2em gaps, and a row reserved above them for the close button. */
	.hulltv-header .wp-block-navigation .is-menu-open .wp-block-navigation__responsive-container-content,
	.hulltv-header .wp-block-navigation .is-menu-open .wp-block-navigation__container,
	.hulltv-header .wp-block-navigation .is-menu-open .wp-block-navigation-item {
		align-items: stretch;
		gap: 0;
		padding-top: 0;
	}

	.hulltv-header .wp-block-navigation .is-menu-open .wp-block-navigation__responsive-container-close {
		right: 20px;
		top: 10px;
		z-index: 2; /* core gives the links (flex items) z-index 1 */
	}

	.hulltv-header .wp-block-navigation .is-menu-open .wp-block-navigation-item__content {
		padding: 15px 20px;
	}

	/* Opening the menu moves focus to the first link; core then draws a 2px
	   box around it even on a tap. Keep the ring for keyboard users only. */
	.hulltv-header .is-menu-open :focus:not(:focus-visible) {
		outline: none;
	}

	.hulltv-header .wp-block-navigation__responsive-container-content {
		align-items: stretch;
		padding: 0;
	}

	.hulltv-header .wp-block-navigation__container {
		align-items: stretch;
		display: block;
		width: 100%;
	}

	.hulltv-header .wp-block-navigation-item__content {
		box-sizing: border-box;
		display: block;
		font-size: 15px;
		line-height: 15px;
		padding: 12px 0;
		width: 100%;
	}
}

/* The imported pages still contain Genesis Blocks column markup. Reproducing
   these few layout rules keeps that content intact without keeping the retired
   Genesis plugin or theme in the runtime. */
.wp-block-genesis-blocks-gb-columns {
	position: relative;
}

.gb-layout-column-wrap {
	display: grid;
	grid-template-columns: repeat(var(--hulltv-columns, 1), minmax(0, 1fr));
	gap: 3em;
	position: relative;
	z-index: 1;
	margin-inline: auto;
}

.gb-layout-columns-2 {
	--hulltv-columns: 2;
}

.gb-layout-columns-3 {
	--hulltv-columns: 3;
}

.gb-block-layout-column {
	min-width: 0;
}

.gb-block-layout-column img,
.gb-block-layout-column a:has(> img) {
	max-width: 100%;
}

.gb-block-layout-column img {
	height: auto;
}

.gb-background-cover {
	background-size: cover;
	background-position: center;
}

.gb-has-parallax {
	background-attachment: fixed;
}

.gb-has-background-dim::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 0;
	background: inherit;
	background-image: none;
	opacity: 0.3;
}

/* Genesis Blocks' dim scale: dim-N paints the section colour at (100-N)%.
   Only the levels stored in imported content are listed. */
.gb-has-background-dim-30::before { opacity: 0.7; }
.gb-has-background-dim-40::before { opacity: 0.6; }
.gb-has-background-dim-50::before { opacity: 0.5; }
.gb-has-background-dim-60::before { opacity: 0.4; }
.gb-has-background-dim-70::before { opacity: 0.3; }
.gb-has-background-dim-80::before { opacity: 0.2; }

/* The production pages were authored with Genesis Blocks and Genesis Page
 * Builder. Keep their serialized block markup faithful without loading either
 * retired plugin. Twenty Twenty-Five fluid typography changes explicit legacy
 * pixel values, so reset those descendants to the production scale. */
.entry-content .wp-block-genesis-blocks-gb-columns {
	font-size: 18px;
	line-height: 1.875;
}

.entry-content .wp-block-genesis-blocks-gb-columns h2,
.entry-content .wp-block-genesis-blocks-gb-columns h1,
.entry-content .wp-block-genesis-blocks-gb-columns p {
	font-size: revert;
	line-height: revert;
}
.wp-block-genesis-blocks-gb-columns {
	margin-block: 0;
}

/* Genesis spacer: blank vertical space. Without these rules the browser draws
   the inner <hr>'s default border, which rendered as an empty bordered box. */
.gb-block-spacer {
	margin: 0 0 1.2em;
}

.gb-block-spacer hr {
	background: none;
	border: none;
	margin: 0;
}

/* Plain page copy (About, Contact, …): production's centered 680px reading
   column and fixed rhythm. Full-width sections are left alone; Schedule and
   VOD widen this to 1120px further down. */
.entry-content > :not(.alignfull) {
	box-sizing: border-box;
	margin-inline: auto;
	max-width: 680px;
}

.entry-content > h2 {
	font-size: 30px;
	line-height: 1.2;
	margin-block: 40px 20px;
}

.entry-content > p {
	margin-block: 0 28px;
}

@media (max-width: 719px) {
	.entry-content > :not(.alignfull) {
		margin-inline: 20px;
	}
}

.wp-block-genesis-blocks-gb-columns.has-theme-primary-background-color {
	background-color: #0066cc;
}

.gb-layout-column-wrap {
	gap: 0 var(--hulltv-column-gap, 54px);
}

.gb-block-layout-column-inner > :first-child {
	margin-top: 0;
}

.gb-block-layout-column-inner > :last-child {
	margin-bottom: 0;
}

.gb-block-layout-column-inner > .wp-block-heading {
	margin-block: 40px 20px;
}

.gb-block-layout-column-inner > .wp-block-paragraph {
	margin-block: 0 28px;
}

/* Core's separator block has Twenty Twenty-Five spacing presets that differ
 * from the legacy page builder's fixed rhythm. */
.entry-content .wp-block-genesis-blocks-gb-columns .wp-block-separator {
	margin-block: 39.6px 36px;
}

.gpb-monochrome-section-hero-header h2,
.gpb-monochrome-section-hero-header h1 {
	margin-block: 40px 20px;
}

.gpb-monochrome-section-title-and-text-columns h2 {
	font-size: 30px !important;
	line-height: 1.2 !important;
	margin-block: 40px 20px;
}

.gpb-monochrome-section-hero-header h2,
.gpb-monochrome-section-hero-header h1 {
	/* Size comes from each page's inline style (140px home, 60px inner pages),
	   as on production; forcing one size made inner-page titles 140px. */
	line-height: 1.2 !important;
}

.gpb-monochrome-section-title-and-text-columns > .gb-layout-column-wrap > .gb-block-layout-column > .gb-block-layout-column-inner > .wp-block-heading:first-child,
.gpb-monochrome-section-title-and-logos h2 {
	font-size: 48px !important;
	line-height: 1.2 !important;
}

.gpb-monochrome-section-title-and-text-columns .gb-block-container h2 {
	font-size: 48px !important;
	line-height: 1.2 !important;
}

.gpb-altitude-section-website-preview h2 {
	font-size: 18px !important;
	line-height: 1.2 !important;
}

.gpb-altitude-section-website-preview .wp-block-paragraph {
	font-size: 48px !important;
	line-height: 1.2 !important;
}

.gpb-monochrome-section-hero-header .wp-block-paragraph,
.gpb-monochrome-section-title-and-text-columns .wp-block-paragraph,
.gpb-monochrome-section-title-and-logos .wp-block-paragraph {
	font-size: 18px !important;
	line-height: 1.875 !important;
}

.gpb-monochrome-section-title-and-logos h2 {
	margin-block: 40px 20px;
}

.wp-block-genesis-page-builder-gpb-devices {
	margin-inline: auto;
	max-width: 922px;
}

.gpb-device-tablet.gpb-device-horizontal {
	box-sizing: border-box;
	width: 100%;
	min-height: 0;
	padding-bottom: calc((100% - 48px) * 0.7490950108);
	border: 24px solid #1f1f1f;
	border-radius: 28px;
	margin-bottom: 21.6px;
}

@media (max-width: 800px) {
	.gb-has-parallax {
		background-attachment: scroll;
	}

	.gb-layout-column-wrap {
		grid-template-columns: 1fr;
	}
}

/* Inner pages share one hero treatment so the content sits above the fold.
   (The home page hero is a separate, deliberately large design.) */
body:not(.home) .gpb-monochrome-section-hero-header {
	min-height: 360px;
	/* Stored inline padding varies (5em on Schedule/VOD, 10em on About/Contact/
	   Programs); normalise so every inner hero is the same height. */
	padding-block: 5em !important;
}

body:not(.home) .gpb-monochrome-section-hero-header :is(h1, h2) {
	font-size: clamp(56px, 9vw, 112px) !important;
	line-height: 1 !important;
	overflow-wrap: normal;
}

body.page-id-19 .entry-content > .has-large-font-size,
body.page-id-19 .cablecast-schedule-table,
body.page-id-46 .entry-content > :not(.alignfull) {
	box-sizing: border-box;
	margin-inline: auto;
	max-width: 1120px;
}

body.page-id-19 .entry-content > .has-large-font-size {
	background: #f4f7fa;
	border-left: 4px solid #06c;
	font-size: 18px !important;
	line-height: 1.7 !important;
	margin-block: 36px;
	padding: 20px 24px;
}

body.page-id-19 .cablecast-schedule-table {
	border: 0;
}

body.page-id-19 .cablecast-schedule-table th {
	background: #eef4fa;
	border: 0;
	font-size: 24px;
	padding: 18px 20px 12px;
}

body.page-id-19 .cablecast-schedule-table td {
	border: 0;
	border-bottom: 1px solid #e6e8ea;
	padding-block: 12px;
}

body.page-id-19 .cablecast-schedule-table__time {
	padding-left: 20px;
	width: 8rem;
}

body.page-id-19 .cablecast-schedule-table__title a {
	color: #06c;
	font-weight: 600;
	text-decoration-thickness: 1px;
	text-underline-offset: 3px;
}

body.page-id-46 .wp-block-search:not(.hulltv-header-search) {
	background: #f4f7fa;
	margin-block: 36px 28px;
	padding: 24px;
}

body.page-id-46 .wp-block-search:not(.hulltv-header-search) .wp-block-search__label {
	font-weight: 700;
	margin-bottom: 10px;
}

body.page-id-46 .cablecast-shows {
	margin-bottom: 48px;
}

/* Live viewing is the page's primary task: large responsive players on readable panels. */
body.page-id-85 .gpb-monochrome-section-large-video {
	min-height: auto;
	padding-block: 4em !important;
}

body.page-id-85 .gpb-monochrome-section-large-video > .gb-layout-column-wrap {
	gap: 32px;
}

/* Imported content spaces the title/subtitle/rule for a 1100px-tall hero. */
body.page-id-85 .gpb-monochrome-section-large-video .gb-container-content > h1 {
	margin-block: 0 12px;
}

body.page-id-85 .gpb-monochrome-section-large-video .gb-container-content > .has-large-font-size {
	margin-block: 0 24px;
}

body.page-id-85 .gpb-monochrome-section-large-video .gb-layout-columns-2 {
	margin-top: 24px;
}

body.page-id-85 .gpb-monochrome-section-large-video .gb-layout-columns-2 .gb-block-layout-column-inner {
	background: rgba(0, 0, 0, 0.68);
	border-radius: 8px;
	padding: 24px;
}

body.page-id-85 .gpb-monochrome-section-large-video .gb-layout-columns-2 h2 {
	font-size: clamp(26px, 2.6vw, 34px) !important;
	line-height: 1.15 !important;
	margin: 0 0 16px;
}

body.page-id-85 .trms-player {
	aspect-ratio: 16 / 9;
	border: 0;
	display: block;
	height: auto;
	width: 100%;
}

/* Now / Up next under each live player, sized for the dark channel card. */
body.page-id-85 .cablecast-now-playing {
	gap: 8px;
	margin-top: 12px;
}

body.page-id-85 .cablecast-now-playing__card {
	background: rgba(255, 255, 255, 0.1);
	border-top-width: 3px;
	box-shadow: none;
	color: #fff;
	min-width: 180px;
	padding: 10px 12px;
}

body.page-id-85 .cablecast-now-playing__badge {
	margin-bottom: 4px;
}

body.page-id-85 .cablecast-now-playing__title,
body.page-id-85 .cablecast-now-playing__no-show {
	color: #fff;
	font-size: 16px;
	margin: 0;
}

body.page-id-85 .cablecast-now-playing__time {
	color: #d7dde3;
}

/* Hero copy sits on photographs; a soft shadow keeps it legible on bright areas. */
.gpb-monochrome-section-hero-header :is(h1, p),
.gpb-monochrome-section-large-video .gb-container-content > :is(h1, p) {
	text-shadow: 0 1px 12px rgba(0, 0, 0, 0.55);
}


/* Front page: latest videos replace the old VOD screenshot; space the link below them. */
body.home .gpb-altitude-section-website-preview .cablecast-shows {
	margin-bottom: 32px;
}

/* Schedule: today's heading, the airing program and the next one. */
.cablecast-schedule-table__badge {
	background: #06c;
	border-radius: 4px;
	color: #fff;
	display: inline-block;
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.04em;
	line-height: 1;
	margin-left: 8px;
	padding: 5px 7px;
	text-transform: uppercase;
	vertical-align: middle;
	white-space: nowrap;
}

.cablecast-schedule-table .is-next .cablecast-schedule-table__badge {
	background: #5b6369;
}

body.page-id-19 .cablecast-schedule-table .is-today th {
	background: #dbe9f7;
	box-shadow: inset 4px 0 0 #06c;
}

body.page-id-19 .cablecast-schedule-table .is-now td {
	background: #eef6ff;
}

body.page-id-19 .cablecast-schedule-table .is-now .cablecast-schedule-table__time {
	box-shadow: inset 4px 0 0 #06c;
	color: #06c;
}

@media (max-width: 600px) {
	body:not(.home) .gpb-monochrome-section-hero-header {
		min-height: 0;
		padding-block: 2.5em !important; /* inline 5em from imported content */
	}

	body:not(.home) .gpb-monochrome-section-hero-header :is(h1, h2) {
		font-size: clamp(48px, 15vw, 68px) !important;
	}

	body.page-id-19 .entry-content > .has-large-font-size,
	body.page-id-46 .entry-content > :not(.alignfull) {
		margin-inline: 20px;
	}

	body.page-id-19 .cablecast-schedule-table th {
		font-size: 20px;
	}

	body.page-id-19 .cablecast-schedule-table th h2 {
		font-size: 22px;
	}

	body.page-id-19 .cablecast-schedule-table__time {
		padding-left: 12px;
		width: auto;
	}

	body.page-id-46 .wp-block-search:not(.hulltv-header-search) {
		padding: 20px;
	}

	/* Full-width input with the button beneath it, so the placeholder fits. */
	body.page-id-46 .wp-block-search:not(.hulltv-header-search) .wp-block-search__inside-wrapper {
		flex-wrap: wrap;
		gap: 10px;
	}

	body.page-id-46 .wp-block-search:not(.hulltv-header-search) .wp-block-search__input {
		flex-basis: 100%;
	}

	body.page-id-46 .wp-block-search:not(.hulltv-header-search) .wp-block-search__button {
		margin-left: 0;
		width: 100%;
	}

	/* Two cards per row halves the page length on phones. */
	body.page-id-46 .cablecast-shows--grid,
	body.home .cablecast-shows--grid {
		gap: 12px;
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	body.page-id-46 .cablecast-shows__content,
	body.home .cablecast-shows__content {
		padding: 8px;
	}

	body.page-id-46 .cablecast-shows__title,
	body.home .cablecast-shows__title {
		font-size: 15px;
	}

	body.page-id-85 .gpb-monochrome-section-large-video {
		padding-block: 2.5em !important;
	}

	body.page-id-85 .gpb-monochrome-section-large-video .gb-layout-columns-2 > .gb-layout-column-wrap {
		row-gap: 20px;
	}

	body.page-id-85 .gpb-monochrome-section-large-video .gb-layout-columns-2 .gb-block-layout-column-inner {
		padding: 18px;
	}
}

/* Schedule — a semantic list, not a table. The old theme used a two-column
   <table>, which is what collided on iPhone. A list stacks natively on narrow
   screens and becomes two columns only when there is room. */
.hulltv-schedule__day {
	margin: var(--wp--preset--spacing--50) 0 var(--wp--preset--spacing--20);
	padding-bottom: var(--wp--preset--spacing--10);
	border-bottom: 1px solid var(--wp--preset--color--rule, #e6e8ea);
}

.hulltv-schedule__list {
	list-style: none;
	margin: 0;
	padding: 0;
}

.hulltv-schedule__row {
	display: grid;
	/* Time column sizes to its content and never wraps; the title takes the
	   rest. No fixed width, so no font size can make them collide. */
	grid-template-columns: max-content 1fr;
	gap: 0 var(--wp--preset--spacing--30);
	align-items: baseline;
	padding: 0.7rem 0;
	border-bottom: 1px solid var(--wp--preset--color--rule, #e6e8ea);
}

.hulltv-schedule__time {
	white-space: nowrap;
	font-variant-numeric: tabular-nums;
	font-weight: 600;
	color: var(--wp--preset--color--muted, #5b6369);
}

.hulltv-schedule__title {
	overflow-wrap: break-word;
	word-break: normal;
	hyphens: none;
}

/* Narrow screens: stack. Removing the two-column constraint entirely means the
   collision in docs/bug-reports/ is structurally impossible. */
@media (max-width: 600px) {
	.hulltv-schedule__row {
		grid-template-columns: 1fr;
		gap: 0.15rem;
		padding: 0.6rem 0;
	}

	.hulltv-schedule__time {
		font-size: 0.9em;
	}

	/* 44px minimum tap target (WCAG 2.5.5). */
	.hulltv-schedule__title {
		display: block;
		min-height: 44px;
		line-height: 1.5;
		padding: 0.3rem 0;
	}
}

.hulltv-schedule__notice {
	padding: var(--wp--preset--spacing--30);
	background: #fff8e5;
	border-left: 4px solid #d98600;
}

/* -------------------------------------------------------------------------
 * Cablecast schedule table ([cablecast_schedule_table]).
 *
 * Reproduces the historical two-column /schedule/ layout. The time cell must
 * never wrap mid-value (the founding iPhone bug: word-break:break-all split
 * "12:00 am" into "12:0 / 0 am"). white-space:nowrap holds each time on one
 * line; the title cell wraps normally.
 * ---------------------------------------------------------------------- */
.cablecast-schedule-table {
	width: 100%;
	border-collapse: collapse;
}

.cablecast-schedule-table th {
	text-align: left;
	padding-top: var(--wp--preset--spacing--30, 1rem);
}

.cablecast-schedule-table__time {
	white-space: nowrap;
	word-break: normal;
	font-variant-numeric: tabular-nums;
	font-weight: 600;
	vertical-align: baseline;
	padding: 0.4rem var(--wp--preset--spacing--30, 1rem) 0.4rem 0;
	color: var(--wp--preset--color--muted, #5b6369);
}

.cablecast-schedule-table__title {
	overflow-wrap: break-word;
	word-break: normal;
	hyphens: none;
	vertical-align: baseline;
	padding: 0.4rem 0;
}

/* Mobile: 44px minimum tap target (WCAG 2.5.5) for the linked title. Block,
   not inline-block: an inline-block's baseline is its LAST line, which drops
   the time cell to the bottom of a wrapped title. */
@media (max-width: 600px) {
	.cablecast-schedule-table__title a {
		display: block;
		min-height: 44px;
		line-height: 1.5;
		padding: 0.5rem 0;
	}

	/* Badge follows the block-level link; tuck it under the title. */
	.cablecast-schedule-table__title .cablecast-schedule-table__badge {
		margin: -4px 0 8px;
	}
}
