From 6203df95a0a640faaca7c1204857e4d5df7355e2 Mon Sep 17 00:00:00 2001 From: Tatiana Villa Date: Sun, 1 Feb 2026 00:51:43 +0000 Subject: [PATCH] Configurando app del tiempo dentro de aplcicaciones de vanguardia --- eltiempo/bullet-journal.html | 54 ++++ eltiempo/css/bullet-journal.css | 83 +++++ eltiempo/css/estilos.css | 250 +++++++++++++++ eltiempo/data/cumples.json | 12 + eltiempo/data/santos.json | 368 ++++++++++++++++++++++ eltiempo/estadisticas.html | 57 ++++ eltiempo/estilos.css | 250 +++++++++++++++ eltiempo/img/amanecerflecha.png | Bin 0 -> 11037 bytes eltiempo/img/humedad.png | Bin 0 -> 21476 bytes eltiempo/img/lluvia.png | Bin 0 -> 21630 bytes eltiempo/img/sunrise.png | Bin 0 -> 11262 bytes eltiempo/img/sunriseflechadebajo.png | Bin 0 -> 5764 bytes eltiempo/img/termometro.png | Bin 0 -> 16029 bytes eltiempo/img/termometro.svg | 22 ++ eltiempo/img/viento.png | Bin 0 -> 16035 bytes eltiempo/index.html | 129 ++++++++ eltiempo/js/bullet-journal.js | 113 +++++++ eltiempo/js/codigo.js | 318 +++++++++++++++++++ eltiempo/js/estadisticas.js | 133 ++++++++ eltiempo/js/estadisticas20260131.js | 148 +++++++++ eltiempo/servidor/api-weather-reverse.php | 87 +++++ info.php | 3 + 22 files changed, 2027 insertions(+) create mode 100644 eltiempo/bullet-journal.html create mode 100644 eltiempo/css/bullet-journal.css create mode 100644 eltiempo/css/estilos.css create mode 100644 eltiempo/data/cumples.json create mode 100644 eltiempo/data/santos.json create mode 100644 eltiempo/estadisticas.html create mode 100644 eltiempo/estilos.css create mode 100644 eltiempo/img/amanecerflecha.png create mode 100644 eltiempo/img/humedad.png create mode 100644 eltiempo/img/lluvia.png create mode 100644 eltiempo/img/sunrise.png create mode 100644 eltiempo/img/sunriseflechadebajo.png create mode 100644 eltiempo/img/termometro.png create mode 100644 eltiempo/img/termometro.svg create mode 100644 eltiempo/img/viento.png create mode 100644 eltiempo/index.html create mode 100644 eltiempo/js/bullet-journal.js create mode 100644 eltiempo/js/codigo.js create mode 100644 eltiempo/js/estadisticas.js create mode 100644 eltiempo/js/estadisticas20260131.js create mode 100755 eltiempo/servidor/api-weather-reverse.php create mode 100644 info.php diff --git a/eltiempo/bullet-journal.html b/eltiempo/bullet-journal.html new file mode 100644 index 0000000..069f5b5 --- /dev/null +++ b/eltiempo/bullet-journal.html @@ -0,0 +1,54 @@ + + + + + + Agenda Espiritual AGE + + + + + +
+
+

Bullet Jounal

+
+ +
+
+ + + +
+ +
+ +
+

Cargando santoral...

+

+ +
+ + +
+ +
+ + +
+ + + +
+ + +
+ +
+ + + + \ No newline at end of file diff --git a/eltiempo/css/bullet-journal.css b/eltiempo/css/bullet-journal.css new file mode 100644 index 0000000..40e2f08 --- /dev/null +++ b/eltiempo/css/bullet-journal.css @@ -0,0 +1,83 @@ +:root { + --color-primario: #F5F5F5; + --color-hover: #1E3A5F; + --color-fondo: #0D0D0D; + --color-texto: #E5E5E5; + --color-acento: #5FAEDB; + --color-borde: rgba(95, 174, 219, 0.3); + --color-tarjeta: rgba(20,20,20,0.85); +} + +body { + margin: 0; + font-family: 'Nunito', sans-serif; + background: radial-gradient(circle at top, #111827, #0D0D0D); + color: var(--color-texto); + padding: 15px; +} + +/* INTERFAZ PANTALLA */ +.no-print { max-width: 600px; margin: auto; } + +.toolbar { text-align: center; margin-bottom: 20px; } +.day-nav { display: flex; justify-content: center; align-items: center; gap: 20px; margin-bottom: 15px; } + +button { + padding: 10px 15px; + border-radius: 12px; + border: 1px solid var(--color-borde); + background: var(--color-tarjeta); + color: white; + cursor: pointer; + transition: 0.3s; +} + +button:hover { background: var(--color-hover); } + +.card { + background: var(--color-tarjeta); + padding: 20px; + border-radius: 15px; + border: 1px solid var(--color-borde); + backdrop-filter: blur(10px); +} + +textarea { + width: 100%; height: 150px; margin-top: 10px; + background: #111; color: white; border: 1px solid #333; border-radius: 8px; padding: 10px; +} + +/* LÓGICA DE IMPRESIÓN */ +.only-print { display: none; } + +@media print { + .no-print { display: none !important; } + .only-print { display: block !important; } + + body { background: white; color: black; } + + .page-a5 { + width: 148mm; height: 210mm; + padding: 15mm; + page-break-after: always; + border-bottom: 1px dashed #ccc; + position: relative; + color: black; + } + + .dots-bg { + background-image: radial-gradient(#ddd 1px, transparent 1px); + background-size: 5mm 5mm; + height: 120mm; + border: 1px solid #eee; + } + + .planner-a4 { + width: 210mm; height: 297mm; + display: grid; + grid-template-columns: repeat(7, 1fr); + gap: 2px; + background: black; + } + .planner-day { background: white; height: 40mm; padding: 5px; font-size: 10px; } +} diff --git a/eltiempo/css/estilos.css b/eltiempo/css/estilos.css new file mode 100644 index 0000000..271981c --- /dev/null +++ b/eltiempo/css/estilos.css @@ -0,0 +1,250 @@ +@import url('https://fonts.googleapis.com/css2?family=EB+Garamond:ital,wght@0,400;0,600;1,400&family=Nunito:wght@400;600&display=swap'); + +:root { + /* Paleta refinada */ + --color-primario: #F5F5F5; /* Azul noche espiritual */ + --color-hover: #1E3A5F; /* Azul profundo para hover */ + --color-secundario: #A1A1A1; /* Azul muy suave */ + --color-fondo: #0D0D0D; /* Fondo principal */ + --color-texto: #E5E5E5; /* Gris claro para texto */ + --blanco-puro: #FFFFFF; + --sombra: rgba(47, 58, 86, 0.15); + --color-tarjeta: #1A1A1A; + --color-acento: #5FAEDB; + --color-borde: rgba(95, 174, 219, 0.3); +} + +body { + margin: 0; + font-family: 'Nunito', sans-serif; + background: linear-gradient(180deg, #0D0D0D 0%, #111827 100%); + color: var(--color-texto); + line-height: 1.7; + -webkit-font-smoothing: antialiased; +} + +header { + padding: 1.5rem 0; + text-align: center; +} + +header h1 { + font-family: 'EB Garamond', serif; + letter-spacing: 1px; + color: var(--color-acento); + margin: 0; +} + +nav ul { + list-style: none; + padding: 0; + margin: 0 auto 2rem; + display: flex; + justify-content: center; + flex-wrap: wrap; + gap: 10px; +} + +nav a { + color: var(--color-primario); + border-radius: 20px; + transition: all 0.3s ease; +} + +nav a:hover { + background-color: var(--color-hover); + transform: translateY(-2px); +} + +.container { + width: 92%; + max-width: 1200px; + margin: auto; + padding: 2rem 0; + display: grid; + gap: 2rem; + grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); +} + +.tarjeta { + background: rgba(20, 20, 20, 0.75); + backdrop-filter: blur(4px); + border-radius: 14px; + border: 1px solid var(--color-borde); + box-shadow: 0 10px 20px rgba(0,0,0,.35); + transition: all 0.3s ease; + overflow: hidden; + cursor: pointer; +} + +.tarjeta:hover { + transform: translateY(-6px); + box-shadow: 0 16px 30px rgba(0,0,0,.5); +} + +.tarjeta h2 { + margin: 0; + padding: 12px; + font-family: 'EB Garamond', serif; + font-size: 1.3rem; + text-align: center; + color: var(--color-acento); + background: rgba(13, 13, 13, 0.8); + border-bottom: 1px solid rgba(255,255,255,.1); +} + +/* --- Párrafos generales de todas las tarjetas --- */ +.tarjeta p { + text-align: center; + color: var(--color-texto); + font-size: 1rem; + margin: 2px 0; /* menos espacio entre líneas */ + padding: 0; /* eliminar padding extra */ +} + +/* --- Ajuste para dispositivos pequeños --- */ +@media (max-width: 600px) { + header h1 { + font-size: 1.6rem; + } + + nav ul { + flex-direction: column; + align-items: center; + } + + .container { + gap: 1.2rem; + } +} + +footer { + text-align: center; + padding: 1.5rem 0; + color: var(--color-secundario); + margin-top: 3rem; + background: transparent; +} + +/* --- Tarjeta Amanecer/Anochecer: más compacta --- */ + + +#moon-mini-calendar { + display: grid; + grid-template-columns: repeat(7, 1fr); + gap: 6px; + margin-top: 10px; + text-align: center; +} + +.moon-day { + padding: 4px; + border-radius: 6px; + background: var(--color-fondo); + font-size: 0.9rem; +} + +.moon-today { + background: var(--color-hover); + font-weight: bold; +} + +.moon-icon { + font-size: 1.4rem; + display: block; +} + +#moon-weekdays { + display: grid; + grid-template-columns: repeat(7, 1fr); + margin-top: 10px; + margin-bottom: 6px; + text-align: center; + font-weight: 600; + color: var(--color-acento); + font-size: 0.85rem; +} + +#moon-weekdays span { + padding: 4px 0; + border-bottom: 1px solid var(--color-borde); +} + + +/* ---------- BULLET JOURNAL SUMMARY ---------- */ + +#bullet-summary { + cursor: default; +} + +#bullet-summary .bj-resumen { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 10px; + padding: 14px; +} + +#bullet-summary .bj-item { + background: rgba(13,13,13,0.8); + border: 1px solid var(--color-borde); + border-radius: 10px; + padding: 10px; + text-align: center; + box-shadow: inset 0 0 12px rgba(0,0,0,.4); +} + +#bullet-summary .bj-item span { + display: block; + font-size: 0.75rem; + color: var(--color-secundario); + letter-spacing: .5px; +} + +#bullet-summary .bj-item strong { + font-size: 1.4rem; + font-family: 'EB Garamond', serif; + color: var(--color-acento); +} + +/* Botón */ + +#bullet-summary .btn , #weather-card .btn { + display: block; + width: 75%; + margin: 12px auto 14px; + padding: 10px; + background: linear-gradient(135deg, #1E3A5F, #111827); + color: var(--blanco-puro); + border-radius: 12px; + text-align: center; + text-decoration: none; + font-size: 0.9rem; + border: 1px solid var(--color-borde); + transition: all .3s ease; +} + +#bullet-summary .btn:hover, #weather-card .btn:hover { + background: linear-gradient(135deg, #2b4f80, #1E293B); + transform: translateY(-2px); +} + + +/* ICONOS */ + +.termometro { + width: 48px; +} + +.termometro.neutro { + fill: var(--color-primario); +} + +.termometro.frio { + fill: var(--color-acento); +} + +.termometro.calor { + fill: #f44336; +} + +.termometro.templado { fill: #4caf50; } \ No newline at end of file diff --git a/eltiempo/data/cumples.json b/eltiempo/data/cumples.json new file mode 100644 index 0000000..4e80ca7 --- /dev/null +++ b/eltiempo/data/cumples.json @@ -0,0 +1,12 @@ +[ + { "fecha": "01-27", "persona": "Prueba Prueba" }, + { "fecha": "02-14", "persona": "Andrea Postlbauer" }, + { "fecha": "04-08", "persona": "Tatiana Villa" }, + { "fecha": "10-14", "persona": "Jose Luis Villa" }, + { "fecha": "10-17", "persona": "Patricia Villa" }, + { "fecha": "10-19", "persona": "Mercedes Ema" }, + { "fecha": "10-24", "persona": "Arantxa Villa" }, + { "fecha": "11-24", "persona": "Nicolas Postlbauer" }, + { "fecha": "11-27", "persona": "Leo Postlbauer" } +] + \ No newline at end of file diff --git a/eltiempo/data/santos.json b/eltiempo/data/santos.json new file mode 100644 index 0000000..5f8af82 --- /dev/null +++ b/eltiempo/data/santos.json @@ -0,0 +1,368 @@ +[ + { "fecha": "2026-01-01", "santo": "Santa María, Madre de Dios", "color": "rosa" }, + { "fecha": "2026-01-02", "santo": "San Basilio Magno y San Gregorio Nacianceno" }, + { "fecha": "2026-01-03", "santo": "Santísimo Nombre de Jesús" }, + { "fecha": "2026-01-04", "santo": "Santa Ángela de Foligno" }, + { "fecha": "2026-01-05", "santo": "San Genovevo Torres"}, + { "fecha": "2026-01-06", "santo": "Epifanía del Señor", "color": "rojo" }, + { "fecha": "2026-01-07", "santo": "San Raimundo de Peñafort" }, + { "fecha": "2026-01-08", "santo": "San Severino" }, + { "fecha": "2026-01-09", "santo": "San Eulogio de Córdoba" }, + { "fecha": "2026-01-10", "santo": "San Gonzalo" }, + { "fecha": "2026-01-11", "santo": "Bautismo del Señor", "color": "blanco" }, + { "fecha": "2026-01-12", "santo": "Santa Tatiana" }, + { "fecha": "2026-01-13", "santo": "San Hilario de Poitiers" }, + { "fecha": "2026-01-14", "santo": "San Félix de Nola" }, + { "fecha": "2026-01-15", "santo": "San Mauro" }, + { "fecha": "2026-01-16", "santo": "San Marcelo I, Papa" }, + { "fecha": "2026-01-17", "santo": "San Antonio Abad", "descripcion":"Patron de los animales" }, + { "fecha": "2026-01-18", "santo": "Santa Prisca" }, + { "fecha": "2026-01-19", "santo": "San Mario", "descripcion":"y familia" }, + { "fecha": "2026-01-20", "santo": "San Sebastián", "descripcion":"mártir" }, + { "fecha": "2026-01-21", "santo": "Santa Inés", "descripcion":"virgen y mártir" }, + { "fecha": "2026-01-22", "santo": "San Vicente", "descripcion":"mártir" }, + { "fecha": "2026-01-23", "santo": "San Ildefonso de Toledo", "descripcion":"obispo" }, + { "fecha": "2026-01-24", "santo": "San Francisco de Sales", "descripcion":"Doctor de la Iglesia" }, + { "fecha": "2026-01-25", "santo": "Conversión de San Pablo", "descripcion":"apóstol" }, + { "fecha": "2026-01-26", "santo": "San Timoteo y San Tito", "descripcion":"obispos" }, + { "fecha": "2026-01-27", "santo": "Santa Ángela Merici" }, + { "fecha": "2026-01-28", "santo": "Santo Tomás de Aquino", "descripcion":"Doctor de la Iglesia. Patrón de los estudiantes, teólogo, filósofo" }, + { "fecha": "2026-01-29", "santo": "San Valero de Zaragoza" }, + { "fecha": "2026-01-30", "santo": "Santa Martina" }, + { "fecha": "2026-01-31", "santo": "San Juan Bosco", "descripcion":"Fundador de los Salesianos" }, + { "fecha": "2026-02-01", "santo": "Santa Brígida", "descripcion":"Patrona de Europa" }, + { "fecha": "2026-02-02", "santo": "Presentación del Señor (Candelaria)", "descripcion":"La Virgen María y San José presentan al Niño Jesús en el Templo" }, + { "fecha": "2026-02-03", "santo": "San Blas", "descripcion":"Protector de las enfermedades de garganta" }, + { "fecha": "2026-02-04", "santo": "San Gilberto", "descripcion":"obispo" }, + { "fecha": "2026-02-05", "santo": "Santa Águeda", "descripcion":"Patrona de las mujeres" }, + { "fecha": "2026-02-06", "santo": "San Pablo Miki", "descripcion":"y compañeros mártires" }, + { "fecha": "2026-02-07", "santo": "San Ricardo", "descripcion":"mártir" }, + { "fecha": "2026-02-08", "santo": "San Jerónimo Emiliani", "descripcion":"Patrón de los huérfanos" }, + { "fecha": "2026-02-09", "santo": "Santa Apolonia", "descripcion":"mártir" }, + { "fecha": "2026-02-10", "santo": "Santa Escolástica", "descripcion":"hermana de San Benito" }, + { "fecha": "2026-02-11", "santo": "Nuestra Señora de Lourdes", "descripcion":"La Virgen María se apareció en Lourdes a Santa Bernardita" }, + { "fecha": "2026-02-12", "santo": "Santa Eulalia de Barcelona", "descripcion":"virgen y mártir" }, + { "fecha": "2026-02-13", "santo": "San Benigno", "descripcion":"mártir" }, + { "fecha": "2026-02-14", "santo": "San Valentín","descripcion":"Patrón de los enamorados" }, + { "fecha": "2026-02-15", "santo": "San Claudio de la Colombière","descripcion":"confesor" }, + { "fecha": "2026-02-16", "santo": "San Onésimo", "descripcion":"esclavo convertido por San Pablo" }, + { "fecha": "2026-02-17", "santo": "Los Siete Santos Fundadores","descripcion":"de la Orden de los Servitas" }, + { "fecha": "2026-02-18", "santo": "Miércoles de Ceniza","descripcion":"Inicio de la Cuaresma" }, + { "fecha": "2026-02-19", "santo": "San Álvaro de Córdoba", "descripcion":"confesor" }, + { "fecha": "2026-02-20", "santo": "San Eleuterio" }, + { "fecha": "2026-02-21", "santo": "San Pedro Damián", "descripcion":"obispo y doctor de la Iglesia" }, + { "fecha": "2026-02-22", "santo": "Cátedra de San Pedro", "descripcion":"Fiesta de San Pedro, apóstol" }, + { "fecha": "2026-02-23", "santo": "San Policarpo", "descripcion":"obispo y mártir" }, + { "fecha": "2026-02-24", "santo": "San Modesto", "descripcion":"mártir" }, + { "fecha": "2026-02-25", "santo": "San Cesáreo de Nazianzo", "descripcion":"obispo" }, + { "fecha": "2026-02-26", "santo": "San Alejandro de Alejandría", "descripcion":"mártir" }, + { "fecha": "2026-02-27", "santo": "San Leandro de Sevilla", "descripcion":"obispo" }, + { "fecha": "2026-02-28", "santo": "San Román", "descripcion":"mártir" }, + { "fecha": "2026-02-29", "santo": "San Osvaldo" }, + { "fecha": "2026-03-01", "santo": "San David de Gales" }, + { "fecha": "2026-03-02", "santo": "San Chad de Mercia" }, + { "fecha": "2026-03-03", "santo": "San Casimiro", "descripcion":"Patrón de Polonia" }, + { "fecha": "2026-03-04", "santo": "San Lucio I, Papa" }, + { "fecha": "2026-03-05", "santo": "San Adrián de Nicomedia" }, + { "fecha": "2026-03-06", "santo": "San Coleta de Corbie" }, + { "fecha": "2026-03-07", "santo": "San Perpetuo y San Feliciano" }, + { "fecha": "2026-03-08", "santo": "San Juan de Dios", "descripcion":"Patrón de los hospitales" }, + { "fecha": "2026-03-09", "santo": "San Francescó de Borgia" }, + { "fecha": "2026-03-10", "santo": "San Macario de Alejandría" }, + { "fecha": "2026-03-11", "santo": "San Eulogio de Córdoba" }, + { "fecha": "2026-03-12", "santo": "San Gregorio Nacianceno" }, + { "fecha": "2026-03-13", "santo": "Santa Luisa de Marillac" }, + { "fecha": "2026-03-14", "santo": "San Matías", "descripcion":"apóstol" }, + { "fecha": "2026-03-15", "santo": "San Longino" }, + { "fecha": "2026-03-16", "santo": "Santa Juana de Chantal" }, + { "fecha": "2026-03-17", "santo": "San Patricio", "descripcion":"Patrón de Irlanda" }, + { "fecha": "2026-03-18", "santo": "San Cirilo de Jerusalén" }, + { "fecha": "2026-03-19", "santo": "San José", "descripcion":"Esposo de la Virgen María" }, + { "fecha": "2026-03-20", "santo": "San Cándido", "descripcion":"mártir" }, + { "fecha": "2026-03-21", "santo": "Santa Benedicta de la Cruz" }, + { "fecha": "2026-03-22", "santo": "San León I, Papa" }, + { "fecha": "2026-03-23", "santo": "San Turibio de Mogrovejo" }, + { "fecha": "2026-03-24", "santo": "San Gabriel de la Dolorosa" }, + { "fecha": "2026-03-25", "santo": "Anunciación del Señor", "descripcion":"El angel se apareció a la Virgen María"}, + { "fecha": "2026-03-26", "santo": "San Ezequiel Moreno" }, + { "fecha": "2026-03-27", "santo": "San Ruperto" }, + { "fecha": "2026-03-28", "santo": "San Guntrán" }, + { "fecha": "2026-03-29", "santo": "San Bertoldo" }, + { "fecha": "2026-03-30", "santo": "San Amando de Maastricht" }, + { "fecha": "2026-03-31", "santo": "San Benedicto José Labre" }, + { "fecha": "2026-04-01", "santo": "San Hugo de Grenoble" }, + { "fecha": "2026-04-02", "santo": "San Francisco de Paula" }, + { "fecha": "2026-04-03", "santo": "San Ricardo Pampuri" }, + { "fecha": "2026-04-04", "santo": "San Isidoro de Sevilla" }, + { "fecha": "2026-04-05", "santo": "San Vicente Ferrer" }, + { "fecha": "2026-04-06", "santo": "San Marcelino Champagnat" }, + { "fecha": "2026-04-07", "santo": "San Juan Bautista de la Salle" }, + { "fecha": "2026-04-08", "santo": "San Dionisio", "descripcion":"(obispo) y compañeros mártires" }, + { "fecha": "2026-04-09", "santo": "San Casimiro" }, + { "fecha": "2026-04-10", "santo": "San Ezequiel Moreno" }, + { "fecha": "2026-04-11", "santo": "San Esteban I", "descripcion":"Papa y mártir" }, + { "fecha": "2026-04-12", "santo": "San León IX", "descripcion":"Papa" }, + { "fecha": "2026-04-13", "santo": "San Hermenegildo" }, + { "fecha": "2026-04-14", "santo": "San Matías", "descripcion":"apóstol" }, + { "fecha": "2026-04-15", "santo": "San Dámaso I", "descripcion":"Papa" }, + { "fecha": "2026-04-16", "santo": "San Bernabé", "descripcion":"apóstol" }, + { "fecha": "2026-04-17", "santo": "San Aniceto", "descripcion":"Papa y mártir" }, + { "fecha": "2026-04-18", "santo": "San Apuleyo" }, + { "fecha": "2026-04-19", "santo": "San Expedito" }, + { "fecha": "2026-04-20", "santo": "San Jorge", "descripcion":"mártir" }, + { "fecha": "2026-04-21", "santo": "San Anselmo de Canterbury" }, + { "fecha": "2026-04-22", "santo": "San Soter y San Calixto", "descripcion":"Papas y mártires" }, + { "fecha": "2026-04-23", "santo": "San Jorge", "descripcion":"mártir" }, + { "fecha": "2026-04-24", "santo": "San Fidel de Sigmaringa" }, + { "fecha": "2026-04-25", "santo": "San Marcos", "descripcion":"evangelista" }, + { "fecha": "2026-04-26", "santo": "San Pedro de Verona" }, + { "fecha": "2026-04-27", "santo": "San Zita" }, + { "fecha": "2026-04-28", "santo": "San Luis María Grignion de Montfort" }, + { "fecha": "2026-04-29", "santo": "San Pedro Chanel" }, + { "fecha": "2026-04-30", "santo": "San Pío V", "descripcion":"Papa" }, + { "fecha": "2026-05-01", "santo": "San José Obrero"}, + { "fecha": "2026-05-02", "santo": "San Atanasio" }, + { "fecha": "2026-05-03", "santo": "San Felipe y Santiago", "descripcion":"apóstoles" }, + { "fecha": "2026-05-04", "santo": "San Florencio de Orange" }, + { "fecha": "2026-05-05", "santo": "San Hilario de Arlés" }, + { "fecha": "2026-05-06", "santo": "San Juan de Ávila" }, + { "fecha": "2026-05-07", "santo": "San Esteban de Hungría", "descripcion":"Rey de Hungría" }, + { "fecha": "2026-05-08", "santo": "San Miguel Garicoits" }, + { "fecha": "2026-05-09", "santo": "San Gregorio Magno" }, + { "fecha": "2026-05-10", "santo": "San Antonino de Florencia" }, + { "fecha": "2026-05-11", "santo": "San Ignacio de Loyola", "descripcion":"Fundador de la Compañía de Jesús" }, + { "fecha": "2026-05-12", "santo": "Santa Nereida" }, + { "fecha": "2026-05-13", "santo": "Nuestra Señora de Fátima", "descripcion":"La Virgen María se apareció en Fátima a tres pastorcitos" }, + { "fecha": "2026-05-14", "santo": "San Matías", "descripcion":"apóstol" }, + { "fecha": "2026-05-15", "santo": "San Isidro Labrador", "descripcion":"Patrón de los agricultores" }, + { "fecha": "2026-05-16", "santo": "San Juan Nepomuceno" }, + { "fecha": "2026-05-17", "santo": "San Pasquale Baylón" }, + { "fecha": "2026-05-18", "santo": "San Venancio" }, + { "fecha": "2026-05-19", "santo": "San Celestino V", "descripcion":"Papa" }, + { "fecha": "2026-05-20", "santo": "San Bernardino de Siena" }, + { "fecha": "2026-05-21", "santo": "Santa María Magdalena de Pazzi" }, + { "fecha": "2026-05-22", "santo": "Santa Rita de Casia" }, + { "fecha": "2026-05-23", "santo": "San Desiderio" }, + { "fecha": "2026-05-24", "santo": "Nuestra Señora, Auxilio de los Cristianos" }, + { "fecha": "2026-05-25", "santo": "San Gregorio VII", "descripcion":"Papa" }, + { "fecha": "2026-05-26", "santo": "San Felipe Neri" }, + { "fecha": "2026-05-27", "santo": "San Agustín de Cantorbery" }, + { "fecha": "2026-05-28", "santo": "San Germán de París" }, + { "fecha": "2026-05-29", "santo": "San Maximiliano Kolbe" }, + { "fecha": "2026-05-30", "santo": "Santa Juana de Arco" }, + { "fecha": "2026-05-31", "santo": "Visita de la Virgen María a su prima Santa Isabel" }, + { "fecha": "2026-06-01", "santo": "San Justino Mártir" }, + { "fecha": "2026-06-02", "santo": "San Marcelino de París" }, + { "fecha": "2026-06-03", "santo": "Santos Carlos Lwanga y compañeros mártires" }, + { "fecha": "2026-06-04", "santo": "San Francisco Caracciolo" }, + { "fecha": "2026-06-05", "santo": "San Bonifacio M. de Ligorio" }, + { "fecha": "2026-06-06", "santo": "San Norberto" }, + { "fecha": "2026-06-07", "santo": "San Roberto Belarmino" }, + { "fecha": "2026-06-08", "santo": "San Medardo" }, + { "fecha": "2026-06-09", "santo": "San Efrén" }, + { "fecha": "2026-06-10", "santo": "San Guillermo de Vercelli" }, + { "fecha": "2026-06-11", "santo": "San Bernabé, apóstol" }, + { "fecha": "2026-06-12", "santo": "Santos Juan y Pablo, mártires" }, + { "fecha": "2026-06-13", "santo": "San Antonio de Padua", "descripcion":"Doctor de la Iglesia" }, + { "fecha": "2026-06-14", "santo": "San Elías Profeta" }, + { "fecha": "2026-06-15", "santo": "San Vito", "descripcion":"y compañeros mártires" }, + { "fecha": "2026-06-16", "santo": "San Juan Francisco Régis" }, + { "fecha": "2026-06-17", "santo": "San Alberto Chmielowski" }, + { "fecha": "2026-06-18", "santo": "San Gregorio Barbarigo" }, + { "fecha": "2026-06-19", "santo": "Santo Romualdo", "descripcion":"y compañeros monjes" }, + { "fecha": "2026-06-20", "santo": "San Silverio", "descripcion":"Papa y mártir" }, + { "fecha": "2026-06-21", "santo": "San Luis Gonzaga" }, + { "fecha": "2026-06-22", "santo": "Santa Paulina" }, + { "fecha": "2026-06-23", "santo": "San José Cafasso" }, + { "fecha": "2026-06-24", "santo": "Natividad de San Juan Bautista", "descripcion":"Nacimiento de San Juan Bautista" }, + { "fecha": "2026-06-25", "santo": "Santos Cirilo y Metodio" }, + { "fecha": "2026-06-26", "santo": "San José María de Yermo y Parres" }, + { "fecha": "2026-06-27", "santo": "San Ladislao" }, + { "fecha": "2026-06-28", "santo": "San Ireneo", "descripcion":"obispo y mártir" }, + { "fecha": "2026-06-29", "santo": "San Pedro y San Pablo", "descripcion":"apóstoles" }, + { "fecha": "2026-06-30", "santo": "San Justo de Alcalá" }, + { "fecha": "2026-07-01", "santo": "Santa María Goretti" }, + { "fecha": "2026-07-02", "santo": "San Martín de Porres" }, + { "fecha": "2026-07-03", "santo": "Santos Tomás y Feliciano", "descripcion":"mártires" }, + { "fecha": "2026-07-04", "santo": "San Ulrico de Augsburgo" }, + { "fecha": "2026-07-05", "santo": "San Antonio María Zaccaria" }, + { "fecha": "2026-07-06", "santo": "San María Isabel de la Trinidad" }, + { "fecha": "2026-07-07", "santo": "San Cayetano" }, + { "fecha": "2026-07-08", "santo": "San Procopio" }, + { "fecha": "2026-07-09", "santo": "San Agustín Zhao Rong y compañeros mártires" }, + { "fecha": "2026-07-10", "santo": "San Benito", "descripcion":"Abad. Fundador de la Orden Benedictina. Medalla de San Benito ()" }, + { "fecha": "2026-07-11", "santo": "San Juan Bautista de la Salle" }, + { "fecha": "2026-07-12", "santo": "San Nabor y San Félix", "descripcion":"mártires" }, + { "fecha": "2026-07-13", "santo": "San Enrique" }, + { "fecha": "2026-07-14", "santo": "San Camilo de Lelis" }, + { "fecha": "2026-07-15", "santo": "Santa María Gorretti" }, + { "fecha": "2026-07-16", "santo": "Nuestra Señora del Carmen", "descripcion":"Patrona de los Carmelitas y los pescadores. Escapulario" }, + { "fecha": "2026-07-17", "santo": "San Alejo" }, + { "fecha": "2026-07-18", "santo": "San Camilo de Lelis" }, + { "fecha": "2026-07-19", "santo": "San Vicente de Paúl" }, + { "fecha": "2026-07-20", "santo": "San Apolinario" }, + { "fecha": "2026-07-21", "santo": "San Lorenzo de Brindis" }, + { "fecha": "2026-07-22", "santo": "Santa María Magdalena", "descripcion":"la apóstol de los apóstoles" }, + { "fecha": "2026-07-23", "santo": "Santos Apeles y Clemente", "descripcion":"mártires" }, + { "fecha": "2026-07-24", "santo": "San Cristóbal Magallanes y compañeros", "descripcion":"mártires" }, + { "fecha": "2026-07-25", "santo": "Santiago", "descripcion":"apóstol" }, + { "fecha": "2026-07-26", "santo": "San Joaquín y Santa Ana" }, + { "fecha": "2026-07-27", "santo": "Santa Marta" }, + { "fecha": "2026-07-28", "santo": "San Pedro Crisólogo" }, + { "fecha": "2026-07-29", "santo": "Santa María de los Ángeles" }, + { "fecha": "2026-07-30", "santo": "San Abdon y San Sennen", "descripcion":"mártires" }, + { "fecha": "2026-07-31", "santo": "San Ignacio de Loyola" }, + { "fecha": "2026-08-01", "santo": "San Alfonso María de Ligorio" }, + { "fecha": "2026-08-02", "santo": "Santa Eusebia" }, + { "fecha": "2026-08-03", "santo": "San Lamberto", "descripcion":"obispo y mártir" }, + { "fecha": "2026-08-04", "santo": "San Juan María Vianney" }, + { "fecha": "2026-08-05", "santo": "Dedicatoria de la Basílica de Letrán" }, + { "fecha": "2026-08-06", "santo": "Transfiguración del Señor"}, + { "fecha": "2026-08-07", "santo": "San Cajetano" }, + { "fecha": "2026-08-08", "santo": "San Dominico" }, + { "fecha": "2026-08-09", "santo": "San Román" }, + { "fecha": "2026-08-10", "santo": "San Lorenzo", "descripcion":"diácono y mártir" }, + { "fecha": "2026-08-11", "santo": "Santa Clara de Asís" }, + { "fecha": "2026-08-12", "santo": "San Maximiliano Kolbe" }, + { "fecha": "2026-08-13", "santo": "San Poncio", "descripcion":"mártir" }, + { "fecha": "2026-08-14", "santo": "San Maximiliano Kolbe" }, + { "fecha": "2026-08-15", "santo": "Asunción de la Virgen María" }, + { "fecha": "2026-08-16", "santo": "San Esteban de Hungría" }, + { "fecha": "2026-08-17", "santo": "San Jacinto" }, + { "fecha": "2026-08-18", "santo": "San Alberto Hurtado" }, + { "fecha": "2026-08-19", "santo": "San Juan Eudes" }, + { "fecha": "2026-08-20", "santo": "San Bernardo de Claraval" }, + { "fecha": "2026-08-21", "santo": "San Pío X, Papa" }, + { "fecha": "2026-08-22", "santo": "Santa María Reina" }, + { "fecha": "2026-08-23", "santo": "San Rosa de Lima" }, + { "fecha": "2026-08-24", "santo": "San Bartolomé", "descripcion":"apóstol" }, + { "fecha": "2026-08-25", "santo": "San Luis IX", "descripcion":"rey de Francia" }, + { "fecha": "2026-08-26", "santo": "San José de Calasanz" }, + { "fecha": "2026-08-27", "santo": "Santa Mónica" }, + { "fecha": "2026-08-28", "santo": "San Agustín", "descripcion":"obispo y doctor de la Iglesia. Fundador de los agustinos" }, + { "fecha": "2026-08-29", "santo": "Martirio de San Juan Bautista" }, + { "fecha": "2026-08-30", "santo": "Santa Rosa de Lima" }, + { "fecha": "2026-08-31", "santo": "San Ramón Nonato", "descripcion":"santo de las parturientas" }, + { "fecha": "2026-09-01", "santo": "San Egidio", "descripcion":"abate" }, + { "fecha": "2026-09-02", "santo": "Santa María de la Cabeza" }, + { "fecha": "2026-09-03", "santo": "San Gregorio Magno" }, + { "fecha": "2026-09-04", "santo": "San Rosendo" }, + { "fecha": "2026-09-05", "santo": "Santa Teresa de Calcuta" }, + { "fecha": "2026-09-06", "santo": "San Zacarías, profeta" }, + { "fecha": "2026-09-07", "santo": "San Cayetano" }, + { "fecha": "2026-09-08", "santo": "Natividad de la Virgen María", "color": "blanco" }, + { "fecha": "2026-09-09", "santo": "San Pedro Claver" }, + { "fecha": "2026-09-10", "santo": "San Nicolás de Tolentino" }, + { "fecha": "2026-09-11", "santo": "San Juan Gabriel Perboyre" }, + { "fecha": "2026-09-12", "santo": "Santísimo Nombre de María" }, + { "fecha": "2026-09-13", "santo": "San Juan Crisóstomo, obispo y doctor de la Iglesia" }, + { "fecha": "2026-09-14", "santo": "Exaltación de la Santa Cruz", "color": "rojo" }, + { "fecha": "2026-09-15", "santo": "Nuestra Señora de los Dolores" }, + { "fecha": "2026-09-16", "santo": "San Cornelio, Papa y San Cipriano, obispo, mártires" }, + { "fecha": "2026-09-17", "santo": "San Roberto Bellarmino" }, + { "fecha": "2026-09-18", "santo": "San José de Cupertino" }, + { "fecha": "2026-09-19", "santo": "San Januario, obispo y mártir" }, + { "fecha": "2026-09-20", "santo": "San Andrés Kim Taegon y compañeros mártires" }, + { "fecha": "2026-09-21", "santo": "San Mateo, apóstol y evangelista", "color": "rojo" }, + { "fecha": "2026-09-22", "santo": "San Maurilio" }, + { "fecha": "2026-09-23", "santo": "San Pío de Pietrelcina" }, + { "fecha": "2026-09-24", "santo": "Nuestra Señora de la Merced" }, + { "fecha": "2026-09-25", "santo": "San Cleofás" }, + { "fecha": "2026-09-26", "santo": "San Cosme y San Damián, mártires" }, + { "fecha": "2026-09-27", "santo": "San Vicente de Paúl" }, + { "fecha": "2026-09-28", "santo": "San Wenceslao" }, + { "fecha": "2026-09-29", "santo": "Santos Arcángeles Miguel, Gabriel y Rafael", "color": "blanco" }, + { "fecha": "2026-09-30", "santo": "San Jerónimo, sacerdote y doctor de la Iglesia" }, + { "fecha": "2026-10-01", "santo": "Santa Teresa de Lisieux" }, + { "fecha": "2026-10-02", "santo": "Ángel de la Guarda" }, + { "fecha": "2026-10-03", "santo": "San Gerardo Majella" }, + { "fecha": "2026-10-04", "santo": "San Francisco de Asís", "color": "rojo" }, + { "fecha": "2026-10-05", "santo": "Santa Faustina Kowalska" }, + { "fecha": "2026-10-06", "santo": "San Bruno" }, + { "fecha": "2026-10-07", "santo": "Nuestra Señora del Rosario", "color": "blanco" }, + { "fecha": "2026-10-08", "santo": "San Dionisio y compañeros mártires" }, + { "fecha": "2026-10-09", "santo": "San Juan Leonardi" }, + { "fecha": "2026-10-10", "santo": "San Daniel Comboni" }, + { "fecha": "2026-10-11", "santo": "San Juan XXIII, Papa" }, + { "fecha": "2026-10-12", "santo": "Nuestra Señora de Guadalupe", "color": "blanco" }, + { "fecha": "2026-10-13", "santo": "San Eduardo el Confesor" }, + { "fecha": "2026-10-14", "santo": "San Calixto I, Papa y mártir" }, + { "fecha": "2026-10-15", "santo": "Santa Teresa de Ávila, virgen y doctora de la Iglesia" }, + { "fecha": "2026-10-16", "santo": "San Gerardo de Brogne" }, + { "fecha": "2026-10-17", "santo": "San Ignacio de Antioquía, obispo y mártir" }, + { "fecha": "2026-10-18", "santo": "San Lucas, evangelista", "color": "rojo" }, + { "fecha": "2026-10-19", "santo": "San Pablo de la Cruz", "color": "rojo" }, + { "fecha": "2026-10-20", "santo": "San Juan de Capistrano" }, + { "fecha": "2026-10-21", "santo": "San Hilarión" }, + { "fecha": "2026-10-22", "santo": "San Juan Pablo II, Papa" }, + { "fecha": "2026-10-23", "santo": "San Juan de Brébeuf y San Isaac Jogues, sacerdotes y compañeros mártires" }, + { "fecha": "2026-10-24", "santo": "San Antonio María Claret" }, + { "fecha": "2026-10-25", "santo": "San Crispín y San Crispiniano, mártires" }, + { "fecha": "2026-10-26", "santo": "San Evaristo, Papa y mártir" }, + { "fecha": "2026-10-27", "santo": "San Frumencio" }, + { "fecha": "2026-10-28", "santo": "San Simón y San Judas, apóstoles", "color": "rojo" }, + { "fecha": "2026-10-29", "santo": "San Narciso de Jerusalén" }, + { "fecha": "2026-10-30", "santo": "San Andrés Avellino" }, + { "fecha": "2026-10-31", "santo": "San Wolfgang de Ratisbona" }, + { "fecha": "2026-11-01", "santo": "Todos los Santos", "color": "blanco" }, + { "fecha": "2026-11-02", "santo": "Conmemoración de los Fieles Difuntos", "color": "negro" }, + { "fecha": "2026-11-03", "santo": "San Martín de Tours" }, + { "fecha": "2026-11-04", "santo": "San Carlos Borromeo" }, + { "fecha": "2026-11-05", "santo": "San Leónidas y compañeros mártires" }, + { "fecha": "2026-11-06", "santo": "San Leonardo de Noblac" }, + { "fecha": "2026-11-07", "santo": "San Willibrord" }, + { "fecha": "2026-11-08", "santo": "San Godofredo de Amiens" }, + { "fecha": "2026-11-09", "santo": "Dedicación de la Basílica de San Juan de Letrán", "color": "blanco" }, + { "fecha": "2026-11-10", "santo": "San León III, Papa" }, + { "fecha": "2026-11-11", "santo": "San Martín de Tours" }, + { "fecha": "2026-11-12", "santo": "San Josafat Kuncevyc" }, + { "fecha": "2026-11-13", "santo": "Santa Francesca Romana" }, + { "fecha": "2026-11-14", "santo": "San Gerardo Sagredo" }, + { "fecha": "2026-11-15", "santo": "Santa Margarita de Escocia" }, + { "fecha": "2026-11-16", "santo": "San Gerardo Majella" }, + { "fecha": "2026-11-17", "santo": "San Gregorio III, Papa" }, + { "fecha": "2026-11-18", "santo": "San Romualdo" }, + { "fecha": "2026-11-19", "santo": "San Elredo de Rievaulx" }, + { "fecha": "2026-11-20", "santo": "Santa Felicidad y compañeros mártires" }, + { "fecha": "2026-11-21", "santo": "Presentación de la Virgen María", "color": "blanco" }, + { "fecha": "2026-11-22", "santo": "San Cecilia, virgen y mártir", "descripcion":"Patrona de la música" }, + { "fecha": "2026-11-23", "santo": "San Clemente I, Papa y mártir" }, + { "fecha": "2026-11-24", "santo": "San Andrés Dung-Lac y compañeros mártires" }, + { "fecha": "2026-11-25", "santo": "San Catalina de Alejandría, virgen y mártir" }, + { "fecha": "2026-11-26", "santo": "San Silvestre I, Papa" }, + { "fecha": "2026-11-27", "santo": "San Virgilio de Salzburgo" }, + { "fecha": "2026-11-28", "santo": "San Leandro de Sevilla" }, + { "fecha": "2026-11-29", "santo": "San Saturnino" }, + { "fecha": "2026-11-30", "santo": "San Andrés, apóstol", "color": "rojo" }, + { "fecha": "2026-12-01", "santo": "Santa Elena" }, + { "fecha": "2026-12-02", "santo": "San Bibiano, mártir" }, + { "fecha": "2026-12-03", "santo": "San Francisco Javier" }, + { "fecha": "2026-12-04", "santo": "San Juan Damasceno" }, + { "fecha": "2026-12-05", "santo": "Santa Sabela" }, + { "fecha": "2026-12-06", "santo": "San Nicolás de Bari" }, + { "fecha": "2026-12-07", "santo": "San Ambrosio, obispo y doctor de la Iglesia" }, + { "fecha": "2026-12-08", "santo": "Inmaculada Concepción de la Virgen María", "color": "blanco" }, + { "fecha": "2026-12-09", "santo": "San Juan Diego Cuauhtlatoatzin" }, + { "fecha": "2026-12-10", "santo": "San Efrén" }, + { "fecha": "2026-12-11", "santo": "San Dámaso I, Papa" }, + { "fecha": "2026-12-12", "santo": "Nuestra Señora de Guadalupe", "color": "blanco" }, + { "fecha": "2026-12-13", "santo": "Santa Lucía, virgen y mártir" }, + { "fecha": "2026-12-14", "santo": "San Juan de la Cruz, sacerdote y doctor de la Iglesia" }, + { "fecha": "2026-12-15", "santo": "Santa Ninfa" }, + { "fecha": "2026-12-16", "santo": "San Ezequiel Moreno" }, + { "fecha": "2026-12-17", "santo": "San Lázaro de Betania" }, + { "fecha": "2026-12-18", "santo": "San Gatiano" }, + { "fecha": "2026-12-19", "santo": "San Urbano I, Papa y mártir" }, + { "fecha": "2026-12-20", "santo": "San Dámaso I, Papa" }, + { "fecha": "2026-12-21", "santo": "San Pedro Canisio" }, + { "fecha": "2026-12-22", "santo": "San Francisco de Sales, obispo y doctor de la Iglesia" }, + { "fecha": "2026-12-23", "santo": "San Juan Kanty" }, + { "fecha": "2026-12-24", "santo": "Nochebuena" }, + { "fecha": "2026-12-25", "santo": "Navidad del Señor", "color": "blanco" }, + { "fecha": "2026-12-26", "santo": "San Esteban, primer mártir", "color": "rojo" }, + { "fecha": "2026-12-27", "santo": "San Juan, apóstol y evangelista", "color": "rojo" }, + { "fecha": "2026-12-28", "santo": "Inocentes, mártires", "color": "rojo" }, + { "fecha": "2026-12-29", "santo": "San Tomás Becket, obispo y mártir" }, + { "fecha": "2026-12-30", "santo": "Santos Adolfo y Juan Fisher, mártires" }, + { "fecha": "2026-12-31", "santo": "San Silvestre I, Papa" } +] \ No newline at end of file diff --git a/eltiempo/estadisticas.html b/eltiempo/estadisticas.html new file mode 100644 index 0000000..afe2da1 --- /dev/null +++ b/eltiempo/estadisticas.html @@ -0,0 +1,57 @@ + + + + + Estadísticas | El Tiempo + + + + + + +
+

Estadísticas del Tiempo

+

Cargando datos…

+
+ +
+ + +
+

Ahora

+

Fecha: --

+

Temperatura: --

+

Humedad: --

+

Lluvia: --

+

Viento: --

+

Amanecer: --

+

Anochecer: --

+
+ + +
+

Resumen del mes actual

+

Días registrados: --

+

Máxima absoluta: --

+

Mínima absoluta: --

+

Lluvia total: --

+

Humedad media: --

+
+ + +
+

Tendencia histórica del mes actual

+
+

Cargando tendencia…

+
+
+ +
+ + + + + + diff --git a/eltiempo/estilos.css b/eltiempo/estilos.css new file mode 100644 index 0000000..271981c --- /dev/null +++ b/eltiempo/estilos.css @@ -0,0 +1,250 @@ +@import url('https://fonts.googleapis.com/css2?family=EB+Garamond:ital,wght@0,400;0,600;1,400&family=Nunito:wght@400;600&display=swap'); + +:root { + /* Paleta refinada */ + --color-primario: #F5F5F5; /* Azul noche espiritual */ + --color-hover: #1E3A5F; /* Azul profundo para hover */ + --color-secundario: #A1A1A1; /* Azul muy suave */ + --color-fondo: #0D0D0D; /* Fondo principal */ + --color-texto: #E5E5E5; /* Gris claro para texto */ + --blanco-puro: #FFFFFF; + --sombra: rgba(47, 58, 86, 0.15); + --color-tarjeta: #1A1A1A; + --color-acento: #5FAEDB; + --color-borde: rgba(95, 174, 219, 0.3); +} + +body { + margin: 0; + font-family: 'Nunito', sans-serif; + background: linear-gradient(180deg, #0D0D0D 0%, #111827 100%); + color: var(--color-texto); + line-height: 1.7; + -webkit-font-smoothing: antialiased; +} + +header { + padding: 1.5rem 0; + text-align: center; +} + +header h1 { + font-family: 'EB Garamond', serif; + letter-spacing: 1px; + color: var(--color-acento); + margin: 0; +} + +nav ul { + list-style: none; + padding: 0; + margin: 0 auto 2rem; + display: flex; + justify-content: center; + flex-wrap: wrap; + gap: 10px; +} + +nav a { + color: var(--color-primario); + border-radius: 20px; + transition: all 0.3s ease; +} + +nav a:hover { + background-color: var(--color-hover); + transform: translateY(-2px); +} + +.container { + width: 92%; + max-width: 1200px; + margin: auto; + padding: 2rem 0; + display: grid; + gap: 2rem; + grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); +} + +.tarjeta { + background: rgba(20, 20, 20, 0.75); + backdrop-filter: blur(4px); + border-radius: 14px; + border: 1px solid var(--color-borde); + box-shadow: 0 10px 20px rgba(0,0,0,.35); + transition: all 0.3s ease; + overflow: hidden; + cursor: pointer; +} + +.tarjeta:hover { + transform: translateY(-6px); + box-shadow: 0 16px 30px rgba(0,0,0,.5); +} + +.tarjeta h2 { + margin: 0; + padding: 12px; + font-family: 'EB Garamond', serif; + font-size: 1.3rem; + text-align: center; + color: var(--color-acento); + background: rgba(13, 13, 13, 0.8); + border-bottom: 1px solid rgba(255,255,255,.1); +} + +/* --- Párrafos generales de todas las tarjetas --- */ +.tarjeta p { + text-align: center; + color: var(--color-texto); + font-size: 1rem; + margin: 2px 0; /* menos espacio entre líneas */ + padding: 0; /* eliminar padding extra */ +} + +/* --- Ajuste para dispositivos pequeños --- */ +@media (max-width: 600px) { + header h1 { + font-size: 1.6rem; + } + + nav ul { + flex-direction: column; + align-items: center; + } + + .container { + gap: 1.2rem; + } +} + +footer { + text-align: center; + padding: 1.5rem 0; + color: var(--color-secundario); + margin-top: 3rem; + background: transparent; +} + +/* --- Tarjeta Amanecer/Anochecer: más compacta --- */ + + +#moon-mini-calendar { + display: grid; + grid-template-columns: repeat(7, 1fr); + gap: 6px; + margin-top: 10px; + text-align: center; +} + +.moon-day { + padding: 4px; + border-radius: 6px; + background: var(--color-fondo); + font-size: 0.9rem; +} + +.moon-today { + background: var(--color-hover); + font-weight: bold; +} + +.moon-icon { + font-size: 1.4rem; + display: block; +} + +#moon-weekdays { + display: grid; + grid-template-columns: repeat(7, 1fr); + margin-top: 10px; + margin-bottom: 6px; + text-align: center; + font-weight: 600; + color: var(--color-acento); + font-size: 0.85rem; +} + +#moon-weekdays span { + padding: 4px 0; + border-bottom: 1px solid var(--color-borde); +} + + +/* ---------- BULLET JOURNAL SUMMARY ---------- */ + +#bullet-summary { + cursor: default; +} + +#bullet-summary .bj-resumen { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 10px; + padding: 14px; +} + +#bullet-summary .bj-item { + background: rgba(13,13,13,0.8); + border: 1px solid var(--color-borde); + border-radius: 10px; + padding: 10px; + text-align: center; + box-shadow: inset 0 0 12px rgba(0,0,0,.4); +} + +#bullet-summary .bj-item span { + display: block; + font-size: 0.75rem; + color: var(--color-secundario); + letter-spacing: .5px; +} + +#bullet-summary .bj-item strong { + font-size: 1.4rem; + font-family: 'EB Garamond', serif; + color: var(--color-acento); +} + +/* Botón */ + +#bullet-summary .btn , #weather-card .btn { + display: block; + width: 75%; + margin: 12px auto 14px; + padding: 10px; + background: linear-gradient(135deg, #1E3A5F, #111827); + color: var(--blanco-puro); + border-radius: 12px; + text-align: center; + text-decoration: none; + font-size: 0.9rem; + border: 1px solid var(--color-borde); + transition: all .3s ease; +} + +#bullet-summary .btn:hover, #weather-card .btn:hover { + background: linear-gradient(135deg, #2b4f80, #1E293B); + transform: translateY(-2px); +} + + +/* ICONOS */ + +.termometro { + width: 48px; +} + +.termometro.neutro { + fill: var(--color-primario); +} + +.termometro.frio { + fill: var(--color-acento); +} + +.termometro.calor { + fill: #f44336; +} + +.termometro.templado { fill: #4caf50; } \ No newline at end of file diff --git a/eltiempo/img/amanecerflecha.png b/eltiempo/img/amanecerflecha.png new file mode 100644 index 0000000000000000000000000000000000000000..1a8e64dcfaf4abf9a9867ae797c316cdf8ae81e2 GIT binary patch literal 11037 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 literal 0 HcmV?d00001 diff --git a/eltiempo/img/humedad.png b/eltiempo/img/humedad.png new file mode 100644 index 0000000000000000000000000000000000000000..b0e0139f6a6d2d80183e5efea9c680965049af7d GIT binary patch literal 21476 zcmXtA2RzjO|3A*i&PX;Pl2yjpqwK7*M>x(1XO!%nZ?Yw&?BbApXV>9QRur<&Jdu6& zp7;OwJs$ra4-ee?^L~xzYrJ2d*XynL$3{AI)Ev|x5Qt7sSJMOpA_aaV1zn>6zU>E% zoC4p-{2uC=T?77wU2~2Dey8%)we|yn=sT{yNIrmuRv!YzAKnF9pk1L?pSTyXAx7~EWwX3JWFI-g}fi+7RQp-OF+AWn~N~zG>a+rd%W!>a`3q4Iu z>XncC6^{8-@N|u4CLf28fRws$$mBg$XGX@=-z59Zj@2X!QRW3P8IRXVOnU-1^vc48q zI3>o3i)LLB6 z=EwLMz{r^N!fA+!vD9Im)HKc==ZW3Jet!GAcs!eqi;JU4Eqyv8QqtshhqYBNV)>^5)Q`xbrMdP?ch?i=iMUUR{^llP zU13OA{&Luh#xl*uC&Y~;w)ZqX@e$1jdCD)}RjIw_e!IJQ0AMBOZuy9jv4_v;u4Q2F zI+nkRT|ZEkl*mu?gKfTu_3Yy3ztKpxO@AV{w3jgzE!5py6dLlK2I1yTezXyC9>M_Q$adBqdONf(^v1DJ-RrlWuR6a<3LtQtCTf~$W zrA4-UkL!%36ax<;-QH?%VK%p?8oxYRdfi1I12Q#>eS?3#L2eq@>_Ssn94z$rjvn1q`@7NNS zjZ|Coo?Z*;T-{QB_^t87(kju~Wa%Ns*@Yl}USGO>)W?AEPxfPl7wGYCfrQTgH5E@+K*u$A54b^h? zCWidIeIU0PF?~rD-s(Q1do0YLVxSDdS z#d;-$5i3{{M8EDT#?N0Q!-W|fed88a&b!^DVUTq=Dy_8OmoCqZL%z8m?4>NjZH0Mr zKR)jL4^r&j@ypAPoE?o~+i4o`W%dpWgH0G7-1GF{?P1iCEXtMC`}TH@4?5KRt^+PO@yulxcjb>ghgI5ijNc)n4BU6W;}n z)9nfFUuY#EZWWb-n7N$P1{F4I+$lD@mz5QMC>-kN%wGy~F!1r;4uGg8!~TVw@t9(o zRqfu7t{&$IkCS!G=F40g6}W_f=WjCJZxmKdo)?53V3o0MD#y>UyJ>nXBSyzzN0FIL z*&U19Ct>$#k}0pJy|X6I?~JgCt|ng^EM{yfqTK1PR@SnK`f5+t?$%0Vf%ajQL9PD{ zB>(2bzKRZxi`)OS?4(vgv2?%sb=0_GoT&b{ds6YFJLj8`>Q6cHcgiKY#%FdLuaZ|t zuO}+s_Gje&`FDiZ(@MW7NvZf(@^pZ26#Nui8YG*Zc<|KvS0L%$b;i|(t%c#^7IHC; zPdaX`@!=7s(e(o9KPQY3(Qn5NjvaQ1i23^P9T{jYR#{W?I~*Lws-3C2+?ePrco>{g zpn4eVK%KvJ$sF~8bZ_N1_Re1ROV9+$haS~cAk|t46+Q6}Gnc3Gf0$s|=XfRkEX~ zdXK?}=B)+1wyKaBFu=3Wuz;>J4QD1J4qdQv<+`h)do?v9qo3Q{@Cn|)UmM+M9aDF^ z(nX~nG^H&xsFC=$mi4k$orqOdrX!hcYfZ8LtmrSuPrl<4mbYRrATID!>&(%?Ve1_v zTcnI4%mR~5TLD=7zsjA7>#OHif=p(#x%EtyRRzg4syR9M9K9Xmxl>Sx9B8EAV$0P0 zY`Rk_X-LPC_B$l4cqv%MjRz1$ zyy^!sKSoF@KBtn*prhf^CW>1i{ZlFlHW8OETv)m(TmZ4362NO8bdAO7zE#;?J$EQp zJ#5LJvOiW{yx}tQUm|M2hZXtUnMq+6XI4hR#hCeDoLRdRR-V9#a7S2n9;}cO*7sC* zc^QzRs&WY~S%=U5HsZ$rzJyj@X*I2kIpbyeq%*irl80?IGEOmY;?dCa;ji%fp13O> z_TJoQXsm0@|HNU)iUo*LaL)(NQM`PX;Qkvak0tr2*k2uzelvQs|#S)kG}MD^gipEDD`iG;?E^>QQ! z(g@1qvK>lTKVhBM4zG?HNMEyluyb?995=o}$r8#a!q}rH;7fU!Y?QnvG5_xMxO`$E zsguu(gq9@R^AKw`wwQ2k2VOw=_wB|2O4V@&1baly8 zb8Y$|Hv3q4FgZ@Ya0GZXw4x4oGpPU8*iRIV%P=kA;<@#m7@l((s8``}L;Izvmgu%t z;c?lfI-z=41ltQls_y-Y)Pa7l0aAeE*LS(7E$4jUvmL9qbt0(;-*(YS&quRGQEC(n zX+)DDex_%9+ti22J;K=Sh)V{B|+72BwHMn&mqrkB_Kt`*z=}as!+DBA9FkPfJBufHc&dn z5!>DMd?cz6&Hg4VquZX_I1M7el$OAeGVpBP@{b~MtTp!Hc}Px`+-@?0`=kQa^zn3R zalnRmh(2-N9QW4OiN}}8eMlC?X-k#w#OC%8)gl< zP@V$bn8(a6U4rj}A_FP3AJ9d>VRjNf?YNPtVd)M=|pb=67cq@`K zOX8ZrId{^m@ijTG_ddpMqq%$vbxlKK~$@duMdmjV_FXfY(dGOYa|- zxLoF}=(tZ4wE5x@TUz>WmR!OKIuRJ{tRKOjcDBa;MAhhOL>-}2BE(k=^L1BgDQ2;) z4~W;Tr0y}CIOxD4pAus)0-X&-5*tMim%H>46Ld5suuidSGN_SJiEz>n0`)Ru(+COJv6|W+K zK`eP-awE0C|3~7|-f_~-Pn$ZF!DVaIMZ=JBVYXu04-Y}QKegU}gx@Z4=REpsgTqSFEs9yvNGGE9 zbNjzPAOg92NT59`^(SVJNM<#tV7bbZYD~gVn5~@l!wM9{enxSj@HrC7GvucP!~Y3v z$*F*0+hJabNQIaXHhIdEPrCU~DLUbwE1N3%{DQ^~=OX)R|4?X`LcRL(*I#}@ z>c!<3_PA?rDgI6;UyxsrAcLShP6IF{d`fTSiYrQtg2cx$^t}7a;X}dcc%0l)CHAI3 z`t_T1*uLYyOXg^oS1*`2r=UcUxh;Uqh(ap&Uk|J`;6mlMu%XAZATFkiWUEtw!{r~A z52de{nu2xFe%21yfiGUR<*tn32qLclKMP~K4M9h)~DX?Rl3Yv~ku$#o+uItX|3Y;Qga z@S3tsD}v;Z#ZaJnDTBU~8lSHsGQgQ>ejWlJNMwk94OpS{tN(W9ZXocf$u*wrAIhn& zsqbfYu`Iv?G*`=f)%7#7i`A-hr1ssHVW);yyV>9a@vP8=KeU>6m*jAAV_CbF_>3PB zbCxtnf52K*>_Mbcd-J6V7*YP2I)!_jXPlso1@RaphKda=#*+EpCtHTI34XO}ed-8O zR*-#X>)!Z#HFxP(`;ecz=idcoz&qQX0E>7;qY?j*)<@`-_W8em!N##OfJmMfsL10c zMHz4!)6|VK?Qb`ZO#tDkdC(LQ|9Q*&^7bT@ByDnKMe9-lWkUBQg}Uh_LI7BuWdV>u z+6x`u`0VqHg8%kjAVG<^{O7fB?ithJ@=W6u>BM)lOICTzC7MEfCPMhGR>nN4FbOFt zk;+7*%8?LQ^tCJB82yjKoKLa+RB1$%vU^>{0UeeqO;5L!4rJeTcpeIRmSFJEK$euj zG1O>f@9od09MO?5{E6Cs91cKq)C;H3^{H1>zPV8NqN1z0B+qfyA1QTDS&FJOX&9+; zvjprJ3$W;KKg$iw=e7>E@Pl+ zfWpojz)ccWh2a7(Kk5kG z@^=h|GBqr(N?sx61_(6G$EEA-bN+KwR(L?*Yza=Q-p74R_G#I>_U z8MnR@yR3j+gj%bx4e2hFZLr}0NEZ3oil_FEbQ?!UpJ)z zFCdj}x`IRj_~!}ZfTpQmip+2G+NRs%ZF7HB`bC)b_Jl~LW4dA`=erk1i84@4fW+Rh zc*F8OCzcdo{b3g8Eigk3X97+KaJ3~7pK9a!9MFFFv`GnQ1cmYxUT$e} zUH~`oF&uu(A28M#(Uwnzl>#!(?{1=FXbOg&76_FJ06yH? z?!oqy_m6$TSkEWqq^Qy)o>5%JYy?-4zv^9Qf)Bi&fwkZ4*>nTMmwV&NH{@ULgsv?* zq`p)A1?SBpoA5GS#Dv;&VQ($c3J`wgC27NQGq5VTKJbtdP;5xL53yx2W=uQ-tULtn z!xrN5j!FQZw>Wh~Ta8SuxITU~CkzlL(gLBoY|(ybiiJaC03-CO;u>Pq02?7fEx^UF z&>>?`MvB2h!NPQ83xz%C6hM`gL$~~cO)e$x=ZRY;k9n%qJXfYZzBiU`po^rFmz4pd zYQPQ4ZK+P}H&?S3P+R9dT7J-?oUtDP(VsIB3QH!cN6Ud=GhVUN8+118<;Ss} zr@c^OpYoh{uRAek_ln&J_I(K;$n6Q*{BgNToCC@fuAtv>gQ9aUzLU3*zok}WIqN4% z?5{bLwS^cam0}+OW_w+awBtYi3OL8*I1@Gqu0-s?QUln_pNTY#|5RC__?A@Fxycp8 zyTZ%a`qRxW74XkMAo1^v(<(=A_!msvUzFzh^m;~NyB(mRTCa4NOPpEh(Jpi6hO3bq zfHHt)pV-q^z&ei&@52}OKGn$-xh$)(Tiplj2UY7n%=#t-3A>LJYe+2OX5wtUmec{r z9tud-v4`V7E58!a52bWjO=5`ptFJOe{j9Tr5lAz%zaI!nt~;HH%-KQP{?H1R-;NT& z<$}@Ov62U6yxY_bxkMJ3O1-sTlBkwg3BWY8IVm$ckuvfDrKWDsDc{j30YHl$2i`da zLe&?GIhrr*x)zC`d}ts&oSU30+1>|zx7bc`!7{7vjq@JRiiY=wcVaklsrJ@DdcW-iVQi`!=MLVOY1AL-q zNkTefCCz27v&DEV6PY+l#fI{7ku75qiF6K9r%D0c5!G|JqF4Q04G%m>AV3Hro>p}n zW=%mLVLeb9Ldsc88%n>kB6Wjnkz@M|IO}@dp3Dgls=j?3`!*_F*x;vnj>(D5q@8v%r>7Iv%$@Bo8sTEJ1Q z{N`}fYp3>)HMUHjqP&(PU4V4H*vNH{9qqZTS_e_L=8B(rKF+#6BrXS?I!Oh`0)b>g zr}pE}Mww40WVJLJs|imzVFo0P-$?R`Db&_MEN7v(6Qx<%fHbr}a)RSN@&~YD;s7CIYkX{XO(+g=(Z?4Rf-+;CM{ek(omXd$K~52H&LYdv;84vVi!RE z26q$7_!`y#*nN0q%S)@R;T^6?rPh_h?j@_n&jYGb-FASTY&^^aV-JjS)spBOzL%;6 zh=O@oxzH?sW`VUyxTfHk0?rPTt{WPq``j*}57jCx?=A8v8pm)x98k!Qq9BDK(Xm7h z&eoU1^f<0%)|a)G<6@RK%1I=_;lOFgh_t&?99z7_YAwBe3(|e^2kHX{4hPZ> z08Oef5*jG3mP$d!nmJ1GU|fe%qSIFrh}6+9gNZ+zEkMPNfrh+*m%nUh#c?gfuV`0q zT2&v*QCZ!U0W-P}h~VtUv+i0LBx99uTy9?1%ymvle4wFVUju;nP?{>@Law4}BN2ez zyXks1>^yM=dt0pp@SJtqFS;nJWTxsg?F1h-fd1e|q(WCJ!2g7e!l3Jr0=f?PCqmR4 zyU7uGO`Kq^d4Y5vupL}d_y6kwq(n?dtR%l(9c_c$Stwu;yO#ox?!an*`j{(jL(p6x znP-%riNDjIKVbZ93LAynE~26Tv2>ir&E3@DPR7%IxJrz>Vt@_-OF9Mi@!U1tR2Tv)&<0DOV;&^RDXyLPl~$nySFF*{{06 zPh(~dBE5VGQjs5>{NQrbDYm3JuQ!H?w^4r+b+y~0jFFz;2I^${rDaHXGmRH1L61(&n008Jw9Aa4nq9khwp*6FjF6s2-0-uAkdR(E&9@8rRblJM@<# z=RKGEH@4fizuvC3L!#q65q-Bc5vLiXLa<@)Fj_G#&eq?Hnl-%bB7dLg3ymdS8fYax zh#N`IcN&k#;o(Aut?AbAVkWK@@tuHAy#KSJCFnx~+Hx9>c=r7BIagfY{Sj^B+bB>& z;$<`Vs_fBBn47}Y3s{nMOZ3>|xG=>l*djNhtIb&8xJB@BM3lLgz zkhNSXf{Ca8!4lhh$3kR5_^hEn&vgG>bS;qJ+GwB0#yvDxAxvI0W0`4q-Rd9V~`Fv zlN(7Z#>5%1nL$C%*P?~Osd&yx#nuTOHR|SjX!fqK5vt-Z00AtQ-(6VE+yn%jh{bu$ zJ^`ns(5cDA=qYi|MtfcO7bzRreDRD6&EO9>eLL%G{S@r;`$T2u;ARbPd3JkYhD7c3 z_OjP!2l(+{2x(PY0M^;~*ULFYsOfl;79oroz30G5eu9o6bg#YxfYxtlZ_t=jgPcFk zPTzFi+uT>W%kUQBJ9N!mq(*yA58i*muo`5Lj6>p>mn{E2`4uJ$N`;P-sOZan44noA zeL7brOd-ZGfV>Q_aBW({Y`3{#sMWw$*8z3|!d zOg-7|*bifuIRCq~(Tu3SXk2C;lf!IoU0^0@SkKpfO|hqOecx2*tnSJmmemGvmYEyS zAmaB0pN)P=N}|Jes^U~$zyI=^f*w+;Ao6M!yNNKr!^`K@7B1?(Iy3qrsk}S`ySa2$ zF^4PP#5=1AH3HtuJ;{Jhappi8z>k+wKsG-yrYRDYSdocx;}?f6bFzx6{o;rZ)2w}> zSc%iy0bcLANO8}|gx+0z%DKtiR5x%sMf7oMmvh?*FDEP>|E|9ie4_SUHQ`cri0xy6 z&2_dneF~M0Dp6hO|9=+%1c`^@Mz-t>Md7v$H#EXkPX=slqJ7*d^y82G zzDHKz5x8+eDoUZ`fEC-7hvP~e0FE1CIaLrNI%VM|>TmWW>!$~oxjs*N;m}3{*}G{G zj|Nf?4iq}3%)wC%NQIIC+LV?AqxK~$mWw@8I~*mN9!3fY4Ow<1JGeiILAy{RU1LK& zunDJKSoyH<_>WtA-K=N?P0VN?E^K=TjpRP-SBlD!aXPC!g3rO)@rgscO5l&AzuAyTQ!n7n(|PRA*InI%DG>B~=x_9eDwg~d6t?*dk9J(P_A7x+DU z9GF)d^(#6#8MdYWJ-&AGp?`#n+QRYe>@8TMYee#XZp+V8pbqIV4<+0G&4?Qz(ho-e zaT&!cU@}2Jox21DZJ?!I_Aw_9qCTEEt1((gm$beak>LVPm5+&iT|tejP&h+9qYa1L0J3zdOmD#i@IF4dFoNxcxv^l4L$ww z5dX^~)BfyZNK14hvNW-pqT3#l>S#Kkq(v#wbB_S|F0#Hd(S~pdsO0!l;}tfd88Tnn z8%bev6ZqTL^x4a~+ciuOf92%5x~6|~1_X}Oe9CU`MLxpX-1FXV zZ#tL|7aSF9f0a;w$6t$Y&wN^Qgg&-{w4TBmP3JP&P#?82?1Yvj8Z`mF53z!9`gs

IhR)4e#iFO@WKP>Vr0}& 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 KxV!ra=l=r)HHeu2 literal 0 HcmV?d00001 diff --git a/eltiempo/img/sunrise.png b/eltiempo/img/sunrise.png new file mode 100644 index 0000000000000000000000000000000000000000..3242793de5495adac67fff08cf9ab568fdccc812 GIT binary patch literal 11262 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 L$<2!EE|2~PrE5UQ literal 0 HcmV?d00001 diff --git a/eltiempo/img/sunriseflechadebajo.png b/eltiempo/img/sunriseflechadebajo.png new file mode 100644 index 0000000000000000000000000000000000000000..c59812ba8678b3091e5cbc8853ea8726151a186e GIT binary patch literal 5764 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 literal 0 HcmV?d00001 diff --git a/eltiempo/img/termometro.svg b/eltiempo/img/termometro.svg new file mode 100644 index 0000000..e0406f7 --- /dev/null +++ b/eltiempo/img/termometro.svg @@ -0,0 +1,22 @@ + diff --git a/eltiempo/img/viento.png b/eltiempo/img/viento.png new file mode 100644 index 0000000000000000000000000000000000000000..b77ab48c02b4eba56ad781f904c30187f8080933 GIT binary patch literal 16035 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 m@n`;%|EIF}|9j~)M{d5 + + + + + El Tiempo + + + + + +

+

El Tiempo

+

Obteniendo ubicación...

+

Fecha

+

Santo del dia

+
+ +
+ + + + +
+

Amanecer y Anochecer

+

Amanecer: --:--

+

Anochecer: --:--

+

Duración del día: --:--

+

Tiempo hasta anochecer: --:--:--

+

☀️

+
+ + +
+

Calendario lunar vs tiempo

+

Fase lunar actual: Calculando...

+

🌑

+ +
+ + +
+

Tiempo Actual 🌤️

+ +

+ + + --°C +

+ +

Condición: --

+

Humedad: --%

+

Viento: -- km/h

+ Ver estadísticas +
+ + +
+ +
+

El Tiempo © Tatiana Villa

+
+ + + + + diff --git a/eltiempo/js/bullet-journal.js b/eltiempo/js/bullet-journal.js new file mode 100644 index 0000000..c6f076d --- /dev/null +++ b/eltiempo/js/bullet-journal.js @@ -0,0 +1,113 @@ +let currentDate = new Date(); +const fields = ['rosario', 'vitaminas', 'caminar', 'agua', 'mood']; + +// Inicialización +document.addEventListener('DOMContentLoaded', () => { + setupAutoSave(); + updateUI(); +}); + +function formatDate(date) { + return date.toISOString().split('T')[0]; +} + +function updateUI() { + const dateString = currentDate.toLocaleDateString('es-ES', { + weekday: 'long', day: 'numeric', month: 'long', year: 'numeric' + }); + document.getElementById('currentDateDisplay').innerText = dateString; + + loadDayData(); + updateExtras(); +} + +function changeDay(offset) { + currentDate.setDate(currentDate.getDate() + offset); + updateUI(); +} + +/* STORAGE */ +function loadDayData() { + const data = JSON.parse(localStorage.getItem('journalData')) || {}; + const day = data[formatDate(currentDate)] || {}; + + fields.forEach(f => { + const el = document.getElementById(f); + if (el.type === 'checkbox') el.checked = day[f] || false; + else el.value = day[f] || ''; + }); +} + +function setupAutoSave() { + fields.forEach(f => { + document.getElementById(f).addEventListener('change', () => { + const data = JSON.parse(localStorage.getItem('journalData')) || {}; + const key = formatDate(currentDate); + if (!data[key]) data[key] = {}; + + fields.forEach(field => { + const el = document.getElementById(field); + data[key][field] = el.type === 'checkbox' ? el.checked : el.value; + }); + localStorage.setItem('journalData', JSON.stringify(data)); + }); + }); +} + +/* EXTRAS: SANTORAL Y CUMPLES */ +async function updateExtras() { + const iso = formatDate(currentDate); + // Santoral + try { + const resS = await fetch('data/santos.json'); + const santos = await resS.json(); + const s = santos.find(x => x.fecha === iso); + document.getElementById('saintDisplay').innerText = s ? `Santo: ${s.santo}` : "Santoral"; + document.getElementById('santodeldia').innerText = s ? `Santo del día: ${s.santo}` : "Santo del día desconocido"; + } catch (e) { console.log("Falta santos.json"); } + + // Cumples + try { + const resC = await fetch('data/cumples.json'); + const cumples = await resC.json(); + const c = cumples.find(x => x.fecha === iso.slice(5)); + document.getElementById('cumpleDisplay').innerText = c ? `🎂 ${c.persona}` : ""; + } catch (e) { } +} + +/* IMPRESIÓN MENSUAL A5 */ +async function printFullMonth() { + const data = JSON.parse(localStorage.getItem('journalData')) || {}; + const month = currentDate.getMonth(); + const year = currentDate.getFullYear(); + const daysInMonth = new Date(year, month + 1, 0).getDate(); + + let html = ""; + for (let i = 1; i <= daysInMonth; i++) { + const date = new Date(year, month, i); + const key = formatDate(date); + const dayData = data[key] || {}; + + html += ` +
+

${date.toLocaleDateString('es-ES',{weekday:'long'})}, ${i} ${date.toLocaleDateString('es-ES',{month:'long'})} de ${date.getFullYear()}

+
Santo del dia
+

+ Rosario: ${dayData.rosario ? '✔' : '☐'} | Pasos: ${dayData.caminar || 0} + | Vitaminas: ${dayData.vitaminas ? '✔' : '☐'} | Agua: ${dayData.agua || 0}ml +

+
+
+ `; + } + + document.getElementById('printArea').innerHTML = html; + window.print(); +} + +function resetData() { + if(confirm("¿Seguro que quieres borrar todo el historial?")) { + localStorage.clear(); + location.reload(); + } +} \ No newline at end of file diff --git a/eltiempo/js/codigo.js b/eltiempo/js/codigo.js new file mode 100644 index 0000000..bd4ff86 --- /dev/null +++ b/eltiempo/js/codigo.js @@ -0,0 +1,318 @@ +/* ============================================== + FUNCIONES AUXILIARES +============================================== */ + +function formatTime(dateString) { + const date = new Date(dateString); + return date.toLocaleTimeString("es-ES", { hour: "2-digit", minute: "2-digit" }); +} + +function formatDuration(seconds) { + const h = Math.floor(seconds / 3600); + const m = Math.floor((seconds % 3600) / 60); + const s = Math.floor(seconds % 60); + return `${h}h ${m}m ${s}s`; +} + +function ponerlaFechaActual() { + const now = new Date(); + const dateString = now.toLocaleDateString('es-ES', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }); + document.getElementById("fecha-actual").textContent = dateString; +} + +/* ================================ + 6. SANTO DEL DÍA +================================ */ + +async function santoDelDia() { + const hoy = new Date(); + const offset = hoy.getTimezoneOffset() * 60000; + const fechaISO = new Date(hoy - offset).toISOString().split('T')[0]; + + try { + const res = await fetch('data/santos.json'); + const listaSantos = await res.json(); + + const elSanto = listaSantos.find(d => d.fecha === fechaISO); + + if (elSanto) { + document.getElementById("santo-del-dia").textContent = elSanto.santo; + santoDelDiaElem.textContent = elSanto.santo; + descripcionSantoDelDiaElem.textContent = elSanto.descripcion || ""; + } + } catch (e) { + console.error("Error en la carga de santos:", e); + } +} + +/* ============================================== + GEOLOCALIZACIÓN CENTRAL +============================================== */ +async function getLocationOnce() { + return new Promise((resolve, reject) => { + if (!navigator.geolocation) reject("Geolocalización no soportada"); + navigator.geolocation.getCurrentPosition( + pos => resolve({ lat: pos.coords.latitude, lon: pos.coords.longitude }), + err => reject(err.message) + ); + }); +} + +async function getLocationName(lat, lon) { + try { + const url = `https://nominatim.openstreetmap.org/reverse?format=json&lat=${lat}&lon=${lon}`; + const res = await fetch(url); + const data = await res.json(); + + if (data.address) { + if (data.address.city) return data.address.city + ", " + data.address.country; + if (data.address.town) return data.address.town + ", " + data.address.country; + if (data.address.village) return data.address.village + ", " + data.address.country; + if (data.address.hamlet) return data.address.hamlet + ", " + data.address.country; + } + + return "Ubicación desconocida"; + } catch { + return "Ubicación desconocida"; + } +} + +/* ============================================== + TARJETA SOL / ANOCHECER +============================================== */ +async function getSunTimes(lat, lon) { + const url = `https://api.sunrise-sunset.org/json?lat=${lat}&lng=${lon}&formatted=0`; + const response = await fetch(url); + const data = await response.json(); + return data.results; +} + +async function updateSunCard(lat, lon) { + try { + const sun = await getSunTimes(lat, lon); + const cityName = await getLocationName(lat, lon); + + const sunrise = new Date(sun.sunrise); + const sunset = new Date(sun.sunset); + + document.getElementById("sunrise").textContent = formatTime(sun.sunrise); + document.getElementById("sunset").textContent = formatTime(sun.sunset); + document.getElementById("day-length").textContent = formatDuration((sunset - sunrise)/1000); + document.getElementById("location").textContent = cityName; + + const card = document.getElementById("sun-card"); + const sunIcon = document.getElementById("sun-icon"); + + function updateMode() { + const now = new Date(); + if (now >= sunrise && now <= sunset) { + card.style.background = "rgba(26,26,26,0.85)"; + sunIcon.textContent = "☀️"; + } else { + card.style.background = "rgba(10,10,30,0.85)"; + sunIcon.textContent = "🌙"; + } + } + + function updateCountdown() { + const now = new Date(); + let target; + let text = "Queda "; + + if (now < sunrise) target = sunrise; + else if (now >= sunrise && now <= sunset) target = sunset; + else target = new Date(sunrise.getTime() + 24*60*60*1000); + + const diff = Math.floor((target - now) / 1000); + const durationStr = formatDuration(diff); + + text += (target.getTime() === sunrise.getTime()) + ? durationStr + " hasta anochecer" + : durationStr + " hasta amanecer"; + + document.getElementById("countdown").textContent = text; + } + + updateMode(); + updateCountdown(); + setInterval(() => { updateMode(); updateCountdown(); }, 1000); + + } catch (err) { + document.getElementById("location").textContent = "Error obteniendo datos: " + err.message; + } +} + +/* ============================================== + TIEMPO ACTUAL +============================================== */ +async function getWeather(position) { + const lat = position.coords.latitude; + const lon = position.coords.longitude; + + // Open-Meteo API + const url = `https://api.open-meteo.com/v1/forecast?latitude=${lat}&longitude=${lon}¤t_weather=true&temperature_unit=celsius&windspeed_unit=kmh&timezone=auto`; + + try { + const res = await fetch(url); + const data = await res.json(); + const weather = data.current_weather; + + document.getElementById("temperature").textContent = `${weather.temperature}°C`; + document.getElementById("condition").textContent = `Viento ${weather.windspeed} km/h`; + document.getElementById("humidity").textContent = "N/A"; + document.getElementById("wind").textContent = "N/A"; + + } catch (err) { + document.getElementById("location").textContent = "Error al obtener el tiempo"; + console.error(err); + } +} + +function showError(error) { + switch(error.code) { + case error.PERMISSION_DENIED: + document.getElementById("location").textContent = "Permiso denegado para obtener ubicación."; + break; + case error.POSITION_UNAVAILABLE: + document.getElementById("location").textContent = "Ubicación no disponible."; + break; + case error.TIMEOUT: + document.getElementById("location").textContent = "Tiempo de espera agotado."; + break; + default: + document.getElementById("location").textContent = "Error desconocido."; + } +} + +/* ============================================== + FASES LUNARES +============================================== */ +function getMoonPhase() { + const now = new Date(); + const year = now.getFullYear(); + const month = now.getMonth() + 1; + const day = now.getDate(); + + const c = Math.floor(365.25 * year); + const e = Math.floor(30.6 * (month + 1)); + const jd = c + e + day - 694039.09; + const phase = (jd / 29.53) % 1; + const age = phase * 29.53; + + let phaseName = "", icon = ""; + + if (age < 1.84566) { phaseName = "Luna Nueva"; icon = "🌑"; } + else if (age < 5.53699) { phaseName = "Creciente Iluminante"; icon = "🌒"; } + else if (age < 9.22831) { phaseName = "Cuarto Creciente"; icon = "🌓"; } + else if (age < 12.91963) { phaseName = "Gibosa Creciente"; icon = "🌔"; } + else if (age < 16.61096) { phaseName = "Luna Llena"; icon = "🌕"; } + else if (age < 20.30228) { phaseName = "Gibosa Menguante"; icon = "🌖"; } + else if (age < 23.99361) { phaseName = "Cuarto Menguante"; icon = "🌗"; } + else if (age < 27.68493) { phaseName = "Creciente Menguante"; icon = "🌘"; } + else { phaseName = "Luna Nueva"; icon = "🌑"; } + + document.getElementById("moon-phase").textContent = phaseName; + document.getElementById("moon-icon").textContent = icon; +} + +function moonPhaseForDate(year, month, day) { + const c = Math.floor(365.25 * year); + const e = Math.floor(30.6 * (month + 1)); + const jd = c + e + day - 694039.09; + const phase = (jd / 29.53) % 1; + const age = phase * 29.53; + + if (age < 1.84566) return "🌑"; + if (age < 5.53699) return "🌒"; + if (age < 9.22831) return "🌓"; + if (age < 12.91963) return "🌔"; + if (age < 16.61096) return "🌕"; + if (age < 20.30228) return "🌖"; + if (age < 23.99361) return "🌗"; + if (age < 27.68493) return "🌘"; + return "🌑"; +} + +function generateMiniMoonCalendar() { + const now = new Date(); + const year = now.getFullYear(); + const month = now.getMonth(); + const today = now.getDate(); + const daysInMonth = new Date(year, month + 1, 0).getDate(); + const container = document.getElementById("moon-mini-calendar"); + + container.innerHTML = ""; + + let firstDay = new Date(year, month, 1).getDay(); + firstDay = (firstDay === 0) ? 6 : firstDay - 1; + + for (let i = 0; i < firstDay; i++) { + const empty = document.createElement("div"); + empty.classList.add("moon-day"); + empty.style.visibility = "hidden"; + container.appendChild(empty); + } + + for (let day = 1; day <= daysInMonth; day++) { + const icon = moonPhaseForDate(year, month + 1, day); + const div = document.createElement("div"); + div.classList.add("moon-day"); + if (day === today) div.classList.add("moon-today"); + + div.innerHTML = `${day}${icon}`; + container.appendChild(div); + } +} + +/* ============================================== + BULLET JOURNAL RESUMEN +============================================== */ +function loadBulletSummary() { + const data = JSON.parse(localStorage.getItem("journalData")) || {}; + const now = new Date(); + const month = now.getMonth(); + const year = now.getFullYear(); + + let rosario = 0, caminar = 0, vitaminas = 0, agua = 0; + + for (let key in data) { + const d = new Date(key); + if (d.getMonth() === month && d.getFullYear() === year) { + if(data[key].rosario) rosario++; + if(data[key].caminar) caminar++; + if(data[key].vitaminas) vitaminas++; + agua += Number(data[key].agua || 0); + } + } + + document.getElementById("bj-rosario").textContent = rosario; + document.getElementById("bj-caminar").textContent = caminar; + document.getElementById("bj-vitaminas").textContent = vitaminas; + document.getElementById("bj-agua").textContent = agua; +} + +/* ============================================== + INICIALIZACIÓN +============================================== */ +document.addEventListener("DOMContentLoaded", () => { + document.getElementById("year").innerText = new Date().getFullYear(); + + ponerlaFechaActual(); + santoDelDia(); + loadBulletSummary(); + getMoonPhase(); + generateMiniMoonCalendar(); + + // Inicializar sol/luna + tiempo actual con una sola geolocalización + initApp(); +}); + +async function initApp() { + try { + const { lat, lon } = await getLocationOnce(); + updateSunCard(lat, lon); + getWeather({ coords: { latitude: lat, longitude: lon } }); + } catch (err) { + document.getElementById("location").textContent = "Error: " + err; + } +} diff --git a/eltiempo/js/estadisticas.js b/eltiempo/js/estadisticas.js new file mode 100644 index 0000000..b81a09c --- /dev/null +++ b/eltiempo/js/estadisticas.js @@ -0,0 +1,133 @@ +// API URL absoluta +const API_URL = "http://aplicacionesdevanguardia.es/eltiempo/apis/api-weather-reverse.php?ciudad=madrid"; + +/* ---------- UTILIDADES ---------- */ + +function $(id) { + return document.getElementById(id); +} + +function monthName(monthIndex) { + return new Date(2026, monthIndex, 1) + .toLocaleDateString("es-ES", { month: "long" }); +} + +/* ---------- CARGA PRINCIPAL ---------- */ + +async function loadStats() { + try { + console.log("Cargando datos desde API:", API_URL); + const res = await fetch(API_URL); + + if (!res.ok) throw `Error HTTP: ${res.status}`; + + const data = await res.json(); + console.log("Datos recibidos:", data); + + if (!data || !data.length) throw "Sin datos"; + + renderLastDay(data[0]); + renderMonthStats(data); + renderTrend(data); + + $("stats-location").textContent = "Madrid (datos históricos)"; + } catch (e) { + $("stats-location").textContent = "Error cargando estadísticas"; + console.error("Error en loadStats:", e); + } +} + +/* ---------- ÚLTIMO DÍA ---------- */ + +function renderLastDay(day) { + $("last-date").textContent = day.dia; + $("last-temp").textContent = `${day.temp_min}°C / ${day.temp_max}°C`; + $("last-humidity").textContent = `${Math.round(day.humedad)} %`; + $("last-rain").textContent = `${day.lluvia} mm`; + $("last-wind").textContent = `${Math.round(day.viento_velocidad)} km/h`; + $("last-sunrise").textContent = day.amanecer; + $("last-sunset").textContent = day.anochecer; +} + +/* ---------- RESUMEN DEL MES ---------- */ + +function renderMonthStats(data) { + const now = new Date(); + const month = now.getMonth(); + const year = now.getFullYear(); + + const monthData = data.filter(d => { + const date = new Date(d.dia); + return date.getMonth() === month && date.getFullYear() === year; + }); + + if (!monthData.length) return; + + const maxTemps = monthData.map(d => d.temp_max); + const minTemps = monthData.map(d => d.temp_min); + + const lluvia = monthData.reduce((sum, d) => sum + parseFloat(d.lluvia), 0); + const humedad = ( + monthData.reduce((sum, d) => sum + parseFloat(d.humedad), 0) / + monthData.length + ).toFixed(1); + + $("month-days").textContent = monthData.length; + $("month-max").textContent = Math.max(...maxTemps) + "°C"; + $("month-min").textContent = Math.min(...minTemps) + "°C"; + $("month-rain").textContent = lluvia.toFixed(1) + " mm"; + $("month-humidity").textContent = humedad + " %"; +} + +/* ---------- TENDENCIA HISTÓRICA ---------- */ + +function renderTrend(data) { + const now = new Date(); + const month = now.getMonth(); + + const byYear = {}; + + data.forEach(d => { + const date = new Date(d.dia); + + if (date.getMonth() === month) { + const year = date.getFullYear(); + + if (!byYear[year]) { + byYear[year] = { max: [], min: [], rain: [] }; + } + + byYear[year].max.push(d.temp_max); + byYear[year].min.push(d.temp_min); + byYear[year].rain.push(parseFloat(d.lluvia)); + } + }); + + const container = $("trend-container"); + container.innerHTML = ""; + + Object.keys(byYear) + .sort() + .forEach(year => { + const maxAvg = (byYear[year].max.reduce((a, b) => a + b, 0) / byYear[year].max.length).toFixed(1); + const minAvg = (byYear[year].min.reduce((a, b) => a + b, 0) / byYear[year].min.length).toFixed(1); + const rainTotal = (byYear[year].rain.reduce((a, b) => a + b, 0)).toFixed(1); + + container.innerHTML += ` +

+ ${year} → + Máx ${maxAvg}°C · + Mín ${minAvg}°C · + Lluvia ${rainTotal} mm +

+ `; + }); +} + +/* ---------- INIT ---------- */ + +document.addEventListener("DOMContentLoaded", () => { + $("year").textContent = new Date().getFullYear(); + loadStats(); +}); + diff --git a/eltiempo/js/estadisticas20260131.js b/eltiempo/js/estadisticas20260131.js new file mode 100644 index 0000000..459c772 --- /dev/null +++ b/eltiempo/js/estadisticas20260131.js @@ -0,0 +1,148 @@ +const API_URL = "http://aplicacionesdevanguardia.es/eltiempo/apis/api-weather-reverse.php?ciudad=madrid"; + +/* ---------- UTILIDADES ---------- */ + +function $(id) { + return document.getElementById(id); +} + +function monthName(monthIndex) { + return new Date(2026, monthIndex, 1) + .toLocaleDateString("es-ES", { month: "long" }); +} + +/* ---------- CARGA PRINCIPAL ---------- */ + +async function loadStats() { + try { + const res = await fetch(API_URL); + const data = await res.json(); + + if (!data || !data.length) throw "Sin datos"; + + renderLastDay(data[0]); + renderMonthStats(data); + renderTrend(data); + + $("stats-location").textContent = "Madrid (datos históricos)"; + } catch (e) { + $("stats-location").textContent = "Error cargando estadísticas"; + console.error(e); + } +} + +/* ---------- ÚLTIMO DÍA ---------- */ + +function renderLastDay(day) { + + $("last-date").textContent = day.dia; + $("last-temp").textContent = `${day.temp_min}°C / ${day.temp_max}°C`; + $("last-humidity").textContent = `${Math.round(day.humedad)} %`; + $("last-rain").textContent = `${day.lluvia} mm`; + $("last-wind").textContent = `${Math.round(day.viento_velocidad)} km/h`; + $("last-sunrise").textContent = day.amanecer; + $("last-sunset").textContent = day.anochecer; + +} + +/* ---------- RESUMEN DEL MES ---------- */ + +function renderMonthStats(data) { + + const now = new Date(); + const month = now.getMonth(); + const year = now.getFullYear(); + + + const monthData = data.filter(d => { + const date = new Date(d.dia); + return date.getMonth() === month && date.getFullYear() === year; + }); + + if (!monthData.length) return; + + const maxTemps = monthData.map(d => d.temp_max); + const minTemps = monthData.map(d => d.temp_min); + + const lluvia = monthData.reduce( + (sum, d) => sum + parseFloat(d.lluvia), 0 + ); + + const humedad = ( + monthData.reduce((sum, d) => sum + parseFloat(d.humedad), 0) + / monthData.length + ).toFixed(1); + + $("month-days").textContent = monthData.length; + $("month-max").textContent = Math.max(...maxTemps) + "°C"; + $("month-min").textContent = Math.min(...minTemps) + "°C"; + $("month-rain").textContent = lluvia.toFixed(1) + " mm"; + $("month-humidity").textContent = humedad + " %"; + + +} + +/* ---------- TENDENCIA HISTÓRICA ---------- */ + +function renderTrend(data) { + + const now = new Date(); + const month = now.getMonth(); + + const byYear = {}; + + data.forEach(d => { + const date = new Date(d.dia); + + if (date.getMonth() === month) { + const year = date.getFullYear(); + + if (!byYear[year]) { + byYear[year] = { max: [], min: [], rain: [] }; + } + + byYear[year].max.push(d.temp_max); + byYear[year].min.push(d.temp_min); + byYear[year].rain.push(parseFloat(d.lluvia)); + } + }); + + const container = $("trend-container"); + container.innerHTML = ""; + + Object.keys(byYear) + .sort() + .forEach(year => { + + const maxAvg = ( + byYear[year].max.reduce((a,b)=>a+b,0) / + byYear[year].max.length + ).toFixed(1); + + const minAvg = ( + byYear[year].min.reduce((a,b)=>a+b,0) / + byYear[year].min.length + ).toFixed(1); + + const rainTotal = ( + byYear[year].rain.reduce((a,b)=>a+b,0) + ).toFixed(1); + + container.innerHTML += ` +

+ ${year} → + Máx ${maxAvg}°C · + Mín ${minAvg}°C · + Lluvia ${rainTotal} mm +

+ `; + }); +} + + +/* ---------- INIT ---------- */ + +document.addEventListener("DOMContentLoaded", () => { + $("year").textContent = new Date().getFullYear(); + loadStats(); +}); diff --git a/eltiempo/servidor/api-weather-reverse.php b/eltiempo/servidor/api-weather-reverse.php new file mode 100755 index 0000000..8ab4795 --- /dev/null +++ b/eltiempo/servidor/api-weather-reverse.php @@ -0,0 +1,87 @@ + "Parámetro 'ciudad' es requerido."]); + exit(); // Stop script execution +} + +// Optional: Further sanitize/validate the city name if needed (e.g., alphanumeric only) +// if (!preg_match('/^[a-zA-Z\s]+$/', $ciudad)) { +// http_response_code(400); +// echo json_encode(["error" => "El nombre de la ciudad contiene caracteres inválidos."]); +// exit(); +// } + +// --- 3. Database Connection --- +$conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME); + +if ($conn->connect_error) { + http_response_code(500); // Internal Server Error + echo json_encode(["error" => "Error de conexión a la base de datos: " . $conn->connect_error]); + exit(); +} + +// --- 4. Prepare and Execute Query --- +$stmt = $conn->prepare(" + SELECT DATE(fecha) AS dia, + MIN(fecha) AS primera_fecha_del_dia, + MIN(amanecer) AS amanecer, + MAX(anochecer) AS anochecer, + MAX(temp_max) AS temp_max, + MIN(temp_min) AS temp_min, + AVG(humedad) AS humedad, + AVG(lluvia) AS lluvia, + AVG(nubes) AS nubes, + AVG(viento_velocidad) AS viento_velocidad, + AVG(viento_direccion) AS viento_direccion + FROM weather + WHERE DATE(fecha) >= '2024-10-01' + AND ciudad LIKE CONCAT('%', ?, '%') + GROUP BY DATE(fecha) + ORDER BY DATE(fecha) DESC +"); + +if (!$stmt) { + http_response_code(500); // Internal Server Error + echo json_encode(["error" => "Error al preparar la consulta: " . $conn->error]); + $conn->close(); + exit(); +} + +$stmt->bind_param("s", $ciudad); +$stmt->execute(); +$result = $stmt->get_result(); + +$datos = []; +if ($result->num_rows > 0) { + while ($row = $result->fetch_assoc()) { + $datos[] = $row; + } + http_response_code(200); // OK + echo json_encode($datos); +} else { + // It's usually fine to return 200 OK with an empty array or a specific message + // if no data is found, rather than a 404, unless it signifies a resource that + // *should* exist but doesn't. For a query, 200 OK is typical. + http_response_code(200); // OK + echo json_encode(["message" => "No hay datos para la ciudad especificada"]); +} + +// --- 5. Close Resources --- +$stmt->close(); +$conn->close(); +?> diff --git a/info.php b/info.php new file mode 100644 index 0000000..d50a07a --- /dev/null +++ b/info.php @@ -0,0 +1,3 @@ +