<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Astronomi on Kosmik.my</title><link>https://kosmik.my/nebula/ms/categories/astronomi/</link><description>Recent content in Astronomi on Kosmik.my</description><generator>Hugo -- gohugo.io</generator><language>ms</language><copyright>© 2026 Kosmik.my</copyright><lastBuildDate>Tue, 25 Aug 2026 21:06:01 +0000</lastBuildDate><atom:link href="https://kosmik.my/nebula/ms/categories/astronomi/index.xml" rel="self" type="application/rss+xml"/><item><title>Musim: Waktu Tepat Detik Ekuinoks dan Solstis</title><link>https://kosmik.my/nebula/ms/musim-ekuinoks-solstis/</link><pubDate>Wed, 29 Apr 2026 12:00:00 +0000</pubDate><guid>https://kosmik.my/nebula/ms/musim-ekuinoks-solstis/</guid><description>&lt;p&gt;Jadual data komprehensif bagi ekuinoks dan solstis tahunan. Dapatkan tarikh dan masa tepat (UTC+8) bagi permulaan setiap musim astronomi.&lt;/p&gt;&#10;&#10;&lt;h2 class="relative group"&gt;Masa dalam UTC+8&#10; &lt;div id="masa-dalam-utc8" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#masa-dalam-utc8" aria-label="Pautan"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&#10;&#10;&#10;&lt;style&gt;&#10;/* Container allows horizontal scrolling on very small screens if needed */&#10;.season-table-container {&#10; overflow-x: auto;&#10; margin: 1.5em 0;&#10;}&#10;.season-table {&#10; width: 100%;&#10; border-collapse: collapse;&#10;}&#10;&#10;/* Desktop: flex‑based table rows */&#10;@media screen and (min-width: 679px) {&#10; .table-header {&#10; display: flex;&#10; background-color: rgba(var(--color-neutral-50), 1);&#10; border-bottom: 2px solid rgba(var(--color-neutral-300), 1);&#10; font-weight: 600;&#10; padding: 0.5em;&#10; }&#10; .table-row {&#10; display: flex;&#10; border-bottom: 1px solid rgba(var(--color-neutral-200), 1);&#10; padding: 0.5em;&#10; }&#10; .cell {&#10; flex: 1 1 20%;&#10; padding: 0.5em 0.75em;&#10; overflow-wrap: break-word;&#10; }&#10; .year-cell {&#10; flex: 0 0 6ch;&#10; }&#10; .table-row.bold {&#10; font-weight: 700;&#10; background-color: rgba(var(--color-primary-100), 0.5);&#10; }&#10;}&#10;&#10;/* Mobile: stacked cards */&#10;@media screen and (max-width: 678px) {&#10; .season-table-container {&#10; overflow-x: visible;&#10; }&#10; .table-header {&#10; display: none;&#10; }&#10; .table-row {&#10; display: block;&#10; border: 1px solid rgba(var(--color-neutral-200), 1);&#10; border-radius: 0.5rem;&#10; margin-bottom: 1em;&#10; padding: 1em;&#10; background-color: rgba(var(--color-neutral-50), 0.5);&#10; }&#10; .table-row.bold {&#10; background-color: rgba(var(--color-primary-100), 0.5);&#10; }&#10; .cell {&#10; display: flex;&#10; justify-content: space-between;&#10; padding: 0.4em 0;&#10; border: none; /* No internal borders – uniform outer border only */&#10; overflow-wrap: anywhere; /* Allow breaking anywhere on very small screens */&#10; }&#10; .cell::before {&#10; content: attr(data-label) ":";&#10; font-weight: 600;&#10; color: rgba(var(--color-neutral-700), 1);&#10; margin-right: 0.5em;&#10; flex-shrink: 1; /* Allows the label to shrink and wrap */&#10; min-width: 0;&#10; overflow-wrap: break-word;&#10; white-space: normal;&#10; }&#10; /* Right‑align the year and season‑time values so they stay flush right even when wrapping */&#10; .cell &gt; span {&#10; flex-grow: 1;&#10; text-align: right;&#10; }&#10;}&#10;&#10;/* Dark mode overrides */&#10;html.dark .table-header {&#10; background-color: rgba(var(--color-neutral-800), 1);&#10; border-bottom-color: rgba(var(--color-neutral-700), 1);&#10;}&#10;html.dark .table-row {&#10; border-color: rgba(var(--color-neutral-700), 1);&#10; background-color: rgba(var(--color-neutral-800), 0.5);&#10;}&#10;html.dark .table-row.bold {&#10; background-color: rgba(var(--color-primary-800), 0.5);&#10;}&#10;html.dark .cell::before {&#10; color: rgba(var(--color-neutral-200), 1);&#10;}&#10;&lt;/style&gt;&#10;&#10;&lt;h3 class="relative group"&gt;Tahun Terdekat&#10; &lt;div id="tahun-terdekat" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#tahun-terdekat" aria-label="Pautan"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;div class="season-table-container"&gt;&lt;div class="season-table"&gt;&#10;&lt;div class="table-header"&gt;&lt;div class="cell year-cell"&gt;Tahun&lt;/div&gt;&lt;div class="cell"&gt;Ekuinoks Mac&lt;/div&gt;&lt;div class="cell"&gt;Solstis Jun&lt;/div&gt;&lt;div class="cell"&gt;Ekuinoks September&lt;/div&gt;&lt;div class="cell"&gt;Solstis Disember&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;2025&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;20 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;17:01:28.933&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;10:42:15.681&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;02:19:20.498&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;23:03:05.140&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row bold"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;2026&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;20 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;22:45:57.447&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;16:24:30.345&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;08:05:13.167&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;04:50:14.174&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;2027&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;04:24:41.335&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;22:10:50.038&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;14:01:43.125&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;10:42:09.552&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;&lt;/div&gt;&#10;&#10;&lt;h3 class="relative group"&gt;2030-an&#10; &lt;div id="2030-an" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#2030-an" aria-label="Pautan"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;div class="season-table-container"&gt;&lt;div class="season-table"&gt;&#10;&lt;div class="table-header"&gt;&lt;div class="cell year-cell"&gt;Tahun&lt;/div&gt;&lt;div class="cell"&gt;Ekuinoks Mac&lt;/div&gt;&lt;div class="cell"&gt;Solstis Jun&lt;/div&gt;&lt;div class="cell"&gt;Ekuinoks September&lt;/div&gt;&lt;div class="cell"&gt;Solstis Disember&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;2030&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;20 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;21:52:05.708&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;15:31:18.817&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;07:26:53.274&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;04:09:37.919&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;2031&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;03:40:58.551&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;21:17:08.348&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;13:15:18.222&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;09:55:33.744&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;2032&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;20 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;09:21:53.884&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;03:08:46.241&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;19:10:53.245&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;15:55:56.917&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;2033&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;20 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;15:22:43.846&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;09:01:08.669&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;00:51:41.021&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;21:46:00.458&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;2034&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;20 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;21:17:30.431&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;14:44:12.376&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;06:39:35.038&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;03:34:00.818&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;2035&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;03:02:44.627&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;20:33:08.676&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;12:38:56.944&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;09:30:53.420&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;2036&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;20 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;09:02:51.093&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;02:32:14.828&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;18:23:20.336&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;15:12:53.809&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;2037&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;20 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;14:50:16.947&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;08:22:27.958&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;00:13:06.655&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;21:07:45.918&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;2038&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;20 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;20:40:39.484&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;14:09:25.327&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;06:02:18.393&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;03:02:21.400&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;2039&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;02:32:04.088&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;19:57:27.312&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;11:49:38.738&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;08:40:37.681&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;&lt;/div&gt;&#10;&#10;&lt;h3 class="relative group"&gt;2020-an&#10; &lt;div id="2020-an" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#2020-an" aria-label="Pautan"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;div class="season-table-container"&gt;&lt;div class="season-table"&gt;&#10;&lt;div class="table-header"&gt;&lt;div class="cell year-cell"&gt;Tahun&lt;/div&gt;&lt;div class="cell"&gt;Ekuinoks Mac&lt;/div&gt;&lt;div class="cell"&gt;Solstis Jun&lt;/div&gt;&lt;div class="cell"&gt;Ekuinoks September&lt;/div&gt;&lt;div class="cell"&gt;Solstis Disember&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;2020&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;20 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;11:49:37.119&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;05:43:40.939&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;21:30:39.282&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;18:02:20.450&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;2021&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;20 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;17:37:28.522&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;11:32:09.841&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;03:21:05.513&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;23:59:18.267&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;2022&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;20 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;23:33:24.903&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;17:13:51.057&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;09:03:42.257&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;05:48:13.007&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;2023&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;05:24:26.496&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;22:57:49.697&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;14:49:59.557&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;11:27:21.883&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;2024&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;20 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;11:06:24.153&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;04:50:59.802&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;20:43:39.596&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;17:20:34.202&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;2025&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;20 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;17:01:28.933&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;10:42:15.681&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;02:19:20.498&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;23:03:05.140&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row bold"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;2026&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;20 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;22:45:57.447&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;16:24:30.345&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;08:05:13.167&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;04:50:14.174&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;2027&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;04:24:41.335&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;22:10:50.038&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;14:01:43.125&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;10:42:09.552&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;2028&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;20 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;10:17:08.212&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;04:02:00.229&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;19:45:18.371&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;16:19:39.845&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;2029&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;20 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;16:01:58.597&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;09:48:17.589&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;01:38:30.235&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;22:14:06.295&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;&lt;/div&gt;&#10;&#10;&lt;h3 class="relative group"&gt;2010-an&#10; &lt;div id="2010-an" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#2010-an" aria-label="Pautan"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;div class="season-table-container"&gt;&lt;div class="season-table"&gt;&#10;&lt;div class="table-header"&gt;&lt;div class="cell year-cell"&gt;Tahun&lt;/div&gt;&lt;div class="cell"&gt;Ekuinoks Mac&lt;/div&gt;&lt;div class="cell"&gt;Solstis Jun&lt;/div&gt;&lt;div class="cell"&gt;Ekuinoks September&lt;/div&gt;&lt;div class="cell"&gt;Solstis Disember&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;2010&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;01:32:12.007&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;19:28:24.516&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;11:09:01.722&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;07:38:27.431&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;2011&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;07:20:43.426&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;01:16:30.255&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;17:04:38.299&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;13:30:02.824&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;2012&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;20 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;13:14:25.662&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;07:08:49.055&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;22:48:58.064&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;19:11:36.537&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;2013&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;20 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;19:01:54.745&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;13:03:57.030&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;04:44:08.266&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;01:11:00.281&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;2014&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;00:57:05.595&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;18:51:14.306&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;10:29:04.967&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;07:03:01.611&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;2015&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;06:45:09.338&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;00:37:55.811&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;16:20:32.716&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;12:47:56.662&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;2016&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;20 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;12:30:11.161&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;06:34:11.020&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;22:21:07.623&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;18:44:10.752&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;2017&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;20 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;18:28:37.878&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;12:24:08.925&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;04:01:47.909&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;00:27:56.779&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;2018&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;00:15:27.308&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;18:07:17.741&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;09:54:05.661&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;06:22:44.117&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;2019&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;05:58:25.821&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;23:54:14.957&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;15:50:10.546&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;12:19:26.078&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;&lt;/div&gt;&#10;&#10;&lt;h3 class="relative group"&gt;2000-an&#10; &lt;div id="2000-an" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#2000-an" aria-label="Pautan"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;div class="season-table-container"&gt;&lt;div class="season-table"&gt;&#10;&lt;div class="table-header"&gt;&lt;div class="cell year-cell"&gt;Tahun&lt;/div&gt;&lt;div class="cell"&gt;Ekuinoks Mac&lt;/div&gt;&lt;div class="cell"&gt;Solstis Jun&lt;/div&gt;&lt;div class="cell"&gt;Ekuinoks September&lt;/div&gt;&lt;div class="cell"&gt;Solstis Disember&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;2000&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;20 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;15:35:14.351&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;09:47:42.049&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;01:27:35.348&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;21:37:25.451&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;2001&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;20 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;21:30:42.327&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;15:37:43.244&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;07:04:28.385&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;03:21:29.375&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;2002&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;03:16:08.344&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;21:24:24.207&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;12:55:23.544&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;09:14:22.106&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;2003&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;08:59:45.674&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;03:10:27.506&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;18:46:49.259&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;15:03:48.746&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;2004&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;20 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;14:48:38.060&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;08:56:52.248&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;00:29:50.054&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;20:41:36.284&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;2005&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;20 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;20:33:25.066&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;14:46:07.492&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;06:23:10.167&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;02:34:56.679&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;2006&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;02:25:33.734&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;20:25:50.983&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;12:03:22.176&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;08:22:05.352&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;2007&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;08:07:24.913&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;02:06:25.223&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;17:51:13.338&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;14:07:48.507&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;2008&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;20 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;13:48:17.445&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;07:59:21.622&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;23:44:29.037&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;20:03:45.545&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;2009&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;20 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;19:43:37.473&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;13:45:31.091&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;05:18:34.935&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;01:46:47.213&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;&lt;/div&gt;&#10;&#10;&lt;h3 class="relative group"&gt;1990-an&#10; &lt;div id="1990-an" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#1990-an" aria-label="Pautan"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;div class="season-table-container"&gt;&lt;div class="season-table"&gt;&#10;&lt;div class="table-header"&gt;&lt;div class="cell year-cell"&gt;Tahun&lt;/div&gt;&lt;div class="cell"&gt;Ekuinoks Mac&lt;/div&gt;&lt;div class="cell"&gt;Solstis Jun&lt;/div&gt;&lt;div class="cell"&gt;Ekuinoks September&lt;/div&gt;&lt;div class="cell"&gt;Solstis Disember&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1990&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;05:19:15.260&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;23:32:47.293&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;14:55:29.766&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;11:06:59.354&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1991&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;11:01:55.037&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;05:18:46.197&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;20:48:04.738&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;16:53:38.279&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1992&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;20 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;16:48:02.707&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;11:14:09.124&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;02:42:45.756&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;22:43:13.306&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1993&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;20 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;22:40:37.748&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;16:59:44.096&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;08:22:27.709&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;04:25:47.648&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1994&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;04:28:00.089&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;22:47:32.113&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;14:19:11.900&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;10:22:42.208&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1995&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;10:14:24.786&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;04:34:22.321&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;20:12:59.160&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;16:16:47.824&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1996&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;20 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;16:03:03.762&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;10:23:43.478&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;02:00:05.705&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;22:05:52.933&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1997&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;20 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;21:54:39.428&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;16:19:55.938&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;07:55:45.702&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;04:07:01.553&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1998&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;03:54:31.521&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;22:02:34.342&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;13:37:11.513&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;09:56:27.655&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1999&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;09:45:48.385&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;03:49:06.136&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;19:31:29.777&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;15:43:47.876&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;&lt;/div&gt;&#10;&#10;&lt;h3 class="relative group"&gt;1980-an&#10; &lt;div id="1980-an" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#1980-an" aria-label="Pautan"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;div class="season-table-container"&gt;&lt;div class="season-table"&gt;&#10;&lt;div class="table-header"&gt;&lt;div class="cell year-cell"&gt;Tahun&lt;/div&gt;&lt;div class="cell"&gt;Ekuinoks Mac&lt;/div&gt;&lt;div class="cell"&gt;Solstis Jun&lt;/div&gt;&lt;div class="cell"&gt;Ekuinoks September&lt;/div&gt;&lt;div class="cell"&gt;Solstis Disember&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1980&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;20 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;19:09:40.278&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;13:47:00.199&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;05:08:40.471&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;00:56:04.900&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1981&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;01:02:50.648&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;19:44:40.773&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;11:05:11.284&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;06:50:31.914&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1982&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;06:55:50.051&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;01:22:59.567&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;16:46:10.577&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;12:38:08.330&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1983&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;12:38:44.215&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;07:08:40.199&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;22:41:35.461&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;18:29:54.555&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1984&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;20 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;18:24:19.188&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;13:02:13.405&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;04:32:53.175&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;00:22:48.699&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1985&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;00:13:43.885&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;18:44:07.795&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;10:07:26.043&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;06:07:38.944&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1986&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;06:02:40.990&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;00:29:57.358&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;15:58:51.815&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;12:02:07.434&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1987&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;11:51:57.540&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;06:10:44.830&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;21:45:16.305&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;17:45:53.018&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1988&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;20 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;17:38:35.642&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;11:56:31.250&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;03:28:50.194&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;23:27:52.560&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1989&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;20 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;23:28:14.908&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;17:53:00.884&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;09:19:36.171&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;05:22:00.989&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;&lt;/div&gt;&#10;&#10;&lt;h3 class="relative group"&gt;1970-an&#10; &lt;div id="1970-an" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#1970-an" aria-label="Pautan"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;div class="season-table-container"&gt;&lt;div class="season-table"&gt;&#10;&lt;div class="table-header"&gt;&lt;div class="cell year-cell"&gt;Tahun&lt;/div&gt;&lt;div class="cell"&gt;Ekuinoks Mac&lt;/div&gt;&lt;div class="cell"&gt;Solstis Jun&lt;/div&gt;&lt;div class="cell"&gt;Ekuinoks September&lt;/div&gt;&lt;div class="cell"&gt;Solstis Disember&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1970&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;08:56:15.906&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;03:42:35.702&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;18:58:55.103&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;14:35:37.799&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1971&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;14:38:06.136&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;09:19:33.605&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;24 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;00:44:51.704&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;20:23:53.261&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1972&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;20 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;20:21:23.621&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;15:06:09.642&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;06:32:43.496&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;02:12:52.845&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1973&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;02:12:25.023&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;21:00:33.729&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;12:21:06.324&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;08:07:41.740&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1974&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;08:06:35.946&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;02:37:35.531&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;17:58:24.475&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;13:55:56.271&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1975&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;13:56:38.939&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;08:26:24.873&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;23:55:10.818&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;19:45:33.068&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1976&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;20 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;19:49:34.157&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;14:24:10.826&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;05:48:10.278&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;01:35:07.532&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1977&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;01:42:15.067&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;20:13:44.568&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;11:29:13.966&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;07:23:08.421&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1978&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;07:33:32.136&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;02:09:32.774&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;17:25:23.662&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;13:20:57.525&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1979&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;13:21:54.835&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;07:56:09.780&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;23:16:23.006&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;19:09:45.281&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;&lt;/div&gt;&#10;&#10;&lt;h3 class="relative group"&gt;1960-an&#10; &lt;div id="1960-an" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#1960-an" aria-label="Pautan"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;div class="season-table-container"&gt;&lt;div class="season-table"&gt;&#10;&lt;div class="table-header"&gt;&lt;div class="cell year-cell"&gt;Tahun&lt;/div&gt;&lt;div class="cell"&gt;Ekuinoks Mac&lt;/div&gt;&lt;div class="cell"&gt;Solstis Jun&lt;/div&gt;&lt;div class="cell"&gt;Ekuinoks September&lt;/div&gt;&lt;div class="cell"&gt;Solstis Disember&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1960&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;20 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;22:42:28.576&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;17:42:06.470&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;08:58:40.691&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;04:25:45.118&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1961&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;04:31:56.118&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;23:29:55.956&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;14:42:16.264&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;10:19:18.150&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1962&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;10:29:22.539&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;05:23:57.062&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;20:35:03.068&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;16:15:06.556&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1963&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;16:19:31.883&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;11:03:52.448&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;24 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;02:23:21.071&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;22:01:44.309&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1964&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;20 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;22:09:43.121&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;16:56:40.017&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;08:16:31.049&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;03:49:23.991&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1965&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;04:04:37.401&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;22:55:33.512&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;14:05:52.494&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;09:40:18.467&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1966&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;09:52:47.962&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;04:33:15.597&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;19:43:01.932&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;15:28:03.551&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1967&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;15:36:42.423&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;10:22:44.523&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;24 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;01:37:57.076&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;21:16:13.061&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1968&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;20 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;21:21:55.684&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;16:13:11.773&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;07:26:06.344&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;02:59:41.299&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1969&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;03:08:01.678&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;21:54:58.979&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;13:06:50.020&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;08:43:38.560&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;&lt;/div&gt;&#10;&#10;&lt;h3 class="relative group"&gt;1950-an&#10; &lt;div id="1950-an" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#1950-an" aria-label="Pautan"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;div class="season-table-container"&gt;&lt;div class="season-table"&gt;&#10;&lt;div class="table-header"&gt;&lt;div class="cell year-cell"&gt;Tahun&lt;/div&gt;&lt;div class="cell"&gt;Ekuinoks Mac&lt;/div&gt;&lt;div class="cell"&gt;Solstis Jun&lt;/div&gt;&lt;div class="cell"&gt;Ekuinoks September&lt;/div&gt;&lt;div class="cell"&gt;Solstis Disember&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1950&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;12:34:53.363&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;07:35:46.712&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;22:43:18.553&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;18:13:04.911&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1951&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;18:25:27.771&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;13:24:34.433&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;24 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;04:36:36.122&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;23:59:49.033&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1952&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;00:13:30.497&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;19:12:18.016&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;10:23:25.811&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;05:42:54.436&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1953&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;06:00:15.520&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;00:59:42.056&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;16:05:39.293&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;11:31:13.029&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1954&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;11:53:10.562&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;06:53:48.300&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;21:55:02.013&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;17:24:07.097&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1955&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;17:34:51.915&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;12:31:08.662&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;24 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;03:40:39.552&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;23:10:40.812&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1956&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;20 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;23:20:04.157&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;18:23:31.181&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;09:34:49.956&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;04:59:15.942&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1957&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;05:16:15.906&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;00:20:18.545&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;15:25:51.959&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;10:48:24.976&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1958&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;11:05:36.227&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;05:56:41.953&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;21:08:38.619&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;16:39:30.463&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1959&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;16:54:19.724&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;11:49:34.533&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;24 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;03:08:15.061&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;22:34:08.510&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;&lt;/div&gt;&#10;&#10;&lt;h3 class="relative group"&gt;1940-an&#10; &lt;div id="1940-an" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#1940-an" aria-label="Pautan"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;div class="season-table-container"&gt;&lt;div class="season-table"&gt;&#10;&lt;div class="table-header"&gt;&lt;div class="cell year-cell"&gt;Tahun&lt;/div&gt;&lt;div class="cell"&gt;Ekuinoks Mac&lt;/div&gt;&lt;div class="cell"&gt;Solstis Jun&lt;/div&gt;&lt;div class="cell"&gt;Ekuinoks September&lt;/div&gt;&lt;div class="cell"&gt;Solstis Disember&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1940&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;02:23:23.190&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;21:36:04.385&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;12:45:13.950&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;07:54:23.801&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1941&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;08:20:02.571&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;03:32:57.921&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;18:32:25.488&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;13:43:49.457&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1942&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;14:10:18.068&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;09:15:55.571&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;24 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;00:16:08.219&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;19:39:14.123&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1943&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;20:02:17.483&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;15:12:00.028&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;24 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;06:11:24.771&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;01:28:47.536&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1944&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;01:48:17.229&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;21:01:58.955&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;12:01:19.477&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;07:14:30.098&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1945&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;07:36:54.051&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;02:51:45.534&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;17:49:28.736&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;13:03:16.397&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1946&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;13:32:22.984&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;08:44:02.122&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;23:40:20.474&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;18:53:02.746&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1947&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;19:12:23.377&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;14:18:31.895&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;24 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;05:28:20.367&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;00:42:29.548&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1948&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;00:56:30.066&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;20:10:18.432&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;11:21:25.390&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;06:32:59.912&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1949&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;06:47:45.917&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;02:02:29.418&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;17:05:34.254&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;12:22:37.435&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;&lt;/div&gt;&#10;&#10;&lt;h3 class="relative group"&gt;1930-an&#10; &lt;div id="1930-an" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#1930-an" aria-label="Pautan"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;div class="season-table-container"&gt;&lt;div class="season-table"&gt;&#10;&lt;div class="table-header"&gt;&lt;div class="cell year-cell"&gt;Tahun&lt;/div&gt;&lt;div class="cell"&gt;Ekuinoks Mac&lt;/div&gt;&lt;div class="cell"&gt;Solstis Jun&lt;/div&gt;&lt;div class="cell"&gt;Ekuinoks September&lt;/div&gt;&lt;div class="cell"&gt;Solstis Disember&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1930&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;16:29:23.863&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;11:52:28.150&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;24 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;02:35:34.728&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;21:39:11.459&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1931&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;22:05:55.770&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;17:27:42.116&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;24 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;08:22:56.479&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;03:29:12.913&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1932&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;03:53:13.185&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;23:22:15.702&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;14:15:31.504&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;09:13:53.434&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1933&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;09:42:44.231&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;05:11:27.438&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;20:00:46.738&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;14:57:08.500&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1934&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;15:27:32.934&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;10:47:33.087&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;24 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;01:44:49.354&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;20:49:03.731&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1935&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;21:17:23.184&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;16:37:32.635&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;24 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;07:37:47.828&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;02:36:45.419&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1936&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;02:57:28.735&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;22:21:15.842&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;13:25:36.262&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;08:26:19.713&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1937&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;08:44:42.107&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;04:11:37.957&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;19:12:34.168&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;14:21:18.344&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1938&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;14:42:43.174&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;10:03:13.690&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;24 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;00:59:09.074&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;20:13:02.951&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1939&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;20:28:06.262&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;15:39:04.738&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;24 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;06:49:05.556&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;02:05:37.666&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;&lt;/div&gt;&#10;&#10;&lt;h3 class="relative group"&gt;1920-an&#10; &lt;div id="1920-an" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#1920-an" aria-label="Pautan"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;div class="season-table-container"&gt;&lt;div class="season-table"&gt;&#10;&lt;div class="table-header"&gt;&lt;div class="cell year-cell"&gt;Tahun&lt;/div&gt;&lt;div class="cell"&gt;Ekuinoks Mac&lt;/div&gt;&lt;div class="cell"&gt;Solstis Jun&lt;/div&gt;&lt;div class="cell"&gt;Ekuinoks September&lt;/div&gt;&lt;div class="cell"&gt;Solstis Disember&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1920&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;05:58:53.812&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;01:39:25.347&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;16:27:43.903&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;11:16:35.859&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1921&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;11:50:38.792&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;07:35:16.051&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;22:19:22.200&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;17:07:03.207&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1922&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;17:48:12.742&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;13:26:19.331&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;24 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;04:09:11.636&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;22:56:33.398&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1923&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;23:28:22.868&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;19:02:22.724&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;24 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;10:03:11.575&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;04:52:54.122&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1924&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;05:19:45.377&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;00:59:00.303&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;15:57:54.539&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;10:45:06.432&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1925&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;11:11:48.713&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;06:49:36.128&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;21:43:01.370&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;16:36:16.684&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1926&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;17:00:48.568&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;12:29:39.548&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;24 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;03:26:14.928&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;22:32:59.166&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1927&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;22:58:43.785&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;18:21:49.079&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;24 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;09:16:34.498&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;04:18:07.702&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1928&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;04:43:53.312&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;00:06:04.239&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;15:05:08.403&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;10:03:18.370&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1929&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;10:34:28.451&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;06:00:14.989&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;20:51:56.777&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;15:52:23.027&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;&lt;/div&gt;&#10;&#10;&lt;h3 class="relative group"&gt;1910-an&#10; &lt;div id="1910-an" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#1910-an" aria-label="Pautan"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;div class="season-table-container"&gt;&lt;div class="season-table"&gt;&#10;&lt;div class="table-header"&gt;&lt;div class="cell year-cell"&gt;Tahun&lt;/div&gt;&lt;div class="cell"&gt;Ekuinoks Mac&lt;/div&gt;&lt;div class="cell"&gt;Solstis Jun&lt;/div&gt;&lt;div class="cell"&gt;Ekuinoks September&lt;/div&gt;&lt;div class="cell"&gt;Solstis Disember&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1910&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;20:02:20.166&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;15:48:09.470&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;24 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;06:30:11.821&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;01:11:12.099&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1911&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;01:53:50.013&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;21:35:00.638&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;24 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;12:17:00.866&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;06:52:40.590&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1912&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;07:28:50.013&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;03:16:22.377&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;18:07:30.459&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;12:44:11.530&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1913&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;13:17:27.434&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;09:08:59.191&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;23:52:15.735&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;18:34:24.113&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1914&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;19:10:14.736&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;14:54:33.854&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;24 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;05:33:19.457&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;00:21:56.856&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1915&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;00:50:48.968&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;20:28:54.889&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;24 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;11:23:20.566&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;06:15:19.708&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1916&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;06:46:25.959&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;02:23:58.405&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;17:14:19.084&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;11:58:07.499&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1917&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;12:36:48.611&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;08:13:53.615&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;22:59:44.015&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;17:45:16.021&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1918&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;18:25:12.842&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;13:59:12.210&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;24 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;04:45:14.479&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;23:41:05.877&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1919&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;00:18:43.433&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;19:53:10.265&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;24 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;10:34:57.993&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;05:26:41.108&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;&lt;/div&gt;&#10;&#10;&lt;h3 class="relative group"&gt;1900-an&#10; &lt;div id="1900-an" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#1900-an" aria-label="Pautan"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;div class="season-table-container"&gt;&lt;div class="season-table"&gt;&#10;&lt;div class="table-header"&gt;&lt;div class="cell year-cell"&gt;Tahun&lt;/div&gt;&lt;div class="cell"&gt;Ekuinoks Mac&lt;/div&gt;&lt;div class="cell"&gt;Solstis Jun&lt;/div&gt;&lt;div class="cell"&gt;Ekuinoks September&lt;/div&gt;&lt;div class="cell"&gt;Solstis Disember&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1900&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;09:38:15.937&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;05:39:02.061&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;20:19:26.636&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;14:40:49.968&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1901&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;15:22:50.961&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;11:27:04.118&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;24 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;02:08:13.046&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;20:35:53.561&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1902&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;21:15:50.879&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;17:14:25.489&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;24 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;07:54:38.133&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;02:34:49.968&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1903&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;03:14:05.102&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;23:04:15.007&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;24 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;13:43:00.622&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;08:19:45.264&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1904&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;08:57:53.106&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;04:50:41.018&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;19:39:33.199&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;14:13:17.332&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1905&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;14:56:52.263&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;10:50:43.698&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;24 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;01:29:19.011&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;20:03:04.404&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1906&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;20:52:10.523&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;16:41:10.759&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;24 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;07:14:22.494&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;01:52:40.909&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1907&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;02:32:23.119&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;22:22:23.776&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;24 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;13:08:18.082&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;07:50:57.473&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1908&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;08:26:38.779&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;04:18:28.040&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;23 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;18:57:41.690&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;13:32:51.542&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;div class="table-row"&gt;&lt;div class="cell year-cell" data-label="Tahun"&gt;&lt;span&gt;1909&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks Mac"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;21 Mac&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;14:12:23.527&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Jun"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Jun&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;10:04:59.020&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Ekuinoks September"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;24 September&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;00:43:57.708&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="cell" data-label="Solstis Disember"&gt;&lt;span&gt;&lt;span style="user-select: all; cursor: pointer;"&gt;&lt;span style="text-wrap: nowrap"&gt;22 Disember&lt;/span&gt; &lt;span style="text-wrap: nowrap"&gt;19:19:15.062&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;&lt;/div&gt;&#10;&#10;&lt;h3 class="relative group"&gt;Versi Perisian&#10; &lt;div id="versi-perisian" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#versi-perisian" aria-label="Pautan"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th style="text-align: left"&gt;Perisian&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th style="text-align: left"&gt;Versi&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;Python&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;3.14.4&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;skyfield&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;1.54&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;Efemeris&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;de442.bsp&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;&lt;em&gt;Jadual dijana pada: 22 Julai 2026 20:49:32 UTC+8&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Pegunan Bulan</title><link>https://kosmik.my/nebula/ms/lunar-standstills/intro/</link><pubDate>Sat, 03 Jan 2026 00:00:00 +0800</pubDate><guid>https://kosmik.my/nebula/ms/lunar-standstills/intro/</guid><description>&lt;style&gt;&#10;.ls-tbl{display:table;width:100%;overflow:visible}&#10;.ls-tbl td{vertical-align:top}&#10;.ls-moon{display:inline-flex;align-items:center;gap:.55em;text-align:left;vertical-align:middle}&#10;.ls-moon&gt;svg{flex:0 0 auto;display:block}&#10;.ls-moon-info{display:flex;flex-direction:column;line-height:1.3;min-width:0}&#10;.ls-moon-name{font-weight:600;white-space:nowrap}&#10;.ls-moon-pct{font-size:.82em;opacity:.82}&#10;.ls-moon-age{font-size:.78em;opacity:.68;white-space:normal}&#10;.ls-moon-age-lbl{font-weight:600;opacity:.85}&#10;@media(max-width:640px){&#10;.ls-tbl thead{display:none}&#10;.ls-tbl,.ls-tbl tbody,.ls-tbl tr{display:block}&#10;.ls-tbl tr{padding:.3em 0}&#10;.ls-tbl tbody tr{border-top-width:1px;border-top-color:var(--tw-prose-td-borders)}&#10;.ls-tbl tbody tr:first-child{border-top-color:var(--tw-prose-th-borders)}&#10;.ls-tbl tbody tr:last-child{border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}&#10;.ls-tbl td{display:flex;justify-content:space-between;align-items:baseline;padding:3px 0;text-align:right;white-space:normal}&#10;.ls-tbl td::before{content:attr(data-label);flex-shrink:0;text-align:left;font-weight:600;padding-right:.75em;white-space:nowrap;color:var(--tw-prose-headings,currentColor);opacity:.8}&#10; .ls-moon{align-items:center;flex-direction:row-reverse}&#10; .ls-moon-info{align-items:flex-end;text-align:right}&#10; }&#10;/* Chart SVG shared styles — repetitive stroke/font attributes live here&#10; so each marker/grid/legend element carries only its unique values. */&#10;.ls-c{cursor:pointer}&#10;.ls-mk{stroke:#fff;stroke-opacity:.5;stroke-width:1.2;opacity:.9}&#10;.ls-mt{font:bold 10px system-ui;fill:#fff;text-anchor:middle;dominant-baseline:middle;pointer-events:none}&#10;.ls-g0{stroke:#fff;stroke-opacity:.55;stroke-width:1.2}&#10;.ls-g1{stroke:#fff;stroke-opacity:.2;stroke-width:.6}&#10;.ls-gl{font:10px system-ui;fill:#fff;fill-opacity:.45;text-anchor:end;dominant-baseline:middle}&#10;.ls-tk{stroke:#fff;stroke-opacity:.3}&#10;.ls-tl{font:9px system-ui;fill:#fff;fill-opacity:.45;text-anchor:middle}&#10;.ls-lg{opacity:.85}&#10;.ls-lg2{opacity:.75}&#10;.ls-lt{font:9px system-ui;fill:#fff;fill-opacity:.6;dominant-baseline:middle}&#10;.ls-ax{stroke:#fff;stroke-opacity:.4}&#10;.ls-al{font:10px system-ui;fill:#fff;fill-opacity:.45;text-anchor:middle;dominant-baseline:middle}&#10;.ls-th{font:9px system-ui;fill:#fff;fill-opacity:.28;text-anchor:end}&#10;&lt;/style&gt;&#10;&lt;script&gt;//&lt;![CDATA[&#10;(function(){&#10;// ── Tooltip helpers — tooltip data lives in the SVG's data-tooltipmap&#10;// JSON attribute; clicking a marker renders its tooltip group on demand,&#10;// clicking anywhere else removes it. Works for inline charts and for&#10;// lightbox clones (attributes survive cloneNode) via one delegated listener.&#10;window.lsRemoveTip=function(svg){&#10;var ex=svg.querySelector('[data-active-tip]');&#10;if(ex)ex.parentNode.removeChild(ex);&#10;};&#10;window.lsMoonPath=function(pa,ill){&#10;var e=((pa%360)+360)%360;&#10;var waxing=e&lt;180;&#10;var gibbous=ill&gt;0.5;&#10;var r=46,c=50;&#10;var rx=r*Math.abs(2*ill-1);&#10;var top=c+' '+(c-r),bot=c+' '+(c+r);&#10;var s='&lt;circle cx="50" cy="50" r="46" fill="#3b4358"/&gt;';&#10;if(ill&gt;=0.995){&#10;s+='&lt;circle cx="50" cy="50" r="46" fill="#f2ecd0"/&gt;';&#10;}else if(ill&gt;0.005){&#10;var limb,term;&#10;if(waxing){&#10;limb='M '+top+' A '+r+' '+r+' 0 0 1 '+bot;&#10;term=gibbous?'A '+rx+' '+r+' 0 0 1 '+top:'A '+rx+' '+r+' 0 0 0 '+top;&#10;}else{&#10;limb='M '+top+' A '+r+' '+r+' 0 0 0 '+bot;&#10;term=gibbous?'A '+rx+' '+r+' 0 0 0 '+top:'A '+rx+' '+r+' 0 0 1 '+top;&#10;}&#10;s+='&lt;path d="'+limb+' '+term+' Z" fill="#f2ecd0"/&gt;';&#10;}&#10;s+='&lt;circle cx="50" cy="50" r="46" fill="none" stroke="#828b9c" stroke-width="2"/&gt;';&#10;return s;&#10;};&#10;window.lsShowTip=function(svg,key){&#10;lsRemoveTip(svg);&#10;var map;&#10;try{map=JSON.parse(svg.getAttribute('data-tooltipmap'));}catch(e){return;}&#10;var d=map[key];&#10;if(!d)return;&#10;var ns='http://www.w3.org/2000/svg';&#10;var g=document.createElementNS(ns,'g');&#10;g.setAttribute('data-active-tip',key);&#10;g.setAttribute('pointer-events','none');&#10;var rect=document.createElementNS(ns,'rect');&#10;rect.setAttribute('x',d.x);rect.setAttribute('y',d.y);&#10;rect.setAttribute('width',d.w);rect.setAttribute('height',d.h);&#10;rect.setAttribute('rx','5');&#10;rect.setAttribute('fill','black');rect.setAttribute('fill-opacity','0.62');&#10;rect.setAttribute('stroke',d.a);rect.setAttribute('stroke-width','1.2');rect.setAttribute('stroke-opacity','0.85');&#10;g.appendChild(rect);&#10;if(typeof d.p==='number'&amp;&amp;typeof d.i==='number'){&#10;var sz=Math.floor(d.h/2),m=5;&#10;var mpg=document.createElementNS(ns,'g');&#10;mpg.setAttribute('transform','translate('+(d.x+d.w-sz-m)+','+(d.y+m)+') scale('+(sz/100)+')');&#10;if(d.n){mpg.setAttribute('role','img');mpg.setAttribute('aria-label',d.n);}&#10;mpg.innerHTML=lsMoonPath(d.p,d.i);&#10;g.appendChild(mpg);&#10;}&#10;var lines=d.l.split('\n');&#10;for(var i=0;i&lt;lines.length;i++){&#10;var t=document.createElementNS(ns,'text');&#10;t.setAttribute('x',d.x+10);t.setAttribute('y',d.y+14+i*17);&#10;t.setAttribute('font-size','10');&#10;t.setAttribute('fill',i===0?d.a:'white');&#10;t.setAttribute('fill-opacity','0.95');&#10;t.setAttribute('font-weight',i===0?'bold':'normal');&#10;t.textContent=lines[i];&#10;g.appendChild(t);&#10;}&#10;svg.appendChild(g);&#10;};&#10;// ── Delegated clicks: marker shows its tooltip, background removes it ─&#10;document.addEventListener('click',function(e){&#10;var el=e.target.closest?e.target.closest('[data-tipkey]'):null;&#10;if(el){&#10;var svg=el.closest('svg[data-tooltipmap]');&#10;if(svg){e.stopPropagation();lsShowTip(svg,el.getAttribute('data-tipkey'));}&#10;return;&#10;}&#10;var svg2=e.target.closest?e.target.closest('svg[data-tooltipmap]'):null;&#10;if(svg2)lsRemoveTip(svg2);&#10;});&#10;// ── Lightbox — runs only once per page ───────────────────────────&#10;if(window._lsLbInit)return;&#10;window._lsLbInit=true;&#10;// Overlay — flex column so topBar stays fixed-height and holder fills the rest.&#10;// overflow:hidden on the overlay prevents any body scroll bleed-through.&#10;var ov=document.createElement('div');&#10;ov.style.cssText='display:none;position:fixed;inset:0;z-index:9000;background:#0d1117;flex-direction:column;overflow:hidden;';&#10;// ── Header row ────────────────────────────────────────────────────&#10;// lSpacer mirrors closeBtn's min-width so the titleGroup stays centred.&#10;var topBar=document.createElement('div');&#10;topBar.style.cssText='flex-shrink:0;background:#0d1117;display:flex;align-items:center;gap:10px;padding:8px 14px;';&#10;var lSpacer=document.createElement('div');&#10;lSpacer.style.cssText='flex-shrink:0;min-width:88px;';&#10;topBar.appendChild(lSpacer);&#10;var titleGroup=document.createElement('div');&#10;titleGroup.style.cssText='flex:1;text-align:center;overflow:hidden;pointer-events:none;';&#10;var titleEl=document.createElement('div');&#10;titleEl.style.cssText='color:#e6edf3;font-size:15px;font-family:system-ui,sans-serif;font-weight:600;line-height:1.3;';&#10;var hintEl=document.createElement('div');&#10;hintEl.style.cssText='color:rgba(230,237,243,0.35);font-size:11px;font-family:system-ui,sans-serif;margin-top:2px;line-height:1.4;';&#10;hintEl.textContent='Tatal atau cubit untuk zum · Seret untuk imbas · Klik dua kali untuk tetapkan semula';&#10;titleGroup.appendChild(titleEl);&#10;titleGroup.appendChild(hintEl);&#10;topBar.appendChild(titleGroup);&#10;var closeBtn=document.createElement('button');&#10;closeBtn.textContent='✕ Tutup';&#10;closeBtn.style.cssText='padding:10px 24px;font-size:14px;font-family:system-ui,sans-serif;cursor:pointer;border:1px solid rgba(255,255,255,0.45);border-radius:6px;background:rgba(255,255,255,0.10);color:#e6edf3;flex-shrink:0;touch-action:manipulation;min-height:44px;min-width:88px;';&#10;topBar.appendChild(closeBtn);&#10;// ── Chart area — fills every pixel below the header ───────────────&#10;// min-height:0 is required: flex children default to min-height:auto&#10;// which prevents them shrinking below their content size.&#10;var holder=document.createElement('div');&#10;holder.style.cssText='flex:1;min-height:0;overflow:hidden;';&#10;ov.appendChild(topBar);&#10;ov.appendChild(holder);&#10;document.body.appendChild(ov);&#10;var _savedBodyOverflow='';&#10;function closeLb(){ov.style.display='none';holder.innerHTML='';document.body.style.overflow=_savedBodyOverflow;}&#10;closeBtn.addEventListener('click',closeLb);&#10;ov.addEventListener('click',function(e){if(e.target===ov)closeLb();});&#10;document.addEventListener('keydown',function(e){if(e.key==='Escape'&amp;&amp;ov.style.display!=='none')closeLb();});&#10;// ── Shared pan-state for lightbox mouse drag ──────────────────────&#10;var _lb={panFn:null,endFn:null};&#10;ov.addEventListener('mousemove',function(e){if(_lb.panFn)_lb.panFn(e);});&#10;ov.addEventListener('mouseup',function(){if(_lb.endFn)_lb.endFn();});&#10;ov.addEventListener('mouseleave',function(){if(_lb.endFn)_lb.endFn();});&#10;// ── Zoom / pan initialiser (called for each new lightbox SVG) ─────&#10;function initZoom(svg,W,H){&#10;var vb={x:0,y:0,w:W,h:H};&#10;var isPanning=false,panStart=null,panStartVB=null;&#10;var pinchDist=0,pinchMidX=0,pinchMidY=0,pinchStartVB=null;&#10;// Tap-detection state — a touch that barely moved within 350 ms is a tap.&#10;// initZoom calls e.preventDefault() in touchstart (needed to suppress the&#10;// browser's own pan/zoom), which stops the browser from synthesising a click&#10;// event from touch. We synthesise it ourselves in touchend so that marker&#10;// onclick handlers and the SVG background onclick both work on touchscreens.&#10;// _lastTap* tracks the previous tap for double-tap-to-reset detection&#10;// (Chromium on touch does not fire dblclick from touch events).&#10;var _tapEl=null,_tapT=0,_tapX=0,_tapY=0;&#10;var _lastTapT=0,_lastTapX=0,_lastTapY=0;&#10;function setVB(){svg.setAttribute('viewBox',vb.x+' '+vb.y+' '+vb.w+' '+vb.h);}&#10;// ── Rendering helpers ─────────────────────────────────────────────&#10;// The SVG uses preserveAspectRatio="xMidYMid meet", so the chart content&#10;// is letter-boxed inside the SVG element. Using the SVG element dimensions&#10;// directly (r.width / r.height) for pan calculations produces wildly&#10;// different sensitivities for x vs y on portrait phones (4-5× mismatch).&#10;// The correct divisor for both axes is the render scale:&#10;// renderScale = min(elementW/vbW, elementH/vbH)&#10;// which gives a uniform 1-screen-pixel = 1/renderScale chart-units feel.&#10;// The same correction is needed for zoom cursor anchoring.&#10;function renderScale(r,w,h){return Math.min(r.width/w,r.height/h);}&#10;function contentOff(r,w,h,rs){&#10;return{ox:(r.width-w*rs)/2,oy:(r.height-h*rs)/2};&#10;}&#10;svg.addEventListener('wheel',function(e){&#10;e.preventDefault();e.stopPropagation();&#10;var r=svg.getBoundingClientRect();&#10;var ratio=e.deltaY&gt;0?1.12:1/1.12;&#10;var rs=renderScale(r,vb.w,vb.h);&#10;var off=contentOff(r,vb.w,vb.h,rs);&#10;var nx=(e.clientX-r.left-off.ox)/(vb.w*rs);&#10;var ny=(e.clientY-r.top-off.oy)/(vb.h*rs);&#10;var fx=vb.x+nx*vb.w,fy=vb.y+ny*vb.h;&#10;vb.w*=ratio;vb.h*=ratio;&#10;vb.x=fx-nx*vb.w;vb.y=fy-ny*vb.h;&#10;setVB();&#10;},{passive:false});&#10;svg.addEventListener('mousedown',function(e){&#10;if(e.button!==0)return;&#10;e.preventDefault();&#10;isPanning=true;&#10;panStart={x:e.clientX,y:e.clientY};&#10;panStartVB={x:vb.x,y:vb.y,w:vb.w,h:vb.h};&#10;svg.style.cursor='grabbing';&#10;_lb.panFn=function(ev){&#10;if(!isPanning)return;&#10;var r=svg.getBoundingClientRect();&#10;var rs=renderScale(r,panStartVB.w,panStartVB.h);&#10;vb.x=panStartVB.x-(ev.clientX-panStart.x)/rs;&#10;vb.y=panStartVB.y-(ev.clientY-panStart.y)/rs;&#10;setVB();&#10;};&#10;_lb.endFn=function(){isPanning=false;svg.style.cursor='grab';_lb.panFn=null;_lb.endFn=null;};&#10;});&#10;svg.addEventListener('touchstart',function(e){&#10;e.preventDefault();&#10;if(e.touches.length===1){&#10;isPanning=true;&#10;panStart={x:e.touches[0].clientX,y:e.touches[0].clientY};&#10;panStartVB={x:vb.x,y:vb.y,w:vb.w,h:vb.h};&#10;// Record tap candidate — cleared on significant move or multi-touch&#10;_tapEl=e.target;&#10;_tapT=Date.now();&#10;_tapX=e.touches[0].clientX;&#10;_tapY=e.touches[0].clientY;&#10;}else if(e.touches.length&gt;=2){&#10;isPanning=false;panStart=null;&#10;_tapEl=null;&#10;pinchDist=Math.hypot(e.touches[0].clientX-e.touches[1].clientX,e.touches[0].clientY-e.touches[1].clientY);&#10;pinchMidX=(e.touches[0].clientX+e.touches[1].clientX)/2;&#10;pinchMidY=(e.touches[0].clientY+e.touches[1].clientY)/2;&#10;pinchStartVB={x:vb.x,y:vb.y,w:vb.w,h:vb.h};&#10;}&#10;},{passive:false});&#10;svg.addEventListener('touchmove',function(e){&#10;e.preventDefault();e.stopPropagation();&#10;// Cancel tap if finger moved more than 8 px — this is a pan, not a tap&#10;if(_tapEl&amp;&amp;e.touches.length===1){&#10;var dx=Math.abs(e.touches[0].clientX-_tapX);&#10;var dy=Math.abs(e.touches[0].clientY-_tapY);&#10;if(dx&gt;8||dy&gt;8)_tapEl=null;&#10;}&#10;var r=svg.getBoundingClientRect();&#10;if(e.touches.length===1&amp;&amp;isPanning&amp;&amp;panStart){&#10;var rs=renderScale(r,panStartVB.w,panStartVB.h);&#10;vb.x=panStartVB.x-(e.touches[0].clientX-panStart.x)/rs;&#10;vb.y=panStartVB.y-(e.touches[0].clientY-panStart.y)/rs;&#10;setVB();&#10;}else if(e.touches.length&gt;=2&amp;&amp;pinchDist&gt;0&amp;&amp;pinchStartVB){&#10;var dist=Math.hypot(e.touches[0].clientX-e.touches[1].clientX,e.touches[0].clientY-e.touches[1].clientY);&#10;var midX=(e.touches[0].clientX+e.touches[1].clientX)/2;&#10;var midY=(e.touches[0].clientY+e.touches[1].clientY)/2;&#10;var scale=pinchDist/dist;&#10;var lvb=pinchStartVB;&#10;var rs=renderScale(r,lvb.w,lvb.h);&#10;var off=contentOff(r,lvb.w,lvb.h,rs);&#10;var cw=lvb.w*rs,ch=lvb.h*rs;&#10;var nx=(midX-r.left-off.ox)/cw,ny=(midY-r.top-off.oy)/ch;&#10;var origNx=(pinchMidX-r.left-off.ox)/cw,origNy=(pinchMidY-r.top-off.oy)/ch;&#10;var fx=lvb.x+origNx*lvb.w,fy=lvb.y+origNy*lvb.h;&#10;vb.w=lvb.w*scale;vb.h=lvb.h*scale;&#10;vb.x=fx-nx*vb.w;vb.y=fy-ny*vb.h;&#10;setVB();&#10;}&#10;},{passive:false});&#10;svg.addEventListener('touchend',function(e){&#10;// Synthesise a click on a short tap so marker handlers fire on touchscreens.&#10;// For double-tap: Chromium on touch does not fire dblclick from touch events.&#10;// We detect two taps within 350 ms / 30 px and reset the view instead.&#10;if(_tapEl&amp;&amp;e.touches.length===0&amp;&amp;e.changedTouches.length===1){&#10;var now=Date.now();&#10;var dt=now-_tapT;&#10;if(dt&lt;350){&#10;var tdx=Math.abs(e.changedTouches[0].clientX-_lastTapX);&#10;var tdy=Math.abs(e.changedTouches[0].clientY-_lastTapY);&#10;if(now-_lastTapT&lt;350&amp;&amp;tdx&lt;30&amp;&amp;tdy&lt;30){&#10;// Double-tap detected — reset view (mirrors dblclick handler).&#10;// Clear _lastTapT so a third tap starts a new double-tap window.&#10;_lastTapT=0;&#10;vb={x:0,y:0,w:W,h:H};setVB();&#10;}else{&#10;// Single tap — fire click for tooltip toggle, record for next double-tap check.&#10;_lastTapT=now;&#10;_lastTapX=e.changedTouches[0].clientX;&#10;_lastTapY=e.changedTouches[0].clientY;&#10;_tapEl.dispatchEvent(new MouseEvent('click',{bubbles:true,cancelable:true,view:window}));&#10;}&#10;}&#10;}&#10;_tapEl=null;&#10;if(e.touches.length===0){isPanning=false;panStart=null;}&#10;if(e.touches.length&lt;2){pinchDist=0;pinchStartVB=null;}&#10;});&#10;svg.addEventListener('dblclick',function(){vb={x:0,y:0,w:W,h:H};setVB();});&#10;}&#10;// ── Open lightbox ─────────────────────────────────────────────────&#10;window.lsOpenLightbox=function(svgId,svgW,svgH,chartTitle){&#10;var W=svgW||900,H=svgH||390;&#10;titleEl.textContent=chartTitle||'';&#10;var orig=document.getElementById(svgId);&#10;if(!orig)return;&#10;var clone=orig.cloneNode(true);&#10;clone.querySelectorAll('script').forEach(function(s){s.parentNode.removeChild(s);});&#10;clone.removeAttribute('id');&#10;// width+height 100% fills the holder completely; the SVG's viewBox (managed by&#10;// initZoom) controls which part of the chart coordinate space is visible.&#10;// Changing the viewBox never changes the SVG element's screen size, so zoom and&#10;// pan always use the full screen area below the header — no clipping.&#10;// max-width is reset because the original inline style carries max-width:900px&#10;// which would cap the SVG at its inline-chart width regardless of screen size.&#10;clone.style.maxWidth='none';&#10;clone.style.width='100%';&#10;clone.style.height='100%';&#10;clone.style.touchAction='none';&#10;clone.style.cursor='grab';&#10;holder.innerHTML='';&#10;holder.appendChild(clone);&#10;_savedBodyOverflow=document.body.style.overflow||'';&#10;document.body.style.overflow='hidden';&#10;ov.style.display='flex';&#10;initZoom(clone,W,H);&#10;};&#10;})();&#10;//]]&gt;&lt;/script&gt;&#10;&lt;p&gt;&lt;strong&gt;Pegunan Bulan&lt;/strong&gt; berlaku apabila Bulan mencapai deklinasi maksimum atau minimum dalam kitarannya yang mengambil masa kira-kira 18.6 tahun.&lt;br&gt;Semasa &lt;strong&gt;Pegunan Besar&lt;/strong&gt;, deklinasi bulanan maksimum Bulan mencecah kira-kira ±28.5°.&lt;br&gt;Semasa &lt;strong&gt;Pegunan Kecil&lt;/strong&gt;, ia turun kepada kira-kira ±18.3°.&lt;br&gt;Halaman ini memaparkan pengiraan tepat sehingga &lt;strong&gt;milisaat&lt;/strong&gt; menggunakan efemeris planet JPL &lt;strong&gt;DE442&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Pegunan Bulan — 1900-an</title><link>https://kosmik.my/nebula/ms/lunar-standstills/1900/</link><pubDate>Sat, 03 Jan 2026 00:00:00 +0800</pubDate><guid>https://kosmik.my/nebula/ms/lunar-standstills/1900/</guid><description>&lt;style&gt;&#10;.ls-tbl{display:table;width:100%;overflow:visible}&#10;.ls-tbl td{vertical-align:top}&#10;.ls-moon{display:inline-flex;align-items:center;gap:.55em;text-align:left;vertical-align:middle}&#10;.ls-moon&gt;svg{flex:0 0 auto;display:block}&#10;.ls-moon-info{display:flex;flex-direction:column;line-height:1.3;min-width:0}&#10;.ls-moon-name{font-weight:600;white-space:nowrap}&#10;.ls-moon-pct{font-size:.82em;opacity:.82}&#10;.ls-moon-age{font-size:.78em;opacity:.68;white-space:normal}&#10;.ls-moon-age-lbl{font-weight:600;opacity:.85}&#10;@media(max-width:640px){&#10;.ls-tbl thead{display:none}&#10;.ls-tbl,.ls-tbl tbody,.ls-tbl tr{display:block}&#10;.ls-tbl tr{padding:.3em 0}&#10;.ls-tbl tbody tr{border-top-width:1px;border-top-color:var(--tw-prose-td-borders)}&#10;.ls-tbl tbody tr:first-child{border-top-color:var(--tw-prose-th-borders)}&#10;.ls-tbl tbody tr:last-child{border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}&#10;.ls-tbl td{display:flex;justify-content:space-between;align-items:baseline;padding:3px 0;text-align:right;white-space:normal}&#10;.ls-tbl td::before{content:attr(data-label);flex-shrink:0;text-align:left;font-weight:600;padding-right:.75em;white-space:nowrap;color:var(--tw-prose-headings,currentColor);opacity:.8}&#10; .ls-moon{align-items:center;flex-direction:row-reverse}&#10; .ls-moon-info{align-items:flex-end;text-align:right}&#10; }&#10;/* Chart SVG shared styles — repetitive stroke/font attributes live here&#10; so each marker/grid/legend element carries only its unique values. */&#10;.ls-c{cursor:pointer}&#10;.ls-mk{stroke:#fff;stroke-opacity:.5;stroke-width:1.2;opacity:.9}&#10;.ls-mt{font:bold 10px system-ui;fill:#fff;text-anchor:middle;dominant-baseline:middle;pointer-events:none}&#10;.ls-g0{stroke:#fff;stroke-opacity:.55;stroke-width:1.2}&#10;.ls-g1{stroke:#fff;stroke-opacity:.2;stroke-width:.6}&#10;.ls-gl{font:10px system-ui;fill:#fff;fill-opacity:.45;text-anchor:end;dominant-baseline:middle}&#10;.ls-tk{stroke:#fff;stroke-opacity:.3}&#10;.ls-tl{font:9px system-ui;fill:#fff;fill-opacity:.45;text-anchor:middle}&#10;.ls-lg{opacity:.85}&#10;.ls-lg2{opacity:.75}&#10;.ls-lt{font:9px system-ui;fill:#fff;fill-opacity:.6;dominant-baseline:middle}&#10;.ls-ax{stroke:#fff;stroke-opacity:.4}&#10;.ls-al{font:10px system-ui;fill:#fff;fill-opacity:.45;text-anchor:middle;dominant-baseline:middle}&#10;.ls-th{font:9px system-ui;fill:#fff;fill-opacity:.28;text-anchor:end}&#10;&lt;/style&gt;&#10;&lt;script&gt;//&lt;![CDATA[&#10;(function(){&#10;// ── Tooltip helpers — tooltip data lives in the SVG's data-tooltipmap&#10;// JSON attribute; clicking a marker renders its tooltip group on demand,&#10;// clicking anywhere else removes it. Works for inline charts and for&#10;// lightbox clones (attributes survive cloneNode) via one delegated listener.&#10;window.lsRemoveTip=function(svg){&#10;var ex=svg.querySelector('[data-active-tip]');&#10;if(ex)ex.parentNode.removeChild(ex);&#10;};&#10;window.lsMoonPath=function(pa,ill){&#10;var e=((pa%360)+360)%360;&#10;var waxing=e&lt;180;&#10;var gibbous=ill&gt;0.5;&#10;var r=46,c=50;&#10;var rx=r*Math.abs(2*ill-1);&#10;var top=c+' '+(c-r),bot=c+' '+(c+r);&#10;var s='&lt;circle cx="50" cy="50" r="46" fill="#3b4358"/&gt;';&#10;if(ill&gt;=0.995){&#10;s+='&lt;circle cx="50" cy="50" r="46" fill="#f2ecd0"/&gt;';&#10;}else if(ill&gt;0.005){&#10;var limb,term;&#10;if(waxing){&#10;limb='M '+top+' A '+r+' '+r+' 0 0 1 '+bot;&#10;term=gibbous?'A '+rx+' '+r+' 0 0 1 '+top:'A '+rx+' '+r+' 0 0 0 '+top;&#10;}else{&#10;limb='M '+top+' A '+r+' '+r+' 0 0 0 '+bot;&#10;term=gibbous?'A '+rx+' '+r+' 0 0 0 '+top:'A '+rx+' '+r+' 0 0 1 '+top;&#10;}&#10;s+='&lt;path d="'+limb+' '+term+' Z" fill="#f2ecd0"/&gt;';&#10;}&#10;s+='&lt;circle cx="50" cy="50" r="46" fill="none" stroke="#828b9c" stroke-width="2"/&gt;';&#10;return s;&#10;};&#10;window.lsShowTip=function(svg,key){&#10;lsRemoveTip(svg);&#10;var map;&#10;try{map=JSON.parse(svg.getAttribute('data-tooltipmap'));}catch(e){return;}&#10;var d=map[key];&#10;if(!d)return;&#10;var ns='http://www.w3.org/2000/svg';&#10;var g=document.createElementNS(ns,'g');&#10;g.setAttribute('data-active-tip',key);&#10;g.setAttribute('pointer-events','none');&#10;var rect=document.createElementNS(ns,'rect');&#10;rect.setAttribute('x',d.x);rect.setAttribute('y',d.y);&#10;rect.setAttribute('width',d.w);rect.setAttribute('height',d.h);&#10;rect.setAttribute('rx','5');&#10;rect.setAttribute('fill','black');rect.setAttribute('fill-opacity','0.62');&#10;rect.setAttribute('stroke',d.a);rect.setAttribute('stroke-width','1.2');rect.setAttribute('stroke-opacity','0.85');&#10;g.appendChild(rect);&#10;if(typeof d.p==='number'&amp;&amp;typeof d.i==='number'){&#10;var sz=Math.floor(d.h/2),m=5;&#10;var mpg=document.createElementNS(ns,'g');&#10;mpg.setAttribute('transform','translate('+(d.x+d.w-sz-m)+','+(d.y+m)+') scale('+(sz/100)+')');&#10;if(d.n){mpg.setAttribute('role','img');mpg.setAttribute('aria-label',d.n);}&#10;mpg.innerHTML=lsMoonPath(d.p,d.i);&#10;g.appendChild(mpg);&#10;}&#10;var lines=d.l.split('\n');&#10;for(var i=0;i&lt;lines.length;i++){&#10;var t=document.createElementNS(ns,'text');&#10;t.setAttribute('x',d.x+10);t.setAttribute('y',d.y+14+i*17);&#10;t.setAttribute('font-size','10');&#10;t.setAttribute('fill',i===0?d.a:'white');&#10;t.setAttribute('fill-opacity','0.95');&#10;t.setAttribute('font-weight',i===0?'bold':'normal');&#10;t.textContent=lines[i];&#10;g.appendChild(t);&#10;}&#10;svg.appendChild(g);&#10;};&#10;// ── Delegated clicks: marker shows its tooltip, background removes it ─&#10;document.addEventListener('click',function(e){&#10;var el=e.target.closest?e.target.closest('[data-tipkey]'):null;&#10;if(el){&#10;var svg=el.closest('svg[data-tooltipmap]');&#10;if(svg){e.stopPropagation();lsShowTip(svg,el.getAttribute('data-tipkey'));}&#10;return;&#10;}&#10;var svg2=e.target.closest?e.target.closest('svg[data-tooltipmap]'):null;&#10;if(svg2)lsRemoveTip(svg2);&#10;});&#10;// ── Lightbox — runs only once per page ───────────────────────────&#10;if(window._lsLbInit)return;&#10;window._lsLbInit=true;&#10;// Overlay — flex column so topBar stays fixed-height and holder fills the rest.&#10;// overflow:hidden on the overlay prevents any body scroll bleed-through.&#10;var ov=document.createElement('div');&#10;ov.style.cssText='display:none;position:fixed;inset:0;z-index:9000;background:#0d1117;flex-direction:column;overflow:hidden;';&#10;// ── Header row ────────────────────────────────────────────────────&#10;// lSpacer mirrors closeBtn's min-width so the titleGroup stays centred.&#10;var topBar=document.createElement('div');&#10;topBar.style.cssText='flex-shrink:0;background:#0d1117;display:flex;align-items:center;gap:10px;padding:8px 14px;';&#10;var lSpacer=document.createElement('div');&#10;lSpacer.style.cssText='flex-shrink:0;min-width:88px;';&#10;topBar.appendChild(lSpacer);&#10;var titleGroup=document.createElement('div');&#10;titleGroup.style.cssText='flex:1;text-align:center;overflow:hidden;pointer-events:none;';&#10;var titleEl=document.createElement('div');&#10;titleEl.style.cssText='color:#e6edf3;font-size:15px;font-family:system-ui,sans-serif;font-weight:600;line-height:1.3;';&#10;var hintEl=document.createElement('div');&#10;hintEl.style.cssText='color:rgba(230,237,243,0.35);font-size:11px;font-family:system-ui,sans-serif;margin-top:2px;line-height:1.4;';&#10;hintEl.textContent='Tatal atau cubit untuk zum · Seret untuk imbas · Klik dua kali untuk tetapkan semula';&#10;titleGroup.appendChild(titleEl);&#10;titleGroup.appendChild(hintEl);&#10;topBar.appendChild(titleGroup);&#10;var closeBtn=document.createElement('button');&#10;closeBtn.textContent='✕ Tutup';&#10;closeBtn.style.cssText='padding:10px 24px;font-size:14px;font-family:system-ui,sans-serif;cursor:pointer;border:1px solid rgba(255,255,255,0.45);border-radius:6px;background:rgba(255,255,255,0.10);color:#e6edf3;flex-shrink:0;touch-action:manipulation;min-height:44px;min-width:88px;';&#10;topBar.appendChild(closeBtn);&#10;// ── Chart area — fills every pixel below the header ───────────────&#10;// min-height:0 is required: flex children default to min-height:auto&#10;// which prevents them shrinking below their content size.&#10;var holder=document.createElement('div');&#10;holder.style.cssText='flex:1;min-height:0;overflow:hidden;';&#10;ov.appendChild(topBar);&#10;ov.appendChild(holder);&#10;document.body.appendChild(ov);&#10;var _savedBodyOverflow='';&#10;function closeLb(){ov.style.display='none';holder.innerHTML='';document.body.style.overflow=_savedBodyOverflow;}&#10;closeBtn.addEventListener('click',closeLb);&#10;ov.addEventListener('click',function(e){if(e.target===ov)closeLb();});&#10;document.addEventListener('keydown',function(e){if(e.key==='Escape'&amp;&amp;ov.style.display!=='none')closeLb();});&#10;// ── Shared pan-state for lightbox mouse drag ──────────────────────&#10;var _lb={panFn:null,endFn:null};&#10;ov.addEventListener('mousemove',function(e){if(_lb.panFn)_lb.panFn(e);});&#10;ov.addEventListener('mouseup',function(){if(_lb.endFn)_lb.endFn();});&#10;ov.addEventListener('mouseleave',function(){if(_lb.endFn)_lb.endFn();});&#10;// ── Zoom / pan initialiser (called for each new lightbox SVG) ─────&#10;function initZoom(svg,W,H){&#10;var vb={x:0,y:0,w:W,h:H};&#10;var isPanning=false,panStart=null,panStartVB=null;&#10;var pinchDist=0,pinchMidX=0,pinchMidY=0,pinchStartVB=null;&#10;// Tap-detection state — a touch that barely moved within 350 ms is a tap.&#10;// initZoom calls e.preventDefault() in touchstart (needed to suppress the&#10;// browser's own pan/zoom), which stops the browser from synthesising a click&#10;// event from touch. We synthesise it ourselves in touchend so that marker&#10;// onclick handlers and the SVG background onclick both work on touchscreens.&#10;// _lastTap* tracks the previous tap for double-tap-to-reset detection&#10;// (Chromium on touch does not fire dblclick from touch events).&#10;var _tapEl=null,_tapT=0,_tapX=0,_tapY=0;&#10;var _lastTapT=0,_lastTapX=0,_lastTapY=0;&#10;function setVB(){svg.setAttribute('viewBox',vb.x+' '+vb.y+' '+vb.w+' '+vb.h);}&#10;// ── Rendering helpers ─────────────────────────────────────────────&#10;// The SVG uses preserveAspectRatio="xMidYMid meet", so the chart content&#10;// is letter-boxed inside the SVG element. Using the SVG element dimensions&#10;// directly (r.width / r.height) for pan calculations produces wildly&#10;// different sensitivities for x vs y on portrait phones (4-5× mismatch).&#10;// The correct divisor for both axes is the render scale:&#10;// renderScale = min(elementW/vbW, elementH/vbH)&#10;// which gives a uniform 1-screen-pixel = 1/renderScale chart-units feel.&#10;// The same correction is needed for zoom cursor anchoring.&#10;function renderScale(r,w,h){return Math.min(r.width/w,r.height/h);}&#10;function contentOff(r,w,h,rs){&#10;return{ox:(r.width-w*rs)/2,oy:(r.height-h*rs)/2};&#10;}&#10;svg.addEventListener('wheel',function(e){&#10;e.preventDefault();e.stopPropagation();&#10;var r=svg.getBoundingClientRect();&#10;var ratio=e.deltaY&gt;0?1.12:1/1.12;&#10;var rs=renderScale(r,vb.w,vb.h);&#10;var off=contentOff(r,vb.w,vb.h,rs);&#10;var nx=(e.clientX-r.left-off.ox)/(vb.w*rs);&#10;var ny=(e.clientY-r.top-off.oy)/(vb.h*rs);&#10;var fx=vb.x+nx*vb.w,fy=vb.y+ny*vb.h;&#10;vb.w*=ratio;vb.h*=ratio;&#10;vb.x=fx-nx*vb.w;vb.y=fy-ny*vb.h;&#10;setVB();&#10;},{passive:false});&#10;svg.addEventListener('mousedown',function(e){&#10;if(e.button!==0)return;&#10;e.preventDefault();&#10;isPanning=true;&#10;panStart={x:e.clientX,y:e.clientY};&#10;panStartVB={x:vb.x,y:vb.y,w:vb.w,h:vb.h};&#10;svg.style.cursor='grabbing';&#10;_lb.panFn=function(ev){&#10;if(!isPanning)return;&#10;var r=svg.getBoundingClientRect();&#10;var rs=renderScale(r,panStartVB.w,panStartVB.h);&#10;vb.x=panStartVB.x-(ev.clientX-panStart.x)/rs;&#10;vb.y=panStartVB.y-(ev.clientY-panStart.y)/rs;&#10;setVB();&#10;};&#10;_lb.endFn=function(){isPanning=false;svg.style.cursor='grab';_lb.panFn=null;_lb.endFn=null;};&#10;});&#10;svg.addEventListener('touchstart',function(e){&#10;e.preventDefault();&#10;if(e.touches.length===1){&#10;isPanning=true;&#10;panStart={x:e.touches[0].clientX,y:e.touches[0].clientY};&#10;panStartVB={x:vb.x,y:vb.y,w:vb.w,h:vb.h};&#10;// Record tap candidate — cleared on significant move or multi-touch&#10;_tapEl=e.target;&#10;_tapT=Date.now();&#10;_tapX=e.touches[0].clientX;&#10;_tapY=e.touches[0].clientY;&#10;}else if(e.touches.length&gt;=2){&#10;isPanning=false;panStart=null;&#10;_tapEl=null;&#10;pinchDist=Math.hypot(e.touches[0].clientX-e.touches[1].clientX,e.touches[0].clientY-e.touches[1].clientY);&#10;pinchMidX=(e.touches[0].clientX+e.touches[1].clientX)/2;&#10;pinchMidY=(e.touches[0].clientY+e.touches[1].clientY)/2;&#10;pinchStartVB={x:vb.x,y:vb.y,w:vb.w,h:vb.h};&#10;}&#10;},{passive:false});&#10;svg.addEventListener('touchmove',function(e){&#10;e.preventDefault();e.stopPropagation();&#10;// Cancel tap if finger moved more than 8 px — this is a pan, not a tap&#10;if(_tapEl&amp;&amp;e.touches.length===1){&#10;var dx=Math.abs(e.touches[0].clientX-_tapX);&#10;var dy=Math.abs(e.touches[0].clientY-_tapY);&#10;if(dx&gt;8||dy&gt;8)_tapEl=null;&#10;}&#10;var r=svg.getBoundingClientRect();&#10;if(e.touches.length===1&amp;&amp;isPanning&amp;&amp;panStart){&#10;var rs=renderScale(r,panStartVB.w,panStartVB.h);&#10;vb.x=panStartVB.x-(e.touches[0].clientX-panStart.x)/rs;&#10;vb.y=panStartVB.y-(e.touches[0].clientY-panStart.y)/rs;&#10;setVB();&#10;}else if(e.touches.length&gt;=2&amp;&amp;pinchDist&gt;0&amp;&amp;pinchStartVB){&#10;var dist=Math.hypot(e.touches[0].clientX-e.touches[1].clientX,e.touches[0].clientY-e.touches[1].clientY);&#10;var midX=(e.touches[0].clientX+e.touches[1].clientX)/2;&#10;var midY=(e.touches[0].clientY+e.touches[1].clientY)/2;&#10;var scale=pinchDist/dist;&#10;var lvb=pinchStartVB;&#10;var rs=renderScale(r,lvb.w,lvb.h);&#10;var off=contentOff(r,lvb.w,lvb.h,rs);&#10;var cw=lvb.w*rs,ch=lvb.h*rs;&#10;var nx=(midX-r.left-off.ox)/cw,ny=(midY-r.top-off.oy)/ch;&#10;var origNx=(pinchMidX-r.left-off.ox)/cw,origNy=(pinchMidY-r.top-off.oy)/ch;&#10;var fx=lvb.x+origNx*lvb.w,fy=lvb.y+origNy*lvb.h;&#10;vb.w=lvb.w*scale;vb.h=lvb.h*scale;&#10;vb.x=fx-nx*vb.w;vb.y=fy-ny*vb.h;&#10;setVB();&#10;}&#10;},{passive:false});&#10;svg.addEventListener('touchend',function(e){&#10;// Synthesise a click on a short tap so marker handlers fire on touchscreens.&#10;// For double-tap: Chromium on touch does not fire dblclick from touch events.&#10;// We detect two taps within 350 ms / 30 px and reset the view instead.&#10;if(_tapEl&amp;&amp;e.touches.length===0&amp;&amp;e.changedTouches.length===1){&#10;var now=Date.now();&#10;var dt=now-_tapT;&#10;if(dt&lt;350){&#10;var tdx=Math.abs(e.changedTouches[0].clientX-_lastTapX);&#10;var tdy=Math.abs(e.changedTouches[0].clientY-_lastTapY);&#10;if(now-_lastTapT&lt;350&amp;&amp;tdx&lt;30&amp;&amp;tdy&lt;30){&#10;// Double-tap detected — reset view (mirrors dblclick handler).&#10;// Clear _lastTapT so a third tap starts a new double-tap window.&#10;_lastTapT=0;&#10;vb={x:0,y:0,w:W,h:H};setVB();&#10;}else{&#10;// Single tap — fire click for tooltip toggle, record for next double-tap check.&#10;_lastTapT=now;&#10;_lastTapX=e.changedTouches[0].clientX;&#10;_lastTapY=e.changedTouches[0].clientY;&#10;_tapEl.dispatchEvent(new MouseEvent('click',{bubbles:true,cancelable:true,view:window}));&#10;}&#10;}&#10;}&#10;_tapEl=null;&#10;if(e.touches.length===0){isPanning=false;panStart=null;}&#10;if(e.touches.length&lt;2){pinchDist=0;pinchStartVB=null;}&#10;});&#10;svg.addEventListener('dblclick',function(){vb={x:0,y:0,w:W,h:H};setVB();});&#10;}&#10;// ── Open lightbox ─────────────────────────────────────────────────&#10;window.lsOpenLightbox=function(svgId,svgW,svgH,chartTitle){&#10;var W=svgW||900,H=svgH||390;&#10;titleEl.textContent=chartTitle||'';&#10;var orig=document.getElementById(svgId);&#10;if(!orig)return;&#10;var clone=orig.cloneNode(true);&#10;clone.querySelectorAll('script').forEach(function(s){s.parentNode.removeChild(s);});&#10;clone.removeAttribute('id');&#10;// width+height 100% fills the holder completely; the SVG's viewBox (managed by&#10;// initZoom) controls which part of the chart coordinate space is visible.&#10;// Changing the viewBox never changes the SVG element's screen size, so zoom and&#10;// pan always use the full screen area below the header — no clipping.&#10;// max-width is reset because the original inline style carries max-width:900px&#10;// which would cap the SVG at its inline-chart width regardless of screen size.&#10;clone.style.maxWidth='none';&#10;clone.style.width='100%';&#10;clone.style.height='100%';&#10;clone.style.touchAction='none';&#10;clone.style.cursor='grab';&#10;holder.innerHTML='';&#10;holder.appendChild(clone);&#10;_savedBodyOverflow=document.body.style.overflow||'';&#10;document.body.style.overflow='hidden';&#10;ov.style.display='flex';&#10;initZoom(clone,W,H);&#10;};&#10;})();&#10;//]]&gt;&lt;/script&gt;&#10;&#10;&lt;h2 class="relative group"&gt;1900-an&#10; &lt;div id="1900-an" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#1900-an" aria-label="Pautan"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&#10;&#10;&#10;&#10;&lt;h3 class="relative group"&gt;Pegunan Bulan Ekstrem&#10; &lt;div id="pegunan-bulan-ekstrem" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#pegunan-bulan-ekstrem" aria-label="Pautan"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;p&gt;&lt;strong&gt;Hemisfera Utara&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Pegunan Bulan — 1910-an</title><link>https://kosmik.my/nebula/ms/lunar-standstills/1910/</link><pubDate>Sat, 03 Jan 2026 00:00:00 +0800</pubDate><guid>https://kosmik.my/nebula/ms/lunar-standstills/1910/</guid><description>&lt;style&gt;&#10;.ls-tbl{display:table;width:100%;overflow:visible}&#10;.ls-tbl td{vertical-align:top}&#10;.ls-moon{display:inline-flex;align-items:center;gap:.55em;text-align:left;vertical-align:middle}&#10;.ls-moon&gt;svg{flex:0 0 auto;display:block}&#10;.ls-moon-info{display:flex;flex-direction:column;line-height:1.3;min-width:0}&#10;.ls-moon-name{font-weight:600;white-space:nowrap}&#10;.ls-moon-pct{font-size:.82em;opacity:.82}&#10;.ls-moon-age{font-size:.78em;opacity:.68;white-space:normal}&#10;.ls-moon-age-lbl{font-weight:600;opacity:.85}&#10;@media(max-width:640px){&#10;.ls-tbl thead{display:none}&#10;.ls-tbl,.ls-tbl tbody,.ls-tbl tr{display:block}&#10;.ls-tbl tr{padding:.3em 0}&#10;.ls-tbl tbody tr{border-top-width:1px;border-top-color:var(--tw-prose-td-borders)}&#10;.ls-tbl tbody tr:first-child{border-top-color:var(--tw-prose-th-borders)}&#10;.ls-tbl tbody tr:last-child{border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}&#10;.ls-tbl td{display:flex;justify-content:space-between;align-items:baseline;padding:3px 0;text-align:right;white-space:normal}&#10;.ls-tbl td::before{content:attr(data-label);flex-shrink:0;text-align:left;font-weight:600;padding-right:.75em;white-space:nowrap;color:var(--tw-prose-headings,currentColor);opacity:.8}&#10; .ls-moon{align-items:center;flex-direction:row-reverse}&#10; .ls-moon-info{align-items:flex-end;text-align:right}&#10; }&#10;/* Chart SVG shared styles — repetitive stroke/font attributes live here&#10; so each marker/grid/legend element carries only its unique values. */&#10;.ls-c{cursor:pointer}&#10;.ls-mk{stroke:#fff;stroke-opacity:.5;stroke-width:1.2;opacity:.9}&#10;.ls-mt{font:bold 10px system-ui;fill:#fff;text-anchor:middle;dominant-baseline:middle;pointer-events:none}&#10;.ls-g0{stroke:#fff;stroke-opacity:.55;stroke-width:1.2}&#10;.ls-g1{stroke:#fff;stroke-opacity:.2;stroke-width:.6}&#10;.ls-gl{font:10px system-ui;fill:#fff;fill-opacity:.45;text-anchor:end;dominant-baseline:middle}&#10;.ls-tk{stroke:#fff;stroke-opacity:.3}&#10;.ls-tl{font:9px system-ui;fill:#fff;fill-opacity:.45;text-anchor:middle}&#10;.ls-lg{opacity:.85}&#10;.ls-lg2{opacity:.75}&#10;.ls-lt{font:9px system-ui;fill:#fff;fill-opacity:.6;dominant-baseline:middle}&#10;.ls-ax{stroke:#fff;stroke-opacity:.4}&#10;.ls-al{font:10px system-ui;fill:#fff;fill-opacity:.45;text-anchor:middle;dominant-baseline:middle}&#10;.ls-th{font:9px system-ui;fill:#fff;fill-opacity:.28;text-anchor:end}&#10;&lt;/style&gt;&#10;&lt;script&gt;//&lt;![CDATA[&#10;(function(){&#10;// ── Tooltip helpers — tooltip data lives in the SVG's data-tooltipmap&#10;// JSON attribute; clicking a marker renders its tooltip group on demand,&#10;// clicking anywhere else removes it. Works for inline charts and for&#10;// lightbox clones (attributes survive cloneNode) via one delegated listener.&#10;window.lsRemoveTip=function(svg){&#10;var ex=svg.querySelector('[data-active-tip]');&#10;if(ex)ex.parentNode.removeChild(ex);&#10;};&#10;window.lsMoonPath=function(pa,ill){&#10;var e=((pa%360)+360)%360;&#10;var waxing=e&lt;180;&#10;var gibbous=ill&gt;0.5;&#10;var r=46,c=50;&#10;var rx=r*Math.abs(2*ill-1);&#10;var top=c+' '+(c-r),bot=c+' '+(c+r);&#10;var s='&lt;circle cx="50" cy="50" r="46" fill="#3b4358"/&gt;';&#10;if(ill&gt;=0.995){&#10;s+='&lt;circle cx="50" cy="50" r="46" fill="#f2ecd0"/&gt;';&#10;}else if(ill&gt;0.005){&#10;var limb,term;&#10;if(waxing){&#10;limb='M '+top+' A '+r+' '+r+' 0 0 1 '+bot;&#10;term=gibbous?'A '+rx+' '+r+' 0 0 1 '+top:'A '+rx+' '+r+' 0 0 0 '+top;&#10;}else{&#10;limb='M '+top+' A '+r+' '+r+' 0 0 0 '+bot;&#10;term=gibbous?'A '+rx+' '+r+' 0 0 0 '+top:'A '+rx+' '+r+' 0 0 1 '+top;&#10;}&#10;s+='&lt;path d="'+limb+' '+term+' Z" fill="#f2ecd0"/&gt;';&#10;}&#10;s+='&lt;circle cx="50" cy="50" r="46" fill="none" stroke="#828b9c" stroke-width="2"/&gt;';&#10;return s;&#10;};&#10;window.lsShowTip=function(svg,key){&#10;lsRemoveTip(svg);&#10;var map;&#10;try{map=JSON.parse(svg.getAttribute('data-tooltipmap'));}catch(e){return;}&#10;var d=map[key];&#10;if(!d)return;&#10;var ns='http://www.w3.org/2000/svg';&#10;var g=document.createElementNS(ns,'g');&#10;g.setAttribute('data-active-tip',key);&#10;g.setAttribute('pointer-events','none');&#10;var rect=document.createElementNS(ns,'rect');&#10;rect.setAttribute('x',d.x);rect.setAttribute('y',d.y);&#10;rect.setAttribute('width',d.w);rect.setAttribute('height',d.h);&#10;rect.setAttribute('rx','5');&#10;rect.setAttribute('fill','black');rect.setAttribute('fill-opacity','0.62');&#10;rect.setAttribute('stroke',d.a);rect.setAttribute('stroke-width','1.2');rect.setAttribute('stroke-opacity','0.85');&#10;g.appendChild(rect);&#10;if(typeof d.p==='number'&amp;&amp;typeof d.i==='number'){&#10;var sz=Math.floor(d.h/2),m=5;&#10;var mpg=document.createElementNS(ns,'g');&#10;mpg.setAttribute('transform','translate('+(d.x+d.w-sz-m)+','+(d.y+m)+') scale('+(sz/100)+')');&#10;if(d.n){mpg.setAttribute('role','img');mpg.setAttribute('aria-label',d.n);}&#10;mpg.innerHTML=lsMoonPath(d.p,d.i);&#10;g.appendChild(mpg);&#10;}&#10;var lines=d.l.split('\n');&#10;for(var i=0;i&lt;lines.length;i++){&#10;var t=document.createElementNS(ns,'text');&#10;t.setAttribute('x',d.x+10);t.setAttribute('y',d.y+14+i*17);&#10;t.setAttribute('font-size','10');&#10;t.setAttribute('fill',i===0?d.a:'white');&#10;t.setAttribute('fill-opacity','0.95');&#10;t.setAttribute('font-weight',i===0?'bold':'normal');&#10;t.textContent=lines[i];&#10;g.appendChild(t);&#10;}&#10;svg.appendChild(g);&#10;};&#10;// ── Delegated clicks: marker shows its tooltip, background removes it ─&#10;document.addEventListener('click',function(e){&#10;var el=e.target.closest?e.target.closest('[data-tipkey]'):null;&#10;if(el){&#10;var svg=el.closest('svg[data-tooltipmap]');&#10;if(svg){e.stopPropagation();lsShowTip(svg,el.getAttribute('data-tipkey'));}&#10;return;&#10;}&#10;var svg2=e.target.closest?e.target.closest('svg[data-tooltipmap]'):null;&#10;if(svg2)lsRemoveTip(svg2);&#10;});&#10;// ── Lightbox — runs only once per page ───────────────────────────&#10;if(window._lsLbInit)return;&#10;window._lsLbInit=true;&#10;// Overlay — flex column so topBar stays fixed-height and holder fills the rest.&#10;// overflow:hidden on the overlay prevents any body scroll bleed-through.&#10;var ov=document.createElement('div');&#10;ov.style.cssText='display:none;position:fixed;inset:0;z-index:9000;background:#0d1117;flex-direction:column;overflow:hidden;';&#10;// ── Header row ────────────────────────────────────────────────────&#10;// lSpacer mirrors closeBtn's min-width so the titleGroup stays centred.&#10;var topBar=document.createElement('div');&#10;topBar.style.cssText='flex-shrink:0;background:#0d1117;display:flex;align-items:center;gap:10px;padding:8px 14px;';&#10;var lSpacer=document.createElement('div');&#10;lSpacer.style.cssText='flex-shrink:0;min-width:88px;';&#10;topBar.appendChild(lSpacer);&#10;var titleGroup=document.createElement('div');&#10;titleGroup.style.cssText='flex:1;text-align:center;overflow:hidden;pointer-events:none;';&#10;var titleEl=document.createElement('div');&#10;titleEl.style.cssText='color:#e6edf3;font-size:15px;font-family:system-ui,sans-serif;font-weight:600;line-height:1.3;';&#10;var hintEl=document.createElement('div');&#10;hintEl.style.cssText='color:rgba(230,237,243,0.35);font-size:11px;font-family:system-ui,sans-serif;margin-top:2px;line-height:1.4;';&#10;hintEl.textContent='Tatal atau cubit untuk zum · Seret untuk imbas · Klik dua kali untuk tetapkan semula';&#10;titleGroup.appendChild(titleEl);&#10;titleGroup.appendChild(hintEl);&#10;topBar.appendChild(titleGroup);&#10;var closeBtn=document.createElement('button');&#10;closeBtn.textContent='✕ Tutup';&#10;closeBtn.style.cssText='padding:10px 24px;font-size:14px;font-family:system-ui,sans-serif;cursor:pointer;border:1px solid rgba(255,255,255,0.45);border-radius:6px;background:rgba(255,255,255,0.10);color:#e6edf3;flex-shrink:0;touch-action:manipulation;min-height:44px;min-width:88px;';&#10;topBar.appendChild(closeBtn);&#10;// ── Chart area — fills every pixel below the header ───────────────&#10;// min-height:0 is required: flex children default to min-height:auto&#10;// which prevents them shrinking below their content size.&#10;var holder=document.createElement('div');&#10;holder.style.cssText='flex:1;min-height:0;overflow:hidden;';&#10;ov.appendChild(topBar);&#10;ov.appendChild(holder);&#10;document.body.appendChild(ov);&#10;var _savedBodyOverflow='';&#10;function closeLb(){ov.style.display='none';holder.innerHTML='';document.body.style.overflow=_savedBodyOverflow;}&#10;closeBtn.addEventListener('click',closeLb);&#10;ov.addEventListener('click',function(e){if(e.target===ov)closeLb();});&#10;document.addEventListener('keydown',function(e){if(e.key==='Escape'&amp;&amp;ov.style.display!=='none')closeLb();});&#10;// ── Shared pan-state for lightbox mouse drag ──────────────────────&#10;var _lb={panFn:null,endFn:null};&#10;ov.addEventListener('mousemove',function(e){if(_lb.panFn)_lb.panFn(e);});&#10;ov.addEventListener('mouseup',function(){if(_lb.endFn)_lb.endFn();});&#10;ov.addEventListener('mouseleave',function(){if(_lb.endFn)_lb.endFn();});&#10;// ── Zoom / pan initialiser (called for each new lightbox SVG) ─────&#10;function initZoom(svg,W,H){&#10;var vb={x:0,y:0,w:W,h:H};&#10;var isPanning=false,panStart=null,panStartVB=null;&#10;var pinchDist=0,pinchMidX=0,pinchMidY=0,pinchStartVB=null;&#10;// Tap-detection state — a touch that barely moved within 350 ms is a tap.&#10;// initZoom calls e.preventDefault() in touchstart (needed to suppress the&#10;// browser's own pan/zoom), which stops the browser from synthesising a click&#10;// event from touch. We synthesise it ourselves in touchend so that marker&#10;// onclick handlers and the SVG background onclick both work on touchscreens.&#10;// _lastTap* tracks the previous tap for double-tap-to-reset detection&#10;// (Chromium on touch does not fire dblclick from touch events).&#10;var _tapEl=null,_tapT=0,_tapX=0,_tapY=0;&#10;var _lastTapT=0,_lastTapX=0,_lastTapY=0;&#10;function setVB(){svg.setAttribute('viewBox',vb.x+' '+vb.y+' '+vb.w+' '+vb.h);}&#10;// ── Rendering helpers ─────────────────────────────────────────────&#10;// The SVG uses preserveAspectRatio="xMidYMid meet", so the chart content&#10;// is letter-boxed inside the SVG element. Using the SVG element dimensions&#10;// directly (r.width / r.height) for pan calculations produces wildly&#10;// different sensitivities for x vs y on portrait phones (4-5× mismatch).&#10;// The correct divisor for both axes is the render scale:&#10;// renderScale = min(elementW/vbW, elementH/vbH)&#10;// which gives a uniform 1-screen-pixel = 1/renderScale chart-units feel.&#10;// The same correction is needed for zoom cursor anchoring.&#10;function renderScale(r,w,h){return Math.min(r.width/w,r.height/h);}&#10;function contentOff(r,w,h,rs){&#10;return{ox:(r.width-w*rs)/2,oy:(r.height-h*rs)/2};&#10;}&#10;svg.addEventListener('wheel',function(e){&#10;e.preventDefault();e.stopPropagation();&#10;var r=svg.getBoundingClientRect();&#10;var ratio=e.deltaY&gt;0?1.12:1/1.12;&#10;var rs=renderScale(r,vb.w,vb.h);&#10;var off=contentOff(r,vb.w,vb.h,rs);&#10;var nx=(e.clientX-r.left-off.ox)/(vb.w*rs);&#10;var ny=(e.clientY-r.top-off.oy)/(vb.h*rs);&#10;var fx=vb.x+nx*vb.w,fy=vb.y+ny*vb.h;&#10;vb.w*=ratio;vb.h*=ratio;&#10;vb.x=fx-nx*vb.w;vb.y=fy-ny*vb.h;&#10;setVB();&#10;},{passive:false});&#10;svg.addEventListener('mousedown',function(e){&#10;if(e.button!==0)return;&#10;e.preventDefault();&#10;isPanning=true;&#10;panStart={x:e.clientX,y:e.clientY};&#10;panStartVB={x:vb.x,y:vb.y,w:vb.w,h:vb.h};&#10;svg.style.cursor='grabbing';&#10;_lb.panFn=function(ev){&#10;if(!isPanning)return;&#10;var r=svg.getBoundingClientRect();&#10;var rs=renderScale(r,panStartVB.w,panStartVB.h);&#10;vb.x=panStartVB.x-(ev.clientX-panStart.x)/rs;&#10;vb.y=panStartVB.y-(ev.clientY-panStart.y)/rs;&#10;setVB();&#10;};&#10;_lb.endFn=function(){isPanning=false;svg.style.cursor='grab';_lb.panFn=null;_lb.endFn=null;};&#10;});&#10;svg.addEventListener('touchstart',function(e){&#10;e.preventDefault();&#10;if(e.touches.length===1){&#10;isPanning=true;&#10;panStart={x:e.touches[0].clientX,y:e.touches[0].clientY};&#10;panStartVB={x:vb.x,y:vb.y,w:vb.w,h:vb.h};&#10;// Record tap candidate — cleared on significant move or multi-touch&#10;_tapEl=e.target;&#10;_tapT=Date.now();&#10;_tapX=e.touches[0].clientX;&#10;_tapY=e.touches[0].clientY;&#10;}else if(e.touches.length&gt;=2){&#10;isPanning=false;panStart=null;&#10;_tapEl=null;&#10;pinchDist=Math.hypot(e.touches[0].clientX-e.touches[1].clientX,e.touches[0].clientY-e.touches[1].clientY);&#10;pinchMidX=(e.touches[0].clientX+e.touches[1].clientX)/2;&#10;pinchMidY=(e.touches[0].clientY+e.touches[1].clientY)/2;&#10;pinchStartVB={x:vb.x,y:vb.y,w:vb.w,h:vb.h};&#10;}&#10;},{passive:false});&#10;svg.addEventListener('touchmove',function(e){&#10;e.preventDefault();e.stopPropagation();&#10;// Cancel tap if finger moved more than 8 px — this is a pan, not a tap&#10;if(_tapEl&amp;&amp;e.touches.length===1){&#10;var dx=Math.abs(e.touches[0].clientX-_tapX);&#10;var dy=Math.abs(e.touches[0].clientY-_tapY);&#10;if(dx&gt;8||dy&gt;8)_tapEl=null;&#10;}&#10;var r=svg.getBoundingClientRect();&#10;if(e.touches.length===1&amp;&amp;isPanning&amp;&amp;panStart){&#10;var rs=renderScale(r,panStartVB.w,panStartVB.h);&#10;vb.x=panStartVB.x-(e.touches[0].clientX-panStart.x)/rs;&#10;vb.y=panStartVB.y-(e.touches[0].clientY-panStart.y)/rs;&#10;setVB();&#10;}else if(e.touches.length&gt;=2&amp;&amp;pinchDist&gt;0&amp;&amp;pinchStartVB){&#10;var dist=Math.hypot(e.touches[0].clientX-e.touches[1].clientX,e.touches[0].clientY-e.touches[1].clientY);&#10;var midX=(e.touches[0].clientX+e.touches[1].clientX)/2;&#10;var midY=(e.touches[0].clientY+e.touches[1].clientY)/2;&#10;var scale=pinchDist/dist;&#10;var lvb=pinchStartVB;&#10;var rs=renderScale(r,lvb.w,lvb.h);&#10;var off=contentOff(r,lvb.w,lvb.h,rs);&#10;var cw=lvb.w*rs,ch=lvb.h*rs;&#10;var nx=(midX-r.left-off.ox)/cw,ny=(midY-r.top-off.oy)/ch;&#10;var origNx=(pinchMidX-r.left-off.ox)/cw,origNy=(pinchMidY-r.top-off.oy)/ch;&#10;var fx=lvb.x+origNx*lvb.w,fy=lvb.y+origNy*lvb.h;&#10;vb.w=lvb.w*scale;vb.h=lvb.h*scale;&#10;vb.x=fx-nx*vb.w;vb.y=fy-ny*vb.h;&#10;setVB();&#10;}&#10;},{passive:false});&#10;svg.addEventListener('touchend',function(e){&#10;// Synthesise a click on a short tap so marker handlers fire on touchscreens.&#10;// For double-tap: Chromium on touch does not fire dblclick from touch events.&#10;// We detect two taps within 350 ms / 30 px and reset the view instead.&#10;if(_tapEl&amp;&amp;e.touches.length===0&amp;&amp;e.changedTouches.length===1){&#10;var now=Date.now();&#10;var dt=now-_tapT;&#10;if(dt&lt;350){&#10;var tdx=Math.abs(e.changedTouches[0].clientX-_lastTapX);&#10;var tdy=Math.abs(e.changedTouches[0].clientY-_lastTapY);&#10;if(now-_lastTapT&lt;350&amp;&amp;tdx&lt;30&amp;&amp;tdy&lt;30){&#10;// Double-tap detected — reset view (mirrors dblclick handler).&#10;// Clear _lastTapT so a third tap starts a new double-tap window.&#10;_lastTapT=0;&#10;vb={x:0,y:0,w:W,h:H};setVB();&#10;}else{&#10;// Single tap — fire click for tooltip toggle, record for next double-tap check.&#10;_lastTapT=now;&#10;_lastTapX=e.changedTouches[0].clientX;&#10;_lastTapY=e.changedTouches[0].clientY;&#10;_tapEl.dispatchEvent(new MouseEvent('click',{bubbles:true,cancelable:true,view:window}));&#10;}&#10;}&#10;}&#10;_tapEl=null;&#10;if(e.touches.length===0){isPanning=false;panStart=null;}&#10;if(e.touches.length&lt;2){pinchDist=0;pinchStartVB=null;}&#10;});&#10;svg.addEventListener('dblclick',function(){vb={x:0,y:0,w:W,h:H};setVB();});&#10;}&#10;// ── Open lightbox ─────────────────────────────────────────────────&#10;window.lsOpenLightbox=function(svgId,svgW,svgH,chartTitle){&#10;var W=svgW||900,H=svgH||390;&#10;titleEl.textContent=chartTitle||'';&#10;var orig=document.getElementById(svgId);&#10;if(!orig)return;&#10;var clone=orig.cloneNode(true);&#10;clone.querySelectorAll('script').forEach(function(s){s.parentNode.removeChild(s);});&#10;clone.removeAttribute('id');&#10;// width+height 100% fills the holder completely; the SVG's viewBox (managed by&#10;// initZoom) controls which part of the chart coordinate space is visible.&#10;// Changing the viewBox never changes the SVG element's screen size, so zoom and&#10;// pan always use the full screen area below the header — no clipping.&#10;// max-width is reset because the original inline style carries max-width:900px&#10;// which would cap the SVG at its inline-chart width regardless of screen size.&#10;clone.style.maxWidth='none';&#10;clone.style.width='100%';&#10;clone.style.height='100%';&#10;clone.style.touchAction='none';&#10;clone.style.cursor='grab';&#10;holder.innerHTML='';&#10;holder.appendChild(clone);&#10;_savedBodyOverflow=document.body.style.overflow||'';&#10;document.body.style.overflow='hidden';&#10;ov.style.display='flex';&#10;initZoom(clone,W,H);&#10;};&#10;})();&#10;//]]&gt;&lt;/script&gt;&#10;&#10;&lt;h2 class="relative group"&gt;1910-an&#10; &lt;div id="1910-an" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#1910-an" aria-label="Pautan"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&#10;&#10;&#10;&#10;&lt;h3 class="relative group"&gt;Pegunan Bulan Ekstrem&#10; &lt;div id="pegunan-bulan-ekstrem" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#pegunan-bulan-ekstrem" aria-label="Pautan"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;p&gt;&lt;strong&gt;Hemisfera Utara&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Pegunan Bulan — 1920-an</title><link>https://kosmik.my/nebula/ms/lunar-standstills/1920/</link><pubDate>Sat, 03 Jan 2026 00:00:00 +0800</pubDate><guid>https://kosmik.my/nebula/ms/lunar-standstills/1920/</guid><description>&lt;style&gt;&#10;.ls-tbl{display:table;width:100%;overflow:visible}&#10;.ls-tbl td{vertical-align:top}&#10;.ls-moon{display:inline-flex;align-items:center;gap:.55em;text-align:left;vertical-align:middle}&#10;.ls-moon&gt;svg{flex:0 0 auto;display:block}&#10;.ls-moon-info{display:flex;flex-direction:column;line-height:1.3;min-width:0}&#10;.ls-moon-name{font-weight:600;white-space:nowrap}&#10;.ls-moon-pct{font-size:.82em;opacity:.82}&#10;.ls-moon-age{font-size:.78em;opacity:.68;white-space:normal}&#10;.ls-moon-age-lbl{font-weight:600;opacity:.85}&#10;@media(max-width:640px){&#10;.ls-tbl thead{display:none}&#10;.ls-tbl,.ls-tbl tbody,.ls-tbl tr{display:block}&#10;.ls-tbl tr{padding:.3em 0}&#10;.ls-tbl tbody tr{border-top-width:1px;border-top-color:var(--tw-prose-td-borders)}&#10;.ls-tbl tbody tr:first-child{border-top-color:var(--tw-prose-th-borders)}&#10;.ls-tbl tbody tr:last-child{border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}&#10;.ls-tbl td{display:flex;justify-content:space-between;align-items:baseline;padding:3px 0;text-align:right;white-space:normal}&#10;.ls-tbl td::before{content:attr(data-label);flex-shrink:0;text-align:left;font-weight:600;padding-right:.75em;white-space:nowrap;color:var(--tw-prose-headings,currentColor);opacity:.8}&#10; .ls-moon{align-items:center;flex-direction:row-reverse}&#10; .ls-moon-info{align-items:flex-end;text-align:right}&#10; }&#10;/* Chart SVG shared styles — repetitive stroke/font attributes live here&#10; so each marker/grid/legend element carries only its unique values. */&#10;.ls-c{cursor:pointer}&#10;.ls-mk{stroke:#fff;stroke-opacity:.5;stroke-width:1.2;opacity:.9}&#10;.ls-mt{font:bold 10px system-ui;fill:#fff;text-anchor:middle;dominant-baseline:middle;pointer-events:none}&#10;.ls-g0{stroke:#fff;stroke-opacity:.55;stroke-width:1.2}&#10;.ls-g1{stroke:#fff;stroke-opacity:.2;stroke-width:.6}&#10;.ls-gl{font:10px system-ui;fill:#fff;fill-opacity:.45;text-anchor:end;dominant-baseline:middle}&#10;.ls-tk{stroke:#fff;stroke-opacity:.3}&#10;.ls-tl{font:9px system-ui;fill:#fff;fill-opacity:.45;text-anchor:middle}&#10;.ls-lg{opacity:.85}&#10;.ls-lg2{opacity:.75}&#10;.ls-lt{font:9px system-ui;fill:#fff;fill-opacity:.6;dominant-baseline:middle}&#10;.ls-ax{stroke:#fff;stroke-opacity:.4}&#10;.ls-al{font:10px system-ui;fill:#fff;fill-opacity:.45;text-anchor:middle;dominant-baseline:middle}&#10;.ls-th{font:9px system-ui;fill:#fff;fill-opacity:.28;text-anchor:end}&#10;&lt;/style&gt;&#10;&lt;script&gt;//&lt;![CDATA[&#10;(function(){&#10;// ── Tooltip helpers — tooltip data lives in the SVG's data-tooltipmap&#10;// JSON attribute; clicking a marker renders its tooltip group on demand,&#10;// clicking anywhere else removes it. Works for inline charts and for&#10;// lightbox clones (attributes survive cloneNode) via one delegated listener.&#10;window.lsRemoveTip=function(svg){&#10;var ex=svg.querySelector('[data-active-tip]');&#10;if(ex)ex.parentNode.removeChild(ex);&#10;};&#10;window.lsMoonPath=function(pa,ill){&#10;var e=((pa%360)+360)%360;&#10;var waxing=e&lt;180;&#10;var gibbous=ill&gt;0.5;&#10;var r=46,c=50;&#10;var rx=r*Math.abs(2*ill-1);&#10;var top=c+' '+(c-r),bot=c+' '+(c+r);&#10;var s='&lt;circle cx="50" cy="50" r="46" fill="#3b4358"/&gt;';&#10;if(ill&gt;=0.995){&#10;s+='&lt;circle cx="50" cy="50" r="46" fill="#f2ecd0"/&gt;';&#10;}else if(ill&gt;0.005){&#10;var limb,term;&#10;if(waxing){&#10;limb='M '+top+' A '+r+' '+r+' 0 0 1 '+bot;&#10;term=gibbous?'A '+rx+' '+r+' 0 0 1 '+top:'A '+rx+' '+r+' 0 0 0 '+top;&#10;}else{&#10;limb='M '+top+' A '+r+' '+r+' 0 0 0 '+bot;&#10;term=gibbous?'A '+rx+' '+r+' 0 0 0 '+top:'A '+rx+' '+r+' 0 0 1 '+top;&#10;}&#10;s+='&lt;path d="'+limb+' '+term+' Z" fill="#f2ecd0"/&gt;';&#10;}&#10;s+='&lt;circle cx="50" cy="50" r="46" fill="none" stroke="#828b9c" stroke-width="2"/&gt;';&#10;return s;&#10;};&#10;window.lsShowTip=function(svg,key){&#10;lsRemoveTip(svg);&#10;var map;&#10;try{map=JSON.parse(svg.getAttribute('data-tooltipmap'));}catch(e){return;}&#10;var d=map[key];&#10;if(!d)return;&#10;var ns='http://www.w3.org/2000/svg';&#10;var g=document.createElementNS(ns,'g');&#10;g.setAttribute('data-active-tip',key);&#10;g.setAttribute('pointer-events','none');&#10;var rect=document.createElementNS(ns,'rect');&#10;rect.setAttribute('x',d.x);rect.setAttribute('y',d.y);&#10;rect.setAttribute('width',d.w);rect.setAttribute('height',d.h);&#10;rect.setAttribute('rx','5');&#10;rect.setAttribute('fill','black');rect.setAttribute('fill-opacity','0.62');&#10;rect.setAttribute('stroke',d.a);rect.setAttribute('stroke-width','1.2');rect.setAttribute('stroke-opacity','0.85');&#10;g.appendChild(rect);&#10;if(typeof d.p==='number'&amp;&amp;typeof d.i==='number'){&#10;var sz=Math.floor(d.h/2),m=5;&#10;var mpg=document.createElementNS(ns,'g');&#10;mpg.setAttribute('transform','translate('+(d.x+d.w-sz-m)+','+(d.y+m)+') scale('+(sz/100)+')');&#10;if(d.n){mpg.setAttribute('role','img');mpg.setAttribute('aria-label',d.n);}&#10;mpg.innerHTML=lsMoonPath(d.p,d.i);&#10;g.appendChild(mpg);&#10;}&#10;var lines=d.l.split('\n');&#10;for(var i=0;i&lt;lines.length;i++){&#10;var t=document.createElementNS(ns,'text');&#10;t.setAttribute('x',d.x+10);t.setAttribute('y',d.y+14+i*17);&#10;t.setAttribute('font-size','10');&#10;t.setAttribute('fill',i===0?d.a:'white');&#10;t.setAttribute('fill-opacity','0.95');&#10;t.setAttribute('font-weight',i===0?'bold':'normal');&#10;t.textContent=lines[i];&#10;g.appendChild(t);&#10;}&#10;svg.appendChild(g);&#10;};&#10;// ── Delegated clicks: marker shows its tooltip, background removes it ─&#10;document.addEventListener('click',function(e){&#10;var el=e.target.closest?e.target.closest('[data-tipkey]'):null;&#10;if(el){&#10;var svg=el.closest('svg[data-tooltipmap]');&#10;if(svg){e.stopPropagation();lsShowTip(svg,el.getAttribute('data-tipkey'));}&#10;return;&#10;}&#10;var svg2=e.target.closest?e.target.closest('svg[data-tooltipmap]'):null;&#10;if(svg2)lsRemoveTip(svg2);&#10;});&#10;// ── Lightbox — runs only once per page ───────────────────────────&#10;if(window._lsLbInit)return;&#10;window._lsLbInit=true;&#10;// Overlay — flex column so topBar stays fixed-height and holder fills the rest.&#10;// overflow:hidden on the overlay prevents any body scroll bleed-through.&#10;var ov=document.createElement('div');&#10;ov.style.cssText='display:none;position:fixed;inset:0;z-index:9000;background:#0d1117;flex-direction:column;overflow:hidden;';&#10;// ── Header row ────────────────────────────────────────────────────&#10;// lSpacer mirrors closeBtn's min-width so the titleGroup stays centred.&#10;var topBar=document.createElement('div');&#10;topBar.style.cssText='flex-shrink:0;background:#0d1117;display:flex;align-items:center;gap:10px;padding:8px 14px;';&#10;var lSpacer=document.createElement('div');&#10;lSpacer.style.cssText='flex-shrink:0;min-width:88px;';&#10;topBar.appendChild(lSpacer);&#10;var titleGroup=document.createElement('div');&#10;titleGroup.style.cssText='flex:1;text-align:center;overflow:hidden;pointer-events:none;';&#10;var titleEl=document.createElement('div');&#10;titleEl.style.cssText='color:#e6edf3;font-size:15px;font-family:system-ui,sans-serif;font-weight:600;line-height:1.3;';&#10;var hintEl=document.createElement('div');&#10;hintEl.style.cssText='color:rgba(230,237,243,0.35);font-size:11px;font-family:system-ui,sans-serif;margin-top:2px;line-height:1.4;';&#10;hintEl.textContent='Tatal atau cubit untuk zum · Seret untuk imbas · Klik dua kali untuk tetapkan semula';&#10;titleGroup.appendChild(titleEl);&#10;titleGroup.appendChild(hintEl);&#10;topBar.appendChild(titleGroup);&#10;var closeBtn=document.createElement('button');&#10;closeBtn.textContent='✕ Tutup';&#10;closeBtn.style.cssText='padding:10px 24px;font-size:14px;font-family:system-ui,sans-serif;cursor:pointer;border:1px solid rgba(255,255,255,0.45);border-radius:6px;background:rgba(255,255,255,0.10);color:#e6edf3;flex-shrink:0;touch-action:manipulation;min-height:44px;min-width:88px;';&#10;topBar.appendChild(closeBtn);&#10;// ── Chart area — fills every pixel below the header ───────────────&#10;// min-height:0 is required: flex children default to min-height:auto&#10;// which prevents them shrinking below their content size.&#10;var holder=document.createElement('div');&#10;holder.style.cssText='flex:1;min-height:0;overflow:hidden;';&#10;ov.appendChild(topBar);&#10;ov.appendChild(holder);&#10;document.body.appendChild(ov);&#10;var _savedBodyOverflow='';&#10;function closeLb(){ov.style.display='none';holder.innerHTML='';document.body.style.overflow=_savedBodyOverflow;}&#10;closeBtn.addEventListener('click',closeLb);&#10;ov.addEventListener('click',function(e){if(e.target===ov)closeLb();});&#10;document.addEventListener('keydown',function(e){if(e.key==='Escape'&amp;&amp;ov.style.display!=='none')closeLb();});&#10;// ── Shared pan-state for lightbox mouse drag ──────────────────────&#10;var _lb={panFn:null,endFn:null};&#10;ov.addEventListener('mousemove',function(e){if(_lb.panFn)_lb.panFn(e);});&#10;ov.addEventListener('mouseup',function(){if(_lb.endFn)_lb.endFn();});&#10;ov.addEventListener('mouseleave',function(){if(_lb.endFn)_lb.endFn();});&#10;// ── Zoom / pan initialiser (called for each new lightbox SVG) ─────&#10;function initZoom(svg,W,H){&#10;var vb={x:0,y:0,w:W,h:H};&#10;var isPanning=false,panStart=null,panStartVB=null;&#10;var pinchDist=0,pinchMidX=0,pinchMidY=0,pinchStartVB=null;&#10;// Tap-detection state — a touch that barely moved within 350 ms is a tap.&#10;// initZoom calls e.preventDefault() in touchstart (needed to suppress the&#10;// browser's own pan/zoom), which stops the browser from synthesising a click&#10;// event from touch. We synthesise it ourselves in touchend so that marker&#10;// onclick handlers and the SVG background onclick both work on touchscreens.&#10;// _lastTap* tracks the previous tap for double-tap-to-reset detection&#10;// (Chromium on touch does not fire dblclick from touch events).&#10;var _tapEl=null,_tapT=0,_tapX=0,_tapY=0;&#10;var _lastTapT=0,_lastTapX=0,_lastTapY=0;&#10;function setVB(){svg.setAttribute('viewBox',vb.x+' '+vb.y+' '+vb.w+' '+vb.h);}&#10;// ── Rendering helpers ─────────────────────────────────────────────&#10;// The SVG uses preserveAspectRatio="xMidYMid meet", so the chart content&#10;// is letter-boxed inside the SVG element. Using the SVG element dimensions&#10;// directly (r.width / r.height) for pan calculations produces wildly&#10;// different sensitivities for x vs y on portrait phones (4-5× mismatch).&#10;// The correct divisor for both axes is the render scale:&#10;// renderScale = min(elementW/vbW, elementH/vbH)&#10;// which gives a uniform 1-screen-pixel = 1/renderScale chart-units feel.&#10;// The same correction is needed for zoom cursor anchoring.&#10;function renderScale(r,w,h){return Math.min(r.width/w,r.height/h);}&#10;function contentOff(r,w,h,rs){&#10;return{ox:(r.width-w*rs)/2,oy:(r.height-h*rs)/2};&#10;}&#10;svg.addEventListener('wheel',function(e){&#10;e.preventDefault();e.stopPropagation();&#10;var r=svg.getBoundingClientRect();&#10;var ratio=e.deltaY&gt;0?1.12:1/1.12;&#10;var rs=renderScale(r,vb.w,vb.h);&#10;var off=contentOff(r,vb.w,vb.h,rs);&#10;var nx=(e.clientX-r.left-off.ox)/(vb.w*rs);&#10;var ny=(e.clientY-r.top-off.oy)/(vb.h*rs);&#10;var fx=vb.x+nx*vb.w,fy=vb.y+ny*vb.h;&#10;vb.w*=ratio;vb.h*=ratio;&#10;vb.x=fx-nx*vb.w;vb.y=fy-ny*vb.h;&#10;setVB();&#10;},{passive:false});&#10;svg.addEventListener('mousedown',function(e){&#10;if(e.button!==0)return;&#10;e.preventDefault();&#10;isPanning=true;&#10;panStart={x:e.clientX,y:e.clientY};&#10;panStartVB={x:vb.x,y:vb.y,w:vb.w,h:vb.h};&#10;svg.style.cursor='grabbing';&#10;_lb.panFn=function(ev){&#10;if(!isPanning)return;&#10;var r=svg.getBoundingClientRect();&#10;var rs=renderScale(r,panStartVB.w,panStartVB.h);&#10;vb.x=panStartVB.x-(ev.clientX-panStart.x)/rs;&#10;vb.y=panStartVB.y-(ev.clientY-panStart.y)/rs;&#10;setVB();&#10;};&#10;_lb.endFn=function(){isPanning=false;svg.style.cursor='grab';_lb.panFn=null;_lb.endFn=null;};&#10;});&#10;svg.addEventListener('touchstart',function(e){&#10;e.preventDefault();&#10;if(e.touches.length===1){&#10;isPanning=true;&#10;panStart={x:e.touches[0].clientX,y:e.touches[0].clientY};&#10;panStartVB={x:vb.x,y:vb.y,w:vb.w,h:vb.h};&#10;// Record tap candidate — cleared on significant move or multi-touch&#10;_tapEl=e.target;&#10;_tapT=Date.now();&#10;_tapX=e.touches[0].clientX;&#10;_tapY=e.touches[0].clientY;&#10;}else if(e.touches.length&gt;=2){&#10;isPanning=false;panStart=null;&#10;_tapEl=null;&#10;pinchDist=Math.hypot(e.touches[0].clientX-e.touches[1].clientX,e.touches[0].clientY-e.touches[1].clientY);&#10;pinchMidX=(e.touches[0].clientX+e.touches[1].clientX)/2;&#10;pinchMidY=(e.touches[0].clientY+e.touches[1].clientY)/2;&#10;pinchStartVB={x:vb.x,y:vb.y,w:vb.w,h:vb.h};&#10;}&#10;},{passive:false});&#10;svg.addEventListener('touchmove',function(e){&#10;e.preventDefault();e.stopPropagation();&#10;// Cancel tap if finger moved more than 8 px — this is a pan, not a tap&#10;if(_tapEl&amp;&amp;e.touches.length===1){&#10;var dx=Math.abs(e.touches[0].clientX-_tapX);&#10;var dy=Math.abs(e.touches[0].clientY-_tapY);&#10;if(dx&gt;8||dy&gt;8)_tapEl=null;&#10;}&#10;var r=svg.getBoundingClientRect();&#10;if(e.touches.length===1&amp;&amp;isPanning&amp;&amp;panStart){&#10;var rs=renderScale(r,panStartVB.w,panStartVB.h);&#10;vb.x=panStartVB.x-(e.touches[0].clientX-panStart.x)/rs;&#10;vb.y=panStartVB.y-(e.touches[0].clientY-panStart.y)/rs;&#10;setVB();&#10;}else if(e.touches.length&gt;=2&amp;&amp;pinchDist&gt;0&amp;&amp;pinchStartVB){&#10;var dist=Math.hypot(e.touches[0].clientX-e.touches[1].clientX,e.touches[0].clientY-e.touches[1].clientY);&#10;var midX=(e.touches[0].clientX+e.touches[1].clientX)/2;&#10;var midY=(e.touches[0].clientY+e.touches[1].clientY)/2;&#10;var scale=pinchDist/dist;&#10;var lvb=pinchStartVB;&#10;var rs=renderScale(r,lvb.w,lvb.h);&#10;var off=contentOff(r,lvb.w,lvb.h,rs);&#10;var cw=lvb.w*rs,ch=lvb.h*rs;&#10;var nx=(midX-r.left-off.ox)/cw,ny=(midY-r.top-off.oy)/ch;&#10;var origNx=(pinchMidX-r.left-off.ox)/cw,origNy=(pinchMidY-r.top-off.oy)/ch;&#10;var fx=lvb.x+origNx*lvb.w,fy=lvb.y+origNy*lvb.h;&#10;vb.w=lvb.w*scale;vb.h=lvb.h*scale;&#10;vb.x=fx-nx*vb.w;vb.y=fy-ny*vb.h;&#10;setVB();&#10;}&#10;},{passive:false});&#10;svg.addEventListener('touchend',function(e){&#10;// Synthesise a click on a short tap so marker handlers fire on touchscreens.&#10;// For double-tap: Chromium on touch does not fire dblclick from touch events.&#10;// We detect two taps within 350 ms / 30 px and reset the view instead.&#10;if(_tapEl&amp;&amp;e.touches.length===0&amp;&amp;e.changedTouches.length===1){&#10;var now=Date.now();&#10;var dt=now-_tapT;&#10;if(dt&lt;350){&#10;var tdx=Math.abs(e.changedTouches[0].clientX-_lastTapX);&#10;var tdy=Math.abs(e.changedTouches[0].clientY-_lastTapY);&#10;if(now-_lastTapT&lt;350&amp;&amp;tdx&lt;30&amp;&amp;tdy&lt;30){&#10;// Double-tap detected — reset view (mirrors dblclick handler).&#10;// Clear _lastTapT so a third tap starts a new double-tap window.&#10;_lastTapT=0;&#10;vb={x:0,y:0,w:W,h:H};setVB();&#10;}else{&#10;// Single tap — fire click for tooltip toggle, record for next double-tap check.&#10;_lastTapT=now;&#10;_lastTapX=e.changedTouches[0].clientX;&#10;_lastTapY=e.changedTouches[0].clientY;&#10;_tapEl.dispatchEvent(new MouseEvent('click',{bubbles:true,cancelable:true,view:window}));&#10;}&#10;}&#10;}&#10;_tapEl=null;&#10;if(e.touches.length===0){isPanning=false;panStart=null;}&#10;if(e.touches.length&lt;2){pinchDist=0;pinchStartVB=null;}&#10;});&#10;svg.addEventListener('dblclick',function(){vb={x:0,y:0,w:W,h:H};setVB();});&#10;}&#10;// ── Open lightbox ─────────────────────────────────────────────────&#10;window.lsOpenLightbox=function(svgId,svgW,svgH,chartTitle){&#10;var W=svgW||900,H=svgH||390;&#10;titleEl.textContent=chartTitle||'';&#10;var orig=document.getElementById(svgId);&#10;if(!orig)return;&#10;var clone=orig.cloneNode(true);&#10;clone.querySelectorAll('script').forEach(function(s){s.parentNode.removeChild(s);});&#10;clone.removeAttribute('id');&#10;// width+height 100% fills the holder completely; the SVG's viewBox (managed by&#10;// initZoom) controls which part of the chart coordinate space is visible.&#10;// Changing the viewBox never changes the SVG element's screen size, so zoom and&#10;// pan always use the full screen area below the header — no clipping.&#10;// max-width is reset because the original inline style carries max-width:900px&#10;// which would cap the SVG at its inline-chart width regardless of screen size.&#10;clone.style.maxWidth='none';&#10;clone.style.width='100%';&#10;clone.style.height='100%';&#10;clone.style.touchAction='none';&#10;clone.style.cursor='grab';&#10;holder.innerHTML='';&#10;holder.appendChild(clone);&#10;_savedBodyOverflow=document.body.style.overflow||'';&#10;document.body.style.overflow='hidden';&#10;ov.style.display='flex';&#10;initZoom(clone,W,H);&#10;};&#10;})();&#10;//]]&gt;&lt;/script&gt;&#10;&#10;&lt;h2 class="relative group"&gt;1920-an&#10; &lt;div id="1920-an" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#1920-an" aria-label="Pautan"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&#10;&#10;&#10;&#10;&lt;h3 class="relative group"&gt;Pegunan Bulan Ekstrem&#10; &lt;div id="pegunan-bulan-ekstrem" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#pegunan-bulan-ekstrem" aria-label="Pautan"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;p&gt;&lt;strong&gt;Hemisfera Utara&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Pegunan Bulan — 1930-an</title><link>https://kosmik.my/nebula/ms/lunar-standstills/1930/</link><pubDate>Sat, 03 Jan 2026 00:00:00 +0800</pubDate><guid>https://kosmik.my/nebula/ms/lunar-standstills/1930/</guid><description>&lt;style&gt;&#10;.ls-tbl{display:table;width:100%;overflow:visible}&#10;.ls-tbl td{vertical-align:top}&#10;.ls-moon{display:inline-flex;align-items:center;gap:.55em;text-align:left;vertical-align:middle}&#10;.ls-moon&gt;svg{flex:0 0 auto;display:block}&#10;.ls-moon-info{display:flex;flex-direction:column;line-height:1.3;min-width:0}&#10;.ls-moon-name{font-weight:600;white-space:nowrap}&#10;.ls-moon-pct{font-size:.82em;opacity:.82}&#10;.ls-moon-age{font-size:.78em;opacity:.68;white-space:normal}&#10;.ls-moon-age-lbl{font-weight:600;opacity:.85}&#10;@media(max-width:640px){&#10;.ls-tbl thead{display:none}&#10;.ls-tbl,.ls-tbl tbody,.ls-tbl tr{display:block}&#10;.ls-tbl tr{padding:.3em 0}&#10;.ls-tbl tbody tr{border-top-width:1px;border-top-color:var(--tw-prose-td-borders)}&#10;.ls-tbl tbody tr:first-child{border-top-color:var(--tw-prose-th-borders)}&#10;.ls-tbl tbody tr:last-child{border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}&#10;.ls-tbl td{display:flex;justify-content:space-between;align-items:baseline;padding:3px 0;text-align:right;white-space:normal}&#10;.ls-tbl td::before{content:attr(data-label);flex-shrink:0;text-align:left;font-weight:600;padding-right:.75em;white-space:nowrap;color:var(--tw-prose-headings,currentColor);opacity:.8}&#10; .ls-moon{align-items:center;flex-direction:row-reverse}&#10; .ls-moon-info{align-items:flex-end;text-align:right}&#10; }&#10;/* Chart SVG shared styles — repetitive stroke/font attributes live here&#10; so each marker/grid/legend element carries only its unique values. */&#10;.ls-c{cursor:pointer}&#10;.ls-mk{stroke:#fff;stroke-opacity:.5;stroke-width:1.2;opacity:.9}&#10;.ls-mt{font:bold 10px system-ui;fill:#fff;text-anchor:middle;dominant-baseline:middle;pointer-events:none}&#10;.ls-g0{stroke:#fff;stroke-opacity:.55;stroke-width:1.2}&#10;.ls-g1{stroke:#fff;stroke-opacity:.2;stroke-width:.6}&#10;.ls-gl{font:10px system-ui;fill:#fff;fill-opacity:.45;text-anchor:end;dominant-baseline:middle}&#10;.ls-tk{stroke:#fff;stroke-opacity:.3}&#10;.ls-tl{font:9px system-ui;fill:#fff;fill-opacity:.45;text-anchor:middle}&#10;.ls-lg{opacity:.85}&#10;.ls-lg2{opacity:.75}&#10;.ls-lt{font:9px system-ui;fill:#fff;fill-opacity:.6;dominant-baseline:middle}&#10;.ls-ax{stroke:#fff;stroke-opacity:.4}&#10;.ls-al{font:10px system-ui;fill:#fff;fill-opacity:.45;text-anchor:middle;dominant-baseline:middle}&#10;.ls-th{font:9px system-ui;fill:#fff;fill-opacity:.28;text-anchor:end}&#10;&lt;/style&gt;&#10;&lt;script&gt;//&lt;![CDATA[&#10;(function(){&#10;// ── Tooltip helpers — tooltip data lives in the SVG's data-tooltipmap&#10;// JSON attribute; clicking a marker renders its tooltip group on demand,&#10;// clicking anywhere else removes it. Works for inline charts and for&#10;// lightbox clones (attributes survive cloneNode) via one delegated listener.&#10;window.lsRemoveTip=function(svg){&#10;var ex=svg.querySelector('[data-active-tip]');&#10;if(ex)ex.parentNode.removeChild(ex);&#10;};&#10;window.lsMoonPath=function(pa,ill){&#10;var e=((pa%360)+360)%360;&#10;var waxing=e&lt;180;&#10;var gibbous=ill&gt;0.5;&#10;var r=46,c=50;&#10;var rx=r*Math.abs(2*ill-1);&#10;var top=c+' '+(c-r),bot=c+' '+(c+r);&#10;var s='&lt;circle cx="50" cy="50" r="46" fill="#3b4358"/&gt;';&#10;if(ill&gt;=0.995){&#10;s+='&lt;circle cx="50" cy="50" r="46" fill="#f2ecd0"/&gt;';&#10;}else if(ill&gt;0.005){&#10;var limb,term;&#10;if(waxing){&#10;limb='M '+top+' A '+r+' '+r+' 0 0 1 '+bot;&#10;term=gibbous?'A '+rx+' '+r+' 0 0 1 '+top:'A '+rx+' '+r+' 0 0 0 '+top;&#10;}else{&#10;limb='M '+top+' A '+r+' '+r+' 0 0 0 '+bot;&#10;term=gibbous?'A '+rx+' '+r+' 0 0 0 '+top:'A '+rx+' '+r+' 0 0 1 '+top;&#10;}&#10;s+='&lt;path d="'+limb+' '+term+' Z" fill="#f2ecd0"/&gt;';&#10;}&#10;s+='&lt;circle cx="50" cy="50" r="46" fill="none" stroke="#828b9c" stroke-width="2"/&gt;';&#10;return s;&#10;};&#10;window.lsShowTip=function(svg,key){&#10;lsRemoveTip(svg);&#10;var map;&#10;try{map=JSON.parse(svg.getAttribute('data-tooltipmap'));}catch(e){return;}&#10;var d=map[key];&#10;if(!d)return;&#10;var ns='http://www.w3.org/2000/svg';&#10;var g=document.createElementNS(ns,'g');&#10;g.setAttribute('data-active-tip',key);&#10;g.setAttribute('pointer-events','none');&#10;var rect=document.createElementNS(ns,'rect');&#10;rect.setAttribute('x',d.x);rect.setAttribute('y',d.y);&#10;rect.setAttribute('width',d.w);rect.setAttribute('height',d.h);&#10;rect.setAttribute('rx','5');&#10;rect.setAttribute('fill','black');rect.setAttribute('fill-opacity','0.62');&#10;rect.setAttribute('stroke',d.a);rect.setAttribute('stroke-width','1.2');rect.setAttribute('stroke-opacity','0.85');&#10;g.appendChild(rect);&#10;if(typeof d.p==='number'&amp;&amp;typeof d.i==='number'){&#10;var sz=Math.floor(d.h/2),m=5;&#10;var mpg=document.createElementNS(ns,'g');&#10;mpg.setAttribute('transform','translate('+(d.x+d.w-sz-m)+','+(d.y+m)+') scale('+(sz/100)+')');&#10;if(d.n){mpg.setAttribute('role','img');mpg.setAttribute('aria-label',d.n);}&#10;mpg.innerHTML=lsMoonPath(d.p,d.i);&#10;g.appendChild(mpg);&#10;}&#10;var lines=d.l.split('\n');&#10;for(var i=0;i&lt;lines.length;i++){&#10;var t=document.createElementNS(ns,'text');&#10;t.setAttribute('x',d.x+10);t.setAttribute('y',d.y+14+i*17);&#10;t.setAttribute('font-size','10');&#10;t.setAttribute('fill',i===0?d.a:'white');&#10;t.setAttribute('fill-opacity','0.95');&#10;t.setAttribute('font-weight',i===0?'bold':'normal');&#10;t.textContent=lines[i];&#10;g.appendChild(t);&#10;}&#10;svg.appendChild(g);&#10;};&#10;// ── Delegated clicks: marker shows its tooltip, background removes it ─&#10;document.addEventListener('click',function(e){&#10;var el=e.target.closest?e.target.closest('[data-tipkey]'):null;&#10;if(el){&#10;var svg=el.closest('svg[data-tooltipmap]');&#10;if(svg){e.stopPropagation();lsShowTip(svg,el.getAttribute('data-tipkey'));}&#10;return;&#10;}&#10;var svg2=e.target.closest?e.target.closest('svg[data-tooltipmap]'):null;&#10;if(svg2)lsRemoveTip(svg2);&#10;});&#10;// ── Lightbox — runs only once per page ───────────────────────────&#10;if(window._lsLbInit)return;&#10;window._lsLbInit=true;&#10;// Overlay — flex column so topBar stays fixed-height and holder fills the rest.&#10;// overflow:hidden on the overlay prevents any body scroll bleed-through.&#10;var ov=document.createElement('div');&#10;ov.style.cssText='display:none;position:fixed;inset:0;z-index:9000;background:#0d1117;flex-direction:column;overflow:hidden;';&#10;// ── Header row ────────────────────────────────────────────────────&#10;// lSpacer mirrors closeBtn's min-width so the titleGroup stays centred.&#10;var topBar=document.createElement('div');&#10;topBar.style.cssText='flex-shrink:0;background:#0d1117;display:flex;align-items:center;gap:10px;padding:8px 14px;';&#10;var lSpacer=document.createElement('div');&#10;lSpacer.style.cssText='flex-shrink:0;min-width:88px;';&#10;topBar.appendChild(lSpacer);&#10;var titleGroup=document.createElement('div');&#10;titleGroup.style.cssText='flex:1;text-align:center;overflow:hidden;pointer-events:none;';&#10;var titleEl=document.createElement('div');&#10;titleEl.style.cssText='color:#e6edf3;font-size:15px;font-family:system-ui,sans-serif;font-weight:600;line-height:1.3;';&#10;var hintEl=document.createElement('div');&#10;hintEl.style.cssText='color:rgba(230,237,243,0.35);font-size:11px;font-family:system-ui,sans-serif;margin-top:2px;line-height:1.4;';&#10;hintEl.textContent='Tatal atau cubit untuk zum · Seret untuk imbas · Klik dua kali untuk tetapkan semula';&#10;titleGroup.appendChild(titleEl);&#10;titleGroup.appendChild(hintEl);&#10;topBar.appendChild(titleGroup);&#10;var closeBtn=document.createElement('button');&#10;closeBtn.textContent='✕ Tutup';&#10;closeBtn.style.cssText='padding:10px 24px;font-size:14px;font-family:system-ui,sans-serif;cursor:pointer;border:1px solid rgba(255,255,255,0.45);border-radius:6px;background:rgba(255,255,255,0.10);color:#e6edf3;flex-shrink:0;touch-action:manipulation;min-height:44px;min-width:88px;';&#10;topBar.appendChild(closeBtn);&#10;// ── Chart area — fills every pixel below the header ───────────────&#10;// min-height:0 is required: flex children default to min-height:auto&#10;// which prevents them shrinking below their content size.&#10;var holder=document.createElement('div');&#10;holder.style.cssText='flex:1;min-height:0;overflow:hidden;';&#10;ov.appendChild(topBar);&#10;ov.appendChild(holder);&#10;document.body.appendChild(ov);&#10;var _savedBodyOverflow='';&#10;function closeLb(){ov.style.display='none';holder.innerHTML='';document.body.style.overflow=_savedBodyOverflow;}&#10;closeBtn.addEventListener('click',closeLb);&#10;ov.addEventListener('click',function(e){if(e.target===ov)closeLb();});&#10;document.addEventListener('keydown',function(e){if(e.key==='Escape'&amp;&amp;ov.style.display!=='none')closeLb();});&#10;// ── Shared pan-state for lightbox mouse drag ──────────────────────&#10;var _lb={panFn:null,endFn:null};&#10;ov.addEventListener('mousemove',function(e){if(_lb.panFn)_lb.panFn(e);});&#10;ov.addEventListener('mouseup',function(){if(_lb.endFn)_lb.endFn();});&#10;ov.addEventListener('mouseleave',function(){if(_lb.endFn)_lb.endFn();});&#10;// ── Zoom / pan initialiser (called for each new lightbox SVG) ─────&#10;function initZoom(svg,W,H){&#10;var vb={x:0,y:0,w:W,h:H};&#10;var isPanning=false,panStart=null,panStartVB=null;&#10;var pinchDist=0,pinchMidX=0,pinchMidY=0,pinchStartVB=null;&#10;// Tap-detection state — a touch that barely moved within 350 ms is a tap.&#10;// initZoom calls e.preventDefault() in touchstart (needed to suppress the&#10;// browser's own pan/zoom), which stops the browser from synthesising a click&#10;// event from touch. We synthesise it ourselves in touchend so that marker&#10;// onclick handlers and the SVG background onclick both work on touchscreens.&#10;// _lastTap* tracks the previous tap for double-tap-to-reset detection&#10;// (Chromium on touch does not fire dblclick from touch events).&#10;var _tapEl=null,_tapT=0,_tapX=0,_tapY=0;&#10;var _lastTapT=0,_lastTapX=0,_lastTapY=0;&#10;function setVB(){svg.setAttribute('viewBox',vb.x+' '+vb.y+' '+vb.w+' '+vb.h);}&#10;// ── Rendering helpers ─────────────────────────────────────────────&#10;// The SVG uses preserveAspectRatio="xMidYMid meet", so the chart content&#10;// is letter-boxed inside the SVG element. Using the SVG element dimensions&#10;// directly (r.width / r.height) for pan calculations produces wildly&#10;// different sensitivities for x vs y on portrait phones (4-5× mismatch).&#10;// The correct divisor for both axes is the render scale:&#10;// renderScale = min(elementW/vbW, elementH/vbH)&#10;// which gives a uniform 1-screen-pixel = 1/renderScale chart-units feel.&#10;// The same correction is needed for zoom cursor anchoring.&#10;function renderScale(r,w,h){return Math.min(r.width/w,r.height/h);}&#10;function contentOff(r,w,h,rs){&#10;return{ox:(r.width-w*rs)/2,oy:(r.height-h*rs)/2};&#10;}&#10;svg.addEventListener('wheel',function(e){&#10;e.preventDefault();e.stopPropagation();&#10;var r=svg.getBoundingClientRect();&#10;var ratio=e.deltaY&gt;0?1.12:1/1.12;&#10;var rs=renderScale(r,vb.w,vb.h);&#10;var off=contentOff(r,vb.w,vb.h,rs);&#10;var nx=(e.clientX-r.left-off.ox)/(vb.w*rs);&#10;var ny=(e.clientY-r.top-off.oy)/(vb.h*rs);&#10;var fx=vb.x+nx*vb.w,fy=vb.y+ny*vb.h;&#10;vb.w*=ratio;vb.h*=ratio;&#10;vb.x=fx-nx*vb.w;vb.y=fy-ny*vb.h;&#10;setVB();&#10;},{passive:false});&#10;svg.addEventListener('mousedown',function(e){&#10;if(e.button!==0)return;&#10;e.preventDefault();&#10;isPanning=true;&#10;panStart={x:e.clientX,y:e.clientY};&#10;panStartVB={x:vb.x,y:vb.y,w:vb.w,h:vb.h};&#10;svg.style.cursor='grabbing';&#10;_lb.panFn=function(ev){&#10;if(!isPanning)return;&#10;var r=svg.getBoundingClientRect();&#10;var rs=renderScale(r,panStartVB.w,panStartVB.h);&#10;vb.x=panStartVB.x-(ev.clientX-panStart.x)/rs;&#10;vb.y=panStartVB.y-(ev.clientY-panStart.y)/rs;&#10;setVB();&#10;};&#10;_lb.endFn=function(){isPanning=false;svg.style.cursor='grab';_lb.panFn=null;_lb.endFn=null;};&#10;});&#10;svg.addEventListener('touchstart',function(e){&#10;e.preventDefault();&#10;if(e.touches.length===1){&#10;isPanning=true;&#10;panStart={x:e.touches[0].clientX,y:e.touches[0].clientY};&#10;panStartVB={x:vb.x,y:vb.y,w:vb.w,h:vb.h};&#10;// Record tap candidate — cleared on significant move or multi-touch&#10;_tapEl=e.target;&#10;_tapT=Date.now();&#10;_tapX=e.touches[0].clientX;&#10;_tapY=e.touches[0].clientY;&#10;}else if(e.touches.length&gt;=2){&#10;isPanning=false;panStart=null;&#10;_tapEl=null;&#10;pinchDist=Math.hypot(e.touches[0].clientX-e.touches[1].clientX,e.touches[0].clientY-e.touches[1].clientY);&#10;pinchMidX=(e.touches[0].clientX+e.touches[1].clientX)/2;&#10;pinchMidY=(e.touches[0].clientY+e.touches[1].clientY)/2;&#10;pinchStartVB={x:vb.x,y:vb.y,w:vb.w,h:vb.h};&#10;}&#10;},{passive:false});&#10;svg.addEventListener('touchmove',function(e){&#10;e.preventDefault();e.stopPropagation();&#10;// Cancel tap if finger moved more than 8 px — this is a pan, not a tap&#10;if(_tapEl&amp;&amp;e.touches.length===1){&#10;var dx=Math.abs(e.touches[0].clientX-_tapX);&#10;var dy=Math.abs(e.touches[0].clientY-_tapY);&#10;if(dx&gt;8||dy&gt;8)_tapEl=null;&#10;}&#10;var r=svg.getBoundingClientRect();&#10;if(e.touches.length===1&amp;&amp;isPanning&amp;&amp;panStart){&#10;var rs=renderScale(r,panStartVB.w,panStartVB.h);&#10;vb.x=panStartVB.x-(e.touches[0].clientX-panStart.x)/rs;&#10;vb.y=panStartVB.y-(e.touches[0].clientY-panStart.y)/rs;&#10;setVB();&#10;}else if(e.touches.length&gt;=2&amp;&amp;pinchDist&gt;0&amp;&amp;pinchStartVB){&#10;var dist=Math.hypot(e.touches[0].clientX-e.touches[1].clientX,e.touches[0].clientY-e.touches[1].clientY);&#10;var midX=(e.touches[0].clientX+e.touches[1].clientX)/2;&#10;var midY=(e.touches[0].clientY+e.touches[1].clientY)/2;&#10;var scale=pinchDist/dist;&#10;var lvb=pinchStartVB;&#10;var rs=renderScale(r,lvb.w,lvb.h);&#10;var off=contentOff(r,lvb.w,lvb.h,rs);&#10;var cw=lvb.w*rs,ch=lvb.h*rs;&#10;var nx=(midX-r.left-off.ox)/cw,ny=(midY-r.top-off.oy)/ch;&#10;var origNx=(pinchMidX-r.left-off.ox)/cw,origNy=(pinchMidY-r.top-off.oy)/ch;&#10;var fx=lvb.x+origNx*lvb.w,fy=lvb.y+origNy*lvb.h;&#10;vb.w=lvb.w*scale;vb.h=lvb.h*scale;&#10;vb.x=fx-nx*vb.w;vb.y=fy-ny*vb.h;&#10;setVB();&#10;}&#10;},{passive:false});&#10;svg.addEventListener('touchend',function(e){&#10;// Synthesise a click on a short tap so marker handlers fire on touchscreens.&#10;// For double-tap: Chromium on touch does not fire dblclick from touch events.&#10;// We detect two taps within 350 ms / 30 px and reset the view instead.&#10;if(_tapEl&amp;&amp;e.touches.length===0&amp;&amp;e.changedTouches.length===1){&#10;var now=Date.now();&#10;var dt=now-_tapT;&#10;if(dt&lt;350){&#10;var tdx=Math.abs(e.changedTouches[0].clientX-_lastTapX);&#10;var tdy=Math.abs(e.changedTouches[0].clientY-_lastTapY);&#10;if(now-_lastTapT&lt;350&amp;&amp;tdx&lt;30&amp;&amp;tdy&lt;30){&#10;// Double-tap detected — reset view (mirrors dblclick handler).&#10;// Clear _lastTapT so a third tap starts a new double-tap window.&#10;_lastTapT=0;&#10;vb={x:0,y:0,w:W,h:H};setVB();&#10;}else{&#10;// Single tap — fire click for tooltip toggle, record for next double-tap check.&#10;_lastTapT=now;&#10;_lastTapX=e.changedTouches[0].clientX;&#10;_lastTapY=e.changedTouches[0].clientY;&#10;_tapEl.dispatchEvent(new MouseEvent('click',{bubbles:true,cancelable:true,view:window}));&#10;}&#10;}&#10;}&#10;_tapEl=null;&#10;if(e.touches.length===0){isPanning=false;panStart=null;}&#10;if(e.touches.length&lt;2){pinchDist=0;pinchStartVB=null;}&#10;});&#10;svg.addEventListener('dblclick',function(){vb={x:0,y:0,w:W,h:H};setVB();});&#10;}&#10;// ── Open lightbox ─────────────────────────────────────────────────&#10;window.lsOpenLightbox=function(svgId,svgW,svgH,chartTitle){&#10;var W=svgW||900,H=svgH||390;&#10;titleEl.textContent=chartTitle||'';&#10;var orig=document.getElementById(svgId);&#10;if(!orig)return;&#10;var clone=orig.cloneNode(true);&#10;clone.querySelectorAll('script').forEach(function(s){s.parentNode.removeChild(s);});&#10;clone.removeAttribute('id');&#10;// width+height 100% fills the holder completely; the SVG's viewBox (managed by&#10;// initZoom) controls which part of the chart coordinate space is visible.&#10;// Changing the viewBox never changes the SVG element's screen size, so zoom and&#10;// pan always use the full screen area below the header — no clipping.&#10;// max-width is reset because the original inline style carries max-width:900px&#10;// which would cap the SVG at its inline-chart width regardless of screen size.&#10;clone.style.maxWidth='none';&#10;clone.style.width='100%';&#10;clone.style.height='100%';&#10;clone.style.touchAction='none';&#10;clone.style.cursor='grab';&#10;holder.innerHTML='';&#10;holder.appendChild(clone);&#10;_savedBodyOverflow=document.body.style.overflow||'';&#10;document.body.style.overflow='hidden';&#10;ov.style.display='flex';&#10;initZoom(clone,W,H);&#10;};&#10;})();&#10;//]]&gt;&lt;/script&gt;&#10;&#10;&lt;h2 class="relative group"&gt;1930-an&#10; &lt;div id="1930-an" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#1930-an" aria-label="Pautan"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&#10;&#10;&#10;&#10;&lt;h3 class="relative group"&gt;Pegunan Bulan Ekstrem&#10; &lt;div id="pegunan-bulan-ekstrem" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#pegunan-bulan-ekstrem" aria-label="Pautan"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;p&gt;&lt;strong&gt;Hemisfera Utara&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Pegunan Bulan — 1940-an</title><link>https://kosmik.my/nebula/ms/lunar-standstills/1940/</link><pubDate>Sat, 03 Jan 2026 00:00:00 +0800</pubDate><guid>https://kosmik.my/nebula/ms/lunar-standstills/1940/</guid><description>&lt;style&gt;&#10;.ls-tbl{display:table;width:100%;overflow:visible}&#10;.ls-tbl td{vertical-align:top}&#10;.ls-moon{display:inline-flex;align-items:center;gap:.55em;text-align:left;vertical-align:middle}&#10;.ls-moon&gt;svg{flex:0 0 auto;display:block}&#10;.ls-moon-info{display:flex;flex-direction:column;line-height:1.3;min-width:0}&#10;.ls-moon-name{font-weight:600;white-space:nowrap}&#10;.ls-moon-pct{font-size:.82em;opacity:.82}&#10;.ls-moon-age{font-size:.78em;opacity:.68;white-space:normal}&#10;.ls-moon-age-lbl{font-weight:600;opacity:.85}&#10;@media(max-width:640px){&#10;.ls-tbl thead{display:none}&#10;.ls-tbl,.ls-tbl tbody,.ls-tbl tr{display:block}&#10;.ls-tbl tr{padding:.3em 0}&#10;.ls-tbl tbody tr{border-top-width:1px;border-top-color:var(--tw-prose-td-borders)}&#10;.ls-tbl tbody tr:first-child{border-top-color:var(--tw-prose-th-borders)}&#10;.ls-tbl tbody tr:last-child{border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}&#10;.ls-tbl td{display:flex;justify-content:space-between;align-items:baseline;padding:3px 0;text-align:right;white-space:normal}&#10;.ls-tbl td::before{content:attr(data-label);flex-shrink:0;text-align:left;font-weight:600;padding-right:.75em;white-space:nowrap;color:var(--tw-prose-headings,currentColor);opacity:.8}&#10; .ls-moon{align-items:center;flex-direction:row-reverse}&#10; .ls-moon-info{align-items:flex-end;text-align:right}&#10; }&#10;/* Chart SVG shared styles — repetitive stroke/font attributes live here&#10; so each marker/grid/legend element carries only its unique values. */&#10;.ls-c{cursor:pointer}&#10;.ls-mk{stroke:#fff;stroke-opacity:.5;stroke-width:1.2;opacity:.9}&#10;.ls-mt{font:bold 10px system-ui;fill:#fff;text-anchor:middle;dominant-baseline:middle;pointer-events:none}&#10;.ls-g0{stroke:#fff;stroke-opacity:.55;stroke-width:1.2}&#10;.ls-g1{stroke:#fff;stroke-opacity:.2;stroke-width:.6}&#10;.ls-gl{font:10px system-ui;fill:#fff;fill-opacity:.45;text-anchor:end;dominant-baseline:middle}&#10;.ls-tk{stroke:#fff;stroke-opacity:.3}&#10;.ls-tl{font:9px system-ui;fill:#fff;fill-opacity:.45;text-anchor:middle}&#10;.ls-lg{opacity:.85}&#10;.ls-lg2{opacity:.75}&#10;.ls-lt{font:9px system-ui;fill:#fff;fill-opacity:.6;dominant-baseline:middle}&#10;.ls-ax{stroke:#fff;stroke-opacity:.4}&#10;.ls-al{font:10px system-ui;fill:#fff;fill-opacity:.45;text-anchor:middle;dominant-baseline:middle}&#10;.ls-th{font:9px system-ui;fill:#fff;fill-opacity:.28;text-anchor:end}&#10;&lt;/style&gt;&#10;&lt;script&gt;//&lt;![CDATA[&#10;(function(){&#10;// ── Tooltip helpers — tooltip data lives in the SVG's data-tooltipmap&#10;// JSON attribute; clicking a marker renders its tooltip group on demand,&#10;// clicking anywhere else removes it. Works for inline charts and for&#10;// lightbox clones (attributes survive cloneNode) via one delegated listener.&#10;window.lsRemoveTip=function(svg){&#10;var ex=svg.querySelector('[data-active-tip]');&#10;if(ex)ex.parentNode.removeChild(ex);&#10;};&#10;window.lsMoonPath=function(pa,ill){&#10;var e=((pa%360)+360)%360;&#10;var waxing=e&lt;180;&#10;var gibbous=ill&gt;0.5;&#10;var r=46,c=50;&#10;var rx=r*Math.abs(2*ill-1);&#10;var top=c+' '+(c-r),bot=c+' '+(c+r);&#10;var s='&lt;circle cx="50" cy="50" r="46" fill="#3b4358"/&gt;';&#10;if(ill&gt;=0.995){&#10;s+='&lt;circle cx="50" cy="50" r="46" fill="#f2ecd0"/&gt;';&#10;}else if(ill&gt;0.005){&#10;var limb,term;&#10;if(waxing){&#10;limb='M '+top+' A '+r+' '+r+' 0 0 1 '+bot;&#10;term=gibbous?'A '+rx+' '+r+' 0 0 1 '+top:'A '+rx+' '+r+' 0 0 0 '+top;&#10;}else{&#10;limb='M '+top+' A '+r+' '+r+' 0 0 0 '+bot;&#10;term=gibbous?'A '+rx+' '+r+' 0 0 0 '+top:'A '+rx+' '+r+' 0 0 1 '+top;&#10;}&#10;s+='&lt;path d="'+limb+' '+term+' Z" fill="#f2ecd0"/&gt;';&#10;}&#10;s+='&lt;circle cx="50" cy="50" r="46" fill="none" stroke="#828b9c" stroke-width="2"/&gt;';&#10;return s;&#10;};&#10;window.lsShowTip=function(svg,key){&#10;lsRemoveTip(svg);&#10;var map;&#10;try{map=JSON.parse(svg.getAttribute('data-tooltipmap'));}catch(e){return;}&#10;var d=map[key];&#10;if(!d)return;&#10;var ns='http://www.w3.org/2000/svg';&#10;var g=document.createElementNS(ns,'g');&#10;g.setAttribute('data-active-tip',key);&#10;g.setAttribute('pointer-events','none');&#10;var rect=document.createElementNS(ns,'rect');&#10;rect.setAttribute('x',d.x);rect.setAttribute('y',d.y);&#10;rect.setAttribute('width',d.w);rect.setAttribute('height',d.h);&#10;rect.setAttribute('rx','5');&#10;rect.setAttribute('fill','black');rect.setAttribute('fill-opacity','0.62');&#10;rect.setAttribute('stroke',d.a);rect.setAttribute('stroke-width','1.2');rect.setAttribute('stroke-opacity','0.85');&#10;g.appendChild(rect);&#10;if(typeof d.p==='number'&amp;&amp;typeof d.i==='number'){&#10;var sz=Math.floor(d.h/2),m=5;&#10;var mpg=document.createElementNS(ns,'g');&#10;mpg.setAttribute('transform','translate('+(d.x+d.w-sz-m)+','+(d.y+m)+') scale('+(sz/100)+')');&#10;if(d.n){mpg.setAttribute('role','img');mpg.setAttribute('aria-label',d.n);}&#10;mpg.innerHTML=lsMoonPath(d.p,d.i);&#10;g.appendChild(mpg);&#10;}&#10;var lines=d.l.split('\n');&#10;for(var i=0;i&lt;lines.length;i++){&#10;var t=document.createElementNS(ns,'text');&#10;t.setAttribute('x',d.x+10);t.setAttribute('y',d.y+14+i*17);&#10;t.setAttribute('font-size','10');&#10;t.setAttribute('fill',i===0?d.a:'white');&#10;t.setAttribute('fill-opacity','0.95');&#10;t.setAttribute('font-weight',i===0?'bold':'normal');&#10;t.textContent=lines[i];&#10;g.appendChild(t);&#10;}&#10;svg.appendChild(g);&#10;};&#10;// ── Delegated clicks: marker shows its tooltip, background removes it ─&#10;document.addEventListener('click',function(e){&#10;var el=e.target.closest?e.target.closest('[data-tipkey]'):null;&#10;if(el){&#10;var svg=el.closest('svg[data-tooltipmap]');&#10;if(svg){e.stopPropagation();lsShowTip(svg,el.getAttribute('data-tipkey'));}&#10;return;&#10;}&#10;var svg2=e.target.closest?e.target.closest('svg[data-tooltipmap]'):null;&#10;if(svg2)lsRemoveTip(svg2);&#10;});&#10;// ── Lightbox — runs only once per page ───────────────────────────&#10;if(window._lsLbInit)return;&#10;window._lsLbInit=true;&#10;// Overlay — flex column so topBar stays fixed-height and holder fills the rest.&#10;// overflow:hidden on the overlay prevents any body scroll bleed-through.&#10;var ov=document.createElement('div');&#10;ov.style.cssText='display:none;position:fixed;inset:0;z-index:9000;background:#0d1117;flex-direction:column;overflow:hidden;';&#10;// ── Header row ────────────────────────────────────────────────────&#10;// lSpacer mirrors closeBtn's min-width so the titleGroup stays centred.&#10;var topBar=document.createElement('div');&#10;topBar.style.cssText='flex-shrink:0;background:#0d1117;display:flex;align-items:center;gap:10px;padding:8px 14px;';&#10;var lSpacer=document.createElement('div');&#10;lSpacer.style.cssText='flex-shrink:0;min-width:88px;';&#10;topBar.appendChild(lSpacer);&#10;var titleGroup=document.createElement('div');&#10;titleGroup.style.cssText='flex:1;text-align:center;overflow:hidden;pointer-events:none;';&#10;var titleEl=document.createElement('div');&#10;titleEl.style.cssText='color:#e6edf3;font-size:15px;font-family:system-ui,sans-serif;font-weight:600;line-height:1.3;';&#10;var hintEl=document.createElement('div');&#10;hintEl.style.cssText='color:rgba(230,237,243,0.35);font-size:11px;font-family:system-ui,sans-serif;margin-top:2px;line-height:1.4;';&#10;hintEl.textContent='Tatal atau cubit untuk zum · Seret untuk imbas · Klik dua kali untuk tetapkan semula';&#10;titleGroup.appendChild(titleEl);&#10;titleGroup.appendChild(hintEl);&#10;topBar.appendChild(titleGroup);&#10;var closeBtn=document.createElement('button');&#10;closeBtn.textContent='✕ Tutup';&#10;closeBtn.style.cssText='padding:10px 24px;font-size:14px;font-family:system-ui,sans-serif;cursor:pointer;border:1px solid rgba(255,255,255,0.45);border-radius:6px;background:rgba(255,255,255,0.10);color:#e6edf3;flex-shrink:0;touch-action:manipulation;min-height:44px;min-width:88px;';&#10;topBar.appendChild(closeBtn);&#10;// ── Chart area — fills every pixel below the header ───────────────&#10;// min-height:0 is required: flex children default to min-height:auto&#10;// which prevents them shrinking below their content size.&#10;var holder=document.createElement('div');&#10;holder.style.cssText='flex:1;min-height:0;overflow:hidden;';&#10;ov.appendChild(topBar);&#10;ov.appendChild(holder);&#10;document.body.appendChild(ov);&#10;var _savedBodyOverflow='';&#10;function closeLb(){ov.style.display='none';holder.innerHTML='';document.body.style.overflow=_savedBodyOverflow;}&#10;closeBtn.addEventListener('click',closeLb);&#10;ov.addEventListener('click',function(e){if(e.target===ov)closeLb();});&#10;document.addEventListener('keydown',function(e){if(e.key==='Escape'&amp;&amp;ov.style.display!=='none')closeLb();});&#10;// ── Shared pan-state for lightbox mouse drag ──────────────────────&#10;var _lb={panFn:null,endFn:null};&#10;ov.addEventListener('mousemove',function(e){if(_lb.panFn)_lb.panFn(e);});&#10;ov.addEventListener('mouseup',function(){if(_lb.endFn)_lb.endFn();});&#10;ov.addEventListener('mouseleave',function(){if(_lb.endFn)_lb.endFn();});&#10;// ── Zoom / pan initialiser (called for each new lightbox SVG) ─────&#10;function initZoom(svg,W,H){&#10;var vb={x:0,y:0,w:W,h:H};&#10;var isPanning=false,panStart=null,panStartVB=null;&#10;var pinchDist=0,pinchMidX=0,pinchMidY=0,pinchStartVB=null;&#10;// Tap-detection state — a touch that barely moved within 350 ms is a tap.&#10;// initZoom calls e.preventDefault() in touchstart (needed to suppress the&#10;// browser's own pan/zoom), which stops the browser from synthesising a click&#10;// event from touch. We synthesise it ourselves in touchend so that marker&#10;// onclick handlers and the SVG background onclick both work on touchscreens.&#10;// _lastTap* tracks the previous tap for double-tap-to-reset detection&#10;// (Chromium on touch does not fire dblclick from touch events).&#10;var _tapEl=null,_tapT=0,_tapX=0,_tapY=0;&#10;var _lastTapT=0,_lastTapX=0,_lastTapY=0;&#10;function setVB(){svg.setAttribute('viewBox',vb.x+' '+vb.y+' '+vb.w+' '+vb.h);}&#10;// ── Rendering helpers ─────────────────────────────────────────────&#10;// The SVG uses preserveAspectRatio="xMidYMid meet", so the chart content&#10;// is letter-boxed inside the SVG element. Using the SVG element dimensions&#10;// directly (r.width / r.height) for pan calculations produces wildly&#10;// different sensitivities for x vs y on portrait phones (4-5× mismatch).&#10;// The correct divisor for both axes is the render scale:&#10;// renderScale = min(elementW/vbW, elementH/vbH)&#10;// which gives a uniform 1-screen-pixel = 1/renderScale chart-units feel.&#10;// The same correction is needed for zoom cursor anchoring.&#10;function renderScale(r,w,h){return Math.min(r.width/w,r.height/h);}&#10;function contentOff(r,w,h,rs){&#10;return{ox:(r.width-w*rs)/2,oy:(r.height-h*rs)/2};&#10;}&#10;svg.addEventListener('wheel',function(e){&#10;e.preventDefault();e.stopPropagation();&#10;var r=svg.getBoundingClientRect();&#10;var ratio=e.deltaY&gt;0?1.12:1/1.12;&#10;var rs=renderScale(r,vb.w,vb.h);&#10;var off=contentOff(r,vb.w,vb.h,rs);&#10;var nx=(e.clientX-r.left-off.ox)/(vb.w*rs);&#10;var ny=(e.clientY-r.top-off.oy)/(vb.h*rs);&#10;var fx=vb.x+nx*vb.w,fy=vb.y+ny*vb.h;&#10;vb.w*=ratio;vb.h*=ratio;&#10;vb.x=fx-nx*vb.w;vb.y=fy-ny*vb.h;&#10;setVB();&#10;},{passive:false});&#10;svg.addEventListener('mousedown',function(e){&#10;if(e.button!==0)return;&#10;e.preventDefault();&#10;isPanning=true;&#10;panStart={x:e.clientX,y:e.clientY};&#10;panStartVB={x:vb.x,y:vb.y,w:vb.w,h:vb.h};&#10;svg.style.cursor='grabbing';&#10;_lb.panFn=function(ev){&#10;if(!isPanning)return;&#10;var r=svg.getBoundingClientRect();&#10;var rs=renderScale(r,panStartVB.w,panStartVB.h);&#10;vb.x=panStartVB.x-(ev.clientX-panStart.x)/rs;&#10;vb.y=panStartVB.y-(ev.clientY-panStart.y)/rs;&#10;setVB();&#10;};&#10;_lb.endFn=function(){isPanning=false;svg.style.cursor='grab';_lb.panFn=null;_lb.endFn=null;};&#10;});&#10;svg.addEventListener('touchstart',function(e){&#10;e.preventDefault();&#10;if(e.touches.length===1){&#10;isPanning=true;&#10;panStart={x:e.touches[0].clientX,y:e.touches[0].clientY};&#10;panStartVB={x:vb.x,y:vb.y,w:vb.w,h:vb.h};&#10;// Record tap candidate — cleared on significant move or multi-touch&#10;_tapEl=e.target;&#10;_tapT=Date.now();&#10;_tapX=e.touches[0].clientX;&#10;_tapY=e.touches[0].clientY;&#10;}else if(e.touches.length&gt;=2){&#10;isPanning=false;panStart=null;&#10;_tapEl=null;&#10;pinchDist=Math.hypot(e.touches[0].clientX-e.touches[1].clientX,e.touches[0].clientY-e.touches[1].clientY);&#10;pinchMidX=(e.touches[0].clientX+e.touches[1].clientX)/2;&#10;pinchMidY=(e.touches[0].clientY+e.touches[1].clientY)/2;&#10;pinchStartVB={x:vb.x,y:vb.y,w:vb.w,h:vb.h};&#10;}&#10;},{passive:false});&#10;svg.addEventListener('touchmove',function(e){&#10;e.preventDefault();e.stopPropagation();&#10;// Cancel tap if finger moved more than 8 px — this is a pan, not a tap&#10;if(_tapEl&amp;&amp;e.touches.length===1){&#10;var dx=Math.abs(e.touches[0].clientX-_tapX);&#10;var dy=Math.abs(e.touches[0].clientY-_tapY);&#10;if(dx&gt;8||dy&gt;8)_tapEl=null;&#10;}&#10;var r=svg.getBoundingClientRect();&#10;if(e.touches.length===1&amp;&amp;isPanning&amp;&amp;panStart){&#10;var rs=renderScale(r,panStartVB.w,panStartVB.h);&#10;vb.x=panStartVB.x-(e.touches[0].clientX-panStart.x)/rs;&#10;vb.y=panStartVB.y-(e.touches[0].clientY-panStart.y)/rs;&#10;setVB();&#10;}else if(e.touches.length&gt;=2&amp;&amp;pinchDist&gt;0&amp;&amp;pinchStartVB){&#10;var dist=Math.hypot(e.touches[0].clientX-e.touches[1].clientX,e.touches[0].clientY-e.touches[1].clientY);&#10;var midX=(e.touches[0].clientX+e.touches[1].clientX)/2;&#10;var midY=(e.touches[0].clientY+e.touches[1].clientY)/2;&#10;var scale=pinchDist/dist;&#10;var lvb=pinchStartVB;&#10;var rs=renderScale(r,lvb.w,lvb.h);&#10;var off=contentOff(r,lvb.w,lvb.h,rs);&#10;var cw=lvb.w*rs,ch=lvb.h*rs;&#10;var nx=(midX-r.left-off.ox)/cw,ny=(midY-r.top-off.oy)/ch;&#10;var origNx=(pinchMidX-r.left-off.ox)/cw,origNy=(pinchMidY-r.top-off.oy)/ch;&#10;var fx=lvb.x+origNx*lvb.w,fy=lvb.y+origNy*lvb.h;&#10;vb.w=lvb.w*scale;vb.h=lvb.h*scale;&#10;vb.x=fx-nx*vb.w;vb.y=fy-ny*vb.h;&#10;setVB();&#10;}&#10;},{passive:false});&#10;svg.addEventListener('touchend',function(e){&#10;// Synthesise a click on a short tap so marker handlers fire on touchscreens.&#10;// For double-tap: Chromium on touch does not fire dblclick from touch events.&#10;// We detect two taps within 350 ms / 30 px and reset the view instead.&#10;if(_tapEl&amp;&amp;e.touches.length===0&amp;&amp;e.changedTouches.length===1){&#10;var now=Date.now();&#10;var dt=now-_tapT;&#10;if(dt&lt;350){&#10;var tdx=Math.abs(e.changedTouches[0].clientX-_lastTapX);&#10;var tdy=Math.abs(e.changedTouches[0].clientY-_lastTapY);&#10;if(now-_lastTapT&lt;350&amp;&amp;tdx&lt;30&amp;&amp;tdy&lt;30){&#10;// Double-tap detected — reset view (mirrors dblclick handler).&#10;// Clear _lastTapT so a third tap starts a new double-tap window.&#10;_lastTapT=0;&#10;vb={x:0,y:0,w:W,h:H};setVB();&#10;}else{&#10;// Single tap — fire click for tooltip toggle, record for next double-tap check.&#10;_lastTapT=now;&#10;_lastTapX=e.changedTouches[0].clientX;&#10;_lastTapY=e.changedTouches[0].clientY;&#10;_tapEl.dispatchEvent(new MouseEvent('click',{bubbles:true,cancelable:true,view:window}));&#10;}&#10;}&#10;}&#10;_tapEl=null;&#10;if(e.touches.length===0){isPanning=false;panStart=null;}&#10;if(e.touches.length&lt;2){pinchDist=0;pinchStartVB=null;}&#10;});&#10;svg.addEventListener('dblclick',function(){vb={x:0,y:0,w:W,h:H};setVB();});&#10;}&#10;// ── Open lightbox ─────────────────────────────────────────────────&#10;window.lsOpenLightbox=function(svgId,svgW,svgH,chartTitle){&#10;var W=svgW||900,H=svgH||390;&#10;titleEl.textContent=chartTitle||'';&#10;var orig=document.getElementById(svgId);&#10;if(!orig)return;&#10;var clone=orig.cloneNode(true);&#10;clone.querySelectorAll('script').forEach(function(s){s.parentNode.removeChild(s);});&#10;clone.removeAttribute('id');&#10;// width+height 100% fills the holder completely; the SVG's viewBox (managed by&#10;// initZoom) controls which part of the chart coordinate space is visible.&#10;// Changing the viewBox never changes the SVG element's screen size, so zoom and&#10;// pan always use the full screen area below the header — no clipping.&#10;// max-width is reset because the original inline style carries max-width:900px&#10;// which would cap the SVG at its inline-chart width regardless of screen size.&#10;clone.style.maxWidth='none';&#10;clone.style.width='100%';&#10;clone.style.height='100%';&#10;clone.style.touchAction='none';&#10;clone.style.cursor='grab';&#10;holder.innerHTML='';&#10;holder.appendChild(clone);&#10;_savedBodyOverflow=document.body.style.overflow||'';&#10;document.body.style.overflow='hidden';&#10;ov.style.display='flex';&#10;initZoom(clone,W,H);&#10;};&#10;})();&#10;//]]&gt;&lt;/script&gt;&#10;&#10;&lt;h2 class="relative group"&gt;1940-an&#10; &lt;div id="1940-an" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#1940-an" aria-label="Pautan"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&#10;&#10;&#10;&#10;&lt;h3 class="relative group"&gt;Pegunan Bulan Ekstrem&#10; &lt;div id="pegunan-bulan-ekstrem" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#pegunan-bulan-ekstrem" aria-label="Pautan"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;p&gt;&lt;strong&gt;Hemisfera Utara&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Pegunan Bulan — 1950-an</title><link>https://kosmik.my/nebula/ms/lunar-standstills/1950/</link><pubDate>Sat, 03 Jan 2026 00:00:00 +0800</pubDate><guid>https://kosmik.my/nebula/ms/lunar-standstills/1950/</guid><description>&lt;style&gt;&#10;.ls-tbl{display:table;width:100%;overflow:visible}&#10;.ls-tbl td{vertical-align:top}&#10;.ls-moon{display:inline-flex;align-items:center;gap:.55em;text-align:left;vertical-align:middle}&#10;.ls-moon&gt;svg{flex:0 0 auto;display:block}&#10;.ls-moon-info{display:flex;flex-direction:column;line-height:1.3;min-width:0}&#10;.ls-moon-name{font-weight:600;white-space:nowrap}&#10;.ls-moon-pct{font-size:.82em;opacity:.82}&#10;.ls-moon-age{font-size:.78em;opacity:.68;white-space:normal}&#10;.ls-moon-age-lbl{font-weight:600;opacity:.85}&#10;@media(max-width:640px){&#10;.ls-tbl thead{display:none}&#10;.ls-tbl,.ls-tbl tbody,.ls-tbl tr{display:block}&#10;.ls-tbl tr{padding:.3em 0}&#10;.ls-tbl tbody tr{border-top-width:1px;border-top-color:var(--tw-prose-td-borders)}&#10;.ls-tbl tbody tr:first-child{border-top-color:var(--tw-prose-th-borders)}&#10;.ls-tbl tbody tr:last-child{border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}&#10;.ls-tbl td{display:flex;justify-content:space-between;align-items:baseline;padding:3px 0;text-align:right;white-space:normal}&#10;.ls-tbl td::before{content:attr(data-label);flex-shrink:0;text-align:left;font-weight:600;padding-right:.75em;white-space:nowrap;color:var(--tw-prose-headings,currentColor);opacity:.8}&#10; .ls-moon{align-items:center;flex-direction:row-reverse}&#10; .ls-moon-info{align-items:flex-end;text-align:right}&#10; }&#10;/* Chart SVG shared styles — repetitive stroke/font attributes live here&#10; so each marker/grid/legend element carries only its unique values. */&#10;.ls-c{cursor:pointer}&#10;.ls-mk{stroke:#fff;stroke-opacity:.5;stroke-width:1.2;opacity:.9}&#10;.ls-mt{font:bold 10px system-ui;fill:#fff;text-anchor:middle;dominant-baseline:middle;pointer-events:none}&#10;.ls-g0{stroke:#fff;stroke-opacity:.55;stroke-width:1.2}&#10;.ls-g1{stroke:#fff;stroke-opacity:.2;stroke-width:.6}&#10;.ls-gl{font:10px system-ui;fill:#fff;fill-opacity:.45;text-anchor:end;dominant-baseline:middle}&#10;.ls-tk{stroke:#fff;stroke-opacity:.3}&#10;.ls-tl{font:9px system-ui;fill:#fff;fill-opacity:.45;text-anchor:middle}&#10;.ls-lg{opacity:.85}&#10;.ls-lg2{opacity:.75}&#10;.ls-lt{font:9px system-ui;fill:#fff;fill-opacity:.6;dominant-baseline:middle}&#10;.ls-ax{stroke:#fff;stroke-opacity:.4}&#10;.ls-al{font:10px system-ui;fill:#fff;fill-opacity:.45;text-anchor:middle;dominant-baseline:middle}&#10;.ls-th{font:9px system-ui;fill:#fff;fill-opacity:.28;text-anchor:end}&#10;&lt;/style&gt;&#10;&lt;script&gt;//&lt;![CDATA[&#10;(function(){&#10;// ── Tooltip helpers — tooltip data lives in the SVG's data-tooltipmap&#10;// JSON attribute; clicking a marker renders its tooltip group on demand,&#10;// clicking anywhere else removes it. Works for inline charts and for&#10;// lightbox clones (attributes survive cloneNode) via one delegated listener.&#10;window.lsRemoveTip=function(svg){&#10;var ex=svg.querySelector('[data-active-tip]');&#10;if(ex)ex.parentNode.removeChild(ex);&#10;};&#10;window.lsMoonPath=function(pa,ill){&#10;var e=((pa%360)+360)%360;&#10;var waxing=e&lt;180;&#10;var gibbous=ill&gt;0.5;&#10;var r=46,c=50;&#10;var rx=r*Math.abs(2*ill-1);&#10;var top=c+' '+(c-r),bot=c+' '+(c+r);&#10;var s='&lt;circle cx="50" cy="50" r="46" fill="#3b4358"/&gt;';&#10;if(ill&gt;=0.995){&#10;s+='&lt;circle cx="50" cy="50" r="46" fill="#f2ecd0"/&gt;';&#10;}else if(ill&gt;0.005){&#10;var limb,term;&#10;if(waxing){&#10;limb='M '+top+' A '+r+' '+r+' 0 0 1 '+bot;&#10;term=gibbous?'A '+rx+' '+r+' 0 0 1 '+top:'A '+rx+' '+r+' 0 0 0 '+top;&#10;}else{&#10;limb='M '+top+' A '+r+' '+r+' 0 0 0 '+bot;&#10;term=gibbous?'A '+rx+' '+r+' 0 0 0 '+top:'A '+rx+' '+r+' 0 0 1 '+top;&#10;}&#10;s+='&lt;path d="'+limb+' '+term+' Z" fill="#f2ecd0"/&gt;';&#10;}&#10;s+='&lt;circle cx="50" cy="50" r="46" fill="none" stroke="#828b9c" stroke-width="2"/&gt;';&#10;return s;&#10;};&#10;window.lsShowTip=function(svg,key){&#10;lsRemoveTip(svg);&#10;var map;&#10;try{map=JSON.parse(svg.getAttribute('data-tooltipmap'));}catch(e){return;}&#10;var d=map[key];&#10;if(!d)return;&#10;var ns='http://www.w3.org/2000/svg';&#10;var g=document.createElementNS(ns,'g');&#10;g.setAttribute('data-active-tip',key);&#10;g.setAttribute('pointer-events','none');&#10;var rect=document.createElementNS(ns,'rect');&#10;rect.setAttribute('x',d.x);rect.setAttribute('y',d.y);&#10;rect.setAttribute('width',d.w);rect.setAttribute('height',d.h);&#10;rect.setAttribute('rx','5');&#10;rect.setAttribute('fill','black');rect.setAttribute('fill-opacity','0.62');&#10;rect.setAttribute('stroke',d.a);rect.setAttribute('stroke-width','1.2');rect.setAttribute('stroke-opacity','0.85');&#10;g.appendChild(rect);&#10;if(typeof d.p==='number'&amp;&amp;typeof d.i==='number'){&#10;var sz=Math.floor(d.h/2),m=5;&#10;var mpg=document.createElementNS(ns,'g');&#10;mpg.setAttribute('transform','translate('+(d.x+d.w-sz-m)+','+(d.y+m)+') scale('+(sz/100)+')');&#10;if(d.n){mpg.setAttribute('role','img');mpg.setAttribute('aria-label',d.n);}&#10;mpg.innerHTML=lsMoonPath(d.p,d.i);&#10;g.appendChild(mpg);&#10;}&#10;var lines=d.l.split('\n');&#10;for(var i=0;i&lt;lines.length;i++){&#10;var t=document.createElementNS(ns,'text');&#10;t.setAttribute('x',d.x+10);t.setAttribute('y',d.y+14+i*17);&#10;t.setAttribute('font-size','10');&#10;t.setAttribute('fill',i===0?d.a:'white');&#10;t.setAttribute('fill-opacity','0.95');&#10;t.setAttribute('font-weight',i===0?'bold':'normal');&#10;t.textContent=lines[i];&#10;g.appendChild(t);&#10;}&#10;svg.appendChild(g);&#10;};&#10;// ── Delegated clicks: marker shows its tooltip, background removes it ─&#10;document.addEventListener('click',function(e){&#10;var el=e.target.closest?e.target.closest('[data-tipkey]'):null;&#10;if(el){&#10;var svg=el.closest('svg[data-tooltipmap]');&#10;if(svg){e.stopPropagation();lsShowTip(svg,el.getAttribute('data-tipkey'));}&#10;return;&#10;}&#10;var svg2=e.target.closest?e.target.closest('svg[data-tooltipmap]'):null;&#10;if(svg2)lsRemoveTip(svg2);&#10;});&#10;// ── Lightbox — runs only once per page ───────────────────────────&#10;if(window._lsLbInit)return;&#10;window._lsLbInit=true;&#10;// Overlay — flex column so topBar stays fixed-height and holder fills the rest.&#10;// overflow:hidden on the overlay prevents any body scroll bleed-through.&#10;var ov=document.createElement('div');&#10;ov.style.cssText='display:none;position:fixed;inset:0;z-index:9000;background:#0d1117;flex-direction:column;overflow:hidden;';&#10;// ── Header row ────────────────────────────────────────────────────&#10;// lSpacer mirrors closeBtn's min-width so the titleGroup stays centred.&#10;var topBar=document.createElement('div');&#10;topBar.style.cssText='flex-shrink:0;background:#0d1117;display:flex;align-items:center;gap:10px;padding:8px 14px;';&#10;var lSpacer=document.createElement('div');&#10;lSpacer.style.cssText='flex-shrink:0;min-width:88px;';&#10;topBar.appendChild(lSpacer);&#10;var titleGroup=document.createElement('div');&#10;titleGroup.style.cssText='flex:1;text-align:center;overflow:hidden;pointer-events:none;';&#10;var titleEl=document.createElement('div');&#10;titleEl.style.cssText='color:#e6edf3;font-size:15px;font-family:system-ui,sans-serif;font-weight:600;line-height:1.3;';&#10;var hintEl=document.createElement('div');&#10;hintEl.style.cssText='color:rgba(230,237,243,0.35);font-size:11px;font-family:system-ui,sans-serif;margin-top:2px;line-height:1.4;';&#10;hintEl.textContent='Tatal atau cubit untuk zum · Seret untuk imbas · Klik dua kali untuk tetapkan semula';&#10;titleGroup.appendChild(titleEl);&#10;titleGroup.appendChild(hintEl);&#10;topBar.appendChild(titleGroup);&#10;var closeBtn=document.createElement('button');&#10;closeBtn.textContent='✕ Tutup';&#10;closeBtn.style.cssText='padding:10px 24px;font-size:14px;font-family:system-ui,sans-serif;cursor:pointer;border:1px solid rgba(255,255,255,0.45);border-radius:6px;background:rgba(255,255,255,0.10);color:#e6edf3;flex-shrink:0;touch-action:manipulation;min-height:44px;min-width:88px;';&#10;topBar.appendChild(closeBtn);&#10;// ── Chart area — fills every pixel below the header ───────────────&#10;// min-height:0 is required: flex children default to min-height:auto&#10;// which prevents them shrinking below their content size.&#10;var holder=document.createElement('div');&#10;holder.style.cssText='flex:1;min-height:0;overflow:hidden;';&#10;ov.appendChild(topBar);&#10;ov.appendChild(holder);&#10;document.body.appendChild(ov);&#10;var _savedBodyOverflow='';&#10;function closeLb(){ov.style.display='none';holder.innerHTML='';document.body.style.overflow=_savedBodyOverflow;}&#10;closeBtn.addEventListener('click',closeLb);&#10;ov.addEventListener('click',function(e){if(e.target===ov)closeLb();});&#10;document.addEventListener('keydown',function(e){if(e.key==='Escape'&amp;&amp;ov.style.display!=='none')closeLb();});&#10;// ── Shared pan-state for lightbox mouse drag ──────────────────────&#10;var _lb={panFn:null,endFn:null};&#10;ov.addEventListener('mousemove',function(e){if(_lb.panFn)_lb.panFn(e);});&#10;ov.addEventListener('mouseup',function(){if(_lb.endFn)_lb.endFn();});&#10;ov.addEventListener('mouseleave',function(){if(_lb.endFn)_lb.endFn();});&#10;// ── Zoom / pan initialiser (called for each new lightbox SVG) ─────&#10;function initZoom(svg,W,H){&#10;var vb={x:0,y:0,w:W,h:H};&#10;var isPanning=false,panStart=null,panStartVB=null;&#10;var pinchDist=0,pinchMidX=0,pinchMidY=0,pinchStartVB=null;&#10;// Tap-detection state — a touch that barely moved within 350 ms is a tap.&#10;// initZoom calls e.preventDefault() in touchstart (needed to suppress the&#10;// browser's own pan/zoom), which stops the browser from synthesising a click&#10;// event from touch. We synthesise it ourselves in touchend so that marker&#10;// onclick handlers and the SVG background onclick both work on touchscreens.&#10;// _lastTap* tracks the previous tap for double-tap-to-reset detection&#10;// (Chromium on touch does not fire dblclick from touch events).&#10;var _tapEl=null,_tapT=0,_tapX=0,_tapY=0;&#10;var _lastTapT=0,_lastTapX=0,_lastTapY=0;&#10;function setVB(){svg.setAttribute('viewBox',vb.x+' '+vb.y+' '+vb.w+' '+vb.h);}&#10;// ── Rendering helpers ─────────────────────────────────────────────&#10;// The SVG uses preserveAspectRatio="xMidYMid meet", so the chart content&#10;// is letter-boxed inside the SVG element. Using the SVG element dimensions&#10;// directly (r.width / r.height) for pan calculations produces wildly&#10;// different sensitivities for x vs y on portrait phones (4-5× mismatch).&#10;// The correct divisor for both axes is the render scale:&#10;// renderScale = min(elementW/vbW, elementH/vbH)&#10;// which gives a uniform 1-screen-pixel = 1/renderScale chart-units feel.&#10;// The same correction is needed for zoom cursor anchoring.&#10;function renderScale(r,w,h){return Math.min(r.width/w,r.height/h);}&#10;function contentOff(r,w,h,rs){&#10;return{ox:(r.width-w*rs)/2,oy:(r.height-h*rs)/2};&#10;}&#10;svg.addEventListener('wheel',function(e){&#10;e.preventDefault();e.stopPropagation();&#10;var r=svg.getBoundingClientRect();&#10;var ratio=e.deltaY&gt;0?1.12:1/1.12;&#10;var rs=renderScale(r,vb.w,vb.h);&#10;var off=contentOff(r,vb.w,vb.h,rs);&#10;var nx=(e.clientX-r.left-off.ox)/(vb.w*rs);&#10;var ny=(e.clientY-r.top-off.oy)/(vb.h*rs);&#10;var fx=vb.x+nx*vb.w,fy=vb.y+ny*vb.h;&#10;vb.w*=ratio;vb.h*=ratio;&#10;vb.x=fx-nx*vb.w;vb.y=fy-ny*vb.h;&#10;setVB();&#10;},{passive:false});&#10;svg.addEventListener('mousedown',function(e){&#10;if(e.button!==0)return;&#10;e.preventDefault();&#10;isPanning=true;&#10;panStart={x:e.clientX,y:e.clientY};&#10;panStartVB={x:vb.x,y:vb.y,w:vb.w,h:vb.h};&#10;svg.style.cursor='grabbing';&#10;_lb.panFn=function(ev){&#10;if(!isPanning)return;&#10;var r=svg.getBoundingClientRect();&#10;var rs=renderScale(r,panStartVB.w,panStartVB.h);&#10;vb.x=panStartVB.x-(ev.clientX-panStart.x)/rs;&#10;vb.y=panStartVB.y-(ev.clientY-panStart.y)/rs;&#10;setVB();&#10;};&#10;_lb.endFn=function(){isPanning=false;svg.style.cursor='grab';_lb.panFn=null;_lb.endFn=null;};&#10;});&#10;svg.addEventListener('touchstart',function(e){&#10;e.preventDefault();&#10;if(e.touches.length===1){&#10;isPanning=true;&#10;panStart={x:e.touches[0].clientX,y:e.touches[0].clientY};&#10;panStartVB={x:vb.x,y:vb.y,w:vb.w,h:vb.h};&#10;// Record tap candidate — cleared on significant move or multi-touch&#10;_tapEl=e.target;&#10;_tapT=Date.now();&#10;_tapX=e.touches[0].clientX;&#10;_tapY=e.touches[0].clientY;&#10;}else if(e.touches.length&gt;=2){&#10;isPanning=false;panStart=null;&#10;_tapEl=null;&#10;pinchDist=Math.hypot(e.touches[0].clientX-e.touches[1].clientX,e.touches[0].clientY-e.touches[1].clientY);&#10;pinchMidX=(e.touches[0].clientX+e.touches[1].clientX)/2;&#10;pinchMidY=(e.touches[0].clientY+e.touches[1].clientY)/2;&#10;pinchStartVB={x:vb.x,y:vb.y,w:vb.w,h:vb.h};&#10;}&#10;},{passive:false});&#10;svg.addEventListener('touchmove',function(e){&#10;e.preventDefault();e.stopPropagation();&#10;// Cancel tap if finger moved more than 8 px — this is a pan, not a tap&#10;if(_tapEl&amp;&amp;e.touches.length===1){&#10;var dx=Math.abs(e.touches[0].clientX-_tapX);&#10;var dy=Math.abs(e.touches[0].clientY-_tapY);&#10;if(dx&gt;8||dy&gt;8)_tapEl=null;&#10;}&#10;var r=svg.getBoundingClientRect();&#10;if(e.touches.length===1&amp;&amp;isPanning&amp;&amp;panStart){&#10;var rs=renderScale(r,panStartVB.w,panStartVB.h);&#10;vb.x=panStartVB.x-(e.touches[0].clientX-panStart.x)/rs;&#10;vb.y=panStartVB.y-(e.touches[0].clientY-panStart.y)/rs;&#10;setVB();&#10;}else if(e.touches.length&gt;=2&amp;&amp;pinchDist&gt;0&amp;&amp;pinchStartVB){&#10;var dist=Math.hypot(e.touches[0].clientX-e.touches[1].clientX,e.touches[0].clientY-e.touches[1].clientY);&#10;var midX=(e.touches[0].clientX+e.touches[1].clientX)/2;&#10;var midY=(e.touches[0].clientY+e.touches[1].clientY)/2;&#10;var scale=pinchDist/dist;&#10;var lvb=pinchStartVB;&#10;var rs=renderScale(r,lvb.w,lvb.h);&#10;var off=contentOff(r,lvb.w,lvb.h,rs);&#10;var cw=lvb.w*rs,ch=lvb.h*rs;&#10;var nx=(midX-r.left-off.ox)/cw,ny=(midY-r.top-off.oy)/ch;&#10;var origNx=(pinchMidX-r.left-off.ox)/cw,origNy=(pinchMidY-r.top-off.oy)/ch;&#10;var fx=lvb.x+origNx*lvb.w,fy=lvb.y+origNy*lvb.h;&#10;vb.w=lvb.w*scale;vb.h=lvb.h*scale;&#10;vb.x=fx-nx*vb.w;vb.y=fy-ny*vb.h;&#10;setVB();&#10;}&#10;},{passive:false});&#10;svg.addEventListener('touchend',function(e){&#10;// Synthesise a click on a short tap so marker handlers fire on touchscreens.&#10;// For double-tap: Chromium on touch does not fire dblclick from touch events.&#10;// We detect two taps within 350 ms / 30 px and reset the view instead.&#10;if(_tapEl&amp;&amp;e.touches.length===0&amp;&amp;e.changedTouches.length===1){&#10;var now=Date.now();&#10;var dt=now-_tapT;&#10;if(dt&lt;350){&#10;var tdx=Math.abs(e.changedTouches[0].clientX-_lastTapX);&#10;var tdy=Math.abs(e.changedTouches[0].clientY-_lastTapY);&#10;if(now-_lastTapT&lt;350&amp;&amp;tdx&lt;30&amp;&amp;tdy&lt;30){&#10;// Double-tap detected — reset view (mirrors dblclick handler).&#10;// Clear _lastTapT so a third tap starts a new double-tap window.&#10;_lastTapT=0;&#10;vb={x:0,y:0,w:W,h:H};setVB();&#10;}else{&#10;// Single tap — fire click for tooltip toggle, record for next double-tap check.&#10;_lastTapT=now;&#10;_lastTapX=e.changedTouches[0].clientX;&#10;_lastTapY=e.changedTouches[0].clientY;&#10;_tapEl.dispatchEvent(new MouseEvent('click',{bubbles:true,cancelable:true,view:window}));&#10;}&#10;}&#10;}&#10;_tapEl=null;&#10;if(e.touches.length===0){isPanning=false;panStart=null;}&#10;if(e.touches.length&lt;2){pinchDist=0;pinchStartVB=null;}&#10;});&#10;svg.addEventListener('dblclick',function(){vb={x:0,y:0,w:W,h:H};setVB();});&#10;}&#10;// ── Open lightbox ─────────────────────────────────────────────────&#10;window.lsOpenLightbox=function(svgId,svgW,svgH,chartTitle){&#10;var W=svgW||900,H=svgH||390;&#10;titleEl.textContent=chartTitle||'';&#10;var orig=document.getElementById(svgId);&#10;if(!orig)return;&#10;var clone=orig.cloneNode(true);&#10;clone.querySelectorAll('script').forEach(function(s){s.parentNode.removeChild(s);});&#10;clone.removeAttribute('id');&#10;// width+height 100% fills the holder completely; the SVG's viewBox (managed by&#10;// initZoom) controls which part of the chart coordinate space is visible.&#10;// Changing the viewBox never changes the SVG element's screen size, so zoom and&#10;// pan always use the full screen area below the header — no clipping.&#10;// max-width is reset because the original inline style carries max-width:900px&#10;// which would cap the SVG at its inline-chart width regardless of screen size.&#10;clone.style.maxWidth='none';&#10;clone.style.width='100%';&#10;clone.style.height='100%';&#10;clone.style.touchAction='none';&#10;clone.style.cursor='grab';&#10;holder.innerHTML='';&#10;holder.appendChild(clone);&#10;_savedBodyOverflow=document.body.style.overflow||'';&#10;document.body.style.overflow='hidden';&#10;ov.style.display='flex';&#10;initZoom(clone,W,H);&#10;};&#10;})();&#10;//]]&gt;&lt;/script&gt;&#10;&#10;&lt;h2 class="relative group"&gt;1950-an&#10; &lt;div id="1950-an" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#1950-an" aria-label="Pautan"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&#10;&#10;&#10;&#10;&lt;h3 class="relative group"&gt;Pegunan Bulan Ekstrem&#10; &lt;div id="pegunan-bulan-ekstrem" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#pegunan-bulan-ekstrem" aria-label="Pautan"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;p&gt;&lt;strong&gt;Hemisfera Utara&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Pegunan Bulan — 1960-an</title><link>https://kosmik.my/nebula/ms/lunar-standstills/1960/</link><pubDate>Sat, 03 Jan 2026 00:00:00 +0800</pubDate><guid>https://kosmik.my/nebula/ms/lunar-standstills/1960/</guid><description>&lt;style&gt;&#10;.ls-tbl{display:table;width:100%;overflow:visible}&#10;.ls-tbl td{vertical-align:top}&#10;.ls-moon{display:inline-flex;align-items:center;gap:.55em;text-align:left;vertical-align:middle}&#10;.ls-moon&gt;svg{flex:0 0 auto;display:block}&#10;.ls-moon-info{display:flex;flex-direction:column;line-height:1.3;min-width:0}&#10;.ls-moon-name{font-weight:600;white-space:nowrap}&#10;.ls-moon-pct{font-size:.82em;opacity:.82}&#10;.ls-moon-age{font-size:.78em;opacity:.68;white-space:normal}&#10;.ls-moon-age-lbl{font-weight:600;opacity:.85}&#10;@media(max-width:640px){&#10;.ls-tbl thead{display:none}&#10;.ls-tbl,.ls-tbl tbody,.ls-tbl tr{display:block}&#10;.ls-tbl tr{padding:.3em 0}&#10;.ls-tbl tbody tr{border-top-width:1px;border-top-color:var(--tw-prose-td-borders)}&#10;.ls-tbl tbody tr:first-child{border-top-color:var(--tw-prose-th-borders)}&#10;.ls-tbl tbody tr:last-child{border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}&#10;.ls-tbl td{display:flex;justify-content:space-between;align-items:baseline;padding:3px 0;text-align:right;white-space:normal}&#10;.ls-tbl td::before{content:attr(data-label);flex-shrink:0;text-align:left;font-weight:600;padding-right:.75em;white-space:nowrap;color:var(--tw-prose-headings,currentColor);opacity:.8}&#10; .ls-moon{align-items:center;flex-direction:row-reverse}&#10; .ls-moon-info{align-items:flex-end;text-align:right}&#10; }&#10;/* Chart SVG shared styles — repetitive stroke/font attributes live here&#10; so each marker/grid/legend element carries only its unique values. */&#10;.ls-c{cursor:pointer}&#10;.ls-mk{stroke:#fff;stroke-opacity:.5;stroke-width:1.2;opacity:.9}&#10;.ls-mt{font:bold 10px system-ui;fill:#fff;text-anchor:middle;dominant-baseline:middle;pointer-events:none}&#10;.ls-g0{stroke:#fff;stroke-opacity:.55;stroke-width:1.2}&#10;.ls-g1{stroke:#fff;stroke-opacity:.2;stroke-width:.6}&#10;.ls-gl{font:10px system-ui;fill:#fff;fill-opacity:.45;text-anchor:end;dominant-baseline:middle}&#10;.ls-tk{stroke:#fff;stroke-opacity:.3}&#10;.ls-tl{font:9px system-ui;fill:#fff;fill-opacity:.45;text-anchor:middle}&#10;.ls-lg{opacity:.85}&#10;.ls-lg2{opacity:.75}&#10;.ls-lt{font:9px system-ui;fill:#fff;fill-opacity:.6;dominant-baseline:middle}&#10;.ls-ax{stroke:#fff;stroke-opacity:.4}&#10;.ls-al{font:10px system-ui;fill:#fff;fill-opacity:.45;text-anchor:middle;dominant-baseline:middle}&#10;.ls-th{font:9px system-ui;fill:#fff;fill-opacity:.28;text-anchor:end}&#10;&lt;/style&gt;&#10;&lt;script&gt;//&lt;![CDATA[&#10;(function(){&#10;// ── Tooltip helpers — tooltip data lives in the SVG's data-tooltipmap&#10;// JSON attribute; clicking a marker renders its tooltip group on demand,&#10;// clicking anywhere else removes it. Works for inline charts and for&#10;// lightbox clones (attributes survive cloneNode) via one delegated listener.&#10;window.lsRemoveTip=function(svg){&#10;var ex=svg.querySelector('[data-active-tip]');&#10;if(ex)ex.parentNode.removeChild(ex);&#10;};&#10;window.lsMoonPath=function(pa,ill){&#10;var e=((pa%360)+360)%360;&#10;var waxing=e&lt;180;&#10;var gibbous=ill&gt;0.5;&#10;var r=46,c=50;&#10;var rx=r*Math.abs(2*ill-1);&#10;var top=c+' '+(c-r),bot=c+' '+(c+r);&#10;var s='&lt;circle cx="50" cy="50" r="46" fill="#3b4358"/&gt;';&#10;if(ill&gt;=0.995){&#10;s+='&lt;circle cx="50" cy="50" r="46" fill="#f2ecd0"/&gt;';&#10;}else if(ill&gt;0.005){&#10;var limb,term;&#10;if(waxing){&#10;limb='M '+top+' A '+r+' '+r+' 0 0 1 '+bot;&#10;term=gibbous?'A '+rx+' '+r+' 0 0 1 '+top:'A '+rx+' '+r+' 0 0 0 '+top;&#10;}else{&#10;limb='M '+top+' A '+r+' '+r+' 0 0 0 '+bot;&#10;term=gibbous?'A '+rx+' '+r+' 0 0 0 '+top:'A '+rx+' '+r+' 0 0 1 '+top;&#10;}&#10;s+='&lt;path d="'+limb+' '+term+' Z" fill="#f2ecd0"/&gt;';&#10;}&#10;s+='&lt;circle cx="50" cy="50" r="46" fill="none" stroke="#828b9c" stroke-width="2"/&gt;';&#10;return s;&#10;};&#10;window.lsShowTip=function(svg,key){&#10;lsRemoveTip(svg);&#10;var map;&#10;try{map=JSON.parse(svg.getAttribute('data-tooltipmap'));}catch(e){return;}&#10;var d=map[key];&#10;if(!d)return;&#10;var ns='http://www.w3.org/2000/svg';&#10;var g=document.createElementNS(ns,'g');&#10;g.setAttribute('data-active-tip',key);&#10;g.setAttribute('pointer-events','none');&#10;var rect=document.createElementNS(ns,'rect');&#10;rect.setAttribute('x',d.x);rect.setAttribute('y',d.y);&#10;rect.setAttribute('width',d.w);rect.setAttribute('height',d.h);&#10;rect.setAttribute('rx','5');&#10;rect.setAttribute('fill','black');rect.setAttribute('fill-opacity','0.62');&#10;rect.setAttribute('stroke',d.a);rect.setAttribute('stroke-width','1.2');rect.setAttribute('stroke-opacity','0.85');&#10;g.appendChild(rect);&#10;if(typeof d.p==='number'&amp;&amp;typeof d.i==='number'){&#10;var sz=Math.floor(d.h/2),m=5;&#10;var mpg=document.createElementNS(ns,'g');&#10;mpg.setAttribute('transform','translate('+(d.x+d.w-sz-m)+','+(d.y+m)+') scale('+(sz/100)+')');&#10;if(d.n){mpg.setAttribute('role','img');mpg.setAttribute('aria-label',d.n);}&#10;mpg.innerHTML=lsMoonPath(d.p,d.i);&#10;g.appendChild(mpg);&#10;}&#10;var lines=d.l.split('\n');&#10;for(var i=0;i&lt;lines.length;i++){&#10;var t=document.createElementNS(ns,'text');&#10;t.setAttribute('x',d.x+10);t.setAttribute('y',d.y+14+i*17);&#10;t.setAttribute('font-size','10');&#10;t.setAttribute('fill',i===0?d.a:'white');&#10;t.setAttribute('fill-opacity','0.95');&#10;t.setAttribute('font-weight',i===0?'bold':'normal');&#10;t.textContent=lines[i];&#10;g.appendChild(t);&#10;}&#10;svg.appendChild(g);&#10;};&#10;// ── Delegated clicks: marker shows its tooltip, background removes it ─&#10;document.addEventListener('click',function(e){&#10;var el=e.target.closest?e.target.closest('[data-tipkey]'):null;&#10;if(el){&#10;var svg=el.closest('svg[data-tooltipmap]');&#10;if(svg){e.stopPropagation();lsShowTip(svg,el.getAttribute('data-tipkey'));}&#10;return;&#10;}&#10;var svg2=e.target.closest?e.target.closest('svg[data-tooltipmap]'):null;&#10;if(svg2)lsRemoveTip(svg2);&#10;});&#10;// ── Lightbox — runs only once per page ───────────────────────────&#10;if(window._lsLbInit)return;&#10;window._lsLbInit=true;&#10;// Overlay — flex column so topBar stays fixed-height and holder fills the rest.&#10;// overflow:hidden on the overlay prevents any body scroll bleed-through.&#10;var ov=document.createElement('div');&#10;ov.style.cssText='display:none;position:fixed;inset:0;z-index:9000;background:#0d1117;flex-direction:column;overflow:hidden;';&#10;// ── Header row ────────────────────────────────────────────────────&#10;// lSpacer mirrors closeBtn's min-width so the titleGroup stays centred.&#10;var topBar=document.createElement('div');&#10;topBar.style.cssText='flex-shrink:0;background:#0d1117;display:flex;align-items:center;gap:10px;padding:8px 14px;';&#10;var lSpacer=document.createElement('div');&#10;lSpacer.style.cssText='flex-shrink:0;min-width:88px;';&#10;topBar.appendChild(lSpacer);&#10;var titleGroup=document.createElement('div');&#10;titleGroup.style.cssText='flex:1;text-align:center;overflow:hidden;pointer-events:none;';&#10;var titleEl=document.createElement('div');&#10;titleEl.style.cssText='color:#e6edf3;font-size:15px;font-family:system-ui,sans-serif;font-weight:600;line-height:1.3;';&#10;var hintEl=document.createElement('div');&#10;hintEl.style.cssText='color:rgba(230,237,243,0.35);font-size:11px;font-family:system-ui,sans-serif;margin-top:2px;line-height:1.4;';&#10;hintEl.textContent='Tatal atau cubit untuk zum · Seret untuk imbas · Klik dua kali untuk tetapkan semula';&#10;titleGroup.appendChild(titleEl);&#10;titleGroup.appendChild(hintEl);&#10;topBar.appendChild(titleGroup);&#10;var closeBtn=document.createElement('button');&#10;closeBtn.textContent='✕ Tutup';&#10;closeBtn.style.cssText='padding:10px 24px;font-size:14px;font-family:system-ui,sans-serif;cursor:pointer;border:1px solid rgba(255,255,255,0.45);border-radius:6px;background:rgba(255,255,255,0.10);color:#e6edf3;flex-shrink:0;touch-action:manipulation;min-height:44px;min-width:88px;';&#10;topBar.appendChild(closeBtn);&#10;// ── Chart area — fills every pixel below the header ───────────────&#10;// min-height:0 is required: flex children default to min-height:auto&#10;// which prevents them shrinking below their content size.&#10;var holder=document.createElement('div');&#10;holder.style.cssText='flex:1;min-height:0;overflow:hidden;';&#10;ov.appendChild(topBar);&#10;ov.appendChild(holder);&#10;document.body.appendChild(ov);&#10;var _savedBodyOverflow='';&#10;function closeLb(){ov.style.display='none';holder.innerHTML='';document.body.style.overflow=_savedBodyOverflow;}&#10;closeBtn.addEventListener('click',closeLb);&#10;ov.addEventListener('click',function(e){if(e.target===ov)closeLb();});&#10;document.addEventListener('keydown',function(e){if(e.key==='Escape'&amp;&amp;ov.style.display!=='none')closeLb();});&#10;// ── Shared pan-state for lightbox mouse drag ──────────────────────&#10;var _lb={panFn:null,endFn:null};&#10;ov.addEventListener('mousemove',function(e){if(_lb.panFn)_lb.panFn(e);});&#10;ov.addEventListener('mouseup',function(){if(_lb.endFn)_lb.endFn();});&#10;ov.addEventListener('mouseleave',function(){if(_lb.endFn)_lb.endFn();});&#10;// ── Zoom / pan initialiser (called for each new lightbox SVG) ─────&#10;function initZoom(svg,W,H){&#10;var vb={x:0,y:0,w:W,h:H};&#10;var isPanning=false,panStart=null,panStartVB=null;&#10;var pinchDist=0,pinchMidX=0,pinchMidY=0,pinchStartVB=null;&#10;// Tap-detection state — a touch that barely moved within 350 ms is a tap.&#10;// initZoom calls e.preventDefault() in touchstart (needed to suppress the&#10;// browser's own pan/zoom), which stops the browser from synthesising a click&#10;// event from touch. We synthesise it ourselves in touchend so that marker&#10;// onclick handlers and the SVG background onclick both work on touchscreens.&#10;// _lastTap* tracks the previous tap for double-tap-to-reset detection&#10;// (Chromium on touch does not fire dblclick from touch events).&#10;var _tapEl=null,_tapT=0,_tapX=0,_tapY=0;&#10;var _lastTapT=0,_lastTapX=0,_lastTapY=0;&#10;function setVB(){svg.setAttribute('viewBox',vb.x+' '+vb.y+' '+vb.w+' '+vb.h);}&#10;// ── Rendering helpers ─────────────────────────────────────────────&#10;// The SVG uses preserveAspectRatio="xMidYMid meet", so the chart content&#10;// is letter-boxed inside the SVG element. Using the SVG element dimensions&#10;// directly (r.width / r.height) for pan calculations produces wildly&#10;// different sensitivities for x vs y on portrait phones (4-5× mismatch).&#10;// The correct divisor for both axes is the render scale:&#10;// renderScale = min(elementW/vbW, elementH/vbH)&#10;// which gives a uniform 1-screen-pixel = 1/renderScale chart-units feel.&#10;// The same correction is needed for zoom cursor anchoring.&#10;function renderScale(r,w,h){return Math.min(r.width/w,r.height/h);}&#10;function contentOff(r,w,h,rs){&#10;return{ox:(r.width-w*rs)/2,oy:(r.height-h*rs)/2};&#10;}&#10;svg.addEventListener('wheel',function(e){&#10;e.preventDefault();e.stopPropagation();&#10;var r=svg.getBoundingClientRect();&#10;var ratio=e.deltaY&gt;0?1.12:1/1.12;&#10;var rs=renderScale(r,vb.w,vb.h);&#10;var off=contentOff(r,vb.w,vb.h,rs);&#10;var nx=(e.clientX-r.left-off.ox)/(vb.w*rs);&#10;var ny=(e.clientY-r.top-off.oy)/(vb.h*rs);&#10;var fx=vb.x+nx*vb.w,fy=vb.y+ny*vb.h;&#10;vb.w*=ratio;vb.h*=ratio;&#10;vb.x=fx-nx*vb.w;vb.y=fy-ny*vb.h;&#10;setVB();&#10;},{passive:false});&#10;svg.addEventListener('mousedown',function(e){&#10;if(e.button!==0)return;&#10;e.preventDefault();&#10;isPanning=true;&#10;panStart={x:e.clientX,y:e.clientY};&#10;panStartVB={x:vb.x,y:vb.y,w:vb.w,h:vb.h};&#10;svg.style.cursor='grabbing';&#10;_lb.panFn=function(ev){&#10;if(!isPanning)return;&#10;var r=svg.getBoundingClientRect();&#10;var rs=renderScale(r,panStartVB.w,panStartVB.h);&#10;vb.x=panStartVB.x-(ev.clientX-panStart.x)/rs;&#10;vb.y=panStartVB.y-(ev.clientY-panStart.y)/rs;&#10;setVB();&#10;};&#10;_lb.endFn=function(){isPanning=false;svg.style.cursor='grab';_lb.panFn=null;_lb.endFn=null;};&#10;});&#10;svg.addEventListener('touchstart',function(e){&#10;e.preventDefault();&#10;if(e.touches.length===1){&#10;isPanning=true;&#10;panStart={x:e.touches[0].clientX,y:e.touches[0].clientY};&#10;panStartVB={x:vb.x,y:vb.y,w:vb.w,h:vb.h};&#10;// Record tap candidate — cleared on significant move or multi-touch&#10;_tapEl=e.target;&#10;_tapT=Date.now();&#10;_tapX=e.touches[0].clientX;&#10;_tapY=e.touches[0].clientY;&#10;}else if(e.touches.length&gt;=2){&#10;isPanning=false;panStart=null;&#10;_tapEl=null;&#10;pinchDist=Math.hypot(e.touches[0].clientX-e.touches[1].clientX,e.touches[0].clientY-e.touches[1].clientY);&#10;pinchMidX=(e.touches[0].clientX+e.touches[1].clientX)/2;&#10;pinchMidY=(e.touches[0].clientY+e.touches[1].clientY)/2;&#10;pinchStartVB={x:vb.x,y:vb.y,w:vb.w,h:vb.h};&#10;}&#10;},{passive:false});&#10;svg.addEventListener('touchmove',function(e){&#10;e.preventDefault();e.stopPropagation();&#10;// Cancel tap if finger moved more than 8 px — this is a pan, not a tap&#10;if(_tapEl&amp;&amp;e.touches.length===1){&#10;var dx=Math.abs(e.touches[0].clientX-_tapX);&#10;var dy=Math.abs(e.touches[0].clientY-_tapY);&#10;if(dx&gt;8||dy&gt;8)_tapEl=null;&#10;}&#10;var r=svg.getBoundingClientRect();&#10;if(e.touches.length===1&amp;&amp;isPanning&amp;&amp;panStart){&#10;var rs=renderScale(r,panStartVB.w,panStartVB.h);&#10;vb.x=panStartVB.x-(e.touches[0].clientX-panStart.x)/rs;&#10;vb.y=panStartVB.y-(e.touches[0].clientY-panStart.y)/rs;&#10;setVB();&#10;}else if(e.touches.length&gt;=2&amp;&amp;pinchDist&gt;0&amp;&amp;pinchStartVB){&#10;var dist=Math.hypot(e.touches[0].clientX-e.touches[1].clientX,e.touches[0].clientY-e.touches[1].clientY);&#10;var midX=(e.touches[0].clientX+e.touches[1].clientX)/2;&#10;var midY=(e.touches[0].clientY+e.touches[1].clientY)/2;&#10;var scale=pinchDist/dist;&#10;var lvb=pinchStartVB;&#10;var rs=renderScale(r,lvb.w,lvb.h);&#10;var off=contentOff(r,lvb.w,lvb.h,rs);&#10;var cw=lvb.w*rs,ch=lvb.h*rs;&#10;var nx=(midX-r.left-off.ox)/cw,ny=(midY-r.top-off.oy)/ch;&#10;var origNx=(pinchMidX-r.left-off.ox)/cw,origNy=(pinchMidY-r.top-off.oy)/ch;&#10;var fx=lvb.x+origNx*lvb.w,fy=lvb.y+origNy*lvb.h;&#10;vb.w=lvb.w*scale;vb.h=lvb.h*scale;&#10;vb.x=fx-nx*vb.w;vb.y=fy-ny*vb.h;&#10;setVB();&#10;}&#10;},{passive:false});&#10;svg.addEventListener('touchend',function(e){&#10;// Synthesise a click on a short tap so marker handlers fire on touchscreens.&#10;// For double-tap: Chromium on touch does not fire dblclick from touch events.&#10;// We detect two taps within 350 ms / 30 px and reset the view instead.&#10;if(_tapEl&amp;&amp;e.touches.length===0&amp;&amp;e.changedTouches.length===1){&#10;var now=Date.now();&#10;var dt=now-_tapT;&#10;if(dt&lt;350){&#10;var tdx=Math.abs(e.changedTouches[0].clientX-_lastTapX);&#10;var tdy=Math.abs(e.changedTouches[0].clientY-_lastTapY);&#10;if(now-_lastTapT&lt;350&amp;&amp;tdx&lt;30&amp;&amp;tdy&lt;30){&#10;// Double-tap detected — reset view (mirrors dblclick handler).&#10;// Clear _lastTapT so a third tap starts a new double-tap window.&#10;_lastTapT=0;&#10;vb={x:0,y:0,w:W,h:H};setVB();&#10;}else{&#10;// Single tap — fire click for tooltip toggle, record for next double-tap check.&#10;_lastTapT=now;&#10;_lastTapX=e.changedTouches[0].clientX;&#10;_lastTapY=e.changedTouches[0].clientY;&#10;_tapEl.dispatchEvent(new MouseEvent('click',{bubbles:true,cancelable:true,view:window}));&#10;}&#10;}&#10;}&#10;_tapEl=null;&#10;if(e.touches.length===0){isPanning=false;panStart=null;}&#10;if(e.touches.length&lt;2){pinchDist=0;pinchStartVB=null;}&#10;});&#10;svg.addEventListener('dblclick',function(){vb={x:0,y:0,w:W,h:H};setVB();});&#10;}&#10;// ── Open lightbox ─────────────────────────────────────────────────&#10;window.lsOpenLightbox=function(svgId,svgW,svgH,chartTitle){&#10;var W=svgW||900,H=svgH||390;&#10;titleEl.textContent=chartTitle||'';&#10;var orig=document.getElementById(svgId);&#10;if(!orig)return;&#10;var clone=orig.cloneNode(true);&#10;clone.querySelectorAll('script').forEach(function(s){s.parentNode.removeChild(s);});&#10;clone.removeAttribute('id');&#10;// width+height 100% fills the holder completely; the SVG's viewBox (managed by&#10;// initZoom) controls which part of the chart coordinate space is visible.&#10;// Changing the viewBox never changes the SVG element's screen size, so zoom and&#10;// pan always use the full screen area below the header — no clipping.&#10;// max-width is reset because the original inline style carries max-width:900px&#10;// which would cap the SVG at its inline-chart width regardless of screen size.&#10;clone.style.maxWidth='none';&#10;clone.style.width='100%';&#10;clone.style.height='100%';&#10;clone.style.touchAction='none';&#10;clone.style.cursor='grab';&#10;holder.innerHTML='';&#10;holder.appendChild(clone);&#10;_savedBodyOverflow=document.body.style.overflow||'';&#10;document.body.style.overflow='hidden';&#10;ov.style.display='flex';&#10;initZoom(clone,W,H);&#10;};&#10;})();&#10;//]]&gt;&lt;/script&gt;&#10;&#10;&lt;h2 class="relative group"&gt;1960-an&#10; &lt;div id="1960-an" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#1960-an" aria-label="Pautan"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&#10;&#10;&#10;&#10;&lt;h3 class="relative group"&gt;Pegunan Bulan Ekstrem&#10; &lt;div id="pegunan-bulan-ekstrem" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#pegunan-bulan-ekstrem" aria-label="Pautan"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;p&gt;&lt;strong&gt;Hemisfera Utara&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Pegunan Bulan — 1970-an</title><link>https://kosmik.my/nebula/ms/lunar-standstills/1970/</link><pubDate>Sat, 03 Jan 2026 00:00:00 +0800</pubDate><guid>https://kosmik.my/nebula/ms/lunar-standstills/1970/</guid><description>&lt;style&gt;&#10;.ls-tbl{display:table;width:100%;overflow:visible}&#10;.ls-tbl td{vertical-align:top}&#10;.ls-moon{display:inline-flex;align-items:center;gap:.55em;text-align:left;vertical-align:middle}&#10;.ls-moon&gt;svg{flex:0 0 auto;display:block}&#10;.ls-moon-info{display:flex;flex-direction:column;line-height:1.3;min-width:0}&#10;.ls-moon-name{font-weight:600;white-space:nowrap}&#10;.ls-moon-pct{font-size:.82em;opacity:.82}&#10;.ls-moon-age{font-size:.78em;opacity:.68;white-space:normal}&#10;.ls-moon-age-lbl{font-weight:600;opacity:.85}&#10;@media(max-width:640px){&#10;.ls-tbl thead{display:none}&#10;.ls-tbl,.ls-tbl tbody,.ls-tbl tr{display:block}&#10;.ls-tbl tr{padding:.3em 0}&#10;.ls-tbl tbody tr{border-top-width:1px;border-top-color:var(--tw-prose-td-borders)}&#10;.ls-tbl tbody tr:first-child{border-top-color:var(--tw-prose-th-borders)}&#10;.ls-tbl tbody tr:last-child{border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}&#10;.ls-tbl td{display:flex;justify-content:space-between;align-items:baseline;padding:3px 0;text-align:right;white-space:normal}&#10;.ls-tbl td::before{content:attr(data-label);flex-shrink:0;text-align:left;font-weight:600;padding-right:.75em;white-space:nowrap;color:var(--tw-prose-headings,currentColor);opacity:.8}&#10; .ls-moon{align-items:center;flex-direction:row-reverse}&#10; .ls-moon-info{align-items:flex-end;text-align:right}&#10; }&#10;/* Chart SVG shared styles — repetitive stroke/font attributes live here&#10; so each marker/grid/legend element carries only its unique values. */&#10;.ls-c{cursor:pointer}&#10;.ls-mk{stroke:#fff;stroke-opacity:.5;stroke-width:1.2;opacity:.9}&#10;.ls-mt{font:bold 10px system-ui;fill:#fff;text-anchor:middle;dominant-baseline:middle;pointer-events:none}&#10;.ls-g0{stroke:#fff;stroke-opacity:.55;stroke-width:1.2}&#10;.ls-g1{stroke:#fff;stroke-opacity:.2;stroke-width:.6}&#10;.ls-gl{font:10px system-ui;fill:#fff;fill-opacity:.45;text-anchor:end;dominant-baseline:middle}&#10;.ls-tk{stroke:#fff;stroke-opacity:.3}&#10;.ls-tl{font:9px system-ui;fill:#fff;fill-opacity:.45;text-anchor:middle}&#10;.ls-lg{opacity:.85}&#10;.ls-lg2{opacity:.75}&#10;.ls-lt{font:9px system-ui;fill:#fff;fill-opacity:.6;dominant-baseline:middle}&#10;.ls-ax{stroke:#fff;stroke-opacity:.4}&#10;.ls-al{font:10px system-ui;fill:#fff;fill-opacity:.45;text-anchor:middle;dominant-baseline:middle}&#10;.ls-th{font:9px system-ui;fill:#fff;fill-opacity:.28;text-anchor:end}&#10;&lt;/style&gt;&#10;&lt;script&gt;//&lt;![CDATA[&#10;(function(){&#10;// ── Tooltip helpers — tooltip data lives in the SVG's data-tooltipmap&#10;// JSON attribute; clicking a marker renders its tooltip group on demand,&#10;// clicking anywhere else removes it. Works for inline charts and for&#10;// lightbox clones (attributes survive cloneNode) via one delegated listener.&#10;window.lsRemoveTip=function(svg){&#10;var ex=svg.querySelector('[data-active-tip]');&#10;if(ex)ex.parentNode.removeChild(ex);&#10;};&#10;window.lsMoonPath=function(pa,ill){&#10;var e=((pa%360)+360)%360;&#10;var waxing=e&lt;180;&#10;var gibbous=ill&gt;0.5;&#10;var r=46,c=50;&#10;var rx=r*Math.abs(2*ill-1);&#10;var top=c+' '+(c-r),bot=c+' '+(c+r);&#10;var s='&lt;circle cx="50" cy="50" r="46" fill="#3b4358"/&gt;';&#10;if(ill&gt;=0.995){&#10;s+='&lt;circle cx="50" cy="50" r="46" fill="#f2ecd0"/&gt;';&#10;}else if(ill&gt;0.005){&#10;var limb,term;&#10;if(waxing){&#10;limb='M '+top+' A '+r+' '+r+' 0 0 1 '+bot;&#10;term=gibbous?'A '+rx+' '+r+' 0 0 1 '+top:'A '+rx+' '+r+' 0 0 0 '+top;&#10;}else{&#10;limb='M '+top+' A '+r+' '+r+' 0 0 0 '+bot;&#10;term=gibbous?'A '+rx+' '+r+' 0 0 0 '+top:'A '+rx+' '+r+' 0 0 1 '+top;&#10;}&#10;s+='&lt;path d="'+limb+' '+term+' Z" fill="#f2ecd0"/&gt;';&#10;}&#10;s+='&lt;circle cx="50" cy="50" r="46" fill="none" stroke="#828b9c" stroke-width="2"/&gt;';&#10;return s;&#10;};&#10;window.lsShowTip=function(svg,key){&#10;lsRemoveTip(svg);&#10;var map;&#10;try{map=JSON.parse(svg.getAttribute('data-tooltipmap'));}catch(e){return;}&#10;var d=map[key];&#10;if(!d)return;&#10;var ns='http://www.w3.org/2000/svg';&#10;var g=document.createElementNS(ns,'g');&#10;g.setAttribute('data-active-tip',key);&#10;g.setAttribute('pointer-events','none');&#10;var rect=document.createElementNS(ns,'rect');&#10;rect.setAttribute('x',d.x);rect.setAttribute('y',d.y);&#10;rect.setAttribute('width',d.w);rect.setAttribute('height',d.h);&#10;rect.setAttribute('rx','5');&#10;rect.setAttribute('fill','black');rect.setAttribute('fill-opacity','0.62');&#10;rect.setAttribute('stroke',d.a);rect.setAttribute('stroke-width','1.2');rect.setAttribute('stroke-opacity','0.85');&#10;g.appendChild(rect);&#10;if(typeof d.p==='number'&amp;&amp;typeof d.i==='number'){&#10;var sz=Math.floor(d.h/2),m=5;&#10;var mpg=document.createElementNS(ns,'g');&#10;mpg.setAttribute('transform','translate('+(d.x+d.w-sz-m)+','+(d.y+m)+') scale('+(sz/100)+')');&#10;if(d.n){mpg.setAttribute('role','img');mpg.setAttribute('aria-label',d.n);}&#10;mpg.innerHTML=lsMoonPath(d.p,d.i);&#10;g.appendChild(mpg);&#10;}&#10;var lines=d.l.split('\n');&#10;for(var i=0;i&lt;lines.length;i++){&#10;var t=document.createElementNS(ns,'text');&#10;t.setAttribute('x',d.x+10);t.setAttribute('y',d.y+14+i*17);&#10;t.setAttribute('font-size','10');&#10;t.setAttribute('fill',i===0?d.a:'white');&#10;t.setAttribute('fill-opacity','0.95');&#10;t.setAttribute('font-weight',i===0?'bold':'normal');&#10;t.textContent=lines[i];&#10;g.appendChild(t);&#10;}&#10;svg.appendChild(g);&#10;};&#10;// ── Delegated clicks: marker shows its tooltip, background removes it ─&#10;document.addEventListener('click',function(e){&#10;var el=e.target.closest?e.target.closest('[data-tipkey]'):null;&#10;if(el){&#10;var svg=el.closest('svg[data-tooltipmap]');&#10;if(svg){e.stopPropagation();lsShowTip(svg,el.getAttribute('data-tipkey'));}&#10;return;&#10;}&#10;var svg2=e.target.closest?e.target.closest('svg[data-tooltipmap]'):null;&#10;if(svg2)lsRemoveTip(svg2);&#10;});&#10;// ── Lightbox — runs only once per page ───────────────────────────&#10;if(window._lsLbInit)return;&#10;window._lsLbInit=true;&#10;// Overlay — flex column so topBar stays fixed-height and holder fills the rest.&#10;// overflow:hidden on the overlay prevents any body scroll bleed-through.&#10;var ov=document.createElement('div');&#10;ov.style.cssText='display:none;position:fixed;inset:0;z-index:9000;background:#0d1117;flex-direction:column;overflow:hidden;';&#10;// ── Header row ────────────────────────────────────────────────────&#10;// lSpacer mirrors closeBtn's min-width so the titleGroup stays centred.&#10;var topBar=document.createElement('div');&#10;topBar.style.cssText='flex-shrink:0;background:#0d1117;display:flex;align-items:center;gap:10px;padding:8px 14px;';&#10;var lSpacer=document.createElement('div');&#10;lSpacer.style.cssText='flex-shrink:0;min-width:88px;';&#10;topBar.appendChild(lSpacer);&#10;var titleGroup=document.createElement('div');&#10;titleGroup.style.cssText='flex:1;text-align:center;overflow:hidden;pointer-events:none;';&#10;var titleEl=document.createElement('div');&#10;titleEl.style.cssText='color:#e6edf3;font-size:15px;font-family:system-ui,sans-serif;font-weight:600;line-height:1.3;';&#10;var hintEl=document.createElement('div');&#10;hintEl.style.cssText='color:rgba(230,237,243,0.35);font-size:11px;font-family:system-ui,sans-serif;margin-top:2px;line-height:1.4;';&#10;hintEl.textContent='Tatal atau cubit untuk zum · Seret untuk imbas · Klik dua kali untuk tetapkan semula';&#10;titleGroup.appendChild(titleEl);&#10;titleGroup.appendChild(hintEl);&#10;topBar.appendChild(titleGroup);&#10;var closeBtn=document.createElement('button');&#10;closeBtn.textContent='✕ Tutup';&#10;closeBtn.style.cssText='padding:10px 24px;font-size:14px;font-family:system-ui,sans-serif;cursor:pointer;border:1px solid rgba(255,255,255,0.45);border-radius:6px;background:rgba(255,255,255,0.10);color:#e6edf3;flex-shrink:0;touch-action:manipulation;min-height:44px;min-width:88px;';&#10;topBar.appendChild(closeBtn);&#10;// ── Chart area — fills every pixel below the header ───────────────&#10;// min-height:0 is required: flex children default to min-height:auto&#10;// which prevents them shrinking below their content size.&#10;var holder=document.createElement('div');&#10;holder.style.cssText='flex:1;min-height:0;overflow:hidden;';&#10;ov.appendChild(topBar);&#10;ov.appendChild(holder);&#10;document.body.appendChild(ov);&#10;var _savedBodyOverflow='';&#10;function closeLb(){ov.style.display='none';holder.innerHTML='';document.body.style.overflow=_savedBodyOverflow;}&#10;closeBtn.addEventListener('click',closeLb);&#10;ov.addEventListener('click',function(e){if(e.target===ov)closeLb();});&#10;document.addEventListener('keydown',function(e){if(e.key==='Escape'&amp;&amp;ov.style.display!=='none')closeLb();});&#10;// ── Shared pan-state for lightbox mouse drag ──────────────────────&#10;var _lb={panFn:null,endFn:null};&#10;ov.addEventListener('mousemove',function(e){if(_lb.panFn)_lb.panFn(e);});&#10;ov.addEventListener('mouseup',function(){if(_lb.endFn)_lb.endFn();});&#10;ov.addEventListener('mouseleave',function(){if(_lb.endFn)_lb.endFn();});&#10;// ── Zoom / pan initialiser (called for each new lightbox SVG) ─────&#10;function initZoom(svg,W,H){&#10;var vb={x:0,y:0,w:W,h:H};&#10;var isPanning=false,panStart=null,panStartVB=null;&#10;var pinchDist=0,pinchMidX=0,pinchMidY=0,pinchStartVB=null;&#10;// Tap-detection state — a touch that barely moved within 350 ms is a tap.&#10;// initZoom calls e.preventDefault() in touchstart (needed to suppress the&#10;// browser's own pan/zoom), which stops the browser from synthesising a click&#10;// event from touch. We synthesise it ourselves in touchend so that marker&#10;// onclick handlers and the SVG background onclick both work on touchscreens.&#10;// _lastTap* tracks the previous tap for double-tap-to-reset detection&#10;// (Chromium on touch does not fire dblclick from touch events).&#10;var _tapEl=null,_tapT=0,_tapX=0,_tapY=0;&#10;var _lastTapT=0,_lastTapX=0,_lastTapY=0;&#10;function setVB(){svg.setAttribute('viewBox',vb.x+' '+vb.y+' '+vb.w+' '+vb.h);}&#10;// ── Rendering helpers ─────────────────────────────────────────────&#10;// The SVG uses preserveAspectRatio="xMidYMid meet", so the chart content&#10;// is letter-boxed inside the SVG element. Using the SVG element dimensions&#10;// directly (r.width / r.height) for pan calculations produces wildly&#10;// different sensitivities for x vs y on portrait phones (4-5× mismatch).&#10;// The correct divisor for both axes is the render scale:&#10;// renderScale = min(elementW/vbW, elementH/vbH)&#10;// which gives a uniform 1-screen-pixel = 1/renderScale chart-units feel.&#10;// The same correction is needed for zoom cursor anchoring.&#10;function renderScale(r,w,h){return Math.min(r.width/w,r.height/h);}&#10;function contentOff(r,w,h,rs){&#10;return{ox:(r.width-w*rs)/2,oy:(r.height-h*rs)/2};&#10;}&#10;svg.addEventListener('wheel',function(e){&#10;e.preventDefault();e.stopPropagation();&#10;var r=svg.getBoundingClientRect();&#10;var ratio=e.deltaY&gt;0?1.12:1/1.12;&#10;var rs=renderScale(r,vb.w,vb.h);&#10;var off=contentOff(r,vb.w,vb.h,rs);&#10;var nx=(e.clientX-r.left-off.ox)/(vb.w*rs);&#10;var ny=(e.clientY-r.top-off.oy)/(vb.h*rs);&#10;var fx=vb.x+nx*vb.w,fy=vb.y+ny*vb.h;&#10;vb.w*=ratio;vb.h*=ratio;&#10;vb.x=fx-nx*vb.w;vb.y=fy-ny*vb.h;&#10;setVB();&#10;},{passive:false});&#10;svg.addEventListener('mousedown',function(e){&#10;if(e.button!==0)return;&#10;e.preventDefault();&#10;isPanning=true;&#10;panStart={x:e.clientX,y:e.clientY};&#10;panStartVB={x:vb.x,y:vb.y,w:vb.w,h:vb.h};&#10;svg.style.cursor='grabbing';&#10;_lb.panFn=function(ev){&#10;if(!isPanning)return;&#10;var r=svg.getBoundingClientRect();&#10;var rs=renderScale(r,panStartVB.w,panStartVB.h);&#10;vb.x=panStartVB.x-(ev.clientX-panStart.x)/rs;&#10;vb.y=panStartVB.y-(ev.clientY-panStart.y)/rs;&#10;setVB();&#10;};&#10;_lb.endFn=function(){isPanning=false;svg.style.cursor='grab';_lb.panFn=null;_lb.endFn=null;};&#10;});&#10;svg.addEventListener('touchstart',function(e){&#10;e.preventDefault();&#10;if(e.touches.length===1){&#10;isPanning=true;&#10;panStart={x:e.touches[0].clientX,y:e.touches[0].clientY};&#10;panStartVB={x:vb.x,y:vb.y,w:vb.w,h:vb.h};&#10;// Record tap candidate — cleared on significant move or multi-touch&#10;_tapEl=e.target;&#10;_tapT=Date.now();&#10;_tapX=e.touches[0].clientX;&#10;_tapY=e.touches[0].clientY;&#10;}else if(e.touches.length&gt;=2){&#10;isPanning=false;panStart=null;&#10;_tapEl=null;&#10;pinchDist=Math.hypot(e.touches[0].clientX-e.touches[1].clientX,e.touches[0].clientY-e.touches[1].clientY);&#10;pinchMidX=(e.touches[0].clientX+e.touches[1].clientX)/2;&#10;pinchMidY=(e.touches[0].clientY+e.touches[1].clientY)/2;&#10;pinchStartVB={x:vb.x,y:vb.y,w:vb.w,h:vb.h};&#10;}&#10;},{passive:false});&#10;svg.addEventListener('touchmove',function(e){&#10;e.preventDefault();e.stopPropagation();&#10;// Cancel tap if finger moved more than 8 px — this is a pan, not a tap&#10;if(_tapEl&amp;&amp;e.touches.length===1){&#10;var dx=Math.abs(e.touches[0].clientX-_tapX);&#10;var dy=Math.abs(e.touches[0].clientY-_tapY);&#10;if(dx&gt;8||dy&gt;8)_tapEl=null;&#10;}&#10;var r=svg.getBoundingClientRect();&#10;if(e.touches.length===1&amp;&amp;isPanning&amp;&amp;panStart){&#10;var rs=renderScale(r,panStartVB.w,panStartVB.h);&#10;vb.x=panStartVB.x-(e.touches[0].clientX-panStart.x)/rs;&#10;vb.y=panStartVB.y-(e.touches[0].clientY-panStart.y)/rs;&#10;setVB();&#10;}else if(e.touches.length&gt;=2&amp;&amp;pinchDist&gt;0&amp;&amp;pinchStartVB){&#10;var dist=Math.hypot(e.touches[0].clientX-e.touches[1].clientX,e.touches[0].clientY-e.touches[1].clientY);&#10;var midX=(e.touches[0].clientX+e.touches[1].clientX)/2;&#10;var midY=(e.touches[0].clientY+e.touches[1].clientY)/2;&#10;var scale=pinchDist/dist;&#10;var lvb=pinchStartVB;&#10;var rs=renderScale(r,lvb.w,lvb.h);&#10;var off=contentOff(r,lvb.w,lvb.h,rs);&#10;var cw=lvb.w*rs,ch=lvb.h*rs;&#10;var nx=(midX-r.left-off.ox)/cw,ny=(midY-r.top-off.oy)/ch;&#10;var origNx=(pinchMidX-r.left-off.ox)/cw,origNy=(pinchMidY-r.top-off.oy)/ch;&#10;var fx=lvb.x+origNx*lvb.w,fy=lvb.y+origNy*lvb.h;&#10;vb.w=lvb.w*scale;vb.h=lvb.h*scale;&#10;vb.x=fx-nx*vb.w;vb.y=fy-ny*vb.h;&#10;setVB();&#10;}&#10;},{passive:false});&#10;svg.addEventListener('touchend',function(e){&#10;// Synthesise a click on a short tap so marker handlers fire on touchscreens.&#10;// For double-tap: Chromium on touch does not fire dblclick from touch events.&#10;// We detect two taps within 350 ms / 30 px and reset the view instead.&#10;if(_tapEl&amp;&amp;e.touches.length===0&amp;&amp;e.changedTouches.length===1){&#10;var now=Date.now();&#10;var dt=now-_tapT;&#10;if(dt&lt;350){&#10;var tdx=Math.abs(e.changedTouches[0].clientX-_lastTapX);&#10;var tdy=Math.abs(e.changedTouches[0].clientY-_lastTapY);&#10;if(now-_lastTapT&lt;350&amp;&amp;tdx&lt;30&amp;&amp;tdy&lt;30){&#10;// Double-tap detected — reset view (mirrors dblclick handler).&#10;// Clear _lastTapT so a third tap starts a new double-tap window.&#10;_lastTapT=0;&#10;vb={x:0,y:0,w:W,h:H};setVB();&#10;}else{&#10;// Single tap — fire click for tooltip toggle, record for next double-tap check.&#10;_lastTapT=now;&#10;_lastTapX=e.changedTouches[0].clientX;&#10;_lastTapY=e.changedTouches[0].clientY;&#10;_tapEl.dispatchEvent(new MouseEvent('click',{bubbles:true,cancelable:true,view:window}));&#10;}&#10;}&#10;}&#10;_tapEl=null;&#10;if(e.touches.length===0){isPanning=false;panStart=null;}&#10;if(e.touches.length&lt;2){pinchDist=0;pinchStartVB=null;}&#10;});&#10;svg.addEventListener('dblclick',function(){vb={x:0,y:0,w:W,h:H};setVB();});&#10;}&#10;// ── Open lightbox ─────────────────────────────────────────────────&#10;window.lsOpenLightbox=function(svgId,svgW,svgH,chartTitle){&#10;var W=svgW||900,H=svgH||390;&#10;titleEl.textContent=chartTitle||'';&#10;var orig=document.getElementById(svgId);&#10;if(!orig)return;&#10;var clone=orig.cloneNode(true);&#10;clone.querySelectorAll('script').forEach(function(s){s.parentNode.removeChild(s);});&#10;clone.removeAttribute('id');&#10;// width+height 100% fills the holder completely; the SVG's viewBox (managed by&#10;// initZoom) controls which part of the chart coordinate space is visible.&#10;// Changing the viewBox never changes the SVG element's screen size, so zoom and&#10;// pan always use the full screen area below the header — no clipping.&#10;// max-width is reset because the original inline style carries max-width:900px&#10;// which would cap the SVG at its inline-chart width regardless of screen size.&#10;clone.style.maxWidth='none';&#10;clone.style.width='100%';&#10;clone.style.height='100%';&#10;clone.style.touchAction='none';&#10;clone.style.cursor='grab';&#10;holder.innerHTML='';&#10;holder.appendChild(clone);&#10;_savedBodyOverflow=document.body.style.overflow||'';&#10;document.body.style.overflow='hidden';&#10;ov.style.display='flex';&#10;initZoom(clone,W,H);&#10;};&#10;})();&#10;//]]&gt;&lt;/script&gt;&#10;&#10;&lt;h2 class="relative group"&gt;1970-an&#10; &lt;div id="1970-an" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#1970-an" aria-label="Pautan"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&#10;&#10;&#10;&#10;&lt;h3 class="relative group"&gt;Pegunan Bulan Ekstrem&#10; &lt;div id="pegunan-bulan-ekstrem" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#pegunan-bulan-ekstrem" aria-label="Pautan"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;p&gt;&lt;strong&gt;Hemisfera Utara&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Pegunan Bulan — 1980-an</title><link>https://kosmik.my/nebula/ms/lunar-standstills/1980/</link><pubDate>Sat, 03 Jan 2026 00:00:00 +0800</pubDate><guid>https://kosmik.my/nebula/ms/lunar-standstills/1980/</guid><description>&lt;style&gt;&#10;.ls-tbl{display:table;width:100%;overflow:visible}&#10;.ls-tbl td{vertical-align:top}&#10;.ls-moon{display:inline-flex;align-items:center;gap:.55em;text-align:left;vertical-align:middle}&#10;.ls-moon&gt;svg{flex:0 0 auto;display:block}&#10;.ls-moon-info{display:flex;flex-direction:column;line-height:1.3;min-width:0}&#10;.ls-moon-name{font-weight:600;white-space:nowrap}&#10;.ls-moon-pct{font-size:.82em;opacity:.82}&#10;.ls-moon-age{font-size:.78em;opacity:.68;white-space:normal}&#10;.ls-moon-age-lbl{font-weight:600;opacity:.85}&#10;@media(max-width:640px){&#10;.ls-tbl thead{display:none}&#10;.ls-tbl,.ls-tbl tbody,.ls-tbl tr{display:block}&#10;.ls-tbl tr{padding:.3em 0}&#10;.ls-tbl tbody tr{border-top-width:1px;border-top-color:var(--tw-prose-td-borders)}&#10;.ls-tbl tbody tr:first-child{border-top-color:var(--tw-prose-th-borders)}&#10;.ls-tbl tbody tr:last-child{border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}&#10;.ls-tbl td{display:flex;justify-content:space-between;align-items:baseline;padding:3px 0;text-align:right;white-space:normal}&#10;.ls-tbl td::before{content:attr(data-label);flex-shrink:0;text-align:left;font-weight:600;padding-right:.75em;white-space:nowrap;color:var(--tw-prose-headings,currentColor);opacity:.8}&#10; .ls-moon{align-items:center;flex-direction:row-reverse}&#10; .ls-moon-info{align-items:flex-end;text-align:right}&#10; }&#10;/* Chart SVG shared styles — repetitive stroke/font attributes live here&#10; so each marker/grid/legend element carries only its unique values. */&#10;.ls-c{cursor:pointer}&#10;.ls-mk{stroke:#fff;stroke-opacity:.5;stroke-width:1.2;opacity:.9}&#10;.ls-mt{font:bold 10px system-ui;fill:#fff;text-anchor:middle;dominant-baseline:middle;pointer-events:none}&#10;.ls-g0{stroke:#fff;stroke-opacity:.55;stroke-width:1.2}&#10;.ls-g1{stroke:#fff;stroke-opacity:.2;stroke-width:.6}&#10;.ls-gl{font:10px system-ui;fill:#fff;fill-opacity:.45;text-anchor:end;dominant-baseline:middle}&#10;.ls-tk{stroke:#fff;stroke-opacity:.3}&#10;.ls-tl{font:9px system-ui;fill:#fff;fill-opacity:.45;text-anchor:middle}&#10;.ls-lg{opacity:.85}&#10;.ls-lg2{opacity:.75}&#10;.ls-lt{font:9px system-ui;fill:#fff;fill-opacity:.6;dominant-baseline:middle}&#10;.ls-ax{stroke:#fff;stroke-opacity:.4}&#10;.ls-al{font:10px system-ui;fill:#fff;fill-opacity:.45;text-anchor:middle;dominant-baseline:middle}&#10;.ls-th{font:9px system-ui;fill:#fff;fill-opacity:.28;text-anchor:end}&#10;&lt;/style&gt;&#10;&lt;script&gt;//&lt;![CDATA[&#10;(function(){&#10;// ── Tooltip helpers — tooltip data lives in the SVG's data-tooltipmap&#10;// JSON attribute; clicking a marker renders its tooltip group on demand,&#10;// clicking anywhere else removes it. Works for inline charts and for&#10;// lightbox clones (attributes survive cloneNode) via one delegated listener.&#10;window.lsRemoveTip=function(svg){&#10;var ex=svg.querySelector('[data-active-tip]');&#10;if(ex)ex.parentNode.removeChild(ex);&#10;};&#10;window.lsMoonPath=function(pa,ill){&#10;var e=((pa%360)+360)%360;&#10;var waxing=e&lt;180;&#10;var gibbous=ill&gt;0.5;&#10;var r=46,c=50;&#10;var rx=r*Math.abs(2*ill-1);&#10;var top=c+' '+(c-r),bot=c+' '+(c+r);&#10;var s='&lt;circle cx="50" cy="50" r="46" fill="#3b4358"/&gt;';&#10;if(ill&gt;=0.995){&#10;s+='&lt;circle cx="50" cy="50" r="46" fill="#f2ecd0"/&gt;';&#10;}else if(ill&gt;0.005){&#10;var limb,term;&#10;if(waxing){&#10;limb='M '+top+' A '+r+' '+r+' 0 0 1 '+bot;&#10;term=gibbous?'A '+rx+' '+r+' 0 0 1 '+top:'A '+rx+' '+r+' 0 0 0 '+top;&#10;}else{&#10;limb='M '+top+' A '+r+' '+r+' 0 0 0 '+bot;&#10;term=gibbous?'A '+rx+' '+r+' 0 0 0 '+top:'A '+rx+' '+r+' 0 0 1 '+top;&#10;}&#10;s+='&lt;path d="'+limb+' '+term+' Z" fill="#f2ecd0"/&gt;';&#10;}&#10;s+='&lt;circle cx="50" cy="50" r="46" fill="none" stroke="#828b9c" stroke-width="2"/&gt;';&#10;return s;&#10;};&#10;window.lsShowTip=function(svg,key){&#10;lsRemoveTip(svg);&#10;var map;&#10;try{map=JSON.parse(svg.getAttribute('data-tooltipmap'));}catch(e){return;}&#10;var d=map[key];&#10;if(!d)return;&#10;var ns='http://www.w3.org/2000/svg';&#10;var g=document.createElementNS(ns,'g');&#10;g.setAttribute('data-active-tip',key);&#10;g.setAttribute('pointer-events','none');&#10;var rect=document.createElementNS(ns,'rect');&#10;rect.setAttribute('x',d.x);rect.setAttribute('y',d.y);&#10;rect.setAttribute('width',d.w);rect.setAttribute('height',d.h);&#10;rect.setAttribute('rx','5');&#10;rect.setAttribute('fill','black');rect.setAttribute('fill-opacity','0.62');&#10;rect.setAttribute('stroke',d.a);rect.setAttribute('stroke-width','1.2');rect.setAttribute('stroke-opacity','0.85');&#10;g.appendChild(rect);&#10;if(typeof d.p==='number'&amp;&amp;typeof d.i==='number'){&#10;var sz=Math.floor(d.h/2),m=5;&#10;var mpg=document.createElementNS(ns,'g');&#10;mpg.setAttribute('transform','translate('+(d.x+d.w-sz-m)+','+(d.y+m)+') scale('+(sz/100)+')');&#10;if(d.n){mpg.setAttribute('role','img');mpg.setAttribute('aria-label',d.n);}&#10;mpg.innerHTML=lsMoonPath(d.p,d.i);&#10;g.appendChild(mpg);&#10;}&#10;var lines=d.l.split('\n');&#10;for(var i=0;i&lt;lines.length;i++){&#10;var t=document.createElementNS(ns,'text');&#10;t.setAttribute('x',d.x+10);t.setAttribute('y',d.y+14+i*17);&#10;t.setAttribute('font-size','10');&#10;t.setAttribute('fill',i===0?d.a:'white');&#10;t.setAttribute('fill-opacity','0.95');&#10;t.setAttribute('font-weight',i===0?'bold':'normal');&#10;t.textContent=lines[i];&#10;g.appendChild(t);&#10;}&#10;svg.appendChild(g);&#10;};&#10;// ── Delegated clicks: marker shows its tooltip, background removes it ─&#10;document.addEventListener('click',function(e){&#10;var el=e.target.closest?e.target.closest('[data-tipkey]'):null;&#10;if(el){&#10;var svg=el.closest('svg[data-tooltipmap]');&#10;if(svg){e.stopPropagation();lsShowTip(svg,el.getAttribute('data-tipkey'));}&#10;return;&#10;}&#10;var svg2=e.target.closest?e.target.closest('svg[data-tooltipmap]'):null;&#10;if(svg2)lsRemoveTip(svg2);&#10;});&#10;// ── Lightbox — runs only once per page ───────────────────────────&#10;if(window._lsLbInit)return;&#10;window._lsLbInit=true;&#10;// Overlay — flex column so topBar stays fixed-height and holder fills the rest.&#10;// overflow:hidden on the overlay prevents any body scroll bleed-through.&#10;var ov=document.createElement('div');&#10;ov.style.cssText='display:none;position:fixed;inset:0;z-index:9000;background:#0d1117;flex-direction:column;overflow:hidden;';&#10;// ── Header row ────────────────────────────────────────────────────&#10;// lSpacer mirrors closeBtn's min-width so the titleGroup stays centred.&#10;var topBar=document.createElement('div');&#10;topBar.style.cssText='flex-shrink:0;background:#0d1117;display:flex;align-items:center;gap:10px;padding:8px 14px;';&#10;var lSpacer=document.createElement('div');&#10;lSpacer.style.cssText='flex-shrink:0;min-width:88px;';&#10;topBar.appendChild(lSpacer);&#10;var titleGroup=document.createElement('div');&#10;titleGroup.style.cssText='flex:1;text-align:center;overflow:hidden;pointer-events:none;';&#10;var titleEl=document.createElement('div');&#10;titleEl.style.cssText='color:#e6edf3;font-size:15px;font-family:system-ui,sans-serif;font-weight:600;line-height:1.3;';&#10;var hintEl=document.createElement('div');&#10;hintEl.style.cssText='color:rgba(230,237,243,0.35);font-size:11px;font-family:system-ui,sans-serif;margin-top:2px;line-height:1.4;';&#10;hintEl.textContent='Tatal atau cubit untuk zum · Seret untuk imbas · Klik dua kali untuk tetapkan semula';&#10;titleGroup.appendChild(titleEl);&#10;titleGroup.appendChild(hintEl);&#10;topBar.appendChild(titleGroup);&#10;var closeBtn=document.createElement('button');&#10;closeBtn.textContent='✕ Tutup';&#10;closeBtn.style.cssText='padding:10px 24px;font-size:14px;font-family:system-ui,sans-serif;cursor:pointer;border:1px solid rgba(255,255,255,0.45);border-radius:6px;background:rgba(255,255,255,0.10);color:#e6edf3;flex-shrink:0;touch-action:manipulation;min-height:44px;min-width:88px;';&#10;topBar.appendChild(closeBtn);&#10;// ── Chart area — fills every pixel below the header ───────────────&#10;// min-height:0 is required: flex children default to min-height:auto&#10;// which prevents them shrinking below their content size.&#10;var holder=document.createElement('div');&#10;holder.style.cssText='flex:1;min-height:0;overflow:hidden;';&#10;ov.appendChild(topBar);&#10;ov.appendChild(holder);&#10;document.body.appendChild(ov);&#10;var _savedBodyOverflow='';&#10;function closeLb(){ov.style.display='none';holder.innerHTML='';document.body.style.overflow=_savedBodyOverflow;}&#10;closeBtn.addEventListener('click',closeLb);&#10;ov.addEventListener('click',function(e){if(e.target===ov)closeLb();});&#10;document.addEventListener('keydown',function(e){if(e.key==='Escape'&amp;&amp;ov.style.display!=='none')closeLb();});&#10;// ── Shared pan-state for lightbox mouse drag ──────────────────────&#10;var _lb={panFn:null,endFn:null};&#10;ov.addEventListener('mousemove',function(e){if(_lb.panFn)_lb.panFn(e);});&#10;ov.addEventListener('mouseup',function(){if(_lb.endFn)_lb.endFn();});&#10;ov.addEventListener('mouseleave',function(){if(_lb.endFn)_lb.endFn();});&#10;// ── Zoom / pan initialiser (called for each new lightbox SVG) ─────&#10;function initZoom(svg,W,H){&#10;var vb={x:0,y:0,w:W,h:H};&#10;var isPanning=false,panStart=null,panStartVB=null;&#10;var pinchDist=0,pinchMidX=0,pinchMidY=0,pinchStartVB=null;&#10;// Tap-detection state — a touch that barely moved within 350 ms is a tap.&#10;// initZoom calls e.preventDefault() in touchstart (needed to suppress the&#10;// browser's own pan/zoom), which stops the browser from synthesising a click&#10;// event from touch. We synthesise it ourselves in touchend so that marker&#10;// onclick handlers and the SVG background onclick both work on touchscreens.&#10;// _lastTap* tracks the previous tap for double-tap-to-reset detection&#10;// (Chromium on touch does not fire dblclick from touch events).&#10;var _tapEl=null,_tapT=0,_tapX=0,_tapY=0;&#10;var _lastTapT=0,_lastTapX=0,_lastTapY=0;&#10;function setVB(){svg.setAttribute('viewBox',vb.x+' '+vb.y+' '+vb.w+' '+vb.h);}&#10;// ── Rendering helpers ─────────────────────────────────────────────&#10;// The SVG uses preserveAspectRatio="xMidYMid meet", so the chart content&#10;// is letter-boxed inside the SVG element. Using the SVG element dimensions&#10;// directly (r.width / r.height) for pan calculations produces wildly&#10;// different sensitivities for x vs y on portrait phones (4-5× mismatch).&#10;// The correct divisor for both axes is the render scale:&#10;// renderScale = min(elementW/vbW, elementH/vbH)&#10;// which gives a uniform 1-screen-pixel = 1/renderScale chart-units feel.&#10;// The same correction is needed for zoom cursor anchoring.&#10;function renderScale(r,w,h){return Math.min(r.width/w,r.height/h);}&#10;function contentOff(r,w,h,rs){&#10;return{ox:(r.width-w*rs)/2,oy:(r.height-h*rs)/2};&#10;}&#10;svg.addEventListener('wheel',function(e){&#10;e.preventDefault();e.stopPropagation();&#10;var r=svg.getBoundingClientRect();&#10;var ratio=e.deltaY&gt;0?1.12:1/1.12;&#10;var rs=renderScale(r,vb.w,vb.h);&#10;var off=contentOff(r,vb.w,vb.h,rs);&#10;var nx=(e.clientX-r.left-off.ox)/(vb.w*rs);&#10;var ny=(e.clientY-r.top-off.oy)/(vb.h*rs);&#10;var fx=vb.x+nx*vb.w,fy=vb.y+ny*vb.h;&#10;vb.w*=ratio;vb.h*=ratio;&#10;vb.x=fx-nx*vb.w;vb.y=fy-ny*vb.h;&#10;setVB();&#10;},{passive:false});&#10;svg.addEventListener('mousedown',function(e){&#10;if(e.button!==0)return;&#10;e.preventDefault();&#10;isPanning=true;&#10;panStart={x:e.clientX,y:e.clientY};&#10;panStartVB={x:vb.x,y:vb.y,w:vb.w,h:vb.h};&#10;svg.style.cursor='grabbing';&#10;_lb.panFn=function(ev){&#10;if(!isPanning)return;&#10;var r=svg.getBoundingClientRect();&#10;var rs=renderScale(r,panStartVB.w,panStartVB.h);&#10;vb.x=panStartVB.x-(ev.clientX-panStart.x)/rs;&#10;vb.y=panStartVB.y-(ev.clientY-panStart.y)/rs;&#10;setVB();&#10;};&#10;_lb.endFn=function(){isPanning=false;svg.style.cursor='grab';_lb.panFn=null;_lb.endFn=null;};&#10;});&#10;svg.addEventListener('touchstart',function(e){&#10;e.preventDefault();&#10;if(e.touches.length===1){&#10;isPanning=true;&#10;panStart={x:e.touches[0].clientX,y:e.touches[0].clientY};&#10;panStartVB={x:vb.x,y:vb.y,w:vb.w,h:vb.h};&#10;// Record tap candidate — cleared on significant move or multi-touch&#10;_tapEl=e.target;&#10;_tapT=Date.now();&#10;_tapX=e.touches[0].clientX;&#10;_tapY=e.touches[0].clientY;&#10;}else if(e.touches.length&gt;=2){&#10;isPanning=false;panStart=null;&#10;_tapEl=null;&#10;pinchDist=Math.hypot(e.touches[0].clientX-e.touches[1].clientX,e.touches[0].clientY-e.touches[1].clientY);&#10;pinchMidX=(e.touches[0].clientX+e.touches[1].clientX)/2;&#10;pinchMidY=(e.touches[0].clientY+e.touches[1].clientY)/2;&#10;pinchStartVB={x:vb.x,y:vb.y,w:vb.w,h:vb.h};&#10;}&#10;},{passive:false});&#10;svg.addEventListener('touchmove',function(e){&#10;e.preventDefault();e.stopPropagation();&#10;// Cancel tap if finger moved more than 8 px — this is a pan, not a tap&#10;if(_tapEl&amp;&amp;e.touches.length===1){&#10;var dx=Math.abs(e.touches[0].clientX-_tapX);&#10;var dy=Math.abs(e.touches[0].clientY-_tapY);&#10;if(dx&gt;8||dy&gt;8)_tapEl=null;&#10;}&#10;var r=svg.getBoundingClientRect();&#10;if(e.touches.length===1&amp;&amp;isPanning&amp;&amp;panStart){&#10;var rs=renderScale(r,panStartVB.w,panStartVB.h);&#10;vb.x=panStartVB.x-(e.touches[0].clientX-panStart.x)/rs;&#10;vb.y=panStartVB.y-(e.touches[0].clientY-panStart.y)/rs;&#10;setVB();&#10;}else if(e.touches.length&gt;=2&amp;&amp;pinchDist&gt;0&amp;&amp;pinchStartVB){&#10;var dist=Math.hypot(e.touches[0].clientX-e.touches[1].clientX,e.touches[0].clientY-e.touches[1].clientY);&#10;var midX=(e.touches[0].clientX+e.touches[1].clientX)/2;&#10;var midY=(e.touches[0].clientY+e.touches[1].clientY)/2;&#10;var scale=pinchDist/dist;&#10;var lvb=pinchStartVB;&#10;var rs=renderScale(r,lvb.w,lvb.h);&#10;var off=contentOff(r,lvb.w,lvb.h,rs);&#10;var cw=lvb.w*rs,ch=lvb.h*rs;&#10;var nx=(midX-r.left-off.ox)/cw,ny=(midY-r.top-off.oy)/ch;&#10;var origNx=(pinchMidX-r.left-off.ox)/cw,origNy=(pinchMidY-r.top-off.oy)/ch;&#10;var fx=lvb.x+origNx*lvb.w,fy=lvb.y+origNy*lvb.h;&#10;vb.w=lvb.w*scale;vb.h=lvb.h*scale;&#10;vb.x=fx-nx*vb.w;vb.y=fy-ny*vb.h;&#10;setVB();&#10;}&#10;},{passive:false});&#10;svg.addEventListener('touchend',function(e){&#10;// Synthesise a click on a short tap so marker handlers fire on touchscreens.&#10;// For double-tap: Chromium on touch does not fire dblclick from touch events.&#10;// We detect two taps within 350 ms / 30 px and reset the view instead.&#10;if(_tapEl&amp;&amp;e.touches.length===0&amp;&amp;e.changedTouches.length===1){&#10;var now=Date.now();&#10;var dt=now-_tapT;&#10;if(dt&lt;350){&#10;var tdx=Math.abs(e.changedTouches[0].clientX-_lastTapX);&#10;var tdy=Math.abs(e.changedTouches[0].clientY-_lastTapY);&#10;if(now-_lastTapT&lt;350&amp;&amp;tdx&lt;30&amp;&amp;tdy&lt;30){&#10;// Double-tap detected — reset view (mirrors dblclick handler).&#10;// Clear _lastTapT so a third tap starts a new double-tap window.&#10;_lastTapT=0;&#10;vb={x:0,y:0,w:W,h:H};setVB();&#10;}else{&#10;// Single tap — fire click for tooltip toggle, record for next double-tap check.&#10;_lastTapT=now;&#10;_lastTapX=e.changedTouches[0].clientX;&#10;_lastTapY=e.changedTouches[0].clientY;&#10;_tapEl.dispatchEvent(new MouseEvent('click',{bubbles:true,cancelable:true,view:window}));&#10;}&#10;}&#10;}&#10;_tapEl=null;&#10;if(e.touches.length===0){isPanning=false;panStart=null;}&#10;if(e.touches.length&lt;2){pinchDist=0;pinchStartVB=null;}&#10;});&#10;svg.addEventListener('dblclick',function(){vb={x:0,y:0,w:W,h:H};setVB();});&#10;}&#10;// ── Open lightbox ─────────────────────────────────────────────────&#10;window.lsOpenLightbox=function(svgId,svgW,svgH,chartTitle){&#10;var W=svgW||900,H=svgH||390;&#10;titleEl.textContent=chartTitle||'';&#10;var orig=document.getElementById(svgId);&#10;if(!orig)return;&#10;var clone=orig.cloneNode(true);&#10;clone.querySelectorAll('script').forEach(function(s){s.parentNode.removeChild(s);});&#10;clone.removeAttribute('id');&#10;// width+height 100% fills the holder completely; the SVG's viewBox (managed by&#10;// initZoom) controls which part of the chart coordinate space is visible.&#10;// Changing the viewBox never changes the SVG element's screen size, so zoom and&#10;// pan always use the full screen area below the header — no clipping.&#10;// max-width is reset because the original inline style carries max-width:900px&#10;// which would cap the SVG at its inline-chart width regardless of screen size.&#10;clone.style.maxWidth='none';&#10;clone.style.width='100%';&#10;clone.style.height='100%';&#10;clone.style.touchAction='none';&#10;clone.style.cursor='grab';&#10;holder.innerHTML='';&#10;holder.appendChild(clone);&#10;_savedBodyOverflow=document.body.style.overflow||'';&#10;document.body.style.overflow='hidden';&#10;ov.style.display='flex';&#10;initZoom(clone,W,H);&#10;};&#10;})();&#10;//]]&gt;&lt;/script&gt;&#10;&#10;&lt;h2 class="relative group"&gt;1980-an&#10; &lt;div id="1980-an" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#1980-an" aria-label="Pautan"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&#10;&#10;&#10;&#10;&lt;h3 class="relative group"&gt;Pegunan Bulan Ekstrem&#10; &lt;div id="pegunan-bulan-ekstrem" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#pegunan-bulan-ekstrem" aria-label="Pautan"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;p&gt;&lt;strong&gt;Hemisfera Utara&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Pegunan Bulan — 1990-an</title><link>https://kosmik.my/nebula/ms/lunar-standstills/1990/</link><pubDate>Sat, 03 Jan 2026 00:00:00 +0800</pubDate><guid>https://kosmik.my/nebula/ms/lunar-standstills/1990/</guid><description>&lt;style&gt;&#10;.ls-tbl{display:table;width:100%;overflow:visible}&#10;.ls-tbl td{vertical-align:top}&#10;.ls-moon{display:inline-flex;align-items:center;gap:.55em;text-align:left;vertical-align:middle}&#10;.ls-moon&gt;svg{flex:0 0 auto;display:block}&#10;.ls-moon-info{display:flex;flex-direction:column;line-height:1.3;min-width:0}&#10;.ls-moon-name{font-weight:600;white-space:nowrap}&#10;.ls-moon-pct{font-size:.82em;opacity:.82}&#10;.ls-moon-age{font-size:.78em;opacity:.68;white-space:normal}&#10;.ls-moon-age-lbl{font-weight:600;opacity:.85}&#10;@media(max-width:640px){&#10;.ls-tbl thead{display:none}&#10;.ls-tbl,.ls-tbl tbody,.ls-tbl tr{display:block}&#10;.ls-tbl tr{padding:.3em 0}&#10;.ls-tbl tbody tr{border-top-width:1px;border-top-color:var(--tw-prose-td-borders)}&#10;.ls-tbl tbody tr:first-child{border-top-color:var(--tw-prose-th-borders)}&#10;.ls-tbl tbody tr:last-child{border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}&#10;.ls-tbl td{display:flex;justify-content:space-between;align-items:baseline;padding:3px 0;text-align:right;white-space:normal}&#10;.ls-tbl td::before{content:attr(data-label);flex-shrink:0;text-align:left;font-weight:600;padding-right:.75em;white-space:nowrap;color:var(--tw-prose-headings,currentColor);opacity:.8}&#10; .ls-moon{align-items:center;flex-direction:row-reverse}&#10; .ls-moon-info{align-items:flex-end;text-align:right}&#10; }&#10;/* Chart SVG shared styles — repetitive stroke/font attributes live here&#10; so each marker/grid/legend element carries only its unique values. */&#10;.ls-c{cursor:pointer}&#10;.ls-mk{stroke:#fff;stroke-opacity:.5;stroke-width:1.2;opacity:.9}&#10;.ls-mt{font:bold 10px system-ui;fill:#fff;text-anchor:middle;dominant-baseline:middle;pointer-events:none}&#10;.ls-g0{stroke:#fff;stroke-opacity:.55;stroke-width:1.2}&#10;.ls-g1{stroke:#fff;stroke-opacity:.2;stroke-width:.6}&#10;.ls-gl{font:10px system-ui;fill:#fff;fill-opacity:.45;text-anchor:end;dominant-baseline:middle}&#10;.ls-tk{stroke:#fff;stroke-opacity:.3}&#10;.ls-tl{font:9px system-ui;fill:#fff;fill-opacity:.45;text-anchor:middle}&#10;.ls-lg{opacity:.85}&#10;.ls-lg2{opacity:.75}&#10;.ls-lt{font:9px system-ui;fill:#fff;fill-opacity:.6;dominant-baseline:middle}&#10;.ls-ax{stroke:#fff;stroke-opacity:.4}&#10;.ls-al{font:10px system-ui;fill:#fff;fill-opacity:.45;text-anchor:middle;dominant-baseline:middle}&#10;.ls-th{font:9px system-ui;fill:#fff;fill-opacity:.28;text-anchor:end}&#10;&lt;/style&gt;&#10;&lt;script&gt;//&lt;![CDATA[&#10;(function(){&#10;// ── Tooltip helpers — tooltip data lives in the SVG's data-tooltipmap&#10;// JSON attribute; clicking a marker renders its tooltip group on demand,&#10;// clicking anywhere else removes it. Works for inline charts and for&#10;// lightbox clones (attributes survive cloneNode) via one delegated listener.&#10;window.lsRemoveTip=function(svg){&#10;var ex=svg.querySelector('[data-active-tip]');&#10;if(ex)ex.parentNode.removeChild(ex);&#10;};&#10;window.lsMoonPath=function(pa,ill){&#10;var e=((pa%360)+360)%360;&#10;var waxing=e&lt;180;&#10;var gibbous=ill&gt;0.5;&#10;var r=46,c=50;&#10;var rx=r*Math.abs(2*ill-1);&#10;var top=c+' '+(c-r),bot=c+' '+(c+r);&#10;var s='&lt;circle cx="50" cy="50" r="46" fill="#3b4358"/&gt;';&#10;if(ill&gt;=0.995){&#10;s+='&lt;circle cx="50" cy="50" r="46" fill="#f2ecd0"/&gt;';&#10;}else if(ill&gt;0.005){&#10;var limb,term;&#10;if(waxing){&#10;limb='M '+top+' A '+r+' '+r+' 0 0 1 '+bot;&#10;term=gibbous?'A '+rx+' '+r+' 0 0 1 '+top:'A '+rx+' '+r+' 0 0 0 '+top;&#10;}else{&#10;limb='M '+top+' A '+r+' '+r+' 0 0 0 '+bot;&#10;term=gibbous?'A '+rx+' '+r+' 0 0 0 '+top:'A '+rx+' '+r+' 0 0 1 '+top;&#10;}&#10;s+='&lt;path d="'+limb+' '+term+' Z" fill="#f2ecd0"/&gt;';&#10;}&#10;s+='&lt;circle cx="50" cy="50" r="46" fill="none" stroke="#828b9c" stroke-width="2"/&gt;';&#10;return s;&#10;};&#10;window.lsShowTip=function(svg,key){&#10;lsRemoveTip(svg);&#10;var map;&#10;try{map=JSON.parse(svg.getAttribute('data-tooltipmap'));}catch(e){return;}&#10;var d=map[key];&#10;if(!d)return;&#10;var ns='http://www.w3.org/2000/svg';&#10;var g=document.createElementNS(ns,'g');&#10;g.setAttribute('data-active-tip',key);&#10;g.setAttribute('pointer-events','none');&#10;var rect=document.createElementNS(ns,'rect');&#10;rect.setAttribute('x',d.x);rect.setAttribute('y',d.y);&#10;rect.setAttribute('width',d.w);rect.setAttribute('height',d.h);&#10;rect.setAttribute('rx','5');&#10;rect.setAttribute('fill','black');rect.setAttribute('fill-opacity','0.62');&#10;rect.setAttribute('stroke',d.a);rect.setAttribute('stroke-width','1.2');rect.setAttribute('stroke-opacity','0.85');&#10;g.appendChild(rect);&#10;if(typeof d.p==='number'&amp;&amp;typeof d.i==='number'){&#10;var sz=Math.floor(d.h/2),m=5;&#10;var mpg=document.createElementNS(ns,'g');&#10;mpg.setAttribute('transform','translate('+(d.x+d.w-sz-m)+','+(d.y+m)+') scale('+(sz/100)+')');&#10;if(d.n){mpg.setAttribute('role','img');mpg.setAttribute('aria-label',d.n);}&#10;mpg.innerHTML=lsMoonPath(d.p,d.i);&#10;g.appendChild(mpg);&#10;}&#10;var lines=d.l.split('\n');&#10;for(var i=0;i&lt;lines.length;i++){&#10;var t=document.createElementNS(ns,'text');&#10;t.setAttribute('x',d.x+10);t.setAttribute('y',d.y+14+i*17);&#10;t.setAttribute('font-size','10');&#10;t.setAttribute('fill',i===0?d.a:'white');&#10;t.setAttribute('fill-opacity','0.95');&#10;t.setAttribute('font-weight',i===0?'bold':'normal');&#10;t.textContent=lines[i];&#10;g.appendChild(t);&#10;}&#10;svg.appendChild(g);&#10;};&#10;// ── Delegated clicks: marker shows its tooltip, background removes it ─&#10;document.addEventListener('click',function(e){&#10;var el=e.target.closest?e.target.closest('[data-tipkey]'):null;&#10;if(el){&#10;var svg=el.closest('svg[data-tooltipmap]');&#10;if(svg){e.stopPropagation();lsShowTip(svg,el.getAttribute('data-tipkey'));}&#10;return;&#10;}&#10;var svg2=e.target.closest?e.target.closest('svg[data-tooltipmap]'):null;&#10;if(svg2)lsRemoveTip(svg2);&#10;});&#10;// ── Lightbox — runs only once per page ───────────────────────────&#10;if(window._lsLbInit)return;&#10;window._lsLbInit=true;&#10;// Overlay — flex column so topBar stays fixed-height and holder fills the rest.&#10;// overflow:hidden on the overlay prevents any body scroll bleed-through.&#10;var ov=document.createElement('div');&#10;ov.style.cssText='display:none;position:fixed;inset:0;z-index:9000;background:#0d1117;flex-direction:column;overflow:hidden;';&#10;// ── Header row ────────────────────────────────────────────────────&#10;// lSpacer mirrors closeBtn's min-width so the titleGroup stays centred.&#10;var topBar=document.createElement('div');&#10;topBar.style.cssText='flex-shrink:0;background:#0d1117;display:flex;align-items:center;gap:10px;padding:8px 14px;';&#10;var lSpacer=document.createElement('div');&#10;lSpacer.style.cssText='flex-shrink:0;min-width:88px;';&#10;topBar.appendChild(lSpacer);&#10;var titleGroup=document.createElement('div');&#10;titleGroup.style.cssText='flex:1;text-align:center;overflow:hidden;pointer-events:none;';&#10;var titleEl=document.createElement('div');&#10;titleEl.style.cssText='color:#e6edf3;font-size:15px;font-family:system-ui,sans-serif;font-weight:600;line-height:1.3;';&#10;var hintEl=document.createElement('div');&#10;hintEl.style.cssText='color:rgba(230,237,243,0.35);font-size:11px;font-family:system-ui,sans-serif;margin-top:2px;line-height:1.4;';&#10;hintEl.textContent='Tatal atau cubit untuk zum · Seret untuk imbas · Klik dua kali untuk tetapkan semula';&#10;titleGroup.appendChild(titleEl);&#10;titleGroup.appendChild(hintEl);&#10;topBar.appendChild(titleGroup);&#10;var closeBtn=document.createElement('button');&#10;closeBtn.textContent='✕ Tutup';&#10;closeBtn.style.cssText='padding:10px 24px;font-size:14px;font-family:system-ui,sans-serif;cursor:pointer;border:1px solid rgba(255,255,255,0.45);border-radius:6px;background:rgba(255,255,255,0.10);color:#e6edf3;flex-shrink:0;touch-action:manipulation;min-height:44px;min-width:88px;';&#10;topBar.appendChild(closeBtn);&#10;// ── Chart area — fills every pixel below the header ───────────────&#10;// min-height:0 is required: flex children default to min-height:auto&#10;// which prevents them shrinking below their content size.&#10;var holder=document.createElement('div');&#10;holder.style.cssText='flex:1;min-height:0;overflow:hidden;';&#10;ov.appendChild(topBar);&#10;ov.appendChild(holder);&#10;document.body.appendChild(ov);&#10;var _savedBodyOverflow='';&#10;function closeLb(){ov.style.display='none';holder.innerHTML='';document.body.style.overflow=_savedBodyOverflow;}&#10;closeBtn.addEventListener('click',closeLb);&#10;ov.addEventListener('click',function(e){if(e.target===ov)closeLb();});&#10;document.addEventListener('keydown',function(e){if(e.key==='Escape'&amp;&amp;ov.style.display!=='none')closeLb();});&#10;// ── Shared pan-state for lightbox mouse drag ──────────────────────&#10;var _lb={panFn:null,endFn:null};&#10;ov.addEventListener('mousemove',function(e){if(_lb.panFn)_lb.panFn(e);});&#10;ov.addEventListener('mouseup',function(){if(_lb.endFn)_lb.endFn();});&#10;ov.addEventListener('mouseleave',function(){if(_lb.endFn)_lb.endFn();});&#10;// ── Zoom / pan initialiser (called for each new lightbox SVG) ─────&#10;function initZoom(svg,W,H){&#10;var vb={x:0,y:0,w:W,h:H};&#10;var isPanning=false,panStart=null,panStartVB=null;&#10;var pinchDist=0,pinchMidX=0,pinchMidY=0,pinchStartVB=null;&#10;// Tap-detection state — a touch that barely moved within 350 ms is a tap.&#10;// initZoom calls e.preventDefault() in touchstart (needed to suppress the&#10;// browser's own pan/zoom), which stops the browser from synthesising a click&#10;// event from touch. We synthesise it ourselves in touchend so that marker&#10;// onclick handlers and the SVG background onclick both work on touchscreens.&#10;// _lastTap* tracks the previous tap for double-tap-to-reset detection&#10;// (Chromium on touch does not fire dblclick from touch events).&#10;var _tapEl=null,_tapT=0,_tapX=0,_tapY=0;&#10;var _lastTapT=0,_lastTapX=0,_lastTapY=0;&#10;function setVB(){svg.setAttribute('viewBox',vb.x+' '+vb.y+' '+vb.w+' '+vb.h);}&#10;// ── Rendering helpers ─────────────────────────────────────────────&#10;// The SVG uses preserveAspectRatio="xMidYMid meet", so the chart content&#10;// is letter-boxed inside the SVG element. Using the SVG element dimensions&#10;// directly (r.width / r.height) for pan calculations produces wildly&#10;// different sensitivities for x vs y on portrait phones (4-5× mismatch).&#10;// The correct divisor for both axes is the render scale:&#10;// renderScale = min(elementW/vbW, elementH/vbH)&#10;// which gives a uniform 1-screen-pixel = 1/renderScale chart-units feel.&#10;// The same correction is needed for zoom cursor anchoring.&#10;function renderScale(r,w,h){return Math.min(r.width/w,r.height/h);}&#10;function contentOff(r,w,h,rs){&#10;return{ox:(r.width-w*rs)/2,oy:(r.height-h*rs)/2};&#10;}&#10;svg.addEventListener('wheel',function(e){&#10;e.preventDefault();e.stopPropagation();&#10;var r=svg.getBoundingClientRect();&#10;var ratio=e.deltaY&gt;0?1.12:1/1.12;&#10;var rs=renderScale(r,vb.w,vb.h);&#10;var off=contentOff(r,vb.w,vb.h,rs);&#10;var nx=(e.clientX-r.left-off.ox)/(vb.w*rs);&#10;var ny=(e.clientY-r.top-off.oy)/(vb.h*rs);&#10;var fx=vb.x+nx*vb.w,fy=vb.y+ny*vb.h;&#10;vb.w*=ratio;vb.h*=ratio;&#10;vb.x=fx-nx*vb.w;vb.y=fy-ny*vb.h;&#10;setVB();&#10;},{passive:false});&#10;svg.addEventListener('mousedown',function(e){&#10;if(e.button!==0)return;&#10;e.preventDefault();&#10;isPanning=true;&#10;panStart={x:e.clientX,y:e.clientY};&#10;panStartVB={x:vb.x,y:vb.y,w:vb.w,h:vb.h};&#10;svg.style.cursor='grabbing';&#10;_lb.panFn=function(ev){&#10;if(!isPanning)return;&#10;var r=svg.getBoundingClientRect();&#10;var rs=renderScale(r,panStartVB.w,panStartVB.h);&#10;vb.x=panStartVB.x-(ev.clientX-panStart.x)/rs;&#10;vb.y=panStartVB.y-(ev.clientY-panStart.y)/rs;&#10;setVB();&#10;};&#10;_lb.endFn=function(){isPanning=false;svg.style.cursor='grab';_lb.panFn=null;_lb.endFn=null;};&#10;});&#10;svg.addEventListener('touchstart',function(e){&#10;e.preventDefault();&#10;if(e.touches.length===1){&#10;isPanning=true;&#10;panStart={x:e.touches[0].clientX,y:e.touches[0].clientY};&#10;panStartVB={x:vb.x,y:vb.y,w:vb.w,h:vb.h};&#10;// Record tap candidate — cleared on significant move or multi-touch&#10;_tapEl=e.target;&#10;_tapT=Date.now();&#10;_tapX=e.touches[0].clientX;&#10;_tapY=e.touches[0].clientY;&#10;}else if(e.touches.length&gt;=2){&#10;isPanning=false;panStart=null;&#10;_tapEl=null;&#10;pinchDist=Math.hypot(e.touches[0].clientX-e.touches[1].clientX,e.touches[0].clientY-e.touches[1].clientY);&#10;pinchMidX=(e.touches[0].clientX+e.touches[1].clientX)/2;&#10;pinchMidY=(e.touches[0].clientY+e.touches[1].clientY)/2;&#10;pinchStartVB={x:vb.x,y:vb.y,w:vb.w,h:vb.h};&#10;}&#10;},{passive:false});&#10;svg.addEventListener('touchmove',function(e){&#10;e.preventDefault();e.stopPropagation();&#10;// Cancel tap if finger moved more than 8 px — this is a pan, not a tap&#10;if(_tapEl&amp;&amp;e.touches.length===1){&#10;var dx=Math.abs(e.touches[0].clientX-_tapX);&#10;var dy=Math.abs(e.touches[0].clientY-_tapY);&#10;if(dx&gt;8||dy&gt;8)_tapEl=null;&#10;}&#10;var r=svg.getBoundingClientRect();&#10;if(e.touches.length===1&amp;&amp;isPanning&amp;&amp;panStart){&#10;var rs=renderScale(r,panStartVB.w,panStartVB.h);&#10;vb.x=panStartVB.x-(e.touches[0].clientX-panStart.x)/rs;&#10;vb.y=panStartVB.y-(e.touches[0].clientY-panStart.y)/rs;&#10;setVB();&#10;}else if(e.touches.length&gt;=2&amp;&amp;pinchDist&gt;0&amp;&amp;pinchStartVB){&#10;var dist=Math.hypot(e.touches[0].clientX-e.touches[1].clientX,e.touches[0].clientY-e.touches[1].clientY);&#10;var midX=(e.touches[0].clientX+e.touches[1].clientX)/2;&#10;var midY=(e.touches[0].clientY+e.touches[1].clientY)/2;&#10;var scale=pinchDist/dist;&#10;var lvb=pinchStartVB;&#10;var rs=renderScale(r,lvb.w,lvb.h);&#10;var off=contentOff(r,lvb.w,lvb.h,rs);&#10;var cw=lvb.w*rs,ch=lvb.h*rs;&#10;var nx=(midX-r.left-off.ox)/cw,ny=(midY-r.top-off.oy)/ch;&#10;var origNx=(pinchMidX-r.left-off.ox)/cw,origNy=(pinchMidY-r.top-off.oy)/ch;&#10;var fx=lvb.x+origNx*lvb.w,fy=lvb.y+origNy*lvb.h;&#10;vb.w=lvb.w*scale;vb.h=lvb.h*scale;&#10;vb.x=fx-nx*vb.w;vb.y=fy-ny*vb.h;&#10;setVB();&#10;}&#10;},{passive:false});&#10;svg.addEventListener('touchend',function(e){&#10;// Synthesise a click on a short tap so marker handlers fire on touchscreens.&#10;// For double-tap: Chromium on touch does not fire dblclick from touch events.&#10;// We detect two taps within 350 ms / 30 px and reset the view instead.&#10;if(_tapEl&amp;&amp;e.touches.length===0&amp;&amp;e.changedTouches.length===1){&#10;var now=Date.now();&#10;var dt=now-_tapT;&#10;if(dt&lt;350){&#10;var tdx=Math.abs(e.changedTouches[0].clientX-_lastTapX);&#10;var tdy=Math.abs(e.changedTouches[0].clientY-_lastTapY);&#10;if(now-_lastTapT&lt;350&amp;&amp;tdx&lt;30&amp;&amp;tdy&lt;30){&#10;// Double-tap detected — reset view (mirrors dblclick handler).&#10;// Clear _lastTapT so a third tap starts a new double-tap window.&#10;_lastTapT=0;&#10;vb={x:0,y:0,w:W,h:H};setVB();&#10;}else{&#10;// Single tap — fire click for tooltip toggle, record for next double-tap check.&#10;_lastTapT=now;&#10;_lastTapX=e.changedTouches[0].clientX;&#10;_lastTapY=e.changedTouches[0].clientY;&#10;_tapEl.dispatchEvent(new MouseEvent('click',{bubbles:true,cancelable:true,view:window}));&#10;}&#10;}&#10;}&#10;_tapEl=null;&#10;if(e.touches.length===0){isPanning=false;panStart=null;}&#10;if(e.touches.length&lt;2){pinchDist=0;pinchStartVB=null;}&#10;});&#10;svg.addEventListener('dblclick',function(){vb={x:0,y:0,w:W,h:H};setVB();});&#10;}&#10;// ── Open lightbox ─────────────────────────────────────────────────&#10;window.lsOpenLightbox=function(svgId,svgW,svgH,chartTitle){&#10;var W=svgW||900,H=svgH||390;&#10;titleEl.textContent=chartTitle||'';&#10;var orig=document.getElementById(svgId);&#10;if(!orig)return;&#10;var clone=orig.cloneNode(true);&#10;clone.querySelectorAll('script').forEach(function(s){s.parentNode.removeChild(s);});&#10;clone.removeAttribute('id');&#10;// width+height 100% fills the holder completely; the SVG's viewBox (managed by&#10;// initZoom) controls which part of the chart coordinate space is visible.&#10;// Changing the viewBox never changes the SVG element's screen size, so zoom and&#10;// pan always use the full screen area below the header — no clipping.&#10;// max-width is reset because the original inline style carries max-width:900px&#10;// which would cap the SVG at its inline-chart width regardless of screen size.&#10;clone.style.maxWidth='none';&#10;clone.style.width='100%';&#10;clone.style.height='100%';&#10;clone.style.touchAction='none';&#10;clone.style.cursor='grab';&#10;holder.innerHTML='';&#10;holder.appendChild(clone);&#10;_savedBodyOverflow=document.body.style.overflow||'';&#10;document.body.style.overflow='hidden';&#10;ov.style.display='flex';&#10;initZoom(clone,W,H);&#10;};&#10;})();&#10;//]]&gt;&lt;/script&gt;&#10;&#10;&lt;h2 class="relative group"&gt;1990-an&#10; &lt;div id="1990-an" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#1990-an" aria-label="Pautan"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&#10;&#10;&#10;&#10;&lt;h3 class="relative group"&gt;Pegunan Bulan Ekstrem&#10; &lt;div id="pegunan-bulan-ekstrem" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#pegunan-bulan-ekstrem" aria-label="Pautan"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;p&gt;&lt;strong&gt;Hemisfera Utara&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Pegunan Bulan — 2000-an</title><link>https://kosmik.my/nebula/ms/lunar-standstills/2000/</link><pubDate>Sat, 03 Jan 2026 00:00:00 +0800</pubDate><guid>https://kosmik.my/nebula/ms/lunar-standstills/2000/</guid><description>&lt;style&gt;&#10;.ls-tbl{display:table;width:100%;overflow:visible}&#10;.ls-tbl td{vertical-align:top}&#10;.ls-moon{display:inline-flex;align-items:center;gap:.55em;text-align:left;vertical-align:middle}&#10;.ls-moon&gt;svg{flex:0 0 auto;display:block}&#10;.ls-moon-info{display:flex;flex-direction:column;line-height:1.3;min-width:0}&#10;.ls-moon-name{font-weight:600;white-space:nowrap}&#10;.ls-moon-pct{font-size:.82em;opacity:.82}&#10;.ls-moon-age{font-size:.78em;opacity:.68;white-space:normal}&#10;.ls-moon-age-lbl{font-weight:600;opacity:.85}&#10;@media(max-width:640px){&#10;.ls-tbl thead{display:none}&#10;.ls-tbl,.ls-tbl tbody,.ls-tbl tr{display:block}&#10;.ls-tbl tr{padding:.3em 0}&#10;.ls-tbl tbody tr{border-top-width:1px;border-top-color:var(--tw-prose-td-borders)}&#10;.ls-tbl tbody tr:first-child{border-top-color:var(--tw-prose-th-borders)}&#10;.ls-tbl tbody tr:last-child{border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}&#10;.ls-tbl td{display:flex;justify-content:space-between;align-items:baseline;padding:3px 0;text-align:right;white-space:normal}&#10;.ls-tbl td::before{content:attr(data-label);flex-shrink:0;text-align:left;font-weight:600;padding-right:.75em;white-space:nowrap;color:var(--tw-prose-headings,currentColor);opacity:.8}&#10; .ls-moon{align-items:center;flex-direction:row-reverse}&#10; .ls-moon-info{align-items:flex-end;text-align:right}&#10; }&#10;/* Chart SVG shared styles — repetitive stroke/font attributes live here&#10; so each marker/grid/legend element carries only its unique values. */&#10;.ls-c{cursor:pointer}&#10;.ls-mk{stroke:#fff;stroke-opacity:.5;stroke-width:1.2;opacity:.9}&#10;.ls-mt{font:bold 10px system-ui;fill:#fff;text-anchor:middle;dominant-baseline:middle;pointer-events:none}&#10;.ls-g0{stroke:#fff;stroke-opacity:.55;stroke-width:1.2}&#10;.ls-g1{stroke:#fff;stroke-opacity:.2;stroke-width:.6}&#10;.ls-gl{font:10px system-ui;fill:#fff;fill-opacity:.45;text-anchor:end;dominant-baseline:middle}&#10;.ls-tk{stroke:#fff;stroke-opacity:.3}&#10;.ls-tl{font:9px system-ui;fill:#fff;fill-opacity:.45;text-anchor:middle}&#10;.ls-lg{opacity:.85}&#10;.ls-lg2{opacity:.75}&#10;.ls-lt{font:9px system-ui;fill:#fff;fill-opacity:.6;dominant-baseline:middle}&#10;.ls-ax{stroke:#fff;stroke-opacity:.4}&#10;.ls-al{font:10px system-ui;fill:#fff;fill-opacity:.45;text-anchor:middle;dominant-baseline:middle}&#10;.ls-th{font:9px system-ui;fill:#fff;fill-opacity:.28;text-anchor:end}&#10;&lt;/style&gt;&#10;&lt;script&gt;//&lt;![CDATA[&#10;(function(){&#10;// ── Tooltip helpers — tooltip data lives in the SVG's data-tooltipmap&#10;// JSON attribute; clicking a marker renders its tooltip group on demand,&#10;// clicking anywhere else removes it. Works for inline charts and for&#10;// lightbox clones (attributes survive cloneNode) via one delegated listener.&#10;window.lsRemoveTip=function(svg){&#10;var ex=svg.querySelector('[data-active-tip]');&#10;if(ex)ex.parentNode.removeChild(ex);&#10;};&#10;window.lsMoonPath=function(pa,ill){&#10;var e=((pa%360)+360)%360;&#10;var waxing=e&lt;180;&#10;var gibbous=ill&gt;0.5;&#10;var r=46,c=50;&#10;var rx=r*Math.abs(2*ill-1);&#10;var top=c+' '+(c-r),bot=c+' '+(c+r);&#10;var s='&lt;circle cx="50" cy="50" r="46" fill="#3b4358"/&gt;';&#10;if(ill&gt;=0.995){&#10;s+='&lt;circle cx="50" cy="50" r="46" fill="#f2ecd0"/&gt;';&#10;}else if(ill&gt;0.005){&#10;var limb,term;&#10;if(waxing){&#10;limb='M '+top+' A '+r+' '+r+' 0 0 1 '+bot;&#10;term=gibbous?'A '+rx+' '+r+' 0 0 1 '+top:'A '+rx+' '+r+' 0 0 0 '+top;&#10;}else{&#10;limb='M '+top+' A '+r+' '+r+' 0 0 0 '+bot;&#10;term=gibbous?'A '+rx+' '+r+' 0 0 0 '+top:'A '+rx+' '+r+' 0 0 1 '+top;&#10;}&#10;s+='&lt;path d="'+limb+' '+term+' Z" fill="#f2ecd0"/&gt;';&#10;}&#10;s+='&lt;circle cx="50" cy="50" r="46" fill="none" stroke="#828b9c" stroke-width="2"/&gt;';&#10;return s;&#10;};&#10;window.lsShowTip=function(svg,key){&#10;lsRemoveTip(svg);&#10;var map;&#10;try{map=JSON.parse(svg.getAttribute('data-tooltipmap'));}catch(e){return;}&#10;var d=map[key];&#10;if(!d)return;&#10;var ns='http://www.w3.org/2000/svg';&#10;var g=document.createElementNS(ns,'g');&#10;g.setAttribute('data-active-tip',key);&#10;g.setAttribute('pointer-events','none');&#10;var rect=document.createElementNS(ns,'rect');&#10;rect.setAttribute('x',d.x);rect.setAttribute('y',d.y);&#10;rect.setAttribute('width',d.w);rect.setAttribute('height',d.h);&#10;rect.setAttribute('rx','5');&#10;rect.setAttribute('fill','black');rect.setAttribute('fill-opacity','0.62');&#10;rect.setAttribute('stroke',d.a);rect.setAttribute('stroke-width','1.2');rect.setAttribute('stroke-opacity','0.85');&#10;g.appendChild(rect);&#10;if(typeof d.p==='number'&amp;&amp;typeof d.i==='number'){&#10;var sz=Math.floor(d.h/2),m=5;&#10;var mpg=document.createElementNS(ns,'g');&#10;mpg.setAttribute('transform','translate('+(d.x+d.w-sz-m)+','+(d.y+m)+') scale('+(sz/100)+')');&#10;if(d.n){mpg.setAttribute('role','img');mpg.setAttribute('aria-label',d.n);}&#10;mpg.innerHTML=lsMoonPath(d.p,d.i);&#10;g.appendChild(mpg);&#10;}&#10;var lines=d.l.split('\n');&#10;for(var i=0;i&lt;lines.length;i++){&#10;var t=document.createElementNS(ns,'text');&#10;t.setAttribute('x',d.x+10);t.setAttribute('y',d.y+14+i*17);&#10;t.setAttribute('font-size','10');&#10;t.setAttribute('fill',i===0?d.a:'white');&#10;t.setAttribute('fill-opacity','0.95');&#10;t.setAttribute('font-weight',i===0?'bold':'normal');&#10;t.textContent=lines[i];&#10;g.appendChild(t);&#10;}&#10;svg.appendChild(g);&#10;};&#10;// ── Delegated clicks: marker shows its tooltip, background removes it ─&#10;document.addEventListener('click',function(e){&#10;var el=e.target.closest?e.target.closest('[data-tipkey]'):null;&#10;if(el){&#10;var svg=el.closest('svg[data-tooltipmap]');&#10;if(svg){e.stopPropagation();lsShowTip(svg,el.getAttribute('data-tipkey'));}&#10;return;&#10;}&#10;var svg2=e.target.closest?e.target.closest('svg[data-tooltipmap]'):null;&#10;if(svg2)lsRemoveTip(svg2);&#10;});&#10;// ── Lightbox — runs only once per page ───────────────────────────&#10;if(window._lsLbInit)return;&#10;window._lsLbInit=true;&#10;// Overlay — flex column so topBar stays fixed-height and holder fills the rest.&#10;// overflow:hidden on the overlay prevents any body scroll bleed-through.&#10;var ov=document.createElement('div');&#10;ov.style.cssText='display:none;position:fixed;inset:0;z-index:9000;background:#0d1117;flex-direction:column;overflow:hidden;';&#10;// ── Header row ────────────────────────────────────────────────────&#10;// lSpacer mirrors closeBtn's min-width so the titleGroup stays centred.&#10;var topBar=document.createElement('div');&#10;topBar.style.cssText='flex-shrink:0;background:#0d1117;display:flex;align-items:center;gap:10px;padding:8px 14px;';&#10;var lSpacer=document.createElement('div');&#10;lSpacer.style.cssText='flex-shrink:0;min-width:88px;';&#10;topBar.appendChild(lSpacer);&#10;var titleGroup=document.createElement('div');&#10;titleGroup.style.cssText='flex:1;text-align:center;overflow:hidden;pointer-events:none;';&#10;var titleEl=document.createElement('div');&#10;titleEl.style.cssText='color:#e6edf3;font-size:15px;font-family:system-ui,sans-serif;font-weight:600;line-height:1.3;';&#10;var hintEl=document.createElement('div');&#10;hintEl.style.cssText='color:rgba(230,237,243,0.35);font-size:11px;font-family:system-ui,sans-serif;margin-top:2px;line-height:1.4;';&#10;hintEl.textContent='Tatal atau cubit untuk zum · Seret untuk imbas · Klik dua kali untuk tetapkan semula';&#10;titleGroup.appendChild(titleEl);&#10;titleGroup.appendChild(hintEl);&#10;topBar.appendChild(titleGroup);&#10;var closeBtn=document.createElement('button');&#10;closeBtn.textContent='✕ Tutup';&#10;closeBtn.style.cssText='padding:10px 24px;font-size:14px;font-family:system-ui,sans-serif;cursor:pointer;border:1px solid rgba(255,255,255,0.45);border-radius:6px;background:rgba(255,255,255,0.10);color:#e6edf3;flex-shrink:0;touch-action:manipulation;min-height:44px;min-width:88px;';&#10;topBar.appendChild(closeBtn);&#10;// ── Chart area — fills every pixel below the header ───────────────&#10;// min-height:0 is required: flex children default to min-height:auto&#10;// which prevents them shrinking below their content size.&#10;var holder=document.createElement('div');&#10;holder.style.cssText='flex:1;min-height:0;overflow:hidden;';&#10;ov.appendChild(topBar);&#10;ov.appendChild(holder);&#10;document.body.appendChild(ov);&#10;var _savedBodyOverflow='';&#10;function closeLb(){ov.style.display='none';holder.innerHTML='';document.body.style.overflow=_savedBodyOverflow;}&#10;closeBtn.addEventListener('click',closeLb);&#10;ov.addEventListener('click',function(e){if(e.target===ov)closeLb();});&#10;document.addEventListener('keydown',function(e){if(e.key==='Escape'&amp;&amp;ov.style.display!=='none')closeLb();});&#10;// ── Shared pan-state for lightbox mouse drag ──────────────────────&#10;var _lb={panFn:null,endFn:null};&#10;ov.addEventListener('mousemove',function(e){if(_lb.panFn)_lb.panFn(e);});&#10;ov.addEventListener('mouseup',function(){if(_lb.endFn)_lb.endFn();});&#10;ov.addEventListener('mouseleave',function(){if(_lb.endFn)_lb.endFn();});&#10;// ── Zoom / pan initialiser (called for each new lightbox SVG) ─────&#10;function initZoom(svg,W,H){&#10;var vb={x:0,y:0,w:W,h:H};&#10;var isPanning=false,panStart=null,panStartVB=null;&#10;var pinchDist=0,pinchMidX=0,pinchMidY=0,pinchStartVB=null;&#10;// Tap-detection state — a touch that barely moved within 350 ms is a tap.&#10;// initZoom calls e.preventDefault() in touchstart (needed to suppress the&#10;// browser's own pan/zoom), which stops the browser from synthesising a click&#10;// event from touch. We synthesise it ourselves in touchend so that marker&#10;// onclick handlers and the SVG background onclick both work on touchscreens.&#10;// _lastTap* tracks the previous tap for double-tap-to-reset detection&#10;// (Chromium on touch does not fire dblclick from touch events).&#10;var _tapEl=null,_tapT=0,_tapX=0,_tapY=0;&#10;var _lastTapT=0,_lastTapX=0,_lastTapY=0;&#10;function setVB(){svg.setAttribute('viewBox',vb.x+' '+vb.y+' '+vb.w+' '+vb.h);}&#10;// ── Rendering helpers ─────────────────────────────────────────────&#10;// The SVG uses preserveAspectRatio="xMidYMid meet", so the chart content&#10;// is letter-boxed inside the SVG element. Using the SVG element dimensions&#10;// directly (r.width / r.height) for pan calculations produces wildly&#10;// different sensitivities for x vs y on portrait phones (4-5× mismatch).&#10;// The correct divisor for both axes is the render scale:&#10;// renderScale = min(elementW/vbW, elementH/vbH)&#10;// which gives a uniform 1-screen-pixel = 1/renderScale chart-units feel.&#10;// The same correction is needed for zoom cursor anchoring.&#10;function renderScale(r,w,h){return Math.min(r.width/w,r.height/h);}&#10;function contentOff(r,w,h,rs){&#10;return{ox:(r.width-w*rs)/2,oy:(r.height-h*rs)/2};&#10;}&#10;svg.addEventListener('wheel',function(e){&#10;e.preventDefault();e.stopPropagation();&#10;var r=svg.getBoundingClientRect();&#10;var ratio=e.deltaY&gt;0?1.12:1/1.12;&#10;var rs=renderScale(r,vb.w,vb.h);&#10;var off=contentOff(r,vb.w,vb.h,rs);&#10;var nx=(e.clientX-r.left-off.ox)/(vb.w*rs);&#10;var ny=(e.clientY-r.top-off.oy)/(vb.h*rs);&#10;var fx=vb.x+nx*vb.w,fy=vb.y+ny*vb.h;&#10;vb.w*=ratio;vb.h*=ratio;&#10;vb.x=fx-nx*vb.w;vb.y=fy-ny*vb.h;&#10;setVB();&#10;},{passive:false});&#10;svg.addEventListener('mousedown',function(e){&#10;if(e.button!==0)return;&#10;e.preventDefault();&#10;isPanning=true;&#10;panStart={x:e.clientX,y:e.clientY};&#10;panStartVB={x:vb.x,y:vb.y,w:vb.w,h:vb.h};&#10;svg.style.cursor='grabbing';&#10;_lb.panFn=function(ev){&#10;if(!isPanning)return;&#10;var r=svg.getBoundingClientRect();&#10;var rs=renderScale(r,panStartVB.w,panStartVB.h);&#10;vb.x=panStartVB.x-(ev.clientX-panStart.x)/rs;&#10;vb.y=panStartVB.y-(ev.clientY-panStart.y)/rs;&#10;setVB();&#10;};&#10;_lb.endFn=function(){isPanning=false;svg.style.cursor='grab';_lb.panFn=null;_lb.endFn=null;};&#10;});&#10;svg.addEventListener('touchstart',function(e){&#10;e.preventDefault();&#10;if(e.touches.length===1){&#10;isPanning=true;&#10;panStart={x:e.touches[0].clientX,y:e.touches[0].clientY};&#10;panStartVB={x:vb.x,y:vb.y,w:vb.w,h:vb.h};&#10;// Record tap candidate — cleared on significant move or multi-touch&#10;_tapEl=e.target;&#10;_tapT=Date.now();&#10;_tapX=e.touches[0].clientX;&#10;_tapY=e.touches[0].clientY;&#10;}else if(e.touches.length&gt;=2){&#10;isPanning=false;panStart=null;&#10;_tapEl=null;&#10;pinchDist=Math.hypot(e.touches[0].clientX-e.touches[1].clientX,e.touches[0].clientY-e.touches[1].clientY);&#10;pinchMidX=(e.touches[0].clientX+e.touches[1].clientX)/2;&#10;pinchMidY=(e.touches[0].clientY+e.touches[1].clientY)/2;&#10;pinchStartVB={x:vb.x,y:vb.y,w:vb.w,h:vb.h};&#10;}&#10;},{passive:false});&#10;svg.addEventListener('touchmove',function(e){&#10;e.preventDefault();e.stopPropagation();&#10;// Cancel tap if finger moved more than 8 px — this is a pan, not a tap&#10;if(_tapEl&amp;&amp;e.touches.length===1){&#10;var dx=Math.abs(e.touches[0].clientX-_tapX);&#10;var dy=Math.abs(e.touches[0].clientY-_tapY);&#10;if(dx&gt;8||dy&gt;8)_tapEl=null;&#10;}&#10;var r=svg.getBoundingClientRect();&#10;if(e.touches.length===1&amp;&amp;isPanning&amp;&amp;panStart){&#10;var rs=renderScale(r,panStartVB.w,panStartVB.h);&#10;vb.x=panStartVB.x-(e.touches[0].clientX-panStart.x)/rs;&#10;vb.y=panStartVB.y-(e.touches[0].clientY-panStart.y)/rs;&#10;setVB();&#10;}else if(e.touches.length&gt;=2&amp;&amp;pinchDist&gt;0&amp;&amp;pinchStartVB){&#10;var dist=Math.hypot(e.touches[0].clientX-e.touches[1].clientX,e.touches[0].clientY-e.touches[1].clientY);&#10;var midX=(e.touches[0].clientX+e.touches[1].clientX)/2;&#10;var midY=(e.touches[0].clientY+e.touches[1].clientY)/2;&#10;var scale=pinchDist/dist;&#10;var lvb=pinchStartVB;&#10;var rs=renderScale(r,lvb.w,lvb.h);&#10;var off=contentOff(r,lvb.w,lvb.h,rs);&#10;var cw=lvb.w*rs,ch=lvb.h*rs;&#10;var nx=(midX-r.left-off.ox)/cw,ny=(midY-r.top-off.oy)/ch;&#10;var origNx=(pinchMidX-r.left-off.ox)/cw,origNy=(pinchMidY-r.top-off.oy)/ch;&#10;var fx=lvb.x+origNx*lvb.w,fy=lvb.y+origNy*lvb.h;&#10;vb.w=lvb.w*scale;vb.h=lvb.h*scale;&#10;vb.x=fx-nx*vb.w;vb.y=fy-ny*vb.h;&#10;setVB();&#10;}&#10;},{passive:false});&#10;svg.addEventListener('touchend',function(e){&#10;// Synthesise a click on a short tap so marker handlers fire on touchscreens.&#10;// For double-tap: Chromium on touch does not fire dblclick from touch events.&#10;// We detect two taps within 350 ms / 30 px and reset the view instead.&#10;if(_tapEl&amp;&amp;e.touches.length===0&amp;&amp;e.changedTouches.length===1){&#10;var now=Date.now();&#10;var dt=now-_tapT;&#10;if(dt&lt;350){&#10;var tdx=Math.abs(e.changedTouches[0].clientX-_lastTapX);&#10;var tdy=Math.abs(e.changedTouches[0].clientY-_lastTapY);&#10;if(now-_lastTapT&lt;350&amp;&amp;tdx&lt;30&amp;&amp;tdy&lt;30){&#10;// Double-tap detected — reset view (mirrors dblclick handler).&#10;// Clear _lastTapT so a third tap starts a new double-tap window.&#10;_lastTapT=0;&#10;vb={x:0,y:0,w:W,h:H};setVB();&#10;}else{&#10;// Single tap — fire click for tooltip toggle, record for next double-tap check.&#10;_lastTapT=now;&#10;_lastTapX=e.changedTouches[0].clientX;&#10;_lastTapY=e.changedTouches[0].clientY;&#10;_tapEl.dispatchEvent(new MouseEvent('click',{bubbles:true,cancelable:true,view:window}));&#10;}&#10;}&#10;}&#10;_tapEl=null;&#10;if(e.touches.length===0){isPanning=false;panStart=null;}&#10;if(e.touches.length&lt;2){pinchDist=0;pinchStartVB=null;}&#10;});&#10;svg.addEventListener('dblclick',function(){vb={x:0,y:0,w:W,h:H};setVB();});&#10;}&#10;// ── Open lightbox ─────────────────────────────────────────────────&#10;window.lsOpenLightbox=function(svgId,svgW,svgH,chartTitle){&#10;var W=svgW||900,H=svgH||390;&#10;titleEl.textContent=chartTitle||'';&#10;var orig=document.getElementById(svgId);&#10;if(!orig)return;&#10;var clone=orig.cloneNode(true);&#10;clone.querySelectorAll('script').forEach(function(s){s.parentNode.removeChild(s);});&#10;clone.removeAttribute('id');&#10;// width+height 100% fills the holder completely; the SVG's viewBox (managed by&#10;// initZoom) controls which part of the chart coordinate space is visible.&#10;// Changing the viewBox never changes the SVG element's screen size, so zoom and&#10;// pan always use the full screen area below the header — no clipping.&#10;// max-width is reset because the original inline style carries max-width:900px&#10;// which would cap the SVG at its inline-chart width regardless of screen size.&#10;clone.style.maxWidth='none';&#10;clone.style.width='100%';&#10;clone.style.height='100%';&#10;clone.style.touchAction='none';&#10;clone.style.cursor='grab';&#10;holder.innerHTML='';&#10;holder.appendChild(clone);&#10;_savedBodyOverflow=document.body.style.overflow||'';&#10;document.body.style.overflow='hidden';&#10;ov.style.display='flex';&#10;initZoom(clone,W,H);&#10;};&#10;})();&#10;//]]&gt;&lt;/script&gt;&#10;&#10;&lt;h2 class="relative group"&gt;2000-an&#10; &lt;div id="2000-an" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#2000-an" aria-label="Pautan"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&#10;&#10;&#10;&#10;&lt;h3 class="relative group"&gt;Pegunan Bulan Ekstrem&#10; &lt;div id="pegunan-bulan-ekstrem" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#pegunan-bulan-ekstrem" aria-label="Pautan"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;p&gt;&lt;strong&gt;Hemisfera Utara&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Pegunan Bulan — 2010-an</title><link>https://kosmik.my/nebula/ms/lunar-standstills/2010/</link><pubDate>Sat, 03 Jan 2026 00:00:00 +0800</pubDate><guid>https://kosmik.my/nebula/ms/lunar-standstills/2010/</guid><description>&lt;style&gt;&#10;.ls-tbl{display:table;width:100%;overflow:visible}&#10;.ls-tbl td{vertical-align:top}&#10;.ls-moon{display:inline-flex;align-items:center;gap:.55em;text-align:left;vertical-align:middle}&#10;.ls-moon&gt;svg{flex:0 0 auto;display:block}&#10;.ls-moon-info{display:flex;flex-direction:column;line-height:1.3;min-width:0}&#10;.ls-moon-name{font-weight:600;white-space:nowrap}&#10;.ls-moon-pct{font-size:.82em;opacity:.82}&#10;.ls-moon-age{font-size:.78em;opacity:.68;white-space:normal}&#10;.ls-moon-age-lbl{font-weight:600;opacity:.85}&#10;@media(max-width:640px){&#10;.ls-tbl thead{display:none}&#10;.ls-tbl,.ls-tbl tbody,.ls-tbl tr{display:block}&#10;.ls-tbl tr{padding:.3em 0}&#10;.ls-tbl tbody tr{border-top-width:1px;border-top-color:var(--tw-prose-td-borders)}&#10;.ls-tbl tbody tr:first-child{border-top-color:var(--tw-prose-th-borders)}&#10;.ls-tbl tbody tr:last-child{border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}&#10;.ls-tbl td{display:flex;justify-content:space-between;align-items:baseline;padding:3px 0;text-align:right;white-space:normal}&#10;.ls-tbl td::before{content:attr(data-label);flex-shrink:0;text-align:left;font-weight:600;padding-right:.75em;white-space:nowrap;color:var(--tw-prose-headings,currentColor);opacity:.8}&#10; .ls-moon{align-items:center;flex-direction:row-reverse}&#10; .ls-moon-info{align-items:flex-end;text-align:right}&#10; }&#10;/* Chart SVG shared styles — repetitive stroke/font attributes live here&#10; so each marker/grid/legend element carries only its unique values. */&#10;.ls-c{cursor:pointer}&#10;.ls-mk{stroke:#fff;stroke-opacity:.5;stroke-width:1.2;opacity:.9}&#10;.ls-mt{font:bold 10px system-ui;fill:#fff;text-anchor:middle;dominant-baseline:middle;pointer-events:none}&#10;.ls-g0{stroke:#fff;stroke-opacity:.55;stroke-width:1.2}&#10;.ls-g1{stroke:#fff;stroke-opacity:.2;stroke-width:.6}&#10;.ls-gl{font:10px system-ui;fill:#fff;fill-opacity:.45;text-anchor:end;dominant-baseline:middle}&#10;.ls-tk{stroke:#fff;stroke-opacity:.3}&#10;.ls-tl{font:9px system-ui;fill:#fff;fill-opacity:.45;text-anchor:middle}&#10;.ls-lg{opacity:.85}&#10;.ls-lg2{opacity:.75}&#10;.ls-lt{font:9px system-ui;fill:#fff;fill-opacity:.6;dominant-baseline:middle}&#10;.ls-ax{stroke:#fff;stroke-opacity:.4}&#10;.ls-al{font:10px system-ui;fill:#fff;fill-opacity:.45;text-anchor:middle;dominant-baseline:middle}&#10;.ls-th{font:9px system-ui;fill:#fff;fill-opacity:.28;text-anchor:end}&#10;&lt;/style&gt;&#10;&lt;script&gt;//&lt;![CDATA[&#10;(function(){&#10;// ── Tooltip helpers — tooltip data lives in the SVG's data-tooltipmap&#10;// JSON attribute; clicking a marker renders its tooltip group on demand,&#10;// clicking anywhere else removes it. Works for inline charts and for&#10;// lightbox clones (attributes survive cloneNode) via one delegated listener.&#10;window.lsRemoveTip=function(svg){&#10;var ex=svg.querySelector('[data-active-tip]');&#10;if(ex)ex.parentNode.removeChild(ex);&#10;};&#10;window.lsMoonPath=function(pa,ill){&#10;var e=((pa%360)+360)%360;&#10;var waxing=e&lt;180;&#10;var gibbous=ill&gt;0.5;&#10;var r=46,c=50;&#10;var rx=r*Math.abs(2*ill-1);&#10;var top=c+' '+(c-r),bot=c+' '+(c+r);&#10;var s='&lt;circle cx="50" cy="50" r="46" fill="#3b4358"/&gt;';&#10;if(ill&gt;=0.995){&#10;s+='&lt;circle cx="50" cy="50" r="46" fill="#f2ecd0"/&gt;';&#10;}else if(ill&gt;0.005){&#10;var limb,term;&#10;if(waxing){&#10;limb='M '+top+' A '+r+' '+r+' 0 0 1 '+bot;&#10;term=gibbous?'A '+rx+' '+r+' 0 0 1 '+top:'A '+rx+' '+r+' 0 0 0 '+top;&#10;}else{&#10;limb='M '+top+' A '+r+' '+r+' 0 0 0 '+bot;&#10;term=gibbous?'A '+rx+' '+r+' 0 0 0 '+top:'A '+rx+' '+r+' 0 0 1 '+top;&#10;}&#10;s+='&lt;path d="'+limb+' '+term+' Z" fill="#f2ecd0"/&gt;';&#10;}&#10;s+='&lt;circle cx="50" cy="50" r="46" fill="none" stroke="#828b9c" stroke-width="2"/&gt;';&#10;return s;&#10;};&#10;window.lsShowTip=function(svg,key){&#10;lsRemoveTip(svg);&#10;var map;&#10;try{map=JSON.parse(svg.getAttribute('data-tooltipmap'));}catch(e){return;}&#10;var d=map[key];&#10;if(!d)return;&#10;var ns='http://www.w3.org/2000/svg';&#10;var g=document.createElementNS(ns,'g');&#10;g.setAttribute('data-active-tip',key);&#10;g.setAttribute('pointer-events','none');&#10;var rect=document.createElementNS(ns,'rect');&#10;rect.setAttribute('x',d.x);rect.setAttribute('y',d.y);&#10;rect.setAttribute('width',d.w);rect.setAttribute('height',d.h);&#10;rect.setAttribute('rx','5');&#10;rect.setAttribute('fill','black');rect.setAttribute('fill-opacity','0.62');&#10;rect.setAttribute('stroke',d.a);rect.setAttribute('stroke-width','1.2');rect.setAttribute('stroke-opacity','0.85');&#10;g.appendChild(rect);&#10;if(typeof d.p==='number'&amp;&amp;typeof d.i==='number'){&#10;var sz=Math.floor(d.h/2),m=5;&#10;var mpg=document.createElementNS(ns,'g');&#10;mpg.setAttribute('transform','translate('+(d.x+d.w-sz-m)+','+(d.y+m)+') scale('+(sz/100)+')');&#10;if(d.n){mpg.setAttribute('role','img');mpg.setAttribute('aria-label',d.n);}&#10;mpg.innerHTML=lsMoonPath(d.p,d.i);&#10;g.appendChild(mpg);&#10;}&#10;var lines=d.l.split('\n');&#10;for(var i=0;i&lt;lines.length;i++){&#10;var t=document.createElementNS(ns,'text');&#10;t.setAttribute('x',d.x+10);t.setAttribute('y',d.y+14+i*17);&#10;t.setAttribute('font-size','10');&#10;t.setAttribute('fill',i===0?d.a:'white');&#10;t.setAttribute('fill-opacity','0.95');&#10;t.setAttribute('font-weight',i===0?'bold':'normal');&#10;t.textContent=lines[i];&#10;g.appendChild(t);&#10;}&#10;svg.appendChild(g);&#10;};&#10;// ── Delegated clicks: marker shows its tooltip, background removes it ─&#10;document.addEventListener('click',function(e){&#10;var el=e.target.closest?e.target.closest('[data-tipkey]'):null;&#10;if(el){&#10;var svg=el.closest('svg[data-tooltipmap]');&#10;if(svg){e.stopPropagation();lsShowTip(svg,el.getAttribute('data-tipkey'));}&#10;return;&#10;}&#10;var svg2=e.target.closest?e.target.closest('svg[data-tooltipmap]'):null;&#10;if(svg2)lsRemoveTip(svg2);&#10;});&#10;// ── Lightbox — runs only once per page ───────────────────────────&#10;if(window._lsLbInit)return;&#10;window._lsLbInit=true;&#10;// Overlay — flex column so topBar stays fixed-height and holder fills the rest.&#10;// overflow:hidden on the overlay prevents any body scroll bleed-through.&#10;var ov=document.createElement('div');&#10;ov.style.cssText='display:none;position:fixed;inset:0;z-index:9000;background:#0d1117;flex-direction:column;overflow:hidden;';&#10;// ── Header row ────────────────────────────────────────────────────&#10;// lSpacer mirrors closeBtn's min-width so the titleGroup stays centred.&#10;var topBar=document.createElement('div');&#10;topBar.style.cssText='flex-shrink:0;background:#0d1117;display:flex;align-items:center;gap:10px;padding:8px 14px;';&#10;var lSpacer=document.createElement('div');&#10;lSpacer.style.cssText='flex-shrink:0;min-width:88px;';&#10;topBar.appendChild(lSpacer);&#10;var titleGroup=document.createElement('div');&#10;titleGroup.style.cssText='flex:1;text-align:center;overflow:hidden;pointer-events:none;';&#10;var titleEl=document.createElement('div');&#10;titleEl.style.cssText='color:#e6edf3;font-size:15px;font-family:system-ui,sans-serif;font-weight:600;line-height:1.3;';&#10;var hintEl=document.createElement('div');&#10;hintEl.style.cssText='color:rgba(230,237,243,0.35);font-size:11px;font-family:system-ui,sans-serif;margin-top:2px;line-height:1.4;';&#10;hintEl.textContent='Tatal atau cubit untuk zum · Seret untuk imbas · Klik dua kali untuk tetapkan semula';&#10;titleGroup.appendChild(titleEl);&#10;titleGroup.appendChild(hintEl);&#10;topBar.appendChild(titleGroup);&#10;var closeBtn=document.createElement('button');&#10;closeBtn.textContent='✕ Tutup';&#10;closeBtn.style.cssText='padding:10px 24px;font-size:14px;font-family:system-ui,sans-serif;cursor:pointer;border:1px solid rgba(255,255,255,0.45);border-radius:6px;background:rgba(255,255,255,0.10);color:#e6edf3;flex-shrink:0;touch-action:manipulation;min-height:44px;min-width:88px;';&#10;topBar.appendChild(closeBtn);&#10;// ── Chart area — fills every pixel below the header ───────────────&#10;// min-height:0 is required: flex children default to min-height:auto&#10;// which prevents them shrinking below their content size.&#10;var holder=document.createElement('div');&#10;holder.style.cssText='flex:1;min-height:0;overflow:hidden;';&#10;ov.appendChild(topBar);&#10;ov.appendChild(holder);&#10;document.body.appendChild(ov);&#10;var _savedBodyOverflow='';&#10;function closeLb(){ov.style.display='none';holder.innerHTML='';document.body.style.overflow=_savedBodyOverflow;}&#10;closeBtn.addEventListener('click',closeLb);&#10;ov.addEventListener('click',function(e){if(e.target===ov)closeLb();});&#10;document.addEventListener('keydown',function(e){if(e.key==='Escape'&amp;&amp;ov.style.display!=='none')closeLb();});&#10;// ── Shared pan-state for lightbox mouse drag ──────────────────────&#10;var _lb={panFn:null,endFn:null};&#10;ov.addEventListener('mousemove',function(e){if(_lb.panFn)_lb.panFn(e);});&#10;ov.addEventListener('mouseup',function(){if(_lb.endFn)_lb.endFn();});&#10;ov.addEventListener('mouseleave',function(){if(_lb.endFn)_lb.endFn();});&#10;// ── Zoom / pan initialiser (called for each new lightbox SVG) ─────&#10;function initZoom(svg,W,H){&#10;var vb={x:0,y:0,w:W,h:H};&#10;var isPanning=false,panStart=null,panStartVB=null;&#10;var pinchDist=0,pinchMidX=0,pinchMidY=0,pinchStartVB=null;&#10;// Tap-detection state — a touch that barely moved within 350 ms is a tap.&#10;// initZoom calls e.preventDefault() in touchstart (needed to suppress the&#10;// browser's own pan/zoom), which stops the browser from synthesising a click&#10;// event from touch. We synthesise it ourselves in touchend so that marker&#10;// onclick handlers and the SVG background onclick both work on touchscreens.&#10;// _lastTap* tracks the previous tap for double-tap-to-reset detection&#10;// (Chromium on touch does not fire dblclick from touch events).&#10;var _tapEl=null,_tapT=0,_tapX=0,_tapY=0;&#10;var _lastTapT=0,_lastTapX=0,_lastTapY=0;&#10;function setVB(){svg.setAttribute('viewBox',vb.x+' '+vb.y+' '+vb.w+' '+vb.h);}&#10;// ── Rendering helpers ─────────────────────────────────────────────&#10;// The SVG uses preserveAspectRatio="xMidYMid meet", so the chart content&#10;// is letter-boxed inside the SVG element. Using the SVG element dimensions&#10;// directly (r.width / r.height) for pan calculations produces wildly&#10;// different sensitivities for x vs y on portrait phones (4-5× mismatch).&#10;// The correct divisor for both axes is the render scale:&#10;// renderScale = min(elementW/vbW, elementH/vbH)&#10;// which gives a uniform 1-screen-pixel = 1/renderScale chart-units feel.&#10;// The same correction is needed for zoom cursor anchoring.&#10;function renderScale(r,w,h){return Math.min(r.width/w,r.height/h);}&#10;function contentOff(r,w,h,rs){&#10;return{ox:(r.width-w*rs)/2,oy:(r.height-h*rs)/2};&#10;}&#10;svg.addEventListener('wheel',function(e){&#10;e.preventDefault();e.stopPropagation();&#10;var r=svg.getBoundingClientRect();&#10;var ratio=e.deltaY&gt;0?1.12:1/1.12;&#10;var rs=renderScale(r,vb.w,vb.h);&#10;var off=contentOff(r,vb.w,vb.h,rs);&#10;var nx=(e.clientX-r.left-off.ox)/(vb.w*rs);&#10;var ny=(e.clientY-r.top-off.oy)/(vb.h*rs);&#10;var fx=vb.x+nx*vb.w,fy=vb.y+ny*vb.h;&#10;vb.w*=ratio;vb.h*=ratio;&#10;vb.x=fx-nx*vb.w;vb.y=fy-ny*vb.h;&#10;setVB();&#10;},{passive:false});&#10;svg.addEventListener('mousedown',function(e){&#10;if(e.button!==0)return;&#10;e.preventDefault();&#10;isPanning=true;&#10;panStart={x:e.clientX,y:e.clientY};&#10;panStartVB={x:vb.x,y:vb.y,w:vb.w,h:vb.h};&#10;svg.style.cursor='grabbing';&#10;_lb.panFn=function(ev){&#10;if(!isPanning)return;&#10;var r=svg.getBoundingClientRect();&#10;var rs=renderScale(r,panStartVB.w,panStartVB.h);&#10;vb.x=panStartVB.x-(ev.clientX-panStart.x)/rs;&#10;vb.y=panStartVB.y-(ev.clientY-panStart.y)/rs;&#10;setVB();&#10;};&#10;_lb.endFn=function(){isPanning=false;svg.style.cursor='grab';_lb.panFn=null;_lb.endFn=null;};&#10;});&#10;svg.addEventListener('touchstart',function(e){&#10;e.preventDefault();&#10;if(e.touches.length===1){&#10;isPanning=true;&#10;panStart={x:e.touches[0].clientX,y:e.touches[0].clientY};&#10;panStartVB={x:vb.x,y:vb.y,w:vb.w,h:vb.h};&#10;// Record tap candidate — cleared on significant move or multi-touch&#10;_tapEl=e.target;&#10;_tapT=Date.now();&#10;_tapX=e.touches[0].clientX;&#10;_tapY=e.touches[0].clientY;&#10;}else if(e.touches.length&gt;=2){&#10;isPanning=false;panStart=null;&#10;_tapEl=null;&#10;pinchDist=Math.hypot(e.touches[0].clientX-e.touches[1].clientX,e.touches[0].clientY-e.touches[1].clientY);&#10;pinchMidX=(e.touches[0].clientX+e.touches[1].clientX)/2;&#10;pinchMidY=(e.touches[0].clientY+e.touches[1].clientY)/2;&#10;pinchStartVB={x:vb.x,y:vb.y,w:vb.w,h:vb.h};&#10;}&#10;},{passive:false});&#10;svg.addEventListener('touchmove',function(e){&#10;e.preventDefault();e.stopPropagation();&#10;// Cancel tap if finger moved more than 8 px — this is a pan, not a tap&#10;if(_tapEl&amp;&amp;e.touches.length===1){&#10;var dx=Math.abs(e.touches[0].clientX-_tapX);&#10;var dy=Math.abs(e.touches[0].clientY-_tapY);&#10;if(dx&gt;8||dy&gt;8)_tapEl=null;&#10;}&#10;var r=svg.getBoundingClientRect();&#10;if(e.touches.length===1&amp;&amp;isPanning&amp;&amp;panStart){&#10;var rs=renderScale(r,panStartVB.w,panStartVB.h);&#10;vb.x=panStartVB.x-(e.touches[0].clientX-panStart.x)/rs;&#10;vb.y=panStartVB.y-(e.touches[0].clientY-panStart.y)/rs;&#10;setVB();&#10;}else if(e.touches.length&gt;=2&amp;&amp;pinchDist&gt;0&amp;&amp;pinchStartVB){&#10;var dist=Math.hypot(e.touches[0].clientX-e.touches[1].clientX,e.touches[0].clientY-e.touches[1].clientY);&#10;var midX=(e.touches[0].clientX+e.touches[1].clientX)/2;&#10;var midY=(e.touches[0].clientY+e.touches[1].clientY)/2;&#10;var scale=pinchDist/dist;&#10;var lvb=pinchStartVB;&#10;var rs=renderScale(r,lvb.w,lvb.h);&#10;var off=contentOff(r,lvb.w,lvb.h,rs);&#10;var cw=lvb.w*rs,ch=lvb.h*rs;&#10;var nx=(midX-r.left-off.ox)/cw,ny=(midY-r.top-off.oy)/ch;&#10;var origNx=(pinchMidX-r.left-off.ox)/cw,origNy=(pinchMidY-r.top-off.oy)/ch;&#10;var fx=lvb.x+origNx*lvb.w,fy=lvb.y+origNy*lvb.h;&#10;vb.w=lvb.w*scale;vb.h=lvb.h*scale;&#10;vb.x=fx-nx*vb.w;vb.y=fy-ny*vb.h;&#10;setVB();&#10;}&#10;},{passive:false});&#10;svg.addEventListener('touchend',function(e){&#10;// Synthesise a click on a short tap so marker handlers fire on touchscreens.&#10;// For double-tap: Chromium on touch does not fire dblclick from touch events.&#10;// We detect two taps within 350 ms / 30 px and reset the view instead.&#10;if(_tapEl&amp;&amp;e.touches.length===0&amp;&amp;e.changedTouches.length===1){&#10;var now=Date.now();&#10;var dt=now-_tapT;&#10;if(dt&lt;350){&#10;var tdx=Math.abs(e.changedTouches[0].clientX-_lastTapX);&#10;var tdy=Math.abs(e.changedTouches[0].clientY-_lastTapY);&#10;if(now-_lastTapT&lt;350&amp;&amp;tdx&lt;30&amp;&amp;tdy&lt;30){&#10;// Double-tap detected — reset view (mirrors dblclick handler).&#10;// Clear _lastTapT so a third tap starts a new double-tap window.&#10;_lastTapT=0;&#10;vb={x:0,y:0,w:W,h:H};setVB();&#10;}else{&#10;// Single tap — fire click for tooltip toggle, record for next double-tap check.&#10;_lastTapT=now;&#10;_lastTapX=e.changedTouches[0].clientX;&#10;_lastTapY=e.changedTouches[0].clientY;&#10;_tapEl.dispatchEvent(new MouseEvent('click',{bubbles:true,cancelable:true,view:window}));&#10;}&#10;}&#10;}&#10;_tapEl=null;&#10;if(e.touches.length===0){isPanning=false;panStart=null;}&#10;if(e.touches.length&lt;2){pinchDist=0;pinchStartVB=null;}&#10;});&#10;svg.addEventListener('dblclick',function(){vb={x:0,y:0,w:W,h:H};setVB();});&#10;}&#10;// ── Open lightbox ─────────────────────────────────────────────────&#10;window.lsOpenLightbox=function(svgId,svgW,svgH,chartTitle){&#10;var W=svgW||900,H=svgH||390;&#10;titleEl.textContent=chartTitle||'';&#10;var orig=document.getElementById(svgId);&#10;if(!orig)return;&#10;var clone=orig.cloneNode(true);&#10;clone.querySelectorAll('script').forEach(function(s){s.parentNode.removeChild(s);});&#10;clone.removeAttribute('id');&#10;// width+height 100% fills the holder completely; the SVG's viewBox (managed by&#10;// initZoom) controls which part of the chart coordinate space is visible.&#10;// Changing the viewBox never changes the SVG element's screen size, so zoom and&#10;// pan always use the full screen area below the header — no clipping.&#10;// max-width is reset because the original inline style carries max-width:900px&#10;// which would cap the SVG at its inline-chart width regardless of screen size.&#10;clone.style.maxWidth='none';&#10;clone.style.width='100%';&#10;clone.style.height='100%';&#10;clone.style.touchAction='none';&#10;clone.style.cursor='grab';&#10;holder.innerHTML='';&#10;holder.appendChild(clone);&#10;_savedBodyOverflow=document.body.style.overflow||'';&#10;document.body.style.overflow='hidden';&#10;ov.style.display='flex';&#10;initZoom(clone,W,H);&#10;};&#10;})();&#10;//]]&gt;&lt;/script&gt;&#10;&#10;&lt;h2 class="relative group"&gt;2010-an&#10; &lt;div id="2010-an" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#2010-an" aria-label="Pautan"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&#10;&#10;&#10;&#10;&lt;h3 class="relative group"&gt;Pegunan Bulan Ekstrem&#10; &lt;div id="pegunan-bulan-ekstrem" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#pegunan-bulan-ekstrem" aria-label="Pautan"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;p&gt;&lt;strong&gt;Hemisfera Utara&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Pegunan Bulan — 2020-an</title><link>https://kosmik.my/nebula/ms/lunar-standstills/2020/</link><pubDate>Sat, 03 Jan 2026 00:00:00 +0800</pubDate><guid>https://kosmik.my/nebula/ms/lunar-standstills/2020/</guid><description>&lt;style&gt;&#10;.ls-tbl{display:table;width:100%;overflow:visible}&#10;.ls-tbl td{vertical-align:top}&#10;.ls-moon{display:inline-flex;align-items:center;gap:.55em;text-align:left;vertical-align:middle}&#10;.ls-moon&gt;svg{flex:0 0 auto;display:block}&#10;.ls-moon-info{display:flex;flex-direction:column;line-height:1.3;min-width:0}&#10;.ls-moon-name{font-weight:600;white-space:nowrap}&#10;.ls-moon-pct{font-size:.82em;opacity:.82}&#10;.ls-moon-age{font-size:.78em;opacity:.68;white-space:normal}&#10;.ls-moon-age-lbl{font-weight:600;opacity:.85}&#10;@media(max-width:640px){&#10;.ls-tbl thead{display:none}&#10;.ls-tbl,.ls-tbl tbody,.ls-tbl tr{display:block}&#10;.ls-tbl tr{padding:.3em 0}&#10;.ls-tbl tbody tr{border-top-width:1px;border-top-color:var(--tw-prose-td-borders)}&#10;.ls-tbl tbody tr:first-child{border-top-color:var(--tw-prose-th-borders)}&#10;.ls-tbl tbody tr:last-child{border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}&#10;.ls-tbl td{display:flex;justify-content:space-between;align-items:baseline;padding:3px 0;text-align:right;white-space:normal}&#10;.ls-tbl td::before{content:attr(data-label);flex-shrink:0;text-align:left;font-weight:600;padding-right:.75em;white-space:nowrap;color:var(--tw-prose-headings,currentColor);opacity:.8}&#10; .ls-moon{align-items:center;flex-direction:row-reverse}&#10; .ls-moon-info{align-items:flex-end;text-align:right}&#10; }&#10;/* Chart SVG shared styles — repetitive stroke/font attributes live here&#10; so each marker/grid/legend element carries only its unique values. */&#10;.ls-c{cursor:pointer}&#10;.ls-mk{stroke:#fff;stroke-opacity:.5;stroke-width:1.2;opacity:.9}&#10;.ls-mt{font:bold 10px system-ui;fill:#fff;text-anchor:middle;dominant-baseline:middle;pointer-events:none}&#10;.ls-g0{stroke:#fff;stroke-opacity:.55;stroke-width:1.2}&#10;.ls-g1{stroke:#fff;stroke-opacity:.2;stroke-width:.6}&#10;.ls-gl{font:10px system-ui;fill:#fff;fill-opacity:.45;text-anchor:end;dominant-baseline:middle}&#10;.ls-tk{stroke:#fff;stroke-opacity:.3}&#10;.ls-tl{font:9px system-ui;fill:#fff;fill-opacity:.45;text-anchor:middle}&#10;.ls-lg{opacity:.85}&#10;.ls-lg2{opacity:.75}&#10;.ls-lt{font:9px system-ui;fill:#fff;fill-opacity:.6;dominant-baseline:middle}&#10;.ls-ax{stroke:#fff;stroke-opacity:.4}&#10;.ls-al{font:10px system-ui;fill:#fff;fill-opacity:.45;text-anchor:middle;dominant-baseline:middle}&#10;.ls-th{font:9px system-ui;fill:#fff;fill-opacity:.28;text-anchor:end}&#10;&lt;/style&gt;&#10;&lt;script&gt;//&lt;![CDATA[&#10;(function(){&#10;// ── Tooltip helpers — tooltip data lives in the SVG's data-tooltipmap&#10;// JSON attribute; clicking a marker renders its tooltip group on demand,&#10;// clicking anywhere else removes it. Works for inline charts and for&#10;// lightbox clones (attributes survive cloneNode) via one delegated listener.&#10;window.lsRemoveTip=function(svg){&#10;var ex=svg.querySelector('[data-active-tip]');&#10;if(ex)ex.parentNode.removeChild(ex);&#10;};&#10;window.lsMoonPath=function(pa,ill){&#10;var e=((pa%360)+360)%360;&#10;var waxing=e&lt;180;&#10;var gibbous=ill&gt;0.5;&#10;var r=46,c=50;&#10;var rx=r*Math.abs(2*ill-1);&#10;var top=c+' '+(c-r),bot=c+' '+(c+r);&#10;var s='&lt;circle cx="50" cy="50" r="46" fill="#3b4358"/&gt;';&#10;if(ill&gt;=0.995){&#10;s+='&lt;circle cx="50" cy="50" r="46" fill="#f2ecd0"/&gt;';&#10;}else if(ill&gt;0.005){&#10;var limb,term;&#10;if(waxing){&#10;limb='M '+top+' A '+r+' '+r+' 0 0 1 '+bot;&#10;term=gibbous?'A '+rx+' '+r+' 0 0 1 '+top:'A '+rx+' '+r+' 0 0 0 '+top;&#10;}else{&#10;limb='M '+top+' A '+r+' '+r+' 0 0 0 '+bot;&#10;term=gibbous?'A '+rx+' '+r+' 0 0 0 '+top:'A '+rx+' '+r+' 0 0 1 '+top;&#10;}&#10;s+='&lt;path d="'+limb+' '+term+' Z" fill="#f2ecd0"/&gt;';&#10;}&#10;s+='&lt;circle cx="50" cy="50" r="46" fill="none" stroke="#828b9c" stroke-width="2"/&gt;';&#10;return s;&#10;};&#10;window.lsShowTip=function(svg,key){&#10;lsRemoveTip(svg);&#10;var map;&#10;try{map=JSON.parse(svg.getAttribute('data-tooltipmap'));}catch(e){return;}&#10;var d=map[key];&#10;if(!d)return;&#10;var ns='http://www.w3.org/2000/svg';&#10;var g=document.createElementNS(ns,'g');&#10;g.setAttribute('data-active-tip',key);&#10;g.setAttribute('pointer-events','none');&#10;var rect=document.createElementNS(ns,'rect');&#10;rect.setAttribute('x',d.x);rect.setAttribute('y',d.y);&#10;rect.setAttribute('width',d.w);rect.setAttribute('height',d.h);&#10;rect.setAttribute('rx','5');&#10;rect.setAttribute('fill','black');rect.setAttribute('fill-opacity','0.62');&#10;rect.setAttribute('stroke',d.a);rect.setAttribute('stroke-width','1.2');rect.setAttribute('stroke-opacity','0.85');&#10;g.appendChild(rect);&#10;if(typeof d.p==='number'&amp;&amp;typeof d.i==='number'){&#10;var sz=Math.floor(d.h/2),m=5;&#10;var mpg=document.createElementNS(ns,'g');&#10;mpg.setAttribute('transform','translate('+(d.x+d.w-sz-m)+','+(d.y+m)+') scale('+(sz/100)+')');&#10;if(d.n){mpg.setAttribute('role','img');mpg.setAttribute('aria-label',d.n);}&#10;mpg.innerHTML=lsMoonPath(d.p,d.i);&#10;g.appendChild(mpg);&#10;}&#10;var lines=d.l.split('\n');&#10;for(var i=0;i&lt;lines.length;i++){&#10;var t=document.createElementNS(ns,'text');&#10;t.setAttribute('x',d.x+10);t.setAttribute('y',d.y+14+i*17);&#10;t.setAttribute('font-size','10');&#10;t.setAttribute('fill',i===0?d.a:'white');&#10;t.setAttribute('fill-opacity','0.95');&#10;t.setAttribute('font-weight',i===0?'bold':'normal');&#10;t.textContent=lines[i];&#10;g.appendChild(t);&#10;}&#10;svg.appendChild(g);&#10;};&#10;// ── Delegated clicks: marker shows its tooltip, background removes it ─&#10;document.addEventListener('click',function(e){&#10;var el=e.target.closest?e.target.closest('[data-tipkey]'):null;&#10;if(el){&#10;var svg=el.closest('svg[data-tooltipmap]');&#10;if(svg){e.stopPropagation();lsShowTip(svg,el.getAttribute('data-tipkey'));}&#10;return;&#10;}&#10;var svg2=e.target.closest?e.target.closest('svg[data-tooltipmap]'):null;&#10;if(svg2)lsRemoveTip(svg2);&#10;});&#10;// ── Lightbox — runs only once per page ───────────────────────────&#10;if(window._lsLbInit)return;&#10;window._lsLbInit=true;&#10;// Overlay — flex column so topBar stays fixed-height and holder fills the rest.&#10;// overflow:hidden on the overlay prevents any body scroll bleed-through.&#10;var ov=document.createElement('div');&#10;ov.style.cssText='display:none;position:fixed;inset:0;z-index:9000;background:#0d1117;flex-direction:column;overflow:hidden;';&#10;// ── Header row ────────────────────────────────────────────────────&#10;// lSpacer mirrors closeBtn's min-width so the titleGroup stays centred.&#10;var topBar=document.createElement('div');&#10;topBar.style.cssText='flex-shrink:0;background:#0d1117;display:flex;align-items:center;gap:10px;padding:8px 14px;';&#10;var lSpacer=document.createElement('div');&#10;lSpacer.style.cssText='flex-shrink:0;min-width:88px;';&#10;topBar.appendChild(lSpacer);&#10;var titleGroup=document.createElement('div');&#10;titleGroup.style.cssText='flex:1;text-align:center;overflow:hidden;pointer-events:none;';&#10;var titleEl=document.createElement('div');&#10;titleEl.style.cssText='color:#e6edf3;font-size:15px;font-family:system-ui,sans-serif;font-weight:600;line-height:1.3;';&#10;var hintEl=document.createElement('div');&#10;hintEl.style.cssText='color:rgba(230,237,243,0.35);font-size:11px;font-family:system-ui,sans-serif;margin-top:2px;line-height:1.4;';&#10;hintEl.textContent='Tatal atau cubit untuk zum · Seret untuk imbas · Klik dua kali untuk tetapkan semula';&#10;titleGroup.appendChild(titleEl);&#10;titleGroup.appendChild(hintEl);&#10;topBar.appendChild(titleGroup);&#10;var closeBtn=document.createElement('button');&#10;closeBtn.textContent='✕ Tutup';&#10;closeBtn.style.cssText='padding:10px 24px;font-size:14px;font-family:system-ui,sans-serif;cursor:pointer;border:1px solid rgba(255,255,255,0.45);border-radius:6px;background:rgba(255,255,255,0.10);color:#e6edf3;flex-shrink:0;touch-action:manipulation;min-height:44px;min-width:88px;';&#10;topBar.appendChild(closeBtn);&#10;// ── Chart area — fills every pixel below the header ───────────────&#10;// min-height:0 is required: flex children default to min-height:auto&#10;// which prevents them shrinking below their content size.&#10;var holder=document.createElement('div');&#10;holder.style.cssText='flex:1;min-height:0;overflow:hidden;';&#10;ov.appendChild(topBar);&#10;ov.appendChild(holder);&#10;document.body.appendChild(ov);&#10;var _savedBodyOverflow='';&#10;function closeLb(){ov.style.display='none';holder.innerHTML='';document.body.style.overflow=_savedBodyOverflow;}&#10;closeBtn.addEventListener('click',closeLb);&#10;ov.addEventListener('click',function(e){if(e.target===ov)closeLb();});&#10;document.addEventListener('keydown',function(e){if(e.key==='Escape'&amp;&amp;ov.style.display!=='none')closeLb();});&#10;// ── Shared pan-state for lightbox mouse drag ──────────────────────&#10;var _lb={panFn:null,endFn:null};&#10;ov.addEventListener('mousemove',function(e){if(_lb.panFn)_lb.panFn(e);});&#10;ov.addEventListener('mouseup',function(){if(_lb.endFn)_lb.endFn();});&#10;ov.addEventListener('mouseleave',function(){if(_lb.endFn)_lb.endFn();});&#10;// ── Zoom / pan initialiser (called for each new lightbox SVG) ─────&#10;function initZoom(svg,W,H){&#10;var vb={x:0,y:0,w:W,h:H};&#10;var isPanning=false,panStart=null,panStartVB=null;&#10;var pinchDist=0,pinchMidX=0,pinchMidY=0,pinchStartVB=null;&#10;// Tap-detection state — a touch that barely moved within 350 ms is a tap.&#10;// initZoom calls e.preventDefault() in touchstart (needed to suppress the&#10;// browser's own pan/zoom), which stops the browser from synthesising a click&#10;// event from touch. We synthesise it ourselves in touchend so that marker&#10;// onclick handlers and the SVG background onclick both work on touchscreens.&#10;// _lastTap* tracks the previous tap for double-tap-to-reset detection&#10;// (Chromium on touch does not fire dblclick from touch events).&#10;var _tapEl=null,_tapT=0,_tapX=0,_tapY=0;&#10;var _lastTapT=0,_lastTapX=0,_lastTapY=0;&#10;function setVB(){svg.setAttribute('viewBox',vb.x+' '+vb.y+' '+vb.w+' '+vb.h);}&#10;// ── Rendering helpers ─────────────────────────────────────────────&#10;// The SVG uses preserveAspectRatio="xMidYMid meet", so the chart content&#10;// is letter-boxed inside the SVG element. Using the SVG element dimensions&#10;// directly (r.width / r.height) for pan calculations produces wildly&#10;// different sensitivities for x vs y on portrait phones (4-5× mismatch).&#10;// The correct divisor for both axes is the render scale:&#10;// renderScale = min(elementW/vbW, elementH/vbH)&#10;// which gives a uniform 1-screen-pixel = 1/renderScale chart-units feel.&#10;// The same correction is needed for zoom cursor anchoring.&#10;function renderScale(r,w,h){return Math.min(r.width/w,r.height/h);}&#10;function contentOff(r,w,h,rs){&#10;return{ox:(r.width-w*rs)/2,oy:(r.height-h*rs)/2};&#10;}&#10;svg.addEventListener('wheel',function(e){&#10;e.preventDefault();e.stopPropagation();&#10;var r=svg.getBoundingClientRect();&#10;var ratio=e.deltaY&gt;0?1.12:1/1.12;&#10;var rs=renderScale(r,vb.w,vb.h);&#10;var off=contentOff(r,vb.w,vb.h,rs);&#10;var nx=(e.clientX-r.left-off.ox)/(vb.w*rs);&#10;var ny=(e.clientY-r.top-off.oy)/(vb.h*rs);&#10;var fx=vb.x+nx*vb.w,fy=vb.y+ny*vb.h;&#10;vb.w*=ratio;vb.h*=ratio;&#10;vb.x=fx-nx*vb.w;vb.y=fy-ny*vb.h;&#10;setVB();&#10;},{passive:false});&#10;svg.addEventListener('mousedown',function(e){&#10;if(e.button!==0)return;&#10;e.preventDefault();&#10;isPanning=true;&#10;panStart={x:e.clientX,y:e.clientY};&#10;panStartVB={x:vb.x,y:vb.y,w:vb.w,h:vb.h};&#10;svg.style.cursor='grabbing';&#10;_lb.panFn=function(ev){&#10;if(!isPanning)return;&#10;var r=svg.getBoundingClientRect();&#10;var rs=renderScale(r,panStartVB.w,panStartVB.h);&#10;vb.x=panStartVB.x-(ev.clientX-panStart.x)/rs;&#10;vb.y=panStartVB.y-(ev.clientY-panStart.y)/rs;&#10;setVB();&#10;};&#10;_lb.endFn=function(){isPanning=false;svg.style.cursor='grab';_lb.panFn=null;_lb.endFn=null;};&#10;});&#10;svg.addEventListener('touchstart',function(e){&#10;e.preventDefault();&#10;if(e.touches.length===1){&#10;isPanning=true;&#10;panStart={x:e.touches[0].clientX,y:e.touches[0].clientY};&#10;panStartVB={x:vb.x,y:vb.y,w:vb.w,h:vb.h};&#10;// Record tap candidate — cleared on significant move or multi-touch&#10;_tapEl=e.target;&#10;_tapT=Date.now();&#10;_tapX=e.touches[0].clientX;&#10;_tapY=e.touches[0].clientY;&#10;}else if(e.touches.length&gt;=2){&#10;isPanning=false;panStart=null;&#10;_tapEl=null;&#10;pinchDist=Math.hypot(e.touches[0].clientX-e.touches[1].clientX,e.touches[0].clientY-e.touches[1].clientY);&#10;pinchMidX=(e.touches[0].clientX+e.touches[1].clientX)/2;&#10;pinchMidY=(e.touches[0].clientY+e.touches[1].clientY)/2;&#10;pinchStartVB={x:vb.x,y:vb.y,w:vb.w,h:vb.h};&#10;}&#10;},{passive:false});&#10;svg.addEventListener('touchmove',function(e){&#10;e.preventDefault();e.stopPropagation();&#10;// Cancel tap if finger moved more than 8 px — this is a pan, not a tap&#10;if(_tapEl&amp;&amp;e.touches.length===1){&#10;var dx=Math.abs(e.touches[0].clientX-_tapX);&#10;var dy=Math.abs(e.touches[0].clientY-_tapY);&#10;if(dx&gt;8||dy&gt;8)_tapEl=null;&#10;}&#10;var r=svg.getBoundingClientRect();&#10;if(e.touches.length===1&amp;&amp;isPanning&amp;&amp;panStart){&#10;var rs=renderScale(r,panStartVB.w,panStartVB.h);&#10;vb.x=panStartVB.x-(e.touches[0].clientX-panStart.x)/rs;&#10;vb.y=panStartVB.y-(e.touches[0].clientY-panStart.y)/rs;&#10;setVB();&#10;}else if(e.touches.length&gt;=2&amp;&amp;pinchDist&gt;0&amp;&amp;pinchStartVB){&#10;var dist=Math.hypot(e.touches[0].clientX-e.touches[1].clientX,e.touches[0].clientY-e.touches[1].clientY);&#10;var midX=(e.touches[0].clientX+e.touches[1].clientX)/2;&#10;var midY=(e.touches[0].clientY+e.touches[1].clientY)/2;&#10;var scale=pinchDist/dist;&#10;var lvb=pinchStartVB;&#10;var rs=renderScale(r,lvb.w,lvb.h);&#10;var off=contentOff(r,lvb.w,lvb.h,rs);&#10;var cw=lvb.w*rs,ch=lvb.h*rs;&#10;var nx=(midX-r.left-off.ox)/cw,ny=(midY-r.top-off.oy)/ch;&#10;var origNx=(pinchMidX-r.left-off.ox)/cw,origNy=(pinchMidY-r.top-off.oy)/ch;&#10;var fx=lvb.x+origNx*lvb.w,fy=lvb.y+origNy*lvb.h;&#10;vb.w=lvb.w*scale;vb.h=lvb.h*scale;&#10;vb.x=fx-nx*vb.w;vb.y=fy-ny*vb.h;&#10;setVB();&#10;}&#10;},{passive:false});&#10;svg.addEventListener('touchend',function(e){&#10;// Synthesise a click on a short tap so marker handlers fire on touchscreens.&#10;// For double-tap: Chromium on touch does not fire dblclick from touch events.&#10;// We detect two taps within 350 ms / 30 px and reset the view instead.&#10;if(_tapEl&amp;&amp;e.touches.length===0&amp;&amp;e.changedTouches.length===1){&#10;var now=Date.now();&#10;var dt=now-_tapT;&#10;if(dt&lt;350){&#10;var tdx=Math.abs(e.changedTouches[0].clientX-_lastTapX);&#10;var tdy=Math.abs(e.changedTouches[0].clientY-_lastTapY);&#10;if(now-_lastTapT&lt;350&amp;&amp;tdx&lt;30&amp;&amp;tdy&lt;30){&#10;// Double-tap detected — reset view (mirrors dblclick handler).&#10;// Clear _lastTapT so a third tap starts a new double-tap window.&#10;_lastTapT=0;&#10;vb={x:0,y:0,w:W,h:H};setVB();&#10;}else{&#10;// Single tap — fire click for tooltip toggle, record for next double-tap check.&#10;_lastTapT=now;&#10;_lastTapX=e.changedTouches[0].clientX;&#10;_lastTapY=e.changedTouches[0].clientY;&#10;_tapEl.dispatchEvent(new MouseEvent('click',{bubbles:true,cancelable:true,view:window}));&#10;}&#10;}&#10;}&#10;_tapEl=null;&#10;if(e.touches.length===0){isPanning=false;panStart=null;}&#10;if(e.touches.length&lt;2){pinchDist=0;pinchStartVB=null;}&#10;});&#10;svg.addEventListener('dblclick',function(){vb={x:0,y:0,w:W,h:H};setVB();});&#10;}&#10;// ── Open lightbox ─────────────────────────────────────────────────&#10;window.lsOpenLightbox=function(svgId,svgW,svgH,chartTitle){&#10;var W=svgW||900,H=svgH||390;&#10;titleEl.textContent=chartTitle||'';&#10;var orig=document.getElementById(svgId);&#10;if(!orig)return;&#10;var clone=orig.cloneNode(true);&#10;clone.querySelectorAll('script').forEach(function(s){s.parentNode.removeChild(s);});&#10;clone.removeAttribute('id');&#10;// width+height 100% fills the holder completely; the SVG's viewBox (managed by&#10;// initZoom) controls which part of the chart coordinate space is visible.&#10;// Changing the viewBox never changes the SVG element's screen size, so zoom and&#10;// pan always use the full screen area below the header — no clipping.&#10;// max-width is reset because the original inline style carries max-width:900px&#10;// which would cap the SVG at its inline-chart width regardless of screen size.&#10;clone.style.maxWidth='none';&#10;clone.style.width='100%';&#10;clone.style.height='100%';&#10;clone.style.touchAction='none';&#10;clone.style.cursor='grab';&#10;holder.innerHTML='';&#10;holder.appendChild(clone);&#10;_savedBodyOverflow=document.body.style.overflow||'';&#10;document.body.style.overflow='hidden';&#10;ov.style.display='flex';&#10;initZoom(clone,W,H);&#10;};&#10;})();&#10;//]]&gt;&lt;/script&gt;&#10;&#10;&lt;h2 class="relative group"&gt;2020-an&#10; &lt;div id="2020-an" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#2020-an" aria-label="Pautan"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&#10;&#10;&#10;&#10;&lt;h3 class="relative group"&gt;Pegunan Bulan Ekstrem&#10; &lt;div id="pegunan-bulan-ekstrem" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#pegunan-bulan-ekstrem" aria-label="Pautan"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;p&gt;&lt;strong&gt;Hemisfera Utara&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Pegunan Bulan — 2030-an</title><link>https://kosmik.my/nebula/ms/lunar-standstills/2030/</link><pubDate>Sat, 03 Jan 2026 00:00:00 +0800</pubDate><guid>https://kosmik.my/nebula/ms/lunar-standstills/2030/</guid><description>&lt;style&gt;&#10;.ls-tbl{display:table;width:100%;overflow:visible}&#10;.ls-tbl td{vertical-align:top}&#10;.ls-moon{display:inline-flex;align-items:center;gap:.55em;text-align:left;vertical-align:middle}&#10;.ls-moon&gt;svg{flex:0 0 auto;display:block}&#10;.ls-moon-info{display:flex;flex-direction:column;line-height:1.3;min-width:0}&#10;.ls-moon-name{font-weight:600;white-space:nowrap}&#10;.ls-moon-pct{font-size:.82em;opacity:.82}&#10;.ls-moon-age{font-size:.78em;opacity:.68;white-space:normal}&#10;.ls-moon-age-lbl{font-weight:600;opacity:.85}&#10;@media(max-width:640px){&#10;.ls-tbl thead{display:none}&#10;.ls-tbl,.ls-tbl tbody,.ls-tbl tr{display:block}&#10;.ls-tbl tr{padding:.3em 0}&#10;.ls-tbl tbody tr{border-top-width:1px;border-top-color:var(--tw-prose-td-borders)}&#10;.ls-tbl tbody tr:first-child{border-top-color:var(--tw-prose-th-borders)}&#10;.ls-tbl tbody tr:last-child{border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}&#10;.ls-tbl td{display:flex;justify-content:space-between;align-items:baseline;padding:3px 0;text-align:right;white-space:normal}&#10;.ls-tbl td::before{content:attr(data-label);flex-shrink:0;text-align:left;font-weight:600;padding-right:.75em;white-space:nowrap;color:var(--tw-prose-headings,currentColor);opacity:.8}&#10; .ls-moon{align-items:center;flex-direction:row-reverse}&#10; .ls-moon-info{align-items:flex-end;text-align:right}&#10; }&#10;/* Chart SVG shared styles — repetitive stroke/font attributes live here&#10; so each marker/grid/legend element carries only its unique values. */&#10;.ls-c{cursor:pointer}&#10;.ls-mk{stroke:#fff;stroke-opacity:.5;stroke-width:1.2;opacity:.9}&#10;.ls-mt{font:bold 10px system-ui;fill:#fff;text-anchor:middle;dominant-baseline:middle;pointer-events:none}&#10;.ls-g0{stroke:#fff;stroke-opacity:.55;stroke-width:1.2}&#10;.ls-g1{stroke:#fff;stroke-opacity:.2;stroke-width:.6}&#10;.ls-gl{font:10px system-ui;fill:#fff;fill-opacity:.45;text-anchor:end;dominant-baseline:middle}&#10;.ls-tk{stroke:#fff;stroke-opacity:.3}&#10;.ls-tl{font:9px system-ui;fill:#fff;fill-opacity:.45;text-anchor:middle}&#10;.ls-lg{opacity:.85}&#10;.ls-lg2{opacity:.75}&#10;.ls-lt{font:9px system-ui;fill:#fff;fill-opacity:.6;dominant-baseline:middle}&#10;.ls-ax{stroke:#fff;stroke-opacity:.4}&#10;.ls-al{font:10px system-ui;fill:#fff;fill-opacity:.45;text-anchor:middle;dominant-baseline:middle}&#10;.ls-th{font:9px system-ui;fill:#fff;fill-opacity:.28;text-anchor:end}&#10;&lt;/style&gt;&#10;&lt;script&gt;//&lt;![CDATA[&#10;(function(){&#10;// ── Tooltip helpers — tooltip data lives in the SVG's data-tooltipmap&#10;// JSON attribute; clicking a marker renders its tooltip group on demand,&#10;// clicking anywhere else removes it. Works for inline charts and for&#10;// lightbox clones (attributes survive cloneNode) via one delegated listener.&#10;window.lsRemoveTip=function(svg){&#10;var ex=svg.querySelector('[data-active-tip]');&#10;if(ex)ex.parentNode.removeChild(ex);&#10;};&#10;window.lsMoonPath=function(pa,ill){&#10;var e=((pa%360)+360)%360;&#10;var waxing=e&lt;180;&#10;var gibbous=ill&gt;0.5;&#10;var r=46,c=50;&#10;var rx=r*Math.abs(2*ill-1);&#10;var top=c+' '+(c-r),bot=c+' '+(c+r);&#10;var s='&lt;circle cx="50" cy="50" r="46" fill="#3b4358"/&gt;';&#10;if(ill&gt;=0.995){&#10;s+='&lt;circle cx="50" cy="50" r="46" fill="#f2ecd0"/&gt;';&#10;}else if(ill&gt;0.005){&#10;var limb,term;&#10;if(waxing){&#10;limb='M '+top+' A '+r+' '+r+' 0 0 1 '+bot;&#10;term=gibbous?'A '+rx+' '+r+' 0 0 1 '+top:'A '+rx+' '+r+' 0 0 0 '+top;&#10;}else{&#10;limb='M '+top+' A '+r+' '+r+' 0 0 0 '+bot;&#10;term=gibbous?'A '+rx+' '+r+' 0 0 0 '+top:'A '+rx+' '+r+' 0 0 1 '+top;&#10;}&#10;s+='&lt;path d="'+limb+' '+term+' Z" fill="#f2ecd0"/&gt;';&#10;}&#10;s+='&lt;circle cx="50" cy="50" r="46" fill="none" stroke="#828b9c" stroke-width="2"/&gt;';&#10;return s;&#10;};&#10;window.lsShowTip=function(svg,key){&#10;lsRemoveTip(svg);&#10;var map;&#10;try{map=JSON.parse(svg.getAttribute('data-tooltipmap'));}catch(e){return;}&#10;var d=map[key];&#10;if(!d)return;&#10;var ns='http://www.w3.org/2000/svg';&#10;var g=document.createElementNS(ns,'g');&#10;g.setAttribute('data-active-tip',key);&#10;g.setAttribute('pointer-events','none');&#10;var rect=document.createElementNS(ns,'rect');&#10;rect.setAttribute('x',d.x);rect.setAttribute('y',d.y);&#10;rect.setAttribute('width',d.w);rect.setAttribute('height',d.h);&#10;rect.setAttribute('rx','5');&#10;rect.setAttribute('fill','black');rect.setAttribute('fill-opacity','0.62');&#10;rect.setAttribute('stroke',d.a);rect.setAttribute('stroke-width','1.2');rect.setAttribute('stroke-opacity','0.85');&#10;g.appendChild(rect);&#10;if(typeof d.p==='number'&amp;&amp;typeof d.i==='number'){&#10;var sz=Math.floor(d.h/2),m=5;&#10;var mpg=document.createElementNS(ns,'g');&#10;mpg.setAttribute('transform','translate('+(d.x+d.w-sz-m)+','+(d.y+m)+') scale('+(sz/100)+')');&#10;if(d.n){mpg.setAttribute('role','img');mpg.setAttribute('aria-label',d.n);}&#10;mpg.innerHTML=lsMoonPath(d.p,d.i);&#10;g.appendChild(mpg);&#10;}&#10;var lines=d.l.split('\n');&#10;for(var i=0;i&lt;lines.length;i++){&#10;var t=document.createElementNS(ns,'text');&#10;t.setAttribute('x',d.x+10);t.setAttribute('y',d.y+14+i*17);&#10;t.setAttribute('font-size','10');&#10;t.setAttribute('fill',i===0?d.a:'white');&#10;t.setAttribute('fill-opacity','0.95');&#10;t.setAttribute('font-weight',i===0?'bold':'normal');&#10;t.textContent=lines[i];&#10;g.appendChild(t);&#10;}&#10;svg.appendChild(g);&#10;};&#10;// ── Delegated clicks: marker shows its tooltip, background removes it ─&#10;document.addEventListener('click',function(e){&#10;var el=e.target.closest?e.target.closest('[data-tipkey]'):null;&#10;if(el){&#10;var svg=el.closest('svg[data-tooltipmap]');&#10;if(svg){e.stopPropagation();lsShowTip(svg,el.getAttribute('data-tipkey'));}&#10;return;&#10;}&#10;var svg2=e.target.closest?e.target.closest('svg[data-tooltipmap]'):null;&#10;if(svg2)lsRemoveTip(svg2);&#10;});&#10;// ── Lightbox — runs only once per page ───────────────────────────&#10;if(window._lsLbInit)return;&#10;window._lsLbInit=true;&#10;// Overlay — flex column so topBar stays fixed-height and holder fills the rest.&#10;// overflow:hidden on the overlay prevents any body scroll bleed-through.&#10;var ov=document.createElement('div');&#10;ov.style.cssText='display:none;position:fixed;inset:0;z-index:9000;background:#0d1117;flex-direction:column;overflow:hidden;';&#10;// ── Header row ────────────────────────────────────────────────────&#10;// lSpacer mirrors closeBtn's min-width so the titleGroup stays centred.&#10;var topBar=document.createElement('div');&#10;topBar.style.cssText='flex-shrink:0;background:#0d1117;display:flex;align-items:center;gap:10px;padding:8px 14px;';&#10;var lSpacer=document.createElement('div');&#10;lSpacer.style.cssText='flex-shrink:0;min-width:88px;';&#10;topBar.appendChild(lSpacer);&#10;var titleGroup=document.createElement('div');&#10;titleGroup.style.cssText='flex:1;text-align:center;overflow:hidden;pointer-events:none;';&#10;var titleEl=document.createElement('div');&#10;titleEl.style.cssText='color:#e6edf3;font-size:15px;font-family:system-ui,sans-serif;font-weight:600;line-height:1.3;';&#10;var hintEl=document.createElement('div');&#10;hintEl.style.cssText='color:rgba(230,237,243,0.35);font-size:11px;font-family:system-ui,sans-serif;margin-top:2px;line-height:1.4;';&#10;hintEl.textContent='Tatal atau cubit untuk zum · Seret untuk imbas · Klik dua kali untuk tetapkan semula';&#10;titleGroup.appendChild(titleEl);&#10;titleGroup.appendChild(hintEl);&#10;topBar.appendChild(titleGroup);&#10;var closeBtn=document.createElement('button');&#10;closeBtn.textContent='✕ Tutup';&#10;closeBtn.style.cssText='padding:10px 24px;font-size:14px;font-family:system-ui,sans-serif;cursor:pointer;border:1px solid rgba(255,255,255,0.45);border-radius:6px;background:rgba(255,255,255,0.10);color:#e6edf3;flex-shrink:0;touch-action:manipulation;min-height:44px;min-width:88px;';&#10;topBar.appendChild(closeBtn);&#10;// ── Chart area — fills every pixel below the header ───────────────&#10;// min-height:0 is required: flex children default to min-height:auto&#10;// which prevents them shrinking below their content size.&#10;var holder=document.createElement('div');&#10;holder.style.cssText='flex:1;min-height:0;overflow:hidden;';&#10;ov.appendChild(topBar);&#10;ov.appendChild(holder);&#10;document.body.appendChild(ov);&#10;var _savedBodyOverflow='';&#10;function closeLb(){ov.style.display='none';holder.innerHTML='';document.body.style.overflow=_savedBodyOverflow;}&#10;closeBtn.addEventListener('click',closeLb);&#10;ov.addEventListener('click',function(e){if(e.target===ov)closeLb();});&#10;document.addEventListener('keydown',function(e){if(e.key==='Escape'&amp;&amp;ov.style.display!=='none')closeLb();});&#10;// ── Shared pan-state for lightbox mouse drag ──────────────────────&#10;var _lb={panFn:null,endFn:null};&#10;ov.addEventListener('mousemove',function(e){if(_lb.panFn)_lb.panFn(e);});&#10;ov.addEventListener('mouseup',function(){if(_lb.endFn)_lb.endFn();});&#10;ov.addEventListener('mouseleave',function(){if(_lb.endFn)_lb.endFn();});&#10;// ── Zoom / pan initialiser (called for each new lightbox SVG) ─────&#10;function initZoom(svg,W,H){&#10;var vb={x:0,y:0,w:W,h:H};&#10;var isPanning=false,panStart=null,panStartVB=null;&#10;var pinchDist=0,pinchMidX=0,pinchMidY=0,pinchStartVB=null;&#10;// Tap-detection state — a touch that barely moved within 350 ms is a tap.&#10;// initZoom calls e.preventDefault() in touchstart (needed to suppress the&#10;// browser's own pan/zoom), which stops the browser from synthesising a click&#10;// event from touch. We synthesise it ourselves in touchend so that marker&#10;// onclick handlers and the SVG background onclick both work on touchscreens.&#10;// _lastTap* tracks the previous tap for double-tap-to-reset detection&#10;// (Chromium on touch does not fire dblclick from touch events).&#10;var _tapEl=null,_tapT=0,_tapX=0,_tapY=0;&#10;var _lastTapT=0,_lastTapX=0,_lastTapY=0;&#10;function setVB(){svg.setAttribute('viewBox',vb.x+' '+vb.y+' '+vb.w+' '+vb.h);}&#10;// ── Rendering helpers ─────────────────────────────────────────────&#10;// The SVG uses preserveAspectRatio="xMidYMid meet", so the chart content&#10;// is letter-boxed inside the SVG element. Using the SVG element dimensions&#10;// directly (r.width / r.height) for pan calculations produces wildly&#10;// different sensitivities for x vs y on portrait phones (4-5× mismatch).&#10;// The correct divisor for both axes is the render scale:&#10;// renderScale = min(elementW/vbW, elementH/vbH)&#10;// which gives a uniform 1-screen-pixel = 1/renderScale chart-units feel.&#10;// The same correction is needed for zoom cursor anchoring.&#10;function renderScale(r,w,h){return Math.min(r.width/w,r.height/h);}&#10;function contentOff(r,w,h,rs){&#10;return{ox:(r.width-w*rs)/2,oy:(r.height-h*rs)/2};&#10;}&#10;svg.addEventListener('wheel',function(e){&#10;e.preventDefault();e.stopPropagation();&#10;var r=svg.getBoundingClientRect();&#10;var ratio=e.deltaY&gt;0?1.12:1/1.12;&#10;var rs=renderScale(r,vb.w,vb.h);&#10;var off=contentOff(r,vb.w,vb.h,rs);&#10;var nx=(e.clientX-r.left-off.ox)/(vb.w*rs);&#10;var ny=(e.clientY-r.top-off.oy)/(vb.h*rs);&#10;var fx=vb.x+nx*vb.w,fy=vb.y+ny*vb.h;&#10;vb.w*=ratio;vb.h*=ratio;&#10;vb.x=fx-nx*vb.w;vb.y=fy-ny*vb.h;&#10;setVB();&#10;},{passive:false});&#10;svg.addEventListener('mousedown',function(e){&#10;if(e.button!==0)return;&#10;e.preventDefault();&#10;isPanning=true;&#10;panStart={x:e.clientX,y:e.clientY};&#10;panStartVB={x:vb.x,y:vb.y,w:vb.w,h:vb.h};&#10;svg.style.cursor='grabbing';&#10;_lb.panFn=function(ev){&#10;if(!isPanning)return;&#10;var r=svg.getBoundingClientRect();&#10;var rs=renderScale(r,panStartVB.w,panStartVB.h);&#10;vb.x=panStartVB.x-(ev.clientX-panStart.x)/rs;&#10;vb.y=panStartVB.y-(ev.clientY-panStart.y)/rs;&#10;setVB();&#10;};&#10;_lb.endFn=function(){isPanning=false;svg.style.cursor='grab';_lb.panFn=null;_lb.endFn=null;};&#10;});&#10;svg.addEventListener('touchstart',function(e){&#10;e.preventDefault();&#10;if(e.touches.length===1){&#10;isPanning=true;&#10;panStart={x:e.touches[0].clientX,y:e.touches[0].clientY};&#10;panStartVB={x:vb.x,y:vb.y,w:vb.w,h:vb.h};&#10;// Record tap candidate — cleared on significant move or multi-touch&#10;_tapEl=e.target;&#10;_tapT=Date.now();&#10;_tapX=e.touches[0].clientX;&#10;_tapY=e.touches[0].clientY;&#10;}else if(e.touches.length&gt;=2){&#10;isPanning=false;panStart=null;&#10;_tapEl=null;&#10;pinchDist=Math.hypot(e.touches[0].clientX-e.touches[1].clientX,e.touches[0].clientY-e.touches[1].clientY);&#10;pinchMidX=(e.touches[0].clientX+e.touches[1].clientX)/2;&#10;pinchMidY=(e.touches[0].clientY+e.touches[1].clientY)/2;&#10;pinchStartVB={x:vb.x,y:vb.y,w:vb.w,h:vb.h};&#10;}&#10;},{passive:false});&#10;svg.addEventListener('touchmove',function(e){&#10;e.preventDefault();e.stopPropagation();&#10;// Cancel tap if finger moved more than 8 px — this is a pan, not a tap&#10;if(_tapEl&amp;&amp;e.touches.length===1){&#10;var dx=Math.abs(e.touches[0].clientX-_tapX);&#10;var dy=Math.abs(e.touches[0].clientY-_tapY);&#10;if(dx&gt;8||dy&gt;8)_tapEl=null;&#10;}&#10;var r=svg.getBoundingClientRect();&#10;if(e.touches.length===1&amp;&amp;isPanning&amp;&amp;panStart){&#10;var rs=renderScale(r,panStartVB.w,panStartVB.h);&#10;vb.x=panStartVB.x-(e.touches[0].clientX-panStart.x)/rs;&#10;vb.y=panStartVB.y-(e.touches[0].clientY-panStart.y)/rs;&#10;setVB();&#10;}else if(e.touches.length&gt;=2&amp;&amp;pinchDist&gt;0&amp;&amp;pinchStartVB){&#10;var dist=Math.hypot(e.touches[0].clientX-e.touches[1].clientX,e.touches[0].clientY-e.touches[1].clientY);&#10;var midX=(e.touches[0].clientX+e.touches[1].clientX)/2;&#10;var midY=(e.touches[0].clientY+e.touches[1].clientY)/2;&#10;var scale=pinchDist/dist;&#10;var lvb=pinchStartVB;&#10;var rs=renderScale(r,lvb.w,lvb.h);&#10;var off=contentOff(r,lvb.w,lvb.h,rs);&#10;var cw=lvb.w*rs,ch=lvb.h*rs;&#10;var nx=(midX-r.left-off.ox)/cw,ny=(midY-r.top-off.oy)/ch;&#10;var origNx=(pinchMidX-r.left-off.ox)/cw,origNy=(pinchMidY-r.top-off.oy)/ch;&#10;var fx=lvb.x+origNx*lvb.w,fy=lvb.y+origNy*lvb.h;&#10;vb.w=lvb.w*scale;vb.h=lvb.h*scale;&#10;vb.x=fx-nx*vb.w;vb.y=fy-ny*vb.h;&#10;setVB();&#10;}&#10;},{passive:false});&#10;svg.addEventListener('touchend',function(e){&#10;// Synthesise a click on a short tap so marker handlers fire on touchscreens.&#10;// For double-tap: Chromium on touch does not fire dblclick from touch events.&#10;// We detect two taps within 350 ms / 30 px and reset the view instead.&#10;if(_tapEl&amp;&amp;e.touches.length===0&amp;&amp;e.changedTouches.length===1){&#10;var now=Date.now();&#10;var dt=now-_tapT;&#10;if(dt&lt;350){&#10;var tdx=Math.abs(e.changedTouches[0].clientX-_lastTapX);&#10;var tdy=Math.abs(e.changedTouches[0].clientY-_lastTapY);&#10;if(now-_lastTapT&lt;350&amp;&amp;tdx&lt;30&amp;&amp;tdy&lt;30){&#10;// Double-tap detected — reset view (mirrors dblclick handler).&#10;// Clear _lastTapT so a third tap starts a new double-tap window.&#10;_lastTapT=0;&#10;vb={x:0,y:0,w:W,h:H};setVB();&#10;}else{&#10;// Single tap — fire click for tooltip toggle, record for next double-tap check.&#10;_lastTapT=now;&#10;_lastTapX=e.changedTouches[0].clientX;&#10;_lastTapY=e.changedTouches[0].clientY;&#10;_tapEl.dispatchEvent(new MouseEvent('click',{bubbles:true,cancelable:true,view:window}));&#10;}&#10;}&#10;}&#10;_tapEl=null;&#10;if(e.touches.length===0){isPanning=false;panStart=null;}&#10;if(e.touches.length&lt;2){pinchDist=0;pinchStartVB=null;}&#10;});&#10;svg.addEventListener('dblclick',function(){vb={x:0,y:0,w:W,h:H};setVB();});&#10;}&#10;// ── Open lightbox ─────────────────────────────────────────────────&#10;window.lsOpenLightbox=function(svgId,svgW,svgH,chartTitle){&#10;var W=svgW||900,H=svgH||390;&#10;titleEl.textContent=chartTitle||'';&#10;var orig=document.getElementById(svgId);&#10;if(!orig)return;&#10;var clone=orig.cloneNode(true);&#10;clone.querySelectorAll('script').forEach(function(s){s.parentNode.removeChild(s);});&#10;clone.removeAttribute('id');&#10;// width+height 100% fills the holder completely; the SVG's viewBox (managed by&#10;// initZoom) controls which part of the chart coordinate space is visible.&#10;// Changing the viewBox never changes the SVG element's screen size, so zoom and&#10;// pan always use the full screen area below the header — no clipping.&#10;// max-width is reset because the original inline style carries max-width:900px&#10;// which would cap the SVG at its inline-chart width regardless of screen size.&#10;clone.style.maxWidth='none';&#10;clone.style.width='100%';&#10;clone.style.height='100%';&#10;clone.style.touchAction='none';&#10;clone.style.cursor='grab';&#10;holder.innerHTML='';&#10;holder.appendChild(clone);&#10;_savedBodyOverflow=document.body.style.overflow||'';&#10;document.body.style.overflow='hidden';&#10;ov.style.display='flex';&#10;initZoom(clone,W,H);&#10;};&#10;})();&#10;//]]&gt;&lt;/script&gt;&#10;&#10;&lt;h2 class="relative group"&gt;2030-an&#10; &lt;div id="2030-an" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#2030-an" aria-label="Pautan"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&#10;&#10;&#10;&#10;&lt;h3 class="relative group"&gt;Pegunan Bulan Ekstrem&#10; &lt;div id="pegunan-bulan-ekstrem" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#pegunan-bulan-ekstrem" aria-label="Pautan"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;p&gt;&lt;strong&gt;Hemisfera Utara&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Pegunan Bulan — 2040-an</title><link>https://kosmik.my/nebula/ms/lunar-standstills/2040/</link><pubDate>Sat, 03 Jan 2026 00:00:00 +0800</pubDate><guid>https://kosmik.my/nebula/ms/lunar-standstills/2040/</guid><description>&lt;style&gt;&#10;.ls-tbl{display:table;width:100%;overflow:visible}&#10;.ls-tbl td{vertical-align:top}&#10;.ls-moon{display:inline-flex;align-items:center;gap:.55em;text-align:left;vertical-align:middle}&#10;.ls-moon&gt;svg{flex:0 0 auto;display:block}&#10;.ls-moon-info{display:flex;flex-direction:column;line-height:1.3;min-width:0}&#10;.ls-moon-name{font-weight:600;white-space:nowrap}&#10;.ls-moon-pct{font-size:.82em;opacity:.82}&#10;.ls-moon-age{font-size:.78em;opacity:.68;white-space:normal}&#10;.ls-moon-age-lbl{font-weight:600;opacity:.85}&#10;@media(max-width:640px){&#10;.ls-tbl thead{display:none}&#10;.ls-tbl,.ls-tbl tbody,.ls-tbl tr{display:block}&#10;.ls-tbl tr{padding:.3em 0}&#10;.ls-tbl tbody tr{border-top-width:1px;border-top-color:var(--tw-prose-td-borders)}&#10;.ls-tbl tbody tr:first-child{border-top-color:var(--tw-prose-th-borders)}&#10;.ls-tbl tbody tr:last-child{border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}&#10;.ls-tbl td{display:flex;justify-content:space-between;align-items:baseline;padding:3px 0;text-align:right;white-space:normal}&#10;.ls-tbl td::before{content:attr(data-label);flex-shrink:0;text-align:left;font-weight:600;padding-right:.75em;white-space:nowrap;color:var(--tw-prose-headings,currentColor);opacity:.8}&#10; .ls-moon{align-items:center;flex-direction:row-reverse}&#10; .ls-moon-info{align-items:flex-end;text-align:right}&#10; }&#10;/* Chart SVG shared styles — repetitive stroke/font attributes live here&#10; so each marker/grid/legend element carries only its unique values. */&#10;.ls-c{cursor:pointer}&#10;.ls-mk{stroke:#fff;stroke-opacity:.5;stroke-width:1.2;opacity:.9}&#10;.ls-mt{font:bold 10px system-ui;fill:#fff;text-anchor:middle;dominant-baseline:middle;pointer-events:none}&#10;.ls-g0{stroke:#fff;stroke-opacity:.55;stroke-width:1.2}&#10;.ls-g1{stroke:#fff;stroke-opacity:.2;stroke-width:.6}&#10;.ls-gl{font:10px system-ui;fill:#fff;fill-opacity:.45;text-anchor:end;dominant-baseline:middle}&#10;.ls-tk{stroke:#fff;stroke-opacity:.3}&#10;.ls-tl{font:9px system-ui;fill:#fff;fill-opacity:.45;text-anchor:middle}&#10;.ls-lg{opacity:.85}&#10;.ls-lg2{opacity:.75}&#10;.ls-lt{font:9px system-ui;fill:#fff;fill-opacity:.6;dominant-baseline:middle}&#10;.ls-ax{stroke:#fff;stroke-opacity:.4}&#10;.ls-al{font:10px system-ui;fill:#fff;fill-opacity:.45;text-anchor:middle;dominant-baseline:middle}&#10;.ls-th{font:9px system-ui;fill:#fff;fill-opacity:.28;text-anchor:end}&#10;&lt;/style&gt;&#10;&lt;script&gt;//&lt;![CDATA[&#10;(function(){&#10;// ── Tooltip helpers — tooltip data lives in the SVG's data-tooltipmap&#10;// JSON attribute; clicking a marker renders its tooltip group on demand,&#10;// clicking anywhere else removes it. Works for inline charts and for&#10;// lightbox clones (attributes survive cloneNode) via one delegated listener.&#10;window.lsRemoveTip=function(svg){&#10;var ex=svg.querySelector('[data-active-tip]');&#10;if(ex)ex.parentNode.removeChild(ex);&#10;};&#10;window.lsMoonPath=function(pa,ill){&#10;var e=((pa%360)+360)%360;&#10;var waxing=e&lt;180;&#10;var gibbous=ill&gt;0.5;&#10;var r=46,c=50;&#10;var rx=r*Math.abs(2*ill-1);&#10;var top=c+' '+(c-r),bot=c+' '+(c+r);&#10;var s='&lt;circle cx="50" cy="50" r="46" fill="#3b4358"/&gt;';&#10;if(ill&gt;=0.995){&#10;s+='&lt;circle cx="50" cy="50" r="46" fill="#f2ecd0"/&gt;';&#10;}else if(ill&gt;0.005){&#10;var limb,term;&#10;if(waxing){&#10;limb='M '+top+' A '+r+' '+r+' 0 0 1 '+bot;&#10;term=gibbous?'A '+rx+' '+r+' 0 0 1 '+top:'A '+rx+' '+r+' 0 0 0 '+top;&#10;}else{&#10;limb='M '+top+' A '+r+' '+r+' 0 0 0 '+bot;&#10;term=gibbous?'A '+rx+' '+r+' 0 0 0 '+top:'A '+rx+' '+r+' 0 0 1 '+top;&#10;}&#10;s+='&lt;path d="'+limb+' '+term+' Z" fill="#f2ecd0"/&gt;';&#10;}&#10;s+='&lt;circle cx="50" cy="50" r="46" fill="none" stroke="#828b9c" stroke-width="2"/&gt;';&#10;return s;&#10;};&#10;window.lsShowTip=function(svg,key){&#10;lsRemoveTip(svg);&#10;var map;&#10;try{map=JSON.parse(svg.getAttribute('data-tooltipmap'));}catch(e){return;}&#10;var d=map[key];&#10;if(!d)return;&#10;var ns='http://www.w3.org/2000/svg';&#10;var g=document.createElementNS(ns,'g');&#10;g.setAttribute('data-active-tip',key);&#10;g.setAttribute('pointer-events','none');&#10;var rect=document.createElementNS(ns,'rect');&#10;rect.setAttribute('x',d.x);rect.setAttribute('y',d.y);&#10;rect.setAttribute('width',d.w);rect.setAttribute('height',d.h);&#10;rect.setAttribute('rx','5');&#10;rect.setAttribute('fill','black');rect.setAttribute('fill-opacity','0.62');&#10;rect.setAttribute('stroke',d.a);rect.setAttribute('stroke-width','1.2');rect.setAttribute('stroke-opacity','0.85');&#10;g.appendChild(rect);&#10;if(typeof d.p==='number'&amp;&amp;typeof d.i==='number'){&#10;var sz=Math.floor(d.h/2),m=5;&#10;var mpg=document.createElementNS(ns,'g');&#10;mpg.setAttribute('transform','translate('+(d.x+d.w-sz-m)+','+(d.y+m)+') scale('+(sz/100)+')');&#10;if(d.n){mpg.setAttribute('role','img');mpg.setAttribute('aria-label',d.n);}&#10;mpg.innerHTML=lsMoonPath(d.p,d.i);&#10;g.appendChild(mpg);&#10;}&#10;var lines=d.l.split('\n');&#10;for(var i=0;i&lt;lines.length;i++){&#10;var t=document.createElementNS(ns,'text');&#10;t.setAttribute('x',d.x+10);t.setAttribute('y',d.y+14+i*17);&#10;t.setAttribute('font-size','10');&#10;t.setAttribute('fill',i===0?d.a:'white');&#10;t.setAttribute('fill-opacity','0.95');&#10;t.setAttribute('font-weight',i===0?'bold':'normal');&#10;t.textContent=lines[i];&#10;g.appendChild(t);&#10;}&#10;svg.appendChild(g);&#10;};&#10;// ── Delegated clicks: marker shows its tooltip, background removes it ─&#10;document.addEventListener('click',function(e){&#10;var el=e.target.closest?e.target.closest('[data-tipkey]'):null;&#10;if(el){&#10;var svg=el.closest('svg[data-tooltipmap]');&#10;if(svg){e.stopPropagation();lsShowTip(svg,el.getAttribute('data-tipkey'));}&#10;return;&#10;}&#10;var svg2=e.target.closest?e.target.closest('svg[data-tooltipmap]'):null;&#10;if(svg2)lsRemoveTip(svg2);&#10;});&#10;// ── Lightbox — runs only once per page ───────────────────────────&#10;if(window._lsLbInit)return;&#10;window._lsLbInit=true;&#10;// Overlay — flex column so topBar stays fixed-height and holder fills the rest.&#10;// overflow:hidden on the overlay prevents any body scroll bleed-through.&#10;var ov=document.createElement('div');&#10;ov.style.cssText='display:none;position:fixed;inset:0;z-index:9000;background:#0d1117;flex-direction:column;overflow:hidden;';&#10;// ── Header row ────────────────────────────────────────────────────&#10;// lSpacer mirrors closeBtn's min-width so the titleGroup stays centred.&#10;var topBar=document.createElement('div');&#10;topBar.style.cssText='flex-shrink:0;background:#0d1117;display:flex;align-items:center;gap:10px;padding:8px 14px;';&#10;var lSpacer=document.createElement('div');&#10;lSpacer.style.cssText='flex-shrink:0;min-width:88px;';&#10;topBar.appendChild(lSpacer);&#10;var titleGroup=document.createElement('div');&#10;titleGroup.style.cssText='flex:1;text-align:center;overflow:hidden;pointer-events:none;';&#10;var titleEl=document.createElement('div');&#10;titleEl.style.cssText='color:#e6edf3;font-size:15px;font-family:system-ui,sans-serif;font-weight:600;line-height:1.3;';&#10;var hintEl=document.createElement('div');&#10;hintEl.style.cssText='color:rgba(230,237,243,0.35);font-size:11px;font-family:system-ui,sans-serif;margin-top:2px;line-height:1.4;';&#10;hintEl.textContent='Tatal atau cubit untuk zum · Seret untuk imbas · Klik dua kali untuk tetapkan semula';&#10;titleGroup.appendChild(titleEl);&#10;titleGroup.appendChild(hintEl);&#10;topBar.appendChild(titleGroup);&#10;var closeBtn=document.createElement('button');&#10;closeBtn.textContent='✕ Tutup';&#10;closeBtn.style.cssText='padding:10px 24px;font-size:14px;font-family:system-ui,sans-serif;cursor:pointer;border:1px solid rgba(255,255,255,0.45);border-radius:6px;background:rgba(255,255,255,0.10);color:#e6edf3;flex-shrink:0;touch-action:manipulation;min-height:44px;min-width:88px;';&#10;topBar.appendChild(closeBtn);&#10;// ── Chart area — fills every pixel below the header ───────────────&#10;// min-height:0 is required: flex children default to min-height:auto&#10;// which prevents them shrinking below their content size.&#10;var holder=document.createElement('div');&#10;holder.style.cssText='flex:1;min-height:0;overflow:hidden;';&#10;ov.appendChild(topBar);&#10;ov.appendChild(holder);&#10;document.body.appendChild(ov);&#10;var _savedBodyOverflow='';&#10;function closeLb(){ov.style.display='none';holder.innerHTML='';document.body.style.overflow=_savedBodyOverflow;}&#10;closeBtn.addEventListener('click',closeLb);&#10;ov.addEventListener('click',function(e){if(e.target===ov)closeLb();});&#10;document.addEventListener('keydown',function(e){if(e.key==='Escape'&amp;&amp;ov.style.display!=='none')closeLb();});&#10;// ── Shared pan-state for lightbox mouse drag ──────────────────────&#10;var _lb={panFn:null,endFn:null};&#10;ov.addEventListener('mousemove',function(e){if(_lb.panFn)_lb.panFn(e);});&#10;ov.addEventListener('mouseup',function(){if(_lb.endFn)_lb.endFn();});&#10;ov.addEventListener('mouseleave',function(){if(_lb.endFn)_lb.endFn();});&#10;// ── Zoom / pan initialiser (called for each new lightbox SVG) ─────&#10;function initZoom(svg,W,H){&#10;var vb={x:0,y:0,w:W,h:H};&#10;var isPanning=false,panStart=null,panStartVB=null;&#10;var pinchDist=0,pinchMidX=0,pinchMidY=0,pinchStartVB=null;&#10;// Tap-detection state — a touch that barely moved within 350 ms is a tap.&#10;// initZoom calls e.preventDefault() in touchstart (needed to suppress the&#10;// browser's own pan/zoom), which stops the browser from synthesising a click&#10;// event from touch. We synthesise it ourselves in touchend so that marker&#10;// onclick handlers and the SVG background onclick both work on touchscreens.&#10;// _lastTap* tracks the previous tap for double-tap-to-reset detection&#10;// (Chromium on touch does not fire dblclick from touch events).&#10;var _tapEl=null,_tapT=0,_tapX=0,_tapY=0;&#10;var _lastTapT=0,_lastTapX=0,_lastTapY=0;&#10;function setVB(){svg.setAttribute('viewBox',vb.x+' '+vb.y+' '+vb.w+' '+vb.h);}&#10;// ── Rendering helpers ─────────────────────────────────────────────&#10;// The SVG uses preserveAspectRatio="xMidYMid meet", so the chart content&#10;// is letter-boxed inside the SVG element. Using the SVG element dimensions&#10;// directly (r.width / r.height) for pan calculations produces wildly&#10;// different sensitivities for x vs y on portrait phones (4-5× mismatch).&#10;// The correct divisor for both axes is the render scale:&#10;// renderScale = min(elementW/vbW, elementH/vbH)&#10;// which gives a uniform 1-screen-pixel = 1/renderScale chart-units feel.&#10;// The same correction is needed for zoom cursor anchoring.&#10;function renderScale(r,w,h){return Math.min(r.width/w,r.height/h);}&#10;function contentOff(r,w,h,rs){&#10;return{ox:(r.width-w*rs)/2,oy:(r.height-h*rs)/2};&#10;}&#10;svg.addEventListener('wheel',function(e){&#10;e.preventDefault();e.stopPropagation();&#10;var r=svg.getBoundingClientRect();&#10;var ratio=e.deltaY&gt;0?1.12:1/1.12;&#10;var rs=renderScale(r,vb.w,vb.h);&#10;var off=contentOff(r,vb.w,vb.h,rs);&#10;var nx=(e.clientX-r.left-off.ox)/(vb.w*rs);&#10;var ny=(e.clientY-r.top-off.oy)/(vb.h*rs);&#10;var fx=vb.x+nx*vb.w,fy=vb.y+ny*vb.h;&#10;vb.w*=ratio;vb.h*=ratio;&#10;vb.x=fx-nx*vb.w;vb.y=fy-ny*vb.h;&#10;setVB();&#10;},{passive:false});&#10;svg.addEventListener('mousedown',function(e){&#10;if(e.button!==0)return;&#10;e.preventDefault();&#10;isPanning=true;&#10;panStart={x:e.clientX,y:e.clientY};&#10;panStartVB={x:vb.x,y:vb.y,w:vb.w,h:vb.h};&#10;svg.style.cursor='grabbing';&#10;_lb.panFn=function(ev){&#10;if(!isPanning)return;&#10;var r=svg.getBoundingClientRect();&#10;var rs=renderScale(r,panStartVB.w,panStartVB.h);&#10;vb.x=panStartVB.x-(ev.clientX-panStart.x)/rs;&#10;vb.y=panStartVB.y-(ev.clientY-panStart.y)/rs;&#10;setVB();&#10;};&#10;_lb.endFn=function(){isPanning=false;svg.style.cursor='grab';_lb.panFn=null;_lb.endFn=null;};&#10;});&#10;svg.addEventListener('touchstart',function(e){&#10;e.preventDefault();&#10;if(e.touches.length===1){&#10;isPanning=true;&#10;panStart={x:e.touches[0].clientX,y:e.touches[0].clientY};&#10;panStartVB={x:vb.x,y:vb.y,w:vb.w,h:vb.h};&#10;// Record tap candidate — cleared on significant move or multi-touch&#10;_tapEl=e.target;&#10;_tapT=Date.now();&#10;_tapX=e.touches[0].clientX;&#10;_tapY=e.touches[0].clientY;&#10;}else if(e.touches.length&gt;=2){&#10;isPanning=false;panStart=null;&#10;_tapEl=null;&#10;pinchDist=Math.hypot(e.touches[0].clientX-e.touches[1].clientX,e.touches[0].clientY-e.touches[1].clientY);&#10;pinchMidX=(e.touches[0].clientX+e.touches[1].clientX)/2;&#10;pinchMidY=(e.touches[0].clientY+e.touches[1].clientY)/2;&#10;pinchStartVB={x:vb.x,y:vb.y,w:vb.w,h:vb.h};&#10;}&#10;},{passive:false});&#10;svg.addEventListener('touchmove',function(e){&#10;e.preventDefault();e.stopPropagation();&#10;// Cancel tap if finger moved more than 8 px — this is a pan, not a tap&#10;if(_tapEl&amp;&amp;e.touches.length===1){&#10;var dx=Math.abs(e.touches[0].clientX-_tapX);&#10;var dy=Math.abs(e.touches[0].clientY-_tapY);&#10;if(dx&gt;8||dy&gt;8)_tapEl=null;&#10;}&#10;var r=svg.getBoundingClientRect();&#10;if(e.touches.length===1&amp;&amp;isPanning&amp;&amp;panStart){&#10;var rs=renderScale(r,panStartVB.w,panStartVB.h);&#10;vb.x=panStartVB.x-(e.touches[0].clientX-panStart.x)/rs;&#10;vb.y=panStartVB.y-(e.touches[0].clientY-panStart.y)/rs;&#10;setVB();&#10;}else if(e.touches.length&gt;=2&amp;&amp;pinchDist&gt;0&amp;&amp;pinchStartVB){&#10;var dist=Math.hypot(e.touches[0].clientX-e.touches[1].clientX,e.touches[0].clientY-e.touches[1].clientY);&#10;var midX=(e.touches[0].clientX+e.touches[1].clientX)/2;&#10;var midY=(e.touches[0].clientY+e.touches[1].clientY)/2;&#10;var scale=pinchDist/dist;&#10;var lvb=pinchStartVB;&#10;var rs=renderScale(r,lvb.w,lvb.h);&#10;var off=contentOff(r,lvb.w,lvb.h,rs);&#10;var cw=lvb.w*rs,ch=lvb.h*rs;&#10;var nx=(midX-r.left-off.ox)/cw,ny=(midY-r.top-off.oy)/ch;&#10;var origNx=(pinchMidX-r.left-off.ox)/cw,origNy=(pinchMidY-r.top-off.oy)/ch;&#10;var fx=lvb.x+origNx*lvb.w,fy=lvb.y+origNy*lvb.h;&#10;vb.w=lvb.w*scale;vb.h=lvb.h*scale;&#10;vb.x=fx-nx*vb.w;vb.y=fy-ny*vb.h;&#10;setVB();&#10;}&#10;},{passive:false});&#10;svg.addEventListener('touchend',function(e){&#10;// Synthesise a click on a short tap so marker handlers fire on touchscreens.&#10;// For double-tap: Chromium on touch does not fire dblclick from touch events.&#10;// We detect two taps within 350 ms / 30 px and reset the view instead.&#10;if(_tapEl&amp;&amp;e.touches.length===0&amp;&amp;e.changedTouches.length===1){&#10;var now=Date.now();&#10;var dt=now-_tapT;&#10;if(dt&lt;350){&#10;var tdx=Math.abs(e.changedTouches[0].clientX-_lastTapX);&#10;var tdy=Math.abs(e.changedTouches[0].clientY-_lastTapY);&#10;if(now-_lastTapT&lt;350&amp;&amp;tdx&lt;30&amp;&amp;tdy&lt;30){&#10;// Double-tap detected — reset view (mirrors dblclick handler).&#10;// Clear _lastTapT so a third tap starts a new double-tap window.&#10;_lastTapT=0;&#10;vb={x:0,y:0,w:W,h:H};setVB();&#10;}else{&#10;// Single tap — fire click for tooltip toggle, record for next double-tap check.&#10;_lastTapT=now;&#10;_lastTapX=e.changedTouches[0].clientX;&#10;_lastTapY=e.changedTouches[0].clientY;&#10;_tapEl.dispatchEvent(new MouseEvent('click',{bubbles:true,cancelable:true,view:window}));&#10;}&#10;}&#10;}&#10;_tapEl=null;&#10;if(e.touches.length===0){isPanning=false;panStart=null;}&#10;if(e.touches.length&lt;2){pinchDist=0;pinchStartVB=null;}&#10;});&#10;svg.addEventListener('dblclick',function(){vb={x:0,y:0,w:W,h:H};setVB();});&#10;}&#10;// ── Open lightbox ─────────────────────────────────────────────────&#10;window.lsOpenLightbox=function(svgId,svgW,svgH,chartTitle){&#10;var W=svgW||900,H=svgH||390;&#10;titleEl.textContent=chartTitle||'';&#10;var orig=document.getElementById(svgId);&#10;if(!orig)return;&#10;var clone=orig.cloneNode(true);&#10;clone.querySelectorAll('script').forEach(function(s){s.parentNode.removeChild(s);});&#10;clone.removeAttribute('id');&#10;// width+height 100% fills the holder completely; the SVG's viewBox (managed by&#10;// initZoom) controls which part of the chart coordinate space is visible.&#10;// Changing the viewBox never changes the SVG element's screen size, so zoom and&#10;// pan always use the full screen area below the header — no clipping.&#10;// max-width is reset because the original inline style carries max-width:900px&#10;// which would cap the SVG at its inline-chart width regardless of screen size.&#10;clone.style.maxWidth='none';&#10;clone.style.width='100%';&#10;clone.style.height='100%';&#10;clone.style.touchAction='none';&#10;clone.style.cursor='grab';&#10;holder.innerHTML='';&#10;holder.appendChild(clone);&#10;_savedBodyOverflow=document.body.style.overflow||'';&#10;document.body.style.overflow='hidden';&#10;ov.style.display='flex';&#10;initZoom(clone,W,H);&#10;};&#10;})();&#10;//]]&gt;&lt;/script&gt;&#10;&#10;&lt;h2 class="relative group"&gt;2040-an&#10; &lt;div id="2040-an" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#2040-an" aria-label="Pautan"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h2&gt;&#10;&#10;&#10;&#10;&#10;&lt;h3 class="relative group"&gt;Pegunan Bulan Ekstrem&#10; &lt;div id="pegunan-bulan-ekstrem" class="anchor"&gt;&lt;/div&gt;&#10; &#10; &lt;span&#10; class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;&#10; &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#pegunan-bulan-ekstrem" aria-label="Pautan"&gt;#&lt;/a&gt;&#10; &lt;/span&gt;&#10; &#10;&lt;/h3&gt;&#10;&lt;p&gt;&lt;strong&gt;Hemisfera Utara&lt;/strong&gt;&lt;/p&gt;</description></item></channel></rss>