1<!doctype html> 2<html lang="en-US"> 3<head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1"> 6 <meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' /> 7
7<script> 8 (function () { 9 var sp = new URLSearchParams(window.location.search || ''); 10 var hasAwardAutoScroll = 11 sp.has('aw_kw') || 12 sp.has('aw_yr') || 13 sp.has('aw_from') || 14 sp.has('aw_scroll'); 15 16 if (!hasAwardAutoScroll) return; 17 18 try { 19 if ('scrollRestoration' in history) { 20 history.scrollRestoration = 'manual'; 21 } 22 } catch (e) { } 23 24 if ( 25 window.location.hash === '#atscroll-award-gird' || 26 window.location.hash === '#atscroll-award-filter' 27 ) { 28 try { 29 history.replaceState(null, '', window.location.pathname + window.location.search); 30 } catch (e) { } 31 } 32 33 document.documentElement.classList.add('klcc-awards-autoscroll-pending'); 34 })(); 35 </script>
35 36 <style> 37 html.klcc-awards-autoscroll-pending { 38 scroll-behavior: auto !important; 39 } 40 </style> 41<!-- Google tag (gtag.js) -->
vendor: 64 bytes, lines 41-42
41 42<script async src="https://www.googletagmanager.com/gtag/js?id=
42G-89Y2XHWZPS
vendor: 12 bytes, line 42
42"></script>
43<!-- Global site tag (gtag.js) - Google Analytics -->
vendor: 64 bytes, lines 43-44
43 44<script async src="https://www.googletagmanager.com/gtag/js?id=
44UA-202017552-2
vendor: 12 bytes, line 44
44"></script>
45<script> 46
vendor: 134 bytes, lines 46-50
46window.dataLayer = window.dataLayer || []; 47 function gtag(){dataLayer.push(arguments);} 48 gtag('js', new Date()); 49 50 gtag('config', '
50G-89Y2XHWZPS
vendor: 6 bytes, lines 50-51
50'); 51
51gtag('config', 'UA-202017552-2'); 52</script>
52 53 54 <!-- This site is optimized with the Yoast SEO plugin v27.7 - https://yoast.com/product/yoast-seo-wordpress/ --> 55 <title>News & Media - KLCCP Stapled Group</title> 56 <meta name="description" content="Updates Across Our Portfolio" /> 57 <link rel="canonical" href="https://klcc.com.my/news-and-media/" /> 58 <meta property="og:locale" content="en_US" /> 59 <meta property="og:type" content="article" /> 60 <meta property="og:title" content="News & Media - KLCCP Stapled Group" /> 61 <meta property="og:description" content="Updates Across Our Portfolio" /> 62 <meta property="og:url" content="https://klcc.com.my/news-and-media/" /> 63 <meta property="og:site_name" content="KLCCP Stapled Group" /> 64 <meta property="article:modified_time" content="2026-06-07T09:34:18+00:00" /> 65 <meta name="twitter:card" content="summary_large_image" /> 66
66<script type="application/ld+json" class="yoast-schema-graph">{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/klcc.com.my\/news-and-media\/","url":"https:\/\/klcc.com.my\/news-and-media\/","name":"News & Media - KLCCP Stapled Group","isPartOf":{"@id":"https:\/\/klcc.com.my\/#website"},"datePublished":"2026-02-10T20:46:10+00:00","dateModified":"2026-06-07T09:34:18+00:00","description":"Updates Across Our Portfolio","breadcrumb":{"@id":"https:\/\/klcc.com.my\/news-and-media\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/klcc.com.my\/news-and-media\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/klcc.com.my\/news-and-media\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/klcc.com.my\/"},{"@type":"ListItem","position":2,"name":"News & Media"}]},{"@type":"WebSite","@id":"https:\/\/klcc.com.my\/#website","url":"https:\/\/klcc.com.my\/","name":"KLCCP Stapled Group","description":"Iconic Landmarks and Thriving Ecosystems","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/klcc.com.my\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}</script>
66 67 <!-- / Yoast SEO plugin. --> 68 69 70<link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://klcc.com.my/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fklcc.com.my%2Fnews-and-media%2F" /> 71<link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://klcc.com.my/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fklcc.com.my%2Fnews-and-media%2F&format=xml" /> 72<style id="wp-img-auto-sizes-contain-inline-css"> 73img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px} 74/*# sourceURL=wp-img-auto-sizes-contain-inline-css */ 75</style> 76<link rel='stylesheet' id='font-awesome-5-all-css' href='https://klcc.com.my/wp-content/plugins/elementor/assets/lib/font-awesome/css/all.min.css?ver=4.0.9' media='all' /> 77<link rel='stylesheet' id='font-awesome-4-shim-css' href='https://klcc.com.my/wp-content/plugins/elementor/assets/lib/font-awesome/css/v4-shims.min.css?ver=4.0.9' media='all' /> 78<style id="wp-emoji-styles-inline-css"> 79 80 img.wp-smiley, img.emoji { 81 display: inline !important; 82 border: none !important; 83 box-shadow: none !important; 84 height: 1em !important; 85 width: 1em !important; 86 margin: 0 0.07em !important; 87 vertical-align: -0.1em !important; 88 background: none !important; 89 padding: 0 !important; 90 } 91/*# sourceURL=wp-emoji-styles-inline-css */ 92</style> 93<link rel='stylesheet' id='wp-block-library-css' href='https://klcc.com.my/wp-includes/css/dist/block-library/style.min.css?ver=7.1.2' media='all' /> 94<style id="classic-theme-styles-inline-css"> 95/*! This file is auto-generated */ 96.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none} 97/*# sourceURL=/wp-includes/css/classic-themes.min.css */ 98</style> 99<style id="global-styles-inline-css"> 100:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgb(6,147,227) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgb(252,185,0) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);
100--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}.wp-block-button{--wp--preset--dimension--25: 25%;--wp--preset--dimension--50: 50%;--wp--preset--dimension--75: 75%;--wp--preset--dimension--100: 100%;}:where(body) { margin: 0; }:where(.wp-site-blocks) > * { margin-block-start: 24px; margin-block-end: 0; }:where(.wp-site-blocks) > :first-child { margin-block-start: 0; }:where(.wp-site-blocks) > :last-child { margin-block-end: 0; }:root { --wp--style--block-gap: 24px; }:root :where(.is-layout-flow) > :first-child{margin-block-start: 0;}:root :where(.is-layout-flow) > :last-child{margin-block-end: 0;}:root :where(.is-layout-flow) > *{margin-block-start: 24px;margin-block-end: 0;}:root :where(.is-layout-constrained) > :first-child{margin-block-start: 0;}:root :where(.is-layout-constrained) > :last-child{margin-block-end: 0;}:root :where(.is-layout-constrained) > *{margin-block-start: 24px;margin-block-end: 0;}:root :where(.is-layout-flex){gap: 24px;}:root :where(.is-layout-grid){gap: 24px;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}body{padding-top: 0px;padding-right: 0px;padding-bottom: 0px;padding-left: 0px;}:root :where(.wp-element-button, .wp-block-button__link){background-color: #32373c;border-width: 0;color: #fff;font-family: inherit;font-size: inherit;font-style: inherit;font-weight: inherit;letter-spacing: inherit;line-height: inherit;padding-top: calc(0.667em + 2px);padding-right: calc(1.333em + 2px);padding-bottom: calc(0.667em + 2px);padding-left: calc(1.333em + 2px);text-decoration: none;text-transform: inherit;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}
100.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;} 101:root :where(.wp-block-icon svg){width: 24px;} 102:root :where(.wp-block-pullquote){font-size: 1.5em;line-height: 1.6;} 103/*# sourceURL=global-styles-inline-css */ 104</style> 105<link rel='stylesheet' id='cute-alert-css' href='https://klcc.com.my/wp-content/plugins/metform/public/assets/lib/cute-alert/style.css?ver=4.2.0' media='all' /> 106<link rel='stylesheet' id='text-editor-style-css' href='https://klcc.com.my/wp-content/plugins/metform/public/assets/css/text-editor.css?ver=4.2.0' media='all' /> 107<style id="wp-block-library-theme-inline-css"> 108.wp-block-audio :where(figcaption){color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-audio :where(figcaption){color:hsla(0,0%,100%,.65)}.wp-block-audio{margin:0 0 1em}.wp-block-code{border:1px solid #ccc;border-radius:4px;font-family:Menlo,Consolas,monaco,monospace;padding:.8em 1em}.wp-block-embed :where(figcaption){color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-embed :where(figcaption){color:hsla(0,0%,100%,.65)}.wp-block-embed{margin:0 0 1em}.blocks-gallery-caption{color:#555;font-size:13px;text-align:center}.is-dark-theme .blocks-gallery-caption{color:hsla(0,0%,100%,.65)}:root :where(.wp-block-image figcaption){color:#555;font-size:13px;text-align:center}.is-dark-theme :root :where(.wp-block-image figcaption){color:hsla(0,0%,100%,.65)}.wp-block-image{margin:0 0 1em}.wp-block-pullquote{border-bottom:4px solid;border-top:4px solid;color:currentColor;margin-bottom:1.75em}.wp-block-pullquote :where(cite),.wp-block-pullquote :where(footer),.wp-block-pullquote__citation{color:currentColor;font-size:.8125em;font-style:normal;text-transform:uppercase}.wp-block-quote{border-left:.25em solid;margin:0 0 1.75em;padding-left:1em}.wp-block-quote cite,.wp-block-quote footer{color:currentColor;font-size:.8125em;font-style:normal;position:relative}.wp-block-quote:where(.has-text-align-right){border-left:none;border-right:.25em solid;padding-left:0;padding-right:1em}.wp-block-quote:where(.has-text-align-center){border:none;padding-left:0}.wp-block-quote.is-large,.wp-block-quote.is-style-large,.wp-block-quote:where(.is-style-plain){border:none}.wp-block-search .wp-block-search__label{font-weight:700}.wp-block-search__button{border:1px solid #ccc;padding:.375em .625em}:where(.wp-block-group.has-background){padding:1.25em 2.375em}.wp-block-separator.has-css-opacity{opacity:.4}.wp-block-separator{border:none;border-bottom:2px solid;margin-left:auto;margin-right:auto}.wp-block-separator.has-alpha-channel-opacity{opacity:1}.wp-block-separator:not(.is-style-wide):not(.is-style-dots){width:100px}.wp-block-separator.has-background:not(.is-style-dots){border-bottom:none;height:1px}.wp-block-separator.has-background:not(.is-style-wide):not(.is-style-dots){height:2px}.wp-block-table{margin:0 0 1em}.wp-block-table td,.wp-block-table th{word-break:normal}.wp-block-table :where(figcaption){color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-table :where(figcaption){color:hsla(0,0%,100%,.65)}.wp-block-video :where(figcaption){color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-video :where(figcaption){color:hsla(0,0%,100%,.65)}.wp-block-video{margin:0 0 1em}:root :where(.wp-block-template-part.has-background){margin-bottom:0;margin-top:0;padding:1.25em 2.375em} 109/*# sourceURL=/wp-includes/css/dist/block-library/theme.min.css */ 110</style> 111<link rel='stylesheet' id='klcch-inter-css' href='https://klcc.com.my/wp-content/themes/klccp/css/inter-local.css?ver=1786514808' media='all' /> 112<link rel='stylesheet' id='klcch-97ae623a0383e85a1615afdaf25e2f16-css' href='https://klcc.com.my/wp-content/themes/klccp/css/var.css?ver=1786514808' media='all' /> 113<link rel='stylesheet' id='klcch-2cdc4b499d1172e3b2b7b2ea20db2a50-css' href='https://klcc.com.my/wp-content/themes/klccp/css/layout.css?ver=1786514808' media='all' /> 114<link rel='stylesheet' id='klcch-17c41292f05c1cec62cb63fffaa1b5a2-css' href='https://klcc.com.my/wp-content/themes/klccp/css/format.css?ver=1786514808' media='all' /> 115<link rel='stylesheet' id='klcch-6a6a912d0c7b55b537768da778032849-css' href='https://klcc.com.my/wp-content/themes/klccp/css/style.css?ver=1786514808' media='all' /> 116<style id="klcch-6a6a912d0c7b55b537768da778032849-inline-css"> 117.stock-section-bg{background-image:url("https://klcc.com.my/wp-content/uploads/2026/03/Group-28.png");} 118.prospectus-section-bg{background-image:url("https://klcc.com.my/wp-content/uploads/2026/03/Vector-2.png");} 119.investment-bg-wrapper{background-image:url("https://klcc.com.my/wp-content/uploads/2026/03/Group-64.png");} 120/*# sourceURL=klcch-6a6a912d0c7b55b537768da778032849-inline-css */ 121</style> 122<link rel='stylesheet' id='klcch-90724c553ac1ebd53f42bb0c06b6725e-css' href='https://klcc.com.my/wp-content/themes/klccp/css/responsive.css?ver=1786514808' media='all' /> 123<style id="klccp-museo-sans-inline-css"> 124@font-face{ 125 font-family:"Museo Sans"; 126 src:url("/wp-content/themes/klccp/fonts/MuseoSans-300.woff2") format("woff2"), 127 url("/wp-content/themes/klccp/fonts/MuseoSans-300.woff") format("woff"); 128 font-weight:300; 129 font-style:normal; 130 font-display:swap; 131} 132@font-face{ 133 font-family:"Museo Sans"; 134 src:url("/wp-content/themes/klccp/fonts/MuseoSans-500.woff2") format("woff2"), 135 url("/wp-content/themes/klccp/fonts/MuseoSans-500.woff") format("woff"); 136 font-weight:500; 137 font-style:normal; 138 font-display:swap; 139} 140@font-face{ 141 font-family:"Museo Sans"; 142 src:url("/wp-content/themes/klccp/fonts/MuseoSans-700.woff2") format("woff2"), 143 url("/wp-content/themes/klccp/fonts/MuseoSans-700.woff") format("woff"); 144 font-weight:700; 145 font-style:normal; 146 font-display:swap; 147} 148@font-face{ 149 font-family:"Museo Sans"; 150 src:url("/wp-content/themes/klccp/fonts/MuseoSans-900.woff2") format("woff2"), 151 url("/wp-content/themes/klccp/fonts/MuseoSans-900.woff") format("woff"); 152 font-weight:900; 153 font-style:normal; 154 font-display:swap; 155} 156h1, h2, h3, h4, h5, h6, .MuseoSans span, .MuseoSans p, .MuseoSans a, .MuseoSans div { 157 font-family: "Museo Sans", system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif !important; 158} 159/*# sourceURL=klccp-museo-sans-inline-css */ 160</style> 161<style id="klccp-post-popup-slider-style-inline-css"> 162.klcc-post-popup,.klcc-post-popup *{font-family:"Museo Sans",sans-serif;}.klcc-post-popup p{font-family:Verdana,Geneva,sans-serif !important;} 163/*# sourceURL=klccp-post-popup-slider-style-inline-css */ 164</style> 165<style id="klcch-stickyhdr-g7v9kq-v3-inline-css"> 166 167@media (max-width: 1366px){ 168 body.klcchStickyHdr__g7V9kQ--on{ 169 padding-top: var(--klcchStickyHdr__g7V9kQ-h, 0px); 170 } 171 172 .klcchStickyHdr__g7V9kQ{ 173 position: fixed; 174 top: 0; 175 left: 0; 176 right: 0; 177 178 width: 100%; 179 max-width: none !important; 180 181 z-index: 9999; 182 background: inherit; 183 transform: translateZ(0); 184 } 185} 186/*# sourceURL=klcch-stickyhdr-g7v9kq-v3-inline-css */ 187</style>
188<script id="font-awesome-4-shim-js" src="https://klcc.com.my/wp-content/plugins/elementor/assets/lib/font-awesome/js/v4-shims.min.js?ver=4.0.9"></script>
188 189<link rel="https://api.w.org/" href="https://klcc.com.my/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://klcc.com.my/wp-json/wp/v2/pages/246" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://klcc.com.my/xmlrpc.php?rsd" /> 190<meta name="generator" content="WordPress 7.1.2" /> 191<link rel='shortlink' href='https://klcc.com.my/?p=246' /> 192<meta name="generator" content="Elementor 4.0.9; features: e_font_icon_svg, additional_custom_breakpoints; settings: css_print_method-external, google_font-enabled, font_display-swap"> 193 <style> 194 .e-con.e-parent:nth-of-type(n+4):not(.e-lazyloaded):not(.e-no-lazyload), 195 .e-con.e-parent:nth-of-type(n+4):not(.e-lazyloaded):not(.e-no-lazyload) * { 196 background-image: none !important; 197 } 198 @media screen and (max-height: 1024px) { 199 .e-con.e-parent:nth-of-type(n+3):not(.e-lazyloaded):not(.e-no-lazyload), 200 .e-con.e-parent:nth-of-type(n+3):not(.e-lazyloaded):not(.e-no-lazyload) * { 201 background-image: none !important; 202 } 203 } 204 @media screen and (max-height: 640px) { 205 .e-con.e-parent:nth-of-type(n+2):not(.e-lazyloaded):not(.e-no-lazyload), 206 .e-con.e-parent:nth-of-type(n+2):not(.e-lazyloaded):not(.e-no-lazyload) * { 207 background-image: none !important; 208 } 209 } 210 </style> 211 <link rel="icon" href="https://klcc.com.my/wp-content/uploads/2026/06/favicon-150x150.png" sizes="32x32" /> 212<link rel="icon" href="https://klcc.com.my/wp-content/uploads/2026/06/favicon-300x300.png" sizes="192x192" /> 213<link rel="apple-touch-icon" href="https://klcc.com.my/wp-content/uploads/2026/06/favicon-300x300.png" /> 214<meta name="msapplication-TileImage" content="/wp-content/uploads/2026/06/favicon-300x300.png" /> 215</head> 216<body class="wp-singular page-template-default page page-id-246 wp-theme-klccp menu-home elementor-default elementor-kit-933"> 217<header class="site-header is-top" data-no-animation-target> 218 <div class="site-header__inner"> 219 <a class="site-logo" href="https://klcc.com.my/"> 220 <img class="logo logo--color" src="https://klcc.com.my/wp-content/themes/klccp/images/icons/klcc-logo-color.svg" alt="" aria-hidden="true" /> 221 <span class="visually-hidden">KLCC</span> 222 </a> 223 <nav class="header-nav"> 224 <ul class="header-nav__list header-nav__list--secondary"> 225 <li class="nav-item"><a href="https://klcc.com.my/news-and-media/" class="nav-link">News & Media</a></li> 226<li class="nav-item"><a class="nav-link" target="_blank" rel="noopener noreferrer">Career</a></li> 227 <li class="nav-item"> 228 <a class="nav-link search-icon header-actions__item" aria-label="Search"> 229 <img src="https://klcc.com.my/wp-content/themes/klccp/images/icons/icon-search.svg" alt="" aria-hidden="true" /> 230 </a> 231 </li> 232 </ul> 233 <ul class="header-nav__list header-nav__list--main pad-top-9"> 234 <li class="nav-item nav-item--has-mega"><a href="https://klcc.com.my/who-we-are/" class="nav-link" data-mega-trigger aria-haspopup="true" aria-expanded="false" aria-controls="mega-menu-670">About KLCCP Stapled Group</a></li> 235<li class="nav-item nav-item--has-mega"><a href="https://klcc.com.my/our-business/" class="nav-link" data-mega-trigger aria-haspopup="true" aria-expanded="false" aria-controls="mega-menu-258">Our Businesses</a></li> 236<li class="nav-item"><a href="https://klcc.com.my/our-portfolio/" class="nav-link">Our Portfolio</a></li> 237<li class="nav-item nav-item--has-mega"><a href="https://klcc.com.my/sustainability/" class="nav-link" data-mega-trigger aria-haspopup="true" aria-expanded="false" aria-controls="mega-menu-2989">Sustainability</a></li> 238<li class="nav-item nav-item--has-mega"><a href="https://klcc.com.my/investor-relations/" class="nav-link" data-mega-trigger aria-haspopup="true" aria-expanded="false" aria-controls="mega-menu-669">Investor Relations</a></li> 239 </ul> 240 </nav> 241 <div class="header-actions"> 242 <button class="header-menu-toggle" type="button" data-nav-toggle aria-expanded="false" aria-controls="mobile-navigation"> 243 <span class="header-menu-toggle__label">Menu</span> 244 <span class="header-menu-toggle__icon" aria-hidden="true"></span> 245 </button> 246 <a href="https://klcc.com.my/get-in-touch/" class="button cta header-cta">Get in Touch</a> 247 </div> 248 </div>
249 <div class="mega-panels" aria-live="polite"> 250 <section class="mega-panel" id="mega-menu-670" role="group" aria-label="About KLCCP Stapled Group" hidden> 251 <div class="mega-menu__inner"> 252 <div class="submenu-box"> 253 <ul class="mega-menu__list"> 254 <li class="mega-menu__item"> 255 <div class="mega-menu__item-row"> 256 <a href="https://klcc.com.my/who-we-are/" class="mega-menu__link">Who We Are</a> 257 </div> 258 </li> 259 <li class="mega-menu__item"> 260 <div class="mega-menu__item-row"> 261 <a href="https://klcc.com.my/who-we-are/group-structure/" class="mega-menu__link">Group Corporate Structure</a> 262 </div> 263 </li> 264 <li class="mega-menu__item"> 265 <div class="mega-menu__item-row"> 266 <a href="https://klcc.com.my/who-we-are/board-of-directors/" class="mega-menu__link">Board of Directors</a> 267 </div> 268 </li> 269 <li class="mega-menu__item"> 270 <div class="mega-menu__item-row"> 271 <a href="https://klcc.com.my/who-we-are/management-team-new/" class="mega-menu__link">Management Team</a> 272 </div> 273 </li> 274 <li class="mega-menu__item"> 275 <div class="mega-menu__item-row"> 276 <a href="https://klcc.com.my/who-we-are/awards/" class="mega-menu__link">Awards & Recognition</a> 277 </div> 278 </li> 279 </ul> 280 </div> 281 </div> 282 </section> 283 <section class="mega-panel" id="mega-menu-258" role="group" aria-label="Our Businesses" hidden> 284 <div class="mega-menu__inner"> 285 <div class="submenu-box"> 286 <ul class="mega-menu__list"> 287 <li class="mega-menu__item"> 288 <div class="mega-menu__item-row"> 289 <a href="https://klcc.com.my/our-business/#office" class="mega-menu__link">Office</a> 290 </div> 291 </li> 292 <li class="mega-menu__item"> 293 <div class="mega-menu__item-row"> 294 <a href="https://klcc.com.my/our-business/#retail" class="mega-menu__link">Retail</a> 295 </div> 296 </li> 297 <li class="mega-menu__item"> 298 <div class="mega-menu__item-row"> 299 <a href="https://klcc.com.my/our-business/#hotel" class="mega-menu__link">Hotel</a> 300 </div> 301 </li> 302 <li class="mega-menu__item"> 303 <div class="mega-menu__item-row"> 304 <a href="https://klcc.com.my/our-business/#management-services" class="mega-menu__link">Management Services</a> 305 </div> 306 </li> 307 </ul> 308 </div> 309 </div> 310 </section> 311 <section class="mega-panel" id="mega-menu-2989" role="group" aria-label="Sustainability" hidden> 312 <div class="mega-menu__inner"> 313 <div class="submenu-box"> 314 <ul class="mega-menu__list"> 315 <li class="mega-menu__item"> 316 <div class="mega-menu__item-row"> 317 <a href="https://klcc.com.my/sustainability/?sust_tab=overview" class="mega-menu__link">Sustainability Overview</a> 318 </div> 319 </li> 320 <li class="mega-menu__item mega-menu__item--has-children"> 321 <div class="mega-menu__item-row"> 322 <a href="https://klcc.com.my/sustainability/?sust_tab=strategy-governance" class="mega-menu__link">Strategy & Governance</a> 323 <button class="mega-menu__submenu-toggle" type="button" aria-expanded="false" aria-controls="mega-submenu-3016" data-submenu-toggle> 324 <span class="visually-hidden">Toggle submenu for Strategy & Governance</span> 325 </button> 326 </div> 327 <ul class="mega-menu__list mega-menu__sublist" id="mega-submenu-3016" data-submenu-list hidden> 328 <li class="mega-menu__item"> 329 <div class="mega-menu__item-row"> 330 <a href="https://klcc.com.my/sustainability/?sust_tab=strategy-governance&sust_section=governance-structure" class="mega-menu__link">Governance Structure</a> 331 </div> 332 </li> 333 <li class="mega-menu__item"> 334 <div class="mega-menu__item-row"> 335 <a href="https://klcc.com.my/sustainability/?sust_tab=strategy-governance&sust_section=materiality-approach" class="mega-menu__link">Materiality Approach</a> 336 </div> 337 </li> 338 </ul> 339 </li> 340 <li class="mega-menu__item"> 341 <div class="mega-menu__item-row"> 342 <a href="https://klcc.com.my/sustainability/?sust_tab=framework" class="mega-menu__link">Sustainability Framework</a> 343 </div> 344 </li> 345 <li class="mega-menu__item mega-menu__item--has-children"> 346 <div class="mega-menu__item-row"> 347 <a href="https://klcc.com.my/sustainability/?sust_tab=performance-progress" class="mega-menu__link">Performance & Progress</a> 348 <button class="mega-menu__submenu-toggle" type="button" aria-expanded="false" aria-controls="mega-submenu-3020" data-submenu-toggle>
349 <span class="visually-hidden">Toggle submenu for Performance & Progress</span> 350 </button> 351 </div> 352 <ul class="mega-menu__list mega-menu__sublist" id="mega-submenu-3020" data-submenu-list hidden> 353 <li class="mega-menu__item"> 354 <div class="mega-menu__item-row"> 355 <a href="https://klcc.com.my/sustainability/?sust_tab=performance-progress&sust_section=sustainability-plan-2030" class="mega-menu__link">Sustainability Plan 2030</a> 356 </div> 357 </li> 358 <li class="mega-menu__item"> 359 <div class="mega-menu__item-row"> 360 <a href="https://klcc.com.my/sustainability/?sust_tab=performance-progress&sust_section=key-sustainability-ratings" class="mega-menu__link">Key Sustainability Ratings</a> 361 </div> 362 </li> 363 </ul> 364 </li> 365 <li class="mega-menu__item"> 366 <div class="mega-menu__item-row"> 367 <a href="https://klcc.com.my/sustainability/?sust_tab=policies-standards" class="mega-menu__link">Policies & Standards</a> 368 </div> 369 </li> 370 </ul> 371 </div> 372 </div> 373 </section> 374 <section class="mega-panel" id="mega-menu-669" role="group" aria-label="Investor Relations" hidden> 375 <div class="mega-menu__inner"> 376 <div class="submenu-box"> 377 <ul class="mega-menu__list"> 378 <li class="mega-menu__item"> 379 <div class="mega-menu__item-row"> 380 <a href="https://klcc.com.my/investor-relations/" class="mega-menu__link">IR Overview</a> 381 </div> 382 </li> 383 <li class="mega-menu__item"> 384 <div class="mega-menu__item-row"> 385 <a href="https://klcc.com.my/investor-relations/financial-performance/" class="mega-menu__link">Financial Performance</a> 386 </div> 387 </li> 388 <li class="mega-menu__item"> 389 <div class="mega-menu__item-row"> 390 <a href="https://klcc.com.my/investor-relations/stock-information/" class="mega-menu__link">Stock Information</a> 391 </div> 392 </li> 393 <li class="mega-menu__item"> 394 <div class="mega-menu__item-row"> 395 <a href="https://klcc.com.my/investor-relations/reports/" class="mega-menu__link">Reports</a> 396 </div> 397 </li> 398 <li class="mega-menu__item"> 399 <div class="mega-menu__item-row"> 400 <a href="https://klcc.com.my/investor-relations/investor-resources/" class="mega-menu__link">Investor Resources</a> 401 </div> 402 </li> 403 <li class="mega-menu__item"> 404 <div class="mega-menu__item-row"> 405 <a href="https://klcc.com.my/investor-relations/bursa-announcements/" class="mega-menu__link">Bursa Announcements</a> 406 </div> 407 </li> 408 <li class="mega-menu__item"> 409 <div class="mega-menu__item-row"> 410 <a href="https://klcc.com.my/investor-relations/annual-general-meetings/" class="mega-menu__link">Annual General Meetings</a> 411 </div> 412 </li> 413 </ul> 414 </div> 415 </div> 416 </section> 417 </div> 418 </header> 419<main> 420 <section class="section row-intro row-intro--static dots--mobile" data-rotator-enabled="false" 421 data-rotator-images="" data-rotator-interval="3000" 422 data-rotator-fade="1200" 423 style="--row-intro-bg-desktop: url(/wp-content/uploads/2026/02/OurBusiness1-scaled.webp); --row-intro-bg-position: center center; --row-intro-bg-mobile: url(/wp-content/uploads/2026/02/OurBusiness1-scaled.webp); --row-intro-bg-position-mobile: center center;" 424 data-rotator-images-mobile=""> 425 <div class="hero-heading"> 426 <div class="container"> 427 <p class="section-label h5 lh-1-1 text-weight-black text-brand-army text-uppercase">News & Media</p> 428 <h1 class="hero-heading__title">Keeping You Informed</h1> 429 </div> 430 </div> 431 </section> 432 433 <section class="breadcrumb"> 434 <ul> 435<li><a href="https://klcc.com.my/">Home</a></li> 436<li>News & Media</li> 437</ul> 438</section> 439 440 <section class="row pad-none bg-brand-light-blue"> 441 <div class="section-wrapper pad-top-72 pad-inline-72"> 442 <div class="flex flex-column gap-72"> 443 <div class="flex flex-column gap-18 flex-align-center text-center"> 444 <div class="flex flex-column gap-12"> 445 <p class="section-label h5 lh-1-1 text-weight-black text-label-green text-uppercase">Press and Perspective</p> 446 <h3 class="section-heading h2 lh-1-2 text-title-blue text-weight-bold">Updates Across Our Portfolio</h3> 447 </div> 448 <div class="flex flex-column medium-width"> 449 <p class="p"> 450 Stay connected with the latest breakthroughs, corporate milestones and headlines from the KLCCP Stapled Group. Explore the stories that define our trajectory as we continue to shape Malaysia’s premier real estate landscape. 451 </p> 452 </div> 453 </div> 454 </div> 455 </div> 456 </section> 457 <section class="section pad-block-108 pad-inline-72 row-reports row-newsroom bg-brand-light-blue" data-section="newsroom"> 458 <section class="nm-section" 459 id="nm_bef8a8cb-8d2b-4f64-ade7-d1e858256b6a" data-term="newsroom" 460 data-per-page="3" data-default-year="" 461 data-default-category="" data-display="grid"> 462 <div class="nm-head"> 463 <h2 class="nm-title">Newsroom</h2> 464 465 <div class="nm-filters" role="search"> 466 <label class="nm-field nm-field-keyword"> 467 <input class="nm-input" type="search" placeholder="Keyword" autocomplete="off" /> 468 </label> 469 470 471 <label class="nm-field nm-field-year">
472 <span class="nm-year" data-role="year"> 473 474 <select class="nm-select nm-select--native nm-select-year" aria-label="Year"> 475 <option value="" selected='selected'>All years</option> 476 <option value="2026" > 477 2026 </option> 478 <option value="2025" > 479 2025 </option> 480 <option value="2024" > 481 2024 </option> 482 <option value="2023" > 483 2023 </option> 484 <option value="2022" > 485 2022 </option> 486 <option value="2021" > 487 2021 </option> 488 <option value="2020" > 489 2020 </option> 490 <option value="2019" > 491 2019 </option> 492 </select> 493 494 <button type="button" class="nm-year-btn" data-role="year-btn" aria-haspopup="listbox" aria-expanded="false"> 495 <span class="nm-year-text" data-role="year-text"> 496 All years </span> 497 <i class="fa-solid fa-chevron-down fas fa-chevron-down nm-select-arrow" aria-hidden="true"></i> 498 </button> 499 500 <div class="nm-year-menu" data-role="year-menu" role="listbox" aria-label="Year options"> 501 <button type="button" class="nm-year-opt" data-value="">All years</button> 502 <button type="button" class="nm-year-opt" data-value="2026"> 503 2026 </button> 504 <button type="button" class="nm-year-opt" data-value="2025"> 505 2025 </button> 506 <button type="button" class="nm-year-opt" data-value="2024"> 507 2024 </button> 508 <button type="button" class="nm-year-opt" data-value="2023"> 509 2023 </button> 510 <button type="button" class="nm-year-opt" data-value="2022"> 511 2022 </button> 512 <button type="button" class="nm-year-opt" data-value="2021"> 513 2021 </button> 514 <button type="button" class="nm-year-opt" data-value="2020"> 515 2020 </button> 516 <button type="button" class="nm-year-opt" data-value="2019"> 517 2019 </button> 518 </div> 519 </span> 520 </label> 521 </div> 522 </div> 523 524 <div class="nm-grid" data-role="grid" aria-live="polite"></div> 525 526 <div class="nm-actions"> 527 <nav class="nm-pagination" data-role="pagination" aria-label="Pagination"> 528 <button type="button" class="nm-pagebtn nm-pagebtn--nav" data-role="prev" aria-label="Previous page" disabled> 529 <i class="fa-solid fa-chevron-left fas fa-chevron-left" aria-hidden="true"></i> 530 </button> 531 532 <div class="nm-pages" data-role="pages" aria-label="Pages"></div> 533 534 <button type="button" class="nm-pagebtn nm-pagebtn--nav" data-role="next" aria-label="Next page" disabled> 535 <i class="fa-solid fa-chevron-right fas fa-chevron-right" aria-hidden="true"></i> 536 </button> 537 </nav> 538 </div> 539 </section> 540 541 </section> 542 <section class="section pad-block-108 pad-inline-72 row-reports row-newsroom bg-surface" data-section="press-releases"> 543 <section class="nm-section" 544 id="nm_8d43f31e-40ae-451f-ba6c-eab6aeb5b733" data-term="press-releases" 545 data-per-page="3" data-default-year="" 546 data-default-category="" data-display="grid"> 547 <div class="nm-head"> 548 <h2 class="nm-title">Press Releases</h2> 549 550 <div class="nm-filters" role="search"> 551 <label class="nm-field nm-field-keyword"> 552 <input class="nm-input" type="search" placeholder="Keyword" autocomplete="off" /> 553 </label> 554 555 556 <label class="nm-field nm-field-year">
557 <span class="nm-year" data-role="year"> 558 559 <select class="nm-select nm-select--native nm-select-year" aria-label="Year"> 560 <option value="" selected='selected'>All years</option> 561 <option value="2026" > 562 2026 </option> 563 <option value="2025" > 564 2025 </option> 565 <option value="2024" > 566 2024 </option> 567 <option value="2023" > 568 2023 </option> 569 <option value="2022" > 570 2022 </option> 571 <option value="2021" > 572 2021 </option> 573 <option value="2020" > 574 2020 </option> 575 <option value="2019" > 576 2019 </option> 577 </select> 578 579 <button type="button" class="nm-year-btn" data-role="year-btn" aria-haspopup="listbox" aria-expanded="false"> 580 <span class="nm-year-text" data-role="year-text"> 581 All years </span> 582 <i class="fa-solid fa-chevron-down fas fa-chevron-down nm-select-arrow" aria-hidden="true"></i> 583 </button> 584 585 <div class="nm-year-menu" data-role="year-menu" role="listbox" aria-label="Year options"> 586 <button type="button" class="nm-year-opt" data-value="">All years</button> 587 <button type="button" class="nm-year-opt" data-value="2026"> 588 2026 </button> 589 <button type="button" class="nm-year-opt" data-value="2025"> 590 2025 </button> 591 <button type="button" class="nm-year-opt" data-value="2024"> 592 2024 </button> 593 <button type="button" class="nm-year-opt" data-value="2023"> 594 2023 </button> 595 <button type="button" class="nm-year-opt" data-value="2022"> 596 2022 </button> 597 <button type="button" class="nm-year-opt" data-value="2021"> 598 2021 </button> 599 <button type="button" class="nm-year-opt" data-value="2020"> 600 2020 </button> 601 <button type="button" class="nm-year-opt" data-value="2019"> 602 2019 </button> 603 </div> 604 </span> 605 </label> 606 </div> 607 </div> 608 609 <div class="nm-grid" data-role="grid" aria-live="polite"></div> 610 611 <div class="nm-actions"> 612 <nav class="nm-pagination" data-role="pagination" aria-label="Pagination"> 613 <button type="button" class="nm-pagebtn nm-pagebtn--nav" data-role="prev" aria-label="Previous page" disabled> 614 <i class="fa-solid fa-chevron-left fas fa-chevron-left" aria-hidden="true"></i> 615 </button> 616 617 <div class="nm-pages" data-role="pages" aria-label="Pages"></div> 618 619 <button type="button" class="nm-pagebtn nm-pagebtn--nav" data-role="next" aria-label="Next page" disabled> 620 <i class="fa-solid fa-chevron-right fas fa-chevron-right" aria-hidden="true"></i> 621 </button> 622 </nav> 623 </div> 624 </section> 625 626 </section> 627 <section class="section pad-block-108 pad-inline-72 row-reports row-newsroom bg-brand-light-blue" data-section="event-galleries"> 628 <section class="nm-section" 629 id="nm_f4cdc96d-757c-47c2-b670-b0d9389fa53f" data-term="event-gallery" 630 data-per-page="3" data-default-year="" 631 data-default-category="" data-display="grid"> 632 <div class="nm-head"> 633 <h2 class="nm-title">Event Gallery</h2> 634 635 <div class="nm-filters" role="search"> 636 <label class="nm-field nm-field-keyword"> 637 <input class="nm-input" type="search" placeholder="Keyword" autocomplete="off" /> 638 </label> 639 640 <label class="nm-field nm-field-category">
641 <span class="nm-year nm-category" data-role="category"> 642 <select class="nm-select nm-select--native nm-select-category" aria-label="Category"> 643 <option value="" selected='selected'>All</option> 644 <option value="corporate" > 645 Corporate​ </option> 646 <option value="sustainability" > 647 Sustainability​ </option> 648 </select> 649 650 <button type="button" class="nm-year-btn nm-category-btn" data-role="category-btn" aria-haspopup="listbox" 651 aria-expanded="false"> 652 <span class="nm-year-text nm-category-text" data-role="category-text"> 653 All </span> 654 <i class="fa-solid fa-chevron-down fas fa-chevron-down nm-select-arrow" aria-hidden="true"></i> 655 </button> 656 657 <div class="nm-year-menu nm-category-menu" data-role="category-menu" role="listbox" 658 aria-label="Category options"> 659 <button type="button" class="nm-year-opt nm-category-opt" data-value="">All</button> 660 <button type="button" class="nm-year-opt nm-category-opt" data-value="corporate"> 661 Corporate​ </button> 662 <button type="button" class="nm-year-opt nm-category-opt" data-value="sustainability"> 663 Sustainability​ </button> 664 </div> 665 </span> 666 </label> 667 668 <label class="nm-field nm-field-year"> 669 <span class="nm-year" data-role="year"> 670 671 <select class="nm-select nm-select--native nm-select-year" aria-label="Year"> 672 <option value="" selected='selected'>All years</option> 673 <option value="2026" > 674 2026 </option> 675 <option value="2025" > 676 2025 </option> 677 <option value="2024" > 678 2024 </option> 679 </select> 680 681 <button type="button" class="nm-year-btn" data-role="year-btn" aria-haspopup="listbox" aria-expanded="false"> 682 <span class="nm-year-text" data-role="year-text"> 683 All years </span> 684 <i class="fa-solid fa-chevron-down fas fa-chevron-down nm-select-arrow" aria-hidden="true"></i> 685 </button> 686 687 <div class="nm-year-menu" data-role="year-menu" role="listbox" aria-label="Year options"> 688 <button type="button" class="nm-year-opt" data-value="">All years</button> 689 <button type="button" class="nm-year-opt" data-value="2026"> 690 2026 </button> 691 <button type="button" class="nm-year-opt" data-value="2025"> 692 2025 </button> 693 <button type="button" class="nm-year-opt" data-value="2024"> 694 2024 </button> 695 </div> 696 </span> 697 </label> 698 </div> 699 </div> 700 701 <div class="nm-grid" data-role="grid" aria-live="polite"></div> 702 703 <div class="nm-actions"> 704 <nav class="nm-pagination" data-role="pagination" aria-label="Pagination"> 705 <button type="button" class="nm-pagebtn nm-pagebtn--nav" data-role="prev" aria-label="Previous page" disabled> 706 <i class="fa-solid fa-chevron-left fas fa-chevron-left" aria-hidden="true"></i> 707 </button> 708 709 <div class="nm-pages" data-role="pages" aria-label="Pages"></div> 710 711 <button type="button" class="nm-pagebtn nm-pagebtn--nav" data-role="next" aria-label="Next page" disabled> 712 <i class="fa-solid fa-chevron-right fas fa-chevron-right" aria-hidden="true"></i> 713 </button> 714 </nav> 715 </div> 716 </section> 717 718 </section> 719</main> 720 721<footer class="row-footer"> 722 <section class="section row-explore"> 723 <details class="footer-accordion footer-accordion--explore" data-footer-accordion> 724 <summary class="footer-accordion__summary explore-header">
725 <span 726 class="section-label h5 lh-1-1 text-weight-black text-brand-army text-uppercase">Explore KLCC Group</span> 727 <span class="footer-accordion__icon" aria-hidden="true"></span> 728 </summary> 729 <div class="footer-accordion__content"> 730 <div class="explore-grid" aria-label="Explore KLCC Group brands" 731 style="--logo-count:5;--tablet-columns:3;--mobile-columns:2;"> 732 <a target="_blank" rel="noopener" href="https://klccgroup.com.my" 733 class="explore-grid__item"> 734 <figure class="explore-grid__media"> 735 <img src="https://klcc.com.my/wp-content/uploads/2026/06/klcc-logo-color.png" 736 alt="KLCC (Holdings)" loading="lazy" /> 737 </figure> 738 </a> 739 <a target="_blank" rel="noopener" href="https://parking.klcc.com.my/homepage/" 740 class="explore-grid__item"> 741 <figure class="explore-grid__media"> 742 <img src="https://klcc.com.my/wp-content/uploads/2026/06/footer-logo-kpm.png" 743 alt="KPM" loading="lazy" /> 744 </figure> 745 </a> 746 <a target="_blank" rel="noopener" href="https://www.suriaklcc.com.my/" 747 class="explore-grid__item"> 748 <figure class="explore-grid__media"> 749 <img src="https://klcc.com.my/wp-content/uploads/2026/06/suriaklcc-logo-1-1.png" 750 alt="Suria KLCC" loading="lazy" /> 751 </figure> 752 </a> 753 <a target="_blank" rel="noopener" href="https://www.mandarinoriental.com/en/kuala-lumpur/petronas-towers" 754 class="explore-grid__item"> 755 <figure class="explore-grid__media"> 756 <img src="https://klcc.com.my/wp-content/uploads/2026/06/footer-mo.png" 757 alt="Mandarin Oriental, Kuala Lumpur" loading="lazy" /> 758 </figure> 759 </a> 760 <a target="_blank" rel="noopener" href="https://klcctheplace.com.my/" 761 class="explore-grid__item"> 762 <figure class="explore-grid__media"> 763 <img src="https://klcc.com.my/wp-content/uploads/2026/08/[email protected]" 764 alt="KLCC The Place" loading="lazy" /> 765 </figure> 766 </a> 767 </div> 768 </div> 769 </details> 770 <div class="row-footer__content"> 771 <div class="row-footer__summary"> 772 <address class="row-footer__address"> 773 <span>KLCC Property Holdings Berhad</span> 774 <span>Level 33 & 34, Menara Dayabumi</span> 775 <span>Jalan Sultan Hishamuddin</span>
776 <span>50050 Kuala Lumpur</span> 777 <span>Federal Territory of Kuala Lumpur</span> 778 <span>Malaysia</span> 779 </address> 780 </div> 781 <div class="row-footer__menus"> 782 <details class="footer-accordion footer-accordion--links" data-footer-accordion> 783 <summary class="footer-accordion__summary"> 784 <span 785 class="section-label h5 lh-1-1 text-weight-black text-brand-army text-uppercase">Quick Links</span> 786 <span class="footer-accordion__icon" aria-hidden="true"></span> 787 </summary> 788 <div class="footer-accordion__content"> 789 <nav class="row-footer__links" aria-label="Footer"> 790 <ul class="row-footer__link-list"> 791 <li> 792 <a 793 href="https://klcc.com.my/who-we-are/" 794 >About KLCCP Stapled Group</a> 795 </li> 796 <li> 797 <a 798 href="https://klcc.com.my/our-business/" 799 >Our Businesses</a> 800 </li> 801 <li> 802 <a 803 href="https://klcc.com.my/our-portfolio/" 804 >Our Portfolio</a> 805 </li> 806 <li> 807 <a 808 href="https://klcc.com.my/sustainability/" 809 >Sustainability</a> 810 </li> 811 <li> 812 <a 813 href="https://klcc.com.my/investor-relations/" 814 >Investor Relations</a> 815 </li> 816 <li> 817 <a 818 href="https://klcc.com.my/news-and-media/" 819 >News & Media</a> 820 </li> </ul> 821 </nav> 822 </div> 823 </details> 824 </div> 825 <div class="row-footer__right"> 826 <div class="row-footer__cta"> 827 <button class="button sm button--secondary row-footer__social-trigger open-modal" type="button"
828 data-modal-content="footer-social-directory" data-modal-width="limit-width" 829 aria-label="Open social directory" role="button" 830 tabindex="0">Follow Us on Social Media</button> 831 </div> 832 </div> 833 </div> 834 </section> 835 <div class="container row-footer__layout"> 836 <div class="row-footer__meta"> 837 <p class="row-footer__copyright">Copyright © 2026 KLCC Property Holdings Berhad. 200401003073 (641576-U). All rights reserved.</p> 838 <div class="row-footer__policies"> 839 <a href="https://klcc.com.my/whistleblowing/">Whistleblowing</a> 840 <a href="https://klcc.com.my/privacy-policy/">Privacy Policy</a> 841 </div> 842 </div> 843 </div> 844</footer> 845
846<script type="speculationrules"> 847{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/klccp/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]} 848</script>
848 849
849<script> 850 const lazyloadRunObserver = () => { 851 const lazyloadBackgrounds = document.querySelectorAll( `.e-con.e-parent:not(.e-lazyloaded)` ); 852 const lazyloadBackgroundObserver = new IntersectionObserver( ( entries ) => { 853 entries.forEach( ( entry ) => { 854 if ( entry.isIntersecting ) { 855 let lazyloadBackground = entry.target; 856 if( lazyloadBackground ) { 857 lazyloadBackground.classList.add( 'e-lazyloaded' ); 858 } 859 lazyloadBackgroundObserver.unobserve( entry.target ); 860 } 861 }); 862 }, { rootMargin: '200px 0px 200px 0px' } ); 863 lazyloadBackgrounds.forEach( ( lazyloadBackground ) => { 864 lazyloadBackgroundObserver.observe( lazyloadBackground ); 865 } ); 866 }; 867 const events = [ 868 'DOMContentLoaded', 869 'elementor/lazyload/observe', 870 ]; 871 events.forEach( ( event ) => { 872 document.addEventListener( event, lazyloadRunObserver ); 873 } ); 874 </script>
874 875
875<script id="cute-alert-js" src="https://klcc.com.my/wp-content/plugins/metform/public/assets/lib/cute-alert/cute-alert.js?ver=4.2.0"></script>
vendor: 1 bytes, line 875
875
876<script id="klcch-gsap-js" src="https://klcc.com.my/wp-content/themes/klccp/js/vendor/gsap.min.js?ver=1786514800"></script>
vendor: 1 bytes, line 876
876
877<script id="klcch-scrolltrigger-js" src="https://klcc.com.my/wp-content/themes/klccp/js/vendor/ScrollTrigger.min.js?ver=1786514800"></script>
vendor: 1 bytes, line 877
877
878<script id="klcch-lenis-js" src="https://klcc.com.my/wp-content/themes/klccp/js/vendor/lenis.min.js?ver=1786514800"></script>
vendor: 1 bytes, line 878
878
879<script id="klcch-main-js-before"> 880window.KLCC_SOCIAL_DIRECTORY = [{"name":"KLCC Group","website":"","accounts":{"linkedin":"https:\/\/www.linkedin.com\/company\/klcc-group\/posts\/?feedView=all"}},{"name":"KLCC The Place","website":"","accounts":{"instagram":"https:\/\/www.instagram.com\/klcctheplace\/?igshid=YmMyMTA2M2Y%3D","tiktok":"https:\/\/www.tiktok.com\/@klcctheplace?_t=8b17VQoyt3i&_r=1"}},{"name":"Suria KLCC","website":"","accounts":{"facebook":"https:\/\/www.facebook.com\/SuriaKLCCMall\/?_rdc=1&_rdr#","instagram":"https:\/\/www.instagram.com\/suriaklccmall\/","youtube":"https:\/\/www.youtube.com\/channel\/UCLDcOhyCONBhXw0HtKQkqJQ","weibo":"http:\/\/weibo.com\/SuriaKLCC?refer_flag=1005050010_"}},{"name":"Mandarin Oriental","website":"","accounts":{"facebook":"http:\/\/facebook.com\/MandarinOrientalKualaLumpur","instagram":"https:\/\/www.instagram.com\/mo_kualalumpur"}}];window.KLCC_THEME = Object.assign({}, window.KLCC_THEME || {}, {"themeUri":"\/wp-content\/themes\/klccp","homeUrl":"https:\/\/klcc.com.my","searchUrl":"https:\/\/klcc.com.my\/search-result\/","postPopupSlides":["\/wp-content\/themes\/klccp\/images\/hero\/destination-twin-1.jpg","\/wp-content\/themes\/klccp\/images\/hero\/legacy-history-2015.jpg","\/wp-content\/themes\/klccp\/images\/hero\/hero4.jpg","\/wp-content\/themes\/klccp\/images\/hero\/banner-about2.jpg","\/wp-content\/themes\/klccp\/images\/hero\/banner-partnership.jpg"]}); 881//# sourceURL=klcch-main-js-before 882</script>
vendor: 1 bytes, line 882
882
883<script id="klcch-main-js" src="https://klcc.com.my/wp-content/themes/klccp/js/main.js?ver=1786514800"></script>
vendor: 1 bytes, line 883
883
884<script id="klccp-post-popup-slider-js" src="https://klcc.com.my/wp-content/themes/klccp/js/post-popup-slider.js?ver=1786514800"></script>
vendor: 1 bytes, line 884
884
885<script id="klcch-stickyhdr-g7v9kq-v3-js-after"> 886(function(){ 887 var CLS = 'klcchStickyHdr__g7V9kQ'; 888 var BODY_ON = CLS + '--on'; 889 var MQ = window.matchMedia('(max-width: 1366px)'); 890 891 function init(){ 892 var hdr = document.querySelector('.' + CLS); 893 if(!hdr) return; 894 895 var ro = null; 896 897 function setPadding(){ 898 if(!MQ.matches){ 899 document.body.classList.remove(BODY_ON); 900 document.documentElement.style.setProperty('--klcchStickyHdr__g7V9kQ-h', '0px'); 901 return; 902 } 903 904 var h = Math.ceil(hdr.getBoundingClientRect().height || 0); 905 document.documentElement.style.setProperty('--klcchStickyHdr__g7V9kQ-h', h + 'px'); 906 document.body.classList.add(BODY_ON); 907 } 908 909 setPadding(); 910 requestAnimationFrame(setPadding); 911 window.addEventListener('load', setPadding, {passive:true}); 912 window.addEventListener('resize', setPadding, {passive:true}); 913 window.addEventListener('orientationchange', function(){ 914 setTimeout(setPadding, 200); 915 }, {passive:true}); 916 917 if ('ResizeObserver' in window) { 918 ro = new ResizeObserver(function(){ setPadding(); }); 919 ro.observe(hdr); 920 } 921 922 if (MQ.addEventListener) MQ.addEventListener('change', setPadding); 923 else MQ.addListener(setPadding); 924 } 925 926 document.addEventListener('DOMContentLoaded', init); 927})(); 928//# sourceURL=klcch-stickyhdr-g7v9kq-v3-js-after 929</script>
vendor: 1 bytes, line 929
929
930<script id="wp-emoji-settings" type="application/json"> 931{"baseUrl":"https://s.w.org/images/core/emoji/17.0.2/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/17.0.2/svg/","svgExt":".svg","source":{"concatemoji":"https://klcc.com.my/wp-includes/js/wp-emoji-release.min.js?ver=7.1.2"}} 932</script>
vendor: 1 bytes, line 932
932
933<script type="module"> 934/*! This file is auto-generated */ 935var e="script#wp-emoji-settings",t=document.querySelector(e);if(!(t instanceof HTMLScriptElement))throw new Error("Element missing: "+e);const r=JSON.parse(t.text),s=(window._wpemojiSettings=r,"wpEmojiSettingsSupports"),o=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(s,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const r=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===r[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,r){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!r(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,r){let a;const s=(a="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),o=(s.textBaseline="top",s.font="600 32px Arial",{});return e.forEach(e=>{o[e]=t(s,e,n,r)}),o}function a(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}r.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(s));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(o),u.toString(),c.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"});const a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=e=>{i(n=e.data),a.terminate(),t(n)})}catch(e){}i(n=f(o,u,c,p))}t(n)}).then(e=>{for(const n in e)r.supports[n]=e[n],r.supports.everything=r.supports.everything&&r.supports[n],"flag"!==n&&(r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&r.supports[n]);var t;r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&!r.supports.flag,r.supports.everything||((t=r.source||{}).concatemoji?a(t.concatemoji):t.wpemoji&&t.twemoji&&(a(t.twemoji),a(t.wpemoji)))}); 936//# sourceURL=https://klcc.com.my/wp-includes/js/wp-emoji-loader.min.js 937</script>
937 938 <style> 939 .nm-section { 940 padding: 0; 941 } 942 943 .nm-river-gallery .river-card { 944 cursor: pointer; 945 } 946 947 .row-newsroom .nm-section--highlights { 948 width: 100vw; 949 margin-left: calc(50% - 50vw); 950 margin-right: calc(50% - 50vw); 951 } 952 953 .row-newsroom .nm-section--highlights .nm-river-gallery { 954 width: 100%; 955 overflow: hidden; 956 } 957 958 /* Homepage News & Media carousel card size only */ 959 .row-newsroom .nm-section--highlights .nm-river-card { 960 flex: 0 0 340px !important; 961 width: 340px !important; 962 height: 210px !important; 963 } 964 965 .row-newsroom .nm-section--highlights .nm-river-card img, 966 .row-newsroom .nm-section--highlights .nm-river-card__media-ph { 967 width: 100% !important; 968 height: 100% !important; 969 object-fit: cover !important; 970 } 971 972 @media (max-width: 1024px) { 973 .row-newsroom .nm-section--highlights .nm-river-card { 974 flex-basis: 300px !important; 975 width: 300px !important; 976 height: 190px !important; 977 } 978 } 979 980 @media (max-width: 640px) { 981 .row-newsroom .nm-section--highlights .nm-river-card { 982 flex-basis: 260px !important; 983 width: 260px !important; 984 height: 170px !important; 985 } 986 } 987 /* Homepage News & Media carousel card size only */ 988 989 .nm-river-gallery .nm-river-card__media-ph { 990 width: 100%; 991 height: 100%; 992 background: #dbe4ef; 993 } 994 995 .nm-head { 996 display: flex; 997 align-items: flex-end; 998 justify-content: space-between; 999 gap: 24px; 1000 margin-bottom: 48px; 1001 } 1002 1003 .nm-title { 1004 margin: 0; 1005 font-size: 32px; 1006 line-height: 38px; 1007 font-weight: 700; 1008 color: #204a8a; 1009 } 1010 1011 .nm-filters { 1012 display: flex !important; 1013 align-items: baseline !important; 1014 gap: 36px !important; 1015 } 1016 1017 .nm-field { 1018 display: flex !important; 1019 align-items: center !important; 1020 flex-direction: row !important; 1021 gap: 0 !important; 1022 } 1023 1024 .nm-field-label { 1025 display: none !important; 1026 } 1027 1028 .nm-input { 1029 font-family: "Museo Sans", sans-serif !important; 1030 width: 195px !important; 1031 max-width: 100% !important; 1032 border: 0 !important; 1033 border-bottom: 1px solid #204a8a !important; 1034 background: transparent !important; 1035 border-radius: 0 !important; 1036 box-shadow: none !important; 1037 padding: 0 0 6px 0 !important; 1038 outline: 0 !important; 1039 color: #204a8a !important; 1040 font-size: 20px !important; 1041 font-weight: 400 !important; 1042 line-height: 25px !important; 1043 } 1044 1045 .nm-input::placeholder { 1046 font-family: "Museo Sans", sans-serif !important; 1047 color: rgba(51, 51, 51, .55) !important; 1048 font-size: 20px !important; 1049 font-weight: 400 !important; 1050 line-height: 25px !important; 1051 } 1052 1053 .nm-grid { 1054 display: grid; 1055 grid-template-columns: repeat(3, minmax(0, 1fr)) !important; 1056 gap: 24px !important; 1057 align-items: start !important; 1058 } 1059 1060 .nm-grid>* { 1061 min-width: 0 !important; 1062 } 1063 1064 .nm-card { 1065 background: transparent !important; 1066 min-width: 0 !important; 1067 box-shadow: none !important; 1068 transform: none !important; 1069 transition: none !important; 1070 } 1071 1072 .nm-card-hit { 1073 display: block !important; 1074 width: 100% !important; 1075 min-width: 0 !important; 1076 cursor: pointer; 1077 background: transparent !important; 1078 border: 0; 1079 padding: 0; 1080 margin: 0; 1081 text-align: left; 1082 color: inherit; 1083 font: inherit; 1084 text-decoration: none !important; 1085 box-shadow: none !important; 1086 transform: none !important; 1087 transition: none !important; 1088 } 1089 1090 .nm-card-hit * { 1091 white-space: normal !important; 1092 } 1093 1094 .nm-card-hit:hover, 1095 .nm-card-hit:active, 1096 .nm-card-hit:focus, 1097 .nm-card-hit:focus-visible { 1098 background: transparent !important; 1099 box-shadow: none !important; 1100 transform: none !important; 1101 filter: none !important; 1102 outline: none !important; 1103 } 1104 1105 .nm-card-media { 1106 position: relative !important; 1107 width: 100% !important; 1108 aspect-ratio: 4 / 3 !important; 1109 border-radius: 25px !important; 1110 overflow: hidden !important; 1111 } 1112 1113 .nm-card-img, 1114 .nm-card-img--ph { 1115 width: 100% !important; 1116 height: 100% !important; 1117 object-fit: cover !important; 1118 object-position: center !important; 1119 display: block !important; 1120 } 1121 1122 .nm-card-img--ph { 1123 background: #e5e7eb; 1124 } 1125 1126 .nm-chip { 1127 position: absolute; 1128 top: 12px; 1129 right: 12px; 1130 background: #0ea5a3; 1131 color: #fff; 1132 font-size: 11px; 1133 font-weight: 700; 1134 padding: 6px 10px; 1135 border-radius: 999px; 1136 z-index: 2; 1137 } 1138 1139 .nm-grid .nm-chip { 1140 display: none !important; 1141 } 1142 1143 .nm-card-body { 1144 padding: 18px 0 0 !important; 1145 } 1146 1147 .nm-date { 1148 font-family: "Museo Sans", sans-serif !important; 1149 font-size: 14px !important; 1150 font-weight: 700 !important; 1151 line-height: 18px !important; 1152 color: #333333 !important; 1153 margin: 0 0 9px !important; 1154 } 1155 1156 .nm-card-title { 1157 font-family: "Museo Sans", sans-serif !important; 1158 color: #204a8a; 1159 font-size: 17px !important; 1160 font-weight: 700 !important; 1161 line-height: 22px !important; 1162 margin: 0 !important; 1163 min-width: 0 !important; 1164 white-space: normal !important;
1165 overflow-wrap: anywhere !important; 1166 word-break: break-word !important; 1167 } 1168 1169 .nm-card-excerpt { 1170 display: none !important; 1171 } 1172 1173 .nm-actions { 1174 display: flex; 1175 justify-content: center; 1176 margin-top: 50px; 1177 } 1178 1179 .nm-drawer-wrap { 1180 position: fixed; 1181 inset: 0; 1182 z-index: 999999; 1183 display: block !important; 1184 opacity: 0; 1185 visibility: hidden; 1186 pointer-events: none; 1187 transition: opacity .42s ease, visibility 0s linear .42s !important; 1188 } 1189 1190 .nm-drawer-wrap.is-open { 1191 opacity: 1; 1192 visibility: visible; 1193 pointer-events: auto; 1194 transition: opacity .42s ease, visibility 0s linear 0s !important; 1195 } 1196 1197 .nm-drawer-backdrop { 1198 position: absolute; 1199 inset: 0; 1200 background: rgba(17, 24, 39, .45); 1201 opacity: 0; 1202 transition: opacity .42s ease !important; 1203 } 1204 1205 .nm-drawer-wrap.is-open .nm-drawer-backdrop { 1206 opacity: 1; 1207 } 1208 1209 .nm-drawer { 1210 position: absolute; 1211 left: 50%; 1212 top: 50%; 1213 width: min(80vw, calc(100vw - 40px)); 1214 max-width: calc(1200px - 40px); 1215 max-height: min(88vh, calc(100vh - 40px)); 1216 background: #fff; 1217 box-shadow: 0 18px 48px rgba(0, 0, 0, .18); 1218 border-radius: 18px; 1219 padding: 0; 1220 overflow: visible; 1221 transform: translate(-50%, -50%) translateY(48px) scale(.985) !important; 1222 opacity: 0; 1223 transition: 1224 transform .42s cubic-bezier(.22, 1, .36, 1), 1225 opacity .32s ease !important; 1226 will-change: transform, opacity; 1227 } 1228 1229 .nm-drawer-scroll { 1230 width: 100%; 1231 max-height: inherit; 1232 padding: 72px; 1233 overflow: auto; 1234 overflow-x: hidden; 1235 border-radius: inherit; 1236 overscroll-behavior: contain; 1237 -webkit-overflow-scrolling: touch; 1238 -ms-overflow-style: none; 1239 scrollbar-width: none; 1240 } 1241 1242 .nm-drawer-scroll::-webkit-scrollbar {
1243 width: 0; 1244 height: 0; 1245 display: none; 1246 } 1247 1248 .nm-drawer-wrap.is-open .nm-drawer { 1249 transform: translate(-50%, -50%) translateY(0) scale(1) !important; 1250 opacity: 1 !important; 1251 } 1252 1253 .nm-drawer-wrap:not(.is-open) .nm-drawer { 1254 transform: translate(-50%, -50%) translateY(48px) scale(.985) !important; 1255 opacity: 0 !important; 1256 } 1257 1258 @media (prefers-reduced-motion: reduce) { 1259 1260 .nm-drawer-wrap, 1261 .nm-drawer-backdrop, 1262 .nm-drawer { 1263 transition: none !important; 1264 } 1265 } 1266 1267 .nm-drawer-close { 1268 position: absolute; 1269 top: 18px; 1270 right: 18px; 1271 width: 36px; 1272 height: 36px; 1273 border-radius: 999px; 1274 border: 1px solid transparent; 1275 padding: 0; 1276 background: #ff0000; 1277 display: flex; 1278 align-items: center; 1279 justify-content: center; 1280 cursor: pointer; 1281 line-height: 1; 1282 z-index: 10 !important; 1283 pointer-events: auto !important; 1284 } 1285 1286 .nm-drawer-close i { 1287 display: block; 1288 font-size: 16px; 1289 line-height: 1; 1290 color: #ffffff; 1291 } 1292 1293 .nm-drawer-close:hover, 1294 .nm-drawer-close:active, 1295 .nm-drawer-close:focus-visible { 1296 background: transparent !important; 1297 border: 1px solid #ff0000 !important; 1298 } 1299 1300 .nm-drawer-close:hover i, 1301 .nm-drawer-close:active i, 1302 .nm-drawer-close:focus-visible i { 1303 color: #ff0000 !important; 1304 } 1305 1306 .nm-drawer-kicker { 1307 font-family: "Museo Sans", sans-serif !important; 1308 color: #204a8a !important; 1309 font-size: 16px !important; 1310 font-weight: 400 !important; 1311 line-height: 17.6px !important; 1312 letter-spacing: 0 !important; 1313 margin: 0 0 10px !important; 1314 text-transform: none !important; 1315 } 1316 1317 .nm-drawer-title { 1318 color: #204a8a !important; 1319 font-size: 32px !important; 1320 font-weight: 700 !important; 1321 line-height: 38.4px !important; 1322 margin: 0 0 10px !important; 1323 } 1324 1325 .nm-drawer-date { 1326 font-family: Verdana, Geneva, Tahoma, sans-serif !important; 1327 color: #333333 !important; 1328 font-size: 14px !important; 1329 font-weight: 700 !important; 1330 line-height: 23px !important; 1331 margin: 0 0 18px !important; 1332 } 1333 1334 .nm-drawer-content a, 1335 .nm-drawer-content a:visited { 1336 color: #333333 !important; 1337 text-decoration: underline !important; 1338 text-decoration-thickness: 1px; 1339 text-underline-offset: 6px; 1340 } 1341 1342 .nm-drawer-content a:hover, 1343 .nm-drawer-content a:focus { 1344 color: #333333 !important; 1345 text-decoration: underline !important; 1346 } 1347 1348 .nm-drawer-content iframe { 1349 display: block; 1350 width: 100% !important; 1351 max-width: 100% !important; 1352 height: auto !important; 1353 aspect-ratio: 16 / 9; 1354 } 1355 1356 .nm-noscroll { 1357 overflow: hidden !important; 1358 } 1359 1360 .nm-pagination { 1361 display: flex; 1362 align-items: center; 1363 justify-content: center; 1364 gap: 8px; 1365 } 1366 1367 .nm-pages { 1368 display: flex; 1369 align-items: center; 1370 gap: 8px; 1371 } 1372 1373 .nm-pagebtn { 1374 width: 29px !important; 1375 height: 29px !important; 1376 max-width: 29px !important; 1377 max-height: 29px !important; 1378 padding: 0 !important; 1379 border-radius: 8px; 1380 border: 1px solid #e6e6e6 !important; 1381 background: transparent !important; 1382 display: flex; 1383 align-items: center; 1384 justify-content: center; 1385 font-family: "Museo Sans", sans-serif; 1386 font-size: 13px; 1387 font-weight: 700; 1388 line-height: 1; 1389 color: #333333; 1390 cursor: pointer; 1391 box-shadow: none; 1392 transition: background .15s ease, color .15s ease, border-color .15s ease; 1393 } 1394 1395 .nm-pagebtn i { 1396 font-size: 13px; 1397 line-height: 1; 1398 color: inherit; 1399 } 1400 1401 .nm-pagebtn:not([disabled]):hover { 1402 border-color: #204a8a !important; 1403 color: #204a8a !important; 1404 background: transparent !important; 1405 } 1406 1407 .nm-pagebtn:active, 1408 .nm-pagebtn.is-active { 1409 background: #204a8a !important; 1410 border-color: #204a8a !important; 1411 color: #ffffff !important; 1412 } 1413 1414 .nm-pagebtn[disabled], 1415 .nm-pagebtn.is-disabled { 1416 opacity: 1; 1417 color: #cfcfcf; 1418 border-color: #eaeaea;
1419 cursor: not-allowed; 1420 background: transparent !important; 1421 } 1422 1423 .nm-ellipsis { 1424 width: 29px !important; 1425 height: 29px !important; 1426 max-width: 29px !important; 1427 max-height: 29px !important; 1428 border-radius: 8px; 1429 border: 1px solid #e6e6e6; 1430 display: flex; 1431 align-items: center; 1432 justify-content: center; 1433 color: #333333; 1434 font-size: 13px; 1435 font-weight: 700; 1436 line-height: 1; 1437 background: transparent !important; 1438 } 1439 1440 .nm-pagination button { 1441 -webkit-appearance: none; 1442 appearance: none; 1443 } 1444 1445 .nm-grid.is-empty { 1446 display: flex !important; 1447 align-items: center !important; 1448 justify-content: center !important; 1449 } 1450 1451 .nm-empty { 1452 width: 100%; 1453 max-width: 520px; 1454 text-align: center; 1455 padding: 26px 18px; 1456 border: 1px solid rgba(17, 24, 39, .12); 1457 border-radius: 16px; 1458 background: transparent; 1459 } 1460 1461 .nm-empty-icon { 1462 margin-bottom: 10px; 1463 font-size: 20px; 1464 color: #204a8a; 1465 } 1466 1467 .nm-empty-title { 1468 font-family: "Museo Sans", sans-serif; 1469 font-size: 14px; 1470 font-weight: 700; 1471 color: #333333; 1472 margin-bottom: 6px; 1473 } 1474 1475 .nm-empty-desc { 1476 font-family: Verdana, Geneva, Tahoma, sans-serif; 1477 font-size: 12px; 1478 line-height: 18px; 1479 color: #6b7280; 1480 } 1481 1482 .nm-year, 1483 .nm-category { 1484 position: relative; 1485 display: inline-block; 1486 } 1487 1488 .nm-select--native { 1489 position: absolute !important; 1490 inset: auto !important; 1491 width: 1px !important; 1492 height: 1px !important; 1493 opacity: 0 !important; 1494 pointer-events: none !important; 1495 } 1496 1497 .nm-year-btn, 1498 .nm-category-btn { 1499 all: unset; 1500 cursor: pointer; 1501 display: inline-flex; 1502 align-items: center; 1503 justify-content: flex-end; 1504 gap: 18px; 1505 font-family: "Museo Sans", sans-serif; 1506 font-size: 20px; 1507 font-weight: 400; 1508 line-height: 25px; 1509 color: #204a8a; 1510 padding: 0 0 6px 0; 1511 white-space: nowrap; 1512 background: transparent !important; 1513 box-shadow: none !important; 1514 border: 0 !important; 1515 -webkit-tap-highlight-color: transparent; 1516 user-select: none; 1517 } 1518 1519 .nm-year-btn:hover, 1520 .nm-year-btn:active, 1521 .nm-year-btn:focus, 1522 .nm-year-btn:focus-visible, 1523 .nm-category-btn:hover, 1524 .nm-category-btn:active, 1525 .nm-category-btn:focus, 1526 .nm-category-btn:focus-visible { 1527 background: transparent !important; 1528 box-shadow: none !important; 1529 outline: none !important; 1530 color: #204a8a !important; 1531 } 1532 1533 .nm-year-btn .nm-select-arrow, 1534 .nm-category-btn .nm-select-arrow { 1535 position: static; 1536 display: inline-block; 1537 font-size: 14px; 1538 line-height: 1; 1539 color: #204a8a; 1540 transform: rotate(0deg); 1541 transform-origin: center; 1542 transition: transform .25s ease, color .25s ease; 1543 } 1544 1545 .nm-field-year { 1546 width: 140px; 1547 flex: 0 0 140px; 1548 } 1549 1550 .nm-field-category { 1551 min-width: 190px; 1552 flex: 0 1 190px; 1553 } 1554 1555 .nm-year-text, 1556 .nm-category-text { 1557 flex: 1 1 auto; 1558 text-align: right; 1559 overflow: hidden; 1560 text-overflow: ellipsis; 1561 white-space: nowrap; 1562 } 1563 1564 .nm-field-year.is-open .nm-year-btn .nm-select-arrow, 1565 .nm-field-category.is-open .nm-category-btn .nm-select-arrow { 1566 transform: rotate(180deg); 1567 } 1568 1569 .nm-year-menu, 1570 .nm-category-menu { 1571 position: absolute; 1572 top: calc(100% + 10px); 1573 right: 0; 1574 min-width: 180px; 1575 padding: 24px; 1576 border-radius: 12px; 1577 background: rgb(32 74 138 / 0.7); 1578 -webkit-backdrop-filter: blur(18px) saturate(140%); 1579 backdrop-filter: blur(18px) saturate(140%); 1580 display: flex; 1581 flex-direction: column; 1582 gap: 12px; 1583 opacity: 0; 1584 visibility: hidden; 1585 pointer-events: none; 1586 transform: translateY(6px); 1587 transition: opacity .25s ease, transform .25s ease, visibility 0s linear .25s; 1588 z-index: 50; 1589 } 1590 1591 .nm-category-menu { 1592 min-width: 190px; 1593 } 1594 1595 .nm-field-year.is-open .nm-year-menu, 1596 .nm-field-category.is-open .nm-category-menu { 1597 opacity: 1; 1598 visibility: visible; 1599 pointer-events: auto; 1600 transform: translateY(0); 1601 transition: opacity .25s ease, transform .25s ease, visibility 0s linear 0s; 1602 } 1603 1604 .nm-year-opt, 1605 .nm-category-opt { 1606 all: unset; 1607 cursor: pointer; 1608 font-family: "Museo Sans", sans-serif; 1609 font-size: 19px; 1610 line-height: 23px; 1611 color: #ffffff; 1612 text-align: center; 1613 background: transparent !important; 1614 box-shadow: none !important; 1615 border: 0 !important; 1616 transition: background-color .25s ease, color .25s ease; 1617 -webkit-tap-highlight-color: transparent; 1618 user-select: none; 1619 } 1620 1621 .nm-year-opt:hover, 1622 .nm-year-opt:focus, 1623 .nm-year-opt:active, 1624 .nm-year-opt:focus-visible, 1625 .nm-category-opt:hover, 1626 .nm-category-opt:focus, 1627 .nm-category-opt:active, 1628 .nm-category-opt:focus-visible { 1629 background: transparent !important; 1630 box-shadow: none !important; 1631 outline: none !important; 1632 color: #7aa845 !important; 1633 } 1634 1635 @media (max-width: 1024px) { 1636 .nm-grid { 1637 grid-template-columns: repeat(2, minmax(0, 1fr)) !important; 1638 } 1639 } 1640 1641 @media (max-width: 640px) { 1642 .nm-head { 1643 flex-direction: column; 1644 align-items: flex-start; 1645 } 1646 1647 .nm-input { 1648 width: 100%; 1649 max-width: 100%; 1650 } 1651 1652 .nm-grid { 1653 grid-template-columns: 1fr !important; 1654 } 1655
1656 .nm-drawer { 1657 width: min(80vw, calc(100vw - 18px)); 1658 max-width: calc(100vw - 18px); 1659 max-height: 92vh; 1660 } 1661 1662 .nm-drawer-scroll { 1663 padding: 64px 18px 44px; 1664 } 1665 1666 .nm-drawer-title { 1667 font-size: 26px; 1668 line-height: 32px; 1669 } 1670 1671 .nm-filters { 1672 width: 100%; 1673 gap: 18px 24px !important; 1674 flex-wrap: wrap; 1675 justify-content: flex-start !important; 1676 align-items: flex-start !important; 1677 } 1678 1679 .nm-field-keyword { 1680 width: 100%; 1681 flex: 0 0 100%; 1682 } 1683 1684 .nm-field-keyword .nm-input { 1685 width: 100%; 1686 max-width: 100%; 1687 } 1688 1689 .nm-field-category, 1690 .nm-field-year { 1691 min-width: 0; 1692 width: auto; 1693 flex: 0 0 auto; 1694 } 1695 1696 .nm-year, 1697 .nm-category { 1698 display: block; 1699 width: 100%; 1700 } 1701 1702 .nm-year-btn, 1703 .nm-category-btn { 1704 width: 100%; 1705 justify-content: flex-start; 1706 } 1707 1708 .nm-year-text, 1709 .nm-category-text { 1710 text-align: left; 1711 } 1712 1713 .nm-year-menu, 1714 .nm-category-menu { 1715 left: 0; 1716 right: auto; 1717 min-width: 100%; 1718 width: max-content; 1719 max-width: calc(100vw - 32px); 1720 padding: 18px 16px; 1721 box-sizing: border-box; 1722 } 1723 1724 .nm-field-category .nm-category-menu { 1725 left: 0; 1726 right: auto; 1727 } 1728 1729 .nm-field-year .nm-year-menu { 1730 left: 0; 1731 right: auto; 1732 } 1733 1734 .nm-year, 1735 .nm-category { 1736 display: block; 1737 width: 100%; 1738 } 1739 1740 .nm-year-btn, 1741 .nm-category-btn { 1742 width: 100%; 1743 } 1744 1745 .nm-year-menu, 1746 .nm-category-menu { 1747 left: 0; 1748 right: auto; 1749 min-width: 100%; 1750 width: max-content; 1751 max-width: calc(100vw - 32px); 1752 padding: 18px 16px; 1753 box-sizing: border-box; 1754 } 1755 1756 .nm-field-category .nm-category-menu { 1757 left: 0; 1758 right: auto; 1759 } 1760 1761 .nm-field-category+.nm-field-year .nm-year-menu { 1762 left: auto; 1763 right: 0; 1764 } 1765 } 1766 </style> 1767 1768 <div class="nm-drawer-wrap" id="nmDrawer" aria-hidden="true"> 1769 <div class="nm-drawer-backdrop" data-nm-close data-nm-backdrop></div> 1770 <aside class="nm-drawer" role="dialog" aria-modal="true" aria-label="News drawer"> 1771 <button class="nm-drawer-close" type="button" aria-label="Close" data-nm-close> 1772 <i class="fa-solid fa-xmark fas fa-times" aria-hidden="true"></i> 1773 </button> 1774 1775 <div class="nm-drawer-scroll"> 1776 <div class="nm-drawer-inner" id="nmDrawerInner"></div> 1777 </div> 1778 </aside> 1779 </div> 1780 1781
1781<script> 1782 (function () { 1783 const AJAX_URL = "https:\/\/klcc.com.my\/amber-cedar-harbor-k9v3m2x7q4t8\/admin-ajax.php"; 1784 const NONCE = "9fffdd2673"; 1785 1786 const drawerWrap = document.getElementById('nmDrawer'); 1787 const drawerInner = document.getElementById('nmDrawerInner'); 1788 const drawerPanel = drawerWrap ? drawerWrap.querySelector('.nm-drawer') : null; 1789 const drawerEl = drawerWrap ? drawerWrap.querySelector('.nm-drawer-scroll') : null; 1790 const urlParams = new URLSearchParams(window.location.search); 1791 const initialOpenId = parseInt(urlParams.get('nm_open') || '0', 10) || 0; 1792 const initialKeyword = (urlParams.get('nm_kw') || '').trim(); 1793 1794 const lockScroll = (on) => document.documentElement.classList.toggle('nm-noscroll', !!on); 1795 let nmCloseTimer = null; 1796 let nmReturnFocusEl = null; 1797 1798 const __nmScrollLock = { y: 0, on: false, htmlStyle: '', bodyStyle: '' }; 1799 1800 function nmLockBackgroundScroll() { 1801 if (__nmScrollLock.on) return; 1802 1803 __nmScrollLock.y = window.scrollY || window.pageYOffset || 0; 1804 1805 const html = document.documentElement; 1806 const body = document.body; 1807 1808 __nmScrollLock.htmlStyle = html.getAttribute('style') || ''; 1809 __nmScrollLock.bodyStyle = body.getAttribute('style') || ''; 1810 1811 html.classList.add('nm-noscroll'); 1812 body.classList.add('nm-noscroll'); 1813 1814 html.style.setProperty('overflow', 'hidden', 'important'); 1815 html.style.setProperty('height', '100%', 'important'); 1816 1817 body.style.setProperty('overflow', 'hidden', 'important'); 1818 body.style.setProperty('position', 'fixed', 'important'); 1819 body.style.setProperty('top', (-__nmScrollLock.y) + 'px', 'important'); 1820 body.style.setProperty('left', '0', 'important'); 1821 body.style.setProperty('right', '0', 'important'); 1822 body.style.setProperty('width', '100%', 'important'); 1823 1824 __nmScrollLock.on = true; 1825 } 1826 1827 function nmUnlockBackgroundScroll() { 1828 if (!__nmScrollLock.on) return; 1829 1830 const html = document.documentElement; 1831 const body = document.body; 1832 1833 html.classList.remove('nm-noscroll'); 1834 body.classList.remove('nm-noscroll'); 1835 1836 if (__nmScrollLock.htmlStyle) html.setAttribute('style', __nmScrollLock.htmlStyle); 1837 else html.removeAttribute('style'); 1838 1839 if (__nmScrollLock.bodyStyle) body.setAttribute('style', __nmScrollLock.bodyStyle); 1840 else body.removeAttribute('style'); 1841 1842 const y = __nmScrollLock.y; 1843 1844 const prevHtmlStyle = html.getAttribute('style') || ''; 1845 const prevBodyStyle = body.getAttribute('style') || ''; 1846 1847 html.style.setProperty('scroll-behavior', 'auto', 'important'); 1848 body.style.setProperty('scroll-behavior', 'auto', 'important'); 1849 1850 try { 1851 window.scrollTo({ top: y, left: 0, behavior: 'auto' }); 1852 } catch (e) { 1853 window.scrollTo(0, y); 1854 } 1855 1856 if (prevHtmlStyle) html.setAttribute('style', prevHtmlStyle); 1857 else html.removeAttribute('style'); 1858 1859 if (prevBodyStyle) body.setAttribute('style', prevBodyStyle); 1860 else body.removeAttribute('style'); 1861 1862 __nmScrollLock.on = false; 1863 } 1864 1865 function openDrawer(html) { 1866 if (nmCloseTimer) { clearTimeout(nmCloseTimer); nmCloseTimer = null; } 1867 1868 drawerInner.innerHTML = html || ''; 1869 drawerWrap.classList.add('is-open'); 1870 drawerWrap.setAttribute('aria-hidden', 'false'); 1871 nmLockBackgroundScroll(); 1872 1873 if (drawerEl) { 1874 drawerEl.scrollTop = 0; 1875 } 1876 1877 const closeBtn = drawerWrap.querySelector('[data-nm-close]'); 1878 if (closeBtn) { 1879 try { closeBtn.focus({ preventScroll: true }); } 1880 catch (e) { closeBtn.focus(); } 1881 } 1882 } 1883 1884 function closeDrawer() { 1885 if (!drawerWrap.classList.contains('is-open')) return; 1886 1887 drawerWrap.classList.remove('is-open'); 1888 drawerWrap.setAttribute('aria-hidden', 'true'); 1889 1890 nmUnlockBackgroundScroll(); 1891 1892 if (nmReturnFocusEl && typeof nmReturnFocusEl.focus === 'function') { 1893 const y = window.scrollY || window.pageYOffset || 0; 1894 1895 try { nmReturnFocusEl.focus({ preventScroll: true }); }
1896 catch (e) { try { nmReturnFocusEl.focus(); } catch (e2) { } } 1897 1898 requestAnimationFrame(() => { 1899 try { window.scrollTo({ top: y, left: 0, behavior: 'auto' }); } 1900 catch (e) { window.scrollTo(0, y); } 1901 }); 1902 } 1903 1904 if (nmCloseTimer) clearTimeout(nmCloseTimer); 1905 nmCloseTimer = window.setTimeout(() => { 1906 if (!drawerWrap.classList.contains('is-open')) drawerInner.innerHTML = ''; 1907 }, 420); 1908 } 1909 1910 window.nmCloseDrawer = closeDrawer; 1911 1912 (function bindNmScrollGuards() { 1913 if (window.__NM_SCROLL_GUARDS_BOUND__) return; 1914 window.__NM_SCROLL_GUARDS_BOUND__ = true; 1915 1916 let touchStartY = 0; 1917 1918 function isOpen() { 1919 return drawerWrap && drawerWrap.classList.contains('is-open'); 1920 } 1921 1922 function normalizeDeltaY(e) { 1923 let dy = e.deltaY || 0; 1924 1925 if (e.deltaMode === 1) dy *= 16; 1926 else if (e.deltaMode === 2) dy *= (drawerEl ? drawerEl.clientHeight : window.innerHeight); 1927 1928 return dy; 1929 } 1930 1931 function isScrollableY(el) { 1932 if (!el || el === document.body || el === document.documentElement) return false; 1933 const cs = window.getComputedStyle(el); 1934 const oy = cs.overflowY; 1935 if (oy !== 'auto' && oy !== 'scroll') return false; 1936 return el.scrollHeight > el.clientHeight + 1; 1937 } 1938 1939 function findScrollParentY(target) { 1940 let el = target; 1941 while (el && el !== drawerEl && el !== document.body) { 1942 if (isScrollableY(el)) return el; 1943 el = el.parentElement; 1944 } 1945 return drawerEl; 1946 } 1947 1948 document.addEventListener('wheel', function (e) { 1949 if (!isOpen()) return; 1950 1951 const inDrawer = drawerPanel && drawerPanel.contains(e.target); 1952 1953 if (!inDrawer) { 1954 e.preventDefault(); 1955 e.stopPropagation(); 1956 return; 1957 } 1958 1959 const scroller = findScrollParentY(e.target); 1960 if (!scroller) return; 1961 1962 const dy = normalizeDeltaY(e); 1963 if (!dy) return; 1964 1965 e.preventDefault(); 1966 e.stopPropagation(); 1967 1968 scroller.scrollTop = scroller.scrollTop + dy; 1969 }, { passive: false, capture: true }); 1970 1971 document.addEventListener('touchstart', function (e) { 1972 if (!isOpen()) return; 1973 if (!drawerPanel || !drawerPanel.contains(e.target)) return; 1974 if (e.touches && e.touches.length) touchStartY = e.touches[0].clientY; 1975 }, { passive: true, capture: true }); 1976 1977 document.addEventListener('touchmove', function (e) { 1978 if (!isOpen()) return; 1979 1980 const inDrawer = drawerPanel && drawerPanel.contains(e.target); 1981 1982 if (!inDrawer) { 1983 e.preventDefault(); 1984 e.stopPropagation(); 1985 return; 1986 } 1987 1988 if (!drawerEl) return; 1989 1990 const canScroll = drawerEl.scrollHeight > drawerEl.clientHeight + 2; 1991 if (!canScroll) { 1992 e.preventDefault(); 1993 e.stopPropagation(); 1994 return; 1995 } 1996 1997 const y = (e.touches && e.touches.length) ? e.touches[0].clientY : touchStartY; 1998 const delta = y - touchStartY; 1999 2000 const atTop = drawerEl.scrollTop <= 0; 2001 const atBottom = (drawerEl.scrollTop + drawerEl.clientHeight) >= (drawerEl.scrollHeight - 1); 2002 2003 if ((delta > 0 && atTop) || (delta < 0 && atBottom)) { 2004 e.preventDefault(); 2005 e.stopPropagation(); 2006 } 2007 }, { passive: false, capture: true }); 2008 })(); 2009 2010 (function () { 2011 if (window.__nmDrawerCloseBound) return; 2012 window.__nmDrawerCloseBound = true; 2013 2014 document.addEventListener('click', function (e) { 2015 const closeBtn = e.target.closest('[data-nm-close]'); 2016 const backdrop = e.target.closest('[data-nm-backdrop]'); 2017 if (!closeBtn && !backdrop) return; 2018 2019 if (typeof window.nmCloseDrawer === 'function') { 2020 window.nmCloseDrawer(); 2021 } else if (typeof closeDrawer === 'function') { 2022 closeDrawer(); 2023 } else { 2024 2025 const wrap = document.querySelector('.nm-drawer-wrap'); 2026 if (wrap) wrap.classList.remove('is-open'); 2027 document.documentElement.classList.remove('nm-noscroll'); 2028 document.body.classList.remove('nm-noscroll'); 2029 } 2030 }, true); 2031 })(); 2032 2033 drawerWrap.addEventListener('click', (e) => { 2034 if (e.target && e.target.matches('[data-nm-close]')) closeDrawer(); 2035 }); 2036 document.addEventListener('keydown', (e) => { 2037 if (e.key === 'Escape' && drawerWrap.classList.contains('is-open')) closeDrawer(); 2038 }); 2039 2040 function debounce(fn, ms) { 2041 let t; return function (...args) { 2042 clearTimeout(t); t = setTimeout(() => fn.apply(this, args), ms); 2043 } 2044 } 2045 2046 async function postForm(action, data) { 2047 const fd = new FormData(); 2048 fd.append('action', action); 2049 fd.append('nonce', NONCE); 2050 Object.keys(data || {}
2050).forEach(k => fd.append(k, data[k])); 2051 const res = await fetch(AJAX_URL, { method: 'POST', body: fd, credentials: 'same-origin' }); 2052 return res.json(); 2053 } 2054 2055 async function openNewsDrawer(postId, returnFocusEl) { 2056 postId = parseInt(postId || '0', 10); 2057 if (!postId) return; 2058 2059 nmReturnFocusEl = returnFocusEl || null; 2060 openDrawer('<p style="color:#6b7280">Loading...</p>'); 2061 2062 const r = await postForm('nm_single', { post_id: postId }); 2063 if (r && r.success) openDrawer(r.data.html); 2064 else openDrawer('<p style="color:#ef4444">Failed to load.</p>'); 2065 } 2066 2067 function initSection(sectionEl) { 2068 const displayMode = (sectionEl.dataset.display || 'grid').toLowerCase(); 2069 const grid = sectionEl.querySelector('[data-role="grid"]'); 2070 2071 const inputKw = sectionEl.querySelector('.nm-input'); 2072 const selYear = sectionEl.querySelector('.nm-select-year'); 2073 const selCategory = sectionEl.querySelector('.nm-select-category'); 2074 2075 const pager = sectionEl.querySelector('[data-role="pagination"]'); 2076 const btnPrev = sectionEl.querySelector('[data-role="prev"]'); 2077 const btnNext = sectionEl.querySelector('[data-role="next"]'); 2078 const pagesWrap = sectionEl.querySelector('[data-role="pages"]'); 2079 2080 const term = sectionEl.dataset.term || ''; 2081 2082 let perPage = parseInt(sectionEl.dataset.perPage || '3', 10); 2083 2084 let page = 1; 2085 let maxPages = 1; 2086 let keyword = initialKeyword; 2087 let year = sectionEl.dataset.defaultYear || ''; 2088 let category = sectionEl.dataset.defaultCategory || ''; 2089 let lastGridHeight = 0; 2090 2091 const bindOpenHandlers = () => { 2092 sectionEl.addEventListener('click', async (e) => { 2093 const urlHit = e.target.closest('[data-nm-url]'); 2094 if (urlHit) { 2095 const url = urlHit.getAttribute('data-nm-url') || ''; 2096 if (!url) return; 2097 if (urlHit.tagName && urlHit.tagName.toLowerCase() === 'a') return; 2098 e.preventDefault(); 2099 const target = urlHit.getAttribute('data-nm-target') || ''; 2100 if (target === '_blank') window.open(url, '_blank', 'noopener'); 2101 else window.location.href = url; 2102 return; 2103 } 2104 2105 const hit = e.target.closest('[data-nm-open]'); 2106 if (!hit) return; 2107 const postId = hit.getAttribute('data-nm-open'); 2108 openNewsDrawer(postId, hit); 2109 }); 2110 2111 sectionEl.addEventListener('keydown', (e) => { 2112 const urlHit = e.target.closest('[data-nm-url][role="link"]'); 2113 if (urlHit) { 2114 if (e.key !== 'Enter' && e.key !== ' ') return; 2115 e.preventDefault(); 2116 urlHit.click(); 2117 return; 2118 } 2119 2120 const hit = e.target.closest('[data-nm-open][role="button"]'); 2121 if (!hit) return; 2122 if (e.key !== 'Enter' && e.key !== ' ') return; 2123 e.preventDefault(); 2124 hit.click(); 2125 }); 2126 }; 2127 2128 bindOpenHandlers(); 2129 2130 if (displayMode === 'highlights') { 2131 return; 2132 } 2133 2134 if (!grid || !inputKw || !selYear || !btnPrev || !btnNext || !pagesWrap || !pager) { 2135 return; 2136 } 2137 2138 if (initialKeyword) { 2139 inputKw.value = initialKeyword; 2140 } 2141 2142 function isTabletPortrait() { 2143 return window.matchMedia('(min-width: 768px) and (max-width: 1024px) and (orientation: portrait)').matches; 2144 } 2145 2146 function syncPerPageByViewport() { 2147 const base = parseInt(sectionEl.dataset.perPage || '3', 10); 2148 perPage = isTabletPortrait() ? 4 : base; 2149 } 2150 2151 syncPerPageByViewport(); 2152 2153 let lastPer = perPage; 2154 window.addEventListener('resize', debounce(() => { 2155 syncPerPageByViewport(); 2156 if (perPage !== lastPer) { 2157 lastPer = perPage; 2158 page = 1; 2159 load(); 2160 } 2161 }, 150)); 2162 2163 function setDisabled(btn, on) { 2164 btn.disabled = !!on; 2165 btn.classList.toggle('is-disabled', !!on); 2166 } 2167 2168 function buildPageModel(total, current) { 2169 2170 const out = []; 2171 if (total <= 7) { 2172 for (let i = 1; i <= total; i++) out.push(i); 2173 return out; 2174 } 2175 const add = (v) => out.push(v); 2176 add(1); 2177 2178 const left = Math.max(2, current - 1); 2179 const right = Math.min(total - 1, current + 1); 2180 2181 if (left > 2) add('…'); 2182 for (let i = left; i <= right; i++) add(i); 2183 if (right < total - 1) add('…'); 2184 2185 add(total); 2186 return out; 2187 } 2188 2189 function renderPagination() { 2190 2191 setDisabled(btnPrev, page <= 1); 2192 setDisabled(btnNext, page >= maxPages); 2193 2194 const model = buildPageModel(maxPages, page); 2195 pagesWrap.innerHTML = model.map(v => { 2196 if (v === '…') return `<span class="nm-ellipsis">…</span>`;
2197 const active = (v === page) ? 'is-active' : ''; 2198 const ariaCurrent = (v === page) ? 'aria-current="page"' : ''; 2199 return `<button type="button" class="nm-pagebtn ${active}" data-page="${v}" ${ariaCurrent}>${v}</button>`; 2200 }).join(''); 2201 } 2202 2203 async function load() { 2204 setDisabled(btnPrev, true); 2205 setDisabled(btnNext, true); 2206 2207 const r = await postForm('nm_list', { 2208 term, per_page: perPage, page, keyword, year, category 2209 }); 2210 2211 if (!r || !r.success) { 2212 setDisabled(btnPrev, page <= 1); 2213 setDisabled(btnNext, page >= maxPages); 2214 return; 2215 } 2216 2217 maxPages = Math.max(1, parseInt(r.data.max_pages || '1', 10)); 2218 const total = parseInt(r.data.total || '0', 10); 2219 2220 if (total === 0) { 2221 grid.classList.add('is-empty'); 2222 2223 const fallback = 260; 2224 grid.style.minHeight = (lastGridHeight || fallback) + 'px'; 2225 2226 grid.innerHTML = ` 2227 <div class="nm-empty" role="status" aria-live="polite"> 2228 <div class="nm-empty-icon"><i class="fa-solid fa-magnifying-glass fas fa-search" aria-hidden="true"></i></div> 2229 <div class="nm-empty-title">No results found</div> 2230 <div class="nm-empty-desc">Try a different keyword, category, or year filter.</div> 2231 </div> 2232 `; 2233 2234 page = 1; 2235 maxPages = 1; 2236 renderPagination(); 2237 return; 2238 } 2239 2240 grid.classList.remove('is-empty'); 2241 grid.style.minHeight = ''; 2242 grid.innerHTML = r.data.html || ''; 2243 2244 if (page > maxPages) page = maxPages; 2245 2246 renderPagination(); 2247 2248 requestAnimationFrame(() => { 2249 lastGridHeight = grid.offsetHeight; 2250 }); 2251 } 2252 2253 load(); 2254 2255 inputKw.addEventListener('input', debounce((e) => { 2256 keyword = (e.target.value || '').trim(); 2257 page = 1; 2258 load(); 2259 }, 300)); 2260 2261 function bindCustomSelect(config) { 2262 const field = config.field; 2263 const btn = config.btn; 2264 const menu = config.menu; 2265 const textEl = config.textEl; 2266 const nativeSelect = config.nativeSelect; 2267 const optSelector = config.optSelector; 2268 2269 if (!field || !btn || !menu || !nativeSelect) return; 2270 2271 function setOpen(open) { 2272 field.classList.toggle('is-open', !!open); 2273 btn.setAttribute('aria-expanded', open ? 'true' : 'false'); 2274 } 2275 2276 btn.addEventListener('click', (e) => { 2277 e.preventDefault(); 2278 setOpen(!field.classList.contains('is-open')); 2279 }); 2280 2281 menu.addEventListener('click', (e) => { 2282 const opt = e.target.closest(optSelector); 2283 if (!opt) return; 2284 2285 const val = opt.getAttribute('data-value') || ''; 2286 nativeSelect.value = val; 2287 2288 if (textEl) textEl.textContent = opt.textContent.trim(); 2289 setOpen(false); 2290 2291 nativeSelect.dispatchEvent(new Event('change', { bubbles: true })); 2292 }); 2293 2294 document.addEventListener('click', (e) => { 2295 if (!field.classList.contains('is-open')) return; 2296 if (field.contains(e.target)) return; 2297 setOpen(false); 2298 }, true); 2299 2300 document.addEventListener('keydown', (e) => { 2301 if (!field.classList.contains('is-open')) return; 2302 if (e.key === 'Escape') setOpen(false); 2303 }); 2304 2305 nativeSelect.addEventListener('change', (e) => { 2306 if (textEl && e.target.options && e.target.selectedIndex >= 0) { 2307 textEl.textContent = e.target.options[e.target.selectedIndex].text; 2308 } 2309 setOpen(false); 2310 }); 2311 } 2312 2313 const yearField = sectionEl.querySelector('.nm-field-year'); 2314 const yearBtn = sectionEl.querySelector('[data-role="year-btn"]'); 2315 const yearMenu = sectionEl.querySelector('[data-role="year-menu"]'); 2316 const yearText = sectionEl.querySelector('[data-role="year-text"]'); 2317 2318 if (selYear) { 2319 bindCustomSelect({ 2320 field: yearField, 2321 btn: yearBtn, 2322 menu: yearMenu, 2323 textEl: yearText, 2324 nativeSelect: selYear, 2325 optSelector: '.nm-year-opt', 2326 }); 2327 2328 selYear.addEventListener('change', (e) => { 2329 year = e.target.value || ''; 2330 page = 1; 2331 load(); 2332 }); 2333 } 2334 2335 const categoryField = sectionEl.querySelector('.nm-field-category'); 2336 const categoryBtn = sectionEl.querySelector('[data-role="category-btn"]'); 2337 const categoryMenu = sectionEl.querySelector('[data-role="category-menu"]'); 2338 const categoryText = sectionEl.querySelector('[data-role="category-text"]'); 2339 2340 if (selCategory) { 2341 bindCustomSelect({ 2342 field: categoryField, 2343 btn: categoryBtn, 2344 menu: categoryMenu, 2345 textEl: categoryText, 2346 nativeSelect: selCategory, 2347 optSelector: '.nm-category-opt', 2348 }); 2349 2350 selCategory.addEventListener('change', (e) => { 2351 category = e.target.value || ''; 2352 page = 1; 2353 load(); 2354 }); 2355 } 2356 2357 btnPrev.addEventListener('click', () => { 2358 if (page <= 1) return; 2359 page -= 1; 2360 load(); 2361 }); 2362 btnNext.addEventListener('click', () => { 2363 if (page >= maxPages) return; 2364 page += 1; 2365 load(); 2366 }); 2367 2368 pagesWrap.addEventListener('click', (e) => { 2369 const b = e.target.closest('button[data-page]'); 2370 if (!b) return; 2371 const p = parseInt(b.dataset.page, 10); 2372 if (!p || p === page) return; 2373 page = p; 2374 load(); 2375 }); 2376 2377 } 2378 2379 document.querySelectorAll('.nm-section').forEach(initSection); 2380 2381 if (initialOpenId) { 2382 window.setTimeout(() => { 2383 openNewsDrawer(initialOpenId, null); 2384 }, 120); 2385 } 2386 })(); 2387 </script>
2387 2388
2388<script> 2389 (function () { 2390 if (window.__KLCC_AW_AUTOFILL__) return; 2391 window.__KLCC_AW_AUTOFILL__ = true; 2392 2393 var sp = new URLSearchParams(window.location.search); 2394 var kw = sp.get('aw_kw') || ''; 2395 var yr = sp.get('aw_yr') || ''; 2396 var from = sp.get('aw_from') || ''; 2397 2398 if (!kw && !yr && !from) return; 2399 2400 function fire(el) { 2401 if (!el) return; 2402 try { el.dispatchEvent(new Event('input', { bubbles: true })); } catch (e) { } 2403 try { el.dispatchEvent(new Event('change', { bubbles: true })); } catch (e) { } 2404 if (window.jQuery) { 2405 try { window.jQuery(el).trigger('input').trigger('change'); } catch (e) { } 2406 } 2407 } 2408 2409 function applyKeyword() { 2410 if (!kw) return true; 2411 2412 var el = 2413 document.querySelector('#klcc-aw-keyword') || 2414 document.querySelector('.klcc-awards__filters input[name="aw_kw"]') || 2415 document.querySelector('.klcc-awards input[name="aw_kw"]'); 2416 2417 if (!el) return false; 2418 2419 if (String(el.value || '') === String(kw)) return true; 2420 2421 el.value = kw; 2422 fire(el); 2423 2424 return true; 2425 } 2426 2427 function applyYear() { 2428 if (!yr) return true; 2429 2430 var yearField = document.querySelector('.klcc-awards__field.is-year'); 2431 if (!yearField) return false; 2432 2433 var native = yearField.querySelector('select[name="aw_year"].klcc-awards__native'); 2434 var btn = yearField.querySelector('.klcc-awards__selectBtn'); 2435 var txt = yearField.querySelector('.klcc-awards__selectText'); 2436 var opt = yearField.querySelector('.klcc-awards__option[data-value="' + yr + '"]'); 2437 2438 if (native && String(native.value) === String(yr)) { 2439 if (txt && txt.textContent.trim() !== String(yr)) txt.textContent = String(yr); 2440 if (opt && !opt.classList.contains('is-active')) { 2441 var cur = yearField.querySelector('.klcc-awards__option.is-active'); 2442 if (cur) cur.classList.remove('is-active'); 2443 opt.classList.add('is-active'); 2444 } 2445 return true; 2446 } 2447 2448 if (native && String(native.value) !== String(yr)) { 2449 native.value = String(yr); 2450 fire(native); 2451 } 2452 2453 if (btn && btn.getAttribute('aria-expanded') !== 'true') { 2454 try { btn.click(); } catch (e) { } 2455 } 2456 2457 if (opt) { 2458 try { opt.click(); } catch (e) { } 2459 var cur2 = yearField.querySelector('.klcc-awards__option.is-active'); 2460 if (cur2 && cur2 !== opt) cur2.classList.remove('is-active'); 2461 opt.classList.add('is-active'); 2462 } 2463 2464 if (txt) txt.textContent = String(yr); 2465 2466 if (btn && btn.getAttribute('aria-expanded') === 'true') { 2467 try { btn.click(); } catch (e) { } 2468 } 2469 2470 return (native && String(native.value) === String(yr)) || (opt && opt.classList.contains('is-active')); 2471 } 2472 2473 function klcc_aw_scroll_offset() { 2474 var offset = 128; 2475 2476 if (window.matchMedia && window.matchMedia('(max-width: 640px)').matches) { 2477 offset = 86; 2478 } else if (window.matchMedia && window.matchMedia('(max-width: 1100px)').matches) { 2479 offset = 100; 2480 } 2481 2482 var adminBar = document.getElementById('wpadminbar'); 2483 if (adminBar) { 2484 offset += adminBar.offsetHeight || 0; 2485 } 2486 2487 var header = document.querySelector('.elementor-location-header, header.site-header, #masthead, header'); 2488 if (header) { 2489 try { 2490 var pos = window.getComputedStyle(header).position; 2491 if (pos === 'fixed' || pos === 'sticky') { 2492 offset += Math.min(header.offsetHeight || 0, 120); 2493 } 2494 } catch (e) { } 2495 } 2496 2497 return offset; 2498 } 2499 2500 function klcc_aw_target_filter() { 2501 return ( 2502 document.getElementById('atscroll-award-filter') || 2503 document.querySelector('[data-awards-filter]') || 2504 document.querySelector('.klcc-awards__filters') || 2505 document.querySelector('.klcc-awards__field.is-keyword') || 2506 document.querySelector('.klcc-awards') 2507 ); 2508 } 2509 2510 function klcc_aw_scroll_to_y(targetY) { 2511 targetY = Math.max(0, targetY || 0); 2512 2513 if (window.lenis && typeof window.lenis.scrollTo === 'function') { 2514 window.lenis.scrollTo(targetY, { 2515 duration: 0, 2516 immediate: true, 2517 force: true 2518 }); 2519 } else if (window.locomotiveScroll && typeof window.locomotiveScroll.
2519scrollTo === 'function') { 2520 window.locomotiveScroll.scrollTo(targetY, { 2521 duration: 0, 2522 disableLerp: true 2523 }); 2524 } else { 2525 window.scrollTo({ 2526 top: targetY, 2527 behavior: 'auto' 2528 }); 2529 } 2530 } 2531 2532 function klcc_aw_align_filter() { 2533 var el = klcc_aw_target_filter(); 2534 if (!el) return false; 2535 2536 if (!el.id) { 2537 el.id = 'atscroll-award-filter'; 2538 } 2539 2540 try { 2541 el.style.scrollMarginTop = klcc_aw_scroll_offset() + 'px'; 2542 } catch (e) { } 2543 2544 var rect = el.getBoundingClientRect(); 2545 var currentY = window.pageYOffset || document.documentElement.scrollTop || 0; 2546 var targetY = Math.max(0, currentY + rect.top - klcc_aw_scroll_offset()); 2547 2548 if (Math.abs(currentY - targetY) > 4) { 2549 klcc_aw_scroll_to_y(targetY); 2550 } 2551 2552 return true; 2553 } 2554 2555 function klcc_aw_clean_url() { 2556 try { 2557 sp.delete('aw_kw'); 2558 sp.delete('aw_yr'); 2559 sp.delete('aw_from'); 2560 sp.delete('aw_scroll'); 2561 2562 var qs = sp.toString(); 2563 history.replaceState(null, '', window.location.pathname + (qs ? ('?' + qs) : '')); 2564 } catch (e) { } 2565 2566 try { 2567 document.documentElement.classList.remove('klcc-awards-autoscroll-pending'); 2568 } catch (e) { } 2569 2570 try { 2571 if ('scrollRestoration' in history) { 2572 history.scrollRestoration = 'auto'; 2573 } 2574 } catch (e) { } 2575 } 2576 2577 function klcc_aw_run_stable_scroll() { 2578 var tries = 0; 2579 var maxTries = 30; 2580 2581 function step() { 2582 tries++; 2583 2584 var ok = klcc_aw_align_filter(); 2585 2586 if (!ok && tries < maxTries) { 2587 setTimeout(step, 100); 2588 return; 2589 } 2590 2591 if (ok) { 2592 // Small silent corrections for late image/font/layout shifts. 2593 setTimeout(klcc_aw_align_filter, 180); 2594 setTimeout(klcc_aw_align_filter, 520); 2595 setTimeout(klcc_aw_align_filter, 900); 2596 } 2597 } 2598 2599 requestAnimationFrame(function () { 2600 requestAnimationFrame(step); 2601 }); 2602 } 2603 2604 var awScroll = sp.get('aw_scroll') || ''; 2605 var shouldScrollToFilter = !!(kw || yr || from || awScroll === 'filter'); 2606 2607 if (!shouldScrollToFilter) return; 2608 2609 if (!kw && !yr) { 2610 setTimeout(klcc_aw_run_stable_scroll, 80); 2611 setTimeout(klcc_aw_clean_url, 1300); 2612 return; 2613 } 2614 2615 var tries = 0; 2616 var okK = false; 2617 var okY = false;
2618 2619 var timer = setInterval(function () { 2620 tries++; 2621 2622 if (!okK) okK = applyKeyword(); 2623 if (!okY) okY = applyYear(); 2624 2625 if ((kw ? okK : true) && (yr ? okY : true)) { 2626 clearInterval(timer); 2627 2628 setTimeout(klcc_aw_run_stable_scroll, 80); 2629 setTimeout(klcc_aw_clean_url, 1300); 2630 } 2631 2632 if (tries >= 100) { 2633 clearInterval(timer); 2634 2635 setTimeout(klcc_aw_run_stable_scroll, 80); 2636 setTimeout(klcc_aw_clean_url, 1300); 2637 } 2638 }, 100); 2639 2640 })(); 2641 </script>
2641 2642
2642<script> 2643 (function(){ 2644 var SEARCH_RESULTS_URL = "https:\/\/klcc.com.my\/search-result\/"; 2645 2646 function qs(sel, root){ 2647 return (root || document).querySelector(sel); 2648 } 2649 2650 function qsa(sel, root){ 2651 return Array.prototype.slice.call((root || document).querySelectorAll(sel)); 2652 } 2653 2654 function getKeywordFromForm(form){ 2655 if(!form) return ''; 2656 2657 var input = 2658 qs('input[name="q"]', form) || 2659 qs('input[name="s"]', form) || 2660 qs('input[type="search"]', form) || 2661 qs('input[type="text"]', form); 2662 2663 if(!input) return ''; 2664 2665 return (input.value || '').trim(); 2666 } 2667 2668 function normalizeSearchForm(form){ 2669 if(!form || form.getAttribute('data-klcc-custom-search-ready') === '1') return; 2670 2671 form.setAttribute('data-klcc-custom-search-ready', '1'); 2672 form.setAttribute('method', 'get'); 2673 form.setAttribute('action', SEARCH_RESULTS_URL); 2674 2675 var input = 2676 qs('input[name="q"]', form) || 2677 qs('input[name="s"]', form) || 2678 qs('input[type="search"]', form) || 2679 qs('input[type="text"]', form); 2680 2681 if(input){ 2682 input.setAttribute('name', 'q'); 2683 } 2684 2685 form.addEventListener('submit', function(e){ 2686 var keyword = getKeywordFromForm(form); 2687 2688 e.preventDefault(); 2689 e.stopPropagation(); 2690 2691 var url = new URL(SEARCH_RESULTS_URL, window.location.origin); 2692 2693 if(keyword){ 2694 url.searchParams.set('q', keyword); 2695 } 2696 2697 window.location.href = url.toString(); 2698 }, true); 2699 } 2700 2701 function run(){ 2702 /* 2703 * Target the theme search modal / popout form. 2704 * This is intentionally broad but safe: 2705 * it only touches forms related to search modal/search popout. 2706 */ 2707 var forms = []; 2708 2709 qsa('#site-search-modal form').forEach(function(f){ forms.push(f); }); 2710 qsa('#klcc-search-modal form').forEach(function(f){ forms.push(f); }); 2711 qsa('.site-search-modal form').forEach(function(f){ forms.push(f); }); 2712 qsa('.search-modal form').forEach(function(f){ forms.push(f); }); 2713 qsa('[data-modal-content="site-search-modal"]').forEach(function(el){ 2714 var modalId = el.getAttribute('data-modal-content'); 2715 if(modalId){ 2716 qsa('#' + modalId + ' form').forEach(function(f){ forms.push(f); }); 2717 } 2718 }); 2719 2720 /* 2721 * Fallback: any visible search form inside a modal/dialog. 2722 */ 2723 qsa('[role="dialog"] form, .modal form, .popup form').forEach(function(f){ 2724 if( 2725 qs('input[type="search"]', f) || 2726 qs('input[name="s"]', f) || 2727 qs('input[name="q"]', f) 2728 ){ 2729 forms.push(f); 2730 } 2731 }); 2732 2733 forms.forEach(normalizeSearchForm); 2734 } 2735 2736 if(document.readyState === 'loading'){ 2737 document.addEventListener('DOMContentLoaded', run, {once:true}); 2738 }else{ 2739 run(); 2740 } 2741 2742 window.addEventListener('load', function(){ 2743 setTimeout(run, 150); 2744 setTimeout(run, 600); 2745 }); 2746 2747 /* 2748 * For modal content that is injected after clicking search icon. 2749 */ 2750 if('MutationObserver' in window){ 2751 var timer = null; 2752 var mo = new MutationObserver(function(){ 2753 clearTimeout(timer); 2754 timer = setTimeout(run, 120); 2755 }); 2756 2757 mo.observe(document.documentElement, { 2758 childList: true, 2759 subtree: true 2760 }); 2761 } 2762 })(); 2763 </script>
2763 2764
2764<script> 2765 (function () { 2766 if (window.__KLCC_NM_CLOSE_RESTORE_TO_CARD__) return; 2767 window.__KLCC_NM_CLOSE_RESTORE_TO_CARD__ = true; 2768 2769 var lastHit = null; 2770 document.addEventListener('click', function (e) { 2771 var hit = e.target && e.target.closest ? e.target.closest('.nm-card-hit') : null; 2772 if (hit) lastHit = hit; 2773 }, true); 2774 2775 function getCard() { 2776 return lastHit ? (lastHit.closest('.nm-card') || lastHit) : null; 2777 } 2778 2779 function getDocY() { 2780 return window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0; 2781 } 2782 2783 function drawerEl() { 2784 return document.querySelector( 2785 '.nm-drawer, .nm-post-drawer, [data-nm-drawer], [class*="nm-"][class*="drawer"]' 2786 ); 2787 } 2788 2789 function drawerLooksClosed(d) { 2790 if (!d) return true; 2791 if (!d.isConnected) return true; 2792 try { 2793 if (d.hasAttribute('hidden')) return true; 2794 if (d.getAttribute('aria-hidden') === 'true') return true; 2795 var cs = getComputedStyle(d); 2796 if (cs.display === 'none' || cs.visibility === 'hidden') return true; 2797 if (d.classList.contains('is-hidden') || d.classList.contains('is-closed')) return true; 2798 } catch (e) { } 2799 return false; 2800 } 2801 2802 function trySmoothLibScroll(card, offset) { 2803 var l = window.lenis || window.__lenis; 2804 if (l && typeof l.scrollTo === 'function') { 2805 try { l.scrollTo(card, { offset: -offset, immediate: true }); return true; } catch (e) { } 2806 try { 2807 var y = getDocY() + card.getBoundingClientRect().top - offset; 2808 l.scrollTo(y, { immediate: true }); 2809 return true; 2810 } catch (e2) { } 2811 } 2812 2813 var loco = window.locomotiveScroll || window.locoScroll; 2814 if (loco && typeof loco.scrollTo === 'function') { 2815 try { loco.scrollTo(card, { offset: -offset, duration: 0, disableLerp: true }); return true; } catch (e) { } 2816 try { 2817 var y2 = getDocY() + card.getBoundingClientRect().top - offset; 2818 loco.scrollTo(y2, { duration: 0, disableLerp: true }); 2819 return true; 2820 } catch (e2) { } 2821 } 2822 return false; 2823 } 2824 2825 function scrollFallbackTo(card, offset) { 2826 var y = getDocY() + card.getBoundingClientRect().top - offset; 2827 try { window.scrollTo({ top: y, behavior: 'auto' }); } catch (e) { 2828 try { window.scrollTo(0, y); } catch (e2) { } 2829 } 2830 } 2831 2832 function smartScrollToCard(card) { 2833 if (!card) return; 2834 var offset = Math.min(160, window.innerHeight * 0.15); 2835 2836 var used = trySmoothLibScroll(card, offset); 2837 if (!used) scrollFallbackTo(card, offset); 2838 2839 requestAnimationFrame(function () { 2840 requestAnimationFrame(function () { 2841 var used2 = trySmoothLibScroll(card, offset); 2842 if (!used2) scrollFallbackTo(card, offset); 2843 }); 2844 }); 2845 } 2846 2847 function restoreIfJumpedToTop() { 2848 var card = getCard(); 2849 if (!card) return; 2850 if (getDocY() > 80) return; 2851 2852 smartScrollToCard(card); 2853 setTimeout(function () { smartScrollToCard(card); }, 180); 2854 setTimeout(function () { smartScrollToCard(card); }, 520); 2855 setTimeout(function () { smartScrollToCard(card); }, 1200); 2856 } 2857 2858 function watchCloseThenRestore() { 2859 var d = drawerEl(); 2860 var start = Date.now(); 2861 var MAX = 4500; 2862 var done = false; 2863 2864 (function tick() { 2865 if (done) return; 2866 if (drawerLooksClosed(d) || (Date.now() - start > MAX)) { 2867 done = true; 2868 restoreIfJumpedToTop(); 2869 return; 2870 } 2871 requestAnimationFrame(tick); 2872 })(); 2873 2874 setTimeout(restoreIfJumpedToTop, 120); 2875 setTimeout(restoreIfJumpedToTop, 320); 2876 setTimeout(restoreIfJumpedToTop, 900); 2877 setTimeout(restoreIfJumpedToTop, 1600); 2878 } 2879 2880 document.addEventListener('click', function (e) { 2881 var btn = e.target && e.target.closest ? e.target.closest('button.nm-drawer-close[data-nm-close]') : null; 2882 if (!btn) return; 2883 watchCloseThenRestore(); 2884 }, true); 2885 2886 document.addEventListener('keydown', function (e) { 2887 if (e.key !== 'Escape' && e.key !== 'Esc') return; 2888 2889 var d = drawerEl(); 2890 if (!d || drawerLooksClosed(d)) return; 2891 2892 watchCloseThenRestore(); 2893 }, true); 2894 2895 })(); 2896 </script>
2896 2897</body> 2898 2899</html> 2900 2901<!-- Dynamic page generated in 1.819 seconds. --> 2902<!-- Cached page generated by WP-Super-Cache on 2026-10-03 02:15:02 --> 2903 2904<!-- Compression = gzip -->
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.