@roxyapi/ui 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (216) hide show
  1. package/AGENTS.md +28 -6
  2. package/README.md +46 -12
  3. package/dist/cdn/components/ashtakavarga-grid.js +12 -12
  4. package/dist/cdn/components/ashtakavarga-grid.js.map +4 -4
  5. package/dist/cdn/components/biorhythm-chart.js +8 -8
  6. package/dist/cdn/components/biorhythm-chart.js.map +4 -4
  7. package/dist/cdn/components/choghadiya-grid.js +12 -12
  8. package/dist/cdn/components/choghadiya-grid.js.map +4 -4
  9. package/dist/cdn/components/compatibility-card.js +7 -7
  10. package/dist/cdn/components/compatibility-card.js.map +4 -4
  11. package/dist/cdn/components/dasha-timeline.js +8 -8
  12. package/dist/cdn/components/dasha-timeline.js.map +4 -4
  13. package/dist/cdn/components/data.js +14 -14
  14. package/dist/cdn/components/data.js.map +4 -4
  15. package/dist/cdn/components/divisional-chart.js +29 -29
  16. package/dist/cdn/components/divisional-chart.js.map +4 -4
  17. package/dist/cdn/components/dosha-card.js +6 -6
  18. package/dist/cdn/components/dosha-card.js.map +4 -4
  19. package/dist/cdn/components/guna-milan.js +11 -11
  20. package/dist/cdn/components/guna-milan.js.map +4 -4
  21. package/dist/cdn/components/hexagram.js +9 -9
  22. package/dist/cdn/components/hexagram.js.map +4 -4
  23. package/dist/cdn/components/horoscope-card.js +18 -18
  24. package/dist/cdn/components/horoscope-card.js.map +4 -4
  25. package/dist/cdn/components/kp-chart.js +40 -40
  26. package/dist/cdn/components/kp-chart.js.map +4 -4
  27. package/dist/cdn/components/kp-planets-table.js +7 -7
  28. package/dist/cdn/components/kp-planets-table.js.map +4 -4
  29. package/dist/cdn/components/kp-ruling-planets.js +13 -13
  30. package/dist/cdn/components/kp-ruling-planets.js.map +4 -4
  31. package/dist/cdn/components/moon-phase.js +11 -11
  32. package/dist/cdn/components/moon-phase.js.map +4 -4
  33. package/dist/cdn/components/nakshatra-card.js +16 -16
  34. package/dist/cdn/components/nakshatra-card.js.map +4 -4
  35. package/dist/cdn/components/natal-chart.js +14 -14
  36. package/dist/cdn/components/natal-chart.js.map +4 -4
  37. package/dist/cdn/components/numerology-card.js +8 -8
  38. package/dist/cdn/components/numerology-card.js.map +4 -4
  39. package/dist/cdn/components/panchang-table.js +9 -9
  40. package/dist/cdn/components/panchang-table.js.map +4 -4
  41. package/dist/cdn/components/shadbala-table.js +13 -13
  42. package/dist/cdn/components/shadbala-table.js.map +4 -4
  43. package/dist/cdn/components/synastry-chart.js +18 -18
  44. package/dist/cdn/components/synastry-chart.js.map +4 -4
  45. package/dist/cdn/components/tarot-card.js +21 -21
  46. package/dist/cdn/components/tarot-card.js.map +4 -4
  47. package/dist/cdn/components/tarot-spread.js +27 -27
  48. package/dist/cdn/components/tarot-spread.js.map +4 -4
  49. package/dist/cdn/components/transits-table.js +15 -15
  50. package/dist/cdn/components/transits-table.js.map +4 -4
  51. package/dist/cdn/components/vedic-kundli.js +36 -36
  52. package/dist/cdn/components/vedic-kundli.js.map +4 -4
  53. package/dist/cdn/components/vedic-planets-table.js +11 -11
  54. package/dist/cdn/components/vedic-planets-table.js.map +4 -4
  55. package/dist/cdn/components/western-planets-table.js +8 -8
  56. package/dist/cdn/components/western-planets-table.js.map +4 -4
  57. package/dist/cdn/components/yoga-list.js +6 -6
  58. package/dist/cdn/components/yoga-list.js.map +4 -4
  59. package/dist/cdn/roxy-ui.js +231 -231
  60. package/dist/cdn/roxy-ui.js.map +4 -4
  61. package/dist/components/ashtakavarga-grid.d.ts +1 -0
  62. package/dist/components/ashtakavarga-grid.d.ts.map +1 -1
  63. package/dist/components/ashtakavarga-grid.js +47 -1
  64. package/dist/components/ashtakavarga-grid.js.map +3 -3
  65. package/dist/components/biorhythm-chart.d.ts +1 -0
  66. package/dist/components/biorhythm-chart.d.ts.map +1 -1
  67. package/dist/components/biorhythm-chart.js +47 -1
  68. package/dist/components/biorhythm-chart.js.map +3 -3
  69. package/dist/components/choghadiya-grid.d.ts +1 -0
  70. package/dist/components/choghadiya-grid.d.ts.map +1 -1
  71. package/dist/components/choghadiya-grid.js +47 -1
  72. package/dist/components/choghadiya-grid.js.map +3 -3
  73. package/dist/components/compatibility-card.d.ts +1 -0
  74. package/dist/components/compatibility-card.d.ts.map +1 -1
  75. package/dist/components/compatibility-card.js +47 -1
  76. package/dist/components/compatibility-card.js.map +3 -3
  77. package/dist/components/dasha-timeline.d.ts +1 -0
  78. package/dist/components/dasha-timeline.d.ts.map +1 -1
  79. package/dist/components/dasha-timeline.js +47 -1
  80. package/dist/components/dasha-timeline.js.map +3 -3
  81. package/dist/components/data.d.ts +1 -0
  82. package/dist/components/data.d.ts.map +1 -1
  83. package/dist/components/data.js +47 -1
  84. package/dist/components/data.js.map +3 -3
  85. package/dist/components/divisional-chart.d.ts +1 -0
  86. package/dist/components/divisional-chart.d.ts.map +1 -1
  87. package/dist/components/divisional-chart.js +47 -1
  88. package/dist/components/divisional-chart.js.map +3 -3
  89. package/dist/components/dosha-card.d.ts +1 -0
  90. package/dist/components/dosha-card.d.ts.map +1 -1
  91. package/dist/components/dosha-card.js +47 -1
  92. package/dist/components/dosha-card.js.map +3 -3
  93. package/dist/components/guna-milan.d.ts +1 -0
  94. package/dist/components/guna-milan.d.ts.map +1 -1
  95. package/dist/components/guna-milan.js +47 -1
  96. package/dist/components/guna-milan.js.map +3 -3
  97. package/dist/components/hexagram.d.ts +1 -0
  98. package/dist/components/hexagram.d.ts.map +1 -1
  99. package/dist/components/hexagram.js +47 -1
  100. package/dist/components/hexagram.js.map +3 -3
  101. package/dist/components/horoscope-card.d.ts +1 -0
  102. package/dist/components/horoscope-card.d.ts.map +1 -1
  103. package/dist/components/horoscope-card.js +47 -1
  104. package/dist/components/horoscope-card.js.map +3 -3
  105. package/dist/components/kp-chart.d.ts +1 -0
  106. package/dist/components/kp-chart.d.ts.map +1 -1
  107. package/dist/components/kp-chart.js +47 -1
  108. package/dist/components/kp-chart.js.map +3 -3
  109. package/dist/components/kp-planets-table.d.ts +1 -0
  110. package/dist/components/kp-planets-table.d.ts.map +1 -1
  111. package/dist/components/kp-planets-table.js +47 -1
  112. package/dist/components/kp-planets-table.js.map +3 -3
  113. package/dist/components/kp-ruling-planets.d.ts +1 -0
  114. package/dist/components/kp-ruling-planets.d.ts.map +1 -1
  115. package/dist/components/kp-ruling-planets.js +47 -1
  116. package/dist/components/kp-ruling-planets.js.map +3 -3
  117. package/dist/components/moon-phase.d.ts +1 -0
  118. package/dist/components/moon-phase.d.ts.map +1 -1
  119. package/dist/components/moon-phase.js +47 -1
  120. package/dist/components/moon-phase.js.map +3 -3
  121. package/dist/components/nakshatra-card.d.ts +1 -0
  122. package/dist/components/nakshatra-card.d.ts.map +1 -1
  123. package/dist/components/nakshatra-card.js +47 -1
  124. package/dist/components/nakshatra-card.js.map +3 -3
  125. package/dist/components/natal-chart.d.ts +1 -0
  126. package/dist/components/natal-chart.d.ts.map +1 -1
  127. package/dist/components/natal-chart.js +47 -1
  128. package/dist/components/natal-chart.js.map +3 -3
  129. package/dist/components/numerology-card.d.ts +1 -0
  130. package/dist/components/numerology-card.d.ts.map +1 -1
  131. package/dist/components/numerology-card.js +47 -1
  132. package/dist/components/numerology-card.js.map +3 -3
  133. package/dist/components/panchang-table.d.ts +1 -0
  134. package/dist/components/panchang-table.d.ts.map +1 -1
  135. package/dist/components/panchang-table.js +47 -1
  136. package/dist/components/panchang-table.js.map +3 -3
  137. package/dist/components/shadbala-table.d.ts +1 -0
  138. package/dist/components/shadbala-table.d.ts.map +1 -1
  139. package/dist/components/shadbala-table.js +47 -1
  140. package/dist/components/shadbala-table.js.map +3 -3
  141. package/dist/components/synastry-chart.d.ts +1 -0
  142. package/dist/components/synastry-chart.d.ts.map +1 -1
  143. package/dist/components/synastry-chart.js +47 -1
  144. package/dist/components/synastry-chart.js.map +3 -3
  145. package/dist/components/tarot-card.d.ts +1 -0
  146. package/dist/components/tarot-card.d.ts.map +1 -1
  147. package/dist/components/tarot-card.js +47 -1
  148. package/dist/components/tarot-card.js.map +3 -3
  149. package/dist/components/tarot-spread.d.ts +1 -0
  150. package/dist/components/tarot-spread.d.ts.map +1 -1
  151. package/dist/components/tarot-spread.js +47 -1
  152. package/dist/components/tarot-spread.js.map +3 -3
  153. package/dist/components/transits-table.d.ts +1 -0
  154. package/dist/components/transits-table.d.ts.map +1 -1
  155. package/dist/components/transits-table.js +47 -1
  156. package/dist/components/transits-table.js.map +3 -3
  157. package/dist/components/vedic-kundli.d.ts +1 -0
  158. package/dist/components/vedic-kundli.d.ts.map +1 -1
  159. package/dist/components/vedic-kundli.js +47 -1
  160. package/dist/components/vedic-kundli.js.map +3 -3
  161. package/dist/components/vedic-planets-table.d.ts +1 -0
  162. package/dist/components/vedic-planets-table.d.ts.map +1 -1
  163. package/dist/components/vedic-planets-table.js +47 -1
  164. package/dist/components/vedic-planets-table.js.map +3 -3
  165. package/dist/components/western-planets-table.d.ts +1 -0
  166. package/dist/components/western-planets-table.d.ts.map +1 -1
  167. package/dist/components/western-planets-table.js +47 -1
  168. package/dist/components/western-planets-table.js.map +3 -3
  169. package/dist/components/yoga-list.d.ts +1 -0
  170. package/dist/components/yoga-list.d.ts.map +1 -1
  171. package/dist/components/yoga-list.js +47 -1
  172. package/dist/components/yoga-list.js.map +3 -3
  173. package/dist/index.cjs +102 -29
  174. package/dist/index.cjs.map +3 -3
  175. package/dist/index.js +102 -29
  176. package/dist/index.js.map +3 -3
  177. package/dist/types/index.d.ts +1 -1
  178. package/dist/types/index.d.ts.map +1 -1
  179. package/dist/types/types.gen.d.ts +590 -202
  180. package/dist/types/types.gen.d.ts.map +1 -1
  181. package/dist/utils/markup-data.d.ts +57 -0
  182. package/dist/utils/markup-data.d.ts.map +1 -0
  183. package/dist/version.d.ts +1 -1
  184. package/package.json +1 -1
  185. package/src/components/ashtakavarga-grid.ts +9 -0
  186. package/src/components/biorhythm-chart.ts +9 -0
  187. package/src/components/choghadiya-grid.ts +9 -0
  188. package/src/components/compatibility-card.ts +9 -0
  189. package/src/components/dasha-timeline.ts +9 -0
  190. package/src/components/data.ts +9 -0
  191. package/src/components/divisional-chart.ts +9 -0
  192. package/src/components/dosha-card.ts +9 -0
  193. package/src/components/guna-milan.ts +9 -0
  194. package/src/components/hexagram.ts +9 -0
  195. package/src/components/horoscope-card.ts +9 -0
  196. package/src/components/kp-chart.ts +9 -0
  197. package/src/components/kp-planets-table.ts +9 -0
  198. package/src/components/kp-ruling-planets.ts +9 -0
  199. package/src/components/moon-phase.ts +9 -0
  200. package/src/components/nakshatra-card.ts +9 -0
  201. package/src/components/natal-chart.ts +9 -0
  202. package/src/components/numerology-card.ts +9 -0
  203. package/src/components/panchang-table.ts +9 -0
  204. package/src/components/shadbala-table.ts +9 -0
  205. package/src/components/synastry-chart.ts +9 -0
  206. package/src/components/tarot-card.ts +9 -0
  207. package/src/components/tarot-spread.ts +9 -0
  208. package/src/components/transits-table.ts +9 -0
  209. package/src/components/vedic-kundli.ts +9 -0
  210. package/src/components/vedic-planets-table.ts +9 -0
  211. package/src/components/western-planets-table.ts +9 -0
  212. package/src/components/yoga-list.ts +9 -0
  213. package/src/types/index.ts +1 -1
  214. package/src/types/types.gen.ts +602 -200
  215. package/src/utils/markup-data.ts +115 -0
  216. package/src/version.ts +1 -1
@@ -1,6 +1,6 @@
1
- "use strict";var RoxyUI=(()=>{var We=Object.defineProperty;var _t=Object.getOwnPropertyDescriptor;var pr=Object.getOwnPropertyNames;var mr=Object.prototype.hasOwnProperty;var hr=(n,a)=>{for(var e in a)We(n,e,{get:a[e],enumerable:!0})},gr=(n,a,e,t)=>{if(a&&typeof a=="object"||typeof a=="function")for(let r of pr(a))!mr.call(n,r)&&r!==e&&We(n,r,{get:()=>a[r],enumerable:!(t=_t(a,r))||t.enumerable});return n};var yr=n=>gr(We({},"__esModule",{value:!0}),n),p=(n,a,e,t)=>{for(var r=t>1?void 0:t?_t(a,e):a,o=n.length-1,i;o>=0;o--)(i=n[o])&&(r=(t?i(a,e,r):i(r))||r);return t&&r&&We(a,e,r),r};var ga={};hr(ga,{ROXY_COMPONENTS:()=>dt,ROXY_UI_COMPONENTS:()=>ha,ROXY_UI_VERSION:()=>cr,RoxyAshtakavargaGrid:()=>V,RoxyBiorhythmChart:()=>Y,RoxyChoghadiyaGrid:()=>pe,RoxyCompatibilityCard:()=>U,RoxyDashaTimeline:()=>F,RoxyData:()=>W,RoxyDivisionalChart:()=>X,RoxyDoshaCard:()=>Z,RoxyEndpointForm:()=>O,RoxyGunaMilan:()=>me,RoxyHexagram:()=>Q,RoxyHoroscopeCard:()=>ee,RoxyKpChart:()=>te,RoxyKpPlanetsTable:()=>he,RoxyKpRulingPlanets:()=>ge,RoxyLocationSearch:()=>_,RoxyMoonPhase:()=>re,RoxyNakshatraCard:()=>ye,RoxyNatalChart:()=>K,RoxyNumerologyCard:()=>ae,RoxyPanchangTable:()=>se,RoxyShadbalaTable:()=>ue,RoxySynastryChart:()=>xe,RoxyTarotCard:()=>oe,RoxyTarotSpread:()=>ne,RoxyTransitsTable:()=>fe,RoxyVedicKundli:()=>ie,RoxyVedicPlanetsTable:()=>be,RoxyWesternPlanetsTable:()=>ve,RoxyYogaList:()=>le});var Je=globalThis,Xe=Je.ShadowRoot&&(Je.ShadyCSS===void 0||Je.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,ct=Symbol(),Dt=new WeakMap,De=class{constructor(a,e,t){if(this._$cssResult$=!0,t!==ct)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=a,this.t=e}get styleSheet(){let a=this.o,e=this.t;if(Xe&&a===void 0){let t=e!==void 0&&e.length===1;t&&(a=Dt.get(e)),a===void 0&&((this.o=a=new CSSStyleSheet).replaceSync(this.cssText),t&&Dt.set(e,a))}return a}toString(){return this.cssText}},Ot=n=>new De(typeof n=="string"?n:n+"",void 0,ct),f=(n,...a)=>{let e=n.length===1?n[0]:a.reduce((t,r,o)=>t+(i=>{if(i._$cssResult$===!0)return i.cssText;if(typeof i=="number")return i;throw Error("Value passed to 'css' function must be a 'css' function result: "+i+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(r)+n[o+1],n[0]);return new De(e,n,ct)},Gt=(n,a)=>{if(Xe)n.adoptedStyleSheets=a.map(e=>e instanceof CSSStyleSheet?e:e.styleSheet);else for(let e of a){let t=document.createElement("style"),r=Je.litNonce;r!==void 0&&t.setAttribute("nonce",r),t.textContent=e.cssText,n.appendChild(t)}},pt=Xe?n=>n:n=>n instanceof CSSStyleSheet?(a=>{let e="";for(let t of a.cssRules)e+=t.cssText;return Ot(e)})(n):n;var{is:ur,defineProperty:xr,getOwnPropertyDescriptor:fr,getOwnPropertyNames:br,getOwnPropertySymbols:vr,getPrototypeOf:$r}=Object,Ze=globalThis,Ht=Ze.trustedTypes,wr=Ht?Ht.emptyScript:"",kr=Ze.reactiveElementPolyfillSupport,Oe=(n,a)=>n,Ge={toAttribute(n,a){switch(a){case Boolean:n=n?wr:null;break;case Object:case Array:n=n==null?n:JSON.stringify(n)}return n},fromAttribute(n,a){let e=n;switch(a){case Boolean:e=n!==null;break;case Number:e=n===null?null:Number(n);break;case Object:case Array:try{e=JSON.parse(n)}catch{e=null}}return e}},Qe=(n,a)=>!ur(n,a),jt={attribute:!0,type:String,converter:Ge,reflect:!1,useDefault:!1,hasChanged:Qe};Symbol.metadata??=Symbol("metadata"),Ze.litPropertyMetadata??=new WeakMap;var q=class extends HTMLElement{static addInitializer(a){this._$Ei(),(this.l??=[]).push(a)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(a,e=jt){if(e.state&&(e.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(a)&&((e=Object.create(e)).wrapped=!0),this.elementProperties.set(a,e),!e.noAccessor){let t=Symbol(),r=this.getPropertyDescriptor(a,t,e);r!==void 0&&xr(this.prototype,a,r)}}static getPropertyDescriptor(a,e,t){let{get:r,set:o}=fr(this.prototype,a)??{get(){return this[e]},set(i){this[e]=i}};return{get:r,set(i){let d=r?.call(this);o?.call(this,i),this.requestUpdate(a,d,t)},configurable:!0,enumerable:!0}}static getPropertyOptions(a){return this.elementProperties.get(a)??jt}static _$Ei(){if(this.hasOwnProperty(Oe("elementProperties")))return;let a=$r(this);a.finalize(),a.l!==void 0&&(this.l=[...a.l]),this.elementProperties=new Map(a.elementProperties)}static finalize(){if(this.hasOwnProperty(Oe("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(Oe("properties"))){let e=this.properties,t=[...br(e),...vr(e)];for(let r of t)this.createProperty(r,e[r])}let a=this[Symbol.metadata];if(a!==null){let e=litPropertyMetadata.get(a);if(e!==void 0)for(let[t,r]of e)this.elementProperties.set(t,r)}this._$Eh=new Map;for(let[e,t]of this.elementProperties){let r=this._$Eu(e,t);r!==void 0&&this._$Eh.set(r,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(a){let e=[];if(Array.isArray(a)){let t=new Set(a.flat(1/0).reverse());for(let r of t)e.unshift(pt(r))}else a!==void 0&&e.push(pt(a));return e}static _$Eu(a,e){let t=e.attribute;return t===!1?void 0:typeof t=="string"?t:typeof a=="string"?a.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise(a=>this.enableUpdating=a),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach(a=>a(this))}addController(a){(this._$EO??=new Set).add(a),this.renderRoot!==void 0&&this.isConnected&&a.hostConnected?.()}removeController(a){this._$EO?.delete(a)}_$E_(){let a=new Map,e=this.constructor.elementProperties;for(let t of e.keys())this.hasOwnProperty(t)&&(a.set(t,this[t]),delete this[t]);a.size>0&&(this._$Ep=a)}createRenderRoot(){let a=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return Gt(a,this.constructor.elementStyles),a}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach(a=>a.hostConnected?.())}enableUpdating(a){}disconnectedCallback(){this._$EO?.forEach(a=>a.hostDisconnected?.())}attributeChangedCallback(a,e,t){this._$AK(a,t)}_$ET(a,e){let t=this.constructor.elementProperties.get(a),r=this.constructor._$Eu(a,t);if(r!==void 0&&t.reflect===!0){let o=(t.converter?.toAttribute!==void 0?t.converter:Ge).toAttribute(e,t.type);this._$Em=a,o==null?this.removeAttribute(r):this.setAttribute(r,o),this._$Em=null}}_$AK(a,e){let t=this.constructor,r=t._$Eh.get(a);if(r!==void 0&&this._$Em!==r){let o=t.getPropertyOptions(r),i=typeof o.converter=="function"?{fromAttribute:o.converter}:o.converter?.fromAttribute!==void 0?o.converter:Ge;this._$Em=r;let d=i.fromAttribute(e,o.type);this[r]=d??this._$Ej?.get(r)??d,this._$Em=null}}requestUpdate(a,e,t,r=!1,o){if(a!==void 0){let i=this.constructor;if(r===!1&&(o=this[a]),t??=i.getPropertyOptions(a),!((t.hasChanged??Qe)(o,e)||t.useDefault&&t.reflect&&o===this._$Ej?.get(a)&&!this.hasAttribute(i._$Eu(a,t))))return;this.C(a,e,t)}this.isUpdatePending===!1&&(this._$ES=this._$EP())}C(a,e,{useDefault:t,reflect:r,wrapped:o},i){t&&!(this._$Ej??=new Map).has(a)&&(this._$Ej.set(a,i??e??this[a]),o!==!0||i!==void 0)||(this._$AL.has(a)||(this.hasUpdated||t||(e=void 0),this._$AL.set(a,e)),r===!0&&this._$Em!==a&&(this._$Eq??=new Set).add(a))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}let a=this.scheduleUpdate();return a!=null&&await a,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(let[r,o]of this._$Ep)this[r]=o;this._$Ep=void 0}let t=this.constructor.elementProperties;if(t.size>0)for(let[r,o]of t){let{wrapped:i}=o,d=this[r];i!==!0||this._$AL.has(r)||d===void 0||this.C(r,void 0,o,d)}}let a=!1,e=this._$AL;try{a=this.shouldUpdate(e),a?(this.willUpdate(e),this._$EO?.forEach(t=>t.hostUpdate?.()),this.update(e)):this._$EM()}catch(t){throw a=!1,this._$EM(),t}a&&this._$AE(e)}willUpdate(a){}_$AE(a){this._$EO?.forEach(e=>e.hostUpdated?.()),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(a)),this.updated(a)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(a){return!0}update(a){this._$Eq&&=this._$Eq.forEach(e=>this._$ET(e,this[e])),this._$EM()}updated(a){}firstUpdated(a){}};q.elementStyles=[],q.shadowRootOptions={mode:"open"},q[Oe("elementProperties")]=new Map,q[Oe("finalized")]=new Map,kr?.({ReactiveElement:q}),(Ze.reactiveElementVersions??=[]).push("2.1.2");var ft=globalThis,It=n=>n,et=ft.trustedTypes,Bt=et?et.createPolicy("lit-html",{createHTML:n=>n}):void 0,Ft="$lit$",de=`lit$${Math.random().toFixed(9).slice(2)}$`,Wt="?"+de,Sr=`<${Wt}>`,Se=document,je=()=>Se.createComment(""),Ie=n=>n===null||typeof n!="object"&&typeof n!="function",bt=Array.isArray,Ar=n=>bt(n)||typeof n?.[Symbol.iterator]=="function",mt=`[
2
- \f\r]`,He=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,Kt=/-->/g,qt=/>/g,we=RegExp(`>|${mt}(?:([^\\s"'>=/]+)(${mt}*=${mt}*(?:[^
3
- \f\r"'\`<>=]|("|')|))|$)`,"g"),Vt=/'/g,Yt=/"/g,Jt=/^(?:script|style|textarea|title)$/i,vt=n=>(a,...e)=>({_$litType$:n,strings:a,values:e}),s=vt(1),w=vt(2),va=vt(3),Ae=Symbol.for("lit-noChange"),l=Symbol.for("lit-nothing"),Ut=new WeakMap,ke=Se.createTreeWalker(Se,129);function Xt(n,a){if(!bt(n)||!n.hasOwnProperty("raw"))throw Error("invalid template strings array");return Bt!==void 0?Bt.createHTML(a):a}var Er=(n,a)=>{let e=n.length-1,t=[],r,o=a===2?"<svg>":a===3?"<math>":"",i=He;for(let d=0;d<e;d++){let c=n[d],m,g,h=-1,u=0;for(;u<c.length&&(i.lastIndex=u,g=i.exec(c),g!==null);)u=i.lastIndex,i===He?g[1]==="!--"?i=Kt:g[1]!==void 0?i=qt:g[2]!==void 0?(Jt.test(g[2])&&(r=RegExp("</"+g[2],"g")),i=we):g[3]!==void 0&&(i=we):i===we?g[0]===">"?(i=r??He,h=-1):g[1]===void 0?h=-2:(h=i.lastIndex-g[2].length,m=g[1],i=g[3]===void 0?we:g[3]==='"'?Yt:Vt):i===Yt||i===Vt?i=we:i===Kt||i===qt?i=He:(i=we,r=void 0);let k=i===we&&n[d+1].startsWith("/>")?" ":"";o+=i===He?c+Sr:h>=0?(t.push(m),c.slice(0,h)+Ft+c.slice(h)+de+k):c+de+(h===-2?d:k)}return[Xt(n,o+(n[e]||"<?>")+(a===2?"</svg>":a===3?"</math>":"")),t]},Be=class n{constructor({strings:a,_$litType$:e},t){let r;this.parts=[];let o=0,i=0,d=a.length-1,c=this.parts,[m,g]=Er(a,e);if(this.el=n.createElement(m,t),ke.currentNode=this.el.content,e===2||e===3){let h=this.el.content.firstChild;h.replaceWith(...h.childNodes)}for(;(r=ke.nextNode())!==null&&c.length<d;){if(r.nodeType===1){if(r.hasAttributes())for(let h of r.getAttributeNames())if(h.endsWith(Ft)){let u=g[i++],k=r.getAttribute(h).split(de),$=/([.?@])?(.*)/.exec(u);c.push({type:1,index:o,name:$[2],strings:k,ctor:$[1]==="."?gt:$[1]==="?"?yt:$[1]==="@"?ut:Te}),r.removeAttribute(h)}else h.startsWith(de)&&(c.push({type:6,index:o}),r.removeAttribute(h));if(Jt.test(r.tagName)){let h=r.textContent.split(de),u=h.length-1;if(u>0){r.textContent=et?et.emptyScript:"";for(let k=0;k<u;k++)r.append(h[k],je()),ke.nextNode(),c.push({type:2,index:++o});r.append(h[u],je())}}}else if(r.nodeType===8)if(r.data===Wt)c.push({type:2,index:o});else{let h=-1;for(;(h=r.data.indexOf(de,h+1))!==-1;)c.push({type:7,index:o}),h+=de.length-1}o++}}static createElement(a,e){let t=Se.createElement("template");return t.innerHTML=a,t}};function Pe(n,a,e=n,t){if(a===Ae)return a;let r=t!==void 0?e._$Co?.[t]:e._$Cl,o=Ie(a)?void 0:a._$litDirective$;return r?.constructor!==o&&(r?._$AO?.(!1),o===void 0?r=void 0:(r=new o(n),r._$AT(n,e,t)),t!==void 0?(e._$Co??=[])[t]=r:e._$Cl=r),r!==void 0&&(a=Pe(n,r._$AS(n,a.values),r,t)),a}var ht=class{constructor(a,e){this._$AV=[],this._$AN=void 0,this._$AD=a,this._$AM=e}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(a){let{el:{content:e},parts:t}=this._$AD,r=(a?.creationScope??Se).importNode(e,!0);ke.currentNode=r;let o=ke.nextNode(),i=0,d=0,c=t[0];for(;c!==void 0;){if(i===c.index){let m;c.type===2?m=new Ke(o,o.nextSibling,this,a):c.type===1?m=new c.ctor(o,c.name,c.strings,this,a):c.type===6&&(m=new xt(o,this,a)),this._$AV.push(m),c=t[++d]}i!==c?.index&&(o=ke.nextNode(),i++)}return ke.currentNode=Se,r}p(a){let e=0;for(let t of this._$AV)t!==void 0&&(t.strings!==void 0?(t._$AI(a,t,e),e+=t.strings.length-2):t._$AI(a[e])),e++}},Ke=class n{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(a,e,t,r){this.type=2,this._$AH=l,this._$AN=void 0,this._$AA=a,this._$AB=e,this._$AM=t,this.options=r,this._$Cv=r?.isConnected??!0}get parentNode(){let a=this._$AA.parentNode,e=this._$AM;return e!==void 0&&a?.nodeType===11&&(a=e.parentNode),a}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(a,e=this){a=Pe(this,a,e),Ie(a)?a===l||a==null||a===""?(this._$AH!==l&&this._$AR(),this._$AH=l):a!==this._$AH&&a!==Ae&&this._(a):a._$litType$!==void 0?this.$(a):a.nodeType!==void 0?this.T(a):Ar(a)?this.k(a):this._(a)}O(a){return this._$AA.parentNode.insertBefore(a,this._$AB)}T(a){this._$AH!==a&&(this._$AR(),this._$AH=this.O(a))}_(a){this._$AH!==l&&Ie(this._$AH)?this._$AA.nextSibling.data=a:this.T(Se.createTextNode(a)),this._$AH=a}$(a){let{values:e,_$litType$:t}=a,r=typeof t=="number"?this._$AC(a):(t.el===void 0&&(t.el=Be.createElement(Xt(t.h,t.h[0]),this.options)),t);if(this._$AH?._$AD===r)this._$AH.p(e);else{let o=new ht(r,this),i=o.u(this.options);o.p(e),this.T(i),this._$AH=o}}_$AC(a){let e=Ut.get(a.strings);return e===void 0&&Ut.set(a.strings,e=new Be(a)),e}k(a){bt(this._$AH)||(this._$AH=[],this._$AR());let e=this._$AH,t,r=0;for(let o of a)r===e.length?e.push(t=new n(this.O(je()),this.O(je()),this,this.options)):t=e[r],t._$AI(o),r++;r<e.length&&(this._$AR(t&&t._$AB.nextSibling,r),e.length=r)}_$AR(a=this._$AA.nextSibling,e){for(this._$AP?.(!1,!0,e);a!==this._$AB;){let t=It(a).nextSibling;It(a).remove(),a=t}}setConnected(a){this._$AM===void 0&&(this._$Cv=a,this._$AP?.(a))}},Te=class{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(a,e,t,r,o){this.type=1,this._$AH=l,this._$AN=void 0,this.element=a,this.name=e,this._$AM=r,this.options=o,t.length>2||t[0]!==""||t[1]!==""?(this._$AH=Array(t.length-1).fill(new String),this.strings=t):this._$AH=l}_$AI(a,e=this,t,r){let o=this.strings,i=!1;if(o===void 0)a=Pe(this,a,e,0),i=!Ie(a)||a!==this._$AH&&a!==Ae,i&&(this._$AH=a);else{let d=a,c,m;for(a=o[0],c=0;c<o.length-1;c++)m=Pe(this,d[t+c],e,c),m===Ae&&(m=this._$AH[c]),i||=!Ie(m)||m!==this._$AH[c],m===l?a=l:a!==l&&(a+=(m??"")+o[c+1]),this._$AH[c]=m}i&&!r&&this.j(a)}j(a){a===l?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,a??"")}},gt=class extends Te{constructor(){super(...arguments),this.type=3}j(a){this.element[this.name]=a===l?void 0:a}},yt=class extends Te{constructor(){super(...arguments),this.type=4}j(a){this.element.toggleAttribute(this.name,!!a&&a!==l)}},ut=class extends Te{constructor(a,e,t,r,o){super(a,e,t,r,o),this.type=5}_$AI(a,e=this){if((a=Pe(this,a,e,0)??l)===Ae)return;let t=this._$AH,r=a===l&&t!==l||a.capture!==t.capture||a.once!==t.once||a.passive!==t.passive,o=a!==l&&(t===l||r);r&&this.element.removeEventListener(this.name,this,t),o&&this.element.addEventListener(this.name,this,a),this._$AH=a}handleEvent(a){typeof this._$AH=="function"?this._$AH.call(this.options?.host??this.element,a):this._$AH.handleEvent(a)}},xt=class{constructor(a,e,t){this.element=a,this.type=6,this._$AN=void 0,this._$AM=e,this.options=t}get _$AU(){return this._$AM._$AU}_$AI(a){Pe(this,a)}};var Cr=ft.litHtmlPolyfillSupport;Cr?.(Be,Ke),(ft.litHtmlVersions??=[]).push("3.3.2");var Zt=(n,a,e)=>{let t=e?.renderBefore??a,r=t._$litPart$;if(r===void 0){let o=e?.renderBefore??null;t._$litPart$=r=new Ke(a.insertBefore(je(),o),o,void 0,e??{})}return r._$AI(n),r};var $t=globalThis,x=class extends q{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){let a=super.createRenderRoot();return this.renderOptions.renderBefore??=a.firstChild,a}update(a){let e=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(a),this._$Do=Zt(e,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return Ae}};x._$litElement$=!0,x.finalized=!0,$t.litElementHydrateSupport?.({LitElement:x});var Lr=$t.litElementPolyfillSupport;Lr?.({LitElement:x});($t.litElementVersions??=[]).push("4.2.2");var b=n=>(a,e)=>{e!==void 0?e.addInitializer(()=>{customElements.define(n,a)}):customElements.define(n,a)};var Pr={attribute:!0,type:String,converter:Ge,reflect:!1,hasChanged:Qe},Tr=(n=Pr,a,e)=>{let{kind:t,metadata:r}=e,o=globalThis.litPropertyMetadata.get(r);if(o===void 0&&globalThis.litPropertyMetadata.set(r,o=new Map),t==="setter"&&((n=Object.create(n)).wrapped=!0),o.set(e.name,n),t==="accessor"){let{name:i}=e;return{set(d){let c=a.get.call(this);a.set.call(this,d),this.requestUpdate(i,c,n,!0,d)},init(d){return d!==void 0&&this.C(i,void 0,n,d),d}}}if(t==="setter"){let{name:i}=e;return function(d){let c=this[i];a.call(this,d),this.requestUpdate(i,c,n,!0,d)}}throw Error("Unsupported decorator location: "+t)};function y(n){return(a,e)=>typeof e=="object"?Tr(n,a,e):((t,r,o)=>{let i=r.hasOwnProperty(o);return r.constructor.createProperty(o,t),i?Object.getOwnPropertyDescriptor(r,o):void 0})(n,a,e)}function z(n){return y({...n,state:!0,attribute:!1})}var R={Sun:"\u2609",Moon:"\u263D",Mercury:"\u263F",Venus:"\u2640",Earth:"\u2641",Mars:"\u2642",Jupiter:"\u2643",Saturn:"\u2644",Uranus:"\u2645",Neptune:"\u2646",Pluto:"\u2647",Rahu:"\u260A",Ketu:"\u260B",Ascendant:"Asc",Lagna:"La",NorthNode:"\u260A",SouthNode:"\u260B","North node":"\u260A","South node":"\u260B",Chiron:"\u26B7",Lilith:"\u26B8","Black moon lilith":"\u26B8"},Qt={Sun:"Su",Moon:"Mo",Mercury:"Me",Venus:"Ve",Mars:"Ma",Jupiter:"Ju",Saturn:"Sa",Uranus:"Ur",Neptune:"Ne",Pluto:"Pl",Rahu:"Ra",Ketu:"Ke",Ascendant:"Asc",Lagna:"La"},G={Aries:"\u2648",Taurus:"\u2649",Gemini:"\u264A",Cancer:"\u264B",Leo:"\u264C",Virgo:"\u264D",Libra:"\u264E",Scorpio:"\u264F",Sagittarius:"\u2650",Capricorn:"\u2651",Aquarius:"\u2652",Pisces:"\u2653"},wt={Aries:"Ar",Taurus:"Ta",Gemini:"Ge",Cancer:"Cn",Leo:"Le",Virgo:"Vi",Libra:"Li",Scorpio:"Sc",Sagittarius:"Sg",Capricorn:"Cp",Aquarius:"Aq",Pisces:"Pi"},M=["Aries","Taurus","Gemini","Cancer","Leo","Virgo","Libra","Scorpio","Sagittarius","Capricorn","Aquarius","Pisces"],ns=M.map(n=>n.toLowerCase()),kt={conjunction:"\u260C",opposition:"\u260D",trine:"\u25B3",square:"\u25A1",sextile:"\u2731",quincunx:"\u22BB",semisextile:"\u22BC"},St={heaven:"\u2630",lake:"\u2631",fire:"\u2632",thunder:"\u2633",wind:"\u2634",water:"\u2635",mountain:"\u2636",earth:"\u2637",Heaven:"\u2630",Lake:"\u2631",Fire:"\u2632",Thunder:"\u2633",Wind:"\u2634",Water:"\u2635",Mountain:"\u2636",Earth:"\u2637"},er={"new moon":"\u{1F311}","waxing crescent":"\u{1F312}","first quarter":"\u{1F313}","waxing gibbous":"\u{1F314}","full moon":"\u{1F315}","waning gibbous":"\u{1F316}","last quarter":"\u{1F317}","waning crescent":"\u{1F318}"};var v=f`
1
+ "use strict";var RoxyUI=(()=>{var Je=Object.defineProperty;var Dt=Object.getOwnPropertyDescriptor;var mr=Object.getOwnPropertyNames;var hr=Object.prototype.hasOwnProperty;var gr=(n,a)=>{for(var e in a)Je(n,e,{get:a[e],enumerable:!0})},ur=(n,a,e,t)=>{if(a&&typeof a=="object"||typeof a=="function")for(let r of mr(a))!hr.call(n,r)&&r!==e&&Je(n,r,{get:()=>a[r],enumerable:!(t=Dt(a,r))||t.enumerable});return n};var yr=n=>ur(Je({},"__esModule",{value:!0}),n),p=(n,a,e,t)=>{for(var r=t>1?void 0:t?Dt(a,e):a,o=n.length-1,i;o>=0;o--)(i=n[o])&&(r=(t?i(a,e,r):i(r))||r);return t&&r&&Je(a,e,r),r};var xa={};gr(xa,{ROXY_COMPONENTS:()=>ct,ROXY_UI_COMPONENTS:()=>ya,ROXY_UI_VERSION:()=>pr,RoxyAshtakavargaGrid:()=>Y,RoxyBiorhythmChart:()=>U,RoxyChoghadiyaGrid:()=>me,RoxyCompatibilityCard:()=>F,RoxyDashaTimeline:()=>W,RoxyData:()=>J,RoxyDivisionalChart:()=>Z,RoxyDoshaCard:()=>Q,RoxyEndpointForm:()=>H,RoxyGunaMilan:()=>he,RoxyHexagram:()=>ee,RoxyHoroscopeCard:()=>te,RoxyKpChart:()=>re,RoxyKpPlanetsTable:()=>ge,RoxyKpRulingPlanets:()=>ue,RoxyLocationSearch:()=>D,RoxyMoonPhase:()=>ae,RoxyNakshatraCard:()=>ye,RoxyNatalChart:()=>q,RoxyNumerologyCard:()=>se,RoxyPanchangTable:()=>oe,RoxyShadbalaTable:()=>xe,RoxySynastryChart:()=>fe,RoxyTarotCard:()=>ne,RoxyTarotSpread:()=>ie,RoxyTransitsTable:()=>be,RoxyVedicKundli:()=>le,RoxyVedicPlanetsTable:()=>ve,RoxyWesternPlanetsTable:()=>$e,RoxyYogaList:()=>de});var Xe=globalThis,Ze=Xe.ShadowRoot&&(Xe.ShadyCSS===void 0||Xe.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,pt=Symbol(),Ot=new WeakMap,Oe=class{constructor(a,e,t){if(this._$cssResult$=!0,t!==pt)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=a,this.t=e}get styleSheet(){let a=this.o,e=this.t;if(Ze&&a===void 0){let t=e!==void 0&&e.length===1;t&&(a=Ot.get(e)),a===void 0&&((this.o=a=new CSSStyleSheet).replaceSync(this.cssText),t&&Ot.set(e,a))}return a}toString(){return this.cssText}},Ht=n=>new Oe(typeof n=="string"?n:n+"",void 0,pt),f=(n,...a)=>{let e=n.length===1?n[0]:a.reduce((t,r,o)=>t+(i=>{if(i._$cssResult$===!0)return i.cssText;if(typeof i=="number")return i;throw Error("Value passed to 'css' function must be a 'css' function result: "+i+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(r)+n[o+1],n[0]);return new Oe(e,n,pt)},Gt=(n,a)=>{if(Ze)n.adoptedStyleSheets=a.map(e=>e instanceof CSSStyleSheet?e:e.styleSheet);else for(let e of a){let t=document.createElement("style"),r=Xe.litNonce;r!==void 0&&t.setAttribute("nonce",r),t.textContent=e.cssText,n.appendChild(t)}},mt=Ze?n=>n:n=>n instanceof CSSStyleSheet?(a=>{let e="";for(let t of a.cssRules)e+=t.cssText;return Ht(e)})(n):n;var{is:xr,defineProperty:fr,getOwnPropertyDescriptor:br,getOwnPropertyNames:vr,getOwnPropertySymbols:$r,getPrototypeOf:wr}=Object,Qe=globalThis,jt=Qe.trustedTypes,kr=jt?jt.emptyScript:"",Sr=Qe.reactiveElementPolyfillSupport,He=(n,a)=>n,Ge={toAttribute(n,a){switch(a){case Boolean:n=n?kr:null;break;case Object:case Array:n=n==null?n:JSON.stringify(n)}return n},fromAttribute(n,a){let e=n;switch(a){case Boolean:e=n!==null;break;case Number:e=n===null?null:Number(n);break;case Object:case Array:try{e=JSON.parse(n)}catch{e=null}}return e}},et=(n,a)=>!xr(n,a),It={attribute:!0,type:String,converter:Ge,reflect:!1,useDefault:!1,hasChanged:et};Symbol.metadata??=Symbol("metadata"),Qe.litPropertyMetadata??=new WeakMap;var V=class extends HTMLElement{static addInitializer(a){this._$Ei(),(this.l??=[]).push(a)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(a,e=It){if(e.state&&(e.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(a)&&((e=Object.create(e)).wrapped=!0),this.elementProperties.set(a,e),!e.noAccessor){let t=Symbol(),r=this.getPropertyDescriptor(a,t,e);r!==void 0&&fr(this.prototype,a,r)}}static getPropertyDescriptor(a,e,t){let{get:r,set:o}=br(this.prototype,a)??{get(){return this[e]},set(i){this[e]=i}};return{get:r,set(i){let d=r?.call(this);o?.call(this,i),this.requestUpdate(a,d,t)},configurable:!0,enumerable:!0}}static getPropertyOptions(a){return this.elementProperties.get(a)??It}static _$Ei(){if(this.hasOwnProperty(He("elementProperties")))return;let a=wr(this);a.finalize(),a.l!==void 0&&(this.l=[...a.l]),this.elementProperties=new Map(a.elementProperties)}static finalize(){if(this.hasOwnProperty(He("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(He("properties"))){let e=this.properties,t=[...vr(e),...$r(e)];for(let r of t)this.createProperty(r,e[r])}let a=this[Symbol.metadata];if(a!==null){let e=litPropertyMetadata.get(a);if(e!==void 0)for(let[t,r]of e)this.elementProperties.set(t,r)}this._$Eh=new Map;for(let[e,t]of this.elementProperties){let r=this._$Eu(e,t);r!==void 0&&this._$Eh.set(r,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(a){let e=[];if(Array.isArray(a)){let t=new Set(a.flat(1/0).reverse());for(let r of t)e.unshift(mt(r))}else a!==void 0&&e.push(mt(a));return e}static _$Eu(a,e){let t=e.attribute;return t===!1?void 0:typeof t=="string"?t:typeof a=="string"?a.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise(a=>this.enableUpdating=a),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach(a=>a(this))}addController(a){(this._$EO??=new Set).add(a),this.renderRoot!==void 0&&this.isConnected&&a.hostConnected?.()}removeController(a){this._$EO?.delete(a)}_$E_(){let a=new Map,e=this.constructor.elementProperties;for(let t of e.keys())this.hasOwnProperty(t)&&(a.set(t,this[t]),delete this[t]);a.size>0&&(this._$Ep=a)}createRenderRoot(){let a=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return Gt(a,this.constructor.elementStyles),a}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach(a=>a.hostConnected?.())}enableUpdating(a){}disconnectedCallback(){this._$EO?.forEach(a=>a.hostDisconnected?.())}attributeChangedCallback(a,e,t){this._$AK(a,t)}_$ET(a,e){let t=this.constructor.elementProperties.get(a),r=this.constructor._$Eu(a,t);if(r!==void 0&&t.reflect===!0){let o=(t.converter?.toAttribute!==void 0?t.converter:Ge).toAttribute(e,t.type);this._$Em=a,o==null?this.removeAttribute(r):this.setAttribute(r,o),this._$Em=null}}_$AK(a,e){let t=this.constructor,r=t._$Eh.get(a);if(r!==void 0&&this._$Em!==r){let o=t.getPropertyOptions(r),i=typeof o.converter=="function"?{fromAttribute:o.converter}:o.converter?.fromAttribute!==void 0?o.converter:Ge;this._$Em=r;let d=i.fromAttribute(e,o.type);this[r]=d??this._$Ej?.get(r)??d,this._$Em=null}}requestUpdate(a,e,t,r=!1,o){if(a!==void 0){let i=this.constructor;if(r===!1&&(o=this[a]),t??=i.getPropertyOptions(a),!((t.hasChanged??et)(o,e)||t.useDefault&&t.reflect&&o===this._$Ej?.get(a)&&!this.hasAttribute(i._$Eu(a,t))))return;this.C(a,e,t)}this.isUpdatePending===!1&&(this._$ES=this._$EP())}C(a,e,{useDefault:t,reflect:r,wrapped:o},i){t&&!(this._$Ej??=new Map).has(a)&&(this._$Ej.set(a,i??e??this[a]),o!==!0||i!==void 0)||(this._$AL.has(a)||(this.hasUpdated||t||(e=void 0),this._$AL.set(a,e)),r===!0&&this._$Em!==a&&(this._$Eq??=new Set).add(a))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}let a=this.scheduleUpdate();return a!=null&&await a,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(let[r,o]of this._$Ep)this[r]=o;this._$Ep=void 0}let t=this.constructor.elementProperties;if(t.size>0)for(let[r,o]of t){let{wrapped:i}=o,d=this[r];i!==!0||this._$AL.has(r)||d===void 0||this.C(r,void 0,o,d)}}let a=!1,e=this._$AL;try{a=this.shouldUpdate(e),a?(this.willUpdate(e),this._$EO?.forEach(t=>t.hostUpdate?.()),this.update(e)):this._$EM()}catch(t){throw a=!1,this._$EM(),t}a&&this._$AE(e)}willUpdate(a){}_$AE(a){this._$EO?.forEach(e=>e.hostUpdated?.()),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(a)),this.updated(a)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(a){return!0}update(a){this._$Eq&&=this._$Eq.forEach(e=>this._$ET(e,this[e])),this._$EM()}updated(a){}firstUpdated(a){}};V.elementStyles=[],V.shadowRootOptions={mode:"open"},V[He("elementProperties")]=new Map,V[He("finalized")]=new Map,Sr?.({ReactiveElement:V}),(Qe.reactiveElementVersions??=[]).push("2.1.2");var bt=globalThis,Bt=n=>n,tt=bt.trustedTypes,Kt=tt?tt.createPolicy("lit-html",{createHTML:n=>n}):void 0,Wt="$lit$",ce=`lit$${Math.random().toFixed(9).slice(2)}$`,Jt="?"+ce,Ar=`<${Jt}>`,Ae=document,Ie=()=>Ae.createComment(""),Be=n=>n===null||typeof n!="object"&&typeof n!="function",vt=Array.isArray,Cr=n=>vt(n)||typeof n?.[Symbol.iterator]=="function",ht=`[
2
+ \f\r]`,je=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,qt=/-->/g,Vt=/>/g,ke=RegExp(`>|${ht}(?:([^\\s"'>=/]+)(${ht}*=${ht}*(?:[^
3
+ \f\r"'\`<>=]|("|')|))|$)`,"g"),Yt=/'/g,Ut=/"/g,Xt=/^(?:script|style|textarea|title)$/i,$t=n=>(a,...e)=>({_$litType$:n,strings:a,values:e}),s=$t(1),k=$t(2),ka=$t(3),Ce=Symbol.for("lit-noChange"),l=Symbol.for("lit-nothing"),Ft=new WeakMap,Se=Ae.createTreeWalker(Ae,129);function Zt(n,a){if(!vt(n)||!n.hasOwnProperty("raw"))throw Error("invalid template strings array");return Kt!==void 0?Kt.createHTML(a):a}var Er=(n,a)=>{let e=n.length-1,t=[],r,o=a===2?"<svg>":a===3?"<math>":"",i=je;for(let d=0;d<e;d++){let c=n[d],m,g,h=-1,y=0;for(;y<c.length&&(i.lastIndex=y,g=i.exec(c),g!==null);)y=i.lastIndex,i===je?g[1]==="!--"?i=qt:g[1]!==void 0?i=Vt:g[2]!==void 0?(Xt.test(g[2])&&(r=RegExp("</"+g[2],"g")),i=ke):g[3]!==void 0&&(i=ke):i===ke?g[0]===">"?(i=r??je,h=-1):g[1]===void 0?h=-2:(h=i.lastIndex-g[2].length,m=g[1],i=g[3]===void 0?ke:g[3]==='"'?Ut:Yt):i===Ut||i===Yt?i=ke:i===qt||i===Vt?i=je:(i=ke,r=void 0);let S=i===ke&&n[d+1].startsWith("/>")?" ":"";o+=i===je?c+Ar:h>=0?(t.push(m),c.slice(0,h)+Wt+c.slice(h)+ce+S):c+ce+(h===-2?d:S)}return[Zt(n,o+(n[e]||"<?>")+(a===2?"</svg>":a===3?"</math>":"")),t]},Ke=class n{constructor({strings:a,_$litType$:e},t){let r;this.parts=[];let o=0,i=0,d=a.length-1,c=this.parts,[m,g]=Er(a,e);if(this.el=n.createElement(m,t),Se.currentNode=this.el.content,e===2||e===3){let h=this.el.content.firstChild;h.replaceWith(...h.childNodes)}for(;(r=Se.nextNode())!==null&&c.length<d;){if(r.nodeType===1){if(r.hasAttributes())for(let h of r.getAttributeNames())if(h.endsWith(Wt)){let y=g[i++],S=r.getAttribute(h).split(ce),w=/([.?@])?(.*)/.exec(y);c.push({type:1,index:o,name:w[2],strings:S,ctor:w[1]==="."?ut:w[1]==="?"?yt:w[1]==="@"?xt:Re}),r.removeAttribute(h)}else h.startsWith(ce)&&(c.push({type:6,index:o}),r.removeAttribute(h));if(Xt.test(r.tagName)){let h=r.textContent.split(ce),y=h.length-1;if(y>0){r.textContent=tt?tt.emptyScript:"";for(let S=0;S<y;S++)r.append(h[S],Ie()),Se.nextNode(),c.push({type:2,index:++o});r.append(h[y],Ie())}}}else if(r.nodeType===8)if(r.data===Jt)c.push({type:2,index:o});else{let h=-1;for(;(h=r.data.indexOf(ce,h+1))!==-1;)c.push({type:7,index:o}),h+=ce.length-1}o++}}static createElement(a,e){let t=Ae.createElement("template");return t.innerHTML=a,t}};function Te(n,a,e=n,t){if(a===Ce)return a;let r=t!==void 0?e._$Co?.[t]:e._$Cl,o=Be(a)?void 0:a._$litDirective$;return r?.constructor!==o&&(r?._$AO?.(!1),o===void 0?r=void 0:(r=new o(n),r._$AT(n,e,t)),t!==void 0?(e._$Co??=[])[t]=r:e._$Cl=r),r!==void 0&&(a=Te(n,r._$AS(n,a.values),r,t)),a}var gt=class{constructor(a,e){this._$AV=[],this._$AN=void 0,this._$AD=a,this._$AM=e}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(a){let{el:{content:e},parts:t}=this._$AD,r=(a?.creationScope??Ae).importNode(e,!0);Se.currentNode=r;let o=Se.nextNode(),i=0,d=0,c=t[0];for(;c!==void 0;){if(i===c.index){let m;c.type===2?m=new qe(o,o.nextSibling,this,a):c.type===1?m=new c.ctor(o,c.name,c.strings,this,a):c.type===6&&(m=new ft(o,this,a)),this._$AV.push(m),c=t[++d]}i!==c?.index&&(o=Se.nextNode(),i++)}return Se.currentNode=Ae,r}p(a){let e=0;for(let t of this._$AV)t!==void 0&&(t.strings!==void 0?(t._$AI(a,t,e),e+=t.strings.length-2):t._$AI(a[e])),e++}},qe=class n{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(a,e,t,r){this.type=2,this._$AH=l,this._$AN=void 0,this._$AA=a,this._$AB=e,this._$AM=t,this.options=r,this._$Cv=r?.isConnected??!0}get parentNode(){let a=this._$AA.parentNode,e=this._$AM;return e!==void 0&&a?.nodeType===11&&(a=e.parentNode),a}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(a,e=this){a=Te(this,a,e),Be(a)?a===l||a==null||a===""?(this._$AH!==l&&this._$AR(),this._$AH=l):a!==this._$AH&&a!==Ce&&this._(a):a._$litType$!==void 0?this.$(a):a.nodeType!==void 0?this.T(a):Cr(a)?this.k(a):this._(a)}O(a){return this._$AA.parentNode.insertBefore(a,this._$AB)}T(a){this._$AH!==a&&(this._$AR(),this._$AH=this.O(a))}_(a){this._$AH!==l&&Be(this._$AH)?this._$AA.nextSibling.data=a:this.T(Ae.createTextNode(a)),this._$AH=a}$(a){let{values:e,_$litType$:t}=a,r=typeof t=="number"?this._$AC(a):(t.el===void 0&&(t.el=Ke.createElement(Zt(t.h,t.h[0]),this.options)),t);if(this._$AH?._$AD===r)this._$AH.p(e);else{let o=new gt(r,this),i=o.u(this.options);o.p(e),this.T(i),this._$AH=o}}_$AC(a){let e=Ft.get(a.strings);return e===void 0&&Ft.set(a.strings,e=new Ke(a)),e}k(a){vt(this._$AH)||(this._$AH=[],this._$AR());let e=this._$AH,t,r=0;for(let o of a)r===e.length?e.push(t=new n(this.O(Ie()),this.O(Ie()),this,this.options)):t=e[r],t._$AI(o),r++;r<e.length&&(this._$AR(t&&t._$AB.nextSibling,r),e.length=r)}_$AR(a=this._$AA.nextSibling,e){for(this._$AP?.(!1,!0,e);a!==this._$AB;){let t=Bt(a).nextSibling;Bt(a).remove(),a=t}}setConnected(a){this._$AM===void 0&&(this._$Cv=a,this._$AP?.(a))}},Re=class{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(a,e,t,r,o){this.type=1,this._$AH=l,this._$AN=void 0,this.element=a,this.name=e,this._$AM=r,this.options=o,t.length>2||t[0]!==""||t[1]!==""?(this._$AH=Array(t.length-1).fill(new String),this.strings=t):this._$AH=l}_$AI(a,e=this,t,r){let o=this.strings,i=!1;if(o===void 0)a=Te(this,a,e,0),i=!Be(a)||a!==this._$AH&&a!==Ce,i&&(this._$AH=a);else{let d=a,c,m;for(a=o[0],c=0;c<o.length-1;c++)m=Te(this,d[t+c],e,c),m===Ce&&(m=this._$AH[c]),i||=!Be(m)||m!==this._$AH[c],m===l?a=l:a!==l&&(a+=(m??"")+o[c+1]),this._$AH[c]=m}i&&!r&&this.j(a)}j(a){a===l?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,a??"")}},ut=class extends Re{constructor(){super(...arguments),this.type=3}j(a){this.element[this.name]=a===l?void 0:a}},yt=class extends Re{constructor(){super(...arguments),this.type=4}j(a){this.element.toggleAttribute(this.name,!!a&&a!==l)}},xt=class extends Re{constructor(a,e,t,r,o){super(a,e,t,r,o),this.type=5}_$AI(a,e=this){if((a=Te(this,a,e,0)??l)===Ce)return;let t=this._$AH,r=a===l&&t!==l||a.capture!==t.capture||a.once!==t.once||a.passive!==t.passive,o=a!==l&&(t===l||r);r&&this.element.removeEventListener(this.name,this,t),o&&this.element.addEventListener(this.name,this,a),this._$AH=a}handleEvent(a){typeof this._$AH=="function"?this._$AH.call(this.options?.host??this.element,a):this._$AH.handleEvent(a)}},ft=class{constructor(a,e,t){this.element=a,this.type=6,this._$AN=void 0,this._$AM=e,this.options=t}get _$AU(){return this._$AM._$AU}_$AI(a){Te(this,a)}};var Lr=bt.litHtmlPolyfillSupport;Lr?.(Ke,qe),(bt.litHtmlVersions??=[]).push("3.3.2");var Qt=(n,a,e)=>{let t=e?.renderBefore??a,r=t._$litPart$;if(r===void 0){let o=e?.renderBefore??null;t._$litPart$=r=new qe(a.insertBefore(Ie(),o),o,void 0,e??{})}return r._$AI(n),r};var wt=globalThis,x=class extends V{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){let a=super.createRenderRoot();return this.renderOptions.renderBefore??=a.firstChild,a}update(a){let e=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(a),this._$Do=Qt(e,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return Ce}};x._$litElement$=!0,x.finalized=!0,wt.litElementHydrateSupport?.({LitElement:x});var Pr=wt.litElementPolyfillSupport;Pr?.({LitElement:x});(wt.litElementVersions??=[]).push("4.2.2");var b=n=>(a,e)=>{e!==void 0?e.addInitializer(()=>{customElements.define(n,a)}):customElements.define(n,a)};var Tr={attribute:!0,type:String,converter:Ge,reflect:!1,hasChanged:et},Rr=(n=Tr,a,e)=>{let{kind:t,metadata:r}=e,o=globalThis.litPropertyMetadata.get(r);if(o===void 0&&globalThis.litPropertyMetadata.set(r,o=new Map),t==="setter"&&((n=Object.create(n)).wrapped=!0),o.set(e.name,n),t==="accessor"){let{name:i}=e;return{set(d){let c=a.get.call(this);a.set.call(this,d),this.requestUpdate(i,c,n,!0,d)},init(d){return d!==void 0&&this.C(i,void 0,n,d),d}}}if(t==="setter"){let{name:i}=e;return function(d){let c=this[i];a.call(this,d),this.requestUpdate(i,c,n,!0,d)}}throw Error("Unsupported decorator location: "+t)};function u(n){return(a,e)=>typeof e=="object"?Rr(n,a,e):((t,r,o)=>{let i=r.hasOwnProperty(o);return r.constructor.createProperty(o,t),i?Object.getOwnPropertyDescriptor(r,o):void 0})(n,a,e)}function z(n){return u({...n,state:!0,attribute:!1})}var M={Sun:"\u2609",Moon:"\u263D",Mercury:"\u263F",Venus:"\u2640",Earth:"\u2641",Mars:"\u2642",Jupiter:"\u2643",Saturn:"\u2644",Uranus:"\u2645",Neptune:"\u2646",Pluto:"\u2647",Rahu:"\u260A",Ketu:"\u260B",Ascendant:"Asc",Lagna:"La",NorthNode:"\u260A",SouthNode:"\u260B","North node":"\u260A","South node":"\u260B",Chiron:"\u26B7",Lilith:"\u26B8","Black moon lilith":"\u26B8"},er={Sun:"Su",Moon:"Mo",Mercury:"Me",Venus:"Ve",Mars:"Ma",Jupiter:"Ju",Saturn:"Sa",Uranus:"Ur",Neptune:"Ne",Pluto:"Pl",Rahu:"Ra",Ketu:"Ke",Ascendant:"Asc",Lagna:"La"},G={Aries:"\u2648",Taurus:"\u2649",Gemini:"\u264A",Cancer:"\u264B",Leo:"\u264C",Virgo:"\u264D",Libra:"\u264E",Scorpio:"\u264F",Sagittarius:"\u2650",Capricorn:"\u2651",Aquarius:"\u2652",Pisces:"\u2653"},kt={Aries:"Ar",Taurus:"Ta",Gemini:"Ge",Cancer:"Cn",Leo:"Le",Virgo:"Vi",Libra:"Li",Scorpio:"Sc",Sagittarius:"Sg",Capricorn:"Cp",Aquarius:"Aq",Pisces:"Pi"},_=["Aries","Taurus","Gemini","Cancer","Leo","Virgo","Libra","Scorpio","Sagittarius","Capricorn","Aquarius","Pisces"],ds=_.map(n=>n.toLowerCase()),St={conjunction:"\u260C",opposition:"\u260D",trine:"\u25B3",square:"\u25A1",sextile:"\u2731",quincunx:"\u22BB",semisextile:"\u22BC"},At={heaven:"\u2630",lake:"\u2631",fire:"\u2632",thunder:"\u2633",wind:"\u2634",water:"\u2635",mountain:"\u2636",earth:"\u2637",Heaven:"\u2630",Lake:"\u2631",Fire:"\u2632",Thunder:"\u2633",Wind:"\u2634",Water:"\u2635",Mountain:"\u2636",Earth:"\u2637"},tr={"new moon":"\u{1F311}","waxing crescent":"\u{1F312}","first quarter":"\u{1F313}","waxing gibbous":"\u{1F314}","full moon":"\u{1F315}","waning gibbous":"\u{1F316}","last quarter":"\u{1F317}","waning crescent":"\u{1F318}"};var v=f`
4
4
  :host {
5
5
  display: block;
6
6
  container-type: inline-size;
@@ -96,7 +96,7 @@
96
96
  :host {
97
97
  font-variant-emoji: text;
98
98
  }
99
- `;var Rr={sarva:"Sarvashtakavarga",bhinna:"Bhinnashtakavarga",pinda:"Shodhya Pinda"},Ee=["sarva","bhinna","pinda"],V=class extends x{constructor(){super(...arguments);this.data=null;this.activeTab="sarva"}render(){if(!this.data)return s`<div class="roxy-empty" role="status">No ashtakavarga data</div>`;let e=this.data.signs??[];return s`<div class="wrap" aria-label="Ashtakavarga grid">
99
+ `;var Mr="roxy-data";function Nr(n){return n.nodeName==="SCRIPT"&&n.getAttribute("type")==="application/json"}var $=class{constructor(a){this.host=a,a.addController(this)}hostConnected(){if(this.host.data!=null)return;let a=this.read();a!==void 0&&(this.host.data=a,this.host.requestUpdate())}read(){let a=this.findInlineScript();return a?this.parse(a.textContent):void 0}findInlineScript(){for(let a of Array.from(this.host.children))if(Nr(a)&&a.classList.contains(Mr))return a;return null}parse(a){if(a?.trim())try{return JSON.parse(a)}catch{return}}};var zr={sarva:"Sarvashtakavarga",bhinna:"Bhinnashtakavarga",pinda:"Shodhya Pinda"},Ee=["sarva","bhinna","pinda"],Y=class extends x{constructor(){super();this.data=null;this.activeTab="sarva";new $(this)}render(){if(!this.data)return s`<div class="roxy-empty" role="status">No ashtakavarga data</div>`;let e=this.data.signs??[];return s`<div class="wrap" aria-label="Ashtakavarga grid">
100
100
  <div class="head">
101
101
  <h2 class="title">Ashtakavarga</h2>
102
102
  ${e.length?s`<p class="subtitle">${e.length} signs</p>`:l}
@@ -117,7 +117,7 @@
117
117
  tabindex=${this.activeTab===t?"0":"-1"}
118
118
  @click=${()=>{this.activeTab=t}}
119
119
  >
120
- ${Rr[t]}
120
+ ${zr[t]}
121
121
  </button>`)}
122
122
  </div>
123
123
 
@@ -190,7 +190,7 @@
190
190
  </tr>`)}
191
191
  </tbody>
192
192
  </table>
193
- </div>`:s`<p class="roxy-empty">No shodhya pinda data</p>`}};V.styles=[v,f`
193
+ </div>`:s`<p class="roxy-empty">No shodhya pinda data</p>`}};Y.styles=[v,f`
194
194
  .wrap {
195
195
  display: grid;
196
196
  gap: var(--roxy-space-md, 1rem);
@@ -359,13 +359,13 @@
359
359
  transparent 100%
360
360
  );
361
361
  }
362
- `],p([y({attribute:!1})],V.prototype,"data",2),p([z()],V.prototype,"activeTab",2),V=p([b("roxy-ashtakavarga-grid")],V);var tr={physical:"#dc2626",emotional:"#0284c7",intellectual:"#16a34a",intuitive:"#a855f7",aesthetic:"#f59e0b",awareness:"#ec4899",spiritual:"#14b8a6",passion:"#ef4444",mastery:"#6366f1",wisdom:"#475569"},Y=class extends x{constructor(){super(...arguments);this.data=null;this.mode="daily"}render(){let e=this.data;return e?this.mode==="critical-days"&&"criticalDays"in e?this.renderCritical(e):this.mode==="forecast"&&"days"in e?this.renderForecast(e):this.renderDaily(e):s`<div class="roxy-empty" role="status">No biorhythm data</div>`}renderDaily(e){let t=e.quickRead??{},r=Object.entries(t).map(([o,i])=>{let d=typeof i=="number"?i:0,c=Math.abs(d)>1?d/100:d;return[o,c]});return s`<section class="wrap" aria-label="Daily biorhythm">
362
+ `],p([u({attribute:!1})],Y.prototype,"data",2),p([z()],Y.prototype,"activeTab",2),Y=p([b("roxy-ashtakavarga-grid")],Y);var rr={physical:"#dc2626",emotional:"#0284c7",intellectual:"#16a34a",intuitive:"#a855f7",aesthetic:"#f59e0b",awareness:"#ec4899",spiritual:"#14b8a6",passion:"#ef4444",mastery:"#6366f1",wisdom:"#475569"},U=class extends x{constructor(){super();this.data=null;this.mode="daily";new $(this)}render(){let e=this.data;return e?this.mode==="critical-days"&&"criticalDays"in e?this.renderCritical(e):this.mode==="forecast"&&"days"in e?this.renderForecast(e):this.renderDaily(e):s`<div class="roxy-empty" role="status">No biorhythm data</div>`}renderDaily(e){let t=e.quickRead??{},r=Object.entries(t).map(([o,i])=>{let d=typeof i=="number"?i:0,c=Math.abs(d)>1?d/100:d;return[o,c]});return s`<section class="wrap" aria-label="Daily biorhythm">
363
363
  <header class="head">
364
364
  <h2 class="title">Biorhythm</h2>
365
365
  ${typeof e.energyRating=="number"?s`<span class="energy">Energy ${e.energyRating}/10</span>`:l}
366
366
  </header>
367
367
  <div class="bars" role="list">
368
- ${r.map(([o,i])=>{let d=(i+1)/2*100,c=tr[o]??"var(--roxy-accent, #f59e0b)";return s`<div class="bar" role="listitem">
368
+ ${r.map(([o,i])=>{let d=(i+1)/2*100,c=rr[o]??"var(--roxy-accent, #f59e0b)";return s`<div class="bar" role="listitem">
369
369
  <span style="text-transform: capitalize">${o}</span>
370
370
  <span class="track">
371
371
  <span
@@ -397,7 +397,7 @@
397
397
  stroke="var(--roxy-border, #e4e4e7)"
398
398
  stroke-width="1"
399
399
  />
400
- ${d.map(c=>{let m=t.map((h,u)=>{let k=h[c]??0,$=u*i,$e=o/2-k/100*(o/2-8);return`${$.toFixed(2)},${$e.toFixed(2)}`}).join(" "),g=tr[c]??"#475569";return w`<polyline points=${m} fill="none" stroke=${g} stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />`})}
400
+ ${d.map(c=>{let m=t.map((h,y)=>{let S=h[c]??0,w=y*i,we=o/2-S/100*(o/2-8);return`${w.toFixed(2)},${we.toFixed(2)}`}).join(" "),g=rr[c]??"#475569";return k`<polyline points=${m} fill="none" stroke=${g} stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />`})}
401
401
  </svg>
402
402
  ${e.summary?.periodAdvice?s`<p class="advice">${e.summary.periodAdvice}</p>`:l}
403
403
  </section>`}renderCritical(e){return s`<section class="wrap" aria-label="Critical days">
@@ -410,7 +410,7 @@
410
410
  >${t.date} · ${t.cycle} ${t.severity}</span
411
411
  >`)}
412
412
  </div>
413
- </section>`}};Y.styles=[v,f`
413
+ </section>`}};U.styles=[v,f`
414
414
  .wrap {
415
415
  display: grid;
416
416
  gap: var(--roxy-space-md, 1rem);
@@ -486,7 +486,7 @@
486
486
  display: inline-block;
487
487
  margin: 2px;
488
488
  }
489
- `],p([y({attribute:!1})],Y.prototype,"data",2),p([y({type:String,reflect:!0})],Y.prototype,"mode",2),Y=p([b("roxy-biorhythm-chart")],Y);function E(n){return n?n.charAt(0).toUpperCase()+n.slice(1).toLowerCase():""}function ce(n){return n.replace(/[_-]+/g," ").replace(/([a-z])([A-Z])/g,"$1 $2").replace(/^\w/,a=>a.toUpperCase())}function rr(n){try{let a=new Date(n);return Number.isNaN(a.getTime())?n:a.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}catch{return n}}var pe=class extends x{constructor(){super(...arguments);this.data=null}isCurrent(e){let t=Date.now(),r=Date.parse(e.start),o=Date.parse(e.end);return Number.isNaN(r)||Number.isNaN(o)?!1:t>=r&&t<o}renderTile(e){let t=e.effect==="Good"?"good":e.effect==="Bad"?"bad":"neutral",r=this.isCurrent(e),o=R[E(e.lord)]??"",i=`${rr(e.start)} - ${rr(e.end)}`;return s`<div
489
+ `],p([u({attribute:!1})],U.prototype,"data",2),p([u({type:String,reflect:!0})],U.prototype,"mode",2),U=p([b("roxy-biorhythm-chart")],U);function E(n){return n?n.charAt(0).toUpperCase()+n.slice(1).toLowerCase():""}function pe(n){return n.replace(/[_-]+/g," ").replace(/([a-z])([A-Z])/g,"$1 $2").replace(/^\w/,a=>a.toUpperCase())}function ar(n){try{let a=new Date(n);return Number.isNaN(a.getTime())?n:a.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}catch{return n}}var me=class extends x{constructor(){super();this.data=null;new $(this)}isCurrent(e){let t=Date.now(),r=Date.parse(e.start),o=Date.parse(e.end);return Number.isNaN(r)||Number.isNaN(o)?!1:t>=r&&t<o}renderTile(e){let t=e.effect==="Good"?"good":e.effect==="Bad"?"bad":"neutral",r=this.isCurrent(e),o=M[E(e.lord)]??"",i=`${ar(e.start)} - ${ar(e.end)}`;return s`<div
490
490
  class="cho-tile ${t}${r?" now":""}"
491
491
  role="listitem"
492
492
  aria-current=${r?"time":"false"}
@@ -520,7 +520,7 @@
520
520
  </div>
521
521
  </section>
522
522
  </div>
523
- </div>`}};pe.styles=[v,f`
523
+ </div>`}};me.styles=[v,f`
524
524
  .wrap {
525
525
  display: grid;
526
526
  gap: var(--roxy-space-md, 1rem);
@@ -619,25 +619,25 @@
619
619
  align-items: center;
620
620
  gap: 0.25em;
621
621
  }
622
- `],p([y({attribute:!1})],pe.prototype,"data",2),pe=p([b("roxy-choghadiya-grid")],pe);function j(n){if(typeof n!="string"||n.length===0||/^\d{4}-\d{2}-\d{2}$/.test(n))return"";let e=/^\d{2}:\d{2}(:\d{2})?$/.test(n)?`1970-01-01T${n}`:n,t=new Date(e);return Number.isNaN(t.getTime())?n:t.toLocaleTimeString(void 0,{hour:"numeric",minute:"2-digit",hour12:!0})}function rt(n){if(typeof n!="string"||n.length===0)return"";let a=new Date(/^\d{4}-\d{2}-\d{2}$/.test(n)?`${n}T00:00:00`:n);return Number.isNaN(a.getTime())?n:a.toLocaleDateString(void 0,{month:"short",day:"numeric",year:"numeric"})}function At(n){if(!n)return"";let a=j(n.start),e=j(n.end);return a&&e?`${a} - ${e}`:a||e||""}function A(n,a=1){return typeof n!="number"||!Number.isFinite(n)?"":n.toFixed(a).replace(/\.?0+$/,"")}function ar(n,a=1){let e=A(n,a);return e?`${e}%`:""}var qe={conjunction:"aspect-conjunction",sextile:"aspect-sextile",square:"aspect-square",trine:"aspect-trine",opposition:"aspect-opposition"};function Re(n){return(n.type??"").toLowerCase().replace(/_/g,"-")}var U=class extends x{constructor(){super(...arguments);this.data=null;this.mode="astrology"}getBreakdown(){let e=this.data;if(!e)return{};if("categories"in e&&e.categories){let t={};for(let[r,o]of Object.entries(e.categories))typeof o=="number"&&Number.isFinite(o)&&(t[r]=o);return t}return{}}render(){let e=this.data;if(!e)return s`<div class="roxy-empty" role="status">No compatibility data</div>`;let t=e.overallScore,r=this.getBreakdown(),o="rating"in e?e.rating:void 0,i="archetype"in e?e.archetype:void 0,d="advice"in e?e.advice:void 0,c="summary"in e?e.summary:void 0,m="interpretation"in e?e.interpretation:void 0,g="strengths"in e?e.strengths:void 0,h="challenges"in e?e.challenges:void 0,u="keyAspects"in e?e.keyAspects:void 0;return s`<article
622
+ `],p([u({attribute:!1})],me.prototype,"data",2),me=p([b("roxy-choghadiya-grid")],me);function I(n){if(typeof n!="string"||n.length===0||/^\d{4}-\d{2}-\d{2}$/.test(n))return"";let e=/^\d{2}:\d{2}(:\d{2})?$/.test(n)?`1970-01-01T${n}`:n,t=new Date(e);return Number.isNaN(t.getTime())?n:t.toLocaleTimeString(void 0,{hour:"numeric",minute:"2-digit",hour12:!0})}function at(n){if(typeof n!="string"||n.length===0)return"";let a=new Date(/^\d{4}-\d{2}-\d{2}$/.test(n)?`${n}T00:00:00`:n);return Number.isNaN(a.getTime())?n:a.toLocaleDateString(void 0,{month:"short",day:"numeric",year:"numeric"})}function Ct(n){if(!n)return"";let a=I(n.start),e=I(n.end);return a&&e?`${a} - ${e}`:a||e||""}function C(n,a=1){return typeof n!="number"||!Number.isFinite(n)?"":n.toFixed(a).replace(/\.?0+$/,"")}function sr(n,a=1){let e=C(n,a);return e?`${e}%`:""}var Ve={conjunction:"aspect-conjunction",sextile:"aspect-sextile",square:"aspect-square",trine:"aspect-trine",opposition:"aspect-opposition"};function Me(n){return(n.type??"").toLowerCase().replace(/_/g,"-")}var F=class extends x{constructor(){super();this.data=null;this.mode="astrology";new $(this)}getBreakdown(){let e=this.data;if(!e)return{};if("categories"in e&&e.categories){let t={};for(let[r,o]of Object.entries(e.categories))typeof o=="number"&&Number.isFinite(o)&&(t[r]=o);return t}return{}}render(){let e=this.data;if(!e)return s`<div class="roxy-empty" role="status">No compatibility data</div>`;let t=e.overallScore,r=this.getBreakdown(),o="rating"in e?e.rating:void 0,i="archetype"in e?e.archetype:void 0,d="advice"in e?e.advice:void 0,c="summary"in e?e.summary:void 0,m="interpretation"in e?e.interpretation:void 0,g="strengths"in e?e.strengths:void 0,h="challenges"in e?e.challenges:void 0,y="keyAspects"in e?e.keyAspects:void 0;return s`<article
623
623
  class="card"
624
624
  aria-label=${`Compatibility (${this.mode})`}
625
625
  >
626
626
  <div class="head">
627
627
  <h2>${this.mode} compatibility</h2>
628
628
  <div>
629
- ${typeof t=="number"?s`<div class="score">${A(t,0)}</div>`:l}
629
+ ${typeof t=="number"?s`<div class="score">${C(t,0)}</div>`:l}
630
630
  ${o?s`<div class="rating">${o}</div>`:l}
631
631
  </div>
632
632
  </div>
633
633
 
634
634
  ${Object.keys(r).length>0?s`<div role="list">
635
- ${Object.entries(r).map(([k,$])=>s`<div class="bar-row" role="listitem">
636
- <span style="text-transform: capitalize">${k}</span>
635
+ ${Object.entries(r).map(([S,w])=>s`<div class="bar-row" role="listitem">
636
+ <span style="text-transform: capitalize">${S}</span>
637
637
  <span class="bar"
638
- ><span style="width: ${Math.max(0,Math.min(100,$))}%"></span
638
+ ><span style="width: ${Math.max(0,Math.min(100,w))}%"></span
639
639
  ></span>
640
- <span>${A($,0)}</span>
640
+ <span>${C(w,0)}</span>
641
641
  </div>`)}
642
642
  </div>`:l}
643
643
  ${i?s`<p>
@@ -651,23 +651,23 @@
651
651
  ${g?.length?s`<div>
652
652
  <h3>Strengths</h3>
653
653
  <ul>
654
- ${g.map(k=>s`<li>${k}</li>`)}
654
+ ${g.map(S=>s`<li>${S}</li>`)}
655
655
  </ul>
656
656
  </div>`:l}
657
657
  ${h?.length?s`<div>
658
658
  <h3>Challenges</h3>
659
659
  <ul>
660
- ${h.map(k=>s`<li>${k}</li>`)}
660
+ ${h.map(S=>s`<li>${S}</li>`)}
661
661
  </ul>
662
662
  </div>`:l}
663
663
  </div>`:l}
664
- ${u?.length?s`<div>
664
+ ${y?.length?s`<div>
665
665
  <h3 style="margin: 0 0 0.25rem; font-size: var(--roxy-text-xs); color: var(--roxy-muted); text-transform: uppercase; letter-spacing: 0.06em;">Key aspects</h3>
666
666
  <ul style="margin: 0; padding-left: 1rem; font-size: var(--roxy-text-sm);">
667
- ${u.slice(0,6).map(k=>s`<li>${Nr(k)}</li>`)}
667
+ ${y.slice(0,6).map(S=>s`<li>${_r(S)}</li>`)}
668
668
  </ul>
669
669
  </div>`:l}
670
- </article>`}};U.styles=[v,f`
670
+ </article>`}};F.styles=[v,f`
671
671
  .card {
672
672
  background: var(--roxy-bg, #fff);
673
673
  border: 1px solid var(--roxy-border, #e4e4e7);
@@ -751,7 +751,7 @@
751
751
  margin: 0;
752
752
  padding-left: var(--roxy-space-md, 1rem);
753
753
  }
754
- `],p([y({attribute:!1})],U.prototype,"data",2),p([y({type:String,reflect:!0})],U.prototype,"mode",2),U=p([b("roxy-compatibility-card")],U);function Nr(n){let a=n.type.toLowerCase().replace(/_/g,"-"),e=typeof n.orb=="number"?` (orb ${A(n.orb,1)}\xB0)`:"",t=[n.planet1,a,n.planet2].filter(Boolean).join(" ");return n.description?`${t}${e} \xB7 ${n.description}`:`${t}${e}`}var F=class extends x{constructor(){super(...arguments);this.data=null;this.period="current"}render(){let e=this.data;if(!e)return s`<div class="roxy-empty" role="status">No dasha data</div>`;let t=this.collectPeriods(e),r=t.length?Math.max(...t.map(o=>o.durationYears)):0;return s`<div class="wrap" aria-label="Dasha timeline">
754
+ `],p([u({attribute:!1})],F.prototype,"data",2),p([u({type:String,reflect:!0})],F.prototype,"mode",2),F=p([b("roxy-compatibility-card")],F);function _r(n){let a=n.type.toLowerCase().replace(/_/g,"-"),e=typeof n.orb=="number"?` (orb ${C(n.orb,1)}\xB0)`:"",t=[n.planet1,a,n.planet2].filter(Boolean).join(" ");return n.description?`${t}${e} \xB7 ${n.description}`:`${t}${e}`}var W=class extends x{constructor(){super();this.data=null;this.period="current";new $(this)}render(){let e=this.data;if(!e)return s`<div class="roxy-empty" role="status">No dasha data</div>`;let t=this.collectPeriods(e),r=t.length?Math.max(...t.map(o=>o.durationYears)):0;return s`<div class="wrap" aria-label="Dasha timeline">
755
755
  <header class="head">
756
756
  <h2 class="title">
757
757
  ${this.period==="major"?"Vimshottari Mahadasha":this.period==="sub"?"Antardasha":"Active dashas"}
@@ -778,17 +778,17 @@
778
778
  ${"mahadasha"in e&&e.mahadasha?s`<div>
779
779
  <span>Mahadasha</span>
780
780
  <strong>${e.mahadasha.planet}</strong>
781
- ${"remainingInMahadasha"in e&&e.remainingInMahadasha?s`<small>${A(e.remainingInMahadasha.years+e.remainingInMahadasha.months/12,1)} years left</small>`:l}
781
+ ${"remainingInMahadasha"in e&&e.remainingInMahadasha?s`<small>${C(e.remainingInMahadasha.years+e.remainingInMahadasha.months/12,1)} years left</small>`:l}
782
782
  </div>`:l}
783
783
  ${"antardasha"in e&&e.antardasha?s`<div>
784
784
  <span>Antardasha</span>
785
785
  <strong>${e.antardasha.planet}</strong>
786
- ${"remainingInAntardasha"in e&&e.remainingInAntardasha?s`<small>${A(e.remainingInAntardasha.years+e.remainingInAntardasha.months/12,1)} years left</small>`:l}
786
+ ${"remainingInAntardasha"in e&&e.remainingInAntardasha?s`<small>${C(e.remainingInAntardasha.years+e.remainingInAntardasha.months/12,1)} years left</small>`:l}
787
787
  </div>`:l}
788
788
  ${"pratyantardasha"in e&&e.pratyantardasha?s`<div>
789
789
  <span>Pratyantardasha</span>
790
790
  <strong>${e.pratyantardasha.planet}</strong>
791
- ${"remainingInPratyantardasha"in e&&e.remainingInPratyantardasha?s`<small>${A(e.remainingInPratyantardasha.years+e.remainingInPratyantardasha.months/12,1)} years left</small>`:l}
791
+ ${"remainingInPratyantardasha"in e&&e.remainingInPratyantardasha?s`<small>${C(e.remainingInPratyantardasha.years+e.remainingInPratyantardasha.months/12,1)} years left</small>`:l}
792
792
  </div>`:l}
793
793
  </div>`:l}collectPeriods(e){return"mahadashas"in e&&e.mahadashas?.length?e.mahadashas:"antardashas"in e&&e.antardashas?.length?e.antardashas:[]}isCurrent(e){if(!e.startDate||!e.endDate)return!1;let t=Date.now(),r=Date.parse(e.startDate),o=Date.parse(e.endDate);return Number.isNaN(r)||Number.isNaN(o)?!1:t>=r&&t<o}progressIn(e){if(!e.startDate||!e.endDate)return-1;let t=Date.parse(e.startDate),r=Date.parse(e.endDate),o=Date.now();return Number.isNaN(t)||Number.isNaN(r)||o<t||o>=r||r<=t?-1:(o-t)/(r-t)}renderBar(e,t){let r=e.durationYears,o=t>0?r/t*100:0,i=this.isCurrent(e),d=i?this.progressIn(e):-1,c=i?"bar-track bar-now":"bar-track";return s`<div
794
794
  class=${i?"bar now":"bar"}
@@ -807,10 +807,10 @@
807
807
  ></span>`:l}
808
808
  </span>
809
809
  <span class="dates">
810
- ${e.startDate?sr(e.startDate):""}
811
- ${e.endDate?s`- ${sr(e.endDate)}`:""}
810
+ ${e.startDate?or(e.startDate):""}
811
+ ${e.endDate?s`- ${or(e.endDate)}`:""}
812
812
  </span>
813
- </div>`}};F.styles=[v,f`
813
+ </div>`}};W.styles=[v,f`
814
814
  .wrap {
815
815
  display: grid;
816
816
  gap: var(--roxy-space-md, 1rem);
@@ -935,7 +935,7 @@
935
935
  font-size: var(--roxy-text-sm, 0.875rem);
936
936
  color: var(--roxy-muted, #71717a);
937
937
  }
938
- `],p([y({attribute:!1})],F.prototype,"data",2),p([y({type:String,reflect:!0})],F.prototype,"period",2),F=p([b("roxy-dasha-timeline")],F);function sr(n){let a=n.match(/^(\d{4})/);return a?a[1]:n}var zr=["title","name","label","heading","overview","summary"],Mr=["imageUrl","image","icon","symbol"],_r=["imageUrl","image"],Dr=6,W=class extends x{constructor(){super(...arguments);this.data=null;this.depth=0}render(){return this.data==null?s`<div class="roxy-empty" role="status">No data</div>`:this.depth>=Dr?s`<div class="roxy-empty" role="status">…</div>`:s`<div
938
+ `],p([u({attribute:!1})],W.prototype,"data",2),p([u({type:String,reflect:!0})],W.prototype,"period",2),W=p([b("roxy-dasha-timeline")],W);function or(n){let a=n.match(/^(\d{4})/);return a?a[1]:n}var Dr=["title","name","label","heading","overview","summary"],Or=["imageUrl","image","icon","symbol"],Hr=["imageUrl","image"],Gr=6,J=class extends x{constructor(){super();this.data=null;this.depth=0;new $(this)}render(){return this.data==null?s`<div class="roxy-empty" role="status">No data</div>`:this.depth>=Gr?s`<div class="roxy-empty" role="status">…</div>`:s`<div
939
939
  class="roxy-card"
940
940
  aria-label="Generic data display"
941
941
  >
@@ -947,7 +947,7 @@
947
947
  </ol>`}renderTable(e){let t=this.collectKeys(e);return s`<table class="roxy-table" role="table">
948
948
  <thead>
949
949
  <tr>
950
- ${t.map(r=>s`<th>${ce(r)}</th>`)}
950
+ ${t.map(r=>s`<th>${pe(r)}</th>`)}
951
951
  </tr>
952
952
  </thead>
953
953
  <tbody>
@@ -955,7 +955,7 @@
955
955
  ${t.map(o=>s`<td>${this.formatPrimitive(r[o])}</td>`)}
956
956
  </tr>`)}
957
957
  </tbody>
958
- </table>`}renderObject(e){let t=zr.find(d=>typeof e[d]=="string"),r=Mr.find(d=>typeof e[d]=="string"&&e[d].startsWith("http")),o=t!=="summary"&&typeof e.summary=="string"?"summary":null,i=Object.entries(e).filter(([d,c])=>d!==t&&d!==o&&!_r.includes(d)&&c!==null&&c!==void 0);return s`
958
+ </table>`}renderObject(e){let t=Dr.find(d=>typeof e[d]=="string"),r=Or.find(d=>typeof e[d]=="string"&&e[d].startsWith("http")),o=t!=="summary"&&typeof e.summary=="string"?"summary":null,i=Object.entries(e).filter(([d,c])=>d!==t&&d!==o&&!Hr.includes(d)&&c!==null&&c!==void 0);return s`
959
959
  ${r?s`<img
960
960
  class="roxy-image"
961
961
  src=${String(e[r])}
@@ -966,13 +966,13 @@
966
966
  ${o?s`<p class="roxy-summary">${e[o]}</p>`:l}
967
967
  ${i.length>0?s`<dl class="roxy-rows">
968
968
  ${i.map(([d,c])=>s`
969
- <dt>${ce(d)}</dt>
969
+ <dt>${pe(d)}</dt>
970
970
  <dd>${this.renderField(c)}</dd>
971
971
  `)}
972
972
  </dl>`:l}
973
973
  `}renderField(e){return e==null?"":typeof e=="string"?e:typeof e=="number"||typeof e=="boolean"?String(e):Array.isArray(e)&&e.every(r=>["string","number","boolean"].includes(typeof r))?s`<ul class="roxy-chips">
974
974
  ${e.map(r=>s`<li>${String(r)}</li>`)}
975
- </ul>`:s`<roxy-data .data=${e} .depth=${this.depth+1}></roxy-data>`}formatPrimitive(e){return e==null?"":typeof e=="string"?e:typeof e=="number"||typeof e=="boolean"?String(e):Array.isArray(e)?e.map(String).join(", "):JSON.stringify(e)}collectKeys(e){let t=new Set;for(let r of e)for(let o of Object.keys(r))t.add(o);return Array.from(t)}};W.styles=[v,f`
975
+ </ul>`:s`<roxy-data .data=${e} .depth=${this.depth+1}></roxy-data>`}formatPrimitive(e){return e==null?"":typeof e=="string"?e:typeof e=="number"||typeof e=="boolean"?String(e):Array.isArray(e)?e.map(String).join(", "):JSON.stringify(e)}collectKeys(e){let t=new Set;for(let r of e)for(let o of Object.keys(r))t.add(o);return Array.from(t)}};J.styles=[v,f`
976
976
  .roxy-card {
977
977
  background: var(--roxy-bg, #fff);
978
978
  border: 1px solid var(--roxy-border, #e4e4e7);
@@ -1066,8 +1066,8 @@
1066
1066
  margin: 0 0 var(--roxy-space-xs, 0.25rem) 0;
1067
1067
  text-transform: capitalize;
1068
1068
  }
1069
- `],p([y({attribute:!1})],W.prototype,"data",2),p([y({attribute:!1})],W.prototype,"depth",2),W=p([b("roxy-data")],W);function I(n){let a=n%360;return a<0?a+360:a}function B(n){let a=I(n),e=Math.floor(a/30)%12,t=a%30,r=Math.floor(t),o=(t-r)*60,i=Math.floor(o),d=Math.round((o-i)*60);return{sign:M[e]??"Aries",signIndex:e,degree:r,minute:i,second:d}}function at(n){let{sign:a,degree:e,minute:t}=B(n);return`${e}\xB0 ${a} ${String(t).padStart(2,"0")}'`}function Et(n){return I(n+180)}function or(n,a){let e=I(n),t=I(a)-e;return t<0&&(t+=360),I(e+t/2)}function L(n,a,e,t){let r=t*Math.PI/180;return{x:n+e*Math.cos(r),y:a+e*Math.sin(r)}}var H=400,P=20,D=H-2*P,N=H/2,Or=Object.fromEntries(M.map(n=>[n.toLowerCase(),n])),Ce=[{id:"north",label:"North"},{id:"south",label:"South"},{id:"east",label:"East"}],Gr="\u02B3";function nr(n,a){return typeof n.longitude!="number"||!Number.isFinite(n.longitude)?!1:B(n.longitude).sign.toLowerCase()!==a.toLowerCase()}function Hr(n,a){let e=Qt[E(n.graha)]??n.graha.slice(0,2),t=n.isRetrograde?Gr:"";if(typeof n.longitude!="number"||!Number.isFinite(n.longitude)||nr(n,a))return`${e}${t}`;let{degree:r}=B(n.longitude);return`${e} ${r}\xB0${t}`}function jr(n,a){let e=[E(n.graha)],t=nr(n,a);if(t&&e.push(`in ${a}`),typeof n.longitude=="number"&&Number.isFinite(n.longitude)){let r=B(n.longitude),o=String(r.minute).padStart(2,"0");e.push(t?`D1: ${r.degree}\xB0${o}' ${r.sign}`:`${r.degree}\xB0${o}' ${r.sign}`)}if(n.nakshatra?.name){let r=n.nakshatra.pada?` pada ${n.nakshatra.pada}`:"";e.push(`${n.nakshatra.name}${r}`)}return n.awastha&&e.push(n.awastha),n.isRetrograde&&e.push("retrograde"),e.join(" \xB7 ")}function Ct(n,a,e,t,r){let o=t-(n.length-1)*r/2;return n.map((i,d)=>{let c=o+d*r;return w`<text class="planet-text" x=${e} y=${c} text-anchor="middle" dominant-baseline="central">${Hr(i,a)}<title>${jr(i,a)}</title></text>`})}function ot(n,a){let e={};for(let r of M)e[r.toLowerCase()]=[];let t="";for(let[r,o]of Object.entries(n??{})){let i=(o?.rashi??"").toLowerCase();if(r==="Lagna"||o?.graha==="Lagna"){t=Or[i]??"";continue}!i||!(i in e)||e[i]?.push({graha:o.graha??r,longitude:o.longitude,nakshatra:o.nakshatra,isRetrograde:o.isRetrograde,awastha:o.awastha})}return{lagnaSign:t,placements:e,divisionLabel:a}}var Le=D/4,Ir={Pisces:{col:0,row:0},Aries:{col:1,row:0},Taurus:{col:2,row:0},Gemini:{col:3,row:0},Cancer:{col:3,row:1},Leo:{col:3,row:2},Virgo:{col:3,row:3},Libra:{col:2,row:3},Scorpio:{col:1,row:3},Sagittarius:{col:0,row:3},Capricorn:{col:0,row:2},Aquarius:{col:0,row:1}};function Br(n){let a=Ir[n]??{col:0,row:0};return{x:P+a.col*Le,y:P+a.row*Le,w:Le,h:Le}}function Kr(n){let a=P,e=P+Le,t=P+2*Le,r=P+3*Le,o=H-P;return w`
1070
- <rect class="line" x=${a} y=${a} width=${D} height=${D} stroke-width="1.5" fill="none" />
1069
+ `],p([u({attribute:!1})],J.prototype,"data",2),p([u({attribute:!1})],J.prototype,"depth",2),J=p([b("roxy-data")],J);function B(n){let a=n%360;return a<0?a+360:a}function K(n){let a=B(n),e=Math.floor(a/30)%12,t=a%30,r=Math.floor(t),o=(t-r)*60,i=Math.floor(o),d=Math.round((o-i)*60);return{sign:_[e]??"Aries",signIndex:e,degree:r,minute:i,second:d}}function st(n){let{sign:a,degree:e,minute:t}=K(n);return`${e}\xB0 ${a} ${String(t).padStart(2,"0")}'`}function Et(n){return B(n+180)}function nr(n,a){let e=B(n),t=B(a)-e;return t<0&&(t+=360),B(e+t/2)}function P(n,a,e,t){let r=t*Math.PI/180;return{x:n+e*Math.cos(r),y:a+e*Math.sin(r)}}var j=400,T=20,O=j-2*T,N=j/2,jr=Object.fromEntries(_.map(n=>[n.toLowerCase(),n])),Le=[{id:"north",label:"North"},{id:"south",label:"South"},{id:"east",label:"East"}],Ir="\u02B3";function ir(n,a){return typeof n.longitude!="number"||!Number.isFinite(n.longitude)?!1:K(n.longitude).sign.toLowerCase()!==a.toLowerCase()}function Br(n,a){let e=er[E(n.graha)]??n.graha.slice(0,2),t=n.isRetrograde?Ir:"";if(typeof n.longitude!="number"||!Number.isFinite(n.longitude)||ir(n,a))return`${e}${t}`;let{degree:r}=K(n.longitude);return`${e} ${r}\xB0${t}`}function Kr(n,a){let e=[E(n.graha)],t=ir(n,a);if(t&&e.push(`in ${a}`),typeof n.longitude=="number"&&Number.isFinite(n.longitude)){let r=K(n.longitude),o=String(r.minute).padStart(2,"0");e.push(t?`D1: ${r.degree}\xB0${o}' ${r.sign}`:`${r.degree}\xB0${o}' ${r.sign}`)}if(n.nakshatra?.name){let r=n.nakshatra.pada?` pada ${n.nakshatra.pada}`:"";e.push(`${n.nakshatra.name}${r}`)}return n.awastha&&e.push(n.awastha),n.isRetrograde&&e.push("retrograde"),e.join(" \xB7 ")}function Lt(n,a,e,t,r){let o=t-(n.length-1)*r/2;return n.map((i,d)=>{let c=o+d*r;return k`<text class="planet-text" x=${e} y=${c} text-anchor="middle" dominant-baseline="central">${Br(i,a)}<title>${Kr(i,a)}</title></text>`})}function nt(n,a){let e={};for(let r of _)e[r.toLowerCase()]=[];let t="";for(let[r,o]of Object.entries(n??{})){let i=(o?.rashi??"").toLowerCase();if(r==="Lagna"||o?.graha==="Lagna"){t=jr[i]??"";continue}!i||!(i in e)||e[i]?.push({graha:o.graha??r,longitude:o.longitude,nakshatra:o.nakshatra,isRetrograde:o.isRetrograde,awastha:o.awastha})}return{lagnaSign:t,placements:e,divisionLabel:a}}var Pe=O/4,qr={Pisces:{col:0,row:0},Aries:{col:1,row:0},Taurus:{col:2,row:0},Gemini:{col:3,row:0},Cancer:{col:3,row:1},Leo:{col:3,row:2},Virgo:{col:3,row:3},Libra:{col:2,row:3},Scorpio:{col:1,row:3},Sagittarius:{col:0,row:3},Capricorn:{col:0,row:2},Aquarius:{col:0,row:1}};function Vr(n){let a=qr[n]??{col:0,row:0};return{x:T+a.col*Pe,y:T+a.row*Pe,w:Pe,h:Pe}}function Yr(n){let a=T,e=T+Pe,t=T+2*Pe,r=T+3*Pe,o=j-T;return k`
1070
+ <rect class="line" x=${a} y=${a} width=${O} height=${O} stroke-width="1.5" fill="none" />
1071
1071
  <line class="line" x1=${a} y1=${e} x2=${o} y2=${e} stroke-width="1" />
1072
1072
  <line class="line" x1=${a} y1=${r} x2=${o} y2=${r} stroke-width="1" />
1073
1073
  <line class="line" x1=${e} y1=${a} x2=${e} y2=${o} stroke-width="1" />
@@ -1076,37 +1076,37 @@
1076
1076
  <line class="line" x1=${r} y1=${t} x2=${o} y2=${t} stroke-width="1" />
1077
1077
  <line class="line" x1=${t} y1=${a} x2=${t} y2=${e} stroke-width="1" />
1078
1078
  <line class="line" x1=${t} y1=${r} x2=${t} y2=${o} stroke-width="1" />
1079
- ${n?w`<text class="centre-label" x=${N} y=${N} text-anchor="middle" dominant-baseline="central">${n}</text>`:l}
1080
- `}function ir(n,a){let e=M.findIndex(r=>r===a),t=M.findIndex(r=>r===n);return e===-1||t===-1?0:(t-e+12)%12+1}function qr(n,a,e,t){let r=Br(n),o=r.x+r.w/2,i=r.y+r.h/2,d=wt[n]??n.slice(0,2),c=14;return w`
1079
+ ${n?k`<text class="centre-label" x=${N} y=${N} text-anchor="middle" dominant-baseline="central">${n}</text>`:l}
1080
+ `}function lr(n,a){let e=_.findIndex(r=>r===a),t=_.findIndex(r=>r===n);return e===-1||t===-1?0:(t-e+12)%12+1}function Ur(n,a,e,t){let r=Vr(n),o=r.x+r.w/2,i=r.y+r.h/2,d=kt[n]??n.slice(0,2),c=14;return k`
1081
1081
  <g class=${e?"cell lagna":"cell"}>
1082
- ${e?w`
1082
+ ${e?k`
1083
1083
  <rect class="lagna-bg" x=${r.x} y=${r.y} width=${r.w} height=${r.h} />
1084
1084
  <line class="lagna-slash" x1=${r.x+r.w-c} y1=${r.y+c} x2=${r.x+c} y2=${r.y+r.h-c} stroke-width="1.2" />
1085
1085
  `:l}
1086
1086
  <text class="sign-text" x=${r.x+6} y=${r.y+12} text-anchor="start" dominant-baseline="central">${d}</text>
1087
- ${t>0?w`<text class="house-num" x=${r.x+r.w-6} y=${r.y+12} text-anchor="end" dominant-baseline="central">${t}</text>`:l}
1088
- ${a.length?Ct(a,n,o,i+4,14):l}
1087
+ ${t>0?k`<text class="house-num" x=${r.x+r.w-6} y=${r.y+12} text-anchor="end" dominant-baseline="central">${t}</text>`:l}
1088
+ ${a.length?Lt(a,n,o,i+4,14):l}
1089
1089
  </g>
1090
- `}function Vr(n){let a=n.lagnaSign.toLowerCase();return w`
1091
- ${Kr(n.divisionLabel)}
1092
- ${M.map(e=>qr(e,n.placements[e.toLowerCase()]??[],e.toLowerCase()===a,ir(e,n.lagnaSign)))}
1093
- `}var C={tl:{x:P,y:P},tr:{x:H-P,y:P},br:{x:H-P,y:H-P},bl:{x:P,y:H-P},top:{x:N,y:P},right:{x:H-P,y:N},bottom:{x:N,y:H-P},left:{x:P,y:N},tlMid:{x:N-D/4,y:N-D/4},trMid:{x:N+D/4,y:N-D/4},brMid:{x:N+D/4,y:N+D/4},blMid:{x:N-D/4,y:N+D/4}};function J(n){let a=n.reduce((t,r)=>t+r.x,0)/n.length,e=n.reduce((t,r)=>t+r.y,0)/n.length;return{x:a,y:e}}var Yr={1:{x:N,y:C.tlMid.y},2:J([C.tl,C.top,C.tlMid]),3:J([C.tl,C.left,C.tlMid]),4:{x:C.tlMid.x,y:N},5:J([C.bl,C.left,C.blMid]),6:J([C.bl,C.bottom,C.blMid]),7:{x:N,y:C.blMid.y},8:J([C.br,C.bottom,C.brMid]),9:J([C.br,C.right,C.brMid]),10:{x:C.brMid.x,y:N},11:J([C.tr,C.right,C.trMid]),12:J([C.tr,C.top,C.trMid])};function Ur(n,a){let e=M.findIndex(t=>t===a);return e===-1?n:(e+n-1)%12+1}function Fr(n){let{tl:a,tr:e,br:t,bl:r,top:o,right:i,bottom:d,left:c}=C;return w`
1094
- <rect class="line" x=${a.x} y=${a.y} width=${D} height=${D} stroke-width="1.5" fill="none" />
1090
+ `}function Fr(n){let a=n.lagnaSign.toLowerCase();return k`
1091
+ ${Yr(n.divisionLabel)}
1092
+ ${_.map(e=>Ur(e,n.placements[e.toLowerCase()]??[],e.toLowerCase()===a,lr(e,n.lagnaSign)))}
1093
+ `}var L={tl:{x:T,y:T},tr:{x:j-T,y:T},br:{x:j-T,y:j-T},bl:{x:T,y:j-T},top:{x:N,y:T},right:{x:j-T,y:N},bottom:{x:N,y:j-T},left:{x:T,y:N},tlMid:{x:N-O/4,y:N-O/4},trMid:{x:N+O/4,y:N-O/4},brMid:{x:N+O/4,y:N+O/4},blMid:{x:N-O/4,y:N+O/4}};function X(n){let a=n.reduce((t,r)=>t+r.x,0)/n.length,e=n.reduce((t,r)=>t+r.y,0)/n.length;return{x:a,y:e}}var Wr={1:{x:N,y:L.tlMid.y},2:X([L.tl,L.top,L.tlMid]),3:X([L.tl,L.left,L.tlMid]),4:{x:L.tlMid.x,y:N},5:X([L.bl,L.left,L.blMid]),6:X([L.bl,L.bottom,L.blMid]),7:{x:N,y:L.blMid.y},8:X([L.br,L.bottom,L.brMid]),9:X([L.br,L.right,L.brMid]),10:{x:L.brMid.x,y:N},11:X([L.tr,L.right,L.trMid]),12:X([L.tr,L.top,L.trMid])};function Jr(n,a){let e=_.findIndex(t=>t===a);return e===-1?n:(e+n-1)%12+1}function Xr(n){let{tl:a,tr:e,br:t,bl:r,top:o,right:i,bottom:d,left:c}=L;return k`
1094
+ <rect class="line" x=${a.x} y=${a.y} width=${O} height=${O} stroke-width="1.5" fill="none" />
1095
1095
  <polygon class="line" points="${o.x},${o.y} ${i.x},${i.y} ${d.x},${d.y} ${c.x},${c.y}" stroke-width="1" fill="none" />
1096
1096
  <line class="line" x1=${a.x} y1=${a.y} x2=${t.x} y2=${t.y} stroke-width="1" />
1097
1097
  <line class="line" x1=${e.x} y1=${e.y} x2=${r.x} y2=${r.y} stroke-width="1" />
1098
- ${n?w`<text class="centre-label" x=${N} y=${N} text-anchor="middle" dominant-baseline="central">${n}</text>`:l}
1099
- `}function Wr(n,a,e,t,r){let o=Yr[n];if(!o)return w``;let i=Math.min(14,Math.abs(o.y-N)*.45+6),d=i+12;return w`
1098
+ ${n?k`<text class="centre-label" x=${N} y=${N} text-anchor="middle" dominant-baseline="central">${n}</text>`:l}
1099
+ `}function Zr(n,a,e,t,r){let o=Wr[n];if(!o)return k``;let i=Math.min(14,Math.abs(o.y-N)*.45+6),d=i+12;return k`
1100
1100
  <g class=${r?"cell lagna":"cell"}>
1101
1101
  <text class="rashi-num" x=${o.x} y=${o.y-i} text-anchor="middle" dominant-baseline="central">${a}</text>
1102
- ${r?w`<text class="lagna-marker" x=${o.x} y=${o.y-d} text-anchor="middle" dominant-baseline="central">Asc</text>`:l}
1103
- ${t.length?Ct(t,e,o.x,o.y+8,12):l}
1102
+ ${r?k`<text class="lagna-marker" x=${o.x} y=${o.y-d} text-anchor="middle" dominant-baseline="central">Asc</text>`:l}
1103
+ ${t.length?Lt(t,e,o.x,o.y+8,12):l}
1104
1104
  </g>
1105
- `}function Jr(n){let a=n.lagnaSign||"Aries";return w`
1106
- ${Fr(n.divisionLabel)}
1107
- ${Array.from({length:12},(e,t)=>{let r=t+1,o=Ur(r,a),i=M[o-1]??"Aries";return Wr(r,o,i,n.placements[i.toLowerCase()]??[],r===1)})}
1108
- `}var st=D/3;function Xr(){let n=P,a=P+st,e=P+2*st,t=H-P,Ye={Aries:[{x:a,y:n},{x:e,y:n},{x:e,y:a},{x:a,y:a}],Taurus:[{x:n,y:n},{x:a,y:n},{x:a,y:a}],Gemini:[{x:n,y:n},{x:a,y:a},{x:n,y:a}],Cancer:[{x:n,y:a},{x:a,y:a},{x:a,y:e},{x:n,y:e}],Leo:[{x:n,y:e},{x:a,y:e},{x:n,y:t}],Virgo:[{x:a,y:e},{x:a,y:t},{x:n,y:t}],Libra:[{x:a,y:e},{x:e,y:e},{x:e,y:t},{x:a,y:t}],Scorpio:[{x:e,y:e},{x:e,y:t},{x:t,y:t}],Sagittarius:[{x:e,y:e},{x:t,y:t},{x:t,y:e}],Capricorn:[{x:e,y:a},{x:t,y:a},{x:t,y:e},{x:e,y:e}],Aquarius:[{x:t,y:n},{x:t,y:a},{x:e,y:a}],Pisces:[{x:e,y:n},{x:t,y:n},{x:e,y:a}]},_e={};for(let[Ue,Fe]of Object.entries(Ye))_e[Ue]={points:[...Fe],centroid:J(Fe)};return _e}var Zr=Xr();function Qr(n){let a=P,e=P+st,t=P+2*st,r=H-P;return w`
1109
- <rect class="line" x=${a} y=${a} width=${D} height=${D} stroke-width="1.5" fill="none" />
1105
+ `}function Qr(n){let a=n.lagnaSign||"Aries";return k`
1106
+ ${Xr(n.divisionLabel)}
1107
+ ${Array.from({length:12},(e,t)=>{let r=t+1,o=Jr(r,a),i=_[o-1]??"Aries";return Zr(r,o,i,n.placements[i.toLowerCase()]??[],r===1)})}
1108
+ `}var ot=O/3;function ea(){let n=T,a=T+ot,e=T+2*ot,t=j-T,Ue={Aries:[{x:a,y:n},{x:e,y:n},{x:e,y:a},{x:a,y:a}],Taurus:[{x:n,y:n},{x:a,y:n},{x:a,y:a}],Gemini:[{x:n,y:n},{x:a,y:a},{x:n,y:a}],Cancer:[{x:n,y:a},{x:a,y:a},{x:a,y:e},{x:n,y:e}],Leo:[{x:n,y:e},{x:a,y:e},{x:n,y:t}],Virgo:[{x:a,y:e},{x:a,y:t},{x:n,y:t}],Libra:[{x:a,y:e},{x:e,y:e},{x:e,y:t},{x:a,y:t}],Scorpio:[{x:e,y:e},{x:e,y:t},{x:t,y:t}],Sagittarius:[{x:e,y:e},{x:t,y:t},{x:t,y:e}],Capricorn:[{x:e,y:a},{x:t,y:a},{x:t,y:e},{x:e,y:e}],Aquarius:[{x:t,y:n},{x:t,y:a},{x:e,y:a}],Pisces:[{x:e,y:n},{x:t,y:n},{x:e,y:a}]},De={};for(let[Fe,We]of Object.entries(Ue))De[Fe]={points:[...We],centroid:X(We)};return De}var ta=ea();function ra(n){let a=T,e=T+ot,t=T+2*ot,r=j-T;return k`
1109
+ <rect class="line" x=${a} y=${a} width=${O} height=${O} stroke-width="1.5" fill="none" />
1110
1110
  <line class="line" x1=${a} y1=${e} x2=${e} y2=${e} stroke-width="1" />
1111
1111
  <line class="line" x1=${t} y1=${e} x2=${r} y2=${e} stroke-width="1" />
1112
1112
  <line class="line" x1=${a} y1=${t} x2=${e} y2=${t} stroke-width="1" />
@@ -1119,25 +1119,25 @@
1119
1119
  <line class="line" x1=${r} y1=${a} x2=${t} y2=${e} stroke-width="1" />
1120
1120
  <line class="line" x1=${r} y1=${r} x2=${t} y2=${t} stroke-width="1" />
1121
1121
  <line class="line" x1=${a} y1=${r} x2=${e} y2=${t} stroke-width="1" />
1122
- ${n?w`<text class="centre-label" x=${N} y=${N} text-anchor="middle" dominant-baseline="central">${n}</text>`:l}
1123
- `}function ea(n,a,e,t){let r=Zr[n];if(!r)return w``;let{centroid:o,points:i}=r,d=wt[n]??n.slice(0,2),c=i.map(m=>`${m.x},${m.y}`).join(" ");return w`
1122
+ ${n?k`<text class="centre-label" x=${N} y=${N} text-anchor="middle" dominant-baseline="central">${n}</text>`:l}
1123
+ `}function aa(n,a,e,t){let r=ta[n];if(!r)return k``;let{centroid:o,points:i}=r,d=kt[n]??n.slice(0,2),c=i.map(m=>`${m.x},${m.y}`).join(" ");return k`
1124
1124
  <g class=${e?"cell lagna":"cell"}>
1125
- ${e?w`<polygon class="lagna-bg" points=${c} />`:l}
1125
+ ${e?k`<polygon class="lagna-bg" points=${c} />`:l}
1126
1126
  <text class="sign-text" x=${o.x} y=${o.y-16} text-anchor="middle" dominant-baseline="central">${d}</text>
1127
- ${t>0?w`<text class="house-num" x=${o.x+18} y=${o.y-16} text-anchor="start" dominant-baseline="central">${t}</text>`:l}
1128
- ${e?w`<text class="lagna-marker" x=${o.x} y=${o.y-30} text-anchor="middle" dominant-baseline="central">Asc</text>`:l}
1129
- ${a.length?Ct(a,n,o.x,o.y+4,12):l}
1127
+ ${t>0?k`<text class="house-num" x=${o.x+18} y=${o.y-16} text-anchor="start" dominant-baseline="central">${t}</text>`:l}
1128
+ ${e?k`<text class="lagna-marker" x=${o.x} y=${o.y-30} text-anchor="middle" dominant-baseline="central">Asc</text>`:l}
1129
+ ${a.length?Lt(a,n,o.x,o.y+4,12):l}
1130
1130
  </g>
1131
- `}function ta(n){let a=n.lagnaSign.toLowerCase();return w`
1132
- ${Qr(n.divisionLabel)}
1133
- ${M.map(e=>ea(e,n.placements[e.toLowerCase()]??[],e.toLowerCase()===a,ir(e,n.lagnaSign)))}
1134
- `}function nt(n,a){switch(a){case"north":return Jr(n);case"east":return ta(n);default:return Vr(n)}}function it(n,a){return s`<div
1131
+ `}function sa(n){let a=n.lagnaSign.toLowerCase();return k`
1132
+ ${ra(n.divisionLabel)}
1133
+ ${_.map(e=>aa(e,n.placements[e.toLowerCase()]??[],e.toLowerCase()===a,lr(e,n.lagnaSign)))}
1134
+ `}function it(n,a){switch(a){case"north":return Qr(n);case"east":return sa(n);default:return Fr(n)}}function lt(n,a){return s`<div
1135
1135
  class="kundli-tablist"
1136
1136
  role="tablist"
1137
1137
  aria-label="Kundli style"
1138
- @keydown=${t=>{let r=Ce.findIndex(o=>o.id===n);if(t.key==="ArrowRight"){t.preventDefault();let o=Ce[(r+1)%Ce.length];o&&a(o.id)}else if(t.key==="ArrowLeft"){t.preventDefault();let o=Ce[(r-1+Ce.length)%Ce.length];o&&a(o.id)}}}
1138
+ @keydown=${t=>{let r=Le.findIndex(o=>o.id===n);if(t.key==="ArrowRight"){t.preventDefault();let o=Le[(r+1)%Le.length];o&&a(o.id)}else if(t.key==="ArrowLeft"){t.preventDefault();let o=Le[(r-1+Le.length)%Le.length];o&&a(o.id)}}}
1139
1139
  >
1140
- ${Ce.map(t=>s`<button
1140
+ ${Le.map(t=>s`<button
1141
1141
  type="button"
1142
1142
  class="kundli-tab"
1143
1143
  role="tab"
@@ -1148,7 +1148,7 @@
1148
1148
  >
1149
1149
  ${t.label}
1150
1150
  </button>`)}
1151
- </div>`}var lt=f`
1151
+ </div>`}var dt=f`
1152
1152
  .wrap {
1153
1153
  display: grid;
1154
1154
  gap: var(--roxy-space-md, 1rem);
@@ -1258,7 +1258,7 @@
1258
1258
  stroke-linecap: round;
1259
1259
  opacity: 0.7;
1260
1260
  }
1261
- `;var X=class extends x{constructor(){super(...arguments);this.data=null;this.chartStyle="north";this.setStyle=e=>{this.chartStyle=e}}viewModel(){if(!this.data?.chart?.meta)return null;let{division:e}=this.data,t=`D${e.number} ${e.name}`;return ot(this.data.chart.meta,t)}render(){let e=this.viewModel();if(!this.data||!e)return s`<div class="roxy-empty" role="status">No divisional chart data</div>`;let{division:t,vargottama:r}=this.data;return s`<div class="wrap">
1261
+ `;var Z=class extends x{constructor(){super();this.data=null;this.chartStyle="north";this.setStyle=e=>{this.chartStyle=e};new $(this)}viewModel(){if(!this.data?.chart?.meta)return null;let{division:e}=this.data,t=`D${e.number} ${e.name}`;return nt(this.data.chart.meta,t)}render(){let e=this.viewModel();if(!this.data||!e)return s`<div class="roxy-empty" role="status">No divisional chart data</div>`;let{division:t,vargottama:r}=this.data;return s`<div class="wrap">
1262
1262
  <div class="header">
1263
1263
  <div>
1264
1264
  <h2 class="title">
@@ -1267,7 +1267,7 @@
1267
1267
  </h2>
1268
1268
  ${t.significance?s`<p class="significance">${t.significance}</p>`:l}
1269
1269
  </div>
1270
- ${it(this.chartStyle,this.setStyle)}
1270
+ ${lt(this.chartStyle,this.setStyle)}
1271
1271
  </div>
1272
1272
 
1273
1273
  <svg
@@ -1277,16 +1277,16 @@
1277
1277
  aria-label="D${t.number} ${t.name} divisional chart with twelve sign houses"
1278
1278
  >
1279
1279
  <title>D${t.number} ${t.name}</title>
1280
- ${nt(e,this.chartStyle)}
1280
+ ${it(e,this.chartStyle)}
1281
1281
  </svg>
1282
1282
 
1283
1283
  ${r&&r.length>0?s`<div class="vargottama-row" role="list" aria-label="Vargottama planets">
1284
1284
  <span class="vargottama-label">Vargottama:</span>
1285
1285
  ${r.map(o=>s`<span class="vargottama-pill" role="listitem">
1286
- ${R[o]??""} ${o}
1286
+ ${M[o]??""} ${o}
1287
1287
  </span>`)}
1288
1288
  </div>`:l}
1289
- </div>`}};X.styles=[v,lt,f`
1289
+ </div>`}};Z.styles=[v,dt,f`
1290
1290
  .division-meta {
1291
1291
  font-size: var(--roxy-text-sm, 0.875rem);
1292
1292
  color: var(--roxy-muted, #71717a);
@@ -1323,7 +1323,7 @@
1323
1323
  color: var(--roxy-fg, #0a0a0a);
1324
1324
  border: 1px solid color-mix(in srgb, var(--roxy-accent, #f59e0b) 45%, transparent);
1325
1325
  }
1326
- `],p([y({attribute:!1})],X.prototype,"data",2),p([y({type:String,reflect:!0,attribute:"chart-style"})],X.prototype,"chartStyle",2),X=p([b("roxy-divisional-chart")],X);var ra={manglik:"Mangal Dosha",kalsarpa:"Kaal Sarp Dosha",sadhesati:"Sade Sati"},Z=class extends x{constructor(){super(...arguments);this.data=null;this.type="manglik"}render(){let e=this.data;if(!e)return s`<div class="roxy-empty" role="status">No dosha data</div>`;let t=!!e.present,r=ra[this.type]??this.type,o=(e.severity??"").toLowerCase(),i=o==="severe"?3:o==="moderate"?2:o==="mild"?1:0,d=i*33,c=i===3?"var(--roxy-danger)":i===2?"var(--roxy-warning)":i===1?"var(--roxy-success)":"transparent";return s`<article
1326
+ `],p([u({attribute:!1})],Z.prototype,"data",2),p([u({type:String,reflect:!0,attribute:"chart-style"})],Z.prototype,"chartStyle",2),Z=p([b("roxy-divisional-chart")],Z);var oa={manglik:"Mangal Dosha",kalsarpa:"Kaal Sarp Dosha",sadhesati:"Sade Sati"},Q=class extends x{constructor(){super();this.data=null;this.type="manglik";new $(this)}render(){let e=this.data;if(!e)return s`<div class="roxy-empty" role="status">No dosha data</div>`;let t=!!e.present,r=oa[this.type]??this.type,o=(e.severity??"").toLowerCase(),i=o==="severe"?3:o==="moderate"?2:o==="mild"?1:0,d=i*33,c=i===3?"var(--roxy-danger)":i===2?"var(--roxy-warning)":i===1?"var(--roxy-success)":"transparent";return s`<article
1327
1327
  class="card"
1328
1328
  aria-label=${r}
1329
1329
  >
@@ -1362,7 +1362,7 @@
1362
1362
  <h3>${r}</h3>
1363
1363
  <p>${o}</p>
1364
1364
  </div>`)}
1365
- </div>`}};Z.styles=[v,f`
1365
+ </div>`}};Q.styles=[v,f`
1366
1366
  .card {
1367
1367
  background: var(--roxy-bg, #fff);
1368
1368
  border: 1px solid var(--roxy-border, #e4e4e7);
@@ -1450,12 +1450,12 @@
1450
1450
  margin: 0;
1451
1451
  font-size: var(--roxy-text-sm, 0.875rem);
1452
1452
  }
1453
- `],p([y({attribute:!1})],Z.prototype,"data",2),p([y({type:String,reflect:!0})],Z.prototype,"type",2),Z=p([b("roxy-dosha-card")],Z);var Lt=new Map;async function aa(n){let a=Lt.get(n);return a||(a=fetch(n).then(async e=>{if(!e.ok)throw new Error(`HTTP ${e.status}`);return await e.json()}).catch(e=>{throw Lt.delete(n),e}),Lt.set(n,a)),a}var O=class extends x{constructor(){super(...arguments);this.endpoint="vedic-astrology/birth-chart";this.method="POST";this.specUrl="https://roxyapi.com/api/v2/openapi.json";this.submitLabel="Submit";this.fields=[];this.values={};this.hasLocation=!1;this.loaded=!1;this.specError=null;this.retryLoadSchema=()=>{this.loaded=!1,this.specError=null,this.loadSchema()};this.onLocation=e=>{let t=e.detail;t&&(this.values={...this.values,latitude:t.latitude,longitude:t.longitude,timezone:t.timezone??t.utcOffset})};this.onSubmit=e=>{e.preventDefault();let t=this.fields.filter(r=>r.required).filter(r=>this.values[r.name]===void 0||this.values[r.name]==="");if(t.length>0){this.dispatchEvent(new CustomEvent("roxy-validation-error",{detail:{missing:t.map(r=>r.name)},bubbles:!0,composed:!0}));return}this.dispatchEvent(new CustomEvent("roxy-submit",{detail:{endpoint:this.endpoint,values:this.values},bubbles:!0,composed:!0}))}}connectedCallback(){super.connectedCallback(),this.loadSchema()}async loadSchema(){this.specError=null;try{let e=await aa(this.specUrl),t=`/${this.endpoint.replace(/^\//,"")}`,r=e.paths?.[t]?.[this.method.toLowerCase()];if(!r)throw new Error(`Endpoint ${this.method} ${t} not found in OpenAPI spec`);let o=e.components?.schemas??{},i=[],d;if(r.requestBody){let m=r.requestBody.content?.["application/json"]?.schema;d=this.resolve(m,o)}if(d?.properties){let m=new Set(d.required??[]);for(let[g,h]of Object.entries(d.properties)){let u=this.resolve(h,o)??{};i.push({name:g,type:this.fieldType(u),required:m.has(g),description:u.description,enum:u.enum,min:u.minimum,max:u.maximum,default:u.default})}}for(let m of r.parameters??[])if(m.in==="path"||m.in==="query"){let g=this.resolve(m.schema,o)??{};i.push({name:m.name,type:this.fieldType(g),required:!!m.required,description:g.description,enum:g.enum,default:g.default})}this.fields=i,this.hasLocation=i.some(m=>m.name==="latitude")&&i.some(m=>m.name==="longitude")&&i.some(m=>m.name==="timezone");let c={};for(let m of i)m.default!==void 0&&(c[m.name]=m.default);this.values=c,this.loaded=!0}catch(e){let t=e instanceof Error?e.message:String(e);this.specError=t,this.loaded=!0,this.dispatchEvent(new CustomEvent("roxy-spec-error",{detail:{url:this.specUrl,message:t},bubbles:!0,composed:!0}))}}resolve(e,t){if(e){if("$ref"in e&&e.$ref){let r=e.$ref.split("/").pop();return r?t[r]:void 0}return e}}fieldType(e){return e.enum?"enum":e.format==="date"?"date":e.format==="time"?"time":e.format==="date-time"?"datetime":e.type==="integer"||e.type==="number"?"number":"text"}setValue(e,t){this.values={...this.values,[e]:t}}render(){if(!this.loaded)return s`<form><div class="roxy-skeleton" style="height: 8rem"></div></form>`;if(this.specError)return s`<div class="spec-error" role="alert">
1453
+ `],p([u({attribute:!1})],Q.prototype,"data",2),p([u({type:String,reflect:!0})],Q.prototype,"type",2),Q=p([b("roxy-dosha-card")],Q);var Pt=new Map;async function na(n){let a=Pt.get(n);return a||(a=fetch(n).then(async e=>{if(!e.ok)throw new Error(`HTTP ${e.status}`);return await e.json()}).catch(e=>{throw Pt.delete(n),e}),Pt.set(n,a)),a}var H=class extends x{constructor(){super(...arguments);this.endpoint="vedic-astrology/birth-chart";this.method="POST";this.specUrl="https://roxyapi.com/api/v2/openapi.json";this.submitLabel="Submit";this.fields=[];this.values={};this.hasLocation=!1;this.loaded=!1;this.specError=null;this.retryLoadSchema=()=>{this.loaded=!1,this.specError=null,this.loadSchema()};this.onLocation=e=>{let t=e.detail;t&&(this.values={...this.values,latitude:t.latitude,longitude:t.longitude,timezone:t.timezone??t.utcOffset})};this.onSubmit=e=>{e.preventDefault();let t=this.fields.filter(r=>r.required).filter(r=>this.values[r.name]===void 0||this.values[r.name]==="");if(t.length>0){this.dispatchEvent(new CustomEvent("roxy-validation-error",{detail:{missing:t.map(r=>r.name)},bubbles:!0,composed:!0}));return}this.dispatchEvent(new CustomEvent("roxy-submit",{detail:{endpoint:this.endpoint,values:this.values},bubbles:!0,composed:!0}))}}connectedCallback(){super.connectedCallback(),this.loadSchema()}async loadSchema(){this.specError=null;try{let e=await na(this.specUrl),t=`/${this.endpoint.replace(/^\//,"")}`,r=e.paths?.[t]?.[this.method.toLowerCase()];if(!r)throw new Error(`Endpoint ${this.method} ${t} not found in OpenAPI spec`);let o=e.components?.schemas??{},i=[],d;if(r.requestBody){let m=r.requestBody.content?.["application/json"]?.schema;d=this.resolve(m,o)}if(d?.properties){let m=new Set(d.required??[]);for(let[g,h]of Object.entries(d.properties)){let y=this.resolve(h,o)??{};i.push({name:g,type:this.fieldType(y),required:m.has(g),description:y.description,enum:y.enum,min:y.minimum,max:y.maximum,default:y.default})}}for(let m of r.parameters??[])if(m.in==="path"||m.in==="query"){let g=this.resolve(m.schema,o)??{};i.push({name:m.name,type:this.fieldType(g),required:!!m.required,description:g.description,enum:g.enum,default:g.default})}this.fields=i,this.hasLocation=i.some(m=>m.name==="latitude")&&i.some(m=>m.name==="longitude")&&i.some(m=>m.name==="timezone");let c={};for(let m of i)m.default!==void 0&&(c[m.name]=m.default);this.values=c,this.loaded=!0}catch(e){let t=e instanceof Error?e.message:String(e);this.specError=t,this.loaded=!0,this.dispatchEvent(new CustomEvent("roxy-spec-error",{detail:{url:this.specUrl,message:t},bubbles:!0,composed:!0}))}}resolve(e,t){if(e){if("$ref"in e&&e.$ref){let r=e.$ref.split("/").pop();return r?t[r]:void 0}return e}}fieldType(e){return e.enum?"enum":e.format==="date"?"date":e.format==="time"?"time":e.format==="date-time"?"datetime":e.type==="integer"||e.type==="number"?"number":"text"}setValue(e,t){this.values={...this.values,[e]:t}}render(){if(!this.loaded)return s`<form><div class="roxy-skeleton" style="height: 8rem"></div></form>`;if(this.specError)return s`<div class="spec-error" role="alert">
1454
1454
  Schema load failed: ${this.specError}
1455
1455
  <button type="button" class="submit" @click=${this.retryLoadSchema}>Retry</button>
1456
1456
  </div>`;let e=t=>{if(this.hasLocation&&(t.name==="latitude"||t.name==="longitude"||t.name==="timezone"))return l;let r=`roxy-form-${t.name}`;return s`<div class="field">
1457
1457
  <label for=${r}>
1458
- ${ce(t.name)}${t.required?s`<span class="req" aria-hidden="true">*</span>`:l}
1458
+ ${pe(t.name)}${t.required?s`<span class="req" aria-hidden="true">*</span>`:l}
1459
1459
  </label>
1460
1460
  ${t.enum?s`<select
1461
1461
  id=${r}
@@ -1478,7 +1478,7 @@
1478
1478
  />`}
1479
1479
  ${t.description?s`<small class="help">${t.description}</small>`:l}
1480
1480
  </div>`};return s`<form @submit=${this.onSubmit}>
1481
- <h2 class="title">${ce(this.endpoint.split("/").pop()??"")}</h2>
1481
+ <h2 class="title">${pe(this.endpoint.split("/").pop()??"")}</h2>
1482
1482
  ${this.hasLocation?s`<div class="location-block">
1483
1483
  <label>Birth location</label>
1484
1484
  <roxy-location-search
@@ -1493,7 +1493,7 @@
1493
1493
  ${this.fields.map(t=>e(t))}
1494
1494
  </div>
1495
1495
  <button class="submit" type="submit">${this.submitLabel}</button>
1496
- </form>`}htmlType(e){switch(e){case"date":return"date";case"time":return"time";case"datetime":return"datetime-local";case"number":return"number";default:return"text"}}coerce(e,t){if(t!==""){if(e==="number"){let r=Number(t);return Number.isFinite(r)?r:void 0}return t}}};O.styles=[v,f`
1496
+ </form>`}htmlType(e){switch(e){case"date":return"date";case"time":return"time";case"datetime":return"datetime-local";case"number":return"number";default:return"text"}}coerce(e,t){if(t!==""){if(e==="number"){let r=Number(t);return Number.isFinite(r)?r:void 0}return t}}};H.styles=[v,f`
1497
1497
  form {
1498
1498
  display: grid;
1499
1499
  gap: var(--roxy-space-md, 1rem);
@@ -1595,15 +1595,15 @@
1595
1595
  color: var(--roxy-danger-fg, #991b1b);
1596
1596
  font-size: var(--roxy-text-sm, 0.875rem);
1597
1597
  }
1598
- `],p([y({type:String,attribute:"data-endpoint"})],O.prototype,"endpoint",2),p([y({type:String})],O.prototype,"method",2),p([y({type:String,attribute:"spec-url"})],O.prototype,"specUrl",2),p([y({type:String,attribute:"submit-label"})],O.prototype,"submitLabel",2),p([z()],O.prototype,"fields",2),p([z()],O.prototype,"values",2),p([z()],O.prototype,"hasLocation",2),p([z()],O.prototype,"loaded",2),p([z()],O.prototype,"specError",2),O=p([b("roxy-endpoint-form")],O);var me=class extends x{constructor(){super(...arguments);this.data=null}render(){let e=this.data;if(!e)return s`<div class="roxy-empty" role="status">No Guna Milan data</div>`;let t=(e.breakdown??[]).filter(h=>h?.category!==void 0),r=e.total??0,o=e.maxScore??36,i=r/o*100,d="color-mix(in srgb, var(--roxy-border) 50%, transparent)",c=i>=70?"var(--roxy-success)":i>=50?"var(--roxy-warning)":"var(--roxy-danger)",m=i*2.827,g=(100-i)*2.827;return s`<article class="card" aria-label="Guna Milan score">
1598
+ `],p([u({type:String,attribute:"data-endpoint"})],H.prototype,"endpoint",2),p([u({type:String})],H.prototype,"method",2),p([u({type:String,attribute:"spec-url"})],H.prototype,"specUrl",2),p([u({type:String,attribute:"submit-label"})],H.prototype,"submitLabel",2),p([z()],H.prototype,"fields",2),p([z()],H.prototype,"values",2),p([z()],H.prototype,"hasLocation",2),p([z()],H.prototype,"loaded",2),p([z()],H.prototype,"specError",2),H=p([b("roxy-endpoint-form")],H);var he=class extends x{constructor(){super();this.data=null;new $(this)}render(){let e=this.data;if(!e)return s`<div class="roxy-empty" role="status">No Guna Milan data</div>`;let t=(e.breakdown??[]).filter(h=>h?.category!==void 0),r=e.total??0,o=e.maxScore??36,i=r/o*100,d="color-mix(in srgb, var(--roxy-border) 50%, transparent)",c=i>=70?"var(--roxy-success)":i>=50?"var(--roxy-warning)":"var(--roxy-danger)",m=i*2.827,g=(100-i)*2.827;return s`<article class="card" aria-label="Guna Milan score">
1599
1599
  <div class="score-header">
1600
1600
  <div class="score-info">
1601
1601
  <div class="score-bar">
1602
1602
  <div>
1603
- <span class="total">${A(e.total,1)}</span>
1603
+ <span class="total">${C(e.total,1)}</span>
1604
1604
  <span class="over"> / ${e.maxScore}</span>
1605
1605
  ${typeof e.percentage=="number"?s`<small style="margin-left: 0.5rem; color: var(--roxy-muted)">
1606
- ${ar(e.percentage,1)}
1606
+ ${sr(e.percentage,1)}
1607
1607
  </small>`:l}
1608
1608
  </div>
1609
1609
  ${e.recommendation?s`<span class="recommendation">${e.recommendation}</span>`:l}
@@ -1630,14 +1630,14 @@
1630
1630
  </tr>
1631
1631
  </thead>
1632
1632
  <tbody>
1633
- ${t.map(h=>{let u=h.score??0,k=h.maxScore??sa(h.category),$=k?u/k*100:0;return s`<tr>
1633
+ ${t.map(h=>{let y=h.score??0,S=h.maxScore??ia(h.category),w=S?y/S*100:0;return s`<tr>
1634
1634
  <td>${h.category}</td>
1635
1635
  <td class="bar-cell">
1636
1636
  <div class="mini-bar">
1637
- <span style="width: ${$}%"></span>
1637
+ <span style="width: ${w}%"></span>
1638
1638
  </div>
1639
1639
  </td>
1640
- <td class="score">${A(u,1)} / ${k}</td>
1640
+ <td class="score">${C(y,1)} / ${S}</td>
1641
1641
  </tr>`})}
1642
1642
  </tbody>
1643
1643
  </table>`:l}
@@ -1645,7 +1645,7 @@
1645
1645
  ${e.doshas?.map(h=>s`<span class="dosha">${h}</span>`)}
1646
1646
  ${e.doshaCancellations?.map(h=>s`<span class="cancel" title=${h.reason}>${h.dosha} cancelled</span>`)}
1647
1647
  </div>`:l}
1648
- </article>`}};me.styles=[v,f`
1648
+ </article>`}};he.styles=[v,f`
1649
1649
  .card {
1650
1650
  background: var(--roxy-bg, #fff);
1651
1651
  border: 1px solid var(--roxy-border, #e4e4e7);
@@ -1766,12 +1766,12 @@
1766
1766
  background: color-mix(in srgb, var(--roxy-success, #16a34a) 18%, transparent);
1767
1767
  color: var(--roxy-success-fg, #166534);
1768
1768
  }
1769
- `],p([y({attribute:!1})],me.prototype,"data",2),me=p([b("roxy-guna-milan")],me);function sa(n){if(!n)return 1;switch(n.toLowerCase()){case"varna":return 1;case"vasya":return 2;case"tara":return 3;case"yoni":return 4;case"maitri":return 5;case"gana":return 6;case"bhakoot":return 7;case"nadi":return 8;default:return 1}}var Q=class extends x{constructor(){super(...arguments);this.data=null;this.mode="lookup"}resolveHexagram(){let e=this.data;if(!e)return null;if("hexagram"in e&&e.hexagram){if("lines"in e){let r=e;return{hex:r.hexagram,lines:r.lines,changingLinePositions:r.changingLinePositions,resultingHexagram:r.resultingHexagram}}let t=e;return{hex:t.hexagram,dailyMessage:t.dailyMessage}}return{hex:e}}render(){let e=this.resolveHexagram();if(!e)return s`<div class="roxy-empty" role="status">No hexagram data</div>`;let{hex:t,lines:r,changingLinePositions:o,dailyMessage:i,resultingHexagram:d}=e,c=r??this.derivedLines(t),m=new Set(o??[]);return s`<article class="card" aria-label="I Ching hexagram">
1769
+ `],p([u({attribute:!1})],he.prototype,"data",2),he=p([b("roxy-guna-milan")],he);function ia(n){if(!n)return 1;switch(n.toLowerCase()){case"varna":return 1;case"vasya":return 2;case"tara":return 3;case"yoni":return 4;case"maitri":return 5;case"gana":return 6;case"bhakoot":return 7;case"nadi":return 8;default:return 1}}var ee=class extends x{constructor(){super();this.data=null;this.mode="lookup";new $(this)}resolveHexagram(){let e=this.data;if(!e)return null;if("hexagram"in e&&e.hexagram){if("lines"in e){let r=e;return{hex:r.hexagram,lines:r.lines,changingLinePositions:r.changingLinePositions,resultingHexagram:r.resultingHexagram}}let t=e;return{hex:t.hexagram,dailyMessage:t.dailyMessage}}return{hex:e}}render(){let e=this.resolveHexagram();if(!e)return s`<div class="roxy-empty" role="status">No hexagram data</div>`;let{hex:t,lines:r,changingLinePositions:o,dailyMessage:i,resultingHexagram:d}=e,c=r??this.derivedLines(t),m=new Set(o??[]);return s`<article class="card" aria-label="I Ching hexagram">
1770
1770
  <div class="glyphs">
1771
1771
  ${t.symbol?s`<div class="symbol">${t.symbol}</div>`:l}
1772
1772
  <div class="lines" aria-hidden="true">
1773
- ${c.slice().reverse().map((g,h)=>{let u=c.length-1-h+1,k=m.has(u),$=g===6||g===8;return s`<div class="line ${`${$?"broken":"solid"}${k?" changing":""}`}">
1774
- ${$?w`<span class="seg"></span><span class="seg"></span>`:w`<span class="seg"></span>`}
1773
+ ${c.slice().reverse().map((g,h)=>{let y=c.length-1-h+1,S=m.has(y),w=g===6||g===8;return s`<div class="line ${`${w?"broken":"solid"}${S?" changing":""}`}">
1774
+ ${w?k`<span class="seg"></span><span class="seg"></span>`:k`<span class="seg"></span>`}
1775
1775
  </div>`})}
1776
1776
  </div>
1777
1777
  </div>
@@ -1787,13 +1787,13 @@
1787
1787
  ${t.upperTrigram?s`<div>
1788
1788
  Upper
1789
1789
  <span class="tri-glyph"
1790
- >${St[t.upperTrigram]??""}</span
1790
+ >${At[t.upperTrigram]??""}</span
1791
1791
  >${t.upperTrigram}
1792
1792
  </div>`:l}
1793
1793
  ${t.lowerTrigram?s`<div>
1794
1794
  Lower
1795
1795
  <span class="tri-glyph"
1796
- >${St[t.lowerTrigram]??""}</span
1796
+ >${At[t.lowerTrigram]??""}</span
1797
1797
  >${t.lowerTrigram}
1798
1798
  </div>`:l}
1799
1799
  </div>
@@ -1807,7 +1807,7 @@
1807
1807
  ${d.english}.`:l}
1808
1808
  </div>`:l}
1809
1809
  </div>
1810
- </article>`}derivedLines(e){let t=e.symbol.codePointAt(0)??0;if(t>=19904&&t<=19967){let r=t-19904,o=[];for(let i=0;i<6;i++){let d=r>>i&1;o.push(d?8:7)}return o}return Array.from({length:6},()=>7)}};Q.styles=[v,f`
1810
+ </article>`}derivedLines(e){let t=e.symbol.codePointAt(0)??0;if(t>=19904&&t<=19967){let r=t-19904,o=[];for(let i=0;i<6;i++){let d=r>>i&1;o.push(d?8:7)}return o}return Array.from({length:6},()=>7)}};ee.styles=[v,f`
1811
1811
  .card {
1812
1812
  background: var(--roxy-bg, #fff);
1813
1813
  border: 1px solid var(--roxy-border, #e4e4e7);
@@ -1914,7 +1914,7 @@
1914
1914
  color: var(--roxy-accent-fg, #b45309);
1915
1915
  font-size: var(--roxy-text-sm, 0.875rem);
1916
1916
  }
1917
- `],p([y({attribute:!1})],Q.prototype,"data",2),p([y({type:String,reflect:!0})],Q.prototype,"mode",2),Q=p([b("roxy-hexagram")],Q);var ee=class extends x{constructor(){super(...arguments);this.data=null;this.period="daily"}render(){let e=this.data;if(!e)return s`<div class="roxy-empty" role="status">No horoscope data</div>`;let t=e.sign??"",r=t?G[E(t)]??"":"",o="energyRating"in e&&typeof e.energyRating=="number"?e.energyRating:null,i="date"in e&&e.date||"week"in e&&e.week||"month"in e&&e.month||"";return s`<article
1917
+ `],p([u({attribute:!1})],ee.prototype,"data",2),p([u({type:String,reflect:!0})],ee.prototype,"mode",2),ee=p([b("roxy-hexagram")],ee);var te=class extends x{constructor(){super();this.data=null;this.period="daily";new $(this)}render(){let e=this.data;if(!e)return s`<div class="roxy-empty" role="status">No horoscope data</div>`;let t=e.sign??"",r=t?G[E(t)]??"":"",o="energyRating"in e&&typeof e.energyRating=="number"?e.energyRating:null,i="date"in e&&e.date||"week"in e&&e.week||"month"in e&&e.month||"";return s`<article
1918
1918
  class="card"
1919
1919
  aria-label=${`${this.period} horoscope for ${t}`}
1920
1920
  >
@@ -1970,11 +1970,11 @@
1970
1970
  ${h.length?s`<span class="compat-wrap">
1971
1971
  Best with
1972
1972
  <span class="compat"
1973
- >${h.map(u=>s`<span>${u}</span>`)}</span
1973
+ >${h.map(y=>s`<span>${y}</span>`)}</span
1974
1974
  >
1975
1975
  </span>`:l}
1976
1976
  </div>`})()}
1977
- </article>`}};ee.styles=[v,f`
1977
+ </article>`}};te.styles=[v,f`
1978
1978
  .card {
1979
1979
  background: var(--roxy-bg, #fff);
1980
1980
  border: 1px solid var(--roxy-border, #e4e4e7);
@@ -2096,7 +2096,7 @@
2096
2096
  font-size: var(--roxy-text-xs, 0.75rem);
2097
2097
  text-transform: capitalize;
2098
2098
  }
2099
- `],p([y({attribute:!1})],ee.prototype,"data",2),p([y({type:String,reflect:!0})],ee.prototype,"period",2),ee=p([b("roxy-horoscope-card")],ee);var te=class extends x{constructor(){super(...arguments);this.data=null;this.activeTab="planets"}bodies(){let e=this.data;if(!e)return[];let t=(e.planets??[]).map(o=>({name:o.planet,sign:o.sign,house:o.house,nakshatra:o.nakshatra,starLord:o.starLord,subLord:o.subLord,subSubLord:o.subSubLord,kpNumber:o.kpNumber,retrograde:o.retrograde})),r=e.nodes;for(let[o,i]of[["Rahu",r?.rahu],["Ketu",r?.ketu]])i&&t.push({name:o,sign:i.sign,house:i.house,nakshatra:i.nakshatra,starLord:i.starLord,subLord:i.subLord,subSubLord:i.subSubLord,retrograde:!0});return t}onTabKeyDown(e){if(e.key!=="ArrowRight"&&e.key!=="ArrowLeft")return;e.preventDefault(),this.activeTab=this.activeTab==="planets"?"cusps":"planets";let t=this.activeTab;requestAnimationFrame(()=>{this.shadowRoot?.querySelector(`#tab-${t}`)?.focus()})}render(){if(!this.data)return s`<div class="roxy-empty" role="status">No KP chart data</div>`;let e=this.data,t=e.ascendant;return s`<div class="wrap" aria-label="KP chart" tabindex="0">
2099
+ `],p([u({attribute:!1})],te.prototype,"data",2),p([u({type:String,reflect:!0})],te.prototype,"period",2),te=p([b("roxy-horoscope-card")],te);var re=class extends x{constructor(){super();this.data=null;this.activeTab="planets";new $(this)}bodies(){let e=this.data;if(!e)return[];let t=(e.planets??[]).map(o=>({name:o.planet,sign:o.sign,house:o.house,nakshatra:o.nakshatra,starLord:o.starLord,subLord:o.subLord,subSubLord:o.subSubLord,kpNumber:o.kpNumber,retrograde:o.retrograde})),r=e.nodes;for(let[o,i]of[["Rahu",r?.rahu],["Ketu",r?.ketu]])i&&t.push({name:o,sign:i.sign,house:i.house,nakshatra:i.nakshatra,starLord:i.starLord,subLord:i.subLord,subSubLord:i.subSubLord,retrograde:!0});return t}onTabKeyDown(e){if(e.key!=="ArrowRight"&&e.key!=="ArrowLeft")return;e.preventDefault(),this.activeTab=this.activeTab==="planets"?"cusps":"planets";let t=this.activeTab;requestAnimationFrame(()=>{this.shadowRoot?.querySelector(`#tab-${t}`)?.focus()})}render(){if(!this.data)return s`<div class="roxy-empty" role="status">No KP chart data</div>`;let e=this.data,t=e.ascendant;return s`<div class="wrap" aria-label="KP chart" tabindex="0">
2100
2100
  <header class="head">
2101
2101
  <h2 class="title">KP chart</h2>
2102
2102
  ${t?s`<div class="asc">
@@ -2106,7 +2106,7 @@
2106
2106
  ${typeof t.kpNumber=="number"?s`· KP ${t.kpNumber}`:l}
2107
2107
  </div>`:l}
2108
2108
  ${typeof e.meta?.ayanamsa=="number"?s`<div class="ayan">
2109
- ${e.meta.ayanamsaType??"Ayanamsa"}: ${A(e.meta.ayanamsa,4)}°
2109
+ ${e.meta.ayanamsaType??"Ayanamsa"}: ${C(e.meta.ayanamsa,4)}°
2110
2110
  ${e.meta.houseSystem?s`· ${e.meta.houseSystem} houses`:l}
2111
2111
  </div>`:l}
2112
2112
  </header>
@@ -2185,7 +2185,7 @@
2185
2185
  <td class="num">${typeof t.kpNumber=="number"?t.kpNumber:""}</td>
2186
2186
  </tr>`)}
2187
2187
  </tbody>
2188
- </table>`:s`<p class="roxy-empty" role="status">No cusps</p>`}};te.styles=[v,f`
2188
+ </table>`:s`<p class="roxy-empty" role="status">No cusps</p>`}};re.styles=[v,f`
2189
2189
  .wrap {
2190
2190
  border: 1px solid var(--roxy-border, #e4e4e7);
2191
2191
  border-radius: var(--roxy-radius-md, 8px);
@@ -2275,14 +2275,14 @@
2275
2275
  .num {
2276
2276
  font-variant-numeric: tabular-nums;
2277
2277
  }
2278
- `],p([y({attribute:!1})],te.prototype,"data",2),p([z()],te.prototype,"activeTab",2),te=p([b("roxy-kp-chart")],te);var he=class extends x{constructor(){super(...arguments);this.data=null}render(){if(!this.data)return s`<div class="roxy-empty" role="status">No KP data</div>`;let e=this.data.planets??[];return s`<div
2278
+ `],p([u({attribute:!1})],re.prototype,"data",2),p([z()],re.prototype,"activeTab",2),re=p([b("roxy-kp-chart")],re);var ge=class extends x{constructor(){super();this.data=null;new $(this)}render(){if(!this.data)return s`<div class="roxy-empty" role="status">No KP data</div>`;let e=this.data.planets??[];return s`<div
2279
2279
  class="wrap"
2280
2280
  aria-label="KP planets table"
2281
2281
  tabindex="0"
2282
2282
  >
2283
2283
  <header class="head">
2284
2284
  <h2 class="title">KP planets</h2>
2285
- ${typeof this.data.ayanamsa=="number"?s`<span class="ayanamsa">Ayanamsa: ${A(this.data.ayanamsa,2)}°</span>`:l}
2285
+ ${typeof this.data.ayanamsa=="number"?s`<span class="ayanamsa">Ayanamsa: ${C(this.data.ayanamsa,2)}°</span>`:l}
2286
2286
  </header>
2287
2287
  <table role="table">
2288
2288
  <thead>
@@ -2313,7 +2313,7 @@
2313
2313
  </tr>`)}
2314
2314
  </tbody>
2315
2315
  </table>
2316
- </div>`}};he.styles=[v,f`
2316
+ </div>`}};ge.styles=[v,f`
2317
2317
  .wrap {
2318
2318
  border: 1px solid var(--roxy-border, #e4e4e7);
2319
2319
  border-radius: var(--roxy-radius-md, 8px);
@@ -2372,7 +2372,7 @@
2372
2372
  font-size: var(--roxy-text-xs, 0.75rem);
2373
2373
  margin-left: 4px;
2374
2374
  }
2375
- `],p([y({attribute:!1})],he.prototype,"data",2),he=p([b("roxy-kp-planets-table")],he);var ge=class extends x{constructor(){super(...arguments);this.data=null}render(){if(!this.data)return s`<div class="roxy-empty" role="status">No ruling planets data</div>`;let e=this.data,t=e.significators??[];return s`<div class="wrap" aria-label="KP ruling planets">
2375
+ `],p([u({attribute:!1})],ge.prototype,"data",2),ge=p([b("roxy-kp-planets-table")],ge);var ue=class extends x{constructor(){super();this.data=null;new $(this)}render(){if(!this.data)return s`<div class="roxy-empty" role="status">No ruling planets data</div>`;let e=this.data,t=e.significators??[];return s`<div class="wrap" aria-label="KP ruling planets">
2376
2376
  <header>
2377
2377
  <h2 class="title">KP ruling planets</h2>
2378
2378
  ${e.dayLord?s`<div class="day-lord">Day lord: <strong>${e.dayLord}</strong></div>`:l}
@@ -2418,7 +2418,7 @@
2418
2418
  </tr>`)}
2419
2419
  </tbody>
2420
2420
  </table>`:l}
2421
- </div>`}};ge.styles=[v,f`
2421
+ </div>`}};ue.styles=[v,f`
2422
2422
  .wrap {
2423
2423
  border: 1px solid var(--roxy-border, #e4e4e7);
2424
2424
  border-radius: var(--roxy-radius-md, 8px);
@@ -2514,7 +2514,7 @@
2514
2514
  font-size: var(--roxy-text-xs, 0.75rem);
2515
2515
  letter-spacing: 0.04em;
2516
2516
  }
2517
- `],p([y({attribute:!1})],ge.prototype,"data",2),ge=p([b("roxy-kp-ruling-planets")],ge);function lr(n,a){let e,t=((...r)=>{e&&clearTimeout(e),e=setTimeout(()=>{e=void 0,n(...r)},a)});return t.cancel=()=>{e&&(clearTimeout(e),e=void 0)},t}var _=class extends x{constructor(){super(...arguments);this.endpoint="https://roxyapi.com/api/v2/location/search";this.placeholder="Search city";this.defaultValue="";this.query="";this.results=[];this.isOpen=!1;this.isLoading=!1;this.highlight=-1;this.secretKeyWarned=!1;this.debouncedFetch=lr(e=>{this.fetchResults(e)},300);this.onInput=e=>{let t=e.target.value;if(this.query=t,t.length<2){this.results=[],this.isOpen=!1,this.highlight=-1;return}this.debouncedFetch(t)};this.onKeyDown=e=>{if(!this.isOpen||this.results.length===0){e.key==="ArrowDown"&&this.query.length>=2&&(this.fetchResults(this.query),e.preventDefault());return}if(e.key==="ArrowDown")e.preventDefault(),this.highlight=(this.highlight+1)%this.results.length;else if(e.key==="ArrowUp")e.preventDefault(),this.highlight=(this.highlight-1+this.results.length)%this.results.length;else if(e.key==="Enter"){e.preventDefault();let t=this.results[this.highlight]??this.results[0];t&&this.select(t)}else e.key==="Escape"&&(this.isOpen=!1)}}connectedCallback(){super.connectedCallback(),this.query=this.defaultValue,this.clickOutsideHandler=e=>{e.composedPath().includes(this)||(this.isOpen=!1)},document.addEventListener("mousedown",this.clickOutsideHandler)}disconnectedCallback(){super.disconnectedCallback(),this.clickOutsideHandler&&document.removeEventListener("mousedown",this.clickOutsideHandler),this.debouncedFetch.cancel(),this.abortController&&(this.abortController.abort(),this.abortController=void 0)}warnIfSecretKey(){if(this.secretKeyWarned||!this.apiKey||this.apiKey.startsWith("pk_"))return;this.secretKeyWarned=!0;let e="Possible secret key in client-side <roxy-location-search>; use a `pk_` publishable key with origin allowlist instead.";console.warn(e),this.dispatchEvent(new CustomEvent("roxy-validation-error",{detail:{reason:"possible-secret-key",message:e},bubbles:!0,composed:!0}))}async fetchResults(e){this.warnIfSecretKey(),this.abortController&&this.abortController.abort();let t=new AbortController;this.abortController=t,this.isLoading=!0;try{let r=new URL(this.endpoint);r.searchParams.set("q",e),r.searchParams.set("limit","8");let o={Accept:"application/json"};this.apiKey&&this.publishableKey&&console.warn("[roxy-location-search] both api-key and publishable-key set; using publishable-key. Remove api-key from your widget markup.");let i=this.publishableKey??this.apiKey;i&&(o["X-API-Key"]=i);let d=await fetch(r,{headers:o,signal:t.signal});if(!d.ok)throw new Error(`HTTP ${d.status}`);let c=await d.json();if(t.signal.aborted)return;this.results=c.cities??[],this.isOpen=this.results.length>0,this.highlight=this.results.length>0?0:-1}catch(r){if(r?.name==="AbortError")return;this.results=[],this.isOpen=!1}finally{this.abortController===t&&(this.abortController=void 0),t.signal.aborted||(this.isLoading=!1)}}select(e){this.query=`${e.city}${e.province?`, ${e.province}`:""}, ${e.country}`,this.isOpen=!1,this.results=[],this.dispatchEvent(new CustomEvent("roxy-location-select",{detail:e,bubbles:!0,composed:!0}))}render(){return s`<div class="field">
2517
+ `],p([u({attribute:!1})],ue.prototype,"data",2),ue=p([b("roxy-kp-ruling-planets")],ue);function dr(n,a){let e,t=((...r)=>{e&&clearTimeout(e),e=setTimeout(()=>{e=void 0,n(...r)},a)});return t.cancel=()=>{e&&(clearTimeout(e),e=void 0)},t}var D=class extends x{constructor(){super(...arguments);this.endpoint="https://roxyapi.com/api/v2/location/search";this.placeholder="Search city";this.defaultValue="";this.query="";this.results=[];this.isOpen=!1;this.isLoading=!1;this.highlight=-1;this.secretKeyWarned=!1;this.debouncedFetch=dr(e=>{this.fetchResults(e)},300);this.onInput=e=>{let t=e.target.value;if(this.query=t,t.length<2){this.results=[],this.isOpen=!1,this.highlight=-1;return}this.debouncedFetch(t)};this.onKeyDown=e=>{if(!this.isOpen||this.results.length===0){e.key==="ArrowDown"&&this.query.length>=2&&(this.fetchResults(this.query),e.preventDefault());return}if(e.key==="ArrowDown")e.preventDefault(),this.highlight=(this.highlight+1)%this.results.length;else if(e.key==="ArrowUp")e.preventDefault(),this.highlight=(this.highlight-1+this.results.length)%this.results.length;else if(e.key==="Enter"){e.preventDefault();let t=this.results[this.highlight]??this.results[0];t&&this.select(t)}else e.key==="Escape"&&(this.isOpen=!1)}}connectedCallback(){super.connectedCallback(),this.query=this.defaultValue,this.clickOutsideHandler=e=>{e.composedPath().includes(this)||(this.isOpen=!1)},document.addEventListener("mousedown",this.clickOutsideHandler)}disconnectedCallback(){super.disconnectedCallback(),this.clickOutsideHandler&&document.removeEventListener("mousedown",this.clickOutsideHandler),this.debouncedFetch.cancel(),this.abortController&&(this.abortController.abort(),this.abortController=void 0)}warnIfSecretKey(){if(this.secretKeyWarned||!this.apiKey||this.apiKey.startsWith("pk_"))return;this.secretKeyWarned=!0;let e="Possible secret key in client-side <roxy-location-search>; use a `pk_` publishable key with origin allowlist instead.";console.warn(e),this.dispatchEvent(new CustomEvent("roxy-validation-error",{detail:{reason:"possible-secret-key",message:e},bubbles:!0,composed:!0}))}async fetchResults(e){this.warnIfSecretKey(),this.abortController&&this.abortController.abort();let t=new AbortController;this.abortController=t,this.isLoading=!0;try{let r=new URL(this.endpoint);r.searchParams.set("q",e),r.searchParams.set("limit","8");let o={Accept:"application/json"};this.apiKey&&this.publishableKey&&console.warn("[roxy-location-search] both api-key and publishable-key set; using publishable-key. Remove api-key from your widget markup.");let i=this.publishableKey??this.apiKey;i&&(o["X-API-Key"]=i);let d=await fetch(r,{headers:o,signal:t.signal});if(!d.ok)throw new Error(`HTTP ${d.status}`);let c=await d.json();if(t.signal.aborted)return;this.results=c.cities??[],this.isOpen=this.results.length>0,this.highlight=this.results.length>0?0:-1}catch(r){if(r?.name==="AbortError")return;this.results=[],this.isOpen=!1}finally{this.abortController===t&&(this.abortController=void 0),t.signal.aborted||(this.isLoading=!1)}}select(e){this.query=`${e.city}${e.province?`, ${e.province}`:""}, ${e.country}`,this.isOpen=!1,this.results=[],this.dispatchEvent(new CustomEvent("roxy-location-select",{detail:e,bubbles:!0,composed:!0}))}render(){return s`<div class="field">
2518
2518
  <input
2519
2519
  type="text"
2520
2520
  role="combobox"
@@ -2555,7 +2555,7 @@
2555
2555
  </button>
2556
2556
  </li>`)}
2557
2557
  </ul>`:l}
2558
- </div>`}};_.styles=[v,f`
2558
+ </div>`}};D.styles=[v,f`
2559
2559
  :host {
2560
2560
  display: block;
2561
2561
  position: relative;
@@ -2656,7 +2656,7 @@
2656
2656
  color: var(--roxy-muted, #71717a);
2657
2657
  font-size: var(--roxy-text-sm, 0.875rem);
2658
2658
  }
2659
- `],p([y({type:String,attribute:"api-key"})],_.prototype,"apiKey",2),p([y({type:String,attribute:"publishable-key"})],_.prototype,"publishableKey",2),p([y({type:String})],_.prototype,"endpoint",2),p([y({type:String})],_.prototype,"placeholder",2),p([y({type:String,attribute:"default-value"})],_.prototype,"defaultValue",2),p([z()],_.prototype,"query",2),p([z()],_.prototype,"results",2),p([z()],_.prototype,"isOpen",2),p([z()],_.prototype,"isLoading",2),p([z()],_.prototype,"highlight",2),_=p([b("roxy-location-search")],_);var re=class extends x{constructor(){super(...arguments);this.data=null;this.mode="current"}render(){let e=this.data;if(!e)return s`<div class="roxy-empty" role="status">No moon phase data</div>`;let t="phases"in e?e.phases:"calendar"in e?e.calendar:[];if(this.mode!=="current"&&t.length>0){let r="month"in e?e.month:void 0,o="year"in e?e.year:void 0;return s`<article
2659
+ `],p([u({type:String,attribute:"api-key"})],D.prototype,"apiKey",2),p([u({type:String,attribute:"publishable-key"})],D.prototype,"publishableKey",2),p([u({type:String})],D.prototype,"endpoint",2),p([u({type:String})],D.prototype,"placeholder",2),p([u({type:String,attribute:"default-value"})],D.prototype,"defaultValue",2),p([z()],D.prototype,"query",2),p([z()],D.prototype,"results",2),p([z()],D.prototype,"isOpen",2),p([z()],D.prototype,"isLoading",2),p([z()],D.prototype,"highlight",2),D=p([b("roxy-location-search")],D);var ae=class extends x{constructor(){super();this.data=null;this.mode="current";new $(this)}render(){let e=this.data;if(!e)return s`<div class="roxy-empty" role="status">No moon phase data</div>`;let t="phases"in e?e.phases:"calendar"in e?e.calendar:[];if(this.mode!=="current"&&t.length>0){let r="month"in e?e.month:void 0,o="year"in e?e.year:void 0;return s`<article
2660
2660
  class="card"
2661
2661
  aria-label="Moon phase calendar"
2662
2662
  >
@@ -2664,7 +2664,7 @@
2664
2664
  <div class="list" role="list">
2665
2665
  ${t.map(i=>this.renderListItem(i))}
2666
2666
  </div>
2667
- </article>`}return"phase"in e?this.renderSingle(e):l}renderSingle(e){let t=dr(e.phase);return s`<article class="card" aria-label="Current moon phase">
2667
+ </article>`}return"phase"in e?this.renderSingle(e):l}renderSingle(e){let t=cr(e.phase);return s`<article class="card" aria-label="Current moon phase">
2668
2668
  <div class="hero">
2669
2669
  <span class="emoji" aria-hidden="true">${t}</span>
2670
2670
  <div>
@@ -2675,11 +2675,11 @@
2675
2675
  <div class="stats">
2676
2676
  ${typeof e.illumination=="number"?s`<div>
2677
2677
  <span>Illumination</span>
2678
- <strong>${oa(e.illumination)}</strong>
2678
+ <strong>${la(e.illumination)}</strong>
2679
2679
  </div>`:l}
2680
2680
  ${typeof e.age=="number"?s`<div>
2681
2681
  <span>Age</span>
2682
- <strong>${A(e.age,1)} days</strong>
2682
+ <strong>${C(e.age,1)} days</strong>
2683
2683
  </div>`:l}
2684
2684
  ${e.sign?s`<div>
2685
2685
  <span>Sign</span>
@@ -2694,11 +2694,11 @@
2694
2694
  ${e.meaning?.keywords?.length?s`<div class="keywords">
2695
2695
  ${e.meaning.keywords.map(r=>s`<span>${r}</span>`)}
2696
2696
  </div>`:l}
2697
- </article>`}renderListItem(e){let t=dr(e.phase);return s`<div class="list-item" role="listitem">
2697
+ </article>`}renderListItem(e){let t=cr(e.phase);return s`<div class="list-item" role="listitem">
2698
2698
  <span aria-hidden="true">${t}</span>
2699
2699
  <span>${e.phase}</span>
2700
2700
  <span>${e.date??""}</span>
2701
- </div>`}};re.styles=[v,f`
2701
+ </div>`}};ae.styles=[v,f`
2702
2702
  .card {
2703
2703
  background: var(--roxy-bg, #fff);
2704
2704
  border: 1px solid var(--roxy-border, #e4e4e7);
@@ -2780,7 +2780,7 @@
2780
2780
  .list-item:last-child {
2781
2781
  border-bottom: none;
2782
2782
  }
2783
- `],p([y({attribute:!1})],re.prototype,"data",2),p([y({type:String,reflect:!0})],re.prototype,"mode",2),re=p([b("roxy-moon-phase")],re);function dr(n){return n?er[n.toLowerCase()]??"\u{1F319}":"\u{1F319}"}function oa(n){let a=n<=1?n*100:n;return`${Math.round(a)}%`}var ye=class extends x{constructor(){super(...arguments);this.data=null}render(){if(!this.data)return s`<div class="roxy-empty" role="status">No nakshatra data</div>`;let e=this.data,t=e.remedies;return s`<article class="wrap" aria-label=${`Nakshatra ${e.name}`}>
2783
+ `],p([u({attribute:!1})],ae.prototype,"data",2),p([u({type:String,reflect:!0})],ae.prototype,"mode",2),ae=p([b("roxy-moon-phase")],ae);function cr(n){return n?tr[n.toLowerCase()]??"\u{1F319}":"\u{1F319}"}function la(n){let a=n<=1?n*100:n;return`${Math.round(a)}%`}var ye=class extends x{constructor(){super();this.data=null;new $(this)}render(){if(!this.data)return s`<div class="roxy-empty" role="status">No nakshatra data</div>`;let e=this.data,t=e.remedies;return s`<article class="wrap" aria-label=${`Nakshatra ${e.name}`}>
2784
2784
  <header class="head">
2785
2785
  <h2 class="name">${e.name}</h2>
2786
2786
  ${typeof e.number=="number"?s`<span class="number">Nakshatra ${e.number} of 27</span>`:l}
@@ -2882,7 +2882,7 @@
2882
2882
  color: var(--roxy-muted, #71717a);
2883
2883
  font-weight: var(--roxy-weight-bold, 600);
2884
2884
  }
2885
- `],p([y({attribute:!1})],ye.prototype,"data",2),ye=p([b("roxy-nakshatra-card")],ye);var Tt=420,S=Tt/2,Ne=164,Pt=146,Ve=120,ze=96,na=178,ia=196,K=class extends x{constructor(){super(...arguments);this.data=null;this.houseSystem="placidus";this.view="wheel"}getPlanets(){return this.data?.planets??[]}getAscendant(){return this.data?.ascendant?.longitude??0}getMidheaven(){let e=this.data?.midheaven?.longitude;return typeof e=="number"?e:null}toAngle(e){return 180+this.getAscendant()-e}render(){if(!this.data)return s`<div class="roxy-empty" role="status">No chart data</div>`;let e=this.getPlanets(),t=this.data.aspects??[],r=this.view;return s`<div class="wrap">
2885
+ `],p([u({attribute:!1})],ye.prototype,"data",2),ye=p([b("roxy-nakshatra-card")],ye);var Rt=420,A=Rt/2,Ne=164,Tt=146,Ye=120,ze=96,da=178,ca=196,q=class extends x{constructor(){super();this.data=null;this.houseSystem="placidus";this.view="wheel";new $(this)}getPlanets(){return this.data?.planets??[]}getAscendant(){return this.data?.ascendant?.longitude??0}getMidheaven(){let e=this.data?.midheaven?.longitude;return typeof e=="number"?e:null}toAngle(e){return 180+this.getAscendant()-e}render(){if(!this.data)return s`<div class="roxy-empty" role="status">No chart data</div>`;let e=this.getPlanets(),t=this.data.aspects??[],r=this.view;return s`<div class="wrap">
2886
2886
  <header>
2887
2887
  <h2 class="title">Natal chart</h2>
2888
2888
  ${this.data.birthDetails?s`<div class="meta">
@@ -2920,7 +2920,7 @@
2920
2920
  ${this.renderDetails()}
2921
2921
  ${this.renderInterpretations()}
2922
2922
  </div>`}onTabKeyDown(e){if(e.key!=="ArrowRight"&&e.key!=="ArrowLeft")return;e.preventDefault(),this.view=this.view==="wheel"?"grid":"wheel";let t=this.view;requestAnimationFrame(()=>{this.shadowRoot?.querySelector(`#tab-${t}`)?.focus()})}renderWheel(e,t){return s`<svg
2923
- viewBox="0 0 ${Tt} ${Tt}"
2923
+ viewBox="0 0 ${Rt} ${Rt}"
2924
2924
  role="img"
2925
2925
  aria-label="Natal chart wheel with twelve houses, planets, and aspects"
2926
2926
  >
@@ -2929,10 +2929,10 @@
2929
2929
  Twelve zodiac sign segments around a circular wheel. Planet glyphs are
2930
2930
  placed at their ecliptic longitudes. Aspect lines connect related planets.
2931
2931
  </desc>
2932
- <circle class="wheel-line" cx=${S} cy=${S} r=${Ne} stroke-width="1.5" />
2933
- <circle class="wheel-line" cx=${S} cy=${S} r=${Pt-14} stroke-width="0.8" />
2934
- <circle class="wheel-line" cx=${S} cy=${S} r=${Ve} stroke-width="1" />
2935
- <circle class="wheel-line" cx=${S} cy=${S} r=${ze-16} stroke-width="0.5" />
2932
+ <circle class="wheel-line" cx=${A} cy=${A} r=${Ne} stroke-width="1.5" />
2933
+ <circle class="wheel-line" cx=${A} cy=${A} r=${Tt-14} stroke-width="0.8" />
2934
+ <circle class="wheel-line" cx=${A} cy=${A} r=${Ye} stroke-width="1" />
2935
+ <circle class="wheel-line" cx=${A} cy=${A} r=${ze-16} stroke-width="0.5" />
2936
2936
  ${this.renderTicks()} ${this.renderSpokes()} ${this.renderSigns()}
2937
2937
  ${this.renderHouseNumbers()} ${this.renderCuspDegrees()}
2938
2938
  ${this.renderAspects(e,t)} ${this.renderPlanets(e)}
@@ -2942,28 +2942,28 @@
2942
2942
  <thead>
2943
2943
  <tr>
2944
2944
  <th></th>
2945
- ${r.slice(0,-1).map(i=>{let d=R[i]??i.slice(0,2);return s`<th scope="col" title=${i}>${d}</th>`})}
2945
+ ${r.slice(0,-1).map(i=>{let d=M[i]??i.slice(0,2);return s`<th scope="col" title=${i}>${d}</th>`})}
2946
2946
  </tr>
2947
2947
  </thead>
2948
2948
  <tbody>
2949
- ${r.slice(1).map((i,d)=>{let c=R[i]??i.slice(0,2);return s`<tr>
2949
+ ${r.slice(1).map((i,d)=>{let c=M[i]??i.slice(0,2);return s`<tr>
2950
2950
  <th scope="row" title=${i}>${c}</th>
2951
- ${r.slice(0,d+1).map(m=>{let g=o.get([i,m].sort().join("|"));if(!g)return s`<td class="empty"></td>`;let h=Re(g),u=kt[h]??kt[h.replace(/-/g,"")]??h.slice(0,3),k=qe[h]??"aspect-other",$=A(g.orb,1);return s`<td class=${`cell ${k}`} title=${`${i} ${h} ${m}${$?` (orb ${$}\xB0)`:""}`}>
2952
- <span class="asp">${u}</span>
2951
+ ${r.slice(0,d+1).map(m=>{let g=o.get([i,m].sort().join("|"));if(!g)return s`<td class="empty"></td>`;let h=Me(g),y=St[h]??St[h.replace(/-/g,"")]??h.slice(0,3),S=Ve[h]??"aspect-other",w=C(g.orb,1);return s`<td class=${`cell ${S}`} title=${`${i} ${h} ${m}${w?` (orb ${w}\xB0)`:""}`}>
2952
+ <span class="asp">${y}</span>
2953
2953
  </td>`})}
2954
2954
  ${r.slice(d+1,-1).map(()=>s`<td class="empty"></td>`)}
2955
2955
  </tr>`})}
2956
2956
  </tbody>
2957
2957
  </table>
2958
- </div>`}renderAngles(){let e=this.getAscendant(),t=this.getMidheaven(),r=[this.renderAngleMark(e,"ASC"),this.renderAngleMark(Et(e),"DSC")];t!==null&&(r.push(this.renderAngleMark(t,"MC")),r.push(this.renderAngleMark(Et(t),"IC")));let o=this.data?.partOfFortune?.longitude;typeof o=="number"&&r.push(this.renderAngleMark(I(o),"PoF"));let i=this.data?.vertex?.longitude;return typeof i=="number"&&r.push(this.renderAngleMark(I(i),"Vtx")),r}renderAngleMark(e,t){let r=this.toAngle(e),o=L(S,S,Ne,r),i=L(S,S,na,r),d=L(S,S,ia,r);return w`
2958
+ </div>`}renderAngles(){let e=this.getAscendant(),t=this.getMidheaven(),r=[this.renderAngleMark(e,"ASC"),this.renderAngleMark(Et(e),"DSC")];t!==null&&(r.push(this.renderAngleMark(t,"MC")),r.push(this.renderAngleMark(Et(t),"IC")));let o=this.data?.partOfFortune?.longitude;typeof o=="number"&&r.push(this.renderAngleMark(B(o),"PoF"));let i=this.data?.vertex?.longitude;return typeof i=="number"&&r.push(this.renderAngleMark(B(i),"Vtx")),r}renderAngleMark(e,t){let r=this.toAngle(e),o=P(A,A,Ne,r),i=P(A,A,da,r),d=P(A,A,ca,r);return k`
2959
2959
  <g>
2960
2960
  <line class="angle-tick" x1=${o.x} y1=${o.y} x2=${i.x} y2=${i.y} />
2961
2961
  <text class="angle-marker" x=${d.x} y=${d.y} text-anchor="middle" dominant-baseline="central">${t}</text>
2962
2962
  </g>
2963
- `}renderSpokes(){let e=this.data?.houses??[];return(e.length===12?e.map(r=>r.longitude):Array.from({length:12},(r,o)=>this.getAscendant()+o*30)).map(r=>{let o=this.toAngle(r),i=L(S,S,Ve,o),d=L(S,S,Ne,o);return w`<line class="wheel-line" x1=${i.x} y1=${i.y} x2=${d.x} y2=${d.y} stroke-width="0.8" />`})}renderSigns(){return M.map((e,t)=>{let r=this.toAngle(t*30+15),o=L(S,S,Pt,r);return w`<text class="sign-glyph" x=${o.x} y=${o.y} text-anchor="middle" dominant-baseline="central">${G[e]}</text>`})}renderHouseNumbers(){let e=this.data?.houses??[];if(e.length===12)return e.map((r,o)=>{let i=e[(o+1)%12],d=or(r.longitude,i?i.longitude:r.longitude+30),c=L(S,S,Ve-12,this.toAngle(d));return w`<text class="house-num" x=${c.x} y=${c.y} text-anchor="middle" dominant-baseline="central">${r.number}</text>`});let t=Math.floor(this.getAscendant()/30);return Array.from({length:12},(r,o)=>{let i=this.toAngle(o*30+15),d=L(S,S,Ve-12,i),c=(o-t+12)%12+1;return w`<text class="house-num" x=${d.x} y=${d.y} text-anchor="middle" dominant-baseline="central">${c}</text>`})}renderTicks(){let e=[];for(let t=0;t<360;t+=5){let r=this.toAngle(t),o=t%30===0,i=o?Pt-14:Ne-5,d=L(S,S,i,r),c=L(S,S,Ne,r);e.push(w`<line class=${o?"tick tick-major":"tick"} x1=${d.x} y1=${d.y} x2=${c.x} y2=${c.y} stroke-width=${o?1:.5} />`)}return e}renderCuspDegrees(){let e=this.data?.houses??[];return e.length!==12?l:e.map(t=>{let r=this.toAngle(t.longitude),o=L(S,S,Ve+9,r),i=B(t.longitude);return w`<text class="cusp-deg" x=${o.x} y=${o.y} text-anchor="middle" dominant-baseline="central">${i.degree}°${String(i.minute).padStart(2,"0")}'</text>`})}renderPlanets(e){let r=e.filter(i=>Number.isFinite(i.longitude)).map(i=>({p:i,trueLon:I(i.longitude),displayLon:I(i.longitude)})).sort((i,d)=>i.trueLon-d.trueLon);for(let i=1;i<r.length;i++){let d=r[i-1],c=r[i];if(!d||!c)continue;let m=d.displayLon+7;c.displayLon<m&&(c.displayLon=m)}let o=r[r.length-1];if(o&&o.displayLon>360){let i=o.displayLon-360;for(let d of r)d.displayLon-=i}return r.map(({p:i,trueLon:d,displayLon:c})=>{let m=this.toAngle(d),g=this.toAngle(c),h=L(S,S,ze,g),u=L(S,S,ze-13,g),k=L(S,S,Ne-4,m),$=L(S,S,ze+8,g),$e=R[E(i.name)]??i.name.slice(0,2),Ye=B(i.longitude),_e=i.isRetrograde===!0,Ue=`${Ye.degree}\xB0${String(Ye.minute).padStart(2,"0")}'`,Fe=Math.abs(c-d)>.5;return w`<g>
2964
- ${Fe?w`<line class="planet-leader" x1=${k.x} y1=${k.y} x2=${$.x} y2=${$.y} />`:l}
2965
- <text class="planet-glyph" x=${h.x} y=${h.y} text-anchor="middle" dominant-baseline="central"><title>${i.name}${_e?" retrograde":""} - ${Ue} ${i.sign??""}</title>${$e}</text>
2966
- <text class="planet-deg" x=${u.x} y=${u.y} text-anchor="middle" dominant-baseline="central">${Ue}${_e?w`<tspan class="retro"> ℞</tspan>`:l}</text>
2963
+ `}renderSpokes(){let e=this.data?.houses??[];return(e.length===12?e.map(r=>r.longitude):Array.from({length:12},(r,o)=>this.getAscendant()+o*30)).map(r=>{let o=this.toAngle(r),i=P(A,A,Ye,o),d=P(A,A,Ne,o);return k`<line class="wheel-line" x1=${i.x} y1=${i.y} x2=${d.x} y2=${d.y} stroke-width="0.8" />`})}renderSigns(){return _.map((e,t)=>{let r=this.toAngle(t*30+15),o=P(A,A,Tt,r);return k`<text class="sign-glyph" x=${o.x} y=${o.y} text-anchor="middle" dominant-baseline="central">${G[e]}</text>`})}renderHouseNumbers(){let e=this.data?.houses??[];if(e.length===12)return e.map((r,o)=>{let i=e[(o+1)%12],d=nr(r.longitude,i?i.longitude:r.longitude+30),c=P(A,A,Ye-12,this.toAngle(d));return k`<text class="house-num" x=${c.x} y=${c.y} text-anchor="middle" dominant-baseline="central">${r.number}</text>`});let t=Math.floor(this.getAscendant()/30);return Array.from({length:12},(r,o)=>{let i=this.toAngle(o*30+15),d=P(A,A,Ye-12,i),c=(o-t+12)%12+1;return k`<text class="house-num" x=${d.x} y=${d.y} text-anchor="middle" dominant-baseline="central">${c}</text>`})}renderTicks(){let e=[];for(let t=0;t<360;t+=5){let r=this.toAngle(t),o=t%30===0,i=o?Tt-14:Ne-5,d=P(A,A,i,r),c=P(A,A,Ne,r);e.push(k`<line class=${o?"tick tick-major":"tick"} x1=${d.x} y1=${d.y} x2=${c.x} y2=${c.y} stroke-width=${o?1:.5} />`)}return e}renderCuspDegrees(){let e=this.data?.houses??[];return e.length!==12?l:e.map(t=>{let r=this.toAngle(t.longitude),o=P(A,A,Ye+9,r),i=K(t.longitude);return k`<text class="cusp-deg" x=${o.x} y=${o.y} text-anchor="middle" dominant-baseline="central">${i.degree}°${String(i.minute).padStart(2,"0")}'</text>`})}renderPlanets(e){let r=e.filter(i=>Number.isFinite(i.longitude)).map(i=>({p:i,trueLon:B(i.longitude),displayLon:B(i.longitude)})).sort((i,d)=>i.trueLon-d.trueLon);for(let i=1;i<r.length;i++){let d=r[i-1],c=r[i];if(!d||!c)continue;let m=d.displayLon+7;c.displayLon<m&&(c.displayLon=m)}let o=r[r.length-1];if(o&&o.displayLon>360){let i=o.displayLon-360;for(let d of r)d.displayLon-=i}return r.map(({p:i,trueLon:d,displayLon:c})=>{let m=this.toAngle(d),g=this.toAngle(c),h=P(A,A,ze,g),y=P(A,A,ze-13,g),S=P(A,A,Ne-4,m),w=P(A,A,ze+8,g),we=M[E(i.name)]??i.name.slice(0,2),Ue=K(i.longitude),De=i.isRetrograde===!0,Fe=`${Ue.degree}\xB0${String(Ue.minute).padStart(2,"0")}'`,We=Math.abs(c-d)>.5;return k`<g>
2964
+ ${We?k`<line class="planet-leader" x1=${S.x} y1=${S.y} x2=${w.x} y2=${w.y} />`:l}
2965
+ <text class="planet-glyph" x=${h.x} y=${h.y} text-anchor="middle" dominant-baseline="central"><title>${i.name}${De?" retrograde":""} - ${Fe} ${i.sign??""}</title>${we}</text>
2966
+ <text class="planet-deg" x=${y.x} y=${y.y} text-anchor="middle" dominant-baseline="central">${Fe}${De?k`<tspan class="retro"> ℞</tspan>`:l}</text>
2967
2967
  </g>`})}renderDetails(){let e=this.data?.summary,t=this.data?.aspectsInterpretation;if(!e&&!t)return l;let r=e?.retrogradePlanets??[];return s`<div class="details">
2968
2968
  ${e?.dominantElement||e?.dominantModality?s`<div class="pill-row">
2969
2969
  ${e.dominantElement?s`<span class="pill">Dominant element: ${e.dominantElement}</span>`:l}
@@ -2975,11 +2975,11 @@
2975
2975
  <span class="pill pill--muted">Neutral ${t.neutral}</span>
2976
2976
  </div>`:l}
2977
2977
  ${r.length>0?s`<div class="pill-row">
2978
- ${r.map(o=>{let i=R[o]??o.slice(0,2);return s`<span class="pill pill--muted">${i} ${o} R</span>`})}
2978
+ ${r.map(o=>{let i=M[o]??o.slice(0,2);return s`<span class="pill pill--muted">${i} ${o} R</span>`})}
2979
2979
  </div>`:l}
2980
2980
  ${t?.summary?s`<p class="summary">${t.summary}</p>`:l}
2981
2981
  ${this.renderElementModalityGrid()}
2982
- </div>`}renderElementModalityGrid(){let e=this.getPlanets();if(e.length===0)return l;let t=["Fire","Earth","Air","Water"],r=["Cardinal","Fixed","Mutable"],o=M,i={};for(let d of t)i[d]={Cardinal:[],Fixed:[],Mutable:[]};for(let d of e){let c=o.indexOf(E(d.sign??""));if(c<0)continue;let m=t[c%4],g=r[c%3],h=R[E(d.name)]??E(d.name).slice(0,2);i[m]?.[g]?.push(h)}return s`<table class="em-grid" aria-label="Element and modality distribution">
2982
+ </div>`}renderElementModalityGrid(){let e=this.getPlanets();if(e.length===0)return l;let t=["Fire","Earth","Air","Water"],r=["Cardinal","Fixed","Mutable"],o=_,i={};for(let d of t)i[d]={Cardinal:[],Fixed:[],Mutable:[]};for(let d of e){let c=o.indexOf(E(d.sign??""));if(c<0)continue;let m=t[c%4],g=r[c%3],h=M[E(d.name)]??E(d.name).slice(0,2);i[m]?.[g]?.push(h)}return s`<table class="em-grid" aria-label="Element and modality distribution">
2983
2983
  <thead>
2984
2984
  <tr>
2985
2985
  <th></th>
@@ -3001,7 +3001,7 @@
3001
3001
  </tbody>
3002
3002
  </table>`}renderInterpretations(){let e=this.getPlanets().filter(t=>t.interpretation);return e.length===0?l:s`<section class="interpretations">
3003
3003
  <h3>Planet readings</h3>
3004
- ${e.map((t,r)=>{let o=t.interpretation,i=R[E(t.name)]??"",d=A(t.degree??0,1);return s`<details class="interp-card" name="natal-planet-readings" ?open=${r===0}>
3004
+ ${e.map((t,r)=>{let o=t.interpretation,i=M[E(t.name)]??"",d=C(t.degree??0,1);return s`<details class="interp-card" name="natal-planet-readings" ?open=${r===0}>
3005
3005
  <summary>${i} ${t.name} <small>${t.sign??""} ${d}</small></summary>
3006
3006
  <div class="interp-body">
3007
3007
  ${o.summary?s`<p class="interp-summary">${o.summary}</p>`:l}
@@ -3009,7 +3009,7 @@
3009
3009
  ${o.keywords?.length?s`<div class="interp-keywords">${o.keywords.map(c=>s`<span class="kw">${c}</span>`)}</div>`:l}
3010
3010
  </div>
3011
3011
  </details>`})}
3012
- </section>`}renderAspects(e,t){let r=new Map;for(let o of e){if(typeof o.longitude!="number")continue;let i=E(o.name);i&&r.set(i,o.longitude)}return t.map(o=>{let i=r.get(E(o.planet1)),d=r.get(E(o.planet2));if(i===void 0||d===void 0)return l;let c=L(S,S,ze-18,this.toAngle(i)),m=L(S,S,ze-18,this.toAngle(d)),g=Re(o),h=qe[g]??"aspect-other",u=A(o.orb,1);return w`<line class=${`aspect ${h}`} x1=${c.x} y1=${c.y} x2=${m.x} y2=${m.y}><title>${o.planet1} ${g||""} ${o.planet2}${u?` (orb ${u}\xB0)`:""}</title></line>`})}};K.styles=[v,f`
3012
+ </section>`}renderAspects(e,t){let r=new Map;for(let o of e){if(typeof o.longitude!="number")continue;let i=E(o.name);i&&r.set(i,o.longitude)}return t.map(o=>{let i=r.get(E(o.planet1)),d=r.get(E(o.planet2));if(i===void 0||d===void 0)return l;let c=P(A,A,ze-18,this.toAngle(i)),m=P(A,A,ze-18,this.toAngle(d)),g=Me(o),h=Ve[g]??"aspect-other",y=C(o.orb,1);return k`<line class=${`aspect ${h}`} x1=${c.x} y1=${c.y} x2=${m.x} y2=${m.y}><title>${o.planet1} ${g||""} ${o.planet2}${y?` (orb ${y}\xB0)`:""}</title></line>`})}};q.styles=[v,f`
3013
3013
  .wrap {
3014
3014
  width: 100%;
3015
3015
  display: grid;
@@ -3346,7 +3346,7 @@
3346
3346
  color: var(--roxy-accent-fg, #b45309);
3347
3347
  font-size: var(--roxy-text-xs, 0.75rem);
3348
3348
  }
3349
- `],p([y({attribute:!1})],K.prototype,"data",2),p([y({type:String,attribute:"house-system",reflect:!0})],K.prototype,"houseSystem",2),p([z()],K.prototype,"view",2),K=p([b("roxy-natal-chart")],K);var ae=class extends x{constructor(){super(...arguments);this.data=null;this.type="life-path"}render(){let e=this.data;if(!e)return s`<div class="roxy-empty" role="status">No numerology data</div>`;let t=la[this.type]??this.type;return"coreNumbers"in e?this.renderChart(e,t):"personalYear"in e?this.renderPersonalYear(e,t):this.renderNumberCard(e,t)}renderNumberCard(e,t){let r=e.meaning?.keywords??[];return s`<article class="card" aria-label=${t}>
3349
+ `],p([u({attribute:!1})],q.prototype,"data",2),p([u({type:String,attribute:"house-system",reflect:!0})],q.prototype,"houseSystem",2),p([z()],q.prototype,"view",2),q=p([b("roxy-natal-chart")],q);var se=class extends x{constructor(){super();this.data=null;this.type="life-path";new $(this)}render(){let e=this.data;if(!e)return s`<div class="roxy-empty" role="status">No numerology data</div>`;let t=pa[this.type]??this.type;return"coreNumbers"in e?this.renderChart(e,t):"personalYear"in e?this.renderPersonalYear(e,t):this.renderNumberCard(e,t)}renderNumberCard(e,t){let r=e.meaning?.keywords??[];return s`<article class="card" aria-label=${t}>
3350
3350
  <div class="hero">
3351
3351
  ${typeof e.number=="number"?s`<div class="numeral">${e.number}</div>`:l}
3352
3352
  <div>
@@ -3361,7 +3361,7 @@
3361
3361
  </div>`:l}
3362
3362
  ${e.hasKarmicDebt&&e.karmicDebtNumber?s`<div class="karmic">
3363
3363
  Karmic debt ${e.karmicDebtNumber}.
3364
- ${da(e.karmicDebtMeaning)}
3364
+ ${ma(e.karmicDebtMeaning)}
3365
3365
  </div>`:l}
3366
3366
  </article>`}renderPersonalYear(e,t){return s`<article class="card" aria-label=${t}>
3367
3367
  <div class="hero">
@@ -3380,11 +3380,11 @@
3380
3380
  </div>
3381
3381
  ${r.length>0?s`<div class="cores">
3382
3382
  ${r.map(([o,i])=>s`<div class="item">
3383
- <span>${ce(o)}</span>
3383
+ <span>${pe(o)}</span>
3384
3384
  <strong>${i.number??""}</strong>
3385
3385
  </div>`)}
3386
3386
  </div>`:l}
3387
- </article>`}};ae.styles=[v,f`
3387
+ </article>`}};se.styles=[v,f`
3388
3388
  .card {
3389
3389
  background: var(--roxy-bg, #fff);
3390
3390
  border: 1px solid var(--roxy-border, #e4e4e7);
@@ -3480,10 +3480,10 @@
3480
3480
  font-size: var(--roxy-text-sm, 0.875rem);
3481
3481
  color: var(--roxy-fg, #0a0a0a);
3482
3482
  }
3483
- `],p([y({attribute:!1})],ae.prototype,"data",2),p([y({type:String,reflect:!0})],ae.prototype,"type",2),ae=p([b("roxy-numerology-card")],ae);var la={"life-path":"Life Path",expression:"Expression","personal-year":"Personal Year",chart:"Numerology chart"};function da(n){return n?[n.description,n.challenge,n.resolution].filter(Boolean).join(" "):""}var se=class extends x{constructor(){super(...arguments);this.data=null;this.detail="detailed"}render(){let e=this.data;if(!e)return s`<div class="roxy-empty" role="status">No panchang data</div>`;let t="sunrise"in e?e:null,r=[["Tithi",this.formatPart(e.tithi)],["Nakshatra",this.formatPart(e.nakshatra)],["Yoga",this.formatPart(e.yoga)],["Karana",this.formatPart(e.karana)]];t&&r.push(["Vara",this.formatPart(t.vara)]);let o=t?[["Brahma Muhurta",t.brahmaMuhurta],["Abhijit Muhurta",t.abhijitMuhurta],["Vijaya Muhurta",t.vijayaMuhurta],["Godhuli Muhurta",t.godhuliMuhurta],["Nishita Muhurta",t.nishitaMuhurta],["Pratah Sandhya",t.pratahSandhya],["Sayahna Sandhya",t.sayahnaSandhya]]:[],i=t?[["Rahu Kaal",t.rahuKaal],["Yamaganda",t.yamaganda],["Gulika",t.gulika]]:[],d=t&&"transitions"in t?t.transitions:void 0;return s`<div class="wrap" aria-label="Panchang">
3483
+ `],p([u({attribute:!1})],se.prototype,"data",2),p([u({type:String,reflect:!0})],se.prototype,"type",2),se=p([b("roxy-numerology-card")],se);var pa={"life-path":"Life Path",expression:"Expression","personal-year":"Personal Year",chart:"Numerology chart"};function ma(n){return n?[n.description,n.challenge,n.resolution].filter(Boolean).join(" "):""}var oe=class extends x{constructor(){super();this.data=null;this.detail="detailed";new $(this)}render(){let e=this.data;if(!e)return s`<div class="roxy-empty" role="status">No panchang data</div>`;let t="sunrise"in e?e:null,r=[["Tithi",this.formatPart(e.tithi)],["Nakshatra",this.formatPart(e.nakshatra)],["Yoga",this.formatPart(e.yoga)],["Karana",this.formatPart(e.karana)]];t&&r.push(["Vara",this.formatPart(t.vara)]);let o=t?[["Brahma Muhurta",t.brahmaMuhurta],["Abhijit Muhurta",t.abhijitMuhurta],["Vijaya Muhurta",t.vijayaMuhurta],["Godhuli Muhurta",t.godhuliMuhurta],["Nishita Muhurta",t.nishitaMuhurta],["Pratah Sandhya",t.pratahSandhya],["Sayahna Sandhya",t.sayahnaSandhya]]:[],i=t?[["Rahu Kaal",t.rahuKaal],["Yamaganda",t.yamaganda],["Gulika",t.gulika]]:[],d=t&&"transitions"in t?t.transitions:void 0;return s`<div class="wrap" aria-label="Panchang">
3484
3484
  <header class="head">
3485
3485
  <h2 class="title">Panchang</h2>
3486
- <span class="date">${t?rt(t.date):""}</span>
3486
+ <span class="date">${t?at(t.date):""}</span>
3487
3487
  </header>
3488
3488
  <table>
3489
3489
  <tbody>
@@ -3493,19 +3493,19 @@
3493
3493
  </tr>`)}
3494
3494
  ${t?.sunrise?s`<tr>
3495
3495
  <th>Sunrise</th>
3496
- <td>${j(t.sunrise)}</td>
3496
+ <td>${I(t.sunrise)}</td>
3497
3497
  </tr>`:l}
3498
3498
  ${t?.sunset?s`<tr>
3499
3499
  <th>Sunset</th>
3500
- <td>${j(t.sunset)}</td>
3500
+ <td>${I(t.sunset)}</td>
3501
3501
  </tr>`:l}
3502
3502
  ${t?.moonrise?s`<tr>
3503
3503
  <th>Moonrise</th>
3504
- <td>${j(t.moonrise)}</td>
3504
+ <td>${I(t.moonrise)}</td>
3505
3505
  </tr>`:l}
3506
3506
  ${t?.moonset?s`<tr>
3507
3507
  <th>Moonset</th>
3508
- <td>${j(t.moonset)}</td>
3508
+ <td>${I(t.moonset)}</td>
3509
3509
  </tr>`:l}
3510
3510
  </tbody>
3511
3511
  </table>
@@ -3526,7 +3526,7 @@
3526
3526
  <tbody>
3527
3527
  ${o.filter(([,c])=>!!c).map(([c,m])=>s`<tr>
3528
3528
  <th>${c}</th>
3529
- <td>${At(m)}</td>
3529
+ <td>${Ct(m)}</td>
3530
3530
  </tr>`)}
3531
3531
  </tbody>
3532
3532
  </table>
@@ -3535,15 +3535,15 @@
3535
3535
  <tbody>
3536
3536
  ${i.filter(([,c])=>!!c).map(([c,m])=>s`<tr>
3537
3537
  <th>${c}</th>
3538
- <td>${At(m)}</td>
3538
+ <td>${Ct(m)}</td>
3539
3539
  </tr>`)}
3540
3540
  </tbody>
3541
3541
  </table>
3542
3542
  `:l}
3543
- </div>`}renderTransitionRow(e,t){if(!t?.endsAt)return l;let r=j(t.endsAt),o=t.next?` \u2192 ${t.next}`:"";return s`<tr>
3543
+ </div>`}renderTransitionRow(e,t){if(!t?.endsAt)return l;let r=I(t.endsAt),o=t.next?` \u2192 ${t.next}`:"";return s`<tr>
3544
3544
  <th>${e}</th>
3545
3545
  <td>ends ${r}${o}</td>
3546
- </tr>`}formatPart(e){if(!e)return"";if(typeof e=="string")return e;if(typeof e=="object"){let t=e;return[t.name,t.paksha?`(${t.paksha} paksha)`:"",t.lord?`\xB7 ${t.lord}`:"",t.phase].filter(Boolean).join(" ")}return String(e)}};se.styles=[v,f`
3546
+ </tr>`}formatPart(e){if(!e)return"";if(typeof e=="string")return e;if(typeof e=="object"){let t=e;return[t.name,t.paksha?`(${t.paksha} paksha)`:"",t.lord?`\xB7 ${t.lord}`:"",t.phase].filter(Boolean).join(" ")}return String(e)}};oe.styles=[v,f`
3547
3547
  .wrap {
3548
3548
  border: 1px solid var(--roxy-border, #e4e4e7);
3549
3549
  border-radius: var(--roxy-radius-md, 8px);
@@ -3601,7 +3601,7 @@
3601
3601
  text-transform: uppercase;
3602
3602
  letter-spacing: 0.06em;
3603
3603
  }
3604
- `],p([y({attribute:!1})],se.prototype,"data",2),p([y({type:String,reflect:!0})],se.prototype,"detail",2),se=p([b("roxy-panchang-table")],se);var Rt=[{key:"sthanaBala",label:"Sthana",color:"var(--roxy-info, #0284c7)"},{key:"digBala",label:"Dig",color:"var(--roxy-success, #16a34a)"},{key:"kalaBala",label:"Kala",color:"var(--roxy-warning, #ea580c)"},{key:"chestaBala",label:"Chesta",color:"var(--roxy-accent, #f59e0b)"},{key:"naisargikaBala",label:"Naisargika",color:"var(--roxy-secondary, #475569)"},{key:"drikBala",label:"Drik",color:"var(--roxy-danger, #dc2626)"}],ue=class extends x{constructor(){super(...arguments);this.data=null}render(){if(!this.data?.planets?.length)return s`<div class="roxy-empty" role="status">No shadbala data</div>`;let e=[...this.data.planets].sort((t,r)=>t.relativeRank-r.relativeRank);return s`<div class="wrap" aria-label="Shadbala planetary strength">
3604
+ `],p([u({attribute:!1})],oe.prototype,"data",2),p([u({type:String,reflect:!0})],oe.prototype,"detail",2),oe=p([b("roxy-panchang-table")],oe);var Mt=[{key:"sthanaBala",label:"Sthana",color:"var(--roxy-info, #0284c7)"},{key:"digBala",label:"Dig",color:"var(--roxy-success, #16a34a)"},{key:"kalaBala",label:"Kala",color:"var(--roxy-warning, #ea580c)"},{key:"chestaBala",label:"Chesta",color:"var(--roxy-accent, #f59e0b)"},{key:"naisargikaBala",label:"Naisargika",color:"var(--roxy-secondary, #475569)"},{key:"drikBala",label:"Drik",color:"var(--roxy-danger, #dc2626)"}],xe=class extends x{constructor(){super();this.data=null;new $(this)}render(){if(!this.data?.planets?.length)return s`<div class="roxy-empty" role="status">No shadbala data</div>`;let e=[...this.data.planets].sort((t,r)=>t.relativeRank-r.relativeRank);return s`<div class="wrap" aria-label="Shadbala planetary strength">
3605
3605
  <div class="head">
3606
3606
  <h2 class="title">Shadbala</h2>
3607
3607
  <p class="subtitle">${e.length} planets ranked by strength</p>
@@ -3612,7 +3612,7 @@
3612
3612
  </div>
3613
3613
 
3614
3614
  <div class="legend" aria-label="Strength component legend">
3615
- ${Rt.map(t=>s`<div class="legend-row">
3615
+ ${Mt.map(t=>s`<div class="legend-row">
3616
3616
  <span
3617
3617
  class="legend-swatch"
3618
3618
  style="background: ${t.color}"
@@ -3621,7 +3621,7 @@
3621
3621
  ${t.label}
3622
3622
  </div>`)}
3623
3623
  </div>
3624
- </div>`}renderPlanetRow(e){let t=R[E(e.planet)]??"",r=Rt.map(g=>Math.max(0,e[g.key])),o=r.reduce((g,h)=>g+h,0),i=typeof e.strengthRatio=="number"&&e.strengthRatio>=1,d=i?"adequacy-badge--adequate":"adequacy-badge--weak",c=i?"adequate":"weak",m=A(e.totalRupas,2)&&A(e.minRequired,2)?`${A(e.totalRupas,2)} / ${A(e.minRequired,2)} R`:"";return s`<div class="planet-row" role="listitem" aria-label="${e.planet} shadbala">
3624
+ </div>`}renderPlanetRow(e){let t=M[E(e.planet)]??"",r=Mt.map(g=>Math.max(0,e[g.key])),o=r.reduce((g,h)=>g+h,0),i=typeof e.strengthRatio=="number"&&e.strengthRatio>=1,d=i?"adequacy-badge--adequate":"adequacy-badge--weak",c=i?"adequate":"weak",m=C(e.totalRupas,2)&&C(e.minRequired,2)?`${C(e.totalRupas,2)} / ${C(e.minRequired,2)} R`:"";return s`<div class="planet-row" role="listitem" aria-label="${e.planet} shadbala">
3625
3625
  <div class="planet-label">
3626
3626
  <span class="glyph" aria-hidden="true">${t}</span>
3627
3627
  ${e.planet}
@@ -3629,10 +3629,10 @@
3629
3629
  </div>
3630
3630
  <div class="bar-wrap">
3631
3631
  <div class="bar" role="img" aria-label="Strength components for ${e.planet}">
3632
- ${o>0?Rt.map((g,h)=>{let u=r[h];if(u<=0)return l;let k=u/o*100;return s`<div
3632
+ ${o>0?Mt.map((g,h)=>{let y=r[h];if(y<=0)return l;let S=y/o*100;return s`<div
3633
3633
  class="bar-segment"
3634
- style="flex-grow: ${k}; background: ${g.color};"
3635
- title="${g.label}: ${A(u,1)}"
3634
+ style="flex-grow: ${S}; background: ${g.color};"
3635
+ title="${g.label}: ${C(y,1)}"
3636
3636
  ></div>`}):l}
3637
3637
  </div>
3638
3638
  </div>
@@ -3640,7 +3640,7 @@
3640
3640
  ${m?s`<span class="rupas-label">${m}</span>`:l}
3641
3641
  <span class="${`adequacy-badge ${d}`}">${c}</span>
3642
3642
  </div>
3643
- </div>`}};ue.styles=[v,f`
3643
+ </div>`}};xe.styles=[v,f`
3644
3644
  .wrap {
3645
3645
  display: grid;
3646
3646
  gap: var(--roxy-space-md, 1rem);
@@ -3786,7 +3786,7 @@
3786
3786
  justify-content: flex-start;
3787
3787
  }
3788
3788
  }
3789
- `],p([y({attribute:!1})],ue.prototype,"data",2),ue=p([b("roxy-shadbala-table")],ue);var Mt=360,T=Mt/2,Nt=170,ca=154,zt=124,Me=96,xe=class extends x{constructor(){super(...arguments);this.data=null}render(){if(!this.data)return s`<div class="roxy-empty" role="status">No synastry data</div>`;let{person1:e,person2:t,compatibilityScore:r,analysis:o}=this.data,i=this.data.interAspects??[],d=e?.planets??[],c=t?.planets??[],m=typeof r=="number"?Math.round(r):void 0,g=o?.overall,h=o?.strengths??[],u=o?.challenges??[];return d.length>0&&c.length>0?s`<div
3789
+ `],p([u({attribute:!1})],xe.prototype,"data",2),xe=p([b("roxy-shadbala-table")],xe);var _t=360,R=_t/2,Nt=170,ha=154,zt=124,_e=96,fe=class extends x{constructor(){super();this.data=null;new $(this)}render(){if(!this.data)return s`<div class="roxy-empty" role="status">No synastry data</div>`;let{person1:e,person2:t,compatibilityScore:r,analysis:o}=this.data,i=this.data.interAspects??[],d=e?.planets??[],c=t?.planets??[],m=typeof r=="number"?Math.round(r):void 0,g=o?.overall,h=o?.strengths??[],y=o?.challenges??[];return d.length>0&&c.length>0?s`<div
3790
3790
  class="wrap"
3791
3791
  aria-label="Synastry compatibility chart"
3792
3792
  >
@@ -3797,35 +3797,35 @@
3797
3797
  >`:l}
3798
3798
  </div>
3799
3799
  <svg
3800
- viewBox="0 0 ${Mt} ${Mt}"
3800
+ viewBox="0 0 ${_t} ${_t}"
3801
3801
  role="img"
3802
3802
  aria-label="Dual chart wheel comparing two natal charts"
3803
3803
  >
3804
3804
  <title>Synastry dual wheel</title>
3805
3805
  <circle
3806
3806
  class="wheel-line"
3807
- cx=${T}
3808
- cy=${T}
3807
+ cx=${R}
3808
+ cy=${R}
3809
3809
  r=${Nt}
3810
3810
  stroke-width="1.5"
3811
3811
  />
3812
3812
  <circle
3813
3813
  class="wheel-line"
3814
- cx=${T}
3815
- cy=${T}
3816
- r=${Me+14}
3814
+ cx=${R}
3815
+ cy=${R}
3816
+ r=${_e+14}
3817
3817
  stroke-width="0.8"
3818
3818
  />
3819
3819
  <circle
3820
3820
  class="wheel-line"
3821
- cx=${T}
3822
- cy=${T}
3823
- r=${Me-14}
3821
+ cx=${R}
3822
+ cy=${R}
3823
+ r=${_e-14}
3824
3824
  stroke-width="0.6"
3825
3825
  />
3826
3826
  ${this.renderSpokes()} ${this.renderSigns()}
3827
3827
  ${this.renderInterAspectLines(d,c,i)}
3828
- ${this.renderRing(d,zt,"p1",1)} ${this.renderRing(c,Me,"p2",2)}
3828
+ ${this.renderRing(d,zt,"p1",1)} ${this.renderRing(c,_e,"p2",2)}
3829
3829
  ${this.renderAscendants(this.data)}
3830
3830
  </svg>
3831
3831
  <div class="legend-row">
@@ -3836,17 +3836,17 @@
3836
3836
  </div>
3837
3837
  ${g?s`<p class="summary">${g}</p>`:l}
3838
3838
  ${i.length>0?this.renderAspects(i):l}
3839
- ${h.length>0||u.length>0?s`<div class="lists">
3839
+ ${h.length>0||y.length>0?s`<div class="lists">
3840
3840
  ${h.length?s`<div>
3841
3841
  <h3>Strengths</h3>
3842
3842
  <ul>
3843
- ${h.map($=>s`<li>${$}</li>`)}
3843
+ ${h.map(w=>s`<li>${w}</li>`)}
3844
3844
  </ul>
3845
3845
  </div>`:l}
3846
- ${u.length?s`<div>
3846
+ ${y.length?s`<div>
3847
3847
  <h3>Challenges</h3>
3848
3848
  <ul>
3849
- ${u.map($=>s`<li>${$}</li>`)}
3849
+ ${y.map(w=>s`<li>${w}</li>`)}
3850
3850
  </ul>
3851
3851
  </div>`:l}
3852
3852
  </div>`:l}
@@ -3868,27 +3868,27 @@
3868
3868
  </div>
3869
3869
  ${g?s`<p class="summary">${g}</p>`:l}
3870
3870
  ${i.length>0?this.renderAspects(i):l}
3871
- ${h.length>0||u.length>0?s`<div class="lists">
3871
+ ${h.length>0||y.length>0?s`<div class="lists">
3872
3872
  ${h.length?s`<div>
3873
3873
  <h3>Strengths</h3>
3874
3874
  <ul>
3875
- ${h.map($=>s`<li>${$}</li>`)}
3875
+ ${h.map(w=>s`<li>${w}</li>`)}
3876
3876
  </ul>
3877
3877
  </div>`:l}
3878
- ${u.length?s`<div>
3878
+ ${y.length?s`<div>
3879
3879
  <h3>Challenges</h3>
3880
3880
  <ul>
3881
- ${u.map($=>s`<li>${$}</li>`)}
3881
+ ${y.map(w=>s`<li>${w}</li>`)}
3882
3882
  </ul>
3883
3883
  </div>`:l}
3884
3884
  </div>`:l}
3885
- </div>`}toAngle(e){return 180-e}renderSpokes(){return Array.from({length:12},(e,t)=>{let r=this.toAngle(t*30),o=L(T,T,Me-14,r),i=L(T,T,Nt,r);return w`<line class="wheel-line" x1=${o.x} y1=${o.y} x2=${i.x} y2=${i.y} stroke-width="0.6" />`})}renderSigns(){return M.map((e,t)=>{let r=this.toAngle(t*30+15),o=L(T,T,ca,r);return w`<text class="sign" x=${o.x} y=${o.y} text-anchor="middle" dominant-baseline="central">${G[e]}</text>`})}renderRing(e,t,r,o){return e.map(i=>{if(!Number.isFinite(i.longitude))return l;let d=this.toAngle(i.longitude),c=L(T,T,t,d),g=L(T,T,t+(o===1?-12:-10),d),h=R[E(i.name)]??i.name.slice(0,2),u=B(i.longitude),k=i.isRetrograde===!0,$=`${u.degree}\xB0${String(u.minute).padStart(2,"0")}'`,$e=`${i.name}${k?" retrograde":""} - ${$} ${u.sign}`;return w`<g>
3886
- <text class=${r} x=${c.x} y=${c.y} text-anchor="middle" dominant-baseline="central"><title>${$e}</title>${h}<tspan class="person-tag" dy="-0.55em" dx="0.15em">${o}</tspan></text>
3887
- <text class="planet-deg" x=${g.x} y=${g.y} text-anchor="middle" dominant-baseline="central">${u.degree}°${k?w`<tspan class="retro"> ℞</tspan>`:l}</text>
3888
- </g>`})}renderAscendants(e){let t=[],r=(o,i)=>{if(!o)return;let d=M.findIndex(k=>k.toLowerCase()===o.sign.toLowerCase());if(d===-1)return;let c=d*30+o.degree,m=this.toAngle(c),g=i===1?zt+14:Me+14,h=L(T,T,g,m),u=L(T,T,Nt+14,m);t.push(w`<g>
3889
- <line class="asc-tick" x1=${h.x} y1=${h.y} x2=${u.x} y2=${u.y} />
3890
- <text class="asc-label" x=${u.x} y=${u.y} text-anchor="middle" dominant-baseline="central">Asc${i}</text>
3891
- </g>`)};return r(e.person1?.ascendant,1),r(e.person2?.ascendant,2),t}renderInterAspectLines(e,t,r){let o=(i,d)=>{let c=E(d);for(let m of i)if(E(m.name)===c&&typeof m.longitude=="number")return m.longitude};return r.map(i=>{let d=o(e,i.planet1),c=o(t,i.planet2);if(d===void 0||c===void 0)return l;let m=L(T,T,zt-12,this.toAngle(d)),g=L(T,T,Me+8,this.toAngle(c)),h=Re(i),u=qe[h]??"aspect-other",k=A(i.orb,1);return w`<line class=${`aspect ${u}`} x1=${m.x} y1=${m.y} x2=${g.x} y2=${g.y}><title>${i.planet1} ${h} ${i.planet2}${k?` (orb ${k}\xB0)`:""}</title></line>`})}renderAspects(e){return s`<table>
3885
+ </div>`}toAngle(e){return 180-e}renderSpokes(){return Array.from({length:12},(e,t)=>{let r=this.toAngle(t*30),o=P(R,R,_e-14,r),i=P(R,R,Nt,r);return k`<line class="wheel-line" x1=${o.x} y1=${o.y} x2=${i.x} y2=${i.y} stroke-width="0.6" />`})}renderSigns(){return _.map((e,t)=>{let r=this.toAngle(t*30+15),o=P(R,R,ha,r);return k`<text class="sign" x=${o.x} y=${o.y} text-anchor="middle" dominant-baseline="central">${G[e]}</text>`})}renderRing(e,t,r,o){return e.map(i=>{if(!Number.isFinite(i.longitude))return l;let d=this.toAngle(i.longitude),c=P(R,R,t,d),g=P(R,R,t+(o===1?-12:-10),d),h=M[E(i.name)]??i.name.slice(0,2),y=K(i.longitude),S=i.isRetrograde===!0,w=`${y.degree}\xB0${String(y.minute).padStart(2,"0")}'`,we=`${i.name}${S?" retrograde":""} - ${w} ${y.sign}`;return k`<g>
3886
+ <text class=${r} x=${c.x} y=${c.y} text-anchor="middle" dominant-baseline="central"><title>${we}</title>${h}<tspan class="person-tag" dy="-0.55em" dx="0.15em">${o}</tspan></text>
3887
+ <text class="planet-deg" x=${g.x} y=${g.y} text-anchor="middle" dominant-baseline="central">${y.degree}°${S?k`<tspan class="retro"> ℞</tspan>`:l}</text>
3888
+ </g>`})}renderAscendants(e){let t=[],r=(o,i)=>{if(!o)return;let d=_.findIndex(S=>S.toLowerCase()===o.sign.toLowerCase());if(d===-1)return;let c=d*30+o.degree,m=this.toAngle(c),g=i===1?zt+14:_e+14,h=P(R,R,g,m),y=P(R,R,Nt+14,m);t.push(k`<g>
3889
+ <line class="asc-tick" x1=${h.x} y1=${h.y} x2=${y.x} y2=${y.y} />
3890
+ <text class="asc-label" x=${y.x} y=${y.y} text-anchor="middle" dominant-baseline="central">Asc${i}</text>
3891
+ </g>`)};return r(e.person1?.ascendant,1),r(e.person2?.ascendant,2),t}renderInterAspectLines(e,t,r){let o=(i,d)=>{let c=E(d);for(let m of i)if(E(m.name)===c&&typeof m.longitude=="number")return m.longitude};return r.map(i=>{let d=o(e,i.planet1),c=o(t,i.planet2);if(d===void 0||c===void 0)return l;let m=P(R,R,zt-12,this.toAngle(d)),g=P(R,R,_e+8,this.toAngle(c)),h=Me(i),y=Ve[h]??"aspect-other",S=C(i.orb,1);return k`<line class=${`aspect ${y}`} x1=${m.x} y1=${m.y} x2=${g.x} y2=${g.y}><title>${i.planet1} ${h} ${i.planet2}${S?` (orb ${S}\xB0)`:""}</title></line>`})}renderAspects(e){return s`<table>
3892
3892
  <thead>
3893
3893
  <tr>
3894
3894
  <th>Planet 1</th>
@@ -3902,12 +3902,12 @@
3902
3902
  ${e.slice(0,12).map(t=>s`<tr>
3903
3903
  <td>${t.planet1}</td>
3904
3904
  <td>${t.planet2}</td>
3905
- <td>${Re(t)||""}</td>
3906
- <td class="orb">${A(t.orb,1)}</td>
3907
- <td>${pa(t.strength)}</td>
3905
+ <td>${Me(t)||""}</td>
3906
+ <td class="orb">${C(t.orb,1)}</td>
3907
+ <td>${ga(t.strength)}</td>
3908
3908
  </tr>`)}
3909
3909
  </tbody>
3910
- </table>`}};xe.styles=[v,f`
3910
+ </table>`}};fe.styles=[v,f`
3911
3911
  .wrap {
3912
3912
  display: grid;
3913
3913
  gap: var(--roxy-space-md, 1rem);
@@ -4086,7 +4086,7 @@
4086
4086
  padding: 0 4px;
4087
4087
  border-radius: 4px;
4088
4088
  }
4089
- `],p([y({attribute:!1})],xe.prototype,"data",2),xe=p([b("roxy-synastry-chart")],xe);function pa(n){return typeof n=="number"?Math.round(n).toString():""}var oe=class extends x{constructor(){super(...arguments);this.data=null;this.flipped=!1;this.toggleFlip=()=>{this.flipped=!this.flipped}}render(){let e=this.data;return e?"card"in e?this.renderDailyCard(e):this.renderFullCard(e):s`<div class="roxy-empty" role="status">No tarot data</div>`}renderDailyCard(e){let t=e.card,r=this.flipped!==!!t.reversed,o=t.keywords??[];return s`<article class="card" aria-label=${t.name??"Tarot card"}>
4089
+ `],p([u({attribute:!1})],fe.prototype,"data",2),fe=p([b("roxy-synastry-chart")],fe);function ga(n){return typeof n=="number"?Math.round(n).toString():""}var ne=class extends x{constructor(){super();this.data=null;this.flipped=!1;this.toggleFlip=()=>{this.flipped=!this.flipped};new $(this)}render(){let e=this.data;return e?"card"in e?this.renderDailyCard(e):this.renderFullCard(e):s`<div class="roxy-empty" role="status">No tarot data</div>`}renderDailyCard(e){let t=e.card,r=this.flipped!==!!t.reversed,o=t.keywords??[];return s`<article class="card" aria-label=${t.name??"Tarot card"}>
4090
4090
  <div class="image-wrap">
4091
4091
  ${t.imageUrl?s`<img
4092
4092
  class=${`image ${r?"reversed":""}`}
@@ -4158,7 +4158,7 @@
4158
4158
  Flip card
4159
4159
  </button>
4160
4160
  </div>
4161
- </article>`}};oe.styles=[v,f`
4161
+ </article>`}};ne.styles=[v,f`
4162
4162
  .card {
4163
4163
  background: var(--roxy-bg, #fff);
4164
4164
  border: 1px solid var(--roxy-border, #e4e4e7);
@@ -4248,51 +4248,51 @@
4248
4248
  .flip:hover {
4249
4249
  transform: scale(1.02);
4250
4250
  }
4251
- `],p([y({attribute:!1})],oe.prototype,"data",2),p([z()],oe.prototype,"flipped",2),oe=p([b("roxy-tarot-card")],oe);var ne=class extends x{constructor(){super(...arguments);this.data=null;this.spread="three-card"}render(){let e=this.data;if(!e)return s`<div class="roxy-empty" role="status">No tarot spread</div>`;let t="answer"in e,r="cards"in e&&!("spread"in e),o=r?[]:"positions"in e?e.positions??[]:[],i=r&&"cards"in e?e.cards:[],d=t?e.answer:void 0,c=t?e.strength:void 0,m="spread"in e?e.spread:this.spread.replace(/-/g," "),g="question"in e?e.question:void 0,h="summary"in e?e.summary:void 0,u=t?e.interpretation:void 0,k=d?d.toLowerCase().replace(/[^a-z]/g,""):"";return s`<article class="wrap" aria-label="Tarot spread">
4251
+ `],p([u({attribute:!1})],ne.prototype,"data",2),p([z()],ne.prototype,"flipped",2),ne=p([b("roxy-tarot-card")],ne);var ie=class extends x{constructor(){super();this.data=null;this.spread="three-card";new $(this)}render(){let e=this.data;if(!e)return s`<div class="roxy-empty" role="status">No tarot spread</div>`;let t="answer"in e,r="cards"in e&&!("spread"in e),o=r?[]:"positions"in e?e.positions??[]:[],i=r&&"cards"in e?e.cards:[],d=t?e.answer:void 0,c=t?e.strength:void 0,m="spread"in e?e.spread:this.spread.replace(/-/g," "),g="question"in e?e.question:void 0,h="summary"in e?e.summary:void 0,y=t?e.interpretation:void 0,S=d?d.toLowerCase().replace(/[^a-z]/g,""):"";return s`<article class="wrap" aria-label="Tarot spread">
4252
4252
  <header class="head">
4253
4253
  <h2 class="title">${m}</h2>
4254
4254
  ${g?s`<span class="question">"${g}"</span>`:l}
4255
4255
  </header>
4256
4256
  ${t?s`<div>
4257
- <span class=${`answer ${k}`}>${d}</span>
4257
+ <span class=${`answer ${S}`}>${d}</span>
4258
4258
  ${c?s`<small> · ${c}</small>`:l}
4259
4259
  </div>`:l}
4260
4260
  ${o.length>0?s`<div class="grid">
4261
- ${o.map($=>s`<div class="card">
4262
- <p class="label">${$.name??""}</p>
4261
+ ${o.map(w=>s`<div class="card">
4262
+ <p class="label">${w.name??""}</p>
4263
4263
  <div class="image">
4264
- ${$.card?.imageUrl?s`<img
4265
- src=${$.card.imageUrl}
4266
- alt=${$.card.name??"tarot card"}
4267
- class=${$.card.reversed?"reversed":""}
4268
- />`:s`${$.card?.name??"?"}`}
4264
+ ${w.card?.imageUrl?s`<img
4265
+ src=${w.card.imageUrl}
4266
+ alt=${w.card.name??"tarot card"}
4267
+ class=${w.card.reversed?"reversed":""}
4268
+ />`:s`${w.card?.name??"?"}`}
4269
4269
  </div>
4270
4270
  <p class="name">
4271
- ${$.card?.name??""}
4272
- ${$.card?.reversed?s`<small>(reversed)</small>`:l}
4271
+ ${w.card?.name??""}
4272
+ ${w.card?.reversed?s`<small>(reversed)</small>`:l}
4273
4273
  </p>
4274
- ${$.interpretation?s`<p class="interp">${$.interpretation}</p>`:l}
4274
+ ${w.interpretation?s`<p class="interp">${w.interpretation}</p>`:l}
4275
4275
  </div>`)}
4276
4276
  </div>`:l}
4277
4277
  ${i.length>0?s`<div class="grid">
4278
- ${i.map($=>s`<div class="card">
4278
+ ${i.map(w=>s`<div class="card">
4279
4279
  <div class="image">
4280
- ${$.imageUrl?s`<img
4281
- src=${$.imageUrl}
4282
- alt=${$.name??"tarot card"}
4283
- class=${$.reversed?"reversed":""}
4284
- />`:s`${$.name??"?"}`}
4280
+ ${w.imageUrl?s`<img
4281
+ src=${w.imageUrl}
4282
+ alt=${w.name??"tarot card"}
4283
+ class=${w.reversed?"reversed":""}
4284
+ />`:s`${w.name??"?"}`}
4285
4285
  </div>
4286
4286
  <p class="name">
4287
- ${$.name??""}
4288
- ${$.reversed?s`<small>(reversed)</small>`:l}
4287
+ ${w.name??""}
4288
+ ${w.reversed?s`<small>(reversed)</small>`:l}
4289
4289
  </p>
4290
- ${$.meaning?s`<p class="interp">${$.meaning}</p>`:l}
4290
+ ${w.meaning?s`<p class="interp">${w.meaning}</p>`:l}
4291
4291
  </div>`)}
4292
4292
  </div>`:l}
4293
4293
  ${h?s`<p class="reading">${h}</p>`:l}
4294
- ${u?s`<p class="reading">${u}</p>`:l}
4295
- </article>`}};ne.styles=[v,f`
4294
+ ${y?s`<p class="reading">${y}</p>`:l}
4295
+ </article>`}};ie.styles=[v,f`
4296
4296
  .wrap {
4297
4297
  display: grid;
4298
4298
  gap: var(--roxy-space-md, 1rem);
@@ -4398,7 +4398,7 @@
4398
4398
  margin: 0;
4399
4399
  color: var(--roxy-fg, #0a0a0a);
4400
4400
  }
4401
- `],p([y({attribute:!1})],ne.prototype,"data",2),p([y({type:String,reflect:!0})],ne.prototype,"spread",2),ne=p([b("roxy-tarot-spread")],ne);var fe=class extends x{constructor(){super(...arguments);this.data=null}render(){if(!this.data?.transitPlanets?.length)return s`<div class="roxy-empty" role="status">No transits data</div>`;let{transitDate:e,transitTime:t,transitPlanets:r,transitAspects:o,summary:i}=this.data,d=[rt(e),j(t)].filter(Boolean).join(" ");return s`<div class="wrap" aria-label="Transit positions table">
4401
+ `],p([u({attribute:!1})],ie.prototype,"data",2),p([u({type:String,reflect:!0})],ie.prototype,"spread",2),ie=p([b("roxy-tarot-spread")],ie);var be=class extends x{constructor(){super();this.data=null;new $(this)}render(){if(!this.data?.transitPlanets?.length)return s`<div class="roxy-empty" role="status">No transits data</div>`;let{transitDate:e,transitTime:t,transitPlanets:r,transitAspects:o,summary:i}=this.data,d=[at(e),I(t)].filter(Boolean).join(" ");return s`<div class="wrap" aria-label="Transit positions table">
4402
4402
  <div class="head">
4403
4403
  <h2 class="title">Transits</h2>
4404
4404
  ${d?s`<p class="subtitle">${d}</p>`:l}
@@ -4442,7 +4442,7 @@
4442
4442
  </tr>
4443
4443
  </thead>
4444
4444
  <tbody>
4445
- ${e.map(t=>{let r=R[E(t.name)]??"",o=G[E(t.sign)]??"",i=t.speed>=0?"\u2191":"\u2193";return s`<tr>
4445
+ ${e.map(t=>{let r=M[E(t.name)]??"",o=G[E(t.sign)]??"",i=t.speed>=0?"\u2191":"\u2193";return s`<tr>
4446
4446
  <td>
4447
4447
  <div class="planet-cell">
4448
4448
  <span class="glyph" aria-hidden="true">${r}</span>
@@ -4456,15 +4456,15 @@
4456
4456
  ${t.sign}
4457
4457
  </div>
4458
4458
  </td>
4459
- <td class="num">${A(t.degree,2)}</td>
4459
+ <td class="num">${C(t.degree,2)}</td>
4460
4460
  <td class="speed">
4461
4461
  <span class="speed-arrow" aria-hidden="true">${i}</span>
4462
- ${A(Math.abs(t.speed),4)}
4462
+ ${C(Math.abs(t.speed),4)}
4463
4463
  </td>
4464
4464
  </tr>`})}
4465
4465
  </tbody>
4466
4466
  </table>`}renderAspectsList(e){return s`<div role="list" aria-label="Transit aspects">
4467
- ${e.map((t,r)=>{let o=R[E(t.transitPlanet)]??"",i=R[E(t.natalPlanet)]??"",d=(t.nature??"neutral").toLowerCase(),c=t.interpretation,m=(t.type??"").toLowerCase(),g=t.isApplying?"Applying":"Separating";return s`<details class="aspect-card" role="listitem" name="transit-aspects" ?open=${r===0}>
4467
+ ${e.map((t,r)=>{let o=M[E(t.transitPlanet)]??"",i=M[E(t.natalPlanet)]??"",d=(t.nature??"neutral").toLowerCase(),c=t.interpretation,m=(t.type??"").toLowerCase(),g=t.isApplying?"Applying":"Separating";return s`<details class="aspect-card" role="listitem" name="transit-aspects" ?open=${r===0}>
4468
4468
  <summary>
4469
4469
  <span aria-hidden="true">${o}</span>
4470
4470
  ${t.transitPlanet}
@@ -4472,7 +4472,7 @@
4472
4472
  <span aria-hidden="true">${i}</span>
4473
4473
  ${t.natalPlanet}
4474
4474
  <span class="meta">
4475
- ${g} · orb ${A(t.orb,2)}° · strength ${A(t.strength,1)}
4475
+ ${g} · orb ${C(t.orb,2)}° · strength ${C(t.strength,1)}
4476
4476
  </span>
4477
4477
  </summary>
4478
4478
  <div class="interp-body">
@@ -4485,7 +4485,7 @@
4485
4485
  </div>`:l}
4486
4486
  </div>
4487
4487
  </details>`})}
4488
- </div>`}};fe.styles=[v,f`
4488
+ </div>`}};be.styles=[v,f`
4489
4489
  .wrap {
4490
4490
  display: grid;
4491
4491
  gap: var(--roxy-space-md, 1rem);
@@ -4681,10 +4681,10 @@
4681
4681
  background: color-mix(in srgb, var(--roxy-border, #e4e4e7) 60%, transparent);
4682
4682
  color: var(--roxy-fg, #0a0a0a);
4683
4683
  }
4684
- `],p([y({attribute:!1})],fe.prototype,"data",2),fe=p([b("roxy-transits-table")],fe);var ie=class extends x{constructor(){super(...arguments);this.data=null;this.chartStyle="north";this.setStyle=e=>{this.chartStyle=e}}viewModel(){return this.data?.meta?ot(this.data.meta,"D1 Rashi"):null}render(){let e=this.viewModel();return e?s`<div class="wrap">
4684
+ `],p([u({attribute:!1})],be.prototype,"data",2),be=p([b("roxy-transits-table")],be);var le=class extends x{constructor(){super();this.data=null;this.chartStyle="north";this.setStyle=e=>{this.chartStyle=e};new $(this)}viewModel(){return this.data?.meta?nt(this.data.meta,"D1 Rashi"):null}render(){let e=this.viewModel();return e?s`<div class="wrap">
4685
4685
  <div class="header">
4686
4686
  <h2 class="title">Vedic kundli</h2>
4687
- ${it(this.chartStyle,this.setStyle)}
4687
+ ${lt(this.chartStyle,this.setStyle)}
4688
4688
  </div>
4689
4689
  <svg
4690
4690
  viewBox="0 0 400 400"
@@ -4693,9 +4693,9 @@
4693
4693
  aria-label="Vedic birth chart with twelve sign houses"
4694
4694
  >
4695
4695
  <title>Vedic kundli</title>
4696
- ${nt(e,this.chartStyle)}
4696
+ ${it(e,this.chartStyle)}
4697
4697
  </svg>
4698
- </div>`:s`<div class="roxy-empty" role="status">No kundli data</div>`}};ie.styles=[v,lt],p([y({attribute:!1})],ie.prototype,"data",2),p([y({type:String,reflect:!0,attribute:"chart-style"})],ie.prototype,"chartStyle",2),ie=p([b("roxy-vedic-kundli")],ie);var ma=["Lagna","Sun","Moon","Mars","Mercury","Jupiter","Venus","Saturn","Rahu","Ketu"],be=class extends x{constructor(){super(...arguments);this.data=null}orderedRows(){let e=this.data?.meta??{},t=new Set,r=[];for(let o of ma){let i=e[o];i&&(r.push([o,i]),t.add(o))}for(let[o,i]of Object.entries(e))t.has(o)||r.push([o,i]);return r}render(){if(!this.data?.meta)return s`<div class="roxy-empty" role="status">No chart data</div>`;let e=this.orderedRows();return s`<div class="wrap" aria-label="Vedic planetary positions" tabindex="0">
4698
+ </div>`:s`<div class="roxy-empty" role="status">No kundli data</div>`}};le.styles=[v,dt],p([u({attribute:!1})],le.prototype,"data",2),p([u({type:String,reflect:!0,attribute:"chart-style"})],le.prototype,"chartStyle",2),le=p([b("roxy-vedic-kundli")],le);var ua=["Lagna","Sun","Moon","Mars","Mercury","Jupiter","Venus","Saturn","Rahu","Ketu"],ve=class extends x{constructor(){super();this.data=null;new $(this)}orderedRows(){let e=this.data?.meta??{},t=new Set,r=[];for(let o of ua){let i=e[o];i&&(r.push([o,i]),t.add(o))}for(let[o,i]of Object.entries(e))t.has(o)||r.push([o,i]);return r}render(){if(!this.data?.meta)return s`<div class="roxy-empty" role="status">No chart data</div>`;let e=this.orderedRows();return s`<div class="wrap" aria-label="Vedic planetary positions" tabindex="0">
4699
4699
  <header class="head">
4700
4700
  <h2 class="title">Planetary positions</h2>
4701
4701
  </header>
@@ -4714,7 +4714,7 @@
4714
4714
  </tr>
4715
4715
  </thead>
4716
4716
  <tbody>
4717
- ${e.map(([t,r])=>{let o=(r.graha??t)==="Lagna",i=R[E(r.graha??t)]??"",d=G[E(r.rashi??"")]??"";return s`<tr class=${o?"lagna":""}>
4717
+ ${e.map(([t,r])=>{let o=(r.graha??t)==="Lagna",i=M[E(r.graha??t)]??"",d=G[E(r.rashi??"")]??"";return s`<tr class=${o?"lagna":""}>
4718
4718
  <td class="graha">
4719
4719
  ${i?s`<span class="glyph">${i}</span>`:l}${r.graha??t}
4720
4720
  </td>
@@ -4722,7 +4722,7 @@
4722
4722
  ${d?s`<span class="glyph">${d}</span>`:l}${r.rashi??""}
4723
4723
  </td>
4724
4724
  <td class="num">
4725
- ${typeof r.longitude=="number"?at(r.longitude):""}
4725
+ ${typeof r.longitude=="number"?st(r.longitude):""}
4726
4726
  </td>
4727
4727
  <td>${r.nakshatra?.name??""}</td>
4728
4728
  <td class="num">${r.nakshatra?.pada??""}</td>
@@ -4733,7 +4733,7 @@
4733
4733
  </tr>`})}
4734
4734
  </tbody>
4735
4735
  </table>
4736
- </div>`}};be.styles=[v,f`
4736
+ </div>`}};ve.styles=[v,f`
4737
4737
  .wrap {
4738
4738
  border: 1px solid var(--roxy-border, #e4e4e7);
4739
4739
  border-radius: var(--roxy-radius-md, 8px);
@@ -4799,7 +4799,7 @@
4799
4799
  .num {
4800
4800
  font-variant-numeric: tabular-nums;
4801
4801
  }
4802
- `],p([y({attribute:!1})],be.prototype,"data",2),be=p([b("roxy-vedic-planets-table")],be);var ve=class extends x{constructor(){super(...arguments);this.data=null}rows(){let e=this.data;if(!e)return[];let t=(e.planets??[]).map(r=>({name:r.name,sign:r.sign,longitude:r.longitude,house:r.house,speed:r.speed,isRetrograde:r.isRetrograde}));for(let[r,o]of[["Ascendant",e.ascendant],["Midheaven",e.midheaven],["Part of Fortune",e.partOfFortune],["Vertex",e.vertex]])o&&t.push({name:r,sign:o.sign,longitude:o.longitude,isPoint:!0});return t}render(){if(!this.data?.planets)return s`<div class="roxy-empty" role="status">No chart data</div>`;let e=this.rows();return s`<div class="wrap" aria-label="Western planetary positions" tabindex="0">
4802
+ `],p([u({attribute:!1})],ve.prototype,"data",2),ve=p([b("roxy-vedic-planets-table")],ve);var $e=class extends x{constructor(){super();this.data=null;new $(this)}rows(){let e=this.data;if(!e)return[];let t=(e.planets??[]).map(r=>({name:r.name,sign:r.sign,longitude:r.longitude,house:r.house,speed:r.speed,isRetrograde:r.isRetrograde}));for(let[r,o]of[["Ascendant",e.ascendant],["Midheaven",e.midheaven],["Part of Fortune",e.partOfFortune],["Vertex",e.vertex]])o&&t.push({name:r,sign:o.sign,longitude:o.longitude,isPoint:!0});return t}render(){if(!this.data?.planets)return s`<div class="roxy-empty" role="status">No chart data</div>`;let e=this.rows();return s`<div class="wrap" aria-label="Western planetary positions" tabindex="0">
4803
4803
  <header class="head">
4804
4804
  <h2 class="title">Planetary positions</h2>
4805
4805
  </header>
@@ -4814,7 +4814,7 @@
4814
4814
  </tr>
4815
4815
  </thead>
4816
4816
  <tbody>
4817
- ${e.map(t=>{let r=R[E(t.name)]??"",o=G[E(t.sign??"")]??"",i=typeof t.speed=="number"?A(t.speed,3):"";return s`<tr class=${t.isPoint?"point":""}>
4817
+ ${e.map(t=>{let r=M[E(t.name)]??"",o=G[E(t.sign??"")]??"",i=typeof t.speed=="number"?C(t.speed,3):"";return s`<tr class=${t.isPoint?"point":""}>
4818
4818
  <td class="body">
4819
4819
  ${r?s`<span class="glyph">${r}</span>`:l}${t.name}
4820
4820
  </td>
@@ -4822,7 +4822,7 @@
4822
4822
  ${o?s`<span class="glyph">${o}</span>`:l}${t.sign??""}
4823
4823
  </td>
4824
4824
  <td class="num">
4825
- ${typeof t.longitude=="number"?at(t.longitude):""}
4825
+ ${typeof t.longitude=="number"?st(t.longitude):""}
4826
4826
  </td>
4827
4827
  <td class="num">${typeof t.house=="number"?t.house:""}</td>
4828
4828
  <td class="num">
@@ -4832,7 +4832,7 @@
4832
4832
  </tr>`})}
4833
4833
  </tbody>
4834
4834
  </table>
4835
- </div>`}};ve.styles=[v,f`
4835
+ </div>`}};$e.styles=[v,f`
4836
4836
  .wrap {
4837
4837
  border: 1px solid var(--roxy-border, #e4e4e7);
4838
4838
  border-radius: var(--roxy-radius-md, 8px);
@@ -4892,7 +4892,7 @@
4892
4892
  .num {
4893
4893
  font-variant-numeric: tabular-nums;
4894
4894
  }
4895
- `],p([y({attribute:!1})],ve.prototype,"data",2),ve=p([b("roxy-western-planets-table")],ve);var le=class extends x{constructor(){super(...arguments);this.data=null;this.filter="";this.handleInput=e=>{this.filter=e.target.value}}renderQualityChip(e){let t=`quality-chip quality-${e}`;return s`<span class=${t}>${e}</span>`}renderDetailCard(e){return s`<div class="detail-card">
4895
+ `],p([u({attribute:!1})],$e.prototype,"data",2),$e=p([b("roxy-western-planets-table")],$e);var de=class extends x{constructor(){super();this.data=null;this.filter="";this.handleInput=e=>{this.filter=e.target.value};new $(this)}renderQualityChip(e){let t=`quality-chip quality-${e}`;return s`<span class=${t}>${e}</span>`}renderDetailCard(e){return s`<div class="detail-card">
4896
4896
  <p class="detail-name">
4897
4897
  ${e.name}
4898
4898
  ${e.quality?this.renderQualityChip(e.quality):l}
@@ -4902,7 +4902,7 @@
4902
4902
  <summary>Effects</summary>
4903
4903
  <div class="result-body">${e.result}</div>
4904
4904
  </details>`:l}
4905
- </div>`}render(){if(!this.data)return s`<div class="roxy-empty" role="status">No yoga data</div>`;let e=this.data,t=this.filter.toLowerCase();if("description"in e&&typeof e.description=="string"){let r=e;return s`<div class="wrap">${this.renderDetailCard(r)}</div>`}if("yogas"in e&&Array.isArray(e.yogas)){let r=e.yogas;if(r.length>0&&"description"in r[0]){let m=r,g=t?m.filter(u=>u.name.toLowerCase().includes(t)):m,h=e.total;return s`<div class="wrap">
4905
+ </div>`}render(){if(!this.data)return s`<div class="roxy-empty" role="status">No yoga data</div>`;let e=this.data,t=this.filter.toLowerCase();if("description"in e&&typeof e.description=="string"){let r=e;return s`<div class="wrap">${this.renderDetailCard(r)}</div>`}if("yogas"in e&&Array.isArray(e.yogas)){let r=e.yogas;if(r.length>0&&"description"in r[0]){let m=r,g=t?m.filter(y=>y.name.toLowerCase().includes(t)):m,h=e.total;return s`<div class="wrap">
4906
4906
  <div class="head">
4907
4907
  <h2 class="title">Yoga catalog</h2>
4908
4908
  ${h!==void 0?s`<span class="count">${h} total</span>`:l}
@@ -4923,7 +4923,7 @@
4923
4923
  aria-live="polite"
4924
4924
  aria-label="Yoga results"
4925
4925
  >
4926
- ${g.length>0?g.map(u=>this.renderDetailCard(u)):s`<p class="no-results">No yogas match your search.</p>`}
4926
+ ${g.length>0?g.map(y=>this.renderDetailCard(y)):s`<p class="no-results">No yogas match your search.</p>`}
4927
4927
  </div>
4928
4928
  </div>`}let i=r,d=t?i.filter(m=>m.name.toLowerCase().includes(t)):i,c=e.total;return s`<div class="wrap">
4929
4929
  <div class="head">
@@ -4951,7 +4951,7 @@
4951
4951
  <span class="yoga-id">${m.id}</span>
4952
4952
  </div>`):s`<p class="no-results">No yogas match your search.</p>`}
4953
4953
  </div>
4954
- </div>`}return s`<div class="roxy-empty" role="status">No yoga data</div>`}};le.styles=[v,f`
4954
+ </div>`}return s`<div class="roxy-empty" role="status">No yoga data</div>`}};de.styles=[v,f`
4955
4955
  .wrap {
4956
4956
  display: grid;
4957
4957
  gap: var(--roxy-space-md, 1rem);
@@ -5099,7 +5099,7 @@
5099
5099
  display: grid;
5100
5100
  gap: var(--roxy-space-sm, 0.5rem);
5101
5101
  }
5102
- `],p([y({attribute:!1})],le.prototype,"data",2),p([z()],le.prototype,"filter",2),le=p([b("roxy-yoga-list")],le);var dt=[{pascal:"RoxyNatalChart",tag:"roxy-natal-chart",slug:"natal-chart",heading:"Natal chart",description:"Western natal chart wheel for /astrology/natal-chart responses",docsLabel:"Western",endpointLabel:"POST /astrology/natal-chart",docsSummary:"Natal chart wheel with planet glyphs and aspect lines",topic:"Astrology"},{pascal:"RoxySynastryChart",tag:"roxy-synastry-chart",slug:"synastry-chart",heading:"Synastry",description:"Dual-wheel synastry chart with inter-aspects table",docsLabel:"Western",endpointLabel:"POST /astrology/synastry",docsSummary:"Dual-wheel synastry with inter-aspects table",topic:"Astrology"},{pascal:"RoxyWesternPlanetsTable",tag:"roxy-western-planets-table",slug:"western-planets-table",heading:"Western planets",description:"Western planetary positions table with sign, degree, house, and motion plus the chart angles",docsLabel:"Western",endpointLabel:"POST /astrology/natal-chart",docsSummary:"Sign, degree, house, motion columns plus ASC, MC, PoF, Vertex",topic:"Astrology"},{pascal:"RoxyTransitsTable",tag:"roxy-transits-table",slug:"transits-table",heading:"Transits",description:"Live planet positions plus aspects to a natal chart",docsLabel:"Western",endpointLabel:"POST /astrology/transits",docsSummary:"Transit planet positions plus optional aspects to a natal chart",topic:"Astrology"},{pascal:"RoxyMoonPhase",tag:"roxy-moon-phase",slug:"moon-phase",heading:"Moon phase",description:"Moon phase card and calendar",docsLabel:"Western",endpointLabel:"GET /astrology/moon-phase/{current,upcoming,calendar/...}",docsSummary:"Moon phase card and calendar",topic:"Astrology"},{pascal:"RoxyHoroscopeCard",tag:"roxy-horoscope-card",slug:"horoscope-card",heading:"Daily horoscope",description:"Daily, weekly, or monthly horoscope card for /astrology/horoscope/...",docsLabel:"Western",endpointLabel:"GET /astrology/horoscope/{sign}/{daily,weekly,monthly}",docsSummary:"Daily, weekly, or monthly horoscope card",topic:"Astrology"},{pascal:"RoxyCompatibilityCard",tag:"roxy-compatibility-card",slug:"compatibility-card",heading:"Compatibility score",description:"Cross-domain compatibility score card",docsLabel:"Cross",endpointLabel:"POST /astrology/compatibility-score, /numerology/compatibility, /biorhythm/compatibility",docsSummary:"Score card with category breakdown",topic:"Astrology"},{pascal:"RoxyVedicKundli",tag:"roxy-vedic-kundli",slug:"vedic-kundli",heading:"Vedic kundli",description:"South, North, or East Indian Vedic kundli for /vedic-astrology/birth-chart with per-planet degree and nakshatra detail",docsLabel:"Vedic",endpointLabel:"POST /vedic-astrology/birth-chart",docsSummary:"South, North, or East Indian kundli with degree detail",topic:"Vedic"},{pascal:"RoxyDivisionalChart",tag:"roxy-divisional-chart",slug:"divisional-chart",heading:"Divisional chart",description:"D2 to D60 varga chart wheel with Vargottama markers",docsLabel:"Vedic",endpointLabel:"POST /vedic-astrology/divisional-chart",docsSummary:"Generic divisional varga wheel from D2 Hora to D60 Shashtiamsa",topic:"Vedic"},{pascal:"RoxyKpChart",tag:"roxy-kp-chart",slug:"kp-chart",heading:"KP chart",description:"Full KP chart with Ascendant, Placidus cusps, and planets in tabbed stellar-hierarchy tables",docsLabel:"Vedic (KP)",endpointLabel:"POST /vedic-astrology/kp/chart",docsSummary:"Ascendant, cusps, and planets with KP stellar hierarchy",topic:"Vedic"},{pascal:"RoxyVedicPlanetsTable",tag:"roxy-vedic-planets-table",slug:"vedic-planets-table",heading:"Vedic planets",description:"Vedic planetary positions table with degree, nakshatra, pada, nakshatra lord, bhava, and avastha",docsLabel:"Vedic",endpointLabel:"POST /vedic-astrology/birth-chart",docsSummary:"Degree, nakshatra, pada, lord, bhava, avastha columns",topic:"Vedic"},{pascal:"RoxyKpPlanetsTable",tag:"roxy-kp-planets-table",slug:"kp-planets-table",heading:"KP planets",description:"KP planets table with sub-lord and sub-sub-lord columns",docsLabel:"Vedic (KP)",endpointLabel:"POST /vedic-astrology/kp/planets",docsSummary:"Sub-lord and sub-sub-lord columns",topic:"Vedic"},{pascal:"RoxyKpRulingPlanets",tag:"roxy-kp-ruling-planets",slug:"kp-ruling-planets",heading:"KP ruling planets",description:"KP ruling planets with day lord, Moon and Lagna stellar hierarchies, and house significators",docsLabel:"Vedic (KP)",endpointLabel:"POST /vedic-astrology/kp/ruling-planets",docsSummary:"Day lord, Moon/Lagna hierarchies, ruling planets, significators",topic:"Vedic"},{pascal:"RoxyAshtakavargaGrid",tag:"roxy-ashtakavarga-grid",slug:"ashtakavarga-grid",heading:"Ashtakavarga",description:"Sarva and Bhinna ashtakavarga heatmap with bindu scores",docsLabel:"Vedic",endpointLabel:"POST /vedic-astrology/ashtakavarga",docsSummary:"Sarva, Bhinna, and Shodhya Pinda views in a tabbed heatmap",topic:"Vedic"},{pascal:"RoxyShadbalaTable",tag:"roxy-shadbala-table",slug:"shadbala-table",heading:"Shadbala",description:"Six-fold planetary strength with adequacy badge per planet",docsLabel:"Vedic",endpointLabel:"POST /vedic-astrology/shadbala",docsSummary:"Six-fold planetary strength bar plus rupas and adequacy badge",topic:"Vedic"},{pascal:"RoxyDashaTimeline",tag:"roxy-dasha-timeline",slug:"dasha-timeline",heading:"Vimshottari dasha",description:"Vimshottari dasha timeline with active mahadasha highlighted",docsLabel:"Vedic",endpointLabel:"POST /vedic-astrology/dasha/{current,major,sub/...}",docsSummary:"Vimshottari mahadasha + antardasha + pratyantardasha",topic:"Vedic"},{pascal:"RoxyGunaMilan",tag:"roxy-guna-milan",slug:"guna-milan",heading:"Guna milan",description:"36-point Ashtakoota matrimonial compatibility breakdown",docsLabel:"Vedic",endpointLabel:"POST /vedic-astrology/compatibility",docsSummary:"36-point Ashtakoota with eight sub-scores",topic:"Vedic"},{pascal:"RoxyPanchangTable",tag:"roxy-panchang-table",slug:"panchang-table",heading:"Panchang",description:"Panchang muhurta table with auspicious and inauspicious periods",docsLabel:"Vedic",endpointLabel:"POST /vedic-astrology/panchang/{basic,detailed}",docsSummary:"15+ muhurtas in detailed mode",topic:"Vedic"},{pascal:"RoxyChoghadiyaGrid",tag:"roxy-choghadiya-grid",slug:"choghadiya-grid",heading:"Choghadiya",description:"Day and night Choghadiya muhurta tiles for activity timing",docsLabel:"Vedic",endpointLabel:"POST /vedic-astrology/panchang/choghadiya",docsSummary:"Day and night Choghadiya muhurta tiles colored by effect",topic:"Vedic"},{pascal:"RoxyYogaList",tag:"roxy-yoga-list",slug:"yoga-list",heading:"Yoga catalog",description:"Yoga reference cards from the catalog with optional detail mode",docsLabel:"Vedic",endpointLabel:"GET /vedic-astrology/yoga, /yoga/{id}",docsSummary:"Filterable yoga cards from the 300 plus yoga catalog",topic:"Vedic"},{pascal:"RoxyNakshatraCard",tag:"roxy-nakshatra-card",slug:"nakshatra-card",heading:"Nakshatra",description:"Nakshatra reference card with lord, deity, symbol, characteristics, and remedies",docsLabel:"Vedic",endpointLabel:"GET /vedic-astrology/nakshatras/{id}",docsSummary:"Lord, deity, symbol, characteristics, remedies",topic:"Vedic"},{pascal:"RoxyDoshaCard",tag:"roxy-dosha-card",slug:"dosha-card",heading:"Manglik dosha",description:"Manglik, Kaal Sarp, or Sade Sati presence card",docsLabel:"Vedic",endpointLabel:"POST /vedic-astrology/dosha/{manglik,kalsarpa,sadhesati}",docsSummary:"Presence, severity, remedies, scoped effects",topic:"Vedic"},{pascal:"RoxyNumerologyCard",tag:"roxy-numerology-card",slug:"numerology-card",heading:"Life path number",description:"Numerology card for life path, expression, personal year, or full chart",docsLabel:"Numerology",endpointLabel:"POST /numerology/{life-path,expression,personal-year,chart}",docsSummary:"Life path, expression, personal year, full chart",topic:"Numerology"},{pascal:"RoxyTarotCard",tag:"roxy-tarot-card",slug:"tarot-card",heading:"Daily tarot card",description:"Single tarot card with upright/reversed flip animation",docsLabel:"Tarot",endpointLabel:"GET /tarot/cards/{id}, POST /tarot/daily",docsSummary:"Single card with upright and reversed flip",topic:"Tarot"},{pascal:"RoxyTarotSpread",tag:"roxy-tarot-spread",slug:"tarot-spread",heading:"Three-card spread",description:"Tarot spread renderer for three-card, Celtic Cross, love, or yes/no",docsLabel:"Tarot",endpointLabel:"POST /tarot/spreads/{three-card,celtic-cross,love}, /tarot/yes-no, /tarot/draw",docsSummary:"Spreads with positions and reading",topic:"Tarot"},{pascal:"RoxyBiorhythmChart",tag:"roxy-biorhythm-chart",slug:"biorhythm-chart",heading:"Daily biorhythm",description:"Daily biorhythm bars or multi-day forecast cycle lines",docsLabel:"Biorhythm",endpointLabel:"POST /biorhythm/{daily,forecast,critical-days}",docsSummary:"Daily bars, forecast cycle lines, critical days",topic:"Biorhythm"},{pascal:"RoxyHexagram",tag:"roxy-hexagram",slug:"hexagram",heading:"I Ching hexagram",description:"I Ching hexagram with trigram glyphs, judgment, image, and changing lines",docsLabel:"I Ching",endpointLabel:"GET /iching/hexagrams/{number}, /iching/cast, POST /iching/daily, /iching/daily/cast",docsSummary:"Hexagram with trigrams, judgment, image, changing lines",topic:"I Ching"},{pascal:"RoxyEndpointForm",tag:"roxy-endpoint-form",slug:"endpoint-form",heading:"Schema-driven form",description:"Schema-driven form that emits roxy-submit with a validated payload",docsLabel:"Helper",endpointLabel:"Any endpoint via x-roxy-ui hints",docsSummary:"Schema-driven form, emits roxy-submit",topic:"Helpers",selfFetching:!0},{pascal:"RoxyLocationSearch",tag:"roxy-location-search",slug:"location-search",heading:"City search",description:"City search input with debounced /location/search calls",docsLabel:"Helper",endpointLabel:"GET /location/search",docsSummary:"Debounced city search input, emits roxy-location-select",topic:"Helpers",selfFetching:!0},{pascal:"RoxyData",tag:"roxy-data",slug:"data",heading:"Generic renderer",description:"Generic fallback renderer for any OpenAPI response shape",docsLabel:"Helper",endpointLabel:"Any response shape",docsSummary:"Generic fallback renderer for unknown shapes",topic:"Helpers",selfFetching:!0}];var cr="0.4.0";var ha=dt.map(n=>n.slug);return yr(ga);})();
5102
+ `],p([u({attribute:!1})],de.prototype,"data",2),p([z()],de.prototype,"filter",2),de=p([b("roxy-yoga-list")],de);var ct=[{pascal:"RoxyNatalChart",tag:"roxy-natal-chart",slug:"natal-chart",heading:"Natal chart",description:"Western natal chart wheel for /astrology/natal-chart responses",docsLabel:"Western",endpointLabel:"POST /astrology/natal-chart",docsSummary:"Natal chart wheel with planet glyphs and aspect lines",topic:"Astrology"},{pascal:"RoxySynastryChart",tag:"roxy-synastry-chart",slug:"synastry-chart",heading:"Synastry",description:"Dual-wheel synastry chart with inter-aspects table",docsLabel:"Western",endpointLabel:"POST /astrology/synastry",docsSummary:"Dual-wheel synastry with inter-aspects table",topic:"Astrology"},{pascal:"RoxyWesternPlanetsTable",tag:"roxy-western-planets-table",slug:"western-planets-table",heading:"Western planets",description:"Western planetary positions table with sign, degree, house, and motion plus the chart angles",docsLabel:"Western",endpointLabel:"POST /astrology/natal-chart",docsSummary:"Sign, degree, house, motion columns plus ASC, MC, PoF, Vertex",topic:"Astrology"},{pascal:"RoxyTransitsTable",tag:"roxy-transits-table",slug:"transits-table",heading:"Transits",description:"Live planet positions plus aspects to a natal chart",docsLabel:"Western",endpointLabel:"POST /astrology/transits",docsSummary:"Transit planet positions plus optional aspects to a natal chart",topic:"Astrology"},{pascal:"RoxyMoonPhase",tag:"roxy-moon-phase",slug:"moon-phase",heading:"Moon phase",description:"Moon phase card and calendar",docsLabel:"Western",endpointLabel:"GET /astrology/moon-phase/{current,upcoming,calendar/...}",docsSummary:"Moon phase card and calendar",topic:"Astrology"},{pascal:"RoxyHoroscopeCard",tag:"roxy-horoscope-card",slug:"horoscope-card",heading:"Daily horoscope",description:"Daily, weekly, or monthly horoscope card for /astrology/horoscope/...",docsLabel:"Western",endpointLabel:"GET /astrology/horoscope/{sign}/{daily,weekly,monthly}",docsSummary:"Daily, weekly, or monthly horoscope card",topic:"Astrology"},{pascal:"RoxyCompatibilityCard",tag:"roxy-compatibility-card",slug:"compatibility-card",heading:"Compatibility score",description:"Cross-domain compatibility score card",docsLabel:"Cross",endpointLabel:"POST /astrology/compatibility-score, /numerology/compatibility, /biorhythm/compatibility",docsSummary:"Score card with category breakdown",topic:"Astrology"},{pascal:"RoxyVedicKundli",tag:"roxy-vedic-kundli",slug:"vedic-kundli",heading:"Vedic kundli",description:"South, North, or East Indian Vedic kundli for /vedic-astrology/birth-chart with per-planet degree and nakshatra detail",docsLabel:"Vedic",endpointLabel:"POST /vedic-astrology/birth-chart",docsSummary:"South, North, or East Indian kundli with degree detail",topic:"Vedic"},{pascal:"RoxyDivisionalChart",tag:"roxy-divisional-chart",slug:"divisional-chart",heading:"Divisional chart",description:"D2 to D60 varga chart wheel with Vargottama markers",docsLabel:"Vedic",endpointLabel:"POST /vedic-astrology/divisional-chart",docsSummary:"Generic divisional varga wheel from D2 Hora to D60 Shashtiamsa",topic:"Vedic"},{pascal:"RoxyKpChart",tag:"roxy-kp-chart",slug:"kp-chart",heading:"KP chart",description:"Full KP chart with Ascendant, Placidus cusps, and planets in tabbed stellar-hierarchy tables",docsLabel:"Vedic (KP)",endpointLabel:"POST /vedic-astrology/kp/chart",docsSummary:"Ascendant, cusps, and planets with KP stellar hierarchy",topic:"Vedic"},{pascal:"RoxyVedicPlanetsTable",tag:"roxy-vedic-planets-table",slug:"vedic-planets-table",heading:"Vedic planets",description:"Vedic planetary positions table with degree, nakshatra, pada, nakshatra lord, bhava, and avastha",docsLabel:"Vedic",endpointLabel:"POST /vedic-astrology/birth-chart",docsSummary:"Degree, nakshatra, pada, lord, bhava, avastha columns",topic:"Vedic"},{pascal:"RoxyKpPlanetsTable",tag:"roxy-kp-planets-table",slug:"kp-planets-table",heading:"KP planets",description:"KP planets table with sub-lord and sub-sub-lord columns",docsLabel:"Vedic (KP)",endpointLabel:"POST /vedic-astrology/kp/planets",docsSummary:"Sub-lord and sub-sub-lord columns",topic:"Vedic"},{pascal:"RoxyKpRulingPlanets",tag:"roxy-kp-ruling-planets",slug:"kp-ruling-planets",heading:"KP ruling planets",description:"KP ruling planets with day lord, Moon and Lagna stellar hierarchies, and house significators",docsLabel:"Vedic (KP)",endpointLabel:"POST /vedic-astrology/kp/ruling-planets",docsSummary:"Day lord, Moon/Lagna hierarchies, ruling planets, significators",topic:"Vedic"},{pascal:"RoxyAshtakavargaGrid",tag:"roxy-ashtakavarga-grid",slug:"ashtakavarga-grid",heading:"Ashtakavarga",description:"Sarva and Bhinna ashtakavarga heatmap with bindu scores",docsLabel:"Vedic",endpointLabel:"POST /vedic-astrology/ashtakavarga",docsSummary:"Sarva, Bhinna, and Shodhya Pinda views in a tabbed heatmap",topic:"Vedic"},{pascal:"RoxyShadbalaTable",tag:"roxy-shadbala-table",slug:"shadbala-table",heading:"Shadbala",description:"Six-fold planetary strength with adequacy badge per planet",docsLabel:"Vedic",endpointLabel:"POST /vedic-astrology/shadbala",docsSummary:"Six-fold planetary strength bar plus rupas and adequacy badge",topic:"Vedic"},{pascal:"RoxyDashaTimeline",tag:"roxy-dasha-timeline",slug:"dasha-timeline",heading:"Vimshottari dasha",description:"Vimshottari dasha timeline with active mahadasha highlighted",docsLabel:"Vedic",endpointLabel:"POST /vedic-astrology/dasha/{current,major,sub/...}",docsSummary:"Vimshottari mahadasha + antardasha + pratyantardasha",topic:"Vedic"},{pascal:"RoxyGunaMilan",tag:"roxy-guna-milan",slug:"guna-milan",heading:"Guna milan",description:"36-point Ashtakoota matrimonial compatibility breakdown",docsLabel:"Vedic",endpointLabel:"POST /vedic-astrology/compatibility",docsSummary:"36-point Ashtakoota with eight sub-scores",topic:"Vedic"},{pascal:"RoxyPanchangTable",tag:"roxy-panchang-table",slug:"panchang-table",heading:"Panchang",description:"Panchang muhurta table with auspicious and inauspicious periods",docsLabel:"Vedic",endpointLabel:"POST /vedic-astrology/panchang/{basic,detailed}",docsSummary:"15+ muhurtas in detailed mode",topic:"Vedic"},{pascal:"RoxyChoghadiyaGrid",tag:"roxy-choghadiya-grid",slug:"choghadiya-grid",heading:"Choghadiya",description:"Day and night Choghadiya muhurta tiles for activity timing",docsLabel:"Vedic",endpointLabel:"POST /vedic-astrology/panchang/choghadiya",docsSummary:"Day and night Choghadiya muhurta tiles colored by effect",topic:"Vedic"},{pascal:"RoxyYogaList",tag:"roxy-yoga-list",slug:"yoga-list",heading:"Yoga catalog",description:"Yoga reference cards from the catalog with optional detail mode",docsLabel:"Vedic",endpointLabel:"GET /vedic-astrology/yoga, /yoga/{id}",docsSummary:"Filterable yoga cards from the 300 plus yoga catalog",topic:"Vedic"},{pascal:"RoxyNakshatraCard",tag:"roxy-nakshatra-card",slug:"nakshatra-card",heading:"Nakshatra",description:"Nakshatra reference card with lord, deity, symbol, characteristics, and remedies",docsLabel:"Vedic",endpointLabel:"GET /vedic-astrology/nakshatras/{id}",docsSummary:"Lord, deity, symbol, characteristics, remedies",topic:"Vedic"},{pascal:"RoxyDoshaCard",tag:"roxy-dosha-card",slug:"dosha-card",heading:"Manglik dosha",description:"Manglik, Kaal Sarp, or Sade Sati presence card",docsLabel:"Vedic",endpointLabel:"POST /vedic-astrology/dosha/{manglik,kalsarpa,sadhesati}",docsSummary:"Presence, severity, remedies, scoped effects",topic:"Vedic"},{pascal:"RoxyNumerologyCard",tag:"roxy-numerology-card",slug:"numerology-card",heading:"Life path number",description:"Numerology card for life path, expression, personal year, or full chart",docsLabel:"Numerology",endpointLabel:"POST /numerology/{life-path,expression,personal-year,chart}",docsSummary:"Life path, expression, personal year, full chart",topic:"Numerology"},{pascal:"RoxyTarotCard",tag:"roxy-tarot-card",slug:"tarot-card",heading:"Daily tarot card",description:"Single tarot card with upright/reversed flip animation",docsLabel:"Tarot",endpointLabel:"GET /tarot/cards/{id}, POST /tarot/daily",docsSummary:"Single card with upright and reversed flip",topic:"Tarot"},{pascal:"RoxyTarotSpread",tag:"roxy-tarot-spread",slug:"tarot-spread",heading:"Three-card spread",description:"Tarot spread renderer for three-card, Celtic Cross, love, or yes/no",docsLabel:"Tarot",endpointLabel:"POST /tarot/spreads/{three-card,celtic-cross,love}, /tarot/yes-no, /tarot/draw",docsSummary:"Spreads with positions and reading",topic:"Tarot"},{pascal:"RoxyBiorhythmChart",tag:"roxy-biorhythm-chart",slug:"biorhythm-chart",heading:"Daily biorhythm",description:"Daily biorhythm bars or multi-day forecast cycle lines",docsLabel:"Biorhythm",endpointLabel:"POST /biorhythm/{daily,forecast,critical-days}",docsSummary:"Daily bars, forecast cycle lines, critical days",topic:"Biorhythm"},{pascal:"RoxyHexagram",tag:"roxy-hexagram",slug:"hexagram",heading:"I Ching hexagram",description:"I Ching hexagram with trigram glyphs, judgment, image, and changing lines",docsLabel:"I Ching",endpointLabel:"GET /iching/hexagrams/{number}, /iching/cast, POST /iching/daily, /iching/daily/cast",docsSummary:"Hexagram with trigrams, judgment, image, changing lines",topic:"I Ching"},{pascal:"RoxyEndpointForm",tag:"roxy-endpoint-form",slug:"endpoint-form",heading:"Schema-driven form",description:"Schema-driven form that emits roxy-submit with a validated payload",docsLabel:"Helper",endpointLabel:"Any endpoint via x-roxy-ui hints",docsSummary:"Schema-driven form, emits roxy-submit",topic:"Helpers",selfFetching:!0},{pascal:"RoxyLocationSearch",tag:"roxy-location-search",slug:"location-search",heading:"City search",description:"City search input with debounced /location/search calls",docsLabel:"Helper",endpointLabel:"GET /location/search",docsSummary:"Debounced city search input, emits roxy-location-select",topic:"Helpers",selfFetching:!0},{pascal:"RoxyData",tag:"roxy-data",slug:"data",heading:"Generic renderer",description:"Generic fallback renderer for any OpenAPI response shape",docsLabel:"Helper",endpointLabel:"Any response shape",docsSummary:"Generic fallback renderer for unknown shapes",topic:"Helpers",selfFetching:!0}];var pr="0.5.0";var ya=ct.map(n=>n.slug);return yr(xa);})();
5103
5103
  /*! Bundled license information:
5104
5104
 
5105
5105
  @lit/reactive-element/css-tag.js: