Back to Iching
SOURCE / PINNED RELEASE

Made of little things.

Iching

Release
f0037cd33dc5…
Author-recorded commit
Not provided
License
Check the original source

The hash-verified playable HTML, which may contain bundled or minified code. This view does not execute it.

index.html
<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>I Ching</title>
    <script type="module" crossorigin>(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))o(i);new MutationObserver(i=>{for(const s of i)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&o(a)}).observe(document,{childList:!0,subtree:!0});function n(i){const s={};return i.integrity&&(s.integrity=i.integrity),i.referrerPolicy&&(s.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?s.credentials="include":i.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function o(i){if(i.ep)return;i.ep=!0;const s=n(i);fetch(i.href,s)}})();const Le="modulepreload",He=function(e,t){return new URL(e,t).href},V={},Be=function(t,n,o){let i=Promise.resolve();if(n&&n.length>0){let a=function(c){return Promise.all(c.map(w=>Promise.resolve(w).then(b=>({status:"fulfilled",value:b}),b=>({status:"rejected",reason:b}))))};const u=document.getElementsByTagName("link"),f=document.querySelector("meta[property=csp-nonce]"),h=(f==null?void 0:f.nonce)||(f==null?void 0:f.getAttribute("nonce"));i=a(n.map(c=>{if(c=He(c,o),c in V)return;V[c]=!0;const w=c.endsWith(".css"),b=w?'[rel="stylesheet"]':"";if(!!o)for(let S=u.length-1;S>=0;S--){const A=u[S];if(A.href===c&&(!w||A.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${c}"]${b}`))return;const g=document.createElement("link");if(g.rel=w?"stylesheet":Le,w||(g.as="script"),g.crossOrigin="",g.href=c,h&&g.setAttribute("nonce",h),document.head.appendChild(g),w)return new Promise((S,A)=>{g.addEventListener("load",S),g.addEventListener("error",()=>A(new Error(`Unable to preload CSS for ${c}`)))})}))}function s(a){const u=new Event("vite:preloadError",{cancelable:!0});if(u.payload=a,window.dispatchEvent(u),!u.defaultPrevented)throw a}return i.then(a=>{for(const u of a||[])u.status==="rejected"&&s(u.reason);return t().catch(s)})},Z={"000":"Earth",111:"Heaven","010":"Water",101:"Fire","001":"Thunder","011":"Wind",100:"Mountain",110:"Lake"},J={111111:"The Creative (Heaven)","000000":"The Receptive (Earth)","010010":"The Abysmal (Water)",101101:"The Clinging (Fire)",100100:"The Keeping Still (Mountain)","001001":"The Arousing (Thunder)","011011":"The Gentle (Wind)",110110:"The Joyous (Lake)"};function Ue(e){if(J[e])return J[e];const t=e.slice(0,3).split("").reverse().join(""),n=e.slice(3,6).split("").reverse().join("");return`${Z[n]} over ${Z[t]}`}const X=document.getElementById("lines"),Ke=document.getElementById("hexNumber"),Ge=document.getElementById("hexName"),je=document.getElementById("consultBtn");function Fe(){const e=document.createElement("div");e.className="line line-yang",e.setAttribute("role","img"),e.setAttribute("aria-label","solid yang line");const t=document.createElement("span");return t.className="bar",e.appendChild(t),e}function We(){const e=document.createElement("div");e.className="line line-yin",e.setAttribute("role","img"),e.setAttribute("aria-label","broken yin line");const t=document.createElement("span");t.className="bar bar-left";const n=document.createElement("span");return n.className="bar bar-right",e.appendChild(t),e.appendChild(n),e}function Ye(){const e=[],t=[];for(let i=0;i<6;i++)Math.random()<.5?(e.push("yin"),t.push("0")):(e.push("yang"),t.push("1"));const n=t.join(""),o=parseInt(n.split("").reverse().join(""),2)+1;return{lines:e,binary:n,number:o,name:Ue(n)}}function he(){const{lines:e,number:t,name:n}=Ye();X.innerHTML="";for(const o of e.slice().reverse())X.appendChild(o==="yang"?Fe():We());Ke.textContent=String(t),Ge.textContent=n}function T(e){var u,f,h;const t=document.documentElement,n=((u=e==null?void 0:e.colors)==null?void 0:u.background)??"#f4f0e8",o=((f=e==null?void 0:e.colors)==null?void 0:f.text)??"#332211",i=((h=e==null?void 0:e.colors)==null?void 0:h.primary)??"#8b4513",a=((e==null?void 0:e.scheme)??"light")==="dark";t.style.setProperty("--nap-bg",n),t.style.setProperty("--nap-fg",o),t.style.setProperty("--nap-primary",i),t.style.setProperty("--nap-surface",a?"rgba(255,255,255,0.10)":"rgba(0,0,0,0.05)"),t.style.setProperty("--nap-border",a?"rgba(255,255,255,0.12)":"rgba(0,0,0,0.12)"),t.style.setProperty("--nap-muted",a?"rgba(255,255,255,0.60)":"rgba(0,0,0,0.55)"),t.style.colorScheme=a?"dark":"light",document.body&&(document.body.style.backgroundColor=n,document.body.style.color=o)}async function ze(){try{const e=await Be(()=>Promise.resolve().then(()=>mr),void 0,import.meta.url);if(typeof e.themeGet=="function"){const t=await e.themeGet();T(t)}typeof e.themeOnChanged=="function"&&e.themeOnChanged(t=>T(t))}catch{T(null)}}je.addEventListener("click",()=>he());he();ze();var Qe=["relay","identity","storage","inc","theme","keys","media","notify","config","resource","cvm","outbox","upload","intent"];function Ve(){const e=new Map;function t(i,s){if(e.has(i))throw new Error(`NAP domain "${i}" is already registered`);e.set(i,s)}function n(i){const s=i.type.indexOf(".");if(s<=0)return!1;const a=i.type.slice(0,s),u=e.get(a);return u?(u(i),!0):!1}function o(){return Array.from(e.keys())}return{registerNap:t,dispatch:n,getRegisteredDomains:o}}var Ze=Ve(),l=Ze.registerNap,be="relay",Je=new Map,Xe=new Map,R=!1;function et(){return R?()=>{}:(R=!0,()=>{Je.clear(),Xe.clear(),R=!1})}function tt(){return()=>{}}function z(){var t;const e=window;if(!((t=e.napplet)!=null&&t.relay))throw new Error("window.napplet.relay not installed -- import @napplet/shim first");return e.napplet.relay}function nt(e,t,n,o){return z().subscribe(e,t,n,o)}function rt(e,t){return z().publish(e,t)}function it(e){return z().query(e)}function ot(e,t,n="nip44"){var i,s;const o=window;if(!((s=(i=o.napplet)==null?void 0:i.relay)!=null&&s.publishEncrypted))throw new Error("window.napplet.relay.publishEncrypted not installed -- import @napplet/shim first");return o.napplet.relay.publishEncrypted(e,t,n)}l(be,e=>{});var Se="identity",ee=new Map,st=new Set,N=!1;function at(){return N?()=>{}:(N=!0,()=>{for(const e of ee.values())clearTimeout(e.timeout);ee.clear(),st.clear(),N=!1})}function d(){var t;const e=window;if(!((t=e.napplet)!=null&&t.identity))throw new Error("window.napplet.identity not installed -- import @napplet/shim first");return e.napplet.identity}function ut(){return d().getPublicKey()}function lt(e){return d().onChanged(e)}function ct(){return d().getRelays()}function dt(){return d().getProfile()}function pt(){return d().getFollows()}function ft(e){return d().getList(e)}function mt(){return d().getZaps()}function gt(){return d().getMutes()}function yt(){return d().getBlocked()}function wt(){return d().getBadges()}l(Se,e=>{});var Ee="storage",U=new Map;function te(e){if(e.source!==window.parent)return;const t=e.data;if(typeof t!="object"||t===null||typeof t.type!="string"||!t.type.startsWith("storage.")||!t.type.endsWith(".result"))return;const n=t.id;if(!n)return;const o=U.get(n);if(o){if(U.delete(n),t.error){o.reject(new Error(t.error));return}o.resolve(t)}}function vt(){return window.addEventListener("message",te),()=>{window.removeEventListener("message",te),U.clear()}}function C(){var t;const e=window;if(!((t=e.napplet)!=null&&t.storage))throw new Error("window.napplet.storage not installed -- import @napplet/shim first");return e.napplet.storage}function ht(e){return C().getItem(e)}function bt(e,t){return C().setItem(e,t)}function St(e){return C().removeItem(e)}function Et(){return C().keys()}l(Ee,e=>{});var K="inc",Mt=new Map;function ne(){return()=>{Mt.clear()}}function Me(){var t;const e=window;if(!((t=e.napplet)!=null&&t.inc))throw new Error("window.napplet.inc not installed -- import @napplet/shim first");return e.napplet.inc}function re(e,t,n){Me().emit(e,t,n)}function ie(e,t){return Me().on(e,t)}l(K,e=>{});var Ae="theme",oe=new Map,At=new Set,D=!1;function Ct(){return D?()=>{}:(D=!0,()=>{for(const e of oe.values())clearTimeout(e.timeout);oe.clear(),At.clear(),D=!1})}function Ce(){var t;const e=window;if(!((t=e.napplet)!=null&&t.theme))throw new Error("window.napplet.theme not installed -- import @napplet/shim first");return e.napplet.theme}function Ot(){return Ce().get()}function It(e){return Ce().onChanged(e)}l(Ae,e=>{});var Oe="keys",G=new Map,Ie=new Map,Tt=new Map,k=!1,E=null,Rt=new Set(["Tab","Shift+Tab","Escape"]);function Nt(e){var o;if(!(e instanceof Element))return!1;const t=e.tagName;if(t==="TEXTAREA"||t==="SELECT")return!0;if(t==="INPUT"){const i=((o=e.type)==null?void 0:o.toLowerCase())??"text";return new Set(["text","search","email","url","password","number","tel","date","datetime-local","month","time","week"]).has(i)||i===""}if(e.isContentEditable)return!0;const n=e.contentEditable;return n==="true"||n==="plaintext-only"}function Dt(e){return e==="Control"||e==="Alt"||e==="Shift"||e==="Meta"}function kt(e){const t=[];return e.altKey&&t.push("Alt"),e.ctrlKey&&t.push("Ctrl"),e.metaKey&&t.push("Meta"),e.shiftKey&&t.push("Shift"),t.push(e.key),t.join("+")}function se(e){if(Nt(e.target)||Dt(e.key)||e.isComposing)return;const t=kt(e);if(!Rt.has(t)&&G.has(t)){e.preventDefault();const o=G.get(t),i=Ie.get(o);if(i)for(const s of i)s();return}const n={type:"keys.forward",key:e.key,code:e.code,ctrl:e.ctrlKey,alt:e.altKey,shift:e.shiftKey,meta:e.metaKey};window.parent.postMessage(n,"*")}function _t(){return k&&E||(document.addEventListener("keydown",se,!0),k=!0,E=()=>{document.removeEventListener("keydown",se,!0),G.clear(),Ie.clear(),Tt.clear(),k=!1,E=null}),E}function O(){var t;const e=window;if(!((t=e.napplet)!=null&&t.keys))throw new Error("window.napplet.keys not installed -- import @napplet/shim first");return e.napplet.keys}function Pt(e){return O().registerAction(e)}function qt(e){O().unregisterAction(e)}function $t(e,t){return O().onAction(e,t)}async function xt(e,t){const n=O(),o=await n.registerAction(e),i=n.onAction(e.id,t);return{...o,close(){i.close(),n.unregisterAction(e.id)}}}l(Oe,e=>{});var Te="media",ae=new Map,Lt=new Map,Ht=new Map,Bt=new Map,Ut=new Map,_=!1;function Kt(){return _?()=>{}:(_=!0,()=>{for(const e of ae.values())clearTimeout(e.timeout);ae.clear(),Lt.clear(),Ht.clear(),Bt.clear(),Ut.clear(),_=!1})}function p(){var t;const e=window;if(!((t=e.napplet)!=null&&t.media))throw new Error("window.napplet.media not installed -- import @napplet/shim first");return e.napplet.media}function Gt(e){return p().createSession(e)}function jt(e,t){p().updateSession(e,t)}function Ft(e){p().destroySession(e)}function Wt(e,t){p().reportState(e,t)}function Yt(e,t){p().reportCapabilities(e,t)}function zt(e,t,n){p().sendCommand(e,t,n)}function Qt(e,t){return p().onCommand(e,t)}function Vt(e,t){return p().onState(e,t)}function Zt(e,t){return p().onCapabilities(e,t)}function Jt(e,t){return p().onControls(e,t)}l(Te,e=>{});var Re="notify",Xt=new Map,en=new Map,tn=new Set,nn=new Set,rn=new Set,on=new Set,P=!1;function sn(){return P?()=>{}:(P=!0,()=>{Xt.clear(),en.clear(),tn.clear(),nn.clear(),rn.clear(),on.clear(),P=!1})}function m(){var t;const e=window;if(!((t=e.napplet)!=null&&t.notify))throw new Error("window.napplet.notify not installed -- import @napplet/shim first");return e.napplet.notify}function an(e){return m().send(e)}function un(e){m().dismiss(e)}function ln(e){m().badge(e)}function cn(e){m().registerChannel(e)}function dn(e){return m().requestPermission(e)}function pn(e){return m().onAction(e)}function fn(e){return m().onClicked(e)}function mn(e){return m().onDismissed(e)}function gn(e){return m().onControls(e)}l(Re,e=>{});var yn="config",Ne=3e4,wn="napplet-config-schema",q=null,j=null,v=new Set,F=new Set,W=new Map,Y=new Map,$=!1;function vn(){if(typeof document>"u")return null;const e=document.querySelector(`meta[name="${wn}"]`);if(!e)return null;const t=e.getAttribute("content");if(!t)return null;try{return JSON.parse(t)}catch{return null}}function hn(e,t){const n=crypto.randomUUID();return new Promise((o,i)=>{Y.set(n,{resolve:o,reject:i,schema:e});const s=t===void 0?{type:"config.registerSchema",id:n,schema:e}:{type:"config.registerSchema",id:n,schema:e,version:t};window.parent.postMessage(s,"*"),setTimeout(()=>{Y.delete(n)&&i(new Error("config.registerSchema timed out"))},Ne)})}function bn(){const e=crypto.randomUUID();return new Promise((t,n)=>{W.set(e,{resolve:t,reject:n});const o={type:"config.get",id:e};window.parent.postMessage(o,"*"),setTimeout(()=>{W.delete(e)&&n(new Error("config.get timed out"))},Ne)})}function Sn(e){const t=v.size===0;if(v.add(e),t){const n={type:"config.subscribe"};window.parent.postMessage(n,"*")}else if(j!==null){const n=j;queueMicrotask(()=>{if(v.has(e)&&n!==null)try{e(n)}catch{}})}return{close(){if(v.delete(e)&&v.size===0){const o={type:"config.unsubscribe"};window.parent.postMessage(o,"*")}}}}function En(e){const t=e==null?void 0:e.section,n=t===void 0?{type:"config.openSettings"}:{type:"config.openSettings",section:t};window.parent.postMessage(n,"*")}function Mn(e){return F.add(e),()=>{F.delete(e)}}function An(){if($)return()=>{};q=vn();const e=window,t=e.napplet??(e.napplet={}),n={registerSchema:hn,get:bn,subscribe:Sn,openSettings:En,onSchemaError:Mn};return Object.defineProperty(n,"schema",{get:()=>q,enumerable:!0,configurable:!1}),t.config=n,$=!0,()=>{v.clear(),F.clear(),W.clear(),Y.clear(),j=null,q=null,t.config===n&&delete t.config,$=!1}}var De="resource";function ke(){var t;const e=window;if(!((t=e.napplet)!=null&&t.resource))throw new Error("window.napplet.resource not installed -- import @napplet/shim first");return e.napplet.resource}function Cn(e){return ke().bytes(e)}function On(e){return ke().bytesAsObjectURL(e)}l(De,e=>{});var _e="cvm",ue=new Map,le=new Map,ce=new Map,In=new Set,x=!1;function Tn(){return x?()=>{}:(x=!0,()=>{for(const e of ue.values())clearTimeout(e.timeout);for(const e of le.values())clearTimeout(e.timeout);for(const e of ce.values())clearTimeout(e.timeout);ue.clear(),le.clear(),ce.clear(),In.clear(),x=!1})}function y(){var t;const e=window;if(!((t=e.napplet)!=null&&t.cvm))throw new Error("window.napplet.cvm not installed -- import @napplet/shim first");return e.napplet.cvm}function Rn(e){return y().discover(e)}function Nn(e,t,n){return y().request(e,t,n)}function Dn(e,t){return y().listTools(e,t)}function kn(e,t,n,o){return y().callTool(e,t,n,o)}function _n(e,t){return y().listResources(e,t)}function Pn(e,t,n){return y().readResource(e,t,n)}function qn(e){return y().close(e)}function $n(e){return y().onEvent(e)}l(_e,e=>{});var Pe="outbox",de=new Map,pe=new Map,fe=new Map,xn=new Map,L=!1;function Ln(){return L?()=>{}:(L=!0,()=>{for(const e of de.values())clearTimeout(e.timeout);for(const e of pe.values())clearTimeout(e.timeout);for(const e of fe.values())clearTimeout(e.timeout);de.clear(),pe.clear(),fe.clear(),xn.clear(),L=!1})}function I(){var t;const e=window;if(!((t=e.napplet)!=null&&t.outbox))throw new Error("window.napplet.outbox not installed -- import @napplet/shim first");return e.napplet.outbox}function Hn(e,t){return I().query(e,t)}function Bn(e,t){return I().subscribe(e,t)}function Un(e,t){return I().publish(e,t)}function Kn(e){return I().resolveRelays(e)}l(Pe,e=>{});var qe="upload",me=new Map,ge=new Map,Gn=new Set,H=!1;function jn(){return H?()=>{}:(H=!0,()=>{for(const e of me.values())clearTimeout(e.timeout);for(const e of ge.values())clearTimeout(e.timeout);me.clear(),ge.clear(),Gn.clear(),H=!1})}function Q(){var t;const e=window;if(!((t=e.napplet)!=null&&t.upload))throw new Error("window.napplet.upload not installed -- import @napplet/shim first");return e.napplet.upload}function Fn(e){return Q().upload(e)}function Wn(e){return Q().status(e)}function Yn(e){return Q().onStatus(e)}l(qe,e=>{});var $e="intent",ye=new Map,we=new Map,ve=new Map,zn=new Set,B=!1;function Qn(){return B?()=>{}:(B=!0,()=>{for(const e of ye.values())clearTimeout(e.timeout);for(const e of we.values())clearTimeout(e.timeout);for(const e of ve.values())clearTimeout(e.timeout);ye.clear(),we.clear(),ve.clear(),zn.clear(),B=!1})}function M(){var t;const e=window;if(!((t=e.napplet)!=null&&t.intent))throw new Error("window.napplet.intent not installed -- import @napplet/shim first");return e.napplet.intent}function Vn(e){return M().invoke(e)}function Zn(e,t,n){return M().open(e,t,n)}function Jn(e){return M().available(e)}function Xn(){return M().handlers()}function er(e){return M().onChanged(e)}l($e,e=>{});function r(){const e=window;if(!e.napplet)throw new Error("window.napplet not installed -- import @napplet/shim first");return e.napplet}var tr={subscribe(e,t,n,o){return r().relay.subscribe(e,t,n,o)},publish(e,t){return r().relay.publish(e,t)},publishEncrypted(e,t,n="nip44"){return r().relay.publishEncrypted(e,t,n)},query(e){return r().relay.query(e)}},xe={emit(e,t,n){r().inc.emit(e,t,n)},on(e,t){return r().inc.on(e,t)}},nr=xe,rr={getItem(e){return r().storage.getItem(e)},setItem(e,t){return r().storage.setItem(e,t)},removeItem(e){return r().storage.removeItem(e)},keys(){return r().storage.keys()}},ir={createSession(e){return r().media.createSession(e)},updateSession(e,t){r().media.updateSession(e,t)},destroySession(e){r().media.destroySession(e)},reportState(e,t){r().media.reportState(e,t)},reportCapabilities(e,t){r().media.reportCapabilities(e,t)},sendCommand(e,t,n){r().media.sendCommand(e,t,n)},onCommand(e,t){return r().media.onCommand(e,t)},onState(e,t){return r().media.onState(e,t)},onCapabilities(e,t){return r().media.onCapabilities(e,t)},onControls(e,t){return r().media.onControls(e,t)}},or={send(e){return r().notify.send(e)},dismiss(e){r().notify.dismiss(e)},badge(e){r().notify.badge(e)},registerChannel(e){r().notify.registerChannel(e)},requestPermission(e){return r().notify.requestPermission(e)},onAction(e){return r().notify.onAction(e)},onClicked(e){return r().notify.onClicked(e)},onDismissed(e){return r().notify.onDismissed(e)},onControls(e){return r().notify.onControls(e)}},sr={registerAction(e){return r().keys.registerAction(e)},unregisterAction(e){r().keys.unregisterAction(e)},onAction(e,t){return r().keys.onAction(e,t)},async register(e,t){const n=r(),o=await n.keys.registerAction(e),i=n.keys.onAction(e.id,t);return{...o,close(){i.close(),n.keys.unregisterAction(e.id)}}}},ar={getPublicKey(){return r().identity.getPublicKey()},onChanged(e){return r().identity.onChanged(e)},getRelays(){return r().identity.getRelays()},getProfile(){return r().identity.getProfile()},getFollows(){return r().identity.getFollows()},getList(e){return r().identity.getList(e)},getZaps(){return r().identity.getZaps()},getMutes(){return r().identity.getMutes()},getBlocked(){return r().identity.getBlocked()},getBadges(){return r().identity.getBadges()}},ur={get(){return r().config.get()},subscribe(e){return r().config.subscribe(e)},openSettings(e){r().config.openSettings(e)},registerSchema(e,t){return r().config.registerSchema(e,t)},onSchemaError(e){return r().config.onSchemaError(e)},get schema(){return r().config.schema}},lr={bytes(e){return r().resource.bytes(e)},bytesAsObjectURL(e){return r().resource.bytesAsObjectURL(e)}},cr={discover(e){return r().cvm.discover(e)},request(e,t,n){return r().cvm.request(e,t,n)},listTools(e,t){return r().cvm.listTools(e,t)},callTool(e,t,n,o){return r().cvm.callTool(e,t,n,o)},listResources(e,t){return r().cvm.listResources(e,t)},readResource(e,t,n){return r().cvm.readResource(e,t,n)},close(e){return r().cvm.close(e)},onEvent(e){return r().cvm.onEvent(e)}},dr={query(e,t){return r().outbox.query(e,t)},subscribe(e,t){return r().outbox.subscribe(e,t)},publish(e,t){return r().outbox.publish(e,t)},resolveRelays(e){return r().outbox.resolveRelays(e)}},pr={upload(e){return r().upload.upload(e)},status(e){return r().upload.status(e)},onStatus(e){return r().upload.onStatus(e)}},fr={invoke(e){return r().intent.invoke(e)},open(e,t,n){return r().intent.open(e,t,n)},available(e){return r().intent.available(e)},handlers(){return r().intent.handlers()},onChanged(e){return r().intent.onChanged(e)}};const mr=Object.freeze(Object.defineProperty({__proto__:null,CONFIG_DOMAIN:yn,CVM_DOMAIN:_e,IDENTITY_DOMAIN:Se,IFC_DOMAIN:K,INC_DOMAIN:K,INTENT_DOMAIN:$e,KEYS_DOMAIN:Oe,MEDIA_DOMAIN:Te,NAP_DOMAINS:Qe,NOTIFY_DOMAIN:Re,OUTBOX_DOMAIN:Pe,RELAY_DOMAIN:be,RESOURCE_DOMAIN:De,STORAGE_DOMAIN:Ee,THEME_DOMAIN:Ae,UPLOAD_DOMAIN:qe,config:ur,cvm:cr,cvmCallTool:kn,cvmClose:qn,cvmDiscover:Rn,cvmListResources:_n,cvmListTools:Dn,cvmOnEvent:$n,cvmReadResource:Pn,cvmRequest:Nn,identity:ar,identityGetBadges:wt,identityGetBlocked:yt,identityGetFollows:pt,identityGetList:ft,identityGetMutes:gt,identityGetProfile:dt,identityGetPublicKey:ut,identityGetRelays:ct,identityGetZaps:mt,identityOnChanged:lt,ifc:nr,ifcEmit:re,ifcOn:ie,inc:xe,incEmit:re,incOn:ie,installConfigShim:An,installCvmShim:Tn,installIdentityShim:at,installIfcShim:ne,installIncShim:ne,installIntentShim:Qn,installKeysShim:_t,installMediaShim:Kt,installNotifyShim:sn,installOutboxShim:Ln,installRelayShim:tt,installResourceShim:et,installStorageShim:vt,installThemeShim:Ct,installUploadShim:jn,intent:fr,intentAvailable:Jn,intentHandlers:Xn,intentInvoke:Vn,intentOnChanged:er,intentOpen:Zn,keys:sr,keysOnAction:$t,keysRegister:xt,keysRegisterAction:Pt,keysUnregisterAction:qt,media:ir,mediaCreateSession:Gt,mediaDestroySession:Ft,mediaOnCapabilities:Zt,mediaOnCommand:Qt,mediaOnControls:Jt,mediaOnState:Vt,mediaReportCapabilities:Yt,mediaReportState:Wt,mediaSendCommand:zt,mediaUpdateSession:jt,notify:or,notifyBadge:ln,notifyDismiss:un,notifyOnAction:pn,notifyOnClicked:fn,notifyOnControls:gn,notifyOnDismissed:mn,notifyRegisterChannel:cn,notifyRequestPermission:dn,notifySend:an,outbox:dr,outboxPublish:Un,outboxQuery:Hn,outboxResolveRelays:Kn,outboxSubscribe:Bn,relay:tr,relayPublish:rt,relayPublishEncrypted:ot,relayQuery:it,relaySubscribe:nt,resource:lr,resourceBytes:Cn,resourceBytesAsObjectURL:On,storage:rr,storageGetItem:ht,storageKeys:Et,storageRemoveItem:St,storageSetItem:bt,themeGet:Ot,themeOnChanged:It,upload:pr,uploadFile:Fn,uploadOnStatus:Yn,uploadStatus:Wn},Symbol.toStringTag,{value:"Module"}));</script>
    <style rel="stylesheet" crossorigin>:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:var(--nap-bg, #f4f0e8);color:var(--nap-fg, #332211);--line-height: clamp(4px, 1.4vmin, 8px);--line-gap: clamp(4px, 1.2vmin, 10px);--line-bar-width: clamp(120px, 30vw, 200px)}html{height:100%}body{margin:0;min-height:100%;display:flex;align-items:center;justify-content:center;background:var(--nap-bg, #f4f0e8);color:var(--nap-fg, #332211)}.app{width:100%;max-width:480px;padding:clamp(12px,4vw,32px);display:flex;flex-direction:column;align-items:center;gap:clamp(12px,3vmin,24px);text-align:center}.app-header h1{margin:0;font-size:clamp(1.25rem,4vw,2.25rem);font-weight:700;letter-spacing:.03em;color:var(--nap-primary, #8b4513)}.subtitle{margin:0;margin-top:.25rem;font-size:clamp(.75rem,2vw,.95rem);color:var(--nap-muted, rgba(0,0,0,.5));letter-spacing:.05em;text-transform:uppercase}.hexagram{width:100%;display:flex;flex-direction:column;align-items:center;gap:clamp(8px,2vmin,16px)}.hexagram-meta{display:flex;flex-direction:column;align-items:center;gap:.25rem;min-height:2.5rem}.hex-number{font-size:clamp(2rem,6vw,3.5rem);font-weight:800;line-height:1;color:var(--nap-primary, #8b4513);opacity:.9}.hex-name{font-size:clamp(.85rem,2.5vw,1.1rem);font-weight:500;color:var(--nap-muted, rgba(0,0,0,.5));letter-spacing:.02em}.lines{display:flex;flex-direction:column;gap:var(--line-gap);align-items:center;width:100%}.line{position:relative;width:var(--line-bar-width);height:var(--line-height);display:flex;align-items:center;justify-content:center}.bar{display:block;background-color:#000;border-radius:0}.line-yang .bar,.line-changing-yang .bar{width:100%;height:100%}.line-yin .bar,.line-changing-yin .bar{height:100%;background-color:#000}.bar-left{width:40%;margin-right:auto;border-radius:0}.bar-right{width:40%;margin-left:auto;border-radius:0}.changing-indicator{display:none}.app-footer{width:100%;display:flex;justify-content:center}.btn-primary{cursor:pointer;border:none;border-radius:0;padding:clamp(10px,2.5vw,16px) clamp(24px,6vw,48px);font-size:clamp(.85rem,2.2vw,1.05rem);font-weight:600;letter-spacing:.04em;color:#fff;background:var(--nap-primary, #8b4513);box-shadow:0 2px 8px #0000001f;transition:transform .1s ease,box-shadow .2s ease;text-transform:uppercase}.btn-primary:hover{transform:translateY(-1px);box-shadow:0 4px 14px #0000002e}.btn-primary:active{transform:translateY(1px);box-shadow:0 1px 4px #0000001f}.btn-primary:focus-visible{outline:2px solid var(--nap-primary, #8b4513);outline-offset:2px}@media(prefers-reduced-motion:reduce){body,.bar,.btn-primary{transition:none!important}}</style>
    <meta name="napplet-type" content="iching">
  </head>
  <body>
    <div id="app" class="app">
      <header class="app-header">
        <h1>I Ching</h1>
      </header>

      <main class="hexagram" id="hexagram" aria-live="polite" aria-label="I Ching hexagram">
        <div class="hexagram-meta" id="meta">
          <span class="hex-number" id="hexNumber">—</span>
          <span class="hex-name" id="hexName">—</span>
        </div>
        <div class="lines" id="lines">
          <!-- lines injected here -->
        </div>
      </main>

      <footer class="app-footer">
        <button id="consultBtn" class="btn-primary" type="button">
          Consult the Oracle
        </button>
      </footer>
    </div>
  </body>
</html>