:root{font-family:Segoe UI,Helvetica Neue,Arial,sans-serif;line-height:1.5;font-weight:300;color-scheme:light;color:#fffffff2;background:linear-gradient(135deg,#1e3a8a,#3b82f6,#60a5fa);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;padding:0;min-width:320px;min-height:100vh;overflow-x:hidden;overflow-y:auto;touch-action:manipulation;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#root{width:100%;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media (prefers-color-scheme: light){:root{color:#213547;background:linear-gradient(135deg,#1e3a8a,#3b82f6,#60a5fa)}a:hover{color:#747bff}button{background-color:#f9f9f9}}#root{width:100%;min-height:100vh;margin:0;padding:0;position:relative;overflow-x:hidden}.app-container{width:100%;min-height:100vh;position:relative;touch-action:manipulation}.logo{height:6em;padding:1.5em;will-change:filter;transition:filter .3s}.logo:hover{filter:drop-shadow(0 0 2em #646cffaa)}.logo.react:hover{filter:drop-shadow(0 0 2em #61dafbaa)}@keyframes logo-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (prefers-reduced-motion: no-preference){a:nth-of-type(2) .logo{animation:logo-spin infinite 20s linear}}.card{padding:2em}.read-the-docs{color:#888}.weather-overlay{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);z-index:10;background:#ffffff03;backdrop-filter:blur(20px) saturate(120%);-webkit-backdrop-filter:blur(20px) saturate(120%);border:1px solid rgba(255,255,255,.08);border-radius:24px;padding:32px;overflow:hidden;box-shadow:0 15px 35px #0000000a,0 5px 15px #00000005,inset 0 1px #ffffff1a;animation:overlayFadeIn 1s ease-out .5s both}@keyframes overlayFadeIn{0%{opacity:0;transform:translate(-50%,-50%) scale(.9) translateY(30px)}to{opacity:1;transform:translate(-50%,-50%) scale(1) translateY(0)}}.forecast-header{text-align:center;margin-bottom:24px;border-bottom:1px solid rgba(255,255,255,.08);padding-bottom:20px;display:flex;flex-direction:column;align-items:center;gap:12px}.forecast-title{font-size:28px;font-weight:700;color:#fffffff2;margin:0 0 8px;text-shadow:0 2px 4px rgba(0,0,0,.2);letter-spacing:2px}.temperature-toggle{display:flex;background:#ffffff0d;border-radius:20px;padding:4px;gap:2px;border:1px solid rgba(255,255,255,.1)}.toggle-btn{background:transparent;border:none;color:#ffffffb3;padding:8px 16px;border-radius:16px;font-size:14px;font-weight:600;cursor:pointer;transition:all .3s ease;-webkit-tap-highlight-color:transparent;touch-action:manipulation;outline:none}.toggle-btn:focus{outline:none;box-shadow:none}.toggle-btn.active{background:#ffffff26;color:#fffffff2;box-shadow:0 2px 8px #0000001a}.toggle-btn:hover:not(.active){background:#ffffff14;color:#ffffffd9}.forecast-cards-container{display:flex;gap:2px;align-items:stretch;overflow:visible;width:100%;padding-top:8px;margin-top:-8px}.forecast-day-card{flex:1;min-width:120px;background:transparent;border:1px solid rgba(255,255,255,.05);border-radius:16px;padding:24px 16px;text-align:center;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);transition:all .3s cubic-bezier(.16,1,.3,1);box-shadow:inset 0 1px #ffffff4d,0 4px 12px #0000001a}@media (hover: hover) and (pointer: fine){.forecast-day-card:hover{background:#ffffff08;transform:translateY(-4px);box-shadow:inset 0 1px #fff6,0 8px 20px #00000026}}@media (hover: none) and (pointer: coarse){.forecast-day-card:active{background:#ffffff0d;transform:scale(.98);transition:all .1s ease}}.day-label{font-size:18px;font-weight:600;color:gold;margin-bottom:16px;text-shadow:0 1px 2px rgba(0,0,0,.3);letter-spacing:1px}.weather-icon-large{font-size:48px;margin-bottom:16px;animation:iconFloat 4s ease-in-out infinite}@keyframes iconFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}.temperature-high{font-size:32px;font-weight:300;color:gold;margin-bottom:4px;text-shadow:0 2px 4px rgba(0,0,0,.2)}.temperature-low{font-size:24px;font-weight:300;color:#87ceebe6;text-shadow:0 1px 2px rgba(0,0,0,.2)}@media (max-width: 768px){.weather-overlay{width:85vw;max-width:450px;padding:16px 12px;margin:0 auto;backdrop-filter:blur(16px) saturate(120%);-webkit-backdrop-filter:blur(16px) saturate(120%);top:50%;left:50%;transform:translate(-50%,-50%);box-sizing:border-box}.forecast-header{margin-bottom:20px;padding-bottom:16px}.forecast-cards-container{gap:2px;overflow:hidden;padding:0 4px;width:calc(100% - 8px);margin:0 auto;justify-content:space-between;box-sizing:border-box}.forecast-day-card{min-width:0;flex:1;padding:12px 2px;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);touch-action:manipulation;text-align:center}.forecast-title{font-size:22px;letter-spacing:1.5px}.forecast-dates{font-size:14px}.day-label{font-size:11px;margin-bottom:6px;font-weight:600}.weather-icon-large{font-size:24px;margin-bottom:6px}.temperature-high{font-size:18px;margin-bottom:2px}.temperature-low{font-size:14px}}@media (max-width: 480px){.weather-overlay{width:88vw;padding:14px 10px;max-height:85vh;overflow:hidden;box-sizing:border-box}.forecast-title{font-size:18px;margin-bottom:6px}.forecast-dates{font-size:13px}.forecast-header{margin-bottom:16px;padding-bottom:12px}.forecast-cards-container{flex-direction:column;gap:8px;max-height:none;overflow:hidden;width:calc(100% - 8px);margin:0 auto;padding:0 4px;box-sizing:border-box}.forecast-day-card{display:flex;align-items:center;justify-content:space-between;padding:12px 6px;text-align:left;min-width:auto;width:calc(100% - 4px);margin:0 auto;min-height:55px;box-sizing:border-box}.day-label{margin-bottom:0;margin-right:12px;font-size:13px;min-width:35px;flex-shrink:0}.weather-icon-large{margin-bottom:0;margin-right:10px;font-size:28px;flex-shrink:0}.temperature-container{display:flex;flex-direction:column;align-items:flex-end;flex-grow:1}.temperature-high,.temperature-low{margin-bottom:0;text-align:right}.temperature-high{font-size:20px;margin-bottom:1px}.temperature-low{font-size:16px}}.weather-overlay:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.6) 50%,transparent 100%);border-radius:24px 24px 0 0;animation:shimmer 6s ease-in-out infinite}.bubble-container{position:fixed;top:0;left:0;z-index:1001;pointer-events:none}.glass-bubble{position:absolute;top:0;left:0;border-radius:999px;background:radial-gradient(120% 120% at 30% 20%,#ffffff1f,#ffffff0f 40%,#ffffff06,#ffffff03);backdrop-filter:blur(24px) saturate(130%);-webkit-backdrop-filter:blur(24px) saturate(130%);border:1px solid rgba(255,255,255,.1);box-shadow:0 12px 24px #0000000d,inset 0 1px #ffffff47;transition:opacity .8s ease;pointer-events:none}@media (max-width: 480px){.glass-bubble{filter:saturate(120%) blur(0px);-webkit-backdrop-filter:blur(14px) saturate(120%);backdrop-filter:blur(14px) saturate(120%)}}.glass-bubble:after{content:"";position:absolute;top:8%;left:14%;width:55%;height:35%;border-radius:999px;background:linear-gradient(135deg,#ffffff40,#fff0);filter:blur(5px);z-index:1}.bubble-emoji{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:calc(var(--bubble-size, 160px) * .3);z-index:2;pointer-events:none;-webkit-user-select:none;user-select:none;text-shadow:0 2px 4px rgba(0,0,0,.2);opacity:1}.spotify-player{position:fixed;bottom:20px;right:20px;z-index:1000;background:#ffffff03;backdrop-filter:blur(20px) saturate(120%);-webkit-backdrop-filter:blur(20px) saturate(120%);border:1px solid rgba(255,255,255,.08);border-radius:24px;overflow:hidden;box-shadow:0 15px 35px #0000000a,0 5px 15px #00000005,inset 0 1px #ffffff1a;transition:all .3s cubic-bezier(.16,1,.3,1);width:300px;max-width:calc(100vw - 40px)}.spotify-player.minimized{width:60px;height:60px;border-radius:50%;background:#ffffff0d;backdrop-filter:blur(20px) saturate(120%);-webkit-backdrop-filter:blur(20px) saturate(120%);border:1px solid rgba(255,255,255,.15);box-shadow:0 8px 32px #1ed76033,0 2px 8px #0000001a,inset 0 1px #fff3}.spotify-header{display:flex;justify-content:flex-end;padding:8px 12px;background:#ffffff05;border-bottom:1px solid rgba(255,255,255,.05)}.spotify-player.minimized .spotify-header{padding:0;background:transparent;height:100%;justify-content:center;align-items:center}.spotify-controls{display:flex;gap:8px;align-items:center}.spotify-player.minimized .spotify-controls{justify-content:center}.minimize-btn,.close-btn{background:#ffffff1a;border:none;border-radius:6px;color:#fffc;cursor:pointer;padding:4px 8px;font-size:14px;transition:all .2s ease;-webkit-tap-highlight-color:transparent;touch-action:manipulation;outline:none}.minimize-btn:focus,.close-btn:focus{outline:none;box-shadow:none}.spotify-player.minimized .minimize-btn{background:transparent;border-radius:50%;padding:0;font-size:24px;width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:#1ed760e6;text-shadow:0 1px 2px rgba(0,0,0,.3)}.spotify-player.minimized .close-btn{display:none}.minimize-btn:hover,.close-btn:hover{background:#fff3;color:#fff}.spotify-embed{padding:0}.spotify-embed iframe{border-radius:0 0 24px 24px;display:block}.spotify-embed.hidden{height:0;overflow:hidden;opacity:0;pointer-events:none}.spotify-embed.hidden iframe{height:152px;border-radius:0}@media (max-width: 768px){.spotify-player{bottom:15px;right:15px;width:250px;max-width:calc(100vw - 30px)}.spotify-player.minimized{width:50px;height:50px}.spotify-embed iframe{height:152px}}@media (max-width: 480px){.spotify-player{bottom:10px;right:10px;width:220px;max-width:calc(100vw - 20px)}.spotify-player.minimized{width:45px;height:45px}.minimize-btn,.close-btn{padding:3px 6px;font-size:12px}.spotify-player.minimized .minimize-btn{font-size:20px}}@keyframes playerSlideIn{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}.spotify-player{animation:playerSlideIn .5s ease-out}.spotify-player:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.6) 50%,transparent 100%);border-radius:24px 24px 0 0;animation:shimmer 6s ease-in-out infinite}@keyframes shimmer{0%,to{opacity:0;transform:translate(-100%)}50%{opacity:1;transform:translate(100%)}}@media (max-height: 600px){.spotify-player{bottom:10px;right:10px}.spotify-player.minimized{width:40px;height:40px}}.info-button{position:fixed;top:20px;left:20px;z-index:1002;width:40px;height:40px;border-radius:50%;border:none;cursor:pointer;background:#ffffff0d;backdrop-filter:blur(20px) saturate(120%);-webkit-backdrop-filter:blur(20px) saturate(120%);border:1px solid rgba(255,255,255,.15);box-shadow:0 8px 32px #0000001a,0 2px 8px #0000000d,inset 0 1px #fff3;transition:all .3s cubic-bezier(.16,1,.3,1);outline:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.info-button:focus{outline:none;box-shadow:0 8px 32px #0000001a,0 2px 8px #0000000d,inset 0 1px #fff3}.info-button:hover{background:#ffffff1a;transform:translateY(-2px);box-shadow:0 12px 40px #00000026,0 4px 12px #0000001a,inset 0 1px #ffffff4d}.info-button:active{transform:translateY(0);box-shadow:0 6px 24px #0000001a,0 2px 8px #0000000d,inset 0 1px #fff3}.info-icon{font-size:18px;font-weight:600;font-style:italic;color:#ffffffe6;text-shadow:0 1px 2px rgba(0,0,0,.3);display:flex;align-items:center;justify-content:center;width:100%;height:100%}@media (max-width: 768px){.info-button{top:15px;left:15px;width:36px;height:36px}.info-icon{font-size:16px}}@media (max-width: 480px){.info-button{top:12px;left:12px;width:32px;height:32px}.info-icon{font-size:14px}}.info-button:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.6) 50%,transparent 100%);border-radius:50% 50% 0 0;animation:shimmer 6s ease-in-out infinite;opacity:.7}@keyframes shimmer{0%,to{opacity:0;transform:translate(-100%)}50%{opacity:.7;transform:translate(100%)}}
