/* George Dale - team stats card.
   Palette comes from gd-site-theme's :root custom properties (including --gd-loss).
   Each section wears ONE accent (--gd-sec) on its icon, bars and borders, and no
   two neighbouring sections share one. Label TEXT uses --gd-sec-text: the accent
   itself when it is yellow or orange, white when the accent is too dark to read
   as 11px text on the green (red, blue, purple). */

.gd-team-stats {
	margin: 3.5rem auto 0;
	max-width: 760px;
	text-align: left;
	font-size: 15px;
	line-height: 1.5;
	/* the whole card is one lit surface over the stadium; the smaller cards
	   inside it (.gd-ts-game, .gd-ts-player, .gd-ts-tile) sit inset on the
	   darker --gd-base and carry no glow of their own */
	background: var(--gd-surface);
	border: var(--gd-card-border);
	border-radius: 4px;
	padding: 2.4rem 2.2rem 1.6rem;
	box-shadow: var(--gd-glow);
}

/* ---- section heading rule -------------------------------------------------- */
.gd-ts-head { display: flex; align-items: center; gap: 14px; margin-bottom: 2rem; }
.gd-ts-rule { flex: 1; height: 1px; background: var(--gd-border); }
.gd-ts-title {
	font-family: "Playfair Display", Georgia, serif;
	font-size: 15px; letter-spacing: 0.06em; color: var(--gd-contrast-2);
	white-space: nowrap;
}

/* section accents, top to bottom */
.gd-ts-points     { --gd-sec: var(--gd-accent-yellow); --gd-sec-text: var(--gd-accent-yellow); --gd-sec-icon: var(--gd-football); }
.gd-ts-games      { --gd-sec: var(--gd-accent-red);    --gd-sec-text: var(--gd-contrast); }
.gd-ts-strip-wrap { --gd-sec: var(--gd-accent-orange); --gd-sec-text: var(--gd-accent-orange); --gd-sec-icon: var(--gd-helmet); }
.gd-ts-players    { --gd-sec: var(--gd-accent-purple); --gd-sec-text: var(--gd-contrast); }
.gd-ts-playoff    { --gd-sec: var(--gd-accent-blue);   --gd-sec-text: var(--gd-contrast); --gd-sec-icon: var(--gd-goalposts); }
.gd-ts-lineup     { --gd-sec: var(--gd-accent-yellow); --gd-sec-text: var(--gd-accent-yellow); --gd-sec-icon: var(--gd-jersey); }
.gd-ts-coach      { --gd-sec: var(--gd-accent-orange); --gd-sec-text: var(--gd-accent-orange); --gd-sec-icon: var(--gd-whistle); }
.gd-ts-venue      { --gd-sec: var(--gd-accent-red);    --gd-sec-text: var(--gd-contrast); --gd-sec-icon: var(--gd-yardline); }
.gd-ts-news       { --gd-sec: var(--gd-accent-blue);   --gd-sec-text: var(--gd-contrast); --gd-sec-icon: var(--gd-football); }

/* small-caps labels */
.gd-ts-label {
	color: var(--gd-sec-text, var(--gd-accent-yellow));
	text-transform: uppercase;
	letter-spacing: 0.15em;
	font-size: 11px;
	margin-bottom: 10px;
}

/* screen-reader-only headings */
/* one icon per section header, painted in that section's accent */
.gd-team-stats section > .gd-ts-label::before {
	content: "";
	display: inline-block;
	width: 14px; height: 14px;
	margin-right: 7px;
	vertical-align: -3px;
	background-color: var(--gd-sec);
	-webkit-mask: var(--gd-sec-icon, var(--gd-football)) center / contain no-repeat;
	        mask: var(--gd-sec-icon, var(--gd-football)) center / contain no-repeat;
}

.gd-ts-vh {
	position: absolute !important; width: 1px; height: 1px;
	margin: -1px; padding: 0; overflow: hidden;
	clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; border: 0;
}

.gd-ts-na { color: var(--gd-contrast-2); }
.gd-team-stats section { margin-bottom: 2.6rem; }

/* ---- hero ------------------------------------------------------------------ */
.gd-ts-hero { text-align: center; }
.gd-ts-record {
	font-family: "Playfair Display", Georgia, serif;
	font-size: 64px; line-height: 1; font-weight: 500;
	color: var(--gd-contrast); letter-spacing: 0.02em;
}
.gd-ts-standing {
	margin-top: 10px; color: var(--gd-contrast-2);
	letter-spacing: 0.08em; text-transform: uppercase; font-size: 12px;
}

/* ---- points bar ------------------------------------------------------------ */
.gd-ts-bar {
	position: relative; height: 10px; border-radius: 5px; overflow: hidden;
	background: var(--gd-accent-blue);
}
.gd-ts-bar-for { position: absolute; inset: 0 auto 0 0; background: var(--gd-accent-yellow); }
.gd-ts-bar-mid {
	position: absolute; left: 50%; top: -2px; bottom: -2px; width: 1px;
	background: var(--gd-base); opacity: 0.85;
}
.gd-ts-bar-ends {
	display: flex; justify-content: space-between;
	margin-top: 8px; font-size: 12px; color: var(--gd-contrast-2);
}
.gd-ts-bar-ends b { color: var(--gd-contrast); font-weight: 500; }

/* ---- last / next game ------------------------------------------------------ */
.gd-ts-games { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.gd-ts-game {
	background: var(--gd-base); border: 1px solid var(--gd-border);
	border-top: 2px solid var(--gd-sec);
	border-radius: 3px; padding: 16px 18px;
}
.gd-ts-game-body { display: flex; flex-direction: column; gap: 6px; }
.gd-ts-game-line { color: var(--gd-contrast); font-size: 17px; }
.gd-ts-game-meta { color: var(--gd-contrast-2); font-size: 12px; }
.gd-ts-pill {
	align-self: flex-start; display: inline-block;
	padding: 2px 9px; border-radius: 2px;
	font-size: 11px; font-weight: 600; letter-spacing: 0.1em;
	color: var(--gd-base); background: var(--gd-accent-yellow);   /* W */
}
.gd-ts-pill.is-l { background: var(--gd-loss); color: var(--gd-contrast); }
.gd-ts-pill.is-next { background: transparent; color: var(--gd-accent-2); border: 1px solid var(--gd-border); }

/* ---- schedule strip -------------------------------------------------------- */
.gd-ts-strip {
	display: flex; gap: 8px; list-style: none; margin: 0; padding: 0 0 8px;
	overflow-x: auto; scrollbar-width: thin;
}
.gd-ts-tile {
	flex: 0 0 auto; width: 60px; padding: 8px 4px; text-align: center;
	background: var(--gd-base); border: 1px solid var(--gd-border); border-radius: 3px;
	display: flex; flex-direction: column; gap: 3px; position: relative;
}
.gd-ts-tile.is-current { border-color: var(--gd-accent-orange); }
.gd-ts-tile-wk { font-size: 10px; color: var(--gd-contrast-2); letter-spacing: 0.06em; }
/* football bullet on each week marker; lit orange on the current week */
.gd-ts-tile-wk::before {
	content: "";
	display: inline-block;
	width: 8px; height: 8px;
	margin-right: 3px;
	vertical-align: -1px;
	background-color: currentColor;
	-webkit-mask: var(--gd-football) center / contain no-repeat;
	        mask: var(--gd-football) center / contain no-repeat;
}
.gd-ts-tile.is-current .gd-ts-tile-wk { color: var(--gd-accent-orange); }
.gd-ts-tile-opp { font-size: 12px; color: var(--gd-contrast); font-weight: 500; }
.gd-ts-tile-score { font-size: 11px; color: var(--gd-contrast-2); }
.gd-ts-dot {
	width: 5px; height: 5px; border-radius: 50%; margin: 2px auto 0; display: block;
}
.gd-ts-tile.is-win .gd-ts-dot { background: var(--gd-accent-yellow); }
.gd-ts-tile.is-loss .gd-ts-dot { background: var(--gd-loss); }

/* ---- leading players ------------------------------------------------------- */
.gd-ts-players { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
.gd-ts-player {
	background: var(--gd-base); border: 1px solid var(--gd-border);
	border-top: 2px solid var(--gd-sec);
	border-radius: 3px; padding: 16px 18px;
}
.gd-ts-player-name {
	font-family: "Playfair Display", Georgia, serif;
	font-size: 18px; color: var(--gd-contrast); line-height: 1.25;
}
.gd-ts-pos { font-family: inherit; font-size: 11px; color: var(--gd-contrast-2); letter-spacing: 0.08em; }
.gd-ts-player-stat { margin-top: 6px; font-size: 13px; color: var(--gd-contrast-2); }
.gd-ts-player-stat b { color: var(--gd-contrast); font-weight: 600; }

/* ---- playoff chances ------------------------------------------------------- */
.gd-ts-playoff-row { display: flex; align-items: center; gap: 16px; }
.gd-ts-playoff-pct {
	font-family: "Playfair Display", Georgia, serif;
	font-size: 30px; color: var(--gd-contrast); min-width: 78px;
}
.gd-ts-playoff-bar {
	flex: 1; height: 4px; border-radius: 2px; background: var(--gd-border); overflow: hidden;
}
.gd-ts-playoff-bar span { display: block; height: 100%; background: var(--gd-accent-blue); }
.gd-ts-src { margin-top: 8px; font-size: 11px; color: var(--gd-contrast-2); letter-spacing: 0.04em; }

/* ---- news ------------------------------------------------------------------ */
.gd-ts-news-list { list-style: none; margin: 0; padding: 0; }
.gd-ts-news-row {
	display: grid; grid-template-columns: 58px 1fr; gap: 4px 14px;
	padding: 12px 0; border-top: 1px solid var(--gd-border);
}
.gd-ts-news-row:first-child { border-top: 0; }
.gd-ts-news-date { font-size: 12px; color: var(--gd-contrast-2); padding-top: 2px; }
.gd-ts-news-link { color: var(--gd-contrast); text-decoration: none; }
.gd-ts-news-link:hover { color: var(--gd-accent-blue); text-decoration: underline; }
.gd-ts-news-desc { grid-column: 2; font-size: 12px; color: var(--gd-contrast-2); }

.gd-ts-foot {
	margin-top: 2.5rem; padding-top: 14px; border-top: 1px solid var(--gd-border);
	font-size: 11px; color: var(--gd-contrast-2); letter-spacing: 0.04em; text-align: center;
}

/* ---- narrow viewports ------------------------------------------------------ */
@media (max-width: 782px) {
	.gd-team-stats { padding: 1.6rem 1.1rem 1.2rem; }
	.gd-ts-games,
	.gd-ts-players { grid-template-columns: 1fr; }
	.gd-ts-record { font-size: 48px; }
}

/* ===== starting lineup ====================================================== */
.gd-ts-lineup-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.gd-ts-lineup-col .gd-ts-label { margin-bottom: 4px; }
.gd-ts-formation {
	font-size: 11px; color: var(--gd-contrast-2);
	letter-spacing: 0.06em; margin-bottom: 10px;
}
.gd-ts-lineup-list { list-style: none; margin: 0; padding: 0; }
.gd-ts-lineup-row {
	display: grid; grid-template-columns: 42px 1fr; gap: 10px;
	padding: 6px 0; border-top: 1px solid var(--gd-border); font-size: 14px;
}
.gd-ts-lineup-row:first-child { border-top: 0; }
.gd-ts-pos-code {
	color: var(--gd-accent-yellow); font-size: 11px; letter-spacing: 0.08em;
	padding-top: 3px; text-transform: uppercase;
}
.gd-ts-lineup-name { color: var(--gd-contrast); }
.gd-ts-inj-note { display: block; font-size: 11px; color: var(--gd-contrast-2); margin-top: 2px; }

/* injury badges: muted -> orange -> red -> deep loss red by severity */
.gd-ts-inj {
	display: inline-block; margin-left: 6px; padding: 1px 5px; border-radius: 2px;
	font-size: 10px; font-weight: 600; letter-spacing: 0.06em; vertical-align: 1px;
	cursor: help;
}
.gd-ts-inj.is-q  { background: var(--gd-accent-2); color: var(--gd-base); }
.gd-ts-inj.is-d  { background: var(--gd-accent-orange); color: var(--gd-base); }
.gd-ts-inj.is-o  { background: var(--gd-accent-red); color: var(--gd-contrast); }
.gd-ts-inj.is-ir { background: var(--gd-loss); color: var(--gd-contrast); }

/* ===== schedule tile popups ================================================= */
.gd-ts-tile { cursor: default; }
.gd-ts-tile:focus-visible { outline: 2px solid var(--gd-accent-yellow); outline-offset: 2px; }

.gd-ts-pop {
	display: none;
	position: fixed;           /* escapes the strip's horizontal overflow clipping */
	z-index: 200;
	width: 280px;
	max-width: 320px;
	box-sizing: border-box;
	padding: 16px;
	text-align: left;
	background: var(--gd-surface);
	border: 1px solid var(--gd-border);
	border-top: 2px solid var(--gd-accent-orange);
	border-radius: 2px;
	box-shadow: 0 14px 34px rgba(0, 0, 0, 0.55);
	font-size: 14px;
	line-height: 1.5;
	color: var(--gd-contrast);
	white-space: normal;
}
.gd-ts-pop.is-open { display: block; }

.gd-ts-pop-title {
	font-family: "Playfair Display", Georgia, serif;
	font-size: 18px; color: var(--gd-contrast); margin-bottom: 8px;
}
.gd-ts-pop-story { margin: 0; color: var(--gd-contrast); }
.gd-ts-pop-meta { color: var(--gd-contrast-2); font-size: 13px; margin-bottom: 10px; }
.gd-ts-pop-odds { list-style: none; margin: 0 0 6px; padding: 0; font-size: 13px; }
.gd-ts-pop-odds li { padding: 3px 0; color: var(--gd-contrast); }
.gd-ts-pop-odds b {
	display: inline-block; min-width: 88px;
	color: var(--gd-accent-orange); font-weight: 600;
	font-size: 11px; letter-spacing: 0.1em; text-transform: uppercase;
}
.gd-ts-pop-disclaimer { font-size: 11px; color: var(--gd-contrast-2); }

/* NEXT UP block, separated by a diamond ornament */
.gd-ts-pop-next { margin-top: 14px; padding-top: 14px; position: relative; }
.gd-ts-pop-next::before {
	content: "\25C6";
	position: absolute; top: -1px; left: 50%; transform: translateX(-50%);
	color: var(--gd-accent-orange); font-size: 9px; line-height: 1;
	background: var(--gd-surface); padding: 0 8px;
}
.gd-ts-pop-next { border-top: 1px solid var(--gd-border); }
.gd-ts-pop-next-label {
	display: block; color: var(--gd-accent-orange);
	font-size: 10px; letter-spacing: 0.15em; text-transform: uppercase; margin-bottom: 3px;
}
.gd-ts-pop-next-txt { color: var(--gd-contrast); font-size: 13px; }
.gd-ts-pop-bye {
	display: inline-block; margin-bottom: 6px; padding: 1px 6px;
	border: 1px solid var(--gd-border); border-radius: 2px;
	font-size: 10px; letter-spacing: 0.1em; color: var(--gd-contrast-2); text-transform: uppercase;
}

/* ===== narrow viewports ===================================================== */
@media (max-width: 782px) {
	.gd-ts-lineup-cols { grid-template-columns: 1fr; }

	/* tap-to-expand, presented as a bottom sheet: no clipping, thumb reachable */
	.gd-ts-pop.is-open {
		left: 16px !important;
		right: 16px;
		top: auto !important;
		bottom: 16px;
		width: auto;
		max-width: none;
	}
}

/* ===== player cards (sibling of the schedule-tile popup) ==================== */
.gd-ts-lineup-name.has-card { cursor: help; }
.gd-ts-lineup-name.has-card:hover { color: var(--gd-accent-yellow); }
.gd-ts-lineup-name.has-card:focus-visible { outline: 2px solid var(--gd-accent-yellow); outline-offset: 2px; }

.gd-ts-pcard { width: 320px; max-width: 360px; border-top-color: var(--gd-accent-yellow); }

.gd-ts-pcard-num {
	font-family: "Playfair Display", Georgia, serif;
	font-size: 22px; line-height: 1; margin-bottom: 4px;
}
.gd-ts-pcard-jersey { color: var(--gd-accent-yellow); }
.gd-ts-pcard-dot { color: var(--gd-contrast-2); }
.gd-ts-pcard-pos { color: var(--gd-contrast-2); font-size: 16px; letter-spacing: 0.06em; }
.gd-ts-pcard-name {
	font-family: "Playfair Display", Georgia, serif;
	font-size: 18px; color: var(--gd-contrast); line-height: 1.2;
}
.gd-ts-pcard-bio { color: var(--gd-contrast-2); font-size: 12px; margin-top: 3px; }

/* vitals: label VALUE pairs on one wrapped row, yellow diamond between */
.gd-ts-vitals {
	list-style: none; margin: 12px 0 0; padding: 12px 0 0;
	border-top: 1px solid var(--gd-border);
	display: flex; flex-wrap: wrap; gap: 4px 0; font-size: 12px;
}
.gd-ts-vitals li { display: inline-flex; align-items: baseline; gap: 5px; }
.gd-ts-vitals li + li::before {
	content: "\25C6"; color: var(--gd-accent-yellow);
	font-size: 6px; margin: 0 8px; position: relative; top: -2px;
}
.gd-ts-vk {
	color: var(--gd-accent-yellow); font-size: 9px;
	letter-spacing: 0.12em; text-transform: uppercase;
}
.gd-ts-vv { color: var(--gd-contrast); }

.gd-ts-pcard-stats {
	display: flex; flex-wrap: wrap; gap: 14px;
	margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--gd-border);
}
.gd-ts-stat { display: flex; flex-direction: column; gap: 2px; min-width: 46px; }
.gd-ts-stat-k {
	color: var(--gd-accent-yellow); font-size: 9px;
	letter-spacing: 0.12em; text-transform: uppercase;
}
.gd-ts-stat-v {
	font-family: "Playfair Display", Georgia, serif;
	font-size: 19px; color: var(--gd-contrast); line-height: 1;
}

.gd-ts-pcard-acc { margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--gd-border); }
.gd-ts-pcard-acc .gd-ts-label { margin-bottom: 4px; }
.gd-ts-acc-line { color: var(--gd-contrast); font-size: 12px; line-height: 1.45; }

.gd-ts-pcard-inj {
	display: flex; align-items: center; gap: 8px;
	margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--gd-border);
}
.gd-ts-pcard-inj .gd-ts-inj { margin-left: 0; cursor: default; }
.gd-ts-pcard-inj-txt { color: var(--gd-contrast-2); font-size: 12px; }

@media (max-width: 782px) {
	.gd-ts-pcard { width: auto; max-width: none; }
}

/* source timestamp beneath the FPI attribution (one step down from .gd-ts-src) */
.gd-ts-asof { margin-top: 2px; font-size: 10px; color: var(--gd-contrast-2); letter-spacing: 0.04em; }

/* ===== coaching + home stadium ============================================== */
/* the ornament itself is site.css's .wp-block-separator; this only sets its rhythm */
.gd-team-stats .gd-ts-sep { margin: 0 auto 2.6rem; }

.gd-ts-staff .gd-ts-label { font-size: 10px; margin-bottom: 4px; }
.gd-ts-staff-name,
.gd-ts-venue-name {
	font-family: "Playfair Display", Georgia, serif;
	font-size: 22px; color: var(--gd-contrast); line-height: 1.25;
}
.gd-ts-staff-detail,
.gd-ts-venue-detail { margin-top: 4px; font-size: 13px; color: var(--gd-contrast-2); }
