*,*:before,*:after{box-sizing:border-box}*{margin:0}html{interpolate-size:allow-keywords}body{line-height:1.5;-webkit-font-smoothing:antialiased}img,picture,video,canvas,svg{display:block;max-width:100%}input,button,textarea,select{font:inherit}p{overflow-wrap:break-word;text-wrap:pretty}h1,h2,h3,h4,h5,h6{overflow-wrap:break-word;text-wrap:balance}#root,#app{isolation:isolate}:root{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;color-scheme:light dark;--gradient-clear-day: linear-gradient(160deg, #1565c0 0%, #1e88e5 40%, #4fc3f7 100%);--gradient-clear-night: linear-gradient(160deg, #0a0e27 0%, #1a237e 50%, #283593 100%);--gradient-cloudy: linear-gradient(160deg, #455a64 0%, #607d8b 50%, #90a4ae 100%);--gradient-fog: linear-gradient(160deg, #546e7a 0%, #78909c 60%, #b0bec5 100%);--gradient-rain: linear-gradient(160deg, #1a2a3a 0%, #263238 50%, #37474f 100%);--gradient-snow: linear-gradient(160deg, #90caf9 0%, #bbdefb 50%, #e3f2fd 100%);--gradient-storm: linear-gradient(160deg, #0d0d1a 0%, #1a1a2e 50%, #16213e 100%)}body,#app{min-height:100dvh}.weather-app{min-height:100dvh;transition:background 1.2s ease;display:flex;justify-content:center;padding:1.5rem 1rem 3rem}.weather-container{width:100%;max-width:480px;display:flex;flex-direction:column;gap:1.25rem}.app-header{display:flex;align-items:center;gap:.5rem;padding:.25rem 0}.app-logo{font-size:1.5rem;filter:drop-shadow(0 2px 4px rgba(0,0,0,.2))}.app-name{font-size:1.125rem;font-weight:700;color:#fff;letter-spacing:.02em;text-shadow:0 1px 4px rgba(0,0,0,.3)}.search-wrapper{position:relative}.search-form{display:flex;align-items:center;gap:.5rem;background:#fff3;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-radius:2rem;border:1px solid rgba(255,255,255,.35);padding:.625rem 1.25rem;transition:background .2s,border-color .2s}.search-form:focus-within{background:#ffffff47;border-color:#fff9}.search-icon{font-size:1rem;flex-shrink:0;opacity:.85}.search-input{background:transparent;border:none;outline:none;color:#fff;font-size:1rem;flex:1;min-width:0}.search-input::placeholder{color:#ffffffa6}.search-input::-webkit-search-cancel-button{filter:invert(1) opacity(.7);cursor:pointer}.suggestions{position:absolute;top:calc(100% + .5rem);left:0;right:0;background:#0f172aeb;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-radius:1.25rem;list-style:none;overflow:hidden;z-index:100;border:1px solid rgba(255,255,255,.12);box-shadow:0 12px 40px #0006}.suggestions li button{width:100%;padding:.75rem 1.25rem;background:transparent;border:none;cursor:pointer;display:flex;align-items:baseline;gap:.5rem;color:#fff;transition:background .15s;text-align:left}.suggestions li+li{border-top:1px solid rgba(255,255,255,.07)}.suggestions li button:hover,.suggestions li button:focus-visible{background:#ffffff1a;outline:none}.suggestion-city{font-weight:600;font-size:.9375rem}.suggestion-region{opacity:.6;font-size:.8125rem}.weather-loading{display:flex;flex-direction:column;align-items:center;gap:1rem;padding:5rem 0;color:#ffffffd9;font-size:.9375rem}.loading-spinner{width:44px;height:44px;border:3px solid rgba(255,255,255,.25);border-top-color:#fff;border-radius:50%;animation:spin .75s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.weather-error{display:flex;flex-direction:column;align-items:center;gap:.75rem;padding:4rem 0;color:#fff;text-align:center}.error-icon{font-size:3rem}.retry-btn{margin-top:.5rem;padding:.5rem 1.5rem;background:#fff3;border:1px solid rgba(255,255,255,.4);border-radius:2rem;color:#fff;font-size:.875rem;cursor:pointer;transition:background .2s}.retry-btn:hover{background:#ffffff4d}.current-weather{display:flex;flex-direction:column;align-items:center;gap:.375rem;color:#fff;text-align:center;padding:1.5rem 0 .5rem}.location-name{display:flex;align-items:center;gap:.3rem;font-size:1.0625rem;font-weight:500;opacity:.92;text-shadow:0 1px 4px rgba(0,0,0,.25)}.weather-icon{font-size:5.5rem;line-height:1;margin:.5rem 0;filter:drop-shadow(0 4px 12px rgba(0,0,0,.25))}.temperature{font-size:6.5rem;font-weight:200;line-height:1;letter-spacing:-.03em;text-shadow:0 2px 16px rgba(0,0,0,.2)}.weather-description{font-size:1.25rem;font-weight:400;opacity:.88;letter-spacing:.01em}.weather-stats{display:flex;align-items:center;background:#ffffff29;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-radius:1.5rem;border:1px solid rgba(255,255,255,.22);margin-top:1rem;overflow:hidden}.stat{display:flex;flex-direction:column;align-items:center;gap:.2rem;padding:.875rem 1.75rem}.stat-label{font-size:.6875rem;opacity:.7;text-transform:uppercase;letter-spacing:.06em;white-space:nowrap}.stat-value{font-size:1.125rem;font-weight:600}.stat-divider{width:1px;height:2.25rem;background:#fff3;flex-shrink:0}.sun-times{display:flex;align-items:center;background:#ffffff29;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-radius:1.5rem;border:1px solid rgba(255,255,255,.22);margin-top:.625rem;overflow:hidden;width:100%}.sun-time{flex:1;display:flex;flex-direction:column;align-items:center;gap:.2rem;padding:.75rem 1rem}.sun-time-icon{font-size:1.375rem;line-height:1}.sun-time-label{font-size:.6875rem;opacity:.7;text-transform:uppercase;letter-spacing:.06em;white-space:nowrap}.sun-time-value{font-size:1rem;font-weight:600}.sun-time-divider{width:1px;height:3rem;background:#fff3;flex-shrink:0}.hourly-forecast{background:#ffffff29;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-radius:1.5rem;border:1px solid rgba(255,255,255,.22);padding:1.125rem 1.25rem}.hourly-scroll{overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none;margin:0 -.25rem;padding:0 .25rem}.hourly-scroll::-webkit-scrollbar{display:none}.hourly-cards{display:flex;gap:.125rem;min-width:min-content}.hourly-card{display:flex;flex-direction:column;align-items:center;gap:.2rem;padding:.5rem .75rem;border-radius:1rem;color:#fff;min-width:3.25rem;flex-shrink:0;border:1px solid transparent}.hourly-card--now{background:#ffffff26;border-color:#ffffff40}.hourly-time{font-size:.6875rem;font-weight:600;opacity:.7;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}.hourly-card--now .hourly-time{opacity:1}.hourly-icon{font-size:1.5rem;line-height:1}.hourly-temp{font-size:.9375rem;font-weight:700}.hourly-precip{font-size:.6875rem;opacity:.72;white-space:nowrap}.forecast{background:#ffffff29;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-radius:1.5rem;border:1px solid rgba(255,255,255,.22);padding:1.125rem 1.25rem}.forecast-title{font-size:.6875rem;text-transform:uppercase;letter-spacing:.1em;color:#ffffffa6;margin-bottom:.875rem;font-weight:600}.forecast-cards{display:flex}.forecast-card{flex:1;display:flex;flex-direction:column;align-items:center;gap:.3rem;padding:.5rem .125rem;color:#fff;border-right:1px solid rgba(255,255,255,.1)}.forecast-card:last-child{border-right:none}.forecast-day{font-size:.7rem;font-weight:600;opacity:.7;text-transform:uppercase;letter-spacing:.04em}.forecast-icon{font-size:1.625rem;line-height:1}.forecast-high{font-size:.875rem;font-weight:700}.forecast-low{font-size:.8125rem;opacity:.55}.precip-graph{background:#ffffff29;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-radius:1.5rem;border:1px solid rgba(255,255,255,.22);padding:1.125rem 1.25rem}.precip-graph-scroll{overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none;margin:0 -.25rem;padding:0 .25rem}.precip-graph-scroll::-webkit-scrollbar{display:none}.precip-graph-scroll svg{display:block}.precip-graph-state{display:flex;align-items:center;gap:.5rem;padding:1.25rem 0 .25rem;color:#ffffffa6;font-size:.875rem;margin:0}.alert-banner{border-radius:1.25rem;border:1px solid rgba(255,255,255,.22);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);overflow:hidden;transition:background .3s}.alert-banner--calm{display:flex;align-items:center;gap:.5rem;padding:.625rem 1rem;background:#4caf502e;border-color:#4caf5059}.alert-calm-icon{font-size:.9rem;flex-shrink:0}.alert-calm-text{font-size:.8125rem;color:#ffffffd9;font-weight:500}.alert-banner--active{padding:.875rem 1rem;display:flex;flex-direction:column;gap:.5rem}.alert-severity--extreme{background:#b71c1c4d;border-color:#e5737380}.alert-severity--severe{background:#bf360c47;border-color:#ff8a6580}.alert-severity--moderate{background:#e6960038;border-color:#ffd54f73}.alert-severity--minor{background:#1565c040;border-color:#64b5f673}.alert-top-row{display:flex;align-items:center;gap:.625rem;flex-wrap:wrap}.alert-severity-badge{display:flex;align-items:center;gap:.3rem;font-size:.6875rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#fff;background:#00000040;border-radius:2rem;padding:.2rem .6rem;flex-shrink:0;white-space:nowrap}.alert-event{font-size:.9375rem;font-weight:600;color:#fff;flex:1;min-width:0;text-shadow:0 1px 3px rgba(0,0,0,.3)}.alert-toggle-btn{display:flex;align-items:center;gap:.2rem;background:#ffffff2e;border:1px solid rgba(255,255,255,.28);border-radius:2rem;color:#fff;font-size:.75rem;font-weight:600;padding:.25rem .7rem;cursor:pointer;transition:background .15s;flex-shrink:0;white-space:nowrap}.alert-toggle-btn:hover{background:#ffffff47}.alert-toggle-btn:focus-visible{outline:2px solid rgba(255,255,255,.7);outline-offset:2px}.alert-chevron{font-size:1rem;line-height:1;display:inline-block;transform:rotate(90deg);transition:transform .2s}.alert-chevron--up{transform:rotate(-90deg)}.alert-headline{font-size:.875rem;color:#ffffffe6;line-height:1.45;margin:0}.alert-details{display:flex;flex-direction:column;gap:.325rem;margin-top:.25rem;padding-top:.625rem;border-top:1px solid rgba(255,255,255,.18)}.alert-detail-row{display:flex;align-items:baseline;gap:.5rem}.alert-detail-label{font-size:.6875rem;text-transform:uppercase;letter-spacing:.06em;color:#ffffff8c;width:2.75rem;flex-shrink:0}.alert-detail-value{font-size:.875rem;color:#ffffffe6;font-weight:500}@media(max-width:420px){.weather-app{padding:1.25rem .75rem 2.5rem}.temperature{font-size:5.5rem}.stat{padding:.75rem 1.125rem}.stat-label{font-size:.625rem}.forecast-card{padding:.375rem 0}.forecast-day{font-size:.625rem}.forecast-icon{font-size:1.375rem}.forecast-high,.forecast-low{font-size:.75rem}}
