/* ===========================================================================
   Theme — Report 2026-57, "Escaping the Pollution–Poverty Trap"

   Aesthetic: vortex. The masthead is a data-generated whirlpool on dark peat:
   every developing country is a dot on one of five orbits set by how many
   degradation cycles it is trapped in today (air, cooking fuel, sanitation,
   wealth drawdown; the most trapped circle closest to the centre), sized by
   population and coloured by extreme poverty from sea-green through ochre to
   rust. Pale trails spiral outward from the orbit each country occupied in
   2000 for the 48 countries that have escaped at least one cycle since. Below
   it the page is sage-cream with a faint contour pattern; every h2 opens with
   a spiral glyph unwinding outward. Rokkitt for display, Anek Latin for
   prose, Geologica for figures.

   Loaded after report.css; report.js reads these tokens for chart colours,
   and charts.js reads the --c, --e, --g and --r tokens so no hex lives in
   the script.
   =========================================================================== */

:root {
  --bg: #f3f2ea;
  --bg-card: #fdfcf6;
  --bg-accent: #e8e6da;
  --bg-dark: #1b1e15;
  --bg-dark-2: #12140d;

  --text: #1b1e15;
  --text-secondary: #3b3f32;
  --text-muted: #6d7162;
  --text-inverse: #ece9d6;

  --primary: #24291b;
  --primary-light: #2f86b8;
  --accent: #c4542f;
  --accent-light: #e7b152;

  --border: #d9d7c7;
  --border-light: #e8e6da;
  --rule: #c4c1ab;

  /* the five cycles */
  --c-air: #7b7fb8;
  --c-fuel: #b0612e;
  --c-wash: #2f86b8;
  --c-land: #a68a3c;
  --c-wealth: #4f8a4a;
  /* escape vs trap */
  --e-esc: #2f9e8c;
  --e-trap: #c4542f;
  --e-mid: #e7b152;
  /* income groups */
  --g-lic: #9c3d2a;
  --g-lmc: #c4542f;
  --g-umc: #e7b152;
  --g-hic: #2f86b8;
  /* regions */
  --r-ssf: #c4542f;
  --r-sas: #e7b152;
  --r-eas: #2f86b8;
  --r-mna: #8a6d3b;
  --r-lcn: #2f9e8c;
  --r-ecs: #7b7fb8;
  --r-nac: #8d9182;
  /* map */
  --map-sea: #e9ebe2;
  --map-none: #d7d6ca;

  --chart-blue: #2f86b8;
  --chart-blue-light: #a9cde2;
  --chart-gold: #e7b152;
  --chart-red: #c4542f;
  --chart-teal: #2f9e8c;
  --chart-gray: #8d9182;
  --chart-orange: #b0612e;
  --chart-purple: #7b7fb8;

  --serif: "Rokkitt", Rockwell, Georgia, serif;
  --sans: "Anek Latin", -apple-system, BlinkMacSystemFont, "system-ui", "Segoe UI", sans-serif;
  --mono: "Geologica", ui-sans-serif, "Arial Narrow", sans-serif;

  --sheet: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='900' height='440' viewBox='0 0 900 440'%3E%3Ccircle cx='660' cy='222' r='218' fill='none' stroke='%23e9e4cf' stroke-opacity='0.10' stroke-width='0.8' stroke-dasharray='2 4'/%3E%3Ccircle cx='660' cy='222' r='172' fill='none' stroke='%23e9e4cf' stroke-opacity='0.15' stroke-width='0.8' stroke-dasharray='2 4'/%3E%3Ccircle cx='660' cy='222' r='126' fill='none' stroke='%23e9e4cf' stroke-opacity='0.20' stroke-width='0.8' stroke-dasharray='2 4'/%3E%3Ccircle cx='660' cy='222' r='80' fill='none' stroke='%23e9e4cf' stroke-opacity='0.25' stroke-width='0.8' stroke-dasharray='2 4'/%3E%3Ccircle cx='660' cy='222' r='34' fill='none' stroke='%23e9e4cf' stroke-opacity='0.30' stroke-width='0.8' stroke-dasharray='1 0'/%3E%3Cpolyline points='680,222 681,224 683,227 684,230 684,233 684,236 684,239 683,243 682,246 680,250 678,253 675,256 672,259 668,262 664,264 660,266 655,267 650,268 645,268 640,268 634,267 629,265 623,263 618,260 613,256 608,252 604,247 600,241 597,235 594,229 592,222 591,215 591,207 591,200 593,192 595,184 598,177 602,169 606,162 612,156 618,150 625,144 633,140 642,136 651,133 660,131 670,130 680,130 690,131 700,133 710,136 719,140 728,146 737,152 745,160 753,168 759,178 765,188 769,199 773,210 775,222 776,234 776,247 774,259 771,271 766,283 761,295 754,306 745,317 736,327 725,335 714,343 701,349 688,355 674,358 660,361 645,362 630,361 616,358 601,355 587,349 573,342 560,333 547,323 536,312 526,299 517,286 510,271 504,255 500,239 498,222 497,205 498,188 501,170 506,153 512,137 521,121 531,106 543,92 556,79 571,68 587,58 604,49 622,43 641,38 660,36 680,35 699,37 719,40 738,46 757,54 775,64 792,75 808,89 822,104 835,121 846,139 855,159 862,179 867,200 870,222' fill='none' stroke='%23e9e4cf' stroke-opacity='0.08' stroke-width='1'/%3E%3Cpolyline points='699,292 696,296 693,300 690,304 686,307 681,311 677,314 672,317 667,320 662,323 656,325 650,327 644,328 638,330 631,330 625,331 618,331 611,331 604,330 597,329 590,327' fill='none' stroke='%2390e0c8' stroke-opacity='0.55' stroke-width='1.3' stroke-linecap='round'/%3E%3Cpolyline points='606,163 605,155 605,146 605,138 607,129 609,120 612,111 615,102 620,93 625,84 632,76 639,68 647,60 656,52 665,45 676,39 687,33 698,28 710,24 723,21 737,18' fill='none' stroke='%2390e0c8' stroke-opacity='0.55' stroke-width='1.3' stroke-linecap='round'/%3E%3Cpolyline points='516,316 509,309 503,302 496,294 490,286 485,277 480,268 475,258 471,249 468,238 465,228 463,217 461,206 460,195 459,183 460,172 461,160 462,149 464,137 467,125 471,114' fill='none' stroke='%2390e0c8' stroke-opacity='0.55' stroke-width='1.3' stroke-linecap='round'/%3E%3Cpolyline points='622,390 612,390 603,389 593,388 583,386 573,383 563,380 553,377 543,372 533,367 524,362 515,356 506,349 497,342 489,334 481,325 474,316 467,307 460,297 454,287 449,276' fill='none' stroke='%2390e0c8' stroke-opacity='0.55' stroke-width='1.3' stroke-linecap='round'/%3E%3Cpolyline points='488,211 487,202 486,192 486,182 486,172 487,161 488,151 490,141 493,131 496,120 500,110 505,100 510,90 516,81 522,71 529,62 537,53 545,45 554,37 563,29 573,22' fill='none' stroke='%2390e0c8' stroke-opacity='0.55' stroke-width='1.3' stroke-linecap='round'/%3E%3Cpolyline points='676,192 679,191 682,190 685,190 688,189 692,189 695,190 699,190 702,191 706,192 709,194 713,195 716,197 720,200 723,202 726,205 729,208 732,212 735,216 738,220 740,224' fill='none' stroke='%2390e0c8' stroke-opacity='0.55' stroke-width='1.3' stroke-linecap='round'/%3E%3Cpolyline points='627,232 625,230 622,229 619,227 617,225 615,223 612,220 610,217 608,214 606,211 605,207 604,203 603,200 602,195 601,191 601,187 601,182 602,178 602,173 604,169 605,164' fill='none' stroke='%2390e0c8' stroke-opacity='0.55' stroke-width='1.3' stroke-linecap='round'/%3E%3Cpolyline points='669,143 674,141 679,140 684,139 689,138 695,137 701,137 706,138 712,138 718,140 724,141 730,143 735,145 741,148 747,151 753,155 758,159 763,163 769,168 773,173 778,178' fill='none' stroke='%2390e0c8' stroke-opacity='0.55' stroke-width='1.3' stroke-linecap='round'/%3E%3Cpolyline points='576,316 567,314 559,312 551,309 542,305 534,301 526,297 518,291 510,285 502,278 495,271 488,263 482,254 476,245 470,235 465,224 461,213 457,202 454,190 451,178 450,165' fill='none' stroke='%2390e0c8' stroke-opacity='0.55' stroke-width='1.3' stroke-linecap='round'/%3E%3Cpolyline points='711,337 707,344 701,351 695,357 689,364 681,369 674,375 665,380 657,385 647,389 638,393 627,396 617,398 606,400 595,401 583,401 571,401 559,400 547,398 535,395 523,391' fill='none' stroke='%2390e0c8' stroke-opacity='0.55' stroke-width='1.3' stroke-linecap='round'/%3E%3Cpolyline points='600,61 608,56 617,51 626,46 635,42 645,39 655,36 666,34 676,32 687,31 698,31 709,31 720,32 731,33 742,35 753,38 765,41 776,45 786,50 797,56 808,62' fill='none' stroke='%2390e0c8' stroke-opacity='0.55' stroke-width='1.3' stroke-linecap='round'/%3E%3Cpolyline points='540,183 538,174 537,166 536,157 536,148 536,139 537,129 539,120 542,110 545,100 549,91 553,81 559,72 565,62 572,53 579,45 587,36 596,28 606,20 616,13 627,7' fill='none' stroke='%2390e0c8' stroke-opacity='0.55' stroke-width='1.3' stroke-linecap='round'/%3E%3Cpolyline points='598,172 599,167 601,162 602,157 605,152 607,147 610,142 614,138 617,133 621,129 626,125 631,121 636,117 641,114 647,111 653,108 659,105 666,103 672,101 679,100 686,99' fill='none' stroke='%2390e0c8' stroke-opacity='0.55' stroke-width='1.3' stroke-linecap='round'/%3E%3Cpolyline points='587,189 587,184 587,178 588,173 589,168 590,163 592,157 594,152 597,147 599,142 603,136 606,131 610,127 615,122 619,117 625,113 630,109 636,105 642,102 648,99 655,96' fill='none' stroke='%2390e0c8' stroke-opacity='0.55' stroke-width='1.3' stroke-linecap='round'/%3E%3Cpolyline points='749,75 758,78 767,82 776,86 785,91 794,96 802,102 810,109 818,116 826,124 833,132 840,141 846,150 852,160 857,170 862,180 866,191 870,202 873,214 876,225 877,238' fill='none' stroke='%2390e0c8' stroke-opacity='0.55' stroke-width='1.3' stroke-linecap='round'/%3E%3Cpolyline points='675,192 680,186 686,182 692,178 699,174 706,171 713,169 721,167 730,166 738,166 747,167 756,169 765,171 774,174 783,178 792,183 801,189 809,195 817,203 825,211 832,220' fill='none' stroke='%2390e0c8' stroke-opacity='0.55' stroke-width='1.3' stroke-linecap='round'/%3E%3Cpolyline points='777,174 783,179 790,185 796,191 802,198 808,205 813,213 818,222 823,231 826,240 830,250 832,260 835,271 836,282 837,293 837,305 836,316 834,328 832,340 829,352 825,364' fill='none' stroke='%2390e0c8' stroke-opacity='0.55' stroke-width='1.3' stroke-linecap='round'/%3E%3Cpolyline points='832,221 834,231 836,241 837,251 837,261 837,271 836,282 835,292 833,303 830,313 827,323 823,334 818,344 813,354 807,364 801,373 794,383 786,391 778,400 769,408 759,416' fill='none' stroke='%2390e0c8' stroke-opacity='0.55' stroke-width='1.3' stroke-linecap='round'/%3E%3Cpolyline points='593,265 589,263 584,260 580,257 576,253 573,249 569,245 566,240 562,235 560,230 557,225 555,219 553,213 551,207 550,200 549,194 549,187 549,180 549,173 550,166 551,159' fill='none' stroke='%2390e0c8' stroke-opacity='0.55' stroke-width='1.3' stroke-linecap='round'/%3E%3Cpolyline points='639,196 639,193 639,189 640,186 641,183 642,180 644,177 645,174 648,171 650,168 653,165 656,163 659,160 662,158 666,156 670,154 674,153 678,151 683,150 688,149 693,149' fill='none' stroke='%2390e0c8' stroke-opacity='0.55' stroke-width='1.3' stroke-linecap='round'/%3E%3Cpolyline points='786,230 787,237 789,245 789,252 790,260 790,268 789,276 788,284 786,292 784,300 782,308 779,316 775,324 771,332 766,339 761,347 755,354 749,361 743,368 735,374 728,380' fill='none' stroke='%2390e0c8' stroke-opacity='0.55' stroke-width='1.3' stroke-linecap='round'/%3E%3Cpolyline points='664,96 671,92 679,88 687,85 696,82 705,80 714,78 724,77 734,77 744,77 754,78 765,80 775,82 786,85 796,89 807,94 817,99 828,106 838,113 848,120 857,129' fill='none' stroke='%2390e0c8' stroke-opacity='0.55' stroke-width='1.3' stroke-linecap='round'/%3E%3Cpolyline points='632,99 638,93 644,88 651,82 659,78 667,73 676,69 685,66 694,63 704,61 715,59 725,58 736,57 747,58 758,59 770,61 781,63 793,67 804,71 816,76 827,82' fill='none' stroke='%2390e0c8' stroke-opacity='0.55' stroke-width='1.3' stroke-linecap='round'/%3E%3Cpolyline points='717,166 725,165 734,164 743,165 752,166 761,167 770,170 779,174 788,178 797,183 805,189 814,196 822,204 829,212 837,222 843,232 849,242 855,254 859,266 863,279 866,292' fill='none' stroke='%2390e0c8' stroke-opacity='0.55' stroke-width='1.3' stroke-linecap='round'/%3E%3Cpolyline points='580,217 576,212 572,206 569,201 566,194 563,188 561,181 559,173 558,165 557,157 557,149 558,141 559,132 561,124 563,115 566,106 570,97 575,89 580,80 586,72 592,64' fill='none' stroke='%2390e0c8' stroke-opacity='0.55' stroke-width='1.3' stroke-linecap='round'/%3E%3Cpolyline points='497,277 492,268 487,259 483,250 480,241 477,231 474,221 472,210 471,200 470,189 470,178 470,167 472,156 473,145 476,134 479,123 483,112 487,101 492,90 498,80 504,69' fill='none' stroke='%2390e0c8' stroke-opacity='0.55' stroke-width='1.3' stroke-linecap='round'/%3E%3Cpolyline points='641,300 636,301 631,301 626,302 620,302 615,302 609,301 604,300 598,298 592,297 587,294 581,292 576,289 570,285 565,281 560,277 555,273 550,268 545,262 541,257 537,251' fill='none' stroke='%2390e0c8' stroke-opacity='0.55' stroke-width='1.3' stroke-linecap='round'/%3E%3Cpolyline points='768,356 761,364 755,371 748,378 740,385 732,391 723,397 714,402 705,407 695,412 685,415 674,419 663,422 652,424 641,425 629,426 618,426 606,426 594,425 582,423 570,421' fill='none' stroke='%2390e0c8' stroke-opacity='0.55' stroke-width='1.3' stroke-linecap='round'/%3E%3Cpolyline points='695,101 704,99 712,97 721,96 730,96 739,96 749,97 758,98 768,100 778,103 788,107 797,111 807,116 816,122 826,128 835,135 843,143 852,152 860,161 867,171 874,182' fill='none' stroke='%2390e0c8' stroke-opacity='0.55' stroke-width='1.3' stroke-linecap='round'/%3E%3Cpolyline points='655,188 657,184 659,179 661,174 664,170 668,166 672,162 676,158 681,154 687,151 692,149 698,147 705,145 711,144 718,143 726,143 733,143 741,144 748,145 756,148 764,150' fill='none' stroke='%2390e0c8' stroke-opacity='0.55' stroke-width='1.3' stroke-linecap='round'/%3E%3Cpolyline points='668,96 675,95 683,93 690,93 698,92 706,92 714,93 722,94 730,96 738,98 746,100 754,103 762,107 770,111 777,116 785,121 792,127 799,133 806,139 812,147 818,154' fill='none' stroke='%2390e0c8' stroke-opacity='0.55' stroke-width='1.3' stroke-linecap='round'/%3E%3Cpolyline points='516,129 519,119 523,110 528,101 533,93 539,84 545,76 552,68 559,60 567,53 576,46 585,40 594,34 604,28 614,23 625,19 636,15 647,11 659,9 670,7 682,5' fill='none' stroke='%2390e0c8' stroke-opacity='0.55' stroke-width='1.3' stroke-linecap='round'/%3E%3Cpolyline points='827,265 826,275 825,285 823,295 821,305 818,315 815,324 811,334 806,344 801,353 795,362 789,371 782,380 774,388 766,396 758,404 748,411 739,418 729,424 718,430 707,435' fill='none' stroke='%2390e0c8' stroke-opacity='0.55' stroke-width='1.3' stroke-linecap='round'/%3E%3Cpolyline points='732,257 734,264 735,270 736,277 737,284 737,291 736,298 735,306 733,313 730,321 727,329 724,336 719,344 714,351 709,358 702,365 695,371 688,378 680,384 671,389 662,394' fill='none' stroke='%2390e0c8' stroke-opacity='0.55' stroke-width='1.3' stroke-linecap='round'/%3E%3Cpolyline points='798,119 805,125 812,132 819,140 825,147 831,156 837,165 842,174 846,183 851,193 854,204 857,214 860,225 861,236 863,248 863,259 863,271 862,283 861,294 859,306 856,318' fill='none' stroke='%2390e0c8' stroke-opacity='0.55' stroke-width='1.3' stroke-linecap='round'/%3E%3Cpolyline points='689,147 694,147 699,147 704,147 709,148 715,149 720,150 726,152 731,154 737,157 742,159 747,163 752,166 757,171 762,175 766,180 771,185 775,191 779,196 782,203 785,209' fill='none' stroke='%2390e0c8' stroke-opacity='0.55' stroke-width='1.3' stroke-linecap='round'/%3E%3Cpolyline points='720,169 727,170 733,171 740,173 746,175 753,178 760,181 766,185 772,190 778,195 784,201 790,207 795,214 800,221 804,229 808,238 812,246 815,256 817,265 819,275 820,286' fill='none' stroke='%2390e0c8' stroke-opacity='0.55' stroke-width='1.3' stroke-linecap='round'/%3E%3Cpolyline points='770,160 777,164 784,169 791,174 798,180 805,186 811,194 817,201 822,210 827,218 832,228 836,238 839,248 842,259 844,270 846,281 847,293 847,305 846,317 844,330 842,342' fill='none' stroke='%2390e0c8' stroke-opacity='0.55' stroke-width='1.3' stroke-linecap='round'/%3E%3Cpolyline points='643,51 652,48 662,45 672,43 682,42 692,41 703,41 713,42 724,43 734,44 745,46 756,49 766,53 777,57 787,62 797,68 807,74 817,80 826,88 835,96 844,104' fill='none' stroke='%2390e0c8' stroke-opacity='0.55' stroke-width='1.3' stroke-linecap='round'/%3E%3Cpolyline points='622,292 617,292 612,292 607,291 602,289 596,288 591,286 586,283 581,281 576,277 571,274 566,270 562,266 557,261 553,256 549,251 545,245 542,239 539,233 536,226 534,219' fill='none' stroke='%2390e0c8' stroke-opacity='0.55' stroke-width='1.3' stroke-linecap='round'/%3E%3Cpolyline points='612,158 615,153 617,149 620,145 624,140 628,136 632,133 636,129 641,126 646,122 651,119 657,117 662,114 669,112 675,111 681,110 688,109 695,108 702,108 709,108 716,109' fill='none' stroke='%2390e0c8' stroke-opacity='0.55' stroke-width='1.3' stroke-linecap='round'/%3E%3Cpolyline points='831,199 834,209 837,218 839,228 840,238 842,248 842,259 842,269 841,280 840,291 838,301 836,312 832,323 828,333 824,344 819,354 813,364 807,374 799,384 792,393 783,402' fill='none' stroke='%2390e0c8' stroke-opacity='0.55' stroke-width='1.3' stroke-linecap='round'/%3E%3Cpolyline points='561,81 568,74 575,67 583,61 591,55 599,49 608,44 618,39 627,34 637,31 648,27 659,25 670,23 681,21 692,20 704,20 715,21 727,22 739,24 750,26 762,29' fill='none' stroke='%2390e0c8' stroke-opacity='0.55' stroke-width='1.3' stroke-linecap='round'/%3E%3Cpolyline points='580,228 578,223 575,219 573,214 572,209 570,204 569,198 569,192 568,187 568,181 569,175 569,168 570,162 572,156 574,150 576,144 579,138 583,131 586,126 590,120 595,114' fill='none' stroke='%2390e0c8' stroke-opacity='0.55' stroke-width='1.3' stroke-linecap='round'/%3E%3Cpolyline points='738,123 747,124 755,126 764,128 772,131 781,135 789,139 798,144 806,150 814,156 822,163 829,171 836,179 843,188 849,197 854,207 860,218 864,229 868,241 871,253 874,265' fill='none' stroke='%2390e0c8' stroke-opacity='0.55' stroke-width='1.3' stroke-linecap='round'/%3E%3Cpolyline points='505,297 499,289 494,281 488,273 484,264 479,254 476,245 472,235 470,224 467,214 466,203 465,192 465,181 465,169 466,158 468,147 470,135 473,124 477,113 481,101 486,90' fill='none' stroke='%2390e0c8' stroke-opacity='0.55' stroke-width='1.3' stroke-linecap='round'/%3E%3Cpolyline points='820,286 818,296 816,305 813,315 809,325 805,334 801,343 795,352 790,361 783,370 776,379 769,387 761,394 752,402 743,409 734,415 724,421 713,426 702,431 691,435 679,439' fill='none' stroke='%2390e0c8' stroke-opacity='0.55' stroke-width='1.3' stroke-linecap='round'/%3E%3Cpolyline points='673,301 669,308 665,316 660,323 654,329 647,336 640,342 632,347 623,352 614,356 604,360 593,363 582,365 571,367 559,367 547,367 535,366 522,363 510,360 497,356 484,351' fill='none' stroke='%2390e0c8' stroke-opacity='0.55' stroke-width='1.3' stroke-linecap='round'/%3E%3Ccircle cx='592' cy='64' r='13.0' fill='%238dbf93' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='627' cy='7' r='13.0' fill='%236ec4aa' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='866' cy='292' r='13.0' fill='%23a1bb84' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='820' cy='286' r='13.0' fill='%23e6b051' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='587' cy='189' r='13.0' fill='%23df8744' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='488' cy='224' r='13.0' fill='%2392be8f' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='778' cy='178' r='13.0' fill='%239ebc86' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='570' cy='134' r='12.6' fill='%23e2994a' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='502' cy='373' r='12.6' fill='%2387bf97' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='658' cy='50' r='11.9' fill='%2382c09a' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='844' cy='104' r='11.8' fill='%23bab872' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='646' cy='253' r='11.5' fill='%23d65434' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='484' cy='351' r='11.1' fill='%2384c099' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='537' cy='102' r='10.5' fill='%238dbe92' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='459' cy='139' r='10.2' fill='%2374c2a5' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='525' cy='51' r='9.3' fill='%236fc3a8' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='618' cy='341' r='9.1' fill='%23dd7b40' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='783' cy='342' r='8.8' fill='%23d7b35d' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='537' cy='251' r='8.3' fill='%23de8242' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='743' cy='127' r='8.1' fill='%23c9b567' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='867' cy='155' r='8.0' fill='%23b2b978' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='534' cy='219' r='7.8' fill='%23df8644' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='585' cy='251' r='7.8' fill='%23db703d' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='655' cy='4' r='7.5' fill='%236ec4aa' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='780' cy='99' r='7.5' fill='%237bc19f' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='548' cy='35' r='7.4' fill='%239aa58c' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='590' cy='327' r='7.2' fill='%23dd7c40' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='760' cy='298' r='7.0' fill='%23d65434' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='651' cy='440' r='6.8' fill='%238ebe92' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='737' cy='18' r='6.8' fill='%23de8443' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='486' cy='90' r='6.8' fill='%2370c3a8' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='679' cy='439' r='6.6' fill='%2390be90' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='710' cy='10' r='6.6' fill='%236ec4aa' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='658' cy='302' r='6.5' fill='%23d65434' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='551' cy='159' r='6.5' fill='%23e29749' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='842' cy='342' r='6.4' fill='%23a0bc85' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='627' cy='295' r='6.2' fill='%23d65735' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='686' cy='99' r='6.2' fill='%23d7b35d' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='785' cy='209' r='6.0' fill='%238abf95' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='691' cy='236' r='5.9' fill='%23e5a74e' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='734' cy='427' r='5.9' fill='%239abd89' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='602' cy='277' r='5.7' fill='%23da6d3c' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='540' cy='345' r='5.7' fill='%23a4bb82' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='786' cy='44' r='5.5' fill='%23e3b154' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='735' cy='193' r='5.4' fill='%23e19448' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='605' cy='164' r='5.3' fill='%23df8744' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='502' cy='290' r='5.1' fill='%2395bd8d' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='776' cy='271' r='5.1' fill='%23d65434' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='711' cy='337' r='5.1' fill='%23d65434' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='504' cy='69' r='5.0' fill='%2370c3a8' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='631' cy='147' r='5.0' fill='%23df8945' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='681' cy='346' r='4.8' fill='%23d75e37' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='716' cy='109' r='4.7' fill='%23d2b460' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='857' cy='129' r='4.7' fill='%23b5b876' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='877' cy='238' r='4.7' fill='%23acba7c' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='874' cy='182' r='4.6' fill='%23b1b979' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='580' cy='220' r='4.5' fill='%23dc7940' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='715' cy='280' r='4.2' fill='%23b3b977' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='740' cy='224' r='4.2' fill='%23e6ad51' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='662' cy='142' r='4.2' fill='%23e08d46' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='629' cy='208' r='4.1' fill='%23d65434' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='523' cy='391' r='3.9' fill='%238bbf94' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='724' cy='62' r='3.9' fill='%237cc19f' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='689' cy='297' r='3.8' fill='%23d65434' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='566' cy='306' r='3.8' fill='%23dd7c41' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='444' cy='193' r='3.7' fill='%2375c2a4' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='444' cy='248' r='3.7' fill='%237ec19e' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='596' cy='431' r='3.6' fill='%238cbf93' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='827' cy='82' r='3.6' fill='%23d0b462' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='874' cy='265' r='3.6' fill='%23a6bb81' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='548' cy='280' r='3.6' fill='%23dd7f42' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='573' cy='22' r='3.5' fill='%236ec4aa' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='599' cy='13' r='3.3' fill='%236ec4aa' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='718' cy='167' r='3.2' fill='%23e19248' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='595' cy='114' r='3.2' fill='%23e39b4b' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='764' cy='150' r='3.1' fill='%23abba7d' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='624' cy='437' r='3.0' fill='%238ebe92' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='500' cy='158' r='3.0' fill='%238ebe92' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='570' cy='421' r='3.0' fill='%238cbf94' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='546' cy='408' r='2.9' fill='%238bbf94' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='856' cy='318' r='2.9' fill='%23a1bb84' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='457' cy='302' r='2.8' fill='%2380c19c' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='783' cy='402' r='2.8' fill='%239bbc88' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='674' cy='191' r='2.8' fill='%23db743e' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='596' cy='382' r='2.7' fill='%23aaba7e' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='539' cy='188' r='2.6' fill='%23e29549' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='738' cy='321' r='2.5' fill='%23d65434' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='805' cy='384' r='2.5' fill='%239cbc87' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='662' cy='394' r='2.5' fill='%23b3b977' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='759' cy='416' r='2.2' fill='%239abc89' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='832' cy='220' r='2.2' fill='%23e5a94f' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='785' cy='241' r='2.2' fill='%2376c2a3' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='450' cy='165' r='2.2' fill='%2375c2a4' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='449' cy='276' r='2.2' fill='%237ec19e' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='624' cy='101' r='2.2' fill='%23e6af51' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='469' cy='328' r='2.2' fill='%2382c09a' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='733' cy='255' r='2.2' fill='%23d7b35d' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='825' cy='364' r='2.2' fill='%239fbc86' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='808' cy='62' r='2.2' fill='%23dab25b' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='682' cy='5' r='2.2' fill='%236ec4aa' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='471' cy='114' r='2.2' fill='%2371c3a7' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='818' cy='154' r='2.2' fill='%23dd7f42' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='693' cy='149' r='2.2' fill='%23e08e46' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='728' cy='380' r='2.2' fill='%23b6b874' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='707' cy='435' r='2.2' fill='%2393be8e' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='878' cy='210' r='2.2' fill='%23afb97a' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='649' cy='348' r='2.2' fill='%23dc753e' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='442' cy='220' r='2.2' fill='%237ac2a1' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='762' cy='29' r='2.2' fill='%23df8644' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3Ccircle cx='655' cy='96' r='2.2' fill='%23dfb257' fill-opacity='0.85' stroke='%231b1e15' stroke-width='0.6'/%3E%3C/svg%3E");
  --ramp: linear-gradient(90deg, var(--c-air), var(--c-fuel), var(--c-wash), var(--c-land), var(--c-wealth));
  --glyph: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='11' fill='%231b1e15'/%3E%3Cpath d='M12 12.2c0-1 1.5-1 1.6 0 .2 1.7-2.1 2.4-3.2 1.2-1.6-1.6-.4-4.5 1.9-4.6 3.1-.2 4.6 3.4 3 5.8-2 3-6.9 2.5-8-1.1' fill='none' stroke='%23e7b152' stroke-width='1.5' stroke-linecap='round'/%3E%3Cpath d='M7.3 13.5 L5.6 12.6 M7.3 13.5 L7.6 11.6' stroke='%2390e0c8' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E");

  --max-width: 1200px;
}

body { font-size: 1.06rem; line-height: 1.64; background-image: radial-gradient(circle at 20% 30%, transparent 0 38px, rgba(36, 41, 27, 0.035) 38px 39px, transparent 39px 76px, rgba(36, 41, 27, 0.03) 76px 77px, transparent 77px); background-size: 160px 160px; }

::selection { background: rgba(47, 158, 140, 0.2); }
:where(a, button, [tabindex], input, select):focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }

a { color: var(--primary-light); }
a:hover { color: var(--accent); }

.progress__bar { background: var(--ramp); }
.skip-link { background: var(--primary); }

/* --- masthead: vortex -------------------------------------------------------------- */

.masthead {
  position: relative;
  color: var(--text-inverse);
  border-bottom: 0;
  padding: 3.3rem var(--gutter) 4.2rem;
  background:
    linear-gradient(90deg, rgba(18, 20, 13, 0.97) 0 35%, rgba(18, 20, 13, 0.6) 53%, rgba(18, 20, 13, 0.04) 76%),
    var(--sheet) right 3% center / auto 110% no-repeat,
    radial-gradient(circle at 73% 50%, rgba(231, 177, 82, 0.12), transparent 40%),
    linear-gradient(180deg, #232719, #12140d);
}
.masthead::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 5px; background: var(--ramp); }
.masthead .overline { font-family: var(--mono); font-weight: 500; font-size: 0.8rem; letter-spacing: 0.1em; color: var(--accent-light); margin-bottom: 1rem; }
.masthead .overline::before { content: "◎ ORBIT = DEGRADATION CYCLES · CENTRE = MOST TRAPPED · COLOUR = POVERTY · TRAILS = ESCAPES SINCE 2000 · "; color: #90e0c8; }
.masthead h1 { font-family: var(--serif); font-weight: 800; font-size: clamp(2.1rem, 4.8vw, 3.5rem); line-height: 1.04; letter-spacing: -0.01em; max-width: 21ch; color: #fff; }
.masthead .subtitle { font-family: var(--sans); font-weight: 400; font-size: 1.2rem; color: #d9d6c0; max-width: 56ch; }
.masthead .strapline { font-family: var(--sans); font-style: normal; font-size: 1.05rem; color: #f3f0de; border-left: 4px solid var(--e-esc); max-width: 64ch; background: rgba(18, 20, 13, 0.84); }
.masthead .meta-row { border-top: 1px solid rgba(255, 255, 255, 0.14); color: #b7b49f; font-family: var(--mono); font-size: 0.82rem; position: relative; }
.masthead .meta-row strong { color: var(--accent-light); font-family: var(--mono); font-weight: 600; font-size: 0.7rem; letter-spacing: 0.1em; }

/* --- nav --------------------------------------------------------------------- */

.sticky-nav { background: rgba(243, 242, 234, 0.96); border-bottom: 1px solid var(--border); }
.nav-inner a { color: var(--text-muted); font-family: var(--mono); font-size: 0.76rem; font-weight: 500; }
.nav-inner a:hover { color: var(--text); }
.nav-inner a.is-active { color: var(--primary); border-bottom-color: var(--accent); }

/* --- headings with a spiral glyph ------------------------------------------------ */

section > h2 {
  position: relative;
  font-family: var(--serif);
  font-weight: 800;
  font-size: clamp(1.9rem, 4vw, 2.6rem);
  letter-spacing: -0.012em;
  line-height: 1.1;
  color: var(--primary);
  border-bottom: 1px solid var(--rule);
  padding: 0 0 0.55rem 2.3rem;
}
section > h2::before {
  content: "";
  position: absolute; left: 0.05rem; top: 0.2em;
  width: 1.5rem; height: 1.5rem;
  background: var(--glyph) center / contain no-repeat;
}
.abstract h2, .endmatter h2 { padding-left: 0; border-bottom: 0; font-family: var(--mono); font-size: 0.86rem; }
.abstract h2::before, .endmatter h2::before { content: none; }
section > .section-dek { font-family: var(--sans); font-style: normal; font-weight: 600; color: var(--text-muted); font-size: 1.15rem; line-height: 1.45; max-width: none; }

.section-rule { border-top: 1px solid var(--border-light); margin: 2.6rem 0 2.8rem; }

/* --- abstract, endmatter ------------------------------------------------------------- */

.abstract { background: var(--bg-card); border: 1px solid var(--border); border-top: 6px solid transparent; border-image: var(--ramp) 1; border-radius: 0; }
.abstract h2 { color: var(--primary); letter-spacing: 0.12em; }
.endmatter .kw { background: var(--bg-accent); border-color: var(--border); font-family: var(--mono); font-size: 0.72rem; }
.endmatter dt { font-family: var(--mono); font-size: 0.72rem; }

/* --- KPI board ------------------------------------------------------------------------- */

.kpi-board { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin: 1.6rem 0; }
.kpi { position: relative; background: var(--bg-card); border: 1px solid var(--border); border-radius: 2px; padding: 1.15rem 1.05rem 0.85rem; display: flex; flex-direction: column; min-width: 0; overflow: hidden; }
.kpi::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 4px; background: var(--k, var(--accent)); }

.kpi--trap { --k: var(--e-trap); }
.kpi--esc { --k: var(--e-esc); }
.kpi--fuel { --k: var(--c-fuel); }
.kpi--wash { --k: var(--c-wash); }
.kpi--air { --k: var(--c-air); }
.kpi--wealth { --k: var(--c-wealth); }
.kpi--land { --k: var(--c-land); }
.kpi-value { font-family: var(--serif); font-weight: 700; font-size: clamp(1.75rem, 3.1vw, 2.3rem); letter-spacing: -0.02em; line-height: 1; color: var(--text); font-variant-numeric: lining-nums tabular-nums; }
.kpi-label { font-size: 0.86rem; line-height: 1.42; color: var(--text-secondary); margin-top: 0.45rem; flex: 1; }
.kpi-source { font-family: var(--mono); font-size: 0.7rem; font-weight: 500; color: var(--text-muted); margin-top: 0.6rem; border-top: 1px solid var(--border-light); padding-top: 0.4rem; margin-bottom: 0.3rem; }

/* --- readout ----------------------------------------------------------------------------- */

.readout { background: var(--bg-dark); border-radius: 2px; padding: 1.15rem 1.4rem 0.45rem; margin: 1.6rem 0; position: relative; overflow: hidden; border-top: 6px solid transparent; border-image: var(--ramp) 1; }
.readout-title { font-family: var(--mono); font-size: 0.74rem; letter-spacing: 0.12em; text-transform: uppercase; color: var(--accent-light); margin: 0 0 0.4rem !important; }
.readout p { color: #e9e6d6; text-align: justify; hyphens: auto; -webkit-hyphens: auto; position: relative; }
.readout strong { color: #fff; }

/* --- panels ------------------------------------------------------------------------------ */

.dash-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; margin: 1.2rem 0; }
.panel { background: var(--bg-card); border: 1px solid var(--border); border-radius: 2px; padding: 1.05rem 1.15rem 0.95rem; min-width: 0; }
.panel--wide { grid-column: 1 / -1; }
.panel--hero { margin: 1.2rem 0; padding: 1.15rem 1.25rem 1.05rem; border-top: 5px solid transparent; border-image: var(--ramp) 1; }
.panel-head { border-bottom: 1px solid var(--border-light); margin-bottom: 0.75rem; padding-bottom: 0.55rem; }
.panel-title { font-family: var(--serif); font-weight: 700; letter-spacing: -0.01em; font-size: 1.18rem; line-height: 1.2; color: var(--text); margin: 0 !important; }
.panel-meta { font-family: var(--mono); font-size: 0.74rem; font-weight: 400; color: var(--text-muted); margin: 0.25rem 0 0.4rem !important; }
.panel-note { font-size: 0.85rem; line-height: 1.5; color: var(--text-muted); margin: 0.6rem 0 0 !important; text-align: left !important; }
.panel canvas { max-width: 100%; }
.panel .chart-frame { height: 310px; }
.panel .chart-frame--tall { height: 440px; }
.panel .chart-frame--short { height: 240px; }

.stat-tile { background: var(--bg-card); border: 1px solid var(--border); border-radius: 2px; padding: 0.85rem 1rem; border-left: 6px solid var(--k, var(--accent)); min-width: 0; }
.stat-tile--trap { --k: var(--e-trap); }
.stat-tile--esc { --k: var(--e-esc); }
.stat-tile-value { font-family: var(--serif); font-weight: 700; letter-spacing: -0.02em; font-size: 1.6rem; line-height: 1.05; color: var(--text); margin: 0 !important; font-variant-numeric: lining-nums tabular-nums; }
.stat-tile-label { font-size: 0.82rem; color: var(--text-muted); margin: 0.2rem 0 0 !important; text-align: left !important; line-height: 1.4; }
.tile-row { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin: 1rem 0; }

/* --- controls ------------------------------------------------------------------------------ */

.controls { display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 14px 22px; margin-bottom: 1rem; padding-bottom: 0.9rem; border-bottom: 1px solid var(--border-light); }
.slider { display: grid; gap: 3px; }
.slider-top { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; }
.slider label, .seg-wrap .seg-label { font-family: var(--sans); font-weight: 600; font-size: 0.9rem; color: var(--text); }
.slider output { font-family: var(--mono); font-weight: 700; font-size: 0.9rem; color: var(--accent); white-space: nowrap; }
.slider .hint { font-size: 0.78rem; line-height: 1.35; color: var(--text-muted); margin: 0 !important; text-align: left !important; }
.slider input[type="range"] { width: 100%; accent-color: var(--accent); margin: 2px 0; }
.seg-wrap { display: grid; gap: 5px; }
.segmented { display: inline-flex; flex-wrap: wrap; border: 1px solid var(--rule); border-radius: 2px; overflow: hidden; background: var(--bg-card); width: fit-content; max-width: 100%; }
.segmented button { font: inherit; font-family: var(--mono); font-size: 0.78rem; font-weight: 500; padding: 0.38rem 0.66rem; border: 0; background: transparent; color: var(--text-secondary); cursor: pointer; }
.segmented button + button { border-left: 1px solid var(--rule); }
.segmented button.is-on { background: var(--primary); color: #fff; }
.calc-note { font-family: var(--mono); font-size: 0.76rem; font-weight: 400; color: var(--text-muted); margin: 0.6rem 0 0 !important; line-height: 1.5; }
select.pick { font: inherit; font-family: var(--sans); font-size: 0.92rem; padding: 0.35rem 0.5rem; border: 1px solid var(--rule); border-radius: 2px; background: var(--bg-card); color: var(--text); max-width: 100%; }

/* --- atlas and country card ------------------------------------------------------------------- */

.atlas-layout { display: grid; grid-template-columns: minmax(0, 2.15fr) minmax(0, 1fr); gap: 18px; align-items: start; }
.atlas-wrap { position: relative; border-radius: 2px; overflow: hidden; background: var(--map-sea); border: 1px solid var(--border); }
.atlas { display: block; width: 100%; height: auto; }

.atlas-corner { position: absolute; left: 10px; bottom: 8px; font-family: var(--mono); font-size: 0.62rem; color: var(--text-muted); background: rgba(255, 255, 255, 0.85); padding: 1px 6px; border-radius: 2px; }
.legend { display: flex; flex-wrap: wrap; gap: 6px 14px; margin: 0.6rem 0 0; }
.legend span { display: inline-flex; align-items: center; gap: 6px; font-family: var(--mono); font-size: 0.72rem; color: var(--text-secondary); }
.legend i { width: 14px; height: 10px; border-radius: 1px; flex: none; }
.country-card { border: 1px solid var(--border); border-radius: 2px; background: var(--bg); padding: 0.85rem 0.95rem; min-height: 300px; border-top: 6px solid var(--cc, var(--rule)); }
.country-card .cc-kicker { font-family: var(--mono); font-size: 0.66rem; letter-spacing: 0.08em; text-transform: uppercase; color: var(--text-muted); margin: 0 !important; }
.country-card h3 { font-family: var(--serif); font-weight: 700; font-size: 1.45rem; color: var(--primary); margin: 0.05rem 0 0.15rem; line-height: 1.1; }
.country-card .cc-class { font-family: var(--mono); font-size: 0.72rem; margin: 0 0 0.55rem !important; color: var(--text-secondary); text-align: left !important; }
.kv { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 4px 10px; font-size: 0.86rem; margin: 0; }
.kv dt { color: var(--text-secondary); }
.kv dd { margin: 0; font-family: var(--mono); font-size: 0.8rem; color: var(--text); text-align: right; }
.tag-row { display: flex; flex-wrap: wrap; gap: 5px; margin: 0.5rem 0 0; }
.tag-row span { font-family: var(--mono); font-size: 0.64rem; letter-spacing: 0.04em; padding: 2px 6px; border-radius: 2px; background: var(--bg-accent); color: var(--text-secondary); }
.tag-row span.on { background: var(--accent); color: #fff; }

/* --- breaker cards -------------------------------------------------------------- */

.cards { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin: 1.2rem 0; }
.card { background: var(--bg-card); border: 1px solid var(--border); border-radius: 2px; padding: 0.95rem 1rem; border-top: 5px solid var(--k, var(--primary-light)); }
.card h3 { font-family: var(--serif); font-weight: 700; font-size: 1.15rem; line-height: 1.2; color: var(--primary); margin: 0 0 0.35rem; }
.card p { font-size: 0.88rem; line-height: 1.5; color: var(--text-secondary); margin: 0 !important; text-align: left !important; }
.card .tag { font-family: var(--mono); font-size: 0.64rem; letter-spacing: 0.06em; text-transform: uppercase; color: var(--text-muted); margin: 0 0 0.25rem !important; }
.card--a { --k: var(--c-fuel); }
.card--b { --k: var(--c-wash); }
.card--c { --k: var(--c-air); }
.card--d { --k: var(--c-land); }
.card--e { --k: var(--c-wealth); }
.card--f { --k: var(--e-esc); }

/* --- references, footer --------------------------------------------------------------------- */

.ref-list .ref-org { font-family: var(--mono); color: var(--primary-light); font-size: 0.7rem; }
.report-footer { border-top: 0; position: relative; padding-top: calc(3rem + 6px); }
.report-footer::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 6px; background: var(--ramp); }
.footer-inner h3 { color: #fff; font-family: var(--serif); font-weight: 700; font-size: 1.45rem; }
.footer-inner a { color: var(--accent-light); }
.cite-box { border-left-color: var(--accent); }

/* --- responsive ------------------------------------------------------------------------------ */

@media (max-width: 1000px) {
  .kpi-board, .tile-row { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .atlas-layout { grid-template-columns: minmax(0, 1fr); }
  .cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 680px) {
  .dash-grid, .cards { grid-template-columns: minmax(0, 1fr); }
  .masthead { padding-top: 2.2rem; background: linear-gradient(180deg, rgba(18, 20, 13, 0.9) 0 60%, rgba(18, 20, 13, 0.45)), var(--sheet) 75% 100% / auto 70% no-repeat, linear-gradient(180deg, #232719, #12140d); }
  .segmented button { padding: 0.34rem 0.5rem; font-size: 0.7rem; }
}
@media (max-width: 420px) {
  .kpi-board, .tile-row { grid-template-columns: minmax(0, 1fr); }
}

@media print {
  .controls { display: none; }
  .masthead, .readout, .report-footer::before, .atlas-wrap, .strip { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
}






/* --- report-specific: cycle loops, chips, escape clock, atlas, table ------------------------------ */

.cycles { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 10px; margin: 0.4rem 0 0.2rem; }
.cycle { border: 1px solid var(--border); border-radius: 3px; background: var(--bg-card); padding: 0.75rem 0.8rem; border-top: 6px solid var(--k); min-width: 0; }
.cycle h4 { font-family: var(--serif); font-weight: 800; font-size: 1.12rem; margin: 0 0 0.25rem; color: var(--primary); }
.cycle ol { margin: 0 0 0.4rem; padding-left: 1.05rem; font-size: 0.82rem; line-height: 1.38; color: var(--text-secondary); }
.cycle ol li::marker { color: var(--k); font-weight: 700; }
.cycle .fig { display: block; font-family: var(--mono); font-weight: 600; font-size: 0.8rem; color: var(--k); }
.cycle--air { --k: var(--c-air); } .cycle--fuel { --k: var(--c-fuel); } .cycle--wash { --k: var(--c-wash); } .cycle--land { --k: var(--c-land); } .cycle--wealth { --k: var(--c-wealth); }
@media (max-width: 1000px) { .cycles { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 520px) { .cycles { grid-template-columns: minmax(0, 1fr); } }

.calc-out { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; margin: 0.9rem 0 0.4rem; }
.calc-out div { border: 1px solid var(--border); border-left: 5px solid var(--k, var(--e-esc)); border-radius: 2px; background: var(--bg); padding: 0.6rem 0.75rem; min-width: 0; }
.calc-out b { display: block; font-family: var(--mono); font-weight: 600; font-size: 1.4rem; line-height: 1.05; color: var(--text); }
.calc-out span { display: block; font-size: 0.82rem; line-height: 1.35; color: var(--text-muted); margin-top: 0.2rem; }
@media (max-width: 900px) { .calc-out { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

.cyc-chips { display: flex; flex-wrap: wrap; gap: 4px; margin: 0.35rem 0 0.55rem; }
.cyc-chips span { font-family: var(--mono); font-size: 0.72rem; font-weight: 500; padding: 2px 7px; border-radius: 10px; border: 1px solid var(--k); color: var(--k); background: transparent; }
.cyc-chips span.on { background: var(--k); color: #fff; }
.cyc-chips span.na { border-style: dashed; color: var(--text-muted); border-color: var(--rule); }
.cyc-chips span.was::after { content: " ↗"; }
.atlas .atlas-sea { fill: var(--map-sea); }
.atlas .atlas-land path { fill: var(--map-none); stroke: #fff; stroke-width: 0.45; stroke-linejoin: round; transition: fill 0.25s; }
.atlas [data-iso].is-in { cursor: pointer; }
.atlas [data-iso].is-in:hover { stroke: var(--text); stroke-width: 1.3; }
.atlas [data-iso].is-pick { stroke: var(--text); stroke-width: 2.2; }
.cls-chip { display: inline-block; font-family: var(--mono); font-weight: 600; font-size: 0.72rem; letter-spacing: 0.04em; text-transform: uppercase; padding: 1px 7px; border-radius: 2px; color: #fff; background: var(--k, var(--text-muted)); }
table.rank { width: 100%; border-collapse: collapse; font-size: 0.86rem; }
table.rank th, table.rank td { padding: 0.36rem 0.5rem; border-bottom: 1px solid var(--border-light); text-align: left; }
table.rank thead th { position: sticky; top: 0; background: var(--bg-card); font-family: var(--mono); font-weight: 600; font-size: 0.7rem; letter-spacing: 0.04em; text-transform: uppercase; color: var(--text-muted); border-bottom: 2px solid var(--rule); }
table.rank th button { font: inherit; background: none; border: 0; color: inherit; cursor: pointer; padding: 0; text-transform: inherit; letter-spacing: inherit; }
table.rank th button[aria-sort]::after { content: " ↓"; color: var(--accent); }
table.rank td.n { font-family: var(--mono); font-weight: 500; font-size: 0.82rem; text-align: right; white-space: nowrap; }
table.rank tbody tr { cursor: pointer; }
table.rank tbody tr:hover td { background: var(--bg-accent); }
table.rank .dots i { display: inline-block; width: 10px; height: 10px; border-radius: 50%; margin-right: 2px; border: 1px solid var(--k); }
table.rank .dots i.on { background: var(--k); }
table.rank .dots i.na { border-style: dashed; border-color: var(--rule); }
.rank-wrap { overflow-x: auto; max-height: 480px; overflow-y: auto; }
.explorer-top { display: flex; flex-wrap: wrap; gap: 10px 18px; align-items: end; margin-bottom: 0.7rem; }
.explorer-top input[type="search"] { font: inherit; font-size: 0.92rem; padding: 0.38rem 0.6rem; border: 1px solid var(--rule); border-radius: 2px; background: var(--bg-card); color: var(--text); min-width: 220px; }
.heat { width: 100%; border-collapse: collapse; font-family: var(--mono); font-size: 0.8rem; }
.heat th, .heat td { padding: 0.45rem 0.4rem; text-align: center; border: 1px solid var(--bg-card); }
.heat th { font-weight: 600; color: var(--text-secondary); font-size: 0.74rem; }
.heat td.lab { text-align: left; font-weight: 600; color: var(--text-secondary); white-space: nowrap; }
.heat-wrap { overflow-x: auto; }
