diff --git a/server/scripts/index.mjs b/server/scripts/index.mjs
index 7f8ea9a..a64b1ac 100644
--- a/server/scripts/index.mjs
+++ b/server/scripts/index.mjs
@@ -4,11 +4,12 @@ import {
message as navMessage, isPlaying, resize, resetStatuses, latLonReceived, isIOS,
} from './modules/navigation.mjs';
import { round2 } from './modules/utils/units.mjs';
-import { parseQueryString } from './modules/share.mjs';
+import { registerHiddenSetting } from './modules/share.mjs';
import settings from './modules/settings.mjs';
import AutoComplete from './modules/autocomplete.mjs';
import { loadAllData } from './modules/utils/data-loader.mjs';
import { debugFlag } from './modules/utils/debug.mjs';
+import { parseQueryString } from './modules/utils/setting.mjs';
document.addEventListener('DOMContentLoaded', () => {
init();
@@ -131,7 +132,7 @@ const init = async () => {
const { lat, lon } = JSON.parse(latLon);
getForecastFromLatLon(lat, lon, true);
} else {
- // otherwise use pre-stored data
+ // otherwise use pre-stored data
loadData(JSON.parse(latLon));
}
}
@@ -177,6 +178,10 @@ const init = async () => {
// swipe functionality
document.querySelector('#container').addEventListener('swiped-left', () => swipeCallBack('left'));
document.querySelector('#container').addEventListener('swiped-right', () => swipeCallBack('right'));
+
+ // register hidden settings for search and location query
+ registerHiddenSetting('latLonQuery', () => localStorage.getItem('latLonQuery'));
+ registerHiddenSetting('latLon', () => localStorage.getItem('latLon'));
};
const geocodeLatLonQuery = async (query) => {
diff --git a/server/scripts/modules/media.mjs b/server/scripts/modules/media.mjs
index f928958..e06c6b7 100644
--- a/server/scripts/modules/media.mjs
+++ b/server/scripts/modules/media.mjs
@@ -1,9 +1,13 @@
import { text } from './utils/fetch.mjs';
import Setting from './utils/setting.mjs';
+import { registerHiddenSetting } from './share.mjs';
let playlist;
let currentTrack = 0;
let player;
+let sliderTimeout = null;
+let volumeSlider = null;
+let volumeSliderInput = null;
const mediaPlaying = new Setting('mediaPlaying', {
name: 'Media Playing',
@@ -14,9 +18,24 @@ const mediaPlaying = new Setting('mediaPlaying', {
document.addEventListener('DOMContentLoaded', () => {
// add the event handler to the page
- document.getElementById('ToggleMedia').addEventListener('click', toggleMedia);
+ document.getElementById('ToggleMedia').addEventListener('click', handleClick);
+ // get the slider elements
+ volumeSlider = document.querySelector('#ToggleMediaContainer .volume-slider');
+ volumeSliderInput = volumeSlider.querySelector('input');
+
+ // catch interactions with the volume slider (timeout handler)
+ // called on any interaction via 'input' (vs change) for immediate volume response
+ volumeSlider.addEventListener('input', setSliderTimeout);
+ volumeSlider.addEventListener('input', sliderChanged);
+
+ // add listener for mute (pause) button under the volume slider
+ volumeSlider.querySelector('img').addEventListener('click', stopMedia);
+
// get the playlist
getMedia();
+
+ // register the volume setting
+ registerHiddenSetting(mediaVolume.elemId, mediaVolume);
});
const scanMusicDirectory = async () => {
@@ -77,7 +96,7 @@ const enableMediaPlayer = () => {
// randomize the list
randomizePlaylist();
// enable the icon
- const icon = document.getElementById('ToggleMedia');
+ const icon = document.getElementById('ToggleMediaContainer');
icon.classList.add('available');
// set the button type
setIcon();
@@ -85,15 +104,12 @@ const enableMediaPlayer = () => {
if (mediaPlaying.value === true) {
startMedia();
}
- // add the volume control to the page
- const settingsSection = document.querySelector('#settings');
- settingsSection.append(mediaVolume.generate());
}
};
const setIcon = () => {
// get the icon
- const icon = document.getElementById('ToggleMedia');
+ const icon = document.getElementById('ToggleMediaContainer');
if (mediaPlaying.value === true) {
icon.classList.add('playing');
} else {
@@ -101,18 +117,54 @@ const setIcon = () => {
}
};
-const toggleMedia = (forcedState) => {
- // handle forcing
- if (typeof forcedState === 'boolean') {
- mediaPlaying.value = forcedState;
- } else {
- // toggle the state
- mediaPlaying.value = !mediaPlaying.value;
+const handleClick = () => {
+ // if media is off, start it
+ if (mediaPlaying.value === false) {
+ mediaPlaying.value = true;
}
+
+ if (mediaPlaying.value === true && !volumeSlider.classList.contains('show')) {
+ // if media is playing and the slider isn't open, open it
+ showVolumeSlider();
+ } else {
+ // hide the volume slider
+ hideVolumeSlider();
+ }
+
// handle the state change
stateChanged();
};
+// set a timeout for the volume slider (called by interactions with the slider)
+const setSliderTimeout = () => {
+ // clear existing timeout
+ if (sliderTimeout) clearTimeout(sliderTimeout);
+ // set a new timeout
+ sliderTimeout = setTimeout(hideVolumeSlider, 5000);
+};
+
+// show the volume slider and configure a timeout
+const showVolumeSlider = () => {
+ setSliderTimeout();
+
+ // show the slider
+ if (volumeSlider) {
+ volumeSlider.classList.add('show');
+ }
+};
+
+// hide the volume slider and clean up the timeout
+const hideVolumeSlider = () => {
+ // clear the timeout handler
+ if (sliderTimeout) clearTimeout(sliderTimeout);
+ sliderTimeout = null;
+
+ // hide the element
+ if (volumeSlider) {
+ volumeSlider.classList.remove('show');
+ }
+};
+
const startMedia = async () => {
// if there's not media player yet, enable it
if (!player) {
@@ -134,9 +186,12 @@ const startMedia = async () => {
};
const stopMedia = () => {
+ hideVolumeSlider();
if (!player) return;
player.pause();
+ mediaPlaying.value = false;
setTrackName('Not playing');
+ setIcon();
};
const stateChanged = () => {
@@ -170,6 +225,16 @@ const setVolume = (newVolume) => {
}
};
+const sliderChanged = () => {
+ // get the value of the slider
+ if (volumeSlider) {
+ const newValue = volumeSliderInput.value;
+ const cleanValue = parseFloat(newValue) / 100;
+ setVolume(cleanValue);
+ mediaVolume.value = cleanValue;
+ }
+};
+
const mediaVolume = new Setting('mediaVolume', {
name: 'Volume',
type: 'select',
@@ -205,7 +270,9 @@ const initializePlayer = () => {
player.src = `music/${playlist.availableFiles[currentTrack]}`;
setTrackName(playlist.availableFiles[currentTrack]);
player.type = 'audio/mpeg';
+ // set volume and slider indicator
setVolume(mediaVolume.value);
+ volumeSliderInput.value = Math.round(mediaVolume.value * 100);
};
const playerCanPlay = async () => {
@@ -238,5 +305,5 @@ const setTrackName = (fileName) => {
export {
// eslint-disable-next-line import/prefer-default-export
- toggleMedia,
+ handleClick,
};
diff --git a/server/scripts/modules/settings.mjs b/server/scripts/modules/settings.mjs
index 4c9795c..34a0300 100644
--- a/server/scripts/modules/settings.mjs
+++ b/server/scripts/modules/settings.mjs
@@ -1,4 +1,5 @@
import Setting from './utils/setting.mjs';
+import { registerHiddenSetting } from './share.mjs';
// Initialize settings immediately so other modules can access them
const settings = { speed: { value: 1.0 } };
@@ -6,6 +7,11 @@ const settings = { speed: { value: 1.0 } };
// Track settings that need DOM changes after early initialization
const deferredDomSettings = new Set();
+// don't show checkboxes for these settings
+const hiddenSettings = [
+ 'scanLines',
+];
+
// Declare change functions first, before they're referenced in init() to avoid the Temporal Dead Zone (TDZ)
const wideScreenChange = (value) => {
const container = document.querySelector('#divTwc');
@@ -63,13 +69,19 @@ const scanLineChange = (value) => {
return;
}
+ const modeSelect = document.getElementById('settings-scanLineMode-label');
+
if (value) {
container.classList.add('scanlines');
navIcons.classList.add('on');
+ modeSelect?.style?.removeProperty('display');
} else {
// Remove all scanline classes
container.classList.remove('scanlines', 'scanlines-auto', 'scanlines-fine', 'scanlines-normal', 'scanlines-thick', 'scanlines-classic', 'scanlines-retro');
navIcons.classList.remove('on');
+ if (modeSelect) {
+ modeSelect.style.display = 'none';
+ }
}
};
@@ -206,10 +218,28 @@ document.addEventListener('DOMContentLoaded', () => {
}
// Then generate the settings UI
- const settingHtml = Object.values(settings).map((d) => d.generate());
+ const settingHtml = Object.values(settings).map((setting) => {
+ if (hiddenSettings.includes(setting.shortName)) {
+ // setting is hidden, register it
+ registerHiddenSetting(setting.elemId, setting);
+ return false;
+ }
+ // generate HTML for setting
+ return setting.generate();
+ }).filter((d) => d);
const settingsSection = document.querySelector('#settings');
settingsSection.innerHTML = '';
settingsSection.append(...settingHtml);
+
+ // update visibility on some settings
+ const modeSelect = document.getElementById('settings-scanLineMode-label');
+ const { value } = settings.scanLines;
+ if (value) {
+ modeSelect?.style?.removeProperty('display');
+ } else if (modeSelect) {
+ modeSelect.style.display = 'none';
+ }
+ registerHiddenSetting('settings-scanLineMode-select', settings.scanLineMode);
});
export default settings;
diff --git a/server/scripts/modules/share.mjs b/server/scripts/modules/share.mjs
index 25c4eb3..77f5e59 100644
--- a/server/scripts/modules/share.mjs
+++ b/server/scripts/modules/share.mjs
@@ -1,11 +1,10 @@
import { elemForEach } from './utils/elem.mjs';
+import Setting from './utils/setting.mjs';
document.addEventListener('DOMContentLoaded', () => init());
-// shorthand mappings for frequently used values
-const specialMappings = {
- kiosk: 'settings-kiosk-checkbox',
-};
+// array of settings that are not checkboxes or dropdowns (i.e. volume slider)
+const hiddenSettings = [];
const init = () => {
// add action to existing link
@@ -45,9 +44,15 @@ const createLink = async (e) => {
}
}));
- // add the location string
- queryStringElements.latLonQuery = localStorage.getItem('latLonQuery');
- queryStringElements.latLon = localStorage.getItem('latLon');
+ // get any hidden settings
+ hiddenSettings.forEach((setting) => {
+ // determine type
+ if (setting.value instanceof Setting) {
+ queryStringElements[setting.name] = setting.value.value;
+ } else if (typeof setting.value === 'function') {
+ queryStringElements[setting.name] = setting.value();
+ }
+ });
const queryString = (new URLSearchParams(queryStringElements)).toString();
@@ -90,29 +95,17 @@ const writeLinkToPage = (url) => {
shareLinkUrl.select();
};
-const parseQueryString = () => {
- // return memoized result
- if (parseQueryString.params) return parseQueryString.params;
- const urlSearchParams = new URLSearchParams(window.location.search);
-
- // turn into an array of key-value pairs
- const paramsArray = [...urlSearchParams];
-
- // add additional expanded keys
- paramsArray.forEach((paramPair) => {
- const expandedKey = specialMappings[paramPair[0]];
- if (expandedKey) {
- paramsArray.push([expandedKey, paramPair[1]]);
- }
+const registerHiddenSetting = (name, value) => {
+ // name is the id of the element
+ // value can be a function that returns the current value of the setting
+ // or an instance of Setting
+ hiddenSettings.push({
+ name,
+ value,
});
-
- // memoize result
- parseQueryString.params = Object.fromEntries(paramsArray);
-
- return parseQueryString.params;
};
export {
createLink,
- parseQueryString,
+ registerHiddenSetting,
};
diff --git a/server/scripts/modules/utils/setting.mjs b/server/scripts/modules/utils/setting.mjs
index 17e44f3..933612e 100644
--- a/server/scripts/modules/utils/setting.mjs
+++ b/server/scripts/modules/utils/setting.mjs
@@ -1,5 +1,3 @@
-import { parseQueryString } from '../share.mjs';
-
const SETTINGS_KEY = 'Settings';
const DEFAULTS = {
@@ -15,6 +13,11 @@ const DEFAULTS = {
placeholder: '',
};
+// shorthand mappings for frequently used values
+const specialMappings = {
+ kiosk: 'settings-kiosk-checkbox',
+};
+
class Setting {
constructor(shortName, _options) {
if (shortName === undefined) {
@@ -35,9 +38,10 @@ class Setting {
this.visible = options.visible;
this.changeAction = options.changeAction;
this.placeholder = options.placeholder;
+ this.elemId = `settings-${shortName}-${this.type}`;
// get value from url
- const urlValue = parseQueryString()?.[`settings-${shortName}-${this.type}`];
+ const urlValue = parseQueryString()?.[this.elemId];
let urlState;
if (this.type === 'checkbox' && urlValue !== undefined) {
urlState = urlValue === 'true';
@@ -254,7 +258,10 @@ class Setting {
break;
case 'checkbox':
default:
- this.element.querySelector('input').checked = newValue;
+ // allow for a hidden checkbox (typically items in the player control bar)
+ if (this.element) {
+ this.element.querySelector('input').checked = newValue;
+ }
}
this.storeToLocalStorage(this.myValue);
@@ -285,4 +292,30 @@ class Setting {
}
}
+const parseQueryString = () => {
+ // return memoized result
+ if (parseQueryString.params) return parseQueryString.params;
+ const urlSearchParams = new URLSearchParams(window.location.search);
+
+ // turn into an array of key-value pairs
+ const paramsArray = [...urlSearchParams];
+
+ // add additional expanded keys
+ paramsArray.forEach((paramPair) => {
+ const expandedKey = specialMappings[paramPair[0]];
+ if (expandedKey) {
+ paramsArray.push([expandedKey, paramPair[1]]);
+ }
+ });
+
+ // memoize result
+ parseQueryString.params = Object.fromEntries(paramsArray);
+
+ return parseQueryString.params;
+};
+
export default Setting;
+
+export {
+ parseQueryString,
+};
diff --git a/server/scripts/modules/weatherdisplay.mjs b/server/scripts/modules/weatherdisplay.mjs
index 7f19c42..dfa5c0f 100644
--- a/server/scripts/modules/weatherdisplay.mjs
+++ b/server/scripts/modules/weatherdisplay.mjs
@@ -5,7 +5,7 @@ import { DateTime } from '../vendor/auto/luxon.mjs';
import {
msg, displayNavMessage, isPlaying, updateStatus, timeZone,
} from './navigation.mjs';
-import { parseQueryString } from './share.mjs';
+import { parseQueryString } from './utils/setting.mjs';
import settings from './settings.mjs';
import { elemForEach } from './utils/elem.mjs';
import { debugFlag } from './utils/debug.mjs';
diff --git a/server/styles/main.css b/server/styles/main.css
index 347f932..5a82f07 100644
--- a/server/styles/main.css
+++ b/server/styles/main.css
@@ -1 +1 @@
-@font-face{font-family:"Star4000";src:url("../fonts/Star4000.woff") format("woff");font-display:swap}body{font-family:"Star4000";margin:0}@media(prefers-color-scheme: dark){body{background-color:#000;color:#fff}}@media(prefers-color-scheme: dark){body a{color:#add8e6}}body.kiosk{margin:0px;padding:0px;overflow:hidden;width:100vw;background-color:#000 !important}#divQuery{max-width:640px;padding:8px}#divQuery .buttons{display:inline-block;width:150px;text-align:right}#divQuery .buttons #imgGetGps{height:13px;vertical-align:middle}#divQuery .buttons button{font-size:16pt;border:1px solid #a9a9a9}@media(prefers-color-scheme: dark){#divQuery .buttons button{background-color:#000;color:#fff}}#divQuery .buttons #btnGetGps img.dark{display:none}@media(prefers-color-scheme: dark){#divQuery .buttons #btnGetGps img.dark{display:inline-block}}@media(prefers-color-scheme: dark){#divQuery .buttons #btnGetGps img.light{display:none}}#divQuery .buttons #btnGetGps.active{background-color:#000}@media(prefers-color-scheme: dark){#divQuery .buttons #btnGetGps.active{background-color:#fff}}#divQuery .buttons #btnGetGps.active img{filter:invert(1)}#divQuery input,#divQuery button{font-family:"Star4000"}#divQuery #txtLocation{width:calc(100% - 170px);max-width:490px;font-size:16pt;min-width:200px;display:inline-block;background-color:#fff;color:#000;border:2px inset gray}@media(prefers-color-scheme: dark){#divQuery #txtLocation{background-color:#000;color:#fff;border:2px inset gray}}.autocomplete-suggestions{background-color:#fff;border:1px solid #000;position:absolute;z-index:9999}@media(prefers-color-scheme: dark){.autocomplete-suggestions{background-color:#000}}.autocomplete-suggestions div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:16pt}.autocomplete-suggestions div.selected{background-color:blue;color:#fff}#divTwc{display:block;background-color:#000;color:#fff;width:100%;max-width:640px;margin:0}#divTwc.wide{max-width:854px}.content-wrapper{padding:8px}#divTwcMain{width:640px;height:480px;position:relative}.wide #divTwcMain{width:854px}.kiosk #divTwc{max-width:unset}#divTwcLeft{display:none;text-align:right;flex-direction:column;vertical-align:middle}#divTwcLeft>div{flex:1;padding-right:12px;display:flex;flex-direction:column;justify-content:center}#divTwcRight{text-align:left;display:none;flex-direction:column;vertical-align:middle}#divTwcRight>div{flex:1;padding-left:12px;display:flex;flex-direction:column;justify-content:center}#divTwcBottom{display:flex;flex-direction:row;background-color:#000;color:#fff;width:640px}.wide #divTwcBottom{width:854px}@media(prefers-color-scheme: dark){#divTwcBottom{background-color:#303030}}#divTwcBottom>div{padding-left:6px;padding-right:6px}@media(max-width: 550px){#divTwcBottom>div{font-size:.9em}}@media(max-width: 500px){#divTwcBottom>div{font-size:.8em}}@media(max-width: 450px){#divTwcBottom>div{font-size:.7em}}@media(max-width: 400px){#divTwcBottom>div{font-size:.6em}}@media(max-width: 350px){#divTwcBottom>div{font-size:.5em}}#divTwcBottomLeft{flex:1;text-align:left}#divTwcBottomMiddle{flex:0;text-align:center}#divTwcBottomRight{flex:1;text-align:right}#divTwcNavContainer{display:none}#divTwcNav{width:100%;display:flex;flex-direction:row;background-color:#000;color:#fff;max-width:640px}#divTwcNav>div{padding-left:6px;padding-right:6px}#divTwcNavLeft{flex:1;text-align:left}#divTwcNavMiddle{flex:0;text-align:center}#divTwcNavRight{flex:1;text-align:right}#imgPause1x{visibility:hidden;position:absolute}.HideCursor{cursor:none !important}#txtScrollText{width:475px}@font-face{font-family:"Star4000 Extended";src:url("../fonts/Star4000 Extended.woff") format("woff");font-display:swap}@font-face{font-family:"Star4000 Large";src:url("../fonts/Star4000 Large.woff") format("woff");font-display:swap}@font-face{font-family:"Star4000 Small";src:url("../fonts/Star4000 Small.woff") format("woff");font-display:swap}#display{font-family:"Star4000";margin:0 0 0 0;width:100%}#container{position:relative;width:640px;height:480px;background-image:url(../images/backgrounds/1.png);transform-origin:0 0;background-repeat:no-repeat}.wide #container{padding-left:107px;padding-right:107px;background:url(../images/backgrounds/1-wide.png);background-repeat:no-repeat}#divTwc:fullscreen #container,.kiosk #divTwc #container{width:unset;height:unset}#loading{width:640px;height:480px;max-width:100%;text-shadow:4px 4px #000;display:flex;align-items:center;text-align:center;justify-content:center}#loading .title{font-family:Star4000 Large;font-size:36px;color:#ff0;margin-bottom:0px}#loading .version{margin-bottom:35px}#loading .instructions{font-size:18pt}.heading{font-weight:bold;margin-top:15px}#settings{margin-bottom:15px}#enabledDisplays,#settings{margin-bottom:15px}#enabledDisplays .loading,#enabledDisplays .retrying,#settings .loading,#settings .retrying{color:#ff0}#enabledDisplays .press-here,#settings .press-here{color:lime;cursor:pointer}#enabledDisplays .failed,#settings .failed{color:red}#enabledDisplays .no-data,#settings .no-data{color:silver}#enabledDisplays .disabled,#settings .disabled{color:silver}#enabledDisplays .press-here,#settings .press-here{color:#fff}@media(prefers-color-scheme: light){#enabledDisplays .loading,#enabledDisplays .retrying,#settings .loading,#settings .retrying{color:#990}#enabledDisplays .press-here,#settings .press-here{color:#000;cursor:pointer}#enabledDisplays .failed,#settings .failed{color:#900}#enabledDisplays .no-data,#settings .no-data{color:hsl(0,0%,30%)}#enabledDisplays .disabled,#settings .disabled{color:hsl(0,0%,30%)}}#enabledDisplays label,#settings label{display:block;max-width:-moz-fit-content;max-width:fit-content;cursor:pointer}#enabledDisplays label .alert,#settings label .alert{display:none}#enabledDisplays label .alert.show,#settings label .alert.show{display:inline;color:red}#divTwcBottom img{transform:scale(0.75)}@media(max-width: 550px){.wide #divTwcBottom img{transform:scale(1)}}#divTwc:fullscreen,.kiosk #divTwc{display:flex;align-items:center;justify-content:center;align-content:center}#divTwc:fullscreen.no-cursor,.kiosk #divTwc.no-cursor{cursor:none}#divTwc:fullscreen #display,.kiosk #divTwc #display{position:relative}#divTwc:fullscreen #divTwcBottom,.kiosk #divTwc #divTwcBottom{display:flex;flex-direction:row;background-color:rgba(0,0,0,.5);color:#fff;width:100%;position:absolute;bottom:0px}.kiosk #divTwc #divTwcBottom{display:none}.navButton{cursor:pointer}#ToggleScanlines{display:inline-block}#ToggleScanlines .on{display:none}#ToggleScanlines .off{display:inline-block}#ToggleScanlines.on .on{display:inline-block}#ToggleScanlines.on .off{display:none}.visible{visibility:visible;opacity:1;transition:opacity .1s linear}#divTwc:fullscreen .hidden{visibility:hidden;opacity:0;transition:visibility 0s 1s,opacity 1s linear}.github-links{width:610px;max-width:calc(100vw - 30px);display:flex;justify-content:space-evenly;flex-wrap:wrap}.github-links span a{text-decoration:none;outline:0}.github-links span .widget{display:inline-block;overflow:hidden;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif;font-size:0;line-height:0;white-space:nowrap}.github-links span .btn,.github-links span .social-count{position:relative;display:inline-block;display:inline-flex;height:14px;padding:2px 5px;font-size:11px;font-weight:600;line-height:14px;vertical-align:bottom;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;background-repeat:repeat-x;background-position:-1px -1px;background-size:110% 110%;border:1px solid}.github-links span .btn{border-radius:.25em}.github-links span .btn:not(:last-child){border-radius:.25em 0 0 .25em}.github-links span .social-count{border-left:0;border-radius:0 .25em .25em 0}.github-links span .widget-lg .btn,.github-links span .widget-lg .social-count{height:16px;padding:5px 10px;font-size:12px;line-height:16px}.github-links span .octicon{display:inline-block;vertical-align:text-top;fill:currentColor;overflow:visible}.github-links span .btn:focus-visible,.github-links span .social-count:focus-visible{outline:2px solid #0969da;outline-offset:-2px}.github-links span .btn{color:#24292f;background-color:#ebf0f4;border-color:#ccd1d5;border-color:rgba(27,31,36,.15);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg'%3e%3clinearGradient id='o' x2='0' y2='1'%3e%3cstop stop-color='%23f6f8fa'/%3e%3cstop offset='90%25' stop-color='%23ebf0f4'/%3e%3c/linearGradient%3e%3crect width='100%25' height='100%25' fill='url(%23o)'/%3e%3c/svg%3e");background-image:linear-gradient(180deg, #f6f8fa, #ebf0f4 90%);filter:progid:DXImageTransform.Microsoft.Gradient(startColorstr="#FFF6F8FA", endColorstr="#FFEAEFF3")}.github-links span :root .btn{filter:none}.github-links span .btn:hover,.github-links span .btn:focus{background-color:#e9ebef;background-position:0 -0.5em;border-color:#caccd1;border-color:rgba(27,31,36,.15);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg'%3e%3clinearGradient id='o' x2='0' y2='1'%3e%3cstop stop-color='%23f3f4f6'/%3e%3cstop offset='90%25' stop-color='%23e9ebef'/%3e%3c/linearGradient%3e%3crect width='100%25' height='100%25' fill='url(%23o)'/%3e%3c/svg%3e");background-image:linear-gradient(180deg, #f3f4f6, #e9ebef 90%);filter:progid:DXImageTransform.Microsoft.Gradient(startColorstr="#FFF3F4F6", endColorstr="#FFE8EAEE")}.github-links span :root .btn:hover,.github-links span :root .btn:focus{filter:none}.github-links span .btn:active{background-color:#e5e9ed;border-color:#c7cbcf;border-color:rgba(27,31,36,.15);box-shadow:inset 0 .15em .3em rgba(27,31,36,.15);background-image:none;filter:none}.github-links span .social-count{color:#24292f;background-color:#fff;border-color:#ddddde;border-color:rgba(27,31,36,.15)}.github-links span .social-count:hover,.github-links span .social-count:focus{color:#0969da}.github-links span .octicon-heart{color:#bf3989}@media(prefers-color-scheme: light){.github-links span .btn:focus-visible,.github-links span .social-count:focus-visible{outline:2px solid #0969da;outline-offset:-2px}.github-links span .btn{color:#24292f;background-color:#ebf0f4;border-color:#ccd1d5;border-color:rgba(27,31,36,.15);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg'%3e%3clinearGradient id='o' x2='0' y2='1'%3e%3cstop stop-color='%23f6f8fa'/%3e%3cstop offset='90%25' stop-color='%23ebf0f4'/%3e%3c/linearGradient%3e%3crect width='100%25' height='100%25' fill='url(%23o)'/%3e%3c/svg%3e");background-image:linear-gradient(180deg, #f6f8fa, #ebf0f4 90%);filter:progid:DXImageTransform.Microsoft.Gradient(startColorstr="#FFF6F8FA", endColorstr="#FFEAEFF3")}.github-links span :root .btn{filter:none}.github-links span .btn:hover,.github-links span .btn:focus{background-color:#e9ebef;background-position:0 -0.5em;border-color:#caccd1;border-color:rgba(27,31,36,.15);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg'%3e%3clinearGradient id='o' x2='0' y2='1'%3e%3cstop stop-color='%23f3f4f6'/%3e%3cstop offset='90%25' stop-color='%23e9ebef'/%3e%3c/linearGradient%3e%3crect width='100%25' height='100%25' fill='url(%23o)'/%3e%3c/svg%3e");background-image:linear-gradient(180deg, #f3f4f6, #e9ebef 90%);filter:progid:DXImageTransform.Microsoft.Gradient(startColorstr="#FFF3F4F6", endColorstr="#FFE8EAEE")}.github-links span :root .btn:hover,.github-links span :root .btn:focus{filter:none}.github-links span .btn:active{background-color:#e5e9ed;border-color:#c7cbcf;border-color:rgba(27,31,36,.15);box-shadow:inset 0 .15em .3em rgba(27,31,36,.15);background-image:none;filter:none}.github-links span .social-count{color:#24292f;background-color:#fff;border-color:#ddddde;border-color:rgba(27,31,36,.15)}.github-links span .social-count:hover,.github-links span .social-count:focus{color:#0969da}.github-links span .octicon-heart{color:#bf3989}}@media(prefers-color-scheme: dark){.github-links span .btn:focus-visible,.github-links span .social-count:focus-visible{outline:2px solid #58a6ff;outline-offset:-2px}.github-links span .btn{color:#c9d1d9;background-color:#1a1e23;border-color:#2f3439;border-color:rgba(240,246,252,.1);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg'%3e%3clinearGradient id='o' x2='0' y2='1'%3e%3cstop stop-color='%2321262d'/%3e%3cstop offset='90%25' stop-color='%231a1e23'/%3e%3c/linearGradient%3e%3crect width='100%25' height='100%25' fill='url(%23o)'/%3e%3c/svg%3e");background-image:linear-gradient(180deg, #21262d, #1a1e23 90%);filter:progid:DXImageTransform.Microsoft.Gradient(startColorstr="#FF21262D", endColorstr="#FF191D22")}.github-links span :root .btn{filter:none}.github-links span .btn:hover,.github-links span .btn:focus{background-color:#292e33;background-position:0 -0.5em;border-color:#8b949e;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg'%3e%3clinearGradient id='o' x2='0' y2='1'%3e%3cstop stop-color='%2330363d'/%3e%3cstop offset='90%25' stop-color='%23292e33'/%3e%3c/linearGradient%3e%3crect width='100%25' height='100%25' fill='url(%23o)'/%3e%3c/svg%3e");background-image:linear-gradient(180deg, #30363d, #292e33 90%);filter:progid:DXImageTransform.Microsoft.Gradient(startColorstr="#FF30363D", endColorstr="#FF282D32")}.github-links span :root .btn:hover,.github-links span :root .btn:focus{filter:none}.github-links span .btn:active{background-color:#161719;border-color:#8b949e;box-shadow:inset 0 .15em .3em rgba(1,4,9,.15);background-image:none;filter:none}.github-links span .social-count{color:#c9d1d9;background-color:#0d1117;border-color:#24282e;border-color:rgba(240,246,252,.1)}.github-links span .social-count:hover,.github-links span .social-count:focus{color:#58a6ff}.github-links span .octicon-heart{color:#db61a2}}#share-link-copied{color:#990;display:none}#share-link-instructions{display:none}body.kiosk #loading .instructions{display:none !important}.kiosk>*:not(#divTwc){display:none !important}#divInfo{display: grid;grid-template-columns:1fr 1fr;max-width: 250px;}.weather-display{width:640px;height:480px;overflow:hidden;position:relative;background-image:url(../images/backgrounds/1.png);height:0px}.weather-display.show{height:480px}.weather-display .template{display:none}.weather-display .header{width:640px;height:60px;padding-top:30px}.weather-display .header .title{color:#ff0;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000;font-family:"Star4000";font-size:24pt;position:absolute;width:250px}.weather-display .header .title.single{left:170px;top:25px}.weather-display .header .title.dual{left:170px}.weather-display .header .title.dual>div{position:absolute}.weather-display .header .title.dual .top{top:-3px}.weather-display .header .title.dual .bottom{top:26px}.weather-display .header .logo{top:30px;left:50px;position:absolute;z-index:10}.weather-display .header .noaa-logo{position:absolute;top:39px;left:356px}.weather-display .header .title.single{top:40px}.weather-display .header .date-time{white-space:pre;color:#fff;font-family:"Star4000 Small";font-size:24pt;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000;left:415px;width:170px;text-align:right;position:absolute}.weather-display .header .date-time.date{padding-top:22px}.weather-display .main{position:relative}.weather-display .main.has-scroll{width:640px;margin-top:0;height:310px;overflow:hidden}.weather-display .main.has-scroll.no-header{height:400px;margin-top:0}.weather-display .main.has-box{margin-left:64px;margin-right:64px;width:calc(100% - 128px)}#container>.scroll{display:none;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000;width:640px;height:77px;overflow:hidden;margin-top:3px;position:absolute;bottom:0px;z-index:1}#container>.scroll.hazard{background-color:#702323}#container>.scroll .scroll-container{width:640px}#container>.scroll .scroll-container .fixed,#container>.scroll .scroll-container .scroll-header{margin-left:55px;margin-right:55px;overflow:hidden;white-space:nowrap}#container>.scroll .scroll-container .scroll-header{height:26px;font-family:"Star4000 Small";font-size:20pt;margin-top:-10px}#container>.scroll .scroll-container .fixed{font-family:"Star4000";font-size:24pt}#container>.scroll .scroll-container .fixed .scroll-area{text-wrap:nowrap;position:relative}.wide #container>.scroll{width:854px;margin-left:-107px}.wide #container>.scroll .scroll-container{margin-left:107px}.weather-display .main.current-weather.main .col{height:50px;width:255px;display:inline-block;margin-top:10px;padding-top:10px;position:absolute;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000}.weather-display .main.current-weather.main .col.left{font-family:"Star4000 Extended";font-size:24pt}.weather-display .main.current-weather.main .col.right{right:0px;font-family:"Star4000 Large";font-size:20px;font-weight:bold;line-height:24px}.weather-display .main.current-weather.main .col.right .row{margin-bottom:12px}.weather-display .main.current-weather.main .col.right .row .label,.weather-display .main.current-weather.main .col.right .row .value{display:inline-block}.weather-display .main.current-weather.main .col.right .row .label{margin-left:20px}.weather-display .main.current-weather.main .col.right .row .value{float:right;margin-right:10px}.weather-display .main.current-weather.main .center{text-align:center}.weather-display .main.current-weather.main .temp{font-family:"Star4000 Large";font-size:24pt}.weather-display .main.current-weather.main .icon img{margin:0 auto;display:block}.weather-display .main.current-weather.main .wind-container{margin-left:10px;display:flex}.weather-display .main.current-weather.main .wind-container>div{width:50%}.weather-display .main.current-weather.main .wind-container .wind{text-align:right}.weather-display .main.current-weather.main .wind-gusts{text-align:right;font-size:28px}.weather-display .main.current-weather.main .location{color:#ff0;max-height:32px;margin-bottom:10px;padding-top:4px;overflow:hidden;text-wrap:nowrap}#extended-forecast-html.weather-display{background-image:url("../images/backgrounds/2.png")}.weather-display .main.extended-forecast .day-container{margin-top:16px;margin-left:27px}.weather-display .main.extended-forecast .day{text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000;padding:5px;height:285px;width:155px;display:inline-block;margin:0px 15px;font-family:"Star4000";font-size:24pt}.weather-display .main.extended-forecast .day .date{text-transform:uppercase;text-align:center;color:#ff0}.weather-display .main.extended-forecast .day .condition{text-align:center;height:74px;margin-top:5px}.weather-display .main.extended-forecast .day .icon{text-align:center;height:75px}.weather-display .main.extended-forecast .day .icon img{max-height:75px}.weather-display .main.extended-forecast .day .temperatures{width:100%}.weather-display .main.extended-forecast .day .temperatures .temperature-block{display:inline-block;width:44%;vertical-align:top}.weather-display .main.extended-forecast .day .temperatures .temperature-block>div{text-align:center}.weather-display .main.extended-forecast .day .temperatures .temperature-block .value{font-family:"Star4000 Large";margin-top:4px}.weather-display .main.extended-forecast .day .temperatures .temperature-block.lo .label{color:#8080ff}.weather-display .main.extended-forecast .day .temperatures .temperature-block.hi .label{color:#ff0}.weather-display .main.hourly.main{overflow-y:hidden}.weather-display .main.hourly.main .column-headers{background-color:#200057;height:20px;position:absolute;width:100%}.weather-display .main.hourly.main .column-headers{position:sticky;top:0px;z-index:5}.weather-display .main.hourly.main .column-headers div{display:inline-block;font-family:"Star4000 Small";font-size:24pt;color:#ff0;position:absolute;top:-14px;z-index:5;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000}.weather-display .main.hourly.main .column-headers .temp{left:355px}.weather-display .main.hourly.main .column-headers .like{left:435px}.weather-display .main.hourly.main .column-headers .wind{left:535px}.weather-display .main.hourly.main .hourly-lines{min-height:338px;padding-top:10px;background:repeating-linear-gradient(0deg, #001040 0px, #102080 136px, #102080 202px, #001040 338px)}.weather-display .main.hourly.main .hourly-lines .hourly-row{font-family:"Star4000 Large";font-size:24pt;height:72px;color:#ff0;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000;position:relative}.weather-display .main.hourly.main .hourly-lines .hourly-row>div{position:absolute;white-space:pre;top:8px}.weather-display .main.hourly.main .hourly-lines .hourly-row .hour{left:25px}.weather-display .main.hourly.main .hourly-lines .hourly-row .icon{left:255px;width:70px;text-align:center;top:unset}.weather-display .main.hourly.main .hourly-lines .hourly-row .temp{left:355px}.weather-display .main.hourly.main .hourly-lines .hourly-row .like{left:425px}.weather-display .main.hourly.main .hourly-lines .hourly-row .like.heat-index{color:#e00}.weather-display .main.hourly.main .hourly-lines .hourly-row .like.wind-chill{color:#8080ff}.weather-display .main.hourly.main .hourly-lines .hourly-row .wind{left:505px;width:100px;text-align:right}#hourly-graph-html{background-image:url(../images/backgrounds/1-chart.png)}#hourly-graph-html .header .right{position:absolute;top:35px;right:60px;width:360px;font-family:"Star4000 Small";font-size:32px;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000;text-align:right}#hourly-graph-html .header .right div{margin-top:-18px}#hourly-graph-html .header .right .temperature{color:red}#hourly-graph-html .header .right .cloud{color:#d3d3d3}#hourly-graph-html .header .right .rain{color:aqua}.weather-display .main.hourly-graph.main>div{position:absolute}.weather-display .main.hourly-graph.main .label{font-family:"Star4000 Small";font-size:24pt;color:#ff0;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000;margin-top:-15px;position:absolute}.weather-display .main.hourly-graph.main .x-axis{bottom:0px;left:0px;width:640px;height:20px}.weather-display .main.hourly-graph.main .x-axis .label{text-align:center;width:50px}.weather-display .main.hourly-graph.main .x-axis .label.l-1{left:25px}.weather-display .main.hourly-graph.main .x-axis .label.l-2{left:158px}.weather-display .main.hourly-graph.main .x-axis .label.l-3{left:291px}.weather-display .main.hourly-graph.main .x-axis .label.l-4{left:424px}.weather-display .main.hourly-graph.main .x-axis .label.l-5{left:557px}.weather-display .main.hourly-graph.main .chart{top:0px;left:50px}.weather-display .main.hourly-graph.main .chart img{width:532px;height:285px}.weather-display .main.hourly-graph.main .y-axis{top:0px;left:0px;width:50px;height:285px}.weather-display .main.hourly-graph.main .y-axis .label{text-align:right;right:0px}.weather-display .main.hourly-graph.main .y-axis .label.l-1{top:0px}.weather-display .main.hourly-graph.main .y-axis .label.l-2{top:140px}.weather-display .main.hourly-graph.main .y-axis .label.l-3{bottom:0px}.weather-display .main.hourly-graph.main .column-headers{background-color:#200057;height:20px;position:absolute;width:100%}.weather-display .main.hourly-graph.main .column-headers{position:sticky;top:0px;z-index:5}.weather-display .main.hourly-graph.main .column-headers .temp{left:355px}.weather-display .main.hourly-graph.main .column-headers .like{left:435px}.weather-display .main.hourly-graph.main .column-headers .wind{left:535px}.weather-display .main.travel.main{overflow-y:hidden}.weather-display .main.travel.main .column-headers{background-color:#200057;height:20px;position:sticky;top:0px;width:100%;z-index:5;overflow:hidden}.weather-display .main.travel.main .column-headers div{display:inline-block;font-family:"Star4000 Small";font-size:24pt;color:#ff0;position:absolute;top:-14px;z-index:5;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000}.weather-display .main.travel.main .column-headers .temp{width:50px;text-align:center}.weather-display .main.travel.main .column-headers .temp.low{left:455px}.weather-display .main.travel.main .column-headers .temp.high{left:510px;width:60px}.weather-display .main.travel.main .travel-lines{min-height:338px;padding-top:10px;background:repeating-linear-gradient(0deg, #001040 0px, #102080 136px, #102080 202px, #001040 338px)}.weather-display .main.travel.main .travel-lines .travel-row{font-family:"Star4000 Large";font-size:24pt;height:72px;color:#ff0;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000;position:relative}.weather-display .main.travel.main .travel-lines .travel-row>div{position:absolute;white-space:pre;top:8px}.weather-display .main.travel.main .travel-lines .travel-row .city{left:80px}.weather-display .main.travel.main .travel-lines .travel-row .icon{left:330px;width:70px;text-align:center;top:unset}.weather-display .main.travel.main .travel-lines .travel-row .icon img{max-width:47px}.weather-display .main.travel.main .travel-lines .travel-row .temp{width:50px;text-align:center}.weather-display .main.travel.main .travel-lines .travel-row .temp.low{left:455px}.weather-display .main.travel.main .travel-lines .travel-row .temp.high{left:510px;width:60px}.weather-display .latest-observations.main{overflow-y:hidden}.weather-display .latest-observations.main .column-headers{height:20px;position:absolute;width:100%}.weather-display .latest-observations.main .column-headers{top:0px}.weather-display .latest-observations.main .column-headers div{display:inline-block;font-family:"Star4000 Small";font-size:24pt;position:absolute;top:-14px;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000}.weather-display .latest-observations.main .column-headers .temp{display:none}.weather-display .latest-observations.main .column-headers .temp.show{display:inline-block}.weather-display .latest-observations.main .temp{left:230px}.weather-display .latest-observations.main .weather{left:280px}.weather-display .latest-observations.main .wind{left:430px}.weather-display .latest-observations.main .observation-lines{min-height:338px;padding-top:10px}.weather-display .latest-observations.main .observation-lines .observation-row{font-family:"Star4000";font-size:24pt;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000;position:relative;height:40px}.weather-display .latest-observations.main .observation-lines .observation-row>div{position:absolute;top:8px}.weather-display .latest-observations.main .observation-lines .observation-row .wind{white-space:pre;text-align:right}.weather-display .local-forecast .container{position:relative;top:15px;margin:0px 10px;box-sizing:border-box;height:280px;overflow:hidden}.weather-display .local-forecast .forecasts{position:relative}.weather-display .local-forecast .forecast{font-family:"Star4000";font-size:24pt;text-transform:uppercase;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000;min-height:280px;line-height:40px}.weather-display .progress{text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000;font-family:"Star4000 Extended";font-size:19pt}.weather-display .progress .container{position:relative;top:15px;margin:0px 10px;box-sizing:border-box;height:310px;overflow:hidden;line-height:28px}.weather-display .progress .container .item{position:relative}.weather-display .progress .container .item .name{white-space:nowrap}.weather-display .progress .container .item .name::after{content:"........................................................................"}.weather-display .progress .container .item .links{position:absolute;text-align:right;right:0px;top:0px}.weather-display .progress .container .item .links>div{background-color:#26235a;display:none;padding-left:4px}.weather-display .progress .container .item .links .loading,.weather-display .progress .container .item .links .retrying{color:#ff0}.weather-display .progress .container .item .links .press-here{color:lime;cursor:pointer}.weather-display .progress .container .item .links .failed{color:red}.weather-display .progress .container .item .links .no-data{color:silver}.weather-display .progress .container .item .links .disabled{color:silver}.weather-display .progress .container .item .links.loading .loading,.weather-display .progress .container .item .links.press-here .press-here,.weather-display .progress .container .item .links.failed .failed,.weather-display .progress .container .item .links.no-data .no-data,.weather-display .progress .container .item .links.disabled .disabled,.weather-display .progress .container .item .links.retrying .retrying{display:block}@keyframes progress-scroll{0%{background-position:-40px 0}100%{background-position:40px 0}}#progress-html.weather-display .scroll .progress-bar-container{border:2px solid #000;background-color:#fff;margin:20px auto;width:524px;position:relative;display:none}#progress-html.weather-display .scroll .progress-bar-container.show{display:block}#progress-html.weather-display .scroll .progress-bar-container .progress-bar{height:20px;margin:2px;width:520px;background:repeating-linear-gradient(90deg, #09246f 0px, #09246f 5px, #364ac0 5px, #364ac0 10px, #4f99f9 10px, #4f99f9 15px, #8ffdfa 15px, #8ffdfa 20px, #4f99f9 20px, #4f99f9 25px, #364ac0 25px, #364ac0 30px, #09246f 30px, #09246f 40px);animation-duration:2s;animation-fill-mode:forwards;animation-iteration-count:infinite;animation-name:progress-scroll;animation-timing-function:steps(8, end)}#progress-html.weather-display .scroll .progress-bar-container .cover{position:absolute;top:0px;right:0px;background-color:#fff;width:100%;height:24px;transition:width 1s steps(6)}#radar-html.weather-display{background-image:url("../images/backgrounds/4.png")}#radar-html.weather-display .header{height:83px}#radar-html.weather-display .header .title.dual{color:#fff;font-family:"Arial",sans-serif;font-weight:bold;font-size:28pt;left:155px}#radar-html.weather-display .header .title.dual .top{top:-4px}#radar-html.weather-display .header .title.dual .bottom{top:31px}#radar-html.weather-display .header .right{position:absolute;right:0px;width:360px;margin-top:2px;font-family:"Star4000";font-size:18pt;font-weight:bold;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000;text-align:center}#radar-html.weather-display .header .right .scale>div{display:inline-block}#radar-html.weather-display .header .right .scale-table{display:table-row;border-collapse:collapse}#radar-html.weather-display .header .right .scale-table .box{display:table-cell;border:2px solid #000;width:17px;height:24px;padding:0}#radar-html.weather-display .header .right .scale-table .box-1{background-color:#31d216}#radar-html.weather-display .header .right .scale-table .box-2{background-color:#1c8a12}#radar-html.weather-display .header .right .scale-table .box-3{background-color:#145a0f}#radar-html.weather-display .header .right .scale-table .box-4{background-color:#0a280a}#radar-html.weather-display .header .right .scale-table .box-5{background-color:#c4b346}#radar-html.weather-display .header .right .scale-table .box-6{background-color:#be4813}#radar-html.weather-display .header .right .scale-table .box-7{background-color:#ab0e0e}#radar-html.weather-display .header .right .scale-table .box-8{background-color:#731f04}#radar-html.weather-display .header .right .scale .text{position:relative;top:-5px}#radar-html.weather-display .header .right .time{position:relative;font-weight:normal;top:-14px;font-family:"Star4000 Small";font-size:24pt}.weather-display .main.radar{overflow:hidden;height:367px}.weather-display .main.radar .container .tiles{position:absolute;width:1400px}.weather-display .main.radar .container .tiles img{vertical-align:middle}.weather-display .main.radar .container .scroll-area{position:relative}.wide.radar #container{background:url(../images/backgrounds/4-wide.png)}#regional-forecast-html.weather-display{background-image:url("../images/backgrounds/5.png")}.weather-display .main.regional-forecast{position:relative}.weather-display .main.regional-forecast .map{position:absolute;transform-origin:0 0}.weather-display .main.regional-forecast .location{position:absolute;width:140px;margin-left:-40px;margin-top:-35px}.weather-display .main.regional-forecast .location>div{position:absolute;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000}.weather-display .main.regional-forecast .location .icon{top:26px;left:44px}.weather-display .main.regional-forecast .location .icon img{max-height:32px}.weather-display .main.regional-forecast .location .temp{font-family:"Star4000 Large";font-size:28px;padding-top:2px;color:#ff0;top:28px;text-align:right;width:40px}.weather-display .main.regional-forecast .location .city{font-family:Star4000;font-size:20px}#almanac-html.weather-display{background-image:url("../images/backgrounds/3.png")}.weather-display .main.almanac{font-family:"Star4000";font-size:24pt;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000}.weather-display .main.almanac .sun{display:grid;grid-template-columns:auto auto auto;grid-template-rows:auto auto auto;gap:0px 90px;margin:3px auto 5px auto;width:-moz-fit-content;width:fit-content;line-height:30px}.weather-display .main.almanac .sun .grid-item{width:auto;height:auto;padding:0;margin:0;position:relative}.weather-display .main.almanac .sun .grid-item.header{color:#ff0;text-align:center}.weather-display .main.almanac .sun .grid-item.row-label{text-align:right}.weather-display .main.almanac .sun .grid-item.time{text-align:center}.weather-display .main.almanac .moon{position:relative;padding:7px 50px;line-height:36px}.weather-display .main.almanac .moon .title{color:#ff0;padding-left:13px}.weather-display .main.almanac .moon .day{display:inline-block;text-align:center;width:132px}.weather-display .main.almanac .moon .day .icon{padding-left:10px}.weather-display .main.almanac .moon .day .date{position:relative;top:-10px}#hazards-html.weather-display{background-image:url("../images/backgrounds/7.png")}.weather-display .main.hazards.main{overflow-y:hidden;height:480px;background-color:#702323}.weather-display .main.hazards.main .hazard-lines{min-height:400px;padding-top:10px}.weather-display .main.hazards.main .hazard-lines .hazard{font-family:"Star4000";font-size:24pt;color:#fff;text-shadow:0px 0px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000;position:relative;text-transform:uppercase;margin-top:10px;margin-left:80px;margin-right:80px;padding-bottom:10px}.wide.hazards #container{background:url(../images/backgrounds/7-wide.png)}.media{display:none}#ToggleMedia{display:none}#ToggleMedia.available{display:inline-block}#ToggleMedia.available img.on{display:none}#ToggleMedia.available img.off{display:block}#ToggleMedia.available.playing img.on{display:block}#ToggleMedia.available.playing img.off{display:none}#spc-outlook-html.weather-display{background-image:url("../images/backgrounds/6.png")}.weather-display .spc-outlook .container{position:relative;top:0px;margin:0px 10px;box-sizing:border-box;height:300px;overflow:hidden}.weather-display .spc-outlook .risk-levels{position:absolute;left:206px;font-family:"Star4000 Small";font-size:32px;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000}.weather-display .spc-outlook .risk-levels .risk-level{position:relative;top:-14px;height:20px}.weather-display .spc-outlook .risk-levels .risk-level:nth-child(1){left:100px}.weather-display .spc-outlook .risk-levels .risk-level:nth-child(2){left:80px}.weather-display .spc-outlook .risk-levels .risk-level:nth-child(3){left:60px}.weather-display .spc-outlook .risk-levels .risk-level:nth-child(4){left:40px}.weather-display .spc-outlook .risk-levels .risk-level:nth-child(5){left:20px}.weather-display .spc-outlook .risk-levels .risk-level:nth-child(6){left:0px}.weather-display .spc-outlook .days{position:absolute;top:120px}.weather-display .spc-outlook .days .day{height:60px}.weather-display .spc-outlook .days .day .day-name{position:absolute;font-family:"Star4000";font-size:24pt;width:200px;text-align:right;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000;padding-top:20px}.weather-display .spc-outlook .days .day .risk-bar{position:absolute;width:150px;height:40px;left:210px;margin-top:20px;border:3px outset hsl(0,0%,70%);background:linear-gradient(0deg, hsl(0, 0%, 40%) 0%, hsl(0, 0%, 60%) 50%, hsl(0, 0%, 40%) 100%)}.scanlines{position:relative;overflow:hidden}.scanlines:before,.scanlines:after{display:block;pointer-events:none;content:"";position:absolute}.scanlines:before{width:100%;height:1px;z-index:2147483649;background:rgba(0,0,0,.3);opacity:.75;animation:scanline 6s linear infinite}.scanlines:after{top:0;right:0;bottom:0;left:0;z-index:2147483648;background:repeating-linear-gradient(to bottom, transparent 0, transparent 1px, rgba(0, 0, 0, 0.3) 1px, rgba(0, 0, 0, 0.3) 2px);animation:none;image-rendering:crisp-edges;image-rendering:pixelated}.scanlines:before{height:var(--scanline-thickness, 1px)}.scanlines:after{background:repeating-linear-gradient(to bottom, transparent 0, transparent var(--scanline-thickness, 1px), rgba(0, 0, 0, 0.3) var(--scanline-thickness, 1px), rgba(0, 0, 0, 0.3) calc(var(--scanline-thickness, 1px) * 2))}@keyframes scanline{0%{transform:translate3d(0, 200000%, 0)}}@keyframes scanlines{0%{background-position:0 50%}}/*# sourceMappingURL=main.css.map */
\ No newline at end of file
+@font-face{font-family:"Star4000";src:url("../fonts/Star4000.woff") format("woff");font-display:swap}body{font-family:"Star4000";margin:0}@media(prefers-color-scheme: dark){body{background-color:#000;color:#fff}}@media(prefers-color-scheme: dark){body a{color:#add8e6}}body.kiosk{margin:0px;padding:0px;overflow:hidden;width:100vw;background-color:#000 !important}#divQuery{max-width:640px;padding:8px}#divQuery .buttons{display:inline-block;width:150px;text-align:right}#divQuery .buttons #imgGetGps{height:13px;vertical-align:middle}#divQuery .buttons button{font-size:16pt;border:1px solid #a9a9a9}@media(prefers-color-scheme: dark){#divQuery .buttons button{background-color:#000;color:#fff}}#divQuery .buttons #btnGetGps img.dark{display:none}@media(prefers-color-scheme: dark){#divQuery .buttons #btnGetGps img.dark{display:inline-block}}@media(prefers-color-scheme: dark){#divQuery .buttons #btnGetGps img.light{display:none}}#divQuery .buttons #btnGetGps.active{background-color:#000}@media(prefers-color-scheme: dark){#divQuery .buttons #btnGetGps.active{background-color:#fff}}#divQuery .buttons #btnGetGps.active img{filter:invert(1)}#divQuery input,#divQuery button{font-family:"Star4000"}#divQuery #txtLocation{width:calc(100% - 170px);max-width:490px;font-size:16pt;min-width:200px;display:inline-block;background-color:#fff;color:#000;border:2px inset gray}@media(prefers-color-scheme: dark){#divQuery #txtLocation{background-color:#000;color:#fff;border:2px inset gray}}.autocomplete-suggestions{background-color:#fff;border:1px solid #000;position:absolute;z-index:9999}@media(prefers-color-scheme: dark){.autocomplete-suggestions{background-color:#000}}.autocomplete-suggestions div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:16pt}.autocomplete-suggestions div.selected{background-color:blue;color:#fff}#divTwc{display:block;background-color:#000;color:#fff;width:100%;max-width:640px;margin:0}#divTwc.wide{max-width:854px}.content-wrapper{padding:8px}#divTwcMain{width:640px;height:480px;position:relative}.wide #divTwcMain{width:854px}.kiosk #divTwc{max-width:unset}#divTwcLeft{display:none;text-align:right;flex-direction:column;vertical-align:middle}#divTwcLeft>div{flex:1;padding-right:12px;display:flex;flex-direction:column;justify-content:center}#divTwcRight{text-align:left;display:none;flex-direction:column;vertical-align:middle}#divTwcRight>div{flex:1;padding-left:12px;display:flex;flex-direction:column;justify-content:center}#divTwcBottom{display:flex;flex-direction:row;background-color:#000;color:#fff;width:640px}.wide #divTwcBottom{width:854px}@media(prefers-color-scheme: dark){#divTwcBottom{background-color:#303030}}#divTwcBottom>div{padding-left:6px;padding-right:6px}@media(max-width: 550px){#divTwcBottom>div{font-size:.9em}}@media(max-width: 500px){#divTwcBottom>div{font-size:.8em}}@media(max-width: 450px){#divTwcBottom>div{font-size:.7em}}@media(max-width: 400px){#divTwcBottom>div{font-size:.6em}}@media(max-width: 350px){#divTwcBottom>div{font-size:.5em}}#divTwcBottomLeft{flex:1;text-align:left}#divTwcBottomMiddle{flex:0;text-align:center}#divTwcBottomRight{flex:1;text-align:right}#divTwcNavContainer{display:none}#divTwcNav{width:100%;display:flex;flex-direction:row;background-color:#000;color:#fff;max-width:640px}#divTwcNav>div{padding-left:6px;padding-right:6px}#divTwcNavLeft{flex:1;text-align:left}#divTwcNavMiddle{flex:0;text-align:center}#divTwcNavRight{flex:1;text-align:right}#imgPause1x{visibility:hidden;position:absolute}.HideCursor{cursor:none !important}#txtScrollText{width:475px}@font-face{font-family:"Star4000 Extended";src:url("../fonts/Star4000 Extended.woff") format("woff");font-display:swap}@font-face{font-family:"Star4000 Large";src:url("../fonts/Star4000 Large.woff") format("woff");font-display:swap}@font-face{font-family:"Star4000 Small";src:url("../fonts/Star4000 Small.woff") format("woff");font-display:swap}#display{font-family:"Star4000";margin:0 0 0 0;width:100%}#container{position:relative;width:640px;height:480px;background-image:url(../images/backgrounds/1.png);transform-origin:0 0;background-repeat:no-repeat}.wide #container{padding-left:107px;padding-right:107px;background:url(../images/backgrounds/1-wide.png);background-repeat:no-repeat}#divTwc:fullscreen #container,.kiosk #divTwc #container{width:unset;height:unset}#loading{width:640px;height:480px;max-width:100%;text-shadow:4px 4px #000;display:flex;align-items:center;text-align:center;justify-content:center}#loading .title{font-family:Star4000 Large;font-size:36px;color:#ff0;margin-bottom:0px}#loading .version{margin-bottom:35px}#loading .instructions{font-size:18pt}.heading{font-weight:bold;margin-top:15px}#settings{margin-bottom:15px}#enabledDisplays,#settings{margin-bottom:15px}#enabledDisplays .loading,#enabledDisplays .retrying,#settings .loading,#settings .retrying{color:#ff0}#enabledDisplays .press-here,#settings .press-here{color:lime;cursor:pointer}#enabledDisplays .failed,#settings .failed{color:red}#enabledDisplays .no-data,#settings .no-data{color:silver}#enabledDisplays .disabled,#settings .disabled{color:silver}#enabledDisplays .press-here,#settings .press-here{color:#fff}@media(prefers-color-scheme: light){#enabledDisplays .loading,#enabledDisplays .retrying,#settings .loading,#settings .retrying{color:#990}#enabledDisplays .press-here,#settings .press-here{color:#000;cursor:pointer}#enabledDisplays .failed,#settings .failed{color:#900}#enabledDisplays .no-data,#settings .no-data{color:hsl(0,0%,30%)}#enabledDisplays .disabled,#settings .disabled{color:hsl(0,0%,30%)}}#enabledDisplays label,#settings label{display:block;max-width:-moz-fit-content;max-width:fit-content;cursor:pointer}#enabledDisplays label .alert,#settings label .alert{display:none}#enabledDisplays label .alert.show,#settings label .alert.show{display:inline;color:red}#divTwcBottom img{transform:scale(0.75)}@media(max-width: 550px){.wide #divTwcBottom img{transform:scale(1)}}#divTwc:fullscreen,.kiosk #divTwc{display:flex;align-items:center;justify-content:center;align-content:center}#divTwc:fullscreen.no-cursor,.kiosk #divTwc.no-cursor{cursor:none}#divTwc:fullscreen #display,.kiosk #divTwc #display{position:relative}#divTwc:fullscreen #divTwcBottom,.kiosk #divTwc #divTwcBottom{display:flex;flex-direction:row;background-color:rgba(0,0,0,.5);color:#fff;width:100%;position:absolute;bottom:0px}.kiosk #divTwc #divTwcBottom{display:none}.navButton{cursor:pointer}#ToggleScanlines{display:inline-block}#ToggleScanlines .on{display:none}#ToggleScanlines .off{display:inline-block}#ToggleScanlines.on .on{display:inline-block}#ToggleScanlines.on .off{display:none}.visible{visibility:visible;opacity:1;transition:opacity .1s linear}#divTwc:fullscreen .hidden{visibility:hidden;opacity:0;transition:visibility 0s 1s,opacity 1s linear}.github-links{width:610px;max-width:calc(100vw - 30px);display:flex;justify-content:space-evenly;flex-wrap:wrap}.github-links span a{text-decoration:none;outline:0}.github-links span .widget{display:inline-block;overflow:hidden;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif;font-size:0;line-height:0;white-space:nowrap}.github-links span .btn,.github-links span .social-count{position:relative;display:inline-block;display:inline-flex;height:14px;padding:2px 5px;font-size:11px;font-weight:600;line-height:14px;vertical-align:bottom;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;background-repeat:repeat-x;background-position:-1px -1px;background-size:110% 110%;border:1px solid}.github-links span .btn{border-radius:.25em}.github-links span .btn:not(:last-child){border-radius:.25em 0 0 .25em}.github-links span .social-count{border-left:0;border-radius:0 .25em .25em 0}.github-links span .widget-lg .btn,.github-links span .widget-lg .social-count{height:16px;padding:5px 10px;font-size:12px;line-height:16px}.github-links span .octicon{display:inline-block;vertical-align:text-top;fill:currentColor;overflow:visible}.github-links span .btn:focus-visible,.github-links span .social-count:focus-visible{outline:2px solid #0969da;outline-offset:-2px}.github-links span .btn{color:#24292f;background-color:#ebf0f4;border-color:#ccd1d5;border-color:rgba(27,31,36,.15);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg'%3e%3clinearGradient id='o' x2='0' y2='1'%3e%3cstop stop-color='%23f6f8fa'/%3e%3cstop offset='90%25' stop-color='%23ebf0f4'/%3e%3c/linearGradient%3e%3crect width='100%25' height='100%25' fill='url(%23o)'/%3e%3c/svg%3e");background-image:linear-gradient(180deg, #f6f8fa, #ebf0f4 90%);filter:progid:DXImageTransform.Microsoft.Gradient(startColorstr="#FFF6F8FA", endColorstr="#FFEAEFF3")}.github-links span :root .btn{filter:none}.github-links span .btn:hover,.github-links span .btn:focus{background-color:#e9ebef;background-position:0 -0.5em;border-color:#caccd1;border-color:rgba(27,31,36,.15);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg'%3e%3clinearGradient id='o' x2='0' y2='1'%3e%3cstop stop-color='%23f3f4f6'/%3e%3cstop offset='90%25' stop-color='%23e9ebef'/%3e%3c/linearGradient%3e%3crect width='100%25' height='100%25' fill='url(%23o)'/%3e%3c/svg%3e");background-image:linear-gradient(180deg, #f3f4f6, #e9ebef 90%);filter:progid:DXImageTransform.Microsoft.Gradient(startColorstr="#FFF3F4F6", endColorstr="#FFE8EAEE")}.github-links span :root .btn:hover,.github-links span :root .btn:focus{filter:none}.github-links span .btn:active{background-color:#e5e9ed;border-color:#c7cbcf;border-color:rgba(27,31,36,.15);box-shadow:inset 0 .15em .3em rgba(27,31,36,.15);background-image:none;filter:none}.github-links span .social-count{color:#24292f;background-color:#fff;border-color:#ddddde;border-color:rgba(27,31,36,.15)}.github-links span .social-count:hover,.github-links span .social-count:focus{color:#0969da}.github-links span .octicon-heart{color:#bf3989}@media(prefers-color-scheme: light){.github-links span .btn:focus-visible,.github-links span .social-count:focus-visible{outline:2px solid #0969da;outline-offset:-2px}.github-links span .btn{color:#24292f;background-color:#ebf0f4;border-color:#ccd1d5;border-color:rgba(27,31,36,.15);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg'%3e%3clinearGradient id='o' x2='0' y2='1'%3e%3cstop stop-color='%23f6f8fa'/%3e%3cstop offset='90%25' stop-color='%23ebf0f4'/%3e%3c/linearGradient%3e%3crect width='100%25' height='100%25' fill='url(%23o)'/%3e%3c/svg%3e");background-image:linear-gradient(180deg, #f6f8fa, #ebf0f4 90%);filter:progid:DXImageTransform.Microsoft.Gradient(startColorstr="#FFF6F8FA", endColorstr="#FFEAEFF3")}.github-links span :root .btn{filter:none}.github-links span .btn:hover,.github-links span .btn:focus{background-color:#e9ebef;background-position:0 -0.5em;border-color:#caccd1;border-color:rgba(27,31,36,.15);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg'%3e%3clinearGradient id='o' x2='0' y2='1'%3e%3cstop stop-color='%23f3f4f6'/%3e%3cstop offset='90%25' stop-color='%23e9ebef'/%3e%3c/linearGradient%3e%3crect width='100%25' height='100%25' fill='url(%23o)'/%3e%3c/svg%3e");background-image:linear-gradient(180deg, #f3f4f6, #e9ebef 90%);filter:progid:DXImageTransform.Microsoft.Gradient(startColorstr="#FFF3F4F6", endColorstr="#FFE8EAEE")}.github-links span :root .btn:hover,.github-links span :root .btn:focus{filter:none}.github-links span .btn:active{background-color:#e5e9ed;border-color:#c7cbcf;border-color:rgba(27,31,36,.15);box-shadow:inset 0 .15em .3em rgba(27,31,36,.15);background-image:none;filter:none}.github-links span .social-count{color:#24292f;background-color:#fff;border-color:#ddddde;border-color:rgba(27,31,36,.15)}.github-links span .social-count:hover,.github-links span .social-count:focus{color:#0969da}.github-links span .octicon-heart{color:#bf3989}}@media(prefers-color-scheme: dark){.github-links span .btn:focus-visible,.github-links span .social-count:focus-visible{outline:2px solid #58a6ff;outline-offset:-2px}.github-links span .btn{color:#c9d1d9;background-color:#1a1e23;border-color:#2f3439;border-color:rgba(240,246,252,.1);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg'%3e%3clinearGradient id='o' x2='0' y2='1'%3e%3cstop stop-color='%2321262d'/%3e%3cstop offset='90%25' stop-color='%231a1e23'/%3e%3c/linearGradient%3e%3crect width='100%25' height='100%25' fill='url(%23o)'/%3e%3c/svg%3e");background-image:linear-gradient(180deg, #21262d, #1a1e23 90%);filter:progid:DXImageTransform.Microsoft.Gradient(startColorstr="#FF21262D", endColorstr="#FF191D22")}.github-links span :root .btn{filter:none}.github-links span .btn:hover,.github-links span .btn:focus{background-color:#292e33;background-position:0 -0.5em;border-color:#8b949e;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg'%3e%3clinearGradient id='o' x2='0' y2='1'%3e%3cstop stop-color='%2330363d'/%3e%3cstop offset='90%25' stop-color='%23292e33'/%3e%3c/linearGradient%3e%3crect width='100%25' height='100%25' fill='url(%23o)'/%3e%3c/svg%3e");background-image:linear-gradient(180deg, #30363d, #292e33 90%);filter:progid:DXImageTransform.Microsoft.Gradient(startColorstr="#FF30363D", endColorstr="#FF282D32")}.github-links span :root .btn:hover,.github-links span :root .btn:focus{filter:none}.github-links span .btn:active{background-color:#161719;border-color:#8b949e;box-shadow:inset 0 .15em .3em rgba(1,4,9,.15);background-image:none;filter:none}.github-links span .social-count{color:#c9d1d9;background-color:#0d1117;border-color:#24282e;border-color:rgba(240,246,252,.1)}.github-links span .social-count:hover,.github-links span .social-count:focus{color:#58a6ff}.github-links span .octicon-heart{color:#db61a2}}#share-link-copied{color:#990;display:none}#share-link-instructions{display:none}body.kiosk #loading .instructions{display:none !important}.kiosk>*:not(#divTwc){display:none !important}#divInfo{display:grid;grid-template-columns:1fr 1fr;max-width:250px}.weather-display{width:640px;height:480px;overflow:hidden;position:relative;background-image:url(../images/backgrounds/1.png);height:0px}.weather-display.show{height:480px}.weather-display .template{display:none}.weather-display .header{width:640px;height:60px;padding-top:30px}.weather-display .header .title{color:#ff0;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000;font-family:"Star4000";font-size:24pt;position:absolute;width:250px}.weather-display .header .title.single{left:170px;top:25px}.weather-display .header .title.dual{left:170px}.weather-display .header .title.dual>div{position:absolute}.weather-display .header .title.dual .top{top:-3px}.weather-display .header .title.dual .bottom{top:26px}.weather-display .header .logo{top:30px;left:50px;position:absolute;z-index:10}.weather-display .header .noaa-logo{position:absolute;top:39px;left:356px}.weather-display .header .title.single{top:40px}.weather-display .header .date-time{white-space:pre;color:#fff;font-family:"Star4000 Small";font-size:24pt;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000;left:415px;width:170px;text-align:right;position:absolute}.weather-display .header .date-time.date{padding-top:22px}.weather-display .main{position:relative}.weather-display .main.has-scroll{width:640px;margin-top:0;height:310px;overflow:hidden}.weather-display .main.has-scroll.no-header{height:400px;margin-top:0}.weather-display .main.has-box{margin-left:64px;margin-right:64px;width:calc(100% - 128px)}#container>.scroll{display:none;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000;width:640px;height:77px;overflow:hidden;margin-top:3px;position:absolute;bottom:0px;z-index:1}#container>.scroll.hazard{background-color:#702323}#container>.scroll .scroll-container{width:640px}#container>.scroll .scroll-container .fixed,#container>.scroll .scroll-container .scroll-header{margin-left:55px;margin-right:55px;overflow:hidden;white-space:nowrap}#container>.scroll .scroll-container .scroll-header{height:26px;font-family:"Star4000 Small";font-size:20pt;margin-top:-10px}#container>.scroll .scroll-container .fixed{font-family:"Star4000";font-size:24pt}#container>.scroll .scroll-container .fixed .scroll-area{text-wrap:nowrap;position:relative}.wide #container>.scroll{width:854px;margin-left:-107px}.wide #container>.scroll .scroll-container{margin-left:107px}.weather-display .main.current-weather.main .col{height:50px;width:255px;display:inline-block;margin-top:10px;padding-top:10px;position:absolute;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000}.weather-display .main.current-weather.main .col.left{font-family:"Star4000 Extended";font-size:24pt}.weather-display .main.current-weather.main .col.right{right:0px;font-family:"Star4000 Large";font-size:20px;font-weight:bold;line-height:24px}.weather-display .main.current-weather.main .col.right .row{margin-bottom:12px}.weather-display .main.current-weather.main .col.right .row .label,.weather-display .main.current-weather.main .col.right .row .value{display:inline-block}.weather-display .main.current-weather.main .col.right .row .label{margin-left:20px}.weather-display .main.current-weather.main .col.right .row .value{float:right;margin-right:10px}.weather-display .main.current-weather.main .center{text-align:center}.weather-display .main.current-weather.main .temp{font-family:"Star4000 Large";font-size:24pt}.weather-display .main.current-weather.main .icon img{margin:0 auto;display:block}.weather-display .main.current-weather.main .wind-container{margin-left:10px;display:flex}.weather-display .main.current-weather.main .wind-container>div{width:50%}.weather-display .main.current-weather.main .wind-container .wind{text-align:right}.weather-display .main.current-weather.main .wind-gusts{text-align:right;font-size:28px}.weather-display .main.current-weather.main .location{color:#ff0;max-height:32px;margin-bottom:10px;padding-top:4px;overflow:hidden;text-wrap:nowrap}#extended-forecast-html.weather-display{background-image:url("../images/backgrounds/2.png")}.weather-display .main.extended-forecast .day-container{margin-top:16px;margin-left:27px}.weather-display .main.extended-forecast .day{text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000;padding:5px;height:285px;width:155px;display:inline-block;margin:0px 15px;font-family:"Star4000";font-size:24pt}.weather-display .main.extended-forecast .day .date{text-transform:uppercase;text-align:center;color:#ff0}.weather-display .main.extended-forecast .day .condition{text-align:center;height:74px;margin-top:5px}.weather-display .main.extended-forecast .day .icon{text-align:center;height:75px}.weather-display .main.extended-forecast .day .icon img{max-height:75px}.weather-display .main.extended-forecast .day .temperatures{width:100%}.weather-display .main.extended-forecast .day .temperatures .temperature-block{display:inline-block;width:44%;vertical-align:top}.weather-display .main.extended-forecast .day .temperatures .temperature-block>div{text-align:center}.weather-display .main.extended-forecast .day .temperatures .temperature-block .value{font-family:"Star4000 Large";margin-top:4px}.weather-display .main.extended-forecast .day .temperatures .temperature-block.lo .label{color:#8080ff}.weather-display .main.extended-forecast .day .temperatures .temperature-block.hi .label{color:#ff0}.weather-display .main.hourly.main{overflow-y:hidden}.weather-display .main.hourly.main .column-headers{background-color:#200057;height:20px;position:absolute;width:100%}.weather-display .main.hourly.main .column-headers{position:sticky;top:0px;z-index:5}.weather-display .main.hourly.main .column-headers div{display:inline-block;font-family:"Star4000 Small";font-size:24pt;color:#ff0;position:absolute;top:-14px;z-index:5;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000}.weather-display .main.hourly.main .column-headers .temp{left:355px}.weather-display .main.hourly.main .column-headers .like{left:435px}.weather-display .main.hourly.main .column-headers .wind{left:535px}.weather-display .main.hourly.main .hourly-lines{min-height:338px;padding-top:10px;background:repeating-linear-gradient(0deg, #001040 0px, #102080 136px, #102080 202px, #001040 338px)}.weather-display .main.hourly.main .hourly-lines .hourly-row{font-family:"Star4000 Large";font-size:24pt;height:72px;color:#ff0;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000;position:relative}.weather-display .main.hourly.main .hourly-lines .hourly-row>div{position:absolute;white-space:pre;top:8px}.weather-display .main.hourly.main .hourly-lines .hourly-row .hour{left:25px}.weather-display .main.hourly.main .hourly-lines .hourly-row .icon{left:255px;width:70px;text-align:center;top:unset}.weather-display .main.hourly.main .hourly-lines .hourly-row .temp{left:355px}.weather-display .main.hourly.main .hourly-lines .hourly-row .like{left:425px}.weather-display .main.hourly.main .hourly-lines .hourly-row .like.heat-index{color:#e00}.weather-display .main.hourly.main .hourly-lines .hourly-row .like.wind-chill{color:#8080ff}.weather-display .main.hourly.main .hourly-lines .hourly-row .wind{left:505px;width:100px;text-align:right}#hourly-graph-html{background-image:url(../images/backgrounds/1-chart.png)}#hourly-graph-html .header .right{position:absolute;top:35px;right:60px;width:360px;font-family:"Star4000 Small";font-size:32px;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000;text-align:right}#hourly-graph-html .header .right div{margin-top:-18px}#hourly-graph-html .header .right .temperature{color:red}#hourly-graph-html .header .right .cloud{color:#d3d3d3}#hourly-graph-html .header .right .rain{color:aqua}.weather-display .main.hourly-graph.main>div{position:absolute}.weather-display .main.hourly-graph.main .label{font-family:"Star4000 Small";font-size:24pt;color:#ff0;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000;margin-top:-15px;position:absolute}.weather-display .main.hourly-graph.main .x-axis{bottom:0px;left:0px;width:640px;height:20px}.weather-display .main.hourly-graph.main .x-axis .label{text-align:center;width:50px}.weather-display .main.hourly-graph.main .x-axis .label.l-1{left:25px}.weather-display .main.hourly-graph.main .x-axis .label.l-2{left:158px}.weather-display .main.hourly-graph.main .x-axis .label.l-3{left:291px}.weather-display .main.hourly-graph.main .x-axis .label.l-4{left:424px}.weather-display .main.hourly-graph.main .x-axis .label.l-5{left:557px}.weather-display .main.hourly-graph.main .chart{top:0px;left:50px}.weather-display .main.hourly-graph.main .chart img{width:532px;height:285px}.weather-display .main.hourly-graph.main .y-axis{top:0px;left:0px;width:50px;height:285px}.weather-display .main.hourly-graph.main .y-axis .label{text-align:right;right:0px}.weather-display .main.hourly-graph.main .y-axis .label.l-1{top:0px}.weather-display .main.hourly-graph.main .y-axis .label.l-2{top:140px}.weather-display .main.hourly-graph.main .y-axis .label.l-3{bottom:0px}.weather-display .main.hourly-graph.main .column-headers{background-color:#200057;height:20px;position:absolute;width:100%}.weather-display .main.hourly-graph.main .column-headers{position:sticky;top:0px;z-index:5}.weather-display .main.hourly-graph.main .column-headers .temp{left:355px}.weather-display .main.hourly-graph.main .column-headers .like{left:435px}.weather-display .main.hourly-graph.main .column-headers .wind{left:535px}.weather-display .main.travel.main{overflow-y:hidden}.weather-display .main.travel.main .column-headers{background-color:#200057;height:20px;position:sticky;top:0px;width:100%;z-index:5;overflow:hidden}.weather-display .main.travel.main .column-headers div{display:inline-block;font-family:"Star4000 Small";font-size:24pt;color:#ff0;position:absolute;top:-14px;z-index:5;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000}.weather-display .main.travel.main .column-headers .temp{width:50px;text-align:center}.weather-display .main.travel.main .column-headers .temp.low{left:455px}.weather-display .main.travel.main .column-headers .temp.high{left:510px;width:60px}.weather-display .main.travel.main .travel-lines{min-height:338px;padding-top:10px;background:repeating-linear-gradient(0deg, #001040 0px, #102080 136px, #102080 202px, #001040 338px)}.weather-display .main.travel.main .travel-lines .travel-row{font-family:"Star4000 Large";font-size:24pt;height:72px;color:#ff0;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000;position:relative}.weather-display .main.travel.main .travel-lines .travel-row>div{position:absolute;white-space:pre;top:8px}.weather-display .main.travel.main .travel-lines .travel-row .city{left:80px}.weather-display .main.travel.main .travel-lines .travel-row .icon{left:330px;width:70px;text-align:center;top:unset}.weather-display .main.travel.main .travel-lines .travel-row .icon img{max-width:47px}.weather-display .main.travel.main .travel-lines .travel-row .temp{width:50px;text-align:center}.weather-display .main.travel.main .travel-lines .travel-row .temp.low{left:455px}.weather-display .main.travel.main .travel-lines .travel-row .temp.high{left:510px;width:60px}.weather-display .latest-observations.main{overflow-y:hidden}.weather-display .latest-observations.main .column-headers{height:20px;position:absolute;width:100%}.weather-display .latest-observations.main .column-headers{top:0px}.weather-display .latest-observations.main .column-headers div{display:inline-block;font-family:"Star4000 Small";font-size:24pt;position:absolute;top:-14px;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000}.weather-display .latest-observations.main .column-headers .temp{display:none}.weather-display .latest-observations.main .column-headers .temp.show{display:inline-block}.weather-display .latest-observations.main .temp{left:230px}.weather-display .latest-observations.main .weather{left:280px}.weather-display .latest-observations.main .wind{left:430px}.weather-display .latest-observations.main .observation-lines{min-height:338px;padding-top:10px}.weather-display .latest-observations.main .observation-lines .observation-row{font-family:"Star4000";font-size:24pt;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000;position:relative;height:40px}.weather-display .latest-observations.main .observation-lines .observation-row>div{position:absolute;top:8px}.weather-display .latest-observations.main .observation-lines .observation-row .wind{white-space:pre;text-align:right}.weather-display .local-forecast .container{position:relative;top:15px;margin:0px 10px;box-sizing:border-box;height:280px;overflow:hidden}.weather-display .local-forecast .forecasts{position:relative}.weather-display .local-forecast .forecast{font-family:"Star4000";font-size:24pt;text-transform:uppercase;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000;min-height:280px;line-height:40px}.weather-display .progress{text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000;font-family:"Star4000 Extended";font-size:19pt}.weather-display .progress .container{position:relative;top:15px;margin:0px 10px;box-sizing:border-box;height:310px;overflow:hidden;line-height:28px}.weather-display .progress .container .item{position:relative}.weather-display .progress .container .item .name{white-space:nowrap}.weather-display .progress .container .item .name::after{content:"........................................................................"}.weather-display .progress .container .item .links{position:absolute;text-align:right;right:0px;top:0px}.weather-display .progress .container .item .links>div{background-color:#26235a;display:none;padding-left:4px}.weather-display .progress .container .item .links .loading,.weather-display .progress .container .item .links .retrying{color:#ff0}.weather-display .progress .container .item .links .press-here{color:lime;cursor:pointer}.weather-display .progress .container .item .links .failed{color:red}.weather-display .progress .container .item .links .no-data{color:silver}.weather-display .progress .container .item .links .disabled{color:silver}.weather-display .progress .container .item .links.loading .loading,.weather-display .progress .container .item .links.press-here .press-here,.weather-display .progress .container .item .links.failed .failed,.weather-display .progress .container .item .links.no-data .no-data,.weather-display .progress .container .item .links.disabled .disabled,.weather-display .progress .container .item .links.retrying .retrying{display:block}@keyframes progress-scroll{0%{background-position:-40px 0}100%{background-position:40px 0}}#progress-html.weather-display .scroll .progress-bar-container{border:2px solid #000;background-color:#fff;margin:20px auto;width:524px;position:relative;display:none}#progress-html.weather-display .scroll .progress-bar-container.show{display:block}#progress-html.weather-display .scroll .progress-bar-container .progress-bar{height:20px;margin:2px;width:520px;background:repeating-linear-gradient(90deg, #09246f 0px, #09246f 5px, #364ac0 5px, #364ac0 10px, #4f99f9 10px, #4f99f9 15px, #8ffdfa 15px, #8ffdfa 20px, #4f99f9 20px, #4f99f9 25px, #364ac0 25px, #364ac0 30px, #09246f 30px, #09246f 40px);animation-duration:2s;animation-fill-mode:forwards;animation-iteration-count:infinite;animation-name:progress-scroll;animation-timing-function:steps(8, end)}#progress-html.weather-display .scroll .progress-bar-container .cover{position:absolute;top:0px;right:0px;background-color:#fff;width:100%;height:24px;transition:width 1s steps(6)}#radar-html.weather-display{background-image:url("../images/backgrounds/4.png")}#radar-html.weather-display .header{height:83px}#radar-html.weather-display .header .title.dual{color:#fff;font-family:"Arial",sans-serif;font-weight:bold;font-size:28pt;left:155px}#radar-html.weather-display .header .title.dual .top{top:-4px}#radar-html.weather-display .header .title.dual .bottom{top:31px}#radar-html.weather-display .header .right{position:absolute;right:0px;width:360px;margin-top:2px;font-family:"Star4000";font-size:18pt;font-weight:bold;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000;text-align:center}#radar-html.weather-display .header .right .scale>div{display:inline-block}#radar-html.weather-display .header .right .scale-table{display:table-row;border-collapse:collapse}#radar-html.weather-display .header .right .scale-table .box{display:table-cell;border:2px solid #000;width:17px;height:24px;padding:0}#radar-html.weather-display .header .right .scale-table .box-1{background-color:#31d216}#radar-html.weather-display .header .right .scale-table .box-2{background-color:#1c8a12}#radar-html.weather-display .header .right .scale-table .box-3{background-color:#145a0f}#radar-html.weather-display .header .right .scale-table .box-4{background-color:#0a280a}#radar-html.weather-display .header .right .scale-table .box-5{background-color:#c4b346}#radar-html.weather-display .header .right .scale-table .box-6{background-color:#be4813}#radar-html.weather-display .header .right .scale-table .box-7{background-color:#ab0e0e}#radar-html.weather-display .header .right .scale-table .box-8{background-color:#731f04}#radar-html.weather-display .header .right .scale .text{position:relative;top:-5px}#radar-html.weather-display .header .right .time{position:relative;font-weight:normal;top:-14px;font-family:"Star4000 Small";font-size:24pt}.weather-display .main.radar{overflow:hidden;height:367px}.weather-display .main.radar .container .tiles{position:absolute;width:1400px}.weather-display .main.radar .container .tiles img{vertical-align:middle}.weather-display .main.radar .container .scroll-area{position:relative}.wide.radar #container{background:url(../images/backgrounds/4-wide.png)}#regional-forecast-html.weather-display{background-image:url("../images/backgrounds/5.png")}.weather-display .main.regional-forecast{position:relative}.weather-display .main.regional-forecast .map{position:absolute;transform-origin:0 0}.weather-display .main.regional-forecast .location{position:absolute;width:140px;margin-left:-40px;margin-top:-35px}.weather-display .main.regional-forecast .location>div{position:absolute;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000}.weather-display .main.regional-forecast .location .icon{top:26px;left:44px}.weather-display .main.regional-forecast .location .icon img{max-height:32px}.weather-display .main.regional-forecast .location .temp{font-family:"Star4000 Large";font-size:28px;padding-top:2px;color:#ff0;top:28px;text-align:right;width:40px}.weather-display .main.regional-forecast .location .city{font-family:Star4000;font-size:20px}#almanac-html.weather-display{background-image:url("../images/backgrounds/3.png")}.weather-display .main.almanac{font-family:"Star4000";font-size:24pt;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000}.weather-display .main.almanac .sun{display:grid;grid-template-columns:auto auto auto;grid-template-rows:auto auto auto;gap:0px 90px;margin:3px auto 5px auto;width:-moz-fit-content;width:fit-content;line-height:30px}.weather-display .main.almanac .sun .grid-item{width:auto;height:auto;padding:0;margin:0;position:relative}.weather-display .main.almanac .sun .grid-item.header{color:#ff0;text-align:center}.weather-display .main.almanac .sun .grid-item.row-label{text-align:right}.weather-display .main.almanac .sun .grid-item.time{text-align:center}.weather-display .main.almanac .moon{position:relative;padding:7px 50px;line-height:36px}.weather-display .main.almanac .moon .title{color:#ff0;padding-left:13px}.weather-display .main.almanac .moon .day{display:inline-block;text-align:center;width:132px}.weather-display .main.almanac .moon .day .icon{padding-left:10px}.weather-display .main.almanac .moon .day .date{position:relative;top:-10px}#hazards-html.weather-display{background-image:url("../images/backgrounds/7.png")}.weather-display .main.hazards.main{overflow-y:hidden;height:480px;background-color:#702323}.weather-display .main.hazards.main .hazard-lines{min-height:400px;padding-top:10px}.weather-display .main.hazards.main .hazard-lines .hazard{font-family:"Star4000";font-size:24pt;color:#fff;text-shadow:0px 0px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000;position:relative;text-transform:uppercase;margin-top:10px;margin-left:80px;margin-right:80px;padding-bottom:10px}.wide.hazards #container{background:url(../images/backgrounds/7-wide.png)}.media{display:none}#ToggleMediaContainer{display:none;position:relative}#ToggleMediaContainer.available{display:inline-block}#ToggleMediaContainer.available img.on{display:none}#ToggleMediaContainer.available img.off{display:block}#ToggleMediaContainer.available.playing img.on{display:block}#ToggleMediaContainer.available.playing img.off{display:none}#ToggleMediaContainer .volume-slider{display:none;position:absolute;top:0px;transform:translateY(-100%);width:100%;background-color:#000;text-align:center}@media(prefers-color-scheme: dark){#ToggleMediaContainer .volume-slider{background-color:#303030}}#ToggleMediaContainer .volume-slider input[type=range]{writing-mode:vertical-lr;direction:rtl;margin-top:20px;margin-bottom:20px}#ToggleMediaContainer .volume-slider.show{display:block}#spc-outlook-html.weather-display{background-image:url("../images/backgrounds/6.png")}.weather-display .spc-outlook .container{position:relative;top:0px;margin:0px 10px;box-sizing:border-box;height:300px;overflow:hidden}.weather-display .spc-outlook .risk-levels{position:absolute;left:206px;font-family:"Star4000 Small";font-size:32px;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000}.weather-display .spc-outlook .risk-levels .risk-level{position:relative;top:-14px;height:20px}.weather-display .spc-outlook .risk-levels .risk-level:nth-child(1){left:100px}.weather-display .spc-outlook .risk-levels .risk-level:nth-child(2){left:80px}.weather-display .spc-outlook .risk-levels .risk-level:nth-child(3){left:60px}.weather-display .spc-outlook .risk-levels .risk-level:nth-child(4){left:40px}.weather-display .spc-outlook .risk-levels .risk-level:nth-child(5){left:20px}.weather-display .spc-outlook .risk-levels .risk-level:nth-child(6){left:0px}.weather-display .spc-outlook .days{position:absolute;top:120px}.weather-display .spc-outlook .days .day{height:60px}.weather-display .spc-outlook .days .day .day-name{position:absolute;font-family:"Star4000";font-size:24pt;width:200px;text-align:right;text-shadow:3px 3px 0 #000,-1.5px -1.5px 0 #000,0 -1.5px 0 #000,1.5px -1.5px 0 #000,1.5px 0 0 #000,1.5px 1.5px 0 #000,0 1.5px 0 #000,-1.5px 1.5px 0 #000,-1.5px 0 0 #000;padding-top:20px}.weather-display .spc-outlook .days .day .risk-bar{position:absolute;width:150px;height:40px;left:210px;margin-top:20px;border:3px outset hsl(0,0%,70%);background:linear-gradient(0deg, hsl(0, 0%, 40%) 0%, hsl(0, 0%, 60%) 50%, hsl(0, 0%, 40%) 100%)}.scanlines{position:relative;overflow:hidden}.scanlines:before,.scanlines:after{display:block;pointer-events:none;content:"";position:absolute}.scanlines:before{width:100%;height:1px;z-index:2147483649;background:rgba(0,0,0,.3);opacity:.75;animation:scanline 6s linear infinite}.scanlines:after{top:0;right:0;bottom:0;left:0;z-index:2147483648;background:repeating-linear-gradient(to bottom, transparent 0, transparent 1px, rgba(0, 0, 0, 0.3) 1px, rgba(0, 0, 0, 0.3) 2px);animation:none;image-rendering:crisp-edges;image-rendering:pixelated}.scanlines:before{height:var(--scanline-thickness, 1px)}.scanlines:after{background:repeating-linear-gradient(to bottom, transparent 0, transparent var(--scanline-thickness, 1px), rgba(0, 0, 0, 0.3) var(--scanline-thickness, 1px), rgba(0, 0, 0, 0.3) calc(var(--scanline-thickness, 1px) * 2))}@keyframes scanline{0%{transform:translate3d(0, 200000%, 0)}}@keyframes scanlines{0%{background-position:0 50%}}/*# sourceMappingURL=main.css.map */
\ No newline at end of file
diff --git a/server/styles/main.css.map b/server/styles/main.css.map
index 329a102..a7743a6 100644
--- a/server/styles/main.css.map
+++ b/server/styles/main.css.map
@@ -1 +1 @@
-{"version":3,"sources":["scss/_page.scss","scss/shared/_utils.scss","scss/_weather-display.scss","scss/shared/_colors.scss","scss/_current-weather.scss","scss/_extended-forecast.scss","scss/_hourly.scss","scss/_hourly-graph.scss","scss/_travel.scss","scss/_latest-observations.scss","scss/_local-forecast.scss","scss/_progress.scss","scss/_radar.scss","scss/_regional-forecast.scss","scss/_almanac.scss","scss/_hazards.scss","scss/_media.scss","scss/_spc-outlook.scss","scss/shared/_scanlines.scss"],"names":[],"mappings":"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","file":"main.css"}
\ No newline at end of file
+{"version":3,"sources":["scss/_page.scss","scss/shared/_utils.scss","scss/_weather-display.scss","scss/shared/_colors.scss","scss/_current-weather.scss","scss/_extended-forecast.scss","scss/_hourly.scss","scss/_hourly-graph.scss","scss/_travel.scss","scss/_latest-observations.scss","scss/_local-forecast.scss","scss/_progress.scss","scss/_radar.scss","scss/_regional-forecast.scss","scss/_almanac.scss","scss/_hazards.scss","scss/_media.scss","scss/_spc-outlook.scss","scss/shared/_scanlines.scss"],"names":[],"mappings":"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","file":"main.css"}
\ No newline at end of file
diff --git a/server/styles/scss/_media.scss b/server/styles/scss/_media.scss
index ea22b14..8f321b2 100644
--- a/server/styles/scss/_media.scss
+++ b/server/styles/scss/_media.scss
@@ -2,8 +2,9 @@
display: none;
}
-#ToggleMedia {
+#ToggleMediaContainer {
display: none;
+ position: relative;
&.available {
display: inline-block;
@@ -31,4 +32,31 @@
}
+ .volume-slider {
+ display: none;
+ position: absolute;
+ top: 0px;
+ transform: translateY(-100%);
+ width: 100%;
+ background-color: #000;
+ text-align: center;
+
+ @media (prefers-color-scheme: dark) {
+ background-color: #303030;
+ }
+
+ input[type="range"] {
+ writing-mode: vertical-lr;
+ direction: rtl;
+ margin-top: 20px;
+ margin-bottom: 20px;
+ }
+
+ &.show {
+ display: block;
+ }
+ }
+
+
+
}
\ No newline at end of file
diff --git a/server/styles/scss/_page.scss b/server/styles/scss/_page.scss
index d897237..f9ed163 100644
--- a/server/styles/scss/_page.scss
+++ b/server/styles/scss/_page.scss
@@ -815,4 +815,10 @@ body.kiosk #loading .instructions {
>*:not(#divTwc) {
display: none !important;
}
+}
+
+#divInfo {
+ display: grid;
+ grid-template-columns: 1fr 1fr;
+ max-width: 250px;
}
\ No newline at end of file
diff --git a/views/index.ejs b/views/index.ejs
index c7b670d..917b71f 100644
--- a/views/index.ejs
+++ b/views/index.ejs
@@ -147,9 +147,15 @@
-
+
+
+
diff --git a/ws4kp.code-workspace b/ws4kp.code-workspace
index 692b2f1..cc769af 100644
--- a/ws4kp.code-workspace
+++ b/ws4kp.code-workspace
@@ -45,7 +45,8 @@
"unmuted",
"dumpio",
"mesonet",
- "metar"
+ "metar",
+ "Unmute"
],
"cSpell.ignorePaths": [
"**/package-lock.json",