@charset "UTF-8";
/* Main CSS Document */

/*
green: #00bd4c
light green: #c8e5d4;
red: #e20000
*/

@import url('https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap');

/* Colour tokens (--tmb-*) live in styles/tokens.css, loaded before this file. */

html, body {
	overflow-x: hidden;
	height: 100%;
	scroll-behavior: smooth;
}

body {
	background: #fff;
	padding: 0;
	margin: 0;
	font-family: "Inter", sans-serif;
	font-optical-sizing: auto;
	font-weight: 300;
	font-style: normal;
}

.hidden { display: none;}

.header {
	display: block;
	margin: 0 auto;
	width: 100%;
	max-width: 100%;
	box-shadow: none;
	background-color: var(--tmb-site-header-bg);
	position: fixed;
	height: 70px!important;
	overflow: hidden;
	/* One step above .tmb-sport-bar (95). They don't currently overlap — the bar
	   sticks at top:70px, exactly this header's height — so this keeps the
	   "header is the topmost page chrome" invariant true by construction rather
	   than by that coincidence of geometry. */
	z-index: 96;
}


#top-spacer { height: 75px; }

.header .logo {
	position: absolute;
	top: 22px;
	right: 25px;
	height: 25px;
}

/* Refresh button: only in the Home Screen app, which has no browser reload.
   html.tmb-standalone is set by tmb-common.js, in <head>. */
.header .tmb-app-refresh {
	display: none;
	position: absolute;
	top: 17px;
	right: 15px;
	width: 36px;
	height: 36px;
	padding: 0;
	margin: 0 !important;
	border: 0;
	/* front.css paints every <button> grey with !important, hover too. */
	background-color: transparent !important;
	color: white;
	font-size: 16px;
	line-height: 36px;
	text-align: center;
	cursor: pointer;
	-webkit-tap-highlight-color: transparent;
}
.header .tmb-app-refresh:active { opacity: 0.6; }
.header .tmb-app-refresh.is-busy i { animation: tmb-app-refresh-spin 0.8s linear infinite; }
@keyframes tmb-app-refresh-spin { to { transform: rotate(360deg); } }
html.tmb-standalone .header .tmb-app-refresh { display: block; }
html.tmb-standalone .header .logo { right: 59px; }

#whosyourdaddy { max-width: 100%; margin-top: 15px; margin-bottom: 20px; }

/* ADMIN STYLES */
.grey { 
	background: linear-gradient(var(--tmb-gray-100), var(--tmb-gray-400)) no-repeat center center fixed; 
	-webkit-background-size: cover;
	-moz-background-size: cover;
	-o-background-size: cover;
	background-size: cover; 
}

.form-box { 
	background-color: #fff; 
	margin: 70px auto 0; 
	padding: 50px; 
	border: 1px solid var(--tmb-gray-400); 
	border-radius: 10px; 
	width: 100%;
}

#login-logo { 
	background: url("../../img/themoneyballer.svg"); 
	width: 215px; 
	height: 30px; 
	background-repeat: no-repeat; 
	margin: auto; 
}

.admin-wrapper { 
	padding-right: 25px; 
	padding-left: 25px; 
	font-size: 13px; 
}

.admin-wrapper p { 
	margin-bottom: .25rem !important;
}

.reschedule-mlb input, .reschedule-mlb select { 
	margin: 5px; 
}

.datetime { 
	width: 80px; 
}

.current { 
	font-weight: bold !important; 
}

.daily-results { 
	margin-bottom: 30px; 
}

p.rec { 
	height: 10px; 
}

span.rec { 
	display: inline-block; 
	width: 50%; 
	height: 10px; 
}

.game { 
	font-size: 16px !important; 
	color: color-mix(in srgb, var(--tmb-chart-blue), black 24%); 
}

input.seamless-input { 
	text-align: center; 
	width: 60px; 
	border: none; 
	background: transparent; 
	border-radius: 0px; 
	border-bottom: 1px solid var(--tmb-gray-300); 
	padding-bottom: 5px; 
	margin-right: 10px;
}

input.edited {
	border: 2px solid var(--tmb-brand);
} 

button { 
	margin-bottom: 3px !important; 
	background-color: var(--tmb-gray-300) !important; 
}

button.trends { 
	background-color: var(--tmb-blue) !important; 
	color: white; 
	font-weight: bold; 
}

button:hover, .bet_on { 
	background-color: var(--tmb-gray-400) !important;
}

button.cta { 
	font-size: 16px; 
}

.btn-secondary { 
	color: black !important;
}

.btn-block { 
	display: block; 
}

input.fade { 
	opacity: .1;
}

span.questioning { 
	opacity: .3; 
}

.btn-sm { 
	padding: 4px 8px; 
	font-size: 14px; 
}

.btn-xs { 
	padding: 4px 8px; 
	font-size: 13px; 
}

/* OVERVIEW */
h3 span.lines { 
	font-size: 60%;  
	margin-left: 15px; 
}

/* MAIN CONTENT */
a { 
	color: color-mix(in srgb, var(--tmb-chart-blue), black 24%); 
}

.main-content { 
	padding: 23px !important; 
	font-size: 14px; 
}

.blur { 
	text-shadow: 0 0 5px var(--tmb-gray-700); 
	color: transparent;
}

.unselectable { 
	-webkit-touch-callout: none;
	-webkit-user-select: none;
	-khtml-user-select: none;
	-moz-user-select: none;
	-ms-user-select: none;
	user-select: none; 
}

/* TEXT */
h1, h2, h3, h4, h5, h6 { 
	margin-bottom: 20px; 
} 

h1 {
	font-size: 2em; 
	margin-top: 0;
}

h3 {
	width: 100%; 
	text-align: left; 
	border-bottom: 1px solid var(--tmb-gray-400); 
	padding-bottom: 15px;
}

h4 {
	width: 100%; 
	text-align: center; 
	border-bottom: 1px solid var(--tmb-gray-400); 
	padding-bottom: 15px;
}

h5 { 
	width: 100%; 
	font-size: 1.5em; 
	padding-bottom: 11px;
	font-weight: bold; 
	background: linear-gradient(var(--tmb-gray-400),var(--tmb-gray-400)) bottom left no-repeat; 
	background-size: 33% 1px;
}

h5 a { 
	font-family: 'Montserrat', sans-serif !important; 
	font-weight: 600; 
}

h5 a:hover { 
	text-decoration: none;
}

h6 { 
	font-size: 1.2em; 
	width: 100%; 
	text-align: left; 
	border-bottom: 1px solid var(--tmb-gray-400); 
	padding-bottom: 15px; 
}

h7 { 
	font-size: 1.1em; 
	line-height: 40px; 
}

td.h7 {
	font-size: 1.2em; 
	line-height: 50px; 
} 

b, strong {
	font-weight: bold !important;
}

.line {
	border-bottom: 1px solid var(--tmb-gray-400); 
	width: 100% !important; 
	display: block;
}

.short-line { 
	border: none; 
	background: linear-gradient(var(--tmb-gray-400),var(--tmb-gray-400)) bottom left no-repeat; 
	background-size: 33% 1px;
}

ul.triangle {
	list-style: none;
}

ul.triangle li::before { 
	content: "";
	border-color: transparent var(--tmb-gray-900);
	border-style: solid;
	border-width: 0.35em 0 0.35em 0.45em;
	display: block;
	height: 0;
	width: 0;
	left: -1em;
	top: 0.9em;
	position: relative;
}

ul.green-dot {
	list-style: none;
	padding: 0;
	margin: 0;
}

ul.green-dot li {
	position: relative;
	padding-left: 20px;
}

ul.green-dot li::before {
	content: "";
	position: absolute; 
	left: 0; 
	top: 12px; 
	transform: translateY(-50%);
	width: 7px; 
	height: 7px; 
	background-color: var(--tmb-brand); 
	border-radius: 50%;
}

.alert {
	border: 1px solid var(--tmb-brand);
	margin: 9px;
	padding: 15px !important;
	color: var(--tmb-brand);
}

div.logo-container {
	background-color: var(--tmb-gray-100); 
	border-bottom: 1px solid var(--tmb-gray-400); 
	padding: 25px; 
	margin-top: 40px; 
	margin-bottom: 60px; 
	display: flex;
	justify-content: center;
	gap: 25px;
	flex-wrap: wrap;
}

div.logo-container img, div.logo-container span {
	display: block;
	height: 30px;
}

div.logo-container span {
	width: 100%;
	display: flex;
	justify-content: center;
	align-items: center;
	text-align: center;
}

/* Scraper Status Styles */
.scraper-status-col {
	font-size: 0.85rem;
}

.scraper-status-col h3 {
	margin-bottom: 1rem;
}

.scraper-item {
	display: flex;
	justify-content: space-between;
	align-items: center;
	padding: 0.35rem 0.5rem;
	margin-bottom: 0.35rem;
	border-radius: 4px;
	transition: background-color 0.2s;
}

.scraper-item:hover {
	background-color: var(--tmb-gray-100);
}

.scraper-name {
	flex: 1;
	font-weight: 500;
	color: var(--tmb-gray-700);
	text-decoration: none;
	margin-right: 0.5rem;
}

.scraper-name:hover {
	color: var(--tmb-blue);
	text-decoration: underline;
}

.scraper-time {
	font-size: 0.75rem;
	color: var(--tmb-gray-600);
	margin-right: 0.5rem;
	min-width: 45px;
	text-align: right;
}

.scraper-badge {
	font-size: 0.7rem;
	padding: 0.2rem 0.5rem;
	border-radius: 3px;
	min-width: 45px;
	text-align: center;
	white-space: nowrap;
	display: inline-block;
	font-weight: 600;
}

.badge-success {
	background-color: var(--tmb-green);
	color: white;
}

.badge-warning {
	background-color: var(--tmb-yellow);
	color: var(--tmb-gray-900);
}

.badge-danger {
	background-color: var(--tmb-red);
	color: white;
}

.badge-secondary {
	background-color: var(--tmb-gray-600);
	color: white;
}

.scraper-category {
	font-size: 0.8rem;
	font-weight: bold;
	color: var(--tmb-gray-600);
	margin-top: 1rem;
	margin-bottom: 0.5rem;
	padding-bottom: 0.25rem;
	border-bottom: 1px solid var(--tmb-gray-300);
}

.scraper-category:first-child {
	margin-top: 0;
}

.status-summary {
	margin-top: 1rem;
	padding-top: 1rem;
	border-top: 1px solid var(--tmb-gray-300);
}

.status-summary-counts {
	font-size: 0.8rem;
	color: var(--tmb-gray-600);
	margin-bottom: 0.5rem;
}

/* TABLES */
.heading {
	background-color: var(--tmb-gray-700) !important; 
	color: #fff; 
	font-weight: bold;
}

table tr td, table tr th { 
	vertical-align: middle !important; 
	text-align: center;
}

table tr th.data {
	width: 90px;
}

td.won {
	background-color: var(--tmb-good-1);
}

td.lost {
	background-color: var(--tmb-bad-8);
}

td.recommendations {
	text-align: left; 
	padding-left: 20px!important; 
	vertical-align: top !important; 
}

table.signals tr td, table.signals tr th { 
	padding-left: 25px; 
}

table.signals tr td { 
	padding-top: 25px; 
}

table.signals tr th p { 
	margin-top: 6px; 
	margin-bottom: 6px;
}

table.projections { 
	display: inline-block; 
	width: auto !important; 
}

table.projections tr td { 
	padding-right: 10px; 
}

table.projections tr { 
	background: white !important; 
	cursor: default; 
}

table.projections tr:hover { 
	background: white !important; 
}

table.left tr td, table.left tr th { 
	text-align: left; 
}

table.left tr td { 
	padding: 3px 8px !important; 
}

.rating { 
	display: inline-block; 
	height: 20px; 
	margin-top: 5px;
}

span.ratingnumber, span.ratingnum { 
	line-height: 0; 
	position: relative; 
	bottom: 6px; 
	left: 10px;
}

table.nohover tr, table.nohover tr:hover { 
	background-color: white !important; 
	cursor: default !important;  
}

.rankcolorgreen { 
	background-color: var(--tmb-brand) !important; 
}

.row_description { 
	width: 150px; 
}

/* General Table Styling */
table, tbody {
	width: 100% !important;
	border-collapse: collapse;
	font-size: 12px;
}

th, td {
	padding: 6px !important;
	text-align: left;
}

th {
	background-color: var(--tmb-gray-100);
	color: var(--tmb-gray-900);
	font-weight: bold;
	border-bottom: 2px solid var(--tmb-gray-300);
}

tr:nth-child(even) {
	background-color: var(--tmb-gray-100);
}

tr:hover {
	background-color: var(--tmb-gray-300);
	cursor: pointer;
}

tr.schedule_today td { 
	background-color: color-mix(in srgb, var(--tmb-yellow), white 67%); 
	color: var(--tmb-gray-700); 
}

table.splits td { 
	padding: 6px !important; 
}

/* Plans */
.plan-top { 
	border-radius: 20px 20px 0 0; 
	background-color: #fff; 
	border: none; 
	color: white; 
	padding: 10px; 
}

.plan-body { 
	border-radius: 20px; 
	padding: 30px; 
	border: 1px solid var(--tmb-gray-400);
	flex: 1 1 auto;
}

.popular-top {
	border-radius: 20px 20px 0 0; 
	background-color: var(--tmb-gray-900); 
	border: 1px solid var(--tmb-gray-900); 
	color: white; 
	text-align: center; 
	font-weight: bold; 
	padding: 10px; 
}

.popular-body { 
	border-radius: 0 0 20px 20px; 
	padding: 30px; 
	border: 1px solid var(--tmb-gray-400);
	flex: 1 1 auto;
}

.popular-body, .popular-top {
	box-shadow: 0px 4px 10px var(--tmb-black-20);
}

.plan-body a, .popular-body a { 
	text-decoration: none !important;  
}

/* Mobile Optimization */
@media (max-width: 768px) {
	table {
		overflow-x: auto;
	}
}

.divider { 
	border-left: 1px solid #000;
}

.dotdivider { 
	border-left: 1px dotted var(--tmb-gray-500);
}

.strongdivider { 
	border-left: 2px solid #000;
}

/* Rank colors */
.rankcolor1 { background-color: var(--tmb-good-1) !important; }
.rankcolor2 { background-color: var(--tmb-good-2) !important; }
.rankcolor3 { background-color: var(--tmb-good-3) !important; }
.rankcolor4 { background-color: var(--tmb-good-4) !important; }
.rankcolor5 { background-color: var(--tmb-good-5) !important; }
.rankcolor6 { background-color: var(--tmb-good-6) !important; }
.rankcolor7 { background-color: var(--tmb-good-7) !important; }
.rankcolor8 { background-color: var(--tmb-good-8) !important; }
.rankcolor9 { background-color: var(--tmb-bad-1) !important; }
.rankcolor10 { background-color: var(--tmb-bad-2) !important; }
.rankcolor11 { background-color: var(--tmb-bad-3) !important; }
.rankcolor12 { background-color: var(--tmb-bad-4) !important; }
.rankcolor13 { background-color: var(--tmb-bad-5) !important; }
.rankcolor14 { background-color: var(--tmb-bad-6) !important; }
.rankcolor15 { background-color: var(--tmb-bad-7) !important; }
.rankcolor16 { background-color: var(--tmb-bad-8) !important; }

.rightline { 
	border-right: 1px solid var(--tmb-gray-400); 
}

.leftline { 
	border-left: 1px solid var(--tmb-gray-400); 
}

.good { 
	background-color: var(--tmb-good-1) !important; 
}

.bad { 
	background-color: var(--tmb-bad-4) !important; 
}

.neutral { 
	background-color: var(--tmb-gray-300) !important; 
	color: var(--tmb-gray-600) !important; 
}

.neutral.activesit { 
	background-color: #fff !important; 
	color: var(--tmb-gray-600) !important; 
}

.darkline { 
	border-bottom: 1px solid #000; 
}

/* REPORTING PAGE */
.circle { 
	height: 7px; 
	width: 7px; 
	border-radius: 50%; 
	display: inline-block; 
	margin-right: 6px; 
	position: relative; 
	top: 0px; 
}

.circle.won { background-color: var(--tmb-brand); } 
.circle.lost { background-color: var(--tmb-bad-6); }
.circle.push { background-color: var(--tmb-gray-400); }
.circle.nobet { background-color: var(--tmb-gray-100); }

/* FOOTER */
footer, .footer {
	display: block;
	margin: 0 auto;
	width: 100%;
	max-width: 100%;
	box-shadow: none;
	background-color: var(--tmb-gray-300);
	position: fixed;
	bottom: 0;
	height: 40px!important;
	overflow: hidden;
	z-index: 100;
	padding-top: 10px;
}

footer p, .footer p {
	font-size: .8em;
	text-align: center;
}

/* Equal gaps between the footer links (Privacy / Terms / Admin) — the markup
   carries no spaces between them on purpose. */
footer p a, .footer p a {
	margin-left: 16px;
}

/* SITE FOOTER SITEMAP — normal-flow block rendered just above the fixed
   .footer bar, NOT part of it (see includes/footer-sitemap.php). Bottom
   padding clears the fixed 40px .footer so its last row is never covered. */
.site-footer-nav {
	display: flex;
	flex-wrap: wrap;
	gap: 24px;
	width: 100%;
	max-width: 100%;
	margin: 0 auto;
	padding: 24px 25px 60px;
	background-color: var(--tmb-gray-100);
	border-top: 1px solid var(--tmb-gray-300);
	box-sizing: border-box;
}
.site-footer-nav-col {
	flex: 1 1 140px;
	min-width: 140px;
}
.site-footer-nav-heading {
	font-size: .78em;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .03em;
	color: var(--tmb-gray-600);
	margin-bottom: 8px;
}
.site-footer-nav-list {
	list-style: none;
	margin: 0;
	padding: 0;
}
.site-footer-nav-list li {
	margin-bottom: 6px;
}
.site-footer-nav-list a {
	font-size: .8em;
	color: var(--tmb-gray-700);
	text-decoration: none;
}
.site-footer-nav-list a:hover {
	color: var(--tmb-gray-900);
	text-decoration: underline;
}
/* Responsible-gambling line: a full-width last row of the sitemap block. */
.site-footer-rg {
	flex: 1 1 100%;
	margin: 8px 0 0;
	padding-top: 12px;
	border-top: 1px solid var(--tmb-gray-300);
	font-size: .8em;
	color: var(--tmb-gray-700);
}
.site-footer-rg a {
	color: var(--tmb-gray-900);
	font-weight: 700;
}
@media (max-width: 767px) {
	.site-footer-nav-col {
		flex: 1 1 100%;
	}
}

/* 404 PAGE — matches the og-generate.php social-card branding (same
   texture-fade-to-solid background, same wordmark) so a mistyped/broken
   link still feels like part of the site, not a dead end. */
.tmb-404-hero {
	background-color: var(--tmb-brand-dark);
	padding: 100px 25px 80px;
	text-align: center;
	color: #fff;
}
.tmb-404-number {
	font-size: 7rem;
	font-weight: 800;
	color: var(--tmb-brand);
	line-height: 1;
	margin-bottom: 8px;
}
.tmb-404-headline {
	font-size: 2rem;
	font-weight: 700;
	color: #fff;
	margin: 0 0 12px;
}
.tmb-404-sub {
	font-size: 1rem;
	color: var(--tmb-good-1);
	max-width: 480px;
	margin: 0 auto 28px;
}
.tmb-404-btn {
	background-color: var(--tmb-brand);
	color: #fff;
	border: none;
	padding: 12px 32px;
	border-radius: 6px;
	font-weight: 600;
	text-decoration: none;
	display: inline-block;
}
.tmb-404-btn:hover {
	background-color: var(--tmb-green-700);
	color: #fff;
}
@media (max-width: 767px) {
	.tmb-404-hero {
		padding: 80px 20px 60px;
	}
	.tmb-404-number {
		font-size: 4.5rem;
	}
	.tmb-404-headline {
		font-size: 1.5rem;
	}
}

/* Desktop: 25px edge spacing (matches header hamburger/logo) */
/* Zero Bootstrap nesting so content-wrapper controls side spacing */
.content-wrapper > .container-fluid {
	padding-left: 0;
	padding-right: 0;
}
.content-wrapper > .container-fluid > .row {
	margin-left: 0;
	margin-right: 0;
}
.content-wrapper > .container-fluid > .row > [class*="col-"] {
	padding-left: 0;
	padding-right: 0;
}

/* Tablet styles */
@media (min-width: 768px) and (max-width: 1024px) {
	/* Add tablet-specific styles here if needed */
}

/* Mobile styles */
@media (max-width: 767px) {
	.header {
		height: 60px !important;
	}
	
	#top-spacer {
		height: 60px !important;
	}
    
    #whosyourdaddy { max-width: 300px; }

	.header .logo {
		top: 19px;
		right: 16px;
		height: 20px;
	}

	.header .tmb-app-refresh {
		top: 12px;
		right: 6px;
	}
	html.tmb-standalone .header .logo { right: 46px; }
	
	.mobile-hide {
		display: none;
	}

	/* Footer: flush left with 16px edge spacing on mobile so the Explore
	   tab (fixed bottom-right) never overlaps the copyright text */
	.footer p {
		text-align: left;
		padding-left: 16px;
	}

	/* Admin: 16px edge spacing on mobile (matches front-end) */
	.admin-wrapper {
		padding-left: 16px !important;
		padding-right: 16px !important;
	}
	.admin-wrapper > .row {
		margin-left: 0 !important;
		margin-right: 0 !important;
	}
	.admin-wrapper > .row > [class*="col-"] {
		padding-left: 0 !important;
		padding-right: 0 !important;
	}

	/* === GLOBAL MOBILE: buttons, inputs, layout === */

	/* Scale all form inputs and buttons */
	.form-control,
	.form-control-sm,
	select.form-control,
	input[type="text"].form-control,
	input[type="date"].form-control,
	input[type="search"].form-control,
	.btn {
		font-size: 0.75rem !important;
		padding: 0.3rem 0.35rem !important;
		height: auto !important;
	}
	.btn {
		white-space: nowrap;
	}

	/* Full-width content area */
	.content-wrapper {
		padding-left: 0 !important;
		padding-right: 0 !important;
		padding-top: 60px !important;
	}
	.content-wrapper > .container-fluid {
		padding-left: 0 !important;
		padding-right: 0 !important;
	}
	.content-wrapper > .container-fluid > .row {
		margin-left: 0 !important;
		margin-right: 0 !important;
	}
	.content-wrapper > .container-fluid > .row > [class*="col-"] {
		padding-left: 0 !important;
		padding-right: 0 !important;
	}

	/* Flush cards: no radius, no side borders, no gaps */
	.card {
		border-radius: 0 !important;
		border-left: none !important;
		border-right: none !important;
	}
	.card.mt-4 { margin-top: 0 !important; }
	.card.mt-2 { margin-top: 0 !important; }
}

/* ===== GLOBAL PILL-STYLE SELECTS ===== */
select.form-control,
select.form-select {
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    padding: 5px 34px 5px 14px;
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--tmb-gray-700);
    background-color: #fff;
    border: 1px solid var(--tmb-gray-300);
    border-radius: 20px;
    cursor: pointer;
    transition: all 0.2s ease;
    line-height: 1.4;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%23555'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 14px center;
    height: auto;
}

select.form-control:hover,
select.form-select:hover,
.tmb-ss:hover > select.form-control:not(:disabled),
.tmb-ss:hover > select.form-select:not(:disabled) {
    border-color: var(--tmb-blue);
    color: var(--tmb-blue);
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%23007bff'/%3E%3C/svg%3E");
}

select.form-control:focus,
select.form-select:focus,
.tmb-ss.is-open > select.form-control,
.tmb-ss.is-open > select.form-select {
    outline: none;
    border-color: var(--tmb-blue);
    color: var(--tmb-blue);
    box-shadow: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%23007bff'/%3E%3C/svg%3E");
}

@media (max-width: 767px) {
    select.form-control,
    select.form-select {
        font-size: 0.72rem;
        padding: 4px 28px 4px 10px;
        background-position: right 11px center;
    }
}

/* ===== SEARCH SELECT (TMB.searchSelect, tmb-common.js) =====
   A <select> wrapped in .tmb-ss: the select still shows the value, but ignores
   the pointer so a click reaches the wrapper, which opens .tmb-ss-panel (a
   search box over the list) instead of the native dropdown. The panel opens
   inside the select's own stacking context; in the sport bar that is 95, above
   page content (see the z-index scale below). */
.tmb-ss {
    display: block;
    position: relative;
    min-width: 0;
    cursor: pointer;
}
.tmb-ss:has(> select:disabled) { cursor: not-allowed; }
.tmb-ss > select { pointer-events: none; }
.tmb-ss-panel {
    position: absolute;
    top: calc(100% + 4px);
    left: 0;
    z-index: 1000;
    min-width: max(100%, 260px);
    width: max-content;
    max-width: min(480px, calc(100vw - 16px));
    background: #fff;
    border: 1px solid var(--tmb-gray-300);
    border-radius: 10px;
    box-shadow: 0 6px 18px var(--tmb-black-15);
    font-size: 0.8rem;
    font-weight: 400;
    text-align: left;
    cursor: default;
    overflow: hidden;
}
.tmb-ss-panel[hidden] { display: none; }
.tmb-ss-panel.is-above { top: auto; bottom: calc(100% + 4px); }
/* A touch screen's keyboard is up: pinned to the visible area above it
   (top, left, width and the list's height set by fit() in tmb-common.js). */
.tmb-ss-panel.is-sheet { position: fixed; bottom: auto; min-width: 0; max-width: none; }
.tmb-ss-input {
    display: block;
    width: calc(100% - 16px);
    margin: 8px;
    padding: 5px 12px;
    font-size: 0.8rem;
    color: var(--tmb-gray-900);
    background: var(--tmb-gray-100);
    border: 1px solid var(--tmb-gray-300);
    border-radius: 20px;
    outline: none;
}
.tmb-ss-input:focus { border-color: var(--tmb-blue); background: #fff; }
.tmb-ss-input::placeholder { color: var(--tmb-gray-500); }
.tmb-ss-list {
    position: relative; /* offsetTop of a row is measured from here */
    max-height: min(360px, 55vh);
    overflow-y: auto;
    overscroll-behavior: contain;
    margin: 0;
    padding: 0 0 6px;
    list-style: none;
}
.tmb-ss-option {
    display: flex;
    gap: 10px;
    padding: 6px 14px;
    color: var(--tmb-gray-900);
    line-height: 1.35;
    cursor: pointer;
}
.tmb-ss-option.is-active { background: var(--tmb-blue-50); }
.tmb-ss-option.is-current { font-weight: 600; color: var(--tmb-blue); }
.tmb-ss-option.is-disabled { color: var(--tmb-gray-500); cursor: default; }
.tmb-ss-aside {
    flex: 0 0 auto;
    min-width: 4.8rem;
    color: var(--tmb-gray-600);
    font-weight: 400;
    white-space: nowrap;
}
.tmb-ss-main { flex: 1 1 auto; }
.tmb-ss-option mark {
    padding: 0;
    color: inherit;
    font-weight: 700;
    background: var(--tmb-warning-bg-light);
}
.tmb-ss-group {
    padding: 8px 14px 3px;
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--tmb-gray-600);
}
.tmb-ss-empty { padding: 8px 14px; color: var(--tmb-gray-600); }
.tmb-ss-sep { height: 1px; margin: 5px 14px; background: var(--tmb-gray-300); }
@media (max-width: 767px) {
    .tmb-ss-panel { font-size: 0.85rem; }
    .tmb-ss-input { font-size: 16px; } /* under 16px, iOS zooms the page on focus */
    .tmb-ss-option { padding: 8px 12px; }
}

/* ===== GLOBAL PILL-TOGGLE SPORT SELECTORS =====
   Light-grey track with a sliding dark thumb behind the active button.
   The thumb position is set by /scripts/pill-toggle.js via CSS variables.
   Works for any .btn-group with .btn-primary / .btn-dark / .active marking
   the selected button. */
.btn-group {
    display: inline-flex !important;
    position: relative;
    background: var(--tmb-gray-300);
    border: 0;
    border-radius: 999px;
    padding: 3px;
    line-height: 1;
    --thumb-left: 0px;
    --thumb-width: 0px;
    --thumb-anim: left 180ms ease-out, width 180ms ease-out;
}
/* Sliding thumb */
.btn-group::before {
    content: '';
    position: absolute;
    top: 3px; bottom: 3px;
    left: var(--thumb-left);
    width: var(--thumb-width);
    background: var(--tmb-gray-700);
    border-radius: 999px;
    transition: var(--thumb-anim);
    z-index: 0;
    pointer-events: none;
}
/* Suppress thumb on first paint until JS measures the active button */
.btn-group:not(.pill-ready)::before { display: none; }

.btn-group .btn,
.btn-group .btn:first-child,
.btn-group .btn:last-child {
    position: relative;
    z-index: 1;
    background: transparent !important;
    color: var(--tmb-gray-700) !important;
    border: 0 !important;
    border-radius: 999px !important;
    margin: 0 !important;
    padding: 5px 14px;
    font-size: 12.5px;
    font-weight: 500;
    line-height: 1.2;
    cursor: pointer;
    transition: color 180ms ease-out;
    box-shadow: none !important;
}
.btn-group .btn:hover {
    color: var(--tmb-gray-900) !important;
}
/* Active button: white text — the thumb provides the dark background.
   `.pill-flash-active` is added by pill-toggle.js when a tab is clicked but
   the page hasn't navigated yet, so the text color matches the sliding
   thumb instead of staying dark-on-dark for 180ms. */
.btn-group .btn.btn-primary,
.btn-group .btn.btn-primary:first-child,
.btn-group .btn.btn-primary:last-child,
.btn-group .btn.btn-primary:hover,
.btn-group .btn.btn-dark,
.btn-group .btn.btn-dark:hover,
.btn-group .btn.active,
.btn-group .btn.active:hover,
.btn-group .btn.pill-flash-active,
.btn-group .btn.pill-flash-active:hover {
    color: #fff !important;
    background: transparent !important;
    border: 0 !important;
}
/* Outgoing active button while the thumb slides away — fade text back to dark */
.btn-group .btn.pill-flash-inactive,
.btn-group .btn.pill-flash-inactive:hover {
    color: var(--tmb-gray-700) !important;
}
/* Disabled buttons stay readable */
.btn-group .btn:disabled,
.btn-group .btn.disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

/* ===== GLOBAL PILL-STYLE FORM ROWS ===== */
.form-row {
    margin-left: 0;
    margin-right: 0;
}

.form-row > .form-group {
    padding-left: 0;
    padding-right: 0;
}

.form-row .form-group .form-control,
.form-row .form-group .btn {
    border-radius: 0;
}

/* Single item in a row gets full pill */
.form-row .form-group:first-child:last-child .form-control,
.form-row .form-group:first-child:last-child .btn {
    border-radius: 20px;
}

/* First item: rounded left */
.form-row .form-group:first-child .form-control,
.form-row .form-group:first-child .btn {
    border-radius: 20px 0 0 20px;
}

/* Last item: rounded right */
.form-row .form-group:last-child .form-control,
.form-row .form-group:last-child .btn {
    border-radius: 0 20px 20px 0;
}

/* Single item override (must come after first/last) */
.form-row .form-group:only-child .form-control,
.form-row .form-group:only-child .btn {
    border-radius: 20px;
}

/* All form-control inputs: pill styling */
.form-control {
    border-radius: 20px;
}

/* THE SMALL PILL (Zach, 2026-10-23): the site's one small button and toggle for
   a heading or a control row (Tour, Customize, a view switch, "+ Add",
   Insights). 26px, 12px, white with a grey edge; ON (a toggle's chosen one:
   .active, or aria-pressed="true") is --tmb-switch-on, every switch's ON. An
   icon sits 6px from its text: write <i></i><span>Text</span>, no space.
   The !important beat `button { … !important }` at the top of this file, and
   the class is written twice so it also beats a page's own `.page button
   { background: transparent !important }` reset (schedule, market ratings).
   A row of them: .tmb-pills (6px apart). Not for a page's own big filter row,
   a primary action, a tab bar or an on/off switch. */
.tmb-pill.tmb-pill {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    margin-bottom: 0 !important;
    padding: 3px 11px;
    min-height: 26px;
    font-size: 12px;
    font-weight: 500;
    line-height: 1;
    color: var(--tmb-gray-900) !important;
    background-color: #fff !important;
    border: 1px solid var(--tmb-gray-400);
    border-radius: 999px;
    box-shadow: none !important;
    cursor: pointer;
    text-decoration: none !important;
    white-space: nowrap;
    vertical-align: middle;
}
.tmb-pill.tmb-pill:hover { border-color: var(--tmb-blue); background-color: #fff !important; }
.tmb-pill:focus-visible { outline: 2px solid var(--tmb-blue); outline-offset: 1px; }
.tmb-pill i { font-size: 10px; line-height: 1; }
.tmb-pill.tmb-pill.active, .tmb-pill.tmb-pill[aria-pressed="true"],
.tmb-pill.tmb-pill.active:hover, .tmb-pill.tmb-pill[aria-pressed="true"]:hover {
    background-color: var(--tmb-switch-on) !important;
    border-color: var(--tmb-switch-on);
    color: #fff !important;
}
.tmb-pill:disabled, .tmb-pill.disabled { opacity: .5; cursor: default; }
.tmb-pills { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 6px; }

/* Text inputs: match pill styling */
input[type="text"].form-control {
    font-size: 0.8rem;
    font-weight: 500;
    color: var(--tmb-gray-700);
    border: 1px solid var(--tmb-gray-300);
    transition: all 0.2s ease;
    height: auto;
    padding: 5px 14px;
    line-height: 1.4;
}

input[type="text"].form-control:focus {
    border-color: var(--tmb-blue);
    box-shadow: none;
}

/* Pill-style standalone buttons */
.btn {
    border-radius: 20px;
    font-size: 0.8rem;
    font-weight: 600;
    padding: 5px 16px;
    line-height: 1.4;
}

/* ===== GLOBAL PILL-STYLE BADGES ===== */
.badge {
    border-radius: 20px;
    padding: 4px 10px;
    font-weight: 600;
    font-size: 0.7rem;
    letter-spacing: 0.01em;
}

/* ========================================
   SPORT SELECTOR BAR (shared) — the shadowed section that holds the sport
   selector (+ page controls) just below the sticky site header. Single source
   of truth; applied via class="tmb-sport-bar" on each sidebar page's controls
   row. Section look only (bg / shadow / sticky / full-width) — each page keeps
   its own inner flex/row layout.
   ======================================== */
.tmb-sport-bar {
    background-color: var(--tmb-gray-100);
    padding: 1rem 25px;
    margin-top: -20px;
    margin-bottom: 1rem;
    width: 100vw;
    margin-left: calc(-50vw + 50%);
    margin-right: calc(-50vw + 50%);
    box-shadow: 0 4px 8px var(--tmb-black-10);
    position: sticky;
    top: 70px;
    /* ---- TMB layer scale (see the block comment below) ----
       95 = page chrome. Was 9, which lost to ordinary page CONTENT: this is a
       sticky stacking context, so it also caps the nav dropdown rendered inside
       it, and any content above 9 painted straight through that open menu
       (schedule-grid.css frozen table headers are z-index 10). 95 clears every
       structural page element (highest was a coachmark at 90) while staying
       below the drawer/footer/modal band, so user-opened overlays still cover
       the bar exactly as before. */
    z-index: 95;
    overflow: visible;
}
@media (max-width: 767px) {
    .tmb-sport-bar { padding: 0.75rem 15px; top: 60px; }
    .tmb-sport-bar .btn-group { padding-left: 0; }
}

/* ========================================
   Z-INDEX LAYER SCALE
   ----------------------------------------
   Ad-hoc z-indexes across the page stylesheets kept colliding with the nav.
   The bands below are the contract; stay inside them.

     0  - 90   PAGE CONTENT — tables, sticky/frozen table headers, lock
                overlays, coachmarks. NOTHING structural may exceed 90, or it
                paints over the sport bar and through its open dropdown.
     95        .tmb-sport-bar (sticky page chrome)
     96        .header (fixed site chrome)
     99 - 100  #sidebarMenu / #sbFlyout / .footer
     1000+     user-opened overlays: in-content menus, popovers, tooltips,
                modals. Deliberately ABOVE the bar — these are transient and
                user-initiated, so covering the nav is correct for them.

   The bar is `position: sticky` WITH a z-index, i.e. its own stacking context,
   so anything rendered inside it (the breadcrumb dropdown) is capped at the
   bar's own level no matter what z-index it asks for. That is why content
   sitting above the bar hides the whole menu, not just part of it.

   Where a page can't respect this (a widget reusing a whole page's stylesheet,
   e.g. /my-dash/), give that content region its own stacking context instead —
   see .dash-rows in my-dash.css.
   ======================================== */

/* On-page nav breadcrumb (sport-first nav, render_page_selector()):
   SPORT > PAGE, rendered as plain text rather than buttons so it reads as
   context/wayfinding and doesn't compete with each page's real controls
   (filters, search, date pickers) sitting in the same sticky bar.
   Both halves are .tmb-nav-selector; the sport/page classes are per-half tweaks. */
.tmb-nav-breadcrumb {
    display: inline-flex;
    align-items: center;
    gap: 0.15rem;
    flex-wrap: wrap;
}

.tmb-nav-sep {
    color: var(--tmb-gray-400);
    font-size: 18px;
    line-height: 1;
    user-select: none;
    margin: 0 0.1rem;
}

/* front.css sets a blanket `button { background-color: #edeced !important;
   margin-bottom: 3px !important }`, so a text-styled button has to shout it down. */
.tmb-nav-toggle {
    background: none !important;
    background-color: transparent !important;
    border: 0;
    margin: 0 !important;
    padding: 2px 4px;
    font-size: 15px;
    font-weight: 600;
    line-height: 1.4;
    color: var(--tmb-gray-600);
    cursor: pointer;
    border-radius: 4px;
    /* Wrap the breadcrumb between its halves if it must, never mid-label —
       "Matchup / Pages" split across two lines reads as two crumbs. */
    white-space: nowrap;
    transition: color 0.15s ease, background-color 0.15s ease;
}

/* Sport first, page second — the page is where you are, so it carries the
   stronger colour and the sport stays supporting context. */
.tmb-page-selector .tmb-nav-toggle {
    color: var(--tmb-gray-900);
}

.tmb-nav-toggle:hover,
.tmb-nav-toggle:focus,
.tmb-nav-selector:hover .tmb-nav-toggle {
    background-color: color-mix(in srgb, var(--tmb-blue-alt) 16%, transparent) !important;
    color: var(--tmb-blue-alt-hover);
    outline: none;
}

.tmb-nav-caret {
    display: inline-block;
    margin-left: 5px;
    vertical-align: 2px;
    border-top: 4px solid currentColor;
    border-right: 3.5px solid transparent;
    border-left: 3.5px solid transparent;
    opacity: 0.55;
    transition: opacity 0.15s ease;
}

.tmb-nav-toggle:hover .tmb-nav-caret,
.tmb-nav-selector:hover .tmb-nav-caret {
    opacity: 1;
}

/* Item text sits 24px in from the left and right edges (Bootstrap's
   .dropdown-item padding); the menu adds 10px of its own top/bottom padding,
   which with the item's 4px lands the first and last rows ~14px from the
   edge — half the horizontal inset, which reads better than matching it
   exactly on a list this tall. A long page list can outgrow a short viewport,
   so let it scroll rather than run off the bottom of the sticky bar.

   margin-top: 0 matters for the hover behaviour below: Bootstrap's default
   .125rem gap sits between the toggle and the menu, and crossing it with the
   mouse would close the menu mid-travel. */
.tmb-nav-selector .dropdown-menu {
    margin-top: 0;
    padding-top: 10px;
    padding-bottom: 10px;
    max-height: 70vh;
    overflow-y: auto;
    background-color: var(--tmb-white-90);
    -webkit-backdrop-filter: blur(10px);
    backdrop-filter: blur(10px);
    border: 1px solid var(--tmb-black-10);
    box-shadow: 0 6px 20px var(--tmb-black-10);
}

/* Bootstrap's own item hover is #e9ecef — barely visible against a translucent
   white panel. Use the same blue wash as the crumbs, dark enough to track with
   the cursor at a glance. */
/* One saved dashboard, listed under its "My Dashboards" parent in the page
   dropdown (see render_page_selector). Indented so the parent/child relation
   reads without needing a second nested menu. */
.tmb-nav-selector .dropdown-item.tmb-nav-subitem {
    padding-left: 2rem;
    font-size: 0.92em;
}

.tmb-nav-selector .dropdown-item:hover,
.tmb-nav-selector .dropdown-item:focus {
    background-color: color-mix(in srgb, var(--tmb-blue-alt) 16%, transparent);
    color: var(--tmb-blue-alt-hover);
}

/* Hover-to-open, but only where hovering is real — on touch the menu opens
   from the button's own click handler instead, which a hover rule would fight.
   :focus-within keeps it keyboard-reachable. */
@media (hover: hover) and (pointer: fine) {
    .tmb-nav-selector:hover .dropdown-menu,
    .tmb-nav-selector:focus-within .dropdown-menu {
        display: block;
    }
}

/* Shared container-query root — wraps a page's own reused body markup (see
   each sport-scoped page's *-body.php include) so its "mobile" @container
   rules respond to the ELEMENT'S own width, not the viewport. On the real
   standalone page this element is effectively full-viewport-width, so
   behavior there is unchanged from the old @media rules; on a /my-dash/
   widget it tracks that widget's actual (possibly narrow) column width,
   which is the whole point — see market-ratings.css/schedule-grid.css/etc.
   for the @container blocks that key off this. */
.tmb-cq-root {
    container-type: inline-size;
}

/* ============================================================================
   PAGE BODY under the fixed site header
   A page opts in with class="content-wrapper tmb-page" and sets only the
   numbers that differ, in its own stylesheet:
       .content-wrapper { --page-top: 75px; --page-top-mobile: 80px; }
   Defaults: 90px on desktop, 60px on mobile. (The matchup family keeps its
   own rule in layout-matchup.css.)
   ============================================================================ */
.content-wrapper.tmb-page {
    margin-left: 0;
    padding: 20px 25px;
    padding-top: var(--page-top, 90px) !important;
}
@media (max-width: 767px) {
    .content-wrapper.tmb-page {
        padding-top: var(--page-top-mobile, 60px) !important;
    }
}

/* ============================================================================
   INFO TOOLTIP — <span class="info-tooltip">ⓘ<span class="tooltip-text">…</span></span>
   One definition for every page. A page stylesheet may override a property
   (Market Ratings uses a smaller font), never re-declare the whole thing.
   ============================================================================ */
.info-tooltip {
    position: relative;
    display: inline-block;
}
.info-tooltip .tooltip-text {
    display: none;
    width: auto;
    max-width: 350px;
    background-color: var(--tmb-gray-900);
    color: #fff;
    text-align: left;
    border-radius: 6px;
    padding: 8px 10px;
    position: absolute;
    z-index: 1000;
    top: 125%;
    left: 50%;
    margin-left: -95px;
    opacity: 0;
    font-size: 0.875rem;
    font-weight: normal;
    line-height: 1.4;
    pointer-events: none;
    transition: opacity 0.2s;
}
.info-tooltip:hover .tooltip-text {
    display: block;
    opacity: 1;
}
.info-tooltip .tooltip-text.tooltip-wide {
    width: 350px;
    white-space: normal;
}
/* On a phone the tooltip becomes a sheet pinned above the bottom bar, so it
   can never run off the side of the screen. */
@media (max-width: 768px) {
    .info-tooltip .tooltip-text {
        position: fixed;
        left: 50% !important;
        top: auto !important;
        bottom: 50px;
        transform: translateX(-50%);
        margin-left: 0 !important;
        width: 90vw;
        max-width: 350px;
        z-index: 9999;
    }
}

/* Bootstrap's switches (custom-switch) are ON in the site's switch green, never Bootstrap's blue
   (Zach, 2026-10-17; the alert page's green). Same selectors as Bootstrap's, loaded after it. */
.custom-switch .custom-control-input:checked ~ .custom-control-label::before {
    background-color: var(--tmb-switch-on);
    border-color: var(--tmb-switch-on);
}
.custom-switch .custom-control-input:focus ~ .custom-control-label::before {
    box-shadow: 0 0 0 0.2rem color-mix(in srgb, var(--tmb-switch-on) 25%, transparent);
}
.custom-switch .custom-control-input:focus:not(:checked) ~ .custom-control-label::before {
    border-color: color-mix(in srgb, var(--tmb-switch-on) 50%, white);
}
.custom-switch .custom-control-input:not(:disabled):active ~ .custom-control-label::before {
    background-color: color-mix(in srgb, var(--tmb-switch-on) 25%, white);
    border-color: color-mix(in srgb, var(--tmb-switch-on) 25%, white);
}
