From 31713abfaacd27a5967c56e0d96d95195d1945dc Mon Sep 17 00:00:00 2001 From: mrkmntal Date: Sun, 12 Apr 2026 11:28:11 -0400 Subject: [PATCH 1/4] increase regional forecast map icon size --- server/styles/scss/_regional-forecast.scss | 10 ++++------ server/styles/ws.min.css | 2 +- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/server/styles/scss/_regional-forecast.scss b/server/styles/scss/_regional-forecast.scss index c8f67e6..9853be9 100644 --- a/server/styles/scss/_regional-forecast.scss +++ b/server/styles/scss/_regional-forecast.scss @@ -57,8 +57,6 @@ flex-direction: column; align-items: center; min-width: 72px; - padding: 2px 4px; - background: rgb(255 255 255 / 0%); color: #fff; text-align: center; opacity: 0.35; @@ -76,15 +74,15 @@ .temp { font-family: 'Star4000'; - font-size: 18pt; + font-size: 21pt; line-height: 1; - color: c.$title-color; - @include u.text-shadow(); + 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; } img { width: auto; - height: 20px; + height: 32px; } } } diff --git a/server/styles/ws.min.css b/server/styles/ws.min.css index 3901f12..6bcb1fa 100644 --- a/server/styles/ws.min.css +++ b/server/styles/ws.min.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}:root{--theme-background-1: url('../images/backgrounds/1.png');--theme-background-1-chart: url('../images/backgrounds/1-chart.png');--theme-background-2: url('../images/backgrounds/2.png');--theme-background-3: url('../images/backgrounds/3.png');--theme-background-4: url('../images/backgrounds/4.png');--theme-background-5: url('../images/backgrounds/5.png');--theme-background-6: url('../images/backgrounds/6.png')}#display{font-family:"Star4000";margin:0 0 0 0;width:100%}#container{position:relative;width:640px;height:480px;background-image:var(--theme-background-1);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: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;-ms-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:-moz-linear-gradient(top, #f6f8fa, #ebf0f4 90%);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:-moz-linear-gradient(top, #f3f4f6, #e9ebef 90%);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:-moz-linear-gradient(top, #f6f8fa, #ebf0f4 90%);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:-moz-linear-gradient(top, #f3f4f6, #e9ebef 90%);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:-moz-linear-gradient(top, #21262d, #1a1e23 90%);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:-moz-linear-gradient(top, #30363d, #292e33 90%);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:var(--theme-background-1);height:0px}.weather-display.show{height:480px}.weather-display .template{display:none}.weather-display .header{width:640px;height:60px;padding-top:30px;position:relative;z-index:20}.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:436px;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:320px;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}.radar #container>.scroll{z-index:100}.radar #container>.scroll.hazard{z-index:1000 !important}.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:18px;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}:root[data-theme]:not([data-theme=default]) .weather-display .main.current-weather.main .col.left{margin-top:35px;font-size:20pt}:root[data-theme]:not([data-theme=default]) .weather-display .main.current-weather.main .col.right{margin-top:36px;padding:21px}:root[data-theme]:not([data-theme=default]) .weather-display .main.current-weather.main .wind-container{display:block}:root[data-theme]:not([data-theme=default]) .weather-display .main.current-weather.main .wind-container>div{width:50%}:root[data-theme]:not([data-theme=default]) .weather-display .main.current-weather.main .wind-container .wind{text-align:right;font-size:22px;display:contents}#extended-forecast-html.weather-display{background-image:var(--theme-background-2)}.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:#0b0b39}.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:var(--theme-background-1-chart)}#hourly-graph-html .header .right{position:absolute;top:35px;right:60px;width:360px;font-family:"Star4000 Small";font-size:28px;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 .dewpoint{color:green}#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:54px;width:532px;height:20px}.weather-display .main.hourly-graph.main .x-axis .label{text-align:center;transform:translateX(-50%);white-space:nowrap}.weather-display .main.hourly-graph.main .x-axis .label.l-1{left:0px}.weather-display .main.hourly-graph.main .x-axis .label.l-2{left:133px}.weather-display .main.hourly-graph.main .x-axis .label.l-3{left:266px}.weather-display .main.hourly-graph.main .x-axis .label.l-4{left:399px}.weather-display .main.hourly-graph.main .x-axis .label.l-5{left:532px}.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:93.3333333333px}.weather-display .main.hourly-graph.main .y-axis .label.l-3{bottom:82.3333333333px}.weather-display .main.hourly-graph.main .y-axis .label.l-4{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:#0b0b39}.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 .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}:root[data-theme]:not([data-theme=default]) .weather-display .local-forecast .forecasts{margin-top:16px}:root[data-theme]:not([data-theme=default]) .weather-display .local-forecast .forecast{font-size:24px;padding-right:20px}.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:18pt}.weather-display .progress .container{position:relative;top:15px;margin:0px 10px;box-sizing:border-box;height:310px;overflow:hidden;line-height:26px}.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:var(--theme-background-4)}#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-table{display:flex;justify-content:center;gap:4px}#radar-html.weather-display .header .right .scale-table .item{display:flex;flex-direction:column;align-items:center;width:25px;gap:2px}#radar-html.weather-display .header .right .scale-table .box{display:block;border:2.7px solid #000;width:90%;height:12px;margin-top:4px;padding:0}#radar-html.weather-display .header .right .scale-table .box-1{background-color:#49bef6}#radar-html.weather-display .header .right .scale-table .box-2{background-color:#31d216}#radar-html.weather-display .header .right .scale-table .box-3{background-color:#f1e458}#radar-html.weather-display .header .right .scale-table .box-4{background-color:#e08e2f}#radar-html.weather-display .header .right .scale-table .box-5{background-color:#c42a2a}#radar-html.weather-display .header .right .scale-table .box-6{background-color:#913bb8}#radar-html.weather-display .header .right .scale-table .label{font-family:"Star4000 Small";font-size:10pt;line-height:1;white-space:nowrap}#radar-html.weather-display .header .right .scale{margin-top:-2px}#radar-html.weather-display .header .right .time{position:relative;font-weight:normal;top:-20px;font-family:"Star4000 Small";font-size:18pt;left:132px}.weather-display .main.radar{overflow:hidden;height:367px}.weather-display .main.radar .container{position:relative;height:100%}.weather-display .main.radar .container .scroll-area{position:relative;height:100%}.weather-display .main.radar .container .frame{height:100%}.weather-display .main.radar .container .map{height:100%;width:100%}.weather-display .main.radar .container .leaflet-map{height:100%;width:100%;background:#061f3e}.weather-display .main.radar .container .leaflet-container{background:#061f3e;font-family:inherit}.weather-display .main.radar .container .radar-base-layer,.weather-display .main.radar .container .radar-base-layer .leaflet-tile{filter:grayscale(0.35) brightness(0.58) contrast(1.1) saturate(0.2)}.weather-display .main.radar .container .radar-boundary-layer,.weather-display .main.radar .container .radar-boundary-layer .leaflet-tile{filter:grayscale(0.8) brightness(0.7) contrast(1.3) saturate(0.1)}.weather-display .main.radar .container .leaflet-control-container,.weather-display .main.radar .container .leaflet-control-attribution,.weather-display .main.radar .container .leaflet-control-zoom{display:none}.weather-display .main.radar .container .location-marker{background:#ff0;border:2px solid #000;border-radius:50%}.weather-display .main.radar .container .nearby-weather-marker{display:none;background:rgba(0,0,0,0);border:0}.weather-display .main.radar .container .nearby-weather-marker .nearby-weather-marker-inner{display:inline-flex;flex-direction:column;align-items:center;min-width:72px;padding:2px 4px;background:rgba(18,34,61,0);color:#fff;text-align:center;opacity:.35}.weather-display .main.radar .container .nearby-weather-marker .city{font-family:"Star4000 Small";font-size:11pt;line-height:1;white-space:nowrap;margin-bottom:1px;text-shadow:1px 1px 0 #000;display:none}.weather-display .main.radar .container .nearby-weather-marker .details{display:flex;align-items:center;gap:2px}.weather-display .main.radar .container .nearby-weather-marker .temp{font-family:"Star4000";font-size:18pt;line-height:1;color:#ff0;text-shadow:1px 1px 0 #000}.weather-display .main.radar .container .nearby-weather-marker img{width:auto;height:20px}.wide.radar #container{background:url(../images/backgrounds/4-wide.png)}#regional-forecast-html.weather-display{background-image:var(--theme-background-5)}.weather-display .main.regional-forecast{position:relative;overflow:hidden;z-index:0}.weather-display .main.regional-forecast .map{position:absolute;inset:0}.weather-display .main.regional-forecast .leaflet-map{height:100%;width:100%;background:#061f3e}.weather-display .main.regional-forecast .leaflet-container{background:#061f3e;font-family:inherit}.weather-display .main.regional-forecast .radar-base-layer,.weather-display .main.regional-forecast .radar-base-layer .leaflet-tile{filter:grayscale(0.35) brightness(0.58) contrast(1.1) saturate(0.2)}.weather-display .main.regional-forecast .radar-boundary-layer,.weather-display .main.regional-forecast .radar-boundary-layer .leaflet-tile{filter:grayscale(0.8) brightness(0.7) contrast(1.3) saturate(0.1)}.weather-display .main.regional-forecast .leaflet-control-container,.weather-display .main.regional-forecast .leaflet-control-attribution,.weather-display .main.regional-forecast .leaflet-control-zoom{display:none}.weather-display .main.regional-forecast .location-marker{background:#ff0;border:2px solid #000;border-radius:50%}.weather-display .main.regional-forecast .nearby-weather-marker{background:rgba(0,0,0,0);border:0}.weather-display .main.regional-forecast .nearby-weather-marker .nearby-weather-marker-inner{display:inline-flex;flex-direction:column;align-items:center;min-width:72px;padding:2px 4px;background:hsla(0,0%,100%,0);color:#fff;text-align:center;opacity:.35}.weather-display .main.regional-forecast .nearby-weather-marker .city{display:none}.weather-display .main.regional-forecast .nearby-weather-marker .details{display:flex;align-items:center;gap:2px}.weather-display .main.regional-forecast .nearby-weather-marker .temp{font-family:"Star4000";font-size:18pt;line-height:1;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}.weather-display .main.regional-forecast .nearby-weather-marker img{width:auto;height:20px}#almanac-html.weather-display{background-image:var(--theme-background-3)}.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: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;z-index:100}@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:var(--theme-background-6)}.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%)}#server-observations-html.weather-display .header .title.single{font-size:20pt}.weather-display .server-observations.main{height:auto !important;min-height:250px}.weather-display .server-observations .container{position:relative;top:15px;box-sizing:border-box;height:250px;overflow:hidden}.weather-display .server-observations .server-output{position:relative;font-family:"Star4000";font-size:20pt;line-height:32px;color:#fff;text-transform:uppercase;text-align:center;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 .server-observations .server-output .server-page{height:250px;padding:0 8px;box-sizing:border-box;margin-top:16px;padding-right:30px}.weather-display .server-observations .server-output .server-line{white-space:normal;overflow-wrap:anywhere;word-break:break-word;margin-bottom:6px}.weather-display .linux-news.main{height:auto !important;min-height:250px}.weather-display .linux-news .container{position:relative;top:15px;margin:0px 10px;box-sizing:border-box;height:250px;overflow:hidden}.weather-display .linux-news .news-output{position:relative}.weather-display .linux-news .news-output .news-page{height:250px;box-sizing:border-box;padding:0 8px;display:flex;flex-direction:column;justify-content:space-between}.weather-display .linux-news .news-output .story{height:116px;overflow:hidden;margin-top:20px}.weather-display .linux-news .news-output .headline{font-family:"Star4000";font-size:17pt;line-height:22px;color:#ff0;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;margin-bottom:4px}.weather-display .linux-news .news-output .blurb{font-family:"Star4000";font-size:12pt;line-height:10pt;color:#fff;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;overflow:hidden;padding-right:30px}.scanlines{position:relative;overflow:hidden;isolation:isolate}.scanlines #container{position:relative;z-index:1;transform:translateZ(0);will-change:filter;filter:blur(0.6px) saturate(1.12) contrast(1.02) brightness(1)}.scanlines #container::before,.scanlines #container::after{content:"";position:absolute;inset:0;pointer-events:none;z-index:3}.scanlines #container::before{background:linear-gradient(to right, rgba(255, 0, 0, 0.05) 0%, rgba(255, 0, 0, 0.01) 15%, rgba(255, 0, 0, 0) 50%, rgba(255, 0, 0, 0.01) 85%, rgba(255, 0, 0, 0.05) 100%);transform:translateX(-1px);filter:blur(1.8px);mix-blend-mode:screen}.scanlines #container::after{background:linear-gradient(to right, rgba(0, 140, 255, 0.05) 0%, rgba(0, 140, 255, 0.01) 15%, rgba(0, 140, 255, 0) 50%, rgba(0, 140, 255, 0.01) 85%, rgba(0, 140, 255, 0.05) 100%);transform:translateX(1px);filter:blur(1.8px);mix-blend-mode:screen}.scanlines:before,.scanlines:after{display:block;pointer-events:none;content:"";position:absolute;left:0;right:0}.scanlines:before{height:var(--scanline-thickness, 1px);z-index:2147483650;background:rgba(0,0,0,.3);opacity:.75;animation:scanline 6s linear infinite}.scanlines:after{top:0;bottom:0;z-index:2147483648;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));animation:none}.scanlines{box-shadow:inset 0 0 80px rgba(0,0,0,.16),inset 0 0 18px hsla(0,0%,100%,.08)}.scanlines.crt-panels-only #container{filter:none}.scanlines.crt-panels-only .weather-display{filter:blur(0.6px) saturate(1.12) contrast(1.02) brightness(1);transform:translateZ(0)}.scanlines .header,.scanlines .main,.scanlines .scroll,.scanlines .date-time,.scanlines .city,.scanlines .temp,.scanlines .condition,.scanlines .location,.scanlines .label,.scanlines .value,.scanlines .title{text-shadow:0 0 1px hsla(0,0%,100%,.18),0 0 2px hsla(0,0%,100%,.06)}@keyframes scanline{0%{transform:translate3d(0, 200000%, 0)}}@keyframes scanlines{0%{background-position:0 50%}} \ 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}:root{--theme-background-1: url('../images/backgrounds/1.png');--theme-background-1-chart: url('../images/backgrounds/1-chart.png');--theme-background-2: url('../images/backgrounds/2.png');--theme-background-3: url('../images/backgrounds/3.png');--theme-background-4: url('../images/backgrounds/4.png');--theme-background-5: url('../images/backgrounds/5.png');--theme-background-6: url('../images/backgrounds/6.png')}#display{font-family:"Star4000";margin:0 0 0 0;width:100%}#container{position:relative;width:640px;height:480px;background-image:var(--theme-background-1);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: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;-ms-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:-moz-linear-gradient(top, #f6f8fa, #ebf0f4 90%);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:-moz-linear-gradient(top, #f3f4f6, #e9ebef 90%);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:-moz-linear-gradient(top, #f6f8fa, #ebf0f4 90%);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:-moz-linear-gradient(top, #f3f4f6, #e9ebef 90%);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:-moz-linear-gradient(top, #21262d, #1a1e23 90%);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:-moz-linear-gradient(top, #30363d, #292e33 90%);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:var(--theme-background-1);height:0px}.weather-display.show{height:480px}.weather-display .template{display:none}.weather-display .header{width:640px;height:60px;padding-top:30px;position:relative;z-index:20}.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:436px;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:320px;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}.radar #container>.scroll{z-index:100}.radar #container>.scroll.hazard{z-index:1000 !important}.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:18px;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}:root[data-theme]:not([data-theme=default]) .weather-display .main.current-weather.main .col.left{margin-top:35px;font-size:20pt}:root[data-theme]:not([data-theme=default]) .weather-display .main.current-weather.main .col.right{margin-top:36px;padding:21px}:root[data-theme]:not([data-theme=default]) .weather-display .main.current-weather.main .wind-container{display:block}:root[data-theme]:not([data-theme=default]) .weather-display .main.current-weather.main .wind-container>div{width:50%}:root[data-theme]:not([data-theme=default]) .weather-display .main.current-weather.main .wind-container .wind{text-align:right;font-size:22px;display:contents}#extended-forecast-html.weather-display{background-image:var(--theme-background-2)}.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:#0b0b39}.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:var(--theme-background-1-chart)}#hourly-graph-html .header .right{position:absolute;top:35px;right:60px;width:360px;font-family:"Star4000 Small";font-size:28px;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 .dewpoint{color:green}#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:54px;width:532px;height:20px}.weather-display .main.hourly-graph.main .x-axis .label{text-align:center;transform:translateX(-50%);white-space:nowrap}.weather-display .main.hourly-graph.main .x-axis .label.l-1{left:0px}.weather-display .main.hourly-graph.main .x-axis .label.l-2{left:133px}.weather-display .main.hourly-graph.main .x-axis .label.l-3{left:266px}.weather-display .main.hourly-graph.main .x-axis .label.l-4{left:399px}.weather-display .main.hourly-graph.main .x-axis .label.l-5{left:532px}.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:93.3333333333px}.weather-display .main.hourly-graph.main .y-axis .label.l-3{bottom:82.3333333333px}.weather-display .main.hourly-graph.main .y-axis .label.l-4{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:#0b0b39}.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 .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}:root[data-theme]:not([data-theme=default]) .weather-display .local-forecast .forecasts{margin-top:16px}:root[data-theme]:not([data-theme=default]) .weather-display .local-forecast .forecast{font-size:24px;padding-right:20px}.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:18pt}.weather-display .progress .container{position:relative;top:15px;margin:0px 10px;box-sizing:border-box;height:310px;overflow:hidden;line-height:26px}.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:var(--theme-background-4)}#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-table{display:flex;justify-content:center;gap:4px}#radar-html.weather-display .header .right .scale-table .item{display:flex;flex-direction:column;align-items:center;width:25px;gap:2px}#radar-html.weather-display .header .right .scale-table .box{display:block;border:2.7px solid #000;width:90%;height:12px;margin-top:4px;padding:0}#radar-html.weather-display .header .right .scale-table .box-1{background-color:#49bef6}#radar-html.weather-display .header .right .scale-table .box-2{background-color:#31d216}#radar-html.weather-display .header .right .scale-table .box-3{background-color:#f1e458}#radar-html.weather-display .header .right .scale-table .box-4{background-color:#e08e2f}#radar-html.weather-display .header .right .scale-table .box-5{background-color:#c42a2a}#radar-html.weather-display .header .right .scale-table .box-6{background-color:#913bb8}#radar-html.weather-display .header .right .scale-table .label{font-family:"Star4000 Small";font-size:10pt;line-height:1;white-space:nowrap}#radar-html.weather-display .header .right .scale{margin-top:-2px}#radar-html.weather-display .header .right .time{position:relative;font-weight:normal;top:-20px;font-family:"Star4000 Small";font-size:18pt;left:132px}.weather-display .main.radar{overflow:hidden;height:367px}.weather-display .main.radar .container{position:relative;height:100%}.weather-display .main.radar .container .scroll-area{position:relative;height:100%}.weather-display .main.radar .container .frame{height:100%}.weather-display .main.radar .container .map{height:100%;width:100%}.weather-display .main.radar .container .leaflet-map{height:100%;width:100%;background:#061f3e}.weather-display .main.radar .container .leaflet-container{background:#061f3e;font-family:inherit}.weather-display .main.radar .container .radar-base-layer,.weather-display .main.radar .container .radar-base-layer .leaflet-tile{filter:grayscale(0.35) brightness(0.58) contrast(1.1) saturate(0.2)}.weather-display .main.radar .container .radar-boundary-layer,.weather-display .main.radar .container .radar-boundary-layer .leaflet-tile{filter:grayscale(0.8) brightness(0.7) contrast(1.3) saturate(0.1)}.weather-display .main.radar .container .leaflet-control-container,.weather-display .main.radar .container .leaflet-control-attribution,.weather-display .main.radar .container .leaflet-control-zoom{display:none}.weather-display .main.radar .container .location-marker{background:#ff0;border:2px solid #000;border-radius:50%}.weather-display .main.radar .container .nearby-weather-marker{display:none;background:rgba(0,0,0,0);border:0}.weather-display .main.radar .container .nearby-weather-marker .nearby-weather-marker-inner{display:inline-flex;flex-direction:column;align-items:center;min-width:72px;padding:2px 4px;background:rgba(18,34,61,0);color:#fff;text-align:center;opacity:.35}.weather-display .main.radar .container .nearby-weather-marker .city{font-family:"Star4000 Small";font-size:11pt;line-height:1;white-space:nowrap;margin-bottom:1px;text-shadow:1px 1px 0 #000;display:none}.weather-display .main.radar .container .nearby-weather-marker .details{display:flex;align-items:center;gap:2px}.weather-display .main.radar .container .nearby-weather-marker .temp{font-family:"Star4000";font-size:18pt;line-height:1;color:#ff0;text-shadow:1px 1px 0 #000}.weather-display .main.radar .container .nearby-weather-marker img{width:auto;height:20px}.wide.radar #container{background:url(../images/backgrounds/4-wide.png)}#regional-forecast-html.weather-display{background-image:var(--theme-background-5)}.weather-display .main.regional-forecast{position:relative;overflow:hidden;z-index:0}.weather-display .main.regional-forecast .map{position:absolute;inset:0}.weather-display .main.regional-forecast .leaflet-map{height:100%;width:100%;background:#061f3e}.weather-display .main.regional-forecast .leaflet-container{background:#061f3e;font-family:inherit}.weather-display .main.regional-forecast .radar-base-layer,.weather-display .main.regional-forecast .radar-base-layer .leaflet-tile{filter:grayscale(0.35) brightness(0.58) contrast(1.1) saturate(0.2)}.weather-display .main.regional-forecast .radar-boundary-layer,.weather-display .main.regional-forecast .radar-boundary-layer .leaflet-tile{filter:grayscale(0.8) brightness(0.7) contrast(1.3) saturate(0.1)}.weather-display .main.regional-forecast .leaflet-control-container,.weather-display .main.regional-forecast .leaflet-control-attribution,.weather-display .main.regional-forecast .leaflet-control-zoom{display:none}.weather-display .main.regional-forecast .location-marker{background:#ff0;border:2px solid #000;border-radius:50%}.weather-display .main.regional-forecast .nearby-weather-marker{background:rgba(0,0,0,0);border:0}.weather-display .main.regional-forecast .nearby-weather-marker .nearby-weather-marker-inner{display:inline-flex;flex-direction:column;align-items:center;min-width:72px;color:#fff;text-align:center;opacity:.35}.weather-display .main.regional-forecast .nearby-weather-marker .city{display:none}.weather-display .main.regional-forecast .nearby-weather-marker .details{display:flex;align-items:center;gap:2px}.weather-display .main.regional-forecast .nearby-weather-marker .temp{font-family:"Star4000";font-size:21pt;line-height:1;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}.weather-display .main.regional-forecast .nearby-weather-marker img{width:auto;height:32px}#almanac-html.weather-display{background-image:var(--theme-background-3)}.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: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;z-index:100}@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:var(--theme-background-6)}.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%)}#server-observations-html.weather-display .header .title.single{font-size:20pt}.weather-display .server-observations.main{height:auto !important;min-height:250px}.weather-display .server-observations .container{position:relative;top:15px;box-sizing:border-box;height:250px;overflow:hidden}.weather-display .server-observations .server-output{position:relative;font-family:"Star4000";font-size:20pt;line-height:32px;color:#fff;text-transform:uppercase;text-align:center;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 .server-observations .server-output .server-page{height:250px;padding:0 8px;box-sizing:border-box;margin-top:16px;padding-right:30px}.weather-display .server-observations .server-output .server-line{white-space:normal;overflow-wrap:anywhere;word-break:break-word;margin-bottom:6px}.weather-display .linux-news.main{height:auto !important;min-height:250px}.weather-display .linux-news .container{position:relative;top:15px;margin:0px 10px;box-sizing:border-box;height:250px;overflow:hidden}.weather-display .linux-news .news-output{position:relative}.weather-display .linux-news .news-output .news-page{height:250px;box-sizing:border-box;padding:0 8px;display:flex;flex-direction:column;justify-content:space-between}.weather-display .linux-news .news-output .story{height:116px;overflow:hidden;margin-top:20px}.weather-display .linux-news .news-output .headline{font-family:"Star4000";font-size:17pt;line-height:22px;color:#ff0;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;margin-bottom:4px}.weather-display .linux-news .news-output .blurb{font-family:"Star4000";font-size:12pt;line-height:10pt;color:#fff;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;overflow:hidden;padding-right:30px}.scanlines{position:relative;overflow:hidden;isolation:isolate}.scanlines #container{position:relative;z-index:1;transform:translateZ(0);will-change:filter;filter:blur(0.6px) saturate(1.12) contrast(1.02) brightness(1)}.scanlines #container::before,.scanlines #container::after{content:"";position:absolute;inset:0;pointer-events:none;z-index:3}.scanlines #container::before{background:linear-gradient(to right, rgba(255, 0, 0, 0.05) 0%, rgba(255, 0, 0, 0.01) 15%, rgba(255, 0, 0, 0) 50%, rgba(255, 0, 0, 0.01) 85%, rgba(255, 0, 0, 0.05) 100%);transform:translateX(-1px);filter:blur(1.8px);mix-blend-mode:screen}.scanlines #container::after{background:linear-gradient(to right, rgba(0, 140, 255, 0.05) 0%, rgba(0, 140, 255, 0.01) 15%, rgba(0, 140, 255, 0) 50%, rgba(0, 140, 255, 0.01) 85%, rgba(0, 140, 255, 0.05) 100%);transform:translateX(1px);filter:blur(1.8px);mix-blend-mode:screen}.scanlines:before,.scanlines:after{display:block;pointer-events:none;content:"";position:absolute;left:0;right:0}.scanlines:before{height:var(--scanline-thickness, 1px);z-index:2147483650;background:rgba(0,0,0,.3);opacity:.75;animation:scanline 6s linear infinite}.scanlines:after{top:0;bottom:0;z-index:2147483648;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));animation:none}.scanlines{box-shadow:inset 0 0 80px rgba(0,0,0,.16),inset 0 0 18px hsla(0,0%,100%,.08)}.scanlines.crt-panels-only #container{filter:none}.scanlines.crt-panels-only .weather-display{filter:blur(0.6px) saturate(1.12) contrast(1.02) brightness(1);transform:translateZ(0)}.scanlines .header,.scanlines .main,.scanlines .scroll,.scanlines .date-time,.scanlines .city,.scanlines .temp,.scanlines .condition,.scanlines .location,.scanlines .label,.scanlines .value,.scanlines .title{text-shadow:0 0 1px hsla(0,0%,100%,.18),0 0 2px hsla(0,0%,100%,.06)}@keyframes scanline{0%{transform:translate3d(0, 200000%, 0)}}@keyframes scanlines{0%{background-position:0 50%}} \ No newline at end of file From a23eb483ea917590fa0d56f96e7c61205cbe7013 Mon Sep 17 00:00:00 2001 From: mrkmntal Date: Sun, 12 Apr 2026 13:13:15 -0400 Subject: [PATCH 2/4] Add guard to fix overlapping regional forecast icons after a period of time --- server/scripts/modules/regionalforecast.mjs | 47 ++++++++++++--------- 1 file changed, 27 insertions(+), 20 deletions(-) diff --git a/server/scripts/modules/regionalforecast.mjs b/server/scripts/modules/regionalforecast.mjs index c3dabbf..0d3505f 100644 --- a/server/scripts/modules/regionalforecast.mjs +++ b/server/scripts/modules/regionalforecast.mjs @@ -21,6 +21,7 @@ class RegionalForecast extends WeatherDisplay { this.locationMarker = null; this.nearbyMarkers = []; this.nearbyMarkersKey = ''; + this.refreshingMarkers = false; } async getData(weatherParameters, refresh) { @@ -54,30 +55,36 @@ class RegionalForecast extends WeatherDisplay { } async refreshNearbyMarkers() { - if (!this.map || !this.active) return; + if (!this.map || !this.active || this.refreshingMarkers) return; - this.map.invalidateSize(false); - this.map.setView([this.weatherParameters.latitude, this.weatherParameters.longitude], 6); + this.refreshingMarkers = true; - const bounds = this.map.getBounds(); - const markerKey = [ - this.weatherParameters.latitude.toFixed(2), - this.weatherParameters.longitude.toFixed(2), - bounds.getSouth().toFixed(2), - bounds.getWest().toFixed(2), - bounds.getNorth().toFixed(2), - bounds.getEast().toFixed(2), - ].join(':'); + try { + this.map.invalidateSize(false); + this.map.setView([this.weatherParameters.latitude, this.weatherParameters.longitude], 6); - if (this.nearbyMarkers.length > 0 && this.nearbyMarkersKey === markerKey) return; + const bounds = this.map.getBounds(); + const markerKey = [ + this.weatherParameters.latitude.toFixed(2), + this.weatherParameters.longitude.toFixed(2), + bounds.getSouth().toFixed(2), + bounds.getWest().toFixed(2), + bounds.getNorth().toFixed(2), + bounds.getEast().toFixed(2), + ].join(':'); - this.nearbyMarkers = clearMarkers(this.map, this.nearbyMarkers); - this.nearbyMarkers = await loadNearbyObservationMarkers(this.map, { - latitude: this.weatherParameters.latitude, - longitude: this.weatherParameters.longitude, - }); - this.nearbyMarkers.forEach((marker) => marker.addTo(this.map)); - this.nearbyMarkersKey = markerKey; + if (this.nearbyMarkers.length > 0 && this.nearbyMarkersKey === markerKey) return; + + this.nearbyMarkers = clearMarkers(this.map, this.nearbyMarkers); + this.nearbyMarkers = await loadNearbyObservationMarkers(this.map, { + latitude: this.weatherParameters.latitude, + longitude: this.weatherParameters.longitude, + }); + this.nearbyMarkers.forEach((marker) => marker.addTo(this.map)); + this.nearbyMarkersKey = markerKey; + } finally { + this.refreshingMarkers = false; + } } async ensureMap() { From f278d50ca7c39e821f489378acd7f16bf34b6560 Mon Sep 17 00:00:00 2001 From: mrkmntal Date: Sun, 12 Apr 2026 13:38:41 -0400 Subject: [PATCH 3/4] Add much more cities to the Regional Observations map view --- datagenerators/output/radarcities.json | 1477 ++++++++++++++++++- datagenerators/radarcities-raw.json | 303 +++- server/scripts/modules/regionalforecast.mjs | 4 + 3 files changed, 1737 insertions(+), 47 deletions(-) diff --git a/datagenerators/output/radarcities.json b/datagenerators/output/radarcities.json index adac848..ef5df60 100644 --- a/datagenerators/output/radarcities.json +++ b/datagenerators/output/radarcities.json @@ -14,16 +14,46 @@ "lat": 47.6062, "lon": -122.3321 }, + { + "name": "Portland", + "lat": 45.5152, + "lon": -122.6784 + }, { "name": "San Francisco", "lat": 37.7749, "lon": -122.4194 }, + { + "name": "Sacramento", + "lat": 38.5816, + "lon": -121.4944 + }, + { + "name": "Fresno", + "lat": 36.7378, + "lon": -119.7871 + }, + { + "name": "Bakersfield", + "lat": 35.3733, + "lon": -119.0187 + }, { "name": "Los Angeles", "lat": 34.0522, "lon": -118.2437 }, + { + "name": "San Diego", + "lat": 32.7153, + "lon": -117.1573 + }, + { + "name": "Las Vegas", + "lat": 36.1699, + "lon": -115.1398 + }, { "name": "Phoenix", "lat": 33.4484, @@ -69,11 +99,31 @@ "lat": 43.6532, "lon": -79.3832 }, + { + "name": "Ottawa", + "lat": 45.4215, + "lon": -75.6972 + }, { "name": "Montreal", "lat": 45.5019, "lon": -73.5674 }, + { + "name": "Quebec City", + "lat": 46.8139, + "lon": -71.208 + }, + { + "name": "Calgary", + "lat": 51.0447, + "lon": -114.0719 + }, + { + "name": "Edmonton", + "lat": 53.5461, + "lon": -113.4938 + }, { "name": "New York", "lat": 40.7128, @@ -84,16 +134,31 @@ "lat": 42.3601, "lon": -71.0589 }, - { - "name": "Reykjavik", - "lat": 64.1466, - "lon": -21.9426 - }, { "name": "Mexico City", "lat": 19.4326, "lon": -99.1332 }, + { + "name": "Guadalajara", + "lat": 20.6597, + "lon": -103.3496 + }, + { + "name": "Monterrey", + "lat": 25.6866, + "lon": -100.3161 + }, + { + "name": "Tijuana", + "lat": 32.5149, + "lon": -117.0382 + }, + { + "name": "Merida", + "lat": 20.9674, + "lon": -89.5926 + }, { "name": "Guatemala City", "lat": 14.6349, @@ -114,16 +179,76 @@ "lat": 18.4655, "lon": -66.1057 }, + { + "name": "Port-au-Prince", + "lat": 18.5944, + "lon": -72.3074 + }, + { + "name": "Kingston", + "lat": 17.9712, + "lon": -76.7926 + }, + { + "name": "Nassau", + "lat": 25.0343, + "lon": -77.3963 + }, + { + "name": "Panama City", + "lat": 8.9824, + "lon": -79.5199 + }, + { + "name": "San Jose", + "lat": 9.9281, + "lon": -84.0907 + }, + { + "name": "Reykjavik", + "lat": 64.1466, + "lon": -21.9426 + }, { "name": "Bogota", "lat": 4.711, "lon": -74.0721 }, + { + "name": "Caracas", + "lat": 10.4806, + "lon": -66.9036 + }, + { + "name": "Maracaibo", + "lat": 10.6545, + "lon": -71.635 + }, + { + "name": "Georgetown", + "lat": 6.8013, + "lon": -58.1551 + }, + { + "name": "Paramaribo", + "lat": 5.852, + "lon": -55.2038 + }, + { + "name": "Cayenne", + "lat": 4.9224, + "lon": -52.3135 + }, { "name": "Quito", "lat": -0.1807, "lon": -78.4678 }, + { + "name": "Guayaquil", + "lat": -2.1894, + "lon": -79.8891 + }, { "name": "Lima", "lat": -12.0464, @@ -134,21 +259,61 @@ "lat": -16.4897, "lon": -68.1193 }, + { + "name": "Santa Cruz", + "lat": -17.7833, + "lon": -63.1821 + }, + { + "name": "Sucre", + "lat": -19.0333, + "lon": -65.2597 + }, { "name": "Santiago", "lat": -33.4489, "lon": -70.6693 }, + { + "name": "Valparaiso", + "lat": -33.0472, + "lon": -71.6127 + }, + { + "name": "La Serena", + "lat": -29.9045, + "lon": -71.2489 + }, { "name": "Buenos Aires", "lat": -34.6037, "lon": -58.3816 }, + { + "name": "Cordoba", + "lat": -31.4201, + "lon": -64.1888 + }, + { + "name": "Rosario", + "lat": -32.9442, + "lon": -60.6505 + }, + { + "name": "Mendoza", + "lat": -32.8895, + "lon": -68.8458 + }, { "name": "Montevideo", "lat": -34.9011, "lon": -56.1645 }, + { + "name": "Asuncion", + "lat": -25.2637, + "lon": -57.5759 + }, { "name": "Sao Paulo", "lat": -23.5558, @@ -159,11 +324,41 @@ "lat": -22.9068, "lon": -43.1729 }, + { + "name": "Brasilia", + "lat": -15.7975, + "lon": -47.8919 + }, + { + "name": "Salvador", + "lat": -12.9714, + "lon": -38.5014 + }, + { + "name": "Fortaleza", + "lat": -3.7327, + "lon": -38.527 + }, { "name": "Recife", "lat": -8.0476, "lon": -34.877 }, + { + "name": "Manaus", + "lat": -3.119, + "lon": -60.0217 + }, + { + "name": "Belem", + "lat": -1.4558, + "lon": -48.4902 + }, + { + "name": "Porto Alegre", + "lat": -30.0346, + "lon": -51.2177 + }, { "name": "London", "lat": 51.5072, @@ -179,6 +374,26 @@ "lat": 48.8566, "lon": 2.3522 }, + { + "name": "Marseille", + "lat": 43.2965, + "lon": 5.3698 + }, + { + "name": "Lyon", + "lat": 45.764, + "lon": 4.8357 + }, + { + "name": "Nice", + "lat": 43.7102, + "lon": 7.262 + }, + { + "name": "Toulouse", + "lat": 43.6047, + "lon": 1.4442 + }, { "name": "Amsterdam", "lat": 52.3676, @@ -189,6 +404,21 @@ "lat": 50.8503, "lon": 4.3517 }, + { + "name": "Antwerp", + "lat": 51.2194, + "lon": 4.4025 + }, + { + "name": "Rotterdam", + "lat": 51.9244, + "lon": 4.4777 + }, + { + "name": "Luxembourg", + "lat": 49.6116, + "lon": 6.1319 + }, { "name": "Berlin", "lat": 52.52, @@ -199,11 +429,56 @@ "lat": 53.5511, "lon": 9.9937 }, + { + "name": "Munich", + "lat": 48.1351, + "lon": 11.582 + }, + { + "name": "Cologne", + "lat": 50.9375, + "lon": 6.9603 + }, + { + "name": "Frankfurt", + "lat": 50.1109, + "lon": 8.6821 + }, + { + "name": "Stuttgart", + "lat": 48.7758, + "lon": 9.1829 + }, + { + "name": "Dusseldorf", + "lat": 51.2277, + "lon": 6.7735 + }, { "name": "Madrid", "lat": 40.4168, "lon": -3.7038 }, + { + "name": "Barcelona", + "lat": 41.3851, + "lon": 2.1734 + }, + { + "name": "Valencia", + "lat": 39.4699, + "lon": -0.3763 + }, + { + "name": "Seville", + "lat": 37.3891, + "lon": -5.9845 + }, + { + "name": "Bilbao", + "lat": 43.263, + "lon": -2.935 + }, { "name": "Lisbon", "lat": 38.7223, @@ -219,6 +494,16 @@ "lat": 45.4642, "lon": 9.19 }, + { + "name": "Naples", + "lat": 40.8518, + "lon": 14.2681 + }, + { + "name": "Turin", + "lat": 45.0703, + "lon": 7.6869 + }, { "name": "Vienna", "lat": 48.2082, @@ -234,21 +519,91 @@ "lat": 52.2297, "lon": 21.0122 }, + { + "name": "Krakow", + "lat": 50.0647, + "lon": 19.945 + }, + { + "name": "Budapest", + "lat": 47.4979, + "lon": 19.0402 + }, + { + "name": "Bratislava", + "lat": 48.1486, + "lon": 17.1077 + }, + { + "name": "Ljubljana", + "lat": 46.0569, + "lon": 14.5058 + }, + { + "name": "Zagreb", + "lat": 45.815, + "lon": 15.9819 + }, + { + "name": "Belgrade", + "lat": 44.7866, + "lon": 20.4489 + }, + { + "name": "Sofia", + "lat": 42.6977, + "lon": 23.3219 + }, + { + "name": "Bucharest", + "lat": 44.4268, + "lon": 26.1025 + }, { "name": "Stockholm", "lat": 59.3293, "lon": 18.0686 }, + { + "name": "Gothenburg", + "lat": 57.7089, + "lon": 11.9746 + }, { "name": "Oslo", "lat": 59.9139, "lon": 10.7522 }, + { + "name": "Bergen", + "lat": 60.3913, + "lon": 5.3221 + }, + { + "name": "Copenhagen", + "lat": 55.6761, + "lon": 12.5683 + }, { "name": "Helsinki", "lat": 60.1699, "lon": 24.9384 }, + { + "name": "Tallinn", + "lat": 59.437, + "lon": 24.7536 + }, + { + "name": "Riga", + "lat": 56.9496, + "lon": 24.1052 + }, + { + "name": "Vilnius", + "lat": 54.6872, + "lon": 25.2797 + }, { "name": "Athens", "lat": 37.9838, @@ -265,9 +620,54 @@ "lon": 30.5234 }, { - "name": "Cairo", - "lat": 30.0444, - "lon": 31.2357 + "name": "Moscow", + "lat": 55.7558, + "lon": 37.6173 + }, + { + "name": "Saint Petersburg", + "lat": 59.9311, + "lon": 30.3609 + }, + { + "name": "Kazan", + "lat": 55.8304, + "lon": 49.0661 + }, + { + "name": "Nizhny Novgorod", + "lat": 56.3269, + "lon": 44.0059 + }, + { + "name": "Yekaterinburg", + "lat": 56.8389, + "lon": 60.6057 + }, + { + "name": "Novosibirsk", + "lat": 55.0084, + "lon": 82.9357 + }, + { + "name": "Vladivostok", + "lat": 43.1332, + "lon": 131.9113 + }, + { + "name": "Rabat", + "lat": 34.0209, + "lon": -6.8416 + }, + { + "name": "Marrakech", + "lat": 31.6295, + "lon": -7.9811 + }, + { + "name": "Fez", + "lat": 34.0331, + "lon": -5.0003 }, { "name": "Casablanca", @@ -275,9 +675,104 @@ "lon": -7.5898 }, { - "name": "Lagos", - "lat": 6.5244, - "lon": 3.3792 + "name": "Algiers", + "lat": 36.7538, + "lon": 3.0588 + }, + { + "name": "Oran", + "lat": 35.6987, + "lon": -0.6349 + }, + { + "name": "Constantine", + "lat": 36.365, + "lon": 6.6147 + }, + { + "name": "Tunis", + "lat": 36.8065, + "lon": 10.1815 + }, + { + "name": "Sfax", + "lat": 34.7406, + "lon": 10.7603 + }, + { + "name": "Tripoli", + "lat": 32.8872, + "lon": 13.1913 + }, + { + "name": "Benghazi", + "lat": 32.1167, + "lon": 20.0667 + }, + { + "name": "Cairo", + "lat": 30.0444, + "lon": 31.2357 + }, + { + "name": "Alexandria", + "lat": 31.2001, + "lon": 29.9187 + }, + { + "name": "Luxor", + "lat": 25.6872, + "lon": 32.6396 + }, + { + "name": "Aswan", + "lat": 24.0889, + "lon": 32.8998 + }, + { + "name": "Dakar", + "lat": 14.7167, + "lon": -17.4677 + }, + { + "name": "Saint-Louis", + "lat": 16.0179, + "lon": -16.4896 + }, + { + "name": "Banjul", + "lat": 13.4549, + "lon": -16.579 + }, + { + "name": "Bissau", + "lat": 11.8817, + "lon": -15.6177 + }, + { + "name": "Conakry", + "lat": 9.6412, + "lon": -13.5784 + }, + { + "name": "Freetown", + "lat": 8.4657, + "lon": -13.2317 + }, + { + "name": "Monrovia", + "lat": 6.3156, + "lon": -10.8074 + }, + { + "name": "Abidjan", + "lat": 5.36, + "lon": -4.0083 + }, + { + "name": "Yamoussoukro", + "lat": 6.8276, + "lon": -5.2893 }, { "name": "Accra", @@ -285,15 +780,230 @@ "lon": -0.187 }, { - "name": "Nairobi", - "lat": -1.2864, - "lon": 36.8172 + "name": "Lomé", + "lat": 6.137, + "lon": 1.2125 + }, + { + "name": "Porto-Novo", + "lat": 6.4969, + "lon": 2.6289 + }, + { + "name": "Lagos", + "lat": 6.5244, + "lon": 3.3792 + }, + { + "name": "Ibadan", + "lat": 7.3775, + "lon": 3.947 + }, + { + "name": "Abuja", + "lat": 9.0765, + "lon": 7.3986 + }, + { + "name": "Kano", + "lat": 12.0022, + "lon": 8.592 + }, + { + "name": "Niamey", + "lat": 13.5116, + "lon": 2.1254 + }, + { + "name": "Ouagadougou", + "lat": 12.3714, + "lon": -1.5197 + }, + { + "name": "Bamako", + "lat": 12.6392, + "lon": -8.0029 + }, + { + "name": "Nouakchott", + "lat": 18.0735, + "lon": -15.9582 + }, + { + "name": "Kinshasa", + "lat": -4.4419, + "lon": 15.2663 + }, + { + "name": "Brazzaville", + "lat": -4.2634, + "lon": 15.2429 + }, + { + "name": "Lubumbashi", + "lat": -11.6876, + "lon": 27.5026 + }, + { + "name": "Bangui", + "lat": 4.3947, + "lon": 18.5582 + }, + { + "name": "Yaoundé", + "lat": 3.848, + "lon": 11.5021 + }, + { + "name": "Douala", + "lat": 4.0511, + "lon": 9.7679 + }, + { + "name": "Libreville", + "lat": 0.4162, + "lon": 9.4673 + }, + { + "name": "Malabo", + "lat": 3.75, + "lon": 8.7833 + }, + { + "name": "Sao Tome", + "lat": 0.3302, + "lon": 6.7333 + }, + { + "name": "Luanda", + "lat": 8.839, + "lon": 13.2894 + }, + { + "name": "Huambo", + "lat": 12.7761, + "lon": 15.7392 + }, + { + "name": "Khartoum", + "lat": 15.5007, + "lon": 32.5599 + }, + { + "name": "Juba", + "lat": 4.8594, + "lon": 31.5713 + }, + { + "name": "Asmara", + "lat": 15.3229, + "lon": 38.9251 + }, + { + "name": "Djibouti", + "lat": 11.5721, + "lon": 43.1456 }, { "name": "Addis Ababa", "lat": 8.9806, "lon": 38.7578 }, + { + "name": "Dire Dawa", + "lat": 9.6009, + "lon": 41.8501 + }, + { + "name": "Nairobi", + "lat": -1.2864, + "lon": 36.8172 + }, + { + "name": "Mombasa", + "lat": -4.0435, + "lon": 39.6682 + }, + { + "name": "Kampala", + "lat": 0.3476, + "lon": 32.5825 + }, + { + "name": "Kigali", + "lat": 1.9441, + "lon": 30.0619 + }, + { + "name": "Bujumbura", + "lat": 3.3614, + "lon": 29.3599 + }, + { + "name": "Dodoma", + "lat": 6.163, + "lon": 35.7516 + }, + { + "name": "Dar es Salaam", + "lat": -6.7924, + "lon": 39.2083 + }, + { + "name": "Zanzibar City", + "lat": -6.1659, + "lon": 39.2026 + }, + { + "name": "Windhoek", + "lat": -22.5609, + "lon": 17.0658 + }, + { + "name": "Walvis Bay", + "lat": -22.9575, + "lon": 14.5053 + }, + { + "name": "Gaborone", + "lat": -24.6282, + "lon": 25.9231 + }, + { + "name": "Harare", + "lat": -17.8252, + "lon": 31.0335 + }, + { + "name": "Bulawayo", + "lat": -20.1325, + "lon": 28.6265 + }, + { + "name": "Lusaka", + "lat": -15.3875, + "lon": 28.3228 + }, + { + "name": "Lilongwe", + "lat": -13.9627, + "lon": 33.7741 + }, + { + "name": "Blantyre", + "lat": -15.7861, + "lon": 35.0058 + }, + { + "name": "Maputo", + "lat": -25.9692, + "lon": 32.5732 + }, + { + "name": "Beira", + "lat": -19.7964, + "lon": 34.8845 + }, { "name": "Johannesburg", "lat": -26.2041, @@ -304,6 +1014,116 @@ "lat": -33.9249, "lon": 18.4241 }, + { + "name": "Durban", + "lat": -29.8587, + "lon": 31.0218 + }, + { + "name": "Port Elizabeth", + "lat": -33.9608, + "lon": 25.6022 + }, + { + "name": "Tehran", + "lat": 35.6892, + "lon": 51.389 + }, + { + "name": "Isfahan", + "lat": 32.6546, + "lon": 51.668 + }, + { + "name": "Shiraz", + "lat": 29.5926, + "lon": 52.5836 + }, + { + "name": "Mashhad", + "lat": 36.2605, + "lon": 59.6168 + }, + { + "name": "Baghdad", + "lat": 33.3152, + "lon": 44.3661 + }, + { + "name": "Basra", + "lat": 30.5156, + "lon": 47.7804 + }, + { + "name": "Mosul", + "lat": 36.3566, + "lon": 43.1641 + }, + { + "name": "Beirut", + "lat": 33.8938, + "lon": 35.5018 + }, + { + "name": "Damascus", + "lat": 33.5138, + "lon": 36.2765 + }, + { + "name": "Aleppo", + "lat": 36.2021, + "lon": 37.1343 + }, + { + "name": "Amman", + "lat": 31.9539, + "lon": 35.9106 + }, + { + "name": "Jerusalem", + "lat": 31.7683, + "lon": 35.2137 + }, + { + "name": "Riyadh", + "lat": 24.7136, + "lon": 46.6753 + }, + { + "name": "Jeddah", + "lat": 21.2854, + "lon": 39.2376 + }, + { + "name": "Mecca", + "lat": 21.3891, + "lon": 39.8579 + }, + { + "name": "Medina", + "lat": 24.5247, + "lon": 39.5692 + }, + { + "name": "Dammam", + "lat": 26.3927, + "lon": 50.0916 + }, + { + "name": "Kuwait City", + "lat": 29.3759, + "lon": 47.9774 + }, + { + "name": "Manama", + "lat": 26.2285, + "lon": 50.586 + }, + { + "name": "Doha", + "lat": 25.2854, + "lon": 51.531 + }, { "name": "Dubai", "lat": 25.2048, @@ -315,35 +1135,45 @@ "lon": 54.3773 }, { - "name": "Riyadh", - "lat": 24.7136, - "lon": 46.6753 + "name": "Muscat", + "lat": 23.5859, + "lon": 58.4059 }, { - "name": "Doha", - "lat": 25.2854, - "lon": 51.531 + "name": "Sana'a", + "lat": 15.3694, + "lon": 44.191 }, { - "name": "Kuwait City", - "lat": 29.3759, - "lon": 47.9774 - }, - { - "name": "Jerusalem", - "lat": 31.7683, - "lon": 35.2137 - }, - { - "name": "Amman", - "lat": 31.9539, - "lon": 35.9106 + "name": "Aden", + "lat": 12.7855, + "lon": 45.0186 }, { "name": "Karachi", "lat": 24.8607, "lon": 67.0011 }, + { + "name": "Lahore", + "lat": 31.5204, + "lon": 74.3587 + }, + { + "name": "Islamabad", + "lat": 33.6844, + "lon": 73.0479 + }, + { + "name": "Multan", + "lat": 30.1575, + "lon": 71.5249 + }, + { + "name": "Peshawar", + "lat": 34.0151, + "lon": 71.5249 + }, { "name": "Mumbai", "lat": 19.076, @@ -354,16 +1184,236 @@ "lat": 28.6139, "lon": 77.209 }, + { + "name": "Bangalore", + "lat": 12.9716, + "lon": 77.5946 + }, + { + "name": "Hyderabad", + "lat": 17.385, + "lon": 78.4867 + }, + { + "name": "Chennai", + "lat": 13.0827, + "lon": 80.2707 + }, + { + "name": "Kolkata", + "lat": 22.5726, + "lon": 88.3639 + }, + { + "name": "Ahmedabad", + "lat": 23.0225, + "lon": 72.5714 + }, + { + "name": "Pune", + "lat": 18.5204, + "lon": 73.8567 + }, + { + "name": "Surat", + "lat": 21.1702, + "lon": 72.8311 + }, + { + "name": "Jaipur", + "lat": 26.9124, + "lon": 75.7873 + }, + { + "name": "Lucknow", + "lat": 26.8467, + "lon": 80.9462 + }, + { + "name": "Kanpur", + "lat": 26.4499, + "lon": 80.3319 + }, + { + "name": "Nagpur", + "lat": 21.1458, + "lon": 79.0882 + }, + { + "name": "Indore", + "lat": 22.7196, + "lon": 75.8577 + }, + { + "name": "Visakhapatnam", + "lat": 17.6868, + "lon": 83.2185 + }, + { + "name": "Patna", + "lat": 25.5941, + "lon": 85.1376 + }, + { + "name": "Vadodara", + "lat": 22.3072, + "lon": 73.1812 + }, + { + "name": "Ghaziabad", + "lat": 28.6692, + "lon": 77.4538 + }, + { + "name": "Ludhiana", + "lat": 30.901, + "lon": 75.8573 + }, + { + "name": "Agra", + "lat": 27.1767, + "lon": 78.0081 + }, + { + "name": "Nashik", + "lat": 19.9975, + "lon": 73.7898 + }, + { + "name": "Faridabad", + "lat": 28.4089, + "lon": 77.3178 + }, + { + "name": "Meerut", + "lat": 28.9845, + "lon": 77.7064 + }, + { + "name": "Rajkot", + "lat": 22.3039, + "lon": 70.8022 + }, + { + "name": "Varanasi", + "lat": 25.3176, + "lon": 82.9739 + }, + { + "name": "Srinagar", + "lat": 34.0837, + "lon": 74.7973 + }, + { + "name": "Amritsar", + "lat": 31.634, + "lon": 74.8723 + }, + { + "name": "Jabalpur", + "lat": 23.1815, + "lon": 79.9864 + }, + { + "name": "Raipur", + "lat": 21.2514, + "lon": 81.6296 + }, + { + "name": "Coimbatore", + "lat": 11.0168, + "lon": 76.9558 + }, + { + "name": "Madurai", + "lat": 9.9252, + "lon": 78.1198 + }, + { + "name": "Mysore", + "lat": 12.2958, + "lon": 76.6394 + }, + { + "name": "Kochi", + "lat": 9.9312, + "lon": 76.2673 + }, + { + "name": "Guwahati", + "lat": 26.1445, + "lon": 91.7362 + }, + { + "name": "Chandigarh", + "lat": 30.7333, + "lon": 76.7794 + }, { "name": "Dhaka", "lat": 23.8103, "lon": 90.4125 }, + { + "name": "Chittagong", + "lat": 22.3569, + "lon": 91.7832 + }, + { + "name": "Khulna", + "lat": 22.8456, + "lon": 89.5403 + }, + { + "name": "Kathmandu", + "lat": 27.7172, + "lon": 85.324 + }, + { + "name": "Colombo", + "lat": 6.9271, + "lon": 79.8612 + }, + { + "name": "Kandy", + "lat": 7.2906, + "lon": 80.6337 + }, + { + "name": "Yangon", + "lat": 16.8661, + "lon": 96.1951 + }, + { + "name": "Mandalay", + "lat": 21.9813, + "lon": 96.0823 + }, { "name": "Bangkok", "lat": 13.7563, "lon": 100.5018 }, + { + "name": "Chiang Mai", + "lat": 18.7883, + "lon": 98.9853 + }, + { + "name": "Phuket", + "lat": 7.8804, + "lon": 98.3923 + }, + { + "name": "Vientiane", + "lat": 17.9757, + "lon": 102.6331 + }, + { + "name": "Luang Prabang", + "lat": 19.8968, + "lon": 102.141 + }, { "name": "Hanoi", "lat": 21.0278, @@ -374,6 +1424,46 @@ "lat": 10.8231, "lon": 106.6297 }, + { + "name": "Da Nang", + "lat": 16.0544, + "lon": 108.2022 + }, + { + "name": "Phnom Penh", + "lat": 11.5564, + "lon": 104.9282 + }, + { + "name": "Siem Reap", + "lat": 13.3633, + "lon": 103.8564 + }, + { + "name": "Kuala Lumpur", + "lat": 3.139, + "lon": 101.6869 + }, + { + "name": "Penang", + "lat": 5.4141, + "lon": 100.3288 + }, + { + "name": "Malacca", + "lat": 2.2008, + "lon": 102.2438 + }, + { + "name": "Johor Bahru", + "lat": 1.4927, + "lon": 103.7414 + }, + { + "name": "Kota Kinabalu", + "lat": 5.9804, + "lon": 116.0735 + }, { "name": "Singapore", "lat": 1.3521, @@ -384,11 +1474,46 @@ "lat": -6.2088, "lon": 106.8456 }, + { + "name": "Surabaya", + "lat": -7.2575, + "lon": 112.7521 + }, + { + "name": "Bandung", + "lat": -6.9175, + "lon": 107.6191 + }, + { + "name": "Medan", + "lat": 3.5952, + "lon": 98.6722 + }, + { + "name": "Makassar", + "lat": -5.1477, + "lon": 119.4327 + }, + { + "name": "Denpasar", + "lat": -8.6706, + "lon": 115.2126 + }, { "name": "Manila", "lat": 14.5995, "lon": 120.9842 }, + { + "name": "Cebu City", + "lat": 10.3157, + "lon": 123.8854 + }, + { + "name": "Davao City", + "lat": 7.1907, + "lon": 125.4553 + }, { "name": "Hong Kong", "lat": 22.3193, @@ -400,35 +1525,180 @@ "lon": 121.5654 }, { - "name": "Shanghai", - "lat": 31.2304, - "lon": 121.4737 + "name": "Kaohsiung", + "lat": 22.6273, + "lon": 120.3014 + }, + { + "name": "Taichung", + "lat": 24.1477, + "lon": 120.6736 }, { "name": "Beijing", "lat": 39.9042, "lon": 116.4074 }, + { + "name": "Shanghai", + "lat": 31.2304, + "lon": 121.4737 + }, + { + "name": "Guangzhou", + "lat": 23.1291, + "lon": 113.2644 + }, + { + "name": "Shenzhen", + "lat": 22.5431, + "lon": 114.0579 + }, + { + "name": "Chengdu", + "lat": 30.5728, + "lon": 104.0668 + }, + { + "name": "Wuhan", + "lat": 30.5928, + "lon": 114.3055 + }, + { + "name": "Hangzhou", + "lat": 30.2741, + "lon": 120.1551 + }, + { + "name": "Xi'an", + "lat": 34.3416, + "lon": 108.9398 + }, + { + "name": "Suzhou", + "lat": 31.2989, + "lon": 120.5853 + }, + { + "name": "Nanjing", + "lat": 32.0603, + "lon": 118.7969 + }, + { + "name": "Tianjin", + "lat": 39.0842, + "lon": 117.201 + }, + { + "name": "Zhengzhou", + "lat": 34.7466, + "lon": 113.6253 + }, + { + "name": "Changsha", + "lat": 28.228, + "lon": 112.9388 + }, + { + "name": "Qingdao", + "lat": 36.0671, + "lon": 120.3826 + }, + { + "name": "Shenyang", + "lat": 41.8057, + "lon": 123.4315 + }, + { + "name": "Dalian", + "lat": 38.914, + "lon": 121.6147 + }, + { + "name": "Harbin", + "lat": 45.8038, + "lon": 126.535 + }, + { + "name": "Changchun", + "lat": 43.8171, + "lon": 125.3235 + }, + { + "name": "Kunming", + "lat": 25.0389, + "lon": 102.7183 + }, { "name": "Seoul", "lat": 37.5665, "lon": 126.978 }, + { + "name": "Busan", + "lat": 35.1796, + "lon": 129.0756 + }, + { + "name": "Incheon", + "lat": 37.4563, + "lon": 126.7052 + }, + { + "name": "Daegu", + "lat": 35.8714, + "lon": 128.6014 + }, { "name": "Tokyo", "lat": 35.6762, "lon": 139.6503 }, + { + "name": "Yokohama", + "lat": 35.4437, + "lon": 139.638 + }, { "name": "Osaka", "lat": 34.6937, "lon": 135.5023 }, + { + "name": "Nagoya", + "lat": 35.1815, + "lon": 136.9066 + }, { "name": "Sapporo", "lat": 43.0618, "lon": 141.3545 }, + { + "name": "Fukuoka", + "lat": 33.5902, + "lon": 130.4017 + }, + { + "name": "Kobe", + "lat": 34.6901, + "lon": 135.1955 + }, + { + "name": "Kyoto", + "lat": 35.0116, + "lon": 135.7681 + }, + { + "name": "Sendai", + "lat": 38.2682, + "lon": 140.8694 + }, + { + "name": "Hiroshima", + "lat": 34.3853, + "lon": 132.4553 + }, { "name": "Sydney", "lat": -33.8688, @@ -449,6 +1719,51 @@ "lat": -31.9523, "lon": 115.8613 }, + { + "name": "Adelaide", + "lat": 34.9285, + "lon": 138.6007 + }, + { + "name": "Gold Coast", + "lat": 28.0167, + "lon": 153.4 + }, + { + "name": "Canberra", + "lat": 35.2809, + "lon": 149.13 + }, + { + "name": "Newcastle", + "lat": 32.9283, + "lon": 151.7817 + }, + { + "name": "Wollongong", + "lat": 34.4278, + "lon": 150.8931 + }, + { + "name": "Hobart", + "lat": 42.8821, + "lon": 147.3272 + }, + { + "name": "Darwin", + "lat": 12.4634, + "lon": 130.8456 + }, + { + "name": "Cairns", + "lat": 16.9186, + "lon": 145.7781 + }, + { + "name": "Townsville", + "lat": 19.259, + "lon": 146.8169 + }, { "name": "Auckland", "lat": -36.8509, @@ -458,5 +1773,95 @@ "name": "Wellington", "lat": -41.2866, "lon": 174.7756 + }, + { + "name": "Christchurch", + "lat": -43.532, + "lon": 172.6306 + }, + { + "name": "Hamilton", + "lat": 37.787, + "lon": 175.2793 + }, + { + "name": "Tauranga", + "lat": 37.6878, + "lon": 176.1651 + }, + { + "name": "Dunedin", + "lat": -45.8788, + "lon": 170.5028 + }, + { + "name": "Port Moresby", + "lat": -9.4438, + "lon": 147.1803 + }, + { + "name": "Lae", + "lat": -6.732, + "lon": 147.014 + }, + { + "name": "Honiara", + "lat": -9.4456, + "lon": 159.9729 + }, + { + "name": "Suva", + "lat": -18.1248, + "lon": 178.4501 + }, + { + "name": "Nouméa", + "lat": -22.2558, + "lon": 166.4125 + }, + { + "name": "Papeete", + "lat": -17.5516, + "lon": -149.5585 + }, + { + "name": "Majuro", + "lat": 7.1164, + "lon": 171.184 + }, + { + "name": "Palikir", + "lat": 6.9147, + "lon": 158.161 + }, + { + "name": "South Tarawa", + "lat": 1.3294, + "lon": 172.977 + }, + { + "name": "Funafuti", + "lat": -8.5243, + "lon": 179.1942 + }, + { + "name": "Nuku'alofa", + "lat": -21.1394, + "lon": -175.2018 + }, + { + "name": "Apia", + "lat": -13.8507, + "lon": 171.7514 + }, + { + "name": "Port Vila", + "lat": -17.7345, + "lon": 168.3207 + }, + { + "name": "Ngerulmud", + "lat": 7.5004, + "lon": 134.6243 } ] \ No newline at end of file diff --git a/datagenerators/radarcities-raw.json b/datagenerators/radarcities-raw.json index 2685981..2a25552 100644 --- a/datagenerators/radarcities-raw.json +++ b/datagenerators/radarcities-raw.json @@ -2,8 +2,14 @@ { "name": "Anchorage", "lat": 61.2181, "lon": -149.9003 }, { "name": "Vancouver", "lat": 49.2827, "lon": -123.1207 }, { "name": "Seattle", "lat": 47.6062, "lon": -122.3321 }, + { "name": "Portland", "lat": 45.5152, "lon": -122.6784 }, { "name": "San Francisco", "lat": 37.7749, "lon": -122.4194 }, + { "name": "Sacramento", "lat": 38.5816, "lon": -121.4944 }, + { "name": "Fresno", "lat": 36.7378, "lon": -119.7871 }, + { "name": "Bakersfield", "lat": 35.3733, "lon": -119.0187 }, { "name": "Los Angeles", "lat": 34.0522, "lon": -118.2437 }, + { "name": "San Diego", "lat": 32.7153, "lon": -117.1573 }, + { "name": "Las Vegas", "lat": 36.1699, "lon": -115.1398 }, { "name": "Phoenix", "lat": 33.4484, "lon": -112.074 }, { "name": "Denver", "lat": 39.7392, "lon": -104.9903 }, { "name": "Dallas", "lat": 32.7767, "lon": -96.797 }, @@ -13,82 +19,357 @@ { "name": "Atlanta", "lat": 33.749, "lon": -84.388 }, { "name": "Miami", "lat": 25.7617, "lon": -80.1918 }, { "name": "Toronto", "lat": 43.6532, "lon": -79.3832 }, + { "name": "Ottawa", "lat": 45.4215, "lon": -75.6972 }, { "name": "Montreal", "lat": 45.5019, "lon": -73.5674 }, + { "name": "Quebec City", "lat": 46.8139, "lon": -71.208 }, + { "name": "Calgary", "lat": 51.0447, "lon": -114.0719 }, + { "name": "Edmonton", "lat": 53.5461, "lon": -113.4938 }, { "name": "New York", "lat": 40.7128, "lon": -74.006 }, { "name": "Boston", "lat": 42.3601, "lon": -71.0589 }, - { "name": "Reykjavik", "lat": 64.1466, "lon": -21.9426 }, { "name": "Mexico City", "lat": 19.4326, "lon": -99.1332 }, + { "name": "Guadalajara", "lat": 20.6597, "lon": -103.3496 }, + { "name": "Monterrey", "lat": 25.6866, "lon": -100.3161 }, + { "name": "Tijuana", "lat": 32.5149, "lon": -117.0382 }, + { "name": "Merida", "lat": 20.9674, "lon": -89.5926 }, { "name": "Guatemala City", "lat": 14.6349, "lon": -90.5069 }, { "name": "Havana", "lat": 23.1136, "lon": -82.3666 }, { "name": "Santo Domingo", "lat": 18.4861, "lon": -69.9312 }, { "name": "San Juan", "lat": 18.4655, "lon": -66.1057 }, + { "name": "Port-au-Prince", "lat": 18.5944, "lon": -72.3074 }, + { "name": "Kingston", "lat": 17.9712, "lon": -76.7926 }, + { "name": "Nassau", "lat": 25.0343, "lon": -77.3963 }, + { "name": "Panama City", "lat": 8.9824, "lon": -79.5199 }, + { "name": "San Jose", "lat": 9.9281, "lon": -84.0907 }, + { "name": "Reykjavik", "lat": 64.1466, "lon": -21.9426 }, { "name": "Bogota", "lat": 4.711, "lon": -74.0721 }, + { "name": "Caracas", "lat": 10.4806, "lon": -66.9036 }, + { "name": "Maracaibo", "lat": 10.6545, "lon": -71.635 }, + { "name": "Georgetown", "lat": 6.8013, "lon": -58.1551 }, + { "name": "Paramaribo", "lat": 5.852, "lon": -55.2038 }, + { "name": "Cayenne", "lat": 4.9224, "lon": -52.3135 }, { "name": "Quito", "lat": -0.1807, "lon": -78.4678 }, + { "name": "Guayaquil", "lat": -2.1894, "lon": -79.8891 }, { "name": "Lima", "lat": -12.0464, "lon": -77.0428 }, { "name": "La Paz", "lat": -16.4897, "lon": -68.1193 }, + { "name": "Santa Cruz", "lat": -17.7833, "lon": -63.1821 }, + { "name": "Sucre", "lat": -19.0333, "lon": -65.2597 }, { "name": "Santiago", "lat": -33.4489, "lon": -70.6693 }, + { "name": "Valparaiso", "lat": -33.0472, "lon": -71.6127 }, + { "name": "La Serena", "lat": -29.9045, "lon": -71.2489 }, { "name": "Buenos Aires", "lat": -34.6037, "lon": -58.3816 }, + { "name": "Cordoba", "lat": -31.4201, "lon": -64.1888 }, + { "name": "Rosario", "lat": -32.9442, "lon": -60.6505 }, + { "name": "Mendoza", "lat": -32.8895, "lon": -68.8458 }, { "name": "Montevideo", "lat": -34.9011, "lon": -56.1645 }, + { "name": "Asuncion", "lat": -25.2637, "lon": -57.5759 }, { "name": "Sao Paulo", "lat": -23.5558, "lon": -46.6396 }, { "name": "Rio", "lat": -22.9068, "lon": -43.1729 }, + { "name": "Brasilia", "lat": -15.7975, "lon": -47.8919 }, + { "name": "Salvador", "lat": -12.9714, "lon": -38.5014 }, + { "name": "Fortaleza", "lat": -3.7327, "lon": -38.527 }, { "name": "Recife", "lat": -8.0476, "lon": -34.877 }, + { "name": "Manaus", "lat": -3.119, "lon": -60.0217 }, + { "name": "Belem", "lat": -1.4558, "lon": -48.4902 }, + { "name": "Porto Alegre", "lat": -30.0346, "lon": -51.2177 }, { "name": "London", "lat": 51.5072, "lon": -0.1276 }, { "name": "Dublin", "lat": 53.3498, "lon": -6.2603 }, { "name": "Paris", "lat": 48.8566, "lon": 2.3522 }, + { "name": "Marseille", "lat": 43.2965, "lon": 5.3698 }, + { "name": "Lyon", "lat": 45.764, "lon": 4.8357 }, + { "name": "Nice", "lat": 43.7102, "lon": 7.262 }, + { "name": "Toulouse", "lat": 43.6047, "lon": 1.4442 }, { "name": "Amsterdam", "lat": 52.3676, "lon": 4.9041 }, { "name": "Brussels", "lat": 50.8503, "lon": 4.3517 }, + { "name": "Antwerp", "lat": 51.2194, "lon": 4.4025 }, + { "name": "Rotterdam", "lat": 51.9244, "lon": 4.4777 }, + { "name": "Luxembourg", "lat": 49.6116, "lon": 6.1319 }, { "name": "Berlin", "lat": 52.52, "lon": 13.405 }, { "name": "Hamburg", "lat": 53.5511, "lon": 9.9937 }, + { "name": "Munich", "lat": 48.1351, "lon": 11.582 }, + { "name": "Cologne", "lat": 50.9375, "lon": 6.9603 }, + { "name": "Frankfurt", "lat": 50.1109, "lon": 8.6821 }, + { "name": "Stuttgart", "lat": 48.7758, "lon": 9.1829 }, + { "name": "Dusseldorf", "lat": 51.2277, "lon": 6.7735 }, { "name": "Madrid", "lat": 40.4168, "lon": -3.7038 }, + { "name": "Barcelona", "lat": 41.3851, "lon": 2.1734 }, + { "name": "Valencia", "lat": 39.4699, "lon": -0.3763 }, + { "name": "Seville", "lat": 37.3891, "lon": -5.9845 }, + { "name": "Bilbao", "lat": 43.263, "lon": -2.935 }, { "name": "Lisbon", "lat": 38.7223, "lon": -9.1393 }, { "name": "Rome", "lat": 41.9028, "lon": 12.4964 }, { "name": "Milan", "lat": 45.4642, "lon": 9.19 }, + { "name": "Naples", "lat": 40.8518, "lon": 14.2681 }, + { "name": "Turin", "lat": 45.0703, "lon": 7.6869 }, { "name": "Vienna", "lat": 48.2082, "lon": 16.3738 }, { "name": "Prague", "lat": 50.0755, "lon": 14.4378 }, { "name": "Warsaw", "lat": 52.2297, "lon": 21.0122 }, + { "name": "Krakow", "lat": 50.0647, "lon": 19.945 }, + { "name": "Budapest", "lat": 47.4979, "lon": 19.0402 }, + { "name": "Bratislava", "lat": 48.1486, "lon": 17.1077 }, + { "name": "Ljubljana", "lat": 46.0569, "lon": 14.5058 }, + { "name": "Zagreb", "lat": 45.815, "lon": 15.9819 }, + { "name": "Belgrade", "lat": 44.7866, "lon": 20.4489 }, + { "name": "Sofia", "lat": 42.6977, "lon": 23.3219 }, + { "name": "Bucharest", "lat": 44.4268, "lon": 26.1025 }, { "name": "Stockholm", "lat": 59.3293, "lon": 18.0686 }, + { "name": "Gothenburg", "lat": 57.7089, "lon": 11.9746 }, { "name": "Oslo", "lat": 59.9139, "lon": 10.7522 }, + { "name": "Bergen", "lat": 60.3913, "lon": 5.3221 }, + { "name": "Copenhagen", "lat": 55.6761, "lon": 12.5683 }, { "name": "Helsinki", "lat": 60.1699, "lon": 24.9384 }, + { "name": "Tallinn", "lat": 59.437, "lon": 24.7536 }, + { "name": "Riga", "lat": 56.9496, "lon": 24.1052 }, + { "name": "Vilnius", "lat": 54.6872, "lon": 25.2797 }, { "name": "Athens", "lat": 37.9838, "lon": 23.7275 }, { "name": "Istanbul", "lat": 41.0082, "lon": 28.9784 }, { "name": "Kyiv", "lat": 50.4501, "lon": 30.5234 }, - { "name": "Cairo", "lat": 30.0444, "lon": 31.2357 }, + { "name": "Moscow", "lat": 55.7558, "lon": 37.6173 }, + { "name": "Saint Petersburg", "lat": 59.9311, "lon": 30.3609 }, + { "name": "Kazan", "lat": 55.8304, "lon": 49.0661 }, + { "name": "Nizhny Novgorod", "lat": 56.3269, "lon": 44.0059 }, + { "name": "Yekaterinburg", "lat": 56.8389, "lon": 60.6057 }, + { "name": "Novosibirsk", "lat": 55.0084, "lon": 82.9357 }, + { "name": "Vladivostok", "lat": 43.1332, "lon": 131.9113 }, + { "name": "Rabat", "lat": 34.0209, "lon": -6.8416 }, + { "name": "Marrakech", "lat": 31.6295, "lon": -7.9811 }, + { "name": "Fez", "lat": 34.0331, "lon": -5.0003 }, { "name": "Casablanca", "lat": 33.5731, "lon": -7.5898 }, - { "name": "Lagos", "lat": 6.5244, "lon": 3.3792 }, + { "name": "Algiers", "lat": 36.7538, "lon": 3.0588 }, + { "name": "Oran", "lat": 35.6987, "lon": -0.6349 }, + { "name": "Constantine", "lat": 36.365, "lon": 6.6147 }, + { "name": "Tunis", "lat": 36.8065, "lon": 10.1815 }, + { "name": "Sfax", "lat": 34.7406, "lon": 10.7603 }, + { "name": "Tripoli", "lat": 32.8872, "lon": 13.1913 }, + { "name": "Benghazi", "lat": 32.1167, "lon": 20.0667 }, + { "name": "Cairo", "lat": 30.0444, "lon": 31.2357 }, + { "name": "Alexandria", "lat": 31.2001, "lon": 29.9187 }, + { "name": "Luxor", "lat": 25.6872, "lon": 32.6396 }, + { "name": "Aswan", "lat": 24.0889, "lon": 32.8998 }, + { "name": "Dakar", "lat": 14.7167, "lon": -17.4677 }, + { "name": "Saint-Louis", "lat": 16.0179, "lon": -16.4896 }, + { "name": "Banjul", "lat": 13.4549, "lon": -16.579 }, + { "name": "Bissau", "lat": 11.8817, "lon": -15.6177 }, + { "name": "Conakry", "lat": 9.6412, "lon": -13.5784 }, + { "name": "Freetown", "lat": 8.4657, "lon": -13.2317 }, + { "name": "Monrovia", "lat": 6.3156, "lon": -10.8074 }, + { "name": "Abidjan", "lat": 5.36, "lon": -4.0083 }, + { "name": "Yamoussoukro", "lat": 6.8276, "lon": -5.2893 }, { "name": "Accra", "lat": 5.6037, "lon": -0.187 }, - { "name": "Nairobi", "lat": -1.2864, "lon": 36.8172 }, + { "name": "Lomé", "lat": 6.137, "lon": 1.2125 }, + { "name": "Porto-Novo", "lat": 6.4969, "lon": 2.6289 }, + { "name": "Lagos", "lat": 6.5244, "lon": 3.3792 }, + { "name": "Ibadan", "lat": 7.3775, "lon": 3.947 }, + { "name": "Abuja", "lat": 9.0765, "lon": 7.3986 }, + { "name": "Kano", "lat": 12.0022, "lon": 8.592 }, + { "name": "Niamey", "lat": 13.5116, "lon": 2.1254 }, + { "name": "Ouagadougou", "lat": 12.3714, "lon": -1.5197 }, + { "name": "Bamako", "lat": 12.6392, "lon": -8.0029 }, + { "name": "Nouakchott", "lat": 18.0735, "lon": -15.9582 }, + { "name": "Kinshasa", "lat": -4.4419, "lon": 15.2663 }, + { "name": "Brazzaville", "lat": -4.2634, "lon": 15.2429 }, + { "name": "Lubumbashi", "lat": -11.6876, "lon": 27.5026 }, + { "name": "Bangui", "lat": 4.3947, "lon": 18.5582 }, + { "name": "Yaoundé", "lat": 3.848, "lon": 11.5021 }, + { "name": "Douala", "lat": 4.0511, "lon": 9.7679 }, + { "name": "Libreville", "lat": 0.4162, "lon": 9.4673 }, + { "name": "Malabo", "lat": 3.75, "lon": 8.7833 }, + { "name": "Sao Tome", "lat": 0.3302, "lon": 6.7333 }, + { "name": "Luanda", "lat": 8.839, "lon": 13.2894 }, + { "name": "Huambo", "lat": 12.7761, "lon": 15.7392 }, + { "name": "Khartoum", "lat": 15.5007, "lon": 32.5599 }, + { "name": "Juba", "lat": 4.8594, "lon": 31.5713 }, + { "name": "Asmara", "lat": 15.3229, "lon": 38.9251 }, + { "name": "Djibouti", "lat": 11.5721, "lon": 43.1456 }, { "name": "Addis Ababa", "lat": 8.9806, "lon": 38.7578 }, + { "name": "Dire Dawa", "lat": 9.6009, "lon": 41.8501 }, + { "name": "Nairobi", "lat": -1.2864, "lon": 36.8172 }, + { "name": "Mombasa", "lat": -4.0435, "lon": 39.6682 }, + { "name": "Kampala", "lat": 0.3476, "lon": 32.5825 }, + { "name": "Kigali", "lat": 1.9441, "lon": 30.0619 }, + { "name": "Bujumbura", "lat": 3.3614, "lon": 29.3599 }, + { "name": "Dodoma", "lat": 6.163, "lon": 35.7516 }, + { "name": "Dar es Salaam", "lat": -6.7924, "lon": 39.2083 }, + { "name": "Zanzibar City", "lat": -6.1659, "lon": 39.2026 }, + { "name": "Windhoek", "lat": -22.5609, "lon": 17.0658 }, + { "name": "Walvis Bay", "lat": -22.9575, "lon": 14.5053 }, + { "name": "Gaborone", "lat": -24.6282, "lon": 25.9231 }, + { "name": "Harare", "lat": -17.8252, "lon": 31.0335 }, + { "name": "Bulawayo", "lat": -20.1325, "lon": 28.6265 }, + { "name": "Lusaka", "lat": -15.3875, "lon": 28.3228 }, + { "name": "Lilongwe", "lat": -13.9627, "lon": 33.7741 }, + { "name": "Blantyre", "lat": -15.7861, "lon": 35.0058 }, + { "name": "Maputo", "lat": -25.9692, "lon": 32.5732 }, + { "name": "Beira", "lat": -19.7964, "lon": 34.8845 }, { "name": "Johannesburg", "lat": -26.2041, "lon": 28.0473 }, { "name": "Cape Town", "lat": -33.9249, "lon": 18.4241 }, + { "name": "Durban", "lat": -29.8587, "lon": 31.0218 }, + { "name": "Port Elizabeth", "lat": -33.9608, "lon": 25.6022 }, + { "name": "Tehran", "lat": 35.6892, "lon": 51.389 }, + { "name": "Isfahan", "lat": 32.6546, "lon": 51.668 }, + { "name": "Shiraz", "lat": 29.5926, "lon": 52.5836 }, + { "name": "Mashhad", "lat": 36.2605, "lon": 59.6168 }, + { "name": "Baghdad", "lat": 33.3152, "lon": 44.3661 }, + { "name": "Basra", "lat": 30.5156, "lon": 47.7804 }, + { "name": "Mosul", "lat": 36.3566, "lon": 43.1641 }, + { "name": "Beirut", "lat": 33.8938, "lon": 35.5018 }, + { "name": "Damascus", "lat": 33.5138, "lon": 36.2765 }, + { "name": "Aleppo", "lat": 36.2021, "lon": 37.1343 }, + { "name": "Amman", "lat": 31.9539, "lon": 35.9106 }, + { "name": "Jerusalem", "lat": 31.7683, "lon": 35.2137 }, + { "name": "Riyadh", "lat": 24.7136, "lon": 46.6753 }, + { "name": "Jeddah", "lat": 21.2854, "lon": 39.2376 }, + { "name": "Mecca", "lat": 21.3891, "lon": 39.8579 }, + { "name": "Medina", "lat": 24.5247, "lon": 39.5692 }, + { "name": "Dammam", "lat": 26.3927, "lon": 50.0916 }, + { "name": "Kuwait City", "lat": 29.3759, "lon": 47.9774 }, + { "name": "Manama", "lat": 26.2285, "lon": 50.586 }, + { "name": "Doha", "lat": 25.2854, "lon": 51.531 }, { "name": "Dubai", "lat": 25.2048, "lon": 55.2708 }, { "name": "Abu Dhabi", "lat": 24.4539, "lon": 54.3773 }, - { "name": "Riyadh", "lat": 24.7136, "lon": 46.6753 }, - { "name": "Doha", "lat": 25.2854, "lon": 51.531 }, - { "name": "Kuwait City", "lat": 29.3759, "lon": 47.9774 }, - { "name": "Jerusalem", "lat": 31.7683, "lon": 35.2137 }, - { "name": "Amman", "lat": 31.9539, "lon": 35.9106 }, + { "name": "Muscat", "lat": 23.5859, "lon": 58.4059 }, + { "name": "Sana'a", "lat": 15.3694, "lon": 44.191 }, + { "name": "Aden", "lat": 12.7855, "lon": 45.0186 }, { "name": "Karachi", "lat": 24.8607, "lon": 67.0011 }, + { "name": "Lahore", "lat": 31.5204, "lon": 74.3587 }, + { "name": "Islamabad", "lat": 33.6844, "lon": 73.0479 }, + { "name": "Multan", "lat": 30.1575, "lon": 71.5249 }, + { "name": "Peshawar", "lat": 34.0151, "lon": 71.5249 }, { "name": "Mumbai", "lat": 19.076, "lon": 72.8777 }, { "name": "Delhi", "lat": 28.6139, "lon": 77.209 }, + { "name": "Bangalore", "lat": 12.9716, "lon": 77.5946 }, + { "name": "Hyderabad", "lat": 17.385, "lon": 78.4867 }, + { "name": "Chennai", "lat": 13.0827, "lon": 80.2707 }, + { "name": "Kolkata", "lat": 22.5726, "lon": 88.3639 }, + { "name": "Ahmedabad", "lat": 23.0225, "lon": 72.5714 }, + { "name": "Pune", "lat": 18.5204, "lon": 73.8567 }, + { "name": "Surat", "lat": 21.1702, "lon": 72.8311 }, + { "name": "Jaipur", "lat": 26.9124, "lon": 75.7873 }, + { "name": "Lucknow", "lat": 26.8467, "lon": 80.9462 }, + { "name": "Kanpur", "lat": 26.4499, "lon": 80.3319 }, + { "name": "Nagpur", "lat": 21.1458, "lon": 79.0882 }, + { "name": "Indore", "lat": 22.7196, "lon": 75.8577 }, + { "name": "Visakhapatnam", "lat": 17.6868, "lon": 83.2185 }, + { "name": "Patna", "lat": 25.5941, "lon": 85.1376 }, + { "name": "Vadodara", "lat": 22.3072, "lon": 73.1812 }, + { "name": "Ghaziabad", "lat": 28.6692, "lon": 77.4538 }, + { "name": "Ludhiana", "lat": 30.901, "lon": 75.8573 }, + { "name": "Agra", "lat": 27.1767, "lon": 78.0081 }, + { "name": "Nashik", "lat": 19.9975, "lon": 73.7898 }, + { "name": "Faridabad", "lat": 28.4089, "lon": 77.3178 }, + { "name": "Meerut", "lat": 28.9845, "lon": 77.7064 }, + { "name": "Rajkot", "lat": 22.3039, "lon": 70.8022 }, + { "name": "Varanasi", "lat": 25.3176, "lon": 82.9739 }, + { "name": "Srinagar", "lat": 34.0837, "lon": 74.7973 }, + { "name": "Amritsar", "lat": 31.634, "lon": 74.8723 }, + { "name": "Jabalpur", "lat": 23.1815, "lon": 79.9864 }, + { "name": "Raipur", "lat": 21.2514, "lon": 81.6296 }, + { "name": "Coimbatore", "lat": 11.0168, "lon": 76.9558 }, + { "name": "Madurai", "lat": 9.9252, "lon": 78.1198 }, + { "name": "Mysore", "lat": 12.2958, "lon": 76.6394 }, + { "name": "Kochi", "lat": 9.9312, "lon": 76.2673 }, + { "name": "Guwahati", "lat": 26.1445, "lon": 91.7362 }, + { "name": "Chandigarh", "lat": 30.7333, "lon": 76.7794 }, { "name": "Dhaka", "lat": 23.8103, "lon": 90.4125 }, + { "name": "Chittagong", "lat": 22.3569, "lon": 91.7832 }, + { "name": "Khulna", "lat": 22.8456, "lon": 89.5403 }, + { "name": "Kathmandu", "lat": 27.7172, "lon": 85.324 }, + { "name": "Colombo", "lat": 6.9271, "lon": 79.8612 }, + { "name": "Kandy", "lat": 7.2906, "lon": 80.6337 }, + { "name": "Yangon", "lat": 16.8661, "lon": 96.1951 }, + { "name": "Mandalay", "lat": 21.9813, "lon": 96.0823 }, { "name": "Bangkok", "lat": 13.7563, "lon": 100.5018 }, + { "name": "Chiang Mai", "lat": 18.7883, "lon": 98.9853 }, + { "name": "Phuket", "lat": 7.8804, "lon": 98.3923 }, + { "name": "Vientiane", "lat": 17.9757, "lon": 102.6331 }, + { "name": "Luang Prabang", "lat": 19.8968, "lon": 102.141 }, { "name": "Hanoi", "lat": 21.0278, "lon": 105.8342 }, { "name": "Ho Chi Minh City", "lat": 10.8231, "lon": 106.6297 }, + { "name": "Da Nang", "lat": 16.0544, "lon": 108.2022 }, + { "name": "Phnom Penh", "lat": 11.5564, "lon": 104.9282 }, + { "name": "Siem Reap", "lat": 13.3633, "lon": 103.8564 }, + { "name": "Kuala Lumpur", "lat": 3.139, "lon": 101.6869 }, + { "name": "Penang", "lat": 5.4141, "lon": 100.3288 }, + { "name": "Malacca", "lat": 2.2008, "lon": 102.2438 }, + { "name": "Johor Bahru", "lat": 1.4927, "lon": 103.7414 }, + { "name": "Kota Kinabalu", "lat": 5.9804, "lon": 116.0735 }, { "name": "Singapore", "lat": 1.3521, "lon": 103.8198 }, { "name": "Jakarta", "lat": -6.2088, "lon": 106.8456 }, + { "name": "Surabaya", "lat": -7.2575, "lon": 112.7521 }, + { "name": "Bandung", "lat": -6.9175, "lon": 107.6191 }, + { "name": "Medan", "lat": 3.5952, "lon": 98.6722 }, + { "name": "Makassar", "lat": -5.1477, "lon": 119.4327 }, + { "name": "Denpasar", "lat": -8.6706, "lon": 115.2126 }, { "name": "Manila", "lat": 14.5995, "lon": 120.9842 }, + { "name": "Cebu City", "lat": 10.3157, "lon": 123.8854 }, + { "name": "Davao City", "lat": 7.1907, "lon": 125.4553 }, { "name": "Hong Kong", "lat": 22.3193, "lon": 114.1694 }, { "name": "Taipei", "lat": 25.033, "lon": 121.5654 }, - { "name": "Shanghai", "lat": 31.2304, "lon": 121.4737 }, + { "name": "Kaohsiung", "lat": 22.6273, "lon": 120.3014 }, + { "name": "Taichung", "lat": 24.1477, "lon": 120.6736 }, { "name": "Beijing", "lat": 39.9042, "lon": 116.4074 }, + { "name": "Shanghai", "lat": 31.2304, "lon": 121.4737 }, + { "name": "Guangzhou", "lat": 23.1291, "lon": 113.2644 }, + { "name": "Shenzhen", "lat": 22.5431, "lon": 114.0579 }, + { "name": "Chengdu", "lat": 30.5728, "lon": 104.0668 }, + { "name": "Wuhan", "lat": 30.5928, "lon": 114.3055 }, + { "name": "Hangzhou", "lat": 30.2741, "lon": 120.1551 }, + { "name": "Xi'an", "lat": 34.3416, "lon": 108.9398 }, + { "name": "Suzhou", "lat": 31.2989, "lon": 120.5853 }, + { "name": "Nanjing", "lat": 32.0603, "lon": 118.7969 }, + { "name": "Tianjin", "lat": 39.0842, "lon": 117.201 }, + { "name": "Zhengzhou", "lat": 34.7466, "lon": 113.6253 }, + { "name": "Changsha", "lat": 28.228, "lon": 112.9388 }, + { "name": "Qingdao", "lat": 36.0671, "lon": 120.3826 }, + { "name": "Shenyang", "lat": 41.8057, "lon": 123.4315 }, + { "name": "Dalian", "lat": 38.914, "lon": 121.6147 }, + { "name": "Harbin", "lat": 45.8038, "lon": 126.535 }, + { "name": "Changchun", "lat": 43.8171, "lon": 125.3235 }, + { "name": "Kunming", "lat": 25.0389, "lon": 102.7183 }, { "name": "Seoul", "lat": 37.5665, "lon": 126.978 }, + { "name": "Busan", "lat": 35.1796, "lon": 129.0756 }, + { "name": "Incheon", "lat": 37.4563, "lon": 126.7052 }, + { "name": "Daegu", "lat": 35.8714, "lon": 128.6014 }, { "name": "Tokyo", "lat": 35.6762, "lon": 139.6503 }, + { "name": "Yokohama", "lat": 35.4437, "lon": 139.638 }, { "name": "Osaka", "lat": 34.6937, "lon": 135.5023 }, + { "name": "Nagoya", "lat": 35.1815, "lon": 136.9066 }, { "name": "Sapporo", "lat": 43.0618, "lon": 141.3545 }, + { "name": "Fukuoka", "lat": 33.5902, "lon": 130.4017 }, + { "name": "Kobe", "lat": 34.6901, "lon": 135.1955 }, + { "name": "Kyoto", "lat": 35.0116, "lon": 135.7681 }, + { "name": "Sendai", "lat": 38.2682, "lon": 140.8694 }, + { "name": "Hiroshima", "lat": 34.3853, "lon": 132.4553 }, { "name": "Sydney", "lat": -33.8688, "lon": 151.2093 }, { "name": "Melbourne", "lat": -37.8136, "lon": 144.9631 }, { "name": "Brisbane", "lat": -27.4698, "lon": 153.0251 }, { "name": "Perth", "lat": -31.9523, "lon": 115.8613 }, + { "name": "Adelaide", "lat": 34.9285, "lon": 138.6007 }, + { "name": "Gold Coast", "lat": 28.0167, "lon": 153.4 }, + { "name": "Canberra", "lat": 35.2809, "lon": 149.13 }, + { "name": "Newcastle", "lat": 32.9283, "lon": 151.7817 }, + { "name": "Wollongong", "lat": 34.4278, "lon": 150.8931 }, + { "name": "Hobart", "lat": 42.8821, "lon": 147.3272 }, + { "name": "Darwin", "lat": 12.4634, "lon": 130.8456 }, + { "name": "Cairns", "lat": 16.9186, "lon": 145.7781 }, + { "name": "Townsville", "lat": 19.259, "lon": 146.8169 }, { "name": "Auckland", "lat": -36.8509, "lon": 174.7645 }, - { "name": "Wellington", "lat": -41.2866, "lon": 174.7756 } + { "name": "Wellington", "lat": -41.2866, "lon": 174.7756 }, + { "name": "Christchurch", "lat": -43.532, "lon": 172.6306 }, + { "name": "Hamilton", "lat": 37.787, "lon": 175.2793 }, + { "name": "Tauranga", "lat": 37.6878, "lon": 176.1651 }, + { "name": "Dunedin", "lat": -45.8788, "lon": 170.5028 }, + { "name": "Port Moresby", "lat": -9.4438, "lon": 147.1803 }, + { "name": "Lae", "lat": -6.732, "lon": 147.014 }, + { "name": "Honiara", "lat": -9.4456, "lon": 159.9729 }, + { "name": "Suva", "lat": -18.1248, "lon": 178.4501 }, + { "name": "Nouméa", "lat": -22.2558, "lon": 166.4125 }, + { "name": "Papeete", "lat": -17.5516, "lon": -149.5585 }, + { "name": "Majuro", "lat": 7.1164, "lon": 171.184 }, + { "name": "Palikir", "lat": 6.9147, "lon": 158.161 }, + { "name": "South Tarawa", "lat": 1.3294, "lon": 172.977 }, + { "name": "Funafuti", "lat": -8.5243, "lon": 179.1942 }, + { "name": "Nuku'alofa", "lat": -21.1394, "lon": -175.2018 }, + { "name": "Apia", "lat": -13.8507, "lon": 171.7514 }, + { "name": "Port Vila", "lat": -17.7345, "lon": 168.3207 }, + { "name": "Ngerulmud", "lat": 7.5004, "lon": 134.6243 } ] diff --git a/server/scripts/modules/regionalforecast.mjs b/server/scripts/modules/regionalforecast.mjs index 0d3505f..159532a 100644 --- a/server/scripts/modules/regionalforecast.mjs +++ b/server/scripts/modules/regionalforecast.mjs @@ -79,6 +79,10 @@ class RegionalForecast extends WeatherDisplay { this.nearbyMarkers = await loadNearbyObservationMarkers(this.map, { latitude: this.weatherParameters.latitude, longitude: this.weatherParameters.longitude, + }, { + maxMarkers: 7, + minCityDistanceMeters: 15000, + minMarkerPixelDistance: 60, }); this.nearbyMarkers.forEach((marker) => marker.addTo(this.map)); this.nearbyMarkersKey = markerKey; From e4b7a335e8bd8027782188c652e8bbb7425290c0 Mon Sep 17 00:00:00 2001 From: mrkmntal Date: Sun, 12 Apr 2026 13:47:52 -0400 Subject: [PATCH 4/4] Add more Britain and New England cities for Regional Observations --- datagenerators/output/radarcities.json | 130 +++++++++++++++++++++++++ datagenerators/radarcities-raw.json | 28 +++++- 2 files changed, 157 insertions(+), 1 deletion(-) diff --git a/datagenerators/output/radarcities.json b/datagenerators/output/radarcities.json index ef5df60..7459942 100644 --- a/datagenerators/output/radarcities.json +++ b/datagenerators/output/radarcities.json @@ -1863,5 +1863,135 @@ "name": "Ngerulmud", "lat": 7.5004, "lon": 134.6243 + }, + { + "name": "Manchester", + "lat": 53.4808, + "lon": -2.2426 + }, + { + "name": "Birmingham", + "lat": 52.4862, + "lon": -1.8904 + }, + { + "name": "Leeds", + "lat": 53.8008, + "lon": -1.5491 + }, + { + "name": "Glasgow", + "lat": 55.8609, + "lon": -4.2514 + }, + { + "name": "Edinburgh", + "lat": 55.9533, + "lon": -3.1883 + }, + { + "name": "Liverpool", + "lat": 53.4084, + "lon": -2.9916 + }, + { + "name": "Newcastle", + "lat": 54.9783, + "lon": -1.6178 + }, + { + "name": "Sheffield", + "lat": 53.3811, + "lon": -1.4701 + }, + { + "name": "Bristol", + "lat": 51.4545, + "lon": -2.5879 + }, + { + "name": "Cardiff", + "lat": 51.4816, + "lon": -3.1791 + }, + { + "name": "Belfast", + "lat": 54.5973, + "lon": -5.9301 + }, + { + "name": "Aberdeen", + "lat": 57.1497, + "lon": -2.0943 + }, + { + "name": "Dundee", + "lat": 56.462, + "lon": -2.9707 + }, + { + "name": "Inverness", + "lat": 57.4778, + "lon": -4.2247 + }, + { + "name": "Portland ME", + "lat": 43.6591, + "lon": -70.2568 + }, + { + "name": "Burlington", + "lat": 44.4759, + "lon": -73.2121 + }, + { + "name": "Hartford", + "lat": 41.7658, + "lon": -72.6734 + }, + { + "name": "Providence", + "lat": 41.824, + "lon": -71.4128 + }, + { + "name": "Manchester NH", + "lat": 42.9956, + "lon": -71.4548 + }, + { + "name": "New Haven", + "lat": 41.3083, + "lon": -72.9279 + }, + { + "name": "Worcester", + "lat": 42.2626, + "lon": -71.8023 + }, + { + "name": "Portsmouth NH", + "lat": 43.0718, + "lon": -70.7626 + }, + { + "name": "Cambridge MA", + "lat": 42.3736, + "lon": -71.1097 + }, + { + "name": "Lowell", + "lat": 42.6334, + "lon": -71.3162 + }, + { + "name": "Augusta ME", + "lat": 44.3106, + "lon": -69.7795 + }, + { + "name": "Montpelier", + "lat": 44.2601, + "lon": -72.5754 } ] \ No newline at end of file diff --git a/datagenerators/radarcities-raw.json b/datagenerators/radarcities-raw.json index 2a25552..530e760 100644 --- a/datagenerators/radarcities-raw.json +++ b/datagenerators/radarcities-raw.json @@ -371,5 +371,31 @@ { "name": "Nuku'alofa", "lat": -21.1394, "lon": -175.2018 }, { "name": "Apia", "lat": -13.8507, "lon": 171.7514 }, { "name": "Port Vila", "lat": -17.7345, "lon": 168.3207 }, - { "name": "Ngerulmud", "lat": 7.5004, "lon": 134.6243 } + { "name": "Ngerulmud", "lat": 7.5004, "lon": 134.6243 }, + { "name": "Manchester", "lat": 53.4808, "lon": -2.2426 }, + { "name": "Birmingham", "lat": 52.4862, "lon": -1.8904 }, + { "name": "Leeds", "lat": 53.8008, "lon": -1.5491 }, + { "name": "Glasgow", "lat": 55.8609, "lon": -4.2514 }, + { "name": "Edinburgh", "lat": 55.9533, "lon": -3.1883 }, + { "name": "Liverpool", "lat": 53.4084, "lon": -2.9916 }, + { "name": "Newcastle", "lat": 54.9783, "lon": -1.6178 }, + { "name": "Sheffield", "lat": 53.3811, "lon": -1.4701 }, + { "name": "Bristol", "lat": 51.4545, "lon": -2.5879 }, + { "name": "Cardiff", "lat": 51.4816, "lon": -3.1791 }, + { "name": "Belfast", "lat": 54.5973, "lon": -5.9301 }, + { "name": "Aberdeen", "lat": 57.1497, "lon": -2.0943 }, + { "name": "Dundee", "lat": 56.462, "lon": -2.9707 }, + { "name": "Inverness", "lat": 57.4778, "lon": -4.2247 }, + { "name": "Portland ME", "lat": 43.6591, "lon": -70.2568 }, + { "name": "Burlington", "lat": 44.4759, "lon": -73.2121 }, + { "name": "Hartford", "lat": 41.7658, "lon": -72.6734 }, + { "name": "Providence", "lat": 41.824, "lon": -71.4128 }, + { "name": "Manchester NH", "lat": 42.9956, "lon": -71.4548 }, + { "name": "New Haven", "lat": 41.3083, "lon": -72.9279 }, + { "name": "Worcester", "lat": 42.2626, "lon": -71.8023 }, + { "name": "Portsmouth NH", "lat": 43.0718, "lon": -70.7626 }, + { "name": "Cambridge MA", "lat": 42.3736, "lon": -71.1097 }, + { "name": "Lowell", "lat": 42.6334, "lon": -71.3162 }, + { "name": "Augusta ME", "lat": 44.3106, "lon": -69.7795 }, + { "name": "Montpelier", "lat": 44.2601, "lon": -72.5754 } ]