2026-03-07 01:09:00 -08:00
<!DOCTYPE html>
< html lang = "en" >
< head >
< meta charset = "utf-8" >
< meta name = "viewport" content = "width=device-width, initial-scale=1" >
< title > Tarot Time!< / title >
< link rel = "icon" href = "data:," >
2026-03-09 03:07:02 -07:00
< link rel = "stylesheet" href = "node_modules/@toast-ui/calendar/dist/toastui-calendar.min.css?v=20260309-home-calendar-fix" >
2026-03-07 01:09:00 -08:00
< link rel = "stylesheet" href = "node_modules/@fontsource/noto-sans-hebrew/hebrew-400.css" >
< link rel = "stylesheet" href = "node_modules/@fontsource/noto-sans-hebrew/hebrew-700.css" >
< link rel = "stylesheet" href = "node_modules/@fontsource/noto-serif/greek-400.css" >
< link rel = "stylesheet" href = "node_modules/@fontsource/noto-serif/greek-700.css" >
< link rel = "stylesheet" href = "node_modules/@fontsource/noto-serif/greek-ext-400.css" >
< link rel = "stylesheet" href = "node_modules/@fontsource/noto-serif/greek-ext-700.css" >
< link rel = "stylesheet" href = "node_modules/@fontsource/noto-sans-phoenician/phoenician-400.css" >
< link rel = "stylesheet" href = "node_modules/@fontsource/amiri/arabic-400.css" >
< link rel = "stylesheet" href = "node_modules/@fontsource/amiri/arabic-700.css" >
< link rel = "stylesheet" href = "node_modules/@fontsource/noto-naskh-arabic/arabic-400.css" >
2026-03-14 00:45:15 -07:00
< link rel = "stylesheet" href = "app/styles.css?v=20260314-audio-circle-01" >
2026-03-07 01:09:00 -08:00
< / head >
< body >
< div class = "topbar" >
2026-03-09 03:07:02 -07:00
< button id = "open-home" class = "topbar-home-button" type = "button" aria-pressed = "true" > Tarot Time!< / button >
2026-03-12 02:35:02 -07:00
< button id = "topbar-menu-toggle" class = "topbar-menu-toggle" type = "button" aria-expanded = "false" aria-controls = "topbar-actions" aria-label = "Open navigation menu" > Menu< / button >
< div id = "topbar-actions" class = "topbar-actions" >
2026-03-12 21:01:32 -07:00
< div class = "topbar-dropdown" aria-label = "Alphabet menu" >
< button id = "open-alphabet" class = "settings-trigger" type = "button" aria-pressed = "false" aria-haspopup = "menu" aria-controls = "alphabet-subpages" aria-expanded = "false" > Alphabet ▾< / button >
< div id = "alphabet-subpages" class = "topbar-dropdown-menu" role = "menu" aria-label = "Alphabet subpages" >
< button id = "open-alphabet-letters" class = "settings-trigger topbar-sub-trigger" type = "button" role = "menuitem" > Letter Page< / button >
< button id = "open-alphabet-text" class = "settings-trigger topbar-sub-trigger" type = "button" role = "menuitem" > Text< / button >
2026-03-07 01:09:00 -08:00
< / div >
< / div >
< div class = "topbar-dropdown" aria-label = "Astronomy menu" >
< button id = "open-astronomy" class = "settings-trigger" type = "button" aria-pressed = "false" aria-haspopup = "menu" aria-controls = "astronomy-subpages" aria-expanded = "false" > Astronomy ▾< / button >
< div id = "astronomy-subpages" class = "topbar-dropdown-menu" role = "menu" aria-label = "Astronomy subpages" >
< button id = "open-cycles" class = "settings-trigger topbar-sub-trigger" type = "button" role = "menuitem" > Cycles< / button >
< button id = "open-natal" class = "settings-trigger topbar-sub-trigger" type = "button" role = "menuitem" > Natal Chart< / button >
2026-03-12 21:01:32 -07:00
< button id = "open-planets" class = "settings-trigger topbar-sub-trigger" type = "button" role = "menuitem" > Planet< / button >
< button id = "open-zodiac" class = "settings-trigger topbar-sub-trigger" type = "button" role = "menuitem" > Zodiac< / button >
< / div >
< / div >
2026-03-14 00:45:15 -07:00
< div class = "topbar-dropdown" aria-label = "Audio menu" >
< button id = "open-audio" class = "settings-trigger" type = "button" aria-pressed = "false" aria-haspopup = "menu" aria-controls = "audio-subpages" aria-expanded = "false" > Audio ▾< / button >
< div id = "audio-subpages" class = "topbar-dropdown-menu" role = "menu" aria-label = "Audio subpages" >
< button id = "open-audio-circle" class = "settings-trigger topbar-sub-trigger" type = "button" role = "menuitem" > Circle< / button >
< button id = "open-audio-notes" class = "settings-trigger topbar-sub-trigger" type = "button" role = "menuitem" > Notes< / button >
< / div >
< / div >
2026-03-12 21:01:32 -07:00
< div class = "topbar-dropdown" aria-label = "Calendar menu" >
< button id = "open-calendar" class = "settings-trigger" type = "button" aria-pressed = "false" aria-haspopup = "menu" aria-controls = "calendar-subpages" aria-expanded = "false" > Calendar ▾< / button >
< div id = "calendar-subpages" class = "topbar-dropdown-menu" role = "menu" aria-label = "Calendar subpages" >
< button id = "open-holidays" class = "settings-trigger topbar-sub-trigger" type = "button" role = "menuitem" > Holidays< / button >
< button id = "open-calendar-months" class = "settings-trigger topbar-sub-trigger" type = "button" role = "menuitem" > Months< / button >
< button id = "open-calendar-timeline" class = "settings-trigger topbar-sub-trigger" type = "button" role = "menuitem" > Timeline< / button >
2026-03-07 01:09:00 -08:00
< / div >
< / div >
< button id = "open-elements" class = "settings-trigger" type = "button" aria-pressed = "false" > Elements< / button >
2026-03-12 21:01:32 -07:00
< button id = "open-enochian" class = "settings-trigger" type = "button" aria-pressed = "false" > Enochian< / button >
< button id = "open-gods" class = "settings-trigger" type = "button" aria-pressed = "false" > Gods< / button >
2026-03-07 01:09:00 -08:00
< button id = "open-iching" class = "settings-trigger" type = "button" aria-pressed = "false" > I Ching< / button >
< div class = "topbar-dropdown" aria-label = "Kabbalah menu" >
< button id = "open-kabbalah" class = "settings-trigger" type = "button" aria-pressed = "false" aria-haspopup = "menu" aria-controls = "kabbalah-subpages" aria-expanded = "false" > Kabbalah ▾< / button >
< div id = "kabbalah-subpages" class = "topbar-dropdown-menu" role = "menu" aria-label = "Kabbalah subpages" >
< button id = "open-kabbalah-cube" class = "settings-trigger topbar-sub-trigger" type = "button" role = "menuitem" > Cube< / button >
2026-03-12 21:01:32 -07:00
< button id = "open-kabbalah-tree" class = "settings-trigger topbar-sub-trigger" type = "button" role = "menuitem" > Tree< / button >
2026-03-09 03:07:02 -07:00
< / div >
< / div >
2026-03-07 01:09:00 -08:00
< button id = "open-numbers" class = "settings-trigger" type = "button" aria-pressed = "false" > Numbers< / button >
< button id = "open-quiz" class = "settings-trigger" type = "button" aria-pressed = "false" > Quiz< / button >
< button id = "open-settings" class = "settings-trigger" type = "button" aria-haspopup = "dialog" aria-expanded = "false" > Settings< / button >
2026-03-12 21:01:32 -07:00
< div class = "topbar-dropdown" aria-label = "Tarot menu" >
< button id = "open-tarot" class = "settings-trigger" type = "button" aria-pressed = "false" aria-haspopup = "menu" aria-controls = "tarot-subpages" aria-expanded = "false" > Tarot ▾< / button >
< div id = "tarot-subpages" class = "topbar-dropdown-menu" role = "menu" aria-label = "Tarot subpages" >
< button id = "open-tarot-cards" class = "settings-trigger topbar-sub-trigger" type = "button" role = "menuitem" > Cards< / button >
< button id = "open-tarot-spread" class = "settings-trigger topbar-sub-trigger" type = "button" role = "menuitem" > Draw Spread< / button >
< button id = "open-tarot-house" class = "settings-trigger topbar-sub-trigger" type = "button" role = "menuitem" > House< / button >
< / div >
< / div >
2026-03-07 01:09:00 -08:00
< / div >
< / div >
2026-03-08 22:24:34 -07:00
< div id = "connection-gate" class = "connection-gate" hidden >
< div class = "connection-gate-card" role = "dialog" aria-modal = "true" aria-labelledby = "connection-gate-title" >
< div class = "connection-gate-eyebrow" > API Connection Required< / div >
< h1 id = "connection-gate-title" class = "connection-gate-title" > Connect TaroTime to its API< / h1 >
< p class = "connection-gate-copy" > This client stays in shell mode until it has a reachable API URL and, if required by the server, a valid API key.< / p >
< div class = "connection-gate-fields" >
< label class = "settings-field settings-field-full" for = "connection-gate-base-url" > API Base URL
< input id = "connection-gate-base-url" type = "url" inputmode = "url" placeholder = "http://localhost:3100" >
< / label >
< label class = "settings-field settings-field-full" for = "connection-gate-api-key" > API Key
< input id = "connection-gate-api-key" type = "password" autocomplete = "off" placeholder = "Leave blank only if your API does not require a key" >
< / label >
< / div >
< div id = "connection-gate-status" class = "connection-gate-status" aria-live = "polite" > Enter your API details to continue.< / div >
< div class = "connection-gate-actions" >
< button id = "connection-gate-connect" type = "button" > Save And Connect< / button >
< / div >
< / div >
< / div >
2026-03-07 01:09:00 -08:00
< div id = "settings-popup" class = "settings-popup" hidden >
< div id = "settings-popup-card" class = "settings-popup-card" role = "dialog" aria-modal = "false" aria-label = "Calendar Settings" >
< div class = "settings-popup-header" >
< strong > Settings< / strong >
< button id = "close-settings" type = "button" > Close< / button >
< / div >
< div class = "settings-grid" >
< label class = "settings-field" > Latitude
< input id = "lat" type = "number" step = "0.0001" value = "51.5074" >
< / label >
< label class = "settings-field" > Longitude
< input id = "lng" type = "number" step = "0.0001" value = "-0.1278" >
< / label >
< label class = "settings-field settings-field-full" > Time Format
< select id = "time-format" >
< option value = "minutes" selected > Minutes (default)< / option >
< option value = "hours" > Hours< / option >
< option value = "seconds" > Seconds< / option >
< / select >
< / label >
< label class = "settings-field settings-field-full" > Birth Date
< input id = "birth-date" type = "date" >
< / label >
< label class = "settings-field settings-field-full" > Tarot Deck
< select id = "tarot-deck" >
< option value = "ceremonial-magick" selected > Loading deck manifests...< / option >
< / select >
< / label >
2026-03-08 22:24:34 -07:00
< label class = "settings-field settings-field-full" > API Base URL
< input id = "api-base-url" type = "url" inputmode = "url" placeholder = "http://localhost:3100" >
< / label >
< label class = "settings-field settings-field-full" > API Key
< input id = "api-key" type = "password" autocomplete = "off" placeholder = "Optional unless the API requires one" >
< / label >
2026-03-07 01:09:00 -08:00
< / div >
< div class = "settings-actions" >
< button id = "use-location" type = "button" > Use My Location< / button >
< button id = "save-settings" type = "button" > Save Settings< / button >
< / div >
< / div >
< / div >
< section id = "calendar-section" hidden >
< div class = "planet-layout" >
< aside class = "planet-list-panel" >
< div class = "planet-list-header" >
< strong id = "calendar-list-title" > Calendar > Months< / strong >
< span id = "calendar-month-count" class = "planet-list-count" > --< / span >
< / div >
< div class = "dataset-search-wrap" id = "calendar-type-wrap" >
< label for = "calendar-type-select" > Calendar System< / label >
< select id = "calendar-type-select" class = "quiz-category-select" aria-label = "Select calendar system" >
< option value = "gregorian" > Gregorian Calendar< / option >
< option value = "hebrew" > Hebrew Calendar< / option >
< option value = "islamic" > Islamic Calendar< / option >
< option value = "wheel-of-year" > Wheel of the Year< / option >
< / select >
< / div >
< div class = "dataset-search-wrap calendar-year-control" id = "calendar-year-wrap" >
< label for = "calendar-year-input" > Year for month facts< / label >
< input id = "calendar-year-input" type = "number" min = "1900" max = "2500" step = "1" value = "2026" >
< / div >
< div class = "dataset-search-wrap" >
< input id = "calendar-search-input" class = "dataset-search-input" type = "search" placeholder = "Search months and events" aria-label = "Search calendar months and events" >
< button id = "calendar-search-clear" class = "dataset-search-clear" type = "button" aria-label = "Clear calendar search" disabled > × < / button >
< / div >
< div id = "calendar-month-list" class = "planet-card-list" role = "listbox" aria-label = "Calendar months" > < / div >
< / aside >
< section class = "planet-detail-panel" aria-live = "polite" >
< div class = "planet-detail-heading" >
< h2 id = "calendar-detail-name" > --< / h2 >
< div id = "calendar-detail-sub" class = "planet-detail-type" > Select a month to explore< / div >
< / div >
< div id = "calendar-detail-body" > < / div >
< / section >
< / div >
< / section >
< section id = "holiday-section" hidden >
< div class = "planet-layout" >
< aside class = "planet-list-panel" >
< div class = "planet-list-header" >
< strong > Holiday Repository< / strong >
< span id = "holiday-count" class = "planet-list-count" > --< / span >
< / div >
< div class = "dataset-search-wrap calendar-holiday-filter" >
< label for = "holiday-source-select" > Holiday Source< / label >
< select id = "holiday-source-select" class = "quiz-category-select" aria-label = "Filter holidays by source calendar" >
< option value = "all" > All Calendars< / option >
< option value = "gregorian" > Gregorian< / option >
< option value = "hebrew" > Hebrew< / option >
< option value = "islamic" > Islamic< / option >
< option value = "wheel-of-year" > Wheel of the Year< / option >
< / select >
< / div >
< div class = "dataset-search-wrap calendar-year-control" >
< label for = "holiday-year-input" > Reference Year< / label >
< input id = "holiday-year-input" type = "number" min = "1900" max = "2500" step = "1" value = "2026" >
< / div >
< div class = "dataset-search-wrap" >
< input id = "holiday-search-input" class = "dataset-search-input" type = "search" placeholder = "Search holidays, calendars, date equivalents" aria-label = "Search holiday repository" >
< button id = "holiday-search-clear" class = "dataset-search-clear" type = "button" aria-label = "Clear holiday search" disabled > × < / button >
< / div >
< div id = "holiday-list" class = "planet-card-list" role = "listbox" aria-label = "Holidays" > < / div >
< / aside >
< section class = "planet-detail-panel" aria-live = "polite" >
< div class = "planet-detail-heading" >
< h2 id = "holiday-detail-name" > --< / h2 >
< div id = "holiday-detail-sub" class = "planet-detail-type" > Select a holiday to explore< / div >
< / div >
< div id = "holiday-detail-body" > < / div >
< / section >
< / div >
< / section >
< section id = "tarot-section" hidden >
< div id = "tarot-browse-view" >
< div class = "tarot-layout" >
< aside class = "tarot-list-panel" >
< div class = "tarot-list-header" >
< strong > Tarot Database< / strong >
< span id = "tarot-card-count" class = "tarot-list-count" > --< / span >
< / div >
< div class = "dataset-search-wrap" >
< input id = "tarot-search-input" class = "dataset-search-input" type = "search" placeholder = "Search cards, keywords, relations" aria-label = "Search tarot cards" >
< button id = "tarot-search-clear" class = "dataset-search-clear" type = "button" aria-label = "Clear tarot search" disabled > × < / button >
< / div >
< div id = "tarot-card-list" class = "tarot-card-list" role = "listbox" aria-label = "Tarot cards" > < / div >
< / aside >
< section class = "tarot-detail-panel" aria-live = "polite" >
< div class = "tarot-detail-top" >
< img id = "tarot-detail-image" class = "tarot-detail-image" alt = "Tarot card image" / >
< div class = "tarot-detail-heading" >
< h2 id = "tarot-detail-name" > --< / h2 >
< div id = "tarot-detail-type" class = "tarot-detail-type" > --< / div >
< div id = "tarot-detail-summary" class = "tarot-detail-summary" > --< / div >
< / div >
< / div >
< div class = "tarot-meanings" >
< div class = "tarot-meaning-card" >
< strong > Upright< / strong >
< div id = "tarot-detail-upright" > --< / div >
< / div >
< div class = "tarot-meaning-card" >
< strong > Reversed< / strong >
< div id = "tarot-detail-reversed" > --< / div >
< / div >
< / div >
< div class = "tarot-meta-grid" >
< div id = "tarot-meta-meaning-card" class = "tarot-meta-card" hidden >
< strong > Traditional Meaning< / strong >
< div id = "tarot-detail-meaning" class = "planet-text" > --< / div >
< / div >
< div class = "tarot-meta-card" >
< strong > Keywords< / strong >
< div id = "tarot-detail-keywords" class = "tarot-keywords" > < / div >
< / div >
< div id = "tarot-meta-planet-card" class = "tarot-meta-card" hidden >
< strong > Planet< / strong >
< ul id = "tarot-detail-planet" class = "tarot-relations" > < / ul >
< / div >
< div id = "tarot-meta-element-card" class = "tarot-meta-card" hidden >
< strong > Element< / strong >
< ul id = "tarot-detail-element" class = "tarot-relations" > < / ul >
< / div >
< div id = "tarot-meta-tetragrammaton-card" class = "tarot-meta-card" hidden >
< strong > Tetragrammaton< / strong >
< ul id = "tarot-detail-tetragrammaton" class = "tarot-relations" > < / ul >
< / div >
< div id = "tarot-meta-zodiac-card" class = "tarot-meta-card" hidden >
< strong > Zodiac< / strong >
< ul id = "tarot-detail-zodiac" class = "tarot-relations" > < / ul >
< / div >
< div id = "tarot-meta-courtdate-card" class = "tarot-meta-card" hidden >
< strong > Court Date Window< / strong >
< ul id = "tarot-detail-courtdate" class = "tarot-relations" > < / ul >
< / div >
< div id = "tarot-meta-hebrew-card" class = "tarot-meta-card" hidden >
< strong > Hebrew Letter< / strong >
< ul id = "tarot-detail-hebrew" class = "tarot-relations" > < / ul >
< / div >
< div id = "tarot-meta-cube-card" class = "tarot-meta-card" hidden >
< strong > Cube of Space< / strong >
< ul id = "tarot-detail-cube" class = "tarot-relations" > < / ul >
< / div >
2026-03-07 16:13:58 -08:00
< div id = "tarot-meta-iching-card" class = "tarot-meta-card" hidden >
< strong > I Ching< / strong >
< ul id = "tarot-detail-iching" class = "tarot-relations" > < / ul >
< / div >
2026-03-07 01:09:00 -08:00
< div id = "tarot-meta-calendar-card" class = "tarot-meta-card" hidden >
< strong > Calendar Months< / strong >
< ul id = "tarot-detail-calendar" class = "tarot-relations" > < / ul >
< / div >
< / div >
< div id = "tarot-kab-path" class = "tarot-kab-path-card" hidden > < / div >
< / section >
< / div >
< / div >
< div id = "tarot-spread-view" hidden >
< div class = "tarot-spread-toolbar" >
< button id = "tarot-spread-back" class = "tarot-spread-back-btn" type = "button" > ← Card Browser< / button >
< div class = "tarot-spread-type-controls" role = "group" aria-label = "Spread type" >
< button id = "tarot-spread-btn-three" class = "tarot-spread-type-btn" type = "button" > 3 Card< / button >
< button id = "tarot-spread-btn-celtic" class = "tarot-spread-type-btn" type = "button" > Celtic Cross< / button >
< / div >
2026-03-07 05:17:50 -08:00
< button id = "tarot-spread-reveal-all" class = "tarot-spread-redraw-btn" type = "button" > Reveal All< / button >
2026-03-07 01:09:00 -08:00
< button id = "tarot-spread-redraw" class = "tarot-spread-redraw-btn" type = "button" > ⟳ Redraw< / button >
< / div >
< div id = "tarot-spread-meanings" class = "tarot-spread-meanings" aria-live = "polite" > < / div >
< div id = "tarot-spread-board" class = "tarot-spread-board" aria-live = "polite" > < / div >
< / div >
< / section >
2026-03-12 21:01:32 -07:00
< section id = "tarot-house-section" hidden >
< div id = "tarot-house-view" class = "tarot-house-view" >
< section class = "tarot-misc-section tarot-section-house-top tarot-section-house-page" aria-label = "Tarot house of cards" >
< div class = "tarot-meta-card tarot-house-card" >
< div class = "tarot-house-card-head" >
< strong > House of Cards< / strong >
< div class = "tarot-house-card-actions" >
< label class = "tarot-house-toggle" for = "tarot-house-top-cards-visible" >
< input id = "tarot-house-top-cards-visible" type = "checkbox" checked >
< span > Show Top Cards< / span >
< / label >
< fieldset class = "tarot-house-filter-group" >
< legend > Top Info< / legend >
< label class = "tarot-house-mini-toggle" for = "tarot-house-top-info-hebrew" >
< input id = "tarot-house-top-info-hebrew" type = "checkbox" checked >
< span > Hebrew< / span >
< / label >
< label class = "tarot-house-mini-toggle" for = "tarot-house-top-info-planet" >
< input id = "tarot-house-top-info-planet" type = "checkbox" checked >
< span > Planet< / span >
< / label >
< label class = "tarot-house-mini-toggle" for = "tarot-house-top-info-zodiac" >
< input id = "tarot-house-top-info-zodiac" type = "checkbox" checked >
< span > Zodiac< / span >
< / label >
< label class = "tarot-house-mini-toggle" for = "tarot-house-top-info-trump" >
< input id = "tarot-house-top-info-trump" type = "checkbox" checked >
< span > Trump< / span >
< / label >
< label class = "tarot-house-mini-toggle" for = "tarot-house-top-info-path" >
< input id = "tarot-house-top-info-path" type = "checkbox" checked >
< span > Path< / span >
< / label >
< / fieldset >
< label class = "tarot-house-toggle" for = "tarot-house-bottom-cards-visible" >
< input id = "tarot-house-bottom-cards-visible" type = "checkbox" checked >
< span > Show Bottom Cards< / span >
< / label >
< fieldset class = "tarot-house-filter-group" >
< legend > Bottom Info< / legend >
< label class = "tarot-house-mini-toggle" for = "tarot-house-bottom-info-zodiac" >
< input id = "tarot-house-bottom-info-zodiac" type = "checkbox" checked >
< span > Sign< / span >
< / label >
< label class = "tarot-house-mini-toggle" for = "tarot-house-bottom-info-decan" >
< input id = "tarot-house-bottom-info-decan" type = "checkbox" checked >
< span > Decan< / span >
< / label >
< label class = "tarot-house-mini-toggle" for = "tarot-house-bottom-info-month" >
< input id = "tarot-house-bottom-info-month" type = "checkbox" checked >
< span > Month< / span >
< / label >
< label class = "tarot-house-mini-toggle" for = "tarot-house-bottom-info-ruler" >
< input id = "tarot-house-bottom-info-ruler" type = "checkbox" checked >
< span > Ruler< / span >
< / label >
< label class = "tarot-house-mini-toggle" for = "tarot-house-bottom-info-date" >
< input id = "tarot-house-bottom-info-date" type = "checkbox" >
< span > Date< / span >
< / label >
< / fieldset >
< button id = "tarot-house-focus-toggle" class = "tarot-house-action-btn" type = "button" aria-pressed = "false" > Focus House< / button >
< button id = "tarot-house-export" class = "tarot-house-action-btn" type = "button" > Export PNG< / button >
< button id = "tarot-house-export-webp" class = "tarot-house-action-btn" type = "button" > Export WebP< / button >
< / div >
< / div >
< div id = "tarot-house-of-cards" class = "tarot-house-layout" aria-live = "polite" > < / div >
< / div >
< / section >
< / div >
< / section >
2026-03-07 01:09:00 -08:00
< section id = "planet-section" hidden >
< div class = "planet-layout" >
< aside class = "planet-list-panel" >
< div class = "planet-list-header" >
< strong > Planet Database< / strong >
< span id = "planet-card-count" class = "planet-list-count" > --< / span >
< / div >
< div class = "dataset-search-wrap" >
< input id = "planet-search-input" class = "dataset-search-input" type = "search" placeholder = "Search planets, class, correspondence" aria-label = "Search planets" >
< button id = "planet-search-clear" class = "dataset-search-clear" type = "button" aria-label = "Clear planet search" disabled > × < / button >
< / div >
< div id = "planet-card-list" class = "planet-card-list" role = "listbox" aria-label = "Planets" > < / div >
< / aside >
< section class = "planet-detail-panel" aria-live = "polite" >
< div class = "planet-detail-heading" >
< h2 id = "planet-detail-name" > --< / h2 >
< div id = "planet-detail-type" class = "planet-detail-type" > --< / div >
< div id = "planet-detail-summary" class = "planet-detail-summary" > --< / div >
< / div >
< div class = "planet-meta-grid" >
< div class = "planet-meta-card" >
< strong > Science Facts< / strong >
< div id = "planet-detail-facts" class = "planet-facts-list" > < / div >
< / div >
< div class = "planet-meta-card" >
< strong > Atmosphere< / strong >
< p id = "planet-detail-atmosphere" class = "planet-text" > --< / p >
< / div >
< div class = "planet-meta-card" >
< strong > Notable Facts< / strong >
< ul id = "planet-detail-notable" class = "planet-notes" > < / ul >
< / div >
< div class = "planet-meta-card" >
< strong > Tarot / Weekday Relation< / strong >
< div id = "planet-detail-correspondence" class = "planet-text" > --< / div >
< / div >
< / div >
< / section >
< / div >
< / section >
< section id = "cycles-section" hidden >
< div class = "planet-layout" >
< aside class = "planet-list-panel" >
< div class = "planet-list-header" >
< strong > Cycles Dataset< / strong >
< span id = "cycles-count" class = "planet-list-count" > --< / span >
< / div >
< div class = "dataset-search-wrap" >
< input id = "cycles-search-input" class = "dataset-search-input" type = "search" placeholder = "Search cycles, periods, categories" aria-label = "Search astronomy cycles" >
< button id = "cycles-search-clear" class = "dataset-search-clear" type = "button" aria-label = "Clear cycles search" disabled > × < / button >
< / div >
< div id = "cycles-list" class = "planet-card-list" role = "listbox" aria-label = "Astronomy cycles" > < / div >
< / aside >
< section class = "planet-detail-panel" aria-live = "polite" >
< div class = "planet-detail-heading" >
< h2 id = "cycles-detail-name" > --< / h2 >
< div id = "cycles-detail-type" class = "planet-detail-type" > Select a cycle to explore< / div >
< div id = "cycles-detail-summary" class = "planet-detail-summary" > --< / div >
< / div >
< div id = "cycles-detail-body" class = "planet-meta-grid" > < / div >
< / section >
< / div >
< / section >
< section id = "elements-section" hidden >
< div class = "planet-layout" >
< aside class = "planet-list-panel" >
< div class = "planet-list-header" >
< strong > Classical Elements< / strong >
< span id = "elements-count" class = "planet-list-count" > --< / span >
< / div >
< div class = "dataset-search-wrap" >
< input id = "elements-search-input" class = "dataset-search-input" type = "search" placeholder = "Search elements, symbols, tarot ace" aria-label = "Search classical elements" >
< button id = "elements-search-clear" class = "dataset-search-clear" type = "button" aria-label = "Clear elements search" disabled > × < / button >
< / div >
< div id = "elements-list" class = "planet-card-list" role = "listbox" aria-label = "Classical elements" > < / div >
< / aside >
< section class = "planet-detail-panel" aria-live = "polite" >
< div class = "planet-detail-heading" >
< h2 id = "elements-detail-name" > --< / h2 >
< div id = "elements-detail-sub" class = "planet-detail-type" > Select an element to explore< / div >
< / div >
< div id = "elements-detail-body" > < / div >
< / section >
< / div >
< / section >
2026-03-14 00:45:15 -07:00
< section id = "audio-notes-section" hidden >
< div class = "planet-layout" >
< aside class = "planet-list-panel" >
< div class = "planet-list-header" >
< strong > Audio > Notes< / strong >
< span id = "audio-note-count" class = "planet-list-count" > --< / span >
< / div >
< div class = "audio-note-intro planet-text" > Browse the 12 equal-tempered pitch classes with reference frequencies anchored to A4 = 440 Hz.< / div >
< div class = "dataset-search-wrap" >
< input id = "audio-note-search-input" class = "dataset-search-input" type = "search" placeholder = "Search note names, aliases, intervals" aria-label = "Search audio notes" >
< button id = "audio-note-search-clear" class = "dataset-search-clear" type = "button" aria-label = "Clear audio note search" disabled > × < / button >
< / div >
< div id = "audio-note-list" class = "planet-card-list" role = "listbox" aria-label = "Audio notes" > < / div >
< / aside >
< section class = "planet-detail-panel" aria-live = "polite" >
< div class = "planet-detail-heading" >
< h2 id = "audio-note-detail-name" > --< / h2 >
< div id = "audio-note-detail-sub" class = "planet-detail-type" > Select a note to explore< / div >
< div id = "audio-note-detail-summary" class = "planet-detail-summary" > --< / div >
< / div >
< div id = "audio-note-detail-body" class = "audio-note-detail-stack" > < / div >
< / section >
< / div >
< / section >
< section id = "audio-circle-section" hidden >
< div class = "audio-circle-layout" >
< aside class = "audio-circle-stage-panel" >
< div class = "planet-list-header" >
< strong > Audio > Circle< / strong >
< span class = "planet-list-count" > 12 Keys< / span >
< / div >
< div class = "audio-circle-intro planet-text" > The Circle of Fifths orders keys by perfect fifth motion. Tap any key to hear its tonic and inspect its clockwise and counter-clockwise neighbors.< / div >
< div id = "audio-circle-stage" class = "audio-circle-stage" aria-label = "Circle of Fifths" > < / div >
< / aside >
< section class = "planet-detail-panel audio-circle-detail-panel" aria-live = "polite" >
< div class = "planet-detail-heading" >
< h2 id = "audio-circle-detail-name" > Circle of Fifths< / h2 >
< div id = "audio-circle-detail-sub" class = "planet-detail-type" > Select a key to explore its tonic, relative minor, and neighbors< / div >
< div id = "audio-circle-detail-summary" class = "planet-detail-summary" > --< / div >
< / div >
< div id = "audio-circle-detail-body" class = "audio-circle-detail-stack" > < / div >
< / section >
< / div >
< / section >
2026-03-07 01:09:00 -08:00
< section id = "iching-section" hidden >
< div class = "planet-layout" >
< aside class = "planet-list-panel" >
< div class = "planet-list-header" >
< strong > I Ching Database< / strong >
< span id = "iching-card-count" class = "planet-list-count" > --< / span >
< / div >
< div class = "dataset-search-wrap" >
< input id = "iching-search-input" class = "dataset-search-input" type = "search" placeholder = "Search hexagrams, trigrams, keywords" aria-label = "Search I Ching hexagrams" >
< button id = "iching-search-clear" class = "dataset-search-clear" type = "button" aria-label = "Clear I Ching search" disabled > × < / button >
< / div >
< div id = "iching-card-list" class = "planet-card-list" role = "listbox" aria-label = "I Ching hexagrams" > < / div >
< / aside >
< section class = "planet-detail-panel" aria-live = "polite" >
< div class = "planet-detail-heading" >
< h2 id = "iching-detail-name" > --< / h2 >
< div id = "iching-detail-type" class = "planet-detail-type" > --< / div >
< div id = "iching-detail-summary" class = "planet-detail-summary" > --< / div >
< / div >
< div class = "planet-meta-grid" >
< div class = "planet-meta-card" >
< strong > Oracle Text< / strong >
< p id = "iching-detail-judgement" class = "planet-text" > --< / p >
< p id = "iching-detail-image" class = "planet-text" > --< / p >
< / div >
< div class = "planet-meta-card" >
< strong > Binary Pattern< / strong >
< p id = "iching-detail-binary" class = "planet-text" > --< / p >
< div id = "iching-detail-line" class = "iching-diagram" > --< / div >
< / div >
< div class = "planet-meta-card" >
< strong > Keywords< / strong >
< div id = "iching-detail-keywords" class = "tarot-keywords" > < / div >
< / div >
< div class = "planet-meta-card" >
< strong > Planetary Influence< / strong >
< p id = "iching-detail-planet" class = "planet-text" > --< / p >
< / div >
< div class = "planet-meta-card" >
< strong > Tarot Correspondences< / strong >
2026-03-07 16:13:58 -08:00
< div id = "iching-detail-tarot" class = "planet-text iching-tarot-text" > --< / div >
2026-03-07 01:09:00 -08:00
< / div >
< div class = "planet-meta-card" >
< strong > Calendar Months< / strong >
< div id = "iching-detail-calendar" class = "alpha-nav-btns" > < / div >
< / div >
< div class = "planet-meta-card" >
< strong > Trigrams< / strong >
< div id = "iching-detail-trigrams" class = "iching-trigram-grid" > < / div >
< / div >
< / div >
< / section >
< / div >
< / section >
< section id = "astronomy-section" hidden >
< div class = "kabbalah-placeholder" >
< div class = "kabbalah-placeholder-card" >
< strong > Astronomy< / strong >
< div class = "planet-text" > This Astronomy landing page is intentionally blank for now. Use the Astronomy menu to open Planet, Zodiac, or Natal Chart.< / div >
< / div >
< / div >
< / section >
< section id = "natal-section" hidden >
< div class = "kabbalah-placeholder" >
< div class = "kabbalah-placeholder-card" >
< strong > Natal Chart< / strong >
< div class = "planet-text" > Natal chart scaffolding and anchor summary.< / div >
< pre id = "natal-chart-summary" class = "planet-text natal-chart-summary" > Natal Chart Scaffold: --< / pre >
< / div >
< / div >
< / section >
< section id = "quiz-section" hidden >
< div class = "quiz-layout" >
< div class = "quiz-card" >
< div class = "planet-detail-heading" >
< h2 > Correspondence Quiz< / h2 >
< div class = "planet-detail-type" > Random correspondence questions with real-value options only< / div >
< / div >
< div class = "quiz-toolbar" >
< label class = "quiz-category-label" for = "quiz-category" > Category< / label >
< select id = "quiz-category" class = "quiz-category-select" aria-label = "Quiz category" >
< option value = "random" > Random< / option >
< option value = "all" > All< / option >
< / select >
< label class = "quiz-difficulty-label" for = "quiz-difficulty" > Difficulty< / label >
< select id = "quiz-difficulty" class = "quiz-difficulty-select" aria-label = "Quiz difficulty" >
< option value = "easy" > Easy< / option >
< option value = "normal" selected > Normal< / option >
< option value = "hard" > Hard< / option >
< / select >
< / div >
< div class = "quiz-score-grid" aria-live = "polite" >
< div class = "quiz-score-item" >
< div class = "quiz-score-label" > Correct< / div >
< div id = "quiz-score-correct" class = "quiz-score-value" > 0< / div >
< / div >
< div class = "quiz-score-item" >
< div class = "quiz-score-label" > Answered< / div >
< div id = "quiz-score-answered" class = "quiz-score-value" > 0< / div >
< / div >
< div class = "quiz-score-item" >
< div class = "quiz-score-label" > Accuracy< / div >
< div id = "quiz-score-accuracy" class = "quiz-score-value" > 0%< / div >
< / div >
< / div >
< / div >
< div class = "quiz-card" aria-live = "polite" >
< div id = "quiz-question-type" class = "planet-detail-type" > --< / div >
< p id = "quiz-question" class = "quiz-question" > Loading question…< / p >
< div id = "quiz-options" class = "quiz-options" > < / div >
< div id = "quiz-feedback" class = "planet-text" > Choose the best answer.< / div >
< div class = "quiz-actions" >
< button id = "quiz-reset" class = "settings-trigger" type = "button" > Reset Score< / button >
< / div >
< / div >
< / div >
< / section >
< section id = "kabbalah-section" hidden >
2026-03-07 05:17:50 -08:00
< div class = "kab-rose-layout" >
< aside class = "kab-rose-panel" >
< div class = "planet-list-header" >
< strong > Rosicrucian Cross< / strong >
< span class = "planet-list-count" > 22 Hebrew Letter Paths< / span >
< / div >
< div class = "kab-rose-intro planet-text" > Click a Hebrew letter petal to open path correspondences.< / div >
< div id = "kab-rose-cross-container" class = "kab-rose-cross-container" > < / div >
< / aside >
< section class = "kab-detail-panel" aria-live = "polite" >
< div class = "planet-detail-heading" >
< h2 id = "kab-rose-detail-name" > Rosicrucian Cross< / h2 >
< div id = "kab-rose-detail-sub" class = "planet-detail-type" > Select a Hebrew letter petal to explore the path< / div >
< / div >
< div id = "kab-rose-detail-body" class = "planet-meta-grid" > < / div >
< / section >
2026-03-07 01:09:00 -08:00
< / div >
< / section >
< section id = "kabbalah-tree-section" hidden >
< div class = "kab-layout" >
< aside class = "kab-tree-panel" >
< div class = "planet-list-header" >
< strong > Tree of Life< / strong >
< span class = "planet-list-count" > 32 Paths< / span >
< / div >
< div class = "kab-path-toggle-wrap" >
< label class = "kab-path-toggle-control" for = "kab-path-letter-toggle" >
< input id = "kab-path-letter-toggle" type = "checkbox" checked >
< span > Show path letters< / span >
< / label >
< label class = "kab-path-toggle-control" for = "kab-path-number-toggle" >
< input id = "kab-path-number-toggle" type = "checkbox" checked >
< span > Show path numbers< / span >
< / label >
< label class = "kab-path-toggle-control" for = "kab-path-tarot-toggle" >
< input id = "kab-path-tarot-toggle" type = "checkbox" >
< span > Show Tarot cards on paths< / span >
< / label >
2026-03-12 21:01:32 -07:00
< button id = "kab-tree-export-webp" class = "kab-export-btn" type = "button" > Export WebP< / button >
2026-03-07 01:09:00 -08:00
< / div >
< div id = "kab-tree-container" class = "kab-tree-container" > < / div >
< / aside >
< section class = "kab-detail-panel" aria-live = "polite" >
< div class = "planet-detail-heading" >
< h2 id = "kab-detail-name" > Kabbalah Tree of Life< / h2 >
< div id = "kab-detail-sub" class = "planet-detail-type" > Select a sephira or path to explore< / div >
< / div >
< div id = "kab-detail-body" class = "planet-meta-grid" > < / div >
< / section >
< / div >
< / section >
< section id = "alphabet-section" hidden >
2026-03-09 03:07:02 -07:00
< div class = "alpha-lookup-shell" >
< section class = "alpha-special-top" aria-label = "Alphabet special tools" >
< div class = "planet-meta-card alpha-gematria-card" >
< strong > Gematria Lookup< / strong >
< div class = "alpha-gematria-toolbar" >
2026-03-09 14:43:03 -07:00
< fieldset class = "alpha-tool-mode-group" aria-label = "Alphabet tool mode" >
< label class = "alpha-tool-mode-option" for = "alpha-tool-mode-gematria" >
< input id = "alpha-tool-mode-gematria" name = "alpha-tool-mode" type = "radio" value = "forward" checked >
< span > Gematria< / span >
< / label >
< label class = "alpha-tool-mode-option" for = "alpha-tool-mode-reverse" >
< input id = "alpha-tool-mode-reverse" name = "alpha-tool-mode" type = "radio" value = "reverse" >
< span > Reverse Lookup< / span >
< / label >
< label class = "alpha-tool-mode-option" for = "alpha-tool-mode-anagram" >
< input id = "alpha-tool-mode-anagram" name = "alpha-tool-mode" type = "radio" value = "anagram" >
< span > Anagram Maker< / span >
< / label >
< / fieldset >
2026-03-09 03:07:02 -07:00
< / div >
< div class = "alpha-gematria-controls" >
< label class = "alpha-gematria-field alpha-gematria-field-cipher" for = "alpha-gematria-cipher" >
< span id = "alpha-gematria-cipher-label" > Cipher< / span >
2026-03-07 01:09:00 -08:00
< select id = "alpha-gematria-cipher" class = "alpha-gematria-cipher" aria-label = "Gematria cipher" > < / select >
< / label >
< label class = "alpha-gematria-field" for = "alpha-gematria-input" >
2026-03-09 03:07:02 -07:00
< span id = "alpha-gematria-input-label" > Text< / span >
2026-03-07 01:09:00 -08:00
< textarea id = "alpha-gematria-input" class = "alpha-gematria-input" placeholder = "Type or paste text" > < / textarea >
< / label >
< / div >
< div id = "alpha-gematria-result" class = "alpha-gematria-result" > Total: --< / div >
< div id = "alpha-gematria-breakdown" class = "alpha-gematria-breakdown" > Type text to calculate.< / div >
2026-03-09 03:07:02 -07:00
< div id = "alpha-gematria-matches" class = "alpha-gematria-matches" aria-live = "polite" hidden > < / div >
< / div >
< / section >
< / div >
< / section >
< section id = "alphabet-letters-section" hidden >
2026-03-07 01:09:00 -08:00
< div class = "planet-layout" >
< aside class = "planet-list-panel" >
< div class = "planet-list-header" >
2026-03-09 03:07:02 -07:00
< strong > Alphabet Letter Database< / strong >
2026-03-07 01:09:00 -08:00
< span id = "alpha-letter-count" class = "planet-list-count" > --< / span >
< / div >
< div class = "alpha-tabs" >
< button id = "alpha-tab-all" class = "alpha-tab-btn alpha-tab-active" data-alpha = "all" > All< / button >
< button id = "alpha-tab-hebrew" class = "alpha-tab-btn" data-alpha = "hebrew" > Hebrew< / button >
< button id = "alpha-tab-greek" class = "alpha-tab-btn" data-alpha = "greek" > Greek< / button >
< button id = "alpha-tab-english" class = "alpha-tab-btn" data-alpha = "english" > English< / button >
< button id = "alpha-tab-arabic" class = "alpha-tab-btn" data-alpha = "arabic" > Arabic< / button >
< button id = "alpha-tab-enochian" class = "alpha-tab-btn" data-alpha = "enochian" > Enochian< / button >
< / div >
< div class = "dataset-search-wrap alpha-filter-search-wrap" >
< input id = "alpha-search-input" class = "dataset-search-input" type = "search" placeholder = "Search letters, meanings, transliteration, or position (e.g., 13)" aria-label = "Search alphabet letters" >
< button id = "alpha-search-clear" class = "dataset-search-clear" type = "button" aria-label = "Clear alphabet search" disabled > × < / button >
< / div >
< div class = "alpha-filter-type-wrap" >
< label for = "alpha-type-filter" > Class< / label >
< select id = "alpha-type-filter" class = "alpha-type-filter" aria-label = "Filter by letter class" >
< option value = "" > All< / option >
< option value = "mother" > Mother< / option >
< option value = "double" > Double< / option >
< option value = "simple" > Simple< / option >
< / select >
< / div >
< div id = "alpha-letter-list" class = "planet-card-list" role = "listbox" aria-label = "Letters" > < / div >
< / aside >
< section class = "planet-detail-panel" aria-live = "polite" >
< div class = "planet-detail-heading" >
< h2 id = "alpha-detail-name" > --< / h2 >
< div id = "alpha-detail-sub" class = "planet-detail-type" > Select a letter to explore< / div >
< / div >
< div id = "alpha-detail-body" class = "planet-meta-grid" > < / div >
2026-03-09 03:07:02 -07:00
< / div >
2026-03-07 01:09:00 -08:00
< / section >
< / div >
< / section >
2026-03-09 23:27:03 -07:00
< section id = "alphabet-text-section" hidden >
< div class = "planet-layout" >
< aside class = "planet-list-panel" >
< div class = "planet-list-header" >
< strong > Alphabet > Text< / strong >
< span id = "alpha-text-source-count" class = "planet-list-count" > --< / span >
< / div >
< form id = "alpha-text-global-search-form" class = "alpha-text-search-controls alpha-text-search-controls--sidebar" >
< label class = "alpha-text-control" for = "alpha-text-global-search-input" >
< span > Search All Texts< / span >
< / label >
2026-03-10 14:55:01 -07:00
< div class = "alpha-text-search-inline" >
< input id = "alpha-text-global-search-input" class = "alpha-text-search-input" type = "search" placeholder = "Search across every text source" aria-label = "Search all texts" >
< button id = "alpha-text-global-search-submit" class = "alpha-nav-btn alpha-text-search-submit-inline" type = "submit" > Search< / button >
2026-03-09 23:27:03 -07:00
< / div >
< / form >
< div id = "alpha-text-source-list" class = "planet-card-list" role = "listbox" aria-label = "Text sources" > < / div >
< / aside >
< section class = "planet-detail-panel" aria-live = "polite" >
2026-03-10 14:55:01 -07:00
< div class = "planet-detail-heading alpha-text-detail-heading" >
< div class = "alpha-text-heading-main" >
< h2 id = "alpha-text-detail-name" > --< / h2 >
< div id = "alpha-text-detail-sub" class = "planet-detail-type" > Select a text source to begin reading< / div >
< / div >
< div class = "alpha-text-heading-tools" >
< div class = "alpha-text-controls alpha-text-controls--heading" >
2026-03-14 00:45:15 -07:00
< label class = "alpha-text-control" for = "alpha-text-translation-select" hidden >
< span > Translation< / span >
< select id = "alpha-text-translation-select" class = "alpha-text-select" aria-label = "Select text translation" > < / select >
< / label >
< div id = "alpha-text-compare-toggle-control" class = "alpha-text-control alpha-text-control--toggle" hidden >
< span > Compare< / span >
< button id = "alpha-text-compare-toggle" class = "alpha-nav-btn alpha-text-compare-toggle" type = "button" aria-pressed = "false" > Off< / button >
< / div >
< label class = "alpha-text-control" for = "alpha-text-compare-select" hidden >
< span > Compare With< / span >
< select id = "alpha-text-compare-select" class = "alpha-text-select" aria-label = "Select comparison translation" > < / select >
< / label >
2026-03-10 14:55:01 -07:00
< label class = "alpha-text-control" for = "alpha-text-work-select" >
< span > Work< / span >
< select id = "alpha-text-work-select" class = "alpha-text-select" aria-label = "Select text work" > < / select >
< / label >
< label class = "alpha-text-control" for = "alpha-text-section-select" >
< span > Section< / span >
< select id = "alpha-text-section-select" class = "alpha-text-select" aria-label = "Select text section" > < / select >
< / label >
< / div >
< form id = "alpha-text-local-search-form" class = "alpha-text-search-controls alpha-text-search-controls--detail alpha-text-search-controls--heading" >
< label class = "alpha-text-control" for = "alpha-text-local-search-input" >
< span > Search This Source< / span >
< / label >
< div class = "alpha-text-search-inline" >
< input id = "alpha-text-local-search-input" class = "alpha-text-search-input" type = "search" placeholder = "Search within the selected source" aria-label = "Search current text source" >
< button id = "alpha-text-local-search-submit" class = "alpha-nav-btn alpha-text-search-submit-inline" type = "submit" > Search< / button >
< / div >
< / form >
2026-03-09 23:27:03 -07:00
< / div >
2026-03-10 14:55:01 -07:00
< / div >
2026-03-09 23:27:03 -07:00
< div id = "alpha-text-detail-body" class = "alpha-text-detail-body" > < / div >
< / section >
< / div >
< / section >
2026-03-07 01:09:00 -08:00
< section id = "cube-section" hidden >
2026-03-10 15:16:39 -07:00
< div id = "cube-layout" class = "kab-layout" >
2026-03-07 01:09:00 -08:00
< aside class = "kab-tree-panel" >
< div class = "planet-list-header" >
< strong > Cube of Space< / strong >
< span class = "planet-list-count" > 6 Walls · 12 Edges< / span >
< / div >
< div id = "cube-rotation-controls" class = "cube-rotation-controls" aria-label = "Rotate cube" >
< button id = "cube-rotate-left" class = "cube-rotation-btn" type = "button" title = "Rotate left" > ←< / button >
< button id = "cube-rotate-right" class = "cube-rotation-btn" type = "button" title = "Rotate right" > →< / button >
< button id = "cube-rotate-up" class = "cube-rotation-btn" type = "button" title = "Rotate up" > ↑< / button >
< button id = "cube-rotate-down" class = "cube-rotation-btn" type = "button" title = "Rotate down" > ↓< / button >
< button id = "cube-rotate-reset" class = "cube-rotation-btn" type = "button" title = "Reset rotation" > Reset< / button >
2026-03-10 15:16:39 -07:00
< button id = "cube-focus-toggle" class = "cube-rotation-btn cube-focus-toggle" type = "button" aria-pressed = "false" > Focus Cube< / button >
2026-03-12 21:01:32 -07:00
< button id = "cube-export-webp" class = "cube-rotation-btn cube-export-btn" type = "button" > Export WebP< / button >
2026-03-07 01:09:00 -08:00
< div class = "cube-marker-mode-control" >
< label for = "cube-marker-mode" class = "cube-marker-mode-label" > Marker display< / label >
< select id = "cube-marker-mode" class = "cube-marker-mode-select" aria-label = "Cube marker display mode" >
< option value = "both" selected > Letter + Astrology< / option >
< option value = "letter" > Letter only< / option >
< option value = "astro" > Astrology only< / option >
< option value = "tarot" > Tarot Cards< / option >
< / select >
< / div >
< label class = "cube-connector-toggle-control" for = "cube-connector-toggle" >
< input id = "cube-connector-toggle" type = "checkbox" checked >
< span > Show mother connector lines< / span >
< / label >
< label class = "cube-primal-toggle-control" for = "cube-primal-toggle" >
< input id = "cube-primal-toggle" type = "checkbox" checked >
< span > Show primal point< / span >
< / label >
< div id = "cube-rotation-readout" class = "cube-rotation-readout" > X 0° · Y 0°< / div >
< / div >
< div id = "cube-view-container" class = "kab-tree-container" > < / div >
< / aside >
< section class = "kab-detail-panel" aria-live = "polite" >
< div class = "planet-detail-heading" >
< h2 id = "cube-detail-name" > Cube of Space< / h2 >
< div id = "cube-detail-sub" class = "planet-detail-type" > Select a wall or edge to explore< / div >
< / div >
< div id = "cube-detail-body" class = "planet-meta-grid" > < / div >
< / section >
< / div >
< / section >
< section id = "zodiac-section" hidden >
< div class = "planet-layout" >
< aside class = "planet-list-panel" >
< div class = "planet-list-header" >
< strong > Zodiac Signs< / strong >
< span id = "zodiac-sign-count" class = "planet-list-count" > --< / span >
< / div >
< div class = "dataset-search-wrap" >
< input id = "zodiac-search-input" class = "dataset-search-input" type = "search" placeholder = "Search signs, element, modality" aria-label = "Search zodiac signs" >
< button id = "zodiac-search-clear" class = "dataset-search-clear" type = "button" aria-label = "Clear zodiac search" disabled > × < / button >
< / div >
< div id = "zodiac-sign-list" class = "planet-card-list" role = "listbox" aria-label = "Zodiac signs" > < / div >
< / aside >
< section class = "planet-detail-panel" aria-live = "polite" >
< div class = "planet-detail-heading" >
< h2 id = "zodiac-detail-name" class = "zod-detail-name" > --< / h2 >
< div id = "zodiac-detail-sub" class = "planet-detail-type" > Select a sign to explore< / div >
< / div >
< div id = "zodiac-detail-body" > < / div >
< / section >
< / div >
< / section >
< / section >
< section id = "gods-section" hidden >
< div class = "planet-layout" >
< aside class = "planet-list-panel" >
< div class = "planet-list-header" >
< strong > Divine Pantheons< / strong >
< span id = "gods-count" class = "planet-list-count" > --< / span >
< / div >
< div id = "gods-tabs" class = "gods-tabs" > < / div >
< div class = "dataset-search-wrap" >
< input id = "gods-search-input" class = "dataset-search-input" type = "search" placeholder = "Search gods, sephiroth, paths…" aria-label = "Search divine names" >
< button id = "gods-search-clear" class = "dataset-search-clear" type = "button" aria-label = "Clear search" disabled > × < / button >
< / div >
< div id = "gods-list" class = "planet-card-list" role = "listbox" aria-label = "Divine correspondences" > < / div >
< / aside >
< section class = "planet-detail-panel" aria-live = "polite" >
< div class = "planet-detail-heading" >
< h2 id = "gods-detail-name" > --< / h2 >
< div id = "gods-detail-sub" class = "planet-detail-type" > Select a deity to explore< / div >
< / div >
< div id = "gods-detail-body" > < / div >
< / section >
< / div >
< / section >
< section id = "enochian-section" hidden >
< div class = "planet-layout" >
< aside class = "planet-list-panel" >
< div class = "planet-list-header" >
< strong > Enochian Tablets< / strong >
< span id = "enochian-count" class = "planet-list-count" > --< / span >
< / div >
< div class = "dataset-search-wrap" >
< input id = "enochian-search-input" class = "dataset-search-input" type = "search" placeholder = "Search tablets, elements, letters" aria-label = "Search Enochian tablets" >
< button id = "enochian-search-clear" class = "dataset-search-clear" type = "button" aria-label = "Clear Enochian search" disabled > × < / button >
< / div >
< div id = "enochian-list" class = "planet-card-list" role = "listbox" aria-label = "Enochian tablets" > < / div >
< / aside >
< section class = "planet-detail-panel" aria-live = "polite" >
< div class = "planet-detail-heading" >
< h2 id = "enochian-detail-name" > --< / h2 >
< div id = "enochian-detail-sub" class = "planet-detail-type" > Select a tablet to explore< / div >
< / div >
< div id = "enochian-detail-body" > < / div >
< / section >
< / div >
< / section >
< section id = "numbers-section" hidden >
< div class = "kab-layout numbers-layout" >
< aside id = "numbers-special-panel" class = "numbers-special-panel" aria-label = "4 card arrangement" > < / aside >
< div class = "planet-layout numbers-main-layout" >
< aside class = "planet-list-panel" >
< div class = "planet-list-header" >
< strong > Numbers (Digital Root)< / strong >
< span id = "numbers-count" class = "planet-list-count" > --< / span >
< / div >
< div id = "numbers-list" class = "planet-card-list" role = "listbox" aria-label = "Numbers 0 through 9" > < / div >
< / aside >
< section class = "planet-detail-panel" aria-live = "polite" >
< div class = "planet-detail-heading" >
< h2 id = "numbers-detail-name" > --< / h2 >
< div id = "numbers-detail-type" class = "planet-detail-type" > --< / div >
< div id = "numbers-detail-summary" class = "planet-detail-summary" > --< / div >
< / div >
< div id = "numbers-detail-body" class = "numbers-detail-body" > < / div >
< / section >
< / div >
< / div >
< / section >
2026-03-09 03:07:02 -07:00
< section id = "timeline-section" hidden >
< div id = "month-strip" aria-hidden = "true" > < / div >
< div id = "calendar" > < / div >
< / section >
2026-03-07 01:09:00 -08:00
< div id = "now-panel" >
< iframe id = "now-sky-layer" aria-hidden = "true" scrolling = "no" allow = "geolocation" > < / iframe >
2026-03-09 03:07:02 -07:00
< div class = "now-panel-controls" >
< label class = "now-panel-toggle" for = "now-overlay-toggle" >
< input id = "now-overlay-toggle" type = "checkbox" checked / >
< span > Show Overlay< / span >
< / label >
2026-03-07 01:09:00 -08:00
< / div >
2026-03-09 03:07:02 -07:00
< div class = "now-panel-square" >
< div class = "now-section now-section-hour" >
< div class = "now-title" > Current Planetary Hour< / div >
< img id = "now-hour-card" class = "now-card" alt = "Current planetary hour card" / >
< div id = "now-hour" class = "now-primary now-primary-hour" > --< / div >
< div id = "now-hour-tarot" class = "now-tarot" > --< / div >
< div class = "now-countdown-row" >
< span id = "now-countdown" class = "now-countdown-value" > --< / span >
< span id = "now-hour-next" class = "now-countdown-next" > > --< / span >
< / div >
2026-03-07 01:09:00 -08:00
< / div >
2026-03-09 03:07:02 -07:00
< div class = "now-section now-section-moon" >
< div class = "now-title" > Moon Phase< / div >
< img id = "now-moon-card" class = "now-card" alt = "Current moon phase card" / >
< div id = "now-moon" class = "now-primary now-primary-moon" > --< / div >
< div id = "now-moon-tarot" class = "now-tarot" > --< / div >
< div class = "now-countdown-row" >
< span id = "now-moon-countdown" class = "now-countdown-value" > --< / span >
< span id = "now-moon-next" class = "now-countdown-next" > > --< / span >
< / div >
< / div >
< div class = "now-section now-section-decan" >
< div class = "now-title" > Current Decan (Sun)< / div >
< img id = "now-decan-card" class = "now-card" alt = "Current decan card" / >
< div id = "now-decan" class = "now-primary now-primary-decan" > --< / div >
< div id = "now-decan-tarot" class = "now-tarot" > --< / div >
< div class = "now-countdown-row" >
< span id = "now-decan-countdown" class = "now-countdown-value" > --< / span >
< span id = "now-decan-next" class = "now-countdown-next" > > --< / span >
< / div >
< / div >
< div class = "now-stats-section" >
2026-03-10 14:55:01 -07:00
< div class = "now-stats-title" > Planet Positions< / div >
2026-03-09 03:07:02 -07:00
< div id = "now-stats-planets" class = "now-stats-planets" > --< / div >
2026-03-10 14:55:01 -07:00
< div id = "now-stats-sabian" class = "now-stats-sabian" > --< / div >
2026-03-07 01:09:00 -08:00
< / div >
< / div >
< / div >
< script src = "node_modules/@toast-ui/calendar/dist/toastui-calendar.min.js" > < / script >
< script src = "node_modules/suncalc/suncalc.js" > < / script >
< script src = "node_modules/astronomy-engine/astronomy.browser.min.js" > < / script >
< script src = "app/astro-calcs.js" > < / script >
2026-03-08 22:24:34 -07:00
< script src = "app/app-config.js?v=20260309-gate" > < / script >
2026-03-09 23:27:03 -07:00
< script src = "app/data-service.js?v=20260310-text-search-split-04" > < / script >
2026-03-07 01:09:00 -08:00
< script src = "app/calendar-events.js" > < / script >
2026-03-08 22:24:34 -07:00
< script src = "app/card-images.js?v=20260309-gate" > < / script >
2026-03-12 02:35:02 -07:00
< script src = "app/ui-tarot-lightbox.js?v=20260312-compare-zoom-01" > < / script >
2026-03-12 21:01:32 -07:00
< script src = "app/ui-tarot-house.js?v=20260312-house-cube-01" > < / script >
2026-03-07 05:17:50 -08:00
< script src = "app/ui-tarot-relations.js" > < / script >
2026-03-14 00:45:15 -07:00
< script src = "app/ui-now-helpers.js?v=20260314-now-planets-grid-01" > < / script >
< script src = "app/ui-now.js?v=20260314-now-planets-grid-01" > < / script >
2026-03-07 01:09:00 -08:00
< script src = "app/ui-natal.js" > < / script >
2026-03-07 13:38:13 -08:00
< script src = "app/tarot-database-builders.js" > < / script >
< script src = "app/tarot-database-assembly.js" > < / script >
2026-03-07 01:09:00 -08:00
< script src = "app/tarot-database.js" > < / script >
2026-03-07 05:17:50 -08:00
< script src = "app/ui-calendar-dates.js" > < / script >
2026-03-07 13:38:13 -08:00
< script src = "app/ui-calendar-detail-panels.js" > < / script >
2026-03-07 05:17:50 -08:00
< script src = "app/ui-calendar-detail.js" > < / script >
2026-03-07 13:38:13 -08:00
< script src = "app/ui-calendar-data.js" > < / script >
2026-03-07 01:09:00 -08:00
< script src = "app/ui-calendar.js" > < / script >
2026-03-07 13:38:13 -08:00
< script src = "app/ui-holidays-data.js" > < / script >
< script src = "app/ui-holidays-render.js" > < / script >
2026-03-07 01:09:00 -08:00
< script src = "app/ui-holidays.js" > < / script >
2026-03-07 13:38:13 -08:00
< script src = "app/ui-tarot-card-derivations.js?v=20260307b" > < / script >
< script src = "app/ui-tarot-detail.js?v=20260307b" > < / script >
< script src = "app/ui-tarot-relation-display.js?v=20260307b" > < / script >
2026-03-12 21:01:32 -07:00
< script src = "app/ui-tarot.js?v=20260312-house-cube-01" > < / script >
2026-03-07 13:38:13 -08:00
< script src = "app/ui-planets-references.js" > < / script >
2026-03-07 01:09:00 -08:00
< script src = "app/ui-planets.js" > < / script >
< script src = "app/ui-cycles.js" > < / script >
< script src = "app/ui-elements.js" > < / script >
2026-03-14 00:45:15 -07:00
< script src = "app/ui-audio-notes.js?v=20260314-audio-notes-02" > < / script >
< script src = "app/ui-audio-circle.js?v=20260314-audio-circle-01" > < / script >
2026-03-07 13:38:13 -08:00
< script src = "app/ui-iching-references.js" > < / script >
2026-03-07 01:09:00 -08:00
< script src = "app/ui-iching.js" > < / script >
2026-03-07 05:17:50 -08:00
< script src = "app/ui-rosicrucian-cross.js" > < / script >
< script src = "app/ui-kabbalah-detail.js" > < / script >
2026-03-07 13:38:13 -08:00
< script src = "app/ui-kabbalah-views.js" > < / script >
2026-03-12 21:01:32 -07:00
< script src = "app/ui-kabbalah.js?v=20260312-tree-export-01" > < / script >
2026-03-07 05:17:50 -08:00
< script src = "app/ui-cube-detail.js" > < / script >
2026-03-07 13:38:13 -08:00
< script src = "app/ui-cube-chassis.js" > < / script >
< script src = "app/ui-cube-math.js" > < / script >
2026-03-07 14:15:09 -08:00
< script src = "app/ui-cube-selection.js" > < / script >
2026-03-12 21:01:32 -07:00
< script src = "app/ui-cube.js?v=20260312-house-cube-01" > < / script >
2026-03-08 22:24:34 -07:00
< script src = "app/ui-alphabet-gematria.js?v=20260308b" > < / script >
< script src = "app/ui-alphabet-browser.js?v=20260309-enochian-api" > < / script >
2026-03-07 05:17:50 -08:00
< script src = "app/ui-alphabet-references.js" > < / script >
2026-03-08 22:24:34 -07:00
< script src = "app/ui-alphabet-detail.js?v=20260309-enochian-api" > < / script >
2026-03-07 13:38:13 -08:00
< script src = "app/ui-alphabet-kabbalah.js" > < / script >
2026-03-08 22:24:34 -07:00
< script src = "app/ui-alphabet.js?v=20260308b" > < / script >
2026-03-14 00:45:15 -07:00
< script src = "app/ui-alphabet-text.js?v=20260314-text-compare-01" > < / script >
2026-03-07 13:38:13 -08:00
< script src = "app/ui-zodiac-references.js" > < / script >
2026-03-07 01:09:00 -08:00
< script src = "app/ui-zodiac.js" > < / script >
2026-03-07 13:38:13 -08:00
< script src = "app/ui-quiz-bank-builtins-domains.js" > < / script >
< script src = "app/ui-quiz-bank-builtins.js" > < / script >
2026-03-07 05:17:50 -08:00
< script src = "app/ui-quiz-bank.js" > < / script >
2026-03-07 01:09:00 -08:00
< script src = "app/ui-quiz.js" > < / script >
2026-03-08 03:52:25 -07:00
< script src = "app/quiz-plugin-helpers.js" > < / script >
2026-03-07 01:09:00 -08:00
< script src = "app/quiz-calendars.js" > < / script >
2026-03-08 03:52:25 -07:00
< script src = "app/quiz-connections.js" > < / script >
2026-03-07 13:38:13 -08:00
< script src = "app/ui-gods-references.js" > < / script >
2026-03-07 01:09:00 -08:00
< script src = "app/ui-gods.js" > < / script >
< script src = "app/ui-enochian.js" > < / script >
2026-03-07 13:38:13 -08:00
< script src = "app/ui-numbers-detail.js" > < / script >
2026-03-07 05:17:50 -08:00
< script src = "app/ui-numbers.js" > < / script >
< script src = "app/ui-tarot-spread.js" > < / script >
2026-03-08 22:24:34 -07:00
< script src = "app/ui-settings.js?v=20260309-gate" > < / script >
2026-03-14 00:45:15 -07:00
< script src = "app/ui-chrome.js?v=20260314-mobile-menu-overlay-01" > < / script >
< script src = "app/ui-navigation.js?v=20260314-audio-circle-01" > < / script >
2026-03-07 05:17:50 -08:00
< script src = "app/ui-calendar-formatting.js?v=20260307b" > < / script >
< script src = "app/ui-calendar-visuals.js?v=20260307b" > < / script >
< script src = "app/ui-home-calendar.js" > < / script >
2026-03-14 00:45:15 -07:00
< script src = "app/ui-section-state.js?v=20260314-audio-circle-01" > < / script >
2026-03-08 22:24:34 -07:00
< script src = "app/app-runtime.js?v=20260309-gate" > < / script >
2026-03-14 00:45:15 -07:00
< script src = "app.js?v=20260314-audio-circle-01" > < / script >
2026-03-07 01:09:00 -08:00
< / body >
< / html >