:root{--bg-primary: hsl(220, 20%, 8%);--bg-surface: hsl(220, 15%, 12%);--bg-glass: rgba(15, 23, 42, .65);--border-glass: rgba(255, 255, 255, .08);--glow-shadow: 0 0 20px rgba(249, 115, 22, .15);--panel-shadow: 0 10px 30px -10px rgba(0, 0, 0, .7);--color-warm: hsl(32, 95%, 55%);--color-cool: hsl(200, 80%, 55%);--comfort-green: #22c55e;--comfort-yellow: #eab308;--comfort-orange: #f97316;--comfort-red: #ef4444;--font-family: "Inter", system-ui, -apple-system, sans-serif;--transition-fast: .2s cubic-bezier(.4, 0, .2, 1);--transition-normal: .3s cubic-bezier(.4, 0, .2, 1)}*{box-sizing:border-box;margin:0;padding:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body,html{width:100%;height:100%;overflow:hidden;background-color:var(--bg-primary);font-family:var(--font-family);color:#f1f5f9}#map{position:absolute;top:0;bottom:0;width:100%;z-index:1}#ui-container{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;pointer-events:none;opacity:0}#ui-container>*{pointer-events:auto}.glass-panel{background:var(--bg-glass);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid var(--border-glass);box-shadow:var(--panel-shadow);border-radius:16px;color:#f8fafc}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;background:#ffffff14;border:1px solid rgba(255,255,255,.1);color:#f8fafc;padding:10px 16px;border-radius:10px;font-size:.9rem;font-weight:500;cursor:pointer;transition:var(--transition-fast)}.btn:hover{background:#ffffff26;border-color:#fff3;transform:translateY(-1px)}.btn:active{transform:translateY(1px)}.btn.primary{background:var(--color-warm);border-color:transparent;color:#0f172a;font-weight:600}.btn.primary:hover{background:#faa442;box-shadow:0 0 15px #f9731666}.btn.active{background:var(--color-cool);border-color:transparent;color:#0f172a;font-weight:600}.badge{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:9999px;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em}.badge.comfortable{background:#22c55e33;color:#4ade80;border:1px solid rgba(34,197,94,.3)}.badge.warm{background:#eab30833;color:#fde047;border:1px solid rgba(234,179,8,.3)}.badge.hot{background:#f9731633;color:#fdba74;border:1px solid rgba(249,115,22,.3)}.badge.dangerous{background:#ef444433;color:#fca5a5;border:1px solid rgba(239,68,68,.3)}.splash-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#080a0fd9;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:999;transition:opacity var(--transition-normal);text-align:center;padding:20px}.splash-content{max-width:500px;animation:slideUp .6s cubic-bezier(.16,1,.3,1)}.splash-logo{font-size:3rem;font-weight:800;letter-spacing:-.03em;background:linear-gradient(135deg,#fff 30%,var(--color-warm));-webkit-background-clip:text;-webkit-text-fill-color:transparent;margin-bottom:8px;text-shadow:0 10px 30px rgba(249,115,22,.2)}.splash-subtitle{font-size:1.15rem;color:#94a3b8;margin-bottom:32px;line-height:1.5}.splash-instructions{display:flex;flex-direction:column;gap:16px;background:#ffffff08;border:1px solid rgba(255,255,255,.05);padding:20px;border-radius:12px;margin-bottom:32px;text-align:left}.instruction-item{display:flex;align-items:flex-start;gap:12px;font-size:.9rem;line-height:1.4;color:#cbd5e1}.instruction-item span{font-size:1.2rem}.time-slider-panel{position:absolute;bottom:24px;left:50%;transform:translate(-50%);width:90%;max-width:700px;padding:16px 24px;display:flex;flex-direction:column;gap:12px;transition:all var(--transition-normal)}.slider-header{display:flex;justify-content:space-between;align-items:center}.time-display{font-size:1.4rem;font-weight:700;letter-spacing:-.01em;font-variant-numeric:tabular-nums;background:linear-gradient(to right,#fff,#94a3b8);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.slider-controls{display:flex;align-items:center;gap:16px;width:100%}.play-btn{background:none;border:none;color:#fff;cursor:pointer;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:50%;background:#ffffff14;transition:var(--transition-fast)}.play-btn:hover{background:#ffffff26;transform:scale(1.05)}.slider-wrapper{flex-grow:1;position:relative}input[type=range].sun-slider{-webkit-appearance:none;width:100%;height:8px;border-radius:4px;background:linear-gradient(to right,#1e293b,#3b82f6 20%,#f59e0b,#ef4444 80%,#1e1b4b);outline:none;cursor:pointer}input[type=range].sun-slider::-webkit-slider-thumb{-webkit-appearance:none;width:24px;height:24px;border-radius:50%;background:#fff;border:3px solid var(--color-warm);box-shadow:0 0 15px var(--color-warm);transition:var(--transition-fast)}input[type=range].sun-slider::-webkit-slider-thumb:hover{transform:scale(1.15)}.brand-panel{position:absolute;top:24px;left:24px;padding:10px 16px;z-index:100;display:flex;align-items:center;pointer-events:auto;border-radius:12px}.brand-logo-container{display:flex;align-items:center;gap:10px}.brand-dot{width:8px;height:8px;background:var(--color-warm);border-radius:50%;box-shadow:0 0 10px var(--color-warm);animation:pulse-glow 2s infinite ease-in-out}.brand-title{font-size:1.05rem;font-weight:800;letter-spacing:-.02em;background:linear-gradient(135deg,#fff 50%,var(--color-warm));-webkit-background-clip:text;-webkit-text-fill-color:transparent}.brand-tagline{font-size:.65rem;color:#64748b;font-weight:500;text-transform:uppercase;letter-spacing:.05em;margin-top:1px}.side-toolbar{position:absolute;top:96px;left:24px;display:flex;flex-direction:column;gap:8px;padding:6px;z-index:100}.toolbar-divider{width:24px;height:1px;background:#ffffff1a;align-self:center;margin:4px 0}.toolbar-btn{width:40px;height:40px;display:flex;align-items:center;justify-content:center;border-radius:8px;background:#ffffff0a;border:1px solid rgba(255,255,255,.06);color:#94a3b8;cursor:pointer;position:relative;transition:var(--transition-fast)}.toolbar-btn svg{transition:transform var(--transition-fast),stroke var(--transition-fast)}.toolbar-btn:hover{color:#f8fafc;background:#ffffff14;border-color:#ffffff1f}.toolbar-btn:hover svg{transform:scale(1.1)}.toolbar-btn.active{color:#0f172a;background:var(--color-cool);border-color:transparent;box-shadow:0 0 12px #0ea5e966}.toolbar-btn .tooltip{position:absolute;left:56px;background:#0f172a;padding:6px 10px;border-radius:6px;font-size:.75rem;font-weight:500;white-space:nowrap;opacity:0;pointer-events:none;transform:translate(-5px);transition:var(--transition-fast);box-shadow:0 4px 12px #00000080;border:1px solid rgba(255,255,255,.05);color:#f1f5f9}.toolbar-btn:hover .tooltip{opacity:1;transform:translate(0)}.info-panel{position:absolute;top:170px;right:24px;width:320px;padding:20px;display:flex;flex-direction:column;gap:16px;animation:slideInRight .3s cubic-bezier(.16,1,.3,1);max-height:calc(100% - 160px);overflow-y:auto}.panel-header{display:flex;justify-content:space-between;align-items:flex-start}.panel-title{font-size:1.1rem;font-weight:700;letter-spacing:-.01em}.panel-subtitle{font-size:.8rem;color:#94a3b8;margin-top:2px}.close-btn{background:none;border:none;color:#94a3b8;cursor:pointer;font-size:1.1rem;transition:var(--transition-fast)}.close-btn:hover{color:#fff}.metric-section{display:flex;flex-direction:column;gap:8px}.metric-row{display:flex;justify-content:space-between;align-items:center;font-size:.9rem}.metric-label{color:#94a3b8}.metric-val{font-weight:600}.shade-bar-container{width:100%;height:6px;background:#ffffff0f;border-radius:3px;overflow:hidden}.shade-bar-fill{height:100%;background:var(--color-cool);width:0%;transition:width .5s ease-out}.recommendation-box{background:#ffffff08;border-left:3px solid var(--color-cool);padding:12px;border-radius:0 8px 8px 0;font-size:.85rem;line-height:1.4;color:#cbd5e1}.route-panel{position:absolute;top:170px;right:24px;width:360px;padding:20px;display:flex;flex-direction:column;gap:16px;animation:slideInRight .3s cubic-bezier(.16,1,.3,1)}.route-cards-container{display:flex;flex-direction:column;gap:12px}.route-card{background:#ffffff08;border:1px solid rgba(255,255,255,.05);border-radius:12px;padding:14px;cursor:pointer;transition:var(--transition-fast)}.route-card:hover{background:#ffffff0f;border-color:#ffffff1a}.route-card.selected{border-color:var(--color-cool);background:#0ea5e90d;box-shadow:0 0 15px #0ea5e91a}.route-card-title{display:flex;justify-content:space-between;align-items:center;font-size:.95rem;font-weight:600;margin-bottom:8px}.route-stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;text-align:center}.route-stat{display:flex;flex-direction:column;gap:2px;padding:6px;background:#0003;border-radius:6px}.route-stat-val{font-size:.95rem;font-weight:700}.route-stat-label{font-size:.65rem;color:#64748b;text-transform:uppercase}.route-insight{font-size:.8rem;color:var(--color-warm);background:#f973160d;padding:10px;border-radius:8px;text-align:center;border:1px solid rgba(249,115,22,.1);line-height:1.3}.legend-panel{position:absolute;bottom:24px;left:24px;padding:14px 18px;display:flex;flex-direction:column;gap:10px}.legend-title{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:#94a3b8;display:flex;justify-content:space-between;align-items:center}.legend-items{display:flex;flex-direction:column;gap:6px}.legend-item{display:flex;align-items:center;gap:8px;font-size:.75rem;font-weight:500;color:#cbd5e1}.legend-color{width:12px;height:12px;border-radius:3px}.switch-label{display:flex;align-items:center;gap:8px;font-size:.75rem;cursor:pointer;-webkit-user-select:none;user-select:none;margin-top:4px;padding-top:6px;border-top:1px solid rgba(255,255,255,.05);color:#94a3b8}.switch-label input{display:none}.switch-toggle{width:28px;height:16px;background:#ffffff26;border-radius:99px;position:relative;transition:var(--transition-fast)}.switch-toggle:after{content:"";position:absolute;width:12px;height:12px;border-radius:50%;background:#fff;top:2px;left:2px;transition:var(--transition-fast)}.switch-label input:checked+.switch-toggle{background:var(--color-cool)}.switch-label input:checked+.switch-toggle:after{left:14px}.impact-toast{position:absolute;top:24px;left:50%;transform:translate(-50%);padding:12px 20px;background:#0ea5e9e6;border:1px solid rgba(255,255,255,.15);color:#fff;border-radius:12px;font-weight:600;font-size:.9rem;box-shadow:0 10px 25px #0ea5e94d;animation:slideDown .3s cubic-bezier(.16,1,.3,1),fadeOut .5s ease-out 3s forwards;pointer-events:none}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInRight{0%{opacity:0;transform:translate(40px)}to{opacity:1;transform:translate(0)}}@keyframes slideDown{0%{opacity:0;transform:translate(-50%,-20px)}to{opacity:1;transform:translate(-50%)}}@keyframes fadeOut{to{opacity:0}}@keyframes pulse-glow{0%,to{transform:scale(1);box-shadow:0 0 10px #0ea5e94d}50%{transform:scale(1.1);box-shadow:0 0 20px #0ea5e999}}.suggestion-marker{width:30px;height:30px;background:#facc15f2;border:2.5px solid #ffffff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1.05rem;cursor:pointer;box-shadow:0 0 15px #facc15a6;animation:pulseGlowYellow 1.6s infinite ease-in-out;z-index:150}@keyframes pulseGlowYellow{0%,to{transform:scale(1);box-shadow:0 0 12px #facc158c}50%{transform:scale(1.18);box-shadow:0 0 28px #facc15f2}}.hidden{display:none!important}.weather-card{position:absolute;top:24px;right:24px;width:360px;padding:16px 20px;display:flex;flex-direction:column;gap:10px;z-index:100;pointer-events:auto;border-radius:16px;border:1px solid rgba(255,255,255,.1);animation:slideInRight .3s cubic-bezier(.16,1,.3,1)}.weather-header{display:flex;justify-content:space-between;align-items:center}.weather-city{font-weight:700;font-size:.95rem;color:#fff;letter-spacing:-.01em}.weather-updated{font-size:.7rem;color:#22c55e;font-weight:600;display:flex;align-items:center;gap:4px}.weather-updated.offline{color:#f97316}.weather-main{display:flex;align-items:center;gap:16px}.weather-temp{font-size:2rem;font-weight:800;color:#fff;letter-spacing:-.02em}.weather-details{display:flex;flex-direction:column;gap:2px}.weather-condition{font-size:.85rem;font-weight:600;color:#cbd5e1}.weather-wind{font-size:.75rem;color:#94a3b8}.route-pin-container{position:relative;width:24px;height:32px;pointer-events:none}.route-pin-container .pin-icon{position:absolute;top:0;left:0;width:24px;height:32px;transform-origin:bottom center}.route-pin-container.dragging .pin-icon{animation:pinFloat 1.8s infinite ease-in-out}.route-pin-container.dropping .pin-icon{animation:pinDropBounce .6s cubic-bezier(.25,.8,.25,1) forwards,pinFloat 1.8s infinite ease-in-out .6s}.route-pin-container .pin-shadow{position:absolute;bottom:-2px;left:5px;width:14px;height:5px;background:#00000073;border-radius:50%;transform:scale(1)}.route-pin-container.dragging .pin-shadow{animation:pinShadowShrink 1.8s infinite ease-in-out}.route-pin-container.dropping .pin-shadow{animation:pinShadowDrop .6s cubic-bezier(.25,.8,.25,1) forwards,pinShadowShrink 1.8s infinite ease-in-out .6s}@keyframes pinDropBounce{0%{transform:translateY(-80px) scaleY(1.3) scaleX(.7);opacity:0}60%{transform:translateY(5px) scaleY(.8) scaleX(1.2);opacity:1}80%{transform:translateY(-3px) scaleY(1.05) scaleX(.95)}to{transform:translateY(0) scaleY(1) scaleX(1)}}@keyframes pinShadowDrop{0%{transform:scale(.1);opacity:0}60%{transform:scale(1.2);opacity:.6}to{transform:scale(1);opacity:.5}}@keyframes pinFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes pinShadowShrink{0%,to{transform:scale(1);opacity:.5}50%{transform:scale(.6);opacity:.25}}.route-setup-btn{width:100%;padding:12px 16px;font-size:.9rem;font-weight:500;display:flex;align-items:center;justify-content:flex-start;gap:12px;border-radius:12px;background:#ffffff0a;border:1px solid rgba(255,255,255,.08);color:#cbd5e1;cursor:pointer;transition:var(--transition-fast)}.route-setup-btn:hover:not(:disabled){background:#ffffff14;border-color:#ffffff26;color:#fff;transform:translateY(-1px)}.route-setup-btn.active-selecting{background:#0ea5e926;border-color:var(--color-cool);color:#fff;box-shadow:0 0 10px #0ea5e926}.route-setup-btn:disabled{opacity:.4;cursor:not-allowed}.route-card#card-coolest{position:relative;overflow:hidden}.route-card#card-coolest.highlight-glow{animation:cardPulseGlow 2.5s infinite ease-in-out}@keyframes cardPulseGlow{0%,to{border-color:#0ea5e933;box-shadow:0 0 5px #0ea5e90d}50%{border-color:#22c55ecc;box-shadow:0 0 15px #22c55e33}}.route-insight{opacity:0;transform:translateY(10px);transition:opacity .5s ease-out,transform .5s ease-out}.route-insight.reveal{opacity:1;transform:translateY(0)}@keyframes spin{to{transform:rotate(360deg)}}.audio-toggle-btn{position:absolute;top:24px;right:400px;width:44px;height:44px;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:100;pointer-events:auto;transition:all .25s ease;color:#94a3b8;border:1px solid rgba(255,255,255,.08)}.audio-toggle-btn:hover{color:#fff;border-color:#fff3;transform:scale(1.05)}.audio-toggle-btn.playing{color:#4ade80;border-color:#4ade8059;box-shadow:0 0 12px #4ade8040;animation:pulseAudio 2s infinite ease-in-out}.audio-toggle-btn .mute-line{transition:all .2s ease}@keyframes pulseAudio{0%,to{transform:scale(1)}50%{transform:scale(1.06)}}
