:root{--primary-color: #3498db;--secondary-color: #2ecc71;--danger-color: #e74c3c;--dark-color: #34495e;--light-color: #ecf0f1;--font-primary: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;--shadow: 0 4px 6px rgba(0, 0, 0, .1);--transition: all .3s ease;font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{margin:0;padding:0;box-sizing:border-box}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{font-family:var(--font-primary);background-color:var(--light-color);color:var(--dark-color);overflow:hidden;margin:0;display:flex;place-items:center;min-width:320px;min-height:100vh;padding:0;width:100vw;height:100vh}#app{display:flex;flex-direction:column;height:100vh;width:100vw;max-width:none;margin:0;padding:0;text-align:center}header{background-color:var(--dark-color);color:var(--light-color);padding:.8rem 2rem;box-shadow:var(--shadow);z-index:1000}h1{margin:0;font-size:1.8rem;font-weight:500;line-height:1.1}.subtitle{font-size:1rem;opacity:.8;margin-top:.2rem}main{flex:1;display:flex;flex-direction:column;position:relative;width:100%;height:calc(100vh - 60px)}#map{flex:1;width:100%;height:100%!important;z-index:1;margin-bottom:0}.controls-container{position:absolute;bottom:2rem;left:50%;transform:translate(-50%);background-color:#ffffffe6;padding:1.5rem;border-radius:12px;box-shadow:var(--shadow);z-index:1000;width:90%;max-width:600px;transition:var(--transition)}.controls-container:hover{background-color:#fffffff2;box-shadow:0 6px 12px #00000026}.control-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.year-display{font-size:1.5rem;font-weight:700;color:var(--dark-color)}.migration-value{font-size:1.5rem;font-weight:700;transition:color .3s ease}.migration-value.positive{color:var(--secondary-color);text-shadow:0 0 2px rgba(46,204,113,.2)}.migration-value.negative{color:var(--danger-color);text-shadow:0 0 2px rgba(231,76,60,.2)}.slider-container{margin-top:1rem}#year-slider{flex-grow:1;width:100%;height:10px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#d1d1d1;outline:none;border-radius:5px}#year-slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:20px;height:20px;border-radius:50%;background:var(--primary-color);cursor:pointer;transition:var(--transition)}#year-slider::-moz-range-thumb{width:20px;height:20px;border-radius:50%;background:var(--primary-color);cursor:pointer;border:none;transition:var(--transition)}#year-slider::-webkit-slider-thumb:hover{background:var(--dark-color);transform:scale(1.2)}#year-slider::-moz-range-thumb:hover{background:var(--dark-color);transform:scale(1.2)}#year-label,#value-display{font-weight:700}.legend{display:flex;justify-content:center;align-items:center;margin-top:1rem;font-size:.85rem}.legend-item{display:flex;align-items:center;margin:0 1rem}.legend-color{width:12px;height:12px;display:inline-block;margin-right:5px;border-radius:50%}.legend-color.outflow{background-color:var(--danger-color)}.legend-color.inflow{background-color:var(--secondary-color)}.updating{animation:fadeUpdate .6s ease}@keyframes fadeUpdate{0%{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.pulsing-path{animation:pulse 1.5s ease-in-out infinite alternate}@keyframes pulse{0%{opacity:.7}to{opacity:.95}}.leaflet-control{border-radius:8px!important;box-shadow:var(--shadow)!important}.leaflet-control-zoom a{background-color:#fff!important;color:var(--dark-color)!important;transition:var(--transition)}.leaflet-control-zoom a:hover{background-color:var(--primary-color)!important;color:#fff!important}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}.card{padding:2em}.read-the-docs{color:#888}.logo{height:6em;padding:1.5em;will-change:filter;transition:filter .3s}.logo:hover{filter:drop-shadow(0 0 2em #646cffaa)}.logo.vanilla:hover{filter:drop-shadow(0 0 2em #3178c6aa)}.migration-flow-line{filter:drop-shadow(0 0 6px rgba(0,0,0,.4))!important;stroke-linecap:round;stroke-linejoin:round;transition:opacity .7s ease,stroke-width .7s cubic-bezier(.34,1.56,.64,1)}@keyframes line-appear{0%{opacity:0}to{opacity:1}}.migration-label{position:absolute;bottom:1rem;left:50%;transform:translate(-50%);background-color:#ffffffd9;padding:.5rem 1rem;border-radius:8px;font-size:.9rem;box-shadow:var(--shadow);pointer-events:none}.migration-value{font-weight:700;font-size:1.8rem;display:inline-block;min-width:80px;text-align:right;transition:all .3s ease}.milestone-container{margin-top:1.5rem;padding-top:1rem;border-top:1px solid rgba(0,0,0,.1);text-align:left}.milestone-header{font-size:1.1rem;font-weight:600;color:var(--dark-color);margin-bottom:.5rem;display:flex;align-items:center;gap:8px}.milestone-header i{color:var(--primary-color)}.milestone-text{font-size:.95rem;line-height:1.5;color:var(--dark-color);transition:all .3s ease;background-color:#ffffff80;padding:.75rem;border-radius:6px;border-left:4px solid var(--primary-color);display:flex;align-items:flex-start}.milestone-icon{margin-right:10px;font-size:1.1rem;color:var(--primary-color);min-width:20px;padding-top:3px}.fa-hurricane,.fa-house-crack,.fa-triangle-exclamation{color:var(--danger-color)}.fa-chart-line,.fa-gavel,.fa-landmark{color:var(--dark-color)}.fa-plane{color:var(--primary-color)}.fa-vote-yea,.fa-shield-alt{color:#9b59b6}.fa-bullhorn{color:#f39c12}.fa-bolt,.fa-virus{color:#e67e22}@media (max-width: 768px){.controls-container{width:95%;padding:1rem}h1{font-size:1.5rem}.year-display,.migration-value{font-size:1.2rem}.milestone-text{font-size:.85rem;padding:.5rem}.milestone-header{font-size:1rem}}@media (prefers-color-scheme: light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}
