const style = document.createElement('style');
                    style.textContent = ":root{--modal-bg: rgba(0, 0, 0, .85);--content-bg: #1a1a1a;--border-color: #333;--accent-color: #00ffff;--text-color: #fff}.theme-bitcoin{--modal-bg: rgba(0, 0, 0, .85);--content-bg: #1a1a1a;--border-color: #f7931a;--accent-color: #f7931a;--text-color: #fff;--input-bg: #222;--button-gradient: linear-gradient(45deg, #f7931a, #ffa726)}.theme-ethereum{--modal-bg: rgba(0, 0, 0, .85);--content-bg: #1c2951;--border-color: #62688f;--accent-color: #00ffff;--text-color: #fff;--input-bg: #2a3c6e;--button-gradient: linear-gradient(45deg, #5c6bc0, #00ffff)}.theme-ordinals{--modal-bg: rgba(0, 0, 0, .85);--content-bg: #1a1a1a;--border-color: #333;--accent-color: #00ffff;--text-color: #fff;--input-bg: #222;--button-gradient: linear-gradient(45deg, #ff8e53, #00ffff)}.theme-monero{--modal-bg: rgba(0, 0, 0, .85);--content-bg: #252525;--border-color: #ff6b00;--accent-color: #ff6b00;--text-color: #fff;--input-bg: #333;--button-gradient: linear-gradient(45deg, #ff6b00, #ff9340)}.theme-cardano{--modal-bg: rgba(0, 0, 0, .85);--content-bg: #1e4147;--border-color: #0033ad;--accent-color: #17d1aa;--text-color: #fff;--input-bg: #2a565e;--button-gradient: linear-gradient(45deg, #0033ad, #17d1aa)}.modal{position:fixed;top:0;left:0;width:100%;height:100%;background:var(--modal-bg);display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;transition:opacity .3s ease,visibility .3s ease;pointer-events:none}.modal.active{opacity:1;visibility:visible;pointer-events:all}.modal-content{background:var(--content-bg);border-radius:12px;width:90%;max-width:600px;color:var(--text-color);position:relative;overflow:hidden;display:flex;flex-direction:column;border:1px solid var(--border-color);height:98vh;max-height:98vh;margin:0;padding:60px 0 0;box-shadow:0 8px 32px #0006;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;letter-spacing:.02em;line-height:1.5}.wallet-list{display:flex;gap:10px;justify-content:center;background:rgba(26,26,26,.95)}.wallet-btn{background:#222;border:1px solid #444;color:var(--text-color);padding:12px 20px;border-radius:8px;cursor:pointer;transition:all .2s}.success-animation{position:fixed;top:20px;left:20px;background:rgba(0,0,0,.9);color:var(--text-color);padding:20px;border-radius:8px;z-index:10000}.wallet-info{display:flex;flex-direction:column}.scrollable-content{flex:1;overflow-y:auto;padding:20px 10px 100px}.sticky-footer{position:fixed;bottom:0;left:0;right:0;width:100%;padding:20px;background:linear-gradient(0deg,rgba(26,26,26,1) 0%,rgba(26,26,26,.95) 70%,rgba(26,26,26,0) 100%);display:flex;justify-content:center;align-items:center}.inscribe-button{width:auto;min-width:200px;max-width:300px;background:var(--button-gradient);color:#000;font-weight:700;border:none;border-radius:8px;padding:16px 32px;cursor:pointer;transition:all .2s ease}.inscribe-button:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 4px 12px #0ff3}.inscribe-button:disabled{opacity:.6;cursor:not-allowed;background:#444}.inscription-text,.file-input,.tick-input{background:var(--input-bg);border:1px solid var(--border-color);color:var(--text-color)}@media (max-width: 480px){.modal-content{max-width:90%}}.inscription-type-selector{display:flex;gap:8px;padding:16px 0;width:100%;overflow-x:auto;margin-bottom:16px}.menu-item{background:#222;border:1px solid var(--border-color);color:var(--text-color);padding:8px 16px;border-radius:6px;cursor:pointer;transition:all .2s;white-space:nowrap;font-size:14px;min-width:80px;text-align:center}.menu-item.active{background:var(--accent-color);color:#000;border-color:var(--accent-color)}.menu-item:hover:not(.active){border-color:var(--accent-color);background:#333}.text-inscription-container{display:flex;flex-direction:column;gap:12px}.input-group{display:flex;flex-direction:column;gap:8px}.input-group label{color:var(--text-color);font-size:14px}select{background:#222;border:1px solid var(--border-color);color:var(--text-color);padding:8px;border-radius:6px;width:100%;cursor:pointer}.inscription-text{width:100%;min-height:120px;padding:12px;border-radius:6px;resize:vertical;font-family:monospace;font-size:14px;line-height:1.4}.brc20-controls{display:flex;flex-direction:column;gap:12px}.tick-input{padding:12px;border-radius:6px;font-size:16px;text-transform:uppercase;text-align:center;letter-spacing:1px}.info-text{font-size:12px;color:#888;text-align:center}.bitmap-inscription-container{display:flex;flex-direction:column;gap:16px}.block-height-info{display:flex;justify-content:space-between;align-items:center;background:#222;padding:12px;border-radius:6px;font-size:14px}.use-height-btn{background:var(--accent-color);color:#000;border:none;padding:8px 12px;border-radius:4px;cursor:pointer;font-size:12px;white-space:nowrap}.bitmap-warning{background:rgba(255,166,0,.1);border:1px solid orange;border-radius:6px;padding:12px}.bitmap-warning pre{margin:0;font-size:12px;white-space:pre-wrap;color:orange}.file-upload-zone{border:2px dashed var(--border-color);border-radius:6px;padding:24px;text-align:center;cursor:pointer;transition:all .2s}.file-upload-zone:hover{border-color:var(--accent-color);background:rgba(0,255,255,.05)}.file-upload-zone input[type=file]{display:none}.file-preview{background:#222;padding:12px;border-radius:6px;margin-top:12px}.remove-file-btn{background:#ff4444;color:#fff;border:none;padding:6px 12px;border-radius:4px;margin-top:8px;cursor:pointer}.address-box{background:#222;padding:16px;border-radius:6px;margin-bottom:16px}.wallet-type{font-size:14px;color:#888;margin-bottom:4px}.address{font-family:monospace;font-size:12px;word-break:break-all;color:var(--accent-color)}.error-message{color:#f44;padding:8px;text-align:center;font-size:14px}.validation-error{color:#f44;font-size:12px;margin-top:4px}.preview-text{background:#222;padding:12px;border-radius:6px;font-family:monospace;font-size:14px;color:var(--accent-color)}input[type=text],input[type=number],select,textarea,.inscription-text,.file-input,.tick-input{background:var(--input-bg);border:1px solid var(--border-color);color:var(--text-color);padding:12px;border-radius:6px;font-size:14px;width:100%;transition:all .2s ease}input[type=text]:focus,input[type=number]:focus,select:focus,textarea:focus,.inscription-text:focus,.tick-input:focus{outline:none;border-color:var(--accent-color);box-shadow:0 0 0 2px #00ffff1a}input::placeholder,textarea::placeholder{color:#ffffff80}.content-type-input{background:#222;color:var(--text-color);border:1px solid var(--border-color);font-size:16px;text-align:center}.tick-input{background:#222;font-size:18px;letter-spacing:2px;text-align:center}.theme-selector{position:absolute;top:15px;left:20px;display:flex;gap:8px;z-index:1001}.theme-btn{width:24px;height:24px;border-radius:50%;border:2px solid transparent;cursor:pointer;transition:all .2s ease}.theme-btn.active{transform:scale(1.2);border-color:#fff}.theme-btn.bitcoin{background:#f7931a}.theme-btn.ethereum{background:#00ffff}.theme-btn.ordinals{background:linear-gradient(45deg,#ff8e53,#00ffff)}.theme-btn.monero{background:#ff6b00}.theme-btn.cardano{background:#17d1aa}.logo-container{position:fixed;top:20px;left:20px;z-index:1100;width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.3);padding:4px;border-radius:8px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.logo-image{max-width:100%;max-height:100%;object-fit:contain}.tip-section-title h3{color:var(--accent-color);font-size:24px;font-weight:600;margin:0 0 20px;text-align:center;letter-spacing:.5px}.welcome-container{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;padding:20px;text-align:center}.welcome-container h2{color:var(--accent-color);font-size:28px;margin-bottom:24px}.welcome-content{max-width:400px;margin:0 auto}.welcome-content h2{color:var(--accent-color);font-size:28px;margin-bottom:24px;word-wrap:break-word;overflow-wrap:break-word;max-width:100%}.success-modal{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.85);display:flex;align-items:center;justify-content:center;z-index:2000}.success-message{background:var(--content-bg, #1a1a1a);border:1px solid var(--border-color, #333);border-radius:12px;padding:24px;max-width:500px;width:90%;color:var(--text-color, #fff)}.success-message h2{color:var(--accent-color, #00ffff);margin-bottom:20px;text-align:center}.tx-info{background:rgba(0,0,0,.2);padding:12px;border-radius:6px;margin:16px 0}.tx-info code{display:block;word-break:break-all;margin-top:4px;color:var(--accent-color, #00ffff)}.message-content{margin:20px 0}.transaction-note{background:rgba(255,166,0,.1);border:1px solid orange;padding:12px;border-radius:6px;margin-top:16px}.button-group{display:flex;gap:12px;margin-top:24px}.view-tx-btn,.close-success-btn{flex:1;padding:12px;border-radius:6px;border:none;cursor:pointer;font-weight:700;transition:transform .2s}.view-tx-btn{background:var(--accent-color, #00ffff);color:#000}.close-success-btn{background:#444;color:#fff}.view-tx-btn:hover,.close-success-btn:hover{transform:translateY(-2px)}html,body,#root{margin:0;width:100%;height:100%;background:#333;font-family:Font,serif}.gloww{text-shadow:0 0 55px #ff9900,0 0 32px rgba(255,119,0,.7),0 0 7px #000,0 0 16px #000,0 0 3px #bf00ff}";
                    document.head.appendChild(style);

                    const importMap = document.createElement('script');
                    importMap.type = 'importmap';
                    importMap.textContent = '{"imports":{"recursive-endpoints":"/content/89fbbeca30c87535f9db283da584006c90076f220dbf410a01985a1840e0ea0ci0","boxelGeometry":"/content/c0decdd785a4cfb37a4fce01f62386dec5be5e91a27bf09d121167e473b3cc9fi0","three":"/content/0d013bb60fc5bf5a6c77da7371b07dc162ebc7d7f3af0ff3bd00ae5f0c546445i0","react":"/content/609b117277f1e9c9f27f358fe02db34e13d08915bbcea18770dc36f5f3afcbb2i0","react-dom":"/content/609b117277f1e9c9f27f358fe02db34e13d08915bbcea18770dc36f5f3afcbb2i1","react-dom/client":"/content/4d9308ce08bed11c028acb3d1dd964ea0e9809f51daf141ca0760e745a8070aei0","react/jsx-runtime":"/content/609bad601cdafa4d4a2622bbd9f4ebfdd278b8c5ea1efeb0d468db33f871fffai1","babel-extends":"/content/a78ab4803a3bffd823f11d07beec6bb1acc4bf1291c14b171f407a2fdd354140i0","@use-gesture/react":"/content/609b66a0094944918cf2559d1abf0594a07480448e43f54cccef488332074623i0","@react-three/fiber":"/content/f1be1caad667af0ec844d1333ad4d38f2cd7cc2855404bba11ac436b53c799b6i0","@react-three/postprocessing":"/content/effe98d082131314b11e42f59ac9337ef04593bd51f17677e4caedfcb909e325i0","@react-three/drei":"/content/ded46f972b0f85ea041359cd94a7878a5e902126fb34ee11dbed1c9ae4dfb1ebi0","@react-three/cannon":"/content/ffffc61e639cb9b9c9f83bb5d2b3048e4f04d2aa8336bf3fabab86b8d3f36e88i1","@react-three/a11y":"/content/a11cfb88aceb35ee0e75a088d04ffb17cde8c2563dc2d6c0b7fa56eeb28cfbc9i0","@react-three/csg":"/content/a11cc72f15b96f6950ce7d7c4ffef8303db6e697293a96850a289aa078b6cb74i0","three-custom-shader-material":"/content/a11c58cd8c4c48e18cb1c1b0bc87a8be021f3e76c5afe09277e6353bc3e183dai0","leva":"/content/609bad601cdafa4d4a2622bbd9f4ebfdd278b8c5ea1efeb0d468db33f871fffai2","randomish":"/content/e61e018322265768010a2a88751510e9abb0591ed49e39cc3781f44716b912f0i0","material-composer":"/content/ffffa2b0d398de68409230e9f41f6dd7748a4433d4239f328a3f886874b46aa0i4","material-composer-r3f":"/content/ffffc61e639cb9b9c9f83bb5d2b3048e4f04d2aa8336bf3fabab86b8d3f36e88i0","shader-composer":"/content/ffffa2b0d398de68409230e9f41f6dd7748a4433d4239f328a3f886874b46aa0i1","shader-composer-r3f":"/content/ffffa2b0d398de68409230e9f41f6dd7748a4433d4239f328a3f886874b46aa0i2","shader-composer-toybox":"/content/ffffa2b0d398de68409230e9f41f6dd7748a4433d4239f328a3f886874b46aa0i3","vfx-composer":"/content/fffff8af34fb45dfac622a385bb6846a3c206595e6cb4daa04a7a90ed02bc833i0","vfx-composer-r3f":"/content/ffffa2b0d398de68409230e9f41f6dd7748a4433d4239f328a3f886874b46aa0i0","@react-spring/three":"/content/c0de1c2494d23616f14ad5e55e9c9ac4dc91e3908e3de0ad13f4b9009ae20bcai1","statery":"/content/c0de1c2494d23616f14ad5e55e9c9ac4dc91e3908e3de0ad13f4b9009ae20bcai2","maath":"/content/c0de1c2494d23616f14ad5e55e9c9ac4dc91e3908e3de0ad13f4b9009ae20bcai3","r3f-perf":"/content/c0de9e420433afaed5bdf59ad4f9bf84797304af067ac68c63ad509e0b927205i0","suspend-react":"/content/9200c4fe863cec5cd22fe31279e18a51dea437d8d0c2856a5fe239679fb96f58i0","miniplex":"/content/609b6f6f16d2efb9841357a3e161cc54f46dc12c20624696e1d613f86b36dbaai0","miniplex-react":"/content/c0de975da1f3e39cf1cc64eec4c9806d9ae3c0a1f585a95ee152ed655e5f291ei0","simplex-noise":"/content/424c377edc7b1ee294114b826a1d481421ec256a20aaf8d4fa25068a9187ac10i0","alea":"/content/b84e5be46252ecf755d161cc5751df86dc1aa41b03a4eb49e6a594799a93887bi0","/v135/react-dom@18.3.1/es2022/client.js":"/content/4d9308ce08bed11c028acb3d1dd964ea0e9809f51daf141ca0760e745a8070aei0","bitmapOCI":"/content/840bc0df4ffc5a7ccedbee35e97506c9577160e233982e627d0045d06366e362i0","bitmon":"/content/55551557695dd82a2bda5ec3497684ec7cbb2cc1752ff5101accff1648666c3ai0"}}';
                    document.head.appendChild(importMap);

                    import{jsx as s,jsxs as f}from"react/jsx-runtime";import pe,{useState as u,useEffect as A}from"react";import ue from"react-dom/client";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const n of document.querySelectorAll('link[rel="modulepreload"]'))c(n);new MutationObserver(n=>{for(const l of n)if(l.type==="childList")for(const p of l.addedNodes)p.tagName==="LINK"&&p.rel==="modulepreload"&&c(p)}).observe(document,{childList:!0,subtree:!0});function r(n){const l={};return n.integrity&&(l.integrity=n.integrity),n.referrerPolicy&&(l.referrerPolicy=n.referrerPolicy),n.crossOrigin==="use-credentials"?l.credentials="include":n.crossOrigin==="anonymous"?l.credentials="omit":l.credentials="same-origin",l}function c(n){if(n.ep)return;n.ep=!0;const l=r(n);fetch(n.href,l)}})();const G=async e=>new Promise((t,r)=>{const c=new FileReader;c.onload=()=>{const n=c.result.split(",")[1];t({content:n,contentType:e.type||"application/octet-stream",payloadType:"BASE_64"})},c.onerror=()=>r(new Error("Failed to read file")),c.readAsDataURL(e)}),U="759ee9ea2fcc09a4f76cc65a05227cae5093c1d3eae084150969647e796a4c27i0",ge=e=>typeof e=="string"&&/^[0-9a-f]{64}i\d+$/.test(e),H=()=>{try{const e=window.location.pathname;if(console.log("🔍 Checking content path:",e),!e.includes("/content/"))return console.warn("❌ Not a content path:",e),null;const t=e.split("/content/").pop().replace(/^\/+|\/+$/g,"");return ge(t)?(console.log("✅ Valid Self ID found:",t),t):(console.warn("❌ Invalid inscription ID format:",t),null)}catch(e){return console.error("❌ Failed to get self ID:",e),null}},he=async e=>{try{console.log("📡 Fetching inscription data for:",e);const r=await(await fetch(`/r/inscription/${e}`)).json();return r!=null&&r.delegate&&console.log("ℹ️ Inscription delegates to:",r.delegate),console.log("✅ Inscription data received:",r),r}catch(t){return console.error("❌ Failed to fetch inscription data:",t),null}},X=async e=>{try{const t=`/r/parents/${e}`;console.log(`🔍 API CMD: ${t}`);const r=await fetch(t);if(!r.ok)throw new Error(`HTTP error! status: ${r.status}`);const c=await r.json();console.log(`📥 Response from ${t}:`,c);const n=(c==null?void 0:c.ids)||[];return console.log(`Found ${n.length} parents for ${e}:`,n),n}catch(t){return console.error(`❌ Failed to fetch parents for ${e}:`,t),[]}},me=async e=>{try{console.log("🔄 Starting lineage check"),console.log(`Step 1: Fetching direct parents for ${e}`);const t=await X(e);if(console.log(`👨 Direct parents for ${e}:`,t),t.includes(U))return console.log("✅ Verification parent found in direct parents"),{isVerified:!0,parents:t,grandParents:[]};console.log("Step 2: Checking grandparents for each parent");const r=[];for(const n of t){console.log(`🔍 Checking parents of ${n}`);const l=await X(n);r.push(...l)}console.log("👴 All grandparents found:",r);const c=r.includes(U);return console.log(`Verification status: ${c?"✅ Verified":"❌ Not verified"}`),console.log("Complete lineage:",{selfId:e,parents:t,grandParents:r,isVerified:c}),{isVerified:c,parents:t,grandParents:r}}catch(t){return console.error("❌ Failed to fetch parent lineage:",t),{isVerified:!1,parents:[],grandParents:[]}}},ve=async()=>{console.log("🔄 Starting service address verification process...");const e=H();if(!e)return console.log("⚠️ No self ID found, using fallback address"),T.SERVICE_ADDRESS;try{const t=await he(e);if(console.log("📝 Inscription Data:",t),!(t!=null&&t.address))return console.log("⚠️ No address in inscription data, using fallback"),T.SERVICE_ADDRESS;const r=await me(e);console.log("👨‍👦 Lineage Data:",r);const c=r.isVerified?t.address:T.SERVICE_ADDRESS;return console.log("✅ Service Address Resolution:",{selfId:e,inscriptionAddress:t.address,isVerified:r.isVerified,finalAddress:c,usingFallback:!r.isVerified}),c}catch(t){return console.error("❌ Error in service address verification:",t),T.SERVICE_ADDRESS}},be={modalBg:"rgba(0, 0, 0, 0.85)",contentBg:"#1a1a1a",borderColor:"#333",accentColor:"#00ffff",textColor:"#fff",inputBg:"#222",buttonGradient:"linear-gradient(45deg, #ff8e53, #00ffff)"},T={SERVICE_ADDRESS:"bc1pqu9t32xuc3kdl2lxnfvgf5tkgmssee450lhepw60yfzv2sga7f0q6jkejr"},h={SERVICE_FEE:1500,SERVICE_ADDRESS:null,baseUrl:"https://ordinals.com",contentUrl:"/content",DEFAULT_LOGO:"431e38d121477b0245a61b8e453ae783c355fa99814e103e13387d74886354dai0",themeColors:{...be}},Ie=e=>{const t=document.documentElement;Object.entries(e).forEach(([r,c])=>{const n=`--${r.replace(/([A-Z])/g,"-$1").toLowerCase()}`;t.style.setProperty(n,c)})},Ee=async()=>(console.log("🔄 Initializing CONFIG..."),h.SERVICE_ADDRESS=await ve(h.baseUrl),Ie(h.themeColors),console.log("✅ CONFIG initialized:",{serviceAddress:h.SERVICE_ADDRESS,serviceFee:h.SERVICE_FEE}),h),Ce=e=>{const r=btoa(JSON.stringify({typ:"JWT",alg:"none"})),c=btoa(JSON.stringify(e));return`${r}.${c}.`},ye=async({payload:e,onFinish:t,onCancel:r})=>{var c;try{const n=(c=window.XverseProviders)==null?void 0:c.BitcoinProvider;if(console.log("Starting inscription with provider:",n),!n)throw new Error("Xverse provider not found");const l=Ce(e);console.log("Created inscription request token:",l);const p=await n.createInscription(l);if(console.log("Received inscription response:",p),!p)throw new Error("No response from provider");if(p.error)throw new Error(p.error.message||"Provider returned an error");const a={txId:p.txId,inscriptionId:p.inscriptionId};return console.log("Inscription successful:",a),t==null||t(a),a}catch(n){if(console.error("Inscription error:",n),n.code===4001)return r==null||r(),null;throw n}},we=async()=>{try{const t=await(await fetch(`${h.baseUrl}/r/blockheight`)).text(),c=await(await fetch(`${h.baseUrl}/r/blockinfo/${t.trim()}`)).json();return Math.max(c.average_fee_rate||2,2)}catch(e){return console.error("Error fetching fee rate:",e),2}},L={bitcoin:{modalBg:"rgba(0, 0, 0, 0.85)",contentBg:"#1a1a1a",borderColor:"#f7931a",accentColor:"#f7931a",textColor:"#ffffff",inputBg:"#222222",buttonGradient:"linear-gradient(45deg, #f7931a, #ffa726)"},ethereum:{modalBg:"rgba(0, 0, 0, 0.85)",contentBg:"#1c2951",borderColor:"#62688f",accentColor:"#00ffff",textColor:"#ffffff",inputBg:"#2a3c6e",buttonGradient:"linear-gradient(45deg, #5c6bc0, #00ffff)"},ordinals:{modalBg:"rgba(0, 0, 0, 0.85)",contentBg:"#1a1a1a",borderColor:"#333",accentColor:"#00ffff",textColor:"#ffffff",inputBg:"#222",buttonGradient:"linear-gradient(45deg, #ff8e53, #00ffff)"},monero:{modalBg:"rgba(0, 0, 0, 0.85)",contentBg:"#252525",borderColor:"#ff6b00",accentColor:"#ff6b00",textColor:"#ffffff",inputBg:"#333",buttonGradient:"linear-gradient(45deg, #ff6b00, #ff9340)"},cardano:{modalBg:"rgba(0, 0, 0, 0.85)",contentBg:"#1e4147",borderColor:"#0033ad",accentColor:"#17d1aa",textColor:"#ffffff",inputBg:"#2a565e",buttonGradient:"linear-gradient(45deg, #0033ad, #17d1aa)"}},Ne=e=>{const t=document.documentElement;Object.entries(e).forEach(([r,c])=>{const n=`--${r.replace(/([A-Z])/g,"-$1").toLowerCase()}`;t.style.setProperty(n,c)})},Se=e=>{if(L[e.toLowerCase()]){const t=L[e.toLowerCase()];return Ne(t),!0}return!1},Te=async e=>{var t;try{console.log("🔄 Starting theme fetch process..."),console.log(`Step 1: Getting children for inscription ${e}`);const r=`/r/children/${e}`;console.log(`📡 API CMD: ${r}`);const n=await(await fetch(r)).json();if(console.log("📥 Children API response:",n),!((t=n==null?void 0:n.ids)!=null&&t.length))return console.log("❌ No children found, using defaults"),null;const l=n.ids[n.ids.length-1];console.log(`✅ Latest child inscription: ${l}`),console.log(`Step 2: Fetching theme content from /content/${l}`);const a=await(await fetch(`/content/${l}`)).json();if(console.log("📥 Theme content received:",a),console.log("Step 3: Validating theme data"),!(a!=null&&a.theme)||!(a!=null&&a.logo))return console.warn("❌ Invalid theme data:",{hasTheme:!!(a!=null&&a.theme),hasLogo:!!(a!=null&&a.logo),content:a}),null;console.log(`Step 4: Applying theme "${a.theme}"`),Se(a.theme)?console.log("✅ Theme applied successfully"):console.warn("❌ Failed to apply theme");const w={title:a.title||"NeXscribe",logo:a.logo,theme:a.theme,themeColors:L[a.theme.toLowerCase()]};return console.log("🎨 Final theme configuration:",w),w}catch(r){return console.error("❌ Theme fetch failed:",r),null}},Ae=({logoId:e})=>e?s("div",{className:"logo-container",children:s("img",{src:`${h.baseUrl}/content/${e}`,alt:"Logo",className:"logo-image"})}):null;const Re=({txId:e,onClose:t})=>s("div",{className:"success-modal",children:f("div",{className:"success-message",children:[s("h2",{children:"Inscription Successful! 🎨"}),f("div",{className:"tx-info",children:[s("strong",{children:"Transaction ID:"}),s("code",{children:e})]}),f("div",{className:"message-content",children:[s("p",{children:"Your inscription has been created and will be processed shortly."}),s("p",{children:"You can track your inscription using Mempool."}),f("div",{className:"transaction-note",children:[s("strong",{children:"Note:"})," The inscription process typically takes 5-10 minutes to complete."]})]}),f("div",{className:"button-group",children:[s("button",{className:"view-tx-btn",onClick:()=>window.open(`https://mempool.space/tx/${e}`,"_blank"),children:"View on Mempool"}),s("button",{className:"close-success-btn",onClick:t,children:"Close"})]})]})}),S={PLAIN:"text/plain",HTML:"text/html",JSON:"application/json",BITMAP:"text/plain;charset=utf-8",IMAGE_PNG:"image/png",IMAGE_JPEG:"image/jpeg",IMAGE_GIF:"image/gif",IMAGE_WEBP:"image/webp"},m={TEXT:"text",BITMAP:"bitmap",BRC20:"brc20",UPLOAD:"upload"},Pe=`⚠️ Important Notice:
1. This bitmap number may already be registered by someone else
2. Multiple users might be attempting to register the same bitmap
3. A successful transaction doesn't guarantee ownership
4. Always verify the bitmap status before inscribing`,j={BITCOIN:"bitcoin",ETHEREUM:"ethereum",ORDINALS:"ordinals",MONERO:"monero",CARDANO:"cardano"},W="Nexscribe",Be=({isOpen:e,onClose:t})=>{const[r,c]=u(S.PLAIN),[n,l]=u(""),[p,a]=u(null),[R,w]=u(!1),[$,C]=u(""),[P,q]=u(null),[J,z]=u(null),[y,Y]=u(m.TEXT),[B,Z]=u(""),[N,O]=u(""),[K,Q]=u(2),[g,ee]=u(null),[x,D]=u(""),[De,te]=u(T.SERVICE_ADDRESS),[ne,oe]=u(j.ORDINALS),[I,re]=u(null),[V,F]=u(null);A(()=>{(async()=>{await Ee(),te(h.SERVICE_ADDRESS)})()},[]),A(()=>{const o=async()=>{const i=await we();Q(i)};if(e){o();const i=setInterval(o,12e4);return()=>clearInterval(i)}},[e]),A(()=>{const o=async()=>{try{const d=await(await fetch(`${h.baseUrl}/r/blockheight`)).text();ee(parseInt(d.trim()))}catch(i){console.error("Failed to fetch block height:",i)}};if(e){o();const i=setInterval(o,3e4);return()=>clearInterval(i)}},[e]),A(()=>{(async()=>{const i=H();if(i){const d=await Te(i);d&&(re(d),oe(d.theme||j.ORDINALS))}})()},[]);const k=(o,i="success")=>{const d=document.createElement("div");d.className="success-animation",d.innerHTML=`
      <div style="font-size: 40px; margin-bottom: 10px">
        ${i==="success"?"🎉":"❌"}
      </div>
      <div>${o}</div>
    `,document.body.appendChild(d),setTimeout(()=>d.remove(),3e3)},_=async()=>{var o,i;try{const d=(o=window.XverseProviders)==null?void 0:o.BitcoinProvider;if(!d)return C("Xverse provider not found"),!1;const E=await d.request("getAccounts",{purposes:["ordinals"]});console.log("Wallet accounts:",E);const b=(i=E==null?void 0:E.result)==null?void 0:i.find(v=>v.purpose==="ordinals");return b!=null&&b.address?(z("Xverse"),q(b.address),console.log("Connected ordinals address:",b.address),k("Connected to Xverse"),!0):(C("No Xverse ordinals account found"),!1)}catch(d){return console.error("Wallet connection error:",d),C((d==null?void 0:d.message)||"Failed to connect wallet"),!1}},se=async o=>{const i=o.target.files[0];if(i)try{a(i);const{content:d,contentType:E}=await G(i);l(d),c(E),C("")}catch{C("Failed to process file"),a(null)}},ce=async()=>{try{if(console.log("Starting inscription process..."),w(!0),C(""),!P&&!await _())throw new Error("Please connect your wallet first");let o=n,i=r,d="PLAIN_TEXT";switch(y){case m.BITMAP:o=`${N}.bitmap`,i=S.BITMAP;break;case m.BRC20:o=JSON.stringify({p:"brc-20",op:"deploy",tick:B.toLowerCase(),max:"21000000"}),i=S.JSON;break;case m.UPLOAD:if(!p)throw new Error("No file selected");const v=await G(p);o=v.content,i=v.contentType,d="BASE_64";break}const E={contentType:i,content:o,payloadType:d,network:{type:"Mainnet"},appFeeAddress:h.SERVICE_ADDRESS,appFee:h.SERVICE_FEE,suggestedMinerFeeRate:K};console.log("Creating inscription with payload:",E);const b=await ye({payload:E,onFinish:v=>{console.log("Inscription completed:",v),v!=null&&v.txId&&F(v.txId)},onCancel:()=>{console.log("Inscription cancelled"),k("Inscription cancelled","error")}});b!=null&&b.txId&&F(b.txId)}catch(o){console.error("Inscription error:",o),k(o.message||"Failed to create inscription","error"),C(o.message||"Failed to create inscription")}finally{w(!1)}},ie=()=>f("div",{className:"brc20-controls enhanced",children:[s("input",{type:"text",value:B,onChange:o=>Z(o.target.value.toUpperCase()),placeholder:"Enter BRC-20 token tick (e.g., ORDI)",className:"tick-input",maxLength:4}),s("div",{className:"info-text",children:"BRC-20 ticks are typically 4 characters in length"})]}),ae=()=>f("div",{className:"bitmap-inscription-container",children:[f("div",{className:"block-height-info",children:["Current Block Height: ",g||"Loading...",f("button",{className:"use-height-btn",onClick:()=>{O((g==null?void 0:g.toString())||""),M((g==null?void 0:g.toString())||"")},disabled:!g,children:["Use Current Block Height: ",g||"..."]})]}),s("div",{className:"bitmap-warning",children:s("pre",{children:Pe})}),s("input",{type:"number",value:N,onChange:o=>{O(o.target.value),M(o.target.value)},placeholder:`Current block height: ${g||"..."}`,className:"content-type-input",max:g}),x&&s("div",{className:"validation-error",children:x}),N&&!x&&f("div",{className:"preview-text",children:["Will inscribe: ",N,".bitmap"]})]}),le=()=>f("div",{className:"wallet-info",children:[s("div",{className:"scrollable-content",children:f("div",{className:"info-grid",children:[s("div",{className:"welcome-content",children:s("h2",{children:(I==null?void 0:I.title)||W})}),f("div",{className:"info-section",children:[f("div",{className:"address-box",children:[s("div",{className:"wallet-type",children:J}),s("div",{className:"address",children:P})]}),s("div",{className:"inscription-type-selector",children:Object.values(m).map(o=>s("button",{className:`menu-item ${y===o?"active":""}`,onClick:()=>Y(o),children:o.charAt(0).toUpperCase()+o.slice(1)},o))}),y===m.TEXT&&f("div",{className:"text-inscription-container",children:[f("div",{className:"input-group",children:[s("label",{children:"Content Type:"}),s("select",{value:r,onChange:o=>c(o.target.value),children:Object.entries(S).map(([o,i])=>s("option",{value:i,children:i},o))})]}),s("textarea",{className:"inscription-text enhanced",value:n,onChange:o=>l(o.target.value),placeholder:"Enter your inscription text...",rows:6})]}),y===m.BRC20&&ie(),y===m.BITMAP&&ae(),y===m.UPLOAD&&f("div",{className:"universal-controls enhanced",children:[f("div",{className:"file-upload-zone",children:[s("input",{type:"file",onChange:se,accept:"image/*,text/*,application/json",className:"file-input",id:"file-input"}),s("label",{htmlFor:"file-input",children:"Drop files here or click to upload"})]}),p&&f("div",{className:"file-preview",children:[f("p",{children:["Selected file: ",p.name]}),s("button",{className:"remove-file-btn",onClick:()=>{a(null),l(""),c(S.PLAIN)},children:"Remove File"})]})]})]})]})}),s("div",{className:"sticky-footer",children:s("button",{className:"inscribe-button",onClick:ce,disabled:R||!de(),children:R?"Creating Inscription...":"Create Inscription"})})]}),de=()=>{switch(y){case m.TEXT:return n.trim().length>0;case m.BITMAP:return N.trim().length>0;case m.BRC20:return B.trim().length>0;case m.UPLOAD:return p!==null;default:return!1}},M=o=>/^\d+$/.test(o)?g&&parseInt(o)>g?(D(`Bitmap number cannot exceed current block height (${g})`),!1):(D(""),!0):(D("Bitmap number must be a positive integer"),!1),fe=()=>{var o,i;return s("div",{className:"welcome-container",children:f("div",{className:"welcome-content",children:[s("h2",{children:(I==null?void 0:I.title)||W}),s("button",{className:"wallet-btn",onClick:_,disabled:!((o=window.XverseProviders)!=null&&o.BitcoinProvider),children:(i=window.XverseProviders)!=null&&i.BitcoinProvider?"Connect Xverse Wallet":"Xverse Extension Required"}),$&&s("div",{className:"error-message",children:$})]})})};return s("div",{className:`modal ${e?"active":""} theme-${ne}`,children:f("div",{className:"modal-content",children:[s(Ae,{logoId:(I==null?void 0:I.logo)||h.DEFAULT_LOGO}),P?le():fe(),V&&s(Re,{txId:V,onClose:()=>{F(null),t()}})]})})};function xe(){return s("div",{className:"w-full h-full flex flex-col overflow-hidden",children:s(Be,{isOpen:!0,onClose:()=>{}})})}ue.createRoot(document.getElementById("root")).render(s(pe.StrictMode,{children:s(xe,{})}));