1<!doctype html> 2<html lang="id"> 3 <head> 4 <meta charset="UTF-8" /> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" /> 6 <meta name="theme-color" content="#161412" /> 7 <!-- LCP: foto hero dirender oleh JS (SPA) sehingga ditemukan telat. Preload 8 agar browser mengunduhnya SEGERA (paralel dgn JS) â LCP jauh lebih cepat. 9 (Bila hero diganti kustom via admin, ini hanya 1 unduhan ~96KB tak terpakai.) --> 10 <!-- Percepat koneksi ke Firebase Storage (foto produk & hero kustom). --> 11 <link rel="preconnect" href="https://firebasestorage.googleapis.com" crossorigin /> 12 <link rel="manifest" href="/manifest.json" /> 13 <!-- Katalog ARD untuk agen AI. Penanda eksplisit ini membuat penemuannya 14 tidak bergantung pada lokasi .well-known, yang dalam spesifikasi masih 15 bisa berpindah. Ia juga membuat katalog yang rusak GAGAL dengan berisik 16 alih-alih diam-diam dianggap "tidak ada katalog". --> 17 <link rel="ai-catalog" href="/.well-known/ai-catalog.json" /> 18 <link rel="icon" type="image/svg+xml" href="/favicon.svg" /> 19 <link rel="apple-touch-icon" href="/icons/apple-touch-icon-v4.png" /> 20 <link rel="icon" type="image/png" sizes="32x32" href="/icons/favicon-32-v3.png" /> 21 <link rel="icon" type="image/png" sizes="16x16" href="/icons/favicon-16-v3.png" /> 22 23 24 <!-- Canonical self-referensi per halaman (tanpa UTM/query) â cegah "Duplikat 25 tanpa versi kanonis" di Google Search. Diset segera dari path saat ini, 26 lalu disempurnakan per-rute oleh app (_syncCanonical). --> 27 <link rel="canonical" id="gm-canonical" href="https://gomuda.id/kategori/turtleneck" /> 28
28<script>(function(){try{var p=(location.pathname||'/');if(p==='/index.html')p='/';document.getElementById('gm-canonical').setAttribute('href','https://gomuda.id'+p);}catch(e){}})();</script>
28 29 <!-- Open Graph (WhatsApp / Facebook / LinkedIn) --> 30 <meta property="og:site_name" content="Gomuda" /> 31 <meta property="og:locale" content="id_ID" /> 32 <!-- Twitter / X --> 33 <meta name="twitter:card" content="summary_large_image" /> 34 <!-- Data terstruktur (Schema.org) â bantu Google memahami situs: nama, logo, 35 sosial, & kotak pencarian sitelinks. Memperbesar peluang hasil brand 36 tampil rapi (bukan cuplikan teks acak). --> 37
37<script type="application/ld+json"> 38 { 39 "@context": "https://schema.org", 40 "@graph": [ 41 { 42 "@type": "Organization", 43 "@id": "https://gomuda.id/#organization", 44 "name": "Gomuda", 45 "alternateName": "Gomuda Knitwear", 46 "url": "https://gomuda.id/", 47 "logo": "https://gomuda.id/icons/apple-touch-icon-v3.png", 48 "image": "https://gomuda.id/og-gomuda-v2.jpg", 49 "description": "Timeless Knitwear, Boundless Spirit â rajut pria berkualitas dari Bandung.", 50 "sameAs": [ 51 "https://instagram.com/gomuda.id", 52 "https://youtube.com/@gomudaid", 53 "https://www.tiktok.com/@gomuda.id", 54 "https://www.threads.net/@gomuda.id" 55 ] 56 }, 57 { 58 "@type": "WebSite", 59 "@id": "https://gomuda.id/#website", 60 "url": "https://gomuda.id/", 61 "name": "Gomuda", 62 "publisher": { "@id": "https://gomuda.id/#organization" }, 63 "inLanguage": "id-ID", 64 "potentialAction": { 65 "@type": "SearchAction", 66 "target": { 67 "@type": "EntryPoint", 68 "urlTemplate": "https://gomuda.id/katalog?q={search_term_string}" 69 }, 70 "query-input": "required name=search_term_string" 71 } 72 } 73 ] 74 } 75 </script>
75 76 <!-- Splash app (PWA): wordmark GOMUDA taupe di atas krem #F4F1EA --> 77 <style> 78 #gm-splash{position:fixed;inset:0;z-index:9999;background:#F4F1EA;display:flex;align-items:center;justify-content:center;transition:opacity .45s ease,visibility .45s ease;} 79 #gm-splash.gm-hide{opacity:0;visibility:hidden;pointer-events:none;} 80 #gm-splash .gm-splash-in{display:flex;flex-direction:column;align-items:center;gap:20px;padding:0 28px;} 81 #gm-splash svg{width:min(56vw,272px);height:auto;display:block;} 82 #gm-splash .gm-splash-tag{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;font-size:11px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:#A99E91;text-align:center;text-wrap:balance;} 83 html.gm-no-splash #gm-splash{display:none !important;} 84 </style> 85
85<script>try{ 86 // Cegah DOUBLE splash: saat berjalan sebagai APP terinstal (PWA/TWA Play 87 // Store), Android sudah menampilkan splash native (ikon G) â matikan splash 88 // HTML agar tak dobel. Di browser biasa (tanpa splash native), splash HTML 89 // tetap tampil. Juga dilewati bila sudah tampil sekali di sesi ini. 90 var _standalone=(window.matchMedia&&window.matchMedia('(display-mode: standalone)').matches)||window.navigator.standalone===true||(document.referrer||'').indexOf('android-app://')===0; 91 if(_standalone||sessionStorage.getItem("gm_splash")==="1")document.documentElement.classList.add("gm-no-splash"); 92 }catch(e){}</script>
92 93
93<script type="module" crossorigin src="/assets/index-pxrOF1x7.js"></script>
93 94 <link rel="modulepreload" crossorigin href="/assets/Brand-Bv3Se9No.js"> 95 <link rel="modulepreload" crossorigin href="/assets/index.esm-BmJ8S0Kb.js"> 96 <link rel="modulepreload" crossorigin href="/assets/firebase-iw7q7iG8.js"> 97 <link rel="modulepreload" crossorigin href="/assets/index.esm-Cya0L9nZ.js"> 98 <link rel="stylesheet" crossorigin href="/assets/index-Dc2utu12.css"> 99 <title>Turtleneck - Gomuda Knitwear</title> 100 <meta name="description" content="Turtleneck Gomuda: koleksi turtleneck rajut pria berkualitas. Kualitas terjamin, dari Bandung." /> 101 <meta property="og:type" content="website" /> 102 <meta property="og:title" content="Turtleneck - Gomuda Knitwear" /> 103 <meta property="og:description" content="Turtleneck Gomuda: koleksi turtleneck rajut pria berkualitas. Kualitas terjamin, dari Bandung." /> 104 <meta property="og:url" content="https://gomuda.id/kategori/turtleneck" /> 105 <meta property="og:image" content="https://firebasestorage.googleapis.com/v0/b/gomudaid.firebasestorage.app/o/products%2F1777255880872-wuaf2z.webp?alt=media&token=262a61c8-e3dd-46e4-bf7c-3bc26ae7160b" /> 106 <meta name="twitter:title" content="Turtleneck - Gomuda Knitwear" /> 107 <meta name="twitter:description" content="Turtleneck Gomuda: koleksi turtleneck rajut pria berkualitas. Kualitas terjamin, dari Bandung." /> 108 <meta name="twitter:image" content="https://firebasestorage.googleapis.com/v0/b/gomudaid.firebasestorage.app/o/products%2F1777255880872-wuaf2z.webp?alt=media&token=262a61c8-e3dd-46e4-bf7c-3bc26ae7160b" /> 109
109<script type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@type":"CollectionPage","name":"Turtleneck â Gomuda Knitwear","url":"https://gomuda.id/kategori/turtleneck","description":"Koleksi turtleneck rajut pria Gomuda, dirajut di Bandung."},{"@type":"ItemList","itemListOrder":"https://schema.org/ItemListOrderAscending","numberOfItems":6,"itemListElement":[{"@type":"ListItem","position":1,"url":"https://gomuda.id/produk/mock-turtleneck-knitwear","name":"Mock Turtleneck Knitwear","image":"https://firebasestorage.googleapis.com/v0/b/gomudaid.firebasestorage.app/o/products%2F1777255880872-wuaf2z.webp?alt=media&token=262a61c8-e3dd-46e4-bf7c-3bc26ae7160b"},{"@type":"ListItem","position":2,"url":"https://gomuda.id/produk/roll-neck-knitwear","name":"Roll Neck Knitwear","image":"https://firebasestorage.googleapis.com/v0/b/gomudaid.firebasestorage.app/o/products%2Fp3%2F1782118278195-gomuda-knitwear-black-s-roll-neck-knitwear-1231619064_small.webp?alt=media&token=30441fe1-c0ad-4278-9d1c-d22599be41de"},{"@type":"ListItem","position":3,"url":"https://gomuda.id/produk/mockneck-stripe-fuji-knitwear","name":"Mockneck Stripe Fuji Knitwear","image":"https://firebasestorage.googleapis.com/v0/b/gomudaid.firebasestorage.app/o/products%2F1777259703318-uyzm3t.webp?alt=media&token=db93897f-2d84-46c8-b847-3d2ddacab9bb"},{"@type":"ListItem","position":4,"url":"https://gomuda.id/produk/slimfit-ribbed-roll-neck-knitwear","name":"Slimfit Ribbed Roll Neck Knitwear","image":"https://firebasestorage.googleapis.com/v0/b/gomudaid.firebasestorage.app/o/products%2F1777255740904-6610y7.webp?alt=media&token=8cca87f2-e0c4-47c2-a805-2aed13c28be4"},{"@type":"ListItem","position":5,"url":"https://gomuda.id/produk/mockneck-short-sleeve-knitwear","name":"Mockneck Short Sleeve Knitwear","image":"https://firebasestorage.googleapis.com/v0/b/gomudaid.firebasestorage.app/o/products%2F1777256064973-tyeklo.webp?alt=media&token=79cedb99-750c-41a2-b3c8-476d9689c543"},{"@type":"ListItem","position":6,"url":"https://gomuda.id/produk/cord-turtleneck-knitwear","name":"Cord Turtleneck Knitwear","image":"https://firebasestorage.googleapis.com/v0/b/gomudaid.firebasestorage.app/o/products%2F1777262010298-oid6tn.webp?alt=media&token=0ed9afa7-e116-41e2-a909-e90e4ae9da02"}]},{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Beranda","item":"https://gomuda.id/"},{"@type":"ListItem","position":2,"name":"Kategori","item":"https://gomuda.id/kategori"},{"@type":"ListItem","position":3,"name":"Turtleneck","item":"https://gomuda.id/kategori/turtleneck"}]}]}</script>
109 110 </head> 111 <body> 112 <div id="gm-splash" aria-hidden="true"> 113 <div class="gm-splash-in"> 114 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 559.09 91.12" fill="#8f8077" role="img" aria-label="GOMUDA"><path d="M60.21,90.98l-11.52.14c-11.23,0-23.48-5.98-32.8-16.18-4.81-5.25-8.74-11.37-11.38-18.22C1.46,49.28,0,41.25,0,32.95c0-4.81.88-9.33,2.48-13.41,1.75-4.08,4.22-7.58,7.29-10.5C15.9,3.35,24.2.29,33.24.29h22.16v16.62h-22.16c-4.96,0-9.18,1.46-12.1,4.22-2.91,2.77-4.52,6.86-4.52,11.81,0,6.13,1.02,12.1,3.21,17.64,2.04,4.96,4.81,9.33,8.31,13.12,3.21,3.5,6.85,6.27,10.64,8.16,1.61.87,3.2,1.46,4.81,1.9v-37.91h16.62v55.12Z"/><path d="M162.67,45.78c0,11.81-3.64,22.89-10.35,31.35-3.35,4.23-7.44,7.73-11.95,10.06-4.81,2.62-9.91,3.93-15.31,3.93s-10.5-1.31-15.31-3.93c-4.52-2.34-8.46-5.83-11.95-10.06-6.71-8.46-10.35-19.54-10.35-31.35s3.64-22.89,10.35-31.35c3.5-4.23,7.44-7.73,11.95-10.06,4.81-2.62,10.06-3.93,15.31-3.93s10.5,1.31,15.31,3.93c4.51,2.34,8.6,5.83,11.95,10.06,6.7,8.45,10.35,19.54,10.35,31.35ZM146.2,45.78c0-4.08-.73-8.01-1.9-11.81-1.17-3.5-2.92-6.56-4.96-9.18-3.93-4.95-9.03-7.73-14.29-7.73s-10.35,2.77-14.28,7.73c-2.04,2.63-3.64,5.69-4.81,9.18-1.31,3.79-1.9,7.72-1.9,11.81s.59,8.02,1.9,11.81c1.17,3.5,2.77,6.56,4.81,9.18,3.93,4.96,9.04,7.73,14.28,7.73s10.35-2.78,14.29-7.73c2.04-2.63,3.79-5.69,4.96-9.18,1.17-3.79,1.9-7.73,1.9-11.81Z"/><path d="M273.59,91.12h-16.62v-56.7l-17.06,43.59h-15.02l-16.91-43.59v56.71h-16.62V.29h21.14l19.97,51.32L252.45.29h21.14v90.83Z"/><path d="M368.31,66.34c0,6.56-2.34,12.68-6.71,17.34-2.04,2.34-4.66,4.08-7.44,5.39-2.91,1.32-6.12,2.04-9.33,2.04-9.77,0-20.26-5.69-28.72-15.74-7.73-9.18-12.39-20.41-12.39-30.03V.29h16.62v45.05c0,5.54,3.35,13.12,8.46,19.39,5.1,5.98,11.23,9.77,16.04,9.77,3.79,0,6.86-3.65,6.86-8.16V.29h16.62v66.04h0Z"/><path d="M464.72,58.61c0,4.81-.73,9.18-2.48,13.27s-4.08,7.58-7.29,10.64c-5.98,5.54-14.28,8.6-23.33,8.6h-31.63V.44l16.03-.14c11.22,0,23.47,6.13,32.81,16.18,4.95,5.39,8.74,11.52,11.52,18.37,2.92,7.44,4.37,15.45,4.37,23.76ZM448.25,58.61c0-6.27-1.17-12.25-3.35-17.64-2.04-4.95-4.81-9.47-8.3-13.27-3.06-3.35-6.86-6.27-10.64-8.16-3.21-1.6-6.41-2.48-9.33-2.62v57.59h15.01c4.81,0,9.04-1.46,11.96-4.23,3.06-2.77,4.66-6.86,4.66-11.67Z"/><path d="M541.89,91.12l-4.81-17.5h-28.14l-4.81,17.5h-17.2L511.71,0h22.6l24.78,91.12h-17.2ZM522.93,21.58l-9.62,35.42h19.24l-9.62-35.42Z"/></svg> 115 <div class="gm-splash-tag">Timeless Knitwear, Boundless Spirit</div> 116 </div> 117 </div> 118 <div id="root"></div> 119 <div id="ssr-seo" style="position:absolute;left:-9999px;top:0;width:1px;height:1px;overflow:hidden" aria-hidden="true"><h1>Turtleneck â Gomuda Knitwear</h1><p>Turtleneck Gomuda: koleksi turtleneck rajut pria berkualitas. Kualitas terjamin, dari Bandung.</p><ul><li><a href="/produk/mock-turtleneck-knitwear">Mock Turtleneck Knitwear</a> â Rp350.000</li><li><a href="/produk/roll-neck-knitwear">Roll Neck Knitwear</a> â Rp350.000</li><li><a href="/produk/mockneck-stripe-fuji-knitwear">Mockneck Stripe Fuji Knitwear</a> â Rp400.000</li><li><a href="/produk/slimfit-ribbed-roll-neck-knitwear">Slimfit Ribbed Roll Neck Knitwear</a> â Rp400.000</li><li><a href="/produk/mockneck-short-sleeve-knitwear">Mockneck Short Sleeve Knitwear</a> â Rp350.000</li><li><a href="/produk/cord-turtleneck-knitwear">Cord Turtleneck Knitwear</a> â Rp300.000</li></ul></div> 120 <!-- Di sini dulu ada satu blok tersembunyi berisi judul h1 dan paragraf 121 kata kunci, supaya body tidak kosong bagi perayap yang membaca HTML 122 mentah. Dibuang setelah beranda benar-benar di-pre-render saat build 123 (scripts/prerender.mjs), karena sejak itu ia lebih merugikan: 124 - Berkas ini merangkap cadangan SPA untuk SEMUA rute, jadi judul 125 tersembunyi yang sama persis ikut di /kategori/*, /akun, /panduan 126 dan puluhan URL lain. Bagi perayap semuanya mengaku halaman sama. 127 - Di beranda ia jadi judul utama KEDUA, bersaing dengan judul hero 128 yang sungguhan. (Kalimat hero-nya sengaja TIDAK dikutip di sini: 129 beberapa uji memakainya sebagai penanda "isi beranda bocor ke 130 berkas yang seharusnya polos", dan kutipan di komentar membuatnya 131 merah tanpa ada yang bocor.) 132 - Teks padat kata kunci yang disembunyikan di luar layar justru yang 133 dicari Google untuk ditindak. Dulu itu tebusan yang masuk akal demi 134 body yang tidak kosong; sekarang tidak ada lagi yang ditebus. 135 Rute non-beranda untuk sementara kembali tanpa teks di HTML mentah, dan 136 itu disengaja: shell kosong tidak mengaku-ngaku jadi halaman lain.
137 Penggantinya yang benar adalah SSR kategori, bukan blok ini. --> 138 <!-- Pemulihan otomatis: jika bundle gagal dimuat / app tak ter-mount (mis. 139 shell basi di cache, atau browser lama), bersihkan SW+cache lalu reload 140 SEKALI. Bila masih gagal, tampilkan pesan + teks error (bukan layar 141 putih) supaya mudah didiagnosa. --> 142
142<script> 143 (function () { 144 var RK = 'gm_recover', last = ''; 145 function clearAndReload() { 146 try { if ('serviceWorker' in navigator) navigator.serviceWorker.getRegistrations().then(function (rs) { rs.forEach(function (r) { r.unregister(); }); }); } catch (e) {} 147 try { 148 if (window.caches) { caches.keys().then(function (ks) { return Promise.all(ks.map(function (k) { return caches.delete(k); })); }).then(function () { location.reload(); }, function () { location.reload(); }); } 149 else { location.reload(); } 150 } catch (e) { location.reload(); } 151 } 152 function recovered() { try { return sessionStorage.getItem(RK) === '1'; } catch (e) { return false; } } 153 function markRecover() { try { sessionStorage.setItem(RK, '1'); } catch (e) {} } 154 // "Sudah ter-mount?" TIDAK boleh diukur dari isi #root lagi. 155 // 156 // Sejak beranda di-pre-render saat build, #root SUDAH berisi HTML 157 // sebelum satu baris JS pun jalan. Ukuran lama (r.children.length) 158 // karenanya selalu benar â termasuk saat bundle-nya gagal dimuat, yang 159 // justru satu-satunya saat penjaga ini dibutuhkan. Sekarang yang 160 // ditanya penanda yang hanya bisa dipasang aplikasi yang benar-benar 161 // hidup (lihat src/main.jsx). 162 function terpasang() { return window.__gmMounted === true; } 163 function fallback(msg) { 164 var r = document.getElementById('root'); if (!r || terpasang()) return; 165 var s = document.getElementById('gm-splash'); if (s) s.style.display = 'none'; 166 r.innerHTML = '<div style="min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;color:#161412;background:#F4F1EA;text-align:center"><div style="max-width:440px"><div style="font-size:18px;font-weight:600;margin-bottom:8px">Gagal memuat halaman</div><div style="font-size:13px;color:#5b5954;line-height:1.6;margin-bottom:18px">Coba muat ulang. Bila tetap gagal, perbarui browser Anda ke versi terbaru.</div><button onclick="location.reload()" style="background:#161412;color:#fff;border:none;border-radius:8px;padding:12px 24px;font-size:13px;font-weight:600;cursor:pointer">Muat Ulang</button>' + (msg ? '<pre style="margin-top:18px;text-align:left;white-space:pre-wrap;word-break:break-word;font-size:11px;color:#9c5a3c;background:#fff;border:1px solid #ECE9E3;border-radius:8px;padding:10px;max-height:180px;overflow:auto">' + String(msg).replace(/[<>&]/g, function (c) { return { '<': '<', '>': '>', '&': '&' }[c]; }) + '</pre>' : '') + '</div></div>'; 167 } 168 // Sumber (script/CSS) gagal dimuat â kemungkinan shell basi: recover sekali. 169 window.addEventListener('error', function (e) { 170 var t = e && e.target; 171 if (t && (t.tagName === 'SCRIPT' || t.tagName === 'LINK')) { if (!recovered()) { markRecover(); clearAndReload(); } else { fallback('Gagal memuat: ' + (t.src || t.href || '')); } } 172 else if (e && e.message) { last = e.message + (e.filename ? ('\n' + e.filename + ':' + (e.lineno || '')) : ''); setTimeout(function () { fallback(last); }, 1500); } 173 }, true); 174 window.addEventListener('unhandledrejection', function (e) { last = 'Promise: ' + ((e && e.reason && (e.reason.message || e.reason)) || ''); }); 175 // App tak ter-mount dalam 8 dtk â recover sekali; bila sudah pernah, tampilkan pesan. 176 window.addEventListener('load', function () { 177 setTimeout(function () { 178 if (terpasang()) { try { sessionStorage.removeItem(RK); } catch (e) {} return; } 179 if (!recovered()) { markRecover(); clearAndReload(); } else { fallback(last); } 180 }, 8000); 181 }); 182 })(); 183 </script>
183 184 <!-- regions.js (provinsiâkota utk checkout) hanya dipakai saat isi alamat â 185 defer agar TIDAK memblokir render awal (window.GM_REGIONS tetap siap 186 jauh sebelum pembeli mencapai checkout). --> 187
187<script defer src="/regions.js"></script>
187 188 </body> 189</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.