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