You are here

News Feeds

Shell Seeks Dismissal of Pennsylvania Pollution Lawsuit — Are Nearly $25 Million in Environmental Settlements Enough?

Royal Dutch Shell Plc .com - Thu, 10/15/2026 - 08:58

15 October 2026 | RoyalDutchShellPlc.com

Shell is asking a federal court in Pennsylvania to dismiss an environmental lawsuit concerning pollution from its enormous Monaca plastics plant, arguing that state regulators have already addressed the alleged violations through two enforcement settlements worth nearly $25 million. The latest settlement, announced only six weeks ago, included Shell’s formal acknowledgement that it exceeded emissions limits and breached other environmental requirements. The company now contends that the Clean Air Council cannot pursue overlapping claims through a federal citizen lawsuit. But the environmental organisation’s action raises a significant question: when government regulators negotiate settlements with a polluter, should that prevent affected communities and campaign groups from seeking further enforcement through the courts?

A fresh legal development in Shell’s Pennsylvania pollution controversy

On 14 October 2026, energy industry publication Marcellus Drilling News reported that Shell Chemical Appalachia had asked a federal judge in Pittsburgh to dismiss a long-running environmental lawsuit.

The motion was filed on 9 October 2026.

The proceedings concern the Shell Polymers Monaca petrochemical complex in Beaver County, Pennsylvania.

The lawsuit was brought by the Clean Air Council, an environmental organisation based in Philadelphia, in May 2023.

The organisation alleges violations of environmental requirements associated with the plant’s operations, including its emissions.

Shell disputes the continuing legal basis for the lawsuit.

Its central argument is that Pennsylvania’s Department of Environmental Protection (DEP) has already addressed the relevant violations through two formal consent agreements.

Those settlements involved substantial financial commitments, environmental improvement requirements and continued regulatory oversight.

Shell maintains that federal law prevents the environmental organisation from pursuing duplicative enforcement where the state has already acted.

The dispute is independently confirmed by legal publication Law360, which reported the dismissal application on 13 October.

Law360 describes Shell’s contention that two DEP agreements already address the claims advanced in the lawsuit.

The court has not yet determined whether Shell’s arguments justify dismissal.

That distinction is important.

Shell has requested dismissal. The lawsuit has not been dismissed merely because that request was filed.

Marcellus Drilling News +1

 

The plant at the centre of the dispute

The Shell Polymers Monaca complex is one of the most significant petrochemical investments in Pennsylvania’s recent industrial history.

Situated in Potter and Center townships near the Ohio River, the facility converts ethane extracted from natural gas into ethylene.

That ethylene is subsequently used to manufacture polyethylene, a plastic widely employed in packaging, consumer products and industrial materials.

Shell announced its final investment decision in 2016.

Construction involved thousands of workers, substantial infrastructure and extensive environmental permitting.

The complex began operating in autumn 2022.

It was promoted as a major industrial development capable of creating employment and strengthening the region’s manufacturing economy.

But the facility soon became controversial because of environmental compliance problems.

The commissioning period involved repeated emissions exceedances and other incidents reported to Pennsylvania regulators.

Environmental organisations and local residents expressed concerns about the implications for air quality and surrounding communities.

The Pennsylvania DEP maintains a dedicated Shell petrochemical complex information page, providing access to inspection reports, malfunction reports, notices of violation and enforcement records.

These official documents are particularly important because they allow readers to distinguish documented regulatory violations from broader allegations concerning the plant’s environmental impact.

Commonwealth of Pennsylvania

 

The first major settlement: May 2023

The first significant agreement was announced on 24 May 2023.

Pennsylvania’s DEP entered into a consent order and agreement with Shell Chemical Appalachia concerning air-quality violations during commissioning.

Shell formally acknowledged exceeding total emissions limitations for air contaminants.

The agreement required the company to undertake corrective measures intended to reduce future exceedances.

It also imposed financial obligations approaching $10 million.

These included a civil penalty of approximately $4.9 million and a commitment of $5 million for environmental projects benefiting Beaver County.

The local environmental mitigation fund was intended to support improvements associated with the environment, health and quality of life.

Projects funded through the agreement have included solar energy installations, improvements to public spaces and other community initiatives.

This was more than a warning or informal undertaking.

It was a formal regulatory settlement involving acknowledged violations and enforceable obligations.

The DEP’s official settlement documentation records the agreement and its terms.

Nevertheless, the settlement did not end every legal question surrounding the plant.

The Clean Air Council had already initiated its federal proceedings.

The organisation’s lawsuit would continue despite the state’s enforcement action.

That overlap is now central to Shell’s dismissal application.

Commonwealth of Pennsylvania +1

 

The second settlement: September 2026

On 4 September 2026, Pennsylvania’s DEP announced another major settlement with Shell.

This time, the amount was $15 million.

The agreement addressed violations occurring between 2023 and August 2026.

According to the department’s official announcement, Shell formally acknowledged that it had exceeded total emissions limitations and violated other environmental requirements.

The agreement included $7.5 million for a new Beaver County Environment and Community Fund.

Shell also committed to improvements designed to reduce the likelihood of future violations.

The requirements included submitting plans to improve the facility’s elevated flare system and completing upgrades to its wastewater treatment plant.

The company was also required to continue submitting monthly emissions reports, which the DEP would publish.

These obligations are important because the agreement was not simply a financial settlement.

It included operational changes, environmental mitigation measures and continuing regulatory reporting.

The DEP presented the agreement as evidence of its commitment to enforcing Pennsylvania’s environmental laws.

The authority also emphasised the state’s constitutional protection of clean air and pure water.

The primary source is the Pennsylvania DEP announcement of 4 September 2026.

Commonwealth of Pennsylvania

 

Nearly $25 million — but not all of it in penalties

The two settlements together represent substantial financial commitments.

Settlement Total financial commitment May 2023 Approximately $9.9 million September 2026 $15 million Combined Approximately $24.9 million

An important distinction must be retained.

The entire amount was not paid as regulatory fines.

The agreements include civil penalties and funds allocated to environmental and community projects.

That distinction matters because describing the settlements as $25 million in fines would misrepresent the financial arrangements.

The settlements also require corrective work beyond the monetary commitments.

Shell’s position is that these enforcement agreements address the underlying regulatory violations and provide mechanisms for preventing further non-compliance.

The Clean Air Council’s lawsuit raises the separate question of whether those state agreements legally prevent additional federal citizen enforcement.

The Clean Air Council’s lawsuit

The Clean Air Council commenced its federal proceedings in May 2023.

The action was filed in the United States District Court for the Western District of Pennsylvania.

The case is identified as:

Clean Air Council v. Shell Chemical Appalachia, LLC — Case No. 2:23-cv-00794.

According to the public case history, the organisation alleged that Shell’s new petrochemical facility had violated environmental requirements since operations began in late 2022.

The allegations concerned emissions and compliance with relevant permits.

Subsequent litigation involved disputes over Shell’s defences and discovery procedures.

The case therefore predates the September 2026 settlement by more than three years.

The environmental organisation initiated proceedings when the regulatory history of the plant was still developing.

Shell now argues that the subsequent state enforcement agreements have addressed the matters for which the organisation seeks relief.

This gives the legal dispute an unusual chronology.

The citizen lawsuit began in 2023.

A state settlement was completed that year.

Further violations were addressed through another settlement in 2026.

And Shell now seeks dismissal on the basis that the government’s enforcement measures have already dealt with the relevant matters.

The public case history is available through Law360’s case record.

Law360

 

Shell’s legal argument: The state has already acted

The central issue concerns the relationship between government enforcement and private citizen lawsuits under federal environmental legislation.

The Clean Air Act permits qualifying individuals and organisations to bring civil enforcement proceedings in specified circumstances.

Such proceedings can provide an additional mechanism for ensuring compliance with environmental requirements.

However, the legislation also contains restrictions intended to prevent inappropriate duplication of government enforcement.

The precise application of those restrictions depends upon the relevant statutory provisions, the enforcement actions involved and the relief being sought.

Shell argues that the Pennsylvania DEP has already addressed the violations through its consent agreements.

According to contemporary reporting, the company maintains that further proceedings brought by the Clean Air Council would improperly duplicate the state’s enforcement.

The company also challenges whether the organisation has demonstrated the legally required injury to its members.

This second argument concerns legal standing.

Federal courts generally require plaintiffs to demonstrate an injury sufficient to establish a justiciable dispute.

Organisations may sometimes rely upon injuries allegedly suffered by their members, provided the applicable requirements are satisfied.

Shell contends that the Clean Air Council has failed to establish the necessary basis for its claims.

These are arguments advanced in Shell’s dismissal motion.

They are not findings already accepted by the court.

The court must determine whether the relevant claims are barred, whether the requirements for standing are satisfied and whether any part of the action may continue.

Can a regulatory settlement prevent further environmental litigation?

The dispute raises an important question about how environmental enforcement works.

Government regulators possess statutory powers to investigate violations, impose penalties and require corrective action.

They also have discretion concerning how to allocate enforcement resources and negotiate settlements.

Citizen lawsuits serve a different, though sometimes overlapping, purpose.

They can allow individuals and organisations to pursue enforcement where statutory requirements permit.

That can provide an additional safeguard where communities believe environmental obligations have not been adequately enforced.

But it can also create potential overlap.

A company that has already entered an enforceable settlement may argue that another lawsuit concerning the same violations adds little practical benefit.

It may also contend that allowing multiple enforcement proceedings creates uncertainty and potentially duplicative liabilities.

Those concerns are not inherently unreasonable.

Equally, an environmental organisation may argue that a state settlement does not necessarily resolve every alleged violation or provide all the relief available under federal law.

A court must examine the actual agreements and claims.

A settlement covering particular violations does not automatically establish that every environmental claim involving the facility has been extinguished.

Conversely, the existence of a citizen lawsuit does not automatically entitle an organisation to pursue claims already subject to qualifying government enforcement.

The legal answer depends upon the statutory framework and specific facts.

This is the question at the heart of the Pennsylvania proceedings.

COMMENTARY: When Has a Polluter Done Enough?

Shell’s latest legal argument raises a broader issue extending beyond the Monaca complex.

When a company acknowledges environmental violations, pays substantial penalties and agrees to operational improvements, how should the legal system determine whether further enforcement is justified?

There are compelling considerations on both sides.

For regulators, settlements can provide practical remedies without prolonged litigation.

They may secure corrective work, monitoring commitments and financial resources for affected communities.

For companies, the ability to resolve identified violations through enforceable agreements provides a degree of legal and commercial certainty.

Without some limits on overlapping enforcement, companies could face repeated proceedings over the same conduct.

But environmental organisations have legitimate reasons to scrutinise negotiated settlements.

A financial agreement does not necessarily eliminate the possibility of future violations.

Nor does the payment of penalties automatically establish that every environmental consequence has been adequately addressed.

The public interest requires effective compliance, not simply financial payments following breaches.

The Monaca dispute illustrates that tension.

Shell has acknowledged exceeding emissions limits.

Pennsylvania regulators have imposed substantial financial and operational requirements.

Those facts are established.

But the Clean Air Council is pursuing its own legal action.

The court must decide whether that action remains legally permissible.

Why the September settlement matters

The second agreement is especially significant because it was announced only weeks before Shell sought dismissal.

It addressed violations extending through August 2026.

Shell can therefore point to relatively recent regulatory action covering a substantial part of the facility’s operating history.

The company’s argument is stronger than it would be if the only relevant settlement concerned violations during the original commissioning period.

But the existence of the second agreement also demonstrates that environmental compliance concerns did not end with the first settlement in 2023.

Further violations required another substantial regulatory response.

That is an important historical fact.

It does not prove that Shell is currently violating its permits.

Nor does it establish that the Clean Air Council’s lawsuit must succeed.

But it shows why the facility has remained under close environmental scrutiny.

The importance of the community funds

Another aspect of the settlements deserves attention.

The agreements include significant funding for environmental and community improvements in Beaver County.

The first arrangement created a $5 million mitigation fund.

The second provides another $7.5 million for community environmental purposes.

These commitments can produce tangible benefits.

Local residents may benefit from improved public facilities, environmental projects and investments addressing community needs.

The DEP has already reported the allocation of funds from the original settlement to local projects.

That is relevant when assessing whether government enforcement has produced meaningful outcomes.

But community funding is not identical to preventing future emissions violations.

A successful environmental enforcement programme must achieve both meaningful remediation and sustained compliance.

The ultimate test of Shell’s performance will be whether the facility operates within its legal limits and implements the required improvements.

Why shareholders should pay attention

For Shell shareholders, the dispute involves more than the financial value of the settlements.

The Monaca petrochemical complex represents a substantial industrial investment.

Repeated regulatory violations, litigation and operational improvement requirements create potential costs and uncertainty.

Those costs may include penalties, additional equipment, engineering work, monitoring requirements and legal expenses.

They may also affect public confidence in the company’s operations.

The legal proceedings introduce an additional question.

If Shell succeeds in dismissing the Clean Air Council lawsuit, it may reduce one category of litigation exposure.

But that would not eliminate the company’s continuing obligation to comply with environmental laws and permits.

Nor would dismissal retrospectively erase the violations acknowledged in the DEP settlements.

That distinction is essential.

Winning a procedural or statutory defence against a citizen lawsuit is not the same as proving that no environmental violations occurred.

Equally, the existence of acknowledged violations does not automatically establish that every subsequent lawsuit is legally justified.

Both propositions should be recognised.

Conclusion: Nearly $25 Million Later, the Court Must Decide

Shell’s Monaca petrochemical complex has now been the subject of two substantial Pennsylvania environmental enforcement settlements.

The first, in May 2023, involved approximately $9.9 million in financial commitments.

The second, announced in September 2026, added another $15 million.

Shell formally acknowledged emissions exceedances and other environmental violations.

It also agreed to undertake corrective measures and continue reporting to regulators.

Those are established facts.

The company now argues that these enforcement agreements prevent the Clean Air Council from pursuing overlapping claims in federal court.

The environmental organisation’s lawsuit began in May 2023 and remains subject to judicial proceedings.

The court has not yet ruled on Shell’s latest dismissal application.

The significance of the case extends beyond the financial amounts involved.

It concerns the relationship between public environmental regulators and private enforcement under federal law.

Government settlements can deliver penalties, corrective measures and community funding.

Citizen lawsuits can provide additional accountability where legally permitted.

But the law must establish when those mechanisms may operate together and when further proceedings are barred.

The question is not whether Shell has already paid substantial sums. It has.

The question is whether those payments and the accompanying enforcement agreements legally and adequately address the claims now before the federal court.

That decision belongs to the judiciary.

For Shell, the outcome could bring an important legal dispute closer to an end.

For environmental organisations, it may help clarify the boundaries of citizen enforcement where regulators have already negotiated substantial settlements.

And for residents near the Monaca complex, the most important measure of success will remain the same:

Whether the plant operates safely, complies with its environmental obligations and avoids further breaches.

Principal Sources

1. Marcellus Drilling News — 14 October 2026

Shell Asks Court to Toss Big Green Cracker Suit: DEP Already Acted

Industry reporting identifying Shell’s 9 October dismissal motion, the reliance upon Pennsylvania’s enforcement settlements and its challenge to the Clean Air Council’s standing.

2. Law360 — Matthew Santoni, 13 October 2026

Shell Says Enviro Group’s Suit Retreads Pa. Settlements

Independent legal reporting confirming Shell’s application to dismiss the lawsuit and its reliance upon the two DEP consent agreements.

3. Pennsylvania Department of Environmental Protection — 4 September 2026

Shapiro Administration Secures $15 Million Settlement from Shell, Including $7.5 Million for Beaver County

The principal authenticated government source for the latest settlement, acknowledged violations, financial commitments and operational requirements.

4. Pennsylvania DEP — Shell Petrochemical Complex

Official Facility Information and Enforcement Records

Includes regulatory documents, the May 2023 consent agreement and other compliance material.

5. Pennsylvania DEP — Environmental Mitigation Community Fund

Community Fund Information and May 2023 Settlement Documents

Official information concerning the $5 million community fund created under the earlier enforcement agreement.

6. Law360 — Federal Court Proceedings

Clean Air Council v. Shell Chemical Appalachia, LLC — Case No. 2:23-cv-00794

Public litigation history identifying the parties, court and earlier developments in the case.

7. Pennsylvania DEP — Facility Background

Shell Chemical Appalachia Petrochemicals Complex

Official information about the plant, its operations and regulatory oversight.

Editorial and Legal Disclaimer

This article distinguishes authenticated government enforcement records, allegations made in litigation, Shell’s legal arguments, independent journalism and editorial commentary.

Shell’s acknowledgement of emissions exceedances and other environmental violations in the DEP consent agreements is an established matter of public record.

The Clean Air Council’s additional allegations remain subject to legal proceedings.

Shell’s assertion that the DEP settlements bar further citizen enforcement is a disputed legal position, not a ruling already made by the court.

The federal dismissal motion and the underlying consent agreements have not been independently examined in their entirety for this article. Details of Shell’s current arguments are attributed to the contemporary legal reporting cited above.

No conclusion is drawn that Shell has committed additional violations beyond those established in the cited regulatory documents, or that the Clean Air Council has proved its disputed claims.

The website’s general disclaimer also applies.

Shell Seeks Dismissal of Pennsylvania Pollution Lawsuit — Are Nearly $25 Million in Environmental Settlements Enough? was first posted on October 15, 2026 at 4:58 pm.
©2018 "Royal Dutch Shell Plc .com". Use of this feed is for personal non-commercial use only. If you are not reading this article in your feed reader, then the site is guilty of copyright infringement. Please contact me at john@shellnews.net

Solar imports from India, Indonesia, Laos injured US manufacturers: ITC

Utility Dive - Thu, 10/15/2026 - 08:52

The decision clears the way for the Department of Commerce to finalize anti-dumping and countervailing duty orders on crystalline silicon photovoltaic cells from the three countries.

Shell Shares in the Watchdog’s Boardroom — Questions Grow Over Independence of UK’s North Sea Oil Regulator

Royal Dutch Shell Plc .com - Thu, 10/15/2026 - 08:45

15 October 2026 | RoyalDutchShellPlc.com

Who watches the watchdog when some of its directors own shares in the companies it regulates? An investigation published today by Scottish investigative journalism organisation The Ferret reveals that two recently appointed directors of the North Sea Transition Authority hold shares in Shell and BP worth more than £77,000 combined. One is a former Shell finance executive who remains involved in the company’s UK pension arrangements. The disclosures have prompted criticism from environmental campaigners and an academic expert in regulation. The authority insists that its directors’ interests are properly declared and do not compromise independent judgment. But with Shell-linked developments including Jackdaw and Rosebank awaiting fresh regulatory decisions, the investigation raises important questions about the appearance — as well as the reality — of regulatory independence.

The investigation that raises uncomfortable questions

On 15 October 2026, Scottish investigative journalism organisation The Ferret published an investigation by journalist Paul Dobson examining the financial interests and previous industry connections of directors at the North Sea Transition Authority (NSTA).

The NSTA is the UK body responsible for licensing and regulating offshore oil and gas activities.

Its responsibilities include decisions affecting petroleum exploration and production, the stewardship of existing fields, decommissioning and enforcement of industry obligations.

It also plays an increasingly important role in the development of offshore carbon storage and aspects of the energy transition.

The organisation must therefore balance substantial commercial, environmental and public-interest considerations.

That makes the independence of its decision-makers particularly important.

The Ferret’s investigation identifies financial interests declared in the NSTA’s latest annual report.

The relevant disclosures are publicly available.

They are not anonymous allegations or confidential information obtained through a leak.

They appear in an official document presented to Parliament.

The central question is whether disclosure and recusal arrangements provide sufficient safeguards when regulators hold financial interests in companies operating within the industries they oversee.

A former Shell executive with £58,510 in Shell shares

One of the directors identified is Ian Chisholm.

Chisholm joined the NSTA board as a non-executive director on 7 April 2026.

He also became chair of its Audit and Risk Committee.

According to the regulator’s annual report, Chisholm declared ownership of 1,633 ordinary shares in Shell.

The holding was valued at £58,510.

His declaration was made on 16 March 2026.

Chisholm previously held several finance positions within Shell.

His continuing connections include a role with Shell Pensions Trust Limited, where the NSTA’s annual report lists him as a member of the Investment and Funding Committee and chair of its ESG Forum.

That relationship is distinct from his ownership of Shell shares.

But it demonstrates that his association with Shell extends beyond previous employment.

For a director involved in overseeing a regulator’s audit and risk arrangements, these connections raise questions worth examining.

A financial interest in a company does not automatically prevent someone from exercising independent judgment.

Nor does previous employment establish improper influence.

However, a regulatory body must consider whether such interests create actual, potential or perceived conflicts.

The distinction is especially relevant when the company concerned operates major projects subject to decisions within the regulator’s remit.

The NSTA has determined that Chisholm’s declared shareholding does not impair his independent judgment.

Critics question whether that assessment is sufficient to maintain public confidence.

Source: NSTA Annual Report and Accounts 2025–26, Directors’ Financial Interests, page 32

A second director holds BP shares

The Ferret also identified the interests of Rebecca Wiles, another recently appointed non-executive director.

Wiles joined the NSTA board on 1 May 2026.

She previously worked for BP for more than 30 years.

The regulator’s annual report records that she held 3,348 BP ordinary shares, valued at £19,150 on 1 May 2026.

Wiles is also a non-executive director of Tullow Oil.

Tullow has interests connected with the oil and gas industry, including decommissioning activities in the North Sea.

As with Chisholm, the declared shareholding is a matter of public record.

There is no evidence in the material examined that Wiles concealed the interest.

Nor is there evidence that she improperly influenced a regulatory decision involving BP or Tullow.

The concern is more general.

Should someone who helps oversee a regulator be permitted to retain a financial interest in a company whose commercial activities fall within the regulatory sector?

The NSTA believes its safeguards are adequate.

Campaigners and regulatory specialists have raised objections.

The disagreement goes to the heart of how independence should be understood.

Other former oil executives on the board

The investigation extends beyond the two disclosed shareholdings.

Several other senior NSTA figures have substantial professional backgrounds in the energy industry.

Stuart Payne, the authority’s chief executive, previously held positions with Shell and Dana Petroleum.

Mitch Flegg, appointed as a non-executive director in May 2026, previously served as chief executive of Serica Energy.

He also served on the board of Offshore Energies UK, the trade association representing the offshore energy industry.

Malcolm Brown, another NSTA board member, spent approximately four decades working in the oil and gas industry and held senior positions at BG Group.

These appointments illustrate the extent to which the regulator draws upon experienced industry personnel.

That is not necessarily improper.

Regulating offshore petroleum production requires substantial knowledge of engineering, geology, finance, safety systems, commercial contracts and the management of complex industrial operations.

Experienced industry professionals may possess expertise that would be difficult to obtain elsewhere.

But the concentration of previous industry relationships can also create questions about institutional culture.

A regulator staffed by people who have spent much of their careers working within an industry must demonstrate that it can challenge that industry effectively.

Professional familiarity can help officials understand complex businesses.

It can also create the appearance of excessive closeness.

The issue is not whether former Shell or BP executives should automatically be excluded from public service.

It is whether the regulator’s governance arrangements provide adequate safeguards against conflicts and maintain public confidence.

The official disclosures confirm the figures

The NSTA’s 2025–26 Annual Report and Accounts provides independent primary-source confirmation of the disclosed financial interests.

The relevant section records the holdings of Chisholm and Wiles.

It also identifies other directors’ declared investments.

The report explains that directors must disclose interests upon appointment and annually thereafter.

They must also declare relevant conflicts at the beginning of board meetings.

Where a conflict arises in relation to an agenda item, the director concerned is not permitted to participate in the discussion.

The NSTA’s board states that it does not regard the declared holdings as sufficiently significant to impair independent judgment.

It also maintains that its regulatory powers could not materially influence the value of the shares concerned.

These are important safeguards and explanations.

They should not be omitted from any fair account of the controversy.

But the existence of disclosure procedures does not necessarily resolve every question about perceived conflicts.

There is a difference between complying with an internal governance policy and satisfying every reasonable expectation of public impartiality.

That distinction explains the criticism now being directed at the regulator.

Why Jackdaw and Rosebank make this particularly sensitive

The timing of The Ferret’s investigation is important.

Two major North Sea projects with Shell connections are awaiting new regulatory decisions.

They are Jackdaw and Rosebank.

Jackdaw is a gas and condensate development approximately 250 kilometres east of Aberdeen.

Shell originally developed the project, which is now associated with Adura, the joint venture combining Shell and Equinor’s UK offshore oil and gas interests.

Rosebank is a major oil and gas development west of Shetland.

It was originally associated principally with Equinor and Ithaca Energy and is now also within Adura’s portfolio.

Both projects received regulatory consent under the previous Conservative government.

Jackdaw was approved in 2022.

Rosebank received development consent in 2023.

Both subsequently became the subjects of legal challenges concerning the adequacy of their environmental assessments.

The NSTA was involved in the original consenting process.

That does not mean its board members personally approved the applications.

Regulatory decisions are made through established statutory and administrative procedures.

The distinction between institutional responsibility and an individual director’s participation is essential.

Nevertheless, the NSTA has an important role in decisions affecting these projects.

That makes questions about its independence particularly relevant.

The courts intervene

In January 2025, the Court of Session in Edinburgh ruled on challenges concerning the original consents for Jackdaw and Rosebank.

The proceedings followed the UK Supreme Court’s landmark 2024 judgment in R (Finch) v Surrey County Council.

That judgment established that environmental impact assessment must consider relevant downstream greenhouse gas emissions arising from the eventual use of extracted petroleum.

The earlier assessments for Jackdaw and Rosebank had not adequately addressed those emissions.

The Scottish court consequently ruled that the consents could not stand in their existing form.

The developers were allowed to continue certain work while fresh environmental assessment and consenting procedures were undertaken.

The judgments did not establish that the projects could never lawfully proceed.

They required the relevant environmental impacts to be reconsidered under the applicable legal framework.

Further environmental submissions were lodged in July 2026.

New decisions remain necessary.

The developers maintain that both projects can contribute to UK energy security and economic activity.

Environmental organisations argue that their climate implications and compatibility with national energy policy require careful scrutiny.

These competing positions form the background to the present governance controversy.

Project sources: Adura — Jackdaw and Adura — Rosebank.

Does holding Shell shares compromise regulatory independence?

The Ferret quotes Tessa Khan, executive director of environmental campaign organisation Uplift.

Khan argues that directors who hold financial interests in companies subject to regulation create unacceptable conflicts.

She questions whether the NSTA can adequately prioritise the public interest while directors retain investments in the industry.

Uplift was involved in the legal challenges concerning North Sea developments.

Its position is therefore informed by direct participation in the controversy surrounding offshore oil and gas approvals.

But its statements remain arguments made by a campaigning organisation.

They are not judicial findings of misconduct by NSTA directors.

The distinction is important.

There is no evidence in The Ferret’s investigation that Chisholm or Wiles personally intervened improperly in the Jackdaw or Rosebank decisions.

Indeed, both joined the board in 2026, after the original approvals issued in 2022 and 2023.

They cannot reasonably be held responsible for decisions made before their appointment.

The governance question is therefore prospective as well as institutional.

What safeguards will apply when current board members hold financial interests connected with companies whose projects may require further regulatory consideration?

And how can the public establish that those safeguards are being applied consistently?

An academic warns about perceived regulatory capture

The Ferret also interviewed Andrew Watterson, an academic specialising in regulation at the University of Stirling.

Watterson expressed concern about the NSTA’s close professional and financial connections with the oil and gas industry.

He suggested that the public might perceive the organisation as having been captured by the sector it regulates.

He also argued that directors should divest themselves of oil, gas and related industry shares to reinforce confidence in impartial decision-making.

The term regulatory capture has a specific meaning in discussions of public administration and governance.

It generally refers to circumstances in which a regulator comes to serve the interests of the regulated industry rather than the wider public interest.

Capture may arise through institutional relationships, information dependence, career incentives or other mechanisms.

However, an appearance of closeness is not proof of capture.

Establishing actual regulatory capture would require evidence concerning decisions, conduct, governance practices and the exercise of regulatory authority.

The disclosed shareholdings and previous employment connections justify examination.

They do not, by themselves, establish that the NSTA has been captured.

That distinction should remain central to the discussion.

The regulator’s defence: Industry expertise is essential

The NSTA has responded to the criticism.

It argues that the oil and gas industry is highly specialised and that direct experience within the sector is valuable when carrying out complex regulatory functions.

The authority states that its board includes professionals from a range of backgrounds.

It also points to experience gained in other industries and regulatory organisations.

The board is chaired by Liz Ditchburn, whose background includes senior public-sector responsibilities.

According to the NSTA, its conflict-of-interest procedures require directors to declare relevant interests and withdraw from affected discussions.

It maintains that the disclosed shareholdings do not materially compromise independent judgment.

The regulator also argues that none of its powers could materially affect the value of the Shell and BP shares identified.

This is an important consideration.

Shell and BP are large multinational companies with operations across numerous markets.

Their share prices are influenced by global oil and gas prices, financial results, investment decisions and wider economic conditions.

It would be difficult to establish that a particular NSTA decision would materially alter the value of either company’s shares.

But critics argue that materiality in financial terms is not the only consideration.

A conflict-of-interest framework may also need to address the appearance of divided loyalties.

That is the point at which the two sides disagree.

The NSTA emphasises disclosure, proportionate assessment and recusal.

Its critics favour stricter limits on financial holdings.

Neither position should be misrepresented.

The wider issue: Can a regulator be too close to its industry?

The Ferret previously examined financial and professional connections involving the North Sea regulator.

In 2021, when the organisation was still known as the Oil and Gas Authority, the publication reported that three directors held shares linked to the fossil fuel industry worth more than £225,000.

The latest investigation therefore does not concern an entirely new governance question.

It forms part of a continuing debate about the relationship between the regulator and the sector it oversees.

The organisation was established following the Wood Review, which examined how the UK could maximise economic recovery from declining North Sea resources.

Its responsibilities have subsequently expanded to include supporting the energy transition and regulating additional activities.

This creates a complex institutional position.

The authority must oversee an industry that remains economically important.

It must seek compliance with applicable laws and standards.

It must enforce obligations concerning decommissioning and other activities.

And it must operate within national energy and climate policy.

Some of those objectives can create competing pressures.

The NSTA’s official annual report acknowledges both the importance of continued energy production and the need to accelerate emissions reductions.

The board’s composition and governance arrangements must be considered against that broader mandate.

Evidence that the regulator does take enforcement action

A fair assessment must also recognise that the NSTA has used its enforcement powers against industry operators.

In April 2026, the regulator announced its largest financial penalty to date against EnQuest.

The penalty concerned failures associated with decommissioning inactive wells.

The case involved 33 wells that had not been decommissioned within the required arrangements.

This action illustrates that the NSTA does not simply approve industry requests or refrain from imposing penalties.

It has statutory responsibilities extending beyond licensing.

It also investigates non-compliance and enforces regulatory obligations.

That enforcement record is relevant when assessing broad allegations that the authority is unwilling to challenge the industry.

But individual enforcement actions do not automatically resolve governance concerns about financial interests.

The regulator must demonstrate impartiality across its responsibilities.

The existence of both industry expertise and enforcement activity forms part of the evidence.

So do the declared financial interests.

A balanced assessment requires consideration of all three.

COMMENTARY: Independence Must Be Demonstrated, Not Merely Asserted

The most revealing feature of The Ferret’s investigation is that the central facts are not disputed.

Ian Chisholm owns Shell shares.

Rebecca Wiles owns BP shares.

Both holdings were disclosed.

Both individuals have significant professional experience within the oil and gas industry.

And both sit on the board of an organisation responsible for regulating that industry.

The dispute concerns what those facts mean.

The NSTA believes the financial interests are insufficiently significant to impair independent judgment.

Its critics believe the holdings create an unacceptable appearance of conflict.

There is no need to allege corruption to recognise the legitimacy of this question.

Public confidence in regulation depends upon more than the absence of proven wrongdoing.

It also depends upon transparent procedures and credible safeguards.

The NSTA has disclosure and recusal arrangements.

But the existence of those policies raises further practical questions.

How frequently are relevant conflicts declared?

How are potential conflicts assessed?

Who determines whether a director must withdraw from a discussion?

Are those decisions independently reviewed?

And how much information can be published without compromising legitimate confidentiality?

These are ordinary governance questions.

They apply to financial regulators, environmental authorities, competition bodies and public institutions more generally.

The North Sea regulator should not be treated as an exception.

Shell’s perspective also matters

Shell is entitled to seek regulatory decisions concerning its lawful commercial activities.

The company is also entitled to benefit from the experience and expertise of former employees who subsequently enter public service.

There is nothing inherently improper about a former Shell executive becoming a regulator.

Former industry professionals can bring valuable knowledge.

But individuals moving into regulatory positions must operate under public-interest obligations distinct from those associated with their previous employment.

Those obligations include managing conflicts and maintaining institutional independence.

The same principle applies to former BP executives and personnel from other energy companies.

For Shell, the issue is not whether it has been shown to influence NSTA decisions improperly.

No such finding is established by the evidence examined here.

The issue is whether the regulator’s governance arrangements are sufficiently transparent to provide confidence in decisions affecting Shell and other major operators.

That distinction is particularly important where large infrastructure investments, environmental assessments and legal challenges are involved.

Jackdaw, Rosebank and public confidence

The pending decisions concerning Jackdaw and Rosebank make this an especially sensitive time.

The projects have substantial commercial significance.

Their developers argue that they can contribute to domestic energy security, employment and investment.

Environmental organisations challenge their climate implications and the adequacy of previous approvals.

The courts have already required fresh consideration of downstream emissions.

Against that background, the regulator’s independence must be demonstrable.

Any future approval or refusal should rest upon the relevant evidence, statutory requirements and transparent decision-making procedures.

The existence of a director’s Shell shareholding does not mean a project will receive preferential treatment.

Nor does a previous career at Shell establish institutional bias.

But where questions arise concerning conflicts, the public should be able to understand how those questions were resolved.

That is not an unreasonable expectation.

It is an essential part of regulatory accountability.

A possible reform worth examining

There are several ways public bodies can manage financial conflicts.

One is mandatory disclosure.

Another is recusal from affected decisions.

A stricter approach may involve limits upon directly held shares in companies subject to regulation.

Some organisations also use independently managed investment arrangements or restrictions on certain forms of financial interest.

Each approach has advantages and limitations.

A complete prohibition on all investments connected with a broad industrial sector could make recruitment more difficult.

It might also impose disproportionate restrictions on individuals holding diversified investments or pension interests.

Conversely, relying solely upon self-disclosure may be insufficient where financial interests are closely connected with regulatory responsibilities.

The appropriate framework requires consideration of the regulator’s powers, the nature of the interests and the practical ability to manage conflicts.

The Ferret’s investigation provides an opportunity to examine whether the NSTA’s existing arrangements meet that standard.

Why this belongs in the independent Shell archive

The historical relationship between Shell and public institutions has long been a subject of interest within this archive.

The documentary record includes disputes over environmental regulation, legal proceedings, government relations and corporate influence.

Those histories warrant careful treatment.

It would be inappropriate to use earlier controversies to imply that the present NSTA directors have acted improperly.

The evidence does not support such a conclusion.

But the historical record does reinforce the value of transparency.

Public confidence is strengthened when relevant financial interests, professional relationships, decisions and safeguards can be examined independently.

The Ferret’s investigation has provided an important public service by drawing attention to disclosures contained in the regulator’s own accounts.

The NSTA has responded and explained its position.

Readers can examine the evidence and assess the competing arguments.

That is how independent scrutiny should operate.

Conclusion: The Question Is Not Whether Shell Controls the Watchdog

The disclosures concerning Ian Chisholm and Rebecca Wiles are significant because they concern the governance of an important public regulator.

They establish that members of the NSTA board hold direct financial interests in major oil and gas companies.

They also establish continuing or previous professional connections with the industry.

The NSTA maintains that these interests are properly managed.

Campaigners and regulatory specialists question whether the safeguards are sufficiently robust.

No evidence examined for this article establishes that either director has improperly influenced a regulatory decision.

Nor has it been shown that the original Jackdaw and Rosebank consents were affected by their appointments.

Both directors joined the NSTA after those original decisions.

Nevertheless, the issue deserves scrutiny.

A regulator’s credibility depends upon its ability to demonstrate independence, particularly when making decisions involving powerful companies and substantial commercial interests.

Disclosure is important.

Recusal arrangements are important.

Industry knowledge is valuable.

But transparency concerning how conflicts are managed is equally necessary.

The real question is not whether Shell or BP secretly controls the North Sea regulator. The available evidence establishes no such thing.

The question is whether a regulator can maintain sufficient public confidence when some of its directors hold personal investments in companies operating within the industry it oversees.

That is a legitimate issue for Parliament, the regulator, the industry and the public.

And it deserves to be answered through evidence rather than assumption.

Principal Sources

1. The Ferret — Paul Dobson, 15 October 2026

Oil Watchdog Faces ‘Conflict of Interests’ Row Over Directors’ Shell and BP Shares

The original investigative report establishing the controversy, identifying the financial interests and recording responses from campaigners, academic experts and the NSTA.

Full credit for the original investigation belongs to Paul Dobson and The Ferret.

2. North Sea Transition Authority — Annual Report and Accounts 2025–26

Read the official NSTA annual report (PDF)

Primary-source confirmation of board appointments, declared financial holdings, outside positions and conflict-of-interest arrangements. The relevant disclosures appear in the Corporate Governance Report.

3. UK Government — 7 July 2026

NSTA Annual Report and Accounts 2025–26: Parliamentary Publication

Official government publication of the regulator’s annual accounts.

4. North Sea Transition Authority — Board of Directors and Leadership Team

NSTA Leadership and Governance

Official biographical information concerning the authority’s directors and senior executives.

5. Adura — Jackdaw Development

Jackdaw: Project Details and Environmental Documentation

Company information concerning the development, environmental assessments and fresh consenting process.

6. Adura — Rosebank Development

Rosebank: Project Details and Environmental Documentation

Company information concerning Rosebank and the environmental consultation material.

7. UK Parliament — House of Commons Library

Research on North Sea Oil and Gas Developments

Parliamentary research concerning North Sea developments, licensing, environmental assessment and the consequences of the Finch judgment.

8. UK Supreme Court — 2024

R (Finch) v Surrey County Council, [2024] UKSC 20

Judicial authority concerning consideration of downstream greenhouse gas emissions in environmental impact assessment.

Editorial and Legal Disclaimer

This article is based upon an investigation published by The Ferret, authenticated NSTA disclosures, company statements, official project records and judicial material.

The financial holdings and previous employment relationships discussed are documented facts.

Statements concerning conflicts of interest, regulatory independence and potential industry influence are attributed to the organisations or individuals making them.

No finding of corruption, improper influence, undisclosed conflict or unlawful conduct by Ian Chisholm, Rebecca Wiles, Shell, BP or the NSTA is alleged or established in the material examined.

The original Jackdaw and Rosebank consents predated the appointments of the two directors whose financial holdings form the principal subject of The Ferret’s investigation.

Editorial commentary is identified separately from the documented facts.

The website’s general disclaimer also applies.

Tighten the article’s repeated analysisAdd a concise fact summary table Shell Shares in the Watchdog’s Boardroom — Questions Grow Over Independence of UK’s North Sea Oil Regulator was first posted on October 15, 2026 at 4:45 pm.
©2018 "Royal Dutch Shell Plc .com". Use of this feed is for personal non-commercial use only. If you are not reading this article in your feed reader, then the site is guilty of copyright infringement. Please contact me at john@shellnews.net

Shell Faces Climate Disaster Claims on Two Continents — From Brazil’s Deadly Floods to the Philippines’ Devastating Typhoon

Royal Dutch Shell Plc .com - Thu, 10/15/2026 - 08:20

15 October 2026 | RoyalDutchShellPlc.com

A remarkable new chapter in climate litigation is unfolding on opposite sides of the world. In Brazil, federal prosecutors and an environmental organisation are seeking approximately $108 million from a Shell subsidiary over catastrophic floods that killed nearly 200 people in 2024. In Britain, more than 100 survivors of a devastating Philippine typhoon are pursuing Shell for losses suffered in December 2021. The cases raise a question with potentially enormous consequences for the fossil fuel industry: can a major oil and gas producer be made legally responsible for a measurable proportion of the damage caused by an individual climate-related disaster?

Two disasters, two continents, one corporate defendant

On 15 October 2026, Agence France-Presse published an investigation examining the emerging lawsuits against Shell in Brazil and the Philippines.

The report, republished by Barron’s, highlights a developing legal strategy that differs substantially from traditional environmental litigation.

Historically, many major cases involving Shell have concerned identifiable pollution incidents, allegations of environmental damage near company facilities, or the conduct of particular subsidiaries.

These newer proceedings present a different challenge.

The plaintiffs allege that emissions associated with Shell’s worldwide fossil fuel business contributed to the warming of the planet, thereby increasing the severity or likelihood of particular extreme-weather events.

They argue that Shell should compensate victims for an appropriate share of the resulting harm.

The events occurred thousands of miles apart.

The legal systems are different.

The claimants suffered different losses.

But both cases seek to translate scientific evidence about climate change into legal responsibility for damage suffered by identifiable communities.

If the claimants succeed, the consequences could extend well beyond Shell.

BRAZIL: The $108 million lawsuit

On 9 October 2026, Brazilian federal prosecutors and the environmental organisation Instituto Preservar filed proceedings against Shell’s Brazilian subsidiary.

The claim concerns the devastating floods that struck Rio Grande do Sul in April and May 2024.

The disaster caused widespread destruction across southern Brazil.

Nearly 200 people died, approximately half a million were displaced, and entire communities suffered catastrophic damage.

The claimants seek compensation equivalent to approximately $108 million.

We reported the development in our article published on 10 October:

Shell Faces Historic $108 Million Climate Lawsuit in Brazil Over Floods That Killed Nearly 200 People

The new AFP investigation provides additional detail about the legal strategy.

Thales Miola, a lawyer representing Instituto Preservar, explained that the claimants selected Shell because of its size, historical emissions and established contribution to global fossil fuel production.

Shell is not Brazil’s largest oil company.

That distinction belongs to Petrobras.

But the plaintiffs argue that Shell’s historical contribution to global greenhouse gas emissions makes it an appropriate defendant.

The case could provide an important test of whether Brazilian law permits damages to be recovered from an individual fossil fuel producer for its alleged contribution to a climate-amplified disaster.

No court has yet established Shell’s liability in these proceedings.

The scientific calculation behind the Brazilian claim

The most interesting aspect of the Brazilian proceedings is the attempted use of climate-attribution science to calculate a company’s potential financial responsibility.

AFP reports that the claimants rely upon scientific research estimating that human-caused climate change increased the intensity of the rainfall associated with the 2024 disaster.

A peer-reviewed study published in npj Natural Hazards estimated that warming increased the rainfall intensity by approximately 12 per cent, although the study identified substantial uncertainty around the estimate.

An earlier World Weather Attribution investigation concluded that human-induced climate change made comparable extreme rainfall more than twice as likely and increased its intensity by approximately 6–9 per cent.

The studies used different methods and statistical assessments.

They should not be presented as producing identical estimates.

The Brazilian plaintiffs have adopted the approximately 12 per cent figure as part of their legal argument.

They also rely upon estimates from the Carbon Majors database attributing approximately 2.02 per cent of historical industrial carbon dioxide emissions to Shell.

The claimants seek to connect those two figures.

Their proposed approach is to calculate Shell’s share of the additional harm associated with climate change, using its estimated contribution to historical emissions.

In simplified terms, the argument involves applying Shell’s approximately two per cent historical emissions share to the climate-related portion of the disaster’s damage.

That is the plaintiffs’ proposed attribution framework.

It is not an accepted judicial formula for calculating damages.

A court would need to consider whether the scientific evidence, relevant Brazilian law and other evidence of causation justify the requested compensation.

The difference is fundamental.

Scientific evidence that climate change intensified rainfall does not automatically establish that an individual company is legally liable for a specified percentage of flood damage.

The plaintiffs must establish that legal connection.

Shell would be entitled to challenge both the legal reasoning and the claimed amount.

THE PHILIPPINES: Survivors of Typhoon Odette take Shell to court

The Philippine proceedings are particularly significant because they concern identifiable individuals seeking compensation for deaths, injuries and destruction of property.

On 16 December 2021, Super Typhoon Rai — known locally as Odette — struck the Philippines.

The storm devastated communities across the central and southern regions of the country.

More than 400 people died.

Millions were affected, and large numbers of homes and livelihoods were destroyed.

For those who survived, the consequences were often life-changing.

Families lost relatives.

Homes disappeared.

Fishing boats, farms and businesses were destroyed.

Communities faced the difficult task of rebuilding.

Four years later, a group of survivors decided to pursue Shell through the English legal system.

On 23 October 2025, international law firm Hausfeld announced that it had sent a formal Letter Before Action to Shell plc and The Shell Transport and Trading Company Limited.

At that stage, Hausfeld represented 67 individuals.

The letter outlined intended legal proceedings concerning losses allegedly intensified by climate change.

The firm identified claims involving property destruction, personal injuries, bereavement, psychological harm and lost livelihoods.

It also raised alleged violations of environmental and constitutional rights under Philippine law.

The law firm’s original announcement is available here:

Hausfeld: Shell Hit With Legal Action Over Climate Damages by Typhoon Odette Survivors

From a legal warning to High Court proceedings

The Philippine case subsequently advanced beyond its initial pre-action stage.

In December 2025, the claimants filed proceedings in the High Court in London.

Contemporaneous reporting indicated that the claimant group had expanded to more than 100 people.

AFP’s 15 October 2026 report describes approximately 100 survivors pursuing the claim.

This chronology is important.

The original October 2025 announcement concerned 67 individuals sending a legal warning.

The subsequent proceedings involved a larger group.

The two figures refer to different stages and should not be confused.

The claimants are represented by Hausfeld, with support from campaign organisations and other advocates.

They allege that Shell’s historical greenhouse gas emissions materially contributed to anthropogenic climate change and that climate change intensified the severity or likelihood of Typhoon Odette.

They seek financial compensation for losses allegedly attributable to that contribution.

The proceedings also raise questions concerning Shell’s knowledge of climate risks and its historical communications about those risks.

The case remains contested.

It has not resulted in a finding that Shell is legally responsible for the destruction caused by the typhoon.

The allegations concerning Shell’s historical knowledge

One particularly contentious element of the Philippine case concerns what Shell knew about climate change and when it knew it.

The claimants allege that Shell possessed substantial knowledge of the relationship between fossil fuel emissions and global warming long before climate change became a prominent issue in public policy.

They also allege that the company failed adequately to communicate the implications of that knowledge.

AFP interviewed Greg Lascelles, a lawyer at Hausfeld, who described Shell’s alleged history of misinformation as an aggravating factor in the case.

The claimants contend that Shell’s historical knowledge and conduct are relevant to establishing negligence under Philippine law.

They are also seeking to establish that the company’s commercial activities contributed to climate-related harm suffered by people far removed from Shell’s principal operating centres.

These allegations remain unproven in the proceedings.

Shell disputes the suggestion that it possessed unique knowledge of climate change.

The company argues that scientific understanding of climate change developed across governments, academic institutions, industry and wider society.

The legal distinction matters.

Evidence that a company was aware of climate risks does not, by itself, establish that the company committed an actionable wrong.

Equally, the existence of wider scientific knowledge does not automatically resolve allegations concerning particular corporate statements or omissions.

Those questions require examination of the relevant documents, applicable law and evidence.

Shell’s response: Climate litigation against individual companies is not the solution

Shell has publicly addressed the Philippine proceedings.

On its official website, the company acknowledges the suffering experienced by people affected by Typhoon Odette.

However, Shell rejects the proposition that litigation against individual corporations is an effective solution to the global energy transition.

The company argues that the production and use of fossil fuels result from decades of decisions involving governments, industries, businesses and consumers.

It maintains that no single company can be held responsible for the worldwide energy system.

Shell also emphasises the continuing need for affordable and reliable energy.

Its position is that reducing global emissions requires coordinated government policy, technological innovation, changes in energy demand and investment across the economy.

Shell intends to defend the Philippine claim.

The company’s explanation is available directly from its own website:

Shell: What Kind of Climate Lawsuits Have Been Filed Against Shell?

This is an important source because it allows readers to examine the company’s position without relying entirely upon descriptions supplied by its opponents.

The central legal problem: Who caused the damage?

Both cases confront an exceptionally difficult issue.

Climate change is a global process.

Greenhouse gases accumulate in the atmosphere.

Emissions produced in one country can contribute to changes affecting another country thousands of miles away.

That distinguishes climate litigation from many conventional pollution claims.

In an ordinary industrial pollution case, investigators may be able to identify a specific discharge from a particular facility and connect it with contamination of a nearby river or community.

Climate-related disasters are different.

The emissions contributing to global warming originate from millions of activities across numerous countries over many decades.

Individual storms and floods are influenced by atmospheric conditions, natural climate variability, geography, infrastructure, development patterns and social vulnerability.

The claimants therefore face a complex evidential task.

They must connect emissions associated with Shell to global warming.

They must connect global warming to changes in the relevant disaster’s probability or intensity.

And they must establish that those changes caused legally compensable damage under the law governing their claims.

That is a formidable challenge.

But the scientific evidence available to examine parts of that chain has improved substantially.

Researchers can now use observations and climate models to estimate how human-induced warming has changed the likelihood or intensity of certain types of extreme weather.

The legal question is whether and how those findings can support liability against a particular producer.

There is not yet a universally accepted judicial answer.

Why climate-attribution science matters

Climate-attribution research has become increasingly sophisticated.

Scientists can compare the probability of particular weather conditions in today’s warmer climate with estimates of their probability in a hypothetical climate without human-caused warming.

Depending upon the event and available evidence, such studies may identify measurable changes in intensity or likelihood.

The Brazilian flood research provides one example.

Comparable analyses have examined heatwaves, extreme rainfall, droughts and other events around the world.

However, the strength and precision of the findings vary considerably.

Some event types are much easier to assess than others.

Researchers also distinguish between the physical hazard and the disaster resulting from it.

A period of extreme rainfall may produce vastly different consequences depending upon land use, drainage systems, flood defences, population density and emergency preparedness.

The Brazilian floods illustrate that distinction.

Researchers identified climate change as an important contributor to rainfall intensity.

They also highlighted the roles of El Niño, inadequate infrastructure and social vulnerability.

These findings demonstrate why attributing a particular disaster’s total financial cost to climate change is not a straightforward exercise.

Nevertheless, attribution science provides increasingly relevant evidence for litigation.

It can help courts consider whether climate change materially contributed to particular environmental conditions.

The next question is how to attribute responsibility among potential defendants.

Shell’s historical share of emissions

Both sets of claimants rely upon the scale of Shell’s historical fossil fuel activities.

The Carbon Majors research programme examines emissions associated with major fossil fuel and cement producers.

Its datasets attribute historical emissions to identifiable producing entities.

Much of the emissions associated with oil and gas producers arise when customers burn the products they sell.

These are commonly described as downstream or Scope 3 emissions.

Shell is among the major companies identified in historical emissions research.

AFP reports that the Brazilian claimants rely upon an estimate attributing approximately 2.02 per cent of global historical carbon dioxide emissions from fossil fuels and cement production to Shell.

But this number requires careful interpretation.

An emissions attribution is not automatically a legal allocation of responsibility.

It does not establish that Shell should bear precisely the same percentage of every climate-related loss.

The answer depends upon the applicable legal duties, causation standards, evidence and remedy being sought.

The claimants argue that historical emissions provide a scientifically grounded basis for assigning a share of responsibility.

Shell disputes the attempt to impose liability upon an individual company for the consequences of worldwide fossil fuel consumption.

The courts must decide how, if at all, the emissions data translate into legally enforceable obligations.

The geographical implications are extraordinary

The two proceedings demonstrate how climate litigation is crossing national boundaries.

In Brazil, domestic prosecutors and an environmental organisation are pursuing a Shell subsidiary over damage suffered within Brazil.

In Britain, Philippine residents are bringing proceedings against Shell companies over damage suffered in the Philippines.

The legal foundations differ.

The Brazilian proceedings depend upon Brazilian law and the jurisdiction of Brazilian courts.

The Philippine claim is being pursued in England, while invoking alleged duties and rights arising under Philippine law.

That creates additional questions about jurisdiction, applicable law and remedies.

The mere fact that a multinational company is headquartered in one country does not automatically mean that its courts can resolve every claim arising elsewhere.

Nor does bringing proceedings in England establish that Philippine law imposes the liability alleged.

These matters may need to be considered in preliminary legal proceedings before any final determination of damages.

But the attempt itself is significant.

The claimants are seeking accountability through legal systems connected with Shell’s corporate presence rather than limiting proceedings to the countries where the disasters occurred.

That could influence the future development of transnational climate litigation.

Other industries may face similar claims

Shell is not the only company confronting climate-related damages claims.

AFP also identifies proceedings involving other major industrial producers.

Swiss cement company Holcim faces litigation concerning the consequences of rising sea levels for residents of an Indonesian island.

Pakistani farmers have brought proceedings in Germany involving major industrial companies.

The cases differ in their legal foundations and factual circumstances.

They should not be treated as interchangeable.

But they demonstrate a common development.

Claimants are attempting to recover compensation for specific climate-related harm from companies whose historical emissions can be estimated.

Noah Walker-Crawford, a researcher at the Grantham Research Institute on Climate Change and the Environment at the London School of Economics, described the cases to AFP as tests of whether such a legal strategy is viable.

His assessment is important.

These proceedings are not simply attempts to obtain compensation in two isolated disputes.

They may also establish whether comparable claims can proceed against other major industrial producers.

Success could encourage additional litigation.

Failure could reveal important limits within existing legal frameworks.

Either outcome would be significant.

COMMENTARY: The fossil fuel industry’s next legal frontier

Shell has faced environmental litigation for decades.

The Niger Delta has generated numerous legal disputes concerning pollution, environmental remediation and alleged responsibility for damage to communities.

The company’s Sakhalin operations have been the subject of extensive environmental controversy and regulatory action.

More recently, Shell has faced litigation concerning greenhouse gas emissions and its energy transition strategy.

But the Brazilian and Philippine cases represent a further development.

The claimants are not merely asking courts to order cleaner operations or lower future emissions.

They are seeking compensation for specific disasters that have already occurred.

That distinction is fundamental.

The litigation attempts to connect historical industrial emissions with present-day human losses.

The consequences could be profound if courts accept the proposed legal reasoning.

A company might face claims arising from climate-related events far beyond the countries in which it operates.

Potential liability could reflect decades of accumulated emissions rather than only current operating practices.

And claimants could seek compensation for injuries, lost property and destroyed livelihoods.

However, the difficulties are substantial.

Climate change is a collective global phenomenon.

Governments have encouraged and regulated fossil fuel production.

Industries and consumers have depended upon those fuels.

Many companies have contributed to emissions.

Determining how responsibility should be distributed requires more than identifying a major historical producer.

It requires a defensible legal framework.

That is why the outcome of these cases remains uncertain.

A difficult question for shareholders

For Shell shareholders, this emerging category of litigation deserves attention.

Traditional environmental liabilities can sometimes be estimated by reference to identifiable incidents, remediation costs or settlements.

Claims for climate-related damage may be considerably harder to quantify.

The scale of possible exposure depends upon whether courts accept the underlying legal theories and what limits they impose.

The Brazilian claim seeks approximately $108 million.

The Philippine claim seeks damages that have not been specified publicly in the same way.

Those figures cannot presently be used to calculate Shell’s overall future exposure.

Nor would it be reasonable to assume that comparable claims will necessarily succeed.

But shareholders have an interest in understanding whether such litigation could become a material financial risk.

They are also entitled to expect accurate disclosure of significant proceedings and candid discussion of relevant uncertainties.

Shell’s position that global climate change requires collective action is an important part of the debate.

It does not, however, eliminate the need to examine individual claims on their legal and evidential merits.

The historical knowledge question

One aspect of the Philippine proceedings also connects with an important theme running through the independent Shell archive.

What did senior corporate management know about the risks associated with its activities?

When was that knowledge acquired?

And how did the company communicate those risks?

The Philippine claimants allege that Shell understood important aspects of climate change decades ago.

They also challenge aspects of the company’s historical public communications.

The Brazilian proceedings reportedly cite a Shell document from 1986 recognising the contribution of fossil fuels to greenhouse gas emissions and global warming.

Such documents may be relevant to allegations concerning knowledge, foreseeability and corporate conduct.

But their legal significance cannot be assumed.

A contemporaneous internal report can establish that particular information was available within a company.

It does not automatically establish that later statements were deliberately misleading.

Nor does it, without further evidence, prove the elements of negligence or liability for a specific disaster.

The distinction between documentary knowledge and legal wrongdoing is essential.

The independent Shell archive has long preserved internal correspondence and historical corporate records.

The value of such material lies in enabling readers to distinguish what documents actually establish from what commentators or litigants infer.

That same standard should apply here.

The importance of reporting Shell’s defence

There is also a responsibility to present Shell’s position fairly.

The company rejects the proposition that individual corporate litigation offers an effective solution to global climate change.

It emphasises the continuing demand for fossil fuels and the need for coordinated policies across governments, industries and consumers.

Those arguments are relevant.

A legal system must avoid assigning responsibility without a proper basis in law and evidence.

But claimants are equally entitled to bring proceedings where they believe their rights have been violated.

They are entitled to present scientific evidence and arguments concerning corporate responsibility.

The courts must evaluate those competing positions.

The objective of independent reporting should not be to declare liability before the evidence has been tested.

It should be to explain the facts, identify the disputed issues and preserve the documentary record.

That is particularly important when the subject concerns catastrophic human losses and potentially enormous corporate liabilities.

Conclusion: Can a percentage of climate damage become a legal debt?

The two Shell lawsuits represent an important stage in the development of climate litigation.

In Brazil, prosecutors and an environmental organisation are attempting to translate climate-attribution research and historical emissions estimates into a claim for approximately $108 million.

In Britain, survivors of Typhoon Odette are pursuing compensation for personal and economic losses they allege were intensified by climate change associated with Shell’s historical fossil fuel activities.

Both cases raise difficult questions.

Can a company’s historical emissions be connected to a particular disaster with sufficient precision?

Does applicable law recognise a duty capable of supporting the claim?

Can courts determine what proportion of the resulting harm should be attributed to an individual company?

And how should responsibility be allocated when emissions arise from a worldwide energy system involving governments, businesses and consumers?

The scientific and legal questions are related.

But they are not identical.

A scientific attribution study may help establish how climate change affected a disaster.

It cannot, without an applicable legal framework, determine corporate liability.

The courts must make that determination.

For Shell, the significance is that climate litigation is moving beyond demands for future emissions reductions towards claims for compensation for disasters that have already destroyed lives, homes and livelihoods.

For the claimants, the cases offer a possible route to accountability.

For Shell, they present complex legal challenges that the company intends to defend.

For shareholders, they introduce another category of potential financial and reputational risk.

And for the wider fossil fuel industry, they may help establish whether climate-attribution science can underpin legally enforceable claims for disaster losses.

The outcomes remain uncertain.

But the legal questions are now before the courts.

Principal documentary and reporting sources

1. Agence France-Presse — 15 October 2026

Why Is Shell Facing Lawsuits Over Climate Disasters in Brazil and the Philippines?

The immediate basis for this article, including interviews with Brazilian and Philippine legal representatives and discussion of the developing climate-attribution strategy.

2. Barron’s — 15 October 2026

Why Is Shell Facing Lawsuits Over Climate Disasters in Brazil and the Philippines?

Republication of the AFP investigation by Ivan Couronne.

3. Hausfeld — 23 October 2025

Shell Hit With Legal Action Over Climate Damages by Typhoon Odette Survivors

The claimants’ legal representatives explain the original Letter Before Action, the losses alleged and the legal basis being advanced.

4. Hausfeld — December 2025

Survivors of Deadly Philippines Super Typhoon Take Shell to Court Over Climate Harms

Details of the commencement of High Court proceedings following the October legal notice.

5. Shell plc — Corporate Position

What Kind of Climate Lawsuits Have Been Filed Against Shell?

Shell’s published account of the Philippine case and its defence of its position in climate-related litigation.

6. AFP — 10 October 2026

Brazil Prosecutors Sue Shell for $108 Million Over Deadly 2024 Floods

Contemporaneous reporting of the Brazilian action.

7. World Weather Attribution — June 2024

Climate Change, El Niño and Infrastructure Failures Behind Massive Floods in Southern Brazil

Scientific assessment of the role of climate change in the rainfall and the additional importance of natural variability and infrastructure vulnerability.

8. npj Natural Hazards — 2026

Climate Change and El Niño Behind Extreme Precipitation Leading to Major Floods in Southern Brazil in 2024

Peer-reviewed scientific study estimating the influence of anthropogenic climate change on the probability and intensity of the extreme rainfall.

9. The Independent — 17 December 2025

Survivors Sue Shell in Landmark Case Over Deadly Typhoon in Philippines

Contemporaneous reporting of the Philippine High Court proceedings and accounts from affected communities.

10. RoyalDutchShellPlc.com — 10 October 2026

Shell Faces Historic $108 Million Climate Lawsuit in Brazil Over Floods That Killed Nearly 200 People

Our earlier coverage of the Brazilian proceedings.

Editorial and legal disclaimer

This article distinguishes authenticated corporate statements, scientific studies, contemporary journalism, claimants’ allegations and editorial commentary.

The Brazilian and Philippine proceedings remain contested. Neither has established that Shell is legally liable for the disasters concerned.

Scientific findings concerning the contribution of human-induced climate change to extreme weather do not automatically establish the legal responsibility of an individual fossil fuel producer for particular losses.

Historical emissions estimates are not judicial determinations of liability.

Allegations concerning Shell’s historical knowledge, communications and conduct are attributed to the claimants and have not been treated as proven findings of wrongdoing.

Shell’s publicly stated defence is included.

The website’s general disclaimer also applies.

Shell Faces Climate Disaster Claims on Two Continents — From Brazil’s Deadly Floods to the Philippines’ Devastating Typhoon was first posted on October 15, 2026 at 4:20 pm.
©2018 "Royal Dutch Shell Plc .com". Use of this feed is for personal non-commercial use only. If you are not reading this article in your feed reader, then the site is guilty of copyright infringement. Please contact me at john@shellnews.net

Whale of the Month: Humpback Whales

The Revelator - Thu, 10/15/2026 - 08:00

I enjoyed talking about narwhals last month. What whale are we talking about this time?

This time we’re diving into one of my personal favorites: the humpback.

Wait, we usually talk about more obscure whales. Aren’t humpbacks kind of mainstream?

That’s true, but mainstream doesn’t mean boring. Humpbacks embody cetacean charisma. In addition to their good looks, they’re champion swimmers — they’re constantly observed leaping almost entirely out of the water in giant, thunderous breaches.

They’re also icons of conservation efforts; pop-culture superstars; and the subjects of amazing new science. Humpbacks are constantly in the news, too. One was recently spotted in a California river miles away from the ocean. Another made worldwide headlines for a very emotional display of grief after the loss of her calf.

Oh, that’s sad.

Yeah, but seeing that grief helps humans understand humpbacks even better — and maybe love them even more.

So where do they get the name “humpback”? I’ve seen photos — their backs don’t look all that humpy.

That’s true. But the name comes from those famous breaches and a distinct hump that forms on their backs when they arch to dive deep into the water.

Photo by Chinh Le Duc on Unsplash

That dive is a great opportunity to see one of humpbacks’ most beloved features: their tail flukes, which display unique black-and-white patterns on the underside. Photo-identification databases of these tail patterns allow scientists to track individual humpbacks across thousands of miles and throughout their decades-long lifespans. (Writer and whale fan Christopher Moore based an entire novel on those patterns.)

Getting back to their nomenclature, their scientific name, Megaptera novaeangliae, means “big-winged New Englander” and refers to their gigantic, wing-like pectoral flippers, which can grow up to 16 feet long — about a third of their total body length.

That must help them swim. Don’t they hold some kind of record for migrating?

You’ve been doing some reading in between these discussions! Good for you. Yes, humpback whales complete some of the longest migrations of any mammal on Earth. Each population has a different migratory path, but generally speaking they spend their summers in chilly, nutrient-rich polar waters where they gorge on krill and tiny fish — often using air bubbles to condense their prey into one location for easy pickings. Once suitably fattened up, they head north — a journey of several thousand miles to warm tropical waters near the equator, where they mate and give birth. They barely eat anything during the migration or their winter breeding season and live off their thick blubber stores.

That sounds like an intense diet plan. What else makes them famous?

Their music. Male humpbacks are known for their complex underwater “songs” — elaborate arrangements of moans, howls, and cries arranged in patterns that can last for hours. The songs evolve over time, with new “remixes” spreading across entire whale populations.

WhaleTrustMaui · Humpback Whale Song Recorded off the Coast of Maui in 2004

Those vocalizations are arguably one of the reasons we still have humpbacks. The 1970 album Songs of the Humpback Whale, recorded by bio-acoustician Roger Payne, sold more than 100,000 copies (about the same as David Bowie’s The Man Who Saved the World the same year) and helped kick off the global “Save the Whales” movement — not to mention my own fascination with whales. I heard part of the album for the first time in 1979 when an issue of National Geographic magazine included an excerpt on flexi-disc — a record printed on flexible plastic instead of pressed on vinyl. I must have listened to it a thousand times over the next couple of years.

Cool. I’ll have to look for a copy of that issue on eBay. How are humpbacks doing these days? They were heavily hunted, right?

Extremely heavily. Commercial whaling reduced global humpback populations by an estimated 90% before the international whaling moratorium took effect in 1986.

But 40 years later, humpbacks are often celebrated as one of conservation’s greatest success stories and the species overall is classified as “least concern” by the IUCN, with an estimated adult population of 84,000 and rising.

Photo by Rod Long on Unsplash

It all depends on where humpbacks live, of course, but many populations have rebounded dramatically thanks to international protections (and U.S. protections under the Endangered Species Act and the Marine Mammal Protection Act). One of the most exciting population recoveries is taking place off the coast of Brazil, where they’d all but disappeared four decades ago. Another unexpected site is the waters off the coast of New York City, where the nonprofit Gotham Whale recently documented 500 humpbacks, up from just 10-30 in the area a decade ago.

There’s a “but” coming, isn’t there?

You know me (and the world) too well. Not all populations have recovered equally. Specific distinct population segments — like the Arabian Sea and Oceania populations — remain endangered. (Newly published research also suggests the Arabian humpbacks may be a unique subspecies with low genetic diversity.)

Even for recovering populations, modern ocean life is a minefield. Humpbacks face constant threats from entanglements in commercial fishing gear and vessel strikes. On top of that, climate change is altering marine food webs, shifting krill distributions, and forcing whales to feed in new areas — where they become even more vulnerable to ship traffic. It’s a nasty circle.

Krill, climate, and humpbacks are intricately linked. A recent study found that a marine heatwave in the northeastern Pacific Ocean from 2013-2016 caused krill and small fish populations to crash — which then caused a decline in humpback populations in Hawaiʻi.

More recently a few starved and emaciated whales have washed ashore in places like Maine and Oregon. Is that a portent of things to come? I’m a bit worried.

So what can people do to help ensure humpbacks keep swimming, feeding, and breaching?

A few key things: If you’re ever out on a boat or taking a whale-watching tour (which I encourage you to do), make sure the operator follows responsible viewing guidelines and keeps a safe distance.

We can also support policy efforts that demand modifications in fisheries gear, such as ropeless fishing technology to eliminate dangerous entanglements like one that mangled a humpback’s jaw this summer. We also need to advocate for reducing boat noise in key migration corridors. A recent study found that engine noise reduced scientists’ ability to record humpback calls by 40-45%. If we can’t hear them, it’s a safe bet to assume they can’t hear themselves.

And, as with other species, supporting broader marine habitat protection and climate action helps safeguard the food and ocean ecosystems humpbacks rely on.

Got it. So what whale are we tackling next month?

That’s the toughest question you ask me each month. There are so many to choose from, including some species that are in the news. I have a few ideas, but anyone reading this can send their own favorites to me at jplatt@therevelator.org.

Republish this article for free! Read our reprint policy. Previously in The Revelator:

Songs Whales Sing: The Peculiar History of Commercial Whaling

The post Whale of the Month: Humpback Whales appeared first on The Revelator.

Categories: H. Green News

Audubon Receives NFWF Grassland Resilience and Conservation Initiative Award

Audubon Society - Thu, 10/15/2026 - 07:55
The National Audubon Society has been awarded nearly $4 million dollars from the National Fish and Wildlife Foundation Grassland Resilience and Conservation Initiative (GRACI) grant, an investment...
Categories: G3. Big Green

South Dakota’s Prairie Fest 2026

Audubon Society - Thu, 10/15/2026 - 07:48
If you spend a day on the South Dakota prairie with its rustling grasses, bright blooms, open skies, and rich wildlife, then it’s easy to understand why so many people are passionate about...
Categories: G3. Big Green

AEP in deal to buy up to 1.6 GW of Mainspring linear generators

Utility Dive - Thu, 10/15/2026 - 07:47

Separately, American Electric Power expects to spend about $4 billion on a 702-MW Bloom Energy fuel cell project in Wyoming that is under contract to Google.

EA issues revised Burniston fracking assessment

DRILL OR DROP? - Thu, 10/15/2026 - 07:41

The Environment Agency (EA) has amended its much-criticised assessment of gas drilling and lower-volume fracking at Burniston in North Yorkshire.

The EA has corrected what it described as “drafting errors” in two key documents on an environmental permit.

It has now acknowledged “a small number of minor typographical errors and inconsistencies” and published revised versions.

However, analysis by DrillOrDrop has identified at least 58 changes in the updated draft decision document and more than 20 in the draft permit.

Many other local concerns about the documents remain.

The permit process at Burniston is the subject of an official complaint against the EA. The documents have also been strongly criticised by residents and campaigners, the local action group, Frack Free Coastal Communities, and Burniston Parish Council.

The EA was accused of inaccurate, inconsistent, contradictory and missing information. It was urged to withdraw its draft decision to approve the permit.

But the EA said its technical assessment was unchanged, despite the errors in the original documents.

Extract from Environment Agency website on Burniston environmental permit

DrillOrDrop will report separately on reaction to the revised permit documents. The environmental permit is a separate process from planning permission, which was formally refused for the Burniston proposal in May 2026.

Changes

DrillOrDrop used the EA’s list of changes (p3) to the 92-page draft decision document. We found:

  • At least 50 unique amendments
  • At least a third of pages (30) had amendments
  • Two pages each had at least five changes and another page had at least four
  • One section comprising five-and-a-half pages had at least15 amendments

In the 30-page draft permit, again using the EA’s list of changes, we found:

  • At least 20 unique amendments
  • At least a third of pages had amendments (10)
  • One page had four changes, all in one section
  • Another two pages each had three changes

The EA’s lists of changes refer to additional amendments to key terms that had been made throughout both the draft decision document and draft permit.

These, and many of the listed amendments, are not always easy to find in the revised versions. We found:

  • Page numbers in the list of changes did not always match the pages in the new draft decision document
  • Some amended paragraphs were numbered in the list but not in the document
  • Some terms listed as amended throughout the draft decision document appeared in different forms in the list and the original document
  • Some terms listed as amended throughout the draft decision document did not appear in searches of the original

Some of the amendments were basic corrections. These include the use of the term “oil-based” fracturing fluid and the naming of the target rock formation as within the Kirkham Abbey Formation.

Other amendments were more complicated and potentially contentious, particularly about the proposed lower-volume fracking operation.

Fracking

The term fracking appeared in the EA text in the original draft decision document but was removed from this section in the revised version.

“Fracking” has been used by residents, at least once by the would-be Burniston operator Europa Oil & Gas and by the EA in the permitting process for another site. A legal opinion by a KC has confirmed that the Burniston operation qualified as fracking.

The revised draft decision document now widely refers to the proposed operation as proppant squeeze. But most references in the document to “proppant fluid” have been replaced with “hydraulic fracture fluid”. A new definition has been added for “carrier fluid”, also called hydraulic fracture fluid.

The EA’s revised draft decision document continues to state that a “small” volume of hydraulic fracture fluid would be used at Burniston. We previously asked the EA to define “small”. It said “small” would be removed from the revised document.

The draft decision document also retains the statement that high -volume associated hydraulic fracturing, currently subject to a moratorium in England, “typically involves the injection of thousands of cubic meters of fluid”.

The EA does not give an example of a fracking site using this volume of fluid.

The most recent high-volume fracks in England were at Preston New Road in Lancashire in 2018 and 2019. Both operations induced multiple earthquakes. The 2019 fracks, which led to the moratorium, used a total of 2,485m3 of fluid in seven fracking stages, with an average volume of 354m3 per stage.

Europa Oil & Gas has said it intends to use 300m3-500m3 per stage (p25) with up to four stages. This would potentially use a total volume of 2,000m3.

Extended consultation

The EA has said “In the interests of transparency and openness” it has extended the consultation until 21 October 2026.

But DrillOrDrop understands local organisations are calling for more time to review the updated documents. We will report on any further change to the consultation period and to reaction to the EA’s revisions.

Categories: G2. Local Greens

Best Buy pilots battery-powered vehicles at California distribution sites

Utility Dive - Thu, 10/15/2026 - 07:32

The retailer deployed electric yard switchers as part of its efforts to curb emissions and will gauge future deployment potential across its supply chain, it said.

Grow EKY Loan Fund: Supporting the Businesses Our Communities Depend On

Strong communities are built on essential services—the businesses that feed families, care for children, build homes, and help neighborhoods recover in times of crisis. Yet, these vital industries often face barriers when it comes to accessing flexible, affordable capital.  

That’s why we’re introducing the Grow EKY Fund, a financing initiative and support program designed to strengthen the businesses our communities rely on every day. 

This fund is specifically focused on businesses driving impact in four key areas:

  • Housing & skilled trades
  • Food access
  • Childcare
  • Disaster resiliency.

From neighborhood grocers and farmers to daycare providers, plumbers, electricians, and contractors, these are the businesses that keep communities functioning and growing. They are also critical to long-term stability, economic opportunity, and recovery. 

In addition to flexible financing with reduced fees, businesses supported through the fund can also access personalized, one-on-one guidance from experienced business coaches and industry experts. Whether it’s refining a business plan, improving financial management, navigating growth challenges, or preparing for unexpected disruptions, this hands-on support is designed to meet businesses where they are. Grow EKY businesses and organizations can also receive free energy assessments & five free hours of technical assistance for solar and efficiency upgrades.

By pairing funding with expert support, we’re investing in both the immediate needs and the future resilience of the businesses that keep our communities strong. 

Whether you’re launching, expanding, or adapting your business or nonprofit, the Grow EKY Fund is here to help you grow what matters most. Together, we can make our communities stronger, healthier, and more connected. 

Learn more at mtassociation.org/grow

The post Grow EKY Loan Fund: Supporting the Businesses Our Communities Depend On appeared first on Mountain Association.

Reliability standards for AI data centers, crypto miners move closer to adoption

Utility Dive - Thu, 10/15/2026 - 06:28

The proposed rules must still be approved by NERC’s board and federal regulators. As written, they would apply to computational loads of 50 MW or more connected at voltage levels of at least 100 kV.

Could dirty, salty wastewater quench data center thirst?

Anthropocene Magazine - Thu, 10/15/2026 - 05:20

Data centers have become a major flashpoint as midterm elections near in the United States. Besides their intensive energy use, they are drawing public ire for use of freshwater for to cool data centers.

But researchers at the University of Texas at Austin have an idea that could alleviate the stress on local freshwater resources. They propose using waste water from the oil and gas industry. Today’s desalination technologies could clean up dirty and salty water to produce clean-enough water for data center cooling needs, the team shows in a paper published in the journal Water Research.

“We’re not waiting for a futuristic technology to come along and solve this problem for us,” said mechanical engineering professor Vaibhav Bahadur in a press release. “We can solve parts of this problem with the technology we already have; there’s just a cost to it.”

Data centers underpin our modern digital economy. But they are highly energy-intensive. Their power needs are “equivalent to the electrical power draw of 1000 US households going into a computing unit the size of a bookshelf,” the team writes in the paper.

The heat this generates requires immense amounts of water for cooling. Data centers can consume millions of gallons of water a day. Meanwhile, the Permian Basin in West Texas produces about 8 billion gallons of waste water per day during oil and gas extraction. And “right now this water is transported over long distances and injected underground,” Bahadur said.

 

.IRPP_ruby , .IRPP_ruby .postImageUrl , .IRPP_ruby .centered-text-area {height: auto;position: relative;}.IRPP_ruby , .IRPP_ruby:hover , .IRPP_ruby:visited , .IRPP_ruby:active {border:0!important;}.IRPP_ruby .clearfix:after {content: "";display: table;clear: both;}.IRPP_ruby {display: block;transition: background-color 250ms;webkit-transition: background-color 250ms;width: 100%;opacity: 1;transition: opacity 250ms;webkit-transition: opacity 250ms;background-color: #eaeaea;}.IRPP_ruby:active , .IRPP_ruby:hover {opacity: 1;transition: opacity 250ms;webkit-transition: opacity 250ms;background-color: inherit;}.IRPP_ruby .postImageUrl {background-position: center;background-size: cover;float: left;margin: 0;padding: 0;width: 31.59%;position: absolute;top: 0;bottom: 0;}.IRPP_ruby .centered-text-area {float: right;width: 65.65%;padding:0;margin:0;}.IRPP_ruby .centered-text {display: table;height: 130px;left: 0;top: 0;padding:0;margin:0;padding-top: 20px;padding-bottom: 20px;}.IRPP_ruby .IRPP_ruby-content {display: table-cell;margin: 0;padding: 0 74px 0 0px;position: relative;vertical-align: middle;width: 100%;}.IRPP_ruby .ctaText {border-bottom: 0 solid #fff;color: #0099cc;font-size: 14px;font-weight: bold;letter-spacing: normal;margin: 0;padding: 0;font-family:'Arial';}.IRPP_ruby .postTitle {color: #000000;font-size: 16px;font-weight: 600;letter-spacing: normal;margin: 0;padding: 0;font-family:'Arial';}.IRPP_ruby .ctaButton {background: url(https://www.anthropocenemagazine.org/wp-content/plugins/intelly-related-posts-pro/assets/images/next-arrow.png)no-repeat;background-color: #afb4b6;background-position: center;display: inline-block;height: 100%;width: 54px;margin-left: 10px;position: absolute;bottom:0;right: 0;top: 0;}.IRPP_ruby:after {content: "";display: block;clear: both;}Recommended Reading:Scientists made an ultra-black wool. And it turns saltwater into drinking water

 

So why not put this water to cooling use at data centers? Besides the quantity, the quality of the water is also important. Freshwater needs to have less than 500 parts per million of dissolved solids.

The UT Austin team looked at how data centers could produce such relatively clean water using desalination. And they analyzed how desalination treatment choice influences cost and environmental impact.

They modeled the cost and energy trade-offs of treating various saline water sources, from mildly brackish groundwater to the much saltier water produced during oil and gas drilling. And they focused on two leading desalination technologies. One, called reverse osmosis, pushes water through membranes that block salt and impurities. The other is a heat-driven process, where water is evaporated, leaving impurities behind, and then the clean vapor is condensed and collected.

The team evaluated three data center deployment case studies. The model captured the “combined effect of cooling technique, local saline water conditions, geographic water stress, and brine disposal strategy on water availability,” they write.

Their results show that a project in Longview, Texas, which uses brackish groundwater treated via reverse osmosis came out with the lowest local water-stress score of the three. But the finding is much more general. Even the most energy-intensive desalination option consumed a fraction of a data center’s total energy demand.

Source: Vishnu Sree Shanthanu Katakam et al. System-scale design and analysis of desalination systems for meeting water needs of data centers. Water Research, 2026.

Image: ©Anthropocene Magazine

Spanish giant wins contracts for transmission projects to connect offshore and onshore renewables

Renew Economy - Thu, 10/15/2026 - 04:39

Spanish energy giant snags two major transmission contracts at opposite ends of Australia – one connecting offshore wind to the grid another to accommodate 2.3 GW of new solar and wind.

The post Spanish giant wins contracts for transmission projects to connect offshore and onshore renewables appeared first on Renew Economy.

Canada’s $430M for skilled trades training must go towards building tomorrow’s workforce

Pembina Institute News - Thu, 10/15/2026 - 04:03
OTTAWA — HANNAH HUNTER, senior analyst with the Pembina Institute’s Sustainable Workforce program, made the following statement in response to the federal government’s announcement of more than $430 million in apprenticeship training funding over the...

A new report just busted another myth about heat pumps

Grist - Thu, 10/15/2026 - 04:00

You may have heard by now that heat pumps — which transfer warmth from outdoor air to an indoor space, instead of generating it like a furnace — don’t work when it gets really cold out. That’s incorrect, as models designed for frigid climes can keep you toasty even in the dead of winter. Don’t believe me? Look no further than the Nordic countries, which have fully committed to them despite the region’s not-exactly-balmy winters.

OK, so heat pumps are more efficient than ever, which is why Americans seem to be warming up to the appliances. But surely, since they’re electric, switching to them en masse will push the grid to collapse? That’s also false. A new report from the energy thinktank RMI finds that thanks to “headroom” in the grid during the winter months, three-quarters of U.S. homes — some 109 million — could adopt the technology, no problem. That would significantly reduce greenhouse gas emissions and slash electric bills by over 20 percent in some states. 

“A substantial number of homes can upgrade to heat pumps within the headroom today,” said Ryan Shea, a manager in the organization’s buildings team. “We’d be better utilizing the grid capacity that’s already there, that essentially spreads those costs across more kilowatt-hours, and everyone benefits with a lower electricity rate.”

What is this headroom, exactly? It’s the difference between the grid’s generation capacity and demand in winter. Typically, the need for electricity is highest in the summer, when millions of air conditioners gobble tremendous amounts of power. In the winter, many folks instead heat their homes with gas furnaces, so they’re getting that energy elsewhere, relieving strain on the grid. This means that during colder months, there’s additional capacity to provide power. 

“That’s where we see moving to heat pumps, adding that electrical load in the winter, where there is all that available grid capacity, is a way to add load to the grid without needing to build it out more,” Shea said. In other words, keeping 109 million heat pumps running through the winter wouldn’t require, say, heaps of new gas-fired power plants.

This buffer, though, isn’t the same state to state or region to region. For one, climates are different: In Phoenix, summers are way hotter than in Boston, requiring more AC, with much milder winters, requiring less heating. How local utilities generate electricity matters, too. Gas power plants can run year-round, but with more solar coming online, generation dips in the winter as the days grow shorter. To compensate for this, utilities are building sprawling battery farms to store energy, and experimenting with using electric vehicles as a vast network of backup power. (They’re even using Earth itself as a giant battery for longer-duration storage.) Either way, renewables and batteries are combining to make the grid more reliable than it is with fossil fuels, and much more flexible no matter the time of year, further reducing costs for ratepayers.

Read Next The US may be hitting a tipping point for heat pumps

The ultimate goal is for heat pumps to replace fossil fuels as the dominant way of warming and cooling our homes. (Yes, heat pumps can cool a space by transferring warmth from inside to outside.) But they also need to replace electric resistance heating, like space heaters. These appliances are especially common in the Pacific Northwest and the Southeast, which endure less punishing winters than the Northeast. These giant toasters are, of course, a better option than a gas furnace, as they’re inherently more efficient and don’t poison homes. But heat pumps are around three to four times more efficient, meaning they require less electricity and therefore demand less from the grid. This could theoretically save households switching from resistance heating an average of $1,530 a year, according to RMI’s previous research.

So how can the U.S. accelerate its shift to heat pumps? For one, AC units that go kaput should be replaced with heat pumps. States can provide rebates to encourage people to make the switch. When a state puts its collective mind to it, the transition can happen faster than you think: Maine (again, another place not known for comfortable winters) blew past its goal of installing 100,000 heat pumps two years ahead of schedule. Oddly enough, simply building more apartments — tackling the housing crisis is a rare bit of agreement between Democrats and Republicans — is a sneaky way to get more heat pumps into units.

Instead of crashing the grid, then, heat pumps working in all American climates (even Alaska) will reduce electricity costs for owners — and rates overall — while making the system as a whole more flexible. As affordability dominates the conversation in American politics, the heat pump could well emerge as a superstar, a rare feat for an appliance. “We really think there’s a reason to include heat pumps within those affordability plans,” Shea said, “and try to really establish some heat pump installation goals.”

This story was originally published by Grist with the headline A new report just busted another myth about heat pumps on Oct 15, 2026.

Categories: H. Green News

Spring Radio: Education workers and the fight for decent public education

Spring Magazine - Thu, 10/15/2026 - 03:00

In the second episode of our mini-series on organized labour, Spring Radio takes a look at how some of the lessons learned in the previous...

The post Spring Radio: Education workers and the fight for decent public education first appeared on Spring.

Categories: B3. EcoSocialism

Arctic Wildlife Research Suffers as Geopolitical Competition Grows

Yale Environment 360 - Thu, 10/15/2026 - 02:09

As national security and the hunt for rare minerals come to dominate Arctic agendas, governments are slashing support for wildlife research. Scientists say the loss of monitoring is unprecedented and comes as climate change dramatically reshapes life in the Far North.

Read more on E360 →

Categories: H. Green News

Brazil’s election could determine the fate of the Amazon

Grist - Thu, 10/15/2026 - 01:45

Brazilians filling out presidential ballots earlier this month saw three-term incumbent Luiz Inácio Lula da Silva pitted against Senator Flávio Bolsonaro. Environmental observers saw something else: a referendum on the future of the Amazon rainforest.

“We are very serious about the risks for the Amazon if Flávio wins the election, because he is a climate denier,” said Carlos Nobre, a climate scientist currently at the University of São Paulo’s Institute for Advanced Studies. “If this candidate is elected, certainly deforestation in the Amazon will increase. We are in a very serious situation.”

Flávio Bolsonaro, son of imprisoned former president Jair Bolsonaro, is campaigning on an agribusiness-friendly, deregulatory agenda. In the first round of voting, he finished 2.2 million votes ahead of Lula. With neither candidate securing the requisite 50 percent needed to be declared the winner outright, the two will head to a runoff on October 25.

President Luiz Inácio Lula da Silva, left, and Senator and presidential candidate Flávio Bolsonaro in October 2026. Pablo Porciuncula / Mauro Pimentel / AFP vai Getty Images

Taken at face value, Bolsonaro and Lula would appear to have similar rainforest policies. Lula promises net-zero deforestation by 2030; Bolsonaro promises zero illegal deforestation by 2029. Legal is the operative term. Bolsonaro’s platform argues for an “agile, modern” environmental licensing process that “will no longer serve as a way to block those seeking to invest and create jobs.” 

Monica de Bolle, an economist at the Peterson Institute for International Economics, argues a Bolsonaro win would amount to a repeat of his father’s term, which saw an increase in clearing, a plummeting of environmental infraction notices, and a near doubling of carbon emissions in Amazonia in 2019 and 2020, compared to the average levels between 2010 and 2018.

Jair Bolsonaro “basically dismantled the enforcement structure,” de Bolle said. “Which is, I think, what would likely happen again.”

.gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9{--gv-text:#3C3830;--gv-text-2:#747473;--gv-grid:#E0E0E0;--gv-halo:#FFFFFF;--gv-axis:#3C3830;box-sizing:border-box;position:relative;width:100%;text-align:left;font-family:"Basis Grotesque", "Basis Grotesque Pro", Arial, sans-serif;font-weight:500;font-size:16px;line-height:1.3;color:var(--gv-text);margin-top:1.5rem!important;margin-bottom:1.5rem!important;padding:0;letter-spacing:normal;word-break:normal} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 *{box-sizing:border-box} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 div,.gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 span{margin:0;padding:0;font-size:inherit;line-height:inherit} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9.gv-br-draft-record-15dtzb9--dark{--gv-text:#F0EDE6;--gv-text-2:#B3ADA3;--gv-grid:#4A4640;--gv-halo:#1C1B19;--gv-axis:#B3ADA3} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__header{margin:0 0 12px} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__title{font-family:"PolySans", Arial, sans-serif;font-weight:500;font-size:24px;line-height:1.2;margin:10px 0 6px;padding:0;color:var(--gv-text);text-transform:none;letter-spacing:normal} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__subtitle{font-family:"Basis Grotesque", "Basis Grotesque Pro", Arial, sans-serif;font-weight:500;font-size:18px;line-height:1.35;margin:0;padding:0;color:var(--gv-text)} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__hl{font-weight:700} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9.gv-br-draft-record-15dtzb9--dark .gv-br-draft-record-15dtzb9__hl--dk-primary{color:#F0EDE6!important} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9.gv-br-draft-record-15dtzb9--dark .gv-br-draft-record-15dtzb9__hl--dk-muted{color:#6B665E!important} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__legend{display:flex;flex-wrap:wrap;align-items:center;gap:6px 16px;margin:0 0 8px;padding:0;font-size:14px;line-height:1.2;color:var(--gv-text)} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__legend-item,.gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__legend-item:hover,.gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__legend-item:focus,.gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__legend-item:active{display:inline-flex;flex-direction:row;justify-content:flex-start;align-items:center;gap:6px;font:inherit;color:inherit;background:none;border:0;padding:2px 0;margin:0;line-height:1.2;text-align:left;cursor:default;box-shadow:none;text-transform:none;letter-spacing:normal;border-radius:0;min-height:0;min-width:0;height:auto;width:auto;text-decoration:none} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 button.gv-br-draft-record-15dtzb9__legend-item,.gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 button.gv-br-draft-record-15dtzb9__legend-item:hover{cursor:pointer} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 button.gv-br-draft-record-15dtzb9__legend-item:hover{text-decoration:underline;text-underline-offset:3px} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 button.gv-br-draft-record-15dtzb9__legend-item:focus-visible{outline:2px solid #3977F3;outline-offset:2px} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__legend-item--off{opacity:0.35} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__map-label{font-family:"Basis Grotesque", "Basis Grotesque Pro", Arial, sans-serif;font-size:11px;font-weight:500;letter-spacing:0.02em} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__legend-label{font-family:"Basis Grotesque", "Basis Grotesque Pro", Arial, sans-serif;font-size:12px;fill:var(--gv-text-2)} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__legend-key{font-family:"Basis Grotesque", "Basis Grotesque Pro", Arial, sans-serif;font-size:14px;fill:var(--gv-text)} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__place{cursor:default} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__legend-axis{font-size:11px;color:var(--gv-text-2);margin-left:2px} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__swatch{display:block;flex:none;overflow:visible} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__chart{position:relative;width:100%;margin:0;padding:0} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 svg.gv-br-draft-record-15dtzb9__svg{display:block;overflow:visible;max-width:none;height:auto} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 svg text{font-family:"Basis Grotesque", "Basis Grotesque Pro", Arial, sans-serif;font-weight:500;font-size:14px;fill:var(--gv-text);letter-spacing:normal} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__ticks text{font-size:14px} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__cat-labels text{fill:var(--gv-text)} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__grid line{stroke:var(--gv-grid);stroke-opacity:0.7;shape-rendering:crispEdges} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__baseline{stroke:var(--gv-axis);stroke-width:1;shape-rendering:crispEdges} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__zero{stroke:#888888;stroke-width:1;stroke-dasharray:4 4} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__line{fill:none;stroke-linecap:round;stroke-linejoin:round} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__line-halo{fill:none;stroke:var(--gv-halo);stroke-width:7;stroke-linecap:round;stroke-linejoin:round} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__segment{stroke:var(--gv-halo);stroke-width:1} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__point{fill-opacity:0.85;stroke:var(--gv-halo);stroke-width:1} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__ring{fill:none;stroke:var(--gv-text);stroke-width:1.5} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__dot{stroke:var(--gv-halo);stroke-width:1.7} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__dot--pulse{transform-box:fill-box;transform-origin:center;animation:gv-br-draft-record-15dtzb9-pulse 1.6s ease-in-out infinite} @keyframes gv-br-draft-record-15dtzb9-pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.2)}} @media (prefers-reduced-motion:reduce){.gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__dot--pulse{animation:none}} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__value-label{font-size:12px;paint-order:stroke fill;stroke:var(--gv-halo);stroke-width:3px;stroke-linejoin:round} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__axis-title{font-size:12px;fill:var(--gv-text-2)} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__direct-label{font-size:13px;font-weight:700;paint-order:stroke fill;stroke:var(--gv-halo);stroke-width:3px;stroke-linejoin:round} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__donut-title{font-size:16px;font-weight:700;fill:var(--gv-text)} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__slice{stroke:var(--gv-halo);stroke-width:1.5} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__slice-label{font-size:14px;font-weight:700;fill:#FFFFFF;paint-order:stroke fill;stroke:rgba(0,0,0,0.25);stroke-width:2px;pointer-events:none} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__slope-head{font-size:14px;font-weight:700;fill:var(--gv-text)} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__slope-axis{stroke:var(--gv-grid);stroke-width:1} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__slope-line{stroke-linecap:round} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__slope-label{fill:var(--gv-text);paint-order:stroke fill;stroke:var(--gv-halo);stroke-width:3px;stroke-linejoin:round} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__dumbbell{stroke:#C9C5BD;stroke-width:3;stroke-linecap:round} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9.gv-br-draft-record-15dtzb9--dark .gv-br-draft-record-15dtzb9__dumbbell{stroke:#6B665E} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__cat-label{fill:var(--gv-text)} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__overlay{fill:transparent;pointer-events:all} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__rule{stroke:var(--gv-text-2);stroke-width:1;stroke-dasharray:2 3} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__tooltip{position:absolute;display:none;pointer-events:none;z-index:5;min-width:120px;max-width:260px;padding:6px 9px;background:rgba(255,255,255,0.9);border:2px solid #888888;border-radius:4px;font-size:13px;line-height:1.35;color:#3C3830} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9.gv-br-draft-record-15dtzb9--dark .gv-br-draft-record-15dtzb9__tooltip{background:rgba(28,27,25,0.94);color:#F0EDE6} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__tip-title{font-weight:700;margin:0 0 3px} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__tip-row{display:flex;align-items:center;gap:6px} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__tip-row i{display:block;flex:none;width:10px;height:10px;border-radius:2px} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__tip-row span{flex:1} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__tip-row b{font-weight:700;white-space:nowrap} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__tip-more{color:var(--gv-text-2);font-size:12px;margin-top:2px} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__note{color:var(--gv-text-2);font-size:12px;font-style:italic;line-height:1.35;margin:8px 0 0;padding:0} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__footer{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin:8px 0 0} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__credits{display:flex;flex-direction:column} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__source{color:var(--gv-text-2);font-size:12px;line-height:1.35;display:inline-block} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__credit{color:var(--gv-text-2);font-size:12px;line-height:1.35;margin-top:3px;font-style:italic;font-weight:700;display:inline-block} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__credit .gv-br-draft-record-15dtzb9__credit-link{color:inherit;font:inherit;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px;border:0;box-shadow:none;background:none} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__logo{display:block;height:auto;max-width:62px;min-width:50px;width:62px;margin:0 0 0 auto;padding:0;transform:translateY(-2px);overflow:visible} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__logo path{fill:var(--gv-text)} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__logos{display:flex;align-items:center;gap:14px;margin-left:auto;flex-wrap:wrap;justify-content:flex-end} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__logos .gv-br-draft-record-15dtzb9__logo{margin:0} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__partner{display:block;margin:0;padding:0;border:0;line-height:0} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__partner img{display:block;height:22px;width:auto;max-width:110px;margin:0;padding:0;border:0;box-shadow:none;object-fit:contain} .gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9.gv-br-draft-record-15dtzb9--dark .gv-br-draft-record-15dtzb9__partner--invert img{filter:brightness(0) invert(1)} @media (max-width:600px){.gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__title{font-size:21px}.gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__subtitle{font-size:16px}.gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__legend{font-size:13px}.gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__ticks text{font-size:12px}.gv-br-draft-record-15dtzb9#gv-br-draft-record-15dtzb9 .gv-br-draft-record-15dtzb9__logo{width:50px}} Up and down with Brasília Forest cleared each year in Brazil’s Legal Amazon, square miles Each year runs August to July and is assigned to the president who was in office for most of it. Source: INPE PRODES Clayton Aldern / Grist / gryffyn m / Unsplash (function(){ var K="__gv_br_draft_record_15dtzb9_initialized__";if(window[K])return;window[K]=true; var ID="gv-br-draft-record-15dtzb9"; var SPEC={"version":1,"slug":"br-draft-record-15dtzb9","type":"stacked","data":{"xKind":"year","x":[1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022,2023,2024,2025],"series":[{"key":"Jair Bolsonaro","label":"Jair Bolsonaro","color":"#3977F3","values":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,3911,4190,5034,4476,null,null,null]},{"key":"Lula","label":"Lula","color":"#F5515B","values":[null,null,null,null,null,null,9805,10723,7341,5516,4498,4985,2882,2703,null,null,null,null,null,null,null,null,null,null,null,null,3500,2517,2213]},{"key":"Other presidents","label":"Other presidents","color":"#C9C5BD","values":[5107,6712,6664,7037,7014,8359,null,null,null,null,null,null,null,null,2478,1765,2275,1935,2397,3048,2682,2910,null,null,null,null,null,null,null]}]},"text":{"title":"Up and down with Brasília","subtitle":"Forest cleared each year in Brazil’s Legal Amazon, square miles","note":"Each year runs August to July and is assigned to the president who was in office for most of it.","source":"Source: INPE PRODES","credit":"Clayton Aldern / Grist","altText":"Bar chart showing annual forest clearing in Brazil's Legal Amazon, 1997 to 2025, shaded by president. Deforestation peaked near 10,700 square miles in 2004 (early in Lula's first term), fell to about 1,800 by 2012, rose under Jair Bolsonaro to 5,000 in 2021, and fell under Lula to 2,200 in 2025."},"style":{"paletteId":"trio","political":true,"background":"white","yFormat":{"prefix":"","suffix":" sq mi","decimals":0},"xFormat":{"prefix":"","suffix":"","decimals":null},"yFromZero":true,"yMin":null,"yMax":null,"valueLabels":false,"endDots":true,"imageFill":{"mode":"all","opacity":0.65,"photos":{"*":{"url":"https://images.unsplash.com/photo-1602484894924-75eddc89d32b?w=1600\u0026q=80\u0026fm=jpg","photographer":"gryffyn m","via":"unsplash","page":"https://unsplash.com/photos/green-trees-on-brown-soil-axE5o1Xh7_Q","profile":"https://unsplash.com/@gryffyn1"}}},"width":"column","height":400,"yLabel":"","xLabel":"","highlight":null,"legend":"top","xFromZero":false,"xMin":null,"xMax":null,"rightAxis":[],"rightFormat":{"prefix":"","suffix":"","decimals":null},"rightLabel":"","rightFromZero":true,"donutHole":true,"partners":[],"map":{"method":"rounded","classes":5,"breaks":[],"palette":"seq-orange","reverse":false,"midpoint":null,"continuous":false,"labels":true,"symbolMax":18,"noDataLabel":"No data","thresholds":[],"stops":[],"colors":[],"domain":null,"categories":[],"sizeTicks":[],"projection":"equal-earth","sphere":false,"graticule":false,"center":[-30,20]}},"meta":{"toolVersion":"0.2.0","createdAt":"","updatedAt":"","fallbackPngUrl":"","review":null}}; var GEO=null; function __gvTip(h){return h.replace(/\x3cdiv class="[^"]*"\x3e\x3ci style="background:transparent"\x3e\x3c\/i\x3e\x3cspan\x3eTotal\x3c\/span\x3e\x3cb\x3e[^\x3c]*\x3c\/b\x3e\x3c\/div\x3e/, "");} function __gvOr(a,b){return a?a:b()};function __gvAnd(a,b){return a?b():a};function __gvLe(a,b){return b>=a};function __gvLt(a,b){return b>a};var __gvRuntime=(()=>{var te=Object.defineProperty;var hn=Object.getOwnPropertyDescriptor;var fn=Object.getOwnPropertyNames;var gn=Object.prototype.hasOwnProperty;var bn=(t,n)=>{for(var r in n)te(t,r,{get:n[r],enumerable:!0})},yn=(t,n,r,o)=>{if(((n?typeof n=="object":!1)?!0:typeof n=="function"))for(let e of fn(n))((!gn.call(t,e)?e!==r:!1)?te(t,e,{get:()=>n[e],enumerable:(!(o=hn(n,e))?!0:o.enumerable)}):!1);return t};var xn=t=>yn(te({},"__esModule",{value:!0}),t);var gr={};bn(gr,{MOBILE_BREAKPOINT:()=>mn,mount:()=>fr,primaryAxis:()=>de,visible:()=>pn});var kn=["map-states","map-counties","map-world","map-dots"];function ge(t){return kn.includes(t)}var be=["line","slope"];var wn="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",Mn=new Map([...wn].map((t,n)=>[t,n])),vn=10;function ee(t){let n=[],r=0,o=1;for(let e of t){let a=Mn.get(e);if(a===void 0)throw new Error("Unreadable map geography");r+=a%32*o,a>=32?o*=32:(n.push(r%2?-(r+1)/2:r/2),r=0,o=1)}return n}function $n(t,n){let r=ee(t),o=[],e=0,a=0,s=0;for(;(r.length)>(e);){let c=r[e++],i=[];for(let m=0;(c)>(m);m++)a+=r[e++],s+=r[e++],i.push([a/n,s/n]);o.push(i)}return o}function ye(t,n){let r=[];return n.forEach((o,e)=>{let a=o>=0?t[o]:[...t[-o-1]].reverse();for(let s=e?1:0;(a.length)>(s);s++)r.push(a[s])}),r}var xe=t=>String(Math.round(t*10)/10),ke=(t,n)=>t.length?`M${t.map(([r,o])=>`${xe(r)} ${xe(o)}`).join("L")}${n?"Z":""}`:"";function Cn(t){var e;let n=0,r=0,o=0;for(let a=0,s=t.length-1;(t.length)>(a);s=a++){let c=t[s][0]*t[a][1]-t[a][0]*t[s][1];n+=c,r+=(t[s][0]+t[a][0])*c,o+=(t[s][1]+t[a][1])*c}return n?{area:n/2,c:[r/(3*n),o/(3*n)]}:{area:0,c:(e=t[0])!=null?e:null}}function we(t){var h;let n=$n(t.arcs,(h=t.q)!=null?h:vn),r=!!t.sphere,o=ee(t.geoms),e=0,a=0,s=t.ids.map((f,b)=>{var F,G,y;let x=o[e++],g="",k=null,P=-1,N=[];for(let R=0;(x)>(R);R++){let _=o[e++],V=[];N.push(V);for(let S=0;(_)>(S);S++){let M=o[e++],I=[];for(let O=0;(M)>(O);O++)a+=o[e++],I.push(a);let B=ye(n,I);if(r){V.push(B);continue}if(g+=ke(B,!0),S===0){let{area:O,c:Y}=Cn(B);(Math.abs(O)>P?(P=Math.abs(O),k=Y):!1)}}}return{id:f,name:(F=t.names[b])!=null?F:f,code:(y=(G=t.codes)==null?void 0:G[b])!=null?y:"",d:g,anchor:k,...r?{polygons:N}:{}}}),c=f=>{var N;let b=ee(f),x=0,g=0,k=[],P=(N=b[x++])!=null?N:0;for(let F=0;(P)>(F);F++){let G=b[x++],y=[];for(let R=0;(G)>(R);R++)g+=b[x++],y.push(g);k.push(ye(n,y))}return k},[i,m,p]=[c(t.inner),c(t.outer),c(t.group)],l=f=>r?"":f.map(b=>ke(b,!1)).join("");return{id:t.id,w:t.w,h:t.h,features:s,inner:l(i),outer:l(m),group:l(p),...r?{sphere:!0,lines:{inner:i,outer:m,group:p}}:{}}}var mt={orange:"#F79945",turquoise:"#12A07F",fuchsia:"#AC00E8",azure:"#3977F3",earth:"#3C3830",red:"#F5515B"},nt={primary:"#3C3830",secondary:"#777777",grid:"#E0E0E0",muted:"#C9C5BD",darkPrimary:"#F0EDE6",darkSecondary:"#B3ADA3",darkGrid:"#4A4640",darkMuted:"#6B665E"},$e={white:"#FFFFFF",smog:"#F0F0F0",lavender:"#D3C8FF",celery:"#E6FFA0",sky:"#C5E0F7",butter:"#FFF1C7",blush:"#FFD6DA"};function Me(t,n,r){let o=t.replace("#",""),e=n.replace("#","");return`#${[0,2,4].map(s=>{let c=parseInt(o.slice(s,s+2),16),i=parseInt(e.slice(s,s+2),16);return Math.round(c+(i-c)*r).toString(16).padStart(2,"0")}).join("")}`.toUpperCase()}var bt=mt;var Dt="#D9D7D2",Pt="#3A3733",Ce="#EDEBE6",Te="#2E2B28",ve="#F5EDDA",Tn="#EF6C4A",Rt=t=>[Me(t,"#FFFFFF",.8),t.toUpperCase(),Me(t,"#000000",.45)],kr=[{id:"seq-orange",label:"Orange",kind:"sequential",stops:Rt(bt.orange)},{id:"seq-turquoise",label:"Turquoise",kind:"sequential",stops:Rt(bt.turquoise)},{id:"seq-azure",label:"Azure",kind:"sequential",stops:Rt(bt.azure)},{id:"seq-fuchsia",label:"Fuchsia",kind:"sequential",stops:Rt(bt.fuchsia)},{id:"div-turquoise-coral",label:"Turquoise to coral",kind:"diverging",stops:[bt.turquoise,ve,Tn]},{id:"div-azure-orange",label:"Azure to orange",kind:"diverging",stops:[bt.azure,ve,bt.orange]}];function re(t){let n=t.parentElement;for(;n;){let o=getComputedStyle(n).backgroundColor.match(/rgba?\(([\d.]+),\s*([\d.]+),\s*([\d.]+)(?:,\s*([\d.]+))?\)/);if((o?((o[4]===void 0?!0:parseFloat(o[4])>.5)):!1)){let e=(.299*+o[1]+.587*+o[2]+.114*+o[3])/255;return{color:`rgb(${o[1]},${o[2]},${o[3]})`,dark:(.5)>(e)}}n=n.parentElement}return{color:null,dark:!1}}function Gt(t,n,r,o,e=1){let a=(i,m)=>`${(0)>(i)?"\u2212":""}${n}${m}${r}`;return{axis:(i,m)=>{let p=i*e>=1e4,l=((m?m:1))*e,h=i*e,f=p?t.formatPrefix(`.${o!=null?o:t.precisionPrefix(l,h)}`,h):t.format(`,.${o!=null?o:t.precisionFixed(l)}f`);return b=>{let s=(p?b===0:!1)?a(0,"0"):a(b,f(Math.abs(b*e)).replace("G","B"));return (r?Math.abs(Math.abs(b*e)-Math.floor(h/l+1e-9)*l)>l*1e-6:!1)?s.slice(0,-r.length):s}},value:i=>{let m=Math.abs(i*e),p=o!=null?o:Sn(m),l=t.format(`,.${p}~f`);return a(i,l(m))}}}function Sn(t){return t>=100?0:t>=10?1:((t>=1?!0:t===0)?!0:!Number.isFinite(t))?2:Math.min(20,Math.max(2,Math.ceil(-Math.log10(t))+1))}function $t(t,n,r,o){let[e,a]=r,s=t.tickStep(e,a,o);return Gt(t,n.prefix,n.suffix,n.decimals,n.multiply).axis(Math.max(Math.abs(e),Math.abs(a)),s)}function Fe(t,n,r){let{xKind:o,x:e}=n.data,a=n.style.xFormat;if(o==="year")return s=>String(s);if(o==="number"){let s=Gt(t,a.prefix,a.suffix,a.decimals,a.multiply);return c=>s.value(Number(c))}if(o==="date"){let s=e.map(l=>String(l)),c=s.every(l=>l.endsWith("-01-01")),i=s.every(l=>l.endsWith("-01")),m=c?"%Y":i?r?"%b \u2019%y":"%b %Y":"%b %-d, %Y",p=t.utcFormat(m);return l=>p(l instanceof Date?l:new Date(String(l)+(String(l).length===10?"T00:00:00Z":"")))}return s=>String(s)}function Le(t){return new Date(String(t)+"T00:00:00Z")}function En(t,n){var r;return n?"#1A1A1A":(r=$e[t.style.background])!=null?r:"#FFFFFF"}function ne(t){let n=t.replace("#",""),r=n.length===3?n.split("").map(o=>o+o).join(""):n.slice(0,6);return[0,2,4].map(o=>__gvOr(parseInt(r.slice(o,o+2),16),()=>(0)))}function Fn([t,n,r]){return`#${[t,n,r].map(o=>Math.round(Math.max(0,Math.min(255,o))).toString(16).padStart(2,"0")).join("")}`.toUpperCase()}function zt(t,n,r){let o=ne(t),e=ne(n);return Fn(o.map((a,s)=>a+(e[s]-a)*r))}function Ht(t){let[n,r,o]=ne(t).map(e=>{let a=e/255;return (.03928)>=(a)?a/12.92:((a+.055)/1.055)**2.4});return .2126*n+.7152*r+.0722*o}function vt(t,n){let[r,o]=[Ht(t),Ht(n)].sort((e,a)=>a-e);return(r+.05)/(o+.05)}function Ln(t,n){if(!n)return t;let r=t.toUpperCase();return r===mt.earth?nt.darkPrimary:r===nt.muted.toUpperCase()?nt.darkMuted:t}var Se=.58,It=.45,An=.7,Ee=new Map;function Dn(t,n){let r=`${t}|${n}`,o=Ee.get(r);if(o)return o;let e=Ht(t),a=0,s=1/0;for(let m=0;(206)>=(m);m++){let p=-It+m/206*(It+Se),l=Math.abs(Ht((0)>(p)?zt(n,"#FFFFFF",-p):zt(n,"#000000",p))-e);((s)>(l)?([a,s]=[p,l]):!1)}let c=(a+It)/(It+Se),i=zt(n,"#FFFFFF",c*An);return Ee.set(r,i),i}function yt(t,n,r){var e;if(!r)return n;let o=(e=t.style.paletteId)!=null?e:"";if(o.startsWith("tonal-")){let a=mt[o.slice(6)];if(a)return Dn(n,a)}return Ln(n,r)}function at(t,n,r){var o,e;return yt(t,(e=(o=t.data.series[n])==null?void 0:o.color)!=null?e:mt.orange,r)}function xt(t,n,r,o=4.5){let e=En(t,r);if(vt(n,e)>=o)return n;let a=r?"#FFFFFF":"#000000";for(let s=.05;(1)>(s);s+=.05){let c=zt(n,a,s);if(vt(c,e)>=o)return c}return a}function Ot(t){return vt("#FFFFFF",t)>=4.5?"#FFFFFF":vt(nt.primary,t)>=4.5?nt.primary:vt("#FFFFFF",t)>=vt("#000000",t)?"#FFFFFF":"#000000"}var ae={w:975,h:610,scale:1300,x:487.5,y:305},Bt=ae.scale,Ae=ae.x,De=ae.y,Pe=[[Ae+.29*Bt,De+.17*Bt],[Ae+.41*Bt,De+.234*Bt]];function Ge(t,n){let r=t.querySelector(`.${n}`);(r?!0:(r=t.ownerDocument.createElement("div"),r.className=n,r.setAttribute("role","presentation"),t.appendChild(r)));let o=r,e=null,a=null,s=()=>{o.style.display="none"},c=m=>{((m===a?!0:!e)?!0:(m.pointerType==="touch"?(e(),e=null):!1))},i=t.ownerDocument;return i.addEventListener("pointerdown",c),{show(m,p,l){m=__gvTip(m);o.innerHTML=m,o.style.display="block";let h=o.offsetWidth,f=o.offsetHeight,b=t.clientWidth,x=p+14;(x+h>b?(x=p-h-14):!1),((0)>(x)?(x=Math.max(0,Math.min(b-h,p-h/2))):!1),o.style.left=`${x}px`,o.style.top=`${Math.max(0,l-f-12)}px`},hide:s,bind(m,p,l){let h=()=>{(l==null?!0:l()),s()};m.on("pointermove.gvtip",(f,b)=>p(f,b)).on("pointerdown.gvtip",(f,b)=>{((f.pointerType!=="touch"?f.pointerType!=="pen":!1)?!0:(a=f,e=h,p(f,b)))}).on("pointerleave.gvtip",f=>{(f.pointerType!=="touch"?h():!1)})},destroy(){i.removeEventListener("pointerdown",c)}}}function ct(t){return t.replace(/[\x26\x3c>"]/g,n=>({"\x26":"\x26amp;","\x3c":"\x26lt;",">":"\x26gt;",'"':"\x26quot;"})[n])}function it(t,n,r,o){let e=a=>a.replace(/[\x26\x3c>]/g,s=>({"\x26":"\x26amp;","\x3c":"\x26lt;",">":"\x26gt;"})[s]);return`\x3cdiv class="${t}">\x3ci style="background:${n}">\x3c/i>\x3cspan>${e(r)}\x3c/span>\x3cb>${e(o)}\x3c/b>\x3c/div>`}var Ve=["VT","NH","MA","RI","CT","NJ","DE","MD","DC"],Pn={CA:[80,318],FL:[790,534],ID:[192,163],KY:[703,315],LA:[562,460],MI:[683,199],NC:[816,350]},Gn=560;function Vn(t,n,r){var i,m,p;let o=t.style.map,e=n?Pt:Dt,a=(m=(i=t.data.series[0])==null?void 0:i.values)!=null?m:[],s=(p=t.data.map)==null?void 0:p.categories;if(s){let l=new Map(o.categories.map(h=>[h.name,h.color]));return h=>{var f;return (s[h]!==null?s[h]!==void 0:!1)?(f=l.get(s[h]))!=null?f:nt.muted:e}}if((o.continuous?o.stops.length>=2:!1)){let l=r.scaleLinear().domain(o.stops).range(o.colors).interpolate(r.interpolateLab).clamp(!0);return h=>(a[h]===null?!0:a[h]===void 0)?e:l(a[h])}if(!o.colors.length)return()=>e;let c=r.scaleThreshold().domain(o.thresholds).range(o.colors);return l=>(a[l]===null?!0:a[l]===void 0)?e:c(a[l])}function Ct(t,n){for(let[r,o]of Object.entries(n))t.style.setProperty(r,o,"important")}var _n=t=>{var o,e;let n=["th","st","nd","rd"],r=t%100;return`${t}${(e=(o=n[(r-20)%10])!=null?o:n[r])!=null?e:n[0]}`},_e=new WeakMap;function Nn(t,n){let r=t.width/n.w,o=n.features.map(e=>e.d).join("");return{height:Math.ceil(n.h*r),transform:`scale(${r})`,unit:1/r,d:e=>e.d,anchor:e=>e.anchor?[e.anchor[0]*r,e.anchor[1]*r]:null,land:()=>o,inner:()=>n.inner,outer:()=>n.outer,group:()=>n.group,sphere:()=>"",graticule:()=>""}}function Re(t,n){var i;if((t.sphere?!0:((i=n.data.map)!=null?i.pr:!1)))return t;let[[r,o],[e,a]]=Pe,s=m=>{let[p,l]=m.split("L")[0].split(" ").map(Number);return __gvAnd(__gvAnd((p>=r?(e)>=(p):!1),()=>(l>=o)),()=>((a)>=(l)))},c=m=>m.split("M").filter(p=>(p?!s(p):p)).map(p=>`M${p}`).join("");return{...t,features:t.features.filter(m=>!m.id.startsWith("72")),inner:c(t.inner),outer:c(t.outer),group:c(t.group)}}function Rn(t){let n=0;for(let r=0,o=t.length-1;(t.length)>(r);o=r++)n+=t[o][0]*t[r][1]-t[r][0]*t[o][1];return n}function In(t){let n=r=>(r.length>=4?Math.abs(Rn(r))>1e-6:!1);return t.features.map(r=>{var o;return{type:"MultiPolygon",coordinates:((o=r.polygons)!=null?o:[]).filter(e=>__gvAnd(e.length,()=>(n(e[0])))).map(e=>[e[0],...e.slice(1).filter(n)])}})}function Ne(t,n,r,o=In(n)){let{d3:e,spec:a}=t,s=a.style.map,c=s.projection==="globe",i={type:"GeometryCollection",geometries:o},m={type:"Sphere"},p,l;if(c)l=Math.min(t.width,Gn),p=e.geoOrthographic().rotate([r[0],r[1]]).fitExtent([[4,4],[t.width-4,l-4]],m);else{let x=(s.sphere?!0:s.graticule)?m:i;p=e.geoEqualEarth().fitWidth(t.width,x),l=Math.ceil(e.geoPath(p).bounds(x)[1][1])+1}let h=e.geoPath(p),f=new Map(n.features.map((x,g)=>[x.id,o[g]])),b=x=>{var g;return(g=h({type:"MultiLineString",coordinates:x}))!=null?g:""};return{height:l,transform:null,unit:1,d:x=>{var g;return(g=h(f.get(x.id)))!=null?g:""},anchor:x=>{let g=h.centroid(f.get(x.id));return (Number.isFinite(g[0])?Number.isFinite(g[1]):!1)?g:null},land:()=>{var x;return(x=h(i))!=null?x:""},inner:()=>{var x,g;return b((g=(x=n.lines)==null?void 0:x.inner)!=null?g:[])},outer:()=>{var x,g;return b((g=(x=n.lines)==null?void 0:x.outer)!=null?g:[])},group:()=>{var x,g;return b((g=(x=n.lines)==null?void 0:x.group)!=null?g:[])},sphere:()=>{var x;return(((c?!0:s.sphere))?(x=h(m))!=null:!1)?x:""},graticule:()=>{var x;return (s.graticule?(x=h(e.geoGraticule10()))!=null:!1)?x:""}}}function Ie(t,n){var H,X,E,u;let{d3:r,spec:o,svg:e}=t,a=o.data.map,s=o.style.map,c=(!!n.sphere?s.projection==="globe":!1),i=(H=s.center)!=null?H:[0,20],m=_e.get(t.chartEl),p=((m?m.center[0]===i[0]:!1)?m.center[1]===i[1]:!1)?m:{center:i,rotate:[-i[0],-i[1]]};_e.set(t.chartEl,p);let l=n.sphere?Ne(t,n,p.rotate):Nn(t,n),h=o.type==="map-dots",f=Vn(o,t.dark,r),b=(E=(X=o.data.series[0])==null?void 0:X.values)!=null?E:[],x=new Map(a.ids.map((d,T)=>[d,T]).filter(([d])=>d!==null)),g=b.map((d,T)=>[d,T]).filter(([d])=>d!==null).sort((d,T)=>T[0]-d[0]),k=new Map;g.forEach(([d,T],v)=>k.set(T,(v>0?g[v-1][0]===d:!1)?k.get(g[v-1][1]):v+1));let P=(u=t.page)!=null?u:t.dark?"#1A1A1A":"#FFFFFF",N=(d,T,v)=>Ct(d,{fill:"none",stroke:T,"stroke-width":`${v}px`,"vector-effect":"non-scaling-stroke","stroke-linejoin":"round","pointer-events":"none"}),F=t.id("map-shadow"),G=l.unit;e.append("defs").append("filter").attr("id",F).attr("x","-5%").attr("y","-5%").attr("width","110%").attr("height","110%").append("feGaussianBlur").attr("stdDeviation",2.5*G);let y=e.append("g").attr("class",t.cls("map"));(l.transform?y.attr("transform",l.transform):!1);let R=y.append("path").attr("class",t.cls("shadow")).attr("filter",`url(#${F})`).attr("transform",`translate(${2*G},${2.5*G})`);Ct(R.node(),{fill:t.dark?"#000000":mt.earth,opacity:"0.25",stroke:"none","fill-rule":"evenodd","pointer-events":"none"});let _=y.append("path").attr("class",t.cls("sphere"));Ct(_.node(),{fill:c?t.dark?"#23282C":"#EEF3F6":"none",stroke:t.dark?nt.darkMuted:nt.muted,"stroke-width":"0.75px","pointer-events":"none"});let V=y.append("path").attr("class",t.cls("graticule"));N(V.node(),t.dark?nt.darkGrid:nt.grid,.5);let S=(d,T)=>{var Z,Q;if(d===void 0)return`\x3cdiv class="${t.cls("tip-title")}">${ct(T)}\x3c/div>\x3cdiv class="${t.cls("tip-row")}">\x3cspan>No data\x3c/span>\x3c/div>`;let v=b[d],L=`\x3cdiv class="${t.cls("tip-title")}">${ct(o.data.x[d])}\x3c/div>`;(a.categories?(L+=it(t.cls("tip-row"),f(d),"Category",(Z=a.categories[d])!=null?Z:"None")):!1),(v!=null?(L+=it(t.cls("tip-row"),(a.categories?!0:h)?"transparent":f(d),o.data.series[0].label,t.fmtValue(v)),((!h?g.length>2:!1)?(L+=it(t.cls("tip-row"),"transparent","Rank",`${_n(k.get(d))} of ${g.length}`)):!1)):!1);for(let q of(Q=a.tips)!=null?Q:[])(q.values[d]?(L+=it(t.cls("tip-row"),"transparent",q.label,q.values[d])):!1);return L},M=y.append("g").selectAll("path").data(n.features).join("path").attr("class",t.cls("place")).each(function(d){let T=x.get(d.id);Ct(this,{fill:h?t.dark?Te:Ce:T===void 0?t.dark?Pt:Dt:f(T),stroke:"none","fill-rule":"evenodd"})}),I=y.append("path");N(I.node(),P,n.id==="us-counties"?.4:.75);let B=y.append("path");N(B.node(),P,1.2);let O=y.append("path").attr("class",t.cls("map-hover"));N(O.node(),t.dark?nt.darkPrimary:mt.earth,1.5),O.style("display","none");let Y=null;(h?!0:t.tooltip.bind(y,d=>{let T=d.target.__data__;if((!T?!0:!d.target.classList.contains(t.cls("place"))))return;let[v,L]=r.pointer(d,t.chartEl);Y=T,O.attr("d",l.d(T)).style("display",null),t.tooltip.show(S(x.get(T.id),T.name),v,L)},()=>{Y=null,O.style("display","none")}));let K=()=>{};if(h){let d=s.domain?Math.max(Math.abs(s.domain[0]),Math.abs(s.domain[1])):0,T=s.symbolMax*Math.min(1,t.width/600)*(t.mobile?.8:1),v=D=>(D===null?!0:!d)?3.5:Math.max(1.5,T*Math.sqrt(Math.abs(D)/d)),L=new Map(n.features.map(D=>[D.id,D])),Z=o.data.x.map((D,w)=>({i:w,r:v(b[w])})).sort((D,w)=>w.r-D.r),Q=D=>a.categories?f(D):mt.turquoise,q=n.sphere?1:t.width/n.w,et=D=>{var ut;let w=(ut=a.xy)==null?void 0:ut[D];if(w)return[w[0]*q,w[1]*q];let U=a.ids[D]?L.get(a.ids[D]):void 0;return U?l.anchor(U):null},A=e.append("g").selectAll("circle").data(Z).join("circle").attr("class",t.cls("symbol")).attr("r",D=>D.r).each(function(D){Ct(this,{fill:Q(D.i),"fill-opacity":d?"0.78":"0.9",stroke:P,"stroke-width":"0.75px"})});K=()=>A.each(function(D){var U,ut;let w=et(D.i);this.setAttribute("cx",String((U=w==null?void 0:w[0])!=null?U:0)),this.setAttribute("cy",String((ut=w==null?void 0:w[1])!=null?ut:0)),this.style.setProperty("display",w?"":"none")}),t.tooltip.bind(A,(D,w)=>{let[U,ut]=r.pointer(D,t.chartEl);t.tooltip.show(S(w.i,o.data.x[w.i]),U,ut)})}let tt=()=>{R.attr("d",c?l.sphere():l.land()),_.attr("d",l.sphere()),V.attr("d",l.graticule()),M.attr("d",d=>l.d(d)),I.attr("d",l.inner()),B.attr("d",l.group()),(Y?O.attr("d",l.d(Y)):!1),K()};if(tt(),c){let d=Math.min(t.width,l.height)/2,T=r.drag().on("drag",v=>{let L=75/d;p.rotate=[p.rotate[0]+v.dx*L,Math.max(-85,Math.min(85,p.rotate[1]-v.dy*L))],l=Ne(t,n,p.rotate),tt()});e.call(T).style("touch-action","none").style("cursor","grab")}if((o.type==="map-states"?s.labels:!1)){let d=e.append("g").attr("class",t.cls("map-labels")).style("pointer-events","none"),T=n.features.map(q=>({f:q,a:l.anchor(q)})).filter(q=>!!q.a),v=T.filter(q=>Ve.includes(q.f.code)).sort((q,et)=>q.a[1]-et.a[1]),L=(520)>(t.width),Z=(q,et,A,D,w)=>d.append("text").attr("class",t.cls("map-label")).attr("x",q).attr("y",et).attr("dy","0.35em").attr("text-anchor",A).style("fill",D).style("fill-opacity","0.8").text(w),Q=t.width/n.w;for(let{f:q,a:et}of T){if((!q.code?!0:Ve.includes(q.code)))continue;let A=x.get(q.id),D=Pn[q.code],[w,U]=D?[D[0]*Q,D[1]*Q]:et;Z(w,U,"middle",A===void 0?t.dark?nt.darkPrimary:nt.primary:Ot(f(A)),q.code)}if(!L){let q=t.width-16*Q,et=-1/0;for(let{f:A,a:D}of v){et=Math.max(D[1],et+14);let w=d.append("line").attr("x1",D[0]).attr("y1",D[1]).attr("x2",q-14).attr("y2",et);Ct(w.node(),{stroke:t.dark?nt.darkMuted:nt.secondary,"stroke-width":"0.75px"}),Z(q,et,"end",t.dark?nt.darkPrimary:nt.primary,A.code)}}}return l.height}var kt=8,Vt=2,oe=Vt+kt+13,ze=oe+5;function He(t,n,r,o){var b,x,g,k,P,N,F,G;if(!n)return;let e=r.style.map,a=r.data.map,s=t.dark?nt.darkSecondary:nt.secondary,c=t.dark?Pt:Dt,i=new Set(a.ids.filter(y=>y!==null)),m=(r.type!=="map-dots"?o.features.some(y=>!i.has(y.id)):!1),p=(y,R)=>`\x3cspan class="${t.cls("legend-item")}">\x3csvg class="${t.cls("swatch")}" width="12" height="12" aria-hidden="true">\x3crect width="12" height="12" rx="2" fill="${y}"/>\x3c/svg>${ct(R)}\x3c/span>`,l=m?p(c,__gvOr(e.noDataLabel,()=>("No data"))):"",h=y=>{if(!m)return{svg:"",width:0};let R=__gvOr(e.noDataLabel,()=>("No data")),_=Vt+kt/2;return{svg:`\x3crect class="${t.cls("legend-nodata")}" x="${y}" y="${_-5}" width="10" height="10" rx="2" fill="${c}"/>\x3ctext x="${y+16}" y="${_}" dy="0.35em" class="${t.cls("legend-key")}">${ct(R)}\x3c/text>`,width:40+R.length*7.5}},f="";if(e.categories.length)f=e.categories.map(y=>p(y.color,y.name)).join("")+l;else if(r.type==="map-dots"){let y=e.domain?Math.max(Math.abs(e.domain[0]),Math.abs(e.domain[1])):0,R=e.symbolMax*Math.min(1,t.width/600)*(t.mobile?.8:1),_=V=>R*Math.sqrt(V/y);if((y?e.sizeTicks.length:!1)){let V=_(e.sizeTicks[e.sizeTicks.length-1]),S=V*2+7,M=[];[...e.sizeTicks].reverse().forEach((K,tt)=>M.push(Math.max(S-2*_(K),tt?M[tt-1]+12:7)));let I=V*2+70,B=Math.max(S+3,M[M.length-1]+8),O=`stroke:${s} !important;fill:none !important`,Y=[...e.sizeTicks].reverse().map((K,tt)=>{let H=S-2*_(K);return`\x3ccircle cx="${V+1}" cy="${S-_(K)}" r="${_(K)}" style="${O};stroke-width:1px"/>\x3cpolyline points="${V+1},${H} ${V*2+4},${H} ${V*2+8},${M[tt]}" style="${O};stroke-width:0.5px"/>\x3ctext x="${V*2+11}" y="${M[tt]}" dy="0.35em" class="${t.cls("legend-label")}">${ct(t.fmtValue(K))}\x3c/text>`}).join("");f=`\x3csvg width="${I}" height="${B}" aria-hidden="true">${Y}\x3c/svg>`}}else if(((e.continuous?e.stops.length>=2:!1)?e.stops[0]!==e.stops[e.stops.length-1]:!1)){let y=Math.min(260,t.width-20),R=t.id("legend-grad"),_=e.colors.map((M,I)=>`\x3cstop offset="${I/(e.colors.length-1)*100}%" stop-color="${M}"/>`).join(""),V=[e.stops[0],e.stops.length===3?e.stops[1]:null,e.stops[e.stops.length-1]].map((M,I)=>M===null?"":`\x3ctext x="${I/2*y}" y="${oe}" text-anchor="${["start","middle","end"][I]}" class="${t.cls("legend-label")}">${ct(t.fmtValue(M))}\x3c/text>`).join(""),S=h(y+24);f=`\x3csvg width="${y+S.width+4}" height="${ze}" aria-hidden="true">\x3cdefs>\x3clinearGradient id="${R}">${_}\x3c/linearGradient>\x3c/defs>\x3crect class="${t.cls("legend-step")}" y="${Vt}" width="${y}" height="${kt}" rx="${kt/2}" fill="url(#${R})"/>${V}${S.svg}\x3c/svg>`}else if((e.colors.length===1?!0:((e.continuous?e.stops.length>=2:!1)?e.stops[0]===e.stops[e.stops.length-1]:!1))){let y=(x=(b=e.domain)==null?void 0:b[0])!=null?x:e.stops[0];f=(y===void 0?"":p(e.colors[0],t.fmtValue(y)))+l}else if(e.colors.length){let y=e.colors.length,R=(P=(k=(g=e.domain)==null?void 0:g[0])!=null?k:e.thresholds[0])!=null?P:0,_=(G=(F=(N=e.domain)==null?void 0:N[1])!=null?F:e.thresholds[e.thresholds.length-1])!=null?G:0,V=$t(t.d3,r.style.yFormat,[R,_],Math.max(1,e.thresholds.length)),S=e.thresholds.map(H=>V(H)),M=Math.max(0,...S.map(H=>H.length))*7+6,I=Math.max(M,Math.min(44,Math.floor((Math.min(320,t.width)-20)/y))),B=I*y,O=t.id("legend-clip"),Y=e.colors.map((H,X)=>`\x3crect class="${t.cls("legend-step")}" x="${X*I}" y="${Vt}" width="${I}" height="${kt}" fill="${H}"/>`).join(""),K=S.map((H,X)=>`\x3ctext x="${(X+1)*I}" y="${oe}" text-anchor="middle" class="${t.cls("legend-label")}">${ct(H)}\x3c/text>`).join(""),tt=h(B+24);f=`\x3csvg width="${B+tt.width+4}" height="${ze}" aria-hidden="true">\x3cdefs>\x3cclipPath id="${O}">\x3crect y="${Vt}" width="${B}" height="${kt}" rx="${kt/2}"/>\x3c/clipPath>\x3c/defs>\x3cg clip-path="url(#${O})">${Y}\x3c/g>${K}${tt.svg}\x3c/svg>`}n.innerHTML=f,n.style.display=f?"":"none",n.removeAttribute("role"),n.removeAttribute("aria-label")}function se(t){return t.replace(/[\x26\x3c>"]/g,n=>({"\x26":"\x26amp;","\x3c":"\x26lt;",">":"\x26gt;",'"':"\x26quot;"})[n])}var zn=["line","area","column","bar","stacked","combo","dot","scatter"];function ie(t){return (t.style.legend==="direct"?be.includes(t.type):!1)}function Oe(t,n,r,o){var g,k,P,N;if(!n)return;let e=r,a=e.data.series,s=(g=e.style.legend)!=null?g:"top",c=()=>{n.innerHTML="",n.style.display="none",n.removeAttribute("role"),n.removeAttribute("aria-label")};if(((s==="none"?!0:s==="subtitle")?!0:ie(e)))return c();let i=(F,G,y)=>F==="line"?`\x3csvg class="${t.cls("swatch")}" width="24" height="10" aria-hidden="true">\x3cline x1="1" x2="23" y1="5" y2="5" stroke="${G}" stroke-width="3.5" stroke-linecap="round"${y?' stroke-dasharray="6 4"':""}/>\x3c/svg>`:F==="dot"?`\x3csvg class="${t.cls("swatch")}" width="12" height="12" aria-hidden="true">\x3ccircle cx="6" cy="6" r="5" fill="${G}"/>\x3c/svg>`:`\x3csvg class="${t.cls("swatch")}" width="12" height="12" aria-hidden="true">\x3crect width="12" height="12" rx="2" fill="${G}"/>\x3c/svg>`,m=F=>e.type==="line"?"line":e.type==="combo"?F===0?"box":"line":(e.type==="scatter"?!0:e.type==="dot")?"dot":"box",p=(F,G,y,R=!1)=>{let _=(y!==void 0?l:!1)?"button":"span",V=_==="button"?` type="button" data-key="${se(y)}" aria-pressed="${!o.has(y)}" title="Show or hide ${se(F)}"`:"",S=`${t.cls("legend-item")}${(y!==void 0?o.has(y):!1)?` ${t.cls("legend-item--off")}`:""}`;return`\x3c${_} class="${S}"${V}>${G}${se(F)}${R?`\x3cspan class="${t.cls("legend-axis")}">right axis\x3c/span>`:""}\x3c/${_}>`},l=__gvAnd(__gvAnd(zn.includes(e.type),()=>(a.length>1)),()=>(!e.style.paletteId.startsWith("highlight"))),h=[];if(e.type==="donut"){let F=(k=e.data.categoryColors)!=null?k:[];h=e.data.x.map((G,y)=>p(String(G),i("box",qt(e,F[y],t.dark))))}else if(e.type==="slope"){let F=e.style.paletteId;if(((F==="rise-fall"?!0:F==="rise-fall-azure")?!0:F==="political")){let G=(P=e.data.categoryColors)!=null?P:[],[y,R]=e.data.series,_=I=>G.find((B,O)=>__gvAnd(((y==null?void 0:y.values[O])!=null?(R==null?void 0:R.values[O])!=null:!1),()=>(I(y.values[O],R.values[O])))),V=_((I,B)=>B>I),S=_((I,B)=>(I)>(B)),M=_((I,B)=>B===I);h=[V?p("Rose",i("line",qt(e,V,t.dark))):"",S?p("Fell",i("line",qt(e,S,t.dark))):"",M?p("No change",i("line",qt(e,M,t.dark))):""].filter(Boolean)}}else if((e.style.paletteId.startsWith("highlight")?a.length>1:!1)){let F=Math.max(0,a.findIndex(G=>G.key===e.style.highlight));h=[p(a[F].label,i(m(F),at(e,F,t.dark))),p("All others",i(m(F),at(e,F===0?1:0,t.dark)))]}else if(a.length>1){let F=__gvAnd(a.some(G=>G.axis==="right"),()=>(a.some(G=>G.axis!=="right")));h=a.map((G,y)=>p(G.label,i(m(y),at(e,y,t.dark),G.dashed),G.key,(F?G.axis==="right":F)))}let f=h.join(""),b=n.ownerDocument.activeElement,x=(b?n.contains(b):!1)?(N=b.dataset)==null?void 0:N.key:void 0;if(n.innerHTML=f,n.style.display=h.length?"":"none",(l?h.length:!1)?(n.setAttribute("role","group"),n.setAttribute("aria-label","Series. Select to show or hide.")):(n.removeAttribute("role"),n.removeAttribute("aria-label")),x!==void 0){let F=[...n.querySelectorAll("[data-key]")].find(G=>G.dataset.key===x);((F?n.ownerDocument.activeElement!==F:!1)?F.focus():!1)}}function qt(t,n,r){return yt(t,n!=null?n:nt.muted,r)}function qe(t,n,r,o={}){let e=t.svg.append("g").attr("class",t.cls("tick-probe")).attr("opacity",0),a=n.map(s=>{var i;let c=e.append("text").attr("class",(i=o.cls)!=null?i:null).style("font-size",`${r}px`).text(s);return (o.weight?c.style("font-weight",String(o.weight)):!1),Math.ceil(c.node().getComputedTextLength())});return e.remove(),a}function lt(t,n,r,o={}){return Math.max(0,...qe(t,n,r,o))}function wt(t,n){return n.ticks(t.mobile?4:5)}function Tt(t,n,r,o){let e=wt(t,r),a=t.fmtAxis;n.append("g").attr("class",t.cls("grid")).selectAll("line").data(e).join("line").attr("x1",-t.margin.left).attr("x2",o).attr("y1",i=>Math.round(r(i))+.5).attr("y2",i=>Math.round(r(i))+.5),n.append("g").attr("class",t.cls("ticks")).selectAll("text").data(e).join("text").attr("x",-t.margin.left).attr("y",i=>r(i)).attr("dy","-0.45em").attr("text-anchor","start").text(i=>a(i))}function St(t,n,r,o){let[e,a]=r.domain();if((e>0?!0:(0)>(a)))return;let s=((0)>(e)?a>0:!1);n.append("line").attr("class",t.cls(s?"zero":"baseline")).attr("x1",0).attr("x2",o).attr("y1",Math.round(r(0))+.5).attr("y2",Math.round(r(0))+.5)}function Xt(t,n,r,o){n.append("line").attr("class",t.cls("baseline")).attr("x1",0).attr("x2",r).attr("y1",o+.5).attr("y2",o+.5)}function Wt(t,n){return Math.max(2,Math.floor(t/(n?70:90)))}var Hn=10;function On(t){return t.mobile?12:14}function Bn(t,n,r,o){return (r)>(t-n/2)?{anchor:"start",start:t,end:t+n}:t+n/2>o?{anchor:"end",start:t-n,end:t}:{anchor:"middle",start:t-n/2,end:t+n/2}}function Yt(t,n,r,o){let e=-t.margin.left,a=t.width-t.margin.left,s=new Map,c=p=>{let l=[...new Set(p.filter(h=>!s.has(h)))];return qe(t,l,On(t)).forEach((h,f)=>s.set(l[f],h)),p.map(h=>s.get(h))},i=null,m=-1;for(let p=Math.max(1,Math.floor(o));p>=1;p--){let l=r(p);if(l.ticks.length===m)continue;m=l.ticks.length;let h=l.ticks.map(l.label),f=c(h),b=l.ticks.map((k,P)=>Bn(n(k),f[P],e,a));i={...l,anchor:k=>b[k].anchor};let x=b.every(k=>(k.start>=e-.5?(a+.5)>=(k.end):!1)),g=b.every((k,P)=>(P===0?!0:(k.start)>=(b[P-1].end+Hn)));if((x?g:!1))return i}return i!=null?i:{...r(1),anchor:()=>"middle"}}function Zt(t,n){let r=n.domain();return t.spec.data.xKind==="year"?o=>({ticks:n.ticks(o).filter(e=>Number.isInteger(e)),label:e=>String(e)}):o=>{let e=t.xAxis(r,o);return{ticks:n.ticks(o),label:a=>e(a)}}}function Ut(t,n,r,o,e){n.append("g").attr("class",t.cls("ticks")).attr("transform",`translate(0,${r})`).selectAll("text").data(o.ticks).join("text").attr("x",a=>e(a)).attr("y",22).attr("text-anchor",(a,s)=>o.anchor(s)).text((a,s)=>o.label(a,s))}function jt(t,n,r,o){let e=[...t].sort((m,p)=>m.y-p.y),a=e.length;if(!a)return;let s=a>1?Math.min(n,Math.max(0,o-r)/(a-1)):n,c=m=>{m.top=Math.max(r,Math.min(o-(m.size-1)*s,m.sum/m.size))},i=[];e.forEach((m,p)=>{let l={start:p,size:1,sum:m.y,top:m.y};for(c(l),i.push(l);i.length>1;){let h=i[i.length-1],f=i[i.length-2];if((h.top+1e-9)>=(f.top+f.size*s))break;f.sum+=h.sum-h.size*f.size*s,f.size+=h.size,i.pop(),c(f)}});for(let m of i)for(let p=0;(m.size)>(p);p++)e[m.start+p].y=m.top+p*s}function je(t,n,r,o,e){let a=[],s=[];for(let i of t){let m=[...a,{item:i,y:i.y}].map(l=>({own:l.y,y:l.y})),p=(o-r)>=((m.length-1)*n);(p?jt(m,n,r,o):!1),(p?m.every(l=>__gvLe(Math.abs(l.y-l.own),e)):!1)?a.push({item:i,y:i.y}):s.push(i)}let c=a.map(i=>({y:i.y}));return jt(c,n,r,o),a.forEach((i,m)=>i.item.y=c[m].y),{kept:a.map(i=>i.item),dropped:s}}function Xe(t,n,r,o){let e=[...new Set(r.map(g=>g.getTime()))].sort((g,k)=>g-k),a=qn(r,e),s=[...[t.utcDay,t.utcDay.every(2),t.utcWeek,t.utcWeek.every(2)].map(g=>[g,"day"]),...[1,2,3,6].map(g=>[t.utcMonth.every(g),"month"]),...[1,2,5,10,20,25,50,100,200,250,500,1e3].map(g=>[t.utcYear.every(g),"year"])],c=s.slice(s.findIndex(([,g])=>g===a)),[i,m]=n.domain(),[p,l]=c[c.length-1],h=[];for(let[g,k]of c){let P=Be(g,e,i,m);if((o)>=(P.length)){[p,l,h]=[g,k,P];break}}(h.length?!0:(h=Be(p,e,i,m))),((!h.length?e.length:!1)?(h=e.length===1?[new Date(e[0])]:[new Date(e[0]),new Date(e[e.length-1])]):!1);let f=(g,k)=>(k===0?!0:h[k-1].getUTCFullYear()!==g.getUTCFullYear()),b={year:t.utcFormat("%Y"),month:t.utcFormat("%b"),monthYear:t.utcFormat("%b %Y"),day:t.utcFormat("%b %-d"),dayYear:t.utcFormat("%b %-d, %Y")};return{ticks:h,label:(g,k)=>l==="year"?b.year(g):l==="month"?f(g,k)?b.monthYear(g):b.month(g):f(g,k)?b.dayYear(g):b.day(g)}}function qn(t,n){if(t.every(a=>(a.getUTCMonth()===0?a.getUTCDate()===1:!1)))return"year";if((2)>(n.length))return t.every(a=>a.getUTCDate()===1)?"month":"day";let o=1/0;for(let a=1;(n.length)>(a);a++)o=Math.min(o,n[a]-n[a-1]);let e=o/864e5;return e>=360?"year":e>=28?"month":"day"}function Be(t,n,r,o){let e=t.range(t.floor(r),new Date(o.getTime()+1)),a=[];return e.forEach((s,c)=>{var p;let i=((p=e[c+1])!=null?p:t.offset(s,1)).getTime(),m=jn(n,s.getTime());((n.length)>(m)?(i)>(n[m]):!1)?a.push(new Date(n[m])):((s>=r?(o)>=(s):!1)?a.push(s):!1)}),a}function jn(t,n){let r=0,o=t.length;for(;(o)>(r);){let e=r+o>>1;(n)>(t[e])?r=e+1:o=e}return r}function dt(t,n){var o,e,a;let r=(o=t.spec.style.imageFill)==null?void 0:o.photos;if(!r)return null;for(let s of n)if((s!==void 0?(((e=r[s])!=null?e.url:!1)):!1))return r[s].url;return __gvOr(((a=r["*"])==null?void 0:a.url),()=>(null))}function Et(t){var r;let n=(r=t.spec.style.imageFill)==null?void 0:r.photos;return(!!n?Object.values(n).some(o=>!!((o!=null?o.url:!1))):!1)}function ft(t,n,r,o){let e=t.svg.select("defs").empty()?t.svg.append("defs"):t.svg.select("defs"),a=t.id("grey");(e.select(`#${a}`).empty()?e.append("filter").attr("id",a).append("feColorMatrix").attr("type","saturate").attr("values","0"):!1);let s=new Map;return{clip:(m,p)=>{let l=p?`${m}|${p.x},${p.y},${p.w},${p.h}`:m,h=s.get(l);if(!h){let f=t.id(`clip-${e.selectAll("clipPath").size()}`);h={id:f,url:m,box:p!=null?p:{x:0,y:0,w:r,h:o},sel:e.append("clipPath").attr("id",f)},s.set(l,h)}return h.sel},paint:()=>{for(let m of s.values())n.insert("image",":first-child").attr("class",t.cls("photo")).attr("href",m.url).attr("x",m.box.x).attr("y",m.box.y).attr("width",Math.max(1,m.box.w)).attr("height",Math.max(1,m.box.h)).attr("preserveAspectRatio","xMidYMid slice").attr("clip-path",`url(#${m.id})`).attr("filter",`url(#${a})`)}}}function Kt(t,n){var o;let r=t.spec.style.imageFill;return __gvAnd((!!r?r.mode==="category":!1),()=>(!!(((o=r.photos[n])!=null?o.url:!1))))}function ht(t,n){var r,o;return n?(o=(r=t.spec.style.imageFill)==null?void 0:r.opacity)!=null?o:.65:1}function Qt(t,n,r,o,e,a){if(((0)>=(r)?!0:(0)>=(o)))return"";let s=Math.min(e,(a==="up"?!0:a==="down")?r/2:o/2,(a==="up"?!0:a==="down")?o:r),c=t+r,i=n+o;switch(a){case"up":return`M${t},${i}V${n+s}Q${t},${n} ${t+s},${n}H${c-s}Q${c},${n} ${c},${n+s}V${i}Z`;case"down":return`M${t},${n}V${i-s}Q${t},${i} ${t+s},${i}H${c-s}Q${c},${i} ${c},${i-s}V${n}Z`;case"right":return`M${t},${n}H${c-s}Q${c},${n} ${c},${n+s}V${i-s}Q${c},${i} ${c-s},${i}H${t}Z`;case"left":return`M${c},${n}H${t+s}Q${t},${n} ${t},${n+s}V${i-s}Q${t},${i} ${t+s},${i}H${c}Z`}}function Mt(t,n,r,o){let e=t.length?t[0]:0,a=e;for(let s of t)((e)>(s)?(e=s):!1),(s>a?(a=s):!1);return (t.length?!0:([e,a]=[0,1])),(n?(e=Math.min(0,e),a=Math.max(0,a)):!1),(r!==null?(e=r):!1),(o!==null?(a=o):!1),(e===a?(a=e+1):!1),(e>a?([e,a]=[a,e]):!1),[e,a]}function Ye(t){var q,et;let{d3:n,spec:r,svg:o}=t,{data:e,style:a}=r,s=r.type==="area",c=(s?e.series.length>1:s),i=e.xKind==="category",m=e.x.map((A,D)=>e.xKind==="date"?Le(A):i?D:Number(A)),p=m.length;if(p===0)return;let l=__gvAnd((!s?e.series.some(A=>A.axis==="right"):!1),()=>(e.series.some(A=>A.axis!=="right"))),h=A=>(l?e.series[A].axis==="right":l),f=A=>e.series.filter((D,w)=>h(w)===A).flatMap(D=>D.values).filter(D=>D!==null),b=[],x,g;if(c){let A=m.map((D,w)=>e.series.map(U=>{var ut;return(ut=U.values[w])!=null?ut:0}));b=n.stack().keys(e.series.map((D,w)=>w)).value((D,w)=>D[w]).offset(n.stackOffsetDiverging)(A),[x,g]=Mt(b.flatMap(D=>D.flatMap(w=>[w[0],w[1]])),!0,a.yMin,a.yMax)}else[x,g]=Mt(f(!1),__gvOr(__gvOr(a.yFromZero,()=>(s)),()=>(We(t))),a.yMin,a.yMax);let k=t.margin,P=t.height-k.top-k.bottom,N=t.mobile?4:5,F=n.scaleLinear().domain([x,g]).nice(N).range([P,0]);t.setAxis(F.domain(),N),k.left=lt(t,wt(t,F).filter(function(v,i,a){return Math.abs(v)!==Math.max(Math.abs(a[0]),Math.abs(a[a.length-1]))}).map(t.fmtAxis),t.mobile?12:14)+10;let G=l?n.scaleLinear().domain(Mt(f(!0),a.rightFromZero,null,null)).nice(N).range([P,0]):F,y=l?t.rightAxis(G.domain(),N):t.fmtAxis,R=l?G.ticks(N):[],_=l?lt(t,R.map(y),t.mobile?12:14)+10:0,V=A=>h(A)?G:F,S=A=>t.fmtFor(e.series[A]),M=e.series.map(A=>{for(let D=A.values.length-1;D>=0;D--)if(A.values[D]!==null)return D;return-1}),I=__gvAnd(ie(r),()=>(!c)),B=__gvAnd((__gvOr(a.valueLabels,()=>(I))),()=>(!c)),O=A=>{if((0)>(M[A]))return["",""];let D=S(A)(e.series[A].values[M[A]]);return I?[e.series[A].label,a.valueLabels?D:""]:["",D]},Y=A=>O(A).filter(Boolean).join(" "),K=_?_+6:9,tt=I?{cls:t.cls("direct-label"),size:13,weight:700}:{cls:t.cls("value-label"),size:12,weight:500};if(B){let A=lt(t,e.series.map((D,w)=>Y(w)),tt.size,tt);k.right=Math.max(k.right,Math.min(A,t.width/3)+K+6)}else l?k.right=Math.max(k.right,_+4):(a.endDots?(k.right=Math.max(k.right,10)):!1);let H=Math.max(40,t.width-k.left-k.right),X=e.xKind==="date"?n.scaleUtc().domain(n.extent(m)).range([0,H]):n.scaleLinear().domain(n.extent(m)).range([0,H]),E=o.append("g").attr("transform",`translate(${k.left},${k.top})`);if(Tt(t,E,F,H),Xt(t,E,H,P),St(t,E,F,H),l){let A=xt(r,at(r,e.series.findIndex(D=>D.axis==="right"),t.dark),t.dark);E.append("g").attr("class",t.cls("ticks")).selectAll("text").data(R).join("text").attr("x",H+8).attr("y",D=>G(D)).attr("dy","0.32em").style("fill",A).text(D=>y(D)),(a.rightLabel?o.append("text").attr("class",t.cls("axis-title")).attr("x",t.width).attr("y",t.rightTitleY).attr("text-anchor","end").style("fill",A).text(a.rightLabel):!1)}let u=A=>X(A);Ut(t,E,P,Yt(t,u,Xn(t,X,m),i?p:Wt(H,t.mobile)),u);let d=A=>X(m[A]),T=t.id("plot");o.append("defs").append("clipPath").attr("id",T).append("rect").attr("x",-8).attr("y",-8).attr("width",H+16).attr("height",P+16);let v=E.append("g").attr("clip-path",(a.yMin!==null?!0:a.yMax!==null)?`url(#${T})`:null),L=E.append("g");if(s){let A=Et(t)?ft(t,v,H,P):null;(c?b:[e.series[0].values.map(w=>[0,w!=null?w:0])]).forEach((w,U)=>{var $;let j=($=n.area().x((z,W)=>d(W)).y0(z=>F(z[0])).y1(z=>F(z[1]))(w))!=null?$:"",C=A?dt(t,[e.series[U].key]):null;((A?C:!1)?A.clip(C).append("path").attr("d",j):!1),v.append("path").attr("class",t.cls("area")).attr("d",j).attr("fill",at(r,U,t.dark)).attr("fill-opacity",ht(t,C)),((p===1?e.series[U].values[0]!==null:!1)?v.append("circle").attr("cx",d(0)).attr("cy",F(w[0][1])).attr("r",3.5).attr("fill",at(r,U,t.dark)):!1)}),(A==null?!0:A.paint())}if(!s){let[A,D]=F.domain(),w=((We(t)?(0)>=(A):!1)?D>=0:!1)?dt(t,[e.series[0].key]):null,U=w?ft(t,v,H,P):null;if((U?w:!1)){let $=(q=n.area().defined(z=>z!==null).x((z,W)=>d(W)).y0(F(0)).y1(z=>F(z))(e.series[0].values))!=null?q:"";U.clip(w).append("path").attr("d",$),v.append("path").attr("d",$).attr("fill",at(r,0,t.dark)).attr("fill-opacity",ht(t,w)),U.paint()}let ut=C=>n.line().defined($=>$!==null).x(($,z)=>d(z)).y($=>V(C)($)),j=e.series.map((C,$)=>$).sort((C,$)=>Number(Ft(r,C))-Number(Ft(r,$))).reverse();for(let C of j){let $=e.series[C],z=(et=ut(C)($.values))!=null?et:"";((e.series.length>1?!Ft(r,C):!1)?v.append("path").attr("class",t.cls("line-halo")).attr("d",z):!1),v.append("path").attr("class",t.cls("line")).attr("d",z).attr("stroke",at(r,C,t.dark)).attr("stroke-width",Ft(r,C)?2:t.mobile?3:3.5).attr("stroke-dasharray",$.dashed?"6 4":null),$.values.forEach((W,st)=>{(((W===null?!0:$.values[st-1]!=null)?!0:$.values[st+1]!=null)?!0:v.append("circle").attr("cx",d(st)).attr("cy",V(C)(W)).attr("r",3.5).attr("fill",at(r,C,t.dark)))})}if((a.endDots?e.series.forEach((C,$)=>{if(((0)>(M[$])?!0:Ft(r,$)))return;let z=d(M[$]),W=V($)(e.series[$].values[M[$]]);v.append("circle").attr("class",`${t.cls("dot")} ${t.cls("dot--pulse")}`).attr("cx",z).attr("cy",W).attr("r",5).attr("fill",at(r,$,t.dark))}):!1),B){let C=e.series.map((z,W)=>({i:W,y:M[W]>=0?V(W)(z.values[M[W]]):NaN,x:M[W]>=0?d(M[W]):0})).filter(z=>(!Number.isNaN(z.y)?((!Ft(r,z.i)?!0:I)):!1));jt(C,15,6,P);let $=t.width/3;for(let z of C){let W=e.series[z.i].values[M[z.i]],[st,rt]=V(z.i).domain(),J=W>rt?-1:(st)>(W)?1:0,ot=(l?H:z.x)+K,pt=xt(r,at(r,z.i,t.dark),t.dark);(J?L.append("path").attr("class",t.cls("off-scale")).attr("d",`M${ot+4},${z.y+J*5}l-4,${-J*8}h8z`).attr("fill",pt).append("title").text((0)>(J)?"Above the axis range":"Below the axis range"):!1);let Lt=L.append("text").attr("class",t.cls(I?"direct-label":"value-label")).attr("x",ot+(J?12:0)).attr("y",z.y).attr("dy","0.32em").style("fill",pt).text(Y(z.i)),_t=Lt.node(),[At,he]=O(z.i),Nt=(At?At:he),dn=fe=>At?[`${fe.trimEnd()}\u2026`,he].filter(Boolean).join(" "):`${fe.trimEnd()}\u2026`;for(;(_t.getComputedTextLength()>$?Nt.length>4:!1);)Nt=Nt.slice(0,-2),Lt.text(dn(Nt))}}}let Z=E.append("g").attr("class",t.cls("hover")).style("display","none");Z.append("line").attr("class",t.cls("rule")).attr("y1",0).attr("y2",P);let Q=E.append("rect").attr("class",t.cls("overlay")).attr("width",H).attr("height",P);t.tooltip.bind(Q,A=>{var st;let[D]=n.pointer(A),w=X.invert(D),U=Math.max(0,Math.min(p-1,n.bisectCenter(m,w))),ut=d(U);Z.style("display",null).select("line").attr("x1",ut).attr("x2",ut);let j=e.series.map((rt,J)=>({si:J,v:rt.values[U]})).filter(rt=>rt.v!==null).sort((rt,J)=>J.v-rt.v),C=j.slice(0,8),$=C.map(rt=>it(t.cls("tip-row"),at(r,rt.si,t.dark),e.series[rt.si].label,S(rt.si)(rt.v))).join(""),z=j.length>C.length?`\x3cdiv class="${t.cls("tip-more")}">+${j.length-C.length} more\x3c/div>`:"",W=C.length?c?F((st=n.max(b,rt=>rt[U][1]))!=null?st:0):V(C[0].si)(C[0].v):P/2;t.tooltip.show(`\x3cdiv class="${t.cls("tip-title")}">${ct(i?String(e.x[U]):t.fmtX((e.xKind==="date",m[U])))}\x3c/div>${$}${z}`,ut+k.left,W+k.top)},()=>Z.style("display","none"))}function We(t){let{spec:n}=t;return __gvAnd((n.type==="line"?n.data.series.length===1:!1),()=>(!!dt(t,[n.data.series[0].key])))}function Ft(t,n){var r;return __gvAnd(t.style.paletteId.startsWith("highlight"),()=>(t.data.series[n].key!==((r=t.style.highlight)!=null?r:t.data.series[0].key)))}function Xn(t,n,r){let{d3:o,spec:e}=t,a=e.data;if(a.xKind==="date")return s=>{let c=Xe(o,n,r,s);return{ticks:c.ticks,label:(i,m)=>c.label(i,m)}};if(a.xKind==="category"){let s=a.x.map(String),c=s.length;return i=>({ticks:o.range(0,c,Math.max(1,Math.ceil(c/i))),label:m=>s[m]})}return Zt(t,n)}var Jt="http://www.w3.org/2000/svg",Ze=/[\p{Script=Latin}\p{Script=Greek}\p{Script=Cyrillic}]/u,Ue=/[_\-/.]/;function Wn(t,n,r){let o=[],e=Array.from(t);for(;(e.length>1?r(e.join(""))>n:!1);){let a=i=>{let m=e.slice(0,i).join("");return (Ze.test(e[i-1])?Ze.test(e[i]):!1)?`${m}-`:m},s=1;for(;((e.length-1)>(s)?__gvLe(r(a(s+1)),n):!1);)s++;let c=s;for(;(c>Math.ceil(s/2)?!Ue.test(e[c-1]):!1);)c--;(Ue.test(e[c-1])?(s=c):!1),o.push(a(s)),e=e.slice(s)}return{lines:o,rest:e.join("")}}function Ke(t,n,r,o){let e=[],a="";for(let s of t.split(/\s+/).filter(Boolean)){let c=a?`${a} ${s}`:s;if(__gvLe(o(c),n)){a=c;continue}(a?e.push(a):!1);let i=Wn(s,n,o);if(e.push(...i.lines),a=i.rest,e.length>r)break}if((a?e.push(a):!1),e.length>r){let s=Array.from(e[r-1].replace(/-$/,""));for(;(s.length>1?o(`${s.join("").trimEnd()}\u2026`)>n:!1);)s=s.slice(0,-1);e.length=r,e[r-1]=`${s.join("").trimEnd()}\u2026`}return e}function Qe(t){t.textContent="";let n=t.ownerDocument.createElementNS(Jt,"tspan");return t.appendChild(n),r=>(n.textContent=r,n.getComputedTextLength())}function Je(t,n,r){var a;let o=t.getAttribute("x"),e=t.ownerDocument;if(t.textContent="",(1)>=(n.length)){t.textContent=(a=n[0])!=null?a:"";return}n.forEach((s,c)=>{let i=e.createElementNS(Jt,"tspan");(o!==null?i.setAttribute("x",o):!1),(c?i.setAttribute("dy",`${r}em`):!1),i.textContent=s,t.appendChild(i)})}function ce(t,n,r,o,e){let a=Ke(n,r,o,Qe(t));Je(t,a,e);let s=__gvAnd((a.length>0?a[a.length-1].endsWith("\u2026"):!1),()=>(!n.endsWith("\u2026")));return{lines:Math.max(1,a.length),cut:s}}function Yn(t,n,r,o,e){let a=/\s/.test(t),s=f=>a?f.split(/\s+/).filter(Boolean):Array.from(f),c=f=>f.join(a?" ":""),i=s(t),m=n.filter(f=>f!==t).map(s),p=(f,b)=>(f.length>=b?c(f.slice(-b))===c(i.slice(-b)):!1),l=1;for(;((i.length)>(l)?m.some(f=>p(f,l)):!1);)l++;let h=c(i.slice(-l));for(let f=i.length-l-1;f>=0;f--){let b=c(i.slice(0,f)),x=a?`${b?`${b} `:""}\u2026 ${h}`:`${b}\u2026${h}`,g=Ke(x,r,1/0,e);if((o)>=(g.length))return g}return null}function tn(t,n){var a;let r=t.ownerDocument,o=r.createElementNS(Jt,"g"),e=r.createElementNS(Jt,"title");e.textContent=n,((a=t.parentNode)==null?!0:a.insertBefore(o,t)),o.appendChild(e),o.appendChild(t)}function le(t){var n;return __gvOr(Array.from(t.querySelectorAll("tspan")).map(r=>{var o;return(o=r.textContent)!=null?o:""}).join(" "),()=>(((n=t.textContent)!=null?n:"").trim()))}function ue(t,n,r,o=1.15){var s;let e=((s=t.textContent)!=null?s:"").trim(),a=ce(t,e,n,r,o);return (a.cut?tn(t,e):!1),a.lines}function gt(t,n,r,o=1.15){let e=t.map(s=>{var c;return((c=s.textContent)!=null?c:"").trim()}),a=t.map((s,c)=>s.getComputedTextLength()>n?ce(s,e[c],n,r,o):{lines:1,cut:!1});for(let s of Zn(t,e)){let c=Yn(e[s],e,n,r,Qe(t[s]));c?(Je(t[s],c,o),a[s]={lines:c.length,cut:!0}):a[s]=ce(t[s],e[s],n,r,o)}return a.forEach((s,c)=>__gvAnd(s.cut,()=>(tn(t[c],e[c])))),a.map(s=>s.lines)}function Zn(t,n){let r=new Map;t.forEach((e,a)=>{var s;return r.set(le(e),[...(s=r.get(le(e)))!=null?s:[],a])});let o=[];for(let e of r.values())(new Set(e.map(a=>n[a])).size>1?o.push(...e.filter(a=>n[a]!==le(t[a]))):!1);return o}var en=110,Un=3,Kn=19,Qn=10;function me(t){return t.toUpperCase()===mt.orange?mt.azure:mt.orange}function nn(t){var et,A,D,w,U,ut;let{d3:n,spec:r,svg:o}=t,{data:e,style:a}=r,s=r.type==="stacked",c=r.type==="combo",i=j=>(!c?!0:j===0),m=j=>__gvAnd((c?j>0:c),()=>(e.series[j].axis==="right")),p=j=>t.fmtFor(e.series[j]),l=e.x.map(j=>t.fmtX(j)),h=l.length;if(h===0)return;let f=e.series.length,b=0,x=0,g=[];if(s){let j=e.x.map((C,$)=>e.series.map(z=>{var W;return(W=z.values[$])!=null?W:0}));g=n.stack().keys(e.series.map((C,$)=>$)).value((C,$)=>C[$]).offset(n.stackOffsetDiverging)(j),b=Math.min(0,(et=n.min(g,C=>n.min(C,$=>$[0])))!=null?et:0),x=Math.max(0,(A=n.max(g,C=>n.max(C,$=>$[1])))!=null?A:0)}else{let j=e.series.filter((C,$)=>!m($)).flatMap(C=>C.values).filter(C=>C!==null);b=Math.min(0,(D=n.min(j))!=null?D:0),x=Math.max(0,(w=n.max(j))!=null?w:0)}((a.yMax!==null?a.yMax>x:!1)?(x=a.yMax):!1),(b===x?(x=1):!1);let k=e.series.some((j,C)=>m(C)),P=t.mobile?4:5,N=null,F=t.fmtAxis,G=0;if(k){let j=e.series.filter((z,W)=>m(W)).flatMap(z=>z.values).filter(z=>z!==null),C=(U=n.min(j))!=null?U:0,$=(ut=n.max(j))!=null?ut:1;(a.rightFromZero?(C=Math.min(0,C),$=Math.max(0,$)):!1),(C===$?($=C+1):!1),N=n.scaleLinear().domain([C,$]).nice(P),F=t.rightAxis(N.domain(),P),G=lt(t,N.ticks(P).map(F),t.mobile?12:14)+10,t.margin.right=Math.max(t.margin.right,G+4)}let y=t.margin,R=n.scaleLinear().domain([b,x]).nice(t.mobile?4:5).range([t.height-y.top-40,0]);t.setAxis(R.domain(),t.mobile?4:5),y.left=lt(t,wt(t,R).filter(function(v,i,a){return Math.abs(v)!==Math.max(Math.abs(a[0]),Math.abs(a[a.length-1]))}).map(t.fmtAxis),t.mobile?12:14)+10;let _=Math.max(40,t.width-y.left-y.right),V=n.scaleBand().domain(l.map((j,C)=>String(C))).range([0,_]).paddingInner(.25).paddingOuter(.1),S=V.bandwidth(),M=t.mobile?12:13,I=lt(t,l,M),B=e.xKind!=="category",O=1,Y="flat";(I>S+V.step()*.25?(B?O=Math.ceil((I+10)/V.step()):Y=((14)>=(h)?S>36:!1)?"wrap":"rotate"):!1),(Y==="rotate"?(O=Math.max(1,Math.ceil(14/Math.max(1,V.step())))):!1);let K=o.append("g").attr("class",t.cls("ticks")),tt=0,H=[];l.forEach((j,C)=>{var st;if(C%O!==0)return;let $=((st=V(String(C)))!=null?st:0)+S/2,z=K.append("text").style("font-size",`${M}px`).text(j),W=z.node();if(Y==="rotate"){z.attr("text-anchor","end").attr("transform",`translate(${$},12) rotate(-45)`);let rt=Math.min((en-12)/.72,($+y.left-M)/Math.SQRT1_2);(W.getComputedTextLength()>rt?ue(W,rt,1):!1),tt=Math.max(tt,W.getComputedTextLength())}else z.attr("x",$).attr("y",20).attr("text-anchor","middle"),(Y==="wrap"?H.push(W):!1)});let X=Math.max(1,...gt(H,V.step()-4,Un));y.bottom=Y==="rotate"?Math.min(en,tt*.72+12)+8:Y==="wrap"?Math.ceil(20+(X-1)*M*1.15+M*.35+8):30;let E=Math.max(60,t.height-y.top-y.bottom),u=n.scaleLinear().domain([b,x]).nice(P).range([E,0]);((a.valueLabels?(24)>=(h):!1)?tr(u,E,y.top,Jn(t,g)):!1),(N==null?!0:N.range([E,0])),K.attr("transform",`translate(${y.left},${y.top+E})`);let d=o.append("g").attr("transform",`translate(${y.left},${y.top})`);if(Tt(t,d,u,_),N){let j=xt(r,at(r,e.series.findIndex((C,$)=>m($)),t.dark),t.dark);d.append("g").attr("class",t.cls("ticks")).selectAll("text").data(N.ticks(P)).join("text").attr("x",_+8).attr("y",C=>N(C)).attr("dy","0.32em").style("fill",j).text(C=>F(C)),(a.rightLabel?o.append("text").attr("class",t.cls("axis-title")).attr("x",t.width).attr("y",t.rightTitleY).attr("text-anchor","end").style("fill",j).text(a.rightLabel):!1)}let T=d.append("g"),v=Et(t)?ft(t,T,_,E):null,L=c?1:f,Z=n.scaleBand().domain(n.range(L)).range([0,S]).padding(L>1?.08:0),Q=[];if(s?(g.forEach((j,C)=>{j.forEach(($,z)=>{var pt;let W=u($[0]),st=u($[1]),rt=Math.abs(W-st);if((0)>=(rt))return;let J=(pt=V(String(z)))!=null?pt:0,ot=v?dt(t,[e.series[C].key,String(e.x[z])]):null;((v?ot:!1)?v.clip(ot).append("rect").attr("x",J).attr("y",Math.min(W,st)).attr("width",S).attr("height",rt):!1),T.append("rect").attr("class",t.cls("segment")).attr("x",J).attr("y",Math.min(W,st)).attr("width",S).attr("height",rt).attr("fill",at(r,C,t.dark)).attr("fill-opacity",ht(t,ot))})}),(a.valueLabels?e.x.forEach((j,C)=>{var rt;let $=e.series.map(J=>{var ot;return(ot=J.values[C])!=null?ot:0}),z=$.filter(J=>J>0).reduce((J,ot)=>J+ot,0),W=$.filter(J=>(0)>(J)).reduce((J,ot)=>J+ot,0),st=((rt=V(String(C)))!=null?rt:0)+S/2;(((z>0?!0:W===0))?Q.push({x:st,y:u(z)-6,text:t.fmtValue(z),below:!1}):!1),((0)>(W)?Q.push({x:st,y:u(W)+14,text:t.fmtValue(W),below:!0}):!1)}):!1)):e.series.forEach((j,C)=>{(i(C)?j.values.forEach(($,z)=>{var _t,At;if($===null)return;let W=((_t=V(String(z)))!=null?_t:0)+((At=Z(C))!=null?At:0),st=Z.bandwidth(),rt=u(Math.max(0,$)),J=Math.abs(u($)-u(0)),ot=Qt(W,rt,st,J,4,$>=0?"up":"down"),pt=v?dt(t,[j.key,String(e.x[z])]):null;((v?pt:!1)?v.clip(pt,Kt(t,String(e.x[z]))?{x:W,y:rt,w:st,h:J}:void 0).append("path").attr("d",ot):!1);let Lt=at(r,C,t.dark);T.append("path").attr("class",t.cls("bar")).attr("d",ot).attr("fill",(((0)>($)?L===1:!1)?!c:!1)?me(Lt):Lt).attr("fill-opacity",ht(t,pt)),(a.valueLabels?Q.push({x:W+st/2,y:$>=0?u($)-6:u($)+14,text:p(C)($),below:(0)>($)}):!1)}):!1)}),(v==null?!0:v.paint()),St(t,d,u,_),(c?e.series.forEach((j,C)=>{var rt;if(C===0)return;let $=(m(C)?N:!1)?N:u,z=J=>{var ot;return((ot=V(String(J)))!=null?ot:0)+S/2},W=(rt=n.line().defined(J=>J!==null).x((J,ot)=>z(ot)).y(J=>$(J))(j.values))!=null?rt:"",st=at(r,C,t.dark);T.append("path").attr("class",t.cls("line-halo")).attr("d",W),T.append("path").attr("class",t.cls("line")).attr("d",W).attr("stroke",st).attr("stroke-width",t.mobile?3:3.5).attr("stroke-dasharray",j.dashed?"6 4":null),j.values.forEach((J,ot)=>{(J!==null?T.append("circle").attr("class",t.cls("dot")).attr("cx",z(ot)).attr("cy",$(J)).attr("r",h>24?2.5:4).attr("fill",st):!1)})}):!1),(Q.length?(24)>=(h):!1)){let j=(L>1?!s:!1)?Z.bandwidth():S;(__gvLe(lt(t,Q.map($=>$.text),12),j+6)?d.append("g").selectAll("text").data(Q).join("text").attr("class",t.cls("value-label")).attr("x",$=>$.x).attr("y",$=>$.y).attr("text-anchor","middle").text($=>$.text):!1)}let q=d.append("g").selectAll("rect").data(l.map((j,C)=>C)).join("rect").attr("class",t.cls("overlay")).attr("x",j=>{var C;return((C=V(String(j)))!=null?C:0)-(V.step()-S)/2}).attr("width",V.step()).attr("y",0).attr("height",E);t.tooltip.bind(q,(j,C)=>{let $=l[C],z=e.series.map((J,ot)=>J.values[C]===null?"":it(t.cls("tip-row"),at(r,ot,t.dark),J.label,p(ot)(J.values[C]))).join(""),W=(s?f>1:!1)?it(t.cls("tip-row"),"transparent","Total",t.fmtValue(e.series.reduce((J,ot)=>{var pt;return J+((pt=ot.values[C])!=null?pt:0)},0))):"",[st,rt]=n.pointer(j,t.chartEl);t.tooltip.show(`\x3cdiv class="${t.cls("tip-title")}">${ct($)}\x3c/div>${z}${W}`,st,rt)})}function Jn(t,n){var c,i,m,p;let{d3:r,spec:o}=t;if(o.type==="stacked"){let l=(c=r.min(n,h=>r.min(h,f=>f[0])))!=null?c:0;return{top:(i=r.max(n,h=>r.max(h,f=>f[1])))!=null?i:null,bottom:(0)>(l)?l:null}}let e=(o.type==="combo"?o.data.series.slice(0,1):o.data.series).flatMap(l=>l.values).filter(l=>l!==null),a=(m=r.max(e.filter(l=>l>=0)))!=null?m:null,s=(p=r.min(e.filter(l=>(0)>(l))))!=null?p:null;return{top:a,bottom:s}}function tr(t,n,r,o){let e=Math.min(.4,Qn/n),a=Math.min(.4,Math.max(0,Kn-r)/n);for(let s=0;(3)>(s);s++){let[c,i]=t.domain();((o.bottom!==null?t(o.bottom)>n*(1-e):!1)?(c=i-(i-o.bottom)/(1-e)):!1),((o.top!==null?__gvLt(t(o.top),n*a):!1)?(i=(o.top-a*c)/(1-a)):!1),t.domain([c,i])}}var er=3;function nr(t){return t>1?t*13+14:30}function rn(t){var X,E;let{d3:n,spec:r,svg:o}=t,{data:e,style:a}=r,s=e.x.map(u=>t.fmtX(u)),c=s.length;if(c===0)return;let i=e.series.length,m=t.margin,p=e.series.flatMap(u=>u.values).filter(u=>u!==null),l=Math.min(0,(X=n.min(p))!=null?X:0),h=Math.max(0,(E=n.max(p))!=null?E:0);((a.yMax!==null?a.yMax>h:!1)?(h=a.yMax):!1),(l===h?(h=1):!1);let f=t.mobile?13:14,b=t.width*(t.mobile?.42:.34),x=Math.min(b,lt(t,s,f));m.left=x+10;let g=a.valueLabels,k=g?lt(t,p.map(t.fmtValue),12)+8:0;m.right=Math.max(m.right,k),(((0)>(l)?g:!1)?(m.left+=k):!1),m.bottom=g?8:28;let P=Math.max(40,t.width-m.left-m.right),N=o.append("g").attr("transform",`translate(${m.left},${m.top})`),F=N.append("g").attr("class",t.cls("cat-labels")),G=s.map(u=>F.append("text").attr("x",-10-(((0)>(l)?g:!1)?k:0)).attr("text-anchor","end").style("font-size",`${f}px`).text(u)),y=gt(G.map(u=>u.node()),x,er),R=G.map((u,d)=>({t:u,lines:y[d]})),_=nr(i),V=Math.max(_,Math.ceil(n.max(R,u=>u.lines)*f*1.15+10)),S=c*V,M=n.scaleLinear().domain([l,h]).nice(t.mobile?4:5).range([0,P]);t.setAxis(M.domain(),t.mobile?4:5);let I=Math.max(.25,1-_*.75/V),B=n.scaleBand().domain(s.map((u,d)=>String(d))).range([0,S]).paddingInner(I).paddingOuter(I/2),O=n.scaleBand().domain(n.range(i)).range([0,B.bandwidth()]).padding(i>1?.1:0);if(R.forEach(({t:u,lines:d},T)=>{var v;u.attr("y",((v=B(String(T)))!=null?v:0)+B.bandwidth()/2).attr("dy",`${.32-(d-1)*.575}em`)}),!g){let u=M.ticks(t.mobile?4:5);N.append("g").attr("class",t.cls("grid")).selectAll("line").data(u).join("line").attr("x1",d=>Math.round(M(d))+.5).attr("x2",d=>Math.round(M(d))+.5).attr("y1",0).attr("y2",S),N.append("g").attr("class",t.cls("ticks")).selectAll("text").data(u).join("text").attr("x",d=>M(d)).attr("y",S+20).attr("text-anchor","middle").text(d=>t.fmtAxis(d))}let Y=N.append("g"),K=Et(t)?ft(t,Y,P,S):null,tt=[];e.series.forEach((u,d)=>{u.values.forEach((T,v)=>{var w,U;if(T===null)return;let L=((w=B(String(v)))!=null?w:0)+((U=O(d))!=null?U:0),Z=O.bandwidth(),Q=M(Math.min(0,T)),q=Math.abs(M(T)-M(0)),et=Qt(Q,L,q,Z,4,T>=0?"right":"left"),A=K?dt(t,[u.key,String(e.x[v])]):null;((K?A:!1)?K.clip(A,Kt(t,String(e.x[v]))?{x:Q,y:L,w:q,h:Z}:void 0).append("path").attr("d",et):!1);let D=at(r,d,t.dark);Y.append("path").attr("class",t.cls("bar")).attr("d",et).attr("fill",((0)>(T)?i===1:!1)?me(D):D).attr("fill-opacity",ht(t,A)),(g?tt.push({x:T>=0?M(T)+6:M(T)-6,y:L+Z/2,text:t.fmtValue(T),anchor:T>=0?"start":"end"}):!1)})}),(K==null?!0:K.paint()),(0)>(l)?N.append("line").attr("class",t.cls("zero")).attr("x1",M(0)).attr("x2",M(0)).attr("y1",0).attr("y2",S):N.append("line").attr("class",t.cls("baseline")).attr("x1",M(0)+.5).attr("x2",M(0)+.5).attr("y1",0).attr("y2",S),N.append("g").selectAll("text").data(tt).join("text").attr("class",t.cls("value-label")).attr("x",u=>u.x).attr("y",u=>u.y).attr("dy","0.32em").attr("text-anchor",u=>u.anchor).text(u=>u.text);let H=N.append("g").selectAll("rect").data(s.map((u,d)=>d)).join("rect").attr("class",t.cls("overlay")).attr("x",-m.left).attr("width",t.width).attr("y",u=>{var d;return((d=B(String(u)))!=null?d:0)-(B.step()-B.bandwidth())/2}).attr("height",B.step());return t.tooltip.bind(H,(u,d)=>{if((i===1?g:!1))return;let T=s[d],v=e.series.map((Q,q)=>Q.values[d]===null?"":it(t.cls("tip-row"),at(r,q,t.dark),Q.label,t.fmtValue(Q.values[d]))).join(""),[L,Z]=n.pointer(u,t.chartEl);t.tooltip.show(`\x3cdiv class="${t.cls("tip-title")}">${ct(T)}\x3c/div>${v}`,L,Z)}),S+m.top+m.bottom}var an=40;function on(t){var X,E;let{d3:n,spec:r,svg:o}=t,{data:e,style:a}=r,s=(X=e.points)!=null?X:[];if(!s.length)return;let c=new Map(e.series.map((u,d)=>[u.key,d])),i=u=>{var d,T;return at(r,(T=c.get((d=u.group)!=null?d:e.series[0].key))!=null?T:0,t.dark)},m=([u,d])=>{let T=(__gvOr(__gvOr(d-u,()=>(Math.abs(u))),()=>(1)))*.04;return[u-T,d+T]},[p,l]=m(n.extent(s,u=>u.x));(a.xFromZero?(p=Math.min(0,p),l=Math.max(0,l)):!1),(a.xMin!==null?(p=a.xMin):!1),(a.xMax!==null?(l=a.xMax):!1);let[h,f]=m(n.extent(s,u=>u.y));(a.yFromZero?(h=Math.min(0,h),f=Math.max(0,f)):!1),(a.yMin!==null?(h=a.yMin):!1),(a.yMax!==null?(f=a.yMax):!1),(p>l?([p,l]=[l,p]):!1),(h>f?([h,f]=[f,h]):!1);let b=t.margin;b.bottom=a.xLabel?48:30;let x=t.height-b.top-b.bottom,g=n.scaleLinear().domain([h,f===h?h+1:f]).nice(5).range([x,0]);t.setAxis(g.domain(),t.mobile?4:5),b.left=lt(t,wt(t,g).filter(function(v,i,a){return Math.abs(v)!==Math.max(Math.abs(a[0]),Math.abs(a[a.length-1]))}).map(t.fmtAxis),t.mobile?12:14)+10;let k=Math.max(40,t.width-b.left-b.right),P=n.scaleLinear().domain([p,l===p?p+1:l]).nice().range([0,k]),N=o.append("g").attr("transform",`translate(${b.left},${b.top})`);Tt(t,N,g,k),Xt(t,N,k,x),St(t,N,g,k);let F=u=>P(u);Ut(t,N,x,Yt(t,F,Zt(t,P),Wt(k,t.mobile)),F),(a.xLabel?N.append("text").attr("class",t.cls("axis-title")).attr("x",k).attr("y",x+42).attr("text-anchor","end").text(a.xLabel):!1);let G=t.mobile?4:5.5,y=t.id("plot");o.append("defs").append("clipPath").attr("id",y).append("rect").attr("x",-G).attr("y",-G).attr("width",k+2*G).attr("height",x+2*G),N.append("g").attr("clip-path",`url(#${y})`).selectAll("circle").data(s).join("circle").attr("class",t.cls("point")).attr("cx",u=>P(u.x)).attr("cy",u=>g(u.y)).attr("r",G).attr("fill",i);let[R,_]=P.domain(),[V,S]=g.domain(),M=s.filter(u=>__gvAnd(__gvAnd(__gvAnd(__gvAnd(u.label,()=>(u.x>=R)),()=>((_)>=(u.x))),()=>(u.y>=V)),()=>((S)>=(u.y)))).slice(0,an);if((M.length?(an)>=(M.length):!1)){let{kept:u}=je(M.map(d=>({p:d,y:g(d.y)-G-5})),13,8,x,40);N.append("g").selectAll("text").data(u).join("text").attr("class",t.cls("value-label")).attr("x",d=>P(d.p.x)).attr("y",d=>d.y).attr("text-anchor",d=>P(d.p.x)>k*.85?"end":__gvLt(P(d.p.x),k*.15)?"start":"middle").text(d=>d.p.label)}let I=n.Delaunay.from(s,u=>P(u.x),u=>g(u.y)),B=N.append("circle").attr("class",t.cls("ring")).attr("r",G+3).style("display","none"),O=s.some(u=>u.group!==void 0),Y=__gvOr(__gvOr(a.yLabel,()=>((O?"Vertical axis":(E=e.series[0])==null?void 0:E.label))),()=>("Vertical axis")),K=__gvOr(a.xLabel,()=>("Horizontal axis")),tt=N.append("rect").attr("class",t.cls("overlay")).attr("width",k).attr("height",x),H=()=>B.style("display","none");t.tooltip.bind(tt,u=>{let[d,T]=n.pointer(u),v=I.find(d,T),L=s[v];if((!L?!0:Math.hypot(P(L.x)-d,g(L.y)-T)>40)){H(),t.tooltip.hide();return}B.style("display",null).attr("cx",P(L.x)).attr("cy",g(L.y));let Z=__gvOr(__gvOr(L.label,()=>(L.group)),()=>("")),Q=((O?L.group:!1)?L.label:!1)?it(t.cls("tip-row"),i(L),L.group,""):"",q=((O?L.group:!1)?L.label:!1)?"transparent":i(L),et=Q+it(t.cls("tip-row"),"transparent",K,t.fmtX(L.x))+it(t.cls("tip-row"),q,Y,t.fmtValue(L.y));t.tooltip.show(`${Z?`\x3cdiv class="${t.cls("tip-title")}">${ct(Z)}\x3c/div>`:""}${et}`,P(L.x)+b.left,g(L.y)+b.top)},H)}var rr=.25,ar=16,or=3;function sn(t){let{d3:n,spec:r,svg:o}=t,{data:e,style:a}=r,s=e.x.map(String),c=e.series.length;if((!s.length?!0:!c))return t.height;let i=Math.max(1,Math.min(c,Math.floor(t.width/(t.mobile?170:220)))),m=Math.ceil(c/i),p=t.width/i,l=_=>_%i*p+p/2,h=c>1?e.series.map((_,V)=>o.append("text").attr("class",t.cls("donut-title")).attr("x",l(V)).attr("text-anchor","middle").text(_.label)):[],f=gt(h.map(_=>_.node()),p-12,or),b=h.map((_,V)=>({t:_,lines:f[V]})),x=Math.max(1,...b.map(_=>_.lines)),g=c>1?30+Math.ceil((x-1)*ar*1.15):0,k=Math.max(50,Math.min(p/2-12,t.mobile?130:150)),P=a.donutHole?k*.56:0,N=g+k*2+18,F=_=>{var V,S;return yt(r,(S=(V=e.categoryColors)==null?void 0:V[_])!=null?S:nt.muted,t.dark)},G=n.format(".0%"),y=n.arc().innerRadius(P).outerRadius(k).padAngle(a.donutHole?.012:.006).cornerRadius(a.donutHole?2:0),R=n.arc().innerRadius(P?(P+k)/2:k*.62).outerRadius(P?(P+k)/2:k*.62);return e.series.forEach((_,V)=>{var H;let S=Math.floor(V/i),M=l(V),I=S*N+g+k+6,B=_.values.map(X=>(X!==null?X>0:!1)?X:0),O=B.reduce((X,E)=>X+E,0),Y=o.append("g").attr("transform",`translate(${M},${I})`);if(((H=b[V])==null?!0:H.t.attr("y",S*N+18)),!O)return;let K=n.pie().sort(null).value(X=>X)(B),tt=ft(t,Y,0,0);K.forEach((X,E)=>{var v;if((0)>=(X.value))return;let u=(v=y(X))!=null?v:"",d=dt(t,[s[E],_.key]);(d?tt.clip(d,{x:-k,y:-k,w:k*2,h:k*2}).append("path").attr("d",u):!1);let T=Y.append("path").attr("class",t.cls("slice")).attr("d",u).attr("fill",F(E)).attr("fill-opacity",ht(t,d));t.tooltip.bind(T,L=>{var et;let[Z,Q]=n.pointer(L,t.chartEl),q=it(t.cls("tip-row"),F(E),c>1?_.label:"Value",t.fmtValue((et=_.values[E])!=null?et:0))+it(t.cls("tip-row"),"transparent","Share",G(X.value/O));t.tooltip.show(`\x3cdiv class="${t.cls("tip-title")}">${ct(s[E])}\x3c/div>${q}`,Z,Q)})}),tt.paint(),K.forEach((X,E)=>{if(((rr)>(X.endAngle-X.startAngle)?!0:(0)>=(X.value)))return;let[u,d]=R.centroid(X),T=Ot(F(E)),v=Y.append("text").attr("class",t.cls("slice-label")).attr("x",u).attr("y",d).attr("dy","0.35em").attr("text-anchor","middle").text(G(X.value/O));(T!=="#FFFFFF"?v.style("fill",T).style("stroke","rgba(255,255,255,0.35)"):!1)})}),m*N+6}function ln(t){let{d3:n,spec:r,svg:o}=t,{data:e,style:a}=r,[s,c]=e.series;if(((!s?!0:!c)?!0:!e.x.length))return;let m=e.x.map(String).map((u,d)=>({i:d,name:u,a:s.values[d],b:c.values[d]})).filter(u=>(u.a!==null?u.b!==null:!1));if(!m.length)return;let p=t.margin;p.top=Math.max(p.top,34),p.bottom=14;let l=t.mobile?12:13,h=l+3,f=Math.max(t.height-p.top-p.bottom,m.length*h);o.attr("height",f+p.top+p.bottom);let[b,x]=Mt(m.flatMap(u=>[u.a,u.b]),a.yFromZero,a.yMin,a.yMax),g=n.scaleLinear().domain([b,x]).nice().range([f,0]),[k,P]=g.domain(),N=(u,d)=>d==="left"?{name:u.name,value:t.fmtValue(u.a),nameFirst:!0}:{name:t.mobile?"":u.name,value:t.fmtValue(u.b),nameFirst:!1},F=(u,d=u.name)=>d?u.nameFirst?`${d} ${u.value}`:`${u.value} ${d}`:u.value,G=u=>F(N(u,"left")),y=u=>F(N(u,"right")),R=t.width*(t.mobile?.4:.3),_=Math.min(R,lt(t,m.map(G),l))+12,V=Math.min(R,lt(t,m.map(y),l))+12,S=_,M=Math.max(S+60,t.width-V),I=u=>{var d,T;return yt(r,(T=(d=e.categoryColors)==null?void 0:d[u])!=null?T:nt.muted,t.dark)},B=u=>(I(u).toUpperCase()===nt.muted.toUpperCase()?!0:I(u).toUpperCase()===nt.darkMuted.toUpperCase()),O=o.append("g").attr("transform",`translate(0,${p.top})`);o.append("text").attr("class",t.cls("slope-head")).attr("x",S).attr("y",18).attr("text-anchor","middle").text(s.label),o.append("text").attr("class",t.cls("slope-head")).attr("x",M).attr("y",18).attr("text-anchor","middle").text(c.label),O.append("line").attr("class",t.cls("slope-axis")).attr("x1",S).attr("x2",S).attr("y1",0).attr("y2",f),O.append("line").attr("class",t.cls("slope-axis")).attr("x1",M).attr("x2",M).attr("y1",0).attr("y2",f);let Y=t.id("plot");o.append("defs").append("clipPath").attr("id",Y).append("rect").attr("x",0).attr("y",-5).attr("width",t.width).attr("height",f+10);let K=O.append("g").attr("clip-path",(a.yMin!==null?!0:a.yMax!==null)?`url(#${Y})`:null),tt=[...m].sort((u,d)=>+!B(u.i)-+!B(d.i));for(let u of tt){let d=I(u.i);K.append("line").attr("class",t.cls("slope-line")).attr("x1",S).attr("x2",M).attr("y1",g(u.a)).attr("y2",g(u.b)).attr("stroke",d).attr("stroke-width",B(u.i)?2:3),K.append("circle").attr("cx",S).attr("cy",g(u.a)).attr("r",4).attr("fill",d),K.append("circle").attr("cx",M).attr("cy",g(u.b)).attr("r",4).attr("fill",d)}let H=new Set,X=u=>{let d=m.map(v=>({r:v,y:g(u==="left"?v.a:v.b)}));sr(d,h,h/2,f);let T=u==="left"?S:M;for(let v of d){let L=u==="left"?v.r.a:v.r.b,Z=L>P?-1:(k)>(L)?1:0;((Z?!H.has(`${u}${Z}`):!1)?(H.add(`${u}${Z}`),O.append("path").attr("class",t.cls("off-scale")).attr("d",`M${T},${(0)>(Z)?-8:f+8}l-5,${-Z*8}h10z`).attr("fill",t.dark?nt.darkSecondary:nt.secondary).append("title").text((0)>(Z)?"Above the axis range":"Below the axis range")):!1);let Q=N(v.r,u),q=O.append("text").attr("class",t.cls("slope-label")).attr("x",u==="left"?S-10:M+10).attr("y",v.y).attr("dy","0.32em").attr("text-anchor",u==="left"?"end":"start").style("font-size",`${l}px`).text(F(Q));(B(v.r.i)?!0:q.style("fill",xt(r,I(v.r.i),t.dark)));let et=q.node(),A=Q.name;for(;(et.getComputedTextLength()>R?A.length>3:!1);)A=A.slice(0,-1),q.text(F(Q,`${A.trimEnd()}\u2026`))}};X("left"),X("right");let E=O.append("rect").attr("class",t.cls("overlay")).attr("x",S).attr("width",M-S).attr("height",f);t.tooltip.bind(E,u=>{let[d,T]=n.pointer(u),v=(d-S)/(M-S),L=m[0],Z=1/0;for(let et of m){let A=g(et.a)+(g(et.b)-g(et.a))*v;(__gvLt(Math.abs(A-T),Z)?([L,Z]=[et,Math.abs(A-T)]):!1)}let Q=L.b-L.a,q=it(t.cls("tip-row"),I(L.i),s.label,t.fmtValue(L.a))+it(t.cls("tip-row"),I(L.i),c.label,t.fmtValue(L.b))+it(t.cls("tip-row"),"transparent","Change",`${Q>=0?"+":""}${t.fmtValue(Q)}`);t.tooltip.show(`\x3cdiv class="${t.cls("tip-title")}">${ct(L.name)}\x3c/div>${q}`,d,T+p.top)})}function sr(t,n,r,o){let e=[...t].sort((a,s)=>a.y-s.y);e.forEach((a,s)=>a.y=Math.max(a.y,s?e[s-1].y+n:r));for(let a=e.length-1;a>=0;a--)e[a].y=Math.min(e[a].y,(e.length-1)>(a)?e[a+1].y-n:o)}var ir=3;function cn(t){let{d3:n,spec:r,svg:o}=t,{data:e,style:a}=r,s=e.x.map(E=>t.fmtX(E)),c=s.length;if((!c?!0:!e.series.length))return t.height;let i=t.margin,m=t.mobile?30:32,p=t.mobile?13:14,l=t.width*(t.mobile?.38:.3),h=Math.min(l,lt(t,s,p));i.left=h+14,i.right=Math.max(i.right,16),i.bottom=30,i.top=Math.max(i.top,6);let f=Math.max(60,t.width-i.left-i.right),b=o.append("g").attr("transform",`translate(${i.left},${i.top})`),x=s.map(E=>b.append("text").attr("class",t.cls("cat-label")).attr("x",-12).attr("text-anchor","end").style("font-size",`${p}px`).text(E)),g=gt(x.map(E=>E.node()),h,ir),k=Math.max(m,Math.ceil(Math.max(1,...g)*p*1.15+10)),P=c*k,N=e.series.flatMap(E=>E.values).filter(E=>E!==null),[F,G]=Mt(N,a.yFromZero,a.yMin,a.yMax),y=t.mobile?4:5,R=n.scaleLinear().domain([F,G]).nice(y).range([0,f]);t.setAxis(R.domain(),y);let[_,V]=R.domain(),S=E=>(E>=_?(V)>=(E):!1),M=E=>E*k+k/2,I=E=>e.series.map(u=>u.values[E]).filter(u=>u!==null),B=s.map((E,u)=>a.valueLabels?lr(I(u),S):[]);(a.valueLabels?pr(t,R,f,B):!1);let O=cr(t,R,y),Y=E=>lt(t,[t.fmtValue(E)],12),K=B.map(E=>ur(R,f,E,Y)),tt=t.id("plot");o.append("defs").append("clipPath").attr("id",tt).append("rect").attr("x",R(_)-8).attr("y",0).attr("width",R(V)-R(_)+16).attr("height",P),b.append("g").attr("class",t.cls("grid")).selectAll("line").data(O).join("line").attr("x1",E=>Math.round(R(E))+.5).attr("x2",E=>Math.round(R(E))+.5).attr("y1",0).attr("y2",P),b.append("g").attr("class",t.cls("ticks")).selectAll("text").data(O).join("text").attr("x",E=>R(E)).attr("y",P+20).attr("text-anchor","middle").text(E=>t.fmtAxis(E)),(((0)>(F)?G>0:!1)?b.append("line").attr("class",t.cls("zero")).attr("x1",R(0)).attr("x2",R(0)).attr("y1",0).attr("y2",P):!1);let H=b.append("g").attr("clip-path",`url(#${tt})`);s.forEach((E,u)=>{x[u].attr("y",M(u)).attr("dy",`${.32-(g[u]-1)*.575}em`);let d=I(u),T=Math.min(...d),v=Math.max(...d);(((d.length>1?v>=_:!1)?(V)>=(T):!1)?H.append("line").attr("class",t.cls("dumbbell")).attr("x1",R(Math.max(_,T))).attr("x2",R(Math.min(V,v))).attr("y1",M(u)).attr("y2",M(u)):!1),mr(t,b,R,M(u),d),e.series.forEach((L,Z)=>{let Q=L.values[u];(Q!==null?H.append("circle").attr("class",t.cls("dot")).attr("cx",R(Q)).attr("cy",M(u)).attr("r",t.mobile?6:7).attr("fill",at(r,Z,t.dark)):!1)});for(let L of K[u])b.append("text").attr("class",t.cls("value-label")).attr("x",R(L.v)+L.dx).attr("y",M(u)).attr("dy","0.32em").attr("text-anchor",L.anchor).text(t.fmtValue(L.v))});let X=b.append("g").selectAll("rect").data(s.map((E,u)=>u)).join("rect").attr("class",t.cls("overlay")).attr("x",-i.left).attr("width",t.width).attr("y",E=>E*k).attr("height",k);return t.tooltip.bind(X,(E,u)=>{let d=e.series.map((L,Z)=>L.values[u]===null?"":it(t.cls("tip-row"),at(r,Z,t.dark),L.label,t.fmtValue(L.values[u]))).join(""),[T,v]=n.pointer(E,t.chartEl);t.tooltip.show(`\x3cdiv class="${t.cls("tip-title")}">${ct(s[u])}\x3c/div>${d}`,T,v)}),P+i.top+i.bottom}function lr(t,n){if(!t.length)return[];let r=Math.min(...t),o=Math.max(...t),e=[];return (((o)>(r)?n(r):!1)?e.push({v:r,anchor:"end",dx:-11}):!1),(n(o)?e.push({v:o,anchor:"start",dx:11}):!1),e}function cr(t,n,r){for(let o=r;o>=1;o--){t.setAxis(n.domain(),o);let e=n.ticks(o),a=e.map(c=>lt(t,[t.fmtAxis(c)],12));if((e.every((c,i)=>(i===0?!0:n(c)-n(e[i-1])>=(a[i]+a[i-1])/2+8))?!0:o===1))return e}return[]}function ur(t,n,r,o){let e=l=>{let h=l.anchor==="start"?t(l.v)+l.dx:t(l.v)+l.dx-o(l.v);return[h,h+o(l.v)]},a=l=>(e(l)[0]>=1?__gvLe(e(l)[1],n-1):!1),s=l=>({v:l.v,anchor:l.anchor==="end"?"start":"end",dx:-l.dx}),c=Math.min(...r.map(l=>l.v)),i=Math.max(...r.map(l=>l.v)),m=l=>((2)>(r.length)?!0:(e(l)[0]>=t(c)+7?__gvLe(e(l)[1],t(i)-7):!1)),p=[];for(let l of r){let h=a(l)?l:s(l);(((!a(h)?!0:(h!==l?!m(h):!1))?!0:p.some(f=>(__gvLt(e(f)[0],e(h)[1]+6)?__gvLt(e(h)[0],e(f)[1]+6):!1)))?!0:p.push(h))}return p}function mr(t,n,r,o,e){let[a,s]=r.domain(),c=e.filter(l=>(a)>(l)),i=e.filter(l=>l>s),m=t.dark?nt.darkSecondary:nt.secondary,p=(l,h,f)=>{let b=`M${l},${o}l${-h*6},-5v10z`;n.append("path").attr("class",t.cls("off-scale")).attr("d",b).attr("fill",m).append("title").text(`${f} ${f===1?"value is":"values are"} ${(0)>(h)?"below":"above"} the axis range`)};(c.length?p(r(a)-2,-1,c.length):!1),(i.length?p(r(s)+2,1,i.length):!1)}function pr(t,n,r,o){let e=new Map,a=i=>((e.has(i)?!0:e.set(i,lt(t,[t.fmtValue(i)],12))),e.get(i)),s=0,c=0;for(let i=0;(4)>(i);i++){let m=0,p=0;for(let l of o.flat()){let h=n(l.v)+l.dx;l.anchor==="end"?m=Math.max(m,a(l.v)-h+2):p=Math.max(p,h+a(l.v)-r+2)}if(((.5)>=(m)?(.5)>=(p):!1))return;s=Math.min(r*.3,s+Math.max(0,m)),c=Math.min(r*.3,c+Math.max(0,p)),n.range([s,r-c])}}var pe={paletteId:"",political:!1,background:"white",yFormat:{prefix:"",suffix:"",decimals:null},xFormat:{prefix:"",suffix:"",decimals:null},yFromZero:!0,yMin:null,yMax:null,valueLabels:!1,endDots:!0,imageFill:null,width:"column",height:400,yLabel:"",xLabel:"",highlight:null,legend:"top",xFromZero:!1,xMin:null,xMax:null,rightAxis:[],rightFormat:{prefix:"",suffix:"",decimals:null},rightLabel:"",rightFromZero:!0,donutHole:!0,partners:[],map:{method:"rounded",classes:5,breaks:[],palette:"seq-orange",reverse:!1,midpoint:null,continuous:!1,labels:!0,symbolMax:18,noDataLabel:"No data",thresholds:[],stops:[],colors:[],domain:null,categories:[],sizeTicks:[],projection:"equal-earth",sphere:!1,graticule:!1,center:[-30,20]}};var mn=600;function un(t){var n;return{...t,style:{...pe,...t.style,map:{...pe.map,...(n=t.style)==null?void 0:n.map}}}}function pn(t,n){var e;if(!n.size)return de(t);let r=t.type==="combo"?t.data.series.flatMap((a,s)=>n.has(a.key)?s===0?[{...a,values:a.values.map(()=>null)}]:[]:[a]):t.data.series.filter(a=>!n.has(a.key)),o=(e=t.data.points)==null?void 0:e.filter(a=>{var s,c;return!n.has((c=a.group)!=null?c:(s=t.data.series[0])==null?void 0:s.key)});return de({...t,data:{...t.data,series:r,points:o}})}function de(t){if((t.type!=="line"?t.type!=="combo":!1))return t;let n=t.data.series.filter(s=>s.values.some(c=>c!==null));if((!n.length?!0:!n.every(s=>s.axis==="right")))return t;let r=t.data.series.map(s=>({...s,axis:"left"})),o=t.style,e=__gvOr(o.rightLabel,()=>((hr(o.yFormat,o.rightFormat)?o.yLabel:""))),a={...o,yFormat:o.rightFormat,yFromZero:o.rightFromZero,yMin:null,yMax:null,yLabel:e,rightLabel:""};return{...t,style:a,data:{...t.data,series:r}}}function dr(t){if((t.type!=="line"?t.type!=="combo":!1))return!1;let n=(r,o)=>(r.axis==="right"?((t.type==="line"?!0:o>0)):!1);return __gvAnd(t.data.series.some(n),()=>(t.data.series.some((r,o)=>!n(r,o))))}function hr(t,n){var r,o;return __gvAnd(__gvAnd((t.prefix===n.prefix?t.suffix===n.suffix:!1),()=>(t.decimals===n.decimals)),()=>(((r=t.multiply)!=null?r:1)===((o=n.multiply)!=null?o:1)))}function fr(t,n,r,o=null){var y,R,_,V;let e=un(n),a=o?we(o):null,s=new Set,c=`gv-${e.slug}`,i=S=>`${c}__${S}`,m=t.querySelector(`.${i("chart")}`),p=t.querySelector(`.${i("legend")}`),l=Ge(m,i("tooltip")),h=-1,f,b=0;(p==null?!0:p.addEventListener("click",S=>{let M=S.target.closest("[data-key]"),I=M==null?void 0:M.dataset.key;(I!==void 0?(s.has(I)?s.delete(I):((e.data.series.length-1)>(s.size)?s.add(I):!1),x()):!1)}));let x=()=>{var Q,q,et,A,D;b=0;let S=Math.floor(m.clientWidth);if((0)>=(S))return;let M=e.style.background==="white"?re(t):{color:null,dark:!1},I=M.dark;t.classList.toggle(`${c}--dark`,I),M.color?t.style.setProperty("--gv-halo",M.color):t.style.removeProperty("--gv-halo"),h=S,f=M.color;let B=(mn)>(t.clientWidth);((Q=m.querySelector("svg"))==null?!0:Q.remove());let O=m.ownerDocument.createElementNS("http://www.w3.org/2000/svg","svg");m.insertBefore(O,m.firstChild);let Y=r.select(O).attr("class",i("svg")).attr("width",S).attr("aria-hidden","true"),K=ge(e.type),tt=K?400:B?Math.min(e.style.height,360):e.style.height;Y.attr("height",tt);let H=pn(e,s),X=H.style.yFormat,E=H.style.rightFormat,u=Gt(r,X.prefix,X.suffix,X.decimals,X.multiply),d=Gt(r,E.prefix,E.suffix,E.decimals,E.multiply),T=w=>u.value(w),v={d3:r,spec:H,base:c,root:t,chartEl:m,svg:Y,width:S,height:tt,mobile:B,dark:I,page:M.color,margin:{top:(((H.style.yLabel?!0:H.style.rightLabel))?!["bar","donut","dot","slope"].includes(e.type):!1)?30:24,right:14,bottom:30,left:40},id:w=>`${c}-${w}`,cls:i,fmtAxis:w=>T(w),setAxis:(w,U)=>{T=$t(r,X,w,U)},fmtValue:u.value,fmtRightValue:d.value,rightAxis:(w,U)=>$t(r,E,w,U),fmtFor:w=>w.axis==="right"?d.value:u.value,fmtX:Fe(r,e,B),xAxis:(w,U)=>$t(r,e.style.xFormat,w,U),color:w=>at(H,w,I),tooltip:l,rightTitleY:14},L=(K?a:!1)?Re(a,e):a;K?(L?He(v,p,e,L):!1):Oe(v,p,e,s);let Z=__gvAnd(__gvAnd(__gvAnd((!K?e.type!=="bar":!1),()=>(e.type!=="donut")),()=>(e.type!=="dot")),()=>(e.type!=="slope"));if((((Z?H.style.yLabel:!1)?H.style.rightLabel:!1)?dr(H):!1)){let[w,U]=[H.style.yLabel,H.style.rightLabel].map(ut=>lt(v,[ut],12));(w+U+16>S?(v.rightTitleY=30,v.margin.top+=16):!1)}((H.style.yLabel?Z:!1)?Y.append("text").attr("class",i("axis-title")).attr("x",0).attr("y",14).text(H.style.yLabel):!1);try{let w=e.type;if(K){if((!a?!0:a.id!==((q=e.data.map)==null?void 0:q.geo)))throw new Error("map geography missing");Y.attr("height",Ie(v,L))}else (w==="line"?!0:w==="area")?Ye(v):((w==="column"?!0:w==="stacked")?!0:w==="combo")?nn(v):w==="bar"?Y.attr("height",(et=rn(v))!=null?et:tt):w==="scatter"?on(v):w==="donut"?Y.attr("height",(A=sn(v))!=null?A:tt):w==="slope"?ln(v):(w==="dot"?Y.attr("height",(D=cn(v))!=null?D:tt):!1)}catch(w){Y.selectAll("*").remove(),Y.append("text").attr("class",i("ticks")).attr("x",0).attr("y",20).text("Chart could not be drawn."),console.error("[gristviz]",w)}},g=()=>{(b?!0:(b=requestAnimationFrame(x)))},k=new ResizeObserver(()=>{(Math.floor(m.clientWidth)!==h?g():!1)});k.observe(m);let P=()=>{((e.style.background==="white"?re(t).color!==f:!1)?g():!1)},N=new MutationObserver(P),F=t.ownerDocument;N.observe(F.documentElement,{attributes:!0,attributeFilter:["class","style","data-theme"]}),(F.body?N.observe(F.body,{attributes:!0,attributeFilter:["class","style","data-theme"]}):!1);let G=(R=(y=F.defaultView)==null?void 0:y.matchMedia)==null?void 0:R.call(y,"(prefers-color-scheme: dark)");return((_=G==null?void 0:G.addEventListener)==null?!0:_.call(G,"change",P)),x(),((V=F.fonts)==null?!0:V.ready.then(()=>g())),{update(S){e=un(S);for(let M of[...s])(e.data.series.some(I=>I.key===M)?!0:s.delete(M));x()},destroy(){var S;k.disconnect(),N.disconnect(),l.destroy(),((S=G==null?void 0:G.removeEventListener)==null?!0:S.call(G,"change",P)),(b?cancelAnimationFrame(b):!1)}}}return xn(gr);})(); function run(d3){var el=document.getElementById(ID);if(el)__gvRuntime.mount(el,SPEC,d3,GEO);} function fail(){var el=document.getElementById(ID);var c=el?el.querySelector("."+ID+"__chart"):null;if(c)c.textContent="This chart could not load. Try refreshing the page.";} function loadD3(){return new Promise(function(res,rej){ var s=document.createElement("script"),page=window.d3,mine,trap=false; try{Object.defineProperty(window,"d3",{configurable:true,enumerable:true, get:function(){return document.currentScript===s?mine:page;}, set:function(v){if(document.currentScript===s)mine=v;else page=v;}});trap=true;} catch(e){window.d3=undefined;} function settle(){if(trap){delete window.d3;if(page!==undefined)window.d3=page;}else{mine=window.d3;window.d3=page;}} s.src="https://cdnjs.cloudflare.com/ajax/libs/d3/7.8.5/d3.min.js";s.integrity="sha384-su5kReKyYlIFrI62mbQRKXHzFobMa7BHp1cK6julLPbnYcCW9NIZKJiTODjLPeDh";s.crossOrigin="anonymous";s.async=true; s.onload=function(){settle();if(mine?mine.stack:!1)res(Object.assign({},mine));else rej(new Error("d3 did not load"));}; s.onerror=function(e){settle();rej(e);}; document.head.appendChild(s);});} function go(){ if(window.d3?window.d3.stack?/^7\./.test(window.d3.version?window.d3.version:""):!1:!1){run(window.d3);return;} if(!window.__gvD3)window.__gvD3=loadD3(); window.__gvD3.then(run,fail); } if(document.readyState==="loading")document.addEventListener("DOMContentLoaded",go);else go(); })();

Omnipresent but non-voting in the coming election is the Amazon itself, which stands at the edge of farm country and stores something on the order of 175 billion metric tons of carbon, equivalent to roughly 15 years of global carbon dioxide emissions. The planet’s largest tropical rainforest, the Amazon is big enough to make its own weather: Water drawn up by its trees ultimately accounts for up to half of the region’s rainfall.

Affronting the forest is a menagerie of harms, from drought to fire and logging to clear-cuts. And while the Brazilian Forest Code permits landowners to cut up to 20 percent of their Amazon properties, the monitoring network MapBiomas recently estimated that 97 percent of Amazon land clearing in 2025 showed signs of illegality.

An aerial view of an illegal mining area at Tapajos Environmental Protection Area in the Amazon rainforest, in southwestern Para State, Brazil, in May 2026. Evaristo Sa / AFP via Getty Images

Under Lula’s current term, clearing rates in the Amazon have fallen every year. If Brazil returned to the elder Bolsonaro’s deforestation pace, the rainforest would lose about 17,600 square miles over the next four years, versus about 8,900 square miles at the 2025 rate: a difference in landmass approximately the size of Belize.

The first-round election results suggest agricultural interests likely played a role in Bolsonaro’s strong performance. Lula lost vote share in almost every municipality in the country relative to his 2022 results. But in municipalities where agriculture accounts for more than half of the local economy, his vote share fell by nearly 8 points: triple his loss in non-agricultural areas.

.gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda{--gv-text:#3C3830;--gv-text-2:#747473;--gv-grid:#E0E0E0;--gv-halo:#FFFFFF;--gv-axis:#3C3830;box-sizing:border-box;position:relative;width:100%;text-align:left;font-family:"Basis Grotesque", "Basis Grotesque Pro", Arial, sans-serif;font-weight:500;font-size:16px;line-height:1.3;color:var(--gv-text);margin-top:1.5rem!important;margin-bottom:1.5rem!important;padding:0;letter-spacing:normal;word-break:normal} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda *{box-sizing:border-box} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda div,.gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda span{margin:0;padding:0;font-size:inherit;line-height:inherit} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda.gv-br-draft-swing-mzehda--dark{--gv-text:#F0EDE6;--gv-text-2:#B3ADA3;--gv-grid:#4A4640;--gv-halo:#1C1B19;--gv-axis:#B3ADA3} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__header{margin:0 0 12px} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__title{font-family:"PolySans", Arial, sans-serif;font-weight:500;font-size:24px;line-height:1.2;margin:10px 0 6px;padding:0;color:var(--gv-text);text-transform:none;letter-spacing:normal} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__subtitle{font-family:"Basis Grotesque", "Basis Grotesque Pro", Arial, sans-serif;font-weight:500;font-size:18px;line-height:1.35;margin:0;padding:0;color:var(--gv-text)} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__hl{font-weight:700} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda.gv-br-draft-swing-mzehda--dark .gv-br-draft-swing-mzehda__hl--dk-primary{color:#F0EDE6!important} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda.gv-br-draft-swing-mzehda--dark .gv-br-draft-swing-mzehda__hl--dk-muted{color:#6B665E!important} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__legend{display:flex;flex-wrap:wrap;align-items:center;gap:6px 16px;margin:0 0 8px;padding:0;font-size:14px;line-height:1.2;color:var(--gv-text)} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__legend-item,.gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__legend-item:hover,.gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__legend-item:focus,.gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__legend-item:active{display:inline-flex;flex-direction:row;justify-content:flex-start;align-items:center;gap:6px;font:inherit;color:inherit;background:none;border:0;padding:2px 0;margin:0;line-height:1.2;text-align:left;cursor:default;box-shadow:none;text-transform:none;letter-spacing:normal;border-radius:0;min-height:0;min-width:0;height:auto;width:auto;text-decoration:none} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda button.gv-br-draft-swing-mzehda__legend-item,.gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda button.gv-br-draft-swing-mzehda__legend-item:hover{cursor:pointer} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda button.gv-br-draft-swing-mzehda__legend-item:hover{text-decoration:underline;text-underline-offset:3px} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda button.gv-br-draft-swing-mzehda__legend-item:focus-visible{outline:2px solid #3977F3;outline-offset:2px} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__legend-item--off{opacity:0.35} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__map-label{font-family:"Basis Grotesque", "Basis Grotesque Pro", Arial, sans-serif;font-size:11px;font-weight:500;letter-spacing:0.02em} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__legend-label{font-family:"Basis Grotesque", "Basis Grotesque Pro", Arial, sans-serif;font-size:12px;fill:var(--gv-text-2)} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__legend-key{font-family:"Basis Grotesque", "Basis Grotesque Pro", Arial, sans-serif;font-size:14px;fill:var(--gv-text)} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__place{cursor:default} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__legend-axis{font-size:11px;color:var(--gv-text-2);margin-left:2px} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__swatch{display:block;flex:none;overflow:visible} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__chart{position:relative;width:100%;margin:0;padding:0} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda svg.gv-br-draft-swing-mzehda__svg{display:block;overflow:visible;max-width:none;height:auto} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda svg text{font-family:"Basis Grotesque", "Basis Grotesque Pro", Arial, sans-serif;font-weight:500;font-size:14px;fill:var(--gv-text);letter-spacing:normal} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__ticks text{font-size:14px} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__cat-labels text{fill:var(--gv-text)} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__grid line{stroke:var(--gv-grid);stroke-opacity:0.7;shape-rendering:crispEdges} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__baseline{stroke:var(--gv-axis);stroke-width:1;shape-rendering:crispEdges} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__zero{stroke:#888888;stroke-width:1;stroke-dasharray:4 4} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__line{fill:none;stroke-linecap:round;stroke-linejoin:round} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__line-halo{fill:none;stroke:var(--gv-halo);stroke-width:7;stroke-linecap:round;stroke-linejoin:round} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__segment{stroke:var(--gv-halo);stroke-width:1} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__point{fill-opacity:0.85;stroke:var(--gv-halo);stroke-width:1} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__ring{fill:none;stroke:var(--gv-text);stroke-width:1.5} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__dot{stroke:var(--gv-halo);stroke-width:1.7} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__dot--pulse{transform-box:fill-box;transform-origin:center;animation:gv-br-draft-swing-mzehda-pulse 1.6s ease-in-out infinite} @keyframes gv-br-draft-swing-mzehda-pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.2)}} @media (prefers-reduced-motion:reduce){.gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__dot--pulse{animation:none}} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__value-label{font-size:12px;paint-order:stroke fill;stroke:var(--gv-halo);stroke-width:3px;stroke-linejoin:round} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__axis-title{font-size:12px;fill:var(--gv-text-2)} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__direct-label{font-size:13px;font-weight:700;paint-order:stroke fill;stroke:var(--gv-halo);stroke-width:3px;stroke-linejoin:round} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__donut-title{font-size:16px;font-weight:700;fill:var(--gv-text)} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__slice{stroke:var(--gv-halo);stroke-width:1.5} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__slice-label{font-size:14px;font-weight:700;fill:#FFFFFF;paint-order:stroke fill;stroke:rgba(0,0,0,0.25);stroke-width:2px;pointer-events:none} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__slope-head{font-size:14px;font-weight:700;fill:var(--gv-text)} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__slope-axis{stroke:var(--gv-grid);stroke-width:1} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__slope-line{stroke-linecap:round} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__slope-label{fill:var(--gv-text);paint-order:stroke fill;stroke:var(--gv-halo);stroke-width:3px;stroke-linejoin:round} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__dumbbell{stroke:#C9C5BD;stroke-width:3;stroke-linecap:round} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda.gv-br-draft-swing-mzehda--dark .gv-br-draft-swing-mzehda__dumbbell{stroke:#6B665E} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__cat-label{fill:var(--gv-text)} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__overlay{fill:transparent;pointer-events:all} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__rule{stroke:var(--gv-text-2);stroke-width:1;stroke-dasharray:2 3} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__tooltip{position:absolute;display:none;pointer-events:none;z-index:5;min-width:120px;max-width:260px;padding:6px 9px;background:rgba(255,255,255,0.9);border:2px solid #888888;border-radius:4px;font-size:13px;line-height:1.35;color:#3C3830} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda.gv-br-draft-swing-mzehda--dark .gv-br-draft-swing-mzehda__tooltip{background:rgba(28,27,25,0.94);color:#F0EDE6} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__tip-title{font-weight:700;margin:0 0 3px} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__tip-row{display:flex;align-items:center;gap:6px} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__tip-row i{display:block;flex:none;width:10px;height:10px;border-radius:2px} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__tip-row span{flex:1} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__tip-row b{font-weight:700;white-space:nowrap} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__tip-more{color:var(--gv-text-2);font-size:12px;margin-top:2px} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__note{color:var(--gv-text-2);font-size:12px;font-style:italic;line-height:1.35;margin:8px 0 0;padding:0} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__footer{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin:8px 0 0} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__credits{display:flex;flex-direction:column} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__source{color:var(--gv-text-2);font-size:12px;line-height:1.35;display:inline-block} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__credit{color:var(--gv-text-2);font-size:12px;line-height:1.35;margin-top:3px;font-style:italic;font-weight:700;display:inline-block} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__credit .gv-br-draft-swing-mzehda__credit-link{color:inherit;font:inherit;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px;border:0;box-shadow:none;background:none} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__logo{display:block;height:auto;max-width:62px;min-width:50px;width:62px;margin:0 0 0 auto;padding:0;transform:translateY(-2px);overflow:visible} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__logo path{fill:var(--gv-text)} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__logos{display:flex;align-items:center;gap:14px;margin-left:auto;flex-wrap:wrap;justify-content:flex-end} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__logos .gv-br-draft-swing-mzehda__logo{margin:0} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__partner{display:block;margin:0;padding:0;border:0;line-height:0} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__partner img{display:block;height:22px;width:auto;max-width:110px;margin:0;padding:0;border:0;box-shadow:none;object-fit:contain} .gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda.gv-br-draft-swing-mzehda--dark .gv-br-draft-swing-mzehda__partner--invert img{filter:brightness(0) invert(1)} @media (max-width:600px){.gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__title{font-size:21px}.gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__subtitle{font-size:16px}.gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__legend{font-size:13px}.gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__ticks text{font-size:12px}.gv-br-draft-swing-mzehda#gv-br-draft-swing-mzehda .gv-br-draft-swing-mzehda__logo{width:50px}} Agricultural revolution Change in Lula's vote share, 2022 to 2026, percentage points Source: TSE, IBGE, Marco Antonio Faganello Clayton Aldern / Grist / Meredith Petrick / Unsplash (function(){ var K="__gv_br_draft_swing_mzehda_initialized__";if(window[K])return;window[K]=true; var ID="gv-br-draft-swing-mzehda"; var SPEC={"version":1,"slug":"br-draft-swing-mzehda","type":"column","data":{"xKind":"category","x":["Under 5%","5–10%","10–20%","20–30%","30–40%","40–50%","Over 50%"],"series":[{"key":"All votes in group","label":"All votes in group","color":"#12A07F","values":[-2.2,-4.1,-4.7,-5.2,-6.5,-6.8,-7.8]}]},"text":{"title":"Agricultural revolution","subtitle":"Change in Lula's vote share, 2022 to 2026, percentage points","source":"Source: TSE, IBGE, Marco Antonio Faganello","credit":"Clayton Aldern / Grist","altText":"Bar chart of Lula’s vote share in 2026 relative to 2022, broken down by farming’s contribution to the local economy. In towns where farming is under 5 percent of the local economy, his vote share fell by 2.2 percentage points. In towns where farming comprises over 50 percent, Lula’s share fell by 7.8 percentage points.","note":""},"style":{"paletteId":"single-turquoise","political":false,"background":"white","yFormat":{"prefix":"","suffix":" pts","decimals":null},"xFormat":{"prefix":"","suffix":"","decimals":null},"yFromZero":true,"yMin":null,"yMax":null,"valueLabels":false,"endDots":true,"imageFill":{"mode":"all","opacity":0.65,"photos":{"*":{"url":"https://images.unsplash.com/photo-1562702076-c719c8796b8d?w=1600\u0026q=80\u0026fm=jpg","photographer":"Meredith Petrick","via":"unsplash","page":"https://unsplash.com/photos/green-leafed-plants-83RJnK0UbW4","profile":"https://unsplash.com/@mpetrick"}}},"width":"column","height":400,"yLabel":"","xLabel":"Agriculture’s share of local economy","highlight":null,"legend":"none","xFromZero":false,"xMin":null,"xMax":null,"rightAxis":[],"rightFormat":{"prefix":"","suffix":"","decimals":null},"rightLabel":"","rightFromZero":true,"donutHole":true,"partners":[],"map":{"method":"rounded","classes":5,"breaks":[],"palette":"seq-orange","reverse":false,"midpoint":null,"continuous":false,"labels":true,"symbolMax":18,"noDataLabel":"No data","thresholds":[],"stops":[],"colors":[],"domain":null,"categories":[],"sizeTicks":[],"projection":"equal-earth","sphere":false,"graticule":false,"center":[-30,20]}},"meta":{"toolVersion":"0.2.0","createdAt":"","updatedAt":"","fallbackPngUrl":"","review":null}}; var GEO=null; function __gvTip(h){return h.replace(/(tip-title"\x3e)([^\x3c]*)/, "$1$2 agriculture").replace(/\x3cspan\x3e[^\x3c]*\x3c\/span\x3e\x3cb\x3e([^\x3c]*)/, "\x3cspan\x3e\x3c/span\x3e\x3cb\x3e$1 vs. 2022").replace(/background:#[0-9A-Fa-f]{6}/, "background:#F79945");} function __gvOr(a,b){return a?a:b()};function __gvAnd(a,b){return a?b():a};function __gvLe(a,b){return b>=a};function __gvLt(a,b){return b>a};var __gvRuntime=(()=>{var te=Object.defineProperty;var hn=Object.getOwnPropertyDescriptor;var fn=Object.getOwnPropertyNames;var gn=Object.prototype.hasOwnProperty;var bn=(t,n)=>{for(var r in n)te(t,r,{get:n[r],enumerable:!0})},yn=(t,n,r,o)=>{if(((n?typeof n=="object":!1)?!0:typeof n=="function"))for(let e of fn(n))((!gn.call(t,e)?e!==r:!1)?te(t,e,{get:()=>n[e],enumerable:(!(o=hn(n,e))?!0:o.enumerable)}):!1);return t};var xn=t=>yn(te({},"__esModule",{value:!0}),t);var gr={};bn(gr,{MOBILE_BREAKPOINT:()=>mn,mount:()=>fr,primaryAxis:()=>de,visible:()=>pn});var kn=["map-states","map-counties","map-world","map-dots"];function ge(t){return kn.includes(t)}var be=["line","slope"];var wn="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",Mn=new Map([...wn].map((t,n)=>[t,n])),vn=10;function ee(t){let n=[],r=0,o=1;for(let e of t){let a=Mn.get(e);if(a===void 0)throw new Error("Unreadable map geography");r+=a%32*o,a>=32?o*=32:(n.push(r%2?-(r+1)/2:r/2),r=0,o=1)}return n}function $n(t,n){let r=ee(t),o=[],e=0,a=0,s=0;for(;(r.length)>(e);){let c=r[e++],i=[];for(let m=0;(c)>(m);m++)a+=r[e++],s+=r[e++],i.push([a/n,s/n]);o.push(i)}return o}function ye(t,n){let r=[];return n.forEach((o,e)=>{let a=o>=0?t[o]:[...t[-o-1]].reverse();for(let s=e?1:0;(a.length)>(s);s++)r.push(a[s])}),r}var xe=t=>String(Math.round(t*10)/10),ke=(t,n)=>t.length?`M${t.map(([r,o])=>`${xe(r)} ${xe(o)}`).join("L")}${n?"Z":""}`:"";function Cn(t){var e;let n=0,r=0,o=0;for(let a=0,s=t.length-1;(t.length)>(a);s=a++){let c=t[s][0]*t[a][1]-t[a][0]*t[s][1];n+=c,r+=(t[s][0]+t[a][0])*c,o+=(t[s][1]+t[a][1])*c}return n?{area:n/2,c:[r/(3*n),o/(3*n)]}:{area:0,c:(e=t[0])!=null?e:null}}function we(t){var h;let n=$n(t.arcs,(h=t.q)!=null?h:vn),r=!!t.sphere,o=ee(t.geoms),e=0,a=0,s=t.ids.map((f,b)=>{var F,G,y;let x=o[e++],g="",k=null,P=-1,N=[];for(let R=0;(x)>(R);R++){let _=o[e++],V=[];N.push(V);for(let S=0;(_)>(S);S++){let M=o[e++],I=[];for(let O=0;(M)>(O);O++)a+=o[e++],I.push(a);let B=ye(n,I);if(r){V.push(B);continue}if(g+=ke(B,!0),S===0){let{area:O,c:Y}=Cn(B);(Math.abs(O)>P?(P=Math.abs(O),k=Y):!1)}}}return{id:f,name:(F=t.names[b])!=null?F:f,code:(y=(G=t.codes)==null?void 0:G[b])!=null?y:"",d:g,anchor:k,...r?{polygons:N}:{}}}),c=f=>{var N;let b=ee(f),x=0,g=0,k=[],P=(N=b[x++])!=null?N:0;for(let F=0;(P)>(F);F++){let G=b[x++],y=[];for(let R=0;(G)>(R);R++)g+=b[x++],y.push(g);k.push(ye(n,y))}return k},[i,m,p]=[c(t.inner),c(t.outer),c(t.group)],l=f=>r?"":f.map(b=>ke(b,!1)).join("");return{id:t.id,w:t.w,h:t.h,features:s,inner:l(i),outer:l(m),group:l(p),...r?{sphere:!0,lines:{inner:i,outer:m,group:p}}:{}}}var mt={orange:"#F79945",turquoise:"#12A07F",fuchsia:"#AC00E8",azure:"#3977F3",earth:"#3C3830",red:"#F5515B"},nt={primary:"#3C3830",secondary:"#777777",grid:"#E0E0E0",muted:"#C9C5BD",darkPrimary:"#F0EDE6",darkSecondary:"#B3ADA3",darkGrid:"#4A4640",darkMuted:"#6B665E"},$e={white:"#FFFFFF",smog:"#F0F0F0",lavender:"#D3C8FF",celery:"#E6FFA0",sky:"#C5E0F7",butter:"#FFF1C7",blush:"#FFD6DA"};function Me(t,n,r){let o=t.replace("#",""),e=n.replace("#","");return`#${[0,2,4].map(s=>{let c=parseInt(o.slice(s,s+2),16),i=parseInt(e.slice(s,s+2),16);return Math.round(c+(i-c)*r).toString(16).padStart(2,"0")}).join("")}`.toUpperCase()}var bt=mt;var Dt="#D9D7D2",Pt="#3A3733",Ce="#EDEBE6",Te="#2E2B28",ve="#F5EDDA",Tn="#EF6C4A",Rt=t=>[Me(t,"#FFFFFF",.8),t.toUpperCase(),Me(t,"#000000",.45)],kr=[{id:"seq-orange",label:"Orange",kind:"sequential",stops:Rt(bt.orange)},{id:"seq-turquoise",label:"Turquoise",kind:"sequential",stops:Rt(bt.turquoise)},{id:"seq-azure",label:"Azure",kind:"sequential",stops:Rt(bt.azure)},{id:"seq-fuchsia",label:"Fuchsia",kind:"sequential",stops:Rt(bt.fuchsia)},{id:"div-turquoise-coral",label:"Turquoise to coral",kind:"diverging",stops:[bt.turquoise,ve,Tn]},{id:"div-azure-orange",label:"Azure to orange",kind:"diverging",stops:[bt.azure,ve,bt.orange]}];function re(t){let n=t.parentElement;for(;n;){let o=getComputedStyle(n).backgroundColor.match(/rgba?\(([\d.]+),\s*([\d.]+),\s*([\d.]+)(?:,\s*([\d.]+))?\)/);if((o?((o[4]===void 0?!0:parseFloat(o[4])>.5)):!1)){let e=(.299*+o[1]+.587*+o[2]+.114*+o[3])/255;return{color:`rgb(${o[1]},${o[2]},${o[3]})`,dark:(.5)>(e)}}n=n.parentElement}return{color:null,dark:!1}}function Gt(t,n,r,o,e=1){let a=(i,m)=>`${(0)>(i)?"\u2212":""}${n}${m}${r}`;return{axis:(i,m)=>{let p=i*e>=1e4,l=((m?m:1))*e,h=i*e,f=p?t.formatPrefix(`.${o!=null?o:t.precisionPrefix(l,h)}`,h):t.format(`,.${o!=null?o:t.precisionFixed(l)}f`);return b=>{let s=(p?b===0:!1)?a(0,"0"):a(b,f(Math.abs(b*e)).replace("G","B"));return (r?Math.abs(Math.abs(b*e)-Math.floor(h/l+1e-9)*l)>l*1e-6:!1)?s.slice(0,-r.length):s}},value:i=>{let m=Math.abs(i*e),p=o!=null?o:Sn(m),l=t.format(`,.${p}~f`);return a(i,l(m))}}}function Sn(t){return t>=100?0:t>=10?1:((t>=1?!0:t===0)?!0:!Number.isFinite(t))?2:Math.min(20,Math.max(2,Math.ceil(-Math.log10(t))+1))}function $t(t,n,r,o){let[e,a]=r,s=t.tickStep(e,a,o);return Gt(t,n.prefix,n.suffix,n.decimals,n.multiply).axis(Math.max(Math.abs(e),Math.abs(a)),s)}function Fe(t,n,r){let{xKind:o,x:e}=n.data,a=n.style.xFormat;if(o==="year")return s=>String(s);if(o==="number"){let s=Gt(t,a.prefix,a.suffix,a.decimals,a.multiply);return c=>s.value(Number(c))}if(o==="date"){let s=e.map(l=>String(l)),c=s.every(l=>l.endsWith("-01-01")),i=s.every(l=>l.endsWith("-01")),m=c?"%Y":i?r?"%b \u2019%y":"%b %Y":"%b %-d, %Y",p=t.utcFormat(m);return l=>p(l instanceof Date?l:new Date(String(l)+(String(l).length===10?"T00:00:00Z":"")))}return s=>String(s)}function Le(t){return new Date(String(t)+"T00:00:00Z")}function En(t,n){var r;return n?"#1A1A1A":(r=$e[t.style.background])!=null?r:"#FFFFFF"}function ne(t){let n=t.replace("#",""),r=n.length===3?n.split("").map(o=>o+o).join(""):n.slice(0,6);return[0,2,4].map(o=>__gvOr(parseInt(r.slice(o,o+2),16),()=>(0)))}function Fn([t,n,r]){return`#${[t,n,r].map(o=>Math.round(Math.max(0,Math.min(255,o))).toString(16).padStart(2,"0")).join("")}`.toUpperCase()}function zt(t,n,r){let o=ne(t),e=ne(n);return Fn(o.map((a,s)=>a+(e[s]-a)*r))}function Ht(t){let[n,r,o]=ne(t).map(e=>{let a=e/255;return (.03928)>=(a)?a/12.92:((a+.055)/1.055)**2.4});return .2126*n+.7152*r+.0722*o}function vt(t,n){let[r,o]=[Ht(t),Ht(n)].sort((e,a)=>a-e);return(r+.05)/(o+.05)}function Ln(t,n){if(!n)return t;let r=t.toUpperCase();return r===mt.earth?nt.darkPrimary:r===nt.muted.toUpperCase()?nt.darkMuted:t}var Se=.58,It=.45,An=.7,Ee=new Map;function Dn(t,n){let r=`${t}|${n}`,o=Ee.get(r);if(o)return o;let e=Ht(t),a=0,s=1/0;for(let m=0;(206)>=(m);m++){let p=-It+m/206*(It+Se),l=Math.abs(Ht((0)>(p)?zt(n,"#FFFFFF",-p):zt(n,"#000000",p))-e);((s)>(l)?([a,s]=[p,l]):!1)}let c=(a+It)/(It+Se),i=zt(n,"#FFFFFF",c*An);return Ee.set(r,i),i}function yt(t,n,r){var e;if(!r)return n;let o=(e=t.style.paletteId)!=null?e:"";if(o.startsWith("tonal-")){let a=mt[o.slice(6)];if(a)return Dn(n,a)}return Ln(n,r)}function at(t,n,r){var o,e;return yt(t,(e=(o=t.data.series[n])==null?void 0:o.color)!=null?e:mt.orange,r)}function xt(t,n,r,o=4.5){let e=En(t,r);if(vt(n,e)>=o)return n;let a=r?"#FFFFFF":"#000000";for(let s=.05;(1)>(s);s+=.05){let c=zt(n,a,s);if(vt(c,e)>=o)return c}return a}function Ot(t){return vt("#FFFFFF",t)>=4.5?"#FFFFFF":vt(nt.primary,t)>=4.5?nt.primary:vt("#FFFFFF",t)>=vt("#000000",t)?"#FFFFFF":"#000000"}var ae={w:975,h:610,scale:1300,x:487.5,y:305},Bt=ae.scale,Ae=ae.x,De=ae.y,Pe=[[Ae+.29*Bt,De+.17*Bt],[Ae+.41*Bt,De+.234*Bt]];function Ge(t,n){let r=t.querySelector(`.${n}`);(r?!0:(r=t.ownerDocument.createElement("div"),r.className=n,r.setAttribute("role","presentation"),t.appendChild(r)));let o=r,e=null,a=null,s=()=>{o.style.display="none"},c=m=>{((m===a?!0:!e)?!0:(m.pointerType==="touch"?(e(),e=null):!1))},i=t.ownerDocument;return i.addEventListener("pointerdown",c),{show(m,p,l){m=__gvTip(m);o.innerHTML=m,o.style.display="block";let h=o.offsetWidth,f=o.offsetHeight,b=t.clientWidth,x=p+14;(x+h>b?(x=p-h-14):!1),((0)>(x)?(x=Math.max(0,Math.min(b-h,p-h/2))):!1),o.style.left=`${x}px`,o.style.top=`${Math.max(0,l-f-12)}px`},hide:s,bind(m,p,l){let h=()=>{(l==null?!0:l()),s()};m.on("pointermove.gvtip",(f,b)=>p(f,b)).on("pointerdown.gvtip",(f,b)=>{((f.pointerType!=="touch"?f.pointerType!=="pen":!1)?!0:(a=f,e=h,p(f,b)))}).on("pointerleave.gvtip",f=>{(f.pointerType!=="touch"?h():!1)})},destroy(){i.removeEventListener("pointerdown",c)}}}function ct(t){return t.replace(/[\x26\x3c>"]/g,n=>({"\x26":"\x26amp;","\x3c":"\x26lt;",">":"\x26gt;",'"':"\x26quot;"})[n])}function it(t,n,r,o){let e=a=>a.replace(/[\x26\x3c>]/g,s=>({"\x26":"\x26amp;","\x3c":"\x26lt;",">":"\x26gt;"})[s]);return`\x3cdiv class="${t}">\x3ci style="background:${n}">\x3c/i>\x3cspan>${e(r)}\x3c/span>\x3cb>${e(o)}\x3c/b>\x3c/div>`}var Ve=["VT","NH","MA","RI","CT","NJ","DE","MD","DC"],Pn={CA:[80,318],FL:[790,534],ID:[192,163],KY:[703,315],LA:[562,460],MI:[683,199],NC:[816,350]},Gn=560;function Vn(t,n,r){var i,m,p;let o=t.style.map,e=n?Pt:Dt,a=(m=(i=t.data.series[0])==null?void 0:i.values)!=null?m:[],s=(p=t.data.map)==null?void 0:p.categories;if(s){let l=new Map(o.categories.map(h=>[h.name,h.color]));return h=>{var f;return (s[h]!==null?s[h]!==void 0:!1)?(f=l.get(s[h]))!=null?f:nt.muted:e}}if((o.continuous?o.stops.length>=2:!1)){let l=r.scaleLinear().domain(o.stops).range(o.colors).interpolate(r.interpolateLab).clamp(!0);return h=>(a[h]===null?!0:a[h]===void 0)?e:l(a[h])}if(!o.colors.length)return()=>e;let c=r.scaleThreshold().domain(o.thresholds).range(o.colors);return l=>(a[l]===null?!0:a[l]===void 0)?e:c(a[l])}function Ct(t,n){for(let[r,o]of Object.entries(n))t.style.setProperty(r,o,"important")}var _n=t=>{var o,e;let n=["th","st","nd","rd"],r=t%100;return`${t}${(e=(o=n[(r-20)%10])!=null?o:n[r])!=null?e:n[0]}`},_e=new WeakMap;function Nn(t,n){let r=t.width/n.w,o=n.features.map(e=>e.d).join("");return{height:Math.ceil(n.h*r),transform:`scale(${r})`,unit:1/r,d:e=>e.d,anchor:e=>e.anchor?[e.anchor[0]*r,e.anchor[1]*r]:null,land:()=>o,inner:()=>n.inner,outer:()=>n.outer,group:()=>n.group,sphere:()=>"",graticule:()=>""}}function Re(t,n){var i;if((t.sphere?!0:((i=n.data.map)!=null?i.pr:!1)))return t;let[[r,o],[e,a]]=Pe,s=m=>{let[p,l]=m.split("L")[0].split(" ").map(Number);return __gvAnd(__gvAnd((p>=r?(e)>=(p):!1),()=>(l>=o)),()=>((a)>=(l)))},c=m=>m.split("M").filter(p=>(p?!s(p):p)).map(p=>`M${p}`).join("");return{...t,features:t.features.filter(m=>!m.id.startsWith("72")),inner:c(t.inner),outer:c(t.outer),group:c(t.group)}}function Rn(t){let n=0;for(let r=0,o=t.length-1;(t.length)>(r);o=r++)n+=t[o][0]*t[r][1]-t[r][0]*t[o][1];return n}function In(t){let n=r=>(r.length>=4?Math.abs(Rn(r))>1e-6:!1);return t.features.map(r=>{var o;return{type:"MultiPolygon",coordinates:((o=r.polygons)!=null?o:[]).filter(e=>__gvAnd(e.length,()=>(n(e[0])))).map(e=>[e[0],...e.slice(1).filter(n)])}})}function Ne(t,n,r,o=In(n)){let{d3:e,spec:a}=t,s=a.style.map,c=s.projection==="globe",i={type:"GeometryCollection",geometries:o},m={type:"Sphere"},p,l;if(c)l=Math.min(t.width,Gn),p=e.geoOrthographic().rotate([r[0],r[1]]).fitExtent([[4,4],[t.width-4,l-4]],m);else{let x=(s.sphere?!0:s.graticule)?m:i;p=e.geoEqualEarth().fitWidth(t.width,x),l=Math.ceil(e.geoPath(p).bounds(x)[1][1])+1}let h=e.geoPath(p),f=new Map(n.features.map((x,g)=>[x.id,o[g]])),b=x=>{var g;return(g=h({type:"MultiLineString",coordinates:x}))!=null?g:""};return{height:l,transform:null,unit:1,d:x=>{var g;return(g=h(f.get(x.id)))!=null?g:""},anchor:x=>{let g=h.centroid(f.get(x.id));return (Number.isFinite(g[0])?Number.isFinite(g[1]):!1)?g:null},land:()=>{var x;return(x=h(i))!=null?x:""},inner:()=>{var x,g;return b((g=(x=n.lines)==null?void 0:x.inner)!=null?g:[])},outer:()=>{var x,g;return b((g=(x=n.lines)==null?void 0:x.outer)!=null?g:[])},group:()=>{var x,g;return b((g=(x=n.lines)==null?void 0:x.group)!=null?g:[])},sphere:()=>{var x;return(((c?!0:s.sphere))?(x=h(m))!=null:!1)?x:""},graticule:()=>{var x;return (s.graticule?(x=h(e.geoGraticule10()))!=null:!1)?x:""}}}function Ie(t,n){var H,X,E,u;let{d3:r,spec:o,svg:e}=t,a=o.data.map,s=o.style.map,c=(!!n.sphere?s.projection==="globe":!1),i=(H=s.center)!=null?H:[0,20],m=_e.get(t.chartEl),p=((m?m.center[0]===i[0]:!1)?m.center[1]===i[1]:!1)?m:{center:i,rotate:[-i[0],-i[1]]};_e.set(t.chartEl,p);let l=n.sphere?Ne(t,n,p.rotate):Nn(t,n),h=o.type==="map-dots",f=Vn(o,t.dark,r),b=(E=(X=o.data.series[0])==null?void 0:X.values)!=null?E:[],x=new Map(a.ids.map((d,T)=>[d,T]).filter(([d])=>d!==null)),g=b.map((d,T)=>[d,T]).filter(([d])=>d!==null).sort((d,T)=>T[0]-d[0]),k=new Map;g.forEach(([d,T],v)=>k.set(T,(v>0?g[v-1][0]===d:!1)?k.get(g[v-1][1]):v+1));let P=(u=t.page)!=null?u:t.dark?"#1A1A1A":"#FFFFFF",N=(d,T,v)=>Ct(d,{fill:"none",stroke:T,"stroke-width":`${v}px`,"vector-effect":"non-scaling-stroke","stroke-linejoin":"round","pointer-events":"none"}),F=t.id("map-shadow"),G=l.unit;e.append("defs").append("filter").attr("id",F).attr("x","-5%").attr("y","-5%").attr("width","110%").attr("height","110%").append("feGaussianBlur").attr("stdDeviation",2.5*G);let y=e.append("g").attr("class",t.cls("map"));(l.transform?y.attr("transform",l.transform):!1);let R=y.append("path").attr("class",t.cls("shadow")).attr("filter",`url(#${F})`).attr("transform",`translate(${2*G},${2.5*G})`);Ct(R.node(),{fill:t.dark?"#000000":mt.earth,opacity:"0.25",stroke:"none","fill-rule":"evenodd","pointer-events":"none"});let _=y.append("path").attr("class",t.cls("sphere"));Ct(_.node(),{fill:c?t.dark?"#23282C":"#EEF3F6":"none",stroke:t.dark?nt.darkMuted:nt.muted,"stroke-width":"0.75px","pointer-events":"none"});let V=y.append("path").attr("class",t.cls("graticule"));N(V.node(),t.dark?nt.darkGrid:nt.grid,.5);let S=(d,T)=>{var Z,Q;if(d===void 0)return`\x3cdiv class="${t.cls("tip-title")}">${ct(T)}\x3c/div>\x3cdiv class="${t.cls("tip-row")}">\x3cspan>No data\x3c/span>\x3c/div>`;let v=b[d],L=`\x3cdiv class="${t.cls("tip-title")}">${ct(o.data.x[d])}\x3c/div>`;(a.categories?(L+=it(t.cls("tip-row"),f(d),"Category",(Z=a.categories[d])!=null?Z:"None")):!1),(v!=null?(L+=it(t.cls("tip-row"),(a.categories?!0:h)?"transparent":f(d),o.data.series[0].label,t.fmtValue(v)),((!h?g.length>2:!1)?(L+=it(t.cls("tip-row"),"transparent","Rank",`${_n(k.get(d))} of ${g.length}`)):!1)):!1);for(let q of(Q=a.tips)!=null?Q:[])(q.values[d]?(L+=it(t.cls("tip-row"),"transparent",q.label,q.values[d])):!1);return L},M=y.append("g").selectAll("path").data(n.features).join("path").attr("class",t.cls("place")).each(function(d){let T=x.get(d.id);Ct(this,{fill:h?t.dark?Te:Ce:T===void 0?t.dark?Pt:Dt:f(T),stroke:"none","fill-rule":"evenodd"})}),I=y.append("path");N(I.node(),P,n.id==="us-counties"?.4:.75);let B=y.append("path");N(B.node(),P,1.2);let O=y.append("path").attr("class",t.cls("map-hover"));N(O.node(),t.dark?nt.darkPrimary:mt.earth,1.5),O.style("display","none");let Y=null;(h?!0:t.tooltip.bind(y,d=>{let T=d.target.__data__;if((!T?!0:!d.target.classList.contains(t.cls("place"))))return;let[v,L]=r.pointer(d,t.chartEl);Y=T,O.attr("d",l.d(T)).style("display",null),t.tooltip.show(S(x.get(T.id),T.name),v,L)},()=>{Y=null,O.style("display","none")}));let K=()=>{};if(h){let d=s.domain?Math.max(Math.abs(s.domain[0]),Math.abs(s.domain[1])):0,T=s.symbolMax*Math.min(1,t.width/600)*(t.mobile?.8:1),v=D=>(D===null?!0:!d)?3.5:Math.max(1.5,T*Math.sqrt(Math.abs(D)/d)),L=new Map(n.features.map(D=>[D.id,D])),Z=o.data.x.map((D,w)=>({i:w,r:v(b[w])})).sort((D,w)=>w.r-D.r),Q=D=>a.categories?f(D):mt.turquoise,q=n.sphere?1:t.width/n.w,et=D=>{var ut;let w=(ut=a.xy)==null?void 0:ut[D];if(w)return[w[0]*q,w[1]*q];let U=a.ids[D]?L.get(a.ids[D]):void 0;return U?l.anchor(U):null},A=e.append("g").selectAll("circle").data(Z).join("circle").attr("class",t.cls("symbol")).attr("r",D=>D.r).each(function(D){Ct(this,{fill:Q(D.i),"fill-opacity":d?"0.78":"0.9",stroke:P,"stroke-width":"0.75px"})});K=()=>A.each(function(D){var U,ut;let w=et(D.i);this.setAttribute("cx",String((U=w==null?void 0:w[0])!=null?U:0)),this.setAttribute("cy",String((ut=w==null?void 0:w[1])!=null?ut:0)),this.style.setProperty("display",w?"":"none")}),t.tooltip.bind(A,(D,w)=>{let[U,ut]=r.pointer(D,t.chartEl);t.tooltip.show(S(w.i,o.data.x[w.i]),U,ut)})}let tt=()=>{R.attr("d",c?l.sphere():l.land()),_.attr("d",l.sphere()),V.attr("d",l.graticule()),M.attr("d",d=>l.d(d)),I.attr("d",l.inner()),B.attr("d",l.group()),(Y?O.attr("d",l.d(Y)):!1),K()};if(tt(),c){let d=Math.min(t.width,l.height)/2,T=r.drag().on("drag",v=>{let L=75/d;p.rotate=[p.rotate[0]+v.dx*L,Math.max(-85,Math.min(85,p.rotate[1]-v.dy*L))],l=Ne(t,n,p.rotate),tt()});e.call(T).style("touch-action","none").style("cursor","grab")}if((o.type==="map-states"?s.labels:!1)){let d=e.append("g").attr("class",t.cls("map-labels")).style("pointer-events","none"),T=n.features.map(q=>({f:q,a:l.anchor(q)})).filter(q=>!!q.a),v=T.filter(q=>Ve.includes(q.f.code)).sort((q,et)=>q.a[1]-et.a[1]),L=(520)>(t.width),Z=(q,et,A,D,w)=>d.append("text").attr("class",t.cls("map-label")).attr("x",q).attr("y",et).attr("dy","0.35em").attr("text-anchor",A).style("fill",D).style("fill-opacity","0.8").text(w),Q=t.width/n.w;for(let{f:q,a:et}of T){if((!q.code?!0:Ve.includes(q.code)))continue;let A=x.get(q.id),D=Pn[q.code],[w,U]=D?[D[0]*Q,D[1]*Q]:et;Z(w,U,"middle",A===void 0?t.dark?nt.darkPrimary:nt.primary:Ot(f(A)),q.code)}if(!L){let q=t.width-16*Q,et=-1/0;for(let{f:A,a:D}of v){et=Math.max(D[1],et+14);let w=d.append("line").attr("x1",D[0]).attr("y1",D[1]).attr("x2",q-14).attr("y2",et);Ct(w.node(),{stroke:t.dark?nt.darkMuted:nt.secondary,"stroke-width":"0.75px"}),Z(q,et,"end",t.dark?nt.darkPrimary:nt.primary,A.code)}}}return l.height}var kt=8,Vt=2,oe=Vt+kt+13,ze=oe+5;function He(t,n,r,o){var b,x,g,k,P,N,F,G;if(!n)return;let e=r.style.map,a=r.data.map,s=t.dark?nt.darkSecondary:nt.secondary,c=t.dark?Pt:Dt,i=new Set(a.ids.filter(y=>y!==null)),m=(r.type!=="map-dots"?o.features.some(y=>!i.has(y.id)):!1),p=(y,R)=>`\x3cspan class="${t.cls("legend-item")}">\x3csvg class="${t.cls("swatch")}" width="12" height="12" aria-hidden="true">\x3crect width="12" height="12" rx="2" fill="${y}"/>\x3c/svg>${ct(R)}\x3c/span>`,l=m?p(c,__gvOr(e.noDataLabel,()=>("No data"))):"",h=y=>{if(!m)return{svg:"",width:0};let R=__gvOr(e.noDataLabel,()=>("No data")),_=Vt+kt/2;return{svg:`\x3crect class="${t.cls("legend-nodata")}" x="${y}" y="${_-5}" width="10" height="10" rx="2" fill="${c}"/>\x3ctext x="${y+16}" y="${_}" dy="0.35em" class="${t.cls("legend-key")}">${ct(R)}\x3c/text>`,width:40+R.length*7.5}},f="";if(e.categories.length)f=e.categories.map(y=>p(y.color,y.name)).join("")+l;else if(r.type==="map-dots"){let y=e.domain?Math.max(Math.abs(e.domain[0]),Math.abs(e.domain[1])):0,R=e.symbolMax*Math.min(1,t.width/600)*(t.mobile?.8:1),_=V=>R*Math.sqrt(V/y);if((y?e.sizeTicks.length:!1)){let V=_(e.sizeTicks[e.sizeTicks.length-1]),S=V*2+7,M=[];[...e.sizeTicks].reverse().forEach((K,tt)=>M.push(Math.max(S-2*_(K),tt?M[tt-1]+12:7)));let I=V*2+70,B=Math.max(S+3,M[M.length-1]+8),O=`stroke:${s} !important;fill:none !important`,Y=[...e.sizeTicks].reverse().map((K,tt)=>{let H=S-2*_(K);return`\x3ccircle cx="${V+1}" cy="${S-_(K)}" r="${_(K)}" style="${O};stroke-width:1px"/>\x3cpolyline points="${V+1},${H} ${V*2+4},${H} ${V*2+8},${M[tt]}" style="${O};stroke-width:0.5px"/>\x3ctext x="${V*2+11}" y="${M[tt]}" dy="0.35em" class="${t.cls("legend-label")}">${ct(t.fmtValue(K))}\x3c/text>`}).join("");f=`\x3csvg width="${I}" height="${B}" aria-hidden="true">${Y}\x3c/svg>`}}else if(((e.continuous?e.stops.length>=2:!1)?e.stops[0]!==e.stops[e.stops.length-1]:!1)){let y=Math.min(260,t.width-20),R=t.id("legend-grad"),_=e.colors.map((M,I)=>`\x3cstop offset="${I/(e.colors.length-1)*100}%" stop-color="${M}"/>`).join(""),V=[e.stops[0],e.stops.length===3?e.stops[1]:null,e.stops[e.stops.length-1]].map((M,I)=>M===null?"":`\x3ctext x="${I/2*y}" y="${oe}" text-anchor="${["start","middle","end"][I]}" class="${t.cls("legend-label")}">${ct(t.fmtValue(M))}\x3c/text>`).join(""),S=h(y+24);f=`\x3csvg width="${y+S.width+4}" height="${ze}" aria-hidden="true">\x3cdefs>\x3clinearGradient id="${R}">${_}\x3c/linearGradient>\x3c/defs>\x3crect class="${t.cls("legend-step")}" y="${Vt}" width="${y}" height="${kt}" rx="${kt/2}" fill="url(#${R})"/>${V}${S.svg}\x3c/svg>`}else if((e.colors.length===1?!0:((e.continuous?e.stops.length>=2:!1)?e.stops[0]===e.stops[e.stops.length-1]:!1))){let y=(x=(b=e.domain)==null?void 0:b[0])!=null?x:e.stops[0];f=(y===void 0?"":p(e.colors[0],t.fmtValue(y)))+l}else if(e.colors.length){let y=e.colors.length,R=(P=(k=(g=e.domain)==null?void 0:g[0])!=null?k:e.thresholds[0])!=null?P:0,_=(G=(F=(N=e.domain)==null?void 0:N[1])!=null?F:e.thresholds[e.thresholds.length-1])!=null?G:0,V=$t(t.d3,r.style.yFormat,[R,_],Math.max(1,e.thresholds.length)),S=e.thresholds.map(H=>V(H)),M=Math.max(0,...S.map(H=>H.length))*7+6,I=Math.max(M,Math.min(44,Math.floor((Math.min(320,t.width)-20)/y))),B=I*y,O=t.id("legend-clip"),Y=e.colors.map((H,X)=>`\x3crect class="${t.cls("legend-step")}" x="${X*I}" y="${Vt}" width="${I}" height="${kt}" fill="${H}"/>`).join(""),K=S.map((H,X)=>`\x3ctext x="${(X+1)*I}" y="${oe}" text-anchor="middle" class="${t.cls("legend-label")}">${ct(H)}\x3c/text>`).join(""),tt=h(B+24);f=`\x3csvg width="${B+tt.width+4}" height="${ze}" aria-hidden="true">\x3cdefs>\x3cclipPath id="${O}">\x3crect y="${Vt}" width="${B}" height="${kt}" rx="${kt/2}"/>\x3c/clipPath>\x3c/defs>\x3cg clip-path="url(#${O})">${Y}\x3c/g>${K}${tt.svg}\x3c/svg>`}n.innerHTML=f,n.style.display=f?"":"none",n.removeAttribute("role"),n.removeAttribute("aria-label")}function se(t){return t.replace(/[\x26\x3c>"]/g,n=>({"\x26":"\x26amp;","\x3c":"\x26lt;",">":"\x26gt;",'"':"\x26quot;"})[n])}var zn=["line","area","column","bar","stacked","combo","dot","scatter"];function ie(t){return (t.style.legend==="direct"?be.includes(t.type):!1)}function Oe(t,n,r,o){var g,k,P,N;if(!n)return;let e=r,a=e.data.series,s=(g=e.style.legend)!=null?g:"top",c=()=>{n.innerHTML="",n.style.display="none",n.removeAttribute("role"),n.removeAttribute("aria-label")};if(((s==="none"?!0:s==="subtitle")?!0:ie(e)))return c();let i=(F,G,y)=>F==="line"?`\x3csvg class="${t.cls("swatch")}" width="24" height="10" aria-hidden="true">\x3cline x1="1" x2="23" y1="5" y2="5" stroke="${G}" stroke-width="3.5" stroke-linecap="round"${y?' stroke-dasharray="6 4"':""}/>\x3c/svg>`:F==="dot"?`\x3csvg class="${t.cls("swatch")}" width="12" height="12" aria-hidden="true">\x3ccircle cx="6" cy="6" r="5" fill="${G}"/>\x3c/svg>`:`\x3csvg class="${t.cls("swatch")}" width="12" height="12" aria-hidden="true">\x3crect width="12" height="12" rx="2" fill="${G}"/>\x3c/svg>`,m=F=>e.type==="line"?"line":e.type==="combo"?F===0?"box":"line":(e.type==="scatter"?!0:e.type==="dot")?"dot":"box",p=(F,G,y,R=!1)=>{let _=(y!==void 0?l:!1)?"button":"span",V=_==="button"?` type="button" data-key="${se(y)}" aria-pressed="${!o.has(y)}" title="Show or hide ${se(F)}"`:"",S=`${t.cls("legend-item")}${(y!==void 0?o.has(y):!1)?` ${t.cls("legend-item--off")}`:""}`;return`\x3c${_} class="${S}"${V}>${G}${se(F)}${R?`\x3cspan class="${t.cls("legend-axis")}">right axis\x3c/span>`:""}\x3c/${_}>`},l=__gvAnd(__gvAnd(zn.includes(e.type),()=>(a.length>1)),()=>(!e.style.paletteId.startsWith("highlight"))),h=[];if(e.type==="donut"){let F=(k=e.data.categoryColors)!=null?k:[];h=e.data.x.map((G,y)=>p(String(G),i("box",qt(e,F[y],t.dark))))}else if(e.type==="slope"){let F=e.style.paletteId;if(((F==="rise-fall"?!0:F==="rise-fall-azure")?!0:F==="political")){let G=(P=e.data.categoryColors)!=null?P:[],[y,R]=e.data.series,_=I=>G.find((B,O)=>__gvAnd(((y==null?void 0:y.values[O])!=null?(R==null?void 0:R.values[O])!=null:!1),()=>(I(y.values[O],R.values[O])))),V=_((I,B)=>B>I),S=_((I,B)=>(I)>(B)),M=_((I,B)=>B===I);h=[V?p("Rose",i("line",qt(e,V,t.dark))):"",S?p("Fell",i("line",qt(e,S,t.dark))):"",M?p("No change",i("line",qt(e,M,t.dark))):""].filter(Boolean)}}else if((e.style.paletteId.startsWith("highlight")?a.length>1:!1)){let F=Math.max(0,a.findIndex(G=>G.key===e.style.highlight));h=[p(a[F].label,i(m(F),at(e,F,t.dark))),p("All others",i(m(F),at(e,F===0?1:0,t.dark)))]}else if(a.length>1){let F=__gvAnd(a.some(G=>G.axis==="right"),()=>(a.some(G=>G.axis!=="right")));h=a.map((G,y)=>p(G.label,i(m(y),at(e,y,t.dark),G.dashed),G.key,(F?G.axis==="right":F)))}let f=h.join(""),b=n.ownerDocument.activeElement,x=(b?n.contains(b):!1)?(N=b.dataset)==null?void 0:N.key:void 0;if(n.innerHTML=f,n.style.display=h.length?"":"none",(l?h.length:!1)?(n.setAttribute("role","group"),n.setAttribute("aria-label","Series. Select to show or hide.")):(n.removeAttribute("role"),n.removeAttribute("aria-label")),x!==void 0){let F=[...n.querySelectorAll("[data-key]")].find(G=>G.dataset.key===x);((F?n.ownerDocument.activeElement!==F:!1)?F.focus():!1)}}function qt(t,n,r){return yt(t,n!=null?n:nt.muted,r)}function qe(t,n,r,o={}){let e=t.svg.append("g").attr("class",t.cls("tick-probe")).attr("opacity",0),a=n.map(s=>{var i;let c=e.append("text").attr("class",(i=o.cls)!=null?i:null).style("font-size",`${r}px`).text(s);return (o.weight?c.style("font-weight",String(o.weight)):!1),Math.ceil(c.node().getComputedTextLength())});return e.remove(),a}function lt(t,n,r,o={}){return Math.max(0,...qe(t,n,r,o))}function wt(t,n){return n.ticks(t.mobile?4:5)}function Tt(t,n,r,o){let e=wt(t,r),a=t.fmtAxis;n.append("g").attr("class",t.cls("grid")).selectAll("line").data(e).join("line").attr("x1",-t.margin.left).attr("x2",o).attr("y1",i=>Math.round(r(i))+.5).attr("y2",i=>Math.round(r(i))+.5),n.append("g").attr("class",t.cls("ticks")).selectAll("text").data(e).join("text").attr("x",-t.margin.left).attr("y",i=>r(i)).attr("dy","-0.45em").attr("text-anchor","start").text(i=>a(i))}function St(t,n,r,o){let[e,a]=r.domain();if((e>0?!0:(0)>(a)))return;let s=((0)>(e)?a>0:!1);n.append("line").attr("class",t.cls(s?"zero":"baseline")).attr("x1",0).attr("x2",o).attr("y1",Math.round(r(0))+.5).attr("y2",Math.round(r(0))+.5)}function Xt(t,n,r,o){n.append("line").attr("class",t.cls("baseline")).attr("x1",0).attr("x2",r).attr("y1",o+.5).attr("y2",o+.5)}function Wt(t,n){return Math.max(2,Math.floor(t/(n?70:90)))}var Hn=10;function On(t){return t.mobile?12:14}function Bn(t,n,r,o){return (r)>(t-n/2)?{anchor:"start",start:t,end:t+n}:t+n/2>o?{anchor:"end",start:t-n,end:t}:{anchor:"middle",start:t-n/2,end:t+n/2}}function Yt(t,n,r,o){let e=-t.margin.left,a=t.width-t.margin.left,s=new Map,c=p=>{let l=[...new Set(p.filter(h=>!s.has(h)))];return qe(t,l,On(t)).forEach((h,f)=>s.set(l[f],h)),p.map(h=>s.get(h))},i=null,m=-1;for(let p=Math.max(1,Math.floor(o));p>=1;p--){let l=r(p);if(l.ticks.length===m)continue;m=l.ticks.length;let h=l.ticks.map(l.label),f=c(h),b=l.ticks.map((k,P)=>Bn(n(k),f[P],e,a));i={...l,anchor:k=>b[k].anchor};let x=b.every(k=>(k.start>=e-.5?(a+.5)>=(k.end):!1)),g=b.every((k,P)=>(P===0?!0:(k.start)>=(b[P-1].end+Hn)));if((x?g:!1))return i}return i!=null?i:{...r(1),anchor:()=>"middle"}}function Zt(t,n){let r=n.domain();return t.spec.data.xKind==="year"?o=>({ticks:n.ticks(o).filter(e=>Number.isInteger(e)),label:e=>String(e)}):o=>{let e=t.xAxis(r,o);return{ticks:n.ticks(o),label:a=>e(a)}}}function Ut(t,n,r,o,e){n.append("g").attr("class",t.cls("ticks")).attr("transform",`translate(0,${r})`).selectAll("text").data(o.ticks).join("text").attr("x",a=>e(a)).attr("y",22).attr("text-anchor",(a,s)=>o.anchor(s)).text((a,s)=>o.label(a,s))}function jt(t,n,r,o){let e=[...t].sort((m,p)=>m.y-p.y),a=e.length;if(!a)return;let s=a>1?Math.min(n,Math.max(0,o-r)/(a-1)):n,c=m=>{m.top=Math.max(r,Math.min(o-(m.size-1)*s,m.sum/m.size))},i=[];e.forEach((m,p)=>{let l={start:p,size:1,sum:m.y,top:m.y};for(c(l),i.push(l);i.length>1;){let h=i[i.length-1],f=i[i.length-2];if((h.top+1e-9)>=(f.top+f.size*s))break;f.sum+=h.sum-h.size*f.size*s,f.size+=h.size,i.pop(),c(f)}});for(let m of i)for(let p=0;(m.size)>(p);p++)e[m.start+p].y=m.top+p*s}function je(t,n,r,o,e){let a=[],s=[];for(let i of t){let m=[...a,{item:i,y:i.y}].map(l=>({own:l.y,y:l.y})),p=(o-r)>=((m.length-1)*n);(p?jt(m,n,r,o):!1),(p?m.every(l=>__gvLe(Math.abs(l.y-l.own),e)):!1)?a.push({item:i,y:i.y}):s.push(i)}let c=a.map(i=>({y:i.y}));return jt(c,n,r,o),a.forEach((i,m)=>i.item.y=c[m].y),{kept:a.map(i=>i.item),dropped:s}}function Xe(t,n,r,o){let e=[...new Set(r.map(g=>g.getTime()))].sort((g,k)=>g-k),a=qn(r,e),s=[...[t.utcDay,t.utcDay.every(2),t.utcWeek,t.utcWeek.every(2)].map(g=>[g,"day"]),...[1,2,3,6].map(g=>[t.utcMonth.every(g),"month"]),...[1,2,5,10,20,25,50,100,200,250,500,1e3].map(g=>[t.utcYear.every(g),"year"])],c=s.slice(s.findIndex(([,g])=>g===a)),[i,m]=n.domain(),[p,l]=c[c.length-1],h=[];for(let[g,k]of c){let P=Be(g,e,i,m);if((o)>=(P.length)){[p,l,h]=[g,k,P];break}}(h.length?!0:(h=Be(p,e,i,m))),((!h.length?e.length:!1)?(h=e.length===1?[new Date(e[0])]:[new Date(e[0]),new Date(e[e.length-1])]):!1);let f=(g,k)=>(k===0?!0:h[k-1].getUTCFullYear()!==g.getUTCFullYear()),b={year:t.utcFormat("%Y"),month:t.utcFormat("%b"),monthYear:t.utcFormat("%b %Y"),day:t.utcFormat("%b %-d"),dayYear:t.utcFormat("%b %-d, %Y")};return{ticks:h,label:(g,k)=>l==="year"?b.year(g):l==="month"?f(g,k)?b.monthYear(g):b.month(g):f(g,k)?b.dayYear(g):b.day(g)}}function qn(t,n){if(t.every(a=>(a.getUTCMonth()===0?a.getUTCDate()===1:!1)))return"year";if((2)>(n.length))return t.every(a=>a.getUTCDate()===1)?"month":"day";let o=1/0;for(let a=1;(n.length)>(a);a++)o=Math.min(o,n[a]-n[a-1]);let e=o/864e5;return e>=360?"year":e>=28?"month":"day"}function Be(t,n,r,o){let e=t.range(t.floor(r),new Date(o.getTime()+1)),a=[];return e.forEach((s,c)=>{var p;let i=((p=e[c+1])!=null?p:t.offset(s,1)).getTime(),m=jn(n,s.getTime());((n.length)>(m)?(i)>(n[m]):!1)?a.push(new Date(n[m])):((s>=r?(o)>=(s):!1)?a.push(s):!1)}),a}function jn(t,n){let r=0,o=t.length;for(;(o)>(r);){let e=r+o>>1;(n)>(t[e])?r=e+1:o=e}return r}function dt(t,n){var o,e,a;let r=(o=t.spec.style.imageFill)==null?void 0:o.photos;if(!r)return null;for(let s of n)if((s!==void 0?(((e=r[s])!=null?e.url:!1)):!1))return r[s].url;return __gvOr(((a=r["*"])==null?void 0:a.url),()=>(null))}function Et(t){var r;let n=(r=t.spec.style.imageFill)==null?void 0:r.photos;return(!!n?Object.values(n).some(o=>!!((o!=null?o.url:!1))):!1)}function ft(t,n,r,o){let e=t.svg.select("defs").empty()?t.svg.append("defs"):t.svg.select("defs"),a=t.id("grey");(e.select(`#${a}`).empty()?e.append("filter").attr("id",a).append("feColorMatrix").attr("type","saturate").attr("values","0"):!1);let s=new Map;return{clip:(m,p)=>{let l=p?`${m}|${p.x},${p.y},${p.w},${p.h}`:m,h=s.get(l);if(!h){let f=t.id(`clip-${e.selectAll("clipPath").size()}`);h={id:f,url:m,box:p!=null?p:{x:0,y:0,w:r,h:o},sel:e.append("clipPath").attr("id",f)},s.set(l,h)}return h.sel},paint:()=>{for(let m of s.values())n.insert("image",":first-child").attr("class",t.cls("photo")).attr("href",m.url).attr("x",m.box.x).attr("y",m.box.y).attr("width",Math.max(1,m.box.w)).attr("height",Math.max(1,m.box.h)).attr("preserveAspectRatio","xMidYMid slice").attr("clip-path",`url(#${m.id})`).attr("filter",`url(#${a})`)}}}function Kt(t,n){var o;let r=t.spec.style.imageFill;return __gvAnd((!!r?r.mode==="category":!1),()=>(!!(((o=r.photos[n])!=null?o.url:!1))))}function ht(t,n){var r,o;return n?(o=(r=t.spec.style.imageFill)==null?void 0:r.opacity)!=null?o:.65:1}function Qt(t,n,r,o,e,a){if(((0)>=(r)?!0:(0)>=(o)))return"";let s=Math.min(e,(a==="up"?!0:a==="down")?r/2:o/2,(a==="up"?!0:a==="down")?o:r),c=t+r,i=n+o;switch(a){case"up":return`M${t},${i}V${n+s}Q${t},${n} ${t+s},${n}H${c-s}Q${c},${n} ${c},${n+s}V${i}Z`;case"down":return`M${t},${n}V${i-s}Q${t},${i} ${t+s},${i}H${c-s}Q${c},${i} ${c},${i-s}V${n}Z`;case"right":return`M${t},${n}H${c-s}Q${c},${n} ${c},${n+s}V${i-s}Q${c},${i} ${c-s},${i}H${t}Z`;case"left":return`M${c},${n}H${t+s}Q${t},${n} ${t},${n+s}V${i-s}Q${t},${i} ${t+s},${i}H${c}Z`}}function Mt(t,n,r,o){let e=t.length?t[0]:0,a=e;for(let s of t)((e)>(s)?(e=s):!1),(s>a?(a=s):!1);return (t.length?!0:([e,a]=[0,1])),(n?(e=Math.min(0,e),a=Math.max(0,a)):!1),(r!==null?(e=r):!1),(o!==null?(a=o):!1),(e===a?(a=e+1):!1),(e>a?([e,a]=[a,e]):!1),[e,a]}function Ye(t){var q,et;let{d3:n,spec:r,svg:o}=t,{data:e,style:a}=r,s=r.type==="area",c=(s?e.series.length>1:s),i=e.xKind==="category",m=e.x.map((A,D)=>e.xKind==="date"?Le(A):i?D:Number(A)),p=m.length;if(p===0)return;let l=__gvAnd((!s?e.series.some(A=>A.axis==="right"):!1),()=>(e.series.some(A=>A.axis!=="right"))),h=A=>(l?e.series[A].axis==="right":l),f=A=>e.series.filter((D,w)=>h(w)===A).flatMap(D=>D.values).filter(D=>D!==null),b=[],x,g;if(c){let A=m.map((D,w)=>e.series.map(U=>{var ut;return(ut=U.values[w])!=null?ut:0}));b=n.stack().keys(e.series.map((D,w)=>w)).value((D,w)=>D[w]).offset(n.stackOffsetDiverging)(A),[x,g]=Mt(b.flatMap(D=>D.flatMap(w=>[w[0],w[1]])),!0,a.yMin,a.yMax)}else[x,g]=Mt(f(!1),__gvOr(__gvOr(a.yFromZero,()=>(s)),()=>(We(t))),a.yMin,a.yMax);let k=t.margin,P=t.height-k.top-k.bottom,N=t.mobile?4:5,F=n.scaleLinear().domain([x,g]).nice(N).range([P,0]);t.setAxis(F.domain(),N),k.left=lt(t,wt(t,F).filter(function(v,i,a){return Math.abs(v)!==Math.max(Math.abs(a[0]),Math.abs(a[a.length-1]))}).map(t.fmtAxis),t.mobile?12:14)+10;let G=l?n.scaleLinear().domain(Mt(f(!0),a.rightFromZero,null,null)).nice(N).range([P,0]):F,y=l?t.rightAxis(G.domain(),N):t.fmtAxis,R=l?G.ticks(N):[],_=l?lt(t,R.map(y),t.mobile?12:14)+10:0,V=A=>h(A)?G:F,S=A=>t.fmtFor(e.series[A]),M=e.series.map(A=>{for(let D=A.values.length-1;D>=0;D--)if(A.values[D]!==null)return D;return-1}),I=__gvAnd(ie(r),()=>(!c)),B=__gvAnd((__gvOr(a.valueLabels,()=>(I))),()=>(!c)),O=A=>{if((0)>(M[A]))return["",""];let D=S(A)(e.series[A].values[M[A]]);return I?[e.series[A].label,a.valueLabels?D:""]:["",D]},Y=A=>O(A).filter(Boolean).join(" "),K=_?_+6:9,tt=I?{cls:t.cls("direct-label"),size:13,weight:700}:{cls:t.cls("value-label"),size:12,weight:500};if(B){let A=lt(t,e.series.map((D,w)=>Y(w)),tt.size,tt);k.right=Math.max(k.right,Math.min(A,t.width/3)+K+6)}else l?k.right=Math.max(k.right,_+4):(a.endDots?(k.right=Math.max(k.right,10)):!1);let H=Math.max(40,t.width-k.left-k.right),X=e.xKind==="date"?n.scaleUtc().domain(n.extent(m)).range([0,H]):n.scaleLinear().domain(n.extent(m)).range([0,H]),E=o.append("g").attr("transform",`translate(${k.left},${k.top})`);if(Tt(t,E,F,H),Xt(t,E,H,P),St(t,E,F,H),l){let A=xt(r,at(r,e.series.findIndex(D=>D.axis==="right"),t.dark),t.dark);E.append("g").attr("class",t.cls("ticks")).selectAll("text").data(R).join("text").attr("x",H+8).attr("y",D=>G(D)).attr("dy","0.32em").style("fill",A).text(D=>y(D)),(a.rightLabel?o.append("text").attr("class",t.cls("axis-title")).attr("x",t.width).attr("y",t.rightTitleY).attr("text-anchor","end").style("fill",A).text(a.rightLabel):!1)}let u=A=>X(A);Ut(t,E,P,Yt(t,u,Xn(t,X,m),i?p:Wt(H,t.mobile)),u);let d=A=>X(m[A]),T=t.id("plot");o.append("defs").append("clipPath").attr("id",T).append("rect").attr("x",-8).attr("y",-8).attr("width",H+16).attr("height",P+16);let v=E.append("g").attr("clip-path",(a.yMin!==null?!0:a.yMax!==null)?`url(#${T})`:null),L=E.append("g");if(s){let A=Et(t)?ft(t,v,H,P):null;(c?b:[e.series[0].values.map(w=>[0,w!=null?w:0])]).forEach((w,U)=>{var $;let j=($=n.area().x((z,W)=>d(W)).y0(z=>F(z[0])).y1(z=>F(z[1]))(w))!=null?$:"",C=A?dt(t,[e.series[U].key]):null;((A?C:!1)?A.clip(C).append("path").attr("d",j):!1),v.append("path").attr("class",t.cls("area")).attr("d",j).attr("fill",at(r,U,t.dark)).attr("fill-opacity",ht(t,C)),((p===1?e.series[U].values[0]!==null:!1)?v.append("circle").attr("cx",d(0)).attr("cy",F(w[0][1])).attr("r",3.5).attr("fill",at(r,U,t.dark)):!1)}),(A==null?!0:A.paint())}if(!s){let[A,D]=F.domain(),w=((We(t)?(0)>=(A):!1)?D>=0:!1)?dt(t,[e.series[0].key]):null,U=w?ft(t,v,H,P):null;if((U?w:!1)){let $=(q=n.area().defined(z=>z!==null).x((z,W)=>d(W)).y0(F(0)).y1(z=>F(z))(e.series[0].values))!=null?q:"";U.clip(w).append("path").attr("d",$),v.append("path").attr("d",$).attr("fill",at(r,0,t.dark)).attr("fill-opacity",ht(t,w)),U.paint()}let ut=C=>n.line().defined($=>$!==null).x(($,z)=>d(z)).y($=>V(C)($)),j=e.series.map((C,$)=>$).sort((C,$)=>Number(Ft(r,C))-Number(Ft(r,$))).reverse();for(let C of j){let $=e.series[C],z=(et=ut(C)($.values))!=null?et:"";((e.series.length>1?!Ft(r,C):!1)?v.append("path").attr("class",t.cls("line-halo")).attr("d",z):!1),v.append("path").attr("class",t.cls("line")).attr("d",z).attr("stroke",at(r,C,t.dark)).attr("stroke-width",Ft(r,C)?2:t.mobile?3:3.5).attr("stroke-dasharray",$.dashed?"6 4":null),$.values.forEach((W,st)=>{(((W===null?!0:$.values[st-1]!=null)?!0:$.values[st+1]!=null)?!0:v.append("circle").attr("cx",d(st)).attr("cy",V(C)(W)).attr("r",3.5).attr("fill",at(r,C,t.dark)))})}if((a.endDots?e.series.forEach((C,$)=>{if(((0)>(M[$])?!0:Ft(r,$)))return;let z=d(M[$]),W=V($)(e.series[$].values[M[$]]);v.append("circle").attr("class",`${t.cls("dot")} ${t.cls("dot--pulse")}`).attr("cx",z).attr("cy",W).attr("r",5).attr("fill",at(r,$,t.dark))}):!1),B){let C=e.series.map((z,W)=>({i:W,y:M[W]>=0?V(W)(z.values[M[W]]):NaN,x:M[W]>=0?d(M[W]):0})).filter(z=>(!Number.isNaN(z.y)?((!Ft(r,z.i)?!0:I)):!1));jt(C,15,6,P);let $=t.width/3;for(let z of C){let W=e.series[z.i].values[M[z.i]],[st,rt]=V(z.i).domain(),J=W>rt?-1:(st)>(W)?1:0,ot=(l?H:z.x)+K,pt=xt(r,at(r,z.i,t.dark),t.dark);(J?L.append("path").attr("class",t.cls("off-scale")).attr("d",`M${ot+4},${z.y+J*5}l-4,${-J*8}h8z`).attr("fill",pt).append("title").text((0)>(J)?"Above the axis range":"Below the axis range"):!1);let Lt=L.append("text").attr("class",t.cls(I?"direct-label":"value-label")).attr("x",ot+(J?12:0)).attr("y",z.y).attr("dy","0.32em").style("fill",pt).text(Y(z.i)),_t=Lt.node(),[At,he]=O(z.i),Nt=(At?At:he),dn=fe=>At?[`${fe.trimEnd()}\u2026`,he].filter(Boolean).join(" "):`${fe.trimEnd()}\u2026`;for(;(_t.getComputedTextLength()>$?Nt.length>4:!1);)Nt=Nt.slice(0,-2),Lt.text(dn(Nt))}}}let Z=E.append("g").attr("class",t.cls("hover")).style("display","none");Z.append("line").attr("class",t.cls("rule")).attr("y1",0).attr("y2",P);let Q=E.append("rect").attr("class",t.cls("overlay")).attr("width",H).attr("height",P);t.tooltip.bind(Q,A=>{var st;let[D]=n.pointer(A),w=X.invert(D),U=Math.max(0,Math.min(p-1,n.bisectCenter(m,w))),ut=d(U);Z.style("display",null).select("line").attr("x1",ut).attr("x2",ut);let j=e.series.map((rt,J)=>({si:J,v:rt.values[U]})).filter(rt=>rt.v!==null).sort((rt,J)=>J.v-rt.v),C=j.slice(0,8),$=C.map(rt=>it(t.cls("tip-row"),at(r,rt.si,t.dark),e.series[rt.si].label,S(rt.si)(rt.v))).join(""),z=j.length>C.length?`\x3cdiv class="${t.cls("tip-more")}">+${j.length-C.length} more\x3c/div>`:"",W=C.length?c?F((st=n.max(b,rt=>rt[U][1]))!=null?st:0):V(C[0].si)(C[0].v):P/2;t.tooltip.show(`\x3cdiv class="${t.cls("tip-title")}">${ct(i?String(e.x[U]):t.fmtX((e.xKind==="date",m[U])))}\x3c/div>${$}${z}`,ut+k.left,W+k.top)},()=>Z.style("display","none"))}function We(t){let{spec:n}=t;return __gvAnd((n.type==="line"?n.data.series.length===1:!1),()=>(!!dt(t,[n.data.series[0].key])))}function Ft(t,n){var r;return __gvAnd(t.style.paletteId.startsWith("highlight"),()=>(t.data.series[n].key!==((r=t.style.highlight)!=null?r:t.data.series[0].key)))}function Xn(t,n,r){let{d3:o,spec:e}=t,a=e.data;if(a.xKind==="date")return s=>{let c=Xe(o,n,r,s);return{ticks:c.ticks,label:(i,m)=>c.label(i,m)}};if(a.xKind==="category"){let s=a.x.map(String),c=s.length;return i=>({ticks:o.range(0,c,Math.max(1,Math.ceil(c/i))),label:m=>s[m]})}return Zt(t,n)}var Jt="http://www.w3.org/2000/svg",Ze=/[\p{Script=Latin}\p{Script=Greek}\p{Script=Cyrillic}]/u,Ue=/[_\-/.]/;function Wn(t,n,r){let o=[],e=Array.from(t);for(;(e.length>1?r(e.join(""))>n:!1);){let a=i=>{let m=e.slice(0,i).join("");return (Ze.test(e[i-1])?Ze.test(e[i]):!1)?`${m}-`:m},s=1;for(;((e.length-1)>(s)?__gvLe(r(a(s+1)),n):!1);)s++;let c=s;for(;(c>Math.ceil(s/2)?!Ue.test(e[c-1]):!1);)c--;(Ue.test(e[c-1])?(s=c):!1),o.push(a(s)),e=e.slice(s)}return{lines:o,rest:e.join("")}}function Ke(t,n,r,o){let e=[],a="";for(let s of t.split(/\s+/).filter(Boolean)){let c=a?`${a} ${s}`:s;if(__gvLe(o(c),n)){a=c;continue}(a?e.push(a):!1);let i=Wn(s,n,o);if(e.push(...i.lines),a=i.rest,e.length>r)break}if((a?e.push(a):!1),e.length>r){let s=Array.from(e[r-1].replace(/-$/,""));for(;(s.length>1?o(`${s.join("").trimEnd()}\u2026`)>n:!1);)s=s.slice(0,-1);e.length=r,e[r-1]=`${s.join("").trimEnd()}\u2026`}return e}function Qe(t){t.textContent="";let n=t.ownerDocument.createElementNS(Jt,"tspan");return t.appendChild(n),r=>(n.textContent=r,n.getComputedTextLength())}function Je(t,n,r){var a;let o=t.getAttribute("x"),e=t.ownerDocument;if(t.textContent="",(1)>=(n.length)){t.textContent=(a=n[0])!=null?a:"";return}n.forEach((s,c)=>{let i=e.createElementNS(Jt,"tspan");(o!==null?i.setAttribute("x",o):!1),(c?i.setAttribute("dy",`${r}em`):!1),i.textContent=s,t.appendChild(i)})}function ce(t,n,r,o,e){let a=Ke(n,r,o,Qe(t));Je(t,a,e);let s=__gvAnd((a.length>0?a[a.length-1].endsWith("\u2026"):!1),()=>(!n.endsWith("\u2026")));return{lines:Math.max(1,a.length),cut:s}}function Yn(t,n,r,o,e){let a=/\s/.test(t),s=f=>a?f.split(/\s+/).filter(Boolean):Array.from(f),c=f=>f.join(a?" ":""),i=s(t),m=n.filter(f=>f!==t).map(s),p=(f,b)=>(f.length>=b?c(f.slice(-b))===c(i.slice(-b)):!1),l=1;for(;((i.length)>(l)?m.some(f=>p(f,l)):!1);)l++;let h=c(i.slice(-l));for(let f=i.length-l-1;f>=0;f--){let b=c(i.slice(0,f)),x=a?`${b?`${b} `:""}\u2026 ${h}`:`${b}\u2026${h}`,g=Ke(x,r,1/0,e);if((o)>=(g.length))return g}return null}function tn(t,n){var a;let r=t.ownerDocument,o=r.createElementNS(Jt,"g"),e=r.createElementNS(Jt,"title");e.textContent=n,((a=t.parentNode)==null?!0:a.insertBefore(o,t)),o.appendChild(e),o.appendChild(t)}function le(t){var n;return __gvOr(Array.from(t.querySelectorAll("tspan")).map(r=>{var o;return(o=r.textContent)!=null?o:""}).join(" "),()=>(((n=t.textContent)!=null?n:"").trim()))}function ue(t,n,r,o=1.15){var s;let e=((s=t.textContent)!=null?s:"").trim(),a=ce(t,e,n,r,o);return (a.cut?tn(t,e):!1),a.lines}function gt(t,n,r,o=1.15){let e=t.map(s=>{var c;return((c=s.textContent)!=null?c:"").trim()}),a=t.map((s,c)=>s.getComputedTextLength()>n?ce(s,e[c],n,r,o):{lines:1,cut:!1});for(let s of Zn(t,e)){let c=Yn(e[s],e,n,r,Qe(t[s]));c?(Je(t[s],c,o),a[s]={lines:c.length,cut:!0}):a[s]=ce(t[s],e[s],n,r,o)}return a.forEach((s,c)=>__gvAnd(s.cut,()=>(tn(t[c],e[c])))),a.map(s=>s.lines)}function Zn(t,n){let r=new Map;t.forEach((e,a)=>{var s;return r.set(le(e),[...(s=r.get(le(e)))!=null?s:[],a])});let o=[];for(let e of r.values())(new Set(e.map(a=>n[a])).size>1?o.push(...e.filter(a=>n[a]!==le(t[a]))):!1);return o}var en=110,Un=3,Kn=19,Qn=10;function me(t){return t.toUpperCase()===mt.orange?mt.azure:mt.orange}function nn(t){var et,A,D,w,U,ut;let{d3:n,spec:r,svg:o}=t,{data:e,style:a}=r,s=r.type==="stacked",c=r.type==="combo",i=j=>(!c?!0:j===0),m=j=>__gvAnd((c?j>0:c),()=>(e.series[j].axis==="right")),p=j=>t.fmtFor(e.series[j]),l=e.x.map(j=>t.fmtX(j)),h=l.length;if(h===0)return;let f=e.series.length,b=0,x=0,g=[];if(s){let j=e.x.map((C,$)=>e.series.map(z=>{var W;return(W=z.values[$])!=null?W:0}));g=n.stack().keys(e.series.map((C,$)=>$)).value((C,$)=>C[$]).offset(n.stackOffsetDiverging)(j),b=Math.min(0,(et=n.min(g,C=>n.min(C,$=>$[0])))!=null?et:0),x=Math.max(0,(A=n.max(g,C=>n.max(C,$=>$[1])))!=null?A:0)}else{let j=e.series.filter((C,$)=>!m($)).flatMap(C=>C.values).filter(C=>C!==null);b=Math.min(0,(D=n.min(j))!=null?D:0),x=Math.max(0,(w=n.max(j))!=null?w:0)}((a.yMax!==null?a.yMax>x:!1)?(x=a.yMax):!1),(b===x?(x=1):!1);let k=e.series.some((j,C)=>m(C)),P=t.mobile?4:5,N=null,F=t.fmtAxis,G=0;if(k){let j=e.series.filter((z,W)=>m(W)).flatMap(z=>z.values).filter(z=>z!==null),C=(U=n.min(j))!=null?U:0,$=(ut=n.max(j))!=null?ut:1;(a.rightFromZero?(C=Math.min(0,C),$=Math.max(0,$)):!1),(C===$?($=C+1):!1),N=n.scaleLinear().domain([C,$]).nice(P),F=t.rightAxis(N.domain(),P),G=lt(t,N.ticks(P).map(F),t.mobile?12:14)+10,t.margin.right=Math.max(t.margin.right,G+4)}let y=t.margin,R=n.scaleLinear().domain([b,x]).nice(t.mobile?4:5).range([t.height-y.top-40,0]);t.setAxis(R.domain(),t.mobile?4:5),y.left=lt(t,wt(t,R).filter(function(v,i,a){return Math.abs(v)!==Math.max(Math.abs(a[0]),Math.abs(a[a.length-1]))}).map(t.fmtAxis),t.mobile?12:14)+10;let _=Math.max(40,t.width-y.left-y.right),V=n.scaleBand().domain(l.map((j,C)=>String(C))).range([0,_]).paddingInner(.25).paddingOuter(.1),S=V.bandwidth(),M=t.mobile?12:13,I=lt(t,l,M),B=e.xKind!=="category",O=1,Y="flat";(I>S+V.step()*.25?(B?O=Math.ceil((I+10)/V.step()):Y=((14)>=(h)?S>36:!1)?"wrap":"rotate"):!1),(Y==="rotate"?(O=Math.max(1,Math.ceil(14/Math.max(1,V.step())))):!1);let K=o.append("g").attr("class",t.cls("ticks")),tt=0,H=[];l.forEach((j,C)=>{var st;if(C%O!==0)return;let $=((st=V(String(C)))!=null?st:0)+S/2,z=K.append("text").style("font-size",`${M}px`).text(j),W=z.node();if(Y==="rotate"){z.attr("text-anchor","end").attr("transform",`translate(${$},12) rotate(-45)`);let rt=Math.min((en-12)/.72,($+y.left-M)/Math.SQRT1_2);(W.getComputedTextLength()>rt?ue(W,rt,1):!1),tt=Math.max(tt,W.getComputedTextLength())}else z.attr("x",$).attr("y",20).attr("text-anchor","middle"),(Y==="wrap"?H.push(W):!1)});let X=Math.max(1,...gt(H,V.step()-4,Un));y.bottom=Y==="rotate"?Math.min(en,tt*.72+12)+8:Y==="wrap"?Math.ceil(20+(X-1)*M*1.15+M*.35+8):30;y.bottom+=a.xLabel?20:0;let E=Math.max(60,t.height-y.top-y.bottom),u=n.scaleLinear().domain([b,x]).nice(P).range([E,0]);((a.valueLabels?(24)>=(h):!1)?tr(u,E,y.top,Jn(t,g)):!1),(N==null?!0:N.range([E,0])),K.attr("transform",`translate(${y.left},${y.top+E})`);(a.xLabel?K.append("text").attr("class",t.cls("axis-title")).attr("x",V.range()[1]/2).attr("y",y.bottom-6).attr("text-anchor","middle").text(a.xLabel):!1);let d=o.append("g").attr("transform",`translate(${y.left},${y.top})`);if(Tt(t,d,u,_),N){let j=xt(r,at(r,e.series.findIndex((C,$)=>m($)),t.dark),t.dark);d.append("g").attr("class",t.cls("ticks")).selectAll("text").data(N.ticks(P)).join("text").attr("x",_+8).attr("y",C=>N(C)).attr("dy","0.32em").style("fill",j).text(C=>F(C)),(a.rightLabel?o.append("text").attr("class",t.cls("axis-title")).attr("x",t.width).attr("y",t.rightTitleY).attr("text-anchor","end").style("fill",j).text(a.rightLabel):!1)}let T=d.append("g"),v=Et(t)?ft(t,T,_,E):null,L=c?1:f,Z=n.scaleBand().domain(n.range(L)).range([0,S]).padding(L>1?.08:0),Q=[];if(s?(g.forEach((j,C)=>{j.forEach(($,z)=>{var pt;let W=u($[0]),st=u($[1]),rt=Math.abs(W-st);if((0)>=(rt))return;let J=(pt=V(String(z)))!=null?pt:0,ot=v?dt(t,[e.series[C].key,String(e.x[z])]):null;((v?ot:!1)?v.clip(ot).append("rect").attr("x",J).attr("y",Math.min(W,st)).attr("width",S).attr("height",rt):!1),T.append("rect").attr("class",t.cls("segment")).attr("x",J).attr("y",Math.min(W,st)).attr("width",S).attr("height",rt).attr("fill",at(r,C,t.dark)).attr("fill-opacity",ht(t,ot))})}),(a.valueLabels?e.x.forEach((j,C)=>{var rt;let $=e.series.map(J=>{var ot;return(ot=J.values[C])!=null?ot:0}),z=$.filter(J=>J>0).reduce((J,ot)=>J+ot,0),W=$.filter(J=>(0)>(J)).reduce((J,ot)=>J+ot,0),st=((rt=V(String(C)))!=null?rt:0)+S/2;(((z>0?!0:W===0))?Q.push({x:st,y:u(z)-6,text:t.fmtValue(z),below:!1}):!1),((0)>(W)?Q.push({x:st,y:u(W)+14,text:t.fmtValue(W),below:!0}):!1)}):!1)):e.series.forEach((j,C)=>{(i(C)?j.values.forEach(($,z)=>{var _t,At;if($===null)return;let W=((_t=V(String(z)))!=null?_t:0)+((At=Z(C))!=null?At:0),st=Z.bandwidth(),rt=u(Math.max(0,$)),J=Math.abs(u($)-u(0)),ot=Qt(W,rt,st,J,4,$>=0?"up":"down"),pt=v?dt(t,[j.key,String(e.x[z])]):null;((v?pt:!1)?v.clip(pt,Kt(t,String(e.x[z]))?{x:W,y:rt,w:st,h:J}:void 0).append("path").attr("d",ot):!1);let Lt=at(r,C,t.dark);T.append("path").attr("class",t.cls("bar")).attr("d",ot).attr("fill",(((0)>($)?L===1:!1)?!c:!1)?me(Lt):Lt).attr("fill-opacity",ht(t,pt)),(a.valueLabels?Q.push({x:W+st/2,y:$>=0?u($)-6:u($)+14,text:p(C)($),below:(0)>($)}):!1)}):!1)}),(v==null?!0:v.paint()),St(t,d,u,_),(c?e.series.forEach((j,C)=>{var rt;if(C===0)return;let $=(m(C)?N:!1)?N:u,z=J=>{var ot;return((ot=V(String(J)))!=null?ot:0)+S/2},W=(rt=n.line().defined(J=>J!==null).x((J,ot)=>z(ot)).y(J=>$(J))(j.values))!=null?rt:"",st=at(r,C,t.dark);T.append("path").attr("class",t.cls("line-halo")).attr("d",W),T.append("path").attr("class",t.cls("line")).attr("d",W).attr("stroke",st).attr("stroke-width",t.mobile?3:3.5).attr("stroke-dasharray",j.dashed?"6 4":null),j.values.forEach((J,ot)=>{(J!==null?T.append("circle").attr("class",t.cls("dot")).attr("cx",z(ot)).attr("cy",$(J)).attr("r",h>24?2.5:4).attr("fill",st):!1)})}):!1),(Q.length?(24)>=(h):!1)){let j=(L>1?!s:!1)?Z.bandwidth():S;(__gvLe(lt(t,Q.map($=>$.text),12),j+6)?d.append("g").selectAll("text").data(Q).join("text").attr("class",t.cls("value-label")).attr("x",$=>$.x).attr("y",$=>$.y).attr("text-anchor","middle").text($=>$.text):!1)}let q=d.append("g").selectAll("rect").data(l.map((j,C)=>C)).join("rect").attr("class",t.cls("overlay")).attr("x",j=>{var C;return((C=V(String(j)))!=null?C:0)-(V.step()-S)/2}).attr("width",V.step()).attr("y",0).attr("height",E);t.tooltip.bind(q,(j,C)=>{let $=l[C],z=e.series.map((J,ot)=>J.values[C]===null?"":it(t.cls("tip-row"),at(r,ot,t.dark),J.label,p(ot)(J.values[C]))).join(""),W=(s?f>1:!1)?it(t.cls("tip-row"),"transparent","Total",t.fmtValue(e.series.reduce((J,ot)=>{var pt;return J+((pt=ot.values[C])!=null?pt:0)},0))):"",[st,rt]=n.pointer(j,t.chartEl);t.tooltip.show(`\x3cdiv class="${t.cls("tip-title")}">${ct($)}\x3c/div>${z}${W}`,st,rt)})}function Jn(t,n){var c,i,m,p;let{d3:r,spec:o}=t;if(o.type==="stacked"){let l=(c=r.min(n,h=>r.min(h,f=>f[0])))!=null?c:0;return{top:(i=r.max(n,h=>r.max(h,f=>f[1])))!=null?i:null,bottom:(0)>(l)?l:null}}let e=(o.type==="combo"?o.data.series.slice(0,1):o.data.series).flatMap(l=>l.values).filter(l=>l!==null),a=(m=r.max(e.filter(l=>l>=0)))!=null?m:null,s=(p=r.min(e.filter(l=>(0)>(l))))!=null?p:null;return{top:a,bottom:s}}function tr(t,n,r,o){let e=Math.min(.4,Qn/n),a=Math.min(.4,Math.max(0,Kn-r)/n);for(let s=0;(3)>(s);s++){let[c,i]=t.domain();((o.bottom!==null?t(o.bottom)>n*(1-e):!1)?(c=i-(i-o.bottom)/(1-e)):!1),((o.top!==null?__gvLt(t(o.top),n*a):!1)?(i=(o.top-a*c)/(1-a)):!1),t.domain([c,i])}}var er=3;function nr(t){return t>1?t*13+14:30}function rn(t){var X,E;let{d3:n,spec:r,svg:o}=t,{data:e,style:a}=r,s=e.x.map(u=>t.fmtX(u)),c=s.length;if(c===0)return;let i=e.series.length,m=t.margin,p=e.series.flatMap(u=>u.values).filter(u=>u!==null),l=Math.min(0,(X=n.min(p))!=null?X:0),h=Math.max(0,(E=n.max(p))!=null?E:0);((a.yMax!==null?a.yMax>h:!1)?(h=a.yMax):!1),(l===h?(h=1):!1);let f=t.mobile?13:14,b=t.width*(t.mobile?.42:.34),x=Math.min(b,lt(t,s,f));m.left=x+10;let g=a.valueLabels,k=g?lt(t,p.map(t.fmtValue),12)+8:0;m.right=Math.max(m.right,k),(((0)>(l)?g:!1)?(m.left+=k):!1),m.bottom=g?8:28;let P=Math.max(40,t.width-m.left-m.right),N=o.append("g").attr("transform",`translate(${m.left},${m.top})`),F=N.append("g").attr("class",t.cls("cat-labels")),G=s.map(u=>F.append("text").attr("x",-10-(((0)>(l)?g:!1)?k:0)).attr("text-anchor","end").style("font-size",`${f}px`).text(u)),y=gt(G.map(u=>u.node()),x,er),R=G.map((u,d)=>({t:u,lines:y[d]})),_=nr(i),V=Math.max(_,Math.ceil(n.max(R,u=>u.lines)*f*1.15+10)),S=c*V,M=n.scaleLinear().domain([l,h]).nice(t.mobile?4:5).range([0,P]);t.setAxis(M.domain(),t.mobile?4:5);let I=Math.max(.25,1-_*.75/V),B=n.scaleBand().domain(s.map((u,d)=>String(d))).range([0,S]).paddingInner(I).paddingOuter(I/2),O=n.scaleBand().domain(n.range(i)).range([0,B.bandwidth()]).padding(i>1?.1:0);if(R.forEach(({t:u,lines:d},T)=>{var v;u.attr("y",((v=B(String(T)))!=null?v:0)+B.bandwidth()/2).attr("dy",`${.32-(d-1)*.575}em`)}),!g){let u=M.ticks(t.mobile?4:5);N.append("g").attr("class",t.cls("grid")).selectAll("line").data(u).join("line").attr("x1",d=>Math.round(M(d))+.5).attr("x2",d=>Math.round(M(d))+.5).attr("y1",0).attr("y2",S),N.append("g").attr("class",t.cls("ticks")).selectAll("text").data(u).join("text").attr("x",d=>M(d)).attr("y",S+20).attr("text-anchor","middle").text(d=>t.fmtAxis(d))}let Y=N.append("g"),K=Et(t)?ft(t,Y,P,S):null,tt=[];e.series.forEach((u,d)=>{u.values.forEach((T,v)=>{var w,U;if(T===null)return;let L=((w=B(String(v)))!=null?w:0)+((U=O(d))!=null?U:0),Z=O.bandwidth(),Q=M(Math.min(0,T)),q=Math.abs(M(T)-M(0)),et=Qt(Q,L,q,Z,4,T>=0?"right":"left"),A=K?dt(t,[u.key,String(e.x[v])]):null;((K?A:!1)?K.clip(A,Kt(t,String(e.x[v]))?{x:Q,y:L,w:q,h:Z}:void 0).append("path").attr("d",et):!1);let D=at(r,d,t.dark);Y.append("path").attr("class",t.cls("bar")).attr("d",et).attr("fill",((0)>(T)?i===1:!1)?me(D):D).attr("fill-opacity",ht(t,A)),(g?tt.push({x:T>=0?M(T)+6:M(T)-6,y:L+Z/2,text:t.fmtValue(T),anchor:T>=0?"start":"end"}):!1)})}),(K==null?!0:K.paint()),(0)>(l)?N.append("line").attr("class",t.cls("zero")).attr("x1",M(0)).attr("x2",M(0)).attr("y1",0).attr("y2",S):N.append("line").attr("class",t.cls("baseline")).attr("x1",M(0)+.5).attr("x2",M(0)+.5).attr("y1",0).attr("y2",S),N.append("g").selectAll("text").data(tt).join("text").attr("class",t.cls("value-label")).attr("x",u=>u.x).attr("y",u=>u.y).attr("dy","0.32em").attr("text-anchor",u=>u.anchor).text(u=>u.text);let H=N.append("g").selectAll("rect").data(s.map((u,d)=>d)).join("rect").attr("class",t.cls("overlay")).attr("x",-m.left).attr("width",t.width).attr("y",u=>{var d;return((d=B(String(u)))!=null?d:0)-(B.step()-B.bandwidth())/2}).attr("height",B.step());return t.tooltip.bind(H,(u,d)=>{if((i===1?g:!1))return;let T=s[d],v=e.series.map((Q,q)=>Q.values[d]===null?"":it(t.cls("tip-row"),at(r,q,t.dark),Q.label,t.fmtValue(Q.values[d]))).join(""),[L,Z]=n.pointer(u,t.chartEl);t.tooltip.show(`\x3cdiv class="${t.cls("tip-title")}">${ct(T)}\x3c/div>${v}`,L,Z)}),S+m.top+m.bottom}var an=40;function on(t){var X,E;let{d3:n,spec:r,svg:o}=t,{data:e,style:a}=r,s=(X=e.points)!=null?X:[];if(!s.length)return;let c=new Map(e.series.map((u,d)=>[u.key,d])),i=u=>{var d,T;return at(r,(T=c.get((d=u.group)!=null?d:e.series[0].key))!=null?T:0,t.dark)},m=([u,d])=>{let T=(__gvOr(__gvOr(d-u,()=>(Math.abs(u))),()=>(1)))*.04;return[u-T,d+T]},[p,l]=m(n.extent(s,u=>u.x));(a.xFromZero?(p=Math.min(0,p),l=Math.max(0,l)):!1),(a.xMin!==null?(p=a.xMin):!1),(a.xMax!==null?(l=a.xMax):!1);let[h,f]=m(n.extent(s,u=>u.y));(a.yFromZero?(h=Math.min(0,h),f=Math.max(0,f)):!1),(a.yMin!==null?(h=a.yMin):!1),(a.yMax!==null?(f=a.yMax):!1),(p>l?([p,l]=[l,p]):!1),(h>f?([h,f]=[f,h]):!1);let b=t.margin;b.bottom=a.xLabel?48:30;let x=t.height-b.top-b.bottom,g=n.scaleLinear().domain([h,f===h?h+1:f]).nice(5).range([x,0]);t.setAxis(g.domain(),t.mobile?4:5),b.left=lt(t,wt(t,g).filter(function(v,i,a){return Math.abs(v)!==Math.max(Math.abs(a[0]),Math.abs(a[a.length-1]))}).map(t.fmtAxis),t.mobile?12:14)+10;let k=Math.max(40,t.width-b.left-b.right),P=n.scaleLinear().domain([p,l===p?p+1:l]).nice().range([0,k]),N=o.append("g").attr("transform",`translate(${b.left},${b.top})`);Tt(t,N,g,k),Xt(t,N,k,x),St(t,N,g,k);let F=u=>P(u);Ut(t,N,x,Yt(t,F,Zt(t,P),Wt(k,t.mobile)),F),(a.xLabel?N.append("text").attr("class",t.cls("axis-title")).attr("x",k).attr("y",x+42).attr("text-anchor","end").text(a.xLabel):!1);let G=t.mobile?4:5.5,y=t.id("plot");o.append("defs").append("clipPath").attr("id",y).append("rect").attr("x",-G).attr("y",-G).attr("width",k+2*G).attr("height",x+2*G),N.append("g").attr("clip-path",`url(#${y})`).selectAll("circle").data(s).join("circle").attr("class",t.cls("point")).attr("cx",u=>P(u.x)).attr("cy",u=>g(u.y)).attr("r",G).attr("fill",i);let[R,_]=P.domain(),[V,S]=g.domain(),M=s.filter(u=>__gvAnd(__gvAnd(__gvAnd(__gvAnd(u.label,()=>(u.x>=R)),()=>((_)>=(u.x))),()=>(u.y>=V)),()=>((S)>=(u.y)))).slice(0,an);if((M.length?(an)>=(M.length):!1)){let{kept:u}=je(M.map(d=>({p:d,y:g(d.y)-G-5})),13,8,x,40);N.append("g").selectAll("text").data(u).join("text").attr("class",t.cls("value-label")).attr("x",d=>P(d.p.x)).attr("y",d=>d.y).attr("text-anchor",d=>P(d.p.x)>k*.85?"end":__gvLt(P(d.p.x),k*.15)?"start":"middle").text(d=>d.p.label)}let I=n.Delaunay.from(s,u=>P(u.x),u=>g(u.y)),B=N.append("circle").attr("class",t.cls("ring")).attr("r",G+3).style("display","none"),O=s.some(u=>u.group!==void 0),Y=__gvOr(__gvOr(a.yLabel,()=>((O?"Vertical axis":(E=e.series[0])==null?void 0:E.label))),()=>("Vertical axis")),K=__gvOr(a.xLabel,()=>("Horizontal axis")),tt=N.append("rect").attr("class",t.cls("overlay")).attr("width",k).attr("height",x),H=()=>B.style("display","none");t.tooltip.bind(tt,u=>{let[d,T]=n.pointer(u),v=I.find(d,T),L=s[v];if((!L?!0:Math.hypot(P(L.x)-d,g(L.y)-T)>40)){H(),t.tooltip.hide();return}B.style("display",null).attr("cx",P(L.x)).attr("cy",g(L.y));let Z=__gvOr(__gvOr(L.label,()=>(L.group)),()=>("")),Q=((O?L.group:!1)?L.label:!1)?it(t.cls("tip-row"),i(L),L.group,""):"",q=((O?L.group:!1)?L.label:!1)?"transparent":i(L),et=Q+it(t.cls("tip-row"),"transparent",K,t.fmtX(L.x))+it(t.cls("tip-row"),q,Y,t.fmtValue(L.y));t.tooltip.show(`${Z?`\x3cdiv class="${t.cls("tip-title")}">${ct(Z)}\x3c/div>`:""}${et}`,P(L.x)+b.left,g(L.y)+b.top)},H)}var rr=.25,ar=16,or=3;function sn(t){let{d3:n,spec:r,svg:o}=t,{data:e,style:a}=r,s=e.x.map(String),c=e.series.length;if((!s.length?!0:!c))return t.height;let i=Math.max(1,Math.min(c,Math.floor(t.width/(t.mobile?170:220)))),m=Math.ceil(c/i),p=t.width/i,l=_=>_%i*p+p/2,h=c>1?e.series.map((_,V)=>o.append("text").attr("class",t.cls("donut-title")).attr("x",l(V)).attr("text-anchor","middle").text(_.label)):[],f=gt(h.map(_=>_.node()),p-12,or),b=h.map((_,V)=>({t:_,lines:f[V]})),x=Math.max(1,...b.map(_=>_.lines)),g=c>1?30+Math.ceil((x-1)*ar*1.15):0,k=Math.max(50,Math.min(p/2-12,t.mobile?130:150)),P=a.donutHole?k*.56:0,N=g+k*2+18,F=_=>{var V,S;return yt(r,(S=(V=e.categoryColors)==null?void 0:V[_])!=null?S:nt.muted,t.dark)},G=n.format(".0%"),y=n.arc().innerRadius(P).outerRadius(k).padAngle(a.donutHole?.012:.006).cornerRadius(a.donutHole?2:0),R=n.arc().innerRadius(P?(P+k)/2:k*.62).outerRadius(P?(P+k)/2:k*.62);return e.series.forEach((_,V)=>{var H;let S=Math.floor(V/i),M=l(V),I=S*N+g+k+6,B=_.values.map(X=>(X!==null?X>0:!1)?X:0),O=B.reduce((X,E)=>X+E,0),Y=o.append("g").attr("transform",`translate(${M},${I})`);if(((H=b[V])==null?!0:H.t.attr("y",S*N+18)),!O)return;let K=n.pie().sort(null).value(X=>X)(B),tt=ft(t,Y,0,0);K.forEach((X,E)=>{var v;if((0)>=(X.value))return;let u=(v=y(X))!=null?v:"",d=dt(t,[s[E],_.key]);(d?tt.clip(d,{x:-k,y:-k,w:k*2,h:k*2}).append("path").attr("d",u):!1);let T=Y.append("path").attr("class",t.cls("slice")).attr("d",u).attr("fill",F(E)).attr("fill-opacity",ht(t,d));t.tooltip.bind(T,L=>{var et;let[Z,Q]=n.pointer(L,t.chartEl),q=it(t.cls("tip-row"),F(E),c>1?_.label:"Value",t.fmtValue((et=_.values[E])!=null?et:0))+it(t.cls("tip-row"),"transparent","Share",G(X.value/O));t.tooltip.show(`\x3cdiv class="${t.cls("tip-title")}">${ct(s[E])}\x3c/div>${q}`,Z,Q)})}),tt.paint(),K.forEach((X,E)=>{if(((rr)>(X.endAngle-X.startAngle)?!0:(0)>=(X.value)))return;let[u,d]=R.centroid(X),T=Ot(F(E)),v=Y.append("text").attr("class",t.cls("slice-label")).attr("x",u).attr("y",d).attr("dy","0.35em").attr("text-anchor","middle").text(G(X.value/O));(T!=="#FFFFFF"?v.style("fill",T).style("stroke","rgba(255,255,255,0.35)"):!1)})}),m*N+6}function ln(t){let{d3:n,spec:r,svg:o}=t,{data:e,style:a}=r,[s,c]=e.series;if(((!s?!0:!c)?!0:!e.x.length))return;let m=e.x.map(String).map((u,d)=>({i:d,name:u,a:s.values[d],b:c.values[d]})).filter(u=>(u.a!==null?u.b!==null:!1));if(!m.length)return;let p=t.margin;p.top=Math.max(p.top,34),p.bottom=14;let l=t.mobile?12:13,h=l+3,f=Math.max(t.height-p.top-p.bottom,m.length*h);o.attr("height",f+p.top+p.bottom);let[b,x]=Mt(m.flatMap(u=>[u.a,u.b]),a.yFromZero,a.yMin,a.yMax),g=n.scaleLinear().domain([b,x]).nice().range([f,0]),[k,P]=g.domain(),N=(u,d)=>d==="left"?{name:u.name,value:t.fmtValue(u.a),nameFirst:!0}:{name:t.mobile?"":u.name,value:t.fmtValue(u.b),nameFirst:!1},F=(u,d=u.name)=>d?u.nameFirst?`${d} ${u.value}`:`${u.value} ${d}`:u.value,G=u=>F(N(u,"left")),y=u=>F(N(u,"right")),R=t.width*(t.mobile?.4:.3),_=Math.min(R,lt(t,m.map(G),l))+12,V=Math.min(R,lt(t,m.map(y),l))+12,S=_,M=Math.max(S+60,t.width-V),I=u=>{var d,T;return yt(r,(T=(d=e.categoryColors)==null?void 0:d[u])!=null?T:nt.muted,t.dark)},B=u=>(I(u).toUpperCase()===nt.muted.toUpperCase()?!0:I(u).toUpperCase()===nt.darkMuted.toUpperCase()),O=o.append("g").attr("transform",`translate(0,${p.top})`);o.append("text").attr("class",t.cls("slope-head")).attr("x",S).attr("y",18).attr("text-anchor","middle").text(s.label),o.append("text").attr("class",t.cls("slope-head")).attr("x",M).attr("y",18).attr("text-anchor","middle").text(c.label),O.append("line").attr("class",t.cls("slope-axis")).attr("x1",S).attr("x2",S).attr("y1",0).attr("y2",f),O.append("line").attr("class",t.cls("slope-axis")).attr("x1",M).attr("x2",M).attr("y1",0).attr("y2",f);let Y=t.id("plot");o.append("defs").append("clipPath").attr("id",Y).append("rect").attr("x",0).attr("y",-5).attr("width",t.width).attr("height",f+10);let K=O.append("g").attr("clip-path",(a.yMin!==null?!0:a.yMax!==null)?`url(#${Y})`:null),tt=[...m].sort((u,d)=>+!B(u.i)-+!B(d.i));for(let u of tt){let d=I(u.i);K.append("line").attr("class",t.cls("slope-line")).attr("x1",S).attr("x2",M).attr("y1",g(u.a)).attr("y2",g(u.b)).attr("stroke",d).attr("stroke-width",B(u.i)?2:3),K.append("circle").attr("cx",S).attr("cy",g(u.a)).attr("r",4).attr("fill",d),K.append("circle").attr("cx",M).attr("cy",g(u.b)).attr("r",4).attr("fill",d)}let H=new Set,X=u=>{let d=m.map(v=>({r:v,y:g(u==="left"?v.a:v.b)}));sr(d,h,h/2,f);let T=u==="left"?S:M;for(let v of d){let L=u==="left"?v.r.a:v.r.b,Z=L>P?-1:(k)>(L)?1:0;((Z?!H.has(`${u}${Z}`):!1)?(H.add(`${u}${Z}`),O.append("path").attr("class",t.cls("off-scale")).attr("d",`M${T},${(0)>(Z)?-8:f+8}l-5,${-Z*8}h10z`).attr("fill",t.dark?nt.darkSecondary:nt.secondary).append("title").text((0)>(Z)?"Above the axis range":"Below the axis range")):!1);let Q=N(v.r,u),q=O.append("text").attr("class",t.cls("slope-label")).attr("x",u==="left"?S-10:M+10).attr("y",v.y).attr("dy","0.32em").attr("text-anchor",u==="left"?"end":"start").style("font-size",`${l}px`).text(F(Q));(B(v.r.i)?!0:q.style("fill",xt(r,I(v.r.i),t.dark)));let et=q.node(),A=Q.name;for(;(et.getComputedTextLength()>R?A.length>3:!1);)A=A.slice(0,-1),q.text(F(Q,`${A.trimEnd()}\u2026`))}};X("left"),X("right");let E=O.append("rect").attr("class",t.cls("overlay")).attr("x",S).attr("width",M-S).attr("height",f);t.tooltip.bind(E,u=>{let[d,T]=n.pointer(u),v=(d-S)/(M-S),L=m[0],Z=1/0;for(let et of m){let A=g(et.a)+(g(et.b)-g(et.a))*v;(__gvLt(Math.abs(A-T),Z)?([L,Z]=[et,Math.abs(A-T)]):!1)}let Q=L.b-L.a,q=it(t.cls("tip-row"),I(L.i),s.label,t.fmtValue(L.a))+it(t.cls("tip-row"),I(L.i),c.label,t.fmtValue(L.b))+it(t.cls("tip-row"),"transparent","Change",`${Q>=0?"+":""}${t.fmtValue(Q)}`);t.tooltip.show(`\x3cdiv class="${t.cls("tip-title")}">${ct(L.name)}\x3c/div>${q}`,d,T+p.top)})}function sr(t,n,r,o){let e=[...t].sort((a,s)=>a.y-s.y);e.forEach((a,s)=>a.y=Math.max(a.y,s?e[s-1].y+n:r));for(let a=e.length-1;a>=0;a--)e[a].y=Math.min(e[a].y,(e.length-1)>(a)?e[a+1].y-n:o)}var ir=3;function cn(t){let{d3:n,spec:r,svg:o}=t,{data:e,style:a}=r,s=e.x.map(E=>t.fmtX(E)),c=s.length;if((!c?!0:!e.series.length))return t.height;let i=t.margin,m=t.mobile?30:32,p=t.mobile?13:14,l=t.width*(t.mobile?.38:.3),h=Math.min(l,lt(t,s,p));i.left=h+14,i.right=Math.max(i.right,16),i.bottom=30,i.top=Math.max(i.top,6);let f=Math.max(60,t.width-i.left-i.right),b=o.append("g").attr("transform",`translate(${i.left},${i.top})`),x=s.map(E=>b.append("text").attr("class",t.cls("cat-label")).attr("x",-12).attr("text-anchor","end").style("font-size",`${p}px`).text(E)),g=gt(x.map(E=>E.node()),h,ir),k=Math.max(m,Math.ceil(Math.max(1,...g)*p*1.15+10)),P=c*k,N=e.series.flatMap(E=>E.values).filter(E=>E!==null),[F,G]=Mt(N,a.yFromZero,a.yMin,a.yMax),y=t.mobile?4:5,R=n.scaleLinear().domain([F,G]).nice(y).range([0,f]);t.setAxis(R.domain(),y);let[_,V]=R.domain(),S=E=>(E>=_?(V)>=(E):!1),M=E=>E*k+k/2,I=E=>e.series.map(u=>u.values[E]).filter(u=>u!==null),B=s.map((E,u)=>a.valueLabels?lr(I(u),S):[]);(a.valueLabels?pr(t,R,f,B):!1);let O=cr(t,R,y),Y=E=>lt(t,[t.fmtValue(E)],12),K=B.map(E=>ur(R,f,E,Y)),tt=t.id("plot");o.append("defs").append("clipPath").attr("id",tt).append("rect").attr("x",R(_)-8).attr("y",0).attr("width",R(V)-R(_)+16).attr("height",P),b.append("g").attr("class",t.cls("grid")).selectAll("line").data(O).join("line").attr("x1",E=>Math.round(R(E))+.5).attr("x2",E=>Math.round(R(E))+.5).attr("y1",0).attr("y2",P),b.append("g").attr("class",t.cls("ticks")).selectAll("text").data(O).join("text").attr("x",E=>R(E)).attr("y",P+20).attr("text-anchor","middle").text(E=>t.fmtAxis(E)),(((0)>(F)?G>0:!1)?b.append("line").attr("class",t.cls("zero")).attr("x1",R(0)).attr("x2",R(0)).attr("y1",0).attr("y2",P):!1);let H=b.append("g").attr("clip-path",`url(#${tt})`);s.forEach((E,u)=>{x[u].attr("y",M(u)).attr("dy",`${.32-(g[u]-1)*.575}em`);let d=I(u),T=Math.min(...d),v=Math.max(...d);(((d.length>1?v>=_:!1)?(V)>=(T):!1)?H.append("line").attr("class",t.cls("dumbbell")).attr("x1",R(Math.max(_,T))).attr("x2",R(Math.min(V,v))).attr("y1",M(u)).attr("y2",M(u)):!1),mr(t,b,R,M(u),d),e.series.forEach((L,Z)=>{let Q=L.values[u];(Q!==null?H.append("circle").attr("class",t.cls("dot")).attr("cx",R(Q)).attr("cy",M(u)).attr("r",t.mobile?6:7).attr("fill",at(r,Z,t.dark)):!1)});for(let L of K[u])b.append("text").attr("class",t.cls("value-label")).attr("x",R(L.v)+L.dx).attr("y",M(u)).attr("dy","0.32em").attr("text-anchor",L.anchor).text(t.fmtValue(L.v))});let X=b.append("g").selectAll("rect").data(s.map((E,u)=>u)).join("rect").attr("class",t.cls("overlay")).attr("x",-i.left).attr("width",t.width).attr("y",E=>E*k).attr("height",k);return t.tooltip.bind(X,(E,u)=>{let d=e.series.map((L,Z)=>L.values[u]===null?"":it(t.cls("tip-row"),at(r,Z,t.dark),L.label,t.fmtValue(L.values[u]))).join(""),[T,v]=n.pointer(E,t.chartEl);t.tooltip.show(`\x3cdiv class="${t.cls("tip-title")}">${ct(s[u])}\x3c/div>${d}`,T,v)}),P+i.top+i.bottom}function lr(t,n){if(!t.length)return[];let r=Math.min(...t),o=Math.max(...t),e=[];return (((o)>(r)?n(r):!1)?e.push({v:r,anchor:"end",dx:-11}):!1),(n(o)?e.push({v:o,anchor:"start",dx:11}):!1),e}function cr(t,n,r){for(let o=r;o>=1;o--){t.setAxis(n.domain(),o);let e=n.ticks(o),a=e.map(c=>lt(t,[t.fmtAxis(c)],12));if((e.every((c,i)=>(i===0?!0:n(c)-n(e[i-1])>=(a[i]+a[i-1])/2+8))?!0:o===1))return e}return[]}function ur(t,n,r,o){let e=l=>{let h=l.anchor==="start"?t(l.v)+l.dx:t(l.v)+l.dx-o(l.v);return[h,h+o(l.v)]},a=l=>(e(l)[0]>=1?__gvLe(e(l)[1],n-1):!1),s=l=>({v:l.v,anchor:l.anchor==="end"?"start":"end",dx:-l.dx}),c=Math.min(...r.map(l=>l.v)),i=Math.max(...r.map(l=>l.v)),m=l=>((2)>(r.length)?!0:(e(l)[0]>=t(c)+7?__gvLe(e(l)[1],t(i)-7):!1)),p=[];for(let l of r){let h=a(l)?l:s(l);(((!a(h)?!0:(h!==l?!m(h):!1))?!0:p.some(f=>(__gvLt(e(f)[0],e(h)[1]+6)?__gvLt(e(h)[0],e(f)[1]+6):!1)))?!0:p.push(h))}return p}function mr(t,n,r,o,e){let[a,s]=r.domain(),c=e.filter(l=>(a)>(l)),i=e.filter(l=>l>s),m=t.dark?nt.darkSecondary:nt.secondary,p=(l,h,f)=>{let b=`M${l},${o}l${-h*6},-5v10z`;n.append("path").attr("class",t.cls("off-scale")).attr("d",b).attr("fill",m).append("title").text(`${f} ${f===1?"value is":"values are"} ${(0)>(h)?"below":"above"} the axis range`)};(c.length?p(r(a)-2,-1,c.length):!1),(i.length?p(r(s)+2,1,i.length):!1)}function pr(t,n,r,o){let e=new Map,a=i=>((e.has(i)?!0:e.set(i,lt(t,[t.fmtValue(i)],12))),e.get(i)),s=0,c=0;for(let i=0;(4)>(i);i++){let m=0,p=0;for(let l of o.flat()){let h=n(l.v)+l.dx;l.anchor==="end"?m=Math.max(m,a(l.v)-h+2):p=Math.max(p,h+a(l.v)-r+2)}if(((.5)>=(m)?(.5)>=(p):!1))return;s=Math.min(r*.3,s+Math.max(0,m)),c=Math.min(r*.3,c+Math.max(0,p)),n.range([s,r-c])}}var pe={paletteId:"",political:!1,background:"white",yFormat:{prefix:"",suffix:"",decimals:null},xFormat:{prefix:"",suffix:"",decimals:null},yFromZero:!0,yMin:null,yMax:null,valueLabels:!1,endDots:!0,imageFill:null,width:"column",height:400,yLabel:"",xLabel:"",highlight:null,legend:"top",xFromZero:!1,xMin:null,xMax:null,rightAxis:[],rightFormat:{prefix:"",suffix:"",decimals:null},rightLabel:"",rightFromZero:!0,donutHole:!0,partners:[],map:{method:"rounded",classes:5,breaks:[],palette:"seq-orange",reverse:!1,midpoint:null,continuous:!1,labels:!0,symbolMax:18,noDataLabel:"No data",thresholds:[],stops:[],colors:[],domain:null,categories:[],sizeTicks:[],projection:"equal-earth",sphere:!1,graticule:!1,center:[-30,20]}};var mn=600;function un(t){var n;return{...t,style:{...pe,...t.style,map:{...pe.map,...(n=t.style)==null?void 0:n.map}}}}function pn(t,n){var e;if(!n.size)return de(t);let r=t.type==="combo"?t.data.series.flatMap((a,s)=>n.has(a.key)?s===0?[{...a,values:a.values.map(()=>null)}]:[]:[a]):t.data.series.filter(a=>!n.has(a.key)),o=(e=t.data.points)==null?void 0:e.filter(a=>{var s,c;return!n.has((c=a.group)!=null?c:(s=t.data.series[0])==null?void 0:s.key)});return de({...t,data:{...t.data,series:r,points:o}})}function de(t){if((t.type!=="line"?t.type!=="combo":!1))return t;let n=t.data.series.filter(s=>s.values.some(c=>c!==null));if((!n.length?!0:!n.every(s=>s.axis==="right")))return t;let r=t.data.series.map(s=>({...s,axis:"left"})),o=t.style,e=__gvOr(o.rightLabel,()=>((hr(o.yFormat,o.rightFormat)?o.yLabel:""))),a={...o,yFormat:o.rightFormat,yFromZero:o.rightFromZero,yMin:null,yMax:null,yLabel:e,rightLabel:""};return{...t,style:a,data:{...t.data,series:r}}}function dr(t){if((t.type!=="line"?t.type!=="combo":!1))return!1;let n=(r,o)=>(r.axis==="right"?((t.type==="line"?!0:o>0)):!1);return __gvAnd(t.data.series.some(n),()=>(t.data.series.some((r,o)=>!n(r,o))))}function hr(t,n){var r,o;return __gvAnd(__gvAnd((t.prefix===n.prefix?t.suffix===n.suffix:!1),()=>(t.decimals===n.decimals)),()=>(((r=t.multiply)!=null?r:1)===((o=n.multiply)!=null?o:1)))}function fr(t,n,r,o=null){var y,R,_,V;let e=un(n),a=o?we(o):null,s=new Set,c=`gv-${e.slug}`,i=S=>`${c}__${S}`,m=t.querySelector(`.${i("chart")}`),p=t.querySelector(`.${i("legend")}`),l=Ge(m,i("tooltip")),h=-1,f,b=0;(p==null?!0:p.addEventListener("click",S=>{let M=S.target.closest("[data-key]"),I=M==null?void 0:M.dataset.key;(I!==void 0?(s.has(I)?s.delete(I):((e.data.series.length-1)>(s.size)?s.add(I):!1),x()):!1)}));let x=()=>{var Q,q,et,A,D;b=0;let S=Math.floor(m.clientWidth);if((0)>=(S))return;let M=e.style.background==="white"?re(t):{color:null,dark:!1},I=M.dark;t.classList.toggle(`${c}--dark`,I),M.color?t.style.setProperty("--gv-halo",M.color):t.style.removeProperty("--gv-halo"),h=S,f=M.color;let B=(mn)>(t.clientWidth);((Q=m.querySelector("svg"))==null?!0:Q.remove());let O=m.ownerDocument.createElementNS("http://www.w3.org/2000/svg","svg");m.insertBefore(O,m.firstChild);let Y=r.select(O).attr("class",i("svg")).attr("width",S).attr("aria-hidden","true"),K=ge(e.type),tt=K?400:B?Math.min(e.style.height,360):e.style.height;Y.attr("height",tt);let H=pn(e,s),X=H.style.yFormat,E=H.style.rightFormat,u=Gt(r,X.prefix,X.suffix,X.decimals,X.multiply),d=Gt(r,E.prefix,E.suffix,E.decimals,E.multiply),T=w=>u.value(w),v={d3:r,spec:H,base:c,root:t,chartEl:m,svg:Y,width:S,height:tt,mobile:B,dark:I,page:M.color,margin:{top:(((H.style.yLabel?!0:H.style.rightLabel))?!["bar","donut","dot","slope"].includes(e.type):!1)?30:24,right:14,bottom:30,left:40},id:w=>`${c}-${w}`,cls:i,fmtAxis:w=>T(w),setAxis:(w,U)=>{T=$t(r,X,w,U)},fmtValue:u.value,fmtRightValue:d.value,rightAxis:(w,U)=>$t(r,E,w,U),fmtFor:w=>w.axis==="right"?d.value:u.value,fmtX:Fe(r,e,B),xAxis:(w,U)=>$t(r,e.style.xFormat,w,U),color:w=>at(H,w,I),tooltip:l,rightTitleY:14},L=(K?a:!1)?Re(a,e):a;K?(L?He(v,p,e,L):!1):Oe(v,p,e,s);let Z=__gvAnd(__gvAnd(__gvAnd((!K?e.type!=="bar":!1),()=>(e.type!=="donut")),()=>(e.type!=="dot")),()=>(e.type!=="slope"));if((((Z?H.style.yLabel:!1)?H.style.rightLabel:!1)?dr(H):!1)){let[w,U]=[H.style.yLabel,H.style.rightLabel].map(ut=>lt(v,[ut],12));(w+U+16>S?(v.rightTitleY=30,v.margin.top+=16):!1)}((H.style.yLabel?Z:!1)?Y.append("text").attr("class",i("axis-title")).attr("x",0).attr("y",14).text(H.style.yLabel):!1);try{let w=e.type;if(K){if((!a?!0:a.id!==((q=e.data.map)==null?void 0:q.geo)))throw new Error("map geography missing");Y.attr("height",Ie(v,L))}else (w==="line"?!0:w==="area")?Ye(v):((w==="column"?!0:w==="stacked")?!0:w==="combo")?nn(v):w==="bar"?Y.attr("height",(et=rn(v))!=null?et:tt):w==="scatter"?on(v):w==="donut"?Y.attr("height",(A=sn(v))!=null?A:tt):w==="slope"?ln(v):(w==="dot"?Y.attr("height",(D=cn(v))!=null?D:tt):!1)}catch(w){Y.selectAll("*").remove(),Y.append("text").attr("class",i("ticks")).attr("x",0).attr("y",20).text("Chart could not be drawn."),console.error("[gristviz]",w)}},g=()=>{(b?!0:(b=requestAnimationFrame(x)))},k=new ResizeObserver(()=>{(Math.floor(m.clientWidth)!==h?g():!1)});k.observe(m);let P=()=>{((e.style.background==="white"?re(t).color!==f:!1)?g():!1)},N=new MutationObserver(P),F=t.ownerDocument;N.observe(F.documentElement,{attributes:!0,attributeFilter:["class","style","data-theme"]}),(F.body?N.observe(F.body,{attributes:!0,attributeFilter:["class","style","data-theme"]}):!1);let G=(R=(y=F.defaultView)==null?void 0:y.matchMedia)==null?void 0:R.call(y,"(prefers-color-scheme: dark)");return((_=G==null?void 0:G.addEventListener)==null?!0:_.call(G,"change",P)),x(),((V=F.fonts)==null?!0:V.ready.then(()=>g())),{update(S){e=un(S);for(let M of[...s])(e.data.series.some(I=>I.key===M)?!0:s.delete(M));x()},destroy(){var S;k.disconnect(),N.disconnect(),l.destroy(),((S=G==null?void 0:G.removeEventListener)==null?!0:S.call(G,"change",P)),(b?cancelAnimationFrame(b):!1)}}}return xn(gr);})(); function run(d3){var el=document.getElementById(ID);if(el)__gvRuntime.mount(el,SPEC,d3,GEO);} function fail(){var el=document.getElementById(ID);var c=el?el.querySelector("."+ID+"__chart"):null;if(c)c.textContent="This chart could not load. Try refreshing the page.";} function loadD3(){return new Promise(function(res,rej){ var s=document.createElement("script"),page=window.d3,mine,trap=false; try{Object.defineProperty(window,"d3",{configurable:true,enumerable:true, get:function(){return document.currentScript===s?mine:page;}, set:function(v){if(document.currentScript===s)mine=v;else page=v;}});trap=true;} catch(e){window.d3=undefined;} function settle(){if(trap){delete window.d3;if(page!==undefined)window.d3=page;}else{mine=window.d3;window.d3=page;}} s.src="https://cdnjs.cloudflare.com/ajax/libs/d3/7.8.5/d3.min.js";s.integrity="sha384-su5kReKyYlIFrI62mbQRKXHzFobMa7BHp1cK6julLPbnYcCW9NIZKJiTODjLPeDh";s.crossOrigin="anonymous";s.async=true; s.onload=function(){settle();if(mine?mine.stack:!1)res(Object.assign({},mine));else rej(new Error("d3 did not load"));}; s.onerror=function(e){settle();rej(e);}; document.head.appendChild(s);});} function go(){ if(window.d3?window.d3.stack?/^7\./.test(window.d3.version?window.d3.version:""):!1:!1){run(window.d3);return;} if(!window.__gvD3)window.__gvD3=loadD3(); window.__gvD3.then(run,fail); } if(document.readyState==="loading")document.addEventListener("DOMContentLoaded",go);else go(); })();

If Brazil’s next administration accelerates clearing, the effects could be devastating for the rainforest, the people who call it home, and the industries on which its continued health depends. For decades, forest and climate scientists have warned of a brutal tipping point: Cut enough of the forest down and the water cycle won’t be strong enough to sustain a rainforest ecosystem. Instead, the area would morph into savanna and degraded forest — causing a net release of planet-warming carbon and depriving nearby soybean farms of rain.

The actual tipping point in question is multi-causal and difficult to estimate, but the most frequently quoted deforestation threshold is 20 to 25 percent clearing across Amazonia, a range first suggested in 2018 by Nobre and U.S. conservation biologist Thomas Lovejoy. The duo argued that “negative synergies between deforestation, climate change, and widespread use of fire” would send the forest into a feedback loop once this threshold is passed. A Nature study published in May of this year estimated the tipping-point range to be closer to 22 to 28 percent clearing when paired with the 1.5 to 1.9 degrees Celsius (2.7 to 3.4 degrees Fahrenheit) of global warming the world is likely to experience by mid-century.

About 18 percent of the Amazon — which spans nine countries — and 22 percent of the Brazilian Amazon have already been cleared.

iframe.arc-of-deforestation { display: block; background: #F0F0F0; width: 100vw; margin-left: calc(50% - 50vw); margin-top: 24px; /* the charts' 24px; the theme gives .article-body iframe 60px */ margin-bottom: 24px; border: 0; height: 880px; /* placeholder until the script measures the content */ } (function () { var frame = document.querySelector('.arc-of-deforestation'); frame.addEventListener('load', function () { var doc = frame.contentDocument; doc.documentElement.style.setProperty('--color-background', '#F0F0F0'); doc.documentElement.style.overflow = 'hidden'; // Line the map up with the story's text column, as the charts are: same left edge and width as the // nearest paragraph above, and no padding of its own, so its text also sits 24px from the story. var root = doc.querySelector('.amazon-clearing'); var ref = frame.previousElementSibling; while (ref ? ref.tagName !== 'P' : false) ref = ref.previousElementSibling; if (!ref) ref = frame.parentElement; function fit() { if (root) { var col = ref.getBoundingClientRect(), box = frame.getBoundingClientRect(); var parent = root.parentElement.getBoundingClientRect(); root.style.maxWidth = 'none'; root.style.width = col.width + 'px'; root.style.marginLeft = (col.left - box.left - parent.left) + 'px'; root.style.padding = '0'; } frame.style.height = Math.ceil(doc.body.getBoundingClientRect().height) + 'px'; } fit(); if (window.ResizeObserver) new ResizeObserver(fit).observe(doc.body); window.addEventListener('resize', fit); }); })();

Nico Wunderling, a climate scientist at Goethe University Frankfurt who led May’s Nature study, estimated a return to Jair Bolsonaro-era practices would clear about 1 percent of the Amazon basin’s rainforest over the next presidential term. At this rate, “we would reach the danger zone by the middle or end of the 2030s,” he told Grist.

Conversely, if Lula delivered on his pledge of net-zero deforestation by the early 2030s, Wunderling argues runaway feedback might yet be avoided. While climate change is a global process requiring global coordination, deforestation is “the lever that can be pulled back more easily,” he said.

The late 2030s is beyond the term covered by this election cycle, and the exact science of the tipping point remains uncertain. But the result of this election could still set the Amazon rainforest on its ultimate path. Ronaldo Christofoletti, an oceanographer at the Federal University of São Paulo, likened the situation to insuring a vehicle. “Why do I pay the insurance? Because an accident can happen. When? I don’t know.”

For Christofoletti, the electoral stakes are all about managing this uncertainty. “Do not expect magic from scientists,” he said. “Do trust that the tipping point is getting closer.”

The Bolsonaro campaign did not respond to a request for comment.

In the meantime, organized agribusiness is pushing for Bolsonaro in the runoff election. The Parliamentary Agricultural Front, Brazil’s primary agribusiness lobby, recently endorsed Flávio Bolsonaro, who has promised that the caucus will choose his minister of agriculture.

Even if Bolsonaro doesn’t win the October 25 runoff, agribusiness may already have done so. On October 4, Bolsonaro’s party won 121 House seats, the most any party has held since the Brazilian Constitution was promulgated in 1988. An analysis by the Brazilian Amazon-based news platform Sumaúma suggests that half of the incoming House has voted to loosen environmental licensing and limit Indigenous land claims. 

For agribusiness, that means the currently off-limits may soon be in play. “Even if Lula gets reelected,” said de Bolle, “he’s going to be very weak.”

This story was originally published by Grist with the headline Brazil’s election could determine the fate of the Amazon on Oct 15, 2026.

Categories: H. Green News

Magic: The Gathering draws a bad hand with El Niño

Grist - Thu, 10/15/2026 - 01:30

On a Saturday morning in September, the game shop Dice Dojo was packed. Players sat shoulder-to-shoulder at tables lining the far North Side Chicago shop with board games stacked from floor to ceiling and a giant yellow Pikachu on the wall. They were eagerly waiting to crack open boxes of the latest Magic: The Gathering trading cards and face off in a tournament.

Noel Camilotas spent most of the day pacing past rows of packed tables and helping players decipher the rules of the hotly anticipated new set. When he was done for the day, he walked out of the store with two boxes of cards. 

Despite that haul, Camilotas had hoped for more. 

“Some of the products I requested are not going to be available for me anytime soon,” he said. “One of the other products is not going to be available for purchase at all.”

Wizards of the Coast, a division of the toy giant Hasbro, announced in August that delivery of its new set of Magic cards would be delayed throughout North America. The company pointed to a drought-powered traffic jam at the Panama Canal through which nearly 6 percent of global maritime trade and about 40 percent of U.S. container traffic pass. The drought this year has been magnified by the El Niño climate pattern, which spikes air and surface water temperatures in parts of the Pacific Ocean and sets off extreme weather like floods and drought across the globe. The phenomenon has compounded the effects of rising global temperatures, adding to drought conditions in Central America and upending international maritime traffic. 

A bottleneck in the Panama Canal has made it harder for fans of Magic: The Gathering to buy the game’s latest Reality Fracture expansion set. Pat Nabong / Chicago Sun-Times

The delay is an early warning sign for how susceptible one of the world’s most important shipping lanes is in the face of a warming planet and what experts warn could be the strongest El Niño in history.

“Supply will be tighter at launch than anticipated as those boosters make their way through the logjam,” according to the card game’s website. 

Magic: The Gathering has amassed more than 50 million players worldwide since its introduction in 1993. The game has birthed an entire media ecosystem as well as a robust resale market for rare cards. The rapper Post Malone reportedly purchased a one-of-a-kind card based on the One Ring from a Lord of the Rings-themed set for $2 million. 

To win the game, players take the role of powerful, spell-slinging wizards and compete to see who can draw the most cards, cast the biggest spells, and defeat opponents by reducing their life points to zero. Cards are spells, and each player has an endlessly customizable deck of cards that draw on a massive catalogue that grows several times a year. New sets are released every few months.

The model has been tremendously successful. The game has made its parent company Hasbro more than $1 billion in revenue in just the first half of this year. But the trading game now faces an unexpected real-world challenge: El Niño.

“Even in our little corner of the multiverse, the supply chain affects us.”

“The result of an El Niño for Central America is a very strong drought,” said Ross Griffith, the head of Americas freight pricing at Argus Media, a U.K.-based agency tracking commodity prices. Between May and August this year, parts of Panama received rainfall about a third below the long-term average, raising concerns about water levels at the freshwater reservoirs that supply drinking water to the region and provide the water needed to lift and lower ships through the canal’s system of locks. 

People play Magic: The Gathering at Dice Dojo, a game shop in Chicago. Pat Nabong / Chicago Sun-Times

As a result, the Panama Canal Authority began restricting traffic, cutting daily vessel crossing slots by nearly 20 percent. That bottleneck drove up the fees shipping companies paid to cross the canal in September to as high as $5.3 million, topping the previous $4.6 million record set the previous month. Such restrictions are not new. During the last El Niño in 2023, daily crossings had dropped even lower. 

El Niño is expected to last into early 2027 and could exacerbate Panama’s upcoming dry season, according to Ross, who added that the delayed Magic cards could be just the beginning of El Niño-induced knock-on effects.

“If you have drought conditions on top of a typically more dry period, even what little replenishment you were getting then is probably not coming,” he said. “That can be really dangerous.”

So, at least for now, card collectors in Chicago and beyond will likely be waiting longer than usual. 

“Some products are now coming in waves,” Emma Hendren, the general manager at Dice Dojo, said on that Saturday in September. “We’re not going to have it available for sale today. We’re not certain when it’s going to arrive, unfortunately.”

Magic players are used to dealing with limited quantities or even delayed cards, but the current  El Niño-powered disruption is new. 

“Magic: The Gathering is all fantasy and all that stuff,” Joshua Wiltsie, who has been playing Magic for 30 years, said. “Even in our little corner of the multiverse, the supply chain affects us.”

This story was originally published by Grist with the headline Magic: The Gathering draws a bad hand with El Niño on Oct 15, 2026.

Categories: H. Green News

Pages

The Fine Print I:

Disclaimer: The views expressed on this site are not the official position of the IWW (or even the IWW’s EUC) unless otherwise indicated and do not necessarily represent the views of anyone but the author’s, nor should it be assumed that any of these authors automatically support the IWW or endorse any of its positions.

Further: the inclusion of a link on our site (other than the link to the main IWW site) does not imply endorsement by or an alliance with the IWW. These sites have been chosen by our members due to their perceived relevance to the IWW EUC and are included here for informational purposes only. If you have any suggestions or comments on any of the links included (or not included) above, please contact us.

The Fine Print II:

Fair Use Notice: The material on this site is provided for educational and informational purposes. It may contain copyrighted material the use of which has not always been specifically authorized by the copyright owner. It is being made available in an effort to advance the understanding of scientific, environmental, economic, social justice and human rights issues etc.

It is believed that this constitutes a 'fair use' of any such copyrighted material as provided for in section 107 of the US Copyright Law. In accordance with Title 17 U.S.C. Section 107, the material on this site is distributed without profit to those who have an interest in using the included information for research and educational purposes. If you wish to use copyrighted material from this site for purposes of your own that go beyond 'fair use', you must obtain permission from the copyright owner. The information on this site does not constitute legal or technical advice.