Smoky Shores Radio

smokyshores.radio
Websites

<!DOCTYPE html>

llms.txt
<title>Smoky Shores Radio | Music every Saturday at 4pm EDT on 60 North Radio</title>
<meta name="description" content="Smoky Shores Radio — born in the foothills of the Great Smoky Mountains, raised on the Shetland Islands. A one-hour music show every Saturday at 4pm EDT on 60 North Radio. Merch profits benefit St. Jude.">
<link rel="canonical" href="https://smokyshores.radio/">

<!-- Open Graph -->
<meta property="og:site_name" content="Smoky Shores Radio">
<meta property="og:title" content="Smoky Shores Radio | Every Saturday at 4pm EDT">
<meta property="og:description" content="A one-hour music show blending dream pop, surf rock, indie and more — every Saturday at 4pm EDT on 60 North Radio.">
<meta property="og:type" content="website">
<meta property="og:url" content="https://smokyshores.radio/">
<meta property="og:image" content="https://global-cdn.smokyshores.radio/assets/images/image04.png">
<meta property="og:image:width" content="622">
<meta property="og:image:height" content="622">
<meta property="og:image:alt" content="Smoky Shores Radio logo">
<meta property="og:locale" content="en_US">

<!-- Twitter / X -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Smoky Shores Radio | Every Saturday at 4pm EDT">
<meta name="twitter:description" content="A one-hour music show every Saturday at 4pm EDT on 60 North Radio. Merch profits benefit St. Jude.">
<meta name="twitter:image" content="https://global-cdn.smokyshores.radio/assets/images/image04.png">
<meta name="twitter:image:alt" content="Smoky Shores Radio logo">

<link rel="icon" type="image/png" href="https://global-cdn.smokyshores.radio/assets/images/favicon.png">
<link rel="apple-touch-icon" href="https://global-cdn.smokyshores.radio/assets/images/apple-touch-icon.png">

<link rel="preconnect" href="https://global-cdn.smokyshores.radio" crossorigin>

<!-- Fonts self-hosted on the CDN (@font-face lives in main.css). Preload the
	 weights used by the first webfont text encountered: SUSE 300 (eyebrow),
	 SUSE 400 (prose), Titan One (display heading). SUSE 700 is buttons-only,
	 much lower, so it is not preloaded. -->
<link rel="preload" href="https://global-cdn.smokyshores.radio/assets/fonts/titan-one-400.woff2" as="font" type="font/woff2" crossorigin>
<link rel="preload" href="https://global-cdn.smokyshores.radio/assets/fonts/suse-400.woff2" as="font" type="font/woff2" crossorigin>
<link rel="preload" href="https://global-cdn.smokyshores.radio/assets/fonts/suse-300.woff2" as="font" type="font/woff2" crossorigin>

<!-- Preload the LCP image. PageSpeed measures the hero photo (#image06) as LCP,
	 so it is preloaded with high priority. If the report names the logo instead,
	 swap this line back to images/image04.png. -->
<link rel="preload" href="https://global-cdn.smokyshores.radio/assets/images/image06.jpg" as="image" fetchpriority="high">

<!-- main.css inlined to remove the render-blocking request. The file on disk
	 stays the single source of truth; readfile() emits it at request time. -->
<style>/* Smoky Shores Radio — main.css (cleaned & optimized) */

/* ---------- Fonts (self-hosted on the CDN) ---------- Like the bg image in body::before, these URLs are hardcoded and are NOT covered by the SMOKYSHORES_CDN constant — a full CDN move means editing these url()s too. font-display: swap mirrors the old Google "&display=swap". / @font-face { font-family: 'SUSE'; font-style: normal; font-weight: 300; font-display: swap; src: url('https://global-cdn.smokyshores.radio/assets/fonts/suse-300.woff2') format('woff2'); unicode-range: U+0000-00FF, U+2013, U+2014, U+2018, U+2019, U+201C, U+201D, U+2026, U+2122; } @font-face { font-family: 'SUSE'; font-style: normal; font-weight: 400; font-display: swap; src: url('https://global-cdn.smokyshores.radio/assets/fonts/suse-400.woff2') format('woff2'); unicode-range: U+0000-00FF, U+2013, U+2014, U+2018, U+2019, U+201C, U+201D, U+2026, U+2122; } @font-face { font-family: 'SUSE'; font-style: normal; font-weight: 700; / Buttons-only and below the fold — load off the critical path. The button labels render in fallback on a cold first visit, then SUSE on every visit after (font is cached). Above-the-fold weights stay on swap. */ font-display: optional; src: url('https://global-cdn.smokyshores.radio/assets/fonts/suse-700.woff2') format('woff2'); unicode-range: U+0000-00FF, U+2013, U+2014, U+2018, U+2019, U+201C, U+201D, U+2026, U+2122; } @font-face { font-family: 'Titan One'; font-style: normal; font-weight: 400; font-display: swap; src: url('https://global-cdn.smokyshores.radio/assets/fonts/titan-one-400.woff2') format('woff2'); unicode-range: U+0000-00FF, U+2013, U+2014, U+2018, U+2019, U+201C, U+201D, U+2026, U+2122; }

/* ---------- Reset (trimmed to what's used) ---------- */ *, *::before, *::after { box-sizing: border-box; } html, body, div, span, h1, h2, h3, p, a, img, strong, em, ul, li, hr, header, footer, section, main { margin: 0; padding: 0; border: 0; font: inherit; vertical-align: baseline; } ul { list-style: none; } img { max-width: 100%; } a { color: inherit; text-decoration: underline; transition: color .25s ease; }

/* ---------- Root ---------- */ :root { --viewport-height: 100vh; --flex-alignment: center; }

html { font-size: 18pt; scroll-behavior: smooth; -webkit-text-size-adjust: none; }

body { line-height: 1; min-height: var(--viewport-height); min-width: 320px; overflow-x: hidden; word-wrap: break-word; }

/* Fixed background */ body::before { content: ''; display: block; position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; z-index: 0; pointer-events: none; background: linear-gradient(rgba(6, 8, 16, .45), rgba(6, 8, 16, .45)), #1915b3 url('https://global-cdn.smokyshores.radio/assets/images/bg.jpg') center / cover repeat; }

strong { font-weight: 700; } em { font-style: italic; }

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

/* ---------- Layout ---------- */ #wrapper { position: relative; z-index: 2; display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: var(--viewport-height); overflow: hidden; -webkit-overflow-scrolling: touch; }

#main { position: relative; z-index: 1; display: flex; align-items: center; justify-content: center; max-width: 100%; text-align: center; }

#main > .inner { --padding-horizontal: 4rem; --padding-vertical: 8rem; --spacing: 3rem; --width: 48rem; position: relative; z-index: 1; width: var(--width); max-width: 100%; padding: var(--padding-vertical) var(--padding-horizontal); }

#main > .inner > * { margin-top: var(--spacing); margin-bottom: var(--spacing); } #main > .inner > :first-child { margin-top: 0 !important; } #main > .inner > :last-child { margin-bottom: 0 !important; }

/* ---------- Containers / sections ---------- */ .container { position: relative; display: flex; width: 100%; align-items: center; justify-content: center; } .container:not(:first-child) { margin-top: 8rem !important; } .container:not(:last-child) { margin-bottom: 7.875rem !important; }

.container > .inner { position: relative; width: 100%; max-width: 100%; text-align: center; } .container > .inner > * { margin-top: var(--spacing); margin-bottom: var(--spacing); } .container > .inner > :first-child { margin-top: 0 !important; } .container > .inner > :last-child { margin-bottom: 0 !important; }

/* in-page anchor offset */ [id] { scroll-margin-top: 2rem; } .anchor { display: block; position: relative; top: -4rem; height: 0; }

/* ---------- Images ---------- */ .image { display: block; position: relative; line-height: 0; max-width: 100%; } .image .frame { display: inline-block; width: 100%; max-width: 100%; overflow: hidden; vertical-align: top; backface-visibility: hidden; } .image .frame img { width: 100%; height: auto; vertical-align: top; }

/* Logo */ #image04 .frame { width: 622px; max-width: 100%; border-radius: 1.125rem; } #image04 img { user-select: none; -webkit-touch-callout: none; }

/* Photos (lazy, colour-block placeholder, fade in) */ .photo:not(:first-child) { margin-top: 8rem !important; } .photo:not(:last-child) { margin-bottom: 8rem !important; } .photo .frame { width: auto; border: 1px solid #fff; border-radius: 1.125rem; background-color: var(--ph, #1d1d1d); } .photo .frame img { display: block; border-radius: calc(1.125rem - 1px); opacity: 0; transition: opacity .6s ease; user-select: none; -webkit-touch-callout: none; } .photo .frame img.loaded { opacity: 1; }

/* Reserve each image's box before it loads (matches the width/height attrs in the HTML). With width:100% + height:auto already set, an explicit aspect-ratio guarantees the layout space so loading never shifts the content below. */ #image06 .frame img { aspect-ratio: 1675 / 1332; } #image01 .frame img { aspect-ratio: 2000 / 1333; } #image02 .frame img { aspect-ratio: 1842 / 1330; } #image03 .frame img { aspect-ratio: 2000 / 1500; } #image05 .frame img { aspect-ratio: 2000 / 1333; }

/* ---------- Icons ---------- */ .icons { display: flex; flex-wrap: wrap; gap: 1.5rem; justify-content: var(--flex-alignment); font-size: 1.625em; padding: 0; } .icons li { position: relative; } .icons li a { display: flex; align-items: center; justify-content: center; width: 2em; height: 2em; border-radius: 1.125rem; background-color: #fff; transition: transform .25s ease; } .icons li a svg { display: block; width: 60%; height: 60%; fill: #000; } .icons li a:hover { transform: translateY(-20%); }

/* ---------- Buttons ---------- */ .buttons { display: flex; flex-wrap: wrap; gap: .75rem; justify-content: var(--flex-alignment); padding: 0; } .buttons li { max-width: 100%; } .buttons li a { position: relative; display: inline-flex; align-items: center; justify-content: center; height: 4rem; padding: 0 2rem 0 calc(2rem + .1rem); max-width: 100%; border-radius: 1rem; background-color: #fff; color: #000; font-family: 'SUSE', sans-serif; font-size: .75em; font-weight: 700; letter-spacing: .1rem; line-height: 4rem; text-transform: uppercase; text-decoration: none; white-space: nowrap; transition: transform .25s ease; } .buttons li a svg { display: block; width: 1.5625em; min-width: 18px; height: 100%; margin-left: -.125em; margin-right: calc(.5em + .1rem); fill: #000; flex-shrink: 0; } .buttons li a:hover { transform: scale(1.095); z-index: 2; }

/* ---------- Divider ---------- */ hr.divider { display: flex; align-items: center; justify-content: var(--flex-alignment); width: 100%; min-height: 1rem; border: 0; } hr.divider:not(:first-child) { margin-top: 4rem !important; } hr.divider:not(:last-child) { margin-bottom: 4rem !important; } hr.divider::before { content: ''; width: 4rem; height: 2px; background-color: #fff; }

/* ---------- Typography ---------- */ h1, h2, h3, p { position: relative; }

.eyebrow { color: #fff; font-family: 'SUSE', sans-serif; font-weight: 300; font-size: 1em; line-height: 1.5; letter-spacing: .5rem; text-transform: uppercase; width: calc(100% + .5rem); }

.display { color: #fff; font-family: 'Titan One', sans-serif; font-weight: 400; font-size: 6em; line-height: 1.125; letter-spacing: .025rem; text-transform: uppercase; width: calc(100% + .025rem); }

.prose { color: #fff; font-family: 'SUSE', sans-serif; font-weight: 400; font-size: 1.125em; line-height: 2; letter-spacing: .1rem; width: calc(100% + .1rem); } .prose p + p { margin-top: 2.5rem; } .prose a, #text09 a, .eyebrow a { text-decoration: underline; } .prose a:hover, #text09 a:hover, .eyebrow a:hover { text-decoration: none; }

#text09 { color: #fff; font-family: 'SUSE', sans-serif; font-weight: 400; font-size: 1em; line-height: 1.5; letter-spacing: .1rem; }

/* ---------- Scroll-in animations ---------- */ [data-animate] > *, .photo .frame { opacity: 0; transform: translateY(10px); transition: opacity .3s ease, transform .3s ease; } .photo .frame { transform: scale(1.04); }

[data-animate].in-view > *, .photo.in-view .frame { opacity: 1; transform: none; }

/* gentle stagger for children */ [data-animate].in-view > *:nth-child(2) { transition-delay: .03s; } [data-animate].in-view > *:nth-child(3) { transition-delay: .06s; } [data-animate].in-view > *:nth-child(4) { transition-delay: .09s; } [data-animate].in-view > *:nth-child(n+5) { transition-delay: .12s; }

/* LCP exemption: the hero photo (#image06) is the Largest Contentful Paint element, so it must NOT start at opacity:0 waiting on JS to add .in-view / .loaded — that gate was adding ~2.3s of render delay. ID selectors outweigh the .photo/.in-view rules above, so it paints the moment it downloads. Every other .photo keeps the scroll-in fade. */ #image06 .frame { opacity: 1; transform: none; transition: none; width: 100%; aspect-ratio: 1675 / 1332; } #image06 .frame img { opacity: 1; transition: none; }

@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } [data-animate] > *, .photo .frame { opacity: 1 !important; transform: none !important; transition: none !important; } .photo .frame img { transition: none; } }

/* ---------- Responsive ---------- */ @media (max-width: 1680px) { html { font-size: 13pt; } } @media (max-width: 1280px) { html { font-size: 13pt; } } @media (max-width: 980px) { html { font-size: 11pt; } }

@media (max-width: 736px) { html { font-size: 10pt; } #main > .inner { --padding-horizontal: 2rem; --padding-vertical: 6rem; } .container:not(:first-child) { margin-top: 6rem !important; } .container:not(:last-child) { margin-bottom: 6rem !important; } .photo:not(:first-child) { margin-top: 6rem !important; } .photo:not(:last-child) { margin-bottom: 6rem !important; } .icons { font-size: 2em; } .eyebrow { font-size: 1em; line-height: 1.5; } .display { font-size: 4em; line-height: 1.125; } .prose { font-size: 1.5em; line-height: 2; } .buttons li a { font-size: 1.125em; } #text09 { font-size: 1.125em; line-height: 1.5; } .container .on-air:not(.on-air--live) { font-size: 1.125em; } hr.divider:not(:first-child) { margin-top: 2rem !important; } hr.divider:not(:last-child) { margin-bottom: 2rem !important; } }

@media (max-width: 480px) { #main > .inner { --spacing: 2.625rem; } }

@media (max-width: 360px) { #main > .inner { --padding-horizontal: 1.5rem; --padding-vertical: 4.5rem; --spacing: 2.25rem; } .icons { gap: 1.125rem; } .display { font-size: 4em; } .prose { font-size: 1.5em; } #text09 { font-size: 1.125em; } .buttons { gap: .5625rem; } }

/* ---------- On-air badge (server-rendered by on-air.php) ---------- / / Tighten + equalize the space around the badge (override the column rhythm and the divider's larger top margin so above == below). / .container > .inner > .on-air { margin-top: .75rem !important; margin-bottom: .75rem !important; } .inner > .buttons:has(+ .on-air) { margin-bottom: .75rem !important; } / buttons just above it / .inner > .on-air + .divider { margin-top: 3rem !important; margin-bottom: 3rem !important; } / balanced gap above & below */

.on-air { display: inline-flex; align-items: center; justify-content: center; gap: .6em; font-family: 'SUSE', sans-serif; font-weight: 700; font-size: .7em; letter-spacing: .12rem; text-transform: uppercase; white-space: nowrap; /* default ("next show"): plain white text, no pill */ color: #fff; }

/* not-live: stack the label over the date, centered. Override the small pill size (.7em from the shared base) so it reads at the page's normal scale, matching the eyebrow labels. */ .on-air:not(.on-air--live) { flex-direction: column; gap: .5em; font-size: 1em; line-height: 1.3; white-space: normal; } .on-air__label { font-family: 'SUSE', sans-serif; font-weight: 700; font-size: 1em; letter-spacing: .3rem; } .on-air__when { font-family: 'SUSE', sans-serif; font-weight: 400; font-size: 1em; letter-spacing: .04rem; text-transform: none; opacity: .92; }

/* live: filled accent pill that pops against the white buttons */ .on-air--live { height: 2.75rem; padding: 0 1.5rem; border-radius: 1rem; color: #fff; background-color: #ff4040; border: 2px solid #ff4040; box-shadow: 0 0 1.5rem rgba(255, 64, 64, .55); animation: on-air-glow 1.8s ease-in-out infinite; } .on-air--live .dot { width: .7em; height: .7em; border-radius: 50%; background: #fff; box-shadow: 0 0 0 0 rgba(255, 255, 255, .8); animation: on-air-pulse 1.8s ease-out infinite; } @keyframes on-air-pulse { 0% { box-shadow: 0 0 0 0 rgba(255, 255, 255, .8); } 70% { box-shadow: 0 0 0 .55em rgba(255, 255, 255, 0); } 100% { box-shadow: 0 0 0 0 rgba(255, 255, 255, 0); } } @keyframes on-air-glow { 0%, 100% { box-shadow: 0 0 1.25rem rgba(255, 64, 64, .45); } 50% { box-shadow: 0 0 2.25rem rgba(255, 64, 64, .75); } } @media (prefers-reduced-motion: reduce) { .on-air--live, .on-air--live .dot { animation: none; } }

<script type="application/ld+json">
{
	"@context": "https://schema.org",
	"@graph": [
		{
			"@type": "WebSite",
			"@id": "https://smokyshores.radio/#website",
			"url": "https://smokyshores.radio/",
			"name": "Smoky Shores Radio",
			"description": "A one-hour music radio show broadcast every Saturday at 4pm EDT on 60 North Radio.",
			"publisher": { "@id": "https://smokyshores.radio/#org" },
			"inLanguage": "en"
		},
		{
			"@type": "Organization",
			"@id": "https://smokyshores.radio/#org",
			"name": "Smoky Shores Radio",
			"url": "https://smokyshores.radio/",
			"logo": {
				"@type": "ImageObject",
				"url": "https://global-cdn.smokyshores.radio/assets/images/image04.png",
				"width": 622,
				"height": 622
			},
			"sameAs": [
				"https://www.mixcloud.com/60northradio/",
				"https://60north.radio/podcastfilter/smoky-shores/"
			]
		},
		{
			"@type": "RadioSeries",
			"@id": "https://smokyshores.radio/#series",
			"name": "Smoky Shores Radio",
			"url": "https://smokyshores.radio/",
			"description": "Born in the foothills of the Great Smoky Mountains and raised on the Shetland Islands — a one-hour music show blending dream pop, surf rock, alternative and indie, every Saturday at 4pm EDT on 60 North Radio.",
			"inLanguage": "en",
			"genre": ["Dream pop", "Surf rock", "Alternative", "Indie"],
			"creator": {
				"@type": "Person",
				"name": "Chris Haynes",
				"jobTitle": "Host"
			},
			"publisher": { "@id": "https://smokyshores.radio/#org" },
			"productionCompany": {
				"@type": "Organization",
				"name": "60 North Radio",
				"url": "https://60north.radio/"
			},
			"sameAs": [
				"https://www.mixcloud.com/60northradio/",
				"https://60north.radio/podcastfilter/smoky-shores/"
			]
		},
		{
			"@type": "BroadcastEvent",
			"@id": "https://smokyshores.radio/#next-broadcast",
			"name": "Smoky Shores Radio",
			"description": "The next live broadcast of Smoky Shores Radio on 60 North Radio.",
			"startDate": "2026-06-13T16:00:00-04:00",
			"endDate": "2026-06-13T17:00:00-04:00",
			"eventStatus": "https://schema.org/EventScheduled",
			"eventAttendanceMode": "https://schema.org/OnlineEventAttendanceMode",
			"isLiveBroadcast": true,
			"location": {
				"@type": "VirtualLocation",
				"url": "https://60north.radio/"
			},
			"organizer": { "@id": "https://smokyshores.radio/#org" },
			"workPerformed": { "@id": "https://smokyshores.radio/#series" },
			"publishedOn": {
				"@type": "BroadcastService",
				"name": "60 North Radio",
				"url": "https://60north.radio/"
			}
		}
	]
}
</script>
			<!-- ===== Header / logo ===== -->
			<header id="container01" class="container">
				<div class="inner" data-animate="zoom">
					<h1 class="visually-hidden">Smoky Shores Radio — music every Saturday at 4pm EDT on 60 North Radio</h1>
					<div id="image04" class="image">
						<a href="/" class="frame" aria-label="Smoky Shores Radio home">
							<img src="https://global-cdn.smokyshores.radio/assets/images/image04.png" alt="Smoky Shores Radio logo" width="622" height="622" decoding="async">
						</a>
					</div>
					<ul id="icons01" class="icons">
						<li>
							<a class="n01" href="#start" role="button" aria-label="Scroll down">
								<svg viewBox="0 0 40 40" aria-hidden="true" focusable="false">
									<path d="M18.5,5.6H21c0.7,0,1.3,0.2,1.8,0.6c0.5,0.4,0.7,1,0.7,1.7v13.8l5.8-5.8c0.5-0.5,1.1-0.7,1.8-0.7c0.7,0,1.3,0.2,1.8,0.7 l1.5,1.5c0.5,0.5,0.7,1.1,0.7,1.8c0,0.7-0.2,1.3-0.7,1.8L21.6,33.7c-0.5,0.5-1.1,0.7-1.8,0.7c-0.7,0-1.3-0.2-1.8-0.7L5.2,21 c-0.5-0.5-0.7-1.1-0.7-1.8s0.2-1.3,0.7-1.8l1.5-1.5c0.5-0.5,1.1-0.7,1.8-0.7c0.7,0,1.3,0.2,1.8,0.7l5.8,5.8V7.9 c0-0.7,0.2-1.2,0.7-1.7C17.3,5.8,17.8,5.6,18.5,5.6z"/>
								</svg>
							</a>
						</li>
					</ul>
				</div>
			</header>

			<!-- ===== Hero photo ===== -->
			<div id="image06" class="image photo" style="--ph:#2f4a7e">
				<span class="frame">
					<img src="https://global-cdn.smokyshores.radio/assets/images/image06.jpg" alt="A long open road winding toward the Great Smoky Mountains at dusk" width="1675" height="1332" fetchpriority="high">
				</span>
				<span id="start" class="anchor" aria-hidden="true"></span>
			</div>

			<!-- ===== The journey ===== -->
			<section id="container02" class="container">
				<div class="inner" data-animate="up">
					<p class="eyebrow">born in the foothills of the great smoky mountains, and raised on the shetland islands&hellip;</p>
					<h2 class="display">The journey</h2>
					<div class="prose">
						<p>Fate played a pivotal role in the creation of Smoky Shores. During the COVID lockdown in 2020, many of us sought ways to feel connected to the world; that was music for me. Using the <a href="https://radio.garden">Radio Garden</a> app, I spun the virtual globe.</p>
						<p>I landed on 60 North Radio, a station that played the music I loved the most and had often listened to during my travels. After months of enjoying the station, I contacted Andy, the station&#39;s owner. We struck up a conversation about everything from station merchandise to the technology behind broadcasting.</p>
						<p>Over the years, Andy and I stayed in touch, and when a one-hour time slot opened up, I jumped at the chance to create a show. With guidance and support from family and friends, Smoky Shores was born. My youngest child chose the show name, which reflects The Great Smoky Mountains just outside our front door and the lakes, and oceans that have shaped our family&#39;s journeys over the years together.</p>
						<p>Now, after producing Smoky Shores for a while, it&#39;s been a true privilege to share my passion for music with listeners around the world. I hope you enjoy the show as much as I enjoy bringing it to you!</p>
					</div>
				</div>
			</section>

			<div id="image01" class="image photo" style="--ph:#14120f">
				<span class="frame">
					<img src="https://global-cdn.smokyshores.radio/assets/images/image01.jpg" alt="Vinyl records and broadcast gear in the Smoky Shores studio" width="2000" height="1333" loading="lazy" decoding="async">
				</span>
			</div>

			<!-- ===== The music ===== -->
			<section id="container03" class="container">
				<div class="inner" data-animate="up">
					<p class="eyebrow">Road trip time</p>
					<h2 class="display">The music</h2>
					<div class="prose">
						<p>In our first year on the air, we featured almost 50 hours of music, highlighting a range of genres, such as dream pop, surf rock, alternative, and indie.</p>
						<p>Smoky Shores has featured top bands like Coldplay, Beck, and R.E.M., rising artists like Goth Babe and Royel Otis, and even some vintage bands like Knoxville&#39;s own The Judybats.</p>
						<p>The show blends tracks from the early 2000s to new releases, offering a mix of nostalgic hits to never heard before tracks. Around 88% of all artists played on Smoky Shores were only heard once throughout the previous year. You&#39;ll love what you hear and might find a new artist to venture down the road with!</p>
					</div>
				</div>
			</section>

			<div id="image05" class="image photo" style="--ph:#070a0c">
				<span class="frame">
					<img src="https://global-cdn.smokyshores.radio/assets/images/image05.jpg" alt="Mountain coastline at golden hour" width="2000" height="1333" loading="lazy" decoding="async">
				</span>
			</div>

			<!-- ===== The merch ===== -->
			<section id="container04" class="container">
				<div class="inner" data-animate="up">
					<p class="eyebrow">supporting a good cause</p>
					<h2 class="display">The merch</h2>
					<div class="prose">
						<p>Smoky Shores is a passion project which I have a lot of fun producing. In selling merch, I wanted to showcase the amazing graphics design work created by the talented <a href="#robert">Robert Wishart</a>, and spread the good vibes of the show all while supporting another cause I deeply care about: St. Jude Children&#39;s Research Hospital (STJ).</p>
						<p>100% of the Smoky Shores merch sales profits are donated to STJ. With a personal connection to their work, I am fully committed to making a difference and supporting their mission:</p>
						<p>&ldquo;The mission of St. Jude Children&#39;s Research Hospital is to advance cures, and means of prevention, for pediatric catastrophic diseases through research and treatment. Consistent with the vision of our founder Danny Thomas, no child is denied treatment based on race, religion or a family&#39;s ability to pay.&rdquo;</p>
					</div>
					<ul class="buttons">
						<li>
							<a href="https://shop.smokyshores.radio/" class="button n01" role="button">
								<svg viewBox="0 0 40 40" aria-hidden="true" focusable="false">
									<path d="M20.9,37L33,25.3c3-3,4.5-5.9,4.5-8.8c0-2.9-0.8-5.1-2.5-6.7c-1.6-1.6-3.9-2.4-6.8-2.4c-0.8,0-1.6,0.1-2.5,0.4 S24.1,8.5,23.3,9c-0.7,0.5-1.3,0.9-1.9,1.3c-0.5,0.4-1,0.9-1.5,1.3c-0.5-0.5-1-0.9-1.5-1.3C18,9.9,17.4,9.5,16.7,9 c-0.7-0.5-1.5-0.9-2.3-1.1s-1.7-0.4-2.5-0.4C9,7.5,6.7,8.3,5,9.9s-2.5,3.8-2.5,6.7c0,0.9,0.2,1.8,0.5,2.7c0.3,0.9,0.7,1.7,1,2.4 c0.4,0.6,0.8,1.3,1.3,1.9c0.5,0.6,0.9,1,1.1,1.3C6.7,25,6.9,25.2,7,25.3L19.1,37c0.2,0.2,0.5,0.4,0.9,0.4S20.6,37.3,20.9,37z"/>
								</svg>
								<span class="label">Shop Smoky Shores</span>
							</a>
						</li>
					</ul>
					<div id="image03" class="image photo" style="--ph:#1d0b1e">
						<span class="frame">
							<img src="https://global-cdn.smokyshores.radio/assets/images/image03.jpg" alt="Smoky Shores merchandise supporting St. Jude" width="2000" height="1500" loading="lazy" decoding="async">
						</span>
					</div>
				</div>
			</section>

			<!-- ===== The people + Listen up ===== -->
			<section id="container05" class="container">
				<div class="inner" data-animate="up">

					<p class="eyebrow">behind the curtain</p>
					<h2 id="robert" class="display">The people</h2>
					<div class="prose">
						<p>I&#39;m <strong>Chris Haynes</strong>, your host, broadcasting from my studio at the foothills of the Great Smoky Mountains in East Tennessee. My passion for music goes with me everywhere. Music is a constant for me, and the beautiful landscapes I live and travel through inspire me to share the sounds that accompany my journey with listeners around the globe.</p>
						<p>All photographs by <strong><a href="https://www.instagram.com/someborrowedtime/?hl=en">Victor Rollins</a></strong>. Based in Denver, Colorado, Victor combines years of experience with film and digital photography mastery. His work, celebrated in local music publications, authentically and artistically captures the energy and emotion of the Denver music scene.</p>
						<p>Logo Design by <strong><a href="https://www.instagram.com/robertwishartcreative/">Robert Wishart</a></strong>, a talented graphic designer based in the Shetland Islands, specializes in crafting timeless brand identities. With over 20 years of experience and a portfolio spanning international clients, Robert combines creativity and expertise to deliver standout designs that leave a lasting impression.</p>
					</div>

					<div id="image02" class="image photo" style="--ph:#281b46">
						<span class="frame">
							<img src="https://global-cdn.smokyshores.radio/assets/images/image02.jpg" alt="Chris Haynes hosting Smoky Shores from his East Tennessee studio" width="1842" height="1330" loading="lazy" decoding="async">
						</span>
					</div>

					<p class="eyebrow">come hang out</p>
					<h2 class="display">Listen up</h2>
					<div class="prose">
						<p>Smoky Shores is broadcast live every Saturday at 4pm EDT, via 60 North Radio&#39;s global CDN. <a href="https://cdn1.zetcast.net/flac">Audiophiles will appreciate the 1500k FLAC stream</a> (warning: bandwidth intensive)! Using the buttons below, you can listen live or replay any past Smoky Shores episode directly from 60 North Radio (via <a href="https://www.mixcloud.com/60northradio/">Mixcloud</a>).</p>
						<p>Send me your music requests or station breaks via email below. Let me know where you&#39;re listening from and I&rsquo;ll play it on the show!</p>
						<p>Here we go&hellip;</p>
					</div>

					<ul class="buttons">
						<li>
							<a href="https://60north.radio" class="button n01" role="button">
								<svg viewBox="0 0 40 40" aria-hidden="true" focusable="false">
									<path d="M33.19,2.86c-0.39-0.39-0.86-0.59-1.42-0.59c-0.22,0-0.42,0.03-0.59,0.08L13.8,7.71c-0.42,0.14-0.76,0.39-1.02,0.74 s-0.4,0.75-0.4,1.18v20.21c-1.21-0.54-2.55-0.82-4.01-0.82c-0.63,0-1.3,0.07-2.02,0.22c-0.72,0.15-1.44,0.37-2.16,0.67 s-1.32,0.72-1.8,1.26c-0.47,0.54-0.71,1.16-0.71,1.86s0.24,1.32,0.71,1.86c0.47,0.54,1.07,0.96,1.8,1.26s1.45,0.52,2.16,0.67 c0.72,0.15,1.39,0.22,2.02,0.22s1.3-0.07,2.02-0.22c0.72-0.15,1.44-0.37,2.16-0.67c0.72-0.3,1.32-0.72,1.8-1.26 c0.47-0.54,0.71-1.16,0.71-1.86V18.22l16.05-4.95v11.22c-1.21-0.54-2.55-0.82-4.01-0.82c-0.63,0-1.3,0.07-2.02,0.22 c-0.72,0.15-1.44,0.37-2.16,0.67s-1.32,0.72-1.8,1.26c-0.47,0.54-0.71,1.16-0.71,1.86c0,0.7,0.24,1.32,0.71,1.86 c0.47,0.54,1.07,0.96,1.8,1.26s1.45,0.52,2.16,0.67c0.72,0.15,1.39,0.22,2.02,0.22c0.63,0,1.3-0.07,2.02-0.22 c0.72-0.15,1.44-0.37,2.16-0.67c0.72-0.3,1.32-0.72,1.8-1.26c0.47-0.54,0.71-1.16,0.71-1.86V4.28C33.78,3.73,33.58,3.25,33.19,2.86z"/>
								</svg>
								<span class="label">60 North Radio &ndash; Live</span>
							</a>
						</li>
						<li>
							<a href="https://60north.radio/podcastfilter/smoky-shores/" class="button n02" role="button">
								<svg viewBox="0 0 40 40" aria-hidden="true" focusable="false">
									<path d="M33.19,2.86c-0.39-0.39-0.86-0.59-1.42-0.59c-0.22,0-0.42,0.03-0.59,0.08L13.8,7.71c-0.42,0.14-0.76,0.39-1.02,0.74 s-0.4,0.75-0.4,1.18v20.21c-1.21-0.54-2.55-0.82-4.01-0.82c-0.63,0-1.3,0.07-2.02,0.22c-0.72,0.15-1.44,0.37-2.16,0.67 s-1.32,0.72-1.8,1.26c-0.47,0.54-0.71,1.16-0.71,1.86s0.24,1.32,0.71,1.86c0.47,0.54,1.07,0.96,1.8,1.26s1.45,0.52,2.16,0.67 c0.72,0.15,1.39,0.22,2.02,0.22s1.3-0.07,2.02-0.22c0.72-0.15,1.44-0.37,2.16-0.67c0.72-0.3,1.32-0.72,1.8-1.26 c0.47-0.54,0.71-1.16,0.71-1.86V18.22l16.05-4.95v11.22c-1.21-0.54-2.55-0.82-4.01-0.82c-0.63,0-1.3,0.07-2.02,0.22 c-0.72,0.15-1.44,0.37-2.16,0.67s-1.32,0.72-1.8,1.26c-0.47,0.54-0.71,1.16-0.71,1.86c0,0.7,0.24,1.32,0.71,1.86 c0.47,0.54,1.07,0.96,1.8,1.26s1.45,0.52,2.16,0.67c0.72,0.15,1.39,0.22,2.02,0.22c0.63,0,1.3-0.07,2.02-0.22 c0.72-0.15,1.44-0.37,2.16-0.67c0.72-0.3,1.32-0.72,1.8-1.26c0.47-0.54,0.71-1.16,0.71-1.86V4.28C33.78,3.73,33.58,3.25,33.19,2.86z"/>
								</svg>
								<span class="label">Smoky Shores &ndash; Archive</span>
							</a>
						</li>
					</ul>

					<p class="on-air"><span class="on-air__label">Next show</span><span class="on-air__when">Saturday, June 13th at 4pm EDT</span></p>
					<hr class="divider">

					<ul id="icons02" class="icons">
						<li>
							<a class="n03" href="https://www.mixcloud.com/60northradio/" role="button" aria-label="Smoky Shores on Mixcloud">
								<svg viewBox="0 0 40 40" aria-hidden="true" focusable="false">
									<path d="M25.1,26.1H7.5c-2.4,0-4.3-2-4.3-4.4c0-2.4,1.9-4.3,4.3-4.3c1.1,0,2.2,0.8,3,1.6c0.5,0.5,1.3,0.5,1.8,0 c0.5-0.5,0.5-1.3,0-1.8c-0.9-0.9-2-1.9-3.2-2.2c1.2-2.7,3.9-4.7,7-4.7c4.2,0,7.6,3.7,7.6,7.9c0,0.8-0.5,1.8-0.7,2.6 c-0.2,0.7,0.1,1.4,0.8,1.6c0.1,0,0.3,0.1,0.4,0.1c0.5,0,1-0.3,1.2-0.9c0.2-0.5,0.6-1.2,0.7-1.8c1.2,0.5,2.2,1.6,2.2,3 C28.4,24.6,26.9,26.1,25.1,26.1L25.1,26.1z M26.3,17.2c-0.5-5.2-4.9-9.3-10.2-9.3c-4.4,0-8.3,2.8-9.7,7c-3.3,0.5-5.9,3.4-5.9,6.8 c0,3.8,3.1,6.8,6.9,6.8h17.6c3.2,0,5.8-2.4,5.8-5.6C30.9,20.1,28.9,17.8,26.3,17.2L26.3,17.2z M33.4,17.5c-0.4-0.6-1.2-0.8-1.8-0.3 c-0.6,0.4-0.7,1.2-0.3,1.8c0.8,1.2,1.4,2.5,1.4,3.9c0,1.4-0.6,2.8-1.4,3.9c-0.4,0.6-0.2,1.4,0.3,1.8c0.2,0.2,0.5,0.2,0.7,0.2 c0.4,0,0.8-0.2,1.1-0.6c1.1-1.6,1.6-3.5,1.6-5.4C35.1,20.9,34.5,19.1,33.4,17.5L33.4,17.5z M35.3,15c-0.6,0.4-0.7,1.2-0.4,1.8 c1.2,1.8,2,3.9,2,6.1s-0.8,4.3-2,6.1c-0.4,0.6-0.2,1.4,0.4,1.8c0.2,0.1,0.5,0.2,0.7,0.2c0.4,0,0.8-0.2,1.1-0.6 c1.5-2.2,2.3-4.8,2.3-7.5s-0.8-5.3-2.3-7.5C36.7,14.8,35.9,14.6,35.3,15L35.3,15z"/>
								</svg>
							</a>
						</li>
						<li>
							<a class="n02" href="mailto:onair@smokyshores.radio" role="button" aria-label="Email Smoky Shores">
								<svg viewBox="0 0 40 40" aria-hidden="true" focusable="false">
									<path d="M37.3,15.3v15.3c0,0.8-0.3,1.6-0.9,2.2c-0.6,0.6-1.4,0.9-2.2,0.9H5.8c-0.8,0-1.6-0.3-2.2-0.9s-0.9-1.4-0.9-2.2V15.3 c0.5,0.6,1.2,1.1,2,1.7c4.7,3.1,7.9,5.4,9.6,6.7c0.7,0.5,1.4,0.9,1.8,1.2c0.4,0.3,1,0.6,1.9,0.9c0.7,0.3,1.5,0.5,2.1,0.5l0,0 c0.6,0,1.4-0.2,2.1-0.5c0.7-0.3,1.4-0.6,1.9-0.9c0.4-0.3,1-0.7,1.8-1.2c2.2-1.6,5.4-3.8,9.6-6.7C36.1,16.5,36.7,15.9,37.3,15.3 L37.3,15.3z M37.3,9.6c0,1-0.3,2-0.9,2.9c-0.6,0.9-1.5,1.8-2.4,2.4c-4.9,3.3-7.9,5.4-9,6.2c-0.1,0.1-0.4,0.3-0.8,0.6 c-0.4,0.3-0.7,0.5-1,0.7c-0.3,0.2-0.6,0.4-1,0.6c-0.4,0.2-0.7,0.4-1.1,0.5c-0.4,0.1-0.6,0.2-0.9,0.2l0,0c-0.3,0-0.6-0.1-0.9-0.2 c-0.3-0.1-0.7-0.3-1.1-0.5c-0.4-0.2-0.7-0.4-1-0.6c-0.3-0.2-0.6-0.4-1-0.7c-0.4-0.3-0.7-0.5-0.8-0.6c-1.1-0.8-2.8-2-5.1-3.5 c-2.3-1.6-3.3-2.4-3.7-2.7c-0.8-0.5-1.6-1.2-2.3-2.2s-1-1.9-1-2.6c0-1,0.3-1.9,0.8-2.5c0.5-0.6,1.2-1,2.3-1h28.4 c0.8,0,1.6,0.3,2.2,0.9C37.1,8.1,37.3,8.8,37.3,9.6L37.3,9.6z"/>
								</svg>
							</a>
						</li>
					</ul>

					<footer>
						<p id="text09">&copy; 2026<br>Smoky Shores Radio</p>
					</footer>
				</div>
			</section>

		</div>
	</main>
</div>
<script src="/main.js" defer></script>
Related

llmtxt.app – AI SEO & Search Engine Optimization Directory

/llms.txt
635 tokens
/llms-full.txt
2,429 tokens
Websites

A proposal to standardise on using an /llms.txt file to provide information to help LLMs use a website at inference time.

/llms.txt
318 tokens
Websites

/llms.txt
33,874 tokens
/llms-full.txt
3,770,473 tokens
Websites

/llms.txt
1,164 tokens
/llms-full.txt
1,167 tokens
Websites

About Matt Rickard.

/llms.txt
515,931 tokens
/llms-full.txt
515,931 tokens
Websites

/llms.txt
628 tokens
Websites

Evan Boehs — personal website.

/llms.txt
265 tokens
Websites

This very website you're looking at right now!

/llms.txt
48 tokens
Websites