Add files via upload

This commit is contained in:
MattTheTekie 2026-05-03 21:11:04 -04:00 committed by GitHub
commit 32dcbbf639
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 972 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

BIN
background.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

241
index.html Normal file
View file

@ -0,0 +1,241 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>On Demand Simulator</title>
<style>
* { box-sizing: border-box; }
html, body {
margin: 0;
padding: 0;
width: 100%;
height: 100%;
background: black;
display: flex;
align-items: center;
justify-content: center;
font-family: Arial, Helvetica, sans-serif;
overflow: hidden;
}
/* 4:3 frame */
.screen {
width: min(100vw, calc(100vh * 4 / 3));
height: min(100vh, calc(100vw * 3 / 4));
aspect-ratio: 4 / 3;
display: flex;
flex-direction: column;
background: linear-gradient(to bottom, #00458f, #003574);
box-shadow: 0 0 40px rgba(0,0,0,0.8);
color: white;
}
.top {
display: grid;
grid-template-columns: 1.0fr 0.6fr;
flex: 0 0 40%;
border-bottom: 4px solid #001a44;
}
.brand-wrap {
display: flex;
flex-direction: column;
background: #003b82;
}
.brand {
flex: 1;
display: flex;
align-items: flex-start; /* keep top alignment */
justify-content: flex-start;
padding-left: 30px;
padding-top: 12px; /* 👈 small downward push */
}
.brand img {
max-height: 70%;
max-width: 80%;
object-fit: contain;
filter: drop-shadow(2px 2px 2px rgba(0,0,0,0.6));
}
.hero-under {
background: linear-gradient(to bottom, #2f6fbc, #4d89cf);
display: flex;
flex-direction: column;
justify-content: center;
padding: 14px 20px;
gap: 10px;
text-shadow: 3px 3px 2px rgba(0,0,0,0.6);
border-top: 3px solid rgba(255,255,255,0.15);
}
.hero-under .on {
font-size: 1.3rem;
font-weight: 900;
text-align: center;
}
.hero-under .sub {
font-size: 1.3rem;
font-weight: 700;
color: #ffe88a;
text-align: left;
}
.visual {
background: radial-gradient(circle at center, #7fc8ff, #4477aa, #2d3e52);
width: 100%;
height: 100%;
overflow: hidden;
}
.visual iframe {
width: 105%;
height: 100%;
border: 0;
}
/* CLOCK OVERLAY */
#clock {
position: absolute;
top: 180px;
right: 930px;
font-size: 1.4rem;
font-weight: 900;
color: #ffe88a;
padding: 6px 10px;
border-radius: 10px;
text-shadow: 2px 2px 2px rgba(0,0,0,0.6);
z-index: 5;
white-space: nowrap;
}
.clock-img {
width: 350px;
height: 100px;
position: absolute;
top: 130px;
right: 700px;}
.menu {
flex: 1;
padding: 18px 90px;
display: grid;
grid-template-columns: 1fr 1fr;
gap: 14px 18px;
align-content: center;
}
.btn {
border-radius: 100px;
padding: 18px 22px;
text-align: center;
font-size: 1.6rem;
font-weight: 800;
cursor: pointer;
user-select: none;
background: linear-gradient(to bottom, #2e67b6, #1e4f99);
border: 3px solid rgba(255,255,255,0.45);
box-shadow: inset 0 2px 4px rgba(255,255,255,0.25),
0 4px 8px rgba(0,0,0,0.35);
text-shadow: 2px 2px 2px rgba(0,0,0,0.65);
transition: transform 0.15s, filter 0.15s;
}
.btn.selected {
background: linear-gradient(to bottom, #f7efb0, #e5d76f);
color: black;
text-shadow: none;
}
.btn:hover { filter: brightness(1.08); }
.btn:active { transform: scale(0.98); }
</style>
</head>
<body>
<div class="screen">
<div class="top">
<div class="brand-wrap">
<div class="brand"><img src="https://www.veltron.net/images/site-banner.png"/></div>
<div class="hero-under">
<div class="on">N DEMAND MENU</div>
<div class="sub">Plan your perfect day, indoors or outdoors. View the local forecasts, radar maps, and regional outlooks to keep you and the family comfortable, rain or shine.</div>
</div>
</div>
<div class="visual">
<div id="clock">--:-- </div>
<img src="https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fwww.fandom.com%2Fbrand%2Fimages%2FTV-Guide_Logo_Family-Brands_1-p-3200.png&f=1&nofb=1&ipt=10d7c206e9bd996071105821925c3c6f77b22999e5585350b27728e73509dcc9" alt="icon" class="clock-img">
<iframe src="https://v2.weatherscan.net/" title="WeatherScan"></iframe>
</div>
</div>
<div class="menu">
<a class="btn selected">Weather</a>
<div class="btn">null</div>
<a class="btn" href="v1.html">Version 1</a>
<a class="btn" href="v2.html">Version 2</a>
</div>
</div>
<script>
const buttons = [...document.querySelectorAll('.btn')];
let selected = 0;
function updateSelection(index) {
buttons[selected].classList.remove('selected');
selected = (index + buttons.length) % buttons.length;
buttons[selected].classList.add('selected');
buttons[selected].focus();
}
buttons.forEach((btn, i) => {
btn.tabIndex = 0;
btn.addEventListener('click', () => updateSelection(i));
});
document.addEventListener('keydown', (e) => {
const cols = 2;
if (e.key === 'ArrowRight') updateSelection(selected + 1);
if (e.key === 'ArrowLeft') updateSelection(selected - 1);
if (e.key === 'ArrowDown') updateSelection(selected + cols);
if (e.key === 'ArrowUp') updateSelection(selected - cols);
if (e.key === 'Enter' || e.key === ' ') {
alert('Opening: ' + buttons[selected].innerText);
}
});
function updateClock() {
const now = new Date();
let h = now.getHours();
let m = now.getMinutes().toString().padStart(2, '0');
const ampm = h >= 12 ? 'PM' : 'AM';
h = h % 12 || 12;
document.getElementById('clock').textContent = `${h}:${m} ${ampm}`;
}
setInterval(updateClock, 1000);
updateClock();
</script>
</body>
</html>

234
test.html Normal file
View file

@ -0,0 +1,234 @@
<style>
/* styles.css */
* {
box-sizing: border-box;
margin: 0;
padding: 0;
font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}
body {
background: #000;
color: #fff;
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
}
.tv-ui {
width: 1100px;
padding: 20px 30px;
background: radial-gradient(circle at top, #1b3a6a 0, #020617 60%);
border-radius: 10px;
box-shadow: 0 0 40px rgba(0, 0, 0, 0.7);
}
/* Header */
.tv-header {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 20px;
}
.logo {
display: flex;
align-items: center;
gap: 8px;
}
.logo-icon {
width: 26px;
height: 26px;
border-radius: 50%;
background: linear-gradient(135deg, #00ff7f, #00b36b);
display: flex;
align-items: center;
justify-content: center;
font-weight: 700;
color: #003322;
}
.logo-text {
font-weight: 700;
letter-spacing: 0.08em;
color: #e5ffe5;
}
.time {
font-size: 0.95rem;
color: #e5e7eb;
}
.tv-guide {
background: #b91c1c;
color: #fff;
border: none;
padding: 8px 18px;
border-radius: 4px;
font-weight: 600;
letter-spacing: 0.05em;
cursor: pointer;
}
/* Main layout */
.tv-main {
display: grid;
grid-template-columns: 2fr 1.4fr;
gap: 20px;
}
/* Left info panel */
.info-panel {
background: rgba(15, 23, 42, 0.85);
border-radius: 8px;
padding: 16px 18px 18px;
border: 1px solid rgba(148, 163, 184, 0.4);
}
.info-title {
font-size: 0.85rem;
letter-spacing: 0.18em;
color: #9ca3af;
margin-bottom: 10px;
}
.info-section-title {
font-size: 1.1rem;
font-weight: 700;
color: #facc15;
margin-bottom: 6px;
}
.info-description {
font-size: 0.9rem;
color: #e5e7eb;
line-height: 1.4;
max-width: 95%;
margin-bottom: 16px;
}
/* Menu grid */
.menu-grid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 10px 18px;
}
.menu-column {
display: flex;
flex-direction: column;
gap: 8px;
}
.menu-btn {
background: linear-gradient(135deg, #0f172a, #1e293b);
border-radius: 999px;
border: 1px solid rgba(148, 163, 184, 0.6);
color: #e5e7eb;
padding: 8px 14px;
text-align: left;
font-size: 0.9rem;
cursor: pointer;
}
.menu-btn-highlight
</style>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>ArpWire TV UI</title>
<link rel="stylesheet" href="styles.css" />
</head>
<body>
<div class="tv-ui">
<header class="tv-header">
<div class="logo">
<span class="logo-icon">A</span>
<span class="logo-text">ARPWIRE TV</span>
</div>
<div class="time">11:47am</div>
<button class="tv-guide">TV GUIDE</button>
</header>
<main class="tv-main">
<section class="info-panel">
<div class="info-title">ON DEMAND MENU</div>
<div class="info-section">
<div class="info-section-title">☁ Weather</div>
<p class="info-description">
Plan your perfect day, indoors or outdoors. View the local forecasts, radar maps, and regional outlooks to keep you and the family comfortable, rain or shine.
</p>
</div>
<div class="menu-grid">
<div class="menu-column">
<button class="menu-btn menu-btn-highlight">Weather</button>
<button class="menu-btn">Premium Channels</button>
<button class="menu-btn">Cable Favorites</button>
<button class="menu-btn">Local News</button>
</div>
<div class="menu-column">
<button class="menu-btn">Movies</button>
<button class="menu-btn">Celebrity Entertainment</button>
<button class="menu-btn">ArpWire TV Choice</button>
<button class="menu-btn">HD On Demand</button>
<button class="menu-btn">Saved Searches</button>
</div>
</div>
</section>
<aside class="weather-panel">
<div class="weather-header">weatherscan</div>
<div class="weather-now">
<div class="weather-city">Miami</div>
<div class="weather-temp">NOW 78°</div>
<div class="weather-uv">UV Index <span>Very High</span></div>
</div>
<div class="weather-map">
<div class="map-placeholder">[Radar Map]</div>
</div>
<div class="weather-international">
<div class="section-title">INTERNATIONAL FORECASTS</div>
<ul>
<li><span>Madrid</span> <span>73 / 57 → 75 / 51</span></li>
<li><span>Tokyo</span> <span>68 / 55 → 77 / 51</span></li>
<li><span>Mexico City</span> <span>65 / 48 → 58 / 55</span></li>
</ul>
</div>
<div class="weather-today">
<div class="section-title">TODAY'S FORECAST</div>
<div class="forecast-row">
<div class="forecast-time">3 pm</div>
<div class="forecast-temp">83°</div>
</div>
<div class="forecast-row">
<div class="forecast-time">5 pm</div>
<div class="forecast-temp">82°</div>
</div>
<div class="forecast-row">
<div class="forecast-time">8 pm</div>
<div class="forecast-temp">79°</div>
</div>
<div class="forecast-row">
<div class="forecast-time">Midnight</div>
<div class="forecast-temp">76°</div>
</div>
<div class="weather-notes">
Jacksonville: 82 fair<br />
Miami: 78 partly cloudy
</div>
</div>
</aside>
</main>
</div>
</body>
</html>

247
v1.html Normal file
View file

@ -0,0 +1,247 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>On Demand Simulator</title>
<style>
* { box-sizing: border-box; }
html, body {
margin: 0;
padding: 0;
width: 100%;
height: 100%;
background: black;
display: flex;
align-items: center;
justify-content: center;
font-family: Arial, Helvetica, sans-serif;
overflow: hidden;
}
/* 4:3 frame */
.screen {
width: min(100vw, calc(100vh * 4 / 3));
height: min(100vh, calc(100vw * 3 / 4));
aspect-ratio: 4 / 3;
display: flex;
flex-direction: column;
background: linear-gradient(to bottom, #00458f, #003574);
box-shadow: 0 0 40px rgba(0,0,0,0.8);
color: white;
}
.top {
display: grid;
grid-template-columns: 1.0fr 0.6fr;
flex: 0 0 40%;
border-bottom: 4px solid #001a44;
}
.brand-wrap {
display: flex;
flex-direction: column;
background: #003b82;
}
.brand {
flex: 1;
display: flex;
align-items: flex-start; /* keep top alignment */
justify-content: flex-start;
padding-left: 30px;
padding-top: 12px; /* 👈 small downward push */
}
.brand img {
max-height: 70%;
max-width: 80%;
object-fit: contain;
filter: drop-shadow(2px 2px 2px rgba(0,0,0,0.6));
}
.hero-under {
background: linear-gradient(to bottom, #2f6fbc, #4d89cf);
display: flex;
flex-direction: column;
justify-content: center;
padding: 14px 20px;
gap: 10px;
text-shadow: 3px 3px 2px rgba(0,0,0,0.6);
border-top: 3px solid rgba(255,255,255,0.15);
}
.hero-under .on {
font-size: 1.3rem;
font-weight: 900;
text-align: center;
}
.hero-under .sub {
font-size: 1.3rem;
font-weight: 700;
color: #ffe88a;
text-align: left;
}
.visual {
background: radial-gradient(circle at center, #7fc8ff, #4477aa, #2d3e52);
width: 100%;
height: 100%;
overflow: hidden;
}
.visual iframe {
width: 105%;
height: 100%;
border: 0;
}
/* CLOCK OVERLAY */
#clock {
position: absolute;
top: 180px;
right: 930px;
font-size: 1.4rem;
font-weight: 900;
color: #ffe88a;
padding: 6px 10px;
border-radius: 10px;
text-shadow: 2px 2px 2px rgba(0,0,0,0.6);
z-index: 5;
white-space: nowrap;
}
.clock-img {
width: 350px;
height: 100px;
position: absolute;
top: 130px;
right: 700px;}
.menu {
flex: 1;
padding: 18px 90px;
display: grid;
grid-template-columns: 1fr 1fr;
gap: 14px 18px;
align-content: center;
}
.btn {
border-radius: 100px;
padding: 18px 22px;
text-align: center;
font-size: 1.6rem;
font-weight: 800;
cursor: pointer;
user-select: none;
background: linear-gradient(to bottom, #2e67b6, #1e4f99);
border: 3px solid rgba(255,255,255,0.45);
box-shadow: inset 0 2px 4px rgba(255,255,255,0.25),
0 4px 8px rgba(0,0,0,0.35);
text-shadow: 2px 2px 2px rgba(0,0,0,0.65);
transition: transform 0.15s, filter 0.15s;
}
.btn.selected {
background: linear-gradient(to bottom, #f7efb0, #e5d76f);
color: black;
text-shadow: none;
}
.btn:hover { filter: brightness(1.08); }
.btn:active { transform: scale(0.98); }
</style>
</head>
<body>
<div class="screen">
<div class="top">
<div class="brand-wrap">
<div class="brand"><img src="https://www.veltron.net/images/site-banner.png"/></div>
<div class="hero-under">
<div class="on">N DEMAND MENU</div>
<div class="sub">Plan your perfect day, indoors or outdoors. View the local forecasts, radar maps, and regional outlooks to keep you and the family comfortable, rain or shine.</div>
</div>
</div>
<div class="visual">
<div id="clock">--:-- </div>
<img src="https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fwww.fandom.com%2Fbrand%2Fimages%2FTV-Guide_Logo_Family-Brands_1-p-3200.png&f=1&nofb=1&ipt=10d7c206e9bd996071105821925c3c6f77b22999e5585350b27728e73509dcc9" alt="icon" class="clock-img">
<iframe src="https://v2.weatherscan.net/" title="WeatherScan"></iframe>
</div>
</div>
<div class="menu">
<div class="btn selected">Weather</div>
<div class="btn">Movies</div>
<div class="btn">Premium Channels</div>
<div class="btn">Celebrity Entertainment</div>
<div class="btn">Cable Favourites</div>
<div class="btn">Veltron TV Choice</div>
<div class="btn">Local News</div>
<div class="btn">HD On Demand</div>
<div class="btn">Primetime</div>
<div class="btn">Saved Searches</div>
</div>
</div>
<script>
const buttons = [...document.querySelectorAll('.btn')];
let selected = 0;
function updateSelection(index) {
buttons[selected].classList.remove('selected');
selected = (index + buttons.length) % buttons.length;
buttons[selected].classList.add('selected');
buttons[selected].focus();
}
buttons.forEach((btn, i) => {
btn.tabIndex = 0;
btn.addEventListener('click', () => updateSelection(i));
});
document.addEventListener('keydown', (e) => {
const cols = 2;
if (e.key === 'ArrowRight') updateSelection(selected + 1);
if (e.key === 'ArrowLeft') updateSelection(selected - 1);
if (e.key === 'ArrowDown') updateSelection(selected + cols);
if (e.key === 'ArrowUp') updateSelection(selected - cols);
if (e.key === 'Enter' || e.key === ' ') {
alert('Opening: ' + buttons[selected].innerText);
}
});
function updateClock() {
const now = new Date();
let h = now.getHours();
let m = now.getMinutes().toString().padStart(2, '0');
const ampm = h >= 12 ? 'PM' : 'AM';
h = h % 12 || 12;
document.getElementById('clock').textContent = `${h}:${m} ${ampm}`;
}
setInterval(updateClock, 1000);
updateClock();
</script>
</body>
</html>

250
v2.html Normal file
View file

@ -0,0 +1,250 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>On Demand Simulator</title>
<style>
* { box-sizing: border-box; }
html, body {
margin: 0;
padding: 0;
width: 100%;
height: 100%;
background: black;
display: flex;
align-items: center;
justify-content: center;
font-family: Arial, Helvetica, sans-serif;
overflow: hidden;
}
/* 4:3 frame */
.screen {
width: min(100vw, calc(100vh * 4 / 3));
height: min(100vh, calc(100vw * 3 / 4));
aspect-ratio: 4 / 3;
display: flex;
flex-direction: column;
background: url('background.png') center/cover no-repeat;
box-shadow: 0 0 40px rgba(0,0,0,0.8);
color: white;
}
.top {
display: grid;
grid-template-columns: 1.2fr 0.8fr;
flex: 0 0 40%;
border-bottom: 4px solid #001a44;
}
.brand-wrap {
display: flex;
flex-direction: column;
background: url('background.png') center/cover no-repeat;
}
.brand {
flex: 1;
display: flex;
align-items: flex-start; /* keep top alignment */
justify-content: flex-start;
padding-left: 30px;
padding-top: 12px; /* 👈 small downward push */
}
.brand img {
max-height: 70%;
max-width: 80%;
object-fit: contain;
filter: drop-shadow(2px 2px 2px rgba(0,0,0,0.6));
}
.hero-under {
background: url('background.png') center/cover no-repeat;
display: flex;
flex-direction: column;
justify-content: center;
padding: 14px 20px;
gap: 10px;
text-shadow: 3px 3px 2px rgba(0,0,0,0.6);
border-top: 3px solid rgba(255,255,255,0.15);
}
.hero-under .on {
font-size: 1.3rem;
font-weight: 900;
text-align: center;
}
.hero-under .sub {
font-size: 1.3rem;
font-weight: 700;
color: #ffe88a;
text-align: left;
}
.visual {
background: url('background.png') center/cover no-repeat;
width: 100%;
height: 100%;
overflow: hidden;
}
.visual iframe {
background: url('background.png') center/cover no-repeat;
width: 105%;
height: 100%;
border: 0;
}
/* CLOCK OVERLAY */
#clock {
position: absolute;
top: 125px;
right: 930px;
font-size: 1.4rem;
#font-weight: 900;
#color: #ffe88a;
padding: 6px 10px;
border-radius: 10px;
text-shadow: 2px 2px 2px rgba(0,0,0,0.6);
z-index: 5;
white-space: nowrap;
}
.clock-img {
width: 350px;
height: 100px;
position: absolute;
top: 70px;
right: 700px;}
.menu {
flex: 1;
padding: 18px 90px;
display: grid;
grid-template-columns: 1fr 1fr;
gap: 14px 18px;
align-content: center;
}
.btn {
border-radius: 100px;
padding: 18px 22px;
text-align: center;
font-size: 1.6rem;
font-weight: 800;
cursor: pointer;
user-select: none;
background: linear-gradient(to bottom, #2e67b6, #1e4f99);
border: 3px solid rgba(255,255,255,0.45);
box-shadow: inset 0 2px 4px rgba(255,255,255,0.25),
0 4px 8px rgba(0,0,0,0.35);
text-shadow: 2px 2px 2px rgba(0,0,0,0.65);
transition: transform 0.15s, filter 0.15s;
}
.btn.selected {
background: linear-gradient(to bottom, #f7efb0, #e5d76f);
color: black;
text-shadow: none;
}
.btn:hover { filter: brightness(1.08); }
.btn:active { transform: scale(0.98); }
</style>
</head>
<body>
<div class="screen">
<div class="top">
<div class="brand-wrap">
<div class="brand"><img src="https://www.veltron.net/images/site-banner.png"/></div>
<div class="hero-under">
<div class="on">N DEMAND MENU</div>
<div class="sub">⛅ Weather<br><p style="color: white;">Plan your perfect day, indoors or outdoors. View the local forecasts, radar maps, and regional outlooks to keep you and the family comfortable, rain or shine.</div></p>
</div>
</div>
<div class="visual">
<div id="clock">--:-- </div>
<img src="https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fwww.fandom.com%2Fbrand%2Fimages%2FTV-Guide_Logo_Family-Brands_1-p-3200.png&f=1&nofb=1&ipt=10d7c206e9bd996071105821925c3c6f77b22999e5585350b27728e73509dcc9" alt="icon" class="clock-img">
<iframe src="https://v2.weatherscan.net/" title="WeatherScan"></iframe>
</div>
</div>
<div class="menu">
<div class="btn selected">Weather</div>
<div class="btn">Movies</div>
<div class="btn">Premium Channels</div>
<div class="btn">Celebrity Entertainment</div>
<div class="btn">Cable Favourites</div>
<div class="btn">Veltron TV Choice</div>
<div class="btn">Local News</div>
<div class="btn">HD On Demand</div>
<div class="btn">Primetime</div>
<div class="btn">Saved Searches</div>
</div>
<center> <a>V2 IS IN HEAVY BETA. BASED on https://www.youtube.com/watch?v=AoDA9YYTg4s</a></center>
</div>
<script>
const buttons = [...document.querySelectorAll('.btn')];
let selected = 0;
function updateSelection(index) {
buttons[selected].classList.remove('selected');
selected = (index + buttons.length) % buttons.length;
buttons[selected].classList.add('selected');
buttons[selected].focus();
}
buttons.forEach((btn, i) => {
btn.tabIndex = 0;
btn.addEventListener('click', () => updateSelection(i));
});
document.addEventListener('keydown', (e) => {
const cols = 2;
if (e.key === 'ArrowRight') updateSelection(selected + 1);
if (e.key === 'ArrowLeft') updateSelection(selected - 1);
if (e.key === 'ArrowDown') updateSelection(selected + cols);
if (e.key === 'ArrowUp') updateSelection(selected - cols);
if (e.key === 'Enter' || e.key === ' ') {
alert('Opening: ' + buttons[selected].innerText);
}
});
function updateClock() {
const now = new Date();
let h = now.getHours();
let m = now.getMinutes().toString().padStart(2, '0');
const ampm = h >= 12 ? 'PM' : 'AM';
h = h % 12 || 12;
document.getElementById('clock').textContent = `${h}:${m} ${ampm}`;
}
setInterval(updateClock, 1000);
updateClock();
</script>
</body>
</html>