body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.app{text-align:center}.app-logo{animation:App-logo-spin infinite 20s linear;height:80px}.app-header{background-color:#222;height:150px;padding:20px;color:#fff}.app-title{font-size:1.5em}.app-intro{padding:10px 20px;font-size:large}.app-features>div{display:inline-block}.app-features-list{max-width:50%;margin:20px;vertical-align:top}.app-features-list p{border-top:1px solid rgb(230,230,230);margin-top:30px;padding:10px 0}.design-option{min-height:80px}.design-option .description{color:gray}.design-option .logo{float:left;margin-right:10px}.left-aligned{text-align:left}.help-channel{width:20%;display:inline-block;text-align:center;vertical-align:top}.help-channel img{height:75px}.highlighted{background:#ffc2ae;padding:2px;font-size:large}@keyframes App-logo-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.local-time-display{display:flex;flex-direction:column;gap:.25rem;padding:.5rem 0}.local-time{font-size:1.125rem;font-weight:600;color:#232f3e;line-height:1.5;font-variant-numeric:tabular-nums}.local-date{font-size:.875rem;color:#5a6c7d;line-height:1.5}@media (max-width: 768px){.local-time{font-size:1rem}.local-date{font-size:.8125rem}}.weather-display{margin-top:1rem;padding:1rem;background:#f8f9fa;border-radius:8px}.weather-loading,.weather-error{padding:1rem;text-align:center;color:#666;font-size:.9rem}.current-weather{display:flex;gap:1.5rem;margin-bottom:1.5rem;padding-bottom:1.5rem;border-bottom:1px solid #dee2e6}.current-weather-main{display:flex;align-items:center;gap:1rem}.weather-icon-large{font-size:3rem}.current-temp{display:flex;align-items:flex-start}.temp-value{font-size:3rem;font-weight:700;line-height:1}.temp-unit{font-size:1.5rem;margin-left:.25rem;color:#666}.current-weather-details{display:flex;flex-direction:column;gap:.5rem;justify-content:center}.weather-detail{display:flex;gap:.5rem;font-size:.9rem}.detail-label{color:#666;font-weight:500}.detail-value{color:#333}.weather-forecast{margin-top:1rem}.forecast-title{font-size:1rem;font-weight:600;margin-bottom:1rem;color:#333}.forecast-days{display:flex;gap:1rem;overflow-x:auto}.forecast-day{display:flex;flex-direction:column;align-items:center;gap:.5rem;padding:.75rem;background:#fff;border-radius:8px;min-width:80px;box-shadow:0 1px 3px #0000001a}.forecast-date{font-size:.85rem;font-weight:500;color:#666;text-align:center}.forecast-icon{font-size:2rem}.forecast-temps{display:flex;gap:.5rem;font-size:.9rem}.forecast-high{font-weight:600;color:#333}.forecast-low{color:#666}@media (max-width: 768px){.current-weather{flex-direction:column;gap:1rem}.forecast-days{gap:.5rem}.forecast-day{min-width:70px;padding:.5rem}}.webcam-card{border:1px solid #e0e0e0;border-radius:.75rem;padding:1.5rem;background-color:#fff;box-shadow:0 2px 8px #00000014;display:flex;flex-direction:column;gap:1rem;transition:box-shadow .3s ease,transform .3s ease}.webcam-card:hover{box-shadow:0 4px 16px #0000001f;transform:translateY(-2px)}.webcam-card-header{display:flex;flex-direction:column;gap:.5rem}.webcam-card-location{margin:0;font-size:1.5rem;font-weight:700;color:#232f3e;letter-spacing:-.01em}.webcam-card-content{min-height:300px;display:flex;align-items:center;justify-content:center;background-color:#f8f9fa;border-radius:.5rem;overflow:hidden;position:relative}.webcam-image{width:100%;height:auto;display:block;transition:opacity .3s ease}.webcam-image.loading{opacity:.5}.webcam-card-loading{display:flex;flex-direction:column;align-items:center;gap:1rem;padding:3rem;color:#666}.loading-spinner{width:48px;height:48px;border:4px solid #e0e0e0;border-top:4px solid #0073bb;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.webcam-card-error{display:flex;flex-direction:column;align-items:center;gap:.75rem;padding:3rem 2rem;text-align:center}.error-message{color:#d13212;font-weight:600;font-size:1rem;margin:0;line-height:1.5}.error-details{color:#666;font-size:.875rem;margin:0;line-height:1.5}@media (max-width: 768px){.webcam-card{padding:1.25rem}.webcam-card-location{font-size:1.25rem}.webcam-card-content{min-height:250px}}@media (max-width: 480px){.webcam-card{padding:1rem}.webcam-card-content{min-height:200px}.webcam-card-loading,.webcam-card-error{padding:2rem 1rem}}.webcam-viewer{width:100%;max-width:1400px;margin:0 auto;padding:2rem}.webcam-viewer-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem;padding-bottom:1.5rem;border-bottom:2px solid #e0e0e0}.webcam-viewer-header h1{margin:0;font-size:2rem;font-weight:700;color:#232f3e;letter-spacing:-.02em}.webcam-controls{display:flex;align-items:center;gap:1rem}.auto-refresh-toggle{display:flex;align-items:center;gap:.5rem;cursor:pointer;-webkit-user-select:none;user-select:none;font-size:.95rem;color:#333}.auto-refresh-toggle input[type=checkbox]{width:18px;height:18px;cursor:pointer;accent-color:#0073bb}.auto-refresh-toggle span{font-weight:500}.refresh-button{padding:.75rem 1.75rem;font-size:1rem;font-weight:600;color:#fff;background-color:#0073bb;border:none;border-radius:.375rem;cursor:pointer;transition:all .2s ease;box-shadow:0 1px 3px #0000001f}.refresh-button:hover:not(:disabled){background-color:#005a9e;transform:translateY(-2px);box-shadow:0 4px 8px #00000026}.refresh-button:active:not(:disabled){transform:translateY(0);box-shadow:0 1px 2px #0000001a}.refresh-button:disabled{background-color:#a0a0a0;cursor:not-allowed;opacity:.6;box-shadow:none}.refresh-button:focus-visible{outline:3px solid #0073bb;outline-offset:2px}.webcam-cards-container{display:grid;grid-template-columns:repeat(auto-fit,minmax(400px,1fr));gap:2rem;justify-content:center;position:relative}@media (max-width: 1024px){.webcam-viewer{padding:1.5rem}.webcam-cards-container{grid-template-columns:1fr;gap:1.5rem}}@media (max-width: 768px){.webcam-viewer{padding:1rem}.webcam-viewer-header{flex-direction:column;gap:1rem;align-items:stretch}.webcam-viewer-header h1{font-size:1.5rem}.webcam-controls{flex-direction:column;width:100%}.auto-refresh-toggle{justify-content:center}.refresh-button{width:100%}.webcam-cards-container{grid-template-columns:1fr;gap:1rem}}@media (max-width: 480px){.webcam-cards-container{grid-template-columns:1fr}}
