PageSourceSearch

https://ardacraft.me/location/isengard

html ardacraft.me collected 2026-09-30 11:40:33 UTC 201,043 bytes, 2,881 lines download raw bytes

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&#x27;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 &amp; Locations</span>
2430      <span class="link-title2-left title-left">All Regions &amp; 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&#x27;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 &amp; 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 &amp; 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&#8211; 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 &#8220;Nan Curunír&#8221;, Wizard&#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.</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&#8211; 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 &#8220;Nan Curunír&#8221;, Wizard&#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.</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 &amp; Locations</span>
2731      <span class="link-title2-left title-left">All Regions &amp; 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&#x27;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 &amp; 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 &amp; 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.