77/* Vaadin overlays always on top */
88.v-overlay-container {
99 z-index : 3000 !important ;
10- }
10+ }
11+
12+ /* Google-quality, pixel-perfect left menu styles */
13+ .jlmap-menu {
14+ position : absolute;
15+ top : 64px ;
16+ left : 40px ;
17+ z-index : 10 ;
18+ background : rgba (255 , 255 , 255 , 0.55 );
19+ border-radius : 18px ;
20+ box-shadow : 0 2px 16px 0 rgba (60 , 64 , 67 , 0.10 ), 0 1.5px 4px 0 rgba (60 , 64 , 67 , 0.10 );
21+ padding : 32px 20px 32px 20px ;
22+ min-width : 270px ;
23+ max-width : 320px ;
24+ max-height : calc (100vh - 128px );
25+ display : flex;
26+ flex-direction : column;
27+ gap : 32px ;
28+ align-items : stretch;
29+ pointer-events : auto;
30+ overflow-y : auto;
31+ -webkit-backdrop-filter : blur (24px ) saturate (180% ) brightness (1.15 ) contrast (1.15 );
32+ backdrop-filter : blur (24px ) saturate (180% ) brightness (1.15 ) contrast (1.15 );
33+ border : 1.5px solid rgba (255 , 255 , 255 , 0.35 );
34+ bottom : 64px ;
35+ }
36+
37+ .jlmap-menu ::before {
38+ /* Animated caustic SVG overlay for liquid glass effect */
39+ content : "" ;
40+ position : absolute;
41+ top : 0 ;
42+ left : 0 ;
43+ right : 0 ;
44+ bottom : 0 ;
45+ pointer-events : none;
46+ border-radius : inherit;
47+ z-index : 1 ;
48+ background : url ('data:image/svg+xml;utf8,<svg width=\'400\' height=\'400\' xmlns=\'http://www.w3.org/2000/svg\'><defs><radialGradient id=\'g1\' cx=\'50%\' cy=\'50%\' r=\'0.7\'><stop offset=\'0%\' stop-color=\'#fff8\'/><stop offset=\'100%\' stop-color=\'#fff0\'/></radialGradient></defs><ellipse cx=\'200\' cy=\'200\' rx=\'180\' ry=\'120\' fill=\'url(%23g1)\'/><ellipse cx=\'120\' cy=\'80\' rx=\'60\' ry=\'40\' fill=\'url(%23g1)\' opacity=\'0.5\'/><ellipse cx=\'300\' cy=\'320\' rx=\'70\' ry=\'50\' fill=\'url(%23g1)\' opacity=\'0.4\'/></svg>' );
49+ background-size : 200% 200% ;
50+ background-repeat : no-repeat;
51+ mix-blend-mode : lighten;
52+ opacity : 0.45 ;
53+ animation : jlmap-liquid-caustic 12s ease-in-out infinite alternate;
54+ }
55+
56+ @keyframes jlmap-liquid-caustic {
57+ 0% {
58+ background-position : 0% 0% ;
59+ }
60+ 100% {
61+ background-position : 100% 100% ;
62+ }
63+ }
64+
65+ .jlmap-menu ::after {
66+ /* Soft edge glow for depth */
67+ content : "" ;
68+ position : absolute;
69+ top : 0 ;
70+ left : 0 ;
71+ right : 0 ;
72+ bottom : 0 ;
73+ pointer-events : none;
74+ border-radius : inherit;
75+ z-index : 2 ;
76+ box-shadow : 0 0 32px 8px rgba (255 , 255 , 255 , 0.18 ) inset, 0 0 0 2px rgba (255 , 255 , 255 , 0.10 ) inset;
77+ }
78+
79+ .jlmap-menu > * {
80+ position : relative;
81+ z-index : 3 ;
82+ }
83+
84+ .jlmap-menu-content {
85+ flex : 1 1 auto;
86+ overflow-y : auto;
87+ min-height : 0 ;
88+ display : flex;
89+ flex-direction : column;
90+ gap : 32px ;
91+ }
92+
93+ .jlmap-menu-section {
94+ display : flex;
95+ flex-direction : column;
96+ gap : 12px ;
97+ }
98+
99+ .jlmap-menu-section-title {
100+ font-size : 1.1rem ;
101+ font-weight : 600 ;
102+ color : # 202124 ;
103+ margin-bottom : 6px ;
104+ letter-spacing : 0.01em ;
105+ }
106+
107+ .jlmap-menu-item {
108+ background : none;
109+ border : none;
110+ border-radius : 8px ;
111+ padding : 10px 14px ;
112+ font-size : 1rem ;
113+ color : # 444 ;
114+ text-align : left;
115+ transition : background 0.15s , color 0.15s ;
116+ cursor : pointer;
117+ outline : none;
118+ font-family : inherit;
119+ }
120+
121+ .jlmap-menu-item : hover , .jlmap-menu-item : focus {
122+ background : # ffffff ;
123+ color : # 000000 ;
124+ }
125+
126+ .jlmap-menu-item : active {
127+ background : # ffffff ;
128+ color : # 000000 ;
129+ }
130+
131+ .jlmap-menu-footer {
132+ flex-shrink : 0 ;
133+ position : sticky;
134+ bottom : 0 ;
135+ left : 0 ;
136+ width : 100% ;
137+ display : block;
138+ margin-top : auto;
139+ padding : 18px 0 0 0 ;
140+ text-align : center;
141+ font-size : 1.04rem ;
142+ font-weight : 500 ;
143+ color : # 174ea6 ;
144+ background : linear-gradient (to top, rgba (255 , 255 , 255 , 0.32 ) 80% , rgba (255 , 255 , 255 , 0.01 ) 100% );
145+ text-decoration : none;
146+ border-top : 1px solid rgba (255 , 255 , 255 , 0.18 );
147+ z-index : 4 ;
148+ transition : color 0.18s ;
149+ }
150+
151+ .jlmap-menu-footer : hover , .jlmap-menu-footer : focus {
152+ color : # 0b254a ;
153+ text-decoration : underline;
154+ }
155+
156+ .jlmap-github-icon {
157+ display : inline-flex;
158+ vertical-align : middle;
159+ margin-right : 8px ;
160+ height : 20px ;
161+ width : 20px ;
162+ align-items : center;
163+ justify-content : center;
164+ }
165+
166+ @media (max-width : 700px ) {
167+ .jlmap-menu {
168+ top : 16px ;
169+ left : 8px ;
170+ margin : 0 ;
171+ padding : 12px 4px 12px 4px ;
172+ min-width : 160px ;
173+ max-width : 95vw ;
174+ max-height : calc (100vh - 32px );
175+ bottom : 16px ;
176+ }
177+
178+ .jlmap-menu-section-title {
179+ font-size : 1rem ;
180+ }
181+
182+ .jlmap-menu-item {
183+ font-size : 0.97rem ;
184+ padding : 8px 8px ;
185+ }
186+ }
0 commit comments