:root{--bg: #05080f;--glass: rgba(11, 21, 34, .64);--glass-strong: rgba(9, 17, 28, .94);--line: rgba(140, 200, 255, .16);--line-strong: rgba(140, 200, 255, .3);--txt: #e8f2fa;--sub: #90b3cc;--dim: #6b8ba3;--accent: #35c3ff;--accent-soft: rgba(53, 195, 255, .16);--warm: #ffb454;--err: #ff7a7a;--radius: 14px;--shadow: 0 10px 34px rgba(0, 0, 0, .42);--sat: env(safe-area-inset-top, 0px);--sab: env(safe-area-inset-bottom, 0px)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--txt);font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Roboto,sans-serif;font-size:14px;overflow:hidden;overscroll-behavior:none}button{font-family:inherit;cursor:pointer;color:inherit}input{font-family:inherit}.app{position:fixed;inset:0;overflow:hidden}.stage{position:absolute;inset:0;background:radial-gradient(circle at 50% 50%,#0a1626,#04070d 70%)}.stage .cesium-viewer,.stage .cesium-viewer-cesiumWidgetContainer,.stage .cesium-widget,.stage .cesium-widget canvas{width:100%;height:100%}.stage .cesium-viewer-bottom,.stage .cesium-widget-credits{display:none!important}.glass{background:var(--glass);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(18px) saturate(150%);backdrop-filter:blur(18px) saturate(150%)}.topbar{position:absolute;top:0;left:0;right:0;z-index:30;display:flex;align-items:center;gap:8px;padding:calc(var(--sat) + 10px) 12px 10px;pointer-events:none}.topbar>*{pointer-events:auto}.brand{display:flex;align-items:center;gap:9px;padding:7px 13px 7px 10px;height:46px;flex:0 0 auto}.brand-txt{display:flex;flex-direction:column;line-height:1.15}.brand-txt strong{font-size:15px;letter-spacing:.06em;font-weight:700;background:linear-gradient(100deg,#fff,#9fdcff);-webkit-background-clip:text;background-clip:text;color:transparent}.brand-txt span{font-size:10.5px;color:var(--dim);letter-spacing:.04em;white-space:nowrap}.search-wrap{position:relative;display:flex;align-items:center;gap:8px;height:40px;padding:0 10px;flex:0 1 330px;min-width:150px;color:var(--sub)}.search-wrap .ico{flex:0 0 auto;opacity:.8}.search-wrap input{flex:1;min-width:0;background:none;border:0;outline:none;color:var(--txt);font-size:13.5px}.search-wrap input::placeholder,.coord-wrap input::placeholder,.pl-coord input::placeholder{color:var(--dim)}.clear-btn{background:none;border:0;color:var(--dim);font-size:18px;line-height:1;padding:0 2px}.search-drop{position:absolute;top:calc(100% + 8px);left:0;right:0;z-index:60;background:var(--glass-strong);border:1px solid var(--line-strong);border-radius:12px;box-shadow:var(--shadow);overflow:hidden auto;max-height:min(46vh,380px);-webkit-overflow-scrolling:touch}.drop-note{padding:12px 14px;font-size:12.5px;color:var(--sub)}.drop-note.err{color:var(--err)}.drop-item{display:grid;grid-template-columns:1fr auto;grid-template-areas:"name coord" "sub sub";gap:2px 10px;width:100%;text-align:left;padding:9px 13px;background:none;border:0;border-bottom:1px solid rgba(255,255,255,.05);color:var(--txt)}.drop-item:active,.drop-item:hover{background:var(--accent-soft)}.di-name{grid-area:name;font-size:13.5px;font-weight:600}.di-sub{grid-area:sub;font-size:11.5px;color:var(--dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.di-coord{grid-area:coord;font-size:10.5px;color:var(--dim);font-variant-numeric:tabular-nums}.coord-wrap{position:relative;display:flex;align-items:center;gap:6px;height:40px;padding:0 6px 0 11px;flex:0 0 auto;width:196px}.coord-wrap input{flex:1;min-width:0;background:none;border:0;outline:none;color:var(--txt);font-size:12.5px;font-variant-numeric:tabular-nums}.mini-btn{flex:0 0 auto;height:28px;padding:0 9px;border-radius:8px;border:1px solid var(--line-strong);background:#35c3ff1f;color:#b9e9ff;font-size:12px}.coord-err{position:absolute;top:calc(100% + 6px);left:0;right:0;padding:6px 10px;border-radius:8px;background:#460c0ce6;border:1px solid rgba(255,120,120,.35);color:#ffc9c9;font-size:11.5px}.top-actions{display:flex;align-items:center;gap:6px;margin-left:auto}.act{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:40px;padding:0 13px;border-radius:11px;border:1px solid var(--line);background:var(--glass);color:#d5e7f5;font-size:13px;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);transition:background .18s,border-color .18s,color .18s}.act:hover{border-color:var(--line-strong);color:#fff}.act.on{background:#143e5cb8;border-color:#35c3ff8c;color:#a9e6ff}.act.icon-only{width:40px;padding:0}.act svg{flex:0 0 auto}.citybar{position:absolute;top:calc(var(--sat) + 68px);left:12px;z-index:20;display:flex;gap:6px;overflow-x:auto;padding:2px 2px 4px;scrollbar-width:none;-webkit-overflow-scrolling:touch;pointer-events:auto;max-width:calc(100vw - 24px)}.citybar::-webkit-scrollbar{display:none}.chip{flex:0 0 auto;padding:5px 12px;border-radius:20px;border:1px solid var(--line);background:#0a131f99;color:#c2dcef;font-size:12.5px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transition:all .16s}.chip:hover{border-color:var(--line-strong);color:#fff}.chip.on{background:#35c3ff33;border-color:#35c3ff99;color:#d8f4ff}.layer-panel{position:absolute;top:calc(var(--sat) + 68px);right:12px;z-index:40;width:292px;max-height:calc(100vh - var(--sat) - 190px);overflow-y:auto;padding:4px 14px 14px;opacity:0;transform:translate(calc(100% + 30px));pointer-events:none;transition:transform .28s cubic-bezier(.22,.61,.36,1),opacity .22s;-webkit-overflow-scrolling:touch}.layer-panel.open{opacity:1;transform:none;pointer-events:auto}.panel-head{position:sticky;top:0;z-index:2;display:flex;align-items:center;justify-content:space-between;padding:10px 0 8px;background:linear-gradient(to bottom,#0a1421fa,#0a1421d1)}.panel-head h2{margin:0;font-size:14px;font-weight:600;letter-spacing:.08em}.close{width:28px;height:28px;border-radius:8px;border:1px solid var(--line);background:#ffffff0a;color:var(--sub);font-size:18px;line-height:1;display:inline-flex;align-items:center;justify-content:center}.close:hover{color:#fff;border-color:var(--line-strong)}.pl-group{margin-top:14px}.pl-label{font-size:11px;letter-spacing:.12em;color:var(--dim);margin-bottom:8px;text-transform:uppercase}.seg{display:flex;gap:4px;padding:3px;border-radius:10px;background:#ffffff0a;border:1px solid var(--line)}.seg-item{flex:1;padding:7px 0;border:0;border-radius:8px;background:transparent;color:var(--sub);font-size:12.5px;transition:all .16s;white-space:nowrap}.seg-item.on{background:#35c3ff2e;color:#cdf1ff;box-shadow:inset 0 0 0 1px #35c3ff66}.toggle-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 0;border-bottom:1px solid rgba(255,255,255,.05)}.toggle-row:last-child{border-bottom:0}.tr-txt{display:flex;flex-direction:column;gap:2px;min-width:0}.tr-txt strong{font-size:13px;font-weight:500}.tr-txt span{font-size:10.5px;color:var(--dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.switch{flex:0 0 auto;width:42px;height:24px;border-radius:12px;border:1px solid var(--line);background:#ffffff12;padding:2px;display:flex;align-items:center;transition:background .2s,border-color .2s}.switch i{display:block;width:18px;height:18px;border-radius:50%;background:#93b2c8;transition:transform .2s,background .2s}.switch.on{background:#35c3ff47;border-color:#35c3ff99}.switch.on i{transform:translate(18px);background:#dcf6ff}.pl-coord{display:flex;gap:6px}.pl-coord input{flex:1;min-width:0;height:34px;padding:0 10px;border-radius:9px;border:1px solid var(--line);background:#03091099;color:var(--txt);font-size:12.5px;outline:none;font-variant-numeric:tabular-nums}.pl-coord input:focus{border-color:#35c3ff8c}.pl-coord button{height:34px;padding:0 13px;border-radius:9px;border:1px solid rgba(53,195,255,.45);background:#35c3ff29;color:#c8efff;font-size:12.5px}.pl-err{margin-top:6px;font-size:11.5px;color:var(--err)}.weather-panel{position:absolute;top:calc(var(--sat) + 68px);right:12px;bottom:calc(var(--sab) + 92px);z-index:35;width:376px;overflow-y:auto;overflow-x:hidden;padding:0 15px 16px;animation:slideInR .3s cubic-bezier(.22,.61,.36,1);-webkit-overflow-scrolling:touch;overscroll-behavior:contain}@keyframes slideInR{0%{opacity:0;transform:translate(40px)}to{opacity:1;transform:none}}.wp-head{position:sticky;top:0;z-index:3;display:flex;align-items:flex-start;justify-content:space-between;gap:10px;padding:13px 0 10px;margin-bottom:2px;background:linear-gradient(to bottom,#0a1421fc 62%,#0a1421b8);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.wp-title h2{margin:0;font-size:16px;font-weight:600;letter-spacing:.03em}.wp-coord{display:block;margin-top:3px;font-size:10.5px;color:var(--dim);font-variant-numeric:tabular-nums}.wp-body{transition:opacity .2s}.wp-body.dim{opacity:.55}.cur{display:flex;align-items:center;gap:12px;padding:12px 0 14px}.cur-icon{color:#bfe8ff;display:flex;filter:drop-shadow(0 0 14px rgba(90,200,255,.35))}.cur-temp{display:flex;align-items:flex-start;line-height:1}.cur-temp b{font-size:46px;font-weight:300;letter-spacing:-.03em;font-variant-numeric:tabular-nums}.cur-temp span{font-size:15px;margin-top:6px;color:var(--sub)}.cur-meta{display:flex;flex-direction:column;gap:3px;margin-left:auto;text-align:right;font-size:11.5px;color:var(--sub)}.cur-meta strong{font-size:14px;color:var(--txt);font-weight:500}.cur-range{color:var(--dim)}.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;background:#ffffff0f;border:1px solid var(--line);border-radius:12px;overflow:hidden}.metric{background:#070e18b8;padding:9px 8px;display:flex;flex-direction:column;gap:3px;min-height:52px}.metric span{font-size:10px;color:var(--dim);letter-spacing:.04em}.metric b{font-size:12.5px;font-weight:500;color:#e4f1fb;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.wind-val{display:inline-flex;align-items:center;gap:3px}.wind-val svg{color:#8fd8ff;flex:0 0 auto}.wp-sec{margin-top:16px}.wp-sec h3{margin:0 0 8px;font-size:11.5px;font-weight:500;letter-spacing:.12em;color:var(--dim)}.chart{width:100%;height:auto;display:block;background:linear-gradient(180deg,#ffffff09,#fff0);border:1px solid var(--line);border-radius:12px;padding:2px}.cx-label{font-size:9.5px;font-weight:600;fill:#ffc97a}.cx-label.min{fill:#8fd8ff}.cx-time{font-size:8.5px;fill:#6b8ba3}.cx-legend{font-size:9px;fill:#ffb454}.cx-legend.rain{fill:#6cb9ff}.chart-empty{padding:20px 0;text-align:center;color:var(--dim);font-size:12px}.daily{list-style:none;margin:0;padding:0;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#070e188c}.daily li{display:grid;grid-template-columns:72px 24px 1fr 34px 62px;align-items:center;gap:6px;padding:8px 11px;font-size:12.5px;border-bottom:1px solid rgba(255,255,255,.05)}.daily li:last-child{border-bottom:0}.d-day{color:var(--sub);font-size:12px}.d-ico{color:#a9d8f2;display:flex}.d-txt{color:#cfe3f2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.d-pop{color:#6cb9ff;font-size:11px;text-align:right}.d-range{display:flex;justify-content:flex-end;gap:6px;font-variant-numeric:tabular-nums}.d-range b{color:#ffd08a;font-weight:600}.d-range i{color:var(--dim);font-style:normal}.air{display:flex;align-items:center;gap:12px;padding:11px 12px;border:1px solid var(--line);border-radius:12px;background:#070e188c}.air-badge{flex:0 0 auto;width:52px;height:52px;border-radius:12px;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#50c87829;border:1px solid rgba(120,220,150,.35);color:#a8f0c0}.air-badge b{font-size:18px;font-weight:600;line-height:1.1}.air-badge span{font-size:8.5px;letter-spacing:.1em;opacity:.8}.aqi-1{background:#50c87829;border-color:#78dc9659;color:#a8f0c0}.aqi-2{background:#dcc84624;border-color:#e6d25a59;color:#f0e79a}.aqi-3{background:#e68c3c29;border-color:#f0a05059;color:#ffcda0}.aqi-4{background:#e1505029;border-color:#f06e6e59;color:#ffb3b3}.aqi-5{background:#aa5ac82e;border-color:#be78dc59;color:#e0bcf5}.aqi-na{background:#ffffff14;border-color:var(--line);color:var(--sub)}.air-level{font-size:13px;color:#dfeefb;min-width:30px}.air-grid{display:grid;grid-template-columns:1fr 1fr;gap:2px 10px;margin-left:auto;font-size:10.5px;color:var(--dim)}.air-grid b{color:#cfe6f7;font-weight:500;font-variant-numeric:tabular-nums}.wp-foot{margin-top:14px;font-size:9.5px;color:#4f6e85;line-height:1.5}.muted{font-size:12px;color:var(--dim);margin:0}.wp-error{display:flex;flex-direction:column;align-items:center;gap:10px;padding:40px 12px;text-align:center}.wp-error-ico{width:40px;height:40px;border-radius:50%;border:1px solid rgba(255,122,122,.4);background:#ff7a7a1f;color:var(--err);font-size:20px;display:flex;align-items:center;justify-content:center}.wp-error p{margin:0;font-size:12.5px;color:#ffd3d3;line-height:1.6}.retry{padding:8px 20px;border-radius:10px;border:1px solid rgba(53,195,255,.5);background:#35c3ff29;color:#cdf0ff;font-size:12.5px}.retry.small{padding:5px 13px;font-size:12px}.skeleton{padding-top:8px}.sk{position:relative;overflow:hidden;background:#ffffff0f;border-radius:8px}.sk:after{content:"";position:absolute;inset:0;transform:translate(-100%);background:linear-gradient(90deg,transparent,rgba(255,255,255,.12),transparent);animation:shimmer 1.4s infinite}@keyframes shimmer{to{transform:translate(100%)}}.sk-row.big{display:flex;align-items:center;gap:14px;margin-bottom:14px}.sk-circle{width:54px;height:54px;border-radius:50%;flex:0 0 auto}.sk-h1{width:74px;height:38px;flex:0 0 auto}.sk-line{height:12px;margin:8px 0;flex:1}.sk-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-bottom:14px}.sk-cell{height:50px}.sk-chart{height:140px;margin-bottom:12px}.radar-bar{position:absolute;left:50%;bottom:calc(var(--sab) + 40px);transform:translate(-50%);z-index:26;width:min(720px,calc(100% - 24px));padding:9px 12px;display:flex;align-items:center;gap:11px;animation:riseIn .26s ease}@keyframes riseIn{0%{opacity:0;transform:translate(-50%,16px)}to{opacity:1;transform:translate(-50%)}}.play{flex:0 0 auto;width:34px;height:34px;border-radius:50%;border:1px solid rgba(53,195,255,.5);background:#35c3ff29;color:#d3f2ff;display:flex;align-items:center;justify-content:center}.play:disabled{opacity:.4}.radar-mid{flex:1;min-width:0}.radar-top{display:flex;align-items:center;gap:8px;font-size:11.5px;color:var(--sub)}.rb-title{font-size:11px;letter-spacing:.1em;color:var(--dim)}.rb-badge{padding:1px 6px;border-radius:5px;font-size:10px;background:#35c3ff2e;border:1px solid rgba(53,195,255,.4);color:#a9e4ff}.rb-badge.forecast{background:#ffb45429;border-color:#ffb45473;color:#ffd08a}.rb-time{font-size:14px;font-weight:600;color:#eaf6ff;font-variant-numeric:tabular-nums;letter-spacing:.02em}.rb-count{margin-left:auto;font-size:10.5px;color:var(--dim);font-variant-numeric:tabular-nums}.rb-close{width:22px;height:22px;border-radius:6px;border:1px solid var(--line);background:transparent;color:var(--sub);font-size:15px;line-height:1;display:flex;align-items:center;justify-content:center}.rb-note{font-size:11px;color:var(--sub)}.rb-note.err{color:var(--err)}.slider-wrap{margin-top:5px;position:relative}.slider-wrap input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:3px;border-radius:3px;background:#ffffff24;outline:none;margin:0}.slider-wrap input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:#dcf5ff;border:2px solid #35c3ff;box-shadow:0 0 10px #35c3ffcc;cursor:pointer}.slider-wrap input[type=range]::-moz-range-thumb{width:12px;height:12px;border-radius:50%;background:#dcf5ff;border:2px solid #35c3ff;cursor:pointer}.slider-ticks{display:flex;gap:2px;margin-top:4px}.slider-ticks i{flex:1;height:2px;border-radius:1px;background:#ffffff1f}.slider-ticks i.done{background:#35c3ffbf}.slider-ticks i.fc{background:#ffb45447}.slider-ticks i.fc.done{background:#ffb454d9}.slider-labels{display:flex;justify-content:space-between;font-size:9.5px;color:var(--dim);margin-top:2px;font-variant-numeric:tabular-nums}.radar-empty{padding:6px 0 4px;font-size:11.5px;color:var(--dim)}.statusbar{position:absolute;left:0;right:0;bottom:0;z-index:30;height:calc(30px + var(--sab));padding:0 12px var(--sab);display:flex;align-items:center;gap:14px;background:linear-gradient(to top,#03070df0,#03070d00);color:#b4d2e8c7;font-size:11px;font-variant-numeric:tabular-nums;letter-spacing:.02em;pointer-events:none;overflow:hidden;white-space:nowrap}.sb-item{display:inline-flex;align-items:center;gap:5px}.sb-item.attr{margin-left:auto;color:#96b4ca80;font-size:10px;overflow:hidden;text-overflow:ellipsis}.sb-item.hint{color:#78c8ff8c}.dot{width:5px;height:5px;border-radius:50%;background:#35c3ff;box-shadow:0 0 8px #35c3ff}.toast{position:absolute;top:calc(var(--sat) + 122px);left:50%;transform:translate(-50%);z-index:70;padding:9px 18px;border-radius:10px;background:#08101af0;border:1px solid var(--line-strong);color:#e2f1fb;font-size:12.5px;box-shadow:var(--shadow);animation:fadeIn .2s ease;max-width:min(88vw,480px);text-align:center}.toast.err{border-color:#ff7a7a73;color:#ffd6d6}@keyframes fadeIn{0%{opacity:0;transform:translate(-50%,-6px)}to{opacity:1;transform:translate(-50%)}}.loading-hint{position:absolute;left:50%;bottom:50%;transform:translate(-50%);z-index:50;display:flex;align-items:center;gap:10px;padding:10px 18px;border-radius:12px;background:#08101adb;border:1px solid var(--line);color:#b9d6e8;font-size:12.5px}.spin{width:14px;height:14px;border-radius:50%;border:2px solid rgba(120,200,255,.2);border-top-color:#35c3ff;animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:1180px){.coord-wrap{display:none}.search-wrap{flex:0 1 300px}}@media(max-width:980px){.brand-txt span{display:none}.brand{padding:7px 12px}.weather-panel{width:344px}}@media(max-width:880px){.topbar{flex-wrap:wrap;gap:8px;padding:calc(var(--sat) + 8px) 10px 8px}.brand{height:42px;flex:0 0 auto}.brand-txt strong{font-size:14px}.top-actions{margin-left:auto}.act{height:38px;width:38px;padding:0}.act span{display:none}.search-wrap{order:10;flex:1 1 100%;height:40px;max-width:none}.citybar{top:calc(var(--sat) + 108px);left:10px;right:10px;max-width:none}.layer-panel{top:auto;left:8px;right:8px;bottom:calc(var(--sab) + 36px);width:auto;max-height:68vh;padding:0 15px 16px;border-radius:18px;transform:translateY(calc(100% + 40px));transition:transform .3s cubic-bezier(.22,.61,.36,1),opacity .2s;opacity:0}.layer-panel.open{opacity:1;transform:none}.weather-panel{inset:auto 0 0;width:auto;max-height:66vh;padding:0 15px calc(var(--sab) + 18px);border-radius:20px 20px 0 0;animation:slideUp .3s cubic-bezier(.22,.61,.36,1);box-shadow:0 -18px 50px #0000008c}@keyframes slideUp{0%{opacity:0;transform:translateY(60px)}to{opacity:1;transform:none}}.wp-head{padding-right:2px}.cur-temp b{font-size:40px}.radar-bar{bottom:calc(var(--sab) + 34px);width:calc(100% - 16px);padding:8px 10px;gap:9px}.statusbar{gap:10px;font-size:10px;padding:0 10px var(--sab)}.sb-item.hint,.sb-item.attr{display:none}.metrics{grid-template-columns:repeat(4,minmax(0,1fr))}.toast{top:calc(var(--sat) + 160px)}}@media(max-width:560px){.brand-txt strong{font-size:13px;letter-spacing:.02em}.metric{padding:8px 6px}.metric b{font-size:11.5px}.daily li{grid-template-columns:66px 22px 1fr 30px 58px;font-size:12px;padding:8px 9px}.cur{gap:8px}.cur-meta{font-size:10.5px}}@media(max-height:560px)and (min-width:881px){.weather-panel{bottom:84px}.layer-panel{max-height:calc(100vh - 150px)}}@media(prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important}}
