hive-react-kit 0.10.2 → 0.10.4

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.
package/dist/build.css CHANGED
@@ -45,6 +45,8 @@
45
45
  --color-emerald-500: oklch(69.6% 0.17 162.48);
46
46
  --color-emerald-600: oklch(59.6% 0.145 163.225);
47
47
  --color-emerald-900: oklch(37.8% 0.077 168.94);
48
+ --color-teal-500: oklch(70.4% 0.14 182.503);
49
+ --color-teal-600: oklch(60% 0.118 184.704);
48
50
  --color-sky-300: oklch(82.8% 0.111 230.318);
49
51
  --color-sky-400: oklch(74.6% 0.16 232.661);
50
52
  --color-sky-500: oklch(68.5% 0.169 237.323);
@@ -119,6 +121,7 @@
119
121
  --text-5xl--line-height: 1;
120
122
  --text-8xl: 6rem;
121
123
  --text-8xl--line-height: 1;
124
+ --font-weight-normal: 400;
122
125
  --font-weight-medium: 500;
123
126
  --font-weight-semibold: 600;
124
127
  --font-weight-bold: 700;
@@ -573,6 +576,9 @@
573
576
  .mt-4 {
574
577
  margin-top: calc(var(--spacing) * 4);
575
578
  }
579
+ .mt-5 {
580
+ margin-top: calc(var(--spacing) * 5);
581
+ }
576
582
  .mt-6 {
577
583
  margin-top: calc(var(--spacing) * 6);
578
584
  }
@@ -1024,6 +1030,9 @@
1024
1030
  .max-w-7xl {
1025
1031
  max-width: var(--container-7xl);
1026
1032
  }
1033
+ .max-w-\[220px\] {
1034
+ max-width: 220px;
1035
+ }
1027
1036
  .max-w-\[250px\] {
1028
1037
  max-width: 250px;
1029
1038
  }
@@ -1165,6 +1174,9 @@
1165
1174
  .flex-wrap {
1166
1175
  flex-wrap: wrap;
1167
1176
  }
1177
+ .items-baseline {
1178
+ align-items: baseline;
1179
+ }
1168
1180
  .items-center {
1169
1181
  align-items: center;
1170
1182
  }
@@ -1453,6 +1465,9 @@
1453
1465
  .border-\[\#e31337\] {
1454
1466
  border-color: #e31337;
1455
1467
  }
1468
+ .border-\[rgba\(255\,255\,255\,0\.08\)\] {
1469
+ border-color: rgba(255,255,255,0.08);
1470
+ }
1456
1471
  .border-amber-500\/30 {
1457
1472
  border-color: color-mix(in srgb, oklch(76.9% 0.188 70.08) 30%, transparent);
1458
1473
  @supports (color: color-mix(in lab, red, red)) {
@@ -1564,6 +1579,12 @@
1564
1579
  border-color: color-mix(in oklab, var(--color-red-500) 20%, transparent);
1565
1580
  }
1566
1581
  }
1582
+ .border-red-500\/40 {
1583
+ border-color: color-mix(in srgb, oklch(63.7% 0.237 25.331) 40%, transparent);
1584
+ @supports (color: color-mix(in lab, red, red)) {
1585
+ border-color: color-mix(in oklab, var(--color-red-500) 40%, transparent);
1586
+ }
1587
+ }
1567
1588
  .border-red-700 {
1568
1589
  border-color: var(--color-red-700);
1569
1590
  }
@@ -1606,6 +1627,9 @@
1606
1627
  .bg-\[\#0c1014\]\/95 {
1607
1628
  background-color: color-mix(in oklab, #0c1014 95%, transparent);
1608
1629
  }
1630
+ .bg-\[\#0d1118\] {
1631
+ background-color: #0d1118;
1632
+ }
1609
1633
  .bg-\[\#0f1216\] {
1610
1634
  background-color: #0f1216;
1611
1635
  }
@@ -1666,6 +1690,9 @@
1666
1690
  .bg-\[\#e31337\]\/15 {
1667
1691
  background-color: color-mix(in oklab, #e31337 15%, transparent);
1668
1692
  }
1693
+ .bg-\[rgba\(255\,255\,255\,0\.04\)\] {
1694
+ background-color: rgba(255,255,255,0.04);
1695
+ }
1669
1696
  .bg-amber-500\/10 {
1670
1697
  background-color: color-mix(in srgb, oklch(76.9% 0.188 70.08) 10%, transparent);
1671
1698
  @supports (color: color-mix(in lab, red, red)) {
@@ -1807,12 +1834,21 @@
1807
1834
  .bg-emerald-400 {
1808
1835
  background-color: var(--color-emerald-400);
1809
1836
  }
1837
+ .bg-emerald-500 {
1838
+ background-color: var(--color-emerald-500);
1839
+ }
1810
1840
  .bg-emerald-500\/15 {
1811
1841
  background-color: color-mix(in srgb, oklch(69.6% 0.17 162.48) 15%, transparent);
1812
1842
  @supports (color: color-mix(in lab, red, red)) {
1813
1843
  background-color: color-mix(in oklab, var(--color-emerald-500) 15%, transparent);
1814
1844
  }
1815
1845
  }
1846
+ .bg-emerald-500\/90 {
1847
+ background-color: color-mix(in srgb, oklch(69.6% 0.17 162.48) 90%, transparent);
1848
+ @supports (color: color-mix(in lab, red, red)) {
1849
+ background-color: color-mix(in oklab, var(--color-emerald-500) 90%, transparent);
1850
+ }
1851
+ }
1816
1852
  .bg-emerald-600 {
1817
1853
  background-color: var(--color-emerald-600);
1818
1854
  }
@@ -1867,6 +1903,12 @@
1867
1903
  .bg-gray-800 {
1868
1904
  background-color: var(--color-gray-800);
1869
1905
  }
1906
+ .bg-gray-800\/40 {
1907
+ background-color: color-mix(in srgb, oklch(27.8% 0.033 256.848) 40%, transparent);
1908
+ @supports (color: color-mix(in lab, red, red)) {
1909
+ background-color: color-mix(in oklab, var(--color-gray-800) 40%, transparent);
1910
+ }
1911
+ }
1870
1912
  .bg-gray-800\/50 {
1871
1913
  background-color: color-mix(in srgb, oklch(27.8% 0.033 256.848) 50%, transparent);
1872
1914
  @supports (color: color-mix(in lab, red, red)) {
@@ -1957,6 +1999,9 @@
1957
1999
  .bg-indigo-600 {
1958
2000
  background-color: var(--color-indigo-600);
1959
2001
  }
2002
+ .bg-orange-400 {
2003
+ background-color: var(--color-orange-400);
2004
+ }
1960
2005
  .bg-orange-500 {
1961
2006
  background-color: var(--color-orange-500);
1962
2007
  }
@@ -2002,10 +2047,10 @@
2002
2047
  background-color: color-mix(in oklab, var(--color-red-500) 10%, transparent);
2003
2048
  }
2004
2049
  }
2005
- .bg-red-500\/15 {
2006
- background-color: color-mix(in srgb, oklch(63.7% 0.237 25.331) 15%, transparent);
2050
+ .bg-red-500\/90 {
2051
+ background-color: color-mix(in srgb, oklch(63.7% 0.237 25.331) 90%, transparent);
2007
2052
  @supports (color: color-mix(in lab, red, red)) {
2008
- background-color: color-mix(in oklab, var(--color-red-500) 15%, transparent);
2053
+ background-color: color-mix(in oklab, var(--color-red-500) 90%, transparent);
2009
2054
  }
2010
2055
  }
2011
2056
  .bg-red-600 {
@@ -2038,6 +2083,9 @@
2038
2083
  .bg-slate-950 {
2039
2084
  background-color: var(--color-slate-950);
2040
2085
  }
2086
+ .bg-teal-600 {
2087
+ background-color: var(--color-teal-600);
2088
+ }
2041
2089
  .bg-transparent {
2042
2090
  background-color: transparent;
2043
2091
  }
@@ -2451,6 +2499,10 @@
2451
2499
  --tw-font-weight: var(--font-weight-medium);
2452
2500
  font-weight: var(--font-weight-medium);
2453
2501
  }
2502
+ .font-normal {
2503
+ --tw-font-weight: var(--font-weight-normal);
2504
+ font-weight: var(--font-weight-normal);
2505
+ }
2454
2506
  .font-semibold {
2455
2507
  --tw-font-weight: var(--font-weight-semibold);
2456
2508
  font-weight: var(--font-weight-semibold);
@@ -2497,6 +2549,9 @@
2497
2549
  .text-\[\#22c55e\] {
2498
2550
  color: #22c55e;
2499
2551
  }
2552
+ .text-\[\#cfd3da\] {
2553
+ color: #cfd3da;
2554
+ }
2500
2555
  .text-\[\#e7e7f1\] {
2501
2556
  color: #e7e7f1;
2502
2557
  }
@@ -2967,6 +3022,17 @@
2967
3022
  border-width: 0px;
2968
3023
  }
2969
3024
  }
3025
+ .last\:border-b-0 {
3026
+ &:last-child {
3027
+ border-bottom-style: var(--tw-border-style);
3028
+ border-bottom-width: 0px;
3029
+ }
3030
+ }
3031
+ .focus-within\:border-teal-500 {
3032
+ &:focus-within {
3033
+ border-color: var(--color-teal-500);
3034
+ }
3035
+ }
2970
3036
  .hover\:-translate-y-1 {
2971
3037
  &:hover {
2972
3038
  @media (hover: hover) {
@@ -3256,6 +3322,13 @@
3256
3322
  }
3257
3323
  }
3258
3324
  }
3325
+ .hover\:bg-teal-500 {
3326
+ &:hover {
3327
+ @media (hover: hover) {
3328
+ background-color: var(--color-teal-500);
3329
+ }
3330
+ }
3331
+ }
3259
3332
  .hover\:bg-white\/20 {
3260
3333
  &:hover {
3261
3334
  @media (hover: hover) {
@@ -3471,6 +3544,11 @@
3471
3544
  border-color: var(--color-blue-500);
3472
3545
  }
3473
3546
  }
3547
+ .focus\:border-teal-500 {
3548
+ &:focus {
3549
+ border-color: var(--color-teal-500);
3550
+ }
3551
+ }
3474
3552
  .focus\:text-blue-400 {
3475
3553
  &:focus {
3476
3554
  color: var(--color-blue-400);
@@ -3623,6 +3701,11 @@
3623
3701
  margin-top: calc(var(--spacing) * 3);
3624
3702
  }
3625
3703
  }
3704
+ .sm\:mt-5 {
3705
+ @media (width >= 40rem) {
3706
+ margin-top: calc(var(--spacing) * 5);
3707
+ }
3708
+ }
3626
3709
  .sm\:mr-3 {
3627
3710
  @media (width >= 40rem) {
3628
3711
  margin-right: calc(var(--spacing) * 3);
@@ -3648,6 +3731,11 @@
3648
3731
  margin-bottom: calc(var(--spacing) * 3);
3649
3732
  }
3650
3733
  }
3734
+ .sm\:mb-5 {
3735
+ @media (width >= 40rem) {
3736
+ margin-bottom: calc(var(--spacing) * 5);
3737
+ }
3738
+ }
3651
3739
  .sm\:ml-4 {
3652
3740
  @media (width >= 40rem) {
3653
3741
  margin-left: calc(var(--spacing) * 4);
@@ -3829,6 +3917,11 @@
3829
3917
  width: calc(var(--spacing) * 32);
3830
3918
  }
3831
3919
  }
3920
+ .sm\:w-40 {
3921
+ @media (width >= 40rem) {
3922
+ width: calc(var(--spacing) * 40);
3923
+ }
3924
+ }
3832
3925
  .sm\:w-48 {
3833
3926
  @media (width >= 40rem) {
3834
3927
  width: calc(var(--spacing) * 48);
@@ -3859,6 +3952,11 @@
3859
3952
  flex: 0 auto;
3860
3953
  }
3861
3954
  }
3955
+ .sm\:flex-none {
3956
+ @media (width >= 40rem) {
3957
+ flex: none;
3958
+ }
3959
+ }
3862
3960
  .sm\:grid-cols-2 {
3863
3961
  @media (width >= 40rem) {
3864
3962
  grid-template-columns: repeat(2, minmax(0, 1fr));
@@ -3904,6 +4002,11 @@
3904
4002
  justify-content: flex-end;
3905
4003
  }
3906
4004
  }
4005
+ .sm\:gap-2 {
4006
+ @media (width >= 40rem) {
4007
+ gap: calc(var(--spacing) * 2);
4008
+ }
4009
+ }
3907
4010
  .sm\:gap-3 {
3908
4011
  @media (width >= 40rem) {
3909
4012
  gap: calc(var(--spacing) * 3);
@@ -4001,6 +4104,16 @@
4001
4104
  padding: calc(var(--spacing) * 2);
4002
4105
  }
4003
4106
  }
4107
+ .sm\:p-3 {
4108
+ @media (width >= 40rem) {
4109
+ padding: calc(var(--spacing) * 3);
4110
+ }
4111
+ }
4112
+ .sm\:p-3\.5 {
4113
+ @media (width >= 40rem) {
4114
+ padding: calc(var(--spacing) * 3.5);
4115
+ }
4116
+ }
4004
4117
  .sm\:p-4 {
4005
4118
  @media (width >= 40rem) {
4006
4119
  padding: calc(var(--spacing) * 4);
@@ -4021,6 +4134,16 @@
4021
4134
  padding-inline: calc(var(--spacing) * 0);
4022
4135
  }
4023
4136
  }
4137
+ .sm\:px-2\.5 {
4138
+ @media (width >= 40rem) {
4139
+ padding-inline: calc(var(--spacing) * 2.5);
4140
+ }
4141
+ }
4142
+ .sm\:px-3 {
4143
+ @media (width >= 40rem) {
4144
+ padding-inline: calc(var(--spacing) * 3);
4145
+ }
4146
+ }
4024
4147
  .sm\:px-4 {
4025
4148
  @media (width >= 40rem) {
4026
4149
  padding-inline: calc(var(--spacing) * 4);
@@ -4139,6 +4262,11 @@
4139
4262
  display: block;
4140
4263
  }
4141
4264
  }
4265
+ .md\:flex {
4266
+ @media (width >= 48rem) {
4267
+ display: flex;
4268
+ }
4269
+ }
4142
4270
  .md\:grid {
4143
4271
  @media (width >= 48rem) {
4144
4272
  display: grid;
@@ -0,0 +1,26 @@
1
+ import React from "react";
2
+ export interface DelegationsProps {
3
+ /** Profile being viewed. */
4
+ username: string;
5
+ /** Currently logged-in user. When equal to `username`, outgoing rows show
6
+ * Update / Delete actions for RC delegations. */
7
+ currentUsername?: string;
8
+ /** Hide the panel entirely until the parent decides to mount it. */
9
+ className?: string;
10
+ /** Update or create an RC delegation: `max_rc` is the new value in raw RC
11
+ * (e.g. 51000000000 for 51 b RC). Return `false` if the operation was
12
+ * cancelled (e.g. keychain denied) — the row stays put. */
13
+ onUpdateRcDelegation?: (delegatee: string, maxRc: string) => void | boolean | Promise<void | boolean>;
14
+ /** Remove an RC delegation (broadcasts max_rc=0). Same return semantics. */
15
+ onDeleteRcDelegation?: (delegatee: string) => void | boolean | Promise<void | boolean>;
16
+ /** Create a new HP delegation. `hp` is HP as a numeric string (e.g. "1000").
17
+ * When provided, a "Delegate HP" button appears on the HP tab for the
18
+ * profile owner. Requires the active key — see consumer wiring. */
19
+ onCreateHpDelegation?: (delegatee: string, hp: string) => void | boolean | Promise<void | boolean>;
20
+ /** Create a new RC delegation. `maxRc` is the raw RC integer string (e.g.
21
+ * "50000000000" for 50 b RC). When provided, a "Delegate RC" button
22
+ * appears on the RC tab for the profile owner. */
23
+ onCreateRcDelegation?: (delegatee: string, maxRc: string) => void | boolean | Promise<void | boolean>;
24
+ }
25
+ export declare const Delegations: React.FC<DelegationsProps>;
26
+ export default Delegations;
@@ -1,7 +1,18 @@
1
1
  import React from "react";
2
+ import { type DelegationsProps } from "./Delegations";
2
3
  interface WalletProps {
3
4
  username?: string;
4
5
  className?: string;
6
+ /** Logged-in user — when equal to `username`, RC Update / Delete buttons
7
+ * and Delegate HP/RC buttons are exposed (and only fire when the matching
8
+ * callbacks below are wired). */
9
+ currentUsername?: string;
10
+ onUpdateRcDelegation?: DelegationsProps["onUpdateRcDelegation"];
11
+ onDeleteRcDelegation?: DelegationsProps["onDeleteRcDelegation"];
12
+ onCreateHpDelegation?: DelegationsProps["onCreateHpDelegation"];
13
+ onCreateRcDelegation?: DelegationsProps["onCreateRcDelegation"];
14
+ /** Hide the Delegated HIVE / RC panel inside the wallet view. */
15
+ hideDelegations?: boolean;
5
16
  }
6
17
  export declare const Wallet: React.FC<WalletProps>;
7
18
  export default Wallet;
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Inline WorldMappin pin renderer for post bodies.
3
+ *
4
+ * Posts on Hive embed a geo-pin via the comment marker
5
+ * `[//]:# (!worldmappin 3.16374 lat 101.68892 long I was here d3scr)`
6
+ * which `extractWorldMappinPins` parses into { lat, lng, description }. This
7
+ * component takes that data and renders a Leaflet map (OSM raster tiles)
8
+ * with a single pin at the location — visually matched to hivesuite's full
9
+ * Map screen so the standalone and inline experiences feel like the same
10
+ * surface (same pin SVG, dark canvas, themed attribution + zoom-bar).
11
+ *
12
+ * Why a `DivIcon` for the marker: Leaflet's default Marker pulls PNGs from
13
+ * its CSS, which Vite's bundler doesn't auto-resolve. Building the icon
14
+ * from inline SVG keeps the kit consumer-agnostic — no asset shim needed.
15
+ */
16
+ import React from "react";
17
+ import "leaflet/dist/leaflet.css";
18
+ export interface WorldMappinMapProps {
19
+ lat: number;
20
+ lng: number;
21
+ description?: string;
22
+ /** CSS height — defaults to 320px which fits comfortably between body
23
+ * paragraphs and footer on detail pages. */
24
+ height?: number | string;
25
+ /** Initial zoom — 12 is "city-block" detail. Bump to 15+ for a pinpoint. */
26
+ zoom?: number;
27
+ className?: string;
28
+ }
29
+ export declare const WorldMappinMap: React.FC<WorldMappinMapProps>;
30
+ export default WorldMappinMap;
@@ -29,8 +29,11 @@ export interface SnapsFeedCardProps {
29
29
  onSharePost?: (author: string, permlink: string) => void;
30
30
  onCommentClick?: (author: string, permlink: string) => void;
31
31
  /** Click on just the message-circle icon — typical use: open an
32
- * inline reply composer. Mirrors hSnaps PostCard. */
33
- onClickCommentIcon?: (author: string, permlink: string) => void;
32
+ * inline reply composer. Mirrors hSnaps PostCard. The optional
33
+ * `parentTags` argument carries the parent post's
34
+ * `json_metadata.tags` so the composer can pre-fill (and lock) the
35
+ * reply's tag list with the same tags as the parent. */
36
+ onClickCommentIcon?: (author: string, permlink: string, parentTags?: string[]) => void;
34
37
  /** Click on just the count number next to the comment icon — typical
35
38
  * use: navigate to the post detail / comments view. Mirrors hSnaps. */
36
39
  onClickCommentCount?: (author: string, permlink: string) => void;
@@ -49,7 +49,10 @@ export interface SnapsFeedViewProps {
49
49
  onSharePost?: (author: string, permlink: string) => void;
50
50
  onCommentClick?: (author: string, permlink: string) => void;
51
51
  /** Comment-icon click (per card) — typical use: open inline composer. */
52
- onClickCommentIcon?: (author: string, permlink: string) => void;
52
+ /** Forwarded to every <SnapsFeedCard/>. The optional `parentTags`
53
+ * argument carries `json_metadata.tags` of the snap so the
54
+ * consumer's reply composer can pre-fill them. */
55
+ onClickCommentIcon?: (author: string, permlink: string, parentTags?: string[]) => void;
53
56
  /** Comment-count click (per card) — typical use: open post detail. */
54
57
  onClickCommentCount?: (author: string, permlink: string) => void;
55
58
  onReportPost?: (author: string, permlink: string) => void;
@@ -3,6 +3,8 @@ export { default as VideoDetail } from './VideoDetail';
3
3
  export { default as VideoFeed } from './VideoFeed';
4
4
  export { default as VideoInfo } from './VideoInfo';
5
5
  export { default as Wallet } from './Wallet';
6
+ export { default as Delegations, type DelegationsProps } from './Delegations';
7
+ export { default as WorldMappinMap, type WorldMappinMapProps } from './WorldMappinMap';
6
8
  export { default as PostFeedList } from './PostFeedList';
7
9
  export { default as ProposalsList } from './ProposalsList';
8
10
  export { default as FollowersList } from './FollowersList';
@@ -40,6 +40,21 @@ export interface UserDetailProfileProps {
40
40
  onReblog?: (author: string, permlink: string) => void;
41
41
  onTip?: (author: string, permlink: string) => void;
42
42
  onReportPost?: (author: string, permlink: string, reason: string) => void | Promise<void>;
43
+ /** Wallet tab — RC delegation update. `maxRc` is a raw RC integer string
44
+ * (e.g. "51000000000" for 51 b RC). Return `false` to indicate cancellation
45
+ * (keychain denied / user closed the prompt) — the row stays in edit mode. */
46
+ onUpdateRcDelegation?: (delegatee: string, maxRc: string) => void | boolean | Promise<void | boolean>;
47
+ /** Wallet tab — RC delegation removal (broadcasts max_rc=0 internally). */
48
+ onDeleteRcDelegation?: (delegatee: string) => void | boolean | Promise<void | boolean>;
49
+ /** Wallet tab — create a new HP delegation. `hp` is HP as a numeric string
50
+ * (e.g. "1000"). Wiring this prop exposes the "Delegate HP" button on the
51
+ * HP tab; consumers should only pass it for keychain / hiveauth auth
52
+ * methods (active key required), never for plain-posting-key sessions. */
53
+ onCreateHpDelegation?: (delegatee: string, hp: string) => void | boolean | Promise<void | boolean>;
54
+ /** Wallet tab — create a new RC delegation. `maxRc` is a raw RC integer
55
+ * string (e.g. "50000000000"). Wiring this prop exposes the "Delegate RC"
56
+ * button on the RC tab. Posting auth is sufficient. */
57
+ onCreateRcDelegation?: (delegatee: string, maxRc: string) => void | boolean | Promise<void | boolean>;
43
58
  /**
44
59
  * Called when the user submits a poll vote from the inline voting UI on the
45
60
  * polls tab. `choiceNums` is an array of 1-based choice numbers selected
@@ -0,0 +1 @@
1
+ .leaflet-pane,.leaflet-tile,.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-tile-container,.leaflet-pane>svg,.leaflet-pane>canvas,.leaflet-zoom-box,.leaflet-image-layer,.leaflet-layer{position:absolute;left:0;top:0}.leaflet-container{overflow:hidden}.leaflet-tile,.leaflet-marker-icon,.leaflet-marker-shadow{-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-user-drag:none}.leaflet-tile::selection{background:transparent}.leaflet-safari .leaflet-tile{image-rendering:-webkit-optimize-contrast}.leaflet-safari .leaflet-tile-container{width:1600px;height:1600px;-webkit-transform-origin:0 0}.leaflet-marker-icon,.leaflet-marker-shadow{display:block}.leaflet-container .leaflet-overlay-pane svg{max-width:none!important;max-height:none!important}.leaflet-container .leaflet-marker-pane img,.leaflet-container .leaflet-shadow-pane img,.leaflet-container .leaflet-tile-pane img,.leaflet-container img.leaflet-image-layer,.leaflet-container .leaflet-tile{max-width:none!important;max-height:none!important;width:auto;padding:0}.leaflet-container img.leaflet-tile{mix-blend-mode:plus-lighter}.leaflet-container.leaflet-touch-zoom{-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y}.leaflet-container.leaflet-touch-drag{-ms-touch-action:pinch-zoom;touch-action:none;touch-action:pinch-zoom}.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom{-ms-touch-action:none;touch-action:none}.leaflet-container{-webkit-tap-highlight-color:transparent}.leaflet-container a{-webkit-tap-highlight-color:rgba(51,181,229,.4)}.leaflet-tile{filter:inherit;visibility:hidden}.leaflet-tile-loaded{visibility:inherit}.leaflet-zoom-box{width:0;height:0;-moz-box-sizing:border-box;box-sizing:border-box;z-index:800}.leaflet-overlay-pane svg{-moz-user-select:none}.leaflet-pane{z-index:400}.leaflet-tile-pane{z-index:200}.leaflet-overlay-pane{z-index:400}.leaflet-shadow-pane{z-index:500}.leaflet-marker-pane{z-index:600}.leaflet-tooltip-pane{z-index:650}.leaflet-popup-pane{z-index:700}.leaflet-map-pane canvas{z-index:100}.leaflet-map-pane svg{z-index:200}.leaflet-vml-shape{width:1px;height:1px}.lvml{behavior:url(#default#VML);display:inline-block;position:absolute}.leaflet-control{position:relative;z-index:800;pointer-events:visiblePainted;pointer-events:auto}.leaflet-top,.leaflet-bottom{position:absolute;z-index:1000;pointer-events:none}.leaflet-top{top:0}.leaflet-right{right:0}.leaflet-bottom{bottom:0}.leaflet-left{left:0}.leaflet-control{float:left;clear:both}.leaflet-right .leaflet-control{float:right}.leaflet-top .leaflet-control{margin-top:10px}.leaflet-bottom .leaflet-control{margin-bottom:10px}.leaflet-left .leaflet-control{margin-left:10px}.leaflet-right .leaflet-control{margin-right:10px}.leaflet-fade-anim .leaflet-popup{opacity:0;-webkit-transition:opacity .2s linear;-moz-transition:opacity .2s linear;transition:opacity .2s linear}.leaflet-fade-anim .leaflet-map-pane .leaflet-popup{opacity:1}.leaflet-zoom-animated{-webkit-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0}svg.leaflet-zoom-animated{will-change:transform}.leaflet-zoom-anim .leaflet-zoom-animated{-webkit-transition:-webkit-transform .25s cubic-bezier(0,0,.25,1);-moz-transition:-moz-transform .25s cubic-bezier(0,0,.25,1);transition:transform .25s cubic-bezier(0,0,.25,1)}.leaflet-zoom-anim .leaflet-tile,.leaflet-pan-anim .leaflet-tile{-webkit-transition:none;-moz-transition:none;transition:none}.leaflet-zoom-anim .leaflet-zoom-hide{visibility:hidden}.leaflet-interactive{cursor:pointer}.leaflet-grab{cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.leaflet-crosshair,.leaflet-crosshair .leaflet-interactive{cursor:crosshair}.leaflet-popup-pane,.leaflet-control{cursor:auto}.leaflet-dragging .leaflet-grab,.leaflet-dragging .leaflet-grab .leaflet-interactive,.leaflet-dragging .leaflet-marker-draggable{cursor:move;cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-image-layer,.leaflet-pane>svg path,.leaflet-tile-container{pointer-events:none}.leaflet-marker-icon.leaflet-interactive,.leaflet-image-layer.leaflet-interactive,.leaflet-pane>svg path.leaflet-interactive,svg.leaflet-image-layer.leaflet-interactive path{pointer-events:visiblePainted;pointer-events:auto}.leaflet-container{background:#ddd;outline-offset:1px}.leaflet-container a{color:#0078a8}.leaflet-zoom-box{border:2px dotted #38f;background:#ffffff80}.leaflet-container{font-family:Helvetica Neue,Arial,Helvetica,sans-serif;font-size:12px;font-size:.75rem;line-height:1.5}.leaflet-bar{box-shadow:0 1px 5px #000000a6;border-radius:4px}.leaflet-bar a{background-color:#fff;border-bottom:1px solid #ccc;width:26px;height:26px;line-height:26px;display:block;text-align:center;text-decoration:none;color:#000}.leaflet-bar a,.leaflet-control-layers-toggle{background-position:50% 50%;background-repeat:no-repeat;display:block}.leaflet-bar a:hover,.leaflet-bar a:focus{background-color:#f4f4f4}.leaflet-bar a:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.leaflet-bar a:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-bottom:none}.leaflet-bar a.leaflet-disabled{cursor:default;background-color:#f4f4f4;color:#bbb}.leaflet-touch .leaflet-bar a{width:30px;height:30px;line-height:30px}.leaflet-touch .leaflet-bar a:first-child{border-top-left-radius:2px;border-top-right-radius:2px}.leaflet-touch .leaflet-bar a:last-child{border-bottom-left-radius:2px;border-bottom-right-radius:2px}.leaflet-control-zoom-in,.leaflet-control-zoom-out{font:700 18px Lucida Console,Monaco,monospace;text-indent:1px}.leaflet-touch .leaflet-control-zoom-in,.leaflet-touch .leaflet-control-zoom-out{font-size:22px}.leaflet-control-layers{box-shadow:0 1px 5px #0006;background:#fff;border-radius:5px}.leaflet-control-layers-toggle{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAQAAAADQ4RFAAACf0lEQVR4AY1UM3gkARTePdvdoTxXKc+qTl3aU5U6b2Kbkz3Gtq3Zw6ziLGNPzrYx7946Tr6/ee/XeCQ4D3ykPtL5tHno4n0d/h3+xfuWHGLX81cn7r0iTNzjr7LrlxCqPtkbTQEHeqOrTy4Yyt3VCi/IOB0v7rVC7q45Q3Gr5K6jt+3Gl5nCoDD4MtO+j96Wu8atmhGqcNGHObuf8OM/x3AMx38+4Z2sPqzCxRFK2aF2e5Jol56XTLyggAMTL56XOMoS1W4pOyjUcGGQdZxU6qRh7B9Zp+PfpOFlqt0zyDZckPi1ttmIp03jX8gyJ8a/PG2yutpS/Vol7peZIbZcKBAEEheEIAgFbDkz5H6Zrkm2hVWGiXKiF4Ycw0RWKdtC16Q7qe3X4iOMxruonzegJzWaXFrU9utOSsLUmrc0YjeWYjCW4PDMADElpJSSQ0vQvA1Tm6/JlKnqFs1EGyZiFCqnRZTEJJJiKRYzVYzJck2Rm6P4iH+cmSY0YzimYa8l0EtTODFWhcMIMVqdsI2uiTvKmTisIDHJ3od5GILVhBCarCfVRmo4uTjkhrhzkiBV7SsaqS+TzrzM1qpGGUFt28pIySQHR6h7F6KSwGWm97ay+Z+ZqMcEjEWebE7wxCSQwpkhJqoZA5ivCdZDjJepuJ9IQjGGUmuXJdBFUygxVqVsxFsLMbDe8ZbDYVCGKxs+W080max1hFCarCfV+C1KATwcnvE9gRRuMP2prdbWGowm1KB1y+zwMMENkM755cJ2yPDtqhTI6ED1M/82yIDtC/4j4BijjeObflpO9I9MwXTCsSX8jWAFeHr05WoLTJ5G8IQVS/7vwR6ohirYM7f6HzYpogfS3R2OAAAAAElFTkSuQmCC);width:36px;height:36px}.leaflet-retina .leaflet-control-layers-toggle{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAQAAABvcdNgAAAEsklEQVR4AWL4TydIhpZK1kpWOlg0w3ZXP6D2soBtG42jeI6ZmQTHzAxiTbSJsYLjO9HhP+WOmcuhciVnmHVQcJnp7DFvScowZorad/+V/fVzMdMT2g9Cv9guXGv/7pYOrXh2U+RRR3dSd9JRx6bIFc/ekqHI29JC6pJ5ZEh1yWkhkbcFeSjxgx3L2m1cb1C7bceyxA+CNjT/Ifff+/kDk2u/w/33/IeCMOSaWZ4glosqT3DNnNZQ7Cs58/3Ce5HL78iZH/vKVIaYlqzfdLu8Vi7dnvUbEza5Idt36tquZFldl6N5Z/POLof0XLK61mZCmJSWjVF9tEjUluu74IUXvgttuVIHE7YxSkaYhJZam7yiM9Pv82JYfl9nptxZaxMJE4YSPty+vF0+Y2up9d3wwijfjZbabqm/3bZ9ecKHsiGmRflnn1MW4pjHf9oLufyn2z3y1D6n8g8TZhxyzipLNPnAUpsOiuWimg52psrTZYnOWYNDTMuWBWa0tJb4rgq1UvmutpaYEbZlwU3CLJm/ayYjHW5/h7xWLn9Hh1vepDkyf7dE7MtT5LR4e7yYpHrkhOUpEfssBLq2pPhAqoSWKUkk7EDqkmK6RrCEzqDjhNDWNE+XSMvkJRDWlZTmCW0l0PHQGRZY5t1L83kT0Y3l2SItk5JAWHl2dCOBm+fPu3fo5/3v61RMCO9Jx2EEYYhb0rmNQMX/vm7gqOEJLcXTGw3CAuRNeyaPWwjR8PRqKQ1PDA/dpv+on9Shox52WFnx0KY8onHayrJzm87i5h9xGw/tfkev0jGsQizqezUKjk12hBMKJ4kbCqGPVNXudyyrShovGw5CgxsRICxF6aRmSjlBnHRzg7Gx8fKqEubI2rahQYdR1YgDIRQO7JvQyD52hoIQx0mxa0ODtW2Iozn1le2iIRdzwWewedyZzewidueOGqlsn1MvcnQpuVwLGG3/IR1hIKxCjelIDZ8ldqWz25jWAsnldEnK0Zxro19TGVb2ffIZEsIO89EIEDvKMPrzmBOQcKQ+rroye6NgRRxqR4U8EAkz0CL6uSGOm6KQCdWjvjRiSP1BPalCRS5iQYiEIvxuBMJEWgzSoHADcVMuN7IuqqTeyUPq22qFimFtxDyBBJEwNyt6TM88blFHao/6tWWhuuOM4SAK4EI4QmFHA+SEyWlp4EQoJ13cYGzMu7yszEIBOm2rVmHUNqwAIQabISNMRstmdhNWcFLsSm+0tjJH1MdRxO5Nx0WDMhCtgD6OKgZeljJqJKc9po8juskR9XN0Y1lZ3mWjLR9JCO1jRDMd0fpYC2VnvjBSEFg7wBENc0R9HFlb0xvF1+TBEpF68d+DHR6IOWVv2BECtxo46hOFUBd/APU57WIoEwJhIi2CdpyZX0m93BZicktMj1AS9dClteUFAUNUIEygRZCtik5zSxI9MubTBH1GOiHsiLJ3OCoSZkILa9PxiN0EbvhsAo8tdAf9Seepd36lGWHmtNANTv5Jd0z4QYyeo/UEJqxKRpg5LZx6btLPsOaEmdMyxYdlc8LMaJnikDlhclqmPiQnTEpLUIZEwkRagjYkEibQErwhkTAKCLQEbUgkzJQWc/0PstHHcfEdQ+UAAAAASUVORK5CYII=);background-size:26px 26px}.leaflet-touch .leaflet-control-layers-toggle{width:44px;height:44px}.leaflet-control-layers .leaflet-control-layers-list,.leaflet-control-layers-expanded .leaflet-control-layers-toggle{display:none}.leaflet-control-layers-expanded .leaflet-control-layers-list{display:block;position:relative}.leaflet-control-layers-expanded{padding:6px 10px 6px 6px;color:#333;background:#fff}.leaflet-control-layers-scrollbar{overflow-y:scroll;overflow-x:hidden;padding-right:5px}.leaflet-control-layers-selector{margin-top:2px;position:relative;top:1px}.leaflet-control-layers label{display:block;font-size:13px;font-size:1.08333em}.leaflet-control-layers-separator{height:0;border-top:1px solid #ddd;margin:5px -10px 5px -6px}.leaflet-default-icon-path{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAApCAYAAADAk4LOAAAFgUlEQVR4Aa1XA5BjWRTN2oW17d3YaZtr2962HUzbDNpjszW24mRt28p47v7zq/bXZtrp/lWnXr337j3nPCe85NcypgSFdugCpW5YoDAMRaIMqRi6aKq5E3YqDQO3qAwjVWrD8Ncq/RBpykd8oZUb/kaJutow8r1aP9II0WmLKLIsJyv1w/kqw9Ch2MYdB++12Onxee/QMwvf4/Dk/Lfp/i4nxTXtOoQ4pW5Aj7wpici1A9erdAN2OH64x8OSP9j3Ft3b7aWkTg/Fm91siTra0f9on5sQr9INejH6CUUUpavjFNq1B+Oadhxmnfa8RfEmN8VNAsQhPqF55xHkMzz3jSmChWU6f7/XZKNH+9+hBLOHYozuKQPxyMPUKkrX/K0uWnfFaJGS1QPRtZsOPtr3NsW0uyh6NNCOkU3Yz+bXbT3I8G3xE5EXLXtCXbbqwCO9zPQYPRTZ5vIDXD7U+w7rFDEoUUf7ibHIR4y6bLVPXrz8JVZEql13trxwue/uDivd3fkWRbS6/IA2bID4uk0UpF1N8qLlbBlXs4Ee7HLTfV1j54APvODnSfOWBqtKVvjgLKzF5YdEk5ewRkGlK0i33Eofffc7HT56jD7/6U+qH3Cx7SBLNntH5YIPvODnyfIXZYRVDPqgHtLs5ABHD3YzLuespb7t79FY34DjMwrVrcTuwlT55YMPvOBnRrJ4VXTdNnYug5ucHLBjEpt30701A3Ts+HEa73u6dT3FNWwflY86eMHPk+Yu+i6pzUpRrW7SNDg5JHR4KapmM5Wv2E8Tfcb1HoqqHMHU+uWDD7zg54mz5/2BSnizi9T1Dg4QQXLToGNCkb6tb1NU+QAlGr1++eADrzhn/u8Q2YZhQVlZ5+CAOtqfbhmaUCS1ezNFVm2imDbPmPng5wmz+gwh+oHDce0eUtQ6OGDIyR0uUhUsoO3vfDmmgOezH0mZN59x7MBi++WDL1g/eEiU3avlidO671bkLfwbw5XV2P8Pzo0ydy4t2/0eu33xYSOMOD8hTf4CrBtGMSoXfPLchX+J0ruSePw3LZeK0juPJbYzrhkH0io7B3k164hiGvawhOKMLkrQLyVpZg8rHFW7E2uHOL888IBPlNZ1FPzstSJM694fWr6RwpvcJK60+0HCILTBzZLFNdtAzJaohze60T8qBzyh5ZuOg5e7uwQppofEmf2++DYvmySqGBuKaicF1blQjhuHdvCIMvp8whTTfZzI7RldpwtSzL+F1+wkdZ2TBOW2gIF88PBTzD/gpeREAMEbxnJcaJHNHrpzji0gQCS6hdkEeYt9DF/2qPcEC8RM28Hwmr3sdNyht00byAut2k3gufWNtgtOEOFGUwcXWNDbdNbpgBGxEvKkOQsxivJx33iow0Vw5S6SVTrpVq11ysA2Rp7gTfPfktc6zhtXBBC+adRLshf6sG2RfHPZ5EAc4sVZ83yCN00Fk/4kggu40ZTvIEm5g24qtU4KjBrx/BTTH8ifVASAG7gKrnWxJDcU7x8X6Ecczhm3o6YicvsLXWfh3Ch1W0k8x0nXF+0fFxgt4phz8QvypiwCCFKMqXCnqXExjq10beH+UUA7+nG6mdG/Pu0f3LgFcGrl2s0kNNjpmoJ9o4B29CMO8dMT4Q5ox8uitF6fqsrJOr8qnwNbRzv6hSnG5wP+64C7h9lp30hKNtKdWjtdkbuPA19nJ7Tz3zR/ibgARbhb4AlhavcBebmTHcFl2fvYEnW0ox9xMxKBS8btJ+KiEbq9zA4RthQXDhPa0T9TEe69gWupwc6uBUphquXgf+/FrIjweHQS4/pduMe5ERUMHUd9xv8ZR98CxkS4F2n3EUrUZ10EYNw7BWm9x1GiPssi3GgiGRDKWRYZfXlON+dfNbM+GgIwYdwAAAAASUVORK5CYII=)}.leaflet-container .leaflet-control-attribution{background:#fff;background:#fffc;margin:0}.leaflet-control-attribution,.leaflet-control-scale-line{padding:0 5px;color:#333;line-height:1.4}.leaflet-control-attribution a{text-decoration:none}.leaflet-control-attribution a:hover,.leaflet-control-attribution a:focus{text-decoration:underline}.leaflet-attribution-flag{display:inline!important;vertical-align:baseline!important;width:1em;height:.6669em}.leaflet-left .leaflet-control-scale{margin-left:5px}.leaflet-bottom .leaflet-control-scale{margin-bottom:5px}.leaflet-control-scale-line{border:2px solid #777;border-top:none;line-height:1.1;padding:2px 5px 1px;white-space:nowrap;-moz-box-sizing:border-box;box-sizing:border-box;background:#fffc;text-shadow:1px 1px #fff}.leaflet-control-scale-line:not(:first-child){border-top:2px solid #777;border-bottom:none;margin-top:-2px}.leaflet-control-scale-line:not(:first-child):not(:last-child){border-bottom:2px solid #777}.leaflet-touch .leaflet-control-attribution,.leaflet-touch .leaflet-control-layers,.leaflet-touch .leaflet-bar{box-shadow:none}.leaflet-touch .leaflet-control-layers,.leaflet-touch .leaflet-bar{border:2px solid rgba(0,0,0,.2);background-clip:padding-box}.leaflet-popup{position:absolute;text-align:center;margin-bottom:20px}.leaflet-popup-content-wrapper{padding:1px;text-align:left;border-radius:12px}.leaflet-popup-content{margin:13px 24px 13px 20px;line-height:1.3;font-size:13px;font-size:1.08333em;min-height:1px}.leaflet-popup-content p{margin:1.3em 0}.leaflet-popup-tip-container{width:40px;height:20px;position:absolute;left:50%;margin-top:-1px;margin-left:-20px;overflow:hidden;pointer-events:none}.leaflet-popup-tip{width:17px;height:17px;padding:1px;margin:-10px auto 0;pointer-events:auto;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:#fff;color:#333;box-shadow:0 3px 14px #0006}.leaflet-container a.leaflet-popup-close-button{position:absolute;top:0;right:0;border:none;text-align:center;width:24px;height:24px;font:16px/24px Tahoma,Verdana,sans-serif;color:#757575;text-decoration:none;background:transparent}.leaflet-container a.leaflet-popup-close-button:hover,.leaflet-container a.leaflet-popup-close-button:focus{color:#585858}.leaflet-popup-scrolled{overflow:auto}.leaflet-oldie .leaflet-popup-content-wrapper{-ms-zoom:1}.leaflet-oldie .leaflet-popup-tip{width:24px;margin:0 auto;-ms-filter:"progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";filter:progid:DXImageTransform.Microsoft.Matrix(M11=.70710678,M12=.70710678,M21=-.70710678,M22=.70710678)}.leaflet-oldie .leaflet-control-zoom,.leaflet-oldie .leaflet-control-layers,.leaflet-oldie .leaflet-popup-content-wrapper,.leaflet-oldie .leaflet-popup-tip{border:1px solid #999}.leaflet-div-icon{background:#fff;border:1px solid #666}.leaflet-tooltip{position:absolute;padding:6px;background-color:#fff;border:1px solid #fff;border-radius:3px;color:#222;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none;box-shadow:0 1px 3px #0006}.leaflet-tooltip.leaflet-interactive{cursor:pointer;pointer-events:auto}.leaflet-tooltip-top:before,.leaflet-tooltip-bottom:before,.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{position:absolute;pointer-events:none;border:6px solid transparent;background:transparent;content:""}.leaflet-tooltip-bottom{margin-top:6px}.leaflet-tooltip-top{margin-top:-6px}.leaflet-tooltip-bottom:before,.leaflet-tooltip-top:before{left:50%;margin-left:-6px}.leaflet-tooltip-top:before{bottom:0;margin-bottom:-12px;border-top-color:#fff}.leaflet-tooltip-bottom:before{top:0;margin-top:-12px;margin-left:-6px;border-bottom-color:#fff}.leaflet-tooltip-left{margin-left:-6px}.leaflet-tooltip-right{margin-left:6px}.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{top:50%;margin-top:-6px}.leaflet-tooltip-left:before{right:0;margin-right:-12px;border-left-color:#fff}.leaflet-tooltip-right:before{left:0;margin-left:-12px;border-right-color:#fff}@media print{.leaflet-control{-webkit-print-color-adjust:exact;print-color-adjust:exact}}