ppcabral commited on
Commit
c6c20d3
·
verified ·
1 Parent(s): 93ff71e

undefined - Initial Deployment

Browse files
Files changed (2) hide show
  1. README.md +6 -4
  2. index.html +533 -19
README.md CHANGED
@@ -1,10 +1,12 @@
1
  ---
2
- title: Teste
3
- emoji: 🔥
4
- colorFrom: indigo
5
  colorTo: green
6
  sdk: static
7
  pinned: false
 
 
8
  ---
9
 
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
1
  ---
2
+ title: teste
3
+ emoji: 🐳
4
+ colorFrom: pink
5
  colorTo: green
6
  sdk: static
7
  pinned: false
8
+ tags:
9
+ - deepsite
10
  ---
11
 
12
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
index.html CHANGED
@@ -1,19 +1,533 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
19
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="pt-br">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Dashboard Astrológico</title>
7
+ <link rel="preconnect" href="https://fonts.googleapis.com">
8
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
9
+ <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
10
+ <link href="https://fonts.googleapis.com/css2?family=Outfit:wght@400;500;600;700&display=swap" rel="stylesheet">
11
+
12
+ <style>
13
+ :root {
14
+ --bg-color: linear-gradient(135deg, #4B0082 0%, #00008B 100%);
15
+ --card-bg: rgba(255, 255, 255, 0.15);
16
+ --header-bg-color: rgba(255, 255, 255, 0.1);
17
+ --current-week-bg: rgba(255, 255, 255, 0.2);
18
+ --other-month-bg: rgba(255, 255, 255, 0.05);
19
+ --text-primary: #FFFFFF;
20
+ --text-secondary: rgba(255, 255, 255, 0.7);
21
+ --accent-color: #5E7CE2;
22
+ --divider: rgba(255, 255, 255, 0.2);
23
+ --current-day-border: #5E7CE2;
24
+
25
+ --color-good: #4CAF50; /* Original green */
26
+ --color-bad: #F44336; /* Original red */
27
+ --color-neutral: #9E9E9E;
28
+ --color-special: #FF9800;
29
+ --color-warning-bg: rgba(255, 243, 205, 0.2);
30
+ --color-warning-text: #FFECB3;
31
+
32
+ --color-good-bg: rgba(76, 175, 80, 0.3); /* Original green with transparency */
33
+ --color-bad-bg: rgba(244, 67, 54, 0.3); /* Original red with transparency */
34
+ }
35
+
36
+ html { font-size: 15px; }
37
+
38
+ body {
39
+ font-family: 'Outfit', 'Inter', system-ui, sans-serif;
40
+ background: var(--bg-color);
41
+ color: var(--text-primary);
42
+ margin: 0;
43
+ min-height: 100vh;
44
+ padding: 2rem;
45
+ display: flex;
46
+ flex-direction: column;
47
+ justify-content: flex-start;
48
+ align-items: center;
49
+ background-attachment: fixed;
50
+ background-size: cover;
51
+ }
52
+
53
+ h1 {
54
+ background: linear-gradient(to right, #FFFFFF, #E0E0E0);
55
+ -webkit-background-clip: text;
56
+ background-clip: text;
57
+ color: transparent;
58
+ }
59
+
60
+ h1 {
61
+ color: var(--text-primary);
62
+ text-align: center;
63
+ font-weight: 600;
64
+ }
65
+
66
+ .controls {
67
+ max-width: 100%;
68
+ margin-bottom: 2rem;
69
+ display: flex;
70
+ justify-content: center;
71
+ align-items: center;
72
+ gap: 1rem;
73
+ flex-wrap: wrap;
74
+ background: rgba(255, 255, 255, 0.1);
75
+ backdrop-filter: blur(10px);
76
+ -webkit-backdrop-filter: blur(10px);
77
+ padding: 1.5rem;
78
+ border-radius: 20px;
79
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);
80
+ border: 1px solid rgba(255, 255, 255, 0.1);
81
+ }
82
+
83
+ .upload-group,
84
+ .select-group {
85
+ background: rgba(255, 255, 255, 0.1);
86
+ padding: 0.5rem 1rem;
87
+ border-radius: 12px;
88
+ border: 1px solid rgba(255, 255, 255, 0.1);
89
+ }
90
+
91
+ .upload-group label,
92
+ .select-group label {
93
+ display: block;
94
+ margin-bottom: 0.25rem;
95
+ font-size: 0.8rem;
96
+ color: var(--text-secondary);
97
+ }
98
+
99
+ .upload-group input,
100
+ .select-group select {
101
+ background: rgba(0, 0, 0, 0.2);
102
+ color: white;
103
+ border: 1px solid rgba(255, 255, 255, 0.1);
104
+ border-radius: 8px;
105
+ padding: 0.5rem;
106
+ }
107
+
108
+ .upload-group input::file-selector-button {
109
+ background: rgba(255, 255, 255, 0.1);
110
+ color: white;
111
+ border: none;
112
+ padding: 0.25rem 0.5rem;
113
+ border-radius: 4px;
114
+ margin-right: 0.5rem;
115
+ }
116
+
117
+ #calendar-container {
118
+ display: grid;
119
+ grid-template-columns: repeat(7, minmax(190px, 1fr));
120
+ gap: 1rem;
121
+ }
122
+
123
+ .calendar-header {
124
+ text-align: center;
125
+ color: var(--text-secondary);
126
+ padding-bottom: 1rem;
127
+ font-weight: 600;
128
+ }
129
+
130
+ .calendar-day {
131
+ background-color: var(--card-bg);
132
+ backdrop-filter: blur(10px);
133
+ -webkit-backdrop-filter: blur(10px);
134
+ border: 1px solid var(--divider);
135
+ min-height: 250px;
136
+ border-radius: 20px;
137
+ padding: 1rem;
138
+ display: flex;
139
+ flex-direction: column;
140
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3);
141
+ transition: all 0.3s ease;
142
+ }
143
+ .calendar-day:hover {
144
+ border-color: var(--accent-color);
145
+ box-shadow: 0 8px 32px rgba(94, 124, 226, 0.4);
146
+ transform: translateY(-2px);
147
+ }
148
+ .calendar-day.other-month { opacity: 0.5; }
149
+ .calendar-day.current-day { border: 2px solid var(--current-day-border); }
150
+ .calendar-day.current-week { background-color: var(--current-week-bg); }
151
+
152
+ .calendar-day.card-good {
153
+ background-color: var(--color-good-bg);
154
+ border-color: var(--color-good);
155
+ box-shadow: 0 8px 32px rgba(76, 175, 80, 0.4);
156
+ }
157
+ .calendar-day.card-bad {
158
+ background-color: var(--color-bad-bg);
159
+ border-color: var(--color-bad);
160
+ box-shadow: 0 8px 32px rgba(244, 67, 54, 0.4);
161
+ }
162
+
163
+ /* --- PASSO 1: Layout do Cabeçalho Ajustado --- */
164
+ .card-header {
165
+ display: flex; /* Alterado para Flexbox */
166
+ justify-content: space-between;
167
+ padding-bottom: 0.75rem;
168
+ border-bottom: 1px solid var(--divider);
169
+ gap: 1rem;
170
+ }
171
+
172
+ .header-col-left .day-number {
173
+ font-size: 2.5rem; /* Fonte aumentada */
174
+ font-weight: 700;
175
+ line-height: 1;
176
+ }
177
+
178
+ .header-col-right {
179
+ text-align: right;
180
+ display: flex;
181
+ flex-direction: column;
182
+ align-items: flex-end; /* Alinha itens à direita */
183
+ }
184
+
185
+ .header-col-right .day-nakshatra {
186
+ font-size: 1rem;
187
+ font-weight: 600;
188
+ }
189
+ .day-nakshatra.vedha-plus { color: var(--color-good); }
190
+ .day-nakshatra.vedha-special { color: var(--color-special); }
191
+ .day-nakshatra.vedha-minus { color: var(--color-bad); }
192
+
193
+ .header-col-right .tara-bala {
194
+ font-size: 0.7rem; /* Fonte diminuída */
195
+ font-weight: 500;
196
+ color: var(--text-secondary);
197
+ }
198
+ .tara-bala.good { color: var(--color-good); }
199
+ .tara-bala.bad { color: var(--color-bad); }
200
+
201
+ .header-col-right .day-tithi {
202
+ font-size: 0.8rem;
203
+ color: var(--text-secondary);
204
+ font-weight: 500;
205
+ }
206
+
207
+ .moon-house-container {
208
+ margin-top: 0.5rem;
209
+ width: 100%; /* Garante que o container ocupe todo o espaço */
210
+ text-align: center;
211
+ }
212
+ .header-divider {
213
+ height: 1px;
214
+ background-color: var(--divider);
215
+ margin-bottom: 0.5rem;
216
+ }
217
+ .moon-house {
218
+ font-size: 0.875rem;
219
+ font-weight: 600;
220
+ color: var(--text-secondary);
221
+ }
222
+ .moon-house.bad-house {
223
+ color: var(--color-bad);
224
+ }
225
+
226
+ .card-content {
227
+ padding-top: 0.75rem;
228
+ display: flex;
229
+ flex-direction: column;
230
+ gap: 0.75rem;
231
+ flex-grow: 1;
232
+ }
233
+ .content-section .title {
234
+ font-size: 0.7rem;
235
+ font-weight: 700;
236
+ color: var(--text-secondary);
237
+ margin-bottom: 0.4rem;
238
+ text-transform: uppercase;
239
+ }
240
+ .panchanga-details div { margin-bottom: 2px; font-size: 0.875rem; color: var(--text-secondary); }
241
+ .panchanga-details b { color: var(--text-primary); font-weight: 500; }
242
+
243
+ .tags-container { display: flex; flex-wrap: wrap; gap: 0.3rem; }
244
+ .item-tag {
245
+ display: inline-block;
246
+ color: white;
247
+ padding: 2px 7px;
248
+ border-radius: 4px;
249
+ font-weight: 500;
250
+ font-size: 0.75rem;
251
+ }
252
+ .item-tag.good { background-color: var(--color-good); }
253
+ .item-tag.bad { background-color: var(--color-bad); }
254
+ .item-tag.neutral { background-color: var(--text-secondary); }
255
+
256
+ .dagdha-warning {
257
+ background-color: var(--color-warning-bg);
258
+ color: var(--color-warning-text);
259
+ border-radius: 4px;
260
+ padding: 0.5rem;
261
+ font-size: 0.8rem;
262
+ font-weight: 500;
263
+ margin-top: auto;
264
+ text-align: center;
265
+ }
266
+ </style>
267
+ </head>
268
+ <body>
269
+
270
+ <h1>Dashboard Astrológico</h1>
271
+
272
+ <div class="controls">
273
+ <div class="upload-group"> <label for="panchanga-upload">1. JSON Trânsitos</label> <input type="file" id="panchanga-upload" accept=".json"> </div>
274
+ <div class="upload-group"> <label for="clients-upload">2. JSON Clientes</label> <input type="file" id="clients-upload" accept=".json" disabled> </div>
275
+ <div class="select-group"> <label for="year-selector">Ano</label> <select id="year-selector" disabled></select> </div>
276
+ <div class="select-group"> <label for="month-selector">Mês</label> <select id="month-selector" disabled></select> </div>
277
+ <div class="select-group"> <label for="client-selector">3. Cliente</label> <select id="client-selector" disabled></select> </div>
278
+ </div>
279
+
280
+ <div id="calendar-container"></div>
281
+
282
+ <script>
283
+ document.addEventListener('DOMContentLoaded', function() {
284
+ // --- CONSTANTES E VARIÁVEIS GLOBAIS ---
285
+ const panchangaUpload = document.getElementById('panchanga-upload'), clientsUpload = document.getElementById('clients-upload'), yearSelector = document.getElementById('year-selector'), monthSelector = document.getElementById('month-selector'), clientSelector = document.getElementById('client-selector'), calendarContainer = document.getElementById('calendar-container');
286
+ let panchangaData = [], clientsData = [], selectedClient = null;
287
+
288
+ // --- DADOS ASTROLÓGICOS ---
289
+ const NAKSHATRA_ORDER = ['Ashwini', 'Bharani', 'Krittika', 'Rohini', 'Mrigashira', 'Ardra', 'Punarvasu', 'Pushya', 'Ashlesha', 'Magha', 'Purva Phalguni', 'Uttara Phalguni', 'Hasta', 'Chitra', 'Swati', 'Vishakha', 'Anuradha', 'Jyeshtha', 'Mula', 'Purva Ashadha', 'Uttara Ashadha', 'Shravana', 'Dhanishta', 'Shatabhisha', 'Purva Bhadrapada', 'Uttara Bhadrapada', 'Revati'];
290
+ const WHOLE_SIGN_NAKSHATRAS = [ 'Ashwini', 'Bharani', 'Rohini', 'Ardra', 'Pushya', 'Ashlesha', 'Magha', 'Purva Phalguni', 'Hasta', 'Swati', 'Anuradha', 'Jyeshtha', 'Mula', 'Purva Ashadha', 'Shravana', 'Shatabhisha', 'Uttara Bhadrapada', 'Revati' ];
291
+ const NAKSHATRA_TO_SIGN = { 'Ashwini': 'Áries', 'Bharani': 'Áries', 'Krittika': 'Touro', 'Rohini': 'Touro', 'Mrigashira': 'Gêmeos', 'Ardra': 'Gêmeos', 'Punarvasu': 'Câncer', 'Pushya': 'Câncer', 'Ashlesha': 'Câncer', 'Magha': 'Leão', 'Purva Phalguni': 'Leão', 'Uttara Phalguni': 'Virgem', 'Hasta': 'Virgem', 'Chitra': 'Libra', 'Swati': 'Libra', 'Vishakha': 'Escorpião', 'Anuradha': 'Escorpião', 'Jyeshtha': 'Escorpião', 'Mula': 'Sagitário', 'Purva Ashadha': 'Sagitário', 'Uttara Ashadha': 'Capricórnio', 'Shravana': 'Capricórnio', 'Dhanishta': 'Aquário', 'Shatabhisha': 'Aquário', 'Purva Bhadrapada': 'Peixes', 'Uttara Bhadrapada': 'Peixes', 'Revati': 'Peixes' };
292
+ const TARA_BALA = [ { name: 'Jamna-Ganesh', quality: 'Ruim' }, { name: 'Sampat-Lakshmi', quality: 'Bom' }, { name: 'Vipat-Surya', quality: 'Ruim' }, { name: 'Kshema-Gauri', quality: 'Bom' }, { name: 'Pratyak-Skanda', quality: 'Ruim' }, { name: 'Sadhana-Durga', quality: 'Bom' }, { name: 'Naidhana-Shiva', quality: 'Ruim' }, { name: 'Mitra-Kali', quality: 'Bom' }, { name: 'Adimitra-Krishna', quality: 'Bom' } ];
293
+ const ALL_PLANETS = ["Sol", "Marte", "Mercúrio", "Júpiter", "Vênus", "Saturno", "Rahu", "Ketu"];
294
+ const GOOD_POINTS = ["Yogi Sphuta", "YogaKaraka", "Sri Lagna", "Indu Lagna", "Brighu Bindu", "Arudha Lagna"];
295
+ const BAD_POINTS = ["Avayogi (bad) Sphuta", "Sthula Nakshatra", "Kantaka Nakshatra", "Kantaka Sthula Nakshatra", "Vedha Nakshatra"];
296
+ const ZODIAC_ORDER = ['Áries', 'Touro', 'Gêmeos', 'Câncer', 'Leão', 'Virgem', 'Libra', 'Escorpião', 'Sagitário', 'Capricórnio', 'Aquário', 'Peixes'];
297
+ const SIGN_RULERS = { 'Áries': ['Marte'], 'Touro': ['Vênus'], 'Gêmeos': ['Mercúrio'], 'Câncer': ['Lua'], 'Leão': ['Sol'], 'Virgem': ['Mercúrio'], 'Libra': ['Vênus'], 'Escorpião': ['Marte', 'Ketu'], 'Sagitário': ['Júpiter'], 'Capricórnio': ['Saturno'], 'Aquário': ['Saturno', 'Rahu'], 'Peixes': ['Júpiter'] };
298
+ const DAGDHA_RASHI_MAP = { 'pratipada': ['Libra', 'Capricórnio'], 'dvitya': ['Sagitário', 'Peixes'], 'tritiya': ['Leão', 'Capricórnio'], 'chaturti': ['Touro', 'Aquário'], 'panchami': ['Gêmeos', 'Virgem'], 'shasti': ['Áries', 'Leão'], 'saptami': ['Câncer', 'Sagitário'], 'astami': ['Gêmeos', 'Virgem'], 'navami': ['Leão', 'Escorpião'], 'dashami': ['Leão', 'Escorpião'], 'ekadasi': ['Sagitário', 'Peixes'], 'duadasi': ['Libra', 'Capricórnio'], 'trayodasi': ['Touro', 'Leão'], 'chaturdasi': ['Peixes', 'Gêmeos', 'Virgem', 'Sagitário'] };
299
+ const VEDHA_MATRIX = {"Ashwini":{"Ashwini":"-","Bharani":"-","Krittika":"-+ ","Rohini":"(+)","Mrigashira":"(+)","Ardra":"-+ ","Punarvasu":"-","Pushya":"-","Ashlesha":"-","Magha":"-+ ","Purva Phalguni":"(+)","Uttara Phalguni":"(+)","Hasta":"-+ ","Chitra":"-","Swati":"-","Vishakha":"-","Anuradha":"-+ ","Jyeshtha":"(+)","Mula":"(+)","Purva Ashadha":"-+ ","Uttara Ashadha":"-","Shravana":"-","Dhanishta":"-+ ","Shatabhisha":"(+)","Purva Bhadrapada":"(+)","Uttara Bhadrapada":"-+ ","Revati":"-"},"Bharani":{"Ashwini":"-","Bharani":"-","Krittika":"-","Rohini":"-+ ","Mrigashira":"(+)","Ardra":"(+)","Punarvasu":"-+ ","Pushya":"-","Ashlesha":"-","Magha":"-","Purva Phalguni":"-+ ","Uttara Phalguni":"(+)","Hasta":"(+)","Chitra":"-+ ","Swati":"-","Vishakha":"-","Anuradha":"-","Jyeshtha":"-+ ","Mula":"(+)","Purva Ashadha":"(+)","Uttara Ashadha":"-+ ","Shravana":"-","Dhanishta":"-","Shatabhisha":"-+ ","Purva Bhadrapada":"(+)","Uttara Bhadrapada":"(+)","Revati":"-+"},"Krittika":{"Ashwini":"-+ ","Bharani":"-","Krittika":"-","Rohini":"-","Mrigashira":"-+ ","Ardra":"(+)","Punarvasu":"(+)","Pushya":"-+ ","Ashlesha":"-","Magha":"-","Purva Phalguni":"-","Uttara Phalguni":"-+ ","Hasta":"(+)","Chitra":"(+)","Swati":"-+ ","Vishakha":"-","Anuradha":"-","Jyeshtha":"-","Mula":"-+ ","Purva Ashadha":"(+)","Uttara Ashadha":"(+)","Shravana":"-","Dhanishta":"-","Shatabhisha":"-","Purva Bhadrapada":"-+ ","Uttara Bhadrapada":"(+)","Revati":"(+)"},"Rohini":{"Ashwini":"(+)","Bharani":"-+ ","Krittika":"-","Rohini":"-","Mrigashira":"-","Ardra":"-+ ","Punarvasu":"(+)","Pushya":"(+)","Ashlesha":"-+ ","Magha":"-","Purva Phalguni":"-","Uttara Phalguni":"-","Hasta":"-+ ","Chitra":"(+)","Swati":"(+)","Vishakha":"-+ ","Anuradha":"-","Jyeshtha":"-","Mula":"-","Purva Ashadha":"-+ ","Uttara Ashadha":"(+)","Shravana":"-+ ","Dhanishta":"-","Shatabhisha":"-","Purva Bhadrapada":"-","Uttara Bhadrapada":"-+ ","Revati":"(+)"},"Mrigashira":{"Ashwini":"(+)","Bharani":"(+)","Krittika":"-+ ","Rohini":"-","Mrigashira":"-","Ardra":"-","Punarvasu":"-+ ","Pushya":"(+)","Ashlesha":"(+)","Magha":"-+ ","Purva Phalguni":"-","Uttara Phalguni":"-","Hasta":"-","Chitra":"-+ ","Swati":"(+)","Vishakha":"(+)","Anuradha":"-+ ","Jyeshtha":"-","Mula":"-","Purva Ashadha":"-","Uttara Ashadha":"-+ ","Shravana":"(+)","Dhanishta":"-+ ","Shatabhisha":"-","Purva Bhadrapada":"-","Uttara Bhadrapada":"-","Revati":"-+"},"Ardra":{"Ashwini":"-+ ","Bharani":"(+)","Krittika":"(+)","Rohini":"-+ ","Mrigashira":"-","Ardra":"-","Punarvasu":"-","Pushya":"-+ ","Ashlesha":"(+)","Magha":"(+)","Purva Phalguni":"-+ ","Uttara Phalguni":"-","Hasta":"-","Chitra":"-","Swati":"-+ ","Vishakha":"(+)","Anuradha":"(+)","Jyeshtha":"-+ ","Mula":"-","Purva Ashadha":"-","Uttara Ashadha":"-","Shravana":"(+)","Dhanishta":"(+)","Shatabhisha":"-+ ","Purva Bhadrapada":"-","Uttara Bhadrapada":"-","Revati":"-"},"Punarvasu":{"Ashwini":"-","Bharani":"-+ ","Krittika":"(+)","Rohini":"(+)","Mrigashira":"-+ ","Ardra":"-","Punarvasu":"-","Pushya":"-","Ashlesha":"-+ ","Magha":"(+)","Purva Phalguni":"(+)","Uttara Phalguni":"-+ ","Hasta":"-","Chitra":"-","Swati":"-","Vishakha":"-+ ","Anuradha":"(+)","Jyeshtha":"(+)","Mula":"-+ ","Purva Ashadha":"-","Uttara Ashadha":"-","Shravana":"-+ ","Dhanishta":"(+)","Shatabhisha":"(+)","Purva Bhadrapada":"-+ ","Uttara Bhadrapada":"-","Revati":"-"},"Pushya":{"Ashwini":"-","Bharani":"-","Krittika":"-+ ","Rohini":"(+)","Mrigashira":"(+)","Ardra":"-+ ","Punarvasu":"-","Pushya":"-","Ashlesha":"-","Magha":"-+ ","Purva Phalguni":"(+)","Uttara Phalguni":"(+)","Hasta":"-+ ","Chitra":"-","Swati":"-","Vishakha":"-","Anuradha":"-+ ","Jyeshtha":"(+)","Mula":"(+)","Purva Ashadha":"-+ ","Uttara Ashadha":"-","Shravana":"-","Dhanishta":"-+ ","Shatabhisha":"(+)","Purva Bhadrapada":"(+)","Uttara Bhadrapada":"-+ ","Revati":"-"},"Ashlesha":{"Ashwini":"-","Bharani":"-","Krittika":"-","Rohini":"-+ ","Mrigashira":"(+)","Ardra":"(+)","Punarvasu":"-+ ","Pushya":"-","Ashlesha":"-","Magha":"-","Purva Phalguni":"-+ ","Uttara Phalguni":"(+)","Hasta":"(+)","Chitra":"-+ ","Swati":"-","Vishakha":"-","Anuradha":"-","Jyeshtha":"-+ ","Mula":"(+)","Purva Ashadha":"(+)","Uttara Ashadha":"-+ ","Shravana":"-","Dhanishta":"-","Shatabhisha":"-+ ","Purva Bhadrapada":"(+)","Uttara Bhadrapada":"(+)","Revati":"-+"},"Magha":{"Ashwini":"-+ ","Bharani":"-","Krittika":"-","Rohini":"-","Mrigashira":"-+ ","Ardra":"(+)","Punarvasu":"(+)","Pushya":"-+ ","Ashlesha":"-","Magha":"-","Purva Phalguni":"-","Uttara Phalguni":"-+ ","Hasta":"(+)","Chitra":"(+)","Swati":"-+ ","Vishakha":"-","Anuradha":"-","Jyeshtha":"-","Mula":"-+ ","Purva Ashadha":"(+)","Uttara Ashadha":"(+)","Shravana":"-","Dhanishta":"-","Shatabhisha":"-","Purva Bhadrapada":"-+ ","Uttara Bhadrapada":"(+)","Revati":"(+)"},"Purva Phalguni":{"Ashwini":"(+)","Bharani":"-+ ","Krittika":"-","Rohini":"-","Mrigashira":"-","Ardra":"-+ ","Punarvasu":"(+)","Pushya":"(+)","Ashlesha":"-+ ","Magha":"-","Purva Phalguni":"-","Uttara Phalguni":"-","Hasta":"-+ ","Chitra":"(+)","Swati":"(+)","Vishakha":"-+ ","Anuradha":"-","Jyeshtha":"-","Mula":"-","Purva Ashadha":"-+ ","Uttara Ashadha":"(+)","Shravana":"-+ ","Dhanishta":"-","Shatabhisha":"-","Purva Bhadrapada":"-","Uttara Bhadrapada":"-+ ","Revati":"(+)"},"Uttara Phalguni":{"Ashwini":"(+)","Bharani":"(+)","Krittika":"-+ ","Rohini":"-","Mrigashira":"-","Ardra":"-","Punarvasu":"-+ ","Pushya":"(+)","Ashlesha":"(+)","Magha":"-+ ","Purva Phalguni":"-","Uttara Phalguni":"-","Hasta":"-","Chitra":"-+ ","Swati":"(+)","Vishakha":"(+)","Anuradha":"-+ ","Jyeshtha":"-","Mula":"-","Purva Ashadha":"-","Uttara Ashadha":"-+ ","Shravana":"(+)","Dhanishta":"-+ ","Shatabhisha":"-","Purva Bhadrapada":"-","Uttara Bhadrapada":"-","Revati":"-+"},"Hasta":{"Ashwini":"-+ ","Bharani":"(+)","Krittika":"(+)","Rohini":"-+ ","Mrigashira":"-","Ardra":"-","Punarvasu":"-","Pushya":"-+ ","Ashlesha":"(+)","Magha":"(+)","Purva Phalguni":"-+ ","Uttara Phalguni":"-","Hasta":"-","Chitra":"-","Swati":"-+ ","Vishakha":"(+)","Anuradha":"(+)","Jyeshtha":"-+ ","Mula":"-","Purva Ashadha":"-","Uttara Ashadha":"-","Shravana":"(+)","Dhanishta":"(+)","Shatabhisha":"-+ ","Purva Bhadrapada":"-","Uttara Bhadrapada":"-","Revati":"-"},"Chitra":{"Ashwini":"-","Bharani":"-+ ","Krittika":"(+)","Rohini":"(+)","Mrigashira":"-+ ","Ardra":"-","Punarvasu":"-","Pushya":"-","Ashlesha":"-+ ","Magha":"(+)","Purva Phalguni":"(+)","Uttara Phalguni":"-+ ","Hasta":"-","Chitra":"-","Swati":"-","Vishakha":"-+ ","Anuradha":"(+)","Jyeshtha":"(+)","Mula":"-+ ","Purva Ashadha":"-","Uttara Ashadha":"-","Shravana":"-+ ","Dhanishta":"(+)","Shatabhisha":"(+)","Purva Bhadrapada":"-+ ","Uttara Bhadrapada":"-","Revati":"-"},"Swati":{"Ashwini":"-","Bharani":"-","Krittika":"-+ ","Rohini":"(+)","Mrigashira":"(+)","Ardra":"-+ ","Punarvasu":"-","Pushya":"-","Ashlesha":"-","Magha":"-+ ","Purva Phalguni":"(+)","Uttara Phalguni":"(+)", "Hasta":"-+ ","Chitra":"-","Swati":"-","Vishakha":"-","Anuradha":"-+ ","Jyeshtha":"(+)","Mula":"(+)","Purva Ashadha":"-+ ","Uttara Ashadha":"-","Shravana":"-","Dhanishta":"-+ ","Shatabhisha":"(+)","Purva Bhadrapada":"(+)","Uttara Bhadrapada":"-+ ","Revati":"-"},"Vishakha":{"Ashwini":"-","Bharani":"-","Krittika":"-","Rohini":"-+ ","Mrigashira":"(+)","Ardra":"(+)","Punarvasu":"-+ ","Pushya":"-","Ashlesha":"-","Magha":"-","Purva Phalguni":"-+ ","Uttara Phalguni":"(+)","Hasta":"(+)","Chitra":"-+ ","Swati":"-","Vishakha":"-","Anuradha":"-","Jyeshtha":"-+ ","Mula":"(+)","Purva Ashadha":"(+)","Uttara Ashadha":"-+ ","Shravana":"-","Dhanishta":"-","Shatabhisha":"-+ ","Purva Bhadrapada":"(+)","Uttara Bhadrapada":"(+)","Revati":"-+"},"Anuradha":{"Ashwini":"-+ ","Bharani":"-","Krittika":"-","Rohini":"-","Mrigashira":"-+ ","Ardra":"(+)","Punarvasu":"(+)","Pushya":"-+ ","Ashlesha":"-","Magha":"-","Purva Phalguni":"-","Uttara Phalguni":"-+ ","Hasta":"(+)","Chitra":"(+)","Swati":"-+ ","Vishakha":"-","Anuradha":"-","Jyeshtha":"-","Mula":"-+ ","Purva Ashadha":"(+)","Uttara Ashadha":"(+)","Shravana":"-","Dhanishta":"-","Shatabhisha":"-","Purva Bhadrapada":"-+ ","Uttara Bhadrapada":"(+)","Revati":"(+)"},"Jyeshtha":{"Ashwini":"(+)","Bharani":"-+ ","Krittika":"-","Rohini":"-","Mrigashira":"-","Ardra":"-+ ","Punarvasu":"(+)","Pushya":"(+)","Ashlesha":"-+ ","Magha":"-","Purva Phalguni":"-","Uttara Phalguni":"-","Hasta":"-+ ","Chitra":"(+)","Swati":"(+)","Vishakha":"-+ ","Anuradha":"-","Jyeshtha":"-","Mula":"-","Purva Ashadha":"-+ ","Uttara Ashadha":"(+)","Shravana":"-+ ","Dhanishta":"-","Shatabhisha":"-","Purva Bhadrapada":"-","Uttara Bhadrapada":"-+ ","Revati":"(+)"},"Mula":{"Ashwini":"(+)","Bharani":"(+)","Krittika":"-+ ","Rohini":"-","Mrigashira":"-","Ardra":"-","Punarvasu":"-+ ","Pushya":"(+)","Ashlesha":"(+)","Magha":"-+ ","Purva Phalguni":"-","Uttara Phalguni":"-","Hasta":"-","Chitra":"-+ ","Swati":"(+)","Vishakha":"(+)","Anuradha":"-+ ","Jyeshtha":"-","Mula":"-","Purva Ashadha":"-","Uttara Ashadha":"-+ ","Shravana":"(+)","Dhanishta":"-+ ","Shatabhisha":"-","Purva Bhadrapada":"-","Uttara Bhadrapada":"-","Revati":"-+"},"Purva Ashadha":{"Ashwini":"-+ ","Bharani":"(+)","Krittika":"(+)","Rohini":"-+ ","Mrigashira":"-","Ardra":"-","Punarvasu":"-","Pushya":"-+ ","Ashlesha":"(+)","Magha":"(+)","Purva Phalguni":"-+ ","Uttara Phalguni":"-","Hasta":"-","Chitra":"-","Swati":"-+ ","Vishakha":"(+)","Anuradha":"(+)","Jyeshtha":"-+ ","Mula":"-","Purva Ashadha":"-","Uttara Ashadha":"-","Shravana":"(+)","Dhanishta":"(+)","Shatabhisha":"-+ ","Purva Bhadrapada":"-","Uttara Bhadrapada":"-","Revati":"-"},"Uttara Ashadha":{"Ashwini":"-","Bharani":"-+ ","Krittika":"(+)","Rohini":"(+)","Mrigashira":"-+ ","Ardra":"-","Punarvasu":"-","Pushya":"-","Ashlesha":"-+ ","Magha":"(+)","Purva Phalguni":"(+)","Uttara Phalguni":"-+ ","Hasta":"-","Chitra":"-","Swati":"-","Vishakha":"-+ ","Anuradha":"(+)","Jyeshtha":"(+)","Mula":"-+ ","Purva Ashadha":"-","Uttara Ashadha":"-","Shravana":"-+ ","Dhanishta":"(+)","Shatabhisha":"(+)","Purva Bhadrapada":"-+ ","Uttara Bhadrapada":"-","Revati":"-"},"Shravana":{"Ashwini":"-","Bharani":"-","Krittika":"-","Rohini":"-+ ","Mrigashira":"(+)","Ardra":"(+)","Punarvasu":"-+ ","Pushya":"-","Ashlesha":"-","Magha":"-","Purva Phalguni":"-+ ","Uttara Phalguni":"(+)","Hasta":"(+)","Chitra":"-+ ","Swati":"-","Vishakha":"-","Anuradha":"-","Jyeshtha":"-+ ","Mula":"(+)","Purva Ashadha":"(+)","Uttara Ashadha":"-+ ","Shravana":"-","Dhanishta":"-","Shatabhisha":"-+ ","Purva Bhadrapada":"(+)","Uttara Bhadrapada":"(+)","Revati":"-+"},"Dhanishta":{"Ashwini":"-+ ","Bharani":"-","Krittika":"-","Rohini":"-","Mrigashira":"-+ ","Ardra":"(+)","Punarvasu":"(+)","Pushya":"-+ ","Ashlesha":"-","Magha":"-","Purva Phalguni":"-","Uttara Phalguni":"-+ ","Hasta":"(+)","Chitra":"(+)","Swati":"-+ ","Vishakha":"-","Anuradha":"-","Jyeshtha":"-","Mula":"-+ ","Purva Ashadha":"(+)","Uttara Ashadha":"(+)","Shravana":"-","Dhanishta":"-","Shatabhisha":"-","Purva Bhadrapada":"-+ ","Uttara Bhadrapada":"(+)","Revati":"(+)"},"Shatabhisha":{"Ashwini":"(+)","Bharani":"-+ ","Krittika":"-","Rohini":"-","Mrigashira":"-","Ardra":"-+ ","Punarvasu":"(+)","Pushya":"(+)", "Ashlesha":"-+ ","Magha":"-","Purva Phalguni":"-","Uttara Phalguni":"-","Hasta":"-+ ","Chitra":"(+)","Swati":"(+)","Vishakha":"-+ ","Anuradha":"-","Jyeshtha":"-","Mula":"-","Purva Ashadha":"-+ ","Uttara Ashadha":"(+)","Shravana":"-+ ","Dhanishta":"-","Shatabhisha":"-","Purva Bhadrapada":"-","Uttara Bhadrapada":"-+ ","Revati":"(+)"},"Purva Bhadrapada":{"Ashwini":"(+)","Bharani":"(+)","Krittika":"-+ ","Rohini":"-","Mrigashira":"-","Ardra":"-","Punarvasu":"-+ ","Pushya":"(+)","Ashlesha":"(+)","Magha":"-+ ","Purva Phalguni":"-","Uttara Phalguni":"-","Hasta":"-","Chitra":"-+ ","Swati":"(+)","Vishakha":"(+)","Anuradha":"-+ ","Jyeshtha":"-","Mula":"-","Purva Ashadha":"-","Uttara Ashadha":"-+ ","Shravana":"(+)","Dhanishta":"-+ ","Shatabhisha":"-","Purva Bhadrapada":"-","Uttara Bhadrapada":"-","Revati":"-+"},"Uttara Bhadrapada":{"Ashwini":"-+ ","Bharani":"(+)","Krittika":"(+)","Rohini":"-+ ","Mrigashira":"-","Ardra":"-","Punarvasu":"-","Pushya":"-+ ","Ashlesha":"(+)","Magha":"(+)","Purva Phalguni":"-+ ","Uttara Phalguni":"-","Hasta":"-","Chitra":"-","Swati":"-+ ","Vishakha":"(+)","Anuradha":"(+)","Jyeshtha":"-+ ","Mula":"-","Purva Ashadha":"-","Uttara Ashadha":"-","Shravana":"(+)", "Dhanishta":"(+)","Shatabhisha":"-+ ","Purva Bhadrapada":"-","Uttara Bhadrapada":"-","Revati":"-"},"Revati":{"Ashwini":"-","Bharani":"-+ ","Krittika":"(+)","Rohini":"(+)","Mrigashira":"-+ ","Ardra":"-","Punarvasu":"-","Pushya":"-","Ashlesha":"-+ ","Magha":"(+)","Purva Phalguni":"(+)","Uttara Phalguni":"-+ ","Hasta":"-","Chitra":"-","Swati":"-","Vishakha":"-+ ","Anuradha":"(+)", "Jyeshtha":"(+)","Mula":"-+ ","Purva Ashadha":"-","Uttara Ashadha":"-","Shravana":"-+ ","Dhanishta":"(+)","Shatabhisha":"(+)","Purva Bhadrapada":"-+ ","Uttara Bhadrapada":"-","Revati":"-"}};
300
+
301
+ // --- EVENT LISTENERS ---
302
+ panchangaUpload.addEventListener('change', handleFileSelect); clientsUpload.addEventListener('change', handleFileSelect); clientSelector.addEventListener('change', updateCalendar); yearSelector.addEventListener('change', updateCalendar); monthSelector.addEventListener('change', updateCalendar);
303
+
304
+ // --- FUNÇÕES DE SETUP ---
305
+ function handleFileSelect(event) {
306
+ const file = event.target.files[0];
307
+ const reader = new FileReader();
308
+ reader.onload = (e) => {
309
+ try {
310
+ const data = JSON.parse(e.target.result);
311
+ if(event.target.id === 'panchanga-upload') { panchangaData = data; clientsUpload.disabled = false; populateSelectors(); }
312
+ else { clientsData = data; populateClientSelector(); }
313
+ updateCalendar();
314
+ } catch (err) { alert("Erro ao processar o arquivo JSON: " + err.message); }
315
+ };
316
+ reader.readAsText(file);
317
+ }
318
+
319
+ function populateSelectors() {
320
+ const years = [...new Set(panchangaData.map(d => parseDate(d.Data)?.getUTCFullYear()).filter(y => y))].sort();
321
+ yearSelector.innerHTML = years.map(y => `<option value="${y}">${y}</option>`).join('');
322
+ const months = ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"];
323
+ monthSelector.innerHTML = months.map((m, i) => `<option value="${i}">${m}</option>`).join('');
324
+ const today = new Date();
325
+ yearSelector.value = today.getFullYear(); monthSelector.value = today.getMonth();
326
+ yearSelector.disabled = false; monthSelector.disabled = false;
327
+ }
328
+
329
+ function populateClientSelector() {
330
+ clientSelector.innerHTML = '<option value="">Selecione...</option>';
331
+ clientsData.filter(client => client.Nome).forEach(client => { clientSelector.innerHTML += `<option value="${client.ID}">${client.Nome}</option>`; });
332
+ clientSelector.disabled = false;
333
+ }
334
+
335
+ function updateCalendar() {
336
+ const clientId = parseInt(clientSelector.value);
337
+ selectedClient = clientsData.find(c => c.ID === clientId) || null;
338
+ renderCalendar();
339
+ }
340
+
341
+ // --- FUNÇÕES DE LÓGICA ---
342
+ function parseDate(dateStr) {
343
+ const parts = dateStr.split('/');
344
+ if (parts.length !== 3) return null;
345
+ const day = parseInt(parts[0], 10), month = parseInt(parts[1], 10) - 1; let year = parseInt(parts[2], 10);
346
+ if (year < 100) year += 2000;
347
+ return new Date(Date.UTC(year, month, day));
348
+ }
349
+
350
+ function getPlanetClass(planetName) {
351
+ if (['Júpiter', 'Vênus'].includes(planetName)) return 'good';
352
+ if (['Sol', 'Marte', 'Saturno', 'Rahu', 'Ketu'].includes(planetName)) return 'bad';
353
+ return 'neutral';
354
+ }
355
+
356
+ function calculateLordships(ascendantSign) {
357
+ if (!ascendantSign || !ZODIAC_ORDER.includes(ascendantSign)) return {};
358
+ const ascendantIndex = ZODIAC_ORDER.indexOf(ascendantSign);
359
+ const planetLordships = {};
360
+ for (let i = 0; i < 12; i++) {
361
+ const houseNumber = i + 1, houseSign = ZODIAC_ORDER[(ascendantIndex + i) % 12], rulers = SIGN_RULERS[houseSign] || [];
362
+ rulers.forEach(ruler => {
363
+ if (!planetLordships[ruler]) planetLordships[ruler] = [];
364
+ planetLordships[ruler].push(houseNumber === 1 ? 'LL' : `${houseNumber}L`);
365
+ });
366
+ }
367
+ return planetLordships;
368
+ }
369
+
370
+ // --- RENDERIZAÇÃO ---
371
+ function renderCalendar() {
372
+ if (panchangaData.length === 0) return;
373
+
374
+ const year = parseInt(yearSelector.value), month = parseInt(monthSelector.value);
375
+ if(isNaN(year) || isNaN(month)) return;
376
+
377
+ const clientLordships = selectedClient ? calculateLordships(selectedClient.Ascendente) : {};
378
+
379
+ calendarContainer.innerHTML = '';
380
+ const weekDays = ["Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado"];
381
+ weekDays.forEach(day => { calendarContainer.innerHTML += `<div class="calendar-header">${day}</div>`; });
382
+
383
+ const firstDayOfMonth = new Date(Date.UTC(year, month, 1));
384
+ const startingDay = firstDayOfMonth.getUTCDay();
385
+ const daysInMonth = new Date(year, month + 1, 0).getUTCDate();
386
+ const totalGridCells = Math.ceil((startingDay + daysInMonth) / 7) * 7;
387
+
388
+ const gridStartDate = new Date(firstDayOfMonth);
389
+ gridStartDate.setUTCDate(gridStartDate.getUTCDate() - startingDay);
390
+
391
+ // --- PASSO 2: Lógica da Fase da Lua Corrigida ---
392
+ let isWaxing = true; // Assumimos que começa crescente
393
+ // Encontrar a fase inicial do mês
394
+ const firstDayData = panchangaData.find(d => {
395
+ const dDate = parseDate(d.Data);
396
+ return dDate && dDate.getUTCFullYear() === year && dDate.getUTCMonth() === month && dDate.getUTCDate() === 1;
397
+ });
398
+ if (firstDayData && firstDayData.Tithi.toLowerCase().includes('krishna')) {
399
+ isWaxing = false; // Se o primeiro dia já é minguante
400
+ }
401
+
402
+ for (let i = 0; i < totalGridCells; i++) {
403
+ const currentDate = new Date(gridStartDate);
404
+ currentDate.setUTCDate(currentDate.getUTCDate() + i);
405
+
406
+ const dayCell = document.createElement('div');
407
+ dayCell.classList.add('calendar-day');
408
+
409
+ const localToday = new Date();
410
+ const todayUTC = new Date(Date.UTC(localToday.getFullYear(), localToday.getMonth(), localToday.getDate()));
411
+
412
+ if (currentDate.getUTCMonth() !== month) dayCell.classList.add('other-month');
413
+ if (currentDate.getTime() === todayUTC.getTime()) dayCell.classList.add('current-day');
414
+
415
+ const day = currentDate.getUTCDate();
416
+ const dateString = `${String(day).padStart(2, '0')}/${String(currentDate.getUTCMonth() + 1).padStart(2, '0')}/${String(currentDate.getUTCFullYear()).slice(-2)}`;
417
+ const dayData = panchangaData.find(d => d.Data === dateString);
418
+
419
+ let headerHtml = '', contentHtml = '';
420
+
421
+ if (dayData) {
422
+ const dailyNakshatra = dayData.Nakshatra || '...';
423
+ const tithi = dayData.Tithi || '...';
424
+ const tithiLower = tithi.toLowerCase();
425
+
426
+ // Atualiza a fase da lua para os dias seguintes
427
+ if (tithiLower.includes('amavasya')) isWaxing = true;
428
+ if (tithiLower.includes('purnima')) isWaxing = false;
429
+ const moonPhaseIcon = isWaxing ? '🌕' : '🌑';
430
+
431
+ let vedhaClass = '';
432
+ let taraQualityClass = '';
433
+ let taraBalaHtml = '';
434
+ let moonHouseHtml = '';
435
+
436
+ if (selectedClient && selectedClient.Lua && dailyNakshatra) {
437
+ const vedhaStatus = (VEDHA_MATRIX[selectedClient.Lua]?.[dailyNakshatra] || '').trim();
438
+ if (vedhaStatus === '(+)') vedhaClass = 'vedha-plus';
439
+ else if (vedhaStatus === '-+') vedhaClass = 'vedha-special';
440
+ else if (vedhaStatus === '-') vedhaClass = 'vedha-minus';
441
+
442
+ const clientMoonIndex = NAKSHATRA_ORDER.indexOf(selectedClient.Lua);
443
+ const dailyNakshatraIndex = NAKSHATRA_ORDER.indexOf(dailyNakshatra);
444
+ if (clientMoonIndex > -1 && dailyNakshatraIndex > -1) {
445
+ const distance = (dailyNakshatraIndex - clientMoonIndex + 27) % 27;
446
+ const tara = TARA_BALA[distance % 9];
447
+ taraQualityClass = tara.quality === 'Bom' ? 'good' : 'bad';
448
+ taraBalaHtml = `<div class="tara-bala ${taraQualityClass}">(${distance + 1}) ${tara.name}</div>`;
449
+ }
450
+ }
451
+
452
+ if (selectedClient && selectedClient.Ascendente && dailyNakshatra && WHOLE_SIGN_NAKSHATRAS.includes(dailyNakshatra)) {
453
+ const ascendantSign = selectedClient.Ascendente;
454
+ const moonSign = NAKSHATRA_TO_SIGN[dailyNakshatra];
455
+ const ascendantIndex = ZODIAC_ORDER.indexOf(ascendantSign);
456
+ const moonSignIndex = ZODIAC_ORDER.indexOf(moonSign);
457
+
458
+ if (ascendantIndex > -1 && moonSignIndex > -1) {
459
+ const houseNumber = (moonSignIndex - ascendantIndex + 12) % 12 + 1;
460
+ let houseClass = [6, 8, 12].includes(houseNumber) ? 'bad-house' : '';
461
+ moonHouseHtml = `<div class="moon-house-container"><div class="header-divider"></div><div class="moon-house ${houseClass}">Lua na Casa ${houseNumber} (${moonSign})</div></div>`;
462
+ }
463
+ }
464
+
465
+ if (vedhaClass === 'vedha-plus' && taraQualityClass === 'good') {
466
+ dayCell.classList.add('card-good');
467
+ } else if (vedhaClass === 'vedha-minus' && taraQualityClass === 'bad') {
468
+ dayCell.classList.add('card-bad');
469
+ }
470
+
471
+ headerHtml = `
472
+ <div class="card-header">
473
+ <div class="header-col-left">
474
+ <div class="day-number">${day}</div>
475
+ </div>
476
+ <div class="header-col-right">
477
+ <div class="day-nakshatra ${vedhaClass}">${dailyNakshatra}</div>
478
+ ${taraBalaHtml}
479
+ <div class="day-tithi">${moonPhaseIcon} ${tithi}</div>
480
+ ${moonHouseHtml}
481
+ </div>
482
+ </div>`;
483
+
484
+ let clientAnalysisHtml = '', dailyInfoHtml = '', warningSectionHtml = '';
485
+
486
+ if (selectedClient && dailyNakshatra) {
487
+ let analysisItems = [];
488
+ const natalActivations = [], dailyActivations = [];
489
+
490
+ const allNatalPoints = [...ALL_PLANETS, ...GOOD_POINTS, ...BAD_POINTS];
491
+
492
+ allNatalPoints.forEach(p => {
493
+ if(selectedClient[p] === dailyNakshatra) {
494
+ const lordships = clientLordships[p] ? ` (${clientLordships[p].join(', ')})` : '';
495
+ const pointClass = ALL_PLANETS.includes(p) ? getPlanetClass(p) : (GOOD_POINTS.includes(p) ? 'good' : 'bad');
496
+ natalActivations.push(`<span class="item-tag ${pointClass}">${p}${lordships}</span>`);
497
+ }
498
+ });
499
+
500
+ ALL_PLANETS.forEach(p => {
501
+ if(dayData[p] === dailyNakshatra) {
502
+ const lordships = clientLordships[p] ? ` (${clientLordships[p].join(', ')})` : '';
503
+ dailyActivations.push(`<span class="item-tag ${getPlanetClass(p)}">${p}${lordships}</span>`);
504
+ }
505
+ });
506
+
507
+ if(natalActivations.length > 0) analysisItems.push(`<div><b>Natais:</b> <div class="tags-container">${natalActivations.join('')}</div></div>`);
508
+ if(dailyActivations.length > 0) analysisItems.push(`<div><b>Diários:</b> <div class="tags-container">${dailyActivations.join('')}</div></div>`);
509
+ if(analysisItems.length > 0) clientAnalysisHtml = `<div class="content-section"><div class="title">Ativações em ${dailyNakshatra}</div>${analysisItems.join('')}</div>`;
510
+
511
+ const burnedSigns = DAGDHA_RASHI_MAP[tithiLower];
512
+ if(burnedSigns && selectedClient.Ascendente) {
513
+ const ascIndex = ZODIAC_ORDER.indexOf(selectedClient.Ascendente);
514
+ const burnedHouses = burnedSigns.map(sign => (ZODIAC_ORDER.indexOf(sign) - ascIndex + 12) % 12 + 1).sort((a,b) => a-b);
515
+ const houseText = burnedHouses.map(h => `${h}ª`).join(' e ');
516
+ warningSectionHtml = `<div class="dagdha-warning">Cuidado com a ${houseText} casa</div>`;
517
+ }
518
+ }
519
+
520
+ dailyInfoHtml = `<div class="content-section"><div class="title">Panchanga</div><div class="panchanga-details"><div><b>Yoga:</b> ${dayData.Yoga || ''}</div><div><b>Karana:</b> ${dayData.Karana || ''}</div></div></div>`;
521
+ contentHtml = dailyInfoHtml + clientAnalysisHtml + warningSectionHtml;
522
+ } else {
523
+ headerHtml = `<div class="card-header"><div class="header-col-left"><div class="day-number">${day}</div></div></div>`;
524
+ }
525
+
526
+ dayCell.innerHTML = `${headerHtml}<div class="card-content">${contentHtml}</div>`;
527
+ calendarContainer.appendChild(dayCell);
528
+ }
529
+ }
530
+ });
531
+ </script>
532
+ <p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=ppcabral/teste" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
533
+ </html>