diff --git a/NEWSITE_CONTRIBUTERS.md b/NEWSITE_CONTRIBUTERS.md new file mode 100644 index 0000000..d7fb84c --- /dev/null +++ b/NEWSITE_CONTRIBUTERS.md @@ -0,0 +1,17 @@ +# Basic Concept, Design and Guiding Light + +* Ken Fallon + +# Implementaion and Design Touches + +* Lee Hanken +* Roan Horning + +# Constructive Feedback and Forward Looks + +* Archer72 (Mark Rice) +* Dave Morris +* kwoot + +Thanks to all the contributers who helped give HPR +its 2025 facelift! diff --git a/README.md b/README.md index 0250196..623d13c 100644 --- a/README.md +++ b/README.md @@ -68,5 +68,5 @@ and add the label "**Feature Request**". * Ken Fallon * norrist * Paul Jewell - +* Lee Hanken diff --git a/_sql/sqlite/Rename_twt_table.sql b/_sql/sqlite/Rename_twt_table.sql new file mode 100644 index 0000000..ff28ec3 --- /dev/null +++ b/_sql/sqlite/Rename_twt_table.sql @@ -0,0 +1 @@ +ALTER TABLE twat_eps RENAME TO twt_eps; diff --git a/public_html/css/bebas/BebasNeue.otf b/public_html/css/bebas/BebasNeue.otf new file mode 100644 index 0000000..214e007 Binary files /dev/null and b/public_html/css/bebas/BebasNeue.otf differ diff --git a/public_html/css/bebas/BebasNeue.woff b/public_html/css/bebas/BebasNeue.woff new file mode 100644 index 0000000..ff28949 Binary files /dev/null and b/public_html/css/bebas/BebasNeue.woff differ diff --git a/public_html/css/bebas/BebasNeue.woff2 b/public_html/css/bebas/BebasNeue.woff2 new file mode 100644 index 0000000..1e9e13c Binary files /dev/null and b/public_html/css/bebas/BebasNeue.woff2 differ diff --git a/public_html/css/bebas/BebasNeueLight.otf b/public_html/css/bebas/BebasNeueLight.otf new file mode 100644 index 0000000..01429c4 Binary files /dev/null and b/public_html/css/bebas/BebasNeueLight.otf differ diff --git a/public_html/css/bebas/OFL.txt b/public_html/css/bebas/OFL.txt new file mode 100644 index 0000000..2df4406 --- /dev/null +++ b/public_html/css/bebas/OFL.txt @@ -0,0 +1,93 @@ +Copyright (c) 2010-2012 Patrick Wagesreiter (mail@patrickwagesreiter.at) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +https://openfontlicense.org + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/public_html/css/hpr.css b/public_html/css/hpr.css index d979989..017aa42 100644 --- a/public_html/css/hpr.css +++ b/public_html/css/hpr.css @@ -10,25 +10,192 @@ https://creativecommons.org/publicdomain/ * -- https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Responsive_Design * - Matthew James Tayler: Responsive Font Size (Optimal Text at Every Breakpoint) * -- https://matthewjamestaylor.com/responsive-font-size - * - CSS-Tricks: Linearly Scale font-size with CSS clamp() Based on the Viewport + * - CSS-Tricks: Linearly Scale font-size with CSS c + * #welcome > p { + * font-size: 1.25rem; + * font-weight: 450; + * }lamp() Based on the Viewport * -- https://css-tricks.com/linearly-scale-font-size-with-css-clamp-based-on-the-viewport/ */ +@font-face { + font-family: "BebasNeue"; + src: + local("BEBAS NEUE"), + url("/css/bebas/BebasNeue.woff2") format("woff2"), + url("/css/bebas/BebasNeue.woff") format("woff"), + url("/css/bebas/BebasNeue.otf") format("opentype"); +} +@font-face { + font-family: "PatrickHand"; + src: + local("Patrick Hand"), + url("/css/patrickhand/PatrickHand-Regular.woff2") format("woff2"), + url("/css/patrickhand/PatrickHand-Regular.woff") format("woff"), + url("/css/patrickhand/PatrickHand-Regular.ttf") format("truetype"); +} +:root { + --background-primary: #fffff7/*#fafafa#fbfbee #dfdfdf */; + --text-primary: #4d4d4d; /* HPR Grey */ + --banner-text-primary: #000000; + --banner-background-color: #40a5b9; + /* --background-secondary: #4d4d4d; */ + --background-secondary: #00003e; + --text-secondary: #dfdfdf; + --link-primary: #004852 /*#154a60*/; + --link-primary-hover: #b54c08/*#f8961e*/; + --link-secondary: #a8f8ff; + --link-secondary-hover: #f9e9c2; + --link-title-color: #00003e; + --link-navigation-hover: #030303; + --primary-content-line-height: 1.45; + + --font-family-hpr: Verdana, Arial, Helvetica, sans-serif; /* 1em/1.5 OpenDyslexic, */; + --font-size-default: clamp(1rem, 15px + 0.3vw, 1.07rem); + --font-size-emphasis: clamp(1.1rem, 15px + 0.3vw, 1.25rem); + + --episode-nav-padding: clamp(0.15em, 15px + 0.3vw, 0.4em); + --show-notes-pre-background: #f9e9c2; + --logo-font-family: var(--font-family-hpr); + --logo-font-weight: bolder; + --logo-font-size: 7.5rem; + --logo-letter-spacing: -0.65rem; + --logo-line-height: 0.75; + --logo-margin: 0 0 0.25rem 0; + + --tagline-font-family:"BebasNeue", sans-serif; + --lane-button-font-family: "PatrickHand", var(--font-family-hpr); + --lane-button-border: #80b4c0; + --input-border-primary: #4d4d4d; + + --link-spacing-horizontal: clamp(0.5rem, -0.25rem + 3vw, 2.5rem); + + + --shadow-main-header-color: hsl(190deg 48% 49% / 0.2); + --shadow-secondary-color: hsl(0, 0%, 30.2%); + --shadow-cards: var(--shadow-secondary-color); + + --content-max-width: 1080pt; + + /* screen breakpoints */ + --for-phone-only: 599px; + --for-tablet-portrait-up: 600px; + --for-tablet-landscape-up: 900px; + --for-desktop-up: 1200px; + --for-big-desktop-up: 1800px; + + --default-header-x-font-weight: bold; + --default-header-x-margin: 1.25rem 0 0.75rem 0; + --default-header-1-font-size: 1.5rem; + --default-header-2-font-size: 1.45rem; + --default-header-3-font-size: 1.25rem; + --default-header-4-font-size: 1.15rem; +} + html { margin: 0; padding: 0; - display: block; + display: flex; + flex-direction: column; } - body { - display: block; - background: #dfdfdf; + display: flex; + flex-direction: column; + justify-content: flex-start; + background-color: var(--background-primary); + color: var(--text-primary); font-size: 1rem; /* fallback for browsers that don't support the clamp function) */ - font-size: clamp(1rem, 15px + 0.3vw, 1.07rem); + font-size: var(--font-size-default); + font-family: var(--font-family-hpr); margin: 0; padding: 0; + min-height: 100vh; +} +#top_navigation { + display: flex; + flex-direction: row-reverse; + justify-content: space-between; + background-color: var(--background-secondary); + color: var(--text-secondary); + padding: 0.5rem; +} +#top_navigation > nav a { + color: var(--link-secondary); +} +#top_navigation > nav a:hover { + color: var(--link-secondary-hover); +} +#top_navigation > nav menu { + background-color: inherit; + color: inherit; + margin: 0; + padding: 0.25rem; +} +#top_navigation > nav menu li { + display: inline-block; + background-color: inherit; + color: inherit; + line-height: 1.0; + margin: 0; + padding: 0; + padding-right: var(--link-spacing-horizontal); +} +#top_navigation > nav menu li a { + padding: 0.25rem 0; +} +body > header { + padding: clamp(0.5rem, -0.25rem + 3vw, 1rem) 0.25rem; + background-color: var(--banner-background-color); + background-image: url("/images/main-header-background.png"); + background-size: cover; + background-repeat: no-repeat; + background-position: left top; + color: var(--banner-text-primary); + align-items: center; + border-top: var(--background-secondary) solid 1rem; +} +body > header .bounding-box { + background: none; + display: flex; + flex-direction: row; + flex-flow: wrap; + justify-content: space-between; + max-width: var(--content-max-width); + margin: 0 auto; +} +body > header .bounding-box > * { + margin: 0; + padding: 0; + flex: 1 1 auto; + padding: 0.5rem; + background-image: none; +} +body > main { + flex: 1 0 auto; + padding: 0.25rem; + max-width: var(--content-max-width); + margin-left: auto; + margin-right: auto; +} +body > footer { + flex: 0 1 auto; + background-color: var(--background-secondary); + color: var(--text-secondary); + padding: clamp(0.25rem, calc(100vw - var(--for-tablet-portrait-up) + 0.5rem), 0.5rem); + margin-top: 0.5rem; + text-align: center; + line-height: 1.25; +} +body > footer #copyright { + max-width: var(--content-max-width); + margin: 0 auto; +} +body > footer a { + color: var(--link-secondary); +} +body > footer a:hover { + color: var(--link-secondary-hover); } - div, h1, h2, @@ -49,32 +216,33 @@ fieldset, input, textarea, blockquote { - font-family: Verdana, Arial, Helvetica, sans-serif; /* 1em/1.5 OpenDyslexic, */ - color: #4D4D4D; /* HPR Grey */ - background: white; + font-family: inherit; + color: inherit; + background: inherit; } h1 { - font-size: 1.5rem; - margin: 1.25rem 0 0.75rem 0; + font-size: var(--default-header-1-font-size); + margin: var(--default-header-x-margin); } h2, -article * h1 { - font-size: 1.45rem; - margin: 1.25rem 0 0.75rem 0; +article * h1, +section > header:first-child { + font-size: var(--default-header-2-font-size); + margin: var(--default-header-x-margin); } h3, article * h2 { - font-size: 1.25rem; - margin: 1.25rem 0 0.75rem 0; + font-size: var(--default-header-3-font-size); + margin: var(--default-header-x-margin); } h4, article * h3 { - font-size: 1.15rem; - margin: 1.25rem 0 0.75rem 0; + font-size: var(--default-header-4-font-size); + margin: var(--default-header-x-margin); } img { @@ -82,22 +250,44 @@ img { height: auto; } -ul { +dl, ul { padding-left: 1.15rem; } li { line-height: 1.25; + margin-bottom: 0.25rem; +} +li:last-child { + margin-bottom: 0.25rem; +} + +dt, dd { + line-height: 1.25; +} + +dt { + display: list-item; + list-style-type: disc; + margin-bottom: 0.15rem; +} + +dd { + margin-bottom: 0.35rem; + margin-left: 1rem; } a { - text-decoration: none; + color: var(--link-primary); + text-decoration-style: dotted; + text-decoration-color: inherit; + text-decoration-thickness: .125rem; + text-underline-offset: 0.2rem; } - a:hover { cursor: pointer; + color: var(--link-primary-hover); } - hr { background: #4D4D4D; border: 0; @@ -105,7 +295,7 @@ hr { } audio { - padding: .7em 0em .5em 0em; + padding: 0.7em 0em 0.5em 0em; clear: both; position: relative; z-index: auto; @@ -123,359 +313,538 @@ p.meta { p.meta span label { font-weight: bold; } - -article>p, -#maincontent>p { - line-height: 1.45; +article > p, +#main_content > p, +#main_content > section > p { + line-height: var(--primary-content-line-height); } - -article#previous_five_weeks>* { - line-height: 1.35; - margin: 0; - padding: 0; +.lane { + display: flex; + flex-direction: row; + flex-wrap: wrap; + gap: 1.0rem; + justify-content: space-around; } - -article#previous_five_weeks>h3 { - margin: 1.5rem 0 0.5rem 0; +.lane.stack { + flex-direction: column; + justify-content: flex-start; } - -#container { - max-width: 58rem; - margin: 0.25rem; - padding: 0.75rem; /* fallback for browsers that don't support the clamp function) */ - padding: clamp(0.75rem, -0.25rem + 3vw, 2.0rem); - overflow: hidden; - background: white; - border: thin solid #4D4D4D; +.lane.stack > * { + flex: 1 0 100%; } - -.shadow { - -moz-box-shadow: 2px 3px 6px 3px #675958; - -webkit-box-shadow: 2px 3px 6px 3px #675958; - box-shadow: 2px 3px 6px 3px #675958; +#podcast_lane > .lane, +#project_lane > .lane, +#latest_lane.lane { + justify-content: space-around; } - -.thick_bar { - background-color: #4D4D4D; - color: white; - padding: 0.5rem; - margin: 1rem 0 1rem 0; +.lane > article, +#welcome > p { + font-size: var(--font-size-emphasis); + font-weight: 450; } - -img#hprlogo { - max-width: 20vw; - padding-right: clamp(0.75rem, -0.25rem + 3vw, 1.5rem); - float: left; - margin-top: 1rem; - margin-bottom: clamp(0.75rem, -0.25rem + 2vw, 1.5rem); -} - -#hpr_banner { - /* display: inline-block; */ - border: 0; - margin: 0 0 0rem 0; - padding: 0; -} - -#hpr_banner p { - margin: 0 0 0.5rem 0; -} - -#hpr_banner h1#sitename { - font-size: clamp(1.44rem, -1rem + 3vw, 2rem); - letter-spacing: 0.06rem; - margin: 0; - padding: 0; -} - -#hpr_banner h2 { - font-size: clamp(0.74rem, -1rem + 2vw, 1rem); - font-weight: 510; - margin: 0 0 1rem 0; - padding: 0; -} - -#hpr_banner h3 { - font-size: 1rem; - font-weight: normal; - margin: 0 0 0.5rem 0; - padding: 0; -} - -header>hr { - clear: both; -} - -#accessible_menu { - font-size: smaller; -} - -/* The main navigation menu */ -header>nav.menu { - display: block; - background-color: #4D4D4D; /* HPR Grey */ - text-align: Left; - clear: both; /* Forces the menu to appear after the HPR Header block */ - padding: 0; - margin: 0; -} - -header>nav.menu ul { - margin: 0; - padding: 0.5rem; - background-color: inherit; - color: white; -} - -header>nav.menu ul li { - display: inline-block; - background-color: inherit; - color: inherit; - line-height: 1.5; - margin: 0; - padding: 0; - padding-right: clamp(0.5rem, -0.25rem + 3vw, 2.5rem); -} - -header>nav.menu ul li a { - color: white; - text-decoration: none; - display: block; - padding: 0.25rem 0; -} - -header>nav.menu ul li a:hover { - border-bottom: thin solid white; - padding: 0.15rem 0; - -webkit-transition: 0.3s ease-in-out color; - -moz-transition: 0.3s ease-in-out color; - transition: 0.3s ease-in-out color; -} - -header>nav.menu ul li a:visited { - color: #EDEDED; -} - -a:active, -header>nav.menu ul li a:active { - color: red; -} - -pre { - /* Add background, border and scrollbar to
 */
-	background: #eee;
-	border: 1px solid #ddd;
+#hosts tr {
+	/* Add shadows to create the "card" effect */
+	border-top: thin solid var(--shadow-cards);
+	border-left: thin solid var(--shadow-cards);
+	border-radius: 0.5rem;
+	box-shadow:
+      1px 2px 2px var(--shadow-cards),
+      2px 4px 4px var(--shadow-cards);
+	transition: 0.3s;
+	flex: 1 0 100%;
 	overflow: auto;
-	clear: both;
-	padding: 0.5rem
+	padding-bottom: 1rem;
 }
-
-code {
-	background: #eee;
-	border-radius: 0.2rem;
-	font-size: 0.95rem;
+.lane > article:hover,
+#hosts tr:hover {
+	box-shadow: 
+      4px 8px 8px var(--shadow-cards),
+      8px 16px 16px var(--shadow-cards);
 }
-
-pre code {
-	padding-right: 0.5rem;
-	font-size: 0.85rem;
-	line-height: 1;
+.lane > article > * {
+	margin-left: 1rem;
+	margin-right: 1rem;
 }
-
-pre.comment {
-	white-space: pre-wrap;
-	line-height: 1.2rem;
+.lane > article > header,
+.lane > article > h3:first-child {
+	background: var(--background-secondary);
+	padding: 1.5rem 1rem 1rem 1rem;
+	margin: 0;
+	font-weight: bold;
+	font-size: 1.45rem;
+	color: var(--background-primary);
 }
-
-table.hosts {
-	font-size: clamp(0.82rem, -0.25rem + 3vw, 1.0rem);
-	width: 100%;
-	background: white;
-	margin: 0 auto;
-	border-collapse: collapse;
-	display: inline-table;
-
+.lane > article > header > .index-link {
+	float: right;
 }
-
-table#t01,
-table.hosts {
-	display: block;
-	overflow-x: auto;
+.lane.stack > article  {
+	border-radius: 0.5rem;
+	border: thin solid var(--background-secondary);
+	max-width: calc(100vw - 12px);
 }
-
-table#t01 tbody,
-table.hosts tbody {
-	display: table;
+.lane.stack > article > header,
+.lane.stack > article > h3:first-child {
+	border-top-left-radius: 0.5rem;
+	border-top-right-radius: 0.5rem;
 }
-
-table#t01 tr:nth-child(even),
-table.hosts tr:nth-child(even) {
-	background-color: #cccccc;
-	border-bottom: thick solid white;
+.lane > article > header a,
+.lane > article > h3:first-child a {
+	color: var(--link-secondary);
 }
-
-table#t01 tr:nth-child(odd),
-table.hosts tr:nth-child(odd) {
-	background-color: white;
-	border-bottom: thick solid white;
+.lane > article > header a:hover,
+.lane > article > h3:first-child:hover {
+	color: var(--link-secondary-hover);
 }
-
-table.hosts tr td img {
-	vertical-align: middle;
-	max-height: 80px;
+.lane.stack> * > header * {
+	margin-top: 0;
+	margin-bottom: 0;
 }
-
-table.hosts th:first-child,
-table.hosts td:first-child {
-	min-width: 60px;
-	max-width: 80px;
-	text-align: left;
-	height: 62px;
+.lane.stack > * > header p {
+	font-size: var(--default-header-4-font-size);
+	margin-left: 22px;
 }
-
-table.hosts th:nth-child(2),
-table.hosts td:nth-child(2) {
-	text-align: left;
-	padding-left: clamp(0.15rem, -0.25rem + 3vw, 0.5rem);
-}
-
-table.hosts th:nth-child(3),
-table.hosts td:nth-child(3),
-table.hosts th:nth-child(4),
-table.hosts td:nth-child(4) {
-	width: 10%;
-	padding-right: clamp(0.10rem, -0.25rem + 3vw, 1rem);
-}
-
-body>div>footer {
-	margin-top: 2rem;
-}
-
-footer #more_info nav.column {
-	clear: both;
-	font-size: 0.9rem;
-	margin-left: 0.5rem;
-}
-
-footer #more_info nav.column ul li {
-	float: left;
-	margin-right: 1.5rem;
+.lane.stack > article > footer {
 	margin-bottom: 1rem;
 }
+a.lane-button {
+	display: flex;
+	flex-direction: column;
+	justify-content: center;
+	margin: 0.5rem var(--link-spacing-horizontal);
+	padding: 0.5rem 0.25rem;
+	border-width: 3.5px;
+	border-color: var(--lane-button-border);
+	border-style: solid;
+	border-radius: 10px;
+	text-align: center;
+	background-image: url("../images/lane-button-background.png");
 
-footer #more_info nav.column h2 {
-	font-size: 1.35rem;
-	margin-top: 0.5rem;
 }
-
-footer h1.thick_bar {
-	clear: left;
-	font-size: 1.15rem;
+a.lane-button p {
+	font-family: var(--lane-button-font-family);
+	text-transform: lowercase;
+	font-size: 1.4em;
+	mask-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0.1)), url("../images/charcoal.png");
+	mask-repeat: repeat;
+	mask-size: 10%;
+	background-clip: text;
+	margin: -0.25rem;
+	letter-spacing: 1px;
+	padding: 0.25rem;
 }
-
-footer #copyright {
-	font-size: smaller;
-	margin-left: 0.5rem;
-	margin-right: 0.5rem;
+a.lane-button:hover {
+	box-shadow: 
+      1px 2px 2px var(--link-primary-hover),
+      2px 4px 4px var(--link-primary-hover);
 }
-
-fieldset>table,
-fieldset>table thead,
-fieldset>table tbody,
-fieldset>table tr,
-fieldset>table th,
-fieldset>table td,
-fieldset>table td input,
-fieldset>table td textarea {
+a.lane-button img {
+	height: clamp(100px, calc(100vw - var(--for-tablet-portrait-up)), 110px);
+	transform: scaleX(0.9);		
+	mask-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0.1)), url("../images/charcoal.png");
+	mask-repeat: repeat;
+	mask-size: 70%;
+	padding: 0.5rem;
+  box-sizing: border-box;
+}
+#podcast_lane a.lane-button:first-of-type img {
+	mask-image: linear-gradient(to bottom, rgba(255, 255, 255, 0.3), rgba(255, 255, 255, 0.1)), url("../images/charcoal.png");
+	mask-repeat: repeat;
+	mask-size: 60%;
+	padding: 0.1rem;
+}
+#podcast_lane a.lane-button:first-of-type p {
+	font-size: 1.5rem;
+}
+section:nth-of-type(odd) .lane a:nth-of-type(1) {
+	border-radius: 20px 15px 25px 15px;
+}
+section:nth-of-type(odd) .lane a:nth-of-type(2) {
+	border-radius: 20px 15px 25px 15px;
+}
+section:nth-of-type(odd) .lane a:nth-of-type(3) {
+	border-radius: 10px 25px 15px 20px;
+}
+section:nth-of-type(odd) .lane a:nth-of-type(4) {
+	border-radius: 15px 15px 10px 20px;
+}
+section:nth-of-type(even) .lane a:nth-of-type(1) {
+	border-radius: 25px 10px 15px 15px;	
+}
+section:nth-of-type(even) .lane a:nth-of-type(2) {
+	border-radius: 20px 10px 15px 10px;
+}
+section:nth-of-type(even) .lane a:nth-of-type(3) {
+	border-radius: 10px 20px 10px 15px;
+}
+section:nth-of-type(even) .lane a:nth-of-type(4) {
+	border-radius: 15px 10px 25px 30px;
+}
+#tag_line,
+#title {
+	text-transform: uppercase;
+}
+#tag_line {
+	line-height: 1.1;
+}
+#tag_line *,
+#title * {
+	margin: 0;
+	padding: 0;
+	flex: 1 1 auto;
+	background: none;
+}
+#title {
+	background-image:  url("/images/hpr-splatter-logo.svg");
+	background-repeat: no-repeat;
+	background-size: 15rem;
+	background-position: left 8.5em top -2em;
+}
+#title a {
+	color: var(--link-title-color);
+}
+#title a:hover {
+	color: var(--link-primary-hover);
+}
+#title #site_acronym {
+	font-family: var(--logo-font-family);
+	font-size: var(--logo-font-size);
+	font-weight: var(--logo-font-weight); 
+	letter-spacing: var(--logo-letter-spacing);
+	line-height: var(--logo-line-height);
+	margin: var(--logo-margin);
+	color: transparent;
+}
+#title #site_acronym a {
+	text-decoration: none;
+	text-shadow: 0 1px var(--link-secondary);
+}
+#title #site_name {
+	font-size: var(--default-header-2-font-size);
+	font-weight: bold;
+}
+#tag_line {
+	text-align: center;
+}
+#tag_line #tag1,
+#tag_line #tag2 {
+	text-transform: uppercase;
+	font-family: var(--tagline-font-family);
+	font-size: clamp(1.03rem, -0.25rem + 3vw, var(--default-header-4-font-size));
+	font-weight: var(--default-header-x-font-weight);
+	letter-spacing: 0.05rem;
+}
+#tag_line #tag1 {
+	font-size: clamp(2.1rem, calc(100vw - 360px + 1rem), 2.3rem);;
+}
+#tag_line #tag3 {
+	text-align: center;
+	text-transform: capitalize;
+	font-weight: var(--default-header-x-font-weight);
+}
+#site_url {
+	font-family: "GNUTypewriter", monospace;
+	text-transform: none;
+}
+fieldset { 
+	border: thin solid var(--input-border-primary); 
+	border-radius: 0.2rem;
+}
+fieldset > table,
+fieldset > table thead,
+fieldset > table tbody,
+fieldset > table tr,
+fieldset > table th,
+fieldset > table td,
+fieldset > table td input,
+fieldset > table td textarea,
+fieldset > table td select {
 	display: block;
 	font-size: 1rem;
 }
-
-fieldset>table {
+fieldset > table {
 	width: calc(100vw + -16vw + -1rem);
 	max-width: 100%;
 }
-
-fieldset>table td input,
-fieldset>table td textarea {
-	width: calc(100vw + -16vw + -1.5rem);
-	max-width: 100%;
-	border: thin solid #DFDFDF;
+input {
+	border: thin solid var(--input-border-primary);
+	border-radius: 0.2rem;
 	margin-bottom: 0.5rem;
 	padding: 0.5rem;
 }
-
-fieldset>table td select {
-	margin-bottom: 0.5rem;
-	padding: 0.25rem;
+input[type="submit"] {
+	background-color: var(--background-secondary);
+	color: var(--text-secondary);
+	font-weight: 400;
+	width: fit-content;
 }
-
-fieldset>table td input[type="radio"] {
+input[type="submit"]:hover {
+	background-color: var(--link-primary-hover);
+	color: var(--background-primary);
+}
+select {
+	appearance: auto;
+	background: var(--background-primary);
+	color: var(--text-primary);
+	border: 1px solid var(--input-border-primary);
+	border-radius: 0.25rem;
+	cursor: pointer;
+	margin-bottom: 0.5rem;
+	padding: 0.5rem;
+}
+select:focus{
+    background: var(--background-secondary);
+	color: var(--text-secondary);
+}select:active {
+    background: var(--background-secondary);
+	color: var(--text-primary);
+}
+fieldset > input,
+fieldset > table td input,
+fieldset > table td textarea {
+	width: calc(100vw + -16vw + -1.5rem);
+	max-width: 100%;
+}
+fieldset > table td select {
+	width: calc(100vw + -16vw + -0.40rem);
+}
+fieldset > table td input[type="radio"] {
 	display: initial;
 	width: initial;
 	margin-bottom: 0.5rem;
 }
-
-fieldset>input {
-	background: #4D4D4D;
-	color: white;
-	font-weight: 600;
-	padding: 0.5rem;
-	border: thin solid #DFDFDF;
-	border-radius: 0.2rem;
+#youtube {
+	--video-ratio: calc(390 / 640);
+	width: min(calc(89vw + 0px), 640px);
+	height: min(calc(calc(89vw + 0px) * var(--video-ratio)), 390px);
+}
+#upload_method pre {
+	max-width: 80vw;
+	overflow-x: scroll;
+}
+#search form {
+	flex: 1 1 100%;
+}
+#search fieldset {
+	padding-top: 1rem;
+}
+#search fieldset > legend {
+	font-weight: var(--default-header-x-font-weight);
+}
+#search fieldset > input {
+	width: 94%;
+}
+#search fieldset > input[type="submit"] {
+	width: 100%;
+}
+#search fieldset > p {
+	margin-top: 0.5rem;
+	margin-bottom: 0.5rem;
+}
+.no-css {
+	display: none !important;
+}
+#tags .date {
+	margin:0;
+	font-size: 1rem;
+}
+#tags #tag_initial_letter_index {
+	columns: 3 auto;
+}
+#tags #tag_initial_letter_index  li {
+	font-weight: bold;
+	list-style: none;
+}
+#tags .tag-index {
+	columns: 3 calc(var(--for-tablet-landscape-up) /3 );
+	column-gap: 1rem;
+}
+#tags .index-link {
+	text-align: right;
+}
+#comments > article > .show-meta {
+	font-size: smaller;
+}
+#hosts tr {
+	gap: 0;
+	justify-content: flex-start;
+}
+#hosts td {
+	display: inline-block;
+}
+#hosts td:nth-child(-n+2) {
+	background: var(--background-secondary);
+	color: var(--background-primary);
+}
+#hosts td:nth-child(2) {
+    display: inline-flex;
+}
+#hosts td:nth-child(-n+2) a {
+	color: var(--link-secondary);
+	flex: 1;
+}
+#hosts td:nth-child(-n+2) a:hover {
+	color: var(--link-secondary-hover);
+}
+#hosts td:nth-child(-n+2) a strong {
+    display: inline-block;
+	line-height: 1.5rem;
+}
+#hosts td:nth-child(2) {
+	padding: 0.25rem 0 0 8px;
+	width: calc(100% - 90px);	
 }
 
-@media only screen and (min-width: 58rem) {
-	#container {
-		margin: 0.5rem auto;
+#hosts td:nth-last-child(-n+2) {
+	padding: 0.5rem 0 0 95px;
+}
+#hosts td:nth-last-child(2)::before {
+	content: ;
+	content: "License: ";
+}
+#hosts td:nth-last-child(1)::before {
+	content: "Last Show: ";
+}
+#hosts td > img {
+	border-radius: 0.25rem;
+}
+#host {
+	justify-content: center;
+	align-items: center;
+	gap: 0.5rem;
+}
+#host_id {
+	text-align: center;
+}
+#host_id > h2 {
+	margin-top: 0;
+}
+#host_id img {
+	border-radius: 0.25rem;
+}
+#host_meta {
+	flex: 1;
+	padding: 0 0 0.75rem 0;
+}
+#host_meta > div,
+#host_meta > p {
+	margin: 0.25rem 0;
+	line-height: var(--primary-content-line-height);
+}
+#host_meta > div > p {
+	display: inline-block;
+	margin: 0;
+	padding: 0;
+}
+.series-description {
+	margin: 0 0 1rem 0;
+	padding: 0;
+	font-style: italic;
+}
+.series-desciption > *:last-child {
+	margin-bottom: 0;
+}
+.sr-only {
+	position: absolute;
+	width: 1px;
+	height: 1px;
+	padding: 0;
+	margin: -1px;
+	overflow: hidden;
+	clip: rect(0, 0, 0, 0);
+	border: 0;
+}
+#show_notes {
+	max-width: 98vw;
+}
+#show_notes pre
+{
+    overflow: auto;
+}
+#show_notes code {
+	display: inline-block;
+    background-color: var(--show-notes-pre-background);
+    border: 1px solid #ddd;
+	padding: 0.1em 0;
+}
+nav.episodes {
+	color: var(--background-primary);
+	font-size: 0.9em;
+	display: flex;
+	flex-direction: row;
+	justify-content: space-around;
+	max-width: 100vw;
+}
+nav.episodes span {
+	color: var(--text-primary);
+	display: inline-block;
+	text-align: center;
+	border: solid thin var(--text-primary);
+}
+nav.episodes span:nth-child(-n+2),
+nav.episodes span:nth-child(-n+2) a {
+	border-top-left-radius: 2rem;
+	border-bottom-left-radius: 2rem;
+}
+nav.episodes span:nth-child(n+3),
+nav.episodes span:nth-child(n+3) a {
+	border-top-right-radius: 2rem;
+	border-bottom-right-radius: 2rem;
+}
+nav.episodes span.no-link, 
+nav.episodes span a {
+	padding: 0.3em var(--episode-nav-padding) 0.1em var(--episode-nav-padding);
+	display: inline-block;
+	min-width: 4.4em;
+	min-height: 1.5em;
+}
+nav.episodes span a:hover {
+	background-color: var(--link-primary-hover);
+	color: var(--link-secondary-hover);
+}
+nav.episodes svg {
+	margin: 0 0.2rem;
+	height: 0.85em;
+	max-width: 13px;
+	vertical-align: middle;
+}
+nav.episodes span a svg #arrow,
+nav.episodes span a svg #bar {
+	stroke: var(--link-primary);
+	fill: var(--link-primary);
+}
+nav.episodes span a:hover svg #arrow,
+nav.episodes span a:hover svg #bar {
+	stroke: var(--link-secondary-hover);
+	fill: var(--link-secondary-hover);
+}
+@media (min-width: 600px) {
+	body > header .bounding-box {
+		justify-content: space-between;
 	}
-
-	.shadow {
-		-moz-box-shadow:    1px 2px 5px 2px #675958;
-		-webkit-box-shadow: 1px 2px 5px 2px #675958;
-		box-shadow:         1px 2px 5px 2px #675958;
+	#tag_line {
+		line-height: 1;
 	}
-
-	img#hprlogo {
-		margin-bottom: 1.5rem;
+	#title #tag1 {
+		font-size: 7.5rem;
+		letter-spacing: -0.65rem;
+		line-height: 0.75;
 	}
-
-	#hpr_banner {
-		float: left;
+	#tag_line #tag2 {
+		font-size: 1.82rem;
+		letter-spacing: 0.05rem;
 	}
-
-	#hpr_banner h1#sitename {
-		font-size: 2rem;
+	#tag_line #tag1 {
+		font-size: 4rem;
 	}
-
-	#hpr_banner h2 {
-		font-size: 1rem;
+	#tag_line #tag3 {
+		font-size: 1.85rem;
+		letter-spacing: 0.05rem;
+		margin-left: 5rem;
 	}
-
-	header>hr {
-		clear: right;
+	#qr_code {
+		text-align: center;
+		max-width: 195px;
 	}
-
-	table.hosts td:first-child {
-		height: 80px;
-	}
-
-	footer #more_info nav.column {
-		clear: none;
-		float: left;
-		width: 19.5%;
-		margin-left: 0;
-	}
-
-	footer #more_info nav.column:first-child {
-		margin-left: 0.5rem;
-	}
-
-	footer #more_info nav.column ul li {
-		float: none;
-		margin-bottom: 0.5rem;
-	}
-
 	fieldset>table,
 	fieldset>table thead,
 	fieldset>table tbody,
@@ -483,7 +852,8 @@ fieldset>input {
 	fieldset>table th,
 	fieldset>table td,
 	fieldset>table td input,
-	fieldset>table td textarea {
+	fieldset>table td textarea,
+	fieldset>table td select {
 		display: revert;
 		width: revert;
 	}
@@ -515,4 +885,100 @@ fieldset>input {
 	fieldset>table td input[type="radio"] {
 		margin-top: 1.5rem;
 	}
+	fieldset>table td select {
+		margin-bottom: 1.0rem;
+		width: 100%;
+	}
+	#search fieldset > input {
+		width: 55%;
+	}
+	#search fieldset > input[type="submit"] {
+		width: 40%;
+	}
+	body > main {
+		padding: 0.25rem 2rem;
+	}
+	#latest_lane.lane section > ul {
+		margin: 0.5rem 3rem 0 1rem;	
+	}
+	#hosts tbody.lane.stack {
+		flex-direction: row;
+		justify-content: space-between;
+		gap: 1rem
+	}
+	#hosts tr {
+		flex: 1 1 45%;
+		max-width: 45%;
+	}
+	#host {
+		gap: 2rem;
+	}
+	nav.episodes {
+		display: inline-block;
+	}
+}
+@media (min-width: 900px) {
+	#podcast_lane > .lane,
+	#project_lane > .lane {
+		justify-content: flex-start;
+		gap: 2rem;
+	}
+	#latest_lane.lane section {
+		flex: 1;
+	}
+	#hosts tr {
+		flex: 1 1 30%;
+		max-width: 30%;
+	}
+}
+@media (prefers-color-scheme: dark) {
+	:root {
+		--link-primary: #bbdfe7;
+		--link-header-hover: #b54c08; /* original --link-primary-hover */;
+		--link-primary-hover: var(--link-secondary-hover);
+		--background-primary: #4d4d4d; /* HPR Grey */
+		--text-primary: #dfdfdf /*#fffff7#fafafa#fbfbee #dfdfdf */;
+		--banner-text-primary: #b6b6b6; 
+		--shadow-secondary-color: hsl(0, 0%, 40%);
+		--input-border-primary: var(--shadow-secondary-color);
+		--lane-button-color: #d5e6ea;	
+		--show-notes-pre-background: #b54c08;
+	}
+	body > header {
+		background-image: url("/images/main-header-background-dark.png");
+		background-color: #22545a;
+	}	
+	img {
+		filter: brightness(0.70);
+	}
+	a.lane-button {
+		background-image: url("/images/lane-button-background-dark.png");
+		color: var(--lane-button-color);
+	}
+	a.lane-button img {
+		filter: none;
+	}
+	.lane > article > header {
+		color: var(--text-secondary);
+	}
+	#title a:hover {
+		color: var(--link-header-hover);
+	}
+	#hosts td:nth-child(-n+2) {
+		color: var(--text-primary);
+	}
+	nav.episodes span a:hover {
+		background-color: var(--link-primary-hover);
+		color: var(--link-navigation-hover);
+	}
+	nav.episodes span svg #arrow,
+	nav.episodes span svg #bar {
+		stroke: var(--text-primary);
+		fill: var(--text-primary);
+	}
+	nav.episodes span a:hover svg #arrow,
+	nav.episodes span a:hover svg #bar {
+		stroke: var(--link-navigation-hover);
+		fill: var(--link-navigation-hover);
+	}
 }
diff --git a/public_html/css/patrickhand/BebasNeue.woff b/public_html/css/patrickhand/BebasNeue.woff
new file mode 100644
index 0000000..f81d0db
Binary files /dev/null and b/public_html/css/patrickhand/BebasNeue.woff differ
diff --git a/public_html/css/patrickhand/OFL.txt b/public_html/css/patrickhand/OFL.txt
new file mode 100644
index 0000000..2df4406
--- /dev/null
+++ b/public_html/css/patrickhand/OFL.txt
@@ -0,0 +1,93 @@
+Copyright (c) 2010-2012 Patrick Wagesreiter (mail@patrickwagesreiter.at)
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at:
+https://openfontlicense.org
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded, 
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
diff --git a/public_html/css/patrickhand/PatrickHand-Regular.ttf b/public_html/css/patrickhand/PatrickHand-Regular.ttf
new file mode 100644
index 0000000..a1b90ba
Binary files /dev/null and b/public_html/css/patrickhand/PatrickHand-Regular.ttf differ
diff --git a/public_html/css/patrickhand/PatrickHand-Regular.woff b/public_html/css/patrickhand/PatrickHand-Regular.woff
new file mode 100644
index 0000000..a904383
Binary files /dev/null and b/public_html/css/patrickhand/PatrickHand-Regular.woff differ
diff --git a/public_html/css/patrickhand/PatrickHand-Regular.woff2 b/public_html/css/patrickhand/PatrickHand-Regular.woff2
new file mode 100644
index 0000000..8e76102
Binary files /dev/null and b/public_html/css/patrickhand/PatrickHand-Regular.woff2 differ
diff --git a/public_html/images/Richard_Querin_atomic-plain.svg b/public_html/images/Richard_Querin_atomic-plain.svg
new file mode 100644
index 0000000..2313474
--- /dev/null
+++ b/public_html/images/Richard_Querin_atomic-plain.svg
@@ -0,0 +1,122 @@
+
+
+
+
+  
+  
+  
+    
+      
+        image/svg+xml
+        
+        
+      
+    
+  
+  
+    
+    
+    
+    
+      
+      
+      
+      
+    
+    
+    
+  
+
diff --git a/public_html/images/charcoal.png b/public_html/images/charcoal.png
new file mode 100644
index 0000000..ec933af
Binary files /dev/null and b/public_html/images/charcoal.png differ
diff --git a/public_html/images/contribute-audacity-export-sm.png b/public_html/images/contribute-audacity-export-sm.png
new file mode 100644
index 0000000..1c50f8e
Binary files /dev/null and b/public_html/images/contribute-audacity-export-sm.png differ
diff --git a/public_html/images/contribute-audacity-record-sm.png b/public_html/images/contribute-audacity-record-sm.png
new file mode 100644
index 0000000..2f0912c
Binary files /dev/null and b/public_html/images/contribute-audacity-record-sm.png differ
diff --git a/public_html/images/contribute-mumble-record-sm.png b/public_html/images/contribute-mumble-record-sm.png
new file mode 100644
index 0000000..b6525e6
Binary files /dev/null and b/public_html/images/contribute-mumble-record-sm.png differ
diff --git a/public_html/images/hpr-splatter-logo.svg b/public_html/images/hpr-splatter-logo.svg
new file mode 100644
index 0000000..cfbb59f
--- /dev/null
+++ b/public_html/images/hpr-splatter-logo.svg
@@ -0,0 +1,88 @@
+
+
+
+
+  
+  
+  
+    
+      
+      
+      
+      
+      
+      
+      
+    
+  
+  
+
diff --git a/public_html/images/hpr_feed_small.png b/public_html/images/hpr_feed_small.png
new file mode 100644
index 0000000..66ee472
Binary files /dev/null and b/public_html/images/hpr_feed_small.png differ
diff --git a/public_html/images/icons/arrow-first.svg b/public_html/images/icons/arrow-first.svg
new file mode 100644
index 0000000..4d67727
--- /dev/null
+++ b/public_html/images/icons/arrow-first.svg
@@ -0,0 +1,24 @@
+
+
+
+    
+  
+
diff --git a/public_html/images/icons/arrow-last.svg b/public_html/images/icons/arrow-last.svg
new file mode 100644
index 0000000..00a3f28
--- /dev/null
+++ b/public_html/images/icons/arrow-last.svg
@@ -0,0 +1,25 @@
+
+
+
+  
+  
+
diff --git a/public_html/images/icons/arrow-next.svg b/public_html/images/icons/arrow-next.svg
new file mode 100644
index 0000000..e5ca5f9
--- /dev/null
+++ b/public_html/images/icons/arrow-next.svg
@@ -0,0 +1,15 @@
+
+
+
+  
+
diff --git a/public_html/images/icons/arrow-previous.svg b/public_html/images/icons/arrow-previous.svg
new file mode 100644
index 0000000..6fe8101
--- /dev/null
+++ b/public_html/images/icons/arrow-previous.svg
@@ -0,0 +1,15 @@
+
+
+
+  
+
diff --git a/public_html/images/icons/calendar-2-line.svg b/public_html/images/icons/calendar-2-line.svg
new file mode 100644
index 0000000..b3bcbb5
--- /dev/null
+++ b/public_html/images/icons/calendar-2-line.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public_html/images/icons/mic-fill.svg b/public_html/images/icons/mic-fill.svg
new file mode 100644
index 0000000..7ce728f
--- /dev/null
+++ b/public_html/images/icons/mic-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public_html/images/icons/question-mark.svg b/public_html/images/icons/question-mark.svg
new file mode 100644
index 0000000..a270cb0
--- /dev/null
+++ b/public_html/images/icons/question-mark.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public_html/images/icons/rss-fill.svg b/public_html/images/icons/rss-fill.svg
new file mode 100644
index 0000000..3aa81eb
--- /dev/null
+++ b/public_html/images/icons/rss-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public_html/images/icons/search.svg b/public_html/images/icons/search.svg
new file mode 100644
index 0000000..aa55efe
--- /dev/null
+++ b/public_html/images/icons/search.svg
@@ -0,0 +1,57 @@
+
+
+  Search Icon
+  
+  
+  
+  
+  
+    
+      
+        
+        
+        
+      
+      
+        
+        Search Icon
+        2025-08-05
+        
+          
+            Roan Horning
+          
+        
+      
+    
+  
+
diff --git a/public_html/images/icons/stack-fill.svg b/public_html/images/icons/stack-fill.svg
new file mode 100644
index 0000000..e5c9737
--- /dev/null
+++ b/public_html/images/icons/stack-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public_html/images/icons/user-fill.svg b/public_html/images/icons/user-fill.svg
new file mode 100644
index 0000000..1bbcd53
--- /dev/null
+++ b/public_html/images/icons/user-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public_html/images/icons/volume-up-fill.svg b/public_html/images/icons/volume-up-fill.svg
new file mode 100644
index 0000000..0d3a945
--- /dev/null
+++ b/public_html/images/icons/volume-up-fill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public_html/images/lane-button-background-dark.png b/public_html/images/lane-button-background-dark.png
new file mode 100644
index 0000000..191f05a
Binary files /dev/null and b/public_html/images/lane-button-background-dark.png differ
diff --git a/public_html/images/lane-button-background.png b/public_html/images/lane-button-background.png
new file mode 100644
index 0000000..3109e63
Binary files /dev/null and b/public_html/images/lane-button-background.png differ
diff --git a/public_html/images/main-header-background-dark.png b/public_html/images/main-header-background-dark.png
new file mode 100644
index 0000000..73a93aa
Binary files /dev/null and b/public_html/images/main-header-background-dark.png differ
diff --git a/public_html/images/main-header-background.png b/public_html/images/main-header-background.png
new file mode 100644
index 0000000..d9268b6
Binary files /dev/null and b/public_html/images/main-header-background.png differ
diff --git a/public_html/images/qr_code_logo.png b/public_html/images/qr_code_logo.png
new file mode 100644
index 0000000..47f291b
Binary files /dev/null and b/public_html/images/qr_code_logo.png differ
diff --git a/site.cfg b/site.cfg
index 36b2596..170532b 100644
--- a/site.cfg
+++ b/site.cfg
@@ -10,7 +10,7 @@ driver: dbi:SQLite:hpr.db
 
 # Configure the location of the templates and the generated HTML
 [app_paths]
-templates_path: ./templates
+templates_path: ./templates:./public_html/images/icons
 output_path: ./public_html
 
 # Configure the root template page which pulls in the navigation and 
@@ -112,9 +112,9 @@ content: content-sitemap.tpl.html
 navigation: navigation-main.tpl.html
 content: content-tags.tpl.html
 
-[twat_episode]
+[twt_episode]
 navigation: navigation-get-shows.tpl.html
-content: content-twat_episode.tpl.html
+content: content-twt_episode.tpl.html
 multipage: true
 filename: eps/twt[id]/index.html
 
@@ -134,6 +134,10 @@ content: content-promote.tpl.html
 navigation: navigation-about.tpl.html
 content: content-comments_viewer.tpl.html
 
+[new_year]
+navigation: navigation-about.tpl.html
+content: content-new_year.tpl.html
+
 [hpr_ogg]
 root_template: rss.tpl.xml
 content: rss-hpr.tpl.xml
@@ -175,3 +179,15 @@ media_file_extension: spx
 [comments]
 root_template: rss-comments.tpl.xml
 filename: comments.rss
+
+[correspondent_m3u]
+root_template: m3u.tpl.m3u8
+content: m3u-correspondent.tpl.m3u8
+filename: correspondents/[id]/playlist.m3u8
+multipage: true
+
+[series_episodes_m3u]
+root_template: m3u.tpl.m3u8
+content: m3u-series_episodes.tpl.m3u8
+filename: series/[id].m3u8
+multipage: true
diff --git a/templates/content-comments_viewer.tpl.html b/templates/content-comments_viewer.tpl.html
index 2794925..28d40f6 100644
--- a/templates/content-comments_viewer.tpl.html
+++ b/templates/content-comments_viewer.tpl.html
@@ -7,7 +7,8 @@
 

Comment Viewer

Because of the spammers we have had to turn on comment moderation. Sorry about the delay this will cause.

Subscribe to the comment feed.

-
+
+
-
-
-

says:

-

Posted at relating to the show hpr which was released on by entitled -

-
-

- -

-
-Listen in ogg, spx, or mp3 format.

+
+

says:

+
+

Posted at relating to the show hpr which was released on by entitled +

+

+ +

+
+ Listen in ogg, spx, or mp3 format.

-
+
+
diff --git a/templates/content-correspondent.tpl.html b/templates/content-correspondent.tpl.html index e534255..d4144d9 100644 --- a/templates/content-correspondent.tpl.html +++ b/templates/content-correspondent.tpl.html @@ -3,68 +3,48 @@ - - - - - - - - + + + + + - - - - - - - - + + + + + - + -
- -

Correspondent

-

-


- :

-
-

- -

- + +

Correspondent

+
+
+

+


+ :

+
+
+

+
+

+

Download the M3U playlist.

+
+
+
+ +
+ +

+
+ + +
- -

- - - - -

- -
-

Become a Correspondent

+ +

+
+ + +

Become a Correspondent

diff --git a/templates/content-correspondents.tpl.html b/templates/content-correspondents.tpl.html index f4923be..a7a47fd 100644 --- a/templates/content-correspondents.tpl.html +++ b/templates/content-correspondents.tpl.html @@ -1,33 +1,34 @@ -

Correspondents

-

For more information on how to become a Correspondent see our contribute page. To add a logo here, either email one to admin at hpr or setup your email on Gravatar. To protect your browsing privacy we gather the images every hour and serve them directly from HPR.

+

For more information on how to become a Correspondent see our contribute page. To add a logo here, either email one to admin at hpr or setup your email on Gravatar. To protect your browsing privacy we gather the images every hour and serve them directly from HPR.

- - - - - +
AvatarName & Host IDLicenseLast Show
+ + + + + + + - + - + +
AvatarName & Host IDLicenseLast Show

- - Host ID:

+ Host ID:
-

Become a Correspondent

-
+

Become a Correspondent

diff --git a/templates/content-episode.tpl.html b/templates/content-episode.tpl.html index 4fc71f1..d28ac3c 100644 --- a/templates/content-episode.tpl.html +++ b/templates/content-episode.tpl.html @@ -26,7 +26,7 @@ Hosted by

-
+

@@ -61,11 +61,11 @@ Subscribe to the comments about.html#so_you_want_to_record_a_podcast">record a response show instead. + If you can't fit everything you want to say in the comment below then you really should record a response show instead.

Note to Spammers
- All comments are moderated. All links are checked by humans. We strip out all html. Feel free to record a show about yourself, or your industry, or any other topic we may find interesting. We also check shows for spam :). + All comments are moderated. All links are checked by humans. We strip out all html. Feel free to record a show about yourself, or your industry, or any other topic we may find interesting. We also check shows for spam :).

diff --git a/templates/content-episodes.tpl.html b/templates/content-episodes.tpl.html index 45eda53..c7c0b28 100644 --- a/templates/content-episodes.tpl.html +++ b/templates/content-episodes.tpl.html @@ -1,24 +1,26 @@ -
-
-

Complete Archive of Shows.

+

Complete Archive of Shows.

All this information is available to the public. Scrape if you wish but if we can format the data for you then we're happy to help.

-
+
+

+
+

Today With a Techie Archived Shows

Creative Commons License
The following work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License.

Today With a Techie Radio was brought to you by The Infonomicon Computer Club

- - +
+ +
+ -
diff --git a/templates/content-index-announcement.tpl.html b/templates/content-index-announcement.tpl.html index 12bde0f..893bc3d 100644 --- a/templates/content-index-announcement.tpl.html +++ b/templates/content-index-announcement.tpl.html @@ -1 +1,4 @@ + + + diff --git a/templates/content-index.tpl.html b/templates/content-index.tpl.html index 5fdb987..3711273 100644 --- a/templates/content-index.tpl.html +++ b/templates/content-index.tpl.html @@ -3,7 +3,6 @@ - @@ -23,11 +22,6 @@ -
-
-
-

Welcome to HPR, the Community Podcast

-
@@ -40,44 +34,111 @@ -

We started producing shows as Today with a Techie on 2005-09-19, years, months, days ago. Our shows are produced by listeners like you and can be on any topics that "are of interest to ". If you listen to HPR then please consider contributing one show a year. If you record your show now it could be released in days.

-
- -
+
+

Public Radio is a technology focused podcast that releases shows every weekday Monday to Friday. Our shows are produced by listeners like you and can be on any topic that is of interest to , makers, etc. We are a welcoming community that offers positive feedback and encourages respectful debate.

+ +
+ +
+
+
+

The Podcast

+
+ + +

Record

+
+
+ + +

Schedule

+
+
+ + +

Subscribe

+
+
+ + +

Listen

+
+
+
+
+

The Project

+
+ + +

Hosts

+
+
+ + +

Series

+
+
+ + +

About

+
+
+ + +

Search

+
+
+
+
-

Latest Shows

+
+

Latest Shows

+
-
-
-
-

hpr ::

-

-

- Hosted by on is flagged as and released under a license.
- - -
- -

-
-

See episode show notes for more information.

-
+
hpr () :: by
+
+ +
-
-
-
-

Previous five weeks

-
-eps/index.html">More Episodes…

+
+
+

Latest Comments

+
+ - -

+
Comment : on : ""
+
on hpr () "" by
- -

Older Shows

-

- Get a full list of all our shows. -

+
+

More Comments…

+
+
diff --git a/templates/content-new_year.tpl.html b/templates/content-new_year.tpl.html new file mode 100644 index 0000000..62c3bdf --- /dev/null +++ b/templates/content-new_year.tpl.html @@ -0,0 +1,106 @@ + + +

The Annual 26 Hour New Year's Eve Show

+

Welcome every TimeZone!

+

+If you keep talking, we'll keep recording. +

+

For those who don't know, on New Year's Eve , we will have a recording going on the HPR Mumble server for anyone to come on and say "Happy New Year" and talk about whatever they want. +We will leave the recording going until at least , and keep recording until the conversation stops.

+

+So please stop in. Say "Hi" and maybe join in the conversation with other HPR listeners and contributors. It's always a good time!!
+

+ +

Listen to the live stream

+ +

+
+ + +
+https://files.shownotes.ooguy.com/stream
+https://hackerpublicradio.org/live
+

+ +

Join the conversation on Mumble

+ +

Ground Rules

+

Use Push to Talk, and a Headset

+ +

With so many people on the chat, you must use push to talk. +You also need to use a Headset so the audio of the room is not fed back. +If there is a problem with your setup, then please drop and listen to the stream. +Trying to correct poor audio in post is a lot of work, that someone else will have to do.

+ +

Be Polite

+ +

When you enter the room please do not interrupt ongoing conversations. +Wait for a pause in the conversation and say Hi. +It's quite common for people you might not know to join as they wish to speak with other people in the room. +They may have been waiting all year for the chance to meet, so please give people the space to have these conversations.

+ +

Do not announce the Time Zones

+ +

As there are so many Time Zones there is no need to interrupt the conversation to announce every one. +If you are joining from a time zone that is currently switching to the New Year, then please wait for a pause and wish people Happy New Year.

+ +

Don't Fill Dead Air

+ +

This is a relaxed meet-up, and not a traditional "Radio Broadcast". +If there are no conversations going on at a given time, don't feel the need to "fill dead air". +Before the recording is posted as a podcast the silences will be truncated.

+ +

Do not monopolise the conversation

+ +

Please be mindful that you (or your beverage of choice) may be speaking too much ;-).

+ +

You are a Guest

+ +

Be respectful, and remember that attendance on the New Year Show does not constitute a show.

+ +

CC-BY-SA

+ +

The recording will be released as a podcast on HPR under a Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. +The recordings will be released mid year, when there is a lull in submissions.

+ +

Mumble Setup

+ +

Already have Mumble installed, then this link will bring you to the HPR Room.

+

Get the PC Client https://wiki.mumble.info/wiki/Main_Page
+

Get the Android Client Mumla https://f-droid.org/packages/se.lublin.mumla

+

Then join the Server: chatter.skyehaven.net
+Port: 64738
+Channel: HPR

+

Use Push to Talk. With so many people hands free is not an option.

+

For those who have never used Mumble before, see this how-to explaining the setup of the desktop Mumble client, +or listen to hpr3503 :: Configuring Mumble.

+ +

Video Only (no audio) server

+ +

+For those who wish to see the video of some of the participants we have a jitsi server.
+https://jitsi.minnix.dev/hprnye
+Please make sure your mic is muted! +

+ +

Add to the Show-notes

+

+Please help fill out the show notes
+https://shownotes.lugcast.mywire.org/p/hpr-nye-2026
+We are using Etherpad for people to share links and info to things they are discussing. +The Etherpad will be used for the HPR audio shownotes so please feel free to add to it. +The entire event will be broken into 2 to 3 hour segments and made available as HPR episodes.
+This really, really helps us out to post the show faster ! +

+ +

History

+ +

Suggested by pokey in 2011. +As podcasting tends to be a one way conversation, he thought it would be nice to get all the FLOSS, Linux, Free Culture, podcasters and Listeners in one place to get together and chat in person. +Initially it was planned to be just a few hours, but we kept missing members from other parts of the world. +The show was extended to welcome ever time zone to the New Year, which actually turns out to be 38 Timezones, over 26 Hours.

+ +

So we will record for at least 26 Hours, but will keep the recording going for an "After Show". +Some years the after show has been even longer than the show itself. +While this is on the HPR Site, it is entirely a community initiative which is supported heavily by the fine folks over at the LinuxLugCast, with the Mumble Server been provided by Delwin.

+ diff --git a/templates/content-new_year_show_announcement.tpl.html b/templates/content-new_year_show_announcement.tpl.html new file mode 100644 index 0000000..197d536 --- /dev/null +++ b/templates/content-new_year_show_announcement.tpl.html @@ -0,0 +1,29 @@ + +
+
+
+

The Annual 26 Hour New Year's Eve Show

+
+

Welcome every TimeZone!

+

+ If you keep talking, we'll keep recording. +

+

For those who don't know, on New Year's Eve , we will have a recording going on the HPR Mumble server for anyone to come on and say "Happy New Year" and talk about whatever they want. + We will leave the recording going until at least , and keep recording until the conversation stops.

+

+ So please stop in. Say "Hi" and maybe join in the conversation with other HPR listeners and contributors. It's always a good time!!
+ +

Listen to the live stream

+ +

+
+ + +
+ https://files.shownotes.ooguy.com/stream
+ https://hackerpublicradio.org/live
+

+ +

More information…

+
+
diff --git a/templates/content-search.tpl.html b/templates/content-search.tpl.html index 53e7a61..53fd39f 100644 --- a/templates/content-search.tpl.html +++ b/templates/content-search.tpl.html @@ -1,45 +1,123 @@ -
-
-

Search HPR.

-
-
-

Search Show Tags

-

-Complete list of all the Tags

-
-

Google

- - - - - -
-privacy policy -

-
-

DuckDuckGo

-
- - - - - - -
-
-privacy policy -

-
-

Bing

-

-

- - - - - -
-
-privacy policy -

-
+
+
+

Search HPR.

+
+
+
+
DuckDuckGo + + + + + + +

+ privacy policy +

+
+
+
+
Google + + + +

+ privacy policy +

+
+
+
+
Bing + + + + + +

+ privacy policy +

+
+
+
+
+
+ + + + +$Template::Stash::PRIVATE = undef; # Allow . in tag + + + + + + +
+
+

Search by Tag

+

Generated on

+
+
+

This section summarises all of the tags currently used throughout the + database. The tags are in alphabetical order and each is followed by links to + the show numbers where it is used so you can see the context the author used + it in. There are currently unique tags in the system.

+

Alphabetical index

+

This is an index to the initial letters of the tags below.

+
    + + +
  • + + +
+
+ + +

↑ Go to index

+

Tags beginning with ''

+
    + + +
  • + : + + + +
  • + +
+ + +

Go to TOP of page

+ + +$Template::Stash::PRIVATE = 1; + + +
diff --git a/templates/content-series.tpl.html b/templates/content-series.tpl.html index 797ce9d..6f84881 100644 --- a/templates/content-series.tpl.html +++ b/templates/content-series.tpl.html @@ -1,17 +1,21 @@ -

In-Depth Series

+
-

-
    -
  • Number of episodes:
  • -
  • Open/closed:
  • -
  • Date of earliest show:
  • -
  • Date of latest show:
  • -
  • Series RSS feeds: ogg, spx, mp3
  • -
- - + +
+
+
    +
  • Number of episodes:
  • +
  • Open/closed:
  • +
  • Date of earliest show:
  • +
  • Date of latest show:
  • +
  • Series RSS feeds: ogg, spx, mp3
  • +
  • Download the M3U playlist
  • +
+
+ +
diff --git a/templates/content-series_episode.tpl.html b/templates/content-series_episode.tpl.html index eea11de..9a44d0c 100644 --- a/templates/content-series_episode.tpl.html +++ b/templates/content-series_episode.tpl.html @@ -5,7 +5,6 @@ -

In-Depth Series:

    @@ -14,14 +13,18 @@
  • Date of earliest show:
  • Date of latest show:
  • Series RSS feeds: ogg, spx, mp3
  • +
  • Download the M3U playlist
-
- +

+
+
-

- +
+ +
+ diff --git a/templates/content-syndication.tpl.html b/templates/content-syndication.tpl.html index d07ea99..c8afc11 100644 --- a/templates/content-syndication.tpl.html +++ b/templates/content-syndication.tpl.html @@ -1,24 +1,20 @@

RSS Syndication

- -
-

Subscribe to our Feeds

-

Great that you want to listen. Have a look below at the feeds that best suite your listening habits.

-
-
+
+
+

rss logo The Community News Summary

-

One show a month

+

One show a month

+
-

- If you get overwhelmend by the amount of shows we produce, then this is a good place to start. -

-

- Every month, the HPR Janitors put down their mops had have a chat about all the shows, and what else has been going on in the HPR community. This is a regular show scheduled for the first Monday of the month. -

+

If you get overwhelmend by the amount of shows we produce, then this is a good place to start.

+ +

Every month, the HPR Janitors put down their mops had have a chat about all the shows, and what else has been going on in the HPR community. This is a regular show scheduled for the first Monday of the month.

+
  • opus.
  • ogg.
  • @@ -30,8 +26,10 @@
+

rss logo Two week Audio feed

-

5 shows a week

+

5 shows a week

+

Use these feeds to keep up to date with the latest HPR Episodes. @@ -77,8 +75,10 @@

  • Listener contributed comments to the episodes
  • -
    +
    +

    Other Download Options

    +

    Site Replication Sources

    @@ -111,25 +111,27 @@
    -

    Download Archive

    +

    Download Archive

    +

    Please be aware that our Archive exceeds 200Gb. We are happy for you to download them, but please make sure that you are not going to incur additional bandwidth charges on your side.

    We will be happy to physically send episodes anywhere in the world if bandwidth is an issue.

    -
    -

    Full Episode Guide

    -

    - The compete episode guide is available to you, and it lists all the shows on one page going right back to the very first episode. -

    -

    Command line download

    -

    - You can download the audio of the episodes directly from the command line using the following commands: -

    -
      -
    • ogg:
      - curl 'eps/hpr[0001-].ogg' -o "hpr#1.ogg"
    • -
    • spx:
      - curl 'eps/hpr[0001-].spx' -o "hpr#1.spx"
    • -
    • mp3:
      - curl 'eps/hpr[0001-].mp3' -o "hpr#1.mp3"
    • -
    -
    + +
    +

    Full Episode Guide

    +

    The compete episode guide is available to you, and it lists all the shows on one page going right back to the very first episode.

    +
    + +
    +

    Command line download

    +

    You can download the audio of the episodes directly from the command line using the following commands:

    +
      +
    • ogg:
      + curl 'eps/hpr[0001-].ogg' -o "hpr#1.ogg"
    • +
    • spx:
      + curl 'eps/hpr[0001-].spx' -o "hpr#1.spx"
    • +
    • mp3:
      + curl 'eps/hpr[0001-].mp3' -o "hpr#1.mp3"
    • +
    +
    +
    diff --git a/templates/content-tags.tpl.html b/templates/content-tags.tpl.html index 13a9dd3..170da33 100644 --- a/templates/content-tags.tpl.html +++ b/templates/content-tags.tpl.html @@ -1,3 +1,4 @@ +
    @@ -30,39 +31,31 @@ $Template::Stash::PRIVATE = undef; # Allow . in tag END %--> - - -
    -

    Tag summary

    -

    Page generated on

    +
    +
    +

    Search by Tag

    +

    Page generated on

    +
    +

    This section summarises all of the tags currently used throughout the database. The tags are in alphabetical order and each is followed by links to the show numbers where it is used so you can see the context the author used it in. There are currently unique tags in the system.

    Alphabetical index

    This is an index to the initial letters of the tags below.

    -
      +
        -
      • +
      -
      +
      -

      ↑ Go to index

      +

      ↑ Go to index

      Tags beginning with ''

      -
        +
        • @@ -84,3 +77,5 @@ END %--> $Template::Stash::PRIVATE = 1; + +
    \ No newline at end of file diff --git a/templates/content-twat_episode.tpl.html b/templates/content-twt_episode.tpl.html similarity index 91% rename from templates/content-twat_episode.tpl.html rename to templates/content-twt_episode.tpl.html index a560740..209f158 100644 --- a/templates/content-twat_episode.tpl.html +++ b/templates/content-twt_episode.tpl.html @@ -6,23 +6,23 @@ Hosted by on is flagged as and is released under a license.

    - - + +

    diff --git a/templates/ids-correspondent_m3u.tpl.html b/templates/ids-correspondent_m3u.tpl.html new file mode 100644 index 0000000..af06681 --- /dev/null +++ b/templates/ids-correspondent_m3u.tpl.html @@ -0,0 +1,7 @@ + + +, + + diff --git a/templates/ids-series_episodes_m3u.tpl.html b/templates/ids-series_episodes_m3u.tpl.html new file mode 100644 index 0000000..e3f89d9 --- /dev/null +++ b/templates/ids-series_episodes_m3u.tpl.html @@ -0,0 +1,7 @@ + + +, + + diff --git a/templates/ids-twat_episode.tpl.html b/templates/ids-twt_episode.tpl.html similarity index 75% rename from templates/ids-twat_episode.tpl.html rename to templates/ids-twt_episode.tpl.html index 9616fe6..4dc9cbb 100644 --- a/templates/ids-twat_episode.tpl.html +++ b/templates/ids-twt_episode.tpl.html @@ -1,6 +1,6 @@ , diff --git a/templates/m3u-correspondent.tpl.m3u8 b/templates/m3u-correspondent.tpl.m3u8 new file mode 100644 index 0000000..5b093b1 --- /dev/null +++ b/templates/m3u-correspondent.tpl.m3u8 @@ -0,0 +1,24 @@ + + + + + + +#EXTINF: , - + + + + + + + + + + +#EXTINF: , - + + + + + + diff --git a/templates/m3u-series_episodes.tpl.m3u8 b/templates/m3u-series_episodes.tpl.m3u8 new file mode 100644 index 0000000..4bbd429 --- /dev/null +++ b/templates/m3u-series_episodes.tpl.m3u8 @@ -0,0 +1,13 @@ + + + + + + +#EXTINF: , - + + + + + + diff --git a/templates/m3u.tpl.m3u8 b/templates/m3u.tpl.m3u8 new file mode 100644 index 0000000..1c61389 --- /dev/null +++ b/templates/m3u.tpl.m3u8 @@ -0,0 +1,2 @@ +#EXTM3U + diff --git a/templates/navigation-main.tpl.html b/templates/navigation-main.tpl.html index 68a0033..7bc54e3 100644 --- a/templates/navigation-main.tpl.html +++ b/templates/navigation-main.tpl.html @@ -1,11 +1,7 @@ -
      -
    • ⇧Upload⇧
    • -
    • Home »
    • -
    • Get Shows
    • -
    • Give Shows
    • -
    • Contribute
    • -
    • Tags
    • -
    • About
    • -
    • Search
    • -
    +
      +
    • Home
    • +
    • Upload
    • +
    • Download
    • +
    • About
    • +
    diff --git a/templates/page.tpl.html b/templates/page.tpl.html index 7fe781c..8c62065 100644 --- a/templates/page.tpl.html +++ b/templates/page.tpl.html @@ -12,16 +12,6 @@ Public Radio is a podcast that releases shows every weekday Monday through Friday. Our shows are produced by the community (you) and can be on any topic that is of interest to and hobbyists." /> - - - Public Radio Opus RSS" href="hpr_opus_rss.php" /> Public Radio Ogg Vorbis RSS" href="hpr_ogg_rss.php" /> @@ -33,116 +23,50 @@ - + - -
    -
    - hprlogo -
    -

    - Site Map - - skip to main content -

    -

    - H + +
    +
    + +
  • Skip to Main Content
  • +
  • Site Map
  • +
    +
    +
    +
    +
    +
    +
    +

    HPR

    +

    + Hacker Public Radio -

    -

    Your ideas, projects, opinions - podcasted.

    -

    New episodes every weekday Monday through Friday.
    - This page was generated by at

    - -
    -
    - -
    - -
    +

    + +
    +

    The Community Podcast

    +

    Sharing your ideas, projects, opinions since 2005

    +

    New episodes every weekday

    +
    +
    - -
    +
    - -
    -

    More Information...

    -
    -
    -

    Ancestry

    -
      -
    • Radio Freek America
    • -
    • BinRev Radio
    • -
    • Infonomicon
    • -
    • Today With a Techie
    • -
    -
    -
    -

    Social

    -
      -
    • Mailing list
    • -
    • Mastodon
    • -
    • Matrix
    • -
    • Mumble
    • -
    • #oggcastplanet
    • -
    • Telegram
    • -
    • Twitter.com
    • -
    • Facebook
    • -
    • Linked-In
    • -
    -
    -
    -

    Unaffiliates

    -
      -
    • Archive.org
    • -
    • Amazon Music
    • -
    • Google Podcasts
    • -
    • iHeart Radio
    • -
    • iTunes
    • -
    • Listen Notes
    • -
    • MixCloud
    • -
    • PlayerFM
    • -
    • Podchaser
    • -
    • Radio.net
    • -
    • Spotify
    • -
    • Top Podcasts
    • -
    -
    -
    -

    Commons

    -
      -
    • Free Culture Podcasts
    • -
    • archive.org
    • -
    • HPR Source Code
    • -
    • cchits.net
    • -
    • freesound.org
    • -
    • librivox.org
    • -
    • openclipart.org
    • -
    • openfontlibrary.org
    • -
    • openrouteservice.org/
    • -
    • pixabay.com/
    • -
    -
    -
    -

    Patrons

    -
      -
    • AnHonestHost.com
    • -
    • Archive.org
    • -
    • rsync.net
    • -
    -
    -
    -

    Copyright Information

    +
    +
    -

    - Unless otherwise stated, our shows are released under a - Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

    -

    + Unless otherwise stated, our shows are released under a + Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. + The HPR Website Design is released to the Public Domain. -

    -
    -
    + +
    +
    This page was generated by at +
    - - + + diff --git a/templates/queries-correspondent.tpl.html b/templates/queries-correspondent.tpl.html index 3363afe..27e9f9c 100644 --- a/templates/queries-correspondent.tpl.html +++ b/templates/queries-correspondent.tpl.html @@ -1,5 +1,12 @@ - + + + diff --git a/templates/queries-episodes.tpl.html b/templates/queries-episodes.tpl.html index d2f846b..9905fb1 100644 --- a/templates/queries-episodes.tpl.html +++ b/templates/queries-episodes.tpl.html @@ -1,14 +1,24 @@ - diff --git a/templates/queries-series_episodes.tpl.html b/templates/queries-series_episodes.tpl.html index 22fdd81..e2d4571 100644 --- a/templates/queries-series_episodes.tpl.html +++ b/templates/queries-series_episodes.tpl.html @@ -14,14 +14,24 @@ WHERE miniseries.id = ? ORDER BY name' %--> - + diff --git a/templates/rss-comments.tpl.xml b/templates/rss-comments.tpl.xml index 6bbd0de..5865382 100644 --- a/templates/rss-comments.tpl.xml +++ b/templates/rss-comments.tpl.xml @@ -50,11 +50,11 @@ %--> - <!--% item.comment_author_name | html_strip | xml_entity %--> says: <!--% item.comment_title | html_strip | xml_entity %--> - feedback.nospam@nospam.hackerpublicradio.org () + <!--% item.comment_author_name | html_strip %--> says: <!--% item.comment_title | html_strip %--> + feedback.nospam@nospam.hackerpublicradio.org () eps/hpr/index.html#comments - RE: hpr:: by
    + RE: hpr:: by

    ]]>
    diff --git a/templates/shared-episode-summary.tpl.html b/templates/shared-episode-summary.tpl.html index 2dcf07b..0216323 100644 --- a/templates/shared-episode-summary.tpl.html +++ b/templates/shared-episode-summary.tpl.html @@ -41,7 +41,7 @@ or .
    - + @@ -56,7 +56,7 @@ or

    - +

    Today with a Techie Ep. :: hosted by diff --git a/templates/shared-utils.tpl.html b/templates/shared-utils.tpl.html index 4185dde..6081ba8 100644 --- a/templates/shared-utils.tpl.html +++ b/templates/shared-utils.tpl.html @@ -93,7 +93,7 @@ - + @@ -117,18 +117,71 @@ -<< First, + + + + +
    << First, - < Previous, + < Previous, - < Previous, + < Previous, - Next >, + Next >, - Next > + Next >, - Latest >> + Latest >>
    + + + + + + + + -12-31 10:00 UTC (5:00 AM EST) + + + + + + + + -01-01 12:00 UTC (7:00 AM EST) + + + + + + + + + + + + + +