Files
Jyotisha/jyotish-app/index.html
T
2026-07-12 17:46:19 +08:00

687 lines
37 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
<meta name="theme-color" content="#2563eb">
<title>Jyotish · 印度占星</title>
<link rel="manifest" href="/manifest.webmanifest">
<link rel="icon" href="/pwa-icon.svg" type="image/svg+xml">
<link rel="apple-touch-icon" href="/brand-avatar.png">
<link rel="stylesheet" href="/style.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link href="https://fonts.googleapis.com/css2?family=Cinzel:wght@400;600;700&family=Noto+Sans+SC:wght@300;400;500;700&display=swap" rel="stylesheet">
</head>
<body>
<!-- 海浪背景视频 -->
<video class="ocean-bg" autoplay muted loop playsinline>
<source src="/ocean-bg.mp4" type="video/mp4">
</video>
<div id="app">
<!-- ============ 输入页 ============ -->
<section id="page-input" class="page active">
<div class="container">
<header class="header">
<div class="logo">
<img class="logo-avatar" src="/brand-avatar.png" alt="" aria-hidden="true">
<span class="logo-text">Jyotish</span>
</div>
<div class="header-right">
<p class="tagline" data-i18n="tagline">探索你的吠陀星盘 · 排盘 · 解盘 · 推运</p>
<div data-auth-header></div>
</div>
</header>
<div class="card input-card reveal">
<h2 class="card-title" data-i18n="input.title">输入出生信息</h2>
<div class="first-use-panel" id="first-use-panel" aria-live="polite">
<div class="first-use-head">
<strong>首次使用</strong>
<span>先确认运行环境,或用示例盘快速进入完整解盘。</span>
</div>
<div class="first-use-grid">
<button type="button" class="first-use-step" id="first-use-health" data-first-use-action="health">
<span class="first-use-kicker">检查</span>
<strong>运行健康检查</strong>
<small>确认本地 API、技法目录与 PWA 状态。</small>
</button>
<button type="button" class="first-use-step" id="first-use-demo" data-first-use-action="demo">
<span class="first-use-kicker">示例</span>
<strong>填入示例盘</strong>
<small>用北京 1990-01-01 12:00 先熟悉流程。</small>
</button>
<button type="button" class="first-use-step" id="first-use-import" data-first-use-action="import">
<span class="first-use-kicker">导入</span>
<strong>识别已有星盘</strong>
<small>从 PDF 文本层或粘贴资料开始。</small>
</button>
</div>
<div class="first-use-status" id="first-use-status"></div>
</div>
<div class="static-demo-boundary" id="static-demo-boundary" data-static-demo-boundary aria-label="静态演示能力边界">
<div class="static-demo-boundary-head">
<strong>静态演示模式</strong>
<span>公开链接或 PWA 离线壳默认不连接你的本地 API。</span>
</div>
<div class="static-demo-boundary-grid">
<div>
<span>Browser fallback</span>
<p>可直接体验:出生资料输入、基础 D1/D9 星盘、术语模式、Trust Center</p>
</div>
<div>
<span>Local API required</span>
<p>需要本地 API:PDF/HTML 报告、高级技法、真实案例复验、AI 解读代理</p>
</div>
<div>
<span>Deployment target</span>
<p>推荐部署:Vercel / Netlify / GitHub Pages 作为静态壳;完整版本用 Docker Compose 或本地双服务</p>
</div>
</div>
</div>
<form id="birth-form">
<div class="reading-mode-toggle" id="entry-mode-toggle">
<span style="font-size:12px;color:#999;margin-right:8px">入口:</span>
<button type="button" class="chart-btn active" id="entry-direct-chart">直接排盘</button>
<button type="button" class="chart-btn" id="entry-rectification">生时校正</button>
<button type="button" class="chart-btn" id="entry-prashna">时间问事</button>
</div>
<div class="form-group" id="prashna-question-group" style="display:none;">
<label>问题</label>
<input type="text" id="prashna-question-text" placeholder="例如:这个合作能成吗?">
</div>
<div class="form-row">
<div class="form-group">
<label data-i18n="label.date">出生日期</label>
<div class="date-selects" id="birth-date-selects">
<select id="birth-year" required><option value="" disabled selected data-i18n="date.year"></option></select>
<select id="birth-month" required><option value="" disabled selected data-i18n="date.month"></option></select>
<select id="birth-day" required><option value="" disabled selected data-i18n="date.day"></option></select>
</div>
</div>
<div class="form-group">
<label data-i18n="label.time">出生时间</label>
<input type="time" id="birth-time" step="1" required>
</div>
</div>
<div class="form-row">
<div class="form-group">
<label data-i18n="label.city">出生城市</label>
<div class="city-input-wrap">
<input type="text" id="birth-city" data-i18n-ph="city.placeholder" placeholder="搜索城市..." autocomplete="off">
<div id="city-suggestions" class="suggestions hidden"></div>
</div>
</div>
<div class="form-group">
<label data-i18n="label.tz">时区</label>
<select id="birth-tz">
<option value="auto" data-i18n="tz.auto">自动检测</option>
<option value="-12">UTC-12</option><option value="-11">UTC-11</option>
<option value="-10">UTC-10</option><option value="-9">UTC-9</option>
<option value="-8">UTC-8 (PST)</option><option value="-7">UTC-7</option>
<option value="-6">UTC-6</option><option value="-5">UTC-5 (EST)</option>
<option value="-4">UTC-4</option><option value="-3">UTC-3</option>
<option value="-2">UTC-2</option><option value="-1">UTC-1</option>
<option value="0">UTC+0 (GMT)</option><option value="1">UTC+1</option>
<option value="2">UTC+2</option><option value="3">UTC+3</option>
<option value="3.5">UTC+3:30</option><option value="4">UTC+4</option>
<option value="5">UTC+5</option><option value="5.5">UTC+5:30</option>
<option value="5.75">UTC+5:45</option><option value="6">UTC+6</option>
<option value="7">UTC+7</option><option value="8" selected>UTC+8 (中国)</option>
<option value="9">UTC+9</option><option value="9.5">UTC+9:30</option>
<option value="10">UTC+10</option><option value="11">UTC+11</option>
<option value="12">UTC+12</option>
</select>
</div>
</div>
<input type="hidden" id="birth-lat">
<input type="hidden" id="birth-lon">
<div class="chart-import-panel" id="chart-import-panel">
<div class="chart-import-head">
<strong>已有 PDF / 文本星盘?</strong>
<span>上传文本层 PDF,或粘贴出生资料,识别后先校验再填表。</span>
</div>
<textarea id="chart-import-text" rows="4" placeholder="示例:Date of Birth: 1990-06-15&#10;Time of Birth: 12:30&#10;Place of Birth: Delhi&#10;Timezone: UTC+5:30"></textarea>
<div class="chart-import-actions">
<label class="chart-import-file">
<input type="file" id="chart-import-file" accept=".txt,.md,.json,.pdf,text/plain,application/pdf">
<span>上传文件</span>
</label>
<button type="button" id="chart-import-parse">识别信息</button>
<button type="button" id="chart-import-apply" disabled>填入表单</button>
</div>
<div class="chart-import-result" id="chart-import-result" aria-live="polite"></div>
</div>
<div class="saved-chart-panel" id="saved-chart-panel" aria-live="polite"></div>
<button type="submit" class="btn-primary" id="btn-calculate">
<span class="btn-text" data-i18n="btn.calculate">生 成 星 盘</span>
<span class="btn-loading hidden"><span class="spinner"></span> <span data-i18n="btn.calculating">计算中...</span></span>
</button>
<div class="chart-compute-status hidden" id="chart-compute-status" aria-live="polite"></div>
</form>
</div>
</div>
</section>
<!-- ============ 星盘结果页 ============ -->
<section id="page-chart" class="page">
<div class="container">
<!-- 顶部导航 -->
<header class="header">
<div class="logo">
<img class="logo-avatar" src="/brand-avatar.png" alt="" aria-hidden="true">
<span class="logo-text">Jyotish</span>
</div>
<div class="header-actions">
<div data-auth-header></div>
<button class="btn-save-chart" id="btn-save-chart" type="button">保存星盘</button>
<div class="export-dropdown">
<button class="btn-export" id="btn-export" data-i18n="btn.export">⬇ 导出</button>
<div class="export-menu hidden" id="export-menu">
<button class="export-item" data-format="json" data-i18n="export.json">导出 JSON 数据</button>
<button class="export-item" data-format="html">导出 HTML 报告</button>
<button class="export-item" data-format="pdf">导出 PDF 报告</button>
<button class="export-item" data-format="svg" data-i18n="export.svg">导出星盘 SVG</button>
<button class="export-item" data-format="png" data-i18n="export.png">导出星盘 PNG</button>
</div>
<div class="export-status hidden" id="export-status" aria-live="polite"></div>
</div>
<button class="btn-back" id="btn-back" data-i18n="btn.back">← 重新输入</button>
</div>
</header>
<!-- 上升信息 Banner -->
<div class="ascendant-banner reveal" id="ascendant-banner">
<div class="asc-main">
<div class="asc-sign" id="asc-sign"></div>
<div class="asc-details">
<span class="asc-degree" id="asc-degree"></span>
<span class="asc-nakshatra" id="asc-nakshatra"></span>
</div>
</div>
<div class="asc-lord-badge" id="asc-lord-badge"></div>
</div>
<!-- Tab 导航 -->
<nav class="section-tabs" id="section-tabs">
<button class="tab-btn active" data-tab="chart" data-i18n="tab.chart">本命盘</button>
<button class="tab-btn" data-tab="complete">完整解盘</button>
<button class="tab-btn" data-tab="provenance">参数/日历</button>
<button class="tab-btn" data-tab="karaka">Karaka</button>
<button class="tab-btn" data-tab="houses" data-i18n="tab.houses">宫位分析</button>
<button class="tab-btn" data-tab="aspects" data-i18n="tab.aspects">相位</button>
<button class="tab-btn" data-tab="yogas">Yoga</button>
<button class="tab-btn" data-tab="vargas" data-i18n="tab.vargas">分盘</button>
<button class="tab-btn" data-tab="ashtakavarga">Ashtakavarga</button>
<button class="tab-btn" data-tab="shadbala">Shadbala</button>
<button class="tab-btn" data-tab="dasha">Dasha</button>
<button class="tab-btn" data-tab="transit">Transit</button>
<button class="tab-btn" data-tab="deep"><span class="tab-full" data-i18n="tab.deep.full">Samagra Viveka 综合深度</span><span class="tab-short" data-i18n="tab.deep.short">综合深度</span></button>
<button class="tab-btn" data-tab="extended"><span class="tab-full" data-i18n="tab.extended.full">Vishesh Pariksha 扩展分析</span><span class="tab-short" data-i18n="tab.extended.short">扩展分析</span></button>
<button class="tab-btn" data-tab="remedies">🪷 补救</button>
<button class="tab-btn" data-tab="synastry">合盘</button>
<button class="tab-btn" data-tab="prashna">问事</button>
<button class="tab-btn" data-tab="kp">KP</button>
<button class="tab-btn" data-tab="verify">🔍 验证</button>
<button class="tab-btn" data-tab="transit-compare">🪐 过境</button>
<button class="tab-btn" id="btn-print" title="打印/导出PDF">📥</button>
</nav>
<!-- === Tab: 本命盘 === -->
<div class="tab-panel active" id="tab-chart">
<div style="display:flex;justify-content:space-between;align-items:center;margin-bottom:10px">
<div class="chart-style-toggle">
<button class="chart-btn active" id="btn-south-style" title="南印度风格">南印</button>
<button class="chart-btn" id="btn-north-style" title="北印度风格">北印</button>
</div>
<div class="reading-mode-toggle">
<span style="font-size:12px;color:#999;margin-right:8px">解读:</span>
<button class="chart-btn active" id="btn-quick-mode">快速</button>
<button class="chart-btn" id="btn-deep-mode">深度</button>
</div>
</div>
<div class="chart-layout">
<div class="chart-container reveal" style="position:relative;">
<div class="chart-header">
<h3 class="section-title" style="margin-bottom:0" data-i18n="chart.rasi">Rasi Chart 本命盘</h3>
<div class="chart-style-toggle">
<button class="style-btn active" data-style="south" data-i18n="chart.south">南印</button>
<button class="style-btn" data-style="north" data-i18n="chart.north">北印</button>
</div>
</div>
<div class="south-indian-chart" id="rasi-chart"></div>
</div>
<!-- 生时校正引导卡片(星盘下方) -->
<div class="rect-prompt hidden" id="rect-prompt">
<div class="rect-prompt-icon"></div>
<div class="rect-prompt-body">
<strong class="rect-prompt-title" data-i18n="rect.prompt.title">出生时间不确定?</strong>
<span class="rect-prompt-desc" data-i18n="rect.prompt.desc">通过生命事件反推精确出生时间,校正到分钟级</span>
</div>
<button class="rect-prompt-btn" id="rect-prompt-btn" data-i18n="rect.prompt.btn">开始校正 →</button>
</div>
<div class="planets-container reveal reveal-delay-1">
<h3 class="section-title" data-i18n="planets.title">行星位置</h3>
<div class="planets-table-wrap">
<table class="planets-table" id="planets-table">
<thead><tr><th data-i18n="col.planet">行星</th><th data-i18n="col.sign">星座</th><th data-i18n="col.degree">度数</th><th data-i18n="col.house">宫位</th><th data-i18n="col.status">状态</th><th data-i18n="col.nakshatra">星宿</th><th data-i18n="col.d9">D9</th></tr></thead>
<tbody></tbody>
</table>
</div>
</div>
</div>
<!-- Tithi / Yoga 信息 -->
<div class="tithi-info-section" id="tithi-info-section"></div>
<!-- Arudha 概览 -->
<div class="arudha-quick-section" id="arudha-quick-section"></div>
<div id="workflow-summary-panel"></div>
<!-- AI 解读 -->
<div class="ai-reading-section" id="chart-summary">
<p style="color:#999;text-align:center;padding:20px;font-size:13px">星盘计算完成后将自动生成 AI 个性化解读</p>
</div>
</div>
<!-- === Tab: 完整解盘 === -->
<div class="tab-panel" id="tab-complete">
<h3 class="section-title">完整解盘总览</h3>
<div id="special-lagna-section"></div>
<div id="mevg-audit-section"></div>
<div id="ai-prompt-pack-panel"></div>
<div id="guided-topic-discovery-panel"></div>
<div id="skill-coverage-section"></div>
</div>
<!-- === Tab: 参数 / Panchanga / 工作区 === -->
<div class="tab-panel" id="tab-provenance">
<h3 class="section-title">参数、历法与工作区</h3>
<div id="provenance-panel"></div>
</div>
<!-- === Tab: Karaka === -->
<div class="tab-panel" id="tab-karaka">
<h3 class="section-title" data-i18n="karaka.title">Jaimini Karaka 灵魂指针</h3>
<div class="karaka-layout">
<div class="karaka-panel">
<h4 class="sub-title" data-i18n="karaka.7k">7-Karaka(古典系统)</h4>
<div class="karaka-grid" id="karaka7-grid"></div>
</div>
<div class="karaka-panel">
<h4 class="sub-title" data-i18n="karaka.8k">8-Karaka(含 Rahu</h4>
<div class="karaka-grid" id="karaka8-grid"></div>
</div>
</div>
<div class="karaka-note">
<p data-i18n="karaka.note">Karaka 是 Jaimini 系统的核心概念。AKAtmakaraka)代表灵魂目标,DKDarakaraka)代表配偶征象星。7-Karaka 与 8-Karaka 是两种传承口径,Rahu 是否纳入会改变部分角色归属;实际解读需先固定所用体系。</p>
</div>
</div>
<!-- === Tab: 宫位分析 === -->
<div class="tab-panel" id="tab-houses">
<h3 class="section-title" data-i18n="houses.title">十二宫位综合解读</h3>
<div class="house-grid" id="house-grid"></div>
</div>
<!-- === Tab: 相位 === -->
<div class="tab-panel" id="tab-aspects">
<h3 class="section-title" data-i18n="aspects.title">Graha Drishti 行星相位</h3>
<div class="aspects-legend">
<span class="legend-item"><span class="legend-dot friendly"></span><span data-i18n="aspect.friendly">友方</span></span>
<span class="legend-item"><span class="legend-dot neutral"></span><span data-i18n="aspect.neutral">中性</span></span>
<span class="legend-item"><span class="legend-dot hostile"></span><span data-i18n="aspect.hostile">敌对</span></span>
</div>
<div class="aspects-grid" id="aspects-grid"></div>
</div>
<!-- === Tab: Yoga === -->
<div class="tab-panel" id="tab-yogas">
<h3 class="section-title" data-i18n="yoga.title">Yoga 格局识别</h3>
<div class="yoga-summary" id="yoga-summary"></div>
<div class="yoga-cards" id="yoga-cards"></div>
</div>
<!-- === Tab: 分盘 === -->
<div class="tab-panel" id="tab-vargas">
<h3 class="section-title" data-i18n="varga.title">Varga 分盘系统</h3>
<div class="varga-selector" id="varga-selector"></div>
<div class="varga-display" id="varga-display">
<div class="chart-layout">
<div class="chart-container">
<div class="south-indian-chart" id="varga-chart"></div>
</div>
<div class="planets-container">
<h4 class="sub-title" id="varga-table-title" data-i18n="varga.positions">行星位置</h4>
<div class="planets-table-wrap">
<table class="planets-table" id="varga-table">
<thead><tr><th data-i18n="col.planet">行星</th><th data-i18n="col.vsign">分盘星座</th><th data-i18n="col.nhouse">本命宫位</th></tr></thead>
<tbody></tbody>
</table>
</div>
</div>
</div>
</div>
<div class="d9-marriage-section" id="d9-marriage-section"></div>
<div class="arudha-section" id="arudha-section"></div>
</div>
<!-- === Tab: Ashtakavarga === -->
<div class="tab-panel" id="tab-ashtakavarga">
<h3 class="section-title" data-i18n="av.title">Ashtakavarga 八分法</h3>
<div class="av-summary" id="av-summary"></div>
<div class="av-chart-container">
<div class="south-indian-chart" id="av-chart"></div>
</div>
<div class="av-details" id="av-details"></div>
</div>
<!-- === Tab: Shadbala === -->
<div class="tab-panel" id="tab-shadbala">
<h3 class="section-title" data-i18n="sb.title">Shadbala 六维力量</h3>
<div class="shadbala-table-wrap">
<table class="planets-table" id="shadbala-table">
<thead><tr><th data-i18n="col.planet">行星</th><th data-i18n="col.total">总力量</th><th data-i18n="col.required">要求</th><th data-i18n="col.pct">达标率</th><th data-i18n="col.status">状态</th></tr></thead>
<tbody></tbody>
</table>
</div>
<div class="shadbala-note">
<p data-i18n="sb.note">Shadbala 是衡量行星综合力量的系统,包含6个维度:位置力量(Sthana)、方向力量(Dig)、时间力量(Kala)、运动力量(Chesta)、自然力量(Naisargika)、相位力量(Drik)。达标率≥100%为强,75-99%为中,&lt;75%为弱。</p>
</div>
</div>
<!-- === Tab: Dasha === -->
<div class="tab-panel" id="tab-dasha">
<h3 class="section-title" data-i18n="dasha.title">Dasha 大运系统</h3>
<div id="dasha-system-section"></div>
<div class="dasha-current" id="dasha-current"></div>
<div class="dasha-timeline" id="dasha-timeline"></div>
<div class="dasha-detail-layout">
<div class="antardasha-panel" id="antardasha-panel"></div>
<div class="pratyantardasha-panel" id="pratyantardasha-panel"></div>
</div>
</div>
<!-- === Tab: Transit === -->
<div class="tab-panel" id="tab-transit">
<h3 class="section-title" data-i18n="transit.title">Transit 行星过境分析</h3>
<!-- Transit 日期控制 -->
<div class="transit-controls">
<div class="transit-controls-row">
<div class="form-group" style="flex:1">
<label style="font-size:12px" data-i18n="transit.date.label">日期(可选,默认当前)</label>
<input type="date" id="transit-date-input" style="font-size:13px;padding:6px 10px;border:1px solid var(--border-input);border-radius:6px;width:100%">
</div>
<div class="form-group" style="flex:1">
<label style="font-size:12px" data-i18n="transit.time.label">时间</label>
<input type="time" id="transit-time-input" style="font-size:13px;padding:6px 10px;border:1px solid var(--border-input);border-radius:6px;width:100%">
</div>
<div class="form-group" style="display:flex;align-items:flex-end">
<button class="btn-primary" id="btn-transit-update" style="padding:8px 18px;font-size:13px;white-space:nowrap" data-i18n="btn.transit.update">更新 Transit</button>
</div>
</div>
<div class="transit-date" id="transit-date"></div>
</div>
<div class="transit-layout">
<div class="transit-chart-wrap reveal">
<h4 class="sub-title" data-i18n="transit.chart">Transit 星盘</h4>
<div class="south-indian-chart" id="transit-chart"></div>
</div>
<div class="transit-overlay-wrap reveal reveal-delay-1">
<h4 class="sub-title" data-i18n="transit.slow">慢星过境详细分析</h4>
<div class="transit-overlay-grid" id="transit-overlay"></div>
</div>
</div>
<!-- 全行星 Transit 表格 -->
<div class="deep-section">
<h4 class="sub-title" data-i18n="transit.alltable">全行星 Transit 对照表</h4>
<div class="planets-table-wrap" id="transit-all-table"></div>
</div>
<!-- Double Transit -->
<div class="double-transit-section" id="double-transit-section"></div>
<!-- Sade Sati -->
<div class="sade-sati-section" id="sade-sati-section"></div>
<!-- Double Transit PAC + D9 (KN Rao) -->
<div class="deep-section" id="double-transit-pac-section"></div>
<!-- Transit LL/7L 连接 -->
<div class="deep-section" id="transit-ll7l-section"></div>
<!-- 行星聚集 -->
<div class="deep-section" id="planetary-congregation-section"></div>
<!-- Vivah Saham -->
<div class="deep-section" id="vivah-saham-section"></div>
<!-- Transit AV 评分 -->
<div class="deep-section" id="transit-av-section"></div>
<!-- 宫位影响 -->
<div class="deep-section" id="transit-house-impact"></div>
</div>
<!-- === Tab: Samagra Viveka 综合深度分析 === -->
<div class="tab-panel" id="tab-deep">
<h3 class="section-title" data-i18n="deep.title">Samagra Viveka 综合深度分析</h3>
<!-- Raman 功能吉凶表 -->
<div class="deep-section">
<h4 class="sub-title" data-i18n="deep.fn">Shubha Papa Lagna 功能吉凶星表 (B.V. Raman)</h4>
<div id="raman-fn-table" class="fn-table"></div>
</div>
<!-- PACDARES 八维 -->
<div class="deep-section">
<h4 class="sub-title" data-i18n="deep.pacdares">PACDARES Ashtadasha 八维分析 (K.N. Rao)</h4>
<div id="pacdares-grid" class="pacdares-grid"></div>
</div>
<!-- Argala 干预分析 -->
<div class="deep-section">
<h4 class="sub-title">Argala / Virodhargala 干预与阻挡</h4>
<div id="argala-section"></div>
</div>
<!-- Raman 宫位评级 -->
<div class="deep-section">
<h4 class="sub-title" data-i18n="deep.grades">Bhava Sadhana 宫位六步评级 (A-F)</h4>
<div id="raman-grades-grid" class="rg-grid"></div>
</div>
<!-- 宫位互影响矩阵 -->
<div class="deep-section">
<h4 class="sub-title" data-i18n="deep.influence">Bhava Sambandha 宫位互影响矩阵</h4>
<div id="house-influence-grid" class="hi-grid"></div>
</div>
<!-- Vargottama -->
<div class="deep-section">
<h4 class="sub-title" data-i18n="deep.vargottama">Vargottama 同座检测 (D1=D9)</h4>
<div id="vargottama-section"></div>
</div>
<!-- 三角验证 -->
<div class="deep-section">
<h4 class="sub-title" data-i18n="deep.triangle">Trikasiddhi D1 × D9 × D10 三角验证</h4>
<div id="triangle-table"></div>
</div>
<!-- 频率分析 -->
<div class="deep-section">
<h4 class="sub-title" data-i18n="deep.freq">Graha Varga Sphuta 行星频率分析 (Shodashavarga 16分盘)</h4>
<div id="frequency-grid" class="freq-grid"></div>
</div>
<!-- 三方四正映射分析 -->
<div class="deep-section">
<h4 class="sub-title" data-i18n="deep.tk">Trikona-Kendra Sambandha 三方四正宫位映射</h4>
<div id="trikona-kendra-grid"></div>
</div>
</div>
<!-- === Tab: Vishesh Pariksha 扩展分析 === -->
<div class="tab-panel" id="tab-extended">
<h3 class="section-title" data-i18n="ext.title">Vishesh Pariksha 扩展分析</h3>
<div id="bhava-bala-section" class="deep-section"></div>
<div id="vimsopaka-section" class="deep-section"></div>
<div id="planet-states-section" class="deep-section"></div>
<div id="av-pinda-section" class="deep-section"></div>
<div id="extra-dasa-section" class="deep-section"></div>
</div>
<!-- === Tab: Remedies 补救 === -->
<div class="tab-panel" id="tab-remedies">
<h3 class="section-title">🪷 Upaya 补救建议</h3>
<div id="remedies-section" class="deep-section">
<p style="color:#999;text-align:center;padding:40px">正在计算行星力量与补救建议...</p>
</div>
</div>
<!-- === Tab: 合盘 === -->
<div class="tab-panel" id="tab-synastry">
<h3 class="section-title">完整合盘匹配</h3>
<div class="synastry-tool">
<div class="synastry-library-panel">
<div class="form-group">
<label>从本地星盘库选择对方</label>
<select id="synastry-partner-library">
<option value="">暂无保存星盘</option>
</select>
</div>
<button class="btn-secondary synastry-run" id="btn-run-synastry-library">使用所选星盘合盘</button>
</div>
<div class="synastry-inputs synastry-full-inputs">
<div class="form-group synastry-field-wide">
<label>对方出生城市</label>
<div class="city-input-wrapper">
<input type="text" id="synastry-partner-city" placeholder="输入城市名">
<div id="synastry-city-suggestions" class="suggestions hidden"></div>
</div>
<input type="hidden" id="synastry-partner-lat">
<input type="hidden" id="synastry-partner-lon">
</div>
<div class="form-group">
<label>出生日期</label>
<input type="date" id="synastry-partner-date">
</div>
<div class="form-group">
<label>出生时间</label>
<input type="time" id="synastry-partner-time" step="1">
</div>
<div class="form-group">
<label>时区</label>
<input type="number" id="synastry-partner-tz" min="-12" max="14" step="0.25" placeholder="5.5">
</div>
<button class="btn-primary synastry-run" id="btn-run-synastry-full">完整合盘</button>
</div>
<details class="synastry-quick">
<summary>只知道月亮黄经时使用快算</summary>
<div class="synastry-inputs synastry-quick-inputs">
<div class="form-group">
<label>本人月亮黄经</label>
<input type="number" id="synastry-self-moon" min="0" max="360" step="0.01" readonly>
</div>
<div class="form-group">
<label>对方月亮黄经</label>
<input type="number" id="synastry-partner-moon" min="0" max="360" step="0.01" placeholder="例如 124.50">
</div>
<button class="btn-secondary synastry-run" id="btn-run-synastry">Ashtakoot 快算</button>
</div>
</details>
<div id="synastry-result" class="synastry-result">
<p>输入对方完整出生资料后,可同时计算 36 分 Ashtakoot、双方星盘摘要、D9 婚姻专题、Kuja Dosha 平衡与当前 Dasha 同步。</p>
</div>
<div id="synastry-pair-workspace" class="synastry-pair-workspace"></div>
</div>
</div>
<!-- === Tab: Prashna 问事 === -->
<div class="tab-panel" id="tab-prashna">
<h3 class="section-title">Prashna 问事占星</h3>
<div class="prashna-tool">
<div class="prashna-inputs">
<div class="form-group">
<label>问题类型</label>
<select id="prashna-category">
<option value="career">事业 / 工作</option>
<option value="finance">财务 / 收入</option>
<option value="health">健康</option>
<option value="marriage">感情 / 婚姻</option>
<option value="children">子女</option>
<option value="relocation">搬迁 / 家宅</option>
<option value="education">学习 / 考试</option>
<option value="legal">法律 / 纠纷</option>
<option value="property">房产</option>
<option value="travel">旅行 / 远方</option>
<option value="spiritual">修行 / 精神</option>
<option value="general">一般问题</option>
</select>
</div>
<div class="form-group prashna-question">
<label>具体问题</label>
<input type="text" id="prashna-question" maxlength="120" placeholder="例如:这个工作机会是否值得争取?">
</div>
<div class="form-group prashna-question">
<label>提问时刻(当地)</label>
<input type="datetime-local" id="prashna-timestamp">
</div>
<div class="form-group prashna-question">
<label>提问地点纬度 / 经度 / 时区</label>
<div class="form-row">
<input type="number" step="0.0001" id="prashna-lat" placeholder="纬度">
<input type="number" step="0.0001" id="prashna-lon" placeholder="经度">
<input type="number" step="0.5" id="prashna-timezone" placeholder="UTC 时区,例如 8">
</div>
</div>
<button class="btn-primary prashna-run" id="btn-run-prashna">问事分析</button>
</div>
<div id="prashna-result" class="prashna-result">
<p>Prashna 仅使用提问当下时刻与地点由后端排盘;不使用本命盘替代问事盘。</p>
</div>
<div id="prashna-case-workspace" class="prashna-case-workspace"></div>
</div>
</div>
<!-- === Tab: KP === -->
<div class="tab-panel" id="tab-kp">
<h3 class="section-title">KP Sublord 分析</h3>
<div id="kp-section" class="deep-section">
<p style="color:#999;text-align:center;padding:40px">KP 分析将在星盘计算完成后展示。</p>
</div>
</div>
<!-- === Tab: 验证 === -->
<div class="tab-panel" id="tab-verify">
<h3 class="section-title">🔍 验前事 / 案例验证</h3>
<div id="verify-section">
<div class="deep-section"><h4>📅 反推历史关键时段</h4><div id="past-events-result"><p style="color:#999;text-align:center;padding:20px">计算中...</p></div></div>
<div class="deep-section"><h4>📊 名人案例匹配</h4><div id="case-match-result"><p style="color:#999;text-align:center;padding:20px">搜索中...</p></div></div>
<div class="deep-section"><h4>⚠️ 误区警告</h4><div id="fallacy-warn-result"><p style="color:#999;text-align:center;padding:20px">扫描中...</p></div></div>
</div>
</div>
<!-- === Tab: Transit 对比 === -->
<div class="tab-panel" id="tab-transit-compare">
<h3 class="section-title">🪐 过境与对比</h3>
<div id="transit-section">
<div style="display:flex;gap:10px;margin-bottom:15px">
<input type="date" id="transit-start" style="flex:1;padding:6px;border-radius:6px;border:1px solid #ddd">
<input type="date" id="transit-end" style="flex:1;padding:6px;border-radius:6px;border:1px solid #ddd">
<button id="btn-run-transit" style="background:#1565c0;color:#fff;padding:6px 16px;border-radius:6px;border:none;cursor:pointer">搜索过境</button>
</div>
<div id="transit-result"><p style="color:#999;text-align:center;padding:20px">选择日期范围后点击搜索</p></div></div>
</div>
<!-- 生时校正全屏模态面板 -->
<div class="rect-overlay hidden" id="rect-overlay"></div>
<div class="rect-modal hidden" id="rect-panel">
<div class="rect-modal-header">
<h3 data-i18n="rect.title">Janma Samaya Shuddhi 生时校正</h3>
<button class="rect-modal-close" id="rect-panel-close"></button>
</div>
<div class="rect-modal-body" id="rect-content"></div>
</div>
</div>
</section>
</div>
<script type="module" src="/swisseph-wasm/src/swisseph.js"></script>
<script src="/api-bridge.js"></script>
<script type="module" src="/main.js"></script>
</body>
</html>