حصل خطأ عند معالجة القالب.
Java method "com.sun.proxy.$Proxy148.getFileEntryByUuidAndGroupId(String, long)" threw an exception when invoked on com.sun.proxy.$Proxy148 object "com.liferay.document.library.internal.service.FriendlyURLDLFileEntryLocalServiceWrapper@14419dc0"; see cause exception in the Java stack trace.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #return dlFileEntry.getFileEntryByUui...  [in template "74588389795879#20119#147048" in function "getFileEntryByUrl" at line 16, column 17]
	- Reached through: @renderTopicRow iconFilename="certifi...  [in template "74588389795879#20119#147048" at line 293, column 17]
----
1<#assign dlFileEntry = serviceLocator.findService("com.liferay.document.library.kernel.service.DLFileEntryLocalService")>  
2 
3<#assign iconsThemePath = "/o/edetheme-theme/images/icons/" /> 
4 
5<#function getFileEntryByUrl url> 
6	<#assign urlParts = url?split("/")> 
7	<#assign groupId = ""> 
8	<#assign uuId = ""> 
9 
10	<#if (urlParts?size >= 6)> 
11		<#assign groupId = urlParts[2]?number> 
12		<#assign uuId = urlParts[5]?keep_before("?")> 
13	</#if> 
14 
15	<#if groupId?has_content && uuId?has_content> 
16		<#return dlFileEntry.getFileEntryByUuidAndGroupId(uuId, groupId)> 
17	<#else> 
18		<#return null> 
19	</#if> 
20</#function> 
21 
22<#macro renderSection id title siblings threshold showMoreText showLessText listCssClass="" serviceProcess=false isFaq=false> 
23    <#if (siblings?size > 0) && (siblings[0].getData()?has_content) > 
24        <div id="${id}"> 
25            <h2>${title}</h2> 
26			 
27			<#if (serviceProcess)> 
28				<h3 class="mt-4">${languageUtil.get(locale, "when-applying-through-the-website")}</h3> 
29			</#if> 
30 
31            <ul class="${listCssClass} ${serviceProcess?then('mb-5 mt-3', 'my-5')}"> 
32                <#list 0..siblings?size-1 as i> 
33                    <#if siblings[i].getData()?? && siblings[i].getData() != ""> 
34						<#assign isAnswer = isFaq && ((i + 1) % 2 == 0)> 
35 
36                        <#if (i > threshold)> 
37                            <li data-hidden-li class="d-none mb-3 ${isAnswer?then('font-weight-normal', '')}">${siblings[i].getData()}</li> 
38                        <#else> 
39                            <li class="mb-3 ${isAnswer?then('font-weight-normal', '')}">${siblings[i].getData()}</li> 
40                        </#if> 
41                    </#if> 
42                </#list> 
43            </ul> 
44 
45            <#if (siblings?size > threshold + 1)> 
46                <a data-toggle-show href="javascript:void(0)" class="font-weight-bold text-brand-1"> 
47                    <span>${showMoreText}</span> 
48                    <span class="d-none">${showLessText}</span> 
49                </a> 
50            </#if> 
51            <hr class="my-5"> 
52        </div> 
53    </#if> 
54</#macro> 
55 
56<#macro renderTopicRow iconFilename title content isResources=false isServiceFees=false withoutHr=false listCssClass=""> 
57	<div class="d-flex align-items-start justify-content-start"> 
58		<img 
59			class="mr-4" 
60			src="${iconsThemePath + iconFilename}" 
61		/> 
62		<div class="row w-100"> 
63			<div class="col-12 col-md-5"> 
64				<h4 class="mb-md-0">${title}</h4> 
65			</div> 
66 
67			<div class="col-12 col-md-7 d-flex flex-column"> 
68				<#if content?is_string> 
69					<p class="mb-0">${content}<p> 
70				<#elseif (content?is_sequence) && (isResources == false)> 
71					<ul class="${listCssClass}"> 
72						<#list content as item> 
73							<#if item.getData() != ""> 
74								<li class="mb-2 ${(item?is_first && isServiceFees)?then('font-weight-normal', '')}"> ${item.getData()}</li> 
75							</#if> 
76						</#list> 
77					</ul> 
78				<#elseif isResources> 
79					<ul class="list-unstyled"> 
80						<#list content as item> 
81							<#if (item.getData()??) && (item.getData() != "")> 
82								<#assign fileEntry = getFileEntryByUrl(item.getData()) /> 
83 
84								<li> 
85									<a href="${item.getData()}" class="text-dark" target="_blank"> 
86										${fileEntry.getFileName()?replace(serviceTitle.getData() + " - " , "")} ${(fileEntry.getSize()/1024)?round}KB  
87									</a> 
88								</li> 
89							</#if> 
90						</#list> 
91 
92						<#list 0..resourcePageTitle.getSiblings()?size-1 as i> 
93							<#assign curPageTitle = resourcePageTitle.getSiblings()[i].getData() /> 
94							<#assign curPageUrl = resourcePageUrl.getSiblings()[i].getData() /> 
95 
96							<#if (curPageTitle?has_content) && (curPageUrl?has_content)> 
97								<li> 
98									<a href="${curPageUrl}" class="text-dark" target="_blank"> 
99										${curPageTitle} 
100									</a> 
101								</li> 
102							</#if> 
103						</#list> 
104					</ul> 
105				</#if> 
106			</div> 
107		</div> 
108	</div> 
109 
110	<#if (withoutHr == false)> 
111		<hr class="my-5"> 
112	</#if> 
113</#macro> 
114 
115<div class="full-service pt-7 d-flex flex-column"> 
116  <div class="full-service-header-wrapper"> 
117		<div class="full-service-header bg-brand-2 w-100"> 
118			<div class="container position-relative"> 
119				<#if (serviceTitle.getData())?? && (serviceTitle.getData()) != ""> 
120					<div class="py-4"> 
121						<h1 class="full-service-title text-brand-1" style="font-size:2.5rem; !important">${serviceTitle.getData()}</h1> 
122					</div> 
123				</#if> 
124        <#assign serviceUrl = startServiceLink.getData()!"" /> 
125 
126        <#if serviceUrl?has_content && serviceUrl?contains("ede.gov.ae")> 
127        <a 
128         href="${serviceUrl}" 
129         class="full-service-card-button start-service-btn-scrolled bg-white text-brand-1 p-3 mb-4 d-none" 
130				 target="_blank" 
131
132        <h6 class="mb-0">${languageUtil.get(locale, "start-service")}</h6> 
133        <img class="arrow-icon mx-3" src="${iconsThemePath}arrow-right-golden.svg" /> 
134        </a> 
135				<#else> 
136        <a 
137         href="#" 
138         class="full-service-card-button start-service-btn-scrolled bg-white text-brand-1 p-3 mb-4 d-none start-service-external" 
139         data-service-url="${serviceUrl}" 
140				 target="_blank" 
141
142        <h6 class="mb-0">${languageUtil.get(locale, "start-service")}</h6> 
143        <img class="arrow-icon mx-3" src="${iconsThemePath}arrow-right-golden.svg" /> 
144        </a> 
145        </#if> 
146				<div class="full-service-card position-absolute w-100 px-3 py-4 p-md-6 row"> 
147					<div class="d-flex flex-column col-7 col-md-3"> 
148						<#if serviceUrl?has_content && serviceUrl?contains("ede.gov.ae")> 
149							<a 
150                href="${serviceUrl}" 
151								class="full-service-card-button bg-white text-brand-1 p-3 mb-4" 
152								target="_blank" 
153
154								<h6 class="mb-0">${languageUtil.get(locale, "start-service")}</h6> 
155								<img class="arrow-icon" src="${iconsThemePath}arrow-right-golden.svg" /> 
156							</a> 
157				     <#else> 
158							<a 
159								class="full-service-card-button bg-white text-brand-1 p-3 mb-4 start-service-external" 
160                data-service-url="${serviceUrl}" 
161								target="_blank" 
162
163								<h6 class="mb-0">${languageUtil.get(locale, "start-service")}</h6> 
164								<img class="arrow-icon" src="${iconsThemePath}arrow-right-golden.svg" /> 
165							</a>			 
166						</#if> 
167						<#if (serviceCardFile.getData())?? && (serviceCardFile.getData() != "")> 
168							<a href="${serviceCardFile.getData()}" class="full-service-card-button border border-dark text-brand-1 p-3"> 
169								<h6 class="mb-0">${languageUtil.get(locale, "download-service-card")}</h6> 
170								<img class="download-icon" src="${iconsThemePath}download.svg" /> 
171							</a> 
172						</#if> 
173					</div> 
174					<div class="d-none d-md-block col-2"></div> 
175					<div class="d-flex flex-column col-5 col-md-7 d-flex justify-content-start justify-content-md-center"> 
176					    <div class="mb-1 mb-md-4"> 
177						  <h6 class="text-brand-1">${languageUtil.get(locale, "service-completion-duration")}</h6> 
178							<#if (serviceCompletionDuration.getData())?? && (serviceCompletionDuration.getData() != "")> 
179								<p>${serviceCompletionDuration.getData()}</p> 
180							</#if> 
181					    </div> 
182					    <div> 
183							<h6 class="text-brand-1">${languageUtil.get(locale, "service-fees")}</h6> 
184							<ul class="list-unstyled service-fees-list"> 
185								<#list serviceFeesInfo.getSiblings() as item> 
186									<#if item_index < 2 && item.getData() != ""> 
187										<li>${item.getData()}</li> 
188									</#if> 
189								</#list> 
190							</ul> 
191					   </div> 
192					</div> 
193				</div> 
194			</div> 
195		</div> 
196	</div> 
197 
198	<div class="full-service-content container position-relative py-2 py-sm-4 py-md-6"> 
199		<#if (aboutService.getData())?? && (aboutService.getData()) != ""> 
200			<div id="about"> 
201				<h2 class="mb-4">${languageUtil.get(locale, "about-the-service")}</h2> 
202				<p>${aboutService.getData()}</p> 
203			</div> 
204			<hr class="my-5" > 
205		</#if> 
206 
207		<@renderSection  
208			id="service-process"  
209			title=languageUtil.get(locale, "service-process")  
210			siblings=step.getSiblings()  
211			threshold=3  
212			showMoreText=languageUtil.get(locale, "show-more") 
213			showLessText=languageUtil.get(locale, "show-less") 
214			listCssClass="list-unstyled" 
215			serviceProcess=true 
216		/> 
217 
218		<@renderSection  
219			id="conditions-and-requirements"  
220			title=languageUtil.get(locale, "conditions-and-requirements")  
221			siblings=conditionOrRequirement.getSiblings()  
222			threshold=0 
223			showMoreText=languageUtil.get(locale, "show-all-conditions-and-requirements")  
224			showLessText=languageUtil.get(locale, "show-less") 
225			listCssClass="list-unstyled" 
226		/> 
227 
228		<@renderSection  
229			id="required-documents"  
230			title=languageUtil.get(locale, "required-documents")  
231			siblings=requiredDocument.getSiblings()  
232			threshold=6  
233			showMoreText=languageUtil.get(locale, "show-all-required-documents")  
234			showLessText=languageUtil.get(locale, "show-less")  
235		/> 
236 
237		<@renderSection  
238			id="faqs"  
239			title=languageUtil.get(locale, "faqs")  
240			siblings=faq.getSiblings()  
241			threshold=1 
242			showMoreText=languageUtil.get(locale, "show-all-faqs")  
243			showLessText=languageUtil.get(locale, "show-less")  
244			listCssClass="list-unstyled" 
245			isFaq=true 
246		/> 
247 
248		<@renderTopicRow  
249			iconFilename="clock.svg" 
250			title=languageUtil.get(locale, "service-completion-duration") 
251			content=serviceCompletionDuration.getData() 
252		/> 
253 
254		<@renderTopicRow  
255			iconFilename="coins.svg" 
256			title=languageUtil.get(locale, "service-fees") 
257			content=serviceFeesInfo.getSiblings() 
258			listCssClass="list-unstyled" 
259			isServiceFees=true 
260		/> 
261 
262		<@renderTopicRow  
263			iconFilename="globe.svg" 
264			title=languageUtil.get(locale, "service-channels") 
265			content=serviceChannel.getSiblings() 
266		/> 
267 
268		<@renderTopicRow  
269			iconFilename="pin.svg" 
270			title=languageUtil.get(locale, "service-locations") 
271			content=serviceLocation.getSiblings() 
272		/> 
273 
274		<@renderTopicRow  
275			iconFilename="support.svg" 
276			title=languageUtil.get(locale, "support") 
277			content=support.getSiblings() 
278		/> 
279 
280		<@renderTopicRow  
281			iconFilename="target.svg" 
282			title=languageUtil.get(locale, "target-audience") 
283			content=targetAudience.getData() 
284		/> 
285 
286		<@renderTopicRow  
287			iconFilename="card.svg" 
288			title=languageUtil.get(locale, "payment-channels") 
289			content=paymentChannel.getSiblings() 
290			listCssClass="list-unstyled" 
291		/> 
292 
293		<@renderTopicRow  
294			iconFilename="certificate.svg" 
295			title=languageUtil.get(locale, "resources") 
296			content=resource.getSiblings() 
297			isResources=true 
298		/> 
299 
300<#-- 
301		<@renderTopicRow  
302			iconFilename="board.svg" 
303			title=languageUtil.get(locale, "department-name") 
304			content=departmentName.getData() 
305		/> 
306 
307		<@renderTopicRow  
308			iconFilename="badge.svg" 
309			title=languageUtil.get(locale, "sector-name") 
310			content=sectorName.getData() 
311		/> 
312 
313		<@renderTopicRow  
314			iconFilename="hand.svg" 
315			title=languageUtil.get(locale, "main-service") 
316			content=mainService.getData() 
317		/> 
318 
319		<@renderTopicRow  
320			iconFilename="code.svg" 
321			title=languageUtil.get(locale, "service-code") 
322			content=serviceCode.getData() 
323		/> 
324 
325		<@renderTopicRow  
326			iconFilename="gears.svg" 
327			title=languageUtil.get(locale, "service-classification") 
328			content=serviceClassification.getData() 
329		/> 
330 
331		<@renderTopicRow  
332			iconFilename="menu.svg" 
333			title=languageUtil.get(locale, "service-type") 
334			content=serviceTypeDescription.getData() 
335		/> 
336 
337		<@renderTopicRow  
338			iconFilename="flag.svg" 
339			title=languageUtil.get(locale, "sub-service-type") 
340			content=subServiceType.getData() 
341		/> 
342--> 
343 
344		<@renderTopicRow  
345			iconFilename="message.svg" 
346			title=languageUtil.get(locale, "related-services") 
347			content=relatedService.getData() 
348		/> 
349 
350 
351<#-- 
352		<@renderTopicRow  
353			iconFilename="stack.svg" 
354			title=languageUtil.get(locale, "service-bundle") 
355			content=serviceBundle.getData() 
356		/> 
357 
358		<@renderTopicRow  
359			iconFilename="user.svg" 
360			title=languageUtil.get(locale, "number-of-users") 
361			content=numberOfUsers.getData() 
362		/> 
363 
364		<@renderTopicRow  
365			iconFilename="chart.svg" 
366			title=languageUtil.get(locale, "number-of-transactions") 
367			content=numberOfTransactions.getData() 
368		/> 
369 
370		<@renderTopicRow  
371			iconFilename="info.svg" 
372			title=languageUtil.get(locale, "notes") 
373			content=notes.getData() 
374			withoutHr=true 
375		/> 
376--> 
377 
378	</div> 
379</div> 
380 
381<script> 
382	function initFullService() { 
383		const fullServiceTemplate = document.querySelector(".full-service"); 
384		if (!fullServiceTemplate) return; 
385 
386		const fullServiceHeader = fullServiceTemplate.querySelector(".full-service-header"); 
387		const toggleListVisibilityAnchors =  fullServiceTemplate.querySelectorAll("a[data-toggle-show]"); 
388 
389		toggleListVisibilityAnchors.forEach(anchor => { 
390			anchor.addEventListener("click", () => { 
391				const sectionContainer = anchor.parentElement; 
392				const listElement = sectionContainer.querySelector("ul"); 
393				const anchorLanguageKeys = sectionContainer.querySelectorAll("a span"); 
394				const hiddenList = listElement.querySelectorAll("li[data-hidden-li]"); 
395 
396				hiddenList.forEach(li => li.classList.toggle("d-none")); 
397				anchorLanguageKeys.forEach(languageKey => languageKey.classList.toggle("d-none")); 
398			}); 
399}); 
400 
401		const handleScroll = () => { 
402			const isLargeScreen = window.innerWidth >= 768; 
403			const isScrolled = window.scrollY > 0; 
404 
405			if (!fullServiceHeader) return; 
406 
407			if (isLargeScreen && isScrolled) { 
408				fullServiceHeader.classList.add("scrolled"); 
409				fullServiceHeader.parentElement.style.height = "20rem"; 
410			}  
411			 
412			if (isLargeScreen && !isScrolled){ 
413				fullServiceHeader.classList.remove("scrolled"); 
414				fullServiceHeader.parentElement.style.height = "33rem"; 
415
416		}; 
417 
418		window.addEventListener("scroll", handleScroll); 
419 
420		const links = fullServiceTemplate.querySelectorAll('.start-service-external'); 
421 
422    const leave_ede_website = "Leave EDE Website"; 
423    const external_service_warning_1 = "You are about to leave EDE website to visit an external services portal."; 
424    const external_service_warning_2 = "Do you want to proceed?"; 
425    const cancel = "Cancel"; 
426    const proceed = "Proceed"; 
427 
428		links.forEach(function (el) { 
429			// To avoid duplicate bindings when SPA reuses the DOM: 
430			if (el.dataset.modalBound === "true") return; 
431			el.dataset.modalBound = "true"; 
432 
433			el.addEventListener('click', function (event) { 
434				event.preventDefault(); 
435 
436				const url = el.getAttribute('data-service-url'); 
437				 
438        if(Liferay.ThemeDisplay.getLanguageId() === "ar_SA") { 
439				   Liferay.Util.openModal({ 
440					   title: 'مغادرة موقع مؤسسة الإمارات للدواء', 
441					   bodyHTML: 
442						   '<p>أنت على وشك مغادرة موقع مؤسسة الإمارات للدواء والانتقال إلى بوابة خدمات خارجية.</p>' + 
443						   '<p>هل ترغب في المتابعة؟</p>', 
444					   buttons: [ 
445
446							   label: 'متابعة', 
447							   type: 'submit', 
448								 class: 'my-proceed-btn', 
449							   onClick: function () { 
450								   window.open(url, '_blank'); 
451
452						   }, 
453
454							   label: 'إلغاء', 
455							   type: 'cancel', 
456								 class: 'my-cancel-btn' 
457
458
459				   }); 
460				} else { 
461				   Liferay.Util.openModal({ 
462					   title: 'Leave EDE Website', 
463					   bodyHTML: 
464						   '<p>You are about to leave EDE website to visit external services portal.</p>' + 
465						   '<p>Do you want to proceed?</p>', 
466					   buttons: [ 
467
468							   label: 'Proceed', 
469							   type: 'submit', 
470								 class: 'my-proceed-btn', 
471							   onClick: function () { 
472								   window.open(url, '_blank'); 
473
474						   }, 
475
476							   label: 'Cancel', 
477							   type: 'cancel', 
478								 class: 'my-cancel-btn' 
479
480
481				   });			 
482
483			}); 
484		}); 
485
486 
487	// Run on a normal full page load 
488	document.addEventListener('DOMContentLoaded', initFullService); 
489 
490	// Run after SPA navigation (when you land on this page via Liferay SPA) 
491	Liferay.on('endNavigate', function () { 
492		initFullService(); 
493	}); 
494(function () { 
495  // prevent duplicate binding across SPA navigations 
496  if (window.__fullServiceToggleBound) return; 
497  window.__fullServiceToggleBound = true; 
498 
499  document.addEventListener("click", function (e) { 
500    const anchor = e.target.closest('a[data-toggle-show]'); 
501    if (!anchor) return; 
502 
503    // Ensure it belongs to your component 
504    const root = anchor.closest(".full-service"); 
505    if (!root) return; 
506 
507    e.preventDefault(); 
508 
509    const sectionContainer = anchor.parentElement; 
510    const listElement = sectionContainer.querySelector("ul"); 
511    if (!listElement) return; 
512 
513    const hiddenList = listElement.querySelectorAll("li[data-hidden-li]"); 
514    const spans = anchor.querySelectorAll("span"); 
515 
516    hiddenList.forEach(li => li.classList.toggle("d-none")); 
517    spans.forEach(s => s.classList.toggle("d-none")); 
518  }); 
519})(); 
520	 
521</script> 
522 
523 
524 
525<style> 
526 
527	.my-proceed-btn { 
528    background-color: #ffffff !important;  /* White */ 
529    border-color: #b58934 !important; 
530    color: #b58934 !important; 
531 
532    border-style: solid; 
533    border-width: 0.0625rem; 
534    border-radius: 0.25rem; 
535    box-shadow: none; 
536    cursor: pointer; 
537    display: inline-block; 
538    font-size: 1rem; 
539    font-weight: var(--font-weight-semi-bold, 600); 
540    line-height: 1.5; 
541    padding-bottom: 0.4375rem; 
542    padding-right: 0.9375rem; 
543    padding-left: 0.9375rem; 
544    padding-top: 0.4375rem; 
545    text-align: center; 
546    text-transform: none; 
547    transition: color 0.15s  
548    ease-in-out, background-color 0.15s  
549    ease-in-out, border-color 0.15s  
550    ease-in-out, box-shadow 0.15s  
551    ease-in-out; 
552    -ms-user-select: none; 
553    -moz-user-select: none; 
554    -webkit-user-select: none; 
555    user-select: none; 
556    vertical-align: middle;		 
557
558 
559.my-proceed-btn:hover { 
560    background-color: #b58934 !important; 
561    border-color: #b58934 !important; 
562    color: #fff !important; 
563 
564 
565    border-style: solid; 
566    border-width: 0.0625rem; 
567    border-radius: 0.25rem; 
568    box-shadow: none; 
569    cursor: pointer; 
570    display: inline-block; 
571    font-size: 1rem; 
572    font-weight: var(--font-weight-semi-bold, 600); 
573    line-height: 1.5; 
574    padding-bottom: 0.4375rem; 
575    padding-right: 0.9375rem; 
576    padding-left: 0.9375rem; 
577    padding-top: 0.4375rem; 
578    text-align: center; 
579    text-transform: none; 
580    transition: color 0.15s  
581    ease-in-out, background-color 0.15s  
582    ease-in-out, border-color 0.15s  
583    ease-in-out, box-shadow 0.15s  
584    ease-in-out; 
585    -ms-user-select: none; 
586    -moz-user-select: none; 
587    -webkit-user-select: none; 
588    user-select: none; 
589    vertical-align: middle;		 
590}	 
591	 
592	.my-cancel-btn { 
593    background-color: #ffffff !important;  /* White */ 
594    border-color: #c9302c !important; 
595    color: #ac2925 !important; 
596 
597    border-style: solid; 
598    border-width: 0.0625rem; 
599    border-radius: 0.25rem; 
600    box-shadow: none; 
601    cursor: pointer; 
602    display: inline-block; 
603    font-size: 1rem; 
604    font-weight: var(--font-weight-semi-bold, 600); 
605    line-height: 1.5; 
606    padding-bottom: 0.4375rem; 
607    padding-right: 0.9375rem; 
608    padding-left: 0.9375rem; 
609    padding-top: 0.4375rem; 
610    text-align: center; 
611    text-transform: none; 
612    transition: color 0.15s  
613    ease-in-out, background-color 0.15s  
614    ease-in-out, border-color 0.15s  
615    ease-in-out, box-shadow 0.15s  
616    ease-in-out; 
617    -ms-user-select: none; 
618    -moz-user-select: none; 
619    -webkit-user-select: none; 
620    user-select: none; 
621    vertical-align: middle;		 
622
623 
624.my-cancel-btn:hover { 
625    background-color: #c9302c !important; 
626    border-color: #ac2925 !important; 
627    color: #fff !important; 
628 
629 
630    border-style: solid; 
631    border-width: 0.0625rem; 
632    border-radius: 0.25rem; 
633    box-shadow: none; 
634    cursor: pointer; 
635    display: inline-block; 
636    font-size: 1rem; 
637    font-weight: var(--font-weight-semi-bold, 600); 
638    line-height: 1.5; 
639    padding-bottom: 0.4375rem; 
640    padding-right: 0.9375rem; 
641    padding-left: 0.9375rem; 
642    padding-top: 0.4375rem; 
643    text-align: center; 
644    text-transform: none; 
645    transition: color 0.15s  
646    ease-in-out, background-color 0.15s  
647    ease-in-out, border-color 0.15s  
648    ease-in-out, box-shadow 0.15s  
649    ease-in-out; 
650    -ms-user-select: none; 
651    -moz-user-select: none; 
652    -webkit-user-select: none; 
653    user-select: none; 
654    vertical-align: middle;		 
655
656 
657.text-brand-1 { 
658--h6-font-size:  1.2rem !important; 
659
660 
661	.full-service { 
662		--header-height-md: 33rem; 
663		--header-height-sm: 18rem; 
664		--header-height-xs: 23rem; 
665		--card-border-radius-desktop: 5rem; 
666		--card-border-radius-mobile: 2.5rem; 
667		--button-border-radius: 1rem; 
668		--button-border-width: 0.13rem; 
669		--spacer-6: 2.0rem !important; 
670		--font-size-base: 0.5 !important; 
671
672 
673	.full-service p, 
674	.full-service li { 
675		font-weight: 300; 
676    font-size: 1.0rem !important; 
677
678 
679	.full-service .full-service-header-wrapper { 
680		height: var(--header-height-md); 
681		transition: height 0.3s ease; 
682
683 
684	.full-service .full-service-header { 
685		height: 22rem !important; 
686		transition: all 0.3s ease; 
687		z-index: 1 !important; 
688
689 
690	.full-service .full-service-card { 
691		background-color: #F1F2F2; 
692		border-radius: var(--card-border-radius-desktop); 
693		transition: border-radius 0.3s ease; 
694
695 
696	.full-service .full-service-card-button { 
697		border-radius: var(--button-border-radius); 
698		cursor: pointer; 
699		border-width: var(--button-border-width) !important; 
700		display: flex; 
701		justify-content: space-between; 
702		align-items: center; 
703		transition: all 0.2s ease; 
704		text-decoration:none; 
705
706 
707	.full-service .full-service-card-button:hover { 
708		background-color: rgba(0, 0, 0, 0.05); 
709
710	 
711	.d-flex { 
712	   justify-content: center !important; 
713
714 
715	.full-service .full-service-card-button .arrow-icon:dir(rtl) { 
716		transform: rotate(180deg); 
717
718 
719	.full-service .full-service-header.scrolled { 
720		height: auto !important; 
721
722 
723	.full-service .full-service-header.scrolled { 
724		position: fixed !important; 
725		height: auto !important; 
726		z-index: 10; 
727		box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); 
728
729 
730	.full-service .full-service-header.scrolled .container { 
731		display: flex; 
732		justify-content: space-between; 
733		align-items: center; 
734
735 
736	.full-service .full-service-header.scrolled .full-service-card { 
737		display: none; 
738
739 
740	.full-service .full-service-header.scrolled .start-service-btn-scrolled { 
741		display: flex !important; 
742		justify-content: space-between; 
743		align-items: center; 
744		text-wrap: nowrap; 
745		margin-bottom: 0 !important; 
746		width: 19rem; 
747		transition: all 0.2s ease; 
748
749 
750	.full-service .full-service-header.scrolled .start-service-btn-scrolled:hover { 
751		background-color: rgba(0, 0, 0, 0.05); 
752
753 
754	.full-service .full-service-title { 
755		display: -webkit-box; 
756		-webkit-line-clamp: 2; 
757		-webkit-box-orient: vertical; 
758		overflow: hidden; 
759		text-overflow: ellipsis; 
760
761 
762	@media screen and (max-width: 767px) { 
763		.full-service .full-service-header-wrapper { 
764			height: var(--header-height-sm) !important; 
765
766 
767		.full-service .full-service-card { 
768			border-radius: var(--card-border-radius-mobile); 
769
770 
771		.full-service .full-service-card h6 { 
772			font-size: 0.875rem !important; 
773		}	 
774 
775		.full-service .full-service-card p { 
776			font-size: 0.75rem !important; 
777
778 
779		.full-service .arrow-icon { 
780			width: 0.6rem !important; 
781
782 
783		.full-service .full-service-card .download-icon { 
784			width: 1rem !important; 
785
786 
787		.full-service .full-service-card .full-service-card-button { 
788			border-width: 0.1rem !important; 
789
790 
791		.full-service .service-fees-list { 
792			display: -webkit-box; 
793			-webkit-line-clamp: 3; 
794			-webkit-box-orient: vertical; 
795			overflow: hidden; 
796			text-overflow: ellipsis; 
797
798
799	 
800	@media screen and (max-width: 575px) { 
801		.full-service .full-service-header-wrapper { 
802			height: var(--header-height-xs) !important; 
803
804
805 
806	@media screen and (max-width: 376px) { 
807		.full-service .full-service-header-wrapper { 
808			height: 35rem !important; 
809
810
811</style>