@import "https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@300;400;500;600;700;800&family=JetBrains+Mono:wght@400;500;600;700&display=swap";:root{--bg-main:#070a13;--bg-card:#0f172ad9;--bg-card-hover:#16213ce6;--bg-glass:#ffffff08;--border-glass:#ffffff14;--border-glass-hover:#38bdf859;--text-main:#f8fafc;--text-muted:#94a3b8;--text-dim:#64748b;--accent-cyan:#06b6d4;--accent-blue:#3b82f6;--accent-emerald:#10b981;--font-sans:"Plus Jakarta Sans", system-ui, -apple-system, sans-serif;--font-mono:"JetBrains Mono", monospace}*{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--bg-main);color:var(--text-main);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;min-height:100vh;overflow-x:hidden}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--bg-main)}::-webkit-scrollbar-thumb{background:#ffffff26;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#ffffff47}.glass-panel{background:var(--bg-card);-webkit-backdrop-filter:blur(16px);border:1px solid var(--border-glass);border-radius:14px;transition:all .25s cubic-bezier(.16,1,.3,1);box-shadow:0 8px 30px #0006}.glass-panel:hover{border-color:var(--border-glass-hover);box-shadow:0 12px 36px #00000080}.btn-primary{color:#fff;font-size:.85rem;font-weight:600;font-family:var(--font-sans);cursor:pointer;background:linear-gradient(135deg,#0284c7,#2563eb);border:none;border-radius:9px;align-items:center;gap:8px;padding:10px 18px;transition:all .2s cubic-bezier(.16,1,.3,1);display:inline-flex;box-shadow:0 4px 14px #2563eb59}.btn-primary:hover{transform:translateY(-2px);box-shadow:0 8px 24px #2563eb8c}.btn-primary:active{transform:translateY(0)}.btn-primary:disabled{opacity:.55;cursor:not-allowed;transform:none}.tab-btn{color:var(--text-muted);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:8px;align-items:center;gap:7px;padding:8px 14px;font-size:.825rem;font-weight:600;transition:all .2s;display:inline-flex}.tab-btn:hover{color:#fff;background:#ffffff0f}.tab-btn.active{color:#38bdf8;background:#38bdf824;border:1px solid #38bdf859;box-shadow:0 0 16px #38bdf82e}.badge-pill{text-transform:uppercase;letter-spacing:.04em;border-radius:9999px;align-items:center;gap:5px;padding:3px 9px;font-size:.68rem;font-weight:700;line-height:1;display:inline-flex}.pulse-dot{border-radius:50%;width:8px;height:8px;animation:2s ease-in-out infinite pulseDot}@keyframes pulseDot{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(1.4)}}.radar-sweep{transform-origin:50%;animation:4s linear infinite radarRotate}@keyframes radarRotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.spin{animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.aqi-orb{border-radius:50%;transition:background .8s,box-shadow .8s;animation:3.5s ease-in-out infinite breathe}@keyframes breathe{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}.aqi-number{font-variant-numeric:tabular-nums;font-size:3.5rem;font-weight:900;line-height:1;font-family:var(--font-mono);transition:color .8s}@keyframes slideInRow{0%{opacity:0;transform:translate(-14px)}to{opacity:1;transform:translate(0)}}.schedule-row{animation:.35s cubic-bezier(.16,1,.3,1) both slideInRow}.aqi-band{background:linear-gradient(90deg,#10b981 0%,#84cc16 20%,#eab308 40%,#f97316 60%,#ef4444 80%,#991b1b 100%);border-radius:9999px;height:6px;margin:10px 0;position:relative}.aqi-band-marker{background:#fff;border:2px solid #070a13;border-radius:50%;width:14px;height:14px;transition:left .6s cubic-bezier(.16,1,.3,1);position:absolute;top:-4px;transform:translate(-50%);box-shadow:0 0 8px #fffc}.toast-container{z-index:9999;pointer-events:none;flex-direction:column;gap:10px;display:flex;position:fixed;bottom:24px;right:24px}.toast{pointer-events:auto;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#0f172af2;border:1px solid #ffffff24;border-radius:12px;min-width:280px;max-width:400px;padding:12px 16px;animation:.3s cubic-bezier(.16,1,.3,1) both toastIn;box-shadow:0 12px 32px #00000080}.toast.toast-exit{animation:.3s forwards toastOut}@keyframes toastIn{0%{opacity:0;transform:translateY(16px)scale(.95)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes toastOut{0%{opacity:1;transform:translateY(0)scale(1)}to{opacity:0;transform:translateY(16px)scale(.9)}}.particle-canvas{pointer-events:none;z-index:0;opacity:.55;width:100vw;height:100vh;position:fixed;top:0;left:0}
