1<!DOCTYPE html><html lang="" data-ws-project="22124d94-d2c9-4a60-acbb-6b3f10503284" data-ws-version="30845" data-ws-last-published="2026-08-29T14:39:50.457Z"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/><link rel="preload" as="image" href="https://wp.ardacraft.me/wp-content/uploads/2026/05/66e87bba7657a78760119806_Isengard-minecraft-middle-earth-lotr.webp"/><link rel="icon" href="/_image/w_144,q_100/assets/favicon-48x48_X2mQHbKXndGWgL2TFrWsX.png"/><link rel="preload" href="/assets/Image-Background-ArdaCraft-27_ZF1yNKx-3brQoX-5NRt9v.webp" as="image"/><link rel="preconnect" href="https://use.typekit.net"/><link rel="preconnect" href="https://p.typekit.net"/><meta name="google-site-verification" content="6bTp97en7UgYOC3lzAvIKowaOzRTbqDBGtJzY1qsMfU"/><link rel="modulepreload" href="/assets/entry.client-BiNCLkaT.js"/><link rel="modulepreload" href="/assets/chunk-4N6VE7H7-Cg8mIVGN.js"/><link rel="modulepreload" href="/assets/root-CilvbZMI.js"/><link rel="modulepreload" href="/assets/_index-BzjJZqI1.js"/><link rel="modulepreload" href="/assets/image-BrfMozFv.js"/><link rel="modulepreload" href="/assets/fragment-RiJKGpPm.js"/><link rel="modulepreload" href="/assets/_location_._slug._index-CEykLSzn.js"/><link rel="modulepreload" href="/assets/index-C_26nMkx.js"/><meta property="og:url" content="https://ardacraft.me/location/isengard"/><meta property="og:title" content="Isengard â Explore Middle-earth from Your Browser"/><meta property="og:type" content="website"/><meta property="og:site_name" content="ArdaCraft"/><meta name="description" content="Visit Isengard through your browser and explore its features and surroundings in Middle-earth."/><meta property="og:description" content="Visit Isengard through your browser and explore its features and surroundings in Middle-earth."/><meta property="og:image" content="https://wp.ardacraft.me/wp-content/uploads/2026/05/66e87bba7657a78760119806_Isengard-minecraft-middle-earth-lotr.webp"/><meta property="twitter:card" content="summary_large_image"/><title>Isengard â Explore Middle-earth from Your Browser</title>
1<script type="application/ld+json">{"@context":"https://schema.org","@type":"WebSite","name":"ArdaCraft","url":"https://ardacraft.me"}</script>
1<link rel="stylesheet" href="/assets/index-Dm6jYb-h.css"/> 2 3<link rel="stylesheet" href="https://use.typekit.net/kag6rwi.css"/> 4 5<!-- --></head><body class="w-element cos19h3"><div style="display:contents"><div style="display:contents"><div darken-bg="true" class="w-element c1wt7jfi c1oltoh9 c15umh1c c9uqmb cz17h53"></div><div navbar="true" class="w-element c1oltoh9 c158s1wq c18460ip c1maocke cmre2if cl2xlqw c1l20dy0 ci5zejk c1a4d992 c1e9k3hw cypxkib chx63s8 c1e8qjia c14df0s2"><div data-homepage="footer-container" class="w-element c1wn46uq cozcy5p c1qe7a3l cbm90qe cjulrou c1a4d992 c1e9k3hw ce1b68t c1rx8qlb c1ljsp2s c1ll7j66"><div nav-menu="true" class="w-element c1uz7vom cbm90qe c17waf3r c1nfwxmq czpbsl2 cwlhc2g c1q7x0a9 cc9e4b0 c4rat9s c10vq3rr cz4712c cbx8lb7 cl41tk7 c1dirdz6 c14vr5tx"><div class="w-element c1x86i13 cq512wt"><a class="w-element c1qqnmdg" href="/" data-discover="true"><img nav-logo="true" class="w-image c1t129vl ct3f834" alt="" width="1000" height="1000" sizes="100vw" srcSet="/_image/w_16,q_80/assets/ardacraft-logo-round_SlBiCrCtO12Uw2o2AEJJm.png 16w, /_image/w_32,q_80/assets/ardacraft-logo-round_SlBiCrCtO12Uw2o2AEJJm.png 32w, /_image/w_48,q_80/assets/ardacraft-logo-round_SlBiCrCtO12Uw2o2AEJJm.png 48w, /_image/w_64,q_80/assets/ardacraft-logo-round_SlBiCrCtO12Uw2o2AEJJm.png 64w, /_image/w_96,q_80/assets/ardacraft-logo-round_SlBiCrCtO12Uw2o2AEJJm.png 96w, /_image/w_128,q_80/assets/ardacraft-logo-round_SlBiCrCtO12Uw2o2AEJJm.png 128w, /_image/w_256,q_80/assets/ardacraft-logo-round_SlBiCrCtO12Uw2o2AEJJm.png 256w, /_image/w_384,q_80/assets/ardacraft-logo-round_SlBiCrCtO12Uw2o2AEJJm.png 384w, /_image/w_640,q_80/assets/ardacraft-logo-round_SlBiCrCtO12Uw2o2AEJJm.png 640w, /_image/w_750,q_80/assets/ardacraft-logo-round_SlBiCrCtO12Uw2o2AEJJm.png 750w, /_image/w_828,q_80/assets/ardacraft-logo-round_SlBiCrCtO12Uw2o2AEJJm.png 828w, /_image/w_1080,q_80/assets/ardacraft-logo-round_SlBiCrCtO12Uw2o2AEJJm.png 1080w, /_image/w_1200,q_80/assets/ardacraft-logo-round_SlBiCrCtO12Uw2o2AEJJm.png 1200w, /_image/w_1920,q_80/assets/ardacraft-logo-round_SlBiCrCtO12Uw2o2AEJJm.png 1920w, /_image/w_2048,q_80/assets/ardacraft-logo-round_SlBiCrCtO12Uw2o2AEJJm.png 2048w" src="/_image/w_2048,q_80/assets/ardacraft-logo-round_SlBiCrCtO12Uw2o2AEJJm.png" decoding="async" loading="lazy"/></a></div><div class="w-element c1uz7vom c1851rqr c17waf3r cbm90qe c1nujqit crll831 c75lct5"><div nav-container="true" class="w-element c1wn46uq cg6mpnv cl2xlqw c1l20dy0 cjh4jyv cx7koon c1hkiy18 c10vq3rr cz4712c cvzk9dd cjw565y csqej54 cbx8lb7"><div nav-panel="explore" class="w-element c1uz7vom c1etu3xr c17waf3r c12vpo0c c7ogkau cbx8lb7"><div class="w-element c1wn46uq c1uz7vom c1qe7a3l c12vpo0c c7ogkau"><div class="w-element c1uz7vom c1qe7a3l c18dk4jj c1l6ozms"><a nav-stagger="true" nav-link="wrapper" class="w-element c1uz7vom c7ogkau c12vpo0c cbm90qe c17waf3r c9uv4ua cwry5n3 cu29a6v ccut9dl c119z9l c1n9z9db c1a4d3g5 c1d5q97y cbp5xrw" href="/location/hobbiton" data-discover="true"><div class="w-element c1uz7vom c7ogkau c12vpo0c cbm90qe cjulrou"><img class="w-image cdk8ru2 c17q5ox6 ct6po2z c7mtr3j c1rrox41 c2fzsy6 c1czrvri" alt="" width="100" height="100" sizes="100vw" srcSet="/_image/w_16,q_80/assets/Drop-Down-Image-Location-item_wv07h6oBEjLQi-AdSjufT.webp 16w, /_image/w_32,q_80/assets/Drop-Down-Image-Location-item_wv07h6oBEjLQi-AdSjufT.webp 32w, /_image/w_48,q_80/assets/Drop-Down-Image-Location-item_wv07h6oBEjLQi-AdSjufT.webp 48w, /_image/w_64,q_80/assets/Drop-Down-Image-Location-item_wv07h6oBEjLQi-AdSjufT.webp 64w, /_image/w_96,q_80/assets/Drop-Down-Image-Location-item_wv07h6oBEjLQi-AdSjufT.webp 96w, /_image/w_128,q_80/assets/Drop-Down-Image-Location-item_wv07h6oBEjLQi-AdSjufT.webp 128w, /_image/w_256,q_80/assets/Drop-Down-Image-Location-item_wv07h6oBEjLQi-AdSjufT.webp 256w" src="/_image/w_256,q_80/assets/Drop-Down-Image-Location-item_wv07h6oBEjLQi-AdSjufT.webp" decoding="async" loading="lazy"/><div class="w-element"><p nav-link="title" class="w-element ccp5xa0 cte87bx c1ofywq3 c1gtpjdp c1iq6tjl c1fkewyi cxs4t3 c183wvf2 ci1pq5k c1qe7a3l c11ilikl">Hobbiton</p><p class="w-element ccp5xa0 c1qi35su c1uf2hoa c1ofywq3 c1fkewyi cxs4t3 c183wvf2 ci1pq5k c1qe7a3l">The Shire, Eriador</p></div></div><div nav-link="arrow" class="w-element c1qi35su cri68x2"><div class="w-html-embed"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="text-[#d9b87f] opacity-0 -translate-x-4 group-hover:opacity-100 group-hover:translate-x-0 transition-all duration-300"><path d="M5 12h14"/><path d="m12 5 7 7-7 7"/></svg></div></div></a><a nav-stagger="true" nav-link="wrapper" aria-current="page" class="w-element c1uz7vom c7ogkau c12vpo0c cbm90qe c17waf3r c9uv4ua cwry5n3 cu29a6v ccut9dl c119z9l c1n9z9db c1a4d3g5 c1d5q97y cbp5xrw active" href="/location/isengard" data-discover="true"><div class="w-element c1uz7vom c7ogkau c12vpo0c cbm90qe cjulrou"><img class="w-image cdk8ru2 c17q5ox6 ct6po2z c7mtr3j c1rrox41 c2fzsy6 c1czrvri" alt="" width="100" height="100" sizes="100vw" srcSet="/_image/w_16,q_80/assets/Drop-Down-Image-Location-item-2_Cd90FHqBfRWvpa5QEvlyf.webp 16w, /_image/w_32,q_80/assets/Drop-Down-Image-Location-item-2_Cd90FHqBfRWvpa5QEvlyf.webp 32w, /_image/w_48,q_80/assets/Drop-Down-Image-Location-item-2_Cd90FHqBfRWvpa5QEvlyf.webp 48w, /_image/w_64,q_80/assets/Drop-Down-Image-Location-item-2_Cd90FHqBfRWvpa5QEvlyf.webp 64w, /_
5image/w_96,q_80/assets/Drop-Down-Image-Location-item-2_Cd90FHqBfRWvpa5QEvlyf.webp 96w, /_image/w_128,q_80/assets/Drop-Down-Image-Location-item-2_Cd90FHqBfRWvpa5QEvlyf.webp 128w, /_image/w_256,q_80/assets/Drop-Down-Image-Location-item-2_Cd90FHqBfRWvpa5QEvlyf.webp 256w" src="/_image/w_256,q_80/assets/Drop-Down-Image-Location-item-2_Cd90FHqBfRWvpa5QEvlyf.webp" decoding="async" loading="lazy"/><div class="w-element"><p nav-link="title" class="w-element ccp5xa0 cte87bx c1ofywq3 c1gtpjdp c1iq6tjl c1fkewyi cxs4t3 c183wvf2 ci1pq5k c1qe7a3l c11ilikl">Isengard</p><p class="w-element ccp5xa0 c1qi35su c1uf2hoa c1ofywq3 c1fkewyi cxs4t3 c183wvf2 ci1pq5k c1qe7a3l">Vale of Isen, Misty Mountains</p></div></div><div nav-link="arrow" class="w-element c1qi35su cri68x2"><div class="w-html-embed"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="text-[#d9b87f] opacity-0 -translate-x-4 group-hover:opacity-100 group-hover:translate-x-0 transition-all duration-300"><path d="M5 12h14"/><path d="m12 5 7 7-7 7"/></svg></div></div></a><a nav-stagger="true" nav-link="wrapper" class="w-element c1uz7vom c7ogkau c12vpo0c cbm90qe c17waf3r c9uv4ua cwry5n3 cu29a6v ccut9dl c119z9l c1n9z9db c1a4d3g5 c1d5q97y cbp5xrw" href="/location/bree" data-discover="true"><div class="w-element c1uz7vom c7ogkau c12vpo0c cbm90qe cjulrou"><img class="w-image cdk8ru2 c17q5ox6 ct6po2z c7mtr3j c1rrox41 c2fzsy6 c1czrvri" alt="" width="100" height="100" sizes="100vw" srcSet="/_image/w_16,q_80/assets/Drop-Down-Image-Location-item-1_kzuaSOOTjqTTX_o240QbJ.webp 16w, /_image/w_32,q_80/assets/Drop-Down-Image-Location-item-1_kzuaSOOTjqTTX_o240QbJ.webp 32w, /_image/w_48,q_80/assets/Drop-Down-Image-Location-item-1_kzuaSOOTjqTTX_o240QbJ.webp 48w, /_image/w_64,q_80/assets/Drop-Down-Image-Location-item-1_kzuaSOOTjqTTX_o240QbJ.webp 64w, /_image/w_96,q_80/assets/Drop-Down-Image-Location-item-1_kzuaSOOTjqTTX_o240QbJ.webp 96w, /_image/w_128,q_80/assets/Drop-Down-Image-Location-item-1_kzuaSOOTjqTTX_o240QbJ.webp 128w, /_image/w_256,q_80/assets/Drop-Down-Image-Location-item-1_kzuaSOOTjqTTX_o240QbJ.webp 256w" src="/_image/w_256,q_80/assets/Drop-Down-Image-Location-item-1_kzuaSOOTjqTTX_o240QbJ.webp" decoding="async" loading="lazy"/><div class="w-element"><p nav-link="title" class="w-element ccp5xa0 cte87bx c1ofywq3 c1gtpjdp c1iq6tjl c1fkewyi cxs4t3 c183wvf2 ci1pq5k c1qe7a3l c11ilikl">Bree</p><p class="w-element ccp5xa0 c1qi35su c1uf2hoa c1ofywq3 c1fkewyi cxs4t3 c183wvf2 ci1pq5k c1qe7a3l">Bree-land, Eriador</p></div></div><div nav-link="arrow" class="w-element c1qi35su cri68x2"><div class="w-html-embed"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="text-[#d9b87f] opacity-0 -translate-x-4 group-hover:opacity-100 group-hover:translate-x-0 transition-all duration-300"><path d="M5 12h14"/><path d="m12 5 7 7-7 7"/></svg></div></div></a></div><a nav-stagger="true" nav-link="wrapper-img" class="w-element c1wn46uq cty523k c181wked ckmiw1q c1kg20cg ck80xjz cn655op cz6q0ow" href="/location" data-discover="true"><img nav-link="image" class="w-image c1wn46uq c1rrox41 c1lo6eud" alt="" width="2000" height="1000" sizes="100vw" srcSet="/_image/w_16,q_80/assets/Image-Background-ArdaCraft-09_ELLsMO1Pb9RQiw6q5hFop.webp 16w, /_image/w_32,q_80/assets/Image-Background-ArdaCraft-09_ELLsMO1Pb9RQiw6q5hFop.webp 32w, /_image/w_48,q_80/assets/Image-Background-ArdaCraft-09_ELLsMO1Pb9RQiw6q5hFop.webp 48w, /_image/w_64,q_80/assets/Image-Background-ArdaCraft-09_ELLsMO1Pb9RQiw6q5hFop.webp 64w, /_image/w_96,q_80/assets/Image-Background-ArdaCraft-09_ELLsMO1Pb9RQiw6q5hFop.webp 96w, /_image/w_128,q_80/assets/Image-Background-ArdaCraft-09_ELLsMO1Pb9RQiw6q5hFop.webp 128w, /_image/w_256,q_80/assets/Image-Background-ArdaCraft-09_ELLsMO1Pb9RQiw6q5hFop.webp 256w, /_image/w_384,q_80/assets/Image-Background-ArdaCraft-09_ELLsMO1Pb9RQiw6q5hFop.webp 384w, /_image/w_640,q_80/assets/Image-Backgroun
5d-ArdaCraft-09_ELLsMO1Pb9RQiw6q5hFop.webp 640w, /_image/w_750,q_80/assets/Image-Background-ArdaCraft-09_ELLsMO1Pb9RQiw6q5hFop.webp 750w, /_image/w_828,q_80/assets/Image-Background-ArdaCraft-09_ELLsMO1Pb9RQiw6q5hFop.webp 828w, /_image/w_1080,q_80/assets/Image-Background-ArdaCraft-09_ELLsMO1Pb9RQiw6q5hFop.webp 1080w, /_image/w_1200,q_80/assets/Image-Background-ArdaCraft-09_ELLsMO1Pb9RQiw6q5hFop.webp 1200w, /_image/w_1920,q_80/assets/Image-Background-ArdaCraft-09_ELLsMO1Pb9RQiw6q5hFop.webp 1920w, /_image/w_2048,q_80/assets/Image-Background-ArdaCraft-09_ELLsMO1Pb9RQiw6q5hFop.webp 2048w, /_image/w_3840,q_80/assets/Image-Background-ArdaCraft-09_ELLsMO1Pb9RQiw6q5hFop.webp 3840w" src="/_image/w_3840,q_80/assets/Image-Background-ArdaCraft-09_ELLsMO1Pb9RQiw6q5hFop.webp" decoding="async" loading="lazy"/><div class="w-element cg6mpnv cil0izm c1g4z546 clhwsmj"><span nav-link="title" class="w-element cte87bx cuahv1a c1eyb87b c4iflru c1qe7a3l c17nrfvn c1scp8rj c1lez5qp c1uyrt4t">Discover all Locations</span></div><div class="w-element cg6mpnv c1k3h0ob cl2xlqw c1l20dy0 c1k693yl c158s1wq"></div></a></div><div class="w-element c1wn46uq c1uz7vom c1qe7a3l c12vpo0c c7ogkau"><div class="w-element c1uz7vom c1qe7a3l c18dk4jj c1l6ozms"><a nav-stagger="true" nav-link="wrapper" class="w-element c1uz7vom c7ogkau c12vpo0c cbm90qe c17waf3r c9uv4ua cwry5n3 cu29a6v ccut9dl c119z9l c1n9z9db c1a4d3g5 c1d5q97y cbp5xrw" href="/location/westmarch" data-discover="true"><div class="w-element c1uz7vom c7ogkau c12vpo0c cbm90qe cjulrou"><img class="w-image cnx8q2o c1tkm9sb c3p1tny c1frqqme c1rrox41 c2fzsy6 c1czrvri" alt="" width="256" height="256" sizes="100vw" srcSet="/_image/w_16,q_80/assets/68d455272c3135bf659239d9_Neahburg-minecraft-middle-earth-lotr_(1)_j-rDnLqJBILnEeJqyQRAV.webp 16w, /_image/w_32,q_80/assets/68d455272c3135bf659239d9_Neahburg-minecraft-middle-earth-lotr_(1)_j-rDnLqJBILnEeJqyQRAV.webp 32w, /_image/w_48,q_80/assets/68d455272c3135bf659239d9_Neahburg-minecraft-middle-earth-lotr_(1)_j-rDnLqJBILnEeJqyQRAV.webp 48w, /_image/w_64,q_80/assets/68d455272c3135bf659239d9_Neahburg-minecraft-middle-earth-lotr_(1)_j-rDnLqJBILnEeJqyQRAV.webp 64w, /_image/w_96,q_80/assets/68d455272c3135bf659239d9_Neahburg-minecraft-middle-earth-lotr_(1)_j-rDnLqJBILnEeJqyQRAV.webp 96w, /_image/w_128,q_80/assets/68d455272c3135bf659239d9_Neahburg-minecraft-middle-earth-lotr_(1)_j-rDnLqJBILnEeJqyQRAV.webp 128w, /_image/w_256,q_80/assets/68d455272c3135bf659239d9_Neahburg-minecraft-middle-earth-lotr_(1)_j-rDnLqJBILnEeJqyQRAV.webp 256w, /_image/w_384,q_80/assets/68d455272c3135bf659239d9_Neahburg-minecraft-middle-earth-lotr_(1)_j-rDnLqJBILnEeJqyQRAV.webp 384w, /_image/w_640,q_80/assets/68d455272c3135bf659239d9_Neahburg-minecraft-middle-earth-lotr_(1)_j-rDnLqJBILnEeJqyQRAV.webp 640w" src="/_image/w_640,q_80/assets/68d455272c3135bf659239d9_Neahburg-minecraft-middle-earth-lotr_(1)_j-rDnLqJBILnEeJqyQRAV.webp" decoding="async" loading="lazy"/><div class="w-element"><p nav-link="title" class="w-element ccp5xa0 cte87bx c1ofywq3 c1gtpjdp c1iq6tjl c1fkewyi cxs4t3 c183wvf2 ci1pq5k c1qe7a3l c11ilikl">Westmarch</p><p class="w-element ccp5xa0 c1qi35su c1uf2hoa c1ofywq3 c1fkewyi cxs4t3 c183wvf2 ci1pq5k c1qe7a3l">Western Rohan<br/></p></div></div><div nav-link="arrow" class="w-element c1qi35su cri68x2"><div class="w-html-embed"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="text-[#d9b87f] opacity-0 -translate-x-4 group-hover:opacity-100 group-hover:translate-x-0 transition-all duration-300"><path d="M5 12h14"/><path d="m12 5 7 7-7 7"/></svg></div></div></a><a nav-stagger="true" nav-link="wrapper" class="w-element c1uz7vom c7ogkau c12vpo0c cbm90qe c17waf3r c9uv4ua cwry5n3 cu29a6v ccut9dl c119z9l c1n9z9db c1a4d3g5 c1d5q97y cbp5xrw" href="/location/anorien" data-discover="true"><div class="w-element c1uz7vom c7ogkau c12vpo0c cbm90qe cjulrou"><img class="w-image cnx8q2o c1tkm9sb c3p1tny c1frqqme c1rrox41 c2fzsy6 c1czrvri" alt="" width="256" height="256" sizes="100vw" srcSet="/_image/w_16,q_80/assets/Pelandros-aerial-minecraft-middle-earth-lotr_(1)_Pvnl9IhK7pJVXd3GLjvEI.webp 16w, /_image/w_32,q_80/assets/Pelandros-aerial-minecraft-middle-earth-lotr_(1)_Pvnl9IhK7pJVXd3GLjvEI.webp 32w, /_image/w_48,q_80/assets/Pelandros-aerial-minecraft-middle-earth-lotr_(1)_Pvnl9IhK7pJVXd3GLjvEI.webp 48w, /_image/w_64,q_80/assets/Pelandros-aerial-minecraft-middle-earth-lotr_(1)_Pvnl9IhK7pJVXd3GLjvEI.webp 64w, /_
5image/w_96,q_80/assets/Pelandros-aerial-minecraft-middle-earth-lotr_(1)_Pvnl9IhK7pJVXd3GLjvEI.webp 96w, /_image/w_128,q_80/assets/Pelandros-aerial-minecraft-middle-earth-lotr_(1)_Pvnl9IhK7pJVXd3GLjvEI.webp 128w, /_image/w_256,q_80/assets/Pelandros-aerial-minecraft-middle-earth-lotr_(1)_Pvnl9IhK7pJVXd3GLjvEI.webp 256w, /_image/w_384,q_80/assets/Pelandros-aerial-minecraft-middle-earth-lotr_(1)_Pvnl9IhK7pJVXd3GLjvEI.webp 384w, /_image/w_640,q_80/assets/Pelandros-aerial-minecraft-middle-earth-lotr_(1)_Pvnl9IhK7pJVXd3GLjvEI.webp 640w" src="/_image/w_640,q_80/assets/Pelandros-aerial-minecraft-middle-earth-lotr_(1)_Pvnl9IhK7pJVXd3GLjvEI.webp" decoding="async" loading="lazy"/><div class="w-element"><p nav-link="title" class="w-element ccp5xa0 cte87bx c1ofywq3 c1gtpjdp c1iq6tjl c1fkewyi cxs4t3 c183wvf2 ci1pq5k c1qe7a3l c11ilikl">Anórien</p><p class="w-element ccp5xa0 c1qi35su c1uf2hoa c1ofywq3 c1fkewyi cxs4t3 c183wvf2 ci1pq5k c1qe7a3l">Northern Gondor<br/></p></div></div><div nav-link="arrow" class="w-element c1qi35su cri68x2"><div class="w-html-embed"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="text-[#d9b87f] opacity-0 -translate-x-4 group-hover:opacity-100 group-hover:translate-x-0 transition-all duration-300"><path d="M5 12h14"/><path d="m12 5 7 7-7 7"/></svg></div></div></a><a nav-stagger="true" nav-link="wrapper" class="w-element c1uz7vom c7ogkau c12vpo0c cbm90qe c17waf3r c9uv4ua cwry5n3 cu29a6v ccut9dl c119z9l c1n9z9db c1a4d3g5 c1d5q97y cbp5xrw" href="/location/the-shire" data-discover="true"><div class="w-element c1uz7vom c7ogkau c12vpo0c cbm90qe cjulrou"><img class="w-image cnx8q2o c1tkm9sb c3p1tny c1frqqme c1rrox41 c2fzsy6 c1czrvri" alt="" width="256" height="256" sizes="100vw" srcSet="/_image/w_16,q_80/assets/67cf4a783e21f4ab9d57c888_Hardbottle-Windmill-updates-minecraft-middle-earth-lotr_(1)_totcujB8D_GZkK6DI3wdV.webp 16w, /_image/w_32,q_80/assets/67cf4a783e21f4ab9d57c888_Hardbottle-Windmill-updates-minecraft-middle-earth-lotr_(1)_totcujB8D_GZkK6DI3wdV.webp 32w, /_image/w_48,q_80/assets/67cf4a783e21f4ab9d57c888_Hardbottle-Windmill-updates-minecraft-middle-earth-lotr_(1)_totcujB8D_GZkK6DI3wdV.webp 48w, /_image/w_64,q_80/assets/67cf4a783e21f4ab9d57c888_Hardbottle-Windmill-updates-minecraft-middle-earth-lotr_(1)_totcujB8D_GZkK6DI3wdV.webp 64w, /_image/w_96,q_80/assets/67cf4a783e21f4ab9d57c888_Hardbottle-Windmill-updates-minecraft-middle-earth-lotr_(1)_totcujB8D_GZkK6DI3wdV.webp 96w, /_image/w_128,q_80/assets/67cf4a783e21f4ab9d57c888_Hardbottle-Windmill-updates-minecraft-middle-earth-lotr_(1)_totcujB8D_GZkK6DI3wdV.webp 128w, /_image/w_256,q_80/assets/67cf4a783e21f4ab9d57c888_Hardbottle-Windmill-updates-minecraft-middle-earth-lotr_(1)_totcujB8D_GZkK6DI3wdV.webp 256w, /_image/w_384,q_80/assets/67cf4a783e21f4ab9d57c888_Hardbottle-Windmill-updates-minecraft-middle-earth-lotr_(1)_totcujB8D_GZkK6DI3wdV.webp 384w, /_image/w_640,q_80/assets/67cf4a783e21f4ab9d57c888_Hardbottle-Windmill-updates-minecraft-middle-earth-lotr_(1)_totcujB8D_GZkK6DI3wdV.webp 640w" src="/_image/w_640,q_80/assets/67cf4a783e21f4ab9d57c888_Hardbottle-Windmill-updates-minecraft-middle-earth-lotr_(1)_totcujB8D_GZkK6DI3wdV.webp" decoding="async" loading="lazy"/><div class="w-element"><p nav-link="title" class="w-element ccp5xa0 cte87bx c1ofywq3 c1gtpjdp c1iq6tjl c1fkewyi cxs4t3 c183wvf2 ci1pq5k c1qe7a3l c11ilikl">The Shire</p><p class="w-element ccp5xa0 c1qi35su c1uf2hoa c1ofywq3 c1fkewyi cxs4t3 c183wvf2 ci1pq5k c1qe7a3l">Central Eriador</p></div></div><div nav-link="arrow" class="w-element c1qi35su cri68x2"><div class="w-html-embed"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="text-[#d9b87f] opacity-0 -translate-x-4 group-hover:opacity-100 group-hover:translate-x-0 transition-all duration-300"><path d="M5 12h14"/><path d="m12 5 7 7-7 7"/></svg></div></div></a></div><a nav-stagger="true" nav-link="wrapper-img" class="w-element c1wn46uq cty523k c181wked ckmiw1q c1kg20cg ck80xjz cn655op cz6q0ow" href="/contributors" data-discover="true"><img nav-link="image" class="w-image c1wn46uq c1rrox41 c1lo6eud" alt="" width="2000" height="1000" sizes="100vw" srcSet="/_image/w_16,q_80/assets/Image-Backgroun
5d-ArdaCraft-08__T10uQH4IiG-5qRd93XmZ.webp 16w, /_image/w_32,q_80/assets/Image-Background-ArdaCraft-08__T10uQH4IiG-5qRd93XmZ.webp 32w, /_image/w_48,q_80/assets/Image-Background-ArdaCraft-08__T10uQH4IiG-5qRd93XmZ.webp 48w, /_image/w_64,q_80/assets/Image-Background-ArdaCraft-08__T10uQH4IiG-5qRd93XmZ.webp 64w, /_image/w_96,q_80/assets/Image-Background-ArdaCraft-08__T10uQH4IiG-5qRd93XmZ.webp 96w, /_image/w_128,q_80/assets/Image-Background-ArdaCraft-08__T10uQH4IiG-5qRd93XmZ.webp 128w, /_image/w_256,q_80/assets/Image-Background-ArdaCraft-08__T10uQH4IiG-5qRd93XmZ.webp 256w, /_image/w_384,q_80/assets/Image-Background-ArdaCraft-08__T10uQH4IiG-5qRd93XmZ.webp 384w, /_image/w_640,q_80/assets/Image-Background-ArdaCraft-08__T10uQH4IiG-5qRd93XmZ.webp 640w, /_image/w_750,q_80/assets/Image-Background-ArdaCraft-08__T10uQH4IiG-5qRd93XmZ.webp 750w, /_image/w_828,q_80/assets/Image-Background-ArdaCraft-08__T10uQH4IiG-5qRd93XmZ.webp 828w, /_image/w_1080,q_80/assets/Image-Background-ArdaCraft-08__T10uQH4IiG-5qRd93XmZ.webp 1080w, /_image/w_1200,q_80/assets/Image-Background-ArdaCraft-08__T10uQH4IiG-5qRd93XmZ.webp 1200w, /_image/w_1920,q_80/assets/Image-Background-ArdaCraft-08__T10uQH4IiG-5qRd93XmZ.webp 1920w, /_image/w_2048,q_80/assets/Image-Background-ArdaCraft-08__T10uQH4IiG-5qRd93XmZ.webp 2048w, /_image/w_3840,q_80/assets/Image-Background-ArdaCraft-08__T10uQH4IiG-5qRd93XmZ.webp 3840w" src="/_image/w_3840,q_80/assets/Image-Background-ArdaCraft-08__T10uQH4IiG-5qRd93XmZ.webp" decoding="async" loading="lazy"/><div class="w-element cg6mpnv cil0izm c1g4z546 clhwsmj"><span nav-link="title" class="w-element cte87bx cuahv1a c1eyb87b c4iflru c1qe7a3l c17nrfvn c1scp8rj c1lez5qp c1uyrt4t">Meet our Contributors</span></div><div class="w-element cg6mpnv c1k3h0ob cl2xlqw c1l20dy0 c1k693yl c158s1wq"></div></a></div></div><div nav-panel="maps" class="w-element c1uz7vom c1etu3xr c17waf3r c12vpo0c c7ogkau cbx8lb7"><div class="w-element c1uz7vom c1etu3xr clxdfzs cyjoizj c1wn46uq"><a nav-stagger="true" nav-link="wrapper-img" class="w-element c1wn46uq cty523k c181wked ckmiw1q c1kg20cg ck80xjz cn655op cz6q0ow" href="/map/server-live-map" data-discover="true"><img nav-link="image" class="w-image c1wn46uq c1rrox41 c1lo6eud" alt="" width="400" height="300" sizes="100vw" srcSet="/_image/w_16,q_80/assets/Drop-Down-Image-Live-Map_tXy9B4Y85UrJKV1J6n6cE.webp 16w, /_image/w_32,q_80/assets/Drop-Down-Image-Live-Map_tXy9B4Y85UrJKV1J6n6cE.webp 32w, /_image/w_48,q_80/assets/Drop-Down-Image-Live-Map_tXy9B4Y85UrJKV1J6n6cE.webp 48w, /_image/w_64,q_80/assets/Drop-Down-Image-Live-Map_tXy9B4Y85UrJKV1J6n6cE.webp 64w, /_image/w_96,q_80/assets/Drop-Down-Image-Live-Map_tXy9B4Y85UrJKV1J6n6cE.webp 96w, /_image/w_128,q_80/assets/Drop-Down-Image-Live-Map_tXy9B4Y85UrJKV1J6n6cE.webp 128w, /_image/w_256,q_80/assets/Drop-Down-Image-Live-Map_tXy9B4Y85UrJKV1J6n6cE.webp 256w, /_image/w_384,q_80/assets/Drop-Down-Image-Live-Map_tXy9B4Y85UrJKV1J6n6cE.webp 384w, /_image/w_640,q_80/assets/Drop-Down-Image-Live-Map_tXy9B4Y85UrJKV1J6n6cE.webp 640w, /_image/w_750,q_80/assets/Drop-Down-Image-Live-Map_tXy9B4Y85UrJKV1J6n6cE.webp 750w, /_image/w_828,q_80/assets/Drop-Down-Image-Live-Map_tXy9B4Y85UrJKV1J6n6cE.webp 828w" src="/_image/w_828,q_80/assets/Drop-Down-Image-Live-Map_tXy9B4Y85UrJKV1J6n6cE.webp" decoding="async" loading="lazy"/><div class="w-element cg6mpnv cil0izm c1g4z546 clhwsmj"><span nav-link="title" class="w-element cte87bx cuahv1a c1eyb87b c4iflru c1qe7a3l c17nrfvn c1scp8rj c1lez5qp c1uyrt4t">Live Server Map</span></div><div class="w-element cg6mpnv c1k3h0ob cl2xlqw c1l20dy0 c1k693yl c158s1wq"></div></a><a nav-stagger="true" nav-link="wrapper-img" class="w-element c1wn46uq cty523k c181wked ckmiw1q c1kg20cg ck80xjz cn655op cz6q0ow" href="/map/middle-earth-interactive-map" data-discover="true"><img nav-link="image" class="w-image c1wn46uq c1rrox41 c1lo6eud" alt="" width="400" height="300" sizes="100vw" srcSet="/_image/w_16,q_80/assets/Drop-Down-Image-Live-Map-1_DeJw0QD1Dmq8Nfy6jIpmm.webp 16w, /_image/w_32,q_80/assets/Drop-Down-Image-Live-Map-1_DeJw0QD1Dmq8Nfy6jIpmm.webp 32w, /_image/w_48,q_80/assets/Drop-Down-Image-Live-Map-1_DeJw0QD1Dmq8Nfy6jIpmm.webp 48w, /_image/w_64,q_80/assets/Drop-Down-Image-Live-Map-1_DeJw0QD1Dmq8Nfy6jIpmm.webp 64w, /_
5image/w_96,q_80/assets/Drop-Down-Image-Live-Map-1_DeJw0QD1Dmq8Nfy6jIpmm.webp 96w, /_image/w_128,q_80/assets/Drop-Down-Image-Live-Map-1_DeJw0QD1Dmq8Nfy6jIpmm.webp 128w, /_image/w_256,q_80/assets/Drop-Down-Image-Live-Map-1_DeJw0QD1Dmq8Nfy6jIpmm.webp 256w, /_image/w_384,q_80/assets/Drop-Down-Image-Live-Map-1_DeJw0QD1Dmq8Nfy6jIpmm.webp 384w, /_image/w_640,q_80/assets/Drop-Down-Image-Live-Map-1_DeJw0QD1Dmq8Nfy6jIpmm.webp 640w, /_image/w_750,q_80/assets/Drop-Down-Image-Live-Map-1_DeJw0QD1Dmq8Nfy6jIpmm.webp 750w, /_image/w_828,q_80/assets/Drop-Down-Image-Live-Map-1_DeJw0QD1Dmq8Nfy6jIpmm.webp 828w" src="/_image/w_828,q_80/assets/Drop-Down-Image-Live-Map-1_DeJw0QD1Dmq8Nfy6jIpmm.webp" decoding="async" loading="lazy"/><div class="w-element cg6mpnv cil0izm c1g4z546 clhwsmj"><span nav-link="title" class="w-element cte87bx cuahv1a c1eyb87b c4iflru c1qe7a3l c17nrfvn c1scp8rj c1lez5qp c1uyrt4t">Interactive Map</span></div><div class="w-element cg6mpnv c1k3h0ob cl2xlqw c1l20dy0 c1k693yl c158s1wq"></div></a><a nav-stagger="true" nav-link="wrapper-img" class="w-element c1wn46uq cty523k c181wked ckmiw1q c1kg20cg ck80xjz cn655op cz6q0ow" href="/map" data-discover="true"><img nav-link="image" class="w-image c1wn46uq c1rrox41 c1lo6eud" alt="" width="400" height="300" sizes="100vw" srcSet="/_image/w_16,q_80/assets/Drop-Down-Image-All-Maps_1_f23yPLOhvOnb866lpGUeG.webp 16w, /_image/w_32,q_80/assets/Drop-Down-Image-All-Maps_1_f23yPLOhvOnb866lpGUeG.webp 32w, /_image/w_48,q_80/assets/Drop-Down-Image-All-Maps_1_f23yPLOhvOnb866lpGUeG.webp 48w, /_image/w_64,q_80/assets/Drop-Down-Image-All-Maps_1_f23yPLOhvOnb866lpGUeG.webp 64w, /_image/w_96,q_80/assets/Drop-Down-Image-All-Maps_1_f23yPLOhvOnb866lpGUeG.webp 96w, /_image/w_128,q_80/assets/Drop-Down-Image-All-Maps_1_f23yPLOhvOnb866lpGUeG.webp 128w, /_image/w_256,q_80/assets/Drop-Down-Image-All-Maps_1_f23yPLOhvOnb866lpGUeG.webp 256w, /_image/w_384,q_80/assets/Drop-Down-Image-All-Maps_1_f23yPLOhvOnb866lpGUeG.webp 384w, /_image/w_640,q_80/assets/Drop-Down-Image-All-Maps_1_f23yPLOhvOnb866lpGUeG.webp 640w, /_image/w_750,q_80/assets/Drop-Down-Image-All-Maps_1_f23yPLOhvOnb866lpGUeG.webp 750w, /_image/w_828,q_80/assets/Drop-Down-Image-All-Maps_1_f23yPLOhvOnb866lpGUeG.webp 828w" src="/_image/w_828,q_80/assets/Drop-Down-Image-All-Maps_1_f23yPLOhvOnb866lpGUeG.webp" decoding="async" loading="lazy"/><div class="w-element cg6mpnv cil0izm c1g4z546 clhwsmj"><span nav-link="title" class="w-element cte87bx cuahv1a c1eyb87b c4iflru c1qe7a3l c17nrfvn c1scp8rj c1lez5qp c1uyrt4t">All Maps</span></div><div class="w-element cg6mpnv c1k3h0ob cl2xlqw c1l20dy0 c1k693yl c158s1wq"></div></a></div></div><div nav-panel="learn" class="w-element c1uz7vom c1etu3xr c17waf3r c12vpo0c c7ogkau cbx8lb7"><div class="w-element c1wn46uq c1uz7vom c1qe7a3l c12vpo0c c7ogkau"><div class="w-element c1uz7vom c1qe7a3l c18dk4jj c1l6ozms"><div class="w-element c1uz7vom"><div class="w-element cf5cbyn"><a nav-stagger="true" nav-link="wrapper" class="w-element c1uz7vom c7ogkau c12vpo0c cbm90qe c17waf3r c9uv4ua cwry5n3 cu29a6v ccut9dl c119z9l c1n9z9db c1a4d3g5 c1d5q97y cbp5xrw" href="/resources/conquest-reforged-our-modpack-for-middle-earth" data-discover="true"><div class="w-element c1uz7vom c7ogkau c12vpo0c cbm90qe cjulrou"><img class="w-image cdk8ru2 c17q5ox6 ct6po2z c7mtr3j c1rrox41 c2fzsy6 c1czrvri" alt="" width="100" height="100" sizes="100vw" srcSet="/_image/w_16,q_80/assets/Drop-Down-Image-Learn-item_doplqurLYL6fbgG3VkQiL.jpg 16w, /_image/w_32,q_80/assets/Drop-Down-Image-Learn-item_doplqurLYL6fbgG3VkQiL.jpg 32w, /_image/w_48,q_80/assets/Drop-Down-Image-Learn-item_doplqurLYL6fbgG3VkQiL.jpg 48w, /_image/w_64,q_80/assets/Drop-Down-Image-Learn-item_doplqurLYL6fbgG3VkQiL.jpg 64w, /_image/w_96,q_80/assets/Drop-Down-Image-Learn-item_doplqurLYL6fbgG3VkQiL.jpg 96w, /_image/w_128,q_80/assets/Drop-Down-Image-Learn-item_doplqurLYL6fbgG3VkQiL.jpg 128w, /_image/w_256,q_80/assets/Drop-Down-Image-Learn-item_doplqurLYL6fbgG3VkQiL.jpg 256w" src="/_image/w_256,q_80/assets/Drop-Down-Image-Learn-item_doplqurLYL6fbgG3VkQiL.jpg" decoding="async" loading="lazy"/><div class="w-element"><p nav-link="title" class="w-element ccp5xa0 cte87bx c1ofywq3 c1gtpjdp c1iq6tjl c1fkewyi cxs4t3 c183wvf2 ci1pq5k c1qe7a3l c11ilikl">Conquest Reforged</p><p class="w-element ccp5xa0 c1qi35su c1uf2hoa c1ofywq3 c1fkewyi cxs4t3 c183wvf2 ci1pq5k c1qe7a3l">Our modpack for Middle-earth</p></div></div><div nav-link="arrow" class="w-element c1qi35su cri68x2"><div class="w-html-embed"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="text-[#d9b87f] opacity-0 -translate-x-4 group-hover:opacity-100 group-hover:translate-x-0 transition-all duration-300"><path d="M5 12h14"/><path d="m12 5 7 7-7 7"/></svg></div></div></a><a nav-stagger="true" nav-link="wrapper" class="w-element c1uz7vom c7ogkau c12vpo0c cbm90qe c17waf3r c9uv4ua cwry5n3 cu29a6v ccut9dl c119z9l c1n9z9db c1a4d3g5 c1d5q97y cbp5xrw" href="/resources/follow-frodos-path" data-discover="true"><div class="w-element c1uz7vom c7ogkau c12vpo0c cbm90qe cjulrou"><img class="w-image cdk8ru2 c17q5ox6 ct6po2z c7mtr3j c1rrox41 c2fzsy6 c1czrvri" alt="" width="100" height="100" sizes="100vw" srcSet="/_image/w_16,q_80/assets/Drop-Down-Image-Learn-item-3_uaxwztHA8IkQFCfBB-Wug.jpg 16w, /_image/w_32,q_80/assets/Drop-Down-Image-Learn-item-3_uaxwztHA8IkQFCfBB-Wug.jpg 32w, /_image/w_48,q_80/assets/Drop-Down-Image-Learn-item-3_uaxwztHA8IkQFCfBB-Wug.jpg 48w, /_image/w_64,q_80/assets/Drop-Down-Image-Learn-item-3_uaxwztHA8IkQFCfBB-Wug.jpg 64w, /_image/w_96,q_80/assets/Drop-Down-Image-Learn-item-3_uaxwztHA8IkQFCfBB-Wug.jpg 96w, /_image/w_128,q_80/assets/Drop-Down-Image-Learn-item-3_uaxwztHA8IkQFCfBB-Wug.jpg 128w, /_image/w_256,q_80/assets/Drop-Down-Image-Learn-item-3_uaxwztHA8IkQFCfBB-Wug.jpg 256w" src="/_image/w_256,q_80/assets/Drop-Down-Image-Learn-item-3_uaxwztHA8IkQFCfBB-Wug.jpg" decoding="async" loading="lazy"/><div class="w-element"><p nav-link="title" class="w-element ccp5xa0 cte87bx c1ofywq3 c1gtpjdp c1iq6tjl c1fkewyi cxs4t3 c183wvf2 ci1pq5k c1qe7a3l c11ilikl">Follow Frodo's Path</p><p class="w-element ccp5xa0 c1qi35su c1uf2hoa c1ofywq3 c1fkewyi cxs4t3 c183wvf2 ci1pq5k c1qe7a3l">From the Shire to Mordor</p></div></div><div nav-link="arrow" class="w-element c1qi35su cri68x2"><div class="w-html-embed"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="text-[#d9b87f] opacity-0 -translate-x-4 group-hover:opacity-100 group-hover:translate-x-0 transition-all duration-300"><path d="M5 12h14"/><path d="m12 5 7 7-7 7"/></svg></div></div></a></div><div class="w-element cf5cbyn"><a nav-stagger="true" nav-link="wrapper" class="w-element c1uz7vom c7ogkau c12vpo0c cbm90qe c17waf3r c9uv4ua cwry5n3 cu29a6v ccut9dl c119z9l c1n9z9db c1a4d3g5 c1d5q97y cbp5xrw" href="/resources/how-to-apply" data-discover="true"><div class="w-element c1uz7vom c7ogkau c12vpo0c cbm90qe cjulrou"><img class="w-image cdk8ru2 c17q5ox6 ct6po2z c7mtr3j c1rrox41 c2fzsy6 c1czrvri" alt="" width="100" height="100" sizes="100vw" srcSet="/_image/w_16,q_80/assets/Drop-Down-Image-Learn-item-1_9JOn9Fzazj2hN-0Xa-oiA.jpg 16w, /_image/w_32,q_80/assets/Drop-Down-Image-Learn-item-1_9JOn9Fzazj2hN-0Xa-oiA.jpg 32w, /_image/w_48,q_80/assets/Drop-Down-Image-Learn-item-1_9JOn9Fzazj2hN-0Xa-oiA.jpg 48w, /_image/w_64,q_80/assets/Drop-Down-Image-Learn-item-1_9JOn9Fzazj2hN-0Xa-oiA.jpg 64w, /_image/w_96,q_80/assets/Drop-Down-Image-Learn-item-1_9JOn9Fzazj2hN-0Xa-oiA.jpg 96w, /_image/w_128,q_80/assets/Drop-Down-Image-Learn-item-1_9JOn9Fzazj2hN-0Xa-oiA.jpg 128w, /_image/w_256,q_80/assets/Drop-Down-Image-Learn-item-1_9JOn9Fzazj2hN-0Xa-oiA.jpg 256w" src="/_image/w_256,q_80/assets/Drop-Down-Image-Learn-item-1_9JOn9Fzazj2hN-0Xa-oiA.jpg" decoding="async" loading="lazy"/><div class="w-element"><p nav-link="title" class="w-element ccp5xa0 cte87bx c1ofywq3 c1gtpjdp c1iq6tjl c1fkewyi cxs4t3 c183wvf2 ci1pq5k c1qe7a3l c11ilikl">How to Apply</p><p class="w-element ccp5xa0 c1qi35su c1uf2hoa c1ofywq3 c1fkewyi cxs4t3 c183wvf2 ci1pq5k c1qe7a3l">Learn how to join our team</p></div></div><div nav-link="arrow" class="w-element c1qi35su cri68x2"><div class="w-html-embed"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="text-[#d9b87f] opacity-0 -translate-x-4 group-hover:opacity-100 group-hover:translate-x-0 transition-all duration-300"><path d="M5 12h14"/><path d="m12 5 7 7-7 7"/></svg></div></div></a><a nav-stagger="true" nav-link="wrapper" class="w-element c1uz7vom c7ogkau c12vpo0c cbm90qe c17waf3r c9uv4ua cwry5n3 cu29a6v ccut9dl c119z9l c1n9z9db c1a4d3g5 c1d5q97y cbp5xrw" href="/resources/gradient-guide" data-discover="true"><div class="w-element c1uz7vom c7ogkau c12vpo0c cbm90qe cjulrou"><img class="w-image cdk8ru2 c17q5ox6 ct6po2z c7mtr3j c1rrox41 c2fzsy6 c1czrvri" alt="" width="100" height="100" sizes="100vw" srcSet="/_image/w_16,q_80/assets/Drop-Down-Image-Learn-item-2_jKw5oALDCty0llzjRYGYl.jpg 16w, /_image/w_32,q_80/assets/Drop-Down-Image-Learn-item-2_jKw5oALDCty0llzjRYGYl.jpg 32w, /_image/w_48,q_80/assets/Drop-Down-Image-Learn-item-2_jKw5oALDCty0llzjRYGYl.jpg 48w, /_image/w_64,q_80/assets/Drop-Down-Image-Learn-item-2_jKw5oALDCty0llzjRYGYl.jpg 64w, /_image/w_96,q_80/assets/Drop-Down-Image-Learn-item-2_jKw5oALDCty0llzjRYGYl.jpg 96w, /_image/w_128,q_80/assets/Drop-Down-Image-Learn-item-2_jKw5oALDCty0llzjRYGYl.jpg 128w, /_image/w_256,q_80/assets/Drop-Down-Image-Learn-item-2_jKw5oALDCty0llzjRYGYl.jpg 256w" src="/_image/w_256,q_80/assets/Drop-Down-Image-Learn-item-2_jKw5oALDCty0llzjRYGYl.jpg" decoding="async" loading="lazy"/><div class="w-element"><p nav-link="title" class="w-element ccp5xa0 cte87bx c1ofywq3 c1gtpjdp c1iq6tjl c1fkewyi cxs4t3 c183wvf2 ci1pq5k c1qe7a3l c11ilikl">Gradient Guide</p><p class="w-element ccp5xa0 c1qi35su c1uf2hoa c1ofywq3 c1fkewyi cxs4t3 c183wvf2 ci1pq5k c1qe7a3l">Learn how to make beautiful gradients</p></div></div><div nav-link="arrow" class="w-element c1qi35su cri68x2"><div class="w-html-embed"><svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="text-[#d9b87f] opacity-0 -translate-x-4 group-hover:opacity-100 group-hover:translate-x-0 transition-all duration-300"><path d="M5 12h14"/><path d="m12 5 7 7-7 7"/></svg></div></div></a></div></div></div><a nav-stagger="true" nav-link="wrapper-img" class="w-element c1wn46uq cty523k c181wked ckmiw1q c1kg20cg ck80xjz cn655op cz6q0ow" href="/resources" data-discover="true"><img nav-link="image" class="w-image c1wn46uq c1rrox41 c1lo6eud" alt="" width="2000" height="1000" sizes="100vw" srcSet="/_image/w_16,q_80/assets/Image-Backgroun
5d-ArdaCraft-21_isEDPdNShjVrdUWg2JmwI.webp 16w, /_image/w_32,q_80/assets/Image-Background-ArdaCraft-21_isEDPdNShjVrdUWg2JmwI.webp 32w, /_image/w_48,q_80/assets/Image-Background-ArdaCraft-21_isEDPdNShjVrdUWg2JmwI.webp 48w, /_image/w_64,q_80/assets/Image-Background-ArdaCraft-21_isEDPdNShjVrdUWg2JmwI.webp 64w, /_image/w_96,q_80/assets/Image-Background-ArdaCraft-21_isEDPdNShjVrdUWg2JmwI.webp 96w, /_image/w_128,q_80/assets/Image-Background-ArdaCraft-21_isEDPdNShjVrdUWg2JmwI.webp 128w, /_image/w_256,q_80/assets/Image-Background-ArdaCraft-21_isEDPdNShjVrdUWg2JmwI.webp 256w, /_image/w_384,q_80/assets/Image-Background-ArdaCraft-21_isEDPdNShjVrdUWg2JmwI.webp 384w, /_image/w_640,q_80/assets/Image-Background-ArdaCraft-21_isEDPdNShjVrdUWg2JmwI.webp 640w, /_image/w_750,q_80/assets/Image-Background-ArdaCraft-21_isEDPdNShjVrdUWg2JmwI.webp 750w, /_image/w_828,q_80/assets/Image-Background-ArdaCraft-21_isEDPdNShjVrdUWg2JmwI.webp 828w, /_image/w_1080,q_80/assets/Image-Background-ArdaCraft-21_isEDPdNShjVrdUWg2JmwI.webp 1080w, /_image/w_1200,q_80/assets/Image-Background-ArdaCraft-21_isEDPdNShjVrdUWg2JmwI.webp 1200w, /_image/w_1920,q_80/assets/Image-Background-ArdaCraft-21_isEDPdNShjVrdUWg2JmwI.webp 1920w, /_image/w_2048,q_80/assets/Image-Background-ArdaCraft-21_isEDPdNShjVrdUWg2JmwI.webp 2048w, /_image/w_3840,q_80/assets/Image-Background-ArdaCraft-21_isEDPdNShjVrdUWg2JmwI.webp 3840w" src="/_image/w_3840,q_80/assets/Image-Background-ArdaCraft-21_isEDPdNShjVrdUWg2JmwI.webp" decoding="async" loading="lazy"/><div class="w-element cg6mpnv cil0izm c1g4z546 clhwsmj"><span nav-link="title" class="w-element cte87bx cuahv1a c1eyb87b c4iflru c1qe7a3l c17nrfvn c1scp8rj c1lez5qp c1uyrt4t">Discover all Articles</span></div><div class="w-element cg6mpnv c1k3h0ob cl2xlqw c1l20dy0 c1k693yl c158s1wq"></div></a></div></div><div nav-panel="about" class="w-element c1uz7vom c1etu3xr c17waf3r c12vpo0c c7ogkau cbx8lb7"><div class="w-element c1uz7vom c1etu3xr clxdfzs cyjoizj c1wn46uq"><a nav-stagger="true" nav-link="wrapper-img" class="w-element c1wn46uq cty523k c181wked ckmiw1q c1kg20cg ck80xjz cn655op cz6q0ow" href="/about" data-discover="true"><img nav-link="image" class="w-image c1wn46uq c1rrox41 c1lo6eud" alt="" width="400" height="300" sizes="100vw" srcSet="/_image/w_16,q_80/assets/Drop-Down-Image-About-us_1_xf1EENLbqOG3QGpgzwsjD.webp 16w, /_image/w_32,q_80/assets/Drop-Down-Image-About-us_1_xf1EENLbqOG3QGpgzwsjD.webp 32w, /_image/w_48,q_80/assets/Drop-Down-Image-About-us_1_xf1EENLbqOG3QGpgzwsjD.webp 48w, /_image/w_64,q_80/assets/Drop-Down-Image-About-us_1_xf1EENLbqOG3QGpgzwsjD.webp 64w, /_image/w_96,q_80/assets/Drop-Down-Image-About-us_1_xf1EENLbqOG3QGpgzwsjD.webp 96w, /_image/w_128,q_80/assets/Drop-Down-Image-About-us_1_xf1EENLbqOG3QGpgzwsjD.webp 128w, /_image/w_256,q_80/assets/Drop-Down-Image-About-us_1_xf1EENLbqOG3QGpgzwsjD.webp 256w, /_image/w_384,q_80/assets/Drop-Down-Image-About-us_1_xf1EENLbqOG3QGpgzwsjD.webp 384w, /_image/w_640,q_80/assets/Drop-Down-Image-About-us_1_xf1EENLbqOG3QGpgzwsjD.webp 640w, /_image/w_750,q_80/assets/Drop-Down-Image-About-us_1_xf1EENLbqOG3QGpgzwsjD.webp 750w, /_image/w_828,q_80/assets/Drop-Down-Image-About-us_1_xf1EENLbqOG3QGpgzwsjD.webp 828w" src="/_image/w_828,q_80/assets/Drop-Down-Image-About-us_1_xf1EENLbqOG3QGpgzwsjD.webp" decoding="async" loading="lazy"/><div class="w-element cg6mpnv cil0izm c1g4z546 clhwsmj"><span nav-link="title" class="w-element cte87bx cuahv1a c1eyb87b c4iflru c1qe7a3l c17nrfvn c1scp8rj c1lez5qp c1uyrt4t">About us</span></div><div class="w-element cg6mpnv c1k3h0ob cl2xlqw c1l20dy0 c1k693yl c158s1wq"></div></a><a nav-stagger="true" nav-link="wrapper-img" class="w-element c1wn46uq cty523k c181wked ckmiw1q c1kg20cg ck80xjz cn655op cz6q0ow" href="/support-us" data-discover="true"><img nav-link="image" class="w-image c1wn46uq c1rrox41 c1lo6eud" alt="" width="400" height="300" sizes="100vw" srcSet="/_image/w_16,q_80/assets/Drop-Down-Image-Support-us_(1)_V34AuBoqxeD-lKcmKN_6V.jpg 16w, /_image/w_32,q_80/assets/Drop-Down-Image-Support-us_(1)_V34AuBoqxeD-lKcmKN_6V.jpg 32w, /_image/w_48,q_80/assets/Drop-Down-Image-Support-us_(1)_V34AuBoqxeD-lKcmKN_6V.jpg 48w, /_image/w_64,q_80/assets/Drop-Down-Image-Support-us_(1)_V34AuBoqxeD-lKcmKN_6V.jpg 64w, /_image/w_96,q_80/assets/Drop-Down-Image-Support-us_(1)_V34AuBoqxeD-lKcmKN_6V.jpg 96w, /_image/w_128,q_80/assets/Drop-Down-Image-Support-us_(1)_V34AuBoqxeD-lKcmKN_6V.jpg 128w, /_image/w_256,q_80/assets/Drop-Down-Image-Support-us_(1)_V34AuBoqxeD-lKcmKN_6V.jpg 256w, /_image/w_384,q_80/assets/Drop-Down-Image-Support-us_(1)_V34AuBoqxeD-lKcmKN_6V.jpg 384w, /_image/w_640,q_80/assets/Drop-Down-Image-Support-us_(1)_V34AuBoqxeD-lKcmKN_6V.jpg 640w, /_image/w_750,q_80/assets/Drop-Down-Image-Support-us_(1)_V34AuBoqxeD-lKcmKN_6V.jpg 750w, /_image/w_828,q_80/assets/Drop-Down-Image-Support-us_(1)_V34AuBoqxeD-lKcmKN_6V.jpg 828w" src="/_image/w_828,q_80/assets/Drop-Down-Image-Support-us_(1)_V34AuBoqxeD-lKcmKN_6V.jpg" decoding="async" loading="lazy"/><div class="w-element cg6mpnv cil0izm c1g4z546 clhwsmj"><span nav-link="title" class="w-element cte87bx cuahv1a c1eyb87b c4iflru c1qe7a3l c17nrfvn c1scp8rj c1lez5qp c1uyrt4t">Support us</span></div><div class="w-element cg6mpnv c1k3h0ob cl2xlqw c1l20dy0 c1k693yl c158s1wq"></div></a><a nav-stagger="true" nav-link="wrapper-img" class="w-element c1wn46uq cty523k c181wked ckmiw1q c1kg20cg ck80xjz cn655op cz6q0ow" href="/contact-us" data-discover="true"><img nav-link="image" class="w-image c1wn46uq c1rrox41 c1lo6eud" alt="" width="400" height="300" sizes="100vw" srcSet="/_image/w_16,q_80/assets/Drop-Down-Image-Contact-us_zcymhhsFiVILSMVacX9pC.webp 16w, /_image/w_32,q_80/assets/Drop-Down-Image-Contact-us_zcymhhsFiVILSMVacX9pC.webp 32w, /_image/w_48,q_80/assets/Drop-Down-Image-Contact-us_zcymhhsFiVILSMVacX9pC.webp 48w, /_image/w_64,q_80/assets/Drop-Down-Image-Contact-us_zcymhhsFiVILSMVacX9pC.webp 64w, /_
5image/w_96,q_80/assets/Drop-Down-Image-Contact-us_zcymhhsFiVILSMVacX9pC.webp 96w, /_image/w_128,q_80/assets/Drop-Down-Image-Contact-us_zcymhhsFiVILSMVacX9pC.webp 128w, /_image/w_256,q_80/assets/Drop-Down-Image-Contact-us_zcymhhsFiVILSMVacX9pC.webp 256w, /_image/w_384,q_80/assets/Drop-Down-Image-Contact-us_zcymhhsFiVILSMVacX9pC.webp 384w, /_image/w_640,q_80/assets/Drop-Down-Image-Contact-us_zcymhhsFiVILSMVacX9pC.webp 640w, /_image/w_750,q_80/assets/Drop-Down-Image-Contact-us_zcymhhsFiVILSMVacX9pC.webp 750w, /_image/w_828,q_80/assets/Drop-Down-Image-Contact-us_zcymhhsFiVILSMVacX9pC.webp 828w" src="/_image/w_828,q_80/assets/Drop-Down-Image-Contact-us_zcymhhsFiVILSMVacX9pC.webp" decoding="async" loading="lazy"/><div class="w-element cg6mpnv cil0izm c1g4z546 clhwsmj"><span nav-link="title" class="w-element cte87bx cuahv1a c1eyb87b c4iflru c1qe7a3l c17nrfvn c1scp8rj c1lez5qp c1uyrt4t">Contact us</span></div><div class="w-element cg6mpnv c1k3h0ob cl2xlqw c1l20dy0 c1k693yl c158s1wq"></div></a></div></div></div><div nav-trigger="explore" class="w-element c1uz7vom cbm90qe cd212o4 c1l6ozms c18dk4jj c1851rqr czalkuk cwkjnr8 c75lct5 c14df0s2"><p class="w-element ccp5xa0 cte87bx c1ofywq3 c1gtpjdp c1hi51uv c11ilikl">Explore</p><div nav-chevron="true" class="w-element c1uz7vom cbm90qe cjulrou"><div class="w-html-embed c1qi35su"><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="width: 20px; height: 20px;"> 6 <path d="m6 9 6 6 6-6"></path> 7</svg></div></div></div><div nav-drop-down="true" nav-trigger="maps" class="w-element c1uz7vom cbm90qe cd212o4 c1l6ozms c18dk4jj c1851rqr czalkuk cwkjnr8 c75lct5 c14df0s2"><p class="w-element ccp5xa0 cte87bx c1ofywq3 c1gtpjdp c1hi51uv c11ilikl">Maps</p><div nav-chevron="true" class="w-element c1uz7vom cbm90qe cjulrou"><div class="w-html-embed c1qi35su"><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="width: 20px; height: 20px;"> 8 <path d="m6 9 6 6 6-6"></path> 9</svg></div></div></div><div nav-trigger="learn" class="w-element c1uz7vom cbm90qe cjulrou c1l6ozms c18dk4jj c1851rqr czalkuk cwkjnr8 c75lct5 c14df0s2"><p class="w-element ccp5xa0 cte87bx c1ofywq3 c1gtpjdp c1hi51uv c11ilikl">Learn</p><div nav-chevron="true" class="w-element c1uz7vom cbm90qe cjulrou"><div class="w-html-embed c1qi35su"><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="width: 20px; height: 20px;"> 10 <path d="m6 9 6 6 6-6"></path> 11</svg></div></div></div><div nav-trigger="about" class="w-element c1uz7vom cbm90qe cjulrou c1l6ozms c18dk4jj c1851rqr czalkuk cwkjnr8 c75lct5 c14df0s2"><p class="w-element ccp5xa0 cte87bx c1ofywq3 c1gtpjdp c1hi51uv c11ilikl">About</p><div nav-chevron="true" class="w-element c1uz7vom cbm90qe cjulrou"><div class="w-html-embed c1qi35su"><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="width: 20px; height: 20px;"> 12 <path d="m6 9 6 6 6-6"></path> 13</svg></div></div></div></div><div class="w-element c75lct5 c1x86i13"><div class="w-element c1uz7vom cyjoizj clxdfzs c1tt79v9 cd212o4"><div class="w-element ck80xjz c1uz7vom cbm90qe c4oxwb7 c75lct5"><a href="https://discord.com/invite/qcYBkCmAKZ" nav-social="true" target="_blank" class="w-element c1t129vl ct3f834 cbm90qe c4oxwb7 c1uz7vom cnx8q2o c1tkm9sb c3p1tny c1frqqme c1ka351p c32xzbx c1i8ednk c1fx2c52 ciexy49 cdlctc7 c1qi35su ctvpapw"><div class="w-html-embed cbm90qe c4oxwb7"><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" fill="currentColor" style="width: 18px; height: 18px;"> 14 <path d="M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057 19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028c.462-.63.874-1.295 1.226-1.994a.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128c.126-.094.252-.192.372-.29a.074.074 0 0 1 .077-.01c3.927 1.793 8.18
141.793 12.061 0a.074.074 0 0 1 .077.01c.12.098.246.196.373.29a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.874.894.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.182 0-2.156-1.085-2.156-2.419 0-1.333.955-2.419 2.156-2.419 1.21 0 2.176 1.096 2.156 2.419 0 1.334-.956 2.419-2.156 2.419zm7.974 0c-1.182 0-2.156-1.085-2.156-2.419 0-1.333.955-2.419 2.156-2.419 1.21 0 2.176 1.096 2.156 2.419 0 1.334-.946 2.419-2.156 2.419z"/> 15</svg></div></a><div nav-social-text="true" class="w-element cg6mpnv c1gq0yhk c1vyde7q ccut9dl cwry5n3 casrrmi cnx8q2o c1tkm9sb c3p1tny c1frqqme cjzt3gg c1kjic6h c1yhkxzc c1ka351p cjh4jyv c1uldnsa cri68x2 c1oupalw"><p class="w-element ccp5xa0 cte87bx c1uf2hoa c1ofywq3 c1fkewyi cxs4t3 c1yjr2ok">Join us on discord</p></div></div><a primary-btn="true" class="w-element cnx8q2o c1tkm9sb c3p1tny c1frqqme c1tabcfs c1uz7vom cbm90qe c4oxwb7 csd63x6 c4lc5pz c1kbf57g c12dc88q c32xzbx c1i8ednk c1fx2c52 ciexy49 cdlctc7 ccpqtr9 c9uv4ua ct3f834 clqy92a c1h54omw ciphf6l cqolvuh c75lct5" href="/join" data-discover="true"><span class="w-element ccp5xa0 c1e5xz0k cg2r0go c1iq6tjl c1yzlqql cvrj00w csd63x6 c4lc5pz c1fkewyi cxs4t3 coboan1 c9uv4ua cwh8dci">Join our Server</span><div class="w-html-embed"><span aria-hidden="true" class="ws-particle-pen"> 16 <div class="ws-particle"></div> 17 <div class="ws-particle"></div> 18 <div class="ws-particle"></div> 19 <div class="ws-particle"></div> 20 <div class="ws-particle"></div> 21 <div class="ws-particle"></div> 22 <div class="ws-particle"></div> 23 <div class="ws-particle"></div> 24 <div class="ws-particle"></div> 25 <div class="ws-particle"></div> 26</span></div></a></div></div><button mobile-navbar-btn="true" class="w-element c1qi35su cqkd5wj c173fy1e c1lez5qp c1snm4mx c1scp8rj clw6rqe c1b32rai c1no7tga cg2f5e9 c5zmy7m cq9t2pq canr8a3 c1dirdz6 ctgqjkd c1du94ny c1khxe1t c1a9j7wt"><div class="w-html-embed cqkd5wj c17xfj3y"><div class="two-step-burger"> 27 <span></span> 28 <span></span> 29 <span></span> 30</div></div></button></div></div><div mobile-navbar-container="true" class="w-element c1bplvnv c11nmou6 c24alwg c1tdzifw ca4wox4 c5b7fr0 c17xfj3y c8r62c6 cofe6fc c1dr8jhy cqkd5wj"><div class="w-element c1wn46uq cozcy5p c1qe7a3l cbm90qe cjulrou c1a4d992 c1e9k3hw ce1b68t c1rx8qlb c1ljsp2s c1ll7j66"><div class="w-element c1scp8rj c1cb1t0o c1ocytl9 c1ww7cbt c159h5cc c1gxhyxn"><div class="w-element c1scp8rj c1cb1t0o c14aukpa cca4bpb"><div class="w-element c1scp8rj c1cb1t0o c1thekpe c1f2x7xh"><div href="/location" mobile-nav-stagger="true" class="w-element c9uv4ua c1qqnmdg"><p class="w-element ccp5xa0 cte87bx c1uf2hoa c1ofywq3 c1fkewyi cxs4t3 c183wvf2 ci1pq5k c1qe7a3l">Explore</p></div><a mobile-nav-stagger="true" class="w-element c9uv4ua c1qqnmdg" href="/location" data-discover="true"><p class="w-element ccp5xa0 cte87bx c1xa3wqc c984p2x cg2r0go c1fkewyi cxs4t3 c183wvf2 ci1pq5k c1qe7a3l c1p0q8wx c18zr17c">Locations</p></a><a mobile-nav-stagger="true" class="w-element c9uv4ua c1qqnmdg" href="/contributors" data-discover="true"><p class="w-element ccp5xa0 cte87bx c1xa3wqc c984p2x cg2r0go c1fkewyi cxs4t3 c183wvf2 ci1pq5k c1qe7a3l c1p0q8wx c18zr17c">Contributors</p></a></div><div class="w-element c1scp8rj c1cb1t0o c1thekpe c1f2x7xh"><div href="/location" mobile-nav-stagger="true" class="w-element c9uv4ua c1qqnmdg"><p class="w-element ccp5xa0 cte87bx c1uf2hoa c1ofywq3 c1fkewyi cxs4t3 c183wvf2 ci1pq5k c1qe7a3l">Maps</p></div><a mobile-nav-stagger="true" class="w-element c9uv4ua c1qqnmdg" href="/map/middle-earth-interactive-map" data-discover="true"><p class="w-element ccp5xa0 cte87bx c1xa3wqc c984p2x cg2r0go c1fkewyi cxs4t3 c183wvf2 ci1pq5k c1qe7a3l c1p0q8wx c18zr17c">Interactive Map</p></a><a mobile-nav-stagger="true" class="w-element c9uv4ua c1qqnmdg" href="/map/server-live-map" data-discover="true"><p class="w-element ccp5xa0 cte87bx c1xa3wqc c984p2x cg2r0go c1fkewyi cxs4t3 c183wvf2 ci1pq5k c1qe7a3l c1p0q8wx c18zr17c">Live Server Map</p></a></div><div class="w-element c1scp8rj c1cb1t0o c1thekpe c1f2x7xh"><div href="/location" mobile-nav-stagger="true" class="w-element c9uv4ua c1qqnmdg"><p class="w-element ccp5xa0 cte87bx c1uf2hoa c1ofywq3 c1fkewyi cxs4t3 c183wvf2 ci1pq5k c1qe7a3l">Learn</p></div><a mobile-nav-stagger="true" class="w-element c9uv4ua c1qqnmdg" href="/resources" data-discover="true"><p class="w-element ccp5xa0 cte87bx c1xa3wqc c984p2x cg2r0go c1fkewyi cxs4t3 c183wvf2 ci1pq5k c1qe7a3l c1p0q8wx c18zr17c">Articles</p></a><a mobile-nav-stagger="true" class="w-element c9uv4ua c1qqnmdg" href="/about" data-discover="true"><p class="w-element ccp5xa0 cte87bx c1xa3wqc c984p2x cg2r0go c1fkewyi cxs4t3 c183wvf2 ci1pq5k c1qe7a3l c1p0q8wx c18zr17c">About us</p></a></div><div class="w-element c1scp8rj c1cb1t0o c1thekpe c1f2x7xh"><div href="/location" mobile-nav-stagger="true" class="w-element c9uv4ua c1qqnmdg"><p class="w-element ccp5xa0 cte87bx c1uf2hoa c1ofywq3 c1fkewyi cxs4t3 c183wvf2 ci1pq5k c1qe7a3l">About</p></div><a mobile-nav-stagger="true" class="w-element c9uv4ua c1qqnmdg" href="/support-us" data-discover="true"><p class="w-element ccp5xa0 cte87bx c1xa3wqc c984p2x cg2r0go c1fkewyi cxs4t3 c183wvf2 ci1pq5k c1qe7a3l c1p0q8wx c18zr17c">Support us</p></a><a mobile-nav-stagger="true" class="w-element c9uv4ua c1qqnmdg" href="/contact-us" data-discover="true"><p class="w-element ccp5xa0 cte87bx c1xa3wqc c984p2x cg2r0go c1fkewyi cxs4t3 c183wvf2 ci1pq5k c1qe7a3l c1p0q8wx c18zr17c">Contact us</p></a></div></div><a mobile-nav-stagger="true" class="w-element c9uv4ua c1qqnmdg c1scp8rj c1lez5qp c1uyrt4t c1thekpe c1f2x7xh" href="/join" data-discover="true"><p class="w-element ccp5xa0 cte87bx c1xa3wqc c984p2x cg2r0go c1fkewyi cxs4t3 c183wvf2 ci1pq5k c1qe7a3l c1yjr2ok c1p0q8wx c18zr17c">Join our Server</p><hr class="w-element c14wyfnu c1rsoh7i c3dbpcg c1ccl4po c125ke3y c1wn46uq c1igm2uw c1r9z6ml c7ji9jo cx16f77 c13irkzz"/></a></div></div></div></div></div></div><div style="display:contents"><div style="display:contents"><div class="w-html-embed c18kn0sj"><style id="css-navbar"> 31 32 /* ========================================= 33 NAVIGATION SCROLL & MENU RADIUS 34 ========================================= */ 35 [navbar="true"] { 36 /* CHANGED: must sit above the mobile menu panel (z-index: 50), or the 37 collapsed clip-path circle paints over the burger icon. */ 38 z-index: 100; 39 40 transition: transform 0.4s cubic-bezier(0.25, 1, 0.5, 1); 41 will-change: transform; 42 } 43 44 [navbar="true"].nav-hidden { transform: translateY(-100%); } 45 46 /* Default state (top of page) */ 47 [nav-menu="true"] { 48 border-radius: 1.75rem; 49 padding: 0 0; 50 background-color: transparent; 51 border: 1px solid transparent; 52 backdrop-filter: blur(0px); 53 -webkit-backdrop-filter: blur(0px); 54 transition: padding 0.4s ease, border-radius 0.3s ease, 55 background-color 0.4s ease, border-color 0.4s ease, 56 backdrop-filter 0.4s ease; 57 } 58 59 /* `.is-hovered` replaces `:hover` â set by block 4, mouse only. */ 60 [navbar="true"].is-scrolled [nav-menu="true"], 61 [nav-menu="true"].is-hovered, 62 body:has([nav-container="true"].is-active) [nav-menu="true"] { 63 padding: 0 var(--space-sm); 64 background-color: rgba(20, 20, 20, 0.5); 65 border-color: rgba(255, 255, 255, 0.15); 66 backdrop-filter: blur(10px); 67 -webkit-backdrop-filter: blur(10px); 68 } 69 70 /* Square off the bottom corners only for the desktop dropdown */ 71 body:has([nav-container="true"].is-active) [nav-menu="true"] { 72 border-bottom-left-radius: 0 !important; 73 border-bottom-right-radius: 0 !important; 74 } 75 76 /* Cinematic blur background */ 77 [darken-bg="true"] { 78 position: fixed; inset: 0; pointer-events: none; 79 background-color: rgba(0, 0, 0, 0.6); 80 backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); 81 opacity: 0; visibility: hidden; 82 transition: opacity 0.3s ease, visibility 0.3s; 83 } 84 body:has([nav-container="true"].is-active) [darken-bg="true"], 85 body:has([mobile-navbar-container="true"].show) [darken-bg="true"] { 86 opacity: 1; visibility: visible; 87 } 88 89 [link="true"] { transition: text-shadow 0.3s ease; } 90 [link="true"] svg { transition: filter 0.3s ease; will-change: filter; } 91 92 [nav-social="true"] { 93 transition: transform 0.3s cubic-bezier(0.25, 1, 0.5, 1), 94 background-color 0.3s ease, box-shadow 0.3s ease, color 0.3s ease; 95 will-change: transform, box-shadow, background-color; 96 } 97 [nav-social="true"] svg { transition: fill 0.3s ease, stroke 0.3s ease; } 98 99 [nav-social-text="true"] { 100 opacity: 0; visibility: hidden; transform: translateY(8px); 101 transition: opacity 0.3s cubic-bezier(0.25, 1, 0.5, 1), 102 transform 0.3s cubic-bezier(0.25, 1, 0.5, 1), visibility 0.3s; 103 } 104 105 [nav-logo="true"] { 106 transition: transform 0.3s cubic-bezier(0.25, 1, 0.5, 1), filter 0.3s ease; 107 will-change: transform, filter; 108 } 109 110 /* ========================================= 111 NAV LINK & CARD BASES 112 ========================================= */ 113 [nav-link="wrapper"] { 114 transition: background-color 0.2s ease-out; 115 cursor: pointer; 116 } 117 118 [nav-link="title"] { transition: color 0.2s ease-out; } 119 120 [nav-link="arrow"] { 121 opacity: 0; 122 -webkit-backface-visibility: hidden; 123 backface-visibility: hidden; 124 transform: translateZ(0) translateX(-8px); 125 transition: opacity 0.3s ease-out, transform 0.4s cubic-bezier(0.16, 1, 0.3, 1); 126 will-change: transform, opacity; 127 } 128 129 [nav-link="wrapper-img"] { 130 border: 1px solid transparent; 131 overflow: hidden; 132 transition: border-color 0.2s ease-out; 133 cursor: pointer; 134 } 135 136 [nav-link="image"] { 137 -webkit-backface-visibility: hidden; 138 backface-visibility: hidden; 139 transform: translateZ(0) scale(1); 140 transition: transform 0.4s ease-out; 141 will-change: transform; 142 } 143 144 /* ========================================= 145 DESKTOP DROPDOWN (992px+) 146 ========================================= */ 147 @media (min-width: 992px) { 148
149 [nav-trigger] p { transition: text-shadow 0.3s ease, color 0.3s ease; } 150 151 [nav-chevron="true"] { 152 transition: transform 0.3s cubic-bezier(0.25, 1, 0.5, 1), filter 0.3s ease; 153 transform-origin: center; 154 will-change: transform, filter; 155 } 156 157 [nav-trigger]:hover [nav-chevron="true"], 158 [nav-trigger].is-active [nav-chevron="true"] { 159 transform: rotate(180deg); 160 filter: drop-shadow(0 0 6px rgba(255, 255, 255, 0.6)) 161 drop-shadow(0 0 12px rgba(255, 255, 255, 0.3)); 162 } 163 164 [nav-trigger]:hover p, 165 [nav-trigger].is-active p { 166 text-shadow: 0 0 6px rgba(255, 255, 255, 0.6), 167 0 0 12px rgba(255, 255, 255, 0.3); 168 color: #ffffff; 169 } 170 171 [nav-container="true"] { 172 position: absolute; 173 z-index: 45; 174 width: calc(100% + 2px); 175 left: -1px; 176 top: 100%; 177 opacity: 0; 178 visibility: hidden; 179 overflow: hidden; 180 border-top-left-radius: 0; 181 border-top-right-radius: 0; 182 } 183 184 [nav-panel] { 185 position: absolute; 186 top: 0; left: 0; width: 100%; 187 display: none; 188 } 189 } 190 191 /* ========================================= 192 DESKTOP-ONLY HOVER STATES 193 ========================================= */ 194 @media (hover: hover) and (pointer: fine) { 195 [link="true"]:hover { 196 text-shadow: 0 0 8px rgba(255, 255, 255, 0.8), 197 0 0 16px rgba(255, 255, 255, 0.4); 198 } 199 [link="true"]:hover svg { 200 filter: drop-shadow(0 0 8px rgba(255, 255, 255, 0.8)) 201 drop-shadow(0 0 16px rgba(255, 255, 255, 0.4)); 202 } 203 [nav-social="true"]:hover { 204 transform: scale(0.95); 205 box-shadow: 0 0 15px rgba(255, 255, 255, 0.4); 206 } 207 [nav-social="true"]:hover ~ [nav-social-text="true"] { 208 opacity: 1; visibility: visible; transform: translateY(0); 209 } 210 [nav-logo="true"]:hover { 211 transform: scale(0.96); 212 filter: drop-shadow(0 0 8px var(--color-accent-2)) 213 drop-shadow(0 0 24px var(--color-accent-2)); 214 } 215 216 [nav-link="wrapper"]:hover { background-color: var(--color-dark-grey); } 217 [nav-link="wrapper"]:hover [nav-link="title"] { color: var(--color-accent-1); } 218 [nav-link="wrapper"]:hover [nav-link="arrow"] { 219 opacity: 1; transform: translateZ(0) translateX(0); 220 } 221 222 [nav-link="wrapper-img"]:hover { border-color: var(--color-accent-1); } 223 [nav-link="wrapper-img"]:hover [nav-link="image"] { 224 transform: translateZ(0) scale(1.04); 225 } 226 [nav-link="wrapper-img"]:hover [nav-link="title"] { color: var(--color-accent-1); } 227 } 228 229 /* ========================================= 230 MOBILE BURGER BUTTON 231 ========================================= 232 Mobile-only, so Webstudio's own display rule keeps it hidden on desktop. 233 234 CHANGED: `background-color: transparent !important` removed. Style the 235 button freely in the designer now â though you may not need to, since the 236 collapsed menu circle already sits behind it. 237 */ 238 @media (max-width: 991px) { 239 240 button[mobile-navbar-btn="true"] { 241 z-index: 60 !important; 242 243 display: inline-flex !important; 244 align-items: center; 245 justify-content: center; 246 padding: 0 !important; 247 line-height: 0; 248 } 249 250 .two-step-burger { 251 flex: 0 0 auto; 252 margin: 0 auto; 253 } 254 255 } 256 257 /* ========================================= 258 MOBILE MAIN CONTAINER 259 ========================================= 260 CHANGED: the clip-path origin is now driven by --burger-x / --burger-y / 261 --burger-r, which block 4 measures from the button's real box. The old 262 hardcoded values remain as fallbacks if the JS never runs. 263 */ 264 [mobile-navbar-container="true"] { 265 position: fixed; 266 top: 0; 267 left: 0; 268 width: 100vw; 269 height: 100dvh; 270 z-index: 50; 271 background-color: rgba(21, 21, 21, 0.9); 272 background-color: color-mix( 273 in srgb, 274 var(--color-black) 90%, 275 transparent 276 ); 277 278 clip-path: circle( 279 var(--burger-r, 20px) 280 at var(--burger-x, calc(100% - 2rem - 20px)) 281 var(--burger-y, calc(1.5rem + 20px)) 282 ); 283 284 transition: clip-path 0.5s cubic-bezier(0.16, 1, 0.3, 1); 285 pointer-events: none; 286 287 overflow-y: auto; 288 overscroll-behavior: contain; 289 padding-top: 6rem; 290 } 291 292 [mobile-navbar-container="true"].show { 293 background-color: var(--color-black); 294 295 clip-path: circle( 296 150% 297 at var(--burger-x, calc(100% - 2rem - 20px)) 298 var(--burger-y, calc(1.5rem + 20px)) 299 ); 300 pointer-events: auto; 301 } 302 303 /* Set by block 4 while it repositions, so the circle does not animate 304 across the screen every time you scroll. */ 305 [mobile-navbar-container="true"].is-repositioning { 306 transition: none !important; 307 } 308 309 /* ========================================= 310 MOBILE CONTENT VISIBILITY (GSAP) 311 ========================================= */ 312 [mobile-nav-stagger="true"] { 313 opacity: 0; 314 visibility: hidden; 315 } 316 317 /* ========================================= 318 MOBILE BURGER ANIMATION 319 ========================================= */ 320 .two-step-burger { 321 width: 24px; height: 24px; position: relative; 322 cursor: pointer; color: inherit; 323 } 324 325 .two-step-burger span { 326 display: block; position: absolute; 327 height: 2px; width: 18px; 328 background: currentColor; border-radius: 2px; 329 left: 3px; 330 will-change: top, transform, opacity; 331 pointer-events: none; 332 } 333 334 /* Tops of 3/11/19 give bar centres of 4/12/20 in a 24px box. */ 335 .two-step-burger span:nth-child(1) { 336 top: 3px; 337 transition: top 0.2s ease-in-out 0.2s, transform 0.2s ease-in-out 0s; 338 } 339 .two-step-burger span:nth-child(2) { 340 top: 11px; 341 transition: opacity 0.2s ease-in-out 0.2s; 342 } 343 .two-step-burger span:nth-child(3) { 344 top: 19px; 345 transition: top 0.2s ease-in-out 0.2s, transform 0.2s ease-in-out 0s; 346 } 347 348 [mobile-navbar-btn="true"].active span:nth-child(1), 349 .two-step-burger.active span:nth-child(1) { 350 top: 11px; transform: rotate(45deg); 351 transition: top 0.2s ease-in-out 0s, transform 0.2s ease-in-out 0.2s; 352 } 353 [mobile-navbar-btn="true"].active span:nth-child(2), 354 .two-step-burger.active span:nth-child(2) { 355 opacity: 0; 356 transition: opacity 0.2s ease-in-out 0s; 357 } 358 [mobile-navbar-btn="true"].active span:nth-child(3), 359 .two-step-burger.active span:nth-child(3) { 360 top: 11px; transform: rotate(-45deg); 361 transition: top 0.2s ease-in-out 0s, transform 0.2s ease-in-out 0.2s; 362 } 363 364 /* ========================================= 365 MOBILE SIBLING ACCORDION 366 ========================================= */ 367 @media (max-width: 991px) { 368 [mobile-navbar-container="true"] [nav-trigger] { cursor: pointer; } 369 [mobile-navbar-container="true"] [nav-panel] { 370 overflow: hidden; height: 0; opacity: 0; visibility: hidden; 371 width: 100%; display: flex; 372 } 373 [mobile-navbar-arrow="true"] { 374 display: inline-flex; 375 transition: transform 0.3s ease; 376 transform-origin: center; 377 } 378 [mobile-navbar-container="true"] [nav-trigger].is-open [mobile-navbar-arrow="true"] { 379 transform: rotate(180deg); 380 } 381 } 382 /* Keep the mobile navbar row above the expanding menu layer. */ 383 @media (max-width: 991px) {
384 [nav-menu="true"] { 385 position: relative; 386 z-index: 60; 387 } 388 389 button[mobile-navbar-btn="true"] { 390 z-index: 61 !important; 391 } 392 393 /* Do not blur the expanding black circle through the navbar glass. */ 394 body:has([mobile-navbar-container="true"].show) [nav-menu="true"] { 395 background-color: transparent !important; 396 border-color: transparent !important; 397 backdrop-filter: none !important; 398 -webkit-backdrop-filter: none !important; 399 } 400 } 401 402</style> 403</div><div class="w-html-embed">
403<script id="js-navbar" type="7b7c10cf7256a24b4e48e8f5-text/javascript"> 404(function () { 405 "use strict"; 406 407 /* ------------------------------------------------------------------ 408 * Shared Webstudio / React hydration gate 409 * ------------------------------------------------------------------ 410 * 411 * Navbar JS is the first custom script in the production document, so it 412 * owns the shared gate. `load` plus a couple of frames is not sufficient: 413 * React can still be hydrating the Webstudio document at that point. 414 */ 415 window.wsAfterHydration = window.wsAfterHydration || new Promise(function (resolve) { 416 var settled = false; 417 var pollingStartedAt = 0; 418 var reactContainerKey = null; 419 var FALLBACK_DELAY = 2500; 420 421 function finish() { 422 if (settled) return; 423 settled = true; 424 425 requestAnimationFrame(function () { 426 requestAnimationFrame(resolve); 427 }); 428 } 429 430 function reactHydrationComplete() { 431 if (!reactContainerKey) { 432 reactContainerKey = Object.getOwnPropertyNames(document) 433 .find(function (name) { 434 return name.indexOf('__reactContainer$') === 0; 435 }) || null; 436 } 437 438 if (!reactContainerKey) return false; 439 440 var fiber = document[reactContainerKey]; 441 var root = fiber && 442 (fiber.stateNode || (fiber.return && fiber.return.stateNode)); 443 444 if (!root || !root.current) return false; 445 446 var state = root.current.memoizedState; 447 448 return !!state && 449 state.isDehydrated === false && 450 root.pendingLanes === 0; 451 } 452 453 function check() { 454 if (!pollingStartedAt) pollingStartedAt = performance.now(); 455 456 if (reactHydrationComplete() || 457 performance.now() - pollingStartedAt >= FALLBACK_DELAY) { 458 finish(); 459 return; 460 } 461 462 requestAnimationFrame(check); 463 } 464 465 if (document.readyState === 'complete') { 466 check(); 467 } else { 468 window.addEventListener('load', check, { once: true }); 469 } 470 }); 471 472 if (window.wsNavMasterInitialized) return; 473 window.wsNavMasterInitialized = true; 474 475 var activeIndex = -1; 476 var menuTimeout; 477 478 /* ------------------------------------------------------------------ 479 * Burger element helpers 480 * ---------------------------------------------------------------- */ 481 482 function burgerRoots() { 483 return Array.prototype.filter.call( 484 document.querySelectorAll('[mobile-navbar-btn="true"]'), 485 function (el) { 486 return !( 487 el.parentElement && 488 el.parentElement.closest('[mobile-navbar-btn="true"]') 489 ); 490 } 491 ); 492 } 493 494 function allBurgerElements() { 495 return document.querySelectorAll('[mobile-navbar-btn="true"]'); 496 } 497 498 function setBurgerActive(isActive) { 499 allBurgerElements().forEach(function (el) { 500 el.classList.toggle('active', isActive); 501 el.setAttribute('aria-expanded', isActive ? 'true' : 'false'); 502 }); 503 } 504 505 /* ------------------------------------------------------------------ 506 * NEW â keep the menu's clip-path circle centred on the burger 507 * ---------------------------------------------------------------- */ 508 509 var originFrame = null; 510 511 function syncBurgerOrigin() { 512 var container = document.querySelector('[mobile-navbar-container="true"]'); 513 var btn = document.querySelector('button[mobile-navbar-btn="true"]') || 514 document.querySelector('[mobile-navbar-btn="true"]'); 515 516 if (!container || !btn) return; 517 518 /* Never move the origin mid-animation. */ 519 if (container.classList.contains('show')) return; 520 521 var r = btn.getBoundingClientRect(); 522 523 /* Zero box means hidden (desktop) â keep the last known values. */ 524 if (!r.width || !r.height) return; 525 526 var x = Math.round(r.left + r.width / 2); 527 var y = Math.round(r.top + r.height / 2); 528 var radius = Math.round(Math.max(r.width, r.height) / 2); 529 530 if (container.dataset.originX === String(x) && 531 container.dataset.originY === String(y) && 532 container.dataset.originR === String(radius)) { 533 return; 534 } 535 536 container.dataset.originX = x; 537 container.dataset.originY = y;
538 container.dataset.originR = radius; 539 540 /* Suppress the 0.5s clip-path transition for this write only. */ 541 container.classList.add('is-repositioning'); 542 543 container.style.setProperty('--burger-x', x + 'px'); 544 container.style.setProperty('--burger-y', y + 'px'); 545 container.style.setProperty('--burger-r', radius + 'px'); 546 547 requestAnimationFrame(function () { 548 container.classList.remove('is-repositioning'); 549 }); 550 } 551 552 function scheduleOriginSync() { 553 if (originFrame !== null) return; 554 555 originFrame = requestAnimationFrame(function () { 556 originFrame = null; 557 syncBurgerOrigin(); 558 }); 559 } 560 561 var originTrackingFrame = null; 562 var originTrackingUntil = 0; 563 564 /* The scrolled navbar state moves the burger with a 0.4s CSS transition. 565 A single scroll event only captures the transition's starting position, 566 so keep measuring until the burger has reached its final position. */ 567 function trackBurgerOrigin(duration) { 568 originTrackingUntil = Math.max( 569 originTrackingUntil, 570 performance.now() + (duration || 500) 571 ); 572 573 if (originTrackingFrame !== null) return; 574 575 function track(now) { 576 syncBurgerOrigin(); 577 578 if (now < originTrackingUntil) { 579 originTrackingFrame = requestAnimationFrame(track); 580 return; 581 } 582 583 originTrackingFrame = null; 584 syncBurgerOrigin(); 585 } 586 587 originTrackingFrame = requestAnimationFrame(track); 588 } 589 590 /* Public hook used by page-specific entrance animations. */ 591 window.wsSyncBurgerOrigin = scheduleOriginSync; 592 593 /* ------------------------------------------------------------------ 594 * Scroll lock helpers (Lenis-aware) 595 * ---------------------------------------------------------------- */ 596 597 function lockPageScroll() { 598 if (window.lenis) { 599 window.lenis.stop(); 600 } else { 601 document.body.style.overflow = 'hidden'; 602 } 603 } 604 605 function unlockPageScroll() { 606 if (window.lenis) window.lenis.start(); 607 document.body.style.overflow = ''; 608 } 609 610 /* ------------------------------------------------------------------ 611 * Mouse-only hover state for the nav menu 612 * ---------------------------------------------------------------- */ 613 614 function bindNavMenuHover() { 615 document.querySelectorAll('[nav-menu="true"]').forEach(function (menu) { 616 if (menu.dataset.navHoverBound === 'true') return; 617 menu.dataset.navHoverBound = 'true'; 618 619 menu.addEventListener('pointerenter', function (e) { 620 if (e.pointerType !== 'mouse') return; 621 menu.classList.add('is-hovered'); 622 }); 623 624 menu.addEventListener('pointerleave', function (e) { 625 if (e.pointerType !== 'mouse') return; 626 menu.classList.remove('is-hovered'); 627 }); 628 629 menu.addEventListener('pointercancel', function () { 630 menu.classList.remove('is-hovered'); 631 }); 632 633 menu.addEventListener('touchstart', function () { 634 menu.classList.remove('is-hovered'); 635 }, { passive: true }); 636 }); 637 } 638 639 function clearNavMenuHover() { 640 document.querySelectorAll('[nav-menu="true"]').forEach(function (menu) { 641 menu.classList.remove('is-hovered'); 642 }); 643 } 644 645 /* ------------------------------------------------------------------ 646 * Close helpers 647 * ---------------------------------------------------------------- */ 648 649 window.wsCloseMobileMenu = function () { 650 var container = document.querySelector('[mobile-navbar-container="true"]'); 651 652 setBurgerActive(false); 653 654 if (container) { 655 container.classList.remove('show'); 656 657 var mobileStaggers = container.querySelectorAll('[mobile-nav-stagger="true"]'); 658 if (mobileStaggers.length) { 659 gsap.killTweensOf(mobileStaggers); 660 gsap.set(mobileStaggers, { autoAlpha: 0, y: 15 }); 661 } 662 } 663 664 unlockPageScroll(); 665 clearNavMenuHover(); 666 667 document.querySelectorAll('[mobile-navbar-container="true"] [nav-trigger]') 668 .forEach(function (trigger) { trigger.classList.remove('is-open'); }); 669 670 document.querySelectorAll('[mobile-navbar-container="true"] [nav-panel]') 671 .forEach(function (menu) { 672 gsap.set(menu, { height: 0, opacity: 0, visibility: 'hidden' }); 673 }); 674 }; 675 676 /* Instant, tweenless reset. State and inline styles can never drift. */ 677 function resetDesktopMenu() { 678 clearTimeout(menuTimeout); 679 activeIndex = -1; 680 681 document.querySelectorAll('[nav-trigger]').forEach(function (t) { 682 t.classList.remove('is-active'); 683 }); 684 685 document.querySelectorAll('[nav-panel]').forEach(function (p) { 686 gsap.killTweensOf(p); 687 gsap.set(p, { display: 'none', x: 0, opacity: 0 }); 688 }); 689 690 var staggers = document.querySelectorAll('[nav-stagger="true"]'); 691 if (staggers.length) { 692 gsap.killTweensOf(staggers); 693 gsap.set(staggers, { opacity: 0, y: 15 }); 694 } 695 696 var container = document.querySelector('[nav-container="true"]'); 697 if (!container) return; 698 699 gsap.killTweensOf(container); 700 container.classList.remove('is-active'); 701 gsap.set(container, { height: 0, opacity: 0, visibility: 'hidden' }); 702 } 703 704 function closeDesktopMenu() { 705 activeIndex = -1; 706 707 var container = document.querySelector('[nav-container="true"]'); 708 if (!container) return; 709 710 container.classList.remove('is-active'); 711 712 document.querySelectorAll('[nav-trigger]').forEach(function (t) { 713 t.classList.remove('is-active'); 714 }); 715 716 gsap.killTweensOf(container); 717 718 gsap.to(container, { 719 height: 0, 720 opacity: 0, 721 duration: 0.3, 722 ease: 'power2.out', 723 onComplete: function () { 724 gsap.set(container, { visibility: 'hidden' }); 725 726 document.querySelectorAll('[nav-panel]').forEach(function (p) { 727 gsap.set(p, { display: 'none' }); 728 }); 729 730 var staggers = document.querySelectorAll('[nav-stagger="true"]'); 731 if (staggers.length) gsap.set(staggers, { opacity: 0, y: 15 }); 732 } 733 }); 734 } 735 736 /* ------------------------------------------------------------------ 737 * Desktop dropdown 738 * ---------------------------------------------------------------- */ 739 740 function bindDesktop() { 741 var triggers = Array.from(document.querySelectorAll('[nav-trigger]')); 742 var container = document.querySelector('[nav-container="true"]'); 743 744 if (!container || container.dataset.bound === 'true') return; 745 container.dataset.bound = 'true'; 746 747 container.addEventListener('mouseenter', function () { 748 clearTimeout(menuTimeout); 749 }); 750 751 container.addEventListener('mouseleave', function () { 752 menuTimeout = setTimeout(closeDesktopMenu, 350); 753 }); 754
755 triggers.forEach(function (trigger, index) { 756 trigger.addEventListener('pointerenter', function (e) { 757 if (e.pointerType !== 'mouse') return; 758 if (window.innerWidth <= 991) return; 759 760 clearTimeout(menuTimeout); 761 762 var targetId = trigger.getAttribute('nav-trigger'); 763 var newPanel = document.querySelector('[nav-panel="' + targetId + '"]'); 764 if (!newPanel) return; 765 766 var isOpen = container.classList.contains('is-active'); 767 768 if (activeIndex === index && isOpen) return; 769 if (!isOpen) activeIndex = -1; 770 771 container.classList.add('is-active'); 772 773 triggers.forEach(function (t) { t.classList.remove('is-active'); }); 774 trigger.classList.add('is-active'); 775 776 gsap.killTweensOf(container); 777 gsap.killTweensOf(newPanel); 778 779 if (activeIndex === -1) { 780 document.querySelectorAll('[nav-panel]').forEach(function (p) { 781 if (p !== newPanel) gsap.set(p, { display: 'none' }); 782 }); 783 784 gsap.set(newPanel, { display: 'flex', opacity: 1, x: 0, height: 'auto' }); 785 gsap.set(container, { visibility: 'visible' }); 786 787 gsap.to(container, { 788 height: newPanel.offsetHeight, 789 opacity: 1, 790 duration: 0.3, 791 ease: 'power2.out' 792 }); 793 794 var staggers = newPanel.querySelectorAll('[nav-stagger="true"]'); 795 if (staggers.length) { 796 gsap.killTweensOf(staggers); 797 gsap.fromTo( 798 staggers, 799 { opacity: 0, y: 15 }, 800 { opacity: 1, y: 0, stagger: 0.05, duration: 0.35, ease: 'power2.out' } 801 ); 802 } 803 } else { 804 var direction = index > activeIndex ? 1 : -1; 805 var oldTrigger = triggers[activeIndex]; 806 var oldPanel = oldTrigger 807 ? document.querySelector('[nav-panel="' + oldTrigger.getAttribute('nav-trigger') + '"]') 808 : null; 809 810 gsap.set(newPanel, { 811 display: 'flex', height: 'auto', 812 x: direction * 40, opacity: 0 813 }); 814 815 var staggers2 = newPanel.querySelectorAll('[nav-stagger="true"]'); 816 if (staggers2.length) { 817 gsap.killTweensOf(staggers2); 818 gsap.set(staggers2, { opacity: 1, y: 0 }); 819 } 820 821 gsap.set(container, { visibility: 'visible' }); 822 823 gsap.to(container, { 824 height: newPanel.offsetHeight, 825 opacity: 1, 826 duration: 0.3, 827 ease: 'power2.out' 828 }); 829 830 if (oldPanel && oldPanel !== newPanel) { 831 gsap.killTweensOf(oldPanel); 832 gsap.to(oldPanel, { 833 x: -direction * 40, opacity: 0, 834 duration: 0.3, ease: 'power2.out', 835 onComplete: function () { 836 gsap.set(oldPanel, { display: 'none', x: 0 }); 837 } 838 }); 839 } 840 841 gsap.to(newPanel, { x: 0, opacity: 1, duration: 0.3, ease: 'power2.out' }); 842 } 843 844 activeIndex = index; 845 }); 846 847 trigger.addEventListener('pointerleave', function (e) { 848 if (e.pointerType !== 'mouse') return; 849 if (window.innerWidth <= 991) return; 850 menuTimeout = setTimeout(closeDesktopMenu, 350); 851 }); 852 }); 853 } 854 855 /* ------------------------------------------------------------------ 856 * Mobile burger 857 * ---------------------------------------------------------------- */ 858 859 function bindBurger() {
860 burgerRoots().forEach(function (btn) { 861 if (btn.dataset.navBound === 'true') return; 862 btn.dataset.navBound = 'true'; 863 864 btn.setAttribute('aria-expanded', 'false'); 865 866 btn.addEventListener('click', function (e) { 867 e.preventDefault(); 868 e.stopImmediatePropagation(); 869 870 clearNavMenuHover(); 871 872 if (btn.classList.contains('active')) { 873 window.wsCloseMobileMenu(); 874 return; 875 } 876 877 /* Make sure the expand starts from where the icon is NOW. */ 878 syncBurgerOrigin(); 879 880 setBurgerActive(true); 881 882 var mobileContainer = document.querySelector('[mobile-navbar-container="true"]'); 883 if (!mobileContainer) return; 884 885 mobileContainer.setAttribute('data-lenis-prevent', ''); 886 mobileContainer.classList.add('show'); 887 888 lockPageScroll(); 889 890 var mobileStaggers = mobileContainer.querySelectorAll('[mobile-nav-stagger="true"]'); 891 if (!mobileStaggers.length) return; 892 893 gsap.killTweensOf(mobileStaggers); 894 gsap.fromTo( 895 mobileStaggers, 896 { autoAlpha: 0, y: 15 }, 897 { 898 autoAlpha: 1, y: 0, 899 duration: 0.4, stagger: 0.06, 900 ease: 'power2.out', delay: 0.25 901 } 902 ); 903 }, true); 904 }); 905 } 906 907 /* Webstudio changes routes without unloading the document. Close the 908 mobile menu before its destination activates so Lenis cannot remain 909 stopped on the next page. */ 910 function bindMobileNavigationCleanup() { 911 document.querySelectorAll('[mobile-navbar-container="true"]') 912 .forEach(function (container) { 913 if (container.dataset.navCleanupBound === 'true') return; 914 container.dataset.navCleanupBound = 'true'; 915 916 container.addEventListener('click', function (e) { 917 if (window.innerWidth > 991) return; 918 919 var destination = e.target.closest('a[href], [href]'); 920 if (!destination) return; 921 922 /* Accordion triggers control panels rather than routes. */ 923 if (destination.closest('[nav-trigger]')) return; 924 925 window.wsCloseMobileMenu(); 926 }, true); 927 }); 928 } 929 930 /* ------------------------------------------------------------------ 931 * Mobile accordion 932 * ---------------------------------------------------------------- */ 933 934 function bindMobileAccordion() { 935 document.querySelectorAll('[mobile-navbar-container="true"] [nav-trigger]') 936 .forEach(function (trigger) { 937 if (trigger.dataset.navBound === 'true') return; 938 trigger.dataset.navBound = 'true'; 939 940 trigger.addEventListener('click', function (e) { 941 if (window.innerWidth > 991) return; 942 943 e.preventDefault(); 944 e.stopImmediatePropagation(); 945 946 var targetId = trigger.getAttribute('nav-trigger'); 947 var menu = document.querySelector( 948 '[mobile-navbar-container="true"] [nav-panel="' + targetId + '"]' 949 ); 950 if (!menu) return; 951 952 var isOpen = trigger.classList.contains('is-open'); 953 gsap.killTweensOf(menu); 954 955 if (isOpen) { 956 trigger.classList.remove('is-open'); 957 gsap.to(menu, { 958 height: 0, opacity: 0, 959 duration: 0.4, ease: 'power2.out', 960 onComplete: function () { 961 gsap.set(menu, { visibility: 'hidden' }); 962 } 963 }); 964 } else { 965 trigger.classList.add('is-open'); 966 gsap.set(menu, { visibility: 'visible' }); 967 gsap.fromTo( 968 menu, 969 { height: 0, opacity: 0 }, 970 { height: 'auto', opacity: 1, duration: 0.4, ease: 'power2.out' } 971 ); 972 } 973 }, true); 974 }); 975 } 976 977 function bindNavbarInteractions() { 978 bindNavMenuHover(); 979 bindDesktop(); 980 bindBurger(); 981 bindMobileNavigationCleanup(); 982 bindMobileAccordion(); 983 scheduleOriginSync(); 984 } 985 986 /* ------------------------------------------------------------------ 987 * Hydration-safe initial binding and batched mutation observer 988 * ---------------------------------------------------------------- */ 989 990 var rebindScheduled = false;
991 var navObserver = null; 992 993 function startNavbarObserver() { 994 if (navObserver) return; 995 996 navObserver = new MutationObserver(function (mutations) { 997 var hasAdded = mutations.some(function (m) { 998 return m.addedNodes.length > 0; 999 }); 1000 if (!hasAdded || rebindScheduled) return; 1001 1002 rebindScheduled = true; 1003 1004 requestAnimationFrame(function () { 1005 rebindScheduled = false; 1006 bindNavbarInteractions(); 1007 }); 1008 }); 1009 1010 navObserver.observe(document.body, { childList: true, subtree: true }); 1011 } 1012 1013 function initializeNavbar() { 1014 bindNavbarInteractions(); 1015 startNavbarObserver(); 1016 } 1017 1018 /* DOMContentLoaded can fire while React is still hydrating. Mutating 1019 classes, datasets or inline GSAP styles at that point can make the 1020 server and client trees disagree. */ 1021 if (window.wsAfterHydration && 1022 typeof window.wsAfterHydration.then === 'function') { 1023 window.wsAfterHydration.then(initializeNavbar); 1024 } else if (document.readyState === 'complete') { 1025 requestAnimationFrame(initializeNavbar); 1026 } else { 1027 window.addEventListener('load', function () { 1028 requestAnimationFrame(initializeNavbar); 1029 }, { once: true }); 1030 } 1031 1032 window.addEventListener('load', scheduleOriginSync); 1033 1034 /* ------------------------------------------------------------------ 1035 * Scroll behaviour 1036 * ---------------------------------------------------------------- */ 1037 1038 var lastScrollY = window.scrollY; 1039 var isScrolled = false; 1040 var isHidden = false; 1041 1042 window.addEventListener('scroll', function () { 1043 var navbar = document.querySelector('[navbar="true"]'); 1044 if (!navbar) return; 1045 1046 var currentScrollY = window.scrollY; 1047 1048 var shouldBeScrolled = currentScrollY > 50; 1049 if (shouldBeScrolled !== isScrolled) { 1050 isScrolled = shouldBeScrolled; 1051 navbar.classList.toggle('is-scrolled', isScrolled); 1052 trackBurgerOrigin(450); 1053 } 1054 1055 var shouldHide = currentScrollY > lastScrollY && currentScrollY > 500; 1056 if (shouldHide !== isHidden) { 1057 isHidden = shouldHide; 1058 navbar.classList.toggle('nav-hidden', isHidden); 1059 trackBurgerOrigin(450); 1060 } 1061 1062 lastScrollY = currentScrollY; 1063 1064 /* The burger moves with the navbar â keep the circle on it. */ 1065 scheduleOriginSync(); 1066 }, { passive: true }); 1067 1068 /* ------------------------------------------------------------------ 1069 * Resize 1070 * ---------------------------------------------------------------- */ 1071 1072 var lastWidth = window.innerWidth; 1073 1074 window.addEventListener('resize', function () { 1075 scheduleOriginSync(); 1076 1077 if (window.innerWidth === lastWidth) return; 1078 1079 var wasDesktop = lastWidth > 991; 1080 var isDesktop = window.innerWidth > 991; 1081 1082 lastWidth = window.innerWidth; 1083 1084 if (wasDesktop === isDesktop) return; 1085 1086 if (isDesktop) { 1087 window.wsCloseMobileMenu(); 1088 } else { 1089 resetDesktopMenu(); 1090 } 1091 1092 bindNavbarInteractions(); 1093 }, { passive: true }); 1094 1095 /* ------------------------------------------------------------------ 1096 * History navigation 1097 * ---------------------------------------------------------------- */ 1098 1099 window.addEventListener('pagehide', function () { 1100 resetDesktopMenu(); 1101 window.wsCloseMobileMenu(); 1102 }); 1103 1104 window.addEventListener('pageshow', function () { 1105 resetDesktopMenu(); 1106 window.wsCloseMobileMenu(); 1107 clearNavMenuHover(); 1108 bindNavbarInteractions(); 1109 }); 1110})(); 1111</script>
1111</div><div data-cookie-banner="true" class="w-element cos19h3 c1oltoh9 c1n9z9db c1a4d3g5 c1d5q97y cbp5xrw c5awtof c1kbf57g cwoxq2k calwkgt cil0izm c33h9pg cqkd5wj cln6h01 c1tdweg cbm90qe cjulrou c119z9l cwry5n3 c10msptw c1oupalw c17pj1yx ccvlyga c19ng6f c13pzss2 c1qpchza c1f6bmqy c13g0bak che0hi9 ctp5a16 c1t6kr9u"><div class="w-element"><p class="w-element ccp5xa0 cte87bx c1ofywq3 c1gtpjdp c1hi51uv c1fkewyi cxs4t3 c183wvf2 ci1pq5k c1qe7a3l c11ilikl">We use cookies to ensure you get the best experience on our website. <a class="w-element c1qi35su c32xzbx cz92tk c1gxmacj c1j9ejvd cdlctc7 cqqqcgl c1yxq9sv" href="/cookie-policy" data-discover="true">Learn more</a></p></div><div class="w-element c1uz7vom c4yd207"><div data-cookie-action="decline" class="w-element c1vyde7q ccut9dl cwry5n3 cminpwc cnjd1g9 c1lo5wo0 c16im13i c1n9z9db c1a4d3g5 c1d5q97y cbp5xrw c119z9l"><p class="w-element ccp5xa0 cte87bx c1ofywq3 c1gtpjdp c1hi51uv c1fkewyi cxs4t3 c183wvf2 ci1pq5k c1qe7a3l c12zejl6 c11ilikl">Decline</p></div><div data-cookie-action="accept" class="w-element c1vyde7q ccut9dl cwry5n3 cminpwc cnjd1g9 c1lo5wo0 c16im13i cdk8ru2 c17q5ox6 ct6po2z c7mtr3j cymrtsy c119z9l c32xzbx cz92tk c1gxmacj c1j9ejvd cdlctc7 c9q5ma3 c1qv1slc"><p class="w-element ccp5xa0 coboan1 c1ofywq3 c1gtpjdp c1hi51uv c1fkewyi cxs4t3 c183wvf2 ci1pq5k c1qe7a3l c1yjr2ok c11ilikl">Allow Cookies</p></div></div></div><div class="w-html-embed c18kn0sj"><style id="css-global"> 1112 1113 /* ========================================= 1114 SCROLL / LAYOUT BASE 1115 ========================================= */ 1116 html { scrollbar-gutter: stable; } 1117 1118 /* Lenis recommended base styles */ 1119 html.lenis, html.lenis body { height: auto; } 1120 .lenis.lenis-smooth { scroll-behavior: auto !important; } 1121 .lenis.lenis-smooth [data-lenis-prevent] { overscroll-behavior: contain; } 1122 .lenis.lenis-stopped { overflow: hidden; } 1123 .lenis.lenis-scrolling iframe { pointer-events: none; } 1124 1125 /* ========================================= 1126 SELECTION 1127 ========================================= */ 1128 ::selection { 1129 background-color: rgb(246, 196, 128); 1130 color: rgb(21, 21, 21); 1131 } 1132 ::-moz-selection { 1133 background-color: rgb(246, 196, 128); 1134 color: rgb(21, 21, 21); 1135 } 1136 1137 /* ========================================= 1138 REVEAL ON SCROLL 1139 ========================================= */ 1140 .reveal-init { 1141 opacity: 0; 1142 transform: translateY(10px); 1143 transition: opacity 0.8s cubic-bezier(0.16, 1, 0.3, 1), 1144 transform 0.8s cubic-bezier(0.16, 1, 0.3, 1); 1145 transition-delay: var(--delay, 0s); 1146 } 1147 .reveal-visible { 1148 opacity: 1; 1149 transform: none; /* removes the stacking context after animation */ 1150 } 1151 1152 /* ========================================= 1153 MOBILE & BASE 1154 ========================================= */ 1155 @media (max-width: 991px) { 1156 * { -webkit-tap-highlight-color: transparent; } 1157 *:focus:not(:focus-visible) { outline: none; background-color: transparent; } 1158 } 1159 1160 @supports (-webkit-touch-callout: none) { 1161 [squircle="true"] { 1162 -webkit-mask-box-image: none !important; 1163 mask-border: none !important; 1164 -webkit-mask-image: -webkit-radial-gradient(white, black) !important; 1165 } 1166 } 1167 1168 /* ========================================= 1169 CARDS 1170 CHANGED: [Card="true"] dropped everywhere â same selector as [card="true"] 1171 ========================================= */ 1172 [card="true"], [card-bg="true"] { 1173 -webkit-backface-visibility: hidden; 1174 backface-visibility: hidden; 1175 transform: translate3d(0, 0, 0); 1176 /* No CSS transition on transform here â GSAP owns it */ 1177 } 1178 1179 [card="true"] { 1180 position: relative; 1181 cursor: pointer !important; 1182 } 1183 1184 /* Spotlight glow */ 1185 [card="true"]::after { 1186 content: ""; position: absolute; inset: 0; 1187 border-radius: inherit; opacity: 0; 1188 transition: opacity 0.3s ease; pointer-events: none; z-index: 1; 1189 background: radial-gradient( 1190 800px at var(--local-x, 50%) var(--local-y, 50%), 1191 rgba(255, 255, 255, 0.08), rgba(255, 255, 255, 0) 40% 1192 ); 1193 } 1194 1195 /* Border highlight */ 1196 [card="true"]::before { 1197 content: ""; position: absolute; inset: 0; 1198 padding: 1px; border-radius: inherit; opacity: 0; 1199 transition: opacity 0.3s ease; pointer-events: none; z-index: 2; 1200 background: radial-gradient( 1201 400px at var(--local-x, 50%) var(--local-y, 50%), 1202 rgba(255, 255, 255, 0.6), rgba(255, 255, 255, 0) 40% 1203 ); 1204 -webkit-mask: linear-gradient(white, white) content-box, 1205 linear-gradient(white, white); 1206 -webkit-mask-composite: destination-out; 1207 mask: linear-gradient(white, white) content-box, 1208 linear-gradient(white, white); 1209 mask-composite: exclude; 1210 } 1211 1212 /* ========================================= 1213 PRIMARY BUTTON PARTICLES 1214 ========================================= */ 1215 [primary-btn="true"] { position: relative; } 1216 1217 .ws-particle-pen { 1218 position: absolute; width: 140%; aspect-ratio: 1; 1219 top: 50%; left: 50%; 1220 transform: translate(-50%, -50%); 1221 z-index: 1; opacity: 0; 1222 transition: opacity 0.15s ease-out; pointer-events: none; 1223 -webkit-mask: radial-gradient(white, rgba(255, 255, 255, 0) 65%); 1224 mask: radial-gradient(white, rgba(255, 255, 255, 0) 65%); 1225 } 1226 1227 .ws-particle { 1228 background-color: var(--color-accent-1, rgb(246, 196, 128)); 1229 aspect-ratio: 1; position: absolute; 1230 animation-play-state: paused; 1231 clip-path: polygon(50% 0%, 60% 40%, 100% 50%, 60% 60%, 1232 50% 100%, 40% 60%, 0% 50%, 40% 40%); 1233 } 1234 .ws-particle:nth-child(1) { width: 0.6rem; top: 30%; left: 25%; opacity: 0.8; transform-origin: 400% -600%; animation: float-out 12s -1s infinite linear; } 1235 .ws-particle:nth-child(2) { width: 0.8rem; top: 65%; left: 75%; opacity: 0.5; transform-origin: -500% 300%; animation: float-out 15s -4s infinite reverse linear; } 1236 .ws-particle:nth-child(3) { width: 0.4rem; top: 80%; left: 40%;
1236 opacity: 0.9; transform-origin: 500% 600%; animation: float-out 9s -2s infinite linear; } 1237 .ws-particle:nth-child(4) { width: 0.9rem; top: 20%; left: 80%; opacity: 0.6; transform-origin: -300% -400%; animation: float-out 18s -6s infinite reverse linear; } 1238 .ws-particle:nth-child(5) { width: 0.5rem; top: 55%; left: 20%; opacity: 0.7; transform-origin: 600% 200%; animation: float-out 11s -3s infinite linear; } 1239 .ws-particle:nth-child(6) { width: 0.7rem; top: 85%; left: 60%; opacity: 0.8; transform-origin: -600% -500%; animation: float-out 14s -7s infinite reverse linear; } 1240 .ws-particle:nth-child(7) { width: 0.8rem; top: 25%; left: 50%; opacity: 0.4; transform-origin: 300% 500%; animation: float-out 8s -1s infinite linear; } 1241 .ws-particle:nth-child(8) { width: 0.6rem; top: 75%; left: 30%; opacity: 0.9; transform-origin: -400% 600%; animation: float-out 13s -5s infinite reverse linear; } 1242 .ws-particle:nth-child(9) { width: 0.7rem; top: 40%; left: 85%; opacity: 0.5; transform-origin: 700% -300%; animation: float-out 16s -8s infinite linear; } 1243 .ws-particle:nth-child(10) { width: 0.5rem; top: 45%; left: 45%; opacity: 0.7; transform-origin: -500% -600%; animation: float-out 10s -2s infinite reverse linear; } 1244 1245 @keyframes float-out { to { transform: rotate(360deg); } } 1246 1247 /* ========================================= 1248 SQUIRCLE & FIREFOX FALLBACK 1249 ========================================= */ 1250 [squircle="true"] { 1251 border-radius: 24px !important; 1252 overflow: hidden !important; 1253 -webkit-mask-box-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0nMjAwJyBoZWlnaHQ9JzIwMCcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJz48cGF0aCBkPSdNNTAsMCBDMiwwIDAsMiAwLDUwIEwwLDE1MCBDMCwxOTggMiwyMDAgNTAsMjAwIEwxNTAsMjAwIEMxOTgsMjAwIDIwMCwxOTggMjAwLDE1MCBMMjAwLDUwIEMyMDAsMiAxOTgsMCAxNTAsMCBaJy8+PC9zdmc+") 50 stretch !important; 1254 } 1255 1256 @supports (-moz-appearance: none) { 1257 [squircle="true"] { 1258 -webkit-mask-box-image: none !important; 1259 mask-border: none !important; 1260 mask-image: none !important; 1261 -webkit-mask-image: none !important; 1262 } 1263 } 1264 1265 /* ========================================= 1266 VIEW TRANSITIONS 1267 ========================================= */ 1268 @view-transition { navigation: auto; } 1269 1270 @media (prefers-reduced-motion: no-preference) { 1271 ::view-transition-old(root) { animation: vt-fade-out 0.2s ease-out both; } 1272 ::view-transition-new(root) { animation: vt-fade-in 0.4s ease-out both; } 1273 } 1274 1275 @keyframes vt-fade-out { from { opacity: 1; } to { opacity: 0; } } 1276 @keyframes vt-fade-in { from { opacity: 0; } to { opacity: 1; } } 1277 1278 /* ========================================= 1279 DESKTOP-ONLY HOVER STATES 1280 ========================================= */ 1281 @media (hover: hover) and (pointer: fine) { 1282 [card="true"]:hover::after, 1283 [card="true"]:hover::before { opacity: 1; } 1284 1285 [primary-btn="true"]:hover .ws-particle-pen { opacity: 1; } 1286 [primary-btn="true"]:hover .ws-particle { animation-play-state: running; } 1287 } 1288 1289 /* ========================================= 1290 REDUCED MOTION 1291 ========================================= */ 1292 @media (prefers-reduced-motion: reduce) { 1293 ::view-transition-group(*), 1294 ::view-transition-old(*), 1295 ::view-transition-new(*) { animation: none !important; } 1296 1297 .reveal-init { opacity: 1; transform: none; transition: none; } 1298 1299 .ws-particle { animation: none !important; } 1300 .ws-particle-pen { display: none; } 1301 } 1302</style> 1303</div><div class="w-html-embed"><link rel="preconnect" href="https://cdnjs.cloudflare.com" crossorigin> 1304<link rel="preconnect" href="https://unpkg.com" crossorigin> 1305
1306<script data-cfasync="false" src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.5/gsap.min.js"></script>
vendor: 1 bytes, line 1306
1306
1307<script data-cfasync="false" src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.5/ScrollTrigger.min.js"></script>
vendor: 1 bytes, line 1307
1307
1308<script data-cfasync="false" src="https://unpkg.com/[email protected]"></script>
vendor: 1 bytes, line 1308
1308
1309<script data-cfasync="false" src="https://unpkg.com/@studio-freight/[email protected]/dist/lenis.min.js"></script>
1309 1310
1311<script data-cfasync="false" id="js-global"> 1312(function () { 1313 "use strict"; 1314 1315 if (window.wsGlobalsInitialized) return; 1316 window.wsGlobalsInitialized = true; 1317 1318 var reducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches; 1319 1320 /* Run when the browser has a spare moment, or soon regardless. */ 1321 function whenIdle(fn) { 1322 if (typeof window.requestIdleCallback === 'function') { 1323 window.requestIdleCallback(fn, { timeout: 2000 }); 1324 } else { 1325 setTimeout(fn, 300); 1326 } 1327 } 1328 1329 /* ================================================================== 1330 * 0. HYDRATION GUARD 1331 * ================================================================== 1332 * 1333 * Navbar JS normally creates this shared promise first. Keep the same 1334 * implementation here as a fallback for pages without that block. 1335 */ 1336 window.wsAfterHydration = window.wsAfterHydration || new Promise(function (resolve) { 1337 var settled = false; 1338 var pollingStartedAt = 0; 1339 var reactContainerKey = null; 1340 var FALLBACK_DELAY = 2500; 1341 1342 function finish() { 1343 if (settled) return; 1344 settled = true; 1345 1346 requestAnimationFrame(function () { 1347 requestAnimationFrame(resolve); 1348 }); 1349 } 1350 1351 function reactHydrationComplete() { 1352 if (!reactContainerKey) { 1353 reactContainerKey = Object.getOwnPropertyNames(document) 1354 .find(function (name) { 1355 return name.indexOf('__reactContainer$') === 0; 1356 }) || null; 1357 } 1358 1359 if (!reactContainerKey) return false; 1360 1361 var fiber = document[reactContainerKey]; 1362 var root = fiber && 1363 (fiber.stateNode || (fiber.return && fiber.return.stateNode)); 1364 1365 if (!root || !root.current) return false; 1366 1367 var state = root.current.memoizedState; 1368 1369 return !!state && 1370 state.isDehydrated === false && 1371 root.pendingLanes === 0; 1372 } 1373 1374 function check() { 1375 if (!pollingStartedAt) pollingStartedAt = performance.now(); 1376 1377 if (reactHydrationComplete() || 1378 performance.now() - pollingStartedAt >= FALLBACK_DELAY) { 1379 finish(); 1380 return; 1381 } 1382 1383 requestAnimationFrame(check); 1384 } 1385 1386 if (document.readyState === 'complete') { 1387 check(); 1388 } else { 1389 window.addEventListener('load', check, { once: true }); 1390 } 1391 }); 1392 1393 /* ================================================================== 1394 * 1. LENIS â desktop only, with SPA-safe cleanup 1395 * ================================================================== */ 1396 1397 var desktopLenisMedia = window.matchMedia('(min-width: 992px)'); 1398 var lenisTickerBound = false; 1399 1400 function removeLenisClasses() { 1401 document.documentElement.classList.remove( 1402 'lenis', 1403 'lenis-smooth', 1404 'lenis-scrolling', 1405 'lenis-stopped', 1406 'lenis-locked' 1407 ); 1408 } 1409 1410 function destroyLenisForNativeScroll() { 1411 if (window.lenis) { 1412 /* Clear stopped state before removing listeners and CSS classes. */ 1413 if (typeof window.lenis.start === 'function') window.lenis.start(); 1414 if (typeof window.lenis.destroy === 'function') window.lenis.destroy(); 1415 } 1416 1417 window.lenis = null; 1418 removeLenisClasses(); 1419 } 1420 1421 function bindLenisTicker() { 1422 if (lenisTickerBound || typeof window.gsap === 'undefined') return; 1423 1424 lenisTickerBound = true; 1425 1426 window.gsap.ticker.add(function (time) { 1427 /* Always use the live instance after a breakpoint change. */ 1428 if (window.lenis) window.lenis.raf(time * 1000); 1429 }); 1430 1431 window.gsap.ticker.lagSmoothing(0); 1432 } 1433 1434 function syncLenisMode() { 1435 /* Touch/mobile uses native scrolling so Chrome's address bar and SPA 1436 route changes can never inherit a stopped Lenis instance. */ 1437 if (!desktopLenisMedia.matches) { 1438 destroyLenisForNativeScroll(); 1439 return; 1440 } 1441 1442 if (!window.lenis && typeof window.Lenis !== 'undefined') { 1443 window.lenis = new window.Lenis({ 1444 duration: 0.7, 1445 easing: function (t) { return Math.min(1, 1.001 - Math.pow(2, -10 * t)); }, 1446 smoothWheel: true 1447 }); 1448 } 1449 1450 if (!window.lenis) return; 1451 1452 if (typeof window.ScrollTrigger !== 'undefined' && 1453 window.lenis.__scrollTriggerBound !== true) { 1454 window.lenis.__scrollTriggerBound = true; 1455 window.lenis.on('scroll', window.ScrollTrigger.update); 1456 } 1457 1458 bindLenisTicker(); 1459 } 1460 1461 /* Public safety hook used before Webstudio swaps SPA route content. */ 1462 window.wsRestorePageScroll = function () { 1463 document.documentElement.classList.remove('is-loading', 'hero-pending'); 1464 1465 if (desktopLenisMedia.matches) { 1466 if (window.lenis && typeof window.lenis.start === 'function') { 1467 window.lenis.start(); 1468 } 1469 } else { 1470 destroyLenisForNativeScroll(); 1471 } 1472 1473 if (document.body) document.body.style.removeProperty('overflow'); 1474 }; 1475 1476 window.wsAfterHydration.then(syncLenisMode); 1477 1478 if (typeof desktopLenisMedia.addEventListener === 'function') { 1479 desktopLenisMedia.addEventListener('change', syncLenisMode); 1480 } else { 1481 desktopLenisMedia.addListener(syncLenisMode); 1482 } 1483 1484 /* Webstudio client navigation may replace content without pagehide. */ 1485 document.addEventListener('click', function (event) { 1486 var link = event.target.closest && event.target.closest('a[href]'); 1487 if (!link || link.closest('[nav-trigger]')) return; 1488 if (link.target === '_blank' || link.hasAttribute('download')) return; 1489 1490 var href = link.getAttribute('href'); 1491 if (!href || href.charAt(0) === '#') return; 1492 1493 window.wsRestorePageScroll(); 1494 }, true); 1495 1496 window.addEventListener('popstate', window.wsRestorePageScroll); 1497 window.addEventListener('pagehide', window.wsRestorePageScroll); 1498 window.addEventListener('pageshow', function (event) { 1499 if (event.persisted) window.wsRestorePageScroll(); 1500 }); 1501 1502 /* ================================================================== 1503 * 2. COOKIE BANNER 1504 * ================================================================== */ 1505 1506 var STORAGE_KEY = 'ardacraft_consent'; 1507 1508 function runTrackingScripts() { 1509 if (window.trackingScriptsExecuted) return; 1510 window.trackingScriptsExecuted = true; 1511 1512 /* Both injections touch <head>, which React hydrates too â and both 1513 are heavy, so they wait for an idle moment as well. */ 1514 window.wsAfterHydration.then(function () { 1515 whenIdle(function () { 1516 1517 /* --- Google Analytics 4 --- */ 1518 var gaScript = document.createElement('script'); 1519 gaScript.async = true; 1520 gaScript.setAttribute('data-cfasync', 'false'); 1521 gaScript.src = 'https://www.googletagmanager.com/gtag/js?i
1521d=G-QCYHHMG0NR'; 1522 document.head.appendChild(gaScript); 1523 1524 window.dataLayer = window.dataLayer || []; 1525 window.gtag = function () { window.dataLayer.push(arguments); }; 1526 window.gtag('js', new Date()); 1527 window.gtag('config', 'G-QCYHHMG0NR'); 1528 1529 /* --- Microsoft Clarity --- */ 1530 (function (c, l, a, r, i, t, y) { 1531 c[a] = c[a] || function () { (c[a].q = c[a].q || []).push(arguments); }; 1532 t = l.createElement(r); 1533 t.async = 1; 1534 t.setAttribute('data-cfasync', 'false'); 1535 t.src = 'https://www.clarity.ms/tag/' + i; 1536 y = l.getElementsByTagName(r)[0]; 1537 y.parentNode.insertBefore(t, y); 1538 })(window, document, 'clarity', 'script', 'rcgcctk7hs'); 1539 1540 if (typeof window.clarity === 'function') { 1541 window.clarity('consentv2', { 1542 ad_Storage: 'granted', 1543 analytics_Storage: 'granted' 1544 }); 1545 } 1546 }); 1547 }); 1548 } 1549 1550 function initCookieBanner() { 1551 var banner = document.querySelector('[data-cookie-banner]'); 1552 var acceptBtn = document.querySelector('[data-cookie-action="accept"]'); 1553 var declineBtn = document.querySelector('[data-cookie-action="decline"]'); 1554 1555 var consentStatus = null; 1556 1557 try { 1558 consentStatus = localStorage.getItem(STORAGE_KEY); 1559 } catch (error) { 1560 /* Storage blocked â treat as undecided, do not crash. */ 1561 } 1562 1563 if (consentStatus === 'granted') { 1564 if (banner) banner.style.display = 'none'; 1565 runTrackingScripts(); 1566 } else if (consentStatus === 'denied') { 1567 if (banner) banner.style.display = 'none'; 1568 } else if (banner) { 1569 banner.style.display = 'flex'; 1570 } 1571 1572 function store(value) { 1573 try { 1574 localStorage.setItem(STORAGE_KEY, value); 1575 } catch (error) { 1576 /* ignore */ 1577 } 1578 } 1579 1580 if (acceptBtn) { 1581 acceptBtn.addEventListener('click', function () { 1582 store('granted'); 1583 runTrackingScripts(); 1584 if (banner) banner.style.display = 'none'; 1585 1586 if (typeof window.gtag === 'function') { 1587 window.gtag('event', 'cookie_interaction', { choice: 'allow' }); 1588 } 1589 }); 1590 } 1591 1592 if (declineBtn) { 1593 declineBtn.addEventListener('click', function () { 1594 store('denied'); 1595 if (banner) banner.style.display = 'none'; 1596 1597 window.dataLayer = window.dataLayer || []; 1598 window.dataLayer.push({ 1599 event: 'cookie_interaction', 1600 choice: 'deny' 1601 }); 1602 }); 1603 } 1604 } 1605 1606 /* ================================================================== 1607 * 3. REVEAL ON SCROLL 1608 * ================================================================== */ 1609 1610 var REVEAL_SELECTOR = '[data-appear-animation="true"]'; 1611 1612 var revealObserver = new IntersectionObserver(function (entries) { 1613 var intersecting = entries 1614 .filter(function (entry) { return entry.isIntersecting; }) 1615 .sort(function (a, b) { 1616 return a.target.getBoundingClientRect().top - 1617 b.target.getBoundingClientRect().top; 1618 }); 1619 1620 intersecting.forEach(function (entry, index) { 1621 var element = entry.target; 1622 1623 if (intersecting.length > 1) { 1624 element.style.setProperty('--delay', (index * 0.1) + 's'); 1625 } 1626 1627 element.classList.add('reveal-visible'); 1628 revealObserver.unobserve(element); 1629 }); 1630 }, { threshold: 0, rootMargin: '0px' }); 1631 1632 function observeRevealNode(node) { 1633 if (node.nodeType !== 1) return; 1634 1635 if (node.matches(REVEAL_SELECTOR) && !node.classList.contains('reveal-init')) { 1636 node.classList.add('reveal-init'); 1637 revealObserver.observe(node); 1638 } 1639
1640 node.querySelectorAll(REVEAL_SELECTOR).forEach(function (child) { 1641 if (!child.classList.contains('reveal-init')) { 1642 child.classList.add('reveal-init'); 1643 revealObserver.observe(child); 1644 } 1645 }); 1646 } 1647 1648 /* ================================================================== 1649 * 4. CARDS 1650 * ================================================================== */ 1651 1652 function bindColabCards() { 1653 document.querySelectorAll('[colab-card="true"]').forEach(function (card) { 1654 if (card.dataset.hoverBound === 'true') return; 1655 card.dataset.hoverBound = 'true'; 1656 1657 var originalBg = 'linear-gradient(rgb(43, 43, 43) 0%, rgb(21, 21, 21) 77%)'; 1658 var hoverBg = 'linear-gradient(rgb(65, 65, 65) 0%, rgb(35, 35, 35) 77%)'; 1659 1660 card.style.backgroundImage = originalBg; 1661 1662 if (reducedMotion) return; 1663 1664 card.addEventListener('mouseenter', function () { 1665 gsap.to(card, { backgroundImage: hoverBg, duration: 0.4, ease: 'power2.out' }); 1666 }); 1667 1668 card.addEventListener('mouseleave', function () { 1669 gsap.to(card, { backgroundImage: originalBg, duration: 0.4, ease: 'power2.out' }); 1670 }); 1671 }); 1672 } 1673 1674 function bindStandardCards() { 1675 /* [Card="true"] dropped â identical selector to [card="true"] */ 1676 document.querySelectorAll('[card="true"]').forEach(function (card) { 1677 if (card.dataset.hoverInitialized === 'true') return; 1678 card.dataset.hoverInitialized = 'true'; 1679 1680 /* --- Spotlight, throttled to one write per frame --- */ 1681 var pendingX = 0; 1682 var pendingY = 0; 1683 var frameQueued = false; 1684 1685 card.addEventListener('mousemove', function (e) { 1686 var rect = card.getBoundingClientRect(); 1687 pendingX = e.clientX - rect.left; 1688 pendingY = e.clientY - rect.top; 1689 1690 if (frameQueued) return; 1691 frameQueued = true; 1692 1693 requestAnimationFrame(function () { 1694 frameQueued = false; 1695 card.style.setProperty('--local-x', pendingX + 'px'); 1696 card.style.setProperty('--local-y', pendingY + 'px'); 1697 }); 1698 }); 1699 1700 /* --- Parallax on hover --- */ 1701 var bg = card.querySelector('[card-bg="true"]'); 1702 1703 if (bg && !reducedMotion) { 1704 card.addEventListener('mouseenter', function () { 1705 gsap.to(card, { scale: 0.99, duration: 0.5, ease: 'power2.out', overwrite: 'auto' }); 1706 gsap.to(bg, { scale: 1.05, duration: 0.5, ease: 'power2.out', overwrite: 'auto' }); 1707 }); 1708 1709 card.addEventListener('mouseleave', function () { 1710 gsap.to(card, { scale: 1, duration: 0.5, ease: 'power2.out', overwrite: 'auto' }); 1711 gsap.to(bg, { scale: 1, duration: 0.5, ease: 'power2.out', overwrite: 'auto' }); 1712 }); 1713 } 1714 1715 /* --- View Transitions --- */ 1716 card.addEventListener('click', function () { 1717 var slug = 1718 card.dataset.slug || 1719 (card.getAttribute('href') || '').replace(/\//g, '') || 1720 Math.random().toString(36).substring(7); 1721 1722 document.body.style.pointerEvents = 'none'; 1723 1724 gsap.killTweensOf(card); 1725 1726 if (bg) { 1727 gsap.killTweensOf(bg); 1728 bg.style.viewTransitionName = 'hero-' + slug; 1729 } 1730 1731 function release() { 1732 document.body.style.pointerEvents = ''; 1733 if (bg) bg.style.viewTransitionName = ''; 1734 } 1735 1736 var timer = setTimeout(release, 1000); 1737 1738 window.addEventListener('pagehide', function () { 1739 clearTimeout(timer); 1740 release(); 1741 }, { once: true }); 1742 }); 1743 }); 1744 } 1745 1746 /* ================================================================== 1747 * 5. BOOT + BATCHED OBSERVER 1748 * ================================================================== */ 1749 1750 function bindGlobalInteractions() { 1751 bindColabCards(); 1752 bindStandardCards(); 1753 } 1754 1755 var revealQueue = new Set(); 1756 var flushScheduled = false;
1757 var rebindQueued = false; 1758 1759 function flush() { 1760 flushScheduled = false; 1761 1762 if (rebindQueued) { 1763 rebindQueued = false; 1764 bindGlobalInteractions(); 1765 } 1766 1767 revealQueue.forEach(function (node) { 1768 if (node.isConnected) observeRevealNode(node); 1769 }); 1770 1771 revealQueue.clear(); 1772 } 1773 1774 function scheduleFlush() { 1775 if (flushScheduled) return; 1776 flushScheduled = true; 1777 requestAnimationFrame(flush); 1778 } 1779 1780 var globalObserver = null; 1781 1782 function startGlobalObserver() { 1783 if (globalObserver) return; 1784 1785 globalObserver = new MutationObserver(function (mutations) { 1786 var hasAdded = false; 1787 1788 mutations.forEach(function (mutation) { 1789 mutation.addedNodes.forEach(function (node) { 1790 if (node.nodeType !== 1) return; 1791 hasAdded = true; 1792 revealQueue.add(node); 1793 }); 1794 }); 1795 1796 if (!hasAdded) return; 1797 1798 rebindQueued = true; 1799 scheduleFlush(); 1800 }); 1801 1802 globalObserver.observe(document.body, { 1803 childList: true, 1804 subtree: true 1805 }); 1806 } 1807 1808 window.wsAfterHydration.then(function () { 1809 startGlobalObserver(); 1810 1811 /* Cheap and user-visible â runs straight away. */ 1812 initCookieBanner(); 1813 1814 /* CHANGED: heavy DOM sweeps wait for an idle moment, so they do not 1815 compete with the loader reveal and the hero intro. */ 1816 whenIdle(function () { 1817 bindGlobalInteractions(); 1818 document.querySelectorAll(REVEAL_SELECTOR).forEach(observeRevealNode); 1819 }); 1820 }); 1821 1822 /* Never leave the page unclickable after a bfcache restore. */ 1823 window.addEventListener('pageshow', function (e) { 1824 if (e.persisted) document.body.style.pointerEvents = ''; 1825 }); 1826})(); 1827</script>
1827 1828</div></div></div><div class="w-html-embed"><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/lightgallery.min.css"> 1829<style> 1830 /* Shifted by +1 because the injected featured image is now child 1 */ 1831 [data-gallery="true"] [data-gallery-item]:nth-child(n+5) { 1832 display: none !important; 1833 } 1834 1835 @media (max-width: 991px) { 1836 [data-gallery="true"] [data-gallery-item]:nth-child(n+3) { 1837 display: none !important; 1838 } 1839 } 1840 1841 .lg-outer .lg-toolbar { 1842 top: 4.5rem !important; 1843 } 1844 1845 /* Hides everything except close, arrows, and toggle thumbnails */ 1846 .lg-zoom-in, 1847 .lg-zoom-out, 1848 .lg-actual-size, 1849 .lg-maximize, 1850 .lg-download, 1851 .lg-counter { 1852 display: none !important; 1853 } 1854 1855 .lg-preloader { display: none !important; } 1856 .lg-outer .lg-thumb-outer { 1857 text-align: center !important; 1858 background-color: transparent !important; 1859 } 1860 .lg-outer .lg-thumb { 1861 white-space: nowrap !important; 1862 padding: 10px 0 !important; 1863 margin: 0 auto !important; 1864 display: inline-block !important; 1865 } 1866 .lg-outer .lg-thumb-item { 1867 border-radius: 4px; 1868 border-width: 2px; 1869 border-color: rgba(255,255,255,0.2) !important; 1870 transition: border-color 0.2s ease; 1871 } 1872 .lg-outer .lg-thumb-item.active { 1873 border-color: var(--color-accent-1, #f00) !important; 1874 } 1875 .lg-outer .lg-thumb-item img { 1876 display: block !important; 1877 width: 100% !important; 1878 height: 100% !important; 1879 object-fit: cover !important; 1880 object-position: 50% 50% !important; 1881 } 1882 .lg-img-wrap img { 1883 border-radius: var(--corner-lg) !important; 1884 } 1885</style> 1886
1887<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/lightgallery.min.js" type="7b7c10cf7256a24b4e48e8f5-text/javascript"></script>
vendor: 1 bytes, line 1887
1887
1888<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/lg-thumbnail.min.js" type="7b7c10cf7256a24b4e48e8f5-text/javascript"></script>
1888 1889
1890<script type="7b7c10cf7256a24b4e48e8f5-text/javascript"> 1891(function () { 1892 function initGallery() { 1893 const container = document.querySelector('[data-gallery="true"]'); 1894 if (!container) return; 1895 1896 // 1. Destroy existing V1 instance if it exists 1897 if (container.getAttribute('lg-uid') && window.lgData) { 1898 try { window.lgData(container).destroy(true); } catch (_) {} 1899 } 1900 1901 // 2. Inject Featured Image using the data attribute 1902 const featuredImgEl = document.querySelector('[data-image="featured-image"]'); 1903 if (featuredImgEl) { 1904 const featuredUrl = featuredImgEl.getAttribute('src') || featuredImgEl.currentSrc; 1905 1906 // Prevent duplicating if function runs twice 1907 if (!container.querySelector('[data-featured-injected]')) { 1908 const featuredItem = document.createElement('div'); 1909 featuredItem.setAttribute('data-gallery-item', ''); 1910 featuredItem.setAttribute('data-featured-injected', 'true'); 1911 featuredItem.setAttribute('data-src', featuredUrl); 1912 featuredItem.setAttribute('data-thumb', featuredUrl); 1913 featuredItem.style.display = 'none'; 1914 container.prepend(featuredItem); 1915 } 1916 } 1917 1918 // 3. Setup Items 1919 const items = [...container.querySelectorAll('[data-gallery-item]')]; 1920 if (!items.length) return; 1921 1922 for (let i = 0; i < items.length; i++) { 1923 const el = items[i]; 1924 const img = el.querySelector('img'); 1925 if (img) { 1926 const fullUrl = el.getAttribute('data-lg-src') || img.getAttribute('src') || img.currentSrc; 1927 const thumbUrl = img.getAttribute('src') || img.currentSrc; 1928 el.setAttribute('data-src', fullUrl); 1929 el.setAttribute('data-thumb', thumbUrl); 1930 } 1931 } 1932 1933 // 4. Initialize V1 1934 lightGallery(container, { 1935 selector: '[data-gallery-item]', 1936 speed: 400, 1937 counter: false, 1938 download: false, 1939 thumbnail: true, 1940 thumbWidth: 140, 1941 thumbMargin: 10, 1942 exThumbImage: 'data-thumb' 1943 }); 1944 1945 // 5. Button Logic 1946 const galleryBtn = document.querySelector('[lightbox-element="btn"]'); 1947 if (galleryBtn) { 1948 galleryBtn.style.cursor = 'pointer'; 1949 galleryBtn.onclick = (e) => { 1950 e.preventDefault(); 1951 items[0]?.click(); 1952 }; 1953 } 1954 } 1955 1956 setTimeout(() => { 1957 if (document.readyState === 'complete') { 1958 initGallery(); 1959 } else { 1960 window.addEventListener('load', initGallery); 1961 } 1962 }, 100); 1963})(); 1964</script>
1964</div><div class="w-html-embed">
1964<script src="https://unpkg.com/embla-carousel/embla-carousel.umd.js" type="7b7c10cf7256a24b4e48e8f5-text/javascript"></script>
1964 1965
1966<script type="7b7c10cf7256a24b4e48e8f5-text/javascript"> 1967(function () { 1968 /* ========================================== */ 1969 /* RELATED SLIDER (EMBLA) INITIALIZATION */ 1970 /* ========================================== */ 1971 const initEmbla = setInterval(function() { 1972 if (typeof window.EmblaCarousel === 'undefined' || typeof gsap === 'undefined') return; 1973 1974 const viewportNode = document.querySelector('[related-slider="true" i]'); 1975 const explicitContainer = document.querySelector('[related-container="true" i]'); 1976 1977 if (!viewportNode || !explicitContainer) return; 1978 1979 clearInterval(initEmbla); 1980 1981 let emblaTrack = explicitContainer; 1982 1983 if (explicitContainer.children.length === 1) { 1984 emblaTrack = explicitContainer.firstElementChild; 1985 const computedGap = window.getComputedStyle(explicitContainer).gap; 1986 emblaTrack.style.display = 'flex'; 1987 emblaTrack.style.flexDirection = 'row'; 1988 emblaTrack.style.touchAction = 'pan-y pinch-zoom'; 1989 emblaTrack.style.gap = (computedGap && computedGap !== 'normal') ? computedGap : '2rem'; 1990 } 1991 1992 // Explicitly force infinite loop 1993 const emblaApi = window.EmblaCarousel(viewportNode, { 1994 container: emblaTrack, 1995 loop: true, 1996 align: 'start', 1997 dragFree: true 1998 }); 1999 2000 const images = viewportNode.querySelectorAll('img'); 2001 images.forEach(img => { 2002 if (!img.complete) { 2003 img.addEventListener('load', () => emblaApi.reInit()); 2004 } 2005 }); 2006 2007 setTimeout(() => emblaApi.reInit(), 500); 2008 setTimeout(() => emblaApi.reInit(), 1500); 2009 2010 const prevBtn = document.querySelector('[related-prev="true" i]'); 2011 const nextBtn = document.querySelector('[related-next="true" i]'); 2012 2013 if (prevBtn) prevBtn.addEventListener('click', () => emblaApi.scrollPrev()); 2014 if (nextBtn) nextBtn.addEventListener('click', () => emblaApi.scrollNext()); 2015 2016 const TWEEN_FACTOR_BASE = 0.08; 2017 let tweenFactor = 0; 2018 let tweenNodes = []; 2019 2020 const setTweenNodes = (emblaApi) => { 2021 tweenNodes = emblaApi.slideNodes().map((slideNode) => { 2022 return slideNode.querySelector('[card-bg="true" i]') || slideNode.querySelector('img'); 2023 }); 2024 }; 2025 2026 const setTweenFactor = (emblaApi) => { 2027 const snapListLength = emblaApi.scrollSnapList ? emblaApi.scrollSnapList().length : emblaApi.snapList().length; 2028 tweenFactor = TWEEN_FACTOR_BASE * snapListLength; 2029 }; 2030 2031 const tweenParallax = (emblaApi, event) => { 2032 const engine = emblaApi.internalEngine(); 2033 const scrollProgress = emblaApi.scrollProgress(); 2034 const slidesInView = emblaApi.slidesInView(); 2035 const isScrollEvent = event?.type === 'scroll'; 2036 2037 const snapList = emblaApi.scrollSnapList ? emblaApi.scrollSnapList() : emblaApi.snapList(); 2038 2039 snapList.forEach((scrollSnap, snapIndex) => { 2040 let diffToTarget = scrollSnap - scrollProgress; 2041 const slidesInSnap = engine.slideRegistry ? engine.slideRegistry[snapIndex] : engine.scrollSnapList.slidesBySnap[snapIndex]; 2042 2043 if (!slidesInSnap) return; 2044
2045 slidesInSnap.forEach((slideIndex) => { 2046 if (isScrollEvent && !slidesInView.includes(slideIndex)) return; 2047 2048 if (engine.options.loop) { 2049 engine.slideLooper.loopPoints.forEach((loopItem) => { 2050 const target = loopItem.target(); 2051 2052 if (slideIndex === loopItem.index && target !== 0) { 2053 const sign = Math.sign(target); 2054 if (sign === -1) diffToTarget = scrollSnap - (1 + scrollProgress); 2055 if (sign === 1) diffToTarget = scrollSnap + (1 - scrollProgress); 2056 } 2057 }); 2058 } 2059 2060 const translate = diffToTarget * (-1 * tweenFactor) * 100; 2061 const tweenNode = tweenNodes[slideIndex]; 2062 2063 if (tweenNode) { 2064 gsap.set(tweenNode, { xPercent: translate, overwrite: "none" }); 2065 } 2066 }); 2067 }); 2068 }; 2069 2070 setTweenNodes(emblaApi); 2071 setTweenFactor(emblaApi); 2072 tweenParallax(emblaApi); 2073 2074 emblaApi 2075 .on('reInit', setTweenNodes) 2076 .on('reInit', setTweenFactor) 2077 .on('reInit', tweenParallax) 2078 .on('scroll', tweenParallax) 2079 .on('slideFocus', tweenParallax); 2080 2081 }, 100); 2082 2083})(); 2084</script>
2084</div><div class="w-html-embed"><style> 2085 /* Base hidden state with simple fade transition */ 2086 div[data-read-more-modal="true"] { 2087 opacity: 0 !important; 2088 visibility: hidden !important; 2089 pointer-events: none !important; 2090 transition: opacity 0.3s ease, visibility 0.3s !important; 2091 } 2092 2093 /* Active visible state */ 2094 div[data-read-more-modal="true"].is-open { 2095 opacity: 1 !important; 2096 visibility: visible !important; 2097 pointer-events: auto !important; 2098 } 2099</style> 2100
2101<script type="7b7c10cf7256a24b4e48e8f5-text/javascript"> 2102 document.addEventListener("DOMContentLoaded", () => { 2103 const readMoreBtn = document.querySelector('[data-read-more-btn="true"]'); 2104 const readMoreModal = document.querySelector('[data-read-more-modal="true"]'); 2105 const closeBtns = document.querySelectorAll('[data-close-modal="true"]'); 2106 2107 if (!readMoreBtn || !readMoreModal) return; 2108 2109 // Open behavior 2110 readMoreBtn.addEventListener('click', (event) => { 2111 event.preventDefault(); 2112 readMoreModal.classList.add('is-open'); 2113 2114 // Stop background scrolling 2115 document.body.style.overflow = 'hidden'; 2116 if (typeof lenis !== 'undefined') lenis.stop(); 2117 }); 2118 2119 // Close behavior 2120 closeBtns.forEach(btn => { 2121 btn.addEventListener('click', () => { 2122 readMoreModal.classList.remove('is-open'); 2123 2124 // Restore background scrolling 2125 document.body.style.overflow = ''; 2126 if (typeof lenis !== 'undefined') lenis.start(); 2127 }); 2128 }); 2129 }); 2130</script>
2130</div><div class="w-html-embed">
2130<script type="7b7c10cf7256a24b4e48e8f5-text/javascript"> 2131 setTimeout(function() { 2132 const leadCount = document.querySelectorAll('[data-container="lead"] [colab-card="true"]').length; 2133 const contributorCount = document.querySelectorAll('[data-container="contributor"] [colab-card="true"]').length; 2134 2135 document.querySelectorAll('[data-display="lead-count"]').forEach(el => { 2136 el.textContent = leadCount + ' ' + (leadCount === 1 ? 'lead' : 'leads'); 2137 }); 2138 2139 document.querySelectorAll('[data-display="contributor-count"]').forEach(el => { 2140 el.textContent = contributorCount + ' ' + (contributorCount === 1 ? 'contributor' : 'contributors'); 2141 }); 2142 }, 1000); 2143</script>
2143</div><div class="w-html-embed">
2143<script type="7b7c10cf7256a24b4e48e8f5-text/javascript"> 2144 setTimeout(function() { 2145 // 1. Select all cards inside your specific 4-column grid 2146 const locationCount = document.querySelectorAll('[grid-4-columns="true"] [card="true"]').length; 2147 2148 // 2. Update all elements designated to display this count 2149 document.querySelectorAll('[data-display="location-count"]').forEach(el => { 2150 // Logic for pluralization 2151 const label = locationCount === 1 ? 'location' : 'locations'; 2152 el.textContent = `${locationCount} ${label}`; 2153 }); 2154 }, 1000); // 1s delay to ensure the GraphQL/DOM render is complete 2155</script>
2155</div><div class="w-html-embed">
2155<script type="7b7c10cf7256a24b4e48e8f5-text/javascript"> 2156document.addEventListener('DOMContentLoaded', () => { 2157 2158 document.querySelectorAll('[data-btn]').forEach(btn => { 2159 const content = document.querySelector(`[data-content="${btn.dataset.btn}"]`); 2160 2161 if (content) { 2162 // Optional: Ensure the tooltip is hidden and pushed down slightly on load 2163 gsap.set(content, { autoAlpha: 0, y: 15 }); 2164 2165 // Slide up and fade in on hover 2166 btn.addEventListener('mouseenter', () => { 2167 gsap.to(content, { 2168 autoAlpha: 1, 2169 y: 0, 2170 duration: 0.3, 2171 ease: "power2.out", 2172 overwrite: true // Prevents animation conflicts if you hover in/out quickly 2173 }); 2174 }); 2175 2176 // Slide down and fade out when mouse leaves 2177 btn.addEventListener('mouseleave', () => { 2178 gsap.to(content, { 2179 autoAlpha: 0, 2180 y: 10, 2181 duration: 0.2, 2182 ease: "power2.in", 2183 overwrite: true 2184 }); 2185 }); 2186 } 2187 }); 2188 2189}); 2190</script>
2190</div><div class="w-html-embed"><style> 2191 /* --- CONTRIBUTOR RANK COLORS --- */ 2192 2193 /* Target any element that has the data attribute */ 2194 [data-contributor-rank-color] { 2195 /* Set a transparent or default fallback in case the CMS field is empty */ 2196 --rank-color: transparent; 2197 2198 /* Apply the dynamic variable specifically to the bottom border */ 2199 border-bottom: 2px solid var(--rank-color) !important; 2200 } 2201</style> 2202
2203<script type="7b7c10cf7256a24b4e48e8f5-text/javascript"> 2204/** 2205 * Dynamic Contributor Rank Colors 2206 * Reads the data attribute and injects it as a CSS variable for the bottom border 2207 */ 2208(function() { 2209 function applyRankColors() { 2210 // Find all elements on the page with the attribute 2211 const contributors = document.querySelectorAll('[data-contributor-rank-color]'); 2212 2213 contributors.forEach(item => { 2214 // Get the color value from the attribute (e.g., "#f6c480") 2215 const colorValue = item.getAttribute('data-contributor-rank-color'); 2216 2217 // If a color exists, inject it into the element's local styles 2218 if (colorValue && colorValue.trim() !== '') { 2219 item.style.setProperty('--rank-color', colorValue.trim()); 2220 } 2221 }); 2222 } 2223 2224 // Initialize as soon as the DOM is ready 2225 if (document.readyState === 'loading') { 2226 document.addEventListener('DOMContentLoaded', applyRankColors); 2227 } else { 2228 applyRankColors(); 2229 } 2230})(); 2231</script>
2231</div><div class="w-html-embed"><style> 2232 /* Remove all styles except forcing the author text to be non-italic */ 2233 blockquote footer.quote-author { 2234 font-style: normal !important; 2235 display: block !important; 2236 margin-top: 0.5rem !important; /* Controls the exact space above the author */ 2237 text-shadow: none !important; 2238 } 2239</style> 2240
2241<script type="7b7c10cf7256a24b4e48e8f5-text/javascript"> 2242 (function() { 2243 function processQuotes() { 2244 const blockquotes = document.querySelectorAll('blockquote:not([data-processed="true"])'); 2245 2246 blockquotes.forEach(bq => { 2247 bq.dataset.processed = "true"; // Prevent double processing 2248 2249 // --- 1. Clean quotes to standard straight double quotes --- 2250 const walkDOMQuotes = (node) => { 2251 if (node.nodeType === Node.TEXT_NODE) { 2252 node.textContent = node.textContent.replace(/[ââ]/g, '"'); 2253 } else { 2254 node.childNodes.forEach(walkDOMQuotes); 2255 } 2256 }; 2257 walkDOMQuotes(bq); 2258 2259 // --- 2. Fix the Author Name for both HTML structures --- 2260 const textNodes = []; 2261 const walk = document.createTreeWalker(bq, NodeFilter.SHOW_TEXT, null, false); 2262 let n; 2263 while (n = walk.nextNode()) textNodes.push(n); 2264 2265 let splitNode = null; 2266 let dashIndexInNode = -1; 2267 let authorString = ''; 2268 2269 // Search backwards through all text nodes to find the last valid dash separator 2270 for (let i = textNodes.length - 1; i >= 0; i--) { 2271 let text = textNodes[i].nodeValue; 2272 let idx = -1; 2273 2274 for (let j = text.length - 1; j >= 0; j--) { 2275 if (text[j] === '-' || text[j] === 'â' || text[j] === 'â') { 2276 let prev = text[j-1] || ' '; 2277 let next = text[j+1] || ' '; 2278 // Ignore dashes that are surrounded by letters (e.g., Middle-earth) 2279 if (!(/[a-zA-Z]/.test(prev) && /[a-zA-Z]/.test(next))) { 2280 idx = j; 2281 break; 2282 } 2283 } 2284 } 2285 2286 if (idx !== -1) { 2287 splitNode = textNodes[i]; 2288 dashIndexInNode = idx; 2289 authorString = text.substring(idx + 1) + authorString; 2290 splitNode.nodeValue = text.substring(0, idx); 2291 break; 2292 } else { 2293 authorString = text + authorString; 2294 } 2295 } 2296 2297 if (splitNode) { 2298 let passedSplit = false; 2299 for (let i = 0; i < textNodes.length; i++) { 2300 if (passedSplit) { 2301 textNodes[i].nodeValue = ''; 2302 } 2303 if (textNodes[i] === splitNode) { 2304 passedSplit = true; 2305 } 2306 } 2307 2308 while (bq.lastChild) { 2309 const last = bq.lastChild; 2310 if (last.nodeName === 'BR' || (last.textContent !== undefined && last.textContent.trim() === '')) { 2311 bq.removeChild(last); 2312 } else { 2313 break; 2314 } 2315 } 2316 2317 const footer = document.createElement('footer'); 2318 footer.className = 'quote-author'; 2319 footer.innerHTML = `â ${authorString.trim()}`; 2320 2321 bq.appendChild(footer); 2322 } 2323 }); 2324 } 2325 2326 // 1. Run immediately for elements already in the DOM (Builder mode) 2327 processQuotes(); 2328 2329 // 2. Watch the DOM for new blockquotes appearing (Live site hydration) 2330 const observer = new MutationObserver(() => { 2331 if (document.querySelector('blockquote:not([data-processed="true"])')) { 2332 processQuotes(); 2333 } 2334 }); 2335 2336 observer.observe(document.body, { childList: true, subtree: true }); 2337 })(); 2338</script>
2338</div><div class="w-element"><div class="w-element cn655op cz6q0ow cg6mpnv c1gwqmgk cga5jly cwoxq2k calwkgt c158s1wq c1sdshe c1wn46uq"><img class="w-image c158s1wq c1gwqmgk c1wn46uq" alt="" src="https://wp.ardacraft.me/wp-content/uploads/2026/05/66e87bba7657a78760119806_Isengard-minecraft-middle-earth-lotr.webp" decoding="async" loading="lazy"/><div class="w-element cg6mpnv c1k3h0ob cl2xlqw c1l20dy0 c1c5x41x cr9ynet"></div><div class="w-element"></div></div><div data-appear-animation="true" class="w-element c1wn46uq cozcy5p c1qe7a3l cbm90qe cjulrou c1a4d992 c1e9k3hw ce1b68t c1rx8qlb c1ljsp2s c1ll7j66"><div class="w-element c1uz7vom cbm90qe c17waf3r c1etu3xr c1d1wqa2 c9uhmm4 c44etkh"><div class="w-html-embed ccp5xa0 c1qi35su c1uf2hoa c1ofywq3 c114ocss c1yjr2ok"><style> 2339 .link-left { 2340 color: inherit !important; 2341 text-decoration: none; 2342 display: inline-flex; 2343 align-items: center; 2344 } 2345 2346 .mask-left { 2347 overflow: hidden; 2348 display: flex; 2349 } 2350 2351 .link-container-left { 2352 display: grid; 2353 } 2354 2355 .title-left { 2356 grid-area: 1 / 1; 2357 transition: transform 0.4s ease; 2358 } 2359 2360 .link-title1-left { 2361 transform-origin: left center; 2362 transform: translateY(0) rotate(0); 2363 } 2364 2365 .link-title2-left { 2366 transform-origin: right center; 2367 transform: translateY(100%) rotate(-20deg); 2368 } 2369 2370 .link-icon-left { 2371 position: relative; 2372 width: 16px; 2373 height: 16px; 2374 display: flex; 2375 justify-content: center; 2376 align-items: center; 2377 margin-right: 8px; 2378 overflow: hidden; 2379 } 2380 2381 .icon-left { 2382 position: absolute; 2383 transition: transform 0.4s ease; 2384 width: 100%; 2385 height: 100%; 2386 transform: scaleX(-1); 2387 } 2388 2389 .icon-left:nth-child(2) { 2390 transform: translateX(24px) scaleX(-1); 2391 } 2392 2393 /* Makes the arrow 1px thicker */ 2394 .icon-left path { 2395 stroke: currentColor; 2396 stroke-width: 1px; 2397 stroke-linejoin: round; 2398 } 2399 2400 /* Hover states */ 2401 .link-left:hover .link-title1-left { 2402 transform: translateY(-100%) rotate(-20deg); 2403 } 2404 2405 .link-left:hover .link-title2-left { 2406 transform: translateY(0) rotate(0); 2407 } 2408 2409 .link-left:hover .icon-left:first-child { 2410 transform: translateX(-24px) scaleX(-1); 2411 } 2412 2413 .link-left:hover .icon-left:nth-child(2) { 2414 transform: translateX(0px) scaleX(-1); 2415 } 2416</style> 2417 2418<a href="/location" class="link-left"> 2419 <div class="link-icon-left"> 2420 <svg class="icon-left" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> 2421 <path d="M21.883 12l-7.527 6.235.644.765 9-7.521-9-7.479-.645.764 7.529 6.236h-21.884v1h21.883z" fill="currentColor"></path> 2422 </svg> 2423 <svg class="icon-left" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> 2424 <path d="M21.883 12l-7.527 6.235.644.765 9-7.521-9-7.479-.645.764 7.529 6.236h-21.884v1h21.883z" fill="currentColor"></path> 2425 </svg> 2426 </div> 2427 <span class="mask-left"> 2428 <div class="link-container-left"> 2429 <span class="link-title1-left title-left">All Regions & Locations</span> 2430 <span class="link-title2-left title-left">All Regions & Locations</span> 2431 </div> 2432 </span> 2433</a></div><hr class="w-element c18xmvv9 c1071umj cwglj61 c1ccl4po crdmx6o c1wn46uq c1igm2uw c1r9z6ml c7ji9jo cx16f77 c13irkzz"/><div class="w-html-embed ccp5xa0 c1qi35su c1uf2hoa c1ofywq3 c114ocss c1yjr2ok"><style> 2434 .link-right { 2435 color: inherit !important; 2436 text-decoration: none; 2437 display: inline-flex; 2438 align-items: center; 2439 } 2440 2441 .mask-right { 2442 overflow: hidden; 2443 display: flex; 2444 } 2445 2446 .link-container-right { 2447 display: grid; 2448 } 2449 2450 .title-right { 2451 grid-area: 1 / 1; 2452 transition: transform 0.4s ease; 2453 } 2454 2455 .link-title1-right { 2456 transform-origin: right center; 2457 transform: translateY(0) rotate(0); 2458 } 2459 2460 .link-title2-right { 2461 transform-origin: left center; 2462 transform: translateY(100%) rotate(20deg); 2463 } 2464 2465 .link-icon-right { 2466 position: relative; 2467 width: 16px; 2468 height: 16px; 2469 display: flex; 2470 justify-content: center; 2471 align-items: center; 2472 margin-left: 8px; 2473 overflow: hidden; 2474 } 2475 2476 .icon-right { 2477 position: absolute; 2478 transition: transform 0.4s ease; 2479 width: 100%; 2480 height: 100%; 2481 } 2482 2483 .icon-right:nth-child(2) { 2484 transform: translateX(-24px); 2485 } 2486 2487 /* Makes the arrow 1px thicker */ 2488 .icon-right path { 2489 stroke: currentColor; 2490 stroke-width: 1px; 2491 stroke-linejoin: round; 2492 } 2493 2494 /* Hover states */ 2495 .link-right:hover .link-title1-right { 2496 transform: translateY(-100%) rotate(20deg); 2497 } 2498 2499 .link-right:hover .link-title2-right { 2500 transform: translateY(0) rotate(0); 2501 } 2502 2503 .link-right:hover .icon-right:first-child { 2504 transform: translateX(24px); 2505 } 2506 2507 .link-right:hover .icon-right:nth-child(2) { 2508 transform: translateX(0px); 2509 } 2510</style> 2511 2512<a href="/map/middle-earth-interactive-map" class="link-right"> 2513 <span class="mask-right"> 2514 <div class="link-container-right">
2515 <span class="link-title1-right title-right">Interactive map</span> 2516 <span class="link-title2-right title-right">Interactive map</span> 2517 </div> 2518 </span> 2519 <div class="link-icon-right"> 2520 <svg class="icon-right" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> 2521 <path d="M21.883 12l-7.527 6.235.644.765 9-7.521-9-7.479-.645.764 7.529 6.236h-21.884v1h21.883z" fill="currentColor"></path> 2522 </svg> 2523 <svg class="icon-right" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> 2524 <path d="M21.883 12l-7.527 6.235.644.765 9-7.521-9-7.479-.645.764 7.529 6.236h-21.884v1h21.883z" fill="currentColor"></path> 2525 </svg> 2526 </div> 2527</a></div></div></div><div class="w-element c1wn46uq cozcy5p c1qe7a3l cbm90qe cjulrou c1a4d992 c1e9k3hw ce1b68t c1rx8qlb c1ljsp2s c1ll7j66"><div class="w-element cekh774 c12dhly7"><div data-appear-animation="true" class="w-element c1scp8rj c1lez5qp c1snm4mx"><h1 class="w-element cuahv1a c19saac5 cff5pwp c1ay1jd2 cp6ye3q c1xximra cjfzmzy cf6n94z c1tnaazk cljhc1l cr2xwjp">Isengard</h1></div><div class="w-element c1uz7vom cbm90qe c4oxwb7 cyjoizj clxdfzs chuceet c1lez5qp c1snm4mx cm7p76a caqr9cj"><div data-appear-animation="true" class="w-element ck80xjz"><a data-btn="misty-mountains" class="w-element cwry5n3 c119z9l c1vyde7q ccut9dl c1qqnmdg c1n9z9db c1a4d3g5 c1d5q97y cbp5xrw cmg6q8e c7z00ss c32xzbx cz92tk c1gxmacj c1j9ejvd cdlctc7 c9uv4ua c1213g6r cszv2jl c4ai5w2" href="/location/misty-mountains" data-discover="true"><p class="w-element ccp5xa0 c1e5xz0k cg2r0go c1iq6tjl c1yzlqql cvrj00w csd63x6 c4lc5pz c1fkewyi cxs4t3 cte87bx cwh8dci">Misty Mountains</p></a><div data-content="misty-mountains" class="w-element c1tr8905 c1ka351p c1n9z9db c1a4d3g5 c1d5q97y cbp5xrw cg6mpnv cwry5n3 c119z9l ccut9dl c1vyde7q cgz8w13 c1p0af96 cbm90qe c4oxwb7 calwkgt cbzotcu caaxg2o cltxm6l cri68x2 cq3krnj c75lct5"><p class="w-element ccp5xa0 cte87bx c1uf2hoa c1ofywq3 c1fkewyi cxs4t3 c183wvf2 ci1pq5k c1qe7a3l cjfzmzy c1yjr2ok">Explore this region's page</p></div></div><div data-appear-animation="true" class="w-element ck80xjz"><a data-btn="fortification" class="w-element cwry5n3 c119z9l c1vyde7q ccut9dl c1qqnmdg c1n9z9db c1a4d3g5 c1d5q97y cbp5xrw c1nrnj6p c7z00ss c32xzbx cz92tk c1gxmacj c1j9ejvd cdlctc7 c9uv4ua c1213g6r cszv2jl c4ai5w2" href="/location?type=fortification" data-discover="true"><p class="w-element ccp5xa0 c1e5xz0k cg2r0go c1iq6tjl c1yzlqql cvrj00w csd63x6 c4lc5pz c1fkewyi cxs4t3 cte87bx cwh8dci">Fortification</p></a><div data-content="fortification" class="w-element c1tr8905 c1ka351p c1n9z9db c1a4d3g5 c1d5q97y cbp5xrw cg6mpnv cwry5n3 c119z9l ccut9dl c1vyde7q cgz8w13 c1p0af96 cbm90qe c4oxwb7 calwkgt cbzotcu c1sjfidn cltxm6l cri68x2 cq3krnj c75lct5"><p class="w-element ccp5xa0 cte87bx c1uf2hoa c1ofywq3 c1fkewyi cxs4t3 c183wvf2 ci1pq5k c1qe7a3l cjfzmzy">Filter the all locations & regions page</p></div></div><div data-appear-animation="true" class="w-element ck80xjz"><a data-btn="landmark" class="w-element cwry5n3 c119z9l c1vyde7q ccut9dl c1qqnmdg c1n9z9db c1a4d3g5 c1d5q97y cbp5xrw c1nrnj6p c7z00ss c32xzbx cz92tk c1gxmacj c1j9ejvd cdlctc7 c9uv4ua c1213g6r cszv2jl c4ai5w2" href="/location?type=landmark" data-discover="true"><p class="w-element ccp5xa0 c1e5xz0k cg2r0go c1iq6tjl c1yzlqql cvrj00w csd63x6 c4lc5pz c1fkewyi cxs4t3 cte87bx cwh8dci">Landmark</p></a><div data-content="landmark" class="w-element c1tr8905 c1ka351p c1n9z9db c1a4d3g5 c1d5q97y cbp5xrw cg6mpnv cwry5n3 c119z9l ccut9dl c1vyde7q cgz8w13 c1p0af96 cbm90qe c4oxwb7 calwkgt cbzotcu c1sjfidn cltxm6l cri68x2 cq3krnj c75lct5"><p class="w-element ccp5xa0 cte87bx c1uf2hoa c1ofywq3 c1fkewyi cxs4t3 c183wvf2 ci1pq5k c1qe7a3l cjfzmzy">Filter the all locations & regions page</p></div></div><div data-appear-animation="true" class="w-element ck80xjz"><div data-btn="status" class="w-element cwry5n3 c119z9l c1vyde7q ccut9dl c1qqnmdg c1n9z9db c1a4d3g5 c1d5q97y cbp5xrw cmg6q8e cnxcgvq c32xzbx cz92tk c1gxmacj c1j9ejvd cdlctc7 c16gl9qu c1po7nny c142ggw7 c4ai5w2"><p class="w-element ccp5xa0 c1e5xz0k cg2r0go c1iq6tjl c1yzlqql cvrj00w csd63x6 c4lc5pz c1fkewyi cxs4t3 cte87bx cwh8dci">Completed</p></div><div data-content="status" class="w-element c1d4vt2g c1ka351p c1n9z9db c1a4d3g5 c1d5q97y cbp5xrw cg6mpnv cwry5n3 c119z9l ccut9dl c1vyde7q cgz8w13 c1p0af96 cbm90qe c4oxwb7 calwkgt cbzotcu c7r34dg cltxm6l cri68x2 c1po7nny c75lct5"><p class="w-element ccp5xa0 cte87bx c1uf2hoa c1ofywq3 c1fkewyi cxs4t3 c183wvf2 ci1pq5k c1qe7a3l cjfzmzy">ArdaCraft is a massive, ongoing collaborative project. These tags indicate where a specific location is in our development pipeline: awaiting construction (Not Started), actively being built by our team (In Progress), or fully finished and ready to explore (Completed).</p></div></div><div data-appear-animation="true" class="w-element ck80xjz"><div data-btn="conlore" class="w-element cwry5n3 c119z9l c1vyde7q ccut9dl c1qqnmdg c1n9z9db c1a4d3g5 c1d5q97y cbp5xrw cmg6q8e c1vt829k c32xzbx cz92tk c1gxmacj c1j9ejvd cdlctc7 c16gl9qu c49bwc2 c142ggw7 c4ai5w2"><p class="w-element ccp5xa0 c1e5xz0k cg2r0go c1iq6tjl c1yzlqql cvrj00w csd63x6 c4lc5pz c1fkewyi cxs4t3 cte87bx cwh8dci">Canon</p></div><div data-content="conlore" class="w-element c17bhl11 c1ka351p c1n9z9db c1a4d3g5 c1d5q97y cbp5xrw cg6mpnv cwry5n3 c119z9l ccut9dl c1vyde7q cgz8w13 c1p0af96 cbm90qe c4oxwb7 calwkgt cbzotcu c7r34dg cltxm6l cri68x2 c49bwc2 c75lct5"><p class="w-element ccp5xa0 cte87bx c1uf2hoa c1ofywq3 c1fkewyi cxs4t3 c183wvf2 ci1pq5k c1qe7a3l cjfzmzy">Original locations created by the ArdaCraft team to fill in gaps left by J.R.R. Tolkien. It is carefully designed to remain completely faithful to the established Middle-earth canon.</p></div></div></div></div></div><div class="w-element c1wn46uq cozcy5p c1qe7a3l cbm90qe cjulrou c1a4d992 c1e9k3hw ce1b68t c1rx8qlb ck80xjz c1ljsp2s c1ll7j66"><img view-transition-name="hero-isengard" data-image="featured-image" data-appear-animation="true" class="w-image c1u4bimh c9nlz19 c1p20qhz c1v4k1bc c1ueillu c1su6h12 c1xswnh8 c14df0s2 c1r2b2pv c36tayo cwu94e5" alt="The black tower of Orthanc in Isengard, lightly surrounded by mist and set against a backdrop of the Misty Mountains." src="https://wp.ardacraft.me/wp-content/uploads/2026/05/66e87bba7657a78760119806_Isengard-minecraft-middle-earth-lotr.webp" decoding="async" loading="eager"/><div data-gallery="true" data-appear-animation="true" class="w-element cg6mpnv c1n9z9db c1a4d3g5 c1d5q97y cbp5xrw cos19h3 c1uz7vom cyjoizj clxdfzs calwkgt cfn02q6 c17waf3r cd1p9h4 c1i1wqap cn655op cz6q0ow cwoxq2k cbx8lb7"><div data-lg-src="https://wp.ardacraft.me/wp-content/uploads/2026/04/Orthanc-Golden-Hour-minecraft-middle-earth-lotr.webp" data-gallery-item="true" class="w-element c1tvgytw c32xzbx cz92tk c1gxmacj c1j9ejvd cdlctc7 ck80xjz c12zejl6 ctnzq5v"><div class="w-element c1uz7vom cbm90qe c4oxwb7 cg6mpnv c1xtemrk c191vxh1 c3pk0ri cwl10p2 c32xzbx cz92tk c1gxmacj c1j9ejvd cdlctc7 cxha9zs cdk8ru2 c17q5ox6 ct6po2z c7mtr3j ci4a5uw ckb7rny c4wopuh cv2e2o4"><p class="w-element ccp5xa0 c1e5xz0k cg2r0go c1iq6tjl c1yzlqql cvrj00w csd63x6 c4lc5pz c1fkewyi cxs4t3 cte87bx cwoxq2k cjfzmzy cwh8dci">Open<br/>Gallery</p></div><img lightbox-element="img" class="w-image cdk8ru2 c17q5ox6 ct6po2z c7mtr3j c12zejl6 c1rrox41 c1tvgytw c1wn46uq" alt="" src="https://wp.ardacraft.me/wp-content/uploads/2026/04/Orthanc-Golden-Hour-minecraft-middle-earth-lotr.webp" decoding="async" loading="lazy"/></div><div data-lg-src="https://wp.ardacraft.me/wp-content/uploads/2026/05/67d1cb175a826cbf98dc5e0d_Isengard-from-afar-minecraft-middle-earth-lotr.webp" data-gallery-item="true" class="w-element c1tvgytw c32xzbx cz92tk c1gxmacj c1j9ejvd cdlctc7 ck80xjz c12zejl6 ctnzq5v"><div class="w-element c1uz7vom cbm90qe c4oxwb7 cg6mpnv c1xtemrk c191vxh1 c3pk0ri cwl10p2 c32xzbx cz92tk c1gxmacj c1j9ejvd cdlctc7 cxha9zs cdk8ru2 c17q5ox6 ct6po2z c7mtr3j ci4a5uw ckb7rny c4wopuh cv2e2o4"><p class="w-element ccp5xa0 c1e5xz0k cg2r0go c1iq6tjl c1yzlqql cvrj00w csd63x6 c4lc5pz c1fkewyi cxs4t3 cte87bx cwoxq2k cjfzmzy cwh8dci">Open<br/>Gallery</p></div><img lightbox-element="img" class="w-image cdk8ru2 c17q5ox6 ct6po2z c7mtr3j c12zejl6 c1rrox41 c1tvgytw c1wn46uq" alt="" src="https://wp.ardacraft.me/wp-content/uploads/2026/05/67d1cb175a826cbf98dc5e0d_Isengard-from-afar-minecraft-middle-earth-lotr.webp" decoding="async" loading="lazy"/></div><div data-lg-src="https://wp.ardacraft.me/wp-content/uploads/2026/05/66e880757657a7876017077e_Isengard-Gardens-minecraft-middle-earth-lotr.webp" data-gallery-item="true" class="w-element c1tvgytw c32xzbx cz92tk c1gxmacj c1j9ejvd cdlctc7 ck80xjz c12zejl6 ctnzq5v"><div class="w-element c1uz7vom cbm90qe c4oxwb7 cg6mpnv c1xtemrk c191vxh1 c3pk0ri cwl10p2 c32xzbx cz92tk c1gxmacj c1j9ejvd cdlctc7 cxha9zs cdk8ru2 c17q5ox6 ct6po2z c7mtr3j ci4a5uw ckb7rny c4wopuh cv2e2o4"><p class="w-element ccp5xa0 c1e5xz0k cg2r0go c1iq6tjl c1yzlqql cvrj00w csd63x6 c4lc5pz c1fkewyi cxs4t3 cte87bx cwoxq2k cjfzmzy cwh8dci">Open<br/>Gallery</p></div><img lightbox-element="img" class="w-image cdk8ru2 c17q5ox6 ct6po2z c7mtr3j c12zejl6 c1rrox41 c1tvgytw c1wn46uq" alt="" src="https://wp.ardacraft.me/wp-content/uploads/2026/05/66e880757657a7876017077e_Isengard-Gardens-minecraft-middle-earth-lotr.webp" decoding="async" loading="lazy"/></div></div></div></div><div data-appear-animation="true" class="w-element c17db8uu cp86zhm"><div class="w-element c1wn46uq cviy76t c1e9k3hw c1a4d992 c1ll7j66 c1ljsp2s"><div class="w-html-embed cte87bx ccp5xa0 c1hi51uv clpnwus c1ofywq3 c1wn46uq cp057k5 cf5rzud c1sgay7g c1f46hrm c17zq9vz c1hmm4uv c1o9p5f8 c1uvxwfw c103b7cy c7efj32 c2lz52y c1ud9rcf c52bi7f c1vykm6c crfadrz cwwaw2e ct9og14 c1nywzun cvvgrx5 c1vh7kb9 chab8fi ctetyd6"><blockquote id=""> 2528<p><em id="">There stood a tower of marvellous shape. It was fashioned by the builders of old, who smoothed the Ring of Isengard, and
2528yet it seemed a thing not made by the craft of Men, but riven from the bones of the earth in the ancient torment of the hills. A peak and isle of rock it was, black and gleaming hard: four mighty piers of many-sided stone were welded into one, but near the summit they opened into gaping horns, their pinnacles sharp as the points of spears, keen-edged as knives. Between them was a narrow space, and there upon a floor of polished stone, written with strange signs.<br /> 2529– The Two Towers (Book 3), Chapter 8</em></p> 2530</blockquote> 2531<p id="">Lying in a vale at the southern end of <a id="" href="/region/misty-mountains">the Misty Mountains</a>, the fortress of Isengard (or Angrenost) consists of a circular wall which surrounds the great tower of Orthanc. Standing at over 500 feet tall, it was constructed by the Dúnedain in the late Second Age and has housed the Orthanc-stone, one of the nine palantÃri, ever since.</p> 2532<p id="">After the tower of Orthanc was locked and abandoned by the Gondorians following the Great Plague of T.A. 1636, the area surrounding Isengard became home to Dunlendings hostile to the nearby Rohirrim. The Rohirrim were only able to break their strength after the Long Winter in T.A. 2759, over a millenium later.</p> 2533<p id="">In the same year, the wizard Saruman returned from his travels in the east of Middle-earth and took up residence in the now deserted fortress. The vale of Isengard became hereafter known as “Nan CurunÃr”, Wizard’s Vale. However, the White Wizard has long since been scheming and preparing to challenge not just the realms of Men but Sauron himself.</p> 2534</div><div class="w-element"><div class="w-element cg6mpnv"><div data-focus-modal="true" class="w-element cjh4jyv c1oltoh9 c158s1wq c1k3h0ob cl2xlqw c1l20dy0 clhwsmj cqkd5wj"></div></div></div></div></div><div data-read-more-modal="true" data-lenis-prevent="true" class="w-element cg6mpnv c158s1wq c1l20dy0 c1k3h0ob cl2xlqw ct80eqf"><div data-element="modal-overlay" class="w-element cjh4jyv c1oltoh9 c158s1wq c1k3h0ob cl2xlqw c1l20dy0 clhwsmj"></div><div class="w-element c1oltoh9 c1m69xwo csojxv8 c12dhly7 ckj4ld3 cos19h3 c9nlz19 c1p20qhz c1v4k1bc c1ueillu cwlhc2g c1d2mojp cwoxq2k cb4xare c1uz7vom c1qe7a3l c12vpo0c c7ogkau cijacsn c1pwndm3 cj3aed8 c190i49i c1jtvfsx c1213g6r c14df0s2 cwht415 ci85mu c16xfhgn cofe6fc"><div data-close-modal="true" class="w-element c1a4d992 cjpjkdw c158s1wq c1l20dy0 cbx8lb7"><div class="w-element c1qqnmdg cbm90qe cd212o4"><div class="w-html-embed c1qi35su"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-x"> 2535 <path d="M18 6 6 18"/> 2536 <path d="m6 6 12 12"/> 2537</svg> 2538</div></div></div><div class="w-element c1yz425a c1wn46uq"><div class="w-html-embed cte87bx ccp5xa0 c1hi51uv clpnwus c1ofywq3 c1wn46uq c1ipk2cq cr1nagn czmyjfs cdvw240 c1jgqba0 c12znpff cp057k5 cf5rzud c1sgay7g c1f46hrm c17zq9vz c1hmm4uv c1o9p5f8 c1uvxwfw c103b7cy c7efj32 c2lz52y c1ud9rcf c52bi7f c1vykm6c crfadrz cwwaw2e ct9og14 c1nywzun cvvgrx5 c1vh7kb9 chab8fi ctetyd6"><blockquote id=""> 2539<p><em id="">There stood a tower of marvellous shape. It was fashioned by the builders of old, who smoothed the Ring of Isengard, and yet it seemed a thing not made by the craft of Men, but riven from the bones of the earth in the ancient torment of the hills. A peak and isle of rock it was, black and gleaming hard: four mighty piers of many-sided stone were welded into one, but near the summit they opened into gaping horns, their pinnacles sharp as the points of spears, keen-edged as knives. Bet
2539ween them was a narrow space, and there upon a floor of polished stone, written with strange signs.<br /> 2540– The Two Towers (Book 3), Chapter 8</em></p> 2541</blockquote> 2542<p id="">Lying in a vale at the southern end of <a id="" href="/region/misty-mountains">the Misty Mountains</a>, the fortress of Isengard (or Angrenost) consists of a circular wall which surrounds the great tower of Orthanc. Standing at over 500 feet tall, it was constructed by the Dúnedain in the late Second Age and has housed the Orthanc-stone, one of the nine palantÃri, ever since.</p> 2543<p id="">After the tower of Orthanc was locked and abandoned by the Gondorians following the Great Plague of T.A. 1636, the area surrounding Isengard became home to Dunlendings hostile to the nearby Rohirrim. The Rohirrim were only able to break their strength after the Long Winter in T.A. 2759, over a millenium later.</p> 2544<p id="">In the same year, the wizard Saruman returned from his travels in the east of Middle-earth and took up residence in the now deserted fortress. The vale of Isengard became hereafter known as “Nan CurunÃr”, Wizard’s Vale. However, the White Wizard has long since been scheming and preparing to challenge not just the realms of Men but Sauron himself.</p> 2545</div><div class="w-html-embed ccp5xa0 cte87bx c1hi51uv c14blu46 c1ipk2cq cr1nagn czmyjfs cdvw240 c1jgqba0 c12znpff cu2nhao clp0qxl c190fmjv c18ztjey cy4zleh cbsl6o5 cvymrgc c1glpyuo c1d47dw1 c1ed821q cv2tbno c14egri0 c1g3igy0 c6dlxqq c6o5r7o c1fpjkea c1m6ky37 c10yuvuk c8b5d0m cfxevh6 c3de3ip czmlgds cp057k5 cf5rzud c1sgay7g c1f46hrm c17zq9vz c1hmm4uv c1o9p5f8 c1uvxwfw c103b7cy c7efj32 c2lz52y c1ud9rcf c52bi7f c1vykm6c crfadrz cwwaw2e ct9og14 c1nywzun cvvgrx5 c1vh7kb9 chab8fi ctetyd6"></div><div class="w-element cjpjkdw c1rkis4 c1l20dy0 cl2xlqw c1qzzrci c1bhlowd"></div></div></div></div><div class="w-element c17db8uu cp86zhm"><div class="w-element c1wn46uq cozcy5p c1qe7a3l cbm90qe cjulrou c1a4d992 c1e9k3hw ce1b68t c1rx8qlb c1ljsp2s c1ll7j66"><div class="w-element c44etkh c1uz7vom c1qe7a3l c1nujqit crll831"><div data-appear-animation="true" class="w-element c1uz7vom cbm90qe c4oxwb7 c1etu3xr c1d1wqa2 c9uhmm4"><p class="w-element ccp5xa0 c1qi35su c1ofywq3 c1gtpjdp c1hi51uv c1yjr2ok c11ilikl"> <span data-display="lead-count" class="w-element">5 leads</span> ⢠<span data-display="contributor-count" class="w-element">20 contributors</span> </p><hr class="w-element c18xmvv9 c1071umj cwglj61 c1ccl4po crdmx6o c1wn46uq c1igm2uw c1r9z6ml c7ji9jo cx16f77 c13irkzz"/><div class="w-html-embed ccp5xa0 c1qi35su c1uf2hoa c1ofywq3 c114ocss c1yjr2ok"><style> 2546 .link-right { 2547 color: inherit !important; 2548 text-decoration: none; 2549 display: inline-flex; 2550 align-items: center; 2551 } 2552 2553 .mask-right { 2554 overflow: hidden; 2555 display: flex; 2556 } 2557 2558 .link-container-right { 2559 display: grid; 2560 } 2561 2562 .title-right { 2563 grid-area: 1 / 1; 2564 transition: transform 0.4s ease; 2565 } 2566 2567 .link-title1-right { 2568 transform-origin: right center; 2569 transform: translateY(0) rotate(0); 2570 } 2571 2572 .link-title2-right { 2573 transform-origin: left center; 2574 transform: translateY(100%) rotate(20deg); 2575 } 2576 2577 .link-icon-right { 2578 position: relative; 2579 width: 16px; 2580 height: 16px; 2581 display: flex; 2582 justify-content: center; 2583 align-items: center; 2584 margin-left: 8px; 2585 overflow: hidden; 2586 } 2587 2588 .icon-right { 2589 position: absolute; 2590 transition: transform 0.4s ease; 2591 width: 100%; 2592 height: 100%; 2593 } 2594 2595 .icon-right:nth-child(2) { 2596 transform: translateX(-24px); 2597 } 2598 2599 /* Makes the arrow 1px thicker */ 2600 .icon-right path { 2601 stroke: currentColor; 2602 stroke-width: 1px; 2603 stroke-linejoin: round; 2604 } 2605 2606 /* Hover states */ 2607 .link-right:hover .link-title1-right { 2608 transform: translateY(-100%) rotate(20deg); 2609 } 2610 2611 .link-right:hover .link-title2-right { 2612 transform: translateY(0) rotate(0); 2613 } 2614 2615 .link-right:hover .icon-right:first-child { 2616 transform: translateX(24px); 2617 } 2618 2619 .link-right:hover .icon-right:nth-child(2) { 2620 transform: translateX(0px); 2621 } 2622</style> 2623 2624<a href="/metrics" class="link-right"> 2625 <span class="mask-right"> 2626 <div class="link-container-right">
2627 <span class="link-title1-right title-right">More stats</span> 2628 <span class="link-title2-right title-right">More stats</span> 2629 </div> 2630 </span> 2631 <div class="link-icon-right"> 2632 <svg class="icon-right" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> 2633 <path d="M21.883 12l-7.527 6.235.644.765 9-7.521-9-7.479-.645.764 7.529 6.236h-21.884v1h21.883z" fill="currentColor"></path> 2634 </svg> 2635 <svg class="icon-right" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> 2636 <path d="M21.883 12l-7.527 6.235.644.765 9-7.521-9-7.479-.645.764 7.529 6.236h-21.884v1h21.883z" fill="currentColor"></path> 2637 </svg> 2638 </div> 2639</a></div></div><div class="w-element c1uz7vom c1qe7a3l c1l6ozms c18dk4jj"><div data-appear-animation="true" class="w-element"><h2 class="w-element c19saac5 cuahv1a c1eyb87b c2vthj5 cuo6ugs c4iflru">Leads</h2></div><div data-container="lead" data-appear-animation="true" class="w-element c110qrmf cxfcnri c1rh04e5 cvvxsrh c1gcwjeu cn8byvd cxbmlze c19touis cxf6k54 c1oo9lae c1wzp2b7 c12vr2cn"><a colab-card="true" class="w-element c1j5ufvw c49iiqn ca9xqml c16q989 cbm90qe c4oxwb7 c2mlcd0 c1wn46uq c32xzbx cz92tk c1gxmacj c1j9ejvd cdlctc7 c12zejl6 c1kbf57g c12dc88q c1maocke c4lc5pz c9uv4ua c1213g6r c184tqpm" href="/contributors/Lindalher" data-discover="true"><div data-contributor-rank-color="#2ecc71" class="w-element c1wn46uq c1uz7vom cbm90qe c4oxwb7 c18460ip c1rvybxa c1pt9pvl c17o8mfs c1cmt6is c1yjr2ok"><p class="w-element ccp5xa0 cte87bx c1hi51uv c1fkewyi cxs4t3 c183wvf2 ci1pq5k c1qe7a3l c14blu46">Lindalher</p></div></a><a colab-card="true" class="w-element c1j5ufvw c49iiqn ca9xqml c16q989 cbm90qe c4oxwb7 c2mlcd0 c1wn46uq c32xzbx cz92tk c1gxmacj c1j9ejvd cdlctc7 c12zejl6 c1kbf57g c12dc88q c1maocke c4lc5pz c9uv4ua c1213g6r c184tqpm" href="/contributors/Daktubalan" data-discover="true"><div data-contributor-rank-color="#2ecc71" class="w-element c1wn46uq c1uz7vom cbm90qe c4oxwb7 c18460ip c1rvybxa c1pt9pvl c17o8mfs c1cmt6is c1yjr2ok"><p class="w-element ccp5xa0 cte87bx c1hi51uv c1fkewyi cxs4t3 c183wvf2 ci1pq5k c1qe7a3l c14blu46">Daktubalan</p></div></a></div></div><div class="w-element c1uz7vom c1qe7a3l c1l6ozms c18dk4jj"><div data-appear-animation="true" class="w-element"><h2 class="w-element c19saac5 cuahv1a c1eyb87b c2vthj5 cuo6ugs c4iflru">Contributors</h2></div><div data-container="contributor" data-appear-animation="true" class="w-element c110qrmf cxfcnri c1rh04e5 cvvxsrh c1gcwjeu cn8byvd cxbmlze c19touis cxf6k54 c1oo9lae c1wzp2b7 c12vr2cn"><a colab-card="true" class="w-element c1j5ufvw c49iiqn ca9xqml c16q989 cbm90qe c4oxwb7 c2mlcd0 c1wn46uq c32xzbx cz92tk c1gxmacj c1j9ejvd cdlctc7 c12zejl6 c1kbf57g c12dc88q c1maocke c4lc5pz c9uv4ua c1213g6r c184tqpm" href="/contributors/Sunwing34" data-discover="true"><div data-contributor-rank-color="#e67e22" class="w-element c1wn46uq c1uz7vom cbm90qe c4oxwb7 c18460ip c1rvybxa c1pt9pvl c17o8mfs c1cmt6is c1yjr2ok"><p class="w-element ccp5xa0 cte87bx c1hi51uv c1fkewyi cxs4t3 c183wvf2 ci1pq5k c1qe7a3l c14blu46">Sunwing34</p></div></a><a colab-card="true" class="w-element c1j5ufvw c49iiqn ca9xqml c16q989 cbm90qe c4oxwb7 c2mlcd0 c1wn46uq c32xzbx cz92tk c1gxmacj c1j9ejvd cdlctc7 c12zejl6 c1kbf57g c12dc88q c1maocke c4lc5pz c9uv4ua c1213g6r c184tqpm" href="/contributors/notXone" data-discover="true"><div data-contributor-rank-color="#607d8b" class="w-element c1wn46uq c1uz7vom cbm90qe c4oxwb7 c18460ip c1rvybxa c1pt9pvl c17o8mfs c1cmt6is c1yjr2ok"><p class="w-element ccp5xa0 cte87bx c1hi51uv c1fkewyi cxs4t3 c183wvf2 ci1pq5k c1qe7a3l c14blu46">notXone</p></div></a><a colab-card="true" class="w-element c1j5ufvw c49iiqn ca9xqml c16q989 cbm90qe c4oxwb7 c2mlcd0 c1wn46uq c32xzbx cz92tk c1gxmacj c1j9ejvd cdlctc7 c12zejl6 c1kbf57g c12dc88q c1maocke c4lc5pz c9uv4ua c1213g6r c184tqpm" href="/contributors/Ytsen" data-discover="true"><div data-contributor-rank-color="#2ecc71" class="w-element c1wn46uq c1uz7vom cbm90qe c4oxwb7 c18460ip c1rvybxa c1pt9pvl c17o8mfs c1cmt6is c1yjr2ok"><p class="w-element ccp5xa0 cte87bx c1hi51uv c1fkewyi cxs4t3 c183wvf2 ci1pq5k c1qe7a3l c14blu46">Ytsen</p></div></a><a colab-card="true" class="w-element c1j5ufvw c49iiqn ca9xqml c16q989 cbm90qe c4oxwb7 c2mlcd0 c1wn46uq c32xzbx cz92tk c1gxmacj c1j9ejvd cdlctc7 c12zejl6 c1kbf57g c12dc88q c1maocke c4lc5pz c9uv4ua c1213g6r c184tqpm" href="/contributors/borisvdm" data-discover="true"><div data-contributor-rank-color="#2ecc71" class="w-element c1wn46uq c1uz7vom cbm90qe c4oxwb7 c18460ip c1rvybxa c1pt9pvl c17o8mfs c1cmt6is c1yjr2ok"><p class="w-element ccp5xa0 cte87bx c1hi51uv c1fkewyi cxs4t3 c183wvf2 ci1pq5k c1qe7a3l c14blu46">borisvdm</p></div></a><a colab-card="true" class="w-element c1j5ufvw c49iiqn ca9xqml c16q989 cbm90qe c4oxwb7 c2mlcd0 c1wn46uq c32xzbx cz92tk c1gxmacj c1j9ejvd cdlctc7 c12zejl6 c1kbf57g c12dc88q c1maocke c4lc5pz c9uv4ua c1213g6r c184tqpm" href="/contributors/Rota_Fortuna" data-discover="true"><div data-contributor-rank-color="#f1c40f" class="w-element c1wn46uq c1uz7vom cbm90qe c4oxwb7 c18460ip c1rvybxa c1pt9pvl c17o8mfs c1cmt6is c1yjr2ok"><p class="w-element ccp5xa0 cte87bx c1hi51uv c1fkewyi cxs4t3 c183wvf2 ci1pq5k c1qe7a3l c14blu46">Rota_Fortuna</p></div></a><a colab-card="true" class="w-element c1j5ufvw c49iiqn ca9xqml c16q989 cbm90qe c4oxwb7 c2mlcd0 c1wn46uq c32xzbx cz92tk c1gxmacj c1j9ejvd cdlctc7 c12zejl6 c1kbf57g c12dc88q c1maocke c4lc5pz c9uv4ua c1213g6r c184tqpm" href="/contributors/Nikitiitta" data-discover="true"><div data-contributor-rank-color="#2ecc71" class="w-element c1wn46uq c1uz7vom cbm90qe c4oxwb7 c18460ip c1rvybxa c1pt9pvl c17o8mfs c1cmt6is c1yjr2ok"><p class="w-element ccp5xa0 cte87bx c1hi51uv c1fkewyi cxs4t3 c183wvf2 ci1pq5k c1qe7a3l c14blu46">Nikitiitta</p></div></a><a colab-card="true" class="w-element c1j5ufvw c49iiqn ca9xqml c16q989 cbm90qe c4oxwb7 c2mlcd0 c1wn46uq c32xzbx cz92tk c1gxmacj c1j9ejvd cdlctc7 c12zejl6 c1kbf57g c12dc88q c1maocke c4lc5pz c9uv4ua c1213g6r c184tqpm" href="/contributors/Monsterfish" data-discover="true"><div data-contributor-rank-color="#607d8b" class="w-element c1wn46uq c1uz7vom cbm90qe c4oxwb7 c18460ip c1rvybxa c1pt9pvl c17o8mfs c1cmt6is c1yjr2ok"><p class="w-element ccp5xa0 cte87bx c1hi51uv c1fkewyi cxs4t3 c183wvf2 ci1pq5k c1qe7a3l c14blu46">Monsterfish</p></div></a><a colab-card="true" class="w-element c1j5ufvw c49iiqn ca9xqml c16q989 cbm90qe c4oxwb7 c2mlcd0 c1wn46uq c32xzbx cz92tk c1gxmacj c1j9ejvd cdlctc7 c12zejl6 c1kbf57g c12dc88q c1maocke c4lc5pz c9uv4ua c1213g6r c184tqpm" href="/contributors/Hearthseeker" data-discover="true"><div data-contributor-rank-color="#2ecc71" class="w-element c1wn46uq c1uz7vom cbm90qe c4oxwb7 c18460ip c1rvybxa c1pt9pvl c17o8mfs c1cmt6is c1yjr2ok"><p class="w-element ccp5xa0 cte87bx c1hi51uv c1fkewyi cxs4t3 c183wvf2 ci1pq5k c1qe7a3l c14blu46">Hearthseeker</p></div></a></div></div></div></div></div><div data-appear-animation="true" class="w-element c17db8uu c1dj61aa c75lct5"><div class="w-element c1wn46uq cozcy5p c1qe7a3l cbm90qe cjulrou c1a4d992 c1e9k3hw ce1b68t c1rx8qlb c1ljsp2s c1ll7j66"><div class="w-element c1uz7vom c1qe7a3l cif7a18 c1uu6edv"><h2 class="w-element c19saac5 cuahv1a c1eyb87b c2vthj5 cuo6ugs c4iflru">Explore nearby locations</h2><div Related-Slider="true" class="w-element c11zv03o cn655op cz6q0ow ck80xjz c19kt2lb cmhlmah c14df0s2 cyf9mb"><div Related-Container="True" class="w-element ck80xjz c1851rqr c17idg6v c1uz7vom c1tt79v9 cjulrou c1wn46uq"><a Card="true" Squircle="true" class="w-element c1uz7vom cyxnhgt c4oxwb7 cypxkib c159avoi chx63s8 c11zv03o ck80xjz cqiwi3x c9uv4ua czpkorg c1a8rj3x c394w33 c6gt7if c1cg9doo c14df0s2" href="/location/misty-mountains" data-discover="true"><img card-bg="true" class="w-image cg6mpnv c1k3h0ob c11zv03o c1tvgytw c1rrox41 cwetoq6 c1yv19yt c158s1wq c3k1paa" alt="" src="https://wp.ardacraft.me/wp-content/uploads/2026/04/Misty-Mountains-minecraft-middle-earth-lotr.webp" decoding="async" loading="lazy"/><div Squircle="true" class="w-element cycetgw c1j8ea7w cka1sn c1w88hto c1uz7vom cbm90qe c4oxwb7 c1qe7a3l c11hzt47 c2dh8rk c1wn46uq c1ka351p c50cm6h cdtfq3j"><h3 class="w-element c19saac5 cuahv1a c1eyb87b c14lgq70 c192mvih c4iflru cjfzmzy">Misty Mountains</h3></div></a><a Card="true" Squircle="true" class="w-element c1uz7vom cyxnhgt c4oxwb7 cypxkib c159avoi chx63s8 c11zv03o ck80xjz cqiwi3x c9uv4ua czpkorg c1a8rj3x c394w33 c6gt7if c1cg9doo c14df0s2" href="/location/fangorn" data-discover="true"><img card-bg="true" class="w-image cg6mpnv c1k3h0ob c11zv03o c1tvgytw c1rrox41 cwetoq6 c1yv19yt c158s1wq c3k1paa" alt="" src="https://wp.ardacraft.me/wp-content/uploads/2026/05/66f429f73e03989f15c36f04_Fangorn-from-above-minecraft-middle-earth-lotr.webp" decoding="async" loading="lazy"/><div Squircle="true" class="w-element cycetgw c1j8ea7w cka1sn c1w88hto c1uz7vom cbm90qe c4oxwb7 c1qe7a3l c11hzt47 c2dh8rk c1wn46uq c1ka351p c50cm6h cdtfq3j"><h3 class="w-element c19saac5 cuahv1a c1eyb87b c14lgq70 c192mvih c4iflru cjfzmzy">Fangorn</h3></div></a><a Card="true" Squircle="true" class="w-element c1uz7vom cyxnhgt c4oxwb7 cypxkib c159avoi chx63s8 c11zv03o ck80xjz cqiwi3x c9uv4ua czpkorg c1a8rj3x c394w33 c6gt7if c1cg9doo c14df0s2" href="/location/fords-of-isen" data-discover="true"><img card-bg="true" class="w-image cg6mpnv c1k3h0ob c11zv03o c1tvgytw c1rrox41 cwetoq6 c1yv19yt c158s1wq c3k1paa" alt="" src="https://wp.ardacraft.me/wp-content/uploads/2026/05/66fc49bde093c09115c15690_Fords-of-Isen-minecraft-middle-earth-lotr.webp" decoding="async" loading="lazy"/><div Squircle="true" class="w-element cycetgw c1j8ea7w cka1sn c1w88hto c1uz7vom cbm90qe c4oxwb7 c1qe7a3l c11hzt47 c2dh8rk c1wn46uq c1ka351p c50cm6h cdtfq3j"><h3 class="w-element c19saac5 cuahv1a c1eyb87b c14lgq70 c192mvih c4iflru cjfzmzy">Fords of Isen</h3></div></a><a Card="true" Squircle="true" class="w-element c1uz7vom cyxnhgt c4oxwb7 cypxkib c159avoi chx63s8 c11zv03o ck80xjz cqiwi3x c9uv4ua czpkorg c1a8rj3x c394w33 c6gt7if c1cg9doo c14df0s2" href="/location/dolbaran" data-discover="true"><img card-bg="true" class="w-image cg6mpnv c1k3h0ob c11zv03o c1tvgytw c1rrox41 cwetoq6 c1yv19yt c158s1wq c3k1paa" alt="" src="https://wp.ardacraft.me/wp-content/uploads/2026/05/6717b28cfb26bb0c7a21087d_Dol-Baran-minecraft-middle-earth-lotr.webp" decoding="async" loading="lazy"/><div Squircle="true" class="w-element cycetgw c1j8ea7w cka1sn c1w88hto c1uz7vom cbm90qe c4oxwb7 c1qe7a3l c11hzt47 c2dh8rk c1wn46uq c1ka351p c50cm6h cdtfq3j"><h3 class="w-element c19saac5 cuahv1a c1eyb87b c14lgq70 c192mvih c4iflru cjfzmzy">Dol Baran</h3></div></a></div><div class="w-element cg6mpnv c158s1wq c1k3h0ob chloi8 ch8l2jq cp1w38t cl2xlqw"></div><div class="w-element cg6mpnv c158s1wq c1k3h0ob chloi8 c35v1fy cp1w38t c1l20dy0"></div></div><div class="w-element c1uz7vom cbm90qe c4oxwb7 c1etu3xr c1d1wqa2 c9uhmm4"><div class="w-html-embed ccp5xa0 c1qi35su c1uf2hoa c1ofywq3 c114ocss c1yjr2ok"><style> 2640 .link-left { 2641 color: inherit !important; 2642 text-decoration: none; 2643 display: inline-flex; 2644 align-items: center; 2645 } 2646 2647 .mask-left { 2648 overflow: hidden; 2649 display: flex; 2650 } 2651 2652 .link-container-left { 2653 display: grid; 2654 } 2655 2656 .title-left { 2657 grid-area: 1 / 1; 2658 transition: transform 0.4s ease; 2659 } 2660 2661 .link-title1-left { 2662 transform-origin: left center; 2663 transform: translateY(0) rotate(0); 2664 } 2665 2666 .link-title2-left { 2667 transform-origin: right center; 2668 transform: translateY(100%) rotate(-20deg); 2669 } 2670 2671 .link-icon-left { 2672 position: relative; 2673 width: 16px; 2674 height: 16px; 2675 display: flex; 2676 justify-content: center;
2677 align-items: center; 2678 margin-right: 8px; 2679 overflow: hidden; 2680 } 2681 2682 .icon-left { 2683 position: absolute; 2684 transition: transform 0.4s ease; 2685 width: 100%; 2686 height: 100%; 2687 transform: scaleX(-1); 2688 } 2689 2690 .icon-left:nth-child(2) { 2691 transform: translateX(24px) scaleX(-1); 2692 } 2693 2694 /* Makes the arrow 1px thicker */ 2695 .icon-left path { 2696 stroke: currentColor; 2697 stroke-width: 1px; 2698 stroke-linejoin: round; 2699 } 2700 2701 /* Hover states */ 2702 .link-left:hover .link-title1-left { 2703 transform: translateY(-100%) rotate(-20deg); 2704 } 2705 2706 .link-left:hover .link-title2-left { 2707 transform: translateY(0) rotate(0); 2708 } 2709 2710 .link-left:hover .icon-left:first-child { 2711 transform: translateX(-24px) scaleX(-1); 2712 } 2713 2714 .link-left:hover .icon-left:nth-child(2) { 2715 transform: translateX(0px) scaleX(-1); 2716 } 2717</style> 2718 2719<a href="/location" class="link-left"> 2720 <div class="link-icon-left"> 2721 <svg class="icon-left" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> 2722 <path d="M21.883 12l-7.527 6.235.644.765 9-7.521-9-7.479-.645.764 7.529 6.236h-21.884v1h21.883z" fill="currentColor"></path> 2723 </svg> 2724 <svg class="icon-left" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> 2725 <path d="M21.883 12l-7.527 6.235.644.765 9-7.521-9-7.479-.645.764 7.529 6.236h-21.884v1h21.883z" fill="currentColor"></path> 2726 </svg> 2727 </div> 2728 <span class="mask-left"> 2729 <div class="link-container-left"> 2730 <span class="link-title1-left title-left">All Regions & Locations</span> 2731 <span class="link-title2-left title-left">All Regions & Locations</span> 2732 </div> 2733 </span> 2734</a></div><hr class="w-element c18xmvv9 c1071umj cwglj61 c1ccl4po crdmx6o c1wn46uq c1igm2uw c1r9z6ml c7ji9jo cx16f77 c13irkzz"/><div class="w-element c1uz7vom c17waf3r c15350i8 c1dhrtkr c1k3h0ob c158s1wq cbm90qe c1ml01pn c1hyuwiy"><div related-prev="true" Related-prev="true" class="w-element cnx8q2o c1tkm9sb c3p1tny c1frqqme c1uz7vom cbm90qe c4oxwb7 c1t129vl ct3f834 c12zejl6 c32xzbx cz92tk c1gxmacj c1j9ejvd cdlctc7 c3eit4u c1oupalw c1yntmk3"><div class="w-html-embed c1qi35su"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24 2735 " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-left"> 2736 <path d="m15 18-6-6 6-6"/> 2737</svg> 2738</div></div><div Related-next="true" class="w-element cnx8q2o c1tkm9sb c3p1tny c1frqqme c1uz7vom cbm90qe c4oxwb7 c1t129vl ct3f834 c12zejl6 c32xzbx cz92tk c1gxmacj c1j9ejvd cdlctc7 c3eit4u c1oupalw c1yntmk3"><div class="w-html-embed c1qi35su"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right"> 2739 <path d="m9 18 6-6-6-6"/> 2740</svg> 2741</div></div></div></div></div></div></div><div style="display:contents"><div style="display:contents"><footer class="w-element cim8ys1 cn9hwjs c18460ip"><div data-homepage="footer-container" class="w-element c1wn46uq cozcy5p c1qe7a3l cbm90qe cjulrou c1a4d992 c1e9k3hw ce1b68t c1rx8qlb ciftonq c70froh"><div data-appear-animation="true" class="w-element cxy893h c9nlz19 c1p20qhz c1v4k1bc c1ueillu c1uz7vom cbm90qe c4oxwb7 c1qe7a3l cz700mh cim8ys1 c12t0yr7 cgy7ixj cibdr1z c2baha0 c1365syd cy2zpkj cif7a18 c1uu6edv ccpqtr9 c5dzid1 c8vnqb1 ci70w1a c1kp7oxf c1gfn33m c1093n1r c41uqep c14aukpa cca4bpb"><p class="w-element cuahv1a cte87bx c1drbpws c1ay1jd2 c192mvih cxs4t3 c183wvf2 ci1pq5k c1qe7a3l cjfzmzy ckpe0ue c1scp8rj c1lez5qp c1uyrt4t">Begin your journey <br/>through Middle-earth</p><div class="w-element c1uz7vom c12vpo0c c7ogkau cl41tk7 c1totwqz c1vtqh2m c1f6bmqy c1q0erog cm7p76a c10bxvqh"><a primary-btn="true" class="w-element c1n9z9db c1a4d3g5 c1d5q97y cbp5xrw c1tabcfs c1uz7vom cbm90qe c4oxwb7 c1maocke c18460ip c1kbf57g c12dc88q c32xzbx c1i8ednk c1fx2c52 ciexy49 cdlctc7 ccpqtr9 c9uv4ua c1h54omw ciphf6l cqolvuh c14df0s2" href="/join" data-discover="true"><span class="w-element ccp5xa0 c1e5xz0k cg2r0go c1iq6tjl c1yzlqql cvrj00w csd63x6 c4lc5pz c1fkewyi cxs4t3 coboan1 c9uv4ua c1yjr2ok cwh8dci">Join our Server</span><div class="w-html-embed c75lct5"><span aria-hidden="true" class="ws-particle-pen"> 2742 <div class="ws-particle"></div> 2743 <div class="ws-particle"></div> 2744 <div class="ws-particle"></div> 2745 <div class="ws-particle"></div> 2746 <div class="ws-particle"></div> 2747 <div class="ws-particle"></div> 2748 <div class="ws-particle"></div> 2749 <div class="ws-particle"></div> 2750 <div class="ws-particle"></div> 2751 <div class="ws-particle"></div> 2752</span></div></a><a secondary-btn="true" target="_blank" href="https://discord.com/invite/qcYBkCmAKZ" class="w-element c1n9z9db c1a4d3g5 c1d5q97y cbp5xrw cwzqs9f cbm90qe c4oxwb7 c1ka351p ceny3lt c1kbf57g c12dc88q c1maocke c18460ip c32xzbx c1i8ednk c1fx2c52 ciexy49 cdlctc7 c12zejl6 ccpqtr9 c9uv4ua c6agakc c1oupalw c1q135ka cqolvuh ccro3s0 c16b803i c1swa551 cw4rxzd c14df0s2"><span class="w-element ccp5xa0 c1e5xz0k cg2r0go c1iq6tjl c1yzlqql cvrj00w csd63x6 c4lc5pz c1fkewyi cxs4t3 cte87bx c1yjr2ok cwh8dci">Join our Discord</span></a></div></div></div><hr class="w-element c18xmvv9 c1071umj cwglj61 c1ccl4po crdmx6o c1wn46uq crpy41h cp6ye3q c1igm2uw c1r9z6ml c7ji9jo cx16f77 c13irkzz"/><div data-homepage="footer-container" class="w-element c1wn46uq cozcy5p c1qe7a3l cbm90qe cjulrou c1a4d992 c1e9k3hw ce1b68t c1rx8qlb c1ljsp2s c1ll7j66"><div class="w-element c1uz7vom c1etu3xr cfn02q6 c17waf3r c1in47ll crpy41h c1cb1t0o c1my9zsh cv07e20"><div class="w-element c1vpmbj8 c1uz7vom c1qe7a3l cfn02q6 c17waf3r c1851rqr c14df0s2 c1my9zsh cv07e20"><div class="w-element c1uz7vom c1qe7a3l c12vpo0c c7ogkau"><img class="w-image cs72fi1 ccpqtr9" alt="" width="938" height="212" sizes="100vw" srcSet="/_image/w_16,q_80/assets/AC-Logo-Text_7UCZ9hmjoLBDBjErO2cDL.svg 16w, /_image/w_32,q_80/assets/AC-Logo-Text_7UCZ9hmjoLBDBjErO2cDL.svg 32w, /_image/w_48,q_80/assets/AC-Logo-Text_7UCZ9hmjoLBDBjErO2cDL.svg 48w, /_image/w_64,q_80/assets/AC-Logo-Text_7UCZ9hmjoLBDBjErO2cDL.svg
275264w, /_image/w_96,q_80/assets/AC-Logo-Text_7UCZ9hmjoLBDBjErO2cDL.svg 96w, /_image/w_128,q_80/assets/AC-Logo-Text_7UCZ9hmjoLBDBjErO2cDL.svg 128w, /_image/w_256,q_80/assets/AC-Logo-Text_7UCZ9hmjoLBDBjErO2cDL.svg 256w, /_image/w_384,q_80/assets/AC-Logo-Text_7UCZ9hmjoLBDBjErO2cDL.svg 384w, /_image/w_640,q_80/assets/AC-Logo-Text_7UCZ9hmjoLBDBjErO2cDL.svg 640w, /_image/w_750,q_80/assets/AC-Logo-Text_7UCZ9hmjoLBDBjErO2cDL.svg 750w, /_image/w_828,q_80/assets/AC-Logo-Text_7UCZ9hmjoLBDBjErO2cDL.svg 828w, /_image/w_1080,q_80/assets/AC-Logo-Text_7UCZ9hmjoLBDBjErO2cDL.svg 1080w, /_image/w_1200,q_80/assets/AC-Logo-Text_7UCZ9hmjoLBDBjErO2cDL.svg 1200w, /_image/w_1920,q_80/assets/AC-Logo-Text_7UCZ9hmjoLBDBjErO2cDL.svg 1920w" src="/_image/w_1920,q_80/assets/AC-Logo-Text_7UCZ9hmjoLBDBjErO2cDL.svg" decoding="async" loading="lazy"/><p class="w-element ccp5xa0 c1qi35su c1ofywq3 c1gtpjdp c1hi51uv c11ilikl">Founded in May of 2014, ArdaCraft seeks to recreate J.R.R. Tolkien's Middle-earth in one of the largest and most detailed Minecraft maps ever created.</p></div><div class="w-element c1uz7vom c12vpo0c c7ogkau cbm90qe cjulrou"><a href="https://www.instagram.com/ardacraft" Link="true" class="w-element cbm90qe c4oxwb7 c1qqnmdg"><div class="w-html-embed c1qi35su cbm90qe c4oxwb7"><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" fill="currentColor" style="width: 20px; height: 20px;"> 2753 <path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zm0-2.163c-3.259 0-3.667.014-4.947.072-4.358.2-6.78 2.618-6.98 6.98-.059 1.281-.073 1.689-.073 4.948 0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98 1.281.058 1.689.072 4.948.072 3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98-1.281-.059-1.69-.073-4.949-.073zm0 5.838c-3.403 0-6.162 2.759-6.162 6.162s2.759 6.163 6.162 6.163 6.162-2.759 6.162-6.163c0-3.403-2.759-6.162-6.162-6.162zm0 10.162c-2.209 0-4-1.79-4-4 0-2.209 1.791-4 4-4s4 1.791 4 4c0 2.21-1.791 4-4 4zm6.406-11.845c-.796 0-1.441.645-1.441 1.44s.645 1.44 1.441 1.44c.795 0 1.439-.645 1.439-1.44s-.644-1.44-1.439-1.44z"/> 2754</svg></div></a><a href="https://www.youtube.com/channel/UCoqngW24Nl6yS-u99vE4E1Q" Link="true" class="w-element cbm90qe c4oxwb7 c1qqnmdg"><div class="w-html-embed c1qi35su cbm90qe c4oxwb7"><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" fill="currentColor" style="width: 20px; height: 20px;"> 2755 <path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/> 2756</svg></div></a><a href="https://www.tiktok.com/@ardacraft_" Link="true" class="w-element cbm90qe c4oxwb7 c1qqnmdg"><div class="w-html-embed c1qi35su cbm90qe c4oxwb7"><svg role="img" viewBox="-2 -2 28 28" xmlns="http://www.w3.org/2000/svg" fill="currentColor" style="width: 20px; height: 20px;"> 2757 <path d="M12.525.02c1.31-.02 2.61-.01 3.91-.01.08 1.53.63 3.09 1.75 4.17 1.12 1.11 2.7 1.62 4.24 1.79v4.03c-1.44-.05-2.89-.35-4.2-.97-.57-.26-1.1-.59-1.59-1.01V14.5c.01 2.32-.6 4.67-2.12 6.44-1.43 1.72-3.66 2.84-5.9 3.01-2.03.18-4.13-.26-5.86-1.39-1.73-1.12-3-2.98-3.48-5-.55-2.22-.16-4.66 1.1-6.55 1.11-1.74 3-3 5.06-3.48.56-.12 1.14-.17 1.71-.17v4.21c-.81.01-1.66.23-2.33.7-.63.45-1.07 1.17-1.22 1.94-.21.89-.04 1.86.47 2.6.49.75 1.3 1.25 2.17 1.41.88.17 1.83.02 2.61-.43.76-.43 1.34-1.17 1.57-2.01.12-.46.16-.94.16-1.42V.02z"/> 2758</svg></div></a><a href="https://www.facebook.com/ArdaCraftMC/" Link="true" class="w-element cbm90qe c4oxwb7 c1qqnmdg"><div class="w-html-embed c1qi35su cbm90qe c4oxwb7"><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" fill="currentColor" style="width: 20p
2758x; height: 20px;"> 2759 <path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"/> 2760</svg></div></a><a href="https://x.com/ArdaCraft_" Link="true" class="w-element cbm90qe c4oxwb7 c1qqnmdg"><div class="w-html-embed c1qi35su cbm90qe c4oxwb7"><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" fill="currentColor" style="width: 20px; height: 20px;"> 2761 <path d="M18.901 1.153h3.68l-8.04 9.19L24 22.846h-7.406l-5.8-7.584-6.638 7.584H.474l8.6-9.83L0 1.154h7.594l5.243 6.932ZM17.61 20.644h2.039L6.486 3.24H4.298Z"/> 2762</svg></div></a><a href="https://discord.com/invite/qcYBkCmAKZ" Link="true" class="w-element cbm90qe c4oxwb7 c1qqnmdg"><div class="w-html-embed cbm90qe c4oxwb7 c1qi35su"><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" fill="currentColor" style="width: 20px; height: 20px;"> 2763 <path d="M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057 19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028c.462-.63.874-1.295 1.226-1.994a.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128c.126-.094.252-.192.372-.29a.074.074 0 0 1 .077-.01c3.927 1.793 8.18 1.793 12.061 0a.074.074 0 0 1 .077.01c.12.098.246.196.373.29a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.874.894.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.182 0-2.156-1.085-2.156-2.419 0-1.333.955-2.419 2.156-2.419 1.21 0 2.176 1.096 2.156 2.419 0 1.334-.956 2.419-2.156 2.419zm7.974 0c-1.182 0-2.156-1.085-2.156-2.419 0-1.333.955-2.419 2.156-2.419 1.21 0 2.176 1.096 2.156 2.419 0 1.334-.946 2.419-2.156 2.419z"/> 2764</svg></div></a></div></div><div class="w-element c1uz7vom c1etu3xr c1in47ll c17waf3r cf5cbyn c14df0s2 c1my9zsh cv07e20 c1cb1t0o"><div class="w-element c1uz7vom c1qe7a3l c12vpo0c c7ogkau"><p class="w-element cuahv1a c19saac5 c1iq6tjl c1nf6fk9 c4iflru cqm8yvk cykimf9 cr9s7iz">About</p><a link="true" class="w-element ccp5xa0 cte87bx c1ofywq3 c1gtpjdp c1hi51uv c9uv4ua c1qqnmdg c11ilikl" href="/join" data-discover="true">Join Our Server</a><a link="true" class="w-element ccp5xa0 cte87bx c1ofywq3 c1gtpjdp c1hi51uv c9uv4ua c1qqnmdg c11ilikl" href="/support-us" data-discover="true">Support Us</a><a link="true" class="w-element ccp5xa0 cte87bx c1ofywq3 c1gtpjdp c1hi51uv c9uv4ua c1qqnmdg c11ilikl" href="/about" data-discover="true">About Us</a><a link="true" class="w-element ccp5xa0 cte87bx c1ofywq3 c1gtpjdp c1hi51uv c9uv4ua c1qqnmdg c11ilikl" href="/contact-us" data-discover="true">Contact Us</a><a link="true" class="w-element ccp5xa0 cte87bx c1ofywq3 c1gtpjdp c1hi51uv c9uv4ua c1qqnmdg c11ilikl" href="/media-resources" data-discover="true">Media Resources</a></div><div class="w-element c1uz7vom c1qe7a3l c12vpo0c c7ogkau"><p class="w-element cuahv1a c19saac5 c1iq6tjl c1nf6fk9 c4iflru cqm8yvk cykimf9 cr9s7iz">Explore</p><a link="true" class="w-element ccp5xa0 cte87bx c1ofywq3 c1gtpjdp c1hi51uv c9uv4ua c1qqnmdg c11ilikl" href="/map" data-discover="true">Maps</a><a link="true" class="w-element ccp5xa0 cte87bx c1ofywq3 c1gtpjdp c1hi51uv c9uv4ua c1qqnmdg c11ilikl" href="/location" data-discover="true">Locations & Regions</a><a link="true" class="w-element ccp5xa0 cte87bx c1ofywq3 c1gtpjdp c1hi51uv c9uv4ua c1qqnmdg c11ilikl" href="/contributors" data-discover="true">Contributors</a></div><div class="w-element c1uz7vom c1qe7a3l c12vpo0c c7ogkau"><p class="w-element cuahv1a c19saac5 c1iq6tjl c1nf6fk9 c4iflru cqm8yvk cykimf9 cr9s7iz">Resources</p><a link="true" class="w-element ccp5xa0 cte87bx c1ofywq3 c1gtpjdp c1hi51uv c9uv4ua c1qqnmdg c11ilikl" href="/resources" data-discover="true">Resources & Articles</a><a link="true" class="w-element ccp5xa0 cte87bx c1ofywq3 c1gtpjdp c1hi51uv c9uv4ua c1qqnmdg c11ilikl" href="/resources/rules" data-discover="true">Rules</a></div></div></div><hr class="w-element c18xmvv9 c1071umj cwglj61 c1ccl4po crdmx6o c1wn46uq c1igm2uw c1r9z6ml c7ji9jo cx16f77 c13irkzz"/><div class="w-element c1uz7vom cbm90qe c17waf3r c1wn46uq cqm8yvk c1cb1t0o c1hddi9v c1uyrt4t"><p class="w-element ccp5xa0 c18xmvv9 c1uf2hoa c1ofywq3">© 2026 ArdaCraft. All Rights Reserved. ArdaCraft is not affiliated with or managed by Mojang AB or Microsoft.</p><div class="w-element c1uz7vom c12vpo0c c7ogkau"><a class="w-element ccp5xa0 c18xmvv9 c1uf2hoa c1ofywq3 c9uv4ua c32xzbx cz92tk c1gxmacj c1j9ejvd cdlctc7 c1qqnmdg c18zr17c" href="/sitemap" data-discover="true">Sitemap</a><a class="w-element ccp5xa0 c18xmvv9 c1uf2hoa c1ofywq3 c9uv4ua c32xzbx cz92tk c1gxmacj c1j9ejvd cdlctc7 c1qqnmdg c18zr17c" href="/privacy-policy" data-discover="true">Privacy</a><a class="w-element ccp5xa0 c18xmvv9 c1uf2hoa c1ofywq3 c9uv4ua c32xzbx cz92tk c1gxmacj c1j9ejvd cdlctc7 c1qqnmdg c18zr17c" href="/cookie-policy" data-discover="true">Cookies</a></div></div></div></footer></div></div>
2764<script type="7b7c10cf7256a24b4e48e8f5-text/javascript">window.__reactRouterContext = {"basename":"/","future":{"unstable_optimizeDeps":false,"v8_passThroughRequests":false,"unstable_trailingSlashAwareDataRequests":false,"unstable_previewServerPrerendering":false,"v8_middleware":false,"v8_splitRouteModules":false,"v8_viteEnvironmentApi":false},"routeDiscovery":{"mode":"lazy","manifestPath":"/__manifest"},"ssr":true,"isSpaMode":false};window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamController = controller;}}).pipeThrough(new TextEncoderStream());</script>
2764<script type="7b7c10cf7256a24b4e48e8f5-module" async="">; 2765import * as route0 from "/assets/root-CilvbZMI.js"; 2766import * as route1 from "/assets/_location_._slug._index-CEykLSzn.js"; 2767 window.__reactRouterManifest = { 2768 "entry": { 2769 "module": "/assets/entry.client-BiNCLkaT.js", 2770 "imports": [ 2771 "/assets/chunk-4N6VE7H7-Cg8mIVGN.js" 2772 ], 2773 "css": [] 2774 }, 2775 "routes": { 2776 "root": { 2777 "id": "root", 2778 "path": "", 2779 "hasAction": false, 2780 "hasLoader": true, 2781 "hasClientAction": false, 2782 "hasClientLoader": false, 2783 "hasClientMiddleware": false, 2784 "hasDefaultExport": true, 2785 "hasErrorBoundary": false, 2786 "module": "/assets/root-CilvbZMI.js", 2787 "imports": [ 2788 "/assets/chunk-4N6VE7H7-Cg8mIVGN.js", 2789 "/assets/_index-BzjJZqI1.js", 2790 "/assets/image-BrfMozFv.js", 2791 "/assets/fragment-RiJKGpPm.js" 2792 ], 2793 "css": [] 2794 }, 2795 "routes/[location].$slug._index": { 2796 "id": "routes/[location].$slug._index", 2797 "parentId": "root", 2798 "path": "location/:slug", 2799 "index": true, 2800 "hasAction": true, 2801 "hasLoader": true, 2802 "hasClientAction": false, 2803 "hasClientLoader": false, 2804 "hasClientMiddleware": false, 2805 "hasDefaultExport": true, 2806 "hasErrorBoundary": false, 2807 "module": "/assets/_location_._slug._index-CEykLSzn.js", 2808 "imports": [ 2809 "/assets/chunk-4N6VE7H7-Cg8mIVGN.js", 2810 "/assets/image-BrfMozFv.js", 2811 "/assets/fragment-RiJKGpPm.js", 2812 "/assets/index-C_26nMkx.js" 2813 ], 2814 "css": [] 2815 }, 2816 "routes/_index": { 2817 "id": "routes/_index", 2818 "parentId": "root", 2819 "index": true, 2820 "hasAction": true, 2821 "hasLoader": true, 2822 "hasClientAction": false, 2823 "hasClientLoader": false, 2824 "hasClientMiddleware": false, 2825 "hasDefaultExport": true, 2826 "hasErrorBoundary": false, 2827 "module": "/assets/_index-B0zdF4p6.js", 2828 "imports": [ 2829 "/assets/chunk-4N6VE7H7-Cg8mIVGN.js", 2830 "/assets/image-BrfMozFv.js", 2831 "/assets/_index-BzjJZqI1.js", 2832 "/assets/index-C_26nMkx.js", 2833 "/assets/fragment-RiJKGpPm.js" 2834 ], 2835 "css": [] 2836 }, 2837 "routes/[location]._index": { 2838 "id": "routes/[location]._index", 2839 "parentId": "root", 2840 "path": "location", 2841 "index": true, 2842 "hasAction": true, 2843 "hasLoader": true, 2844 "hasClientAction": false, 2845 "hasClientLoader": false, 2846 "hasClientMiddleware": false, 2847 "hasDefaultExport": true, 2848 "hasErrorBoundary": false, 2849 "module": "/assets/_location_._index-C2Ace77o.js", 2850 "imports": [ 2851 "/assets/chunk-4N6VE7H7-Cg8mIVGN.js", 2852 "/assets/image-BrfMozFv.js", 2853 "/assets/fragment-RiJKGpPm.js", 2854 "/assets/input-8QEMkAyL.js", 2855 "/assets/index-C_26nMkx.js" 2856 ], 2857 "css": [] 2858 } 2859 }, 2860 "url": "/assets/manifest-0f7c3206.js", 2861 "version": "0f7c3206" 2862}; 2863 window.__reactRouterRouteModules = {"root":route0,"routes/[location].$slug._index":route1}; 2864 2865import("/assets/entry.client-BiNCLkaT.js");</script>
2865<script type="7b7c10cf7256a24b4e48e8f5-text/javascript">((storageKey2, restoreKey) => { 2866 if (!window.history.state || !window.history.state.key) { 2867 let key = Math.random().toString(32).slice(2); 2868 window.history.replaceState({ key }, ""); 2869 } 2870 try { 2871 let positions = JSON.parse(sessionStorage.getItem(storageKey2) || "{}"); 2872 let storedY = positions[restoreKey || window.history.state.key]; 2873 if (typeof storedY === "number") { 2874 window.scrollTo(0, storedY); 2875 } 2876 } catch (error) { 2877 console.error(error); 2878 sessionStorage.removeItem(storageKey2); 2879 } 2880 })("react-router-scroll-positions", null)</script>
2880<!--$-->
2880<script type="7b7c10cf7256a24b4e48e8f5-text/javascript">window.__reactRouterContext.streamController.enqueue("[{\"_1\":2,\"_3\":-5,\"_4\":-5},\"loaderData\",{\"_5\":-5,\"_6\":7},\"actionData\",\"errors\",\"root\",\"routes/[location].$slug._index\",{\"_8\":9,\"_10\":11,\"_12\":13,\"_14\":15,\"_16\":17},\"host\",\"ardacraft.me\",\"url\",\"https://ardacraft.me/location/isengard\",\"system\",{\"_219\":220,\"_221\":222,\"_223\":224,\"_225\":226},\"resources\",{\"_34\":35,\"_36\":37},\"pageMeta\",{\"_18\":19,\"_20\":21,\"_22\":23,\"_24\":25,\"_26\":-7,\"_27\":28,\"_29\":-7,\"_30\":25,\"_31\":-7,\"_32\":33},\"title\",\"Isengard â Explore Middle-earth from Your Browser\",\"description\",\"Visit Isengard through your browser and explore its features and surroundings in Middle-earth.\",\"excludePageFromSearch\",false,\"language\",\"\",\"socialImageAssetName\",\"socialImageUrl\",\"https://wp.ardacraft.me/wp-content/uploads/2026/05/66e87bba7657a78760119806_Isengard-minecraft-middle-earth-lotr.webp\",\"status\",\"redirect\",\"content\",\"custom\",[],\"LocationQuery_1\",{\"_38\":39,\"_29\":40,\"_41\":42,\"_43\":124},\"ContributorsQuery_1\",{\"_38\":39,\"_29\":40,\"_41\":42,\"_43\":44},\"ok\",true,200,\"statusText\",\"OK\",\"data\",{\"_43\":45,\"_46\":47},{\"_64\":65},\"extensions\",{\"_48\":49,\"_50\":51},\"debug\",[],\"queryAnalyzer\",{\"_52\":53,\"_54\":55,\"_56\":57,\"_58\":25,\"_59\":60,\"_61\":60,\"_62\":63},\"keys\",\"5711330e11c3ae7ded9c7ffb41bae31aec2a5ad35835e4ca394918f3cce8cb9e graphql:Query operation:GetLocationContributors list:locationregion cG9zdDoxOTcw cG9zdDoyNTA= cG9zdDoxMzU= cG9zdDozNjQ= cG9zdDo0NDA= cG9zdDo0MDQ= cG9zdDo0MTM= cG9zdDozMzQ= cG9zdDoyOTc= cG9zdDoyNzg= cG9zdDoyMDA=\",\"keysLength\",275,\"keysCount\",15,\"skippedKeys\",\"skippedKeysSize\",0,\"skippedKeysCount\",\"skippedTypes\",[],\"locationsregions\",{\"_66\":67},\"edges\",[68],{\"_69\":70},\"node\",{\"_71\":72},\"locationsregionsmore\",{\"_73\":74,\"_75\":76},\"projectLeads\",{\"_77\":117},\"contributors\",{\"_77\":78},\"nodes\",[79,80,81,82,83,84,85,86],{\"_87\":88,\"_18\":113,\"_90\":114},{\"_87\":88,\"_18\":110,\"_90\":111},{\"_87\":88,\"_18\":108,\"_90\":109},{\"_87\":88,\"_18\":106,\"_90\":107},{\"_87\":88,\"_18\":103,\"_90\":104},{\"_87\":88,\"_18\":100,\"_90\":101},{\"_87\":88,\"_18\":96,\"_90\":97},{\"_87\":88,\"_18\":89,\"_90\":91},\"__typename\",\"Contributor\",\"Hearthseeker\",\"fieldGroupContributors\",{\"_92\":93,\"_94\":95},\"displayedName\",\"Hearth\",\"rankColor\",\"#2ecc71\",\"Monsterfish\",{\"_92\":98,\"_94\":99},\"Monsterfish_\",\"#607d8b\",\"Nikitiitta\",{\"_92\":102,\"_94\":95},\"Niki\",\"Rota_Fortuna\",{\"_92\":103,\"_94\":105},\"#f1c40f\",\"borisvdm\",{\"_92\":106,\"_94\":95},\"Ytsen\",{\"_92\":108,\"_94\":95},\"notXone\",{\"_92\":112,\"_94\":99},\"Xone\",\"Sunwing34\",{\"_92\":115,\"_94\":116},\"Sunwing\",\"#e67e22\",[118,119],{\"_87\":88,\"_18\":122,\"_90\":123},{\"_87\":88,\"_18\":120,\"_90\":121},\"Daktubalan\",{\"_92\":120,\"_94\":95},\"Lindalher\",{\"_92\":122,\"_94\":95},{\"_43\":125,\"_46\":126},{\"_133\":134},{\"_48\":127,\"_50\":128},[],{\"_52\":129,\"_54\":130,\"_56\":131,\"_58\":25,\"_59\":60,\"_61\":60,\"_62\":132},\"dd8d6d129dd999e34aff3e1ba666fb17be3373c35ea0264a32abf6ecd884df3b graphql:Query operation:GetSingleLocationRegion cG9zdDoxOTcw cG9zdDo3MTY2 dGVybToyNg== dGVybToyMg== cG9zdDoyMDI5 cG9zdDoxODgz cG9zdDoxOTAx cG9zdDoxODE2 cG9zdDo5ODU3 cG9zdDo3MTY4 cG9zdDo3MTY3 cG9zdDoxMDc1Nw== cG9zdDo2ODA5 cG9zdDo3MjUy cG9zdDo3MzQ5\",311,18,[],\"locationregion\",{\"_135\":136,\"_18\":137,\"_138\":139,\"_31\":-5,\"_140\":141,\"_142\":143,\"_71\":144},\"databaseId\",1970,\"Isengard\",\"slug\",\"isengard\",\"featuredImage\",{\"_69\":217},\"terms\",{\"_77\":216},{\"_145\":146,\"_147\":-5,\"_148\":149,\"_29\":150,\"_151\":152,\"_153\":154,\"_155\":39,\"_156\":-5,\"_157\":-5,\"_158\":159,\"_160\":161,\"_162\":163,\"_164\":165},\"shortDescription\",\"\u003cblockquote id=\\\"\\\"\u003e\\n\u003cp\u003e\u003cem id=\\\"\\\"\u003eThere stood a tower of marvellous shape. It was fashioned by the builders of old, who smoothed the Ring of Isengard, and
2880yet it seemed a thing not made by the craft of Men, but riven from the bones of the earth in the ancient torment of the hills. A peak and isle of rock it was, black and gleaming hard: four mighty piers of many-sided stone were welded into one, but near the summit they opened into gaping horns, their pinnacles sharp as the points of spears, keen-edged as knives. Between them was a narrow space, and there upon a floor of polished stone, written with strange signs.\u003cbr /\u003e\\n\u0026#8211; The Two Towers (Book 3), Chapter 8\u003c/em\u003e\u003c/p\u003e\\n\u003c/blockquote\u003e\\n\u003cp id=\\\"\\\"\u003eLying in a vale at the southern end of \u003ca id=\\\"\\\" href=\\\"/region/misty-mountains\\\"\u003ethe Misty Mountains\u003c/a\u003e, the fortress of Isengard (or Angrenost) consists of a circular wall which surrounds the great tower of Orthanc. Standing at over 500 feet tall, it was constructed by the Dúnedain in the late Second Age and has housed the Orthanc-stone, one of the nine palantÃri, ever since.\u003c/p\u003e\\n\u003cp id=\\\"\\\"\u003eAfter the tower of Orthanc was locked and abandoned by the Gondorians following the Great Plague of T.A. 1636, the area surrounding Isengard became home to Dunlendings hostile to the nearby Rohirrim. The Rohirrim were only able to break their strength after the Long Winter in T.A. 2759, over a millenium later.\u003c/p\u003e\\n\u003cp id=\\\"\\\"\u003eIn the same year, the wizard Saruman returned from his travels in the east of Middle-earth and took up residence in the now deserted fortress. The vale of Isengard became hereafter known as \u0026#8220;Nan CurunÃr\u0026#8221;, Wizard\u0026#8217;s Vale. However, the White Wizard has long since been scheming and preparing to challenge not just the realms of Men but Sauron himself.\u003c/p\u003e\\n\",\"longDescription\",\"completionDate\",\"2026-03-28T00:00:00+00:00\",\"Completed\",\"lore\",\"Canon\",\"area\",\"Location\",\"appearsOnTheWholeWebsite\",\"coordinates\",\"location\",\"types\",{\"_77\":208},\"region\",{\"_77\":206},\"related\",{\"_77\":181},\"gallery\",{\"_77\":166},[167,168,169],{\"_170\":178,\"_172\":25,\"_18\":179,\"_135\":180},{\"_170\":175,\"_172\":25,\"_18\":176,\"_135\":177},{\"_170\":171,\"_172\":25,\"_18\":173,\"_135\":174},\"sourceUrl\",\"https://wp.ardacraft.me/wp-content/uploads/2026/05/66e880757657a7876017077e_Isengard-Gardens-minecraft-middle-earth-lotr.webp\",\"altText\",\"66e880757657a7876017077e_Isengard Gardens-minecraft-middle-earth-lotr\",7167,\"https://wp.ardacraft.me/wp-content/uploads/2026/05/67d1cb175a826cbf98dc5e0d_Isengard-from-afar-minecraft-middle-earth-lotr.webp\",\"67d1cb175a826cbf98dc5e0d_Isengard from afar-minecraft-middle-earth-lotr\",7168,\"https://wp.ardacraft.me/wp-content/uploads/2026/04/Orthanc-Golden-Hour-minecraft-middle-earth-lotr.webp\",\"Orthanc Golden Hour-minecraft-middle-earth-lotr\",9857,[182,183,184,185],{\"_138\":201,\"_18\":202,\"_140\":203},{\"_138\":196,\"_18\":197,\"_140\":198},{\"_138\":191,\"_18\":192,\"_140\":193},{\"_138\":186,\"_18\":187,\"_140\":188},\"dolbaran\",\"Dol Baran\",{\"_69\":189},{\"_170\":190,\"_172\":25},\"https://wp.ardacraft.me/wp-content/uploads/2026/05/6717b28cfb26bb0c7a21087d_Dol-Baran-minecraft-middle-earth-lotr.webp\",\"fords-of-isen\",\"Fords of Isen\",{\"_69\":194},{\"_170\":195,\"_172\":25},\"https://wp.ardacraft.me/wp-content/uploads/2026/05/66fc49bde093c09115c15690_Fords-of-Isen-minecraft-middle-earth-lotr.webp\",\"fangorn\",\"Fangorn\",{\"_69\":199},{\"_170\":200,\"_172\":25},\"https://wp.ardacraft.me/wp-content/uploads/2026/05/66f429f73e03989f15c36f04_Fangorn-from-above-minecraft-middle-earth-lotr.webp\",\"misty-mountains\",\"Misty Mountains\",{\"_69\":204},{\"_170\":205,\"_172\":25},\"https://wp.ardacraft.me/wp-content/uploads/2026/04/Misty-Mountains-minecraft-middle-earth-lotr.webp\",[207],{\"_18\":202,\"_138\":201},[209,210],{\"_211\":214,\"_138\":215},{\"_211\":212,\"_138\":213},\"name\",\"Landmark\",\"landmark\",\"Fortification\",\"fortification\",[],{\"_170\":28,\"_172\":218},\"The black tower of Orthanc in Isengard, lightly surrounded by mist and set against a backdrop of the Misty Mountains.\",\"params\",{\"_138\":139},\"search\",{},\"origin\",\"https://ardacraft.me\",\"pathname\",\"/location/isengard\"]\n");</script>
2880<!--$-->
2880<script type="7b7c10cf7256a24b4e48e8f5-text/javascript">window.__reactRouterContext.streamController.close();</script>
2880<!--/$--><!--/$-->
vendor: 142 bytes, line 2880
2880<script src="/cdn-cgi/scripts/7d0fa10a/cloudflare-static/rocket-loader.min.js" data-cf-settings="7b7c10cf7256a24b4e48e8f5-|49" defer></script>
2880<script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a432f41469162af4',t:'MTc5MDc2ODQzMw=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>
2880<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"df41eb7f79af41ca9a411a327062afcb","r":1,"spa":2}' crossorigin="anonymous"></script>
2880 2881</body></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.