@property --sky-1{syntax:"<color>";inherits:true;initial-value:#6ec0ff}@property --sky-2{syntax:"<color>";inherits:true;initial-value:#9ad8ff}@property --sky-3{syntax:"<color>";inherits:true;initial-value:#f5f6da}@property --accent{syntax:"<color>";inherits:true;initial-value:#ffd363}:root{--sky-1:#6ec0ff;--sky-2:#9ad8ff;--sky-3:#f5f6da;--accent:#ffd363;--sun-opacity:1;--moon-opacity:1;--scene-glow-opacity:.85;--text-main:#0d1a25;--text-sub:#0d1a25bf}*{box-sizing:border-box}html,body{width:100%;height:100%}body{color:var(--text-main);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;margin:0;font-family:Pretendard Variable,Pretendard,-apple-system,system-ui,sans-serif;overflow:hidden}.scene-root{isolation:isolate;width:100%;min-height:100svh;transition:--sky-1 1.5s,--sky-2 1.5s,--sky-3 1.5s,--accent 1.5s;position:relative}.scene-gradient,.scene-noise,.scene-glow,.horizon,.cloud-layer,.fog-layer,.precip-layer,.wind-layer,.dust-layer,.lightning-layer{pointer-events:none;position:absolute;inset:0}.scene-gradient{background:radial-gradient(135% 90% at 50% -10%, #ffffffbf 0%, transparent 52%), linear-gradient(180deg, var(--sky-1) 0%, var(--sky-2) 45%, var(--sky-3) 100%)}.scene-noise{opacity:.17;background-image:radial-gradient(circle at 25% 25%,#ffffff52 0 1px,#0000 1px),radial-gradient(circle at 75% 70%,#fff3 0 1px,#0000 1px);background-size:3px 3px,4px 4px}.scene-glow{mix-blend-mode:screen;opacity:var(--scene-glow-opacity,.85);background:radial-gradient(50% 35% at 50% 15%,#ffe4a657 0%,#0000 100%),radial-gradient(65% 45% at 50% 120%,#0a14231f 0%,#0000 80%);transition:opacity .32s}@supports (background:radial-gradient(50% 35% at 50% 15%, color-mix(in srgb, #ffffff 35%, white) 0%, transparent 100%)){.scene-glow{background:radial-gradient(50% 35% at 50% 15%, color-mix(in srgb, var(--accent) 35%, white) 0%, transparent 100%), radial-gradient(65% 45% at 50% 120%, #0a14231f 0%, transparent 80%)}}.sun,.moon{aspect-ratio:1;border-radius:999px;width:clamp(76px,12vw,150px);position:absolute;top:clamp(50px,8vh,90px);right:clamp(40px,8vw,120px);transform:translateZ(0)}.sun{background:radial-gradient(circle at 30% 30%, #fff8c3 0%, var(--accent) 48%, #ef9e00 100%);opacity:var(--sun-opacity,1);transition:opacity .36s;animation:7s ease-in-out infinite pulse-sun;box-shadow:0 0 0 14px #ffe08933,0 0 48px #ffc45099}.moon{opacity:0;background:radial-gradient(circle at 28% 22%,#f8fcff 0%,#dde7ff 55%,#b8c8f6 100%);transition:opacity .4s,transform .4s;transform:translateY(-8px)scale(.9);box-shadow:0 0 0 10px #bdcdff33,0 0 32px #b1c4f599}.scene-root.is-night .moon{opacity:var(--moon-opacity,1);transform:translate(0,0)scale(1)}.scene-root.is-night .sun{opacity:0}.horizon{background:linear-gradient(#0000 0%,#0b1d2d14 65%,#09121d3d 100%);transform:translateY(34%)}.cloud{top:var(--y,15%);left:calc(var(--x,10) * 1%);width:clamp(110px, calc(var(--size,1) * 12vw), 260px);height:calc(clamp(60px, calc(var(--size,1) * 6vw), 120px));background:radial-gradient(circle at 30% 30%, rgba(255, 255, 255, var(--alpha,.7)) 0%, rgba(232, 241, 250, calc(var(--alpha,.7) * .8)) 72%, rgba(181, 206, 233, calc(var(--alpha,.7) * .45)) 100%);filter:blur(.2px);animation:drift calc(var(--dur,45) * 1s) linear infinite;border-radius:999px;position:absolute;transform:translate(0,0)}.cloud:before,.cloud:after{content:"";background:inherit;border-radius:999px;position:absolute}.cloud:before{width:56%;height:100%;top:-42%;left:10%}.cloud:after{width:36%;height:80%;top:-30%;right:12%}.cloud-back .cloud{opacity:.58;filter:blur(1.4px)}.cloud-front .cloud{opacity:.85}.fog-layer{opacity:0}.fog-band{filter:blur(8px);width:120%;height:19%;animation:fog-drift calc(var(--dur,24) * 1s) ease-in-out infinite;background:linear-gradient(90deg,#ddeaf500 0%,#ddeaf5bf 30%,#ddeaf5b8 70%,#ddeaf500 100%);border-radius:999px;position:absolute;left:-10%}.fog-layer.active{opacity:.85}.precip-layer .particle,.dust-layer .particle,.wind-layer .gust,.lightning-layer .bolt{position:absolute}.precip-layer .particle{top:calc(var(--top,-20) * 1px);left:calc(var(--left,10) * 1%);opacity:var(--opacity,.7);transform:translate(0,0)}.precip-layer .rain{width:2px;height:clamp(36px, calc(var(--size,1) * 54px), 110px);animation:rain-fall calc(var(--dur,1.2) * 1s) linear infinite;background:linear-gradient(#bce1ff0d 0%,#a7d6ffe6 80%,#b1e6ff1a 100%)}.precip-layer .drizzle{width:1.4px;height:clamp(20px, calc(var(--size,1) * 38px), 66px);animation:rain-fall calc(var(--dur,1.9) * 1s) linear infinite;background:linear-gradient(#d6efff1f 0%,#b1dcffcc 70%,#d6efff1a 100%)}.precip-layer .sleet{width:2.5px;height:clamp(22px, calc(var(--size,1) * 40px), 72px);animation:rain-fall calc(var(--dur,1.4) * 1s) linear infinite;background:linear-gradient(#e8f2ff33 0%,#cde5ffe6 50%,#93c0f026 100%);border-radius:999px}.precip-layer .ice-rain{width:2.3px;height:clamp(30px, calc(var(--size,1) * 44px), 88px);animation:rain-fall calc(var(--dur,1.15) * 1s) linear infinite;background:linear-gradient(#f1f8ff73 0%,#d7effff2 55%,#b1cdf22e 100%);border-radius:999px;box-shadow:0 0 6px #d6e9ff66}.precip-layer .snow{width:clamp(4px, calc(var(--size,1) * 8px), 11px);height:clamp(4px, calc(var(--size,1) * 8px), 11px);animation:snow-fall calc(var(--dur,3.8) * 1s) linear infinite;background:#f7fbfff5;border-radius:999px;box-shadow:0 0 8px #f0f8ffb3}.precip-layer .hail{width:clamp(3px, calc(var(--size,1) * 6px), 9px);height:clamp(3px, calc(var(--size,1) * 6px), 9px);animation:hail-fall calc(var(--dur,.85) * 1s) linear infinite;background:#e9f5fff2;border-radius:999px;box-shadow:0 0 5px #d8eaffa6}.dust-layer .particle{top:calc(var(--top,35) * 1%);left:calc(var(--left,0) * 1%);width:clamp(2px, calc(var(--size,1) * 5px), 8px);height:clamp(2px, calc(var(--size,1) * 5px), 8px);animation:dust-drift calc(var(--dur,12) * 1s) linear infinite;background:#e9d2a58c;border-radius:999px;box-shadow:0 0 8px #e2c89066}.wind-layer .gust{top:calc(var(--top,40) * 1%);width:clamp(85px, calc(var(--size,1) * 20vw), 240px);height:clamp(2px, calc(var(--size,1) * .35vw), 6px);filter:blur(.2px);animation:gust-move calc(var(--dur,3.4) * 1s) linear infinite;background:linear-gradient(90deg,#fff0 0%,#dcf0ffe6 50%,#fff0 100%);border-radius:999px;left:-25%}.lightning-layer .bolt{top:10%;left:calc(var(--left,50) * 1%);opacity:0;clip-path:polygon(45% 0%,100% 0%,55% 35%,85% 35%,25% 100%,45% 56%,12% 56%);filter:drop-shadow(0 0 10px #f6fdfff2);background:linear-gradient(#fffffffa 0%,#f4faffd1 50%,#cbe6ff00 100%);width:4px;height:42%}.scene-root.has-lightning .bolt{opacity:.08}.scene-root.lightning-static .bolt{opacity:.24}.scene-root.flash{animation:.24s ease-out flash-scene}.scene-root.flash .bolt{opacity:.98;animation:.24s steps(2,end) bolt-flicker}.scene-root[data-contrast=high]{--text-main:#eef6ff;--text-sub:#eef6ffc7}@keyframes drift{0%{transform:translate(-30vw)}to{transform:translate(130vw)}}@keyframes fog-drift{0%,to{opacity:.4;transform:translate(-5%)}50%{opacity:.85;transform:translate(5%)}}@keyframes rain-fall{0%{transform:translateY(-15vh)skew(-13deg)}to{transform:translate(5vw,120vh)skew(-13deg)}}@keyframes snow-fall{0%{transform:translateY(-12vh)}30%{transform:translate(1.8vw,18vh)}60%{transform:translate(-1.8vw,56vh)}to{transform:translate(1.2vw,118vh)}}@keyframes hail-fall{0%{transform:translateY(-16vh)}to{transform:translate(4vw,118vh)}}@keyframes dust-drift{0%{opacity:0;transform:translate(-8vw)}30%{opacity:.8}to{opacity:0;transform:translate(112vw,-8vh)}}@keyframes gust-move{0%{opacity:0;transform:translate(0,0)}16%{opacity:.8}84%{opacity:.7}to{opacity:0;transform:translate(135vw)}}@keyframes flash-scene{0%{filter:brightness()}45%{filter:brightness(1.56)}to{filter:brightness()}}@keyframes bolt-flicker{0%{opacity:.95}35%{opacity:.18}to{opacity:.98}}@keyframes pulse-sun{0%,to{transform:scale(1)}50%{transform:scale(1.04)}}@media (width<=720px){.sun,.moon{right:24px}}@media (prefers-reduced-motion:reduce){.sun,.cloud,.fog-band,.precip-layer .rain,.precip-layer .drizzle,.precip-layer .sleet,.precip-layer .ice-rain,.precip-layer .snow,.precip-layer .hail,.dust-layer .particle,.wind-layer .gust{animation-duration:.01ms;animation-iteration-count:1}.moon{transition:none}.scene-root.flash{animation:none}}:root{--panel-bg-solid:#f6faffc7;--panel-bg-top:#ffffffa8;--panel-bg-bottom:#f0f6ff4d;--panel-border:#ffffff6b;--panel-shadow:0 26px 58px -24px #08132173;--panel-text-strong:var(--text-main);--panel-text-sub:#0d1a25c7;--panel-text-muted:#0d1a2585;--panel-error:#ffe2e2}.loading-overlay{z-index:100;background:linear-gradient(#253a52 0%,#14202f 100%);justify-content:center;align-items:center;transition:opacity .6s cubic-bezier(.4,0,.2,1);display:flex;position:fixed;inset:0}.loading-overlay.fade-out{opacity:0;pointer-events:none}.loading-spinner{flex-direction:column;align-items:center;gap:18px;display:flex}.loading-spinner:before{content:"";border:2px solid #ffffff29;border-top-color:#ffffffd9;border-radius:50%;width:30px;height:30px;animation:.8s linear infinite spin}.loading-text{color:#ffffff9e;letter-spacing:.06em;font-size:.78rem}.info-panel{width:min(680px, calc(100vw - env(safe-area-inset-left) - env(safe-area-inset-right) - 32px));max-height:calc(100dvh - env(safe-area-inset-top) - env(safe-area-inset-bottom) - 32px);border:1px solid var(--panel-border);background:var(--panel-bg-solid);box-shadow:var(--panel-shadow);color:var(--panel-text-strong);overscroll-behavior:contain;-webkit-overflow-scrolling:touch;border-radius:18px;padding:clamp(18px,2.8vw,30px);animation:.62s cubic-bezier(.16,1,.3,1) .2s backwards panel-enter;position:absolute;inset-block-end:max(16px, env(safe-area-inset-bottom));inset-inline-start:max(16px, env(safe-area-inset-left));overflow-y:auto}@supports (backdrop-filter:blur(12px)){.info-panel{background:linear-gradient(160deg, var(--panel-bg-top) 0%, var(--panel-bg-bottom) 100%);-webkit-backdrop-filter:blur(20px)saturate(140%)}}.scene-root[data-contrast=high]{--panel-bg-solid:#10182394;--panel-bg-top:#142030ad;--panel-bg-bottom:#0e182761;--panel-border:#ffffff29;--panel-shadow:0 26px 56px -24px #04080ecc;--panel-text-strong:#eef6ff;--panel-text-sub:#eef6ffd4;--panel-text-muted:#eef6ff8f}.weather-label{letter-spacing:.2em;text-transform:uppercase;color:var(--panel-text-muted);margin:0;font-size:.7rem;font-weight:520;animation:.44s cubic-bezier(.16,1,.3,1) .32s backwards content-enter}.temp-row{align-items:baseline;gap:clamp(8px,2vw,14px);margin-top:6px;animation:.44s cubic-bezier(.16,1,.3,1) .4s backwards content-enter;display:flex}.temp{letter-spacing:-.04em;font-feature-settings:"tnum";margin:0;font-size:clamp(3.45rem,10vw,6.2rem);font-weight:800;line-height:1}.temp .unit{vertical-align:super;opacity:.54;font-size:.32em;font-weight:450}.weather-name{color:var(--panel-text-sub);margin:0;font-size:clamp(1rem,2.3vw,1.34rem);font-weight:540;line-height:1.15}.divider{opacity:.12;background:currentColor;width:100%;height:1px;margin:16px 0 14px;animation:.44s cubic-bezier(.16,1,.3,1) .46s backwards content-enter}.meta{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 20px;display:grid}.meta-item{flex-direction:column;gap:2px;animation:.44s cubic-bezier(.16,1,.3,1) backwards content-enter;display:flex}.meta-item:first-child{animation-delay:.52s}.meta-item:nth-child(2){animation-delay:.56s}.meta-item:nth-child(3){animation-delay:.6s}.meta-item:nth-child(4){animation-delay:.64s}.meta-item:nth-child(5){animation-delay:.68s}.meta-item:nth-child(6){animation-delay:.72s}.meta-key{letter-spacing:.14em;text-transform:uppercase;color:var(--panel-text-muted);font-size:.68rem;font-weight:520}.meta-val{color:var(--panel-text-sub);font-feature-settings:"tnum";font-size:clamp(.88rem,1.5vw,1.02rem);font-weight:540}.wind-arrow{margin-right:2px;transition:transform .3s,color .3s;display:inline-block}.wind-degree{color:var(--panel-text-sub);opacity:.6;margin-left:3px;font-size:.85em}.meta-pip{vertical-align:middle;border-radius:999px;width:6px;height:6px;margin-right:5px;transition:background .3s;display:inline-block}.observed-tag{letter-spacing:.02em;min-height:1.05rem;color:var(--panel-text-muted);white-space:nowrap;text-overflow:ellipsis;margin:10px 0 0;font-size:.69rem;animation:.44s cubic-bezier(.16,1,.3,1) .76s backwards content-enter;overflow:hidden}.forecast-section{border-top:1px solid #ffffff26;margin-top:12px;padding-top:10px;animation:.44s cubic-bezier(.16,1,.3,1) .74s backwards content-enter}.scene-root[data-contrast=high] .forecast-section{border-top-color:#ffffff1c}.forecast-legend{flex-wrap:wrap;gap:4px 10px;margin:0 0 8px;display:flex}.legend-item{color:var(--panel-text-muted);white-space:nowrap;align-items:center;gap:6px;font-size:.64rem;line-height:1;display:inline-flex}.legend-swatch{background:var(--legend-accent,#7a9dbda6);border-radius:999px;width:14px;height:3px;box-shadow:0 0 0 1px #fff3}.scene-root[data-contrast=high] .legend-swatch{box-shadow:0 0 0 1px #ffffff1f}.legend-label{letter-spacing:.01em}.forecast-list{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:0;padding:0;list-style:none;display:grid}.forecast-card{background:linear-gradient(160deg,#ffffff57 0%,#ffffff14 100%);border:1px solid #ffffff42;border-radius:12px;padding:10px 10px 11px;box-shadow:inset 0 1px #ffffff2e,0 10px 20px -16px #08132180}.scene-root[data-contrast=high] .forecast-card{background:linear-gradient(160deg,#ffffff14 0%,#ffffff08 100%);border-color:#ffffff24;box-shadow:inset 0 1px #ffffff14,0 12px 24px -16px #010408b3}.forecast-day,.forecast-date,.forecast-condition,.forecast-range,.forecast-meta{margin:0}.forecast-day{letter-spacing:-.01em;color:var(--panel-text-strong);font-size:.8rem;font-weight:620}.forecast-date{color:var(--panel-text-muted);margin-top:2px;font-size:.68rem}.forecast-condition{color:var(--panel-text-sub);margin-top:8px;font-size:.8rem;font-weight:540}.forecast-range{font-feature-settings:"tnum";margin-top:4px;font-size:1rem;line-height:1}.forecast-high{color:var(--panel-text-strong);font-weight:700}.forecast-range-divider{opacity:.34;margin:0 4px}.forecast-low{color:var(--panel-text-sub);opacity:.74}.forecast-meta{color:var(--panel-text-muted);margin-top:6px;font-size:.66rem;line-height:1.2}.forecast-hourly{grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;margin-top:9px;display:grid}.hourly-chip{background:linear-gradient(170deg,#ffffff57 0%,#ffffff1a 100%);border:1px solid #ffffff38;border-radius:9px;flex-direction:column;align-items:flex-start;gap:2px;padding:8px 6px 6px;display:flex;position:relative;overflow:hidden}.hourly-chip:before{content:"";background:var(--chip-accent,#7a9dbda6);width:100%;height:2px;position:absolute;inset:0 auto auto 0}.scene-root[data-contrast=high] .hourly-chip{background:linear-gradient(170deg,#ffffff17 0%,#ffffff08 100%);border-color:#ffffff1f}.hourly-time{letter-spacing:.01em;color:var(--panel-text-muted);font-size:.57rem;line-height:1.1}.hourly-temp{color:var(--panel-text-strong);font-feature-settings:"tnum";font-size:.74rem;font-weight:620;line-height:1.1}.hourly-empty{color:var(--panel-text-muted);grid-column:1/-1;margin:0;font-size:.62rem}.forecast-empty{text-align:center;color:var(--panel-text-muted);grid-column:1/-1;padding:10px 0 8px;font-size:.78rem}.status-note{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.info-panel.is-refreshing .temp,.info-panel.is-refreshing .weather-name,.info-panel.is-refreshing .meta-val,.info-panel.is-refreshing .observed-tag,.info-panel.is-refreshing .forecast-card{animation:.44s value-refresh}.error-message{z-index:110;color:#ffffffd1;text-align:center;background:linear-gradient(#253649 0%,#121b24 100%);flex-direction:column;justify-content:center;align-items:center;gap:16px;padding:24px;display:flex;position:fixed;inset:0}.error-message p{margin:0;font-size:.95rem}.error-message button{color:inherit;letter-spacing:.02em;cursor:pointer;background:#ffffff1a;border:1px solid #fff3;border-radius:10px;padding:10px 22px;font-size:.8rem}.error-message button:hover{background:#ffffff2e}@keyframes spin{to{transform:rotate(360deg)}}@keyframes panel-enter{0%{opacity:0;transform:translateY(16px)}}@keyframes content-enter{0%{opacity:0;transform:translateY(8px)}}@keyframes value-refresh{0%{opacity:.34;filter:blur(1px)}to{opacity:1;filter:blur()}}@media (width<=720px){.info-panel{width:auto;max-height:calc(100dvh - env(safe-area-inset-top) - env(safe-area-inset-bottom) - 24px);border-radius:14px;padding:16px;inset-block-end:max(12px, env(safe-area-inset-bottom));inset-inline-start:max(12px, env(safe-area-inset-left));inset-inline-end:max(12px, env(safe-area-inset-right))}.meta{gap:8px 14px}.forecast-list{scrollbar-width:none;gap:9px;padding-bottom:2px;display:flex;overflow-x:auto}.forecast-list::-webkit-scrollbar{display:none}.forecast-card{flex:0 0 142px;min-width:142px}.forecast-hourly{grid-template-columns:repeat(2,minmax(0,1fr));gap:5px}.hourly-chip{padding:7px 7px 6px}}@media (prefers-reduced-motion:reduce){.loading-overlay,.status-note,.wind-arrow,.meta-pip{transition:none}.loading-spinner:before,.info-panel,.weather-label,.temp-row,.divider,.meta-item,.forecast-section,.observed-tag,.info-panel.is-refreshing .temp,.info-panel.is-refreshing .weather-name,.info-panel.is-refreshing .meta-val,.info-panel.is-refreshing .observed-tag,.info-panel.is-refreshing .forecast-card{animation:none}}