energy-visualization-sankey 1.0.4 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/dist/sankey.css +667 -0
  2. package/dist/sankey.css.map +1 -0
  3. package/dist/sankey.esm.js +3928 -33
  4. package/dist/sankey.esm.js.map +1 -1
  5. package/dist/sankey.umd.js +9061 -5183
  6. package/dist/sankey.umd.js.map +1 -1
  7. package/package.json +1 -1
  8. package/rollup.config.js +25 -80
  9. package/src/services/calculation/GraphService.ts +0 -6
  10. package/dist/core/Sankey.d.ts +0 -294
  11. package/dist/core/Sankey.d.ts.map +0 -1
  12. package/dist/core/events/EventBus.d.ts +0 -195
  13. package/dist/core/events/EventBus.d.ts.map +0 -1
  14. package/dist/core/types/events.d.ts +0 -42
  15. package/dist/core/types/events.d.ts.map +0 -1
  16. package/dist/index.d.ts +0 -19
  17. package/dist/index.d.ts.map +0 -1
  18. package/dist/sankey.standalone.esm.js +0 -9162
  19. package/dist/sankey.standalone.esm.js.map +0 -1
  20. package/dist/sankey.standalone.min.js +0 -2
  21. package/dist/sankey.standalone.min.js.map +0 -1
  22. package/dist/sankey.standalone.umd.js +0 -9170
  23. package/dist/sankey.standalone.umd.js.map +0 -1
  24. package/dist/sankey.umd.min.js +0 -2
  25. package/dist/sankey.umd.min.js.map +0 -1
  26. package/dist/services/AnimationService.d.ts +0 -229
  27. package/dist/services/AnimationService.d.ts.map +0 -1
  28. package/dist/services/ConfigurationService.d.ts +0 -182
  29. package/dist/services/ConfigurationService.d.ts.map +0 -1
  30. package/dist/services/InteractionService.d.ts +0 -377
  31. package/dist/services/InteractionService.d.ts.map +0 -1
  32. package/dist/services/RenderingService.d.ts +0 -160
  33. package/dist/services/RenderingService.d.ts.map +0 -1
  34. package/dist/services/calculation/GraphService.d.ts +0 -111
  35. package/dist/services/calculation/GraphService.d.ts.map +0 -1
  36. package/dist/services/calculation/SummaryService.d.ts +0 -149
  37. package/dist/services/calculation/SummaryService.d.ts.map +0 -1
  38. package/dist/services/data/DataService.d.ts +0 -167
  39. package/dist/services/data/DataService.d.ts.map +0 -1
  40. package/dist/services/data/DataValidationService.d.ts +0 -48
  41. package/dist/services/data/DataValidationService.d.ts.map +0 -1
  42. package/dist/styles.css +0 -2
  43. package/dist/styles.css.map +0 -1
  44. package/dist/types/index.d.ts +0 -187
  45. package/dist/types/index.d.ts.map +0 -1
  46. package/dist/utils/Logger.d.ts +0 -88
  47. package/dist/utils/Logger.d.ts.map +0 -1
@@ -0,0 +1,667 @@
1
+ /* Energy Visualization Sankey - Combined Styles */
2
+
3
+ /* Import core Sankey diagram styles */
4
+
5
+ /* US Energy Sankey - Core Styles */
6
+
7
+ /* Typography */
8
+
9
+ text, tspan {
10
+ font-family: Fieldwork, Futura, sans-serif;
11
+ font-size: 16px;
12
+ }
13
+
14
+ /* Flow Styles */
15
+
16
+ .flow {
17
+ fill: none;
18
+ stroke-opacity: 0.8;
19
+ }
20
+
21
+ .flow:hover {
22
+ stroke-opacity: 0.9;
23
+ }
24
+
25
+ .flow.heat {
26
+ stroke: #98002e;
27
+ }
28
+
29
+ .flow.elec, .flow.waste.heat {
30
+ stroke: #e49942;
31
+ }
32
+
33
+ .flow.waste {
34
+ stroke: #e49942;
35
+ opacity: 0.4 !important;
36
+ }
37
+
38
+ .flow.solar {
39
+ stroke: #fed530;
40
+ }
41
+
42
+ .flow.nuclear {
43
+ stroke: #ca0813;
44
+ }
45
+
46
+ .flow.hydro {
47
+ stroke: #0b24fb;
48
+ }
49
+
50
+ .flow.wind {
51
+ stroke: #901d8f;
52
+ }
53
+
54
+ .flow.geo {
55
+ stroke: #905a1c;
56
+ }
57
+
58
+ .flow.gas {
59
+ stroke: #4cabf2;
60
+ }
61
+
62
+ .flow.coal {
63
+ stroke: #000000;
64
+ }
65
+
66
+ .flow.bio {
67
+ stroke: #46be48;
68
+ }
69
+
70
+ .flow.petro {
71
+ stroke: #095f0b;
72
+ }
73
+
74
+ /* Box Styles */
75
+
76
+ .box.sector {
77
+ fill: #cccccc;
78
+ }
79
+
80
+ .box.solar {
81
+ fill: #fed530;
82
+ }
83
+
84
+ .box.nuclear {
85
+ fill: #ca0813;
86
+ }
87
+
88
+ .box.hydro {
89
+ fill: #0b24fb;
90
+ }
91
+
92
+ .box.wind {
93
+ fill: #901d8f;
94
+ }
95
+
96
+ .box.geo {
97
+ fill: #905a1c;
98
+ }
99
+
100
+ .box.gas {
101
+ fill: #4cabf2;
102
+ }
103
+
104
+ .box.coal {
105
+ fill: #000000;
106
+ }
107
+
108
+ .box.bio {
109
+ fill: #46be48;
110
+ }
111
+
112
+ .box.petro {
113
+ fill: #095f0b;
114
+ }
115
+
116
+ /* Other Elements */
117
+
118
+ .maxline {
119
+ stroke: #cccccc;
120
+ stroke-width: 1px;
121
+ }
122
+
123
+ .bkgd {
124
+ fill: #000000;
125
+ }
126
+
127
+ /* Title Container - Responsive Header Layout */
128
+
129
+ .title_container {
130
+ border-top: 2px solid #000000;
131
+ border-bottom: 1px solid #000000;
132
+ position: relative;
133
+ min-height: 58px;
134
+ padding: 8px 16px;
135
+ background: white;
136
+ }
137
+
138
+ .header-content {
139
+ display: flex;
140
+ align-items: center;
141
+ justify-content: space-between;
142
+ width: 100%;
143
+ gap: 20px;
144
+ flex-wrap: nowrap;
145
+ }
146
+
147
+ /* Logo Section */
148
+
149
+ .header-logo {
150
+ flex: 0 0 auto;
151
+ min-width: 60px;
152
+ }
153
+
154
+ .header-logo img {
155
+ max-height: 45px;
156
+ height: auto;
157
+ display: block;
158
+ }
159
+
160
+ /* Main Title Section - Contains title and energy usage */
161
+
162
+ .header-main {
163
+ flex: 1;
164
+ text-align: center;
165
+ min-width: 160px;
166
+ position: relative;
167
+ }
168
+
169
+ .header-title-section {
170
+ position: relative;
171
+ min-height: 45px;
172
+ }
173
+
174
+ .main-title {
175
+ font-family: Fieldwork, Futura, sans-serif;
176
+ font-size: 1em;
177
+ font-weight: normal;
178
+ color: black;
179
+ margin: 0;
180
+ line-height: 1.2;
181
+ margin-bottom: 2px;
182
+ }
183
+
184
+ .energy-usage-overlay {
185
+ position: absolute;
186
+ top: 22px;
187
+ left: 0;
188
+ width: 100%;
189
+ height: 25px;
190
+ pointer-events: none;
191
+ }
192
+
193
+ /* Year Section - Separate section for year display */
194
+
195
+ .header-year {
196
+ flex: 1;
197
+ min-width: 80px;
198
+ height: 45px;
199
+ position: relative;
200
+ display: flex;
201
+ align-items: center;
202
+ justify-content: center;
203
+ }
204
+
205
+ .year-overlay {
206
+ position: absolute;
207
+ top: 0;
208
+ left: 0;
209
+ width: 100%;
210
+ height: 100%;
211
+ pointer-events: none;
212
+ }
213
+
214
+ /* Info Section */
215
+
216
+ .header-info {
217
+ flex: 1.9;
218
+ min-width: 160px;
219
+ text-align: left;
220
+ }
221
+
222
+ .subtitle {
223
+ font-family: Fieldwork-HumThin, Futura, sans-serif;
224
+ font-size: 1em;
225
+ color: #000000;
226
+ font-weight: bolder;
227
+ line-height: 1.2;
228
+ margin-bottom: 2px;
229
+ }
230
+
231
+ .attribution {
232
+ font-family: Fieldwork-HumThin, Futura, sans-serif;
233
+ font-size: 1em;
234
+ color: #000000;
235
+ font-weight: normal;
236
+ line-height: 1.2;
237
+ }
238
+
239
+ /* Affiliation Section */
240
+
241
+ .header-affiliation {
242
+ flex: 1.7;
243
+ text-align: center;
244
+ min-width: 140px;
245
+ }
246
+
247
+ .affiliation-text {
248
+ font-family: Fieldwork-HumThin, Futura, sans-serif;
249
+ font-size: 1em;
250
+ color: #000000;
251
+ font-weight: normal;
252
+ line-height: 1.2;
253
+ }
254
+
255
+ /* SVG Overlay Styles */
256
+
257
+ .energy-svg-overlay,
258
+ .year-svg-overlay {
259
+ z-index: 10;
260
+ }
261
+
262
+ .energy-svg-overlay text,
263
+ .year-svg-overlay text {
264
+ font-family: Fieldwork, Futura, sans-serif;
265
+ fill: black;
266
+ }
267
+
268
+ /* Legacy SVG styles for compatibility */
269
+
270
+ .title_container svg {
271
+ font-size: 15px;
272
+ }
273
+
274
+ .title_container .title {
275
+ font-size: 1em;
276
+ fill: black;
277
+ }
278
+
279
+ .title_container .title .unit {
280
+ font-size: .9em;
281
+ font-weight: bold;
282
+ }
283
+
284
+ .title_container .title .year {
285
+ font-size: 3.1em;
286
+ font-weight: bold;
287
+ clear: left;
288
+ letter-spacing: .05em;
289
+ font-variant-numeric: tabular-nums;
290
+ }
291
+
292
+ /* Mobile Responsive Design */
293
+
294
+ @media (max-width: 1024px) {
295
+ .header-content {
296
+ gap: 15px;
297
+ }
298
+
299
+ .main-title {
300
+ font-size: 0.9em;
301
+ }
302
+
303
+ .header-logo {
304
+ min-width: 50px;
305
+ }
306
+
307
+ .header-main,
308
+ .header-year,
309
+ .header-info,
310
+ .header-affiliation {
311
+ flex: 1;
312
+ min-width: 120px;
313
+ }
314
+
315
+ .year-svg-overlay text {
316
+ font-size: 2.8em !important;
317
+ }
318
+
319
+ .subtitle, .attribution, .affiliation-text {
320
+ font-size: 0.9em;
321
+ }
322
+ }
323
+
324
+ @media (max-width: 768px) {
325
+ .title_container {
326
+ padding: 6px 12px;
327
+ }
328
+
329
+ .header-content {
330
+ gap: 10px;
331
+ }
332
+
333
+ .header-logo {
334
+ min-width: 40px;
335
+ }
336
+
337
+ .header-logo img {
338
+ max-height: 35px;
339
+ }
340
+
341
+ .main-title {
342
+ font-size: 0.8em;
343
+ }
344
+
345
+ .header-main,
346
+ .header-year,
347
+ .header-info,
348
+ .header-affiliation {
349
+ flex: 1;
350
+ min-width: 100px;
351
+ }
352
+
353
+ .header-year {
354
+ height: 40px;
355
+ }
356
+
357
+ .year-svg-overlay text {
358
+ font-size: 2.5em !important;
359
+ }
360
+
361
+ .energy-svg-overlay text {
362
+ font-size: 0.8em !important;
363
+ }
364
+
365
+ .subtitle, .attribution, .affiliation-text {
366
+ font-size: 0.8em;
367
+ }
368
+ }
369
+
370
+ @media (max-width: 600px) {
371
+ .header-content {
372
+ flex-wrap: wrap;
373
+ gap: 8px;
374
+ }
375
+
376
+ .header-main {
377
+ order: 1;
378
+ flex: 1 1 100%;
379
+ margin-bottom: 8px;
380
+ }
381
+
382
+ .header-year {
383
+ order: 2;
384
+ flex: 1 1 100%;
385
+ margin-bottom: 8px;
386
+ justify-content: center;
387
+ height: 50px;
388
+ }
389
+
390
+ .header-logo {
391
+ order: 3;
392
+ flex: 1 1 50%;
393
+ }
394
+
395
+ .header-info {
396
+ order: 4;
397
+ flex: 1 1 100%;
398
+ margin-bottom: 8px;
399
+ }
400
+
401
+ .header-affiliation {
402
+ order: 5;
403
+ flex: 1 1 50%;
404
+ text-align: left;
405
+ }
406
+
407
+ .main-title {
408
+ text-align: center;
409
+ margin-bottom: 5px;
410
+ }
411
+
412
+ .energy-usage-overlay {
413
+ position: relative;
414
+ top: 0;
415
+ text-align: center;
416
+ margin-top: 5px;
417
+ }
418
+ }
419
+
420
+ /* Totals */
421
+
422
+ .total.sector {
423
+ font-size: 0.7em;
424
+ font-weight: bold;
425
+ }
426
+
427
+ .total.waste-level {
428
+ fill: #e49942;
429
+ opacity: 0.4;
430
+ }
431
+
432
+ /* Visibility */
433
+
434
+ .hidden {
435
+ visibility: hidden;
436
+ }
437
+
438
+ /* Tooltip */
439
+
440
+ .tooltip {
441
+ color: #000000;
442
+ position: absolute;
443
+ text-align: justify;
444
+ width: auto;
445
+ padding: 5px;
446
+ background: #efefef;
447
+ border: 1px solid black;
448
+ pointer-events: none;
449
+ z-index: 3;
450
+ }
451
+
452
+ .fuel_value {
453
+ text-align: center;
454
+ vertical-align: middle;
455
+ }
456
+
457
+ /* Waste Heat Visibility Control */
458
+
459
+ .waste-heat-hidden .flow.waste {
460
+ display: none !important;
461
+ }
462
+
463
+ .waste-heat-hidden .total.waste-level {
464
+ display: none !important;
465
+ }
466
+
467
+ /* Smooth transition for waste heat toggle (optional) */
468
+
469
+ .flow.waste,
470
+ .total.waste-level {
471
+ transition: opacity 0.3s ease;
472
+ }
473
+
474
+ /* Import UI controls styles */
475
+
476
+ /* US Energy Sankey - Controls Styles */
477
+
478
+ /* Range Slider */
479
+
480
+ .range-slider {
481
+ width: 100%;
482
+ margin-top: 5px;
483
+ position: relative;
484
+ overflow: visible;
485
+ padding-top: 40px;
486
+ }
487
+
488
+ .range-slider__range {
489
+ -webkit-appearance: none;
490
+ width: 100%;
491
+ border-radius: 5px;
492
+ outline: none;
493
+ padding: 0;
494
+ margin: 0;
495
+ }
496
+
497
+ .range-slider__range:first-child {
498
+ background: #d7dcdf;
499
+ }
500
+
501
+ .range-slider__range::-webkit-slider-thumb {
502
+ -webkit-appearance: none;
503
+ appearance: none;
504
+ width: 11px;
505
+ height: 11px;
506
+ border-radius: 50%;
507
+ background: #fff;
508
+ box-shadow: 0 0 4px 0 rgba(0, 0, 0, 1);
509
+ cursor: pointer;
510
+ transition: background 0.15s ease-in-out;
511
+ }
512
+
513
+ .range-slider__range::-moz-range-thumb {
514
+ width: 11px;
515
+ height: 11px;
516
+ border: 0;
517
+ border-radius: 50%;
518
+ background: #fff;
519
+ box-shadow: 0 0 4px 0 rgba(0, 0, 0, 1);
520
+ cursor: pointer;
521
+ transition: background 0.15s ease-in-out;
522
+ }
523
+
524
+ /* Dynamic Year Display */
525
+
526
+ #dynamicYear {
527
+ color: black;
528
+ position: absolute;
529
+ height: 25px;
530
+ width: 50px;
531
+ text-align: center;
532
+ border: 1px solid black;
533
+ border-radius: 3px;
534
+ display: block;
535
+ font-size: 16px;
536
+ top: 40%;
537
+ /*bottom: 100%;*/
538
+ background: white;
539
+ padding: 3px 5px;
540
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
541
+ }
542
+
543
+ /* Add downward arrow pointing to slider */
544
+
545
+ #dynamicYear::after {
546
+ content: '';
547
+ position: absolute;
548
+ top: 100%;
549
+ left: 50%;
550
+ margin-left: -4px;
551
+ width: 0;
552
+ height: 0;
553
+ border-left: 4px solid transparent;
554
+ border-right: 4px solid transparent;
555
+ border-top: 6px solid black;
556
+ }
557
+
558
+ /* Play/Pause Button */
559
+
560
+ #play-button {
561
+ border-radius: 0;
562
+ display: block;
563
+ height: 0;
564
+ }
565
+
566
+ #play-button:hover {
567
+ background: transparent !important;
568
+ }
569
+
570
+ #play-button.playbutton {
571
+ outline: 0;
572
+ background: transparent;
573
+ border-color: transparent transparent transparent #202020;
574
+ transition: 100ms all ease;
575
+ cursor: pointer;
576
+ border-style: solid;
577
+ border-width: 13px 0 13px 20px;
578
+ }
579
+
580
+ #play-button.playpaused {
581
+ outline: 0;
582
+ background: transparent;
583
+ height: 26px;
584
+ border-color: transparent transparent transparent #202020;
585
+ transition: 100ms all ease;
586
+ cursor: pointer;
587
+ border-style: double;
588
+ border-width: 0px 0 0px 20px;
589
+ }
590
+
591
+ #play-button.playbutton:hover {
592
+ border-color: transparent transparent transparent #404040;
593
+ }
594
+
595
+ /* Waste Heat Toggle Switch */
596
+
597
+ .switch_box {
598
+ display: -webkit-box;
599
+ display: -ms-flexbox;
600
+ display: flex;
601
+ min-width: 200px;
602
+ -webkit-box-pack: center;
603
+ -ms-flex-pack: center;
604
+ justify-content: center;
605
+ -webkit-box-align: center;
606
+ -ms-flex-align: center;
607
+ align-items: center;
608
+ -webkit-box-flex: 1;
609
+ -ms-flex: 1;
610
+ flex: 1;
611
+ }
612
+
613
+ .box_1 {
614
+ background: #ffffff;
615
+ }
616
+
617
+ input[type="checkbox"].switch_1 {
618
+ -webkit-appearance: none;
619
+ -moz-appearance: none;
620
+ appearance: none;
621
+ width: 3.5em;
622
+ height: 1.5em;
623
+ background: black;
624
+ border-radius: 3em;
625
+ position: relative;
626
+ cursor: pointer;
627
+ outline: none;
628
+ -webkit-transition: all .2s ease-in-out;
629
+ transition: all .2s ease-in-out;
630
+ }
631
+
632
+ input[type="checkbox"].switch_1:checked {
633
+ background: black;
634
+ }
635
+
636
+ input[type="checkbox"].switch_1:after {
637
+ position: absolute;
638
+ content: "";
639
+ width: 1.5em;
640
+ height: 1.5em;
641
+ border-radius: 50%;
642
+ background: #fff;
643
+ -webkit-box-shadow: 0 0 .25em rgba(0, 0, 0, .3);
644
+ box-shadow: 0 0 .25em rgba(0, 0, 0, .3);
645
+ -webkit-transform: scale(.7);
646
+ transform: scale(.7);
647
+ left: 0;
648
+ -webkit-transition: all .2s ease-in-out;
649
+ transition: all .2s ease-in-out;
650
+ }
651
+
652
+ input[type="checkbox"].switch_1:checked:after {
653
+ left: calc(100% - 1.5em);
654
+ }
655
+
656
+ /* Milestone Tick Markers */
657
+
658
+ #testTick .tick text {
659
+ cursor: pointer;
660
+ }
661
+
662
+ #testTick .tick text:hover {
663
+ color: grey;
664
+ transition: color 250ms;
665
+ }
666
+
667
+ /*# sourceMappingURL=sankey.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["index.css","sankey.css","controls.css"],"names":[],"mappings":"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","file":"sankey.css","sourcesContent":["/* Energy Visualization Sankey - Combined Styles */\n\n/* Import core Sankey diagram styles */\n@import './sankey.css';\n\n/* Import UI controls styles */\n@import './controls.css';\n","/* US Energy Sankey - Core Styles */\n\n/* Typography */\ntext, tspan {\n font-family: Fieldwork, Futura, sans-serif;\n font-size: 16px;\n}\n\n/* Flow Styles */\n.flow {\n fill: none;\n stroke-opacity: 0.8;\n}\n\n.flow:hover {\n stroke-opacity: 0.9;\n}\n\n.flow.heat {\n stroke: #98002e;\n}\n\n.flow.elec, .flow.waste.heat {\n stroke: #e49942;\n}\n\n.flow.waste {\n stroke: #e49942;\n opacity: 0.4 !important;\n}\n\n.flow.solar {\n stroke: #fed530;\n}\n\n.flow.nuclear {\n stroke: #ca0813;\n}\n\n.flow.hydro {\n stroke: #0b24fb;\n}\n\n.flow.wind {\n stroke: #901d8f;\n}\n\n.flow.geo {\n stroke: #905a1c;\n}\n\n.flow.gas {\n stroke: #4cabf2;\n}\n\n.flow.coal {\n stroke: #000000;\n}\n\n.flow.bio {\n stroke: #46be48;\n}\n\n.flow.petro {\n stroke: #095f0b;\n}\n\n/* Box Styles */\n.box.sector {\n fill: #cccccc;\n}\n\n.box.solar {\n fill: #fed530;\n}\n\n.box.nuclear {\n fill: #ca0813;\n}\n\n.box.hydro {\n fill: #0b24fb;\n}\n\n.box.wind {\n fill: #901d8f;\n}\n\n.box.geo {\n fill: #905a1c;\n}\n\n.box.gas {\n fill: #4cabf2;\n}\n\n.box.coal {\n fill: #000000;\n}\n\n.box.bio {\n fill: #46be48;\n}\n\n.box.petro {\n fill: #095f0b;\n}\n\n/* Other Elements */\n.maxline {\n stroke: #cccccc;\n stroke-width: 1px;\n}\n\n.bkgd {\n fill: #000000;\n}\n\n/* Title Container - Responsive Header Layout */\n.title_container {\n border-top: 2px solid #000000;\n border-bottom: 1px solid #000000;\n position: relative;\n min-height: 58px;\n padding: 8px 16px;\n background: white;\n}\n\n.header-content {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n gap: 20px;\n flex-wrap: nowrap;\n}\n\n/* Logo Section */\n.header-logo {\n flex: 0 0 auto;\n min-width: 60px;\n}\n\n.header-logo img {\n max-height: 45px;\n height: auto;\n display: block;\n}\n\n/* Main Title Section - Contains title and energy usage */\n.header-main {\n flex: 1;\n text-align: center;\n min-width: 160px;\n position: relative;\n}\n\n.header-title-section {\n position: relative;\n min-height: 45px;\n}\n\n.main-title {\n font-family: Fieldwork, Futura, sans-serif;\n font-size: 1em;\n font-weight: normal;\n color: black;\n margin: 0;\n line-height: 1.2;\n margin-bottom: 2px;\n}\n\n.energy-usage-overlay {\n position: absolute;\n top: 22px;\n left: 0;\n width: 100%;\n height: 25px;\n pointer-events: none;\n}\n\n/* Year Section - Separate section for year display */\n.header-year {\n flex: 1;\n min-width: 80px;\n height: 45px;\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.year-overlay {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n}\n\n/* Info Section */\n.header-info {\n flex: 1.9;\n min-width: 160px;\n text-align: left;\n}\n\n.subtitle {\n font-family: Fieldwork-HumThin, Futura, sans-serif;\n font-size: 1em;\n color: #000000;\n font-weight: bolder;\n line-height: 1.2;\n margin-bottom: 2px;\n}\n\n.attribution {\n font-family: Fieldwork-HumThin, Futura, sans-serif;\n font-size: 1em;\n color: #000000;\n font-weight: normal;\n line-height: 1.2;\n}\n\n/* Affiliation Section */\n.header-affiliation {\n flex: 1.7;\n text-align: center;\n min-width: 140px;\n}\n\n.affiliation-text {\n font-family: Fieldwork-HumThin, Futura, sans-serif;\n font-size: 1em;\n color: #000000;\n font-weight: normal;\n line-height: 1.2;\n}\n\n/* SVG Overlay Styles */\n.energy-svg-overlay,\n.year-svg-overlay {\n z-index: 10;\n}\n\n.energy-svg-overlay text,\n.year-svg-overlay text {\n font-family: Fieldwork, Futura, sans-serif;\n fill: black;\n}\n\n/* Legacy SVG styles for compatibility */\n.title_container svg {\n font-size: 15px;\n}\n\n.title_container .title {\n font-size: 1em;\n fill: black;\n}\n\n.title_container .title .unit {\n font-size: .9em;\n font-weight: bold;\n}\n\n.title_container .title .year {\n font-size: 3.1em;\n font-weight: bold;\n clear: left;\n letter-spacing: .05em;\n font-variant-numeric: tabular-nums;\n}\n\n/* Mobile Responsive Design */\n@media (max-width: 1024px) {\n .header-content {\n gap: 15px;\n }\n\n .main-title {\n font-size: 0.9em;\n }\n\n .header-logo {\n min-width: 50px;\n }\n\n .header-main,\n .header-year,\n .header-info,\n .header-affiliation {\n flex: 1;\n min-width: 120px;\n }\n\n .year-svg-overlay text {\n font-size: 2.8em !important;\n }\n\n .subtitle, .attribution, .affiliation-text {\n font-size: 0.9em;\n }\n}\n\n@media (max-width: 768px) {\n .title_container {\n padding: 6px 12px;\n }\n\n .header-content {\n gap: 10px;\n }\n\n .header-logo {\n min-width: 40px;\n }\n\n .header-logo img {\n max-height: 35px;\n }\n\n .main-title {\n font-size: 0.8em;\n }\n\n .header-main,\n .header-year,\n .header-info,\n .header-affiliation {\n flex: 1;\n min-width: 100px;\n }\n\n .header-year {\n height: 40px;\n }\n\n .year-svg-overlay text {\n font-size: 2.5em !important;\n }\n\n .energy-svg-overlay text {\n font-size: 0.8em !important;\n }\n\n .subtitle, .attribution, .affiliation-text {\n font-size: 0.8em;\n }\n}\n\n@media (max-width: 600px) {\n .header-content {\n flex-wrap: wrap;\n gap: 8px;\n }\n\n .header-main {\n order: 1;\n flex: 1 1 100%;\n margin-bottom: 8px;\n }\n\n .header-year {\n order: 2;\n flex: 1 1 100%;\n margin-bottom: 8px;\n justify-content: center;\n height: 50px;\n }\n\n .header-logo {\n order: 3;\n flex: 1 1 50%;\n }\n\n .header-info {\n order: 4;\n flex: 1 1 100%;\n margin-bottom: 8px;\n }\n\n .header-affiliation {\n order: 5;\n flex: 1 1 50%;\n text-align: left;\n }\n\n .main-title {\n text-align: center;\n margin-bottom: 5px;\n }\n\n .energy-usage-overlay {\n position: relative;\n top: 0;\n text-align: center;\n margin-top: 5px;\n }\n}\n\n/* Totals */\n.total.sector {\n font-size: 0.7em;\n font-weight: bold;\n}\n\n.total.waste-level {\n fill: #e49942;\n opacity: 0.4;\n}\n\n/* Visibility */\n.hidden {\n visibility: hidden;\n}\n\n/* Tooltip */\n.tooltip {\n color: #000000;\n position: absolute;\n text-align: justify;\n width: auto;\n padding: 5px;\n background: #efefef;\n border: 1px solid black;\n pointer-events: none;\n z-index: 3;\n}\n\n.fuel_value {\n text-align: center;\n vertical-align: middle;\n}\n\n/* Waste Heat Visibility Control */\n.waste-heat-hidden .flow.waste {\n display: none !important;\n}\n\n.waste-heat-hidden .total.waste-level {\n display: none !important;\n}\n\n/* Smooth transition for waste heat toggle (optional) */\n.flow.waste,\n.total.waste-level {\n transition: opacity 0.3s ease;\n}","/* US Energy Sankey - Controls Styles */\n\n/* Range Slider */\n.range-slider {\n width: 100%;\n margin-top: 5px;\n position: relative;\n overflow: visible;\n padding-top: 40px;\n}\n\n.range-slider__range {\n -webkit-appearance: none;\n width: 100%;\n border-radius: 5px;\n outline: none;\n padding: 0;\n margin: 0;\n}\n\n.range-slider__range:first-child {\n background: #d7dcdf;\n}\n\n.range-slider__range::-webkit-slider-thumb {\n -webkit-appearance: none;\n appearance: none;\n width: 11px;\n height: 11px;\n border-radius: 50%;\n background: #fff;\n box-shadow: 0 0 4px 0 rgba(0, 0, 0, 1);\n cursor: pointer;\n transition: background 0.15s ease-in-out;\n}\n\n.range-slider__range::-moz-range-thumb {\n width: 11px;\n height: 11px;\n border: 0;\n border-radius: 50%;\n background: #fff;\n box-shadow: 0 0 4px 0 rgba(0, 0, 0, 1);\n cursor: pointer;\n transition: background 0.15s ease-in-out;\n}\n\n/* Dynamic Year Display */\n#dynamicYear {\n color: black;\n position: absolute;\n height: 25px;\n width: 50px;\n text-align: center;\n border: 1px solid black;\n border-radius: 3px;\n display: block;\n font-size: 16px;\n top: 40%;\n /*bottom: 100%;*/\n background: white;\n padding: 3px 5px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\n}\n\n/* Add downward arrow pointing to slider */\n#dynamicYear::after {\n content: '';\n position: absolute;\n top: 100%;\n left: 50%;\n margin-left: -4px;\n width: 0;\n height: 0;\n border-left: 4px solid transparent;\n border-right: 4px solid transparent;\n border-top: 6px solid black;\n}\n\n/* Play/Pause Button */\n#play-button {\n border-radius: 0;\n display: block;\n height: 0;\n}\n\n#play-button:hover {\n background: transparent !important;\n}\n\n#play-button.playbutton {\n outline: 0;\n background: transparent;\n border-color: transparent transparent transparent #202020;\n transition: 100ms all ease;\n cursor: pointer;\n border-style: solid;\n border-width: 13px 0 13px 20px;\n}\n\n#play-button.playpaused {\n outline: 0;\n background: transparent;\n height: 26px;\n border-color: transparent transparent transparent #202020;\n transition: 100ms all ease;\n cursor: pointer;\n border-style: double;\n border-width: 0px 0 0px 20px;\n}\n\n#play-button.playbutton:hover {\n border-color: transparent transparent transparent #404040;\n}\n\n/* Waste Heat Toggle Switch */\n.switch_box {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n min-width: 200px;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-flex: 1;\n -ms-flex: 1;\n flex: 1;\n}\n\n.box_1 {\n background: #ffffff;\n}\n\ninput[type=\"checkbox\"].switch_1 {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n width: 3.5em;\n height: 1.5em;\n background: black;\n border-radius: 3em;\n position: relative;\n cursor: pointer;\n outline: none;\n -webkit-transition: all .2s ease-in-out;\n transition: all .2s ease-in-out;\n}\n\ninput[type=\"checkbox\"].switch_1:checked {\n background: black;\n}\n\ninput[type=\"checkbox\"].switch_1:after {\n position: absolute;\n content: \"\";\n width: 1.5em;\n height: 1.5em;\n border-radius: 50%;\n background: #fff;\n -webkit-box-shadow: 0 0 .25em rgba(0, 0, 0, .3);\n box-shadow: 0 0 .25em rgba(0, 0, 0, .3);\n -webkit-transform: scale(.7);\n transform: scale(.7);\n left: 0;\n -webkit-transition: all .2s ease-in-out;\n transition: all .2s ease-in-out;\n}\n\ninput[type=\"checkbox\"].switch_1:checked:after {\n left: calc(100% - 1.5em);\n}\n\n/* Milestone Tick Markers */\n#testTick .tick text {\n cursor: pointer;\n}\n\n#testTick .tick text:hover {\n color: grey;\n transition: color 250ms;\n}\n"]}