PageSourceSearch

https://www.ivaninsurance.com/articles

html ivaninsurance.com collected 2026-10-09 00:51:57 UTC 121,405 bytes, 1,553 lines download raw bytes

1<!DOCTYPE html>
2
3<html lang="en">
4  <head>
5    <title>
6      
7        Insights &amp; News | Ivan Insurance Brokers Pte Ltd
8      
9    </title>
10    
11  
12      <meta charset="UTF-8" />
13      <meta name="viewport" content="width=device-width, initial-scale=1.0" />
14    
15
16    
17      <meta name="description" content="Read the latest articles, updates, and expert insights on general insurance, cyber risk, WICA, and more from Ivan Insurance Brokers." />
18      
19      <meta name="robots" content="index, follow" />
20      <link rel="canonical" href="https://www.ivaninsurance.com/articles" />
21      
22        <link rel="alternate" hreflang="en" href="https://www.ivaninsurance.com/articles" />
23      
24      
25        <link rel="alternate"
26              hreflang="x-default"
27              href="https://www.ivaninsurance.com/articles" />
28      
29      <meta http-equiv="content-language" content="en" />
30      
31      <meta property="og:title" content="Insights &amp; News | Ivan Insurance Brokers Pte Ltd" />
32      <meta property="og:description" content="Stay informed with the latest developments, regulations, and insights in Singapore&#x27;s general insurance landscape." />
33      <meta property="og:url" content="https://www.ivaninsurance.com/articles" />
34      <meta property="og:type" content="website" />
35      <meta property="og:locale" content="en" />
36      
37      <meta property="og:site_name" content="Ivan Insurance Brokers" />
38      
39      
40      <meta name="twitter:card" content="summary_large_image" />
41      <meta name="twitter:title" content="Insights &amp; News | Ivan Insurance Brokers Pte Ltd" />
42      <meta name="twitter:description" content="Stay informed with the latest developments, regulations, and insights in Singapore&#x27;s general insurance landscape." />
43      
44    
45    
46    
47<link rel="preconnect" href="https://fonts.googleapis.com">
48<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
49
50
51    <link href="https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,400;0,700;1,400;1,700&display=swap"
52          rel="stylesheet">
53
54
55    
56    
57    
58      
59      
60    
61    
62    
63      
64
65
66    
67        
68            <link rel="stylesheet" type="text/css" href="https://7lscgh819c.koniglecdn.com/css/root-styles-bb33715b.css">
69        
70    
71
72    
73        
74            <link rel="stylesheet" type="text/css" href="https://7lscgh819c.koniglecdn.com/css/ds-stylesheet-099b25bb.css">
75        
76    
77
78
79    
80    
81    
82    
83    
84  
85  
86
87    
88  
89    
90  
90<script type="application/ld+json">
91    {
92        "@context": "http://schema.org",
93        "@type": "WebPage",
94        
95        "name": "Insights &amp; News | Ivan Insurance Brokers Pte Ltd",
96        
97        "description": "Read the latest articles, updates, and expert insights on general insurance, cyber risk, WICA, and more from Ivan Insurance Brokers.",
98        
99        "publisher": {
100            "@type": "Organization",
101            "name": "Ivan Insurance Brokers",
102            
103            "url": "https://www.ivaninsurance.com"
104        }
105    }
106</script>
106
107    
108  
109
110    
111    
112  
113
114    
115
116<script id="layout-context" type="application/json">{"style": {}, "version": "2", "header": null, "footer": null, "main": {"style": {}, "blocks": {"block_ac909f52": {"classes": "", "style": {}, "type": "component", "component_id": "7445052053267333120", "name": "Main content", "disabled": false, "attrs_": {}, "config_": {}, "class_": "", "component": {"type_": "component", "attrs_": {}, "config_": {}, "style_": {}, "class_": "", "disabled_": false, "name_": "Articles", "template_": "articles-4371056b", "version_": "1.0.0", "component_type_": "fluid", "dynamic_component_type_": null, "is_custom_": true, "editor_support_": false, "widget_config_": null}}}, "order": ["block_ac909f52"], "attrs_": {}, "config_": {}, "class_": ""}, "right_sidebar": null, "left_sidebar": null, "css_assets": [], "js_assets": [], "template_id": "7445052054345269248"}</script>
vendor: 1 bytes, line 116
116
117<script id="site-settings" type="application/json">{"brand": {}, "product_listing": {}, "tracking": {}, "watchtower": {"token": "cb5fa8ff26c144529129dad53434d6d7"}, "commerce": {}}</script>
vendor: 1 bytes, line 117
117
118<script id="root-layout-context" type="application/json">{"style": {}, "version": "2", "header": {"style": {}, "blocks": {"header": {"classes": "", "style": {}, "type": "component", "component_id": "7443422698204610560", "name": "Header", "disabled": false, "attrs_": {}, "config_": {}, "class_": "", "component": {"type_": "component", "attrs_": {}, "config_": {}, "style_": {}, "class_": "", "disabled_": false, "name_": "Header Component", "template_": "header-component-c563320e", "version_": "1.0.0", "component_type_": "fluid", "dynamic_component_type_": null, "is_custom_": true, "editor_support_": false, "widget_config_": null}}}, "order": ["header"], "attrs_": {}, "config_": {}, "class_": ""}, "footer": {"style": {}, "blocks": {"footer": {"classes": "", "style": {}, "type": "component", "component_id": "7443422698934419456", "name": "Footer", "disabled": false, "attrs_": {}, "config_": {}, "class_": "", "component": {"type_": "component", "attrs_": {}, "config_": {}, "style_": {}, "class_": "", "disabled_": false, "name_": "Footer Component", "template_": "footer-component-2653ada5", "version_": "1.0.0", "component_type_": "fluid", "dynamic_component_type_": null, "is_custom_": true, "editor_support_": false, "widget_config_": null}}}, "order": ["footer"], "attrs_": {}, "config_": {}, "class_": ""}, "main": null, "right_sidebar": null, "left_sidebar": null, "css_assets": [{"type": "css", "attrs": {}, "code": "__root", "name": "Root stylesheet", "version": null, "asset_id": "300756cf-8403-4e50-bb5f-c7bdc2accfbb", "asset_src": null}, {"type": "css", "attrs": {}, "code": "__custom", "name": "Design System Stylesheet", "version": null, "asset_id": "b99f3a64-59f6-4a87-9203-f63e94a7a43d", "asset_src": null}], "js_assets": [{"type": "js", "attrs": {}, "code": "__custom", "name": "Theme JS", "version": null, "asset_id": "79114464-f324-4848-9891-50e5ad934f31", "asset_src": null}], "template_id": "7443419814620418048"}</script>
vendor: 1 bytes, line 118
118
119<script>
120    window.konigle = {
121        apiServer: "https://tim.konigle.com",
122        csrfToken: "laFB3GF0ZKCdkdLd9fxYivNLtcMfxURP6mthoD3oUpUZVr2G7VsXjVm1Kqe63Jnl",
123        userAuthenticated: false,
124        isPreview: false,
125        pageVersion: "A",
126        profitjs: {
127            pageType: "page",
128            resourceId: "7445052052222951424",
129            accessToken: "9f628bb97e9d4fe79bb0622096d5ce13",
130            server: "https://tim.konigle.com"
131        },
132        watchtower: {
133            token: "cb5fa8ff26c144529129dad53434d6d7",
134            pageType: "2",
135            pageId: "7445052052222951424",
136            pageVersion: "A",
137            server: "https://tim.konigle.com",
138            disable: false
139        }
140    };
141
142    
143    (function() {
144        const siteSettings = document.querySelector('script[id="site-settings"][type="application/json"]');
145        if (siteSettings) {
146            try {
147                const data = JSON.parse(siteSettings.textContent || "{}");
148                window.konigle.settings = data;
149                siteSettings.remove();
150            } catch (e) {
151                console.error("Failed to parse site settings:", e);
152            }
153        }
154    })();
155
156    
157
158    
159    window.addEventListener('auth:login-widget:authenticated', function () {
160        window.konigle.userAuthenticated = true;
161    });
162
163    class ComponentContextManager {
164        constructor() {
165            this.components = new Map();
166        }
167
168        init(){
169            this.parseLayoutContext();
170        }
171
172        handleLayout(layout){
173            const segments = ['main', 'header', 'footer'];
174            segments.forEach((segment) => {
175                if (layout[segment] && layout[segment].blocks) {
176                    for(const [blockKey, block] of Object.entries(layout[segment].blocks)){
177                        if(block.component && block.component_id){
178                            this.components.set(block.component_id, block.component);
179                        }
180                    }
181                }
182            });
183            
184        }
185
186        parseLayoutContext(){
187            ['layout-context', 'root-layout-context'].forEach((id) => {
188                const layoutJson = document.querySelector(`script[id='${id}'][type='application/json']`);
189                if (layoutJson) {
190                    try {
191                        const data = JSON.parse(layoutJson.textContent || "{}");
192                        this.handleLayout(data);
193                        // remve the dom element after parsing
194                        layoutJson.remove();
195                    } catch (e) {
196                        console.error(`Failed to parse JSON for ${id}:`, e);
197                    }
198                }
199            });
200        }
201
202        getComponent(componentId) {
203            return this.components.get(componentId) || {};
204        }
205
206        getComponentConfig(componentId){
207            const component = this.getComponent(componentId);
208            return component.config_ || {};
209        }
210    }
211    if (!window.konigle.componentContextManager) {
212        window.konigle.componentContextManager = new ComponentContextManager();
213        window.konigle.componentContextManager.init();
214    }
215    window.konigle.getComponentConfig = function(componentId) {
216        if (!window.konigle.componentContextManager) {
217            console.error("ComponentContextManager is not initialized.");
218            return {};
219        }
220        return window.konigle.componentContextManager.getComponentConfig(componentId);
221    };
222    window.konigle.getComponentContext = function(componentId) {
223        if (!window.konigle.componentContextManager) {
224            console.error("ComponentContextManager is not initialized.");
225            return {}
226        }
227        return window.konigle.componentContextManager.getComponent(componentId);
228    };
229
230</script>
230
231
232
233    
234        
234<script src="/static/sitekit/js/vendor/jquery-3.7.1.min.js"></script>
234
235    
236    
237
238
239    
240    
241      
242      <style>
243        .bg-header {
244          background-color: None;
245        }
246        .border-header {
247          border-color: ;
248        }
249        .text-header {
250          display: inline-block;
251          color: ;
252          border-color: transparent;
253          border-radius: 0.375rem;
254          transition: transform 0.3s ease-out;
255        }
256        .text-header:hover {
257          transform: scale(1.1);
258          color: ;
259          border-color: ;
260        }
261    </style>
262    
263      
264    
265    <style>
266      [x-cloak] {
267        display: none !important;
268      }
269    </style>
270    
271    
272  
273  
274
275    
276    
277      
278        
279          <link rel="icon" type="image/png" href="data:image/png;base64,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">
280        
281      
282    
283    <!-- Built with Hostbento — https://hostbento.com -->
284    <meta name="generator" content="Hostbento">
285  </head>
286  
287  
288  
289    
290    <body class="flex min-h-screen flex-col justify-between"
291          >
292      
293        
294        
295        
296          
297            
298<div data-node-type="segment"
299     data-template-id="7443419814620418048"
300     data-node-key="header"
301     
302     style="">
303    
304        
305            
306                
307                    <!-- component could be deleted but still the ID maybe present in the template. -->
308                    
309                        <div class="w-full" style=""  data-node-type="block" data-node-key="header" data-component-id="7443422698204610560" >
310                            
311
312    
313    
314        <link rel="preconnect" href="https://fonts.googleapis.com">
315<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
316<link href="https://fonts.googleapis.com/css2?family=Hind:wght@400;500;600;700&family=Noto+Serif:ital,wght@0,400;0,700;1,400&display=swap" rel="stylesheet">
317
318<header class="site-header" role="banner">
319  <div class="container">
320    <a href="/" class="nav-logo" aria-label="Ivan Insurance Brokers Pte Ltd — Home">
321      <div class="nav-logo-icon" style="background:transparent;">
322        <img src="data:image/png;base64,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" alt="Ivan Insurance Brokers Pte Ltd" width="42" height="42">
323      </div>
324      <div class="nav-logo-text">
325        <strong>Ivan Insurance Brokers Pte Ltd</strong>
326        <span>Direct Insurance Broker · Singapore</span>
327      </div>
328    </a>
329    <nav aria-label="Main navigation">
330      <ul class="nav-links">
331        <li><a href="/">Home</a></li>
332        <li><a href="/about">About</a></li>
333        <li><a href="/products">Products</a></li>
334        <li><a href="/claims">Claims</a></li>
335        <li><a href="/faq">FAQ</a></li>
336        <li><a href="/#partners">Partners</a></li>
337        <li><a href="/articles">Articles</a></li>
338        <li><a href="/contact">Contact</a></li>
339        <li><a href="/#buy-online" class="nav-cta-buy">⚡ Buy Online</a></li>
340        <li><a href="/contact" class="nav-cta">Get a Quote</a></li>
341      </ul>
342    </nav>
343    <button class="hamburger" aria-label="Toggle menu" aria-expanded="false" onclick="toggleMenu()">
344      <span></span><span></span><span></span>
345    </button>
346  </div>
347</header>
348
349<div class="mobile-nav" id="mobileNav" role="navigation" aria-label="Mobile navigation">
350  <a href="/" onclick="closeMenu()">Home</a>
351  <a href="/about" onclick="closeMenu()">About Us</a>
352  <a href="/products" onclick="closeMenu()">Products</a>
353  <a href="/claims" onclick="closeMenu()">Claims</a>
354  <a href="/faq" onclick="closeMenu()">FAQ</a>
355  <a href="/#partners" onclick="closeMenu()">Partners</a>
356  <a href="/articles" onclick="closeMenu()">Articles</a>
357  <a href="/contact" onclick="closeMenu()">Contact</a>
358  <div style="display:flex;gap:8px;padding:14px 16px;">
359    <a href="https://www.facebook.com/ivaninsurance" target="_blank" rel="noopener noreferrer" class="social-icon" style="border:1.5px solid var(--border);border-radius:10px;width:40px;height:40px;" aria-label="Facebook"><svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor"><path d="M18 2h-3a5 5 0 00-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 011-1h3z"/></svg></a>
360    <a href="https://www.instagram.com/ivaninsurance" target="_blank" rel="noopener noreferrer" class="social-icon" style="border:1.5px solid var(--border);border-radius:10px;width:40px;height:40px;" aria-label="Instagram"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="2" width="20" height="20" rx="5"/><path d="M16 11.37A4 4 0 1112.63 8 4 4 0 0116 11.37z"/><line x1="17.5" y1="6.5" x2="17.51" y2="6.5"/></svg></a>
361    <a href="https://www.linkedin.com/company/ivan-insurance-brokers" target="_blank" rel="noopener noreferrer" class="social-icon" style="border:1.5px solid var(--border);border-radius:10px;width:40px;height:40px;" aria-label="LinkedIn"><svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor"><path d="M16 8a6 6 0 016 6v7h-4v-7a2 2 0 00-4 0v7h-4v-7a6 6 0 016-6zM2 9h4v12H2zM4 6a2 2 0 110-4 2 2 0 010 4z"/></svg></a>
362  </div>
363  <a href="/#buy-online" class="nav-cta-buy-mobile" onclick="closeMenu()">⚡ Buy Online — Instant Cover</a>
364  <a href="/contact" class="nav-cta-mobile" onclick="closeMenu()">Get a Quote</a>
365</div>
366    
367
368
369                        </div>
370                        
371                        
372<div x-data="searchModal" @search-open.window="handleOpen($event.detail)">
373    
374    <div x-show="isOpen"
375         x-cloak
376         x-on:keydown.window.escape="handleClose()"
377         class="fixed inset-0 z-50"
378         aria-labelledby="search-modal"
379         role="dialog"
380         aria-modal="true">
381        <!-- Background backdrop, show/hide based on modal state. -->
382        <div x-show="isOpen"
383             x-transition.opacity.duration.500ms
384             class="fixed inset-0 bg-gray-500 bg-opacity-75 transition-opacity"></div>
385        <div x-show="isOpen"
386             x-transition:enter="transition ease-in-out duration-500"
387             x-transition:enter-start="translate-y-full"
388             x-transition:enter-end="translate-y-0"
389             x-transition:leave="transition ease-in-out duration-500"
390             x-transition:leave-start="translate-y-0"
391             x-transition:leave-end="translate-y-full"
392             class="fixed inset-0 z-10 w-screen">
393            <div class="flex flex-col h-full justify-end items-center">
394                <!-- Modal panel, show/hide based on modal state. -->
395                <div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-5 gap-4 grow bg-white w-full max-h-full shadow-xl">
396                    <div class="col-span-1 lg:col-span-2 px-4 sm:p-8">
397                        <div class="h-24 sm:h-32 mb-8 flex flex-col justify-end items-start">
398                            <h2 class="text-4xl sm:text-6xl font-bold text-gray-900">Search</h2>
399                        </div>
400                        <!-- Search bar and button. -->
401                        
402<form class="flex flex-row justify-between items-center w-full"
403      x-on:submit="query($event, searchValue)">
404    <label for="" class="sr-only">Search</label>
405    <div class="relative flex-grow rounded-lg transition focus-within:drop-shadow-md">
406        <!-- Search icon adornment. -->
407        <div class="pointer-events-none absolute inset-y-0 left-0 flex items-center pl-3"
408             aria-hidden="true">
409            <svg xmlns="http://www.w3.org/2000/svg"
410                 viewBox="0 0 20 20"
411                 fill="currentColor"
412                 class="w-5 h-5 text-gray-400">
413                <path fill-rule="evenodd" d="M9 3.5a5.5 5.5 0 100 11 5.5 5.5 0 000-11zM2 9a7 7 0 1112.452 4.391l3.328 3.329a.75.75 0 11-1.06 1.06l-3.329-3.328A7 7 0 012 9z" clip-rule="evenodd" />
414            </svg>
415        </div>
416        <input id="search"
417               type="text"
418               name="search"
419               class="block transition w-full rounded-t-lg py-1.5 px-10 text-gray-900 bg-gray-100 placeholder:text-gray-400 sm:text-sm sm:leading-6 border-t-0 border-x-0 border-b-2 border-b-gray-200 focus:border-b-primary focus:ring-0"
420               placeholder="Search anything"
421               x-model="searchValue"
422               x-on:input.debounce.500ms="query($event, searchValue)">
423        <!-- Invisible button to capture Enter key. -->
424        <button type="submit" hidden aria-hidden="true"></button>
425        <!-- Clear input button. -->
426        <button type="button"
427                x-on:click="handleClear()"
428                x-show="searchValue"
429                class="absolute inset-y-0 right-0 flex items-center pr-3 transition hover:opacity-50"
430                aria-label="clear-search">
431            <svg xmlns="http://www.w3.org/2000/svg"
432                 viewBox="0 0 20 20"
433                 fill="currentColor"
434                 class="w-5 h-5 text-gray-400"
435                 aria-hidden="true">
436                <path d="M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z" />
437            </svg>
438        </button>
439    </div>
440    <!-- Search arrow icon button. -->
441    <button type="submit"
442            class="btn-icon ml-2 text-gray-500"
443            x-bind:disabled="isLoading"
444            aria-label="query-search">
445        <!-- Loading indicator. -->
446        <svg xmlns="http://www.w3.org/2000/svg"
447             fill="none"
448             viewBox="0 0 24 24"
449             stroke-width="1.5"
450             stroke="currentColor"
451             class="w-6 h-6 animate-pulse"
452             x-show="isLoading"
453             aria-hidden="true">
454            <path stroke-linecap="round" stroke-linejoin="round" d="M6.75 12a.75.75 0 11-1.5 0 .75.75 0 011.5 0zM12.75 12a.75.75 0 11-1.5 0 .75.75 0 011.5 0zM18.75 12a.75.75 0 11-1.5 0 .75.75 0 011.5 0z" />
455        </svg>
456        <!-- Arrow when not loading. -->
457        <svg xmlns="http://www.w3.org/2000/svg"
458             fill="none"
459             viewBox="0 0 24 24"
460             stroke-width="1.5"
461             stroke="currentColor"
462             class="w-6 h-6"
463             x-show="!isLoading"
464             aria-hidden="true">
465            <path stroke-linecap="round" stroke-linejoin="round" d="M13.5 4.5L21 12m0 0l-7.5 7.5M21 12H3" />
466        </svg>
467    </button>
468</form>
469
470                        <!-- "Nothing found" indicator. -->
471                        <div class="relative my-2 prose prose-a:text-primary"
472                             x-show="resultGroups?.length === 0 && searchValue && hasSearched"
473                             x-transition.opacity>
474                            
475                                <p class="text-sm">Can't find what you're looking for!</p>
476                            
477                        </div>
478                    </div>
479                    <div class="col-span-1 lg:col-span-3 overflow-auto grow px-4 sm:p-8 bg-gray-50 rounded-t-2xl sm:rounded-tr-none sm:rounded-bl-2xl"
480                         x-show="resultGroups?.length"
481                         x-transition.opacity>
482                        <!-- Displaces list to same level as search bar. -->
483                        <div class="h-16 sm:h-32 mb-8 flex flex-col justify-end items-start">
484                            <!-- Results count. -->
485                            <h3 class="text-2xl sm:text-3xl font-semibold text-gray-900"
486                                x-text="`${searchCount} result${searchCount > 1 ? 's' : ''}`"></h3>
487                        </div>
488                        <!-- Search results list. -->
489                        
490<ul role="list">
491    <template x-for="group in resultGroups">
492        <li class="mb-4">
493            <!-- Result group title. -->
494            <div class="pb-2">
495                <h3 class="text-base font-semibold leading-6 text-gray-900"
496                    x-text="group.title"></h3>
497            </div>
498            <!-- Results list. -->
499            <ul role="list">
500                <template x-for="result in group.results">
501                    <a x-bind:href="result?.url">
502                        <li class="relative flex justify-between gap-x-6 px-4 py-5 rounded-lg transition hover:bg-white hover:shadow-md sm:px-6 lg:px-8">
503                            <div class="flex min-w-0 gap-x-4">
504                                <div class="min-w-0 flex-auto">
505                                    <p class="text-sm font-semibold leading-6 text-gray-900"
506                                       x-text="result?.title"></p>
507                                    <p class="mt-1 flex text-xs leading-5 text-gray-500"
508                                       x-text="result?.subtitle"></p>
509                                </div>
510                            </div>
511                            <!-- Right caret. -->
512                            <div class="flex shrink-0 items-center gap-x-4" aria-hidden="true">
513                                <svg class="h-5 w-5 flex-none text-gray-400"
514                                     viewBox="0 0 20 20"
515                                     fill="currentColor">
516                                    <path fill-rule="evenodd" d="M7.21 14.77a.75.75 0 01.02-1.06L11.168 10 7.23 6.29a.75.75 0 111.04-1.08l4.5 4.25a.75.75 0 010 1.08l-4.5 4.25a.75.75 0 01-1.06-.02z" clip-rule="evenodd" />
517                                </svg>
518                            </div>
519                        </li>
520                    </a>
521                </template>
522            </ul>
523        </li>
524    </template>
525</ul>
526
527                    </div>
528                </div>
529            </div>
530        </div>
531        <!-- Top right button group. -->
532        <div class="absolute top-4 right-4 z-10"
533             x-on:click="handleClose()"
534             x-show="isOpen"
535             x-transition.duration.300ms.delay.500ms>
536            <!-- Close button. -->
537            <button class="flex flex-row items-center group bg-white text-gray-700 rounded-full p-2 transition drop-shadow-md hover:drop-shadow-lg"
538                    type="button">
539                <!-- Expanding text on hover. -->
540                <span class="text-sm text-left font-normal transition-all w-0 group-hover:w-12 ps-0 group-hover:ps-1 opacity-0 group-hover:opacity-100 -translate-x-12 group-hover:translate-x-0">Close</span>
541                <svg xmlns="http://www.w3.org/2000/svg"
542                     fill="none"
543                     viewBox="0 0 24 24"
544                     stroke-width="1.5"
545                     stroke="currentColor"
546                     class="w-6 h-6"
547                     aria-hidden="true">
548                    <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12" />
549                </svg>
550            </button>
551        </div>
552    </div>
553</div>
554
555                    
556                
557            
558        
559    
560</div>
561
562          
563        
564        
565        <main class="flex-grow flex flex-col relative "
566              data-node-type="segment"
567              data-template-id="7445052054345269248"
568              data-node-key="main"
569              style="">
570          
571    
572    
573        <div class="relative flex flex-col w-full">
574            
575                
576                    
577                        
578                            <div   data-select-key="block_ac909f52"  data-node-type="block" data-node-key="block_ac909f52"  data-select-type="block"  data-component-id="7445052053267333120">
579                                
580
581    
582    
583        <a href="#main-content" class="skip-link">Skip to main content</a>
584
585<main id="main-content">
586
587<!-- ════════ ARTICLES ════════ -->
588<section class="articles-section" id="articles" style="padding-top: 140px;">
589  <div class="container">
590    <div class="section-header center fade-up">
591      <div class="section-label">Insights &amp; News</div>
592      <h2 class="section-title">Insurance Articles &amp; <em class="accent-serif">Updates</em></h2>
593      <p class="section-sub">Stay informed with the latest developments in Singapore's general insurance landscape.</p>
594    </div>
595    <div class="articles-grid">
596      <article class="article-card fade-up">
597        <div class="article-thumb" style="background:linear-gradient(135deg,#12265E,#0C1A42)"><span class="article-category">Regulation</span><div class="article-thumb-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg></div></div>
598        <div class="article-body"><div class="article-date">20 February 2026</div><h3>MAS Raises Capital Requirements for General Insurers: What It Means for Policyholders</h3><p>Singapore's MAS has strengthened solvency standards under the updated RBC 2 framework. We explain what this means for your policy security.</p><span class="read-more">Read Article →</span></div>
599      </article>
600      <article class="article-card fade-up">
601        <div class="article-thumb" style="background:linear-gradient(135deg,#0C1A42,#12265E)"><span class="article-category">Construction</span><div class="article-thumb-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M2 20h20"/><path d="M5 20V10l7-5 7 5v10"/></svg></div></div>
602        <div class="article-body"><div class="article-date">8 February 2026</div><h3>Rising Construction Costs: How Contractors Can Manage Insurance Exposure</h3><p>With material costs climbing, under-insurance is a growing risk. Learn how to review declared values and avoid devastating shortfalls at claims time.</p><span class="read-more">Read Article →</span></div>
603      </article>
604      <article class="article-card fade-up">
605        <div class="article-thumb" style="background:linear-gradient(135deg,#12265E,#1E3A7A)"><span class="article-category">Cyber Risk</span><div class="article-thumb-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><rect x="2" y="3" width="20" height="14" rx="2"/><line x1="8" y1="21" x2="16" y2="21"/><line x1="12" y1="17" x2="12" y2="21"/></svg></div></div>
606        <div class="article-body"><div class="article-date">25 January 2026</div><h3>Singapore SMEs Are Prime Targets for Cyber Attacks — Is Your Business Protected?</h3><p>CSA data shows SMEs account for a growing share of ransomware attacks. We break down why cyber liability insurance is no longer optional.</p><span class="read-more">Read Article →</span></div>
607      </article>
608      <article class="article-card fade-up">
609        <div class="article-thumb" style="background:linear-gradient(135deg,#12265E,#0C1A42)"><span class="article-category">Motor</span><div class="article-thumb-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><rect x="1" y="3" width="15" height="13" rx="2"/><path d="M16 8h3l3 3v5h-6V8z"/><circle cx="5.5" cy="18.5" r="2.5"/><circle cx="18.5" cy="18.5" r="2.5"/></svg></div></div>
610        <div class="article-body"><div class="article-date">12 January 2026</div><h3>Understanding NCD in Singapore: How to Protect Your 50% Savings</h3><p>Your No-Claims Discount can save up to 50%. We explain how it works, what causes you to lose it, and whether NCD protection is worth the cost.</p><span class="read-more">Read Article →</span></div>
611      </article>
612      <article class="article-card fade-up">
613        <div class="article-thumb" style="background:linear-gradient(135deg,#1E3A7A,#12265E)"><span class="article-category">Business</span><div class="article-thumb-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><rect x="2" y="7" width="20" height="14" rx="2"/><path d="M16 7V5a2 2 0 00-2-2h-4a2 2 0 00-2 2v2"/></svg></div></div>
614        <div class="article-body"><div class="article-date">3 January 2026</div><h3>WICA 2025 Updates: Revised Compensation Limits for Employers</h3><p>The Work Injury Compensation Act has revised claim limits. We outline the key changes and what employers must do to stay compliant.</p><span class="read-more">Read Article →</span></div>
615      </article>
616      <article class="article-card fade-up">
617        <div class="article-thumb" style="background:linear-gradient(135deg,#0C1A42,#12265E)"><span class="article-category">Guide</span><div class="article-thumb-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><circle cx="12" cy="12" r="10"/><path d="M2 12h20"/><path d="M12 2a15.3 15.3 0 014 10 15.3 15.3 0 01-4 10 15.3 15.3 0 01-4-10 15.3 15.3 0 014-10z"/></svg></div></div>
618        <div class="article-body"><div class="article-date">18 December 2025</div><h3>Broker vs Agent: Understanding the Difference and Why It Matters</h3><p>Many Singaporeans don't know the difference. We explain the key distinctions and why working with a broker 
618can get you better coverage.</p><span class="read-more">Read Article →</span></div>
619      </article>
620    </div>
621  </div>
622</section>
623
624</main>
625    
626
627
628                            </div>
629                        
630                    
631                
632            
633        </div>
634    
635
636
637
638        </main>
639        <h3 class="z-50 bg-green-500 px-4 py-2 text-md rounded-md text-white drop-shadow-md fixed top-4 right-4  hidden -translate-y-32 transition ease-in-out duration-500 max-w-md"
640            id="message-success"></h3>
641        <h3 class="z-50 bg-red-600 px-4 py-2 text-md rounded-md text-white drop-shadow-md fixed top-4 right-4  hidden -translate-y-32 transition ease-in-out duration-500 max-w-md"
642            id="message-error"></h3>
643        <div id="profitjs"></div>
644        <div>
645          
646            
647              
648<div id="page-footer"
649     
650     
651     data-node-type="segment"
652     data-template-id="7443419814620418048"
653     data-node-key="footer">
654    
655        
656            
657                
658                    <!-- component could be deleted but still the ID maybe present in the template. -->
659                    
660                        
661                        
662                            <div   data-select-key="footer"  data-node-type="block" data-node-key="footer" data-component-id="7443422698934419456"  data-select-type="block" >
663                                
664
665    
666    
667        <footer class="site-footer" role="contentinfo">
668  <div class="container">
669    <div class="footer-grid">
670      <div class="footer-brand">
671        <img src="data:image/png;base64,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" alt="Ivan Insurance Brokers Pte Ltd" style="max-width:240px;height:auto;margin-bottom:4px;">
672        <p>A Singapore MAS Licensed Direct Insurance Broker providing expert, unbiased advice and comprehensive coverage solutions since 1993. Proud member of the Steadfast Group.</p>
673        <a href="https://eservices.mas.gov.sg/fid/institution/detail/239564-IVAN-INSURANCE-BROKERS-PTE-LTD" target="_blank" rel="noopener noreferrer" class="mas-badge" style="color: white; border-color: rgba(255,255,255,0.3); background: rgba(255,255,255,0.1);">
674          <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg>
675          MAS Registered Direct Insurance Broker
676        </a>
677        <div class="social-icons footer-social" style="display: flex; gap: 12px; margin-top: 16px;">
678          <a href="https://www.facebook.com/ivaninsurance" target="_blank" rel="noopener noreferrer" class="social-icon" aria-label="Facebook"><svg width="24" height="24" viewBox="0 0 24 24" fill="currentColor"><path d="M18 2h-3a5 5 0 00-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 011-1h3z"/></svg></a>
679          <a href="https://www.instagram.com/ivaninsurance" target="_blank" rel="noopener noreferrer" class="social-icon" aria-label="Instagram"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="2" width="20" height="20" rx="5"/><path d="M16 11.37A4 4 0 1112.63 8 4 4 0 0116 11.37z"/><line x1="17.5" y1="6.5" x2="17.51" y2="6.5"/></svg></a>
680          <a href="https://www.linkedin.com/company/ivan-insurance-brokers" target="_blank" rel="noopener noreferrer" class="social-icon" aria-label="LinkedIn"><svg width="24" height="24" viewBox="0 0 24 24" fill="currentColor"><path d="M16 8a6 6 0 016 6v7h-4v-7a2 2 0 00-4 0v7h-4v-7a6 6 0 016-6zM2 9h4v12H2zM4 6a2 2 0 110-4 2 2 0 010 4z"/></svg></a>
681        </div>
682      </div>
683      <div class="footer-col">
684        <h4>Quick Links</h4>
685        <a href="/">Home</a>
686        <a href="/about">About Us</a>
687        <a href="/products">Products</a>
688        <a href="/#buy-online">Buy Online</a>
689        <a href="/claims">Claims</a>
690        <a href="/#partners">Our Partners</a>
691        <a href="/articles">Articles</a>
692        <a href="/contact">Get a Quote</a>
693      </div>
694      <div class="footer-col">
695        <h4>Buy Online</h4>
696        <a href="/#buy-online">Travel Insurance</a>
697        <a href="/#buy-online">Home Insurance</a>
698        <a href="/#buy-online">Personal Accident</a>
699        <a href="/#buy-online">Maid Insurance</a>
700        <h4 style="margin-top:20px;">More Products</h4>
701        <a href="/products#product-project">Project Insurance</a>
702        <a href="/products#product-pi">Professional Indemnity</a>
703        <a href="/products#product-do">Directors &amp; Officers</a>
704        <a href="/products#product-wica">WICA</a>
705      </div>
706      <div class="footer-col">
707        <h4>Contact</h4>
708        <a href="/contact">22 Sin Ming Lane, #06-71<br>Midview City, S(573969)</a>
709        <a href="tel:+6564400220">+65 6440 0220</a>
710        <a href="mailto:[email protected]">[email protected]</a>
711        <a href="mailto:[email protected]">[email protected] (Claims)</a>
712        <a href="https://wa.me/6591590039" target="_blank" rel="noopener noreferrer">WhatsApp: 9159 0039</a>
713        <a href="https://crm.ivaninsurance.com" target="_blank" rel="noopener noreferrer" class="footer-crm-link" style="display:inline-flex; align-items:center; gap:6px;">
714          <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="width: 16px; height: 16px;"><rect x="2" y="3" width="20" height="14" rx="2"/><line x1="8" y1="21" x2="16" y2="21"/><line x1="12" y1="17" x2="12" y2="21"/></svg>
715          IIB CRM Portal →
716        </a>
717      </div>
718    </div>
719    <div class="footer-bottom">
720      <span>&copy; 2026 Ivan Insurance Brokers Pte Ltd. All rights reserved.</span>
721      <span>UEN: 201811693C · <a href="https://eservices.mas.gov.sg/fid/institution/detail/239564-IVAN-INSURANCE-BROKERS-PTE-LTD" target="_blank" rel="noopener noreferrer" style="color:rgba(255,255,255,0.7);text-decoration:underline;">MAS Registered Insurance Broker</a></span>
722    </div>
723  </div>
724</footer>
725
726<!-- ════════ AI CHATBOT ════════ -->
727<button class="chatbot-fab" id="chatbotFab" aria-label="Ask Ivan" onclick="toggleChatbot()">
728  <svg class="fab-open" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="width:24px; height:24px;"><path d="M21 15a2 2 0 01-2 2H7l-4 4V5a2 2 0 012-2h14a2 2 0 012 2z"/><circle cx="9" cy="10" r="1" fill="currentColor"/><circle cx="15" cy="10" r="1" fill="currentColor"/></svg>
729  <svg class="fab-close" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="width:24px; height:24px;"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg>
730</button>
731
732<div class="chatbot-panel" id="chatbotPanel">
733  <div class="chatbot-header">
734    <div class="chatbot-header-avatar">
735      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" style="width:20px; height:20px;"><path d="M12 2a7 7 0 017 7v1a7 7 0 01-14 0V9a7 7 0 017-7z"/><path d="M5 12v2a7 7 0 0014 0v-2"/><circle cx="9" cy="10" r="1" fill="currentColor"/><circle cx="15" cy="10" r="1" fill="currentColor"/></svg>
736    </div>
737    <div class="chatbot-header-info">
738      <h4>Ask Ivan</h4>
739      <span>Your Insurance AI Assistant</span>
740    </div>
741  </div>
742  <div class="chatbot-messages" id="chatMessages">
743    <div class="chat-msg bot">
744      <div class="chat-avatar">🛡️</div>
745      <div>
746        <div class="chat-bubble">Hi! I'm Ivan, your AI insurance assistant. I can help with questions about coverage, claims, and our services. How can I help you today?</div>
747        <div class="chat-quick-btns">
748          <button class="chat-quick-btn" onclick="sendQuickMsg('What types of insurance do you offer?')">Your products</button>
749          <button class="chat-quick-btn" onclick="sendQuickMsg('How do I file a claim?')">File a claim</button>
750          <button class="chat-quick-btn" onclick="sendQuickMsg('Can I buy insurance online?')">Buy online</button>
751          <button class="chat-quick-btn" onclick="sendQuickMsg('What makes a broker different from an agent?')">Broker vs agent</button>
752        </div>
753      </div>
754    </div>
755  </div>
756  <div class="chatbot-input-area">
757    <input type="text" class="chatbot-input" id="chatInput" placeholder="Type your question..." onkeydown="if(event.key==='Enter')sendChatMsg()">
758    <button class="chatbot-send" id="chatSend" onclick="sendChatMsg()" aria-label="Send message">
759      <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" style="width:18px; height:18px;"><line x1="22" y1="2" x2="11" y2="13"/><polygon points="22 2 15 22 11 13 2 9 22 2"/></svg>
760    </button>
761  </div>
762</div>
763
764<!-- Floating WhatsApp -->
765<a href="https://wa.me/6591590039" class="wa-float" target="_blank" rel="noopener noreferrer" aria-label="Chat with us on WhatsApp">
766  <svg viewBox="0 0 24 24" fill="currentColor" style="width:28px; height:28px;"><path d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413z"/></svg>
767</a>
768<div class="wa-float-tooltip">WhatsApp: 9159 0039</div>
769
770<!-- ════════ SCRIPTS ════════ -->
771<script>
772// ── Centralised Config ──
773const CONFIG = {
774  whatsapp: '6591590039',
775  phone: '+6564400220',
776  email: '[email protected]',
777  address: '22 Sin Ming Lane, #06-71, Midview City, Singapore 573969'
778};
779
780// Apply WhatsApp links
781document.querySelectorAll('a[href*="wa.me"]').forEach(el => {
782  el.href = 'https://wa.me/' + CONFIG.whatsapp;
783});
784
785// ── Mobile menu ──
786function toggleMenu() {
787  const btn = document.querySelector('.hamburger');
788  const nav = document.getElementById('mobileNav');
789  const isOpen = nav.classList.toggle('open');
790  btn.classList.toggle('open');
791  btn.setAttribute('aria-expanded', isOpen);
792  document.body.style.overflow = isOpen ? 'hidden' : '';
793}
794function closeMenu() {
795  document.querySelector('.hamburger').classList.remove('open');
796  document.getElementById('mobileNav').classList.remove('open');
797  document.querySelector('.hamburger').setAttribute('aria-expanded', 'false');
798  document.body.style.overflow = '';
799}
800
801// ── Scroll-reveal ──
802function initScrollReveal() {
803  const observer = new IntersectionObserver((entries) => {
804    entries.forEach(entry => {
805      if (entry.isIntersecting) { entry.target.classList.add('visible'); observer.unobserve(entry.target); }
806    });
807  }, { threshold: 0.08, rootMargin: '0px 0px -30px 0px' });
808  document.querySelectorAll('.fade-up').forEach(el => observer.observe(el));
809}
810
811if (document.readyState === 'loading') {
812  document.addEventListener('DOMContentLoaded', initScrollReveal);
813} else {
814  initScrollReveal();
815}
816
817// ══════════════════════════════════════════════
818// EXPANDABLE PRODUCT CARDS
819// ══════════════════════════════════════════════
820function initProductsGrid() {
821  const PRODUCTS = [
822    { id:'product-project', icon:'<path d="M2 20h20"/><path d="M5 20V10l7-5 7 5v10"/><path d="M9 20v-5h6v5"/>', title:'Project Insurance', desc:'End-to-end coverage for construction &amp; engineering projects.' },
823    { id:'product-pi', icon:'<path d="M20 7h-9"/><path d="M14 17H5"/><circle cx="17" cy="17" r="3"/><circle cx="7" cy="7" r="3"/>', title:'Professional Indemnity', desc:'Protection against negligence, errors, or misconduct claims.' },
824    { id:'product-do', icon:'<path d="M16 21v-2a4 4 0 00-4-4H6a4 4 0 00-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M22 21v-2a4 4 0 00-3-3.87"/><path d="M16 3.13a4 4 0 010 7.75"/>', title:'Directors &amp; Officers', desc:'Shielding leadership from personal liability.' },
825    { id:'product-bond', icon:'<path d="M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8z"/><polyline points="14 2 14 8 20 8"/><line x1="16" y1="13" x2="8" y2="13"/><line x1="16" y1="17" x2="8" y2="17"/>', title:'Performance Bonds', desc:'Surety bonds that preserve your working capital.' },
826    { id:'product-eb', icon:'<path d="M17 21v-2a4 4 0 00-4-4H5a4 4 0 00-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M23 21v-2a4 4 0 00-3-3.87"/><path d="M16 3.13a4 4 0 010 7.75"/>', title:'Employee Benefits', desc:'Group medical, dental, and life cover for your team.' },
827    { id:'product-liability', icon:'<path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/>', title:'Liability Insurance', desc:'Public, product, and events liability under one umbrella.' },
828    { id:'product-cyber', icon:'<rect x="2" y="3" width="20" height="14" rx="2"/><line x1="8" y1="21" x2="16" y2="21"/><line x1="12" y1="17" x2="12" y2="21"/>', title:'Cyber Insurance', desc:'Data breach, ransomware, and cyber liability protection.' },
829    { id:'product-wica', icon:'<path d="M22 12h-4l-3 9L9 3l-3 9H2"/>', title:'Work Injury Compensation', desc:'Mandatory WICA coverage for all employers in Singapore.' },
830    { id:'product-fwm', icon:'<path d="M16 21v-2a4 4 0 00-4-4H6a4 4 0 00-4 4v2"/><circle cx="9" cy="7" r="4"/><line x1="19" y1="8" x2="19" y2="14"/><line x1="22" y1="11" x2="16" y2="11"/>', title:'Foreign Worker Medical', desc:'Medical insurance for Work Permit &amp; S Pass holders.' },
831    { id:'product-auto', icon:'<rect x="1" y="3" width="15" height="13" rx="2"/><path d="M16 8h3l3 3v5h-6V8z"/><circle cx="5.5" cy="18.5" r="2.5"/><circle cx="18.5" cy="18.5" r="2.5"/>', title:'Auto &amp; Home', desc:'Motor and property insurance for personal assets.', buyOnline:true },
832    { id:'product-biz', icon:'<rect x="2" y="7" width="20" height="14" rx="2"/><path d="M16 7V5a2 2 0 00-2-2h-4a2 2 0 00-2 2v2"/>', title:'Business Insurance', desc:'Fire, liability, interruption — all under one broker.' },
833    { id:'product-maid', icon:'<path d="M3 9l9-7 9 7v11a2 2 0 01-2 2H5a2 2 0 01-2-2z"/><polyline points="9 22 9 12 15 12 15 22"/>', title:'Maid Insurance', desc:'MOM-required coverage for foreign domestic workers.', buyOnline:true },
834    { id:'product-travel', icon:'<circle cx="12" cy="12" r="10"/><path d="M2 12h20"/><path d="M12 2a15.3 15.3 0 014 10 15.3 15.3 0 01-4 10 15.3 15.3 0 01-4-10 15.3 15.3 0 014-10z"/>', title:'Travel Insurance', desc:'Medical, cancellation, and baggage cover worldwide.', buyOnline:true },
835  ];
836
837  const grid = document.getElementById('productsGrid');
838  const expandContainer = document.getElementById('expandContainer');
839  if(!grid || !expandContainer) return;
840  let activeId = null;
841
842  PRODUCTS.forEach(p => {
843    const card = document.createElement('div');
844    card.className = 'product-card';
845    card.setAttribute('data-target', p.id);
846    card.setAttribute('role', 'button');
847    card.setAttribute('tabindex', '0');
848    card.setAttribute('aria-expanded', 'false');
849    card.innerHTML = '<div class="service-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">' + p.icon + '</svg></div><h3>' + p.title + (p.buyOnline ? '<span class="buy-badge"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"/></svg>Buy Online</span>' : '') + '</h3><p>' + p.desc + '</p><span class="card-arrow">View Details →</span>';
850    card.addEventListener('click', () => toggleProduct(p.id));
851    card.addEventListener('keydown', (e) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); toggleProduct(p.id); }});
852    grid.appendChild(card);
853  });
854
855  const expandWra
855p = document.createElement('div');
856  expandWrap.className = 'product-expand-wrap';
857  expandWrap.id = 'productExpandWrap';
858  expandWrap.innerHTML = '<div class="product-expand-inner" id="productExpandInner"><button class="close-panel" aria-label="Close details" onclick="window._closeProduct()">✕</button><div id="productExpandContent"></div></div>';
859  expandContainer.appendChild(expandWrap);
860
861  function toggleProduct(id) {
862    const wrap = document.getElementById('productExpandWrap');
863    const content = document.getElementById('productExpandContent');
864    const allCards = grid.querySelectorAll('.product-card');
865
866    if (activeId === id) {
867      wrap.classList.remove('open');
868      allCards.forEach(c => { c.classList.remove('active'); c.setAttribute('aria-expanded', 'false'); });
869      activeId = null;
870      return;
871    }
872
873    const sourceBlock = document.getElementById(id);
874    if (!sourceBlock) return;
875
876    content.innerHTML = sourceBlock.innerHTML;
877
878    allCards.forEach(c => {
879      const isTarget = c.getAttribute('data-target') === id;
880      c.classList.toggle('active', isTarget);
881      c.setAttribute('aria-expanded', isTarget ? 'true' : 'false');
882    });
883
884    const targetCard = grid.querySelector('[data-target="' + id + '"]');
885    const cardTop = targetCard.offsetTop;
886    const rowCards = Array.from(allCards).filter(c => Math.abs(c.offsetTop - cardTop) < 5);
887    const lastInRow = rowCards[rowCards.length - 1];
888
889    if (lastInRow.nextElementSibling !== wrap) {
890      lastInRow.after(wrap);
891    }
892
893    if (!wrap.classList.contains('open')) {
894      wrap.classList.add('open');
895    }
896
897    activeId = id;
898
899    setTimeout(() => {
900      wrap.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
901    }, 100);
902  }
903
904  window._closeProduct = function() {
905    const wrap = document.getElementById('productExpandWrap');
906    wrap.classList.remove('open');
907    grid.querySelectorAll('.product-card').forEach(c => { c.classList.remove('active'); c.setAttribute('aria-expanded', 'false'); });
908    activeId = null;
909  };
910}
911
912if (document.readyState === 'loading') {
913  document.addEventListener('DOMContentLoaded', initProductsGrid);
914} else {
915  initProductsGrid();
916}
917
918// ══════════════════════════════════════════════
919// CLAIMS TABS
920// ══════════════════════════════════════════════
921function initClaimsTabs() {
922  const CLAIMS = [
923    { id:'project', title:'Project Insurance', tag:'CAR / EAR',
924      icon:'<path d="M2 20h20"/><path d="M5 20V10l7-5 7 5v10"/><path d="M9 20v-5h6v5"/>',
925      steps:['Notify us and the insurer within 24–48 hours of the incident','Do NOT move or repair damaged works until the loss adjuster has inspected (unless to prevent further damage)','Secure the site and take detailed photos/videos from multiple angles','Prepare a written incident report — what happened, when, which sections affected','Obtain contractor/sub-contractor statements and witness accounts','Cooperate with the loss adjuster during their site inspection'],
926      docs:['Completed claim form','Police report (if theft, vandalism, or third-party involvement)','Incident/site report with date, time, location, description','Photos and videos of damage','Repair/reinstatement quotations','Contract documents showing insured values','Third-party claim letters (if liability section triggered)'],
927      tips:['Notify immediately — delayed notification is the #1 reason claims are disputed','Never authorise repairs before the adjuster visits unless to mitigate further loss','Keep all damaged materials on site for inspection','Separate insured repair costs from normal project costs clearly']
928    },
929    { id:'pi', title:'Professional Indemnity', tag:'PI Claims',
930      icon:'<path d="M20 7h-9"/><path d="M14 17H5"/><circle cx="17" cy="17" r="3"/><circle cx="7" cy="7" r="3"/>',
931      steps:['Notify us immediately upon receiving any claim letter, demand, or complaint — even if unfounded','Do NOT admit liability, make settlement offers, or respond to the claimant without insurer approval','Gather all project files, correspondence, contracts, and deliverables','Prepare a detailed timeline of events leading to the alleged error','Cooperate fully with the insurer\'s appointed solicitors'],
932      docs:['Completed claim form','Demand letter or formal complaint received','Your engagement letter/contract with the client','All correspondence relating to the matter','Project files, reports, or deliverables in question','Your written account of events'],
933      tips:['PI policies are "claims-made" — report in the policy period you first become aware','Never admit fault, even informally via email or WhatsApp','Report potential claims too — if you suspect a client may claim, notify us early','Late notification can void your coverage entirely']
934    },
935    { id:'do', title:'Directors & Officers', tag:'D&O',
936      icon:'<path d="M16 21v-2a4 4 0 00-4-4H6a4 4 0 00-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M22 21v-2a4 4 0 00-3-3.87"/><path d="M16 3.13a4 4 0 010 7.75"/>',
937      steps:['Notify us as soon as any director/officer becomes aware of a claim, investigation, or regulatory proceeding','Do NOT engage external lawyers or incur defence costs without insurer\'s prior written consent','Preserve all board minutes, resolutions, and internal communications','Prepare a factual summary and identify all individuals named','Follow the insurer\'s directions for legal defence coordination'],
938      docs:['Completed claim form','Claim letter, writ, or regulatory notice','Board meeting minutes related to the decision','Relevant financial statements','Company Articles of Association','List of all directors and officers with roles'],
939      tips:['D&O is claims-made — report circumstances immediately, even before formal action','Defence costs erode the policy limit — monitor legal spend closely','Side A coverage is critical when the company cannot indemnify','Ensure all directors are aware of notification obligations']
940    },
941    { id:'bond', title:'Performance Bonds', tag:'Surety',
942      icon:'<path d="M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8z"/><polyline points="14 2 14 8 20 8"/><line x1="16" y1="13" x2="8" y2="13"/><line x1="16" y1="17" x2="8" y2="17"/>',
943      steps:['Notify us immediately if the beneficiary issues a demand on the bond','Do NOT ignore bond call letters — strict timelines apply','Gather all evidence that contractual obligations have been met','Provide written grounds for disputing the bond call, if applicable','Work with us and the insurer to respond within the stipulated timeframe'],
944      docs:['Bond call / demand letter','Original bond instrument','Main contract and variation orders','Progress reports and payment certificates','Correspondence with the beneficiary','Evidence of contract performance / completion'],
945      tips:['Bond calls are time-sensitive — delayed response may result in automatic payment','Maintain proper project documentation throughout the contract','Communicate proactively with the project owner to resolve disputes before a bond call','Unconditional bonds can be called without proving default — prevention is key']
946    },
947    { id:'eb', title:'Employee Benefits', tag:'Group Medical / Life',
948      icon:'<path d="M17 21v-2a4 4 0 00-4-4H5a4 4 0 00-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M23 21v-2a4 4 0 00-3-3.87"/><path d="M16 3.13a4 4 0 010 7.75"/>',
949      steps:['For hospitalisation — use the insurer\'s Letter of Guarantee for cashless admission; contact us to arrange','For outpatient/GP claims — submit receipts within 30 days of treatment','For life/AD&D claims — notify us within 14 days','Complete the relevant claim form with supporting medical documentation','HR to submit claims via the insurer portal or through us'],
950      docs:['Completed claim form (hospitalisation / outpatient / life)','Original medical receipts and invoices','Medical report or discharge summary','Specialist referral letter (if required)','Death certificate and cause of death (for life claims)','Employee NRIC or Work Permit details'],
951      tips:['Check if the hospital is a panel hospital — cashless admission saves time','Pre-authorisation is required for elective surgery — apply before admission','Keep original receipts; photocopies generally not accepted','Claims beyond the policy limit are the employee\'s responsibility']
952    },
953    { id:'liability', title:'Liability Insurance', tag:'Public / Product / Events',
954      icon:'<path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/>',
955      steps:['Notify us immediately — do not wait for a formal demand letter','Do NOT admit liability, apologise in a way that admits fault, or offer compensation directly','Secure the scene (especially for public liability) and take detailed photos','Obtain witness contact details and written statements','If anyone is injured, ensure medical attention and record details','File a police report if bodily injury, significant damage, or potential legal action'],
956      docs:['Completed claim form','Incident report (date, time, location, what happened)','Photos/videos of scene, injuries, or damage','Police report (if applicable)','Witness statements with contact details','Third-party demand letters','Medical bills / repair invoices from the injured party'],
957      tips:['Verbal apologies can be used against you in court — stick to factual statements','Preserve CCTV footage immediately — many systems auto-delete within 7–14 days','For product liability — retain the defective product and batch records','Events liability: report even minor incidents — they may escalate']
958    },
959    { id:'cyber', title:'Cyber Insurance', tag:'Data Breach / Ransomware',
960      icon:'<rect x="2" y="3" width="20" height="14" rx="2"/><line x1="8" y1="21" x2="16" y2="21"/><line x1="12" y1="17" x2="12" y2="21"/>',
961      steps:['Contact us IMMEDIATELY — time is critical (ideally within hours)','Do NOT pay ransom, communicate with hackers, or attempt fixes without expert guidance','Isolate affected systems to prevent spread but do NOT power off (preserves forensic evidence)','Activate your breach response plan; the insurer can deploy specialist incident response','Determine if personal data is compromised — PDPA notification may be required within 3 days','Document the timeline, actions taken, and all communications'],
962      docs:['Completed claim form','Incident timeline (when discovered, actions taken)','IT forensic report (insurer typically appoints specialists)','Evidence of attack (screenshots, ransom notes, logs)','List of affected systems and data','PDPC notification records (if breach threshold met)','Business interruption calculations'],
963      tips:['First 24 hours are critical — late notification worsens outcomes and may affect coverage','Do NOT wipe or rebuild systems before forensic investigation','Keep communication off compromised systems (use personal phones or new email)','PDPA mandatory notification to PDPC if significant harm is likely — 3-day clock starts at assessment']
964    },
965    { id:'wica', title:'Work Injury Compensation', tag:'WICA',
966      icon:'<path d="M22 12h-4l-3 9L9 3l-3 9H2"/>',
967      steps:['Provide immediate medical attention to the injured employee','Report the work injury to MOM within 10 days (24 hours if fatal or hospitalisation 24+ hours)','Notify us and the WICA insurer promptly','Maintain records of medical leave and treatment progress','Cooperate with MOM and the insurer during assessment'],
968      docs:['Completed WICA claim form','MOM incident report (Form IR1 via iReport)','Medical certificate and medical report','Work Permit / S Pass details','Wage records for 12 months preceding the injury','Incident report describing how the injury occurred','Hospital bills and receipts'],
969      tips:['Late reporting to MOM is an offence — the 10-day deadline is strict','Do not terminate the employee while the claim is being processed','Temporary incapacity compensation must be paid on pay day — insurer reimburses you','Track total MC days — this determines compensation amount']
970    },
971    { id:'fwm', title:'Foreign Worker Medical', tag:'Work Permit / S Pass',
972      icon:'<path d="M16 21v-2a4 4 0 00-4-4H6a4 4 0 00-4 4v2"/><circle cx="9" cy="7" r="4"/><line x1="19" y1="8" x2="19" y2="14"/>
972<line x1="22" y1="11" x2="16" y2="11"/>',
973      steps:['Bring the worker to a panel clinic or nearest hospital','Use the insurer\'s card or Letter of Guarantee for cashless admission','Collect all medical bills, receipts, and discharge summary','Complete and submit claim form within 30 days','Contact us if the bill is expected to exceed the policy limit'],
974      docs:['Completed claim form','Original medical bills and receipts','Medical report or discharge summary','Worker\'s Work Permit / S Pass details','Employer\'s company details and policy number'],
975      tips:['MOM requires minimum S$15,000/year coverage — check limits before renewal','Use panel hospitals for cashless treatment','Non-work-related conditions are also covered (unlike WICA — work injuries only)','Keep the policy active for the entire Work Permit duration']
976    },
977    { id:'auto', title:'Motor Insurance', tag:'Auto Claims',
978      icon:'<rect x="1" y="3" width="15" height="13" rx="2"/><path d="M16 8h3l3 3v5h-6V8z"/><circle cx="5.5" cy="18.5" r="2.5"/><circle cx="18.5" cy="18.5" r="2.5"/>',
979      steps:['Ensure safety first — call 995 for ambulance if anyone is injured','Do NOT move vehicles until details are exchanged (unless dangerously obstructing traffic)','Exchange particulars: NRIC, vehicle number, insurance details, licence','Take photos of all vehicles, damage, road conditions from multiple angles','File a police report within 24 hours if injury, government property damage, foreign vehicle, or hit-and-run','Report to us within 24 hours — we will arrange an authorised workshop if needed'],
980      docs:['Completed motor claim form (GIA report / Singapore Accident Statement)','Police report (mandatory in many situations)','Photos of all vehicles and the accident scene','NRIC and driving licence of all drivers','Other party\'s insurance details and vehicle registration','Workshop repair estimate','Medical bills (if personal accident claim)'],
981      tips:['Never admit fault at the scene — casual remarks can be used against you','File an Accident Statement at an authorised reporting centre within 24 hours','Use authorised workshops to protect your NCD','Do NOT sign private settlements without consulting us first']
982    },
983    { id:'home', title:'Home Insurance', tag:'Property',
984      icon:'<path d="M3 9l9-7 9 7v11a2 2 0 01-2 2H5a2 2 0 01-2-2z"/><polyline points="9 22 9 12 15 12 15 22"/>',
985      steps:['Ensure safety — evacuate if necessary','Call 995 for fire or 999 for police if fire, flood, or break-in','Take photos/videos of all damage before clean-up or repairs','Make reasonable temporary repairs to prevent further damage — keep receipts','Notify us within 24 hours','Do NOT dispose of damaged items until the adjuster has reviewed them'],
986      docs:['Completed claim form','Police report (for burglary, theft, vandalism)','Photos of damage to building and/or contents','Purchase receipts or proof of ownership for damaged items','Repair or replacement quotations','Tenancy agreement (if applicable)'],
987      tips:['Home contents cover is separate from building cover — check which you have','Items stored outside the home may not be covered','Keep an inventory of valuables with photos and receipts','Water damage from plumbing is generally covered; gradual wear and tear is not']
988    },
989    { id:'biz', title:'Business Insurance', tag:'Fire / BI',
990      icon:'<rect x="2" y="7" width="20" height="14" rx="2"/><path d="M16 7V5a2 2 0 00-2-2h-4a2 2 0 00-2 2v2"/>',
991      steps:['Secure premises and ensure safety of staff and visitors','Call SCDF (995) for fire or 999 for police','Take extensive photos/videos of all damage','Protect undamaged property from further loss — keep mitigation receipts','Notify us within 24 hours with initial loss estimate','For Business Interruption — track all lost revenue and additional costs from day one'],
992      docs:['Completed claim form','Police or SCDF report','Photos/videos of damage','Financial records (P&L, revenue data) for BI claims','Repair quotations from at least 2 contractors','Inventory of damaged stock with values','Proof of additional expenses to continue operations'],
993      tips:['Under-insurance triggers the Average Clause — insure for full value','Business Interruption requires solid financial records','Temporary relocation costs may be covered — ask before committing','Review declared values at every renewal']
994    },
995    { id:'maid', title:'Maid Insurance', tag:'FDW',
996      icon:'<path d="M3 9l9-7 9 7v11a2 2 0 01-2 2H5a2 2 0 01-2-2z"/><polyline points="9 22 9 12 15 12 15 22"/>',
997      steps:['Bring your helper to the nearest clinic or hospital immediately','For hospital
997isation — contact us to arrange Letter of Guarantee (cashless admission)','Collect all medical receipts and discharge summary','Complete and submit claim form within 30 days','For personal accident claims — provide medical report confirming nature and extent of injury'],
998      docs:['Completed claim form','Original medical bills and receipts','Medical report / discharge summary','Helper\'s Work Permit and FIN details','Police report (for third-party accidents)','Death certificate (for fatal accident claims)'],
999      tips:['MOM requires min. S$60,000 PA and S$15,000 medical per year — confirm your limits','Outpatient coverage varies by plan — check before visiting a GP','Report serious injuries to MOM as required under EFMA','Keep the policy active throughout the helper\'s employment']
1000    },
1001    { id:'travel', title:'Travel Insurance', tag:'Overseas',
1002      icon:'<circle cx="12" cy="12" r="10"/><path d="M2 12h20"/><path d="M12 2a15.3 15.3 0 014 10 15.3 15.3 0 01-4 10 15.3 15.3 0 01-4-10 15.3 15.3 0 014-10z"/>',
1003      steps:['For medical emergencies — call the insurer\'s 24/7 assistance hotline immediately','Seek medical treatment — the assistance company can coordinate direct billing','For trip cancellation — notify us before the scheduled departure date','For lost/stolen baggage — report to airline AND file police report within 24 hours','For travel delays — obtain written confirmation from the airline','Keep ALL original receipts for expenses incurred'],
1004      docs:['Completed claim form','Original medical bills and receipts (translated to English if needed)','Medical report from the treating doctor','Police report (for theft, loss, robbery)','Airline delay confirmation or Property Irregularity Report','Trip cancellation evidence','Boarding passes and itinerary','Purchase receipts for lost items'],
1005      tips:['Always carry the 24/7 hotline number and your policy number when travelling','Pre-existing conditions are typically excluded — declare them at purchase','File baggage claims with the airline BEFORE leaving the airport','Claims must typically be filed within 30 days of return']
1006    },
1007  ];
1008
1009  const tabsEl = document.getElementById('claimsTabs');
1010  const panelsEl = document.getElementById('claimPanels');
1011  if (!tabsEl || !panelsEl) return;
1012
1013  CLAIMS.forEach((c, i) => {
1014    const tab = document.createElement('div');
1015    tab.className = 'claim-tab' + (i === 0 ? ' active' : '');
1016    tab.setAttribute('data-id', c.id);
1017    tab.setAttribute('role', 'button');
1018    tab.setAttribute('tabindex', '0');
1019    tab.innerHTML = '<div class="ct-icon"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">' + c.icon + '</svg></div><h4>' + c.title + '</h4>';
1020    tab.addEventListener('click', () => showClaim(c.id));
1021    tab.addEventListener('keydown', (e) => { if(e.key==='Enter'||e.key===' '){e.preventDefault();showClaim(c.id)} });
1022    tabsEl.appendChild(tab);
1023
1024    const panel = document.createElement('div');
1025    panel.className = 'claim-panel' + (i === 0 ? ' active' : '');
1026    panel.id = 'cp-' + c.id;
1027    const stepsH = c.steps.map(s => '<li>' + s + '</li>').join('');
1028    const docsH = c.docs.map(d => '<li>' + d + '</li>').join('');
1029    const tipsH = c.tips.map(t => '<li>' + t + '</li>').join('');
1030    panel.innerHTML = '<div class="claim-card"><h3>' + c.title + '</h3><span class="claim-tag-label">' + c.tag + '</span><div class="claim-cols"><div class="claim-col"><h4><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="9 11 12 14 22 4"/><path d="M21 12v7a2 2 0 01-2 2H5a2 2 0 01-2-2V5a2 2 0 012-2h11"/></svg> Key Steps</h4><ol class="claim-num-list">' + stepsH + '</ol></div><div class="claim-col"><h4><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8z"/><polyline points="14 2 14 8 20 8"/></svg> Documents Required</h4><ul class="claim-doc-list">' + docsH + '</ul></div></div><div class="claim-tips-box"><h4>⚠️ Important Reminders</h4><ul>' + tipsH + '</ul></div><div class="claim-wa-cta"><svg viewBox="0 0 24 24" fill="currentColor"><path d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.
1030198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347z"/></svg><div><p><strong>Not sure what to do?</strong> WhatsApp us or email <a href="mailto:[email protected]" style="color:var(--primary);font-weight:600;">[email protected]</a> — we\'ll guide you step by step.</p><a href="https://wa.me/6591590039?text=Hi%2C%20I%20need%20help%20with%20a%20' + encodeURIComponent(c.title) + '%20claim." target="_blank" rel="noopener noreferrer">WhatsApp Us About This Claim →</a></div></div></div>';
1031    panelsEl.appendChild(panel);
1032  });
1033
1034  function showClaim(id) {
1035    document.querySelectorAll('.claim-tab').forEach(t => t.classList.toggle('active', t.getAttribute('data-id') === id));
1036    document.querySelectorAll('.claim-panel').forEach(p => p.classList.toggle('active', p.id === 'cp-' + id));
1037    const panel = document.getElementById('cp-' + id);
1038    if (panel) setTimeout(() => panel.scrollIntoView({ behavior: 'smooth', block: 'nearest' }), 50);
1039  }
1040}
1041
1042if (document.readyState === 'loading') {
1043  document.addEventListener('DOMContentLoaded', initClaimsTabs);
1044} else {
1045  initClaimsTabs();
1046}
1047
1048// ── Active nav ──
1049function initActiveNav() {
1050  const currentPath = window.location.pathname;
1051  const navLinks = document.querySelectorAll('.nav-links a:not(.nav-cta):not(.nav-cta-buy)');
1052  navLinks.forEach(a => {
1053    a.classList.remove('active');
1054    if (a.getAttribute('href') === currentPath) a.classList.add('active');
1055  });
1056}
1057initActiveNav();
1058
1059// ── Form handler ──
1060function handleFormSubmit(e) {
1061  e.preventDefault();
1062  const form = e.target;
1063  const data = new FormData(form);
1064  let msg = 'Hi, I\'d like a quote for *' + data.get('insurance_type') + '*.%0A';
1065  msg += 'Name: ' + data.get('name') + '%0A';
1066  if (data.get('company')) msg += 'Company: ' + data.get('company') + '%0A';
1067  msg += 'Email: ' + data.get('email') + '%0A';
1068  msg += 'Phone: ' + data.get('phone') + '%0A';
1069  if (data.get('sum_insured')) msg += 'Sum Insured: ' + data.get('sum_insured') + '%0A';
1070  if (data.get('details')) msg += 'Details: ' + data.get('details');
1071
1072  const btn = form.querySelector('.form-submit');
1073  btn.innerHTML = '✓ Enquiry Submitted — Thank You!';
1074  btn.style.background = 'var(--success)';
1075  btn.style.color = '#fff';
1076  btn.disabled = true;
1077
1078  setTimeout(() => {
1079    const sendViaWA = confirm('Thank you for your enquiry! Would you also like to send this via WhatsApp for a faster response?');
1080    if (sendViaWA) {
1081      window.open('https://wa.me/' + CONFIG.whatsapp + '?text=' + msg, '_blank');
1082    }
1083  }, 800);
1084}
1085
1086// ══════════════════════════════════════════════
1087// HERO CAROUSEL
1088// ══════════════════════════════════════════════
1089function initHeroCarousel() {
1090  const cards = document.querySelectorAll('.hero-stat-card');
1091  const dots = document.querySelectorAll('.hero-dot');
1092  if (!cards.length || !dots.length) return;
1093  let currentSlide = 0;
1094  let autoInterval;
1095
1096  function animateNum(el) {
1097    if (!el || !el.dataset || !el.dataset.target) return;
1098    const target = parseInt(el.dataset.target);
1099    if (isNaN(target)) return;
1100    const duration = 1200;
1101    const start = performance.now();
1102    function step(now) {
1103      const progress = Math.min((now - start) / duration, 1);
1104      const eased = 1 - Math.pow(1 - progress, 3);
1105      el.textContent = Math.floor(eased * target);
1106      if (progress < 1) requestAnimationFrame(step);
1107    }
1108    requestAnimationFrame(step);
1109  }
1110
1111  window.goToSlide = function(index) {
1112    if (index === currentSlide || !cards[index] || !cards[currentSlide]) return;
1113    cards[currentSlide].classList.remove('active');
1114    cards[currentSlide].classList.add('exit');
1115    if (dots[currentSlide]) dots[currentSlide].classList.remove('active');
1116
1117    const prevSlide = currentSlide;
1118    setTimeout(() => {
1119      if (cards[prevSlide]) cards[prevSlide].classList.remove('exit');
1120      currentSlide = index;
1121      if (cards[currentSlide]) {
1122        cards[currentSlide].classList.add('active');
1123        const numEl = cards[currentSlide].querySelector('.hero-stat-num');
1124        if (numEl) animateNum(numEl);
1125      }
1126      if (dots[currentSlide]) dots[currentSlide].classList.add('active');
1127    }, 250);
1128
1129    resetAuto();
1130  };
1131
1132  function nextSlide() {
1133    if (cards.length > 0) goToSlide((currentSlide + 1) % cards.length);
1134  }
1135
1136  function resetAuto() {
1137    clearInterval(autoInterval);
1138    autoInterval = setInterval(nextSlide, 3500);
1139  }
1140
1141  if (cards[0]) {
1142    const firstNum = cards[0].querySelector('.hero-stat-num');
1143    if (firstNum) animateNum(firstNum);
1144  }
1145  resetAuto();
1146}
1147
1148if (document.readyState === 'loading') {
1149  document.addEventListener('DOMContentLoaded', initHeroCarousel);
1150} else {
1151  initHeroCarousel();
1152}
1153
1154// ══════════════════════════════════════════════
1155// AI CHATBOT
1156// ══════════════════════════════════════════════
1157const CHATBOT_SYSTEM = 'You are the AI assistant for Ivan Insurance Brokers Pte Ltd, a MAS-l
1157icensed direct insurance broker in Singapore established in 1993.\n\nABOUT THE COMPANY:\n- MAS Registered Direct Insurance Broker (since 2021, previously general insurance agency since 1993)\n- Member of Steadfast Group (Australasia\'s largest general insurance broker network)\n- Address: 22 Sin Ming Lane, #06-71, Midview City, Singapore 573969\n- Phone: +65 6440 0220 | WhatsApp: +65 9159 0039\n- Email: [email protected] | Claims: [email protected]\n- UEN: 201811693C\n\nPRODUCTS OFFERED:\nCommercial: Project Insurance (CAR/EAR), Professional Indemnity, Directors & Officers (D&O), Performance Bonds, Employee Benefits, Liability Insurance (Public/Product/Events), Cyber Insurance, Work Injury Compensation (WICA), Foreign Worker Medical, Business Insurance (Fire/BI)\nPersonal: Motor, Home, Travel, Maid Insurance, Personal Accident\nBuy Online (instant): Travel, Home, Personal Accident, Maid Insurance\n\nKEY DIFFERENTIATOR:\nAs a BROKER (not an agent), we work independently for the client, comparing coverage across multiple insurers to find the best solution. Agents represent a single insurer.\n\nCLAIMS: Clients should email [email protected] or WhatsApp 9159 0039 for urgent claims.\n\nRULES:\n- Be friendly, helpful, and concise (2-3 sentences per response)\n- If asked for a quote, direct them to the quote form on the website or WhatsApp +65 9159 0039\n- Never make up policy details, prices, or coverage amounts\n- For complex questions, suggest they speak to the team directly\n- Always respond in a warm, professional tone\n- If asked about something outside insurance, politely redirect';
1158
1159let chatHistory = [];
1160let chatbotOpen = false;
1161
1162function toggleChatbot() {
1163  chatbotOpen = !chatbotOpen;
1164  document.getElementById('chatbotFab').classList.toggle('open', chatbotOpen);
1165  document.getElementById('chatbotPanel').classList.toggle('open', chatbotOpen);
1166  if (chatbotOpen) setTimeout(() => document.getElementById('chatInput').focus(), 100);
1167}
1168
1169function sendQuickMsg(text) {
1170  document.getElementById('chatInput').value = text;
1171  sendChatMsg();
1172}
1173
1174function addMessage(role, text) {
1175  const container = document.getElementById('chatMessages');
1176  const msgDiv = document.createElement('div');
1177  msgDiv.className = 'chat-msg ' + (role === 'assistant' ? 'bot' : 'user');
1178  const avatar = document.createElement('div');
1179  avatar.className = 'chat-avatar';
1180  avatar.textContent = role === 'assistant' ? '🛡️' : '👤';
1181  const bubble = document.createElement('div');
1182  bubble.className = 'chat-bubble';
1183  bubble.textContent = text;
1184  msgDiv.appendChild(avatar);
1185  msgDiv.appendChild(bubble);
1186  container.appendChild(msgDiv);
1187  container.scrollTop = container.scrollHeight;
1188}
1189
1190function addTypingIndicator() {
1191  const container = document.getElementById('chatMessages');
1192  const msgDiv = document.createElement('div');
1193  msgDiv.className = 'chat-msg bot';
1194  msgDiv.id = 'typingIndicator';
1195  const avatar = document.createElement('div');
1196  avatar.className = 'chat-avatar';
1197  avatar.textContent = '🛡️';
1198  const bubble = document.createElement('div');
1199  bubble.className = 'chat-bubble';
1200  bubble.innerHTML = '<div class="chat-typing"><span></span><span></span><span></span></div>';
1201  msgDiv.appendChild(avatar);
1202  msgDiv.appendChild(bubble);
1203  container.appendChild(msgDiv);
1204  container.scrollTop = container.scrollHeight;
1205}
1206
1207function removeTypingIndicator() {
1208  const el = document.getElementById('typingIndicator');
1209  if (el) el.remove();
1210}
1211
1212async function sendChatMsg() {
1213  const input = document.getElementById('chatInput');
1214  const sendBtn = document.getElementById('chatSend');
1215  const text = input.value.trim();
1216  if (!text) return;
1217
1218  addMessage('user', text);
1219  chatHistory.push({ role: 'user', content: text });
1220  input.value = '';
1221  sendBtn.disabled = true;
1222  addTypingIndicator();
1223
1224  const quickBtns = document.querySelector('.chat-quick-btns');
1225  if (quickBtns) quickBtns.remove();
1226
1227  try {
1228    const response = await fetch('https://api.anthropic.com/v1/messages', {
1229      method: 'POST',
1230      headers: { 'Content-Type': 'application/json' },
1231      body: JSON.stringify({
1232        model: 'claude-sonnet-4-20250514',
1233        max_tokens: 1000,
1234        system: CHATBOT_SYSTEM,
1235        messages: chatHistory.slice(-10)
1236      })
1237    });
1238    const data = await response.json();
1239    removeTypingIndicator();
1240    if (data.content && data.content[0] && data.content[0].text) {
1241      const reply = data.content[0].text;
1242      addMessage('assistant', reply);
1243      chatHistory.push({ role: 'assistant', content: reply });
1244    } else {
1245      addMessage('assistant', 'I apologise, I had trouble processing that. Please try again, or reach us directly on WhatsApp at +65 9159 0039.');
1246    }
1247  } catch (err) {
1248    removeTypingIndicator();
1249    addMessage('assistant', "I'm having trouble connecting right now. For immediate help, please WhatsApp us at +65 9159 0039 or email [email protected].");
1250  }
1251  sendBtn.disabled = false;
1252  input.focus();
1253}
1254</script>
1254
1255    
1256
1257
1258                            </div>
1259                        
1260                    
1261                
1262            
1263        
1264    
1265</div>
1266
1267            
1268          
1269        </div>
1270        
1271          <div x-data="loginWidget"
1272     @auth:login-widget:open.window="open($event.detail?.formTitle || 'Login')">
1273    <div class="relative z-50"
1274         x-show="show"
1275         aria-labelledby="login-widget-title"
1276         role="dialog"
1277         aria-modal="true"
1278         x-cloak>
1279        <div x-show="show"
1280             class="fixed inset-0 bg-gray-500 bg-opacity-75 transition-opacity"
1281             x-transition.opacity.duration.300ms></div>
1282        <div class="fixed inset-0 z-50 w-screen overflow-y-auto">
1283            <div class="flex min-h-full items-end justify-center p-4 text-center sm:items-center sm:p-0">
1284                <div x-show="show"
1285                     x-transition:enter="ease-out duration-300"
1286                     x-transition:enter-start="opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95"
1287                     x-transition:enter-end="opacity-100 translate-y-0 sm:scale-100"
1288                     x-transition:leave="ease-in duration-200"
1289                     x-transition:leave-start="opacity-100 translate-y-0 sm:scale-100"
1290                     x-transition:leave-end="opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95"
1291                     class="relative transform overflow-hidden rounded-lg bg-white px-4 pb-4 pt-5 text-left shadow-xl transition-all sm:my-8 w-full sm:max-w-lg sm:p-6">
1292                    <div>
1293                        <div class="mt-3 text-center sm:mt-5">
1294                            <template x-if="currentTab === 'Login'">
1295                                <div>
1296                                    <h3 class="text-lg sm:text-xl font-semibold leading-6 text-gray-900"
1297                                        id="login-widget-title"
1298                                        x-text="formTitle"></h3>
1299                                    <p class="mt-2 text-sm text-gray-500">Don't have an account? We will create one for you.</p>
1300                                    <div class="mt-6">
1301                                        <input :type="form.identityType"
1302                                               class="border px-3 py-2 w-full rounded-input border-border focus:border-primary focus:ring-primary sm:text-sm"
1303                                               x-model="form.identity"
1304                                               autocomplete="email"
1305                                               placeholder="Enter email to login">
1306                                    </div>
1307                                </div>
1308                            </template>
1309                            <template x-if="currentTab === 'Password'">
1310                                <div>
1311                                    <h3 class="text-lg sm:text-xl font-semibold leading-6 text-gray-900"
1312                                        id="login-widget-title">Enter OTP</h3>
1313                                    <p class="text-sm text-gray-500 mt-2">
1314                                        Enter the OTP send to
1315                                        <strong x-text="form.identity"></strong>
1316                                    </p>
1317                                    <div class="mt-6">
1318                                        <input type="password"
1319                                               class="border px-3 py-2 w-full rounded-input border-border focus:border-primary focus:ring-primary sm:text-sm"
1320                                               x-model="form.password"
1321                                               placeholder="Enter OTP">
1322                                        <p class="text-sm text-gray-500 mt-1 text-left">
1323                                            <button class="text-primary"
1324                                                    @click.prevent="resendOTP"
1325                                                    :disabled="!enableResendOTP">Resend OTP</button>
1326                                            in <span x-text="form.countDown"></span>
1327                                            seconds. Check your spam folder if you can't find email from us.
1328                                        </p>
1329                                    </div>
1330                                </div>
1331                            </template>
1332                        </div>
1333                    </div>
1334                    <template x-if="form.error">
1335                        <p x-text="form.error" class="text-red-500 text-sm mt-3"></p>
1336                    </template>
1337                    <div class="mt-5 sm:mt-6 flex flex-col gap-3 sm:flex-row">
1338                        <button type="button"
1339                                @click="show = false"
1340                                class="btn btn-sm border border-gray-300 flex-1">Cancel</button>
1341                        <button type="button"
1342                                class="btn btn-sm btn-primary flex-1"
1343                                :disabled="!enableSubmit"
1344                                x-text="submitText"
1345                                @click="submit"></button>
1346                    </div>
1347                </div>
1348            </div>
1349        </div>
1350    </div>
1351</div>
1352
1353          
1354          
1355<div x-data="guestLoginWidget"
1356     @auth:guest-login-widget:open.window="open($event.detail?.formTitle, $event.detail?.formSubtitle)">
1357    <div class="relative z-50"
1358         x-show="show"
1359         aria-labelledby="guest-login-widget-title"
1360         role="dialog"
1361         aria-modal="true"
1362         x-cloak>
1363        <div x-show="show"
1364             class="fixed inset-0 bg-gray-500 bg-opacity-75 transition-opacity"
1365             x-transition.opacity.duration.300ms></div>
1366        <div class="fixed inset-0 z-50 w-screen overflow-y-auto">
1367            <div class="flex min-h-full items-end justify-center p-4 text-center sm:items-center sm:p-0">
1368                <div x-show="show"
1369                     x-transition:enter="ease-out duration-300"
1370                     x-transition:enter-start="opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95"
1371                     x-transition:enter-end="opacity-100 translate-y-0 sm:scale-100"
1372                     x-transition:leave="ease-in duration-200"
1373                     x-transition:leave-start="opacity-100 translate-y-0 sm:scale-100"
1374                     x-transition:leave-end="opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95"
1375                     class="relative transform overflow-hidden rounded-lg bg-white px-4 pb-4 pt-5 text-left shadow-xl transition-all sm:my-8 w-full sm:max-w-lg sm:p-6">
1376                    <div>
1377                        <div class="mt-3 text-center sm:mt-5">
1378                            <div>
1379                                <h3 class="text-lg sm:text-xl font-semibold leading-6 text-gray-900"
1380                                    id="guest-login-widget-title"
1381                                    x-text="formTitle"></h3>
1382                                <p class="mt-2 text-sm text-gray-500" x-text="formSubtitle"></p>
1383                                <div class="mt-6 space-y-4">
1384                                    <div>
1385                                        <input type="text"
1386                                               class="border px-3 py-2 w-full rounded-input border-border focus:border-primary focus:ring-primary sm:text-sm"
1387                                               x-model="form.name"
1388                                               autocomplete="name"
1389                                               placeholder="Enter your name">
1390                                    </div>
1391                                    <div>
1392                                        <input type="email"
1393                                               class="border px-3 py-2 w-full rounded-input border-border focus:border-primary focus:ring-primary sm:text-sm"
1394                                               x-model="form.email"
1395                                               autocomplete="email"
1396                                               placeholder="Enter your email address">
1397                                        <p class="text-xs text-gray-400 mt-1 text-left">Valid email is required for further communications</p>
1398                                    </div>
1399                                </div>
1400                            </div>
1401                        </div>
1402                    </div>
1403                    <template x-if="form.error">
1404                        <p x-text="form.error" class="text-red-500 text-sm mt-3"></p>
1405                    </template>
1406                    <div class="mt-5 sm:mt-6 flex flex-col gap-3 sm:flex-row">
1407                        <button type="button"
1408                                @click="show = false"
1409                                class="btn btn-sm  border border-gray-300 flex-1">Cancel</button>
1410                        <button type="button"
1411                                class="btn btn-sm  btn-primary flex-1"
1412                                :disabled="!enableSubmit"
1413                                x-text="submitText"
1414                                @click="submit"></button>
1415                    </div>
1416                </div>
1417            </div>
1418        </div>
1419    </div>
1420</div>
1421
1422        
1423        
1424          
1425<style>
1426  #hb-badge,
1427  #hb-badge *,
1428  #hb-badge *::before,
1429  #hb-badge *::after {
1430    all: unset;
1431    box-sizing: border-box;
1432  }
1433
1434  #hb-badge {
1435    position: fixed !important;
1436    bottom: 10px !important;
1437    left: 10px !important;
1438    z-index: 2147483647 !important;
1439    display: block !important;
1440  }
1441
1442  #hb-badge a {
1443    display: inline-flex !important;
1444    align-items: center !important;
1445    gap: 8px !important;
1446    padding: 8px 14px 8px 10px !important;
1447    background: #0a0a0a !important;
1448    border-radius: 8px !important;
1449    text-decoration: none !important;
1450    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif !important;
1451    font-size: 13px !important;
1452    font-weight: 500 !important;
1453    color: #ffffff !important;
1454    box-shadow: 0 2px 12px rgba(0,0,0,0.18) !important;
1455    cursor: pointer !important;
1456    transition: background 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease !important;
1457    line-height: 1 !important;
1458    letter-spacing: 0.01em !important;
1459  }
1460
1461  #hb-badge a:hover {
1462    background: #222222 !important;
1463    transform: translateY(-1px) !important;
1464    box-shadow: 0 4px 20px rgba(0,0,0,0.25) !important;
1465  }
1466
1467  #hb-badge .hb-dot {
1468    display: inline-block !important;
1469    width: 5px !important;
1470    height: 5px !important;
1471    border-radius: 999px !important;
1472    background: rgba(255,255,255,0.3) !important;
1473    flex-shrink: 0 !important;
1474  }
1475
1476  #hb-badge .hb-muted {
1477    color: rgba(255,255,255,0.45) !important;
1478    font-weight: 400 !important;
1479    font-size: 13px !important;
1480    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif !important;
1481  }
1482
1483  #hb-badge .hb-brand {
1484    color: #ffffff !important;
1485    font-weight: 600 !important;
1486    font-size: 13px !important;
1487    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif !important;
1488  }
1489</style>
1490
1491<div id="hb-badge">
1492    
1493        <a href="https://hostbento.com?referrer=www.ivaninsurance.com" target="_blank">
1494            <span class="hb-muted">Built with</span>
1495            <span class="hb-dot"></span>
1496            <span class="hb-brand">Hostbento</span>
1497        </a>
1498    
1499</div>
1500        
1501      
1502      
1503        
1504          
1505            
1505<script src="/static/sitekit/js/sitekit.js" defer></script>
1505
1506            
1506<script src="/static/sitekit/js/widgets.js" defer></script>
1506
1507            
1507<script src="/static/sitekit/js/vendor/alpinejs-3.x.x.js" defer></script>
1507
1508            
1509<script>
1510    function initProfitJS(){
1511        if (window.hasOwnProperty('profitjs')) {
1512          window.profitjs({
1513            widgets:[]
1514          }).mount('#profitjs');
1515        }
1516      }
1517    
1518</script>
vendor: 1 bytes, line 1518
1518
1519<script src="/static/sitekit/js/profitjs.umd.cjs"
1520        defer
1521        onload="initProfitJS()"></script>
1521
1522
1523          
1524        
1525        
1526          
1527
1528
1529    
1530        
1530<script src="https://7lscgh819c.koniglecdn.com/js/theme-js-f28c5e91.js" defer></script>
1530
1531    
1532
1533
1534        
1535      
1536      
1537      
1538      
1539      
1540    
1540<script src="/static/sitekit/js/content-page.js" defer></script>
1540
1541
1542      
1543        
1544      
1545      
1546      
1547        
1548      
1549    </body>
1550  
1551  
1552
1553</html>

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.