<!DOCTYPE html>
<html lang="ru" class="dark">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title id="page-title">SUTRA Jyotish</title>
<meta name="description" id="meta-desc" content="">
<meta name="keywords" id="meta-kw" content="">
<meta property="og:title" id="og-title" content="">
<meta property="og:description" id="og-desc" content="">
<meta property="og:type" content="website">
<meta property="og:url" id="og-url" content="">
<meta property="og:image" content="https://muhurta.ru/og-image.jpg">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:image" content="https://muhurta.ru/og-image.jpg">
<link rel="canonical" id="canonical" href="https://muhurta.ru/">
<link rel="stylesheet" href="/fonts/local-fonts.css">
<link rel="icon" href="/favicon.svg" type="image/svg+xml">
  <!-- Schema.org: HowTo (AEO — Яндекс.Нейро / Алиса) -->
  <script type="application/ld+json">
  {
    "@context": "https://schema.org",
    "@type": "HowTo",
    "name": "Как выбрать мухурту (благоприятное время)",
    "description": "Мухурта — выбор благоприятного момента для начинаний по ведическим правилам (панчанг и положение Луны).",
    "totalTime": "PT1M",
    "step": [
      {
        "@type": "HowToStep",
        "position": 1,
        "name": "Укажите дату и место",
        "text": "Выберите дату, интервал и место для оценки."
      },
      {
        "@type": "HowToStep",
        "position": 2,
        "name": "Расчёт по эфемеридам",
        "text": "Система оценивает титхи, накшатру, йогу и вару на интервал."
      },
      {
        "@type": "HowToStep",
        "position": 3,
        "name": "Получите результат",
        "text": "Вы получаете благоприятные и неблагоприятные окна времени."
      }
    ]
  }
  </script>
  <script type="application/ld+json" id="jsonld-app">{"inLanguage": "ru", "isAccessibleForFree": true, "featureList": ["Подбор благоприятного времени (Мухурта)", "Расчёт по дате и типу события", "Учёт титхи, накшатры и планетных периодов"], "author": {"@type": "Organization", "name": "SUTRA", "url": "https://muhurta.ru", "logo": "https://muhurta.ru/og-image.jpg", "sameAs": ["https://sutra.center"]}}</script>
<script type="application/ld+json" id="jsonld-faq">{}</script>
  <!-- Schema.org: parentOrganization (AIO E-E-A-T chain) -->
  <script type="application/ld+json">{"@context": "https://schema.org", "@type": "WebSite", "url": "https://muhurta.ru", "name": "Мухурта — благоприятное время", "description": "Бесплатный подбор благоприятного времени (Мухурта) для важных дел по ведическому календарю.", "inLanguage": "ru", "publisher": {"@type": "Organization", "name": "SUTRA", "url": "https://sutra.center"}}</script>


<!-- Config MUST load before inline script -->
<script src="config.js?v=2"></script>
<script src="./assets/report-builder.js?v=20260607"></script>
<script>
/* Бесплатный PDF мухурты (generic SutraReport, per-niche выбор времени) */
function buildMuhurtaPDF(){
  var d=window._lastResult, b=window._lastBirth||{};
  if(!d){alert('Сначала рассчитайте мухурту');return;}
  if(typeof SutraReport==='undefined'){alert('Модуль отчёта не загрузился, обновите страницу');return;}
  function fmt(x){return x?((x.start||'')+(x.end?'–'+x.end:'')):'';}
  function nm(x){return x?(x.name_ru||x.name||x):'';}
  var r=new SutraReport({name:b.name||d.date||'',date:d.date||b.date||'',city:b.city||'',system:'muhurta',domain:'muhurta.ru',subtitle:'Мухурта · выбор благоприятного времени'});
  r.addKPI('Дата', (d.weekday_ru?d.weekday_ru+' ':'')+(d.date||''), d.activity_ru||'');
  if(d.overall&&d.overall.quality_ru) r.addKPI('Оценка дня', (d.overall.score_icon?d.overall.score_icon+' ':'')+d.overall.quality_ru, d.overall.is_suitable?'Подходит для дела':'');
  var aus=[], at=d.auspicious_times||{};
  if(at.brahma_muhurta) aus.push(['Брахма-мухурта', fmt(at.brahma_muhurta)]);
  if(at.abhijit_muhurta) aus.push(['Абхиджит-мухурта', fmt(at.abhijit_muhurta)]);
  if(aus.length) r.addSection('I','Благоприятное время','Лучшие интервалы дня', r.addDataCard('Ауспициозные периоды', aus, 'card-mint'));
  var ina=[], it=d.inauspicious_times||{};
  if(it.rahu_kalam) ina.push(['Раху-калам', fmt(it.rahu_kalam)]);
  if(it.yamaganda) ina.push(['Ямаганда', fmt(it.yamaganda)]);
  if(it.gulika) ina.push(['Гулика', fmt(it.gulika)]);
  if(ina.length) r.addSection('II','Неблагоприятное время','Периоды для избегания', r.addDataCard('Избегать', ina, 'card-red'));
  var pa=[], p=d.panchang||{};
  if(p.tithi) pa.push(['Титхи', nm(p.tithi)]);
  if(p.nakshatra) pa.push(['Накшатра', nm(p.nakshatra)]);
  if(p.yoga) pa.push(['Йога', nm(p.yoga)]);
  if(p.karana) pa.push(['Карана', nm(p.karana)]);
  if(pa.length) r.addSection('III','Панчанг дня','Пять элементов времени', r.addDataCard('Элементы', pa, 'card-gold'));
  if(d.recommendations_ru&&d.recommendations_ru.length){
    var rec=d.recommendations_ru.map(function(x){return '<p class="narr">'+x+'</p>';}).join('');
    r.addSection('IV','Рекомендации','', '<div class="card card-mint">'+rec+'</div>');
  }
  r.render();
}
</script>

<style>
/* ================================================================
   RESET & BASE
   ================================================================ */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{font-family:'Jost',sans-serif;font-weight:300;line-height:1.7;transition:background .4s,color .4s}
img,svg{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
button{cursor:pointer;border:none;background:none;font-family:inherit}
input,select,textarea{font-family:inherit}

/* ================================================================
   CSS VARIABLES — LIGHT (default)
   ================================================================ */
html.light{
  --bg:#FBF8F1;--surface:#F5EFE3;--surface-2:#EDE5D5;
  --gold:#B8935A;--gold-b:#A07B42;--gold-d:rgba(184,147,90,.06);
  --mars:#B05555;--mars-d:rgba(176,85,85,.08);
  --rahu:#7B6FB8;--rahu-b:#6B5FA8;--rahu-d:rgba(123,111,184,.08);
  --mint:#4A8575;--mint-d:rgba(74,133,117,.06);
  --text:#2C2820;--text-m:rgba(44,40,32,.6);--text-d:rgba(44,40,32,.35);
  --border:rgba(184,147,90,.2);--border-s:rgba(184,147,90,.1);
  --card-hover:rgba(184,147,90,.06);
  --blur-overlay:rgba(251,248,241,.85);
  --accent:var(--gold);--accent-b:var(--gold-b);--accent-d:var(--gold-d);
}
/* ================================================================
   CSS VARIABLES — DARK
   ================================================================ */
html.dark{
  --bg:#08060A;--surface:#12101a;--surface-2:#1a1725;
  --gold:#C9A96E;--gold-b:#E8C98A;--gold-d:rgba(201,169,110,.06);
  --mars:#C97070;--mars-d:rgba(201,112,112,.08);
  --rahu:#8B7EC8;--rahu-b:#A89ED8;--rahu-d:rgba(139,126,200,.08);
  --mint:#6A9E91;--mint-d:rgba(106,158,145,.06);
  --text:#F0E8D8;--text-m:rgba(240,232,216,.6);--text-d:rgba(240,232,216,.35);
  --border:rgba(201,169,110,.12);--border-s:rgba(201,169,110,.06);
  --card-hover:rgba(201,169,110,.04);
  --blur-overlay:rgba(8,6,10,.85);
  --accent:var(--gold);--accent-b:var(--gold-b);--accent-d:var(--gold-d);
}

body{background:var(--bg);color:var(--text)}

/* ================================================================
   TYPOGRAPHY
   ================================================================ */
h1,h2,h3{font-family:'Cormorant Garamond',serif;font-weight:300;line-height:1.25}
h1{font-size:clamp(2rem,5vw,3.2rem)}
h2{font-size:clamp(1.5rem,3.5vw,2.4rem)}
h3{font-size:clamp(1.1rem,2vw,1.4rem)}
em{font-style:italic;color:var(--accent-b)}
.font-label{font-family:'Cinzel',serif}
.font-sa{font-family:'Cinzel',serif;font-style:italic;letter-spacing:.04em}

/* ================================================================
   LAYOUT
   ================================================================ */
.container{max-width:1200px;margin:0 auto;padding:0 24px}
.section{padding:60px 0}
@media(max-width:768px){.section{padding:48px 0}}
.divider{border:none;height:1px;background:var(--border-s);margin:0}

/* ================================================================
   HEADER
   ================================================================ */
.header{
  position:sticky;top:0;z-index:100;
  background:var(--bg);border-bottom:1px solid var(--border-s);
  backdrop-filter:blur(12px);padding:14px 0;
}
.header-inner{
  display:flex;align-items:center;justify-content:space-between;
  max-width:1200px;margin:0 auto;padding:0 24px;
}
.logo{font-family:'Cinzel',serif;font-size:13px;letter-spacing:.25em;color:var(--accent);display:flex;align-items:center}
.header-nav{display:flex;align-items:center;gap:16px;font-size:11px;letter-spacing:.06em;text-transform:uppercase;font-family:Cinzel,serif}
.header-nav a{color:var(--text-d);transition:color .3s}
.header-nav a:hover{color:var(--accent)}
.header-nav .btn-sm{padding:6px 14px;background:var(--accent);color:var(--bg);border-radius:2px;font-size:10px}
.theme-toggle{
  width:36px;height:36px;border-radius:2px;
  border:1px solid var(--border);
  display:flex;align-items:center;justify-content:center;
  font-size:16px;color:var(--text-m);transition:all .3s;
}
.theme-toggle:hover{border-color:var(--accent);color:var(--accent)}

/* ================================================================
   SECTION LABELS
   ================================================================ */
.s-label{
  font-family:'Cinzel',serif;font-size:9px;letter-spacing:.3em;
  color:var(--text-d);text-transform:uppercase;
  display:flex;align-items:center;gap:12px;margin-bottom:16px;
}
.s-label::before{content:'';width:24px;height:1px;background:var(--accent);opacity:.4}

/* ================================================================
   HERO
   ================================================================ */
.hero{position:relative;overflow:hidden;padding:100px 0 80px}
.hero-sky{position:absolute;inset:0;z-index:0;pointer-events:none}
.hero-glow{
  position:absolute;top:-20%;left:30%;width:600px;height:600px;
  background:radial-gradient(circle,rgba(201,169,110,.06) 0%,transparent 70%);
  pointer-events:none;z-index:1;
}
.hero-inner{
  max-width:1200px;margin:0 auto;padding:0 24px;position:relative;z-index:2;
  display:grid;grid-template-columns:1fr;gap:48px;align-items:center;
  text-align:center;max-width:700px;
}
.hero-sa{font-family:'Cinzel',serif;font-size:14px;letter-spacing:.15em;color:var(--text-d);font-style:italic;margin-top:6px}
.hero-sub{color:var(--text-m);font-size:14px;margin:20px auto 0;max-width:560px;line-height:1.9}
.hero-actions{display:flex;gap:16px;margin-top:32px;flex-wrap:wrap;justify-content:center}
.hero-proof{display:flex;gap:32px;margin-top:24px;padding-top:32px;border-top:1px solid var(--border-s);justify-content:center;flex-wrap:wrap}
.proof-item{text-align:center}
.proof-num{font-family:'Cormorant Garamond',serif;font-size:28px;font-weight:300;color:var(--accent)}
.proof-label{font-family:'Cinzel',serif;font-size:7px;letter-spacing:.2em;color:var(--text-d);margin-top:4px;text-transform:uppercase}
.hero-tech{font-size:11px;color:var(--text-d);margin-top:12px;font-family:'JetBrains Mono',monospace;letter-spacing:.02em}

/* ================================================================
   BUTTONS
   ================================================================ */
.btn-primary{
  display:inline-flex;align-items:center;gap:8px;
  font-family:'Cinzel',serif;font-size:11px;letter-spacing:.15em;
  padding:14px 32px;border-radius:2px;
  background:linear-gradient(135deg,var(--accent),var(--accent-b));
  color:#08060A;font-weight:600;transition:all .3s;text-transform:uppercase;
}
.btn-primary:hover{opacity:.9;transform:translateY(-1px)}
.btn-ghost{
  font-family:'Cinzel',serif;font-size:11px;letter-spacing:.1em;
  color:var(--text-m);padding:14px 24px;border:1px solid var(--border);border-radius:2px;
  transition:all .3s;
}
.btn-ghost:hover{border-color:var(--accent);color:var(--accent)}
.btn-accent{
  display:inline-flex;align-items:center;gap:8px;
  font-family:'Cinzel',serif;font-size:12px;letter-spacing:.15em;
  padding:16px 40px;border-radius:2px;
  background:linear-gradient(135deg,var(--accent),var(--accent-b));
  color:#08060A;font-weight:600;transition:all .3s;text-transform:uppercase;
}
.btn-accent:hover{opacity:.9;transform:translateY(-1px)}

/* ================================================================
   CARDS
   ================================================================ */
.card{
  background:var(--surface);border:1px solid var(--border-s);border-radius:2px;
  padding:32px;position:relative;overflow:hidden;transition:all .3s;
}
.card::after{
  content:'';position:absolute;bottom:0;left:0;right:0;height:2px;
  background:var(--accent);transform:scaleX(0);transition:transform .3s;
}
.card:hover::after{transform:scaleX(1)}
.card:hover{border-color:var(--border)}

/* Pain cards */
.pain-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
@media(max-width:768px){.pain-grid{grid-template-columns:1fr}}
.pain-icon{font-size:28px;display:block;margin-bottom:16px;color:var(--accent)}
.pain-title{font-size:19px;margin-bottom:12px}
.pain-body{font-size:13px;color:var(--text-m);line-height:1.8}

/* ================================================================
   CALCULATOR
   ================================================================ */
.calc-section{text-align:center}
.calc-form{display:flex;gap:12px;justify-content:center;align-items:center;margin-top:32px;flex-wrap:wrap;flex-direction:column}
.calc-input{
  padding:14px 20px;border-radius:2px;
  background:var(--surface);border:1px solid var(--border);
  color:var(--text);font-size:16px;text-align:center;
  letter-spacing:.1em;transition:border-color .3s;
}
.calc-input:focus{outline:none;border-color:var(--accent)}
.calc-input::placeholder{color:var(--text-d)}
.calc-hint{font-size:12px;color:var(--text-d);margin-top:12px}
.calc-error{font-size:13px;color:var(--mars);margin-top:8px;min-height:20px}
.time-unknown-row{display:flex;align-items:center;gap:8px;justify-content:center;margin-top:8px}
.time-unknown-row label{font-size:12px;color:var(--text-d);cursor:pointer}
.time-unknown-row input{accent-color:var(--accent)}
.city-autocomplete{position:relative;display:inline-block}
.city-dropdown{
  position:absolute;top:100%;left:0;right:0;z-index:50;
  background:var(--surface);border:1px solid var(--border);border-top:0;
  border-radius:0 0 2px 2px;max-height:200px;overflow-y:auto;display:none;
}
.city-dropdown div{
  padding:8px 16px;font-size:13px;cursor:pointer;transition:background .2s;
}
.city-dropdown div:hover{background:var(--card-hover)}

/* ================================================================
   RESULT
   ================================================================ */
#result{display:none}
#result.visible{display:block}
.result-card{
  background:var(--surface);border:1px solid var(--border-s);border-radius:2px;
  padding:28px 32px;margin-bottom:16px;
}
.result-card h3{margin-bottom:12px}
.result-label{
  font-family:'Cinzel',serif;font-size:9px;letter-spacing:.2em;
  color:var(--accent);margin-bottom:8px;display:block;text-transform:uppercase;
}
.result-value{font-family:'Cormorant Garamond',serif;font-size:22px;color:var(--accent-b)}
.result-text{font-size:14px;color:var(--text-m);line-height:1.9;margin-top:12px}
.result-timestamp{
  text-align:right;font-size:10px;color:var(--text-d);margin-top:12px;
  font-family:'JetBrains Mono',monospace;letter-spacing:.02em;
}

/* Chart + Table layout */
.chart-table-grid{display:grid;grid-template-columns:340px 1fr;gap:24px;align-items:start}
@media(max-width:900px){.chart-table-grid{grid-template-columns:1fr}}
.chart-wrapper{position:relative}
.chart-toggle{
  position:absolute;top:8px;right:8px;
  font-size:9px;color:var(--accent);background:var(--surface);
  border:1px solid var(--border);padding:3px 10px;cursor:pointer;
  border-radius:2px;font-family:Cinzel,serif;letter-spacing:1px;text-transform:uppercase;z-index:5;
}

/* Summary table */
.summary-table{width:100%;border-collapse:collapse;margin-top:16px}
.summary-table th,.summary-table td{
  padding:10px 16px;text-align:left;font-size:13px;
  border-bottom:1px solid var(--border-s);
}
.summary-table th{font-family:'Cinzel',serif;font-size:9px;letter-spacing:.15em;color:var(--text-d)}
@media(max-width:480px){.summary-table th,.summary-table td{padding:6px 8px;font-size:11px}}

/* Paywall blur */
.blurred-section{position:relative}
.blurred-content{filter:blur(3px);user-select:none;pointer-events:none}
.paywall-overlay{
  position:absolute;inset:0;display:flex;flex-direction:column;
  align-items:center;justify-content:flex-end;
  background:linear-gradient(180deg,transparent 0%,transparent 30%,var(--blur-overlay) 78%);border-radius:2px;z-index:10;padding:0 16px 32px;
}
.paywall-lock{font-size:32px;margin-bottom:16px;opacity:.6}
.paywall-title{font-family:'Cormorant Garamond',serif;font-size:22px;text-align:center;margin-bottom:8px}
.paywall-sub{font-size:13px;color:var(--text-m);text-align:center;margin-bottom:24px;max-width:400px}
.paywall-progress{width:260px;max-width:80%;margin:0 auto 16px}
.paywall-progress-bar{width:100%;height:6px;background:var(--surface-2);border-radius:3px;overflow:hidden}
.paywall-progress-fill{width:0%;height:100%;background:linear-gradient(90deg,var(--accent),var(--accent-b));border-radius:3px;transition:width 1.5s}

/* ================================================================
   FEATURES TABLE
   ================================================================ */
.feat-grid{display:grid;grid-template-columns:1fr;gap:16px;margin-top:32px}
@media(min-width:768px){.feat-grid{grid-template-columns:repeat(2,1fr)}}
.feat-col{border-radius:2px;overflow:hidden}
.feat-head{font-family:'Cinzel',serif;font-size:10px;letter-spacing:.2em;padding:16px 24px;text-align:center}
.feat-body{padding:24px}
.feat-item{display:flex;align-items:center;gap:10px;font-size:13px;padding:8px 0;color:var(--text-m)}
@media(max-width:520px){.feat-grid{grid-template-columns:1fr !important}}

/* ================================================================
   PROOF SECTION
   ================================================================ */
.proof-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;text-align:center}
@media(max-width:768px){.proof-grid{grid-template-columns:repeat(2,1fr)}}
.proof-card{padding:24px 16px;background:var(--surface);border:1px solid var(--border-s);border-radius:2px}
.proof-card-num{font-family:'Cormorant Garamond',serif;font-size:36px;font-weight:300;color:var(--accent)}
.proof-card-label{font-family:'Cinzel',serif;font-size:8px;letter-spacing:.2em;color:var(--text-d);margin-top:8px;text-transform:uppercase}
.proof-card-desc{font-size:11px;color:var(--text-m);margin-top:8px;line-height:1.6}

/* ================================================================
   SEO ARTICLE
   ================================================================ */
.article{max-width:800px;margin:0 auto;font-size:14px;color:var(--text-m);line-height:2}
.article p{margin-bottom:20px}

/* ================================================================
   FAQ
   ================================================================ */
.faq-list{max-width:800px;margin:0 auto}
.faq-item{border-bottom:1px solid var(--border-s)}
.faq-q{
  display:flex;justify-content:space-between;align-items:center;
  padding:20px 0;cursor:pointer;font-size:15px;color:var(--text);transition:color .3s;
}
.faq-q:hover{color:var(--accent)}
.faq-arrow{font-size:18px;color:var(--text-d);transition:transform .3s;flex-shrink:0;margin-left:16px}
.faq-item.open .faq-arrow{transform:rotate(180deg)}
.faq-a{max-height:0;overflow:hidden;transition:max-height .4s ease,padding .3s;font-size:13px;color:var(--text-m);line-height:1.9}
.faq-item.open .faq-a{max-height:500px;padding-bottom:20px}

/* ================================================================
   BRIDGE (cross-sell)
   ================================================================ */
.bridge{position:relative;overflow:hidden;padding:80px 48px}
@media(max-width:768px){.bridge{padding:48px 24px}}
.bridge-glow{
  position:absolute;top:-30%;right:-5%;width:400px;height:400px;border-radius:50%;
  background:radial-gradient(circle,rgba(201,169,110,.06) 0%,transparent 70%);pointer-events:none;
}
.bridge-headline{max-width:700px;margin-bottom:24px}
.bridge-body{font-size:14px;color:var(--text-m);max-width:600px;line-height:1.9;margin-bottom:32px}
.bridge-links{display:flex;gap:16px;margin-top:40px;padding-top:32px;border-top:1px solid var(--border-s);flex-wrap:wrap}
.bridge-link{font-size:11px;color:var(--text-d);display:flex;align-items:center;gap:6px}

/* ================================================================
   FOOTER
   ================================================================ */
.footer{border-top:1px solid var(--border-s);padding:40px 0;text-align:center;font-size:12px;color:var(--text-d)}
.footer p{margin-bottom:4px}
.footer a{color:var(--accent);text-decoration:none}
.footer a:hover{text-decoration:underline}
.footer nav{margin-top:12px}
.footer nav a{margin:0 6px}
.fb-form input,.fb-form textarea{
  padding:8px 12px;font-size:12px;background:var(--bg);
  border:1px solid var(--border-s);border-radius:2px;color:var(--text);
  font-family:Jost,sans-serif;width:100%;
}
.fb-form textarea{resize:vertical}

/* ================================================================
   COOKIE BANNER
   ================================================================ */
.cookie-banner{
  position:fixed;bottom:0;left:0;right:0;z-index:200;
  background:var(--surface);border-top:1px solid var(--border-s);
  padding:16px 24px;display:flex;align-items:center;justify-content:center;gap:16px;
  font-size:12px;color:var(--text-m);flex-wrap:wrap;
}
.cookie-banner.hidden{display:none}

/* ================================================================
   LOADING OVERLAY
   ================================================================ */
.loading-overlay{
  position:fixed;inset:0;z-index:10000;
  background:var(--blur-overlay);backdrop-filter:blur(8px);
  display:none;flex-direction:column;align-items:center;justify-content:center;
  text-align:center;padding:24px;
}
.loading-spinner{
  width:48px;height:48px;border:3px solid var(--border);border-top-color:var(--accent);
  border-radius:50%;animation:spin 1s linear infinite;margin-bottom:24px;
}
.loading-progress{width:300px;max-width:80%;height:6px;background:var(--surface);border-radius:3px;overflow:hidden;margin:16px 0}
.loading-progress-fill{width:0%;height:100%;background:linear-gradient(90deg,var(--accent),var(--accent-b));border-radius:3px;transition:width .5s}
.loading-status{font-size:13px;color:var(--text-m);min-height:20px}
.loading-hint{font-size:11px;color:var(--text-d);margin-top:8px}

/* ================================================================
   ANIMATIONS
   ================================================================ */
@keyframes fadeUp{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes shimmer{0%{background-position:-200% 0}100%{background-position:200% 0}}
.fade-up{animation:fadeUp .8s ease both}
.fade-up-2{animation:fadeUp .8s .2s ease both}
.fade-up-3{animation:fadeUp .8s .4s ease both}

/* ================================================================
   RESPONSIVE
   ================================================================ */
@media(max-width:520px){
  .header-nav a:not(.btn-sm){display:none}
  .hero-proof{gap:16px}
  .proof-num{font-size:22px}
}
</style>
<script type="text/javascript">(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};m[i].l=1*new Date();for(var j=0;j<document.scripts.length;j++){if(document.scripts[j].src===r){return}}k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})(window,document,"script","https://mc.yandex.ru/metrika/tag.js","ym");ym(109115686, "init",{clickmap:true,trackLinks:true,accurateTrackBounce:true,webvisor:true});</script><noscript><div><img src="https://mc.yandex.ru/watch/109115686" style="position:absolute;left:-9999px" alt=""/></div></noscript>
<script type="application/ld+json">{"@context":"https://schema.org","@type":"WebPage","url":"https://muhurta.ru/","speakable":{"@type":"SpeakableSpecification","cssSelector":["h1"]}}</script></head>
<body>

<!-- ===============================================================
     PANCHANG BAR
     =============================================================== -->
<div id="panchang-bar"></div>

<!-- ===============================================================
     HEADER
     =============================================================== -->
<header class="header">
  <div class="header-inner">
    <a href="/" class="logo" id="header-logo" style="text-decoration:none;color:inherit;display:flex;align-items:center"><svg viewBox="0 0 310 50" xmlns="http://www.w3.org/2000/svg" fill="none" style="height:36px;width:auto"><path d="M14 2 L17 12 L28 15 L17 18 L14 28 L11 18 L0 15 L11 12 Z" fill="#C9A96E"/><text x="38" y="20" font-family="Cinzel,serif" font-size="16" font-weight="600" fill="#C9A96E" letter-spacing="4">SUTRA</text><text x="132" y="20" font-family="Cinzel,serif" font-size="16" font-weight="400" fill="currentColor" letter-spacing="2">JYOTISH</text><text x="38" y="38" font-family="Cormorant Garamond,serif" font-size="10" font-weight="300" fill="currentColor" letter-spacing="2" opacity="0.5">мухурта</text></svg></a>
    <nav class="header-nav">
      <a href="/wiki/" style="font-size:10px" data-t="nav_wiki">Wiki</a>
      <a href="#muhurta-calc" data-t="nav_muhurta">Мухурта</a>
      <a href="#calendar-section" data-t="nav_calendar">Календарь</a>
      <a href="#faq-section">FAQ</a>
      <a href="#muhurta-calc" class="btn-sm" data-t="nav_calc">Рассчитать</a>
      <button onclick="toggleLang()" id="lang-btn" style="font-size:11px;color:var(--text-d);border:1px solid var(--border);padding:6px 12px;border-radius:2px;letter-spacing:.08em;cursor:pointer;min-width:36px;font-family:Cinzel,serif" title="Switch language">EN</button>
      <button class="theme-toggle" onclick="toggleTheme()" title="Toggle theme" aria-label="Toggle theme" style="margin-left:4px">
        <span id="theme-icon">&#9789;</span>
      </button>
    </nav>
  </div>
</header>

<!-- ===============================================================
     HERO (with Sutra Sky canvas behind)
     =============================================================== -->
<section class="hero">
  <canvas id="sutra-sky" data-sky="compact" class="hero-sky" style="width:100%;height:100%"></canvas>
  <div class="hero-glow"></div>
  <div class="hero-inner">
    <div class="fade-up">
      <div style="font-family:Cinzel,serif;font-size:9px;letter-spacing:.3em;color:var(--text-d);text-transform:uppercase;margin-bottom:8px" id="hero-label">Jyotisha Ganita</div>
      <h1 id="hero-h1">&#x0935;&#x0947;&#x0926;&#x093F;&#x0915; &#x091C;&#x094D;&#x092F;&#x094B;&#x0924;&#x093F;&#x0937;</h1>
      <div class="hero-sa" id="hero-sa">Janma Kundali</div>
      <p class="hero-sub" id="hero-sub"></p>
      <!-- TODAY MUHURTA — auto-loaded, no form needed -->
      <div id="today-muhurta" style="margin-top:32px;text-align:center">
        <div id="today-score-card" style="display:inline-block;background:var(--surface);border:1px solid var(--border);border-radius:4px;padding:24px 40px;margin-bottom:20px;min-width:280px">
          <div style="font-size:13px;color:var(--text-d);margin-bottom:8px" id="today-weekday">Загрузка...</div>
          <div style="font-family:'Cormorant Garamond',serif;font-size:42px;font-weight:300;line-height:1" id="today-score-num">—</div>
          <div style="font-family:Cinzel,serif;font-size:10px;letter-spacing:.2em;margin-top:6px;text-transform:uppercase" id="today-score-label">из 100</div>
        </div>
        <div id="today-panchang" style="display:grid;grid-template-columns:repeat(4,1fr);gap:12px;max-width:600px;margin:0 auto 20px;text-align:center"></div>
        <div id="today-times" style="display:flex;gap:16px;justify-content:center;flex-wrap:wrap;font-size:13px;margin-bottom:20px"></div>
      </div>
      <div class="hero-actions">
        <a href="#muhurta-calc" class="btn-primary" style="font-size:14px;padding:18px 48px">Подобрать мухурту для события &rarr;</a>
        <a href="#natal-calc" class="btn-ghost">Натальная карта</a>
      </div>
      <div style="font-size:11px;color:var(--text-d);margin-top:12px">Бесплатно &middot; Без регистрации &middot; Swiss Ephemeris</div>
      <div class="hero-proof" id="hero-proof"></div>
    </div>
  </div>
</section>

<!-- ===============================================================
     PAIN POINTS
     =============================================================== -->
<hr class="divider">
<section class="section" id="pain-section">
  <div class="container">
    <div class="s-label" id="pain-label"></div>
    <h2 style="margin-bottom:48px" id="pain-h2"></h2>
    <div class="pain-grid" id="pain-grid"></div>
  </div>
</section>

<!-- ===============================================================
     HOW IT WORKS
     =============================================================== -->
<hr class="divider">
<section class="section">
  <div class="container" style="max-width:700px">
    <div class="s-label" style="justify-content:center">Kriya Vidhi</div>
    <h2 style="text-align:center;margin-bottom:32px">&#1050;&#1072;&#1082; &#1101;&#1090;&#1086; &#1088;&#1072;&#1073;&#1086;&#1090;&#1072;&#1077;&#1090;</h2>
    <div id="steps-grid" style="display:grid;grid-template-columns:repeat(3,1fr);gap:24px;text-align:center"></div>
  </div>
</section>

<!-- ===============================================================
     MUHURTA EVENT CALCULATOR (PRIMARY)
     =============================================================== -->
<hr class="divider" id="muhurta-calc">
<section class="section calc-section">
  <div class="container">
    <div class="s-label" style="justify-content:center">Muhurta Ganita</div>
    <h2 data-t="muhurta_calc_h2">Подберите <em>благоприятное время</em></h2>
    <p style="color:var(--text-d);font-size:12px;margin-top:10px;font-family:'JetBrains Mono',monospace">Swiss Ephemeris v2.10 &middot; Lahiri Ayanamsha &middot; Panchang Analysis</p>
    <div class="calc-form">
      <div style="display:flex;gap:12px;flex-wrap:wrap;justify-content:center">
        <select id="event-type" class="calc-input" style="width:200px;appearance:auto;-webkit-appearance:menulist;text-align:left" aria-label="Тип события">
          <option value="general">Общие дела</option>
          <option value="marriage">Свадьба</option>
          <option value="griha_pravesh">Новоселье</option>
          <option value="business">Бизнес</option>
          <option value="travel">Поездка</option>
          <option value="medical">Операция</option>
          <option value="education">Обучение</option>
          <option value="legal">Суд / Иск</option>
        </select>
        <input type="text" id="muhurta-date" class="calc-input" placeholder="Дата события (ДД.ММ.ГГГГ)" maxlength="10" inputmode="numeric" aria-label="Дата события" style="width:220px">
        <input type="text" id="muhurta-time" class="calc-input" placeholder="Время (чч:мм)" maxlength="5" inputmode="numeric" aria-label="Время" style="width:140px">
        <div class="city-autocomplete">
          <input type="text" id="muhurta-city" class="calc-input" placeholder="Город" aria-label="Город" style="width:220px;text-align:left" autocomplete="off">
          <div class="city-dropdown" id="muhurta-city-dropdown"></div>
        </div>
      </div>
      <button class="btn-accent" onclick="doMuhurtaCalc()" style="font-size:15px;padding:18px 48px;width:100%;max-width:320px" data-t="calc_btn">Рассчитать мухурту &rarr;</button>
    </div>
    <div style="font-size:10px;color:var(--text-d);text-align:center;margin-top:4px">Бесплатно &middot; Без регистрации &middot; Panchang + Hora + Ghatak</div>
    <div class="calc-error" id="muhurta-error"></div>
  </div>
</section>

<!-- ===============================================================
     MUHURTA RESULT (hidden until calculated)
     =============================================================== -->
<section id="muhurta-result" style="display:none">
  <hr class="divider">
  <div class="section">
    <div class="container">
      <div class="s-label">Muhurta Phala</div>
      <div id="muhurta-result-content"></div>
    </div>
  </div>
</section>

<!-- ===============================================================
     MUHURTA CALENDAR HEATMAP
     =============================================================== -->
<hr class="divider">
<section class="section" id="calendar-section">
  <div class="container">
    <div class="s-label" style="justify-content:center">Muhurta Panchanga</div>
    <h2 style="text-align:center;margin-bottom:32px" data-t="cal_h2">Календарь <em>мухурт</em></h2>
    <p style="text-align:center;font-size:13px;color:var(--text-m);margin-bottom:24px;max-width:500px;margin-left:auto;margin-right:auto">Благоприятность каждого дня для 7 типов событий. Данные на ближайшие 15 дней.</p>
    <div id="muhurta-calendar" style="overflow-x:auto"></div>
    <div style="display:flex;gap:16px;justify-content:center;margin-top:16px;font-size:11px;flex-wrap:wrap">
      <span><span style="display:inline-block;width:10px;height:10px;border-radius:2px;background:var(--mint);vertical-align:middle"></span> Отлично</span>
      <span><span style="display:inline-block;width:10px;height:10px;border-radius:2px;background:var(--accent);vertical-align:middle"></span> Хорошо</span>
      <span><span style="display:inline-block;width:10px;height:10px;border-radius:2px;background:var(--text-d);vertical-align:middle;opacity:.5"></span> Нейтрально</span>
      <span><span style="display:inline-block;width:10px;height:10px;border-radius:2px;background:var(--mars);vertical-align:middle"></span> Избегать</span>
    </div>
  </div>
</section>

<!-- ===============================================================
     PLANETARY HOURS
     =============================================================== -->
<hr class="divider">
<section class="section" id="hours-section">
  <div class="container">
    <div class="s-label" style="justify-content:center">Graha Hora</div>
    <h2 style="text-align:center;margin-bottom:32px" data-t="hours_h2">Планетарные <em>хоры</em> сегодня</h2>
    <div id="planetary-hours" style="max-width:600px;margin:0 auto"></div>
  </div>
</section>

<!-- ===============================================================
     NATAL CHART CALCULATOR (SECONDARY)
     =============================================================== -->
<hr class="divider" id="natal-calc">
<section class="section calc-section">
  <div class="container">
    <div class="s-label" style="justify-content:center">Janma Kundali</div>
    <h2>Натальная карта &mdash; <em>узнайте себя глубже</em></h2>
    <p style="color:var(--text-d);font-size:12px;margin-top:10px;font-family:'JetBrains Mono',monospace">Swiss Ephemeris v2.10 &middot; NASA JPL DE431 &middot; Whole Sign Houses</p>
    <div class="calc-form">
      <div style="display:flex;gap:12px;flex-wrap:wrap;justify-content:center">
        <input type="text" id="date-input" class="calc-input" placeholder="Дата рождения" maxlength="10" inputmode="numeric" aria-label="Дата рождения" style="width:200px">
        <input type="text" id="time-input" class="calc-input" placeholder="Время (чч:мм)" maxlength="5" inputmode="numeric" aria-label="Время рождения" style="width:160px">
        <div class="city-autocomplete">
          <input type="text" id="city-input" class="calc-input" placeholder="Город рождения" aria-label="Город рождения" style="width:260px;text-align:left" autocomplete="off">
          <div class="city-dropdown" id="city-dropdown"></div>
        </div>
      </div>
      <div class="time-unknown-row" id="time-unknown-row">
        <input type="checkbox" id="time-unknown" onchange="handleTimeUnknown()">
        <label for="time-unknown">Не знаю точное время рождения (полдень, без анализа бхав)</label>
      </div>
      <div style="display:flex;gap:8px;justify-content:center;flex-wrap:wrap">
        <input type="text" id="name-input" class="calc-input" placeholder="Ник (для отчёта)" style="width:150px;text-align:left;font-size:12px;padding:8px 12px;opacity:.6" aria-label="Имя">
        <select id="gender-input" class="calc-input" style="width:auto;min-width:70px;appearance:auto;-webkit-appearance:menulist;font-size:12px;padding:8px;opacity:.6;display:none" aria-label="&#1055;&#1086;&#1083;">
          <option value="">&#1055;&#1086;&#1083;</option>
          <option value="m">&#1052;</option>
          <option value="f">&#1046;</option>
        </select>
      </div>
      <button class="btn-accent" onclick="doCalculate()" id="calc-btn" style="font-size:15px;padding:18px 48px;width:100%;max-width:320px">&#x0917;&#x0923;&#x0928;&#x093E; &#8594; &#1056;&#1072;&#1089;&#1089;&#1095;&#1080;&#1090;&#1072;&#1090;&#1100;</button>
    </div>
    <div class="calc-hint" id="calc-hint"></div>
    <div style="font-size:10px;color:var(--text-d);text-align:center;margin-top:4px">&#1041;&#1077;&#1089;&#1087;&#1083;&#1072;&#1090;&#1085;&#1086; &middot; &#1041;&#1077;&#1079; &#1088;&#1077;&#1075;&#1080;&#1089;&#1090;&#1088;&#1072;&#1094;&#1080;&#1080; &middot; Whole Sign Houses</div>
    <div class="calc-error" id="calc-error"></div>
  </div>
</section>

<!-- ===============================================================
     RESULT (hidden until calculated)
     =============================================================== -->
<section class="section" id="sutra-pricing" style="padding:40px 0;text-align:center"><div class="container" style="max-width:600px;margin:0 auto"><div style="font-family:Cinzel,serif;font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:var(--gold,#C9A96E);margin-bottom:10px">Стоимость</div><h2 style="font-family:'Cormorant Garamond',serif;font-size:26px;color:var(--gold,#C9A96E);margin:0 0 12px">Полный PDF-отчёт — 1 500 ₽</h2><p style="color:var(--text-m,#c9bfb0);font-size:14px;line-height:1.8;margin:0 0 6px">или 150 Telegram Stars. Разовая оплата, без подписки.</p><p style="color:var(--text-m,#c9bfb0);font-size:14px;line-height:1.8;margin:0 0 10px">Базовый онлайн-расчёт — без оплаты.</p><p style="color:var(--text-d,#8a8a8a);font-size:12px;line-height:1.7;max-width:520px;margin:0 auto">Оплата банковской картой РФ или через СБП (платёжный сервис «Робокасса») либо в Telegram Stars. Кассовый чек самозанятого формируется автоматически в сервисе «Мой налог» (режим НПД). <a href="/offer/" style="color:var(--gold,#C9A96E)">Условия оказания, оплаты и возврата — в оферте →</a></p></div></section><section id="result">
  <hr class="divider">
  <div class="section">
    <div class="container">
      <div class="s-label">Phala Jyotish</div>
      <h2 style="margin-bottom:8px" id="result-heading">Janma Kundali: <em id="result-name-display"></em></h2>

      <!-- Chart + Planet Table side by side -->
      <div class="chart-table-grid" id="chart-table-area">
        <div class="chart-wrapper">
          <div id="rashi-chart" data-style="north"></div>
        </div>
        <div id="planet-table"></div>
      </div>

      <!-- Gate-specific custom result -->
      <div id="gate-result" style="margin-top:16px"></div>

      <!-- Calculation timestamp -->
      <div class="result-timestamp" id="result-timestamp"></div>

      <!-- Progress bar -->
      <div id="progress-bar-container" style="display:none;margin:24px 0">
        <div style="display:flex;justify-content:space-between;margin-bottom:6px">
          <span style="font-size:11px;color:var(--text-d)">&#1056;&#1072;&#1089;&#1096;&#1080;&#1092;&#1088;&#1086;&#1074;&#1072;&#1085;&#1086;</span>
          <span style="font-size:11px;color:var(--accent)" id="progress-pct">20%</span>
        </div>
        <div class="paywall-progress-bar">
          <div id="progress-bar-fill" style="width:0%;height:100%;background:linear-gradient(90deg,var(--accent),var(--accent-b));border-radius:3px;transition:width 1s"></div>
        </div>
        <p style="font-size:11px;color:var(--text-d);margin-top:8px;text-align:center">&#1044;&#1083;&#1103; &#1087;&#1086;&#1083;&#1085;&#1086;&#1081; &#1088;&#1072;&#1089;&#1096;&#1080;&#1092;&#1088;&#1086;&#1074;&#1082;&#1080; &mdash; &#1079;&#1072;&#1082;&#1072;&#1078;&#1080;&#1090;&#1077; &#1087;&#1088;&#1077;&#1084;&#1080;&#1072;&#1083;&#1100;&#1085;&#1099;&#1081; &#1086;&#1090;&#1095;&#1105;&#1090;</p>
      </div>

      <!-- Blurred paywall sections -->
      <div class="blurred-section" style="margin-top:24px" id="paywall-blurred">
        <div class="paywall-overlay">
          <div class="paywall-lock">&#9737;</div>
          <div class="paywall-title">&#1055;&#1086;&#1083;&#1085;&#1099;&#1081; Jyotish-&#1086;&#1090;&#1095;&#1105;&#1090;</div>
          <p class="paywall-sub">Vimshottari Dasha, Ashtakavarga, Shadbala, Yogas, Gochara, Upayas &mdash; 20+ &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094; &#1088;&#1072;&#1089;&#1096;&#1080;&#1092;&#1088;&#1086;&#1074;&#1082;&#1080;</p>
          <span style="font-size:12px;color:var(--accent);font-family:Cinzel,serif;letter-spacing:.1em;text-transform:uppercase">&uarr; &#1054;&#1092;&#1086;&#1088;&#1084;&#1080;&#1090;&#1077; &#1079;&#1072;&#1082;&#1072;&#1079; &#1085;&#1080;&#1078;&#1077; &darr;</span>
        </div>
        <div class="blurred-content" id="paywall-blurred-content"></div>
      </div>

      <!-- Purchase block -->
      <div id="purchase-block" style="display:none;text-align:center;margin:24px 0;padding:28px;border:2px solid var(--accent);border-radius:4px;background:var(--surface)">
        <div style="font-family:Cinzel,serif;font-size:11px;letter-spacing:.2em;color:var(--accent);margin-bottom:12px;text-transform:uppercase">Sampurna Phala &mdash; &#1055;&#1086;&#1083;&#1085;&#1072;&#1103; &#1088;&#1072;&#1089;&#1096;&#1080;&#1092;&#1088;&#1086;&#1074;&#1082;&#1072;</div>
        <p style="font-size:12px;color:var(--text-d);margin-bottom:16px">20+ &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;: Vimshottari Dasha, Ashtakavarga, Shadbala, Yogas, Gochara, &#1072;&#1085;&#1072;&#1083;&#1080;&#1079;</p>
        <!-- Sample PDF -->
        <div style="margin-bottom:16px">
          <a href="/sample-report.pdf" target="_blank" style="font-size:11px;color:var(--accent);text-decoration:underline">&#x1F4C4; &#1054;&#1073;&#1088;&#1072;&#1079;&#1077;&#1094; &#1086;&#1090;&#1095;&#1105;&#1090;&#1072; (PDF)</a>
        </div>
        <div style="margin-bottom:16px">
          <a href="javascript:void(0)" onclick="buildMuhurtaPDF()" style="display:inline-block;padding:11px 24px;font-size:12px;color:var(--accent);border:1px solid var(--accent);border-radius:2px;text-decoration:none;font-family:Jost,sans-serif">&#x1F4C4; Скачать отчёт мухурты (PDF)</a>
        </div>
        <!-- Legal checkboxes -->
        <div style="max-width:400px;margin:0 auto 16px;text-align:left">
          <label style="display:flex;align-items:flex-start;gap:8px;font-size:11px;color:var(--text-m);margin-bottom:8px;cursor:pointer;line-height:1.5">
            <input type="checkbox" id="consent-offer" onchange="updatePremiumBtn()" style="margin-top:2px;accent-color:var(--accent);flex-shrink:0">
            <span>&#1071; &#1086;&#1079;&#1085;&#1072;&#1082;&#1086;&#1084;&#1080;&#1083;&#1089;&#1103; &#1089; &#1091;&#1089;&#1083;&#1086;&#1074;&#1080;&#1103;&#1084;&#1080; <a href="/offer/" target="_blank" style="color:var(--accent)">&#1086;&#1092;&#1077;&#1088;&#1090;&#1099;</a> &#1080; &#1087;&#1086;&#1085;&#1080;&#1084;&#1072;&#1102; &#1080;&#1085;&#1092;&#1086;&#1088;&#1084;&#1072;&#1094;&#1080;&#1086;&#1085;&#1085;&#1099;&#1081; &#1093;&#1072;&#1088;&#1072;&#1082;&#1090;&#1077;&#1088; &#1087;&#1088;&#1086;&#1076;&#1091;&#1082;&#1090;&#1072;</span>
          </label>
          <label style="display:flex;align-items:flex-start;gap:8px;font-size:11px;color:var(--text-m);cursor:pointer;line-height:1.5">
            <input type="checkbox" id="consent-privacy" onchange="updatePremiumBtn()" style="margin-top:2px;accent-color:var(--accent);flex-shrink:0">
            <span>&#1071; &#1089;&#1086;&#1075;&#1083;&#1072;&#1089;&#1077;&#1085; &#1085;&#1072; &#1086;&#1073;&#1088;&#1072;&#1073;&#1086;&#1090;&#1082;&#1091; &#1087;&#1077;&#1088;&#1089;&#1086;&#1085;&#1072;&#1083;&#1100;&#1085;&#1099;&#1093; &#1076;&#1072;&#1085;&#1085;&#1099;&#1093; &#1074; &#1089;&#1086;&#1086;&#1090;&#1074;&#1077;&#1090;&#1089;&#1090;&#1074;&#1080;&#1080; &#1089; <a href="/privacy/" target="_blank" style="color:var(--accent)">&#1087;&#1086;&#1083;&#1080;&#1090;&#1080;&#1082;&#1086;&#1081; &#1082;&#1086;&#1085;&#1092;&#1080;&#1076;&#1077;&#1085;&#1094;&#1080;&#1072;&#1083;&#1100;&#1085;&#1086;&#1089;&#1090;&#1080;</a></span>
          </label>
        </div>
        <!-- Email -->
        <div style="max-width:400px;margin:0 auto 12px">
          
          
        </div>
        <!-- Promo code -->
        <div style="max-width:400px;margin:0 auto 16px">
          <div style="display:flex;gap:8px;align-items:center">
            <input type="text" id="promo-code" placeholder="&#1055;&#1088;&#1086;&#1084;&#1086;&#1082;&#1086;&#1076;" style="flex:1;padding:10px 14px;font-size:12px;background:var(--surface);border:1px solid var(--border-s);border-radius:2px;color:var(--text-m);font-family:Jost,sans-serif" oninput="checkPromo()">
            <span id="promo-status" style="font-size:11px;min-width:80px"></span>
          </div>
          <div id="promo-hint" style="font-size:10px;color:var(--text-d);margin-top:4px;text-align:center">&#1055;&#1077;&#1088;&#1074;&#1099;&#1081; &#1088;&#1072;&#1089;&#1095;&#1105;&#1090;? &#1055;&#1088;&#1086;&#1084;&#1086;&#1082;&#1086;&#1076; <span style="color:var(--accent);cursor:pointer" onclick="document.getElementById('promo-code').value='FIRST';checkPromo()">FIRST</span></div>
        </div>
        <!-- Price -->
        <div id="price-display" style="text-align:center;margin-bottom:12px">
          <span style="font-family:Cinzel,serif;font-size:20px;color:var(--accent);letter-spacing:.05em" id="price-value"></span>
        </div>
        <a href="javascript:void(0)" id="premium-buy-btn" onclick="if(checkConsent())handlePurchase()" style="display:block;width:100%;max-width:400px;margin:0 auto 12px;text-align:center;background:linear-gradient(135deg,var(--accent),var(--accent-b));color:#08060A;padding:18px 32px;font-family:'Cinzel',serif;font-size:13px;letter-spacing:.12em;text-decoration:none;border-radius:2px;text-transform:uppercase;box-shadow:0 0 30px rgba(201,169,110,0.2);opacity:0.4;pointer-events:none">&#183; Sampurna Phala &mdash; &#1055;&#1086;&#1083;&#1085;&#1072;&#1103; &#1088;&#1072;&#1089;&#1096;&#1080;&#1092;&#1088;&#1086;&#1074;&#1082;&#1072;</a>
        <!-- Telegram Stars -->
        <a id="tg-pay-btn" href="#" target="_blank" style="display:none;width:100%;max-width:400px;margin:0 auto 8px;text-align:center;padding:14px 32px;background:linear-gradient(135deg,#26A5E4,#0088cc);color:#fff;font-family:Cinzel,serif;font-size:12px;letter-spacing:.1em;text-decoration:none;border-radius:2px;text-transform:uppercase">
          <svg width="14" height="14" viewBox="0 0 24 24" fill="currentColor" style="vertical-align:middle;margin-right:6px"><path d="M11.99 0C5.37 0 0 5.37 0 12s5.37 12 11.99 12S24 18.63 24 12 18.61 0 11.99 0zm5.87 8.21l-1.97 9.28c-.15.66-.54.82-1.09.51l-3.02-2.22-1.46 1.4c-.16.16-.3.3-.61.3l.22-3.06 5.56-5.02c.24-.22-.05-.34-.37-.13l-6.87 4.33-2.96-.92c-.64-.2-.66-.64.14-.95l11.59-4.47c.53-.2 1 .13.83.95z"/></svg>
          &#1054;&#1087;&#1083;&#1072;&#1090;&#1080;&#1090;&#1100; &#1095;&#1077;&#1088;&#1077;&#1079; Telegram
        </a>
        <div style="display:flex;justify-content:center;gap:16px;margin:12px auto;max-width:400px;font-size:11px;color:var(--text-d)">
          <span>&#10003; &#1052;&#1075;&#1085;&#1086;&#1074;&#1077;&#1085;&#1085;&#1072;&#1103; &#1076;&#1086;&#1089;&#1090;&#1072;&#1074;&#1082;&#1072;</span>
          <span>&#10003; &#1041;&#1077;&#1079; &#1087;&#1086;&#1076;&#1087;&#1080;&#1089;&#1082;&#1080;</span>
          <span>&#10003; PDF + Email</span>
        </div>
        <!-- Share -->
        <div style="display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:12px;margin-top:20px;padding-top:16px;border-top:1px solid var(--border-s)">
          <span style="font-size:11px;color:var(--text-d)">&#1055;&#1086;&#1076;&#1077;&#1083;&#1080;&#1090;&#1100;&#1089;&#1103;:</span>
          <a href="javascript:void(0)" onclick="shareResult('telegram')" style="font-size:12px;color:var(--accent)">TG</a>
          <a href="javascript:void(0)" onclick="shareResult('whatsapp')" style="font-size:12px;color:var(--mint)">WA</a>
          <a href="javascript:void(0)" onclick="shareResult('copy')" style="font-size:12px;color:var(--text-d);cursor:pointer">&#x1F517;</a>
        </div>
      </div>
    </div>
  </div>
</section>

<!-- ===============================================================
     FEATURES TABLE
     =============================================================== -->
<hr class="divider" id="pricing">
<section class="section">
  <div class="container">
    <div class="s-label">Seva Vibhaga</div>
    <h2>&#1041;&#1072;&#1079;&#1086;&#1074;&#1099;&#1081; &middot; <em>Sampurna Phala</em></h2>
    <div class="feat-grid" style="max-width:700px;margin:0 auto" id="feat-grid"></div>
    <p style="text-align:center;font-size:12px;color:var(--text-d);margin-top:20px">&#1054;&#1076;&#1085;&#1086;&#1088;&#1072;&#1079;&#1086;&#1074;&#1099;&#1081; &#1087;&#1083;&#1072;&#1090;&#1105;&#1078; &middot; &#1041;&#1077;&#1079; &#1087;&#1086;&#1076;&#1087;&#1080;&#1089;&#1082;&#1080; &middot; Swiss Ephemeris</p>
  </div>
</section>

<!-- ===============================================================
     PROOF SECTION
     =============================================================== -->
<hr class="divider">
<section class="section">
  <div class="container">
    <div class="s-label">Vishvasaniyata</div>
    <h2 style="margin-bottom:48px">&#1055;&#1086;&#1095;&#1077;&#1084;&#1091; &#1085;&#1072;&#1084; <em>&#1076;&#1086;&#1074;&#1077;&#1088;&#1103;&#1102;&#1090;</em></h2>
    <div class="proof-grid">
      <div class="proof-card">
        <div class="proof-card-num">SE 2.10</div>
        <div class="proof-card-label">Swiss Ephemeris</div>
        <div class="proof-card-desc">&#1058;&#1072; &#1078;&#1077; &#1073;&#1080;&#1073;&#1083;&#1080;&#1086;&#1090;&#1077;&#1082;&#1072;, &#1095;&#1090;&#1086; &#1074; Jagannatha Hora, Parashara's Light &#1080; Solar Fire</div>
      </div>
      <div class="proof-card">
        <div class="proof-card-num">DE431</div>
        <div class="proof-card-label">NASA JPL</div>
        <div class="proof-card-desc">&#1069;&#1092;&#1077;&#1084;&#1077;&#1088;&#1080;&#1076;&#1099; Jet Propulsion Laboratory. &#1058;&#1086;&#1095;&#1085;&#1086;&#1089;&#1090;&#1100; &plusmn;0.001&deg;</div>
      </div>
      <div class="proof-card">
        <div class="proof-card-num">79</div>
        <div class="proof-card-label">API Endpoints</div>
        <div class="proof-card-desc">&#1042;&#1080;&#1084;&#1096;&#1086;&#1090;&#1090;&#1072;&#1088;&#1080;, &#1040;&#1096;&#1090;&#1072;&#1082;&#1072;&#1074;&#1072;&#1088;&#1075;&#1072;, &#1064;&#1072;&#1076;&#1073;&#1072;&#1083;&#1072;, &#1043;&#1086;&#1095;&#1072;&#1088;&#1072;, KP, &#1044;&#1078;&#1072;&#1081;&#1084;&#1080;&#1085;&#1080;</div>
      </div>
      <div class="proof-card">
        <div class="proof-card-num">4 500</div>
        <div class="proof-card-label">KB Entries</div>
        <div class="proof-card-desc">&#1041;&#1072;&#1079;&#1072; &#1079;&#1085;&#1072;&#1085;&#1080;&#1081;: &#1087;&#1083;&#1072;&#1085;&#1077;&#1090;&#1072; &#1074; &#1079;&#1085;&#1072;&#1082;&#1077;, &#1076;&#1086;&#1084;&#1077;, &#1085;&#1072;&#1082;&#1096;&#1072;&#1090;&#1088;&#1077;, &#1081;&#1086;&#1075;&#1080;</div>
      </div>
    </div>
    <p style="text-align:center;margin-top:32px;font-size:13px;color:var(--text-m)">
      &#1063;&#1072;&#1089;&#1090;&#1100; &#1101;&#1082;&#1086;&#1089;&#1080;&#1089;&#1090;&#1077;&#1084;&#1099; <a href="https://sutra.center" target="_blank" style="color:var(--accent)">SUTRA</a> &mdash; 7 &#1089;&#1080;&#1089;&#1090;&#1077;&#1084; &#1072;&#1085;&#1072;&#1083;&#1080;&#1079;&#1072;, 19 &#1089;&#1072;&#1081;&#1090;&#1086;&#1074;, &#1077;&#1076;&#1080;&#1085;&#1099;&#1081; backend
    </p>
  </div>
</section>

<!-- ===============================================================
     SEO ARTICLE
     =============================================================== -->
<hr class="divider">
<section class="section">
  <div class="container">
    <div class="s-label">Jnana Kosha</div>
    <h2 style="margin-bottom:32px" id="seo-h2"></h2>
    <div class="article" id="seo-article"></div>
  </div>
</section>

<!-- ===============================================================
     FAQ
     =============================================================== -->
<hr class="divider" id="faq-section">
<section class="section">
  <div class="container">
    <div class="s-label">Prashna Uttara</div>
    <h2 style="margin-bottom:40px">&#1063;&#1072;&#1089;&#1090;&#1099;&#1077; &#1074;&#1086;&#1087;&#1088;&#1086;&#1089;&#1099;</h2>
    <div class="faq-list" id="faq-list"></div>
  </div>
</section>

<!-- ===============================================================
     BRIDGE (cross-sell)
     =============================================================== -->
<hr class="divider">
<section class="bridge">
  <div class="container" style="position:relative">
    <div class="bridge-glow"></div>
    <div class="s-label">Sutra Mandala</div>
    <h2 class="bridge-headline" id="bridge-h2"></h2>
    <p class="bridge-body" id="bridge-body"></p>
    <a class="btn-ghost" id="bridge-cta" target="_blank"></a>
    <div class="bridge-links" id="bridge-links"></div>
  </div>
</section>

<!-- DISCLAIMER -->
<div style="max-width:600px;margin:24px auto;padding:16px;font-size:11px;color:var(--text-d);text-align:center;border-top:1px solid var(--border-s)">
  &#1052;&#1072;&#1090;&#1077;&#1088;&#1080;&#1072;&#1083;&#1099; &#1085;&#1086;&#1089;&#1103;&#1090; &#1080;&#1085;&#1092;&#1086;&#1088;&#1084;&#1072;&#1094;&#1080;&#1086;&#1085;&#1085;&#1086;-&#1072;&#1085;&#1072;&#1083;&#1080;&#1090;&#1080;&#1095;&#1077;&#1089;&#1082;&#1080;&#1081; &#1093;&#1072;&#1088;&#1072;&#1082;&#1090;&#1077;&#1088;. &#1053;&#1077; &#1103;&#1074;&#1083;&#1103;&#1102;&#1090;&#1089;&#1103; &#1075;&#1072;&#1076;&#1072;&#1085;&#1080;&#1077;&#1084;, &#1084;&#1077;&#1076;&#1080;&#1094;&#1080;&#1085;&#1089;&#1082;&#1086;&#1081; &#1080;&#1083;&#1080; &#1092;&#1080;&#1085;&#1072;&#1085;&#1089;&#1086;&#1074;&#1086;&#1081; &#1082;&#1086;&#1085;&#1089;&#1091;&#1083;&#1100;&#1090;&#1072;&#1094;&#1080;&#1077;&#1081;. 16+
</div>

<!-- ===============================================================
     FOOTER
     =============================================================== -->
<section id="tg-channel-cta" style="margin:60px auto 40px;max-width:760px;padding:0 24px;"><a href="https://t.me/dzhyotish_karma" target="_blank" rel="noopener" style="display:flex;align-items:center;gap:18px;padding:24px 28px;background:var(--surface);border:1px solid var(--border-s);border-left:3px solid var(--gold,var(--rahu,var(--accent,#C9A96E)));border-radius:6px;text-decoration:none;transition:border-left-color .25s,transform .25s;" onmouseover="this.style.transform='translateX(4px)'" onmouseout="this.style.transform='none'"><div style="font-size:32px;line-height:1;flex-shrink:0;">✈︎</div><div style="flex:1;"><div style="font-family:'Cinzel',serif;font-size:10px;letter-spacing:.25em;color:var(--gold,var(--rahu,var(--accent,#C9A96E)));text-transform:uppercase;margin-bottom:6px;">Джйотиш-канал</div><div style="font-family:'Cormorant Garamond',serif;font-size:18px;color:var(--text);margin-bottom:4px;">@dzhyotish_karma</div><div style="font-size:13px;color:var(--text-m);line-height:1.5;">Мухурта · благоприятное время · ежедневные транзиты</div></div><div style="font-family:'Cinzel',serif;font-size:10px;letter-spacing:.2em;color:var(--gold,var(--rahu,var(--accent,#C9A96E)));text-transform:uppercase;flex-shrink:0;">Подписаться →</div></a></section>
<section class="section"><div class="container"><h2>Брахма-мухурта и Абхиджит-мухурта</h2><p>Мухурта — благоприятный промежуток времени для важных дел. Две самые известные:</p><h3>Брахма-мухурта</h3><p>Период примерно за 1,5 часа до восхода Солнца (около 04:00–05:30) — лучшее время для практик, медитации и подъёма: ум ясен, энергия чиста.</p><h3>Абхиджит-мухурта</h3><p>Около солнечного полудня (~24 минуты вокруг местного полудня) — универсально благоприятное, «победное» время для начинаний.</p><p>Калькулятор считает Брахма- и Абхиджит-мухурту, а также благоприятные и неблагоприятные промежутки на вашу дату и место.</p></div></section><section class="section"><div class="container"><div id="sutra-eco-brand"><div class="seb-eye">Экосистема SUTRA</div><h3 class="seb-h">Грани вашей личности</h3><p class="seb-sub">Одна дата рождения — разные ведические системы раскрывают разные слои. Это всё вы.</p><div class="seb-grid"><a rel="nofollow" class="seb-card" href="https://panchang.su/"><span class="seb-n">◇ Панчанг</span><span class="seb-t">ведический календарь дня →</span></a><a rel="nofollow" class="seb-card" href="https://kundli.ru/"><span class="seb-n">◇ Кундли</span><span class="seb-t">натальная карта джйотиш (D1) →</span></a><a rel="nofollow" class="seb-card" href="https://nakshatra.su/"><span class="seb-n">◇ Накшатра</span><span class="seb-t">лунная стоянка по дате рождения →</span></a><a rel="nofollow" class="seb-card" href="https://lagna.su/"><span class="seb-n">◇ Лагна</span><span class="seb-t">восходящий знак (асцендент) по дате рождения →</span></a></div><div class="seb-foot">часть платформы метафизического анализа SUTRA</div></div></div></section><footer class="footer">
  <div class="container" style="line-height:2">
    <p id="footer-copy"></p>
    <p style="font-size:10px;margin-top:4px">&#x1F512; &#1044;&#1072;&#1085;&#1085;&#1099;&#1077; &#1085;&#1077; &#1093;&#1088;&#1072;&#1085;&#1103;&#1090;&#1089;&#1103; &middot; Swiss Ephemeris &middot; Lahiri Ayanamsha &middot; 16+</p>
    <p style="font-size:10px;margin-top:4px;color:var(--text-d)" id="footer-contact"></p>
    <p style="font-size:9px;margin-top:2px;opacity:.4" id="footer-org"></p>
    <!-- Feedback form -->
    <div style="max-width:400px;margin:20px auto;padding:20px;border:1px solid var(--border-s);border-radius:4px;background:var(--surface)">
      <div style="text-align:center;margin-bottom:12px">
        <span style="font-family:Cinzel,serif;font-size:11px;letter-spacing:.15em;text-transform:uppercase;color:var(--accent)">Sampark</span>
        <p style="font-size:11px;color:var(--text-d);margin-top:4px">&#1042;&#1086;&#1087;&#1088;&#1086;&#1089;, &#1087;&#1086;&#1078;&#1077;&#1083;&#1072;&#1085;&#1080;&#1077; &#1080;&#1083;&#1080; &#1086;&#1090;&#1079;&#1099;&#1074;</p>
      </div>
      <form id="feedback-form" class="fb-form" onsubmit="sendFeedback(event)" style="display:flex;flex-direction:column;gap:8px">
        <input type="text" id="fb-hp" name="website" autocomplete="off" tabindex="-1" style="position:absolute;left:-9999px;opacity:0;height:0">
        <input type="text" id="fb-name" placeholder="&#1042;&#1072;&#1096;&#1077; &#1080;&#1084;&#1103;">
        <input type="email" id="fb-email" placeholder="Email">
        <textarea id="fb-message" placeholder="&#1042;&#1072;&#1096;&#1077; &#1089;&#1086;&#1086;&#1073;&#1097;&#1077;&#1085;&#1080;&#1077;..." rows="3"></textarea>
        <button type="submit" style="padding:10px;background:var(--accent);color:#08060A;border:none;border-radius:2px;font-family:Cinzel,serif;font-size:11px;letter-spacing:.1em;text-transform:uppercase;cursor:pointer">&#1054;&#1090;&#1087;&#1088;&#1072;&#1074;&#1080;&#1090;&#1100;</button>
      </form>
      <div id="fb-status" style="text-align:center;font-size:11px;margin-top:8px;display:none"></div>
    </div>
    <!--noindex-->
    <nav style="margin-top:8px;font-size:11px;line-height:1.8" data-nosnippet>
      <a href="/about/" rel="nofollow">О проекте</a> &middot;
      <a href="/requisites/" rel="nofollow">Реквизиты</a> &middot;
      <a href="/memorandum/" rel="nofollow">Меморандум</a><br>
      <a href="/offer/" rel="nofollow">Оферта</a> &middot;
      <a href="/privacy/" rel="nofollow">Политика конфиденциальности</a> &middot;
      <a href="/terms/" rel="nofollow">Пользовательское соглашение</a> &middot;
      <a href="/cooperation/" rel="nofollow">Сотрудничество</a>
    </nav>
    <!--/noindex-->
  </div>
</footer>

<!-- ===============================================================
     COOKIE BANNER
     =============================================================== -->
<div class="cookie-banner" id="cookie-banner">
  <span>&#1069;&#1090;&#1086;&#1090; &#1089;&#1072;&#1081;&#1090; &#1080;&#1089;&#1087;&#1086;&#1083;&#1100;&#1079;&#1091;&#1077;&#1090; &#1090;&#1077;&#1093;&#1085;&#1080;&#1095;&#1077;&#1089;&#1082;&#1080;&#1077; cookie. <a href="/privacy/" style="color:var(--accent)">&#1055;&#1086;&#1076;&#1088;&#1086;&#1073;&#1085;&#1077;&#1077;</a></span>
  <button onclick="acceptCookies()" style="padding:6px 16px;background:var(--accent);color:#08060A;border-radius:2px;font-size:11px;font-family:Cinzel,serif;letter-spacing:.1em">&#1055;&#1088;&#1080;&#1085;&#1103;&#1090;&#1100;</button>
  <button onclick="declineCookies()" style="padding:6px 16px;border:1px solid var(--border);color:var(--text-d);border-radius:2px;font-size:11px">&#1054;&#1090;&#1082;&#1083;&#1086;&#1085;&#1080;&#1090;&#1100;</button>
</div>

<!-- ===============================================================
     LOADING OVERLAY
     =============================================================== -->
<div class="loading-overlay" id="ai-loading-overlay">
  <div class="loading-spinner"></div>
  <div style="font-family:'Cormorant Garamond',serif;font-size:22px;margin-bottom:8px" id="loading-title">&#1043;&#1077;&#1085;&#1077;&#1088;&#1080;&#1088;&#1091;&#1077;&#1084; Jyotish-&#1086;&#1090;&#1095;&#1105;&#1090;...</div>
  <div class="loading-progress"><div class="loading-progress-fill" id="loading-progress-fill"></div></div>
  <div class="loading-status" id="loading-status"></div>
  <div class="loading-hint">&#1054;&#1073;&#1099;&#1095;&#1085;&#1086; 20&ndash;40 &#1089;&#1077;&#1082;&#1091;&#1085;&#1076;</div>
</div>

<!-- ===============================================================
     WIDGETS: Panchang Bar, Rashi Chart, Planet Table, Sutra Sky
     =============================================================== -->
<script src="/widgets/panchang-bar.js?v=1.0.1" data-api="https://api.sutra.center"></script>
<script src="/widgets/rashi-chart.js?v=1.0.1"></script>
<script src="/widgets/planet-table.js?v=1.0.1"></script>
<script src="/js/sutra-sky.js?v=1.0.1"></script>

<!-- ===============================================================
     JAVASCRIPT
     =============================================================== -->
<script>
/* ================================================================
   API URL auto-detect
   ================================================================ */
var API = window.location.hostname === 'localhost' ? 'http://localhost:8000' : 'https://api.sutra.center';

/* ================================================================
   LANGUAGE SYSTEM (RU/EN)
   ================================================================ */
var LANG=(function(){try{return localStorage.getItem('sutra-lang')||'ru'}catch(e){return'ru'}})();

var TEXTS={
  // Hero
  hero_h1:{ru:'\u041a\u0430\u043a\u043e\u0439 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0434\u0435\u043d\u044c \u0434\u043b\u044f \u0432\u0430\u0436\u043d\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f?',en:'Is today a good day for an important decision?'},
  hero_sub:{ru:'\u041f\u0430\u043d\u0447\u0430\u043d\u0433, \u043f\u043b\u0430\u043d\u0435\u0442\u0430\u0440\u043d\u044b\u0435 \u0445\u043e\u0440\u044b, \u0420\u0430\u0445\u0443 \u041a\u0430\u0430\u043b \u2014 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 \u0440\u0430\u0441\u0447\u0451\u0442 \u0431\u043b\u0430\u0433\u043e\u043f\u0440\u0438\u044f\u0442\u043d\u043e\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438',en:'Panchang, planetary hours, Rahu Kaal \u2014 free auspicious timing calculation'},
  hero_cta:{ru:'\u041f\u043e\u0434\u043e\u0431\u0440\u0430\u0442\u044c \u043c\u0443\u0445\u0443\u0440\u0442\u0443 \u0434\u043b\u044f \u0441\u043e\u0431\u044b\u0442\u0438\u044f',en:'Find muhurta for event'},
  hero_natal:{ru:'\u041d\u0430\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u043a\u0430\u0440\u0442\u0430',en:'Natal chart'},
  hero_free:{ru:'\u0411\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e \u00b7 \u0411\u0435\u0437 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u00b7 Swiss Ephemeris',en:'Free \u00b7 No registration \u00b7 Swiss Ephemeris'},
  of_100:{ru:'\u0438\u0437 100',en:'of 100'},
  loading:{ru:'\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430...',en:'Loading...'},
  excellent:{ru:'\u041e\u0442\u043b\u0438\u0447\u043d\u043e',en:'Excellent'},
  good:{ru:'\u0425\u043e\u0440\u043e\u0448\u043e',en:'Good'},
  neutral_q:{ru:'\u041d\u0435\u0439\u0442\u0440\u0430\u043b\u044c\u043d\u043e',en:'Neutral'},
  avoid:{ru:'\u0418\u0437\u0431\u0435\u0433\u0430\u0442\u044c',en:'Avoid'},
  // Panchang
  tithi:{ru:'\u0422\u0438\u0442\u0445\u0438',en:'Tithi'},
  nakshatra:{ru:'\u041d\u0430\u043a\u0448\u0430\u0442\u0440\u0430',en:'Nakshatra'},
  yoga:{ru:'\u0419\u043e\u0433\u0430',en:'Yoga'},
  karana:{ru:'\u041a\u0430\u0440\u0430\u043d\u0430',en:'Karana'},
  pada:{ru:'\u041f\u0430\u0434\u0430',en:'Pada'},
  abhijit:{ru:'\u0410\u0431\u0445\u0438\u0434\u0436\u0438\u0442',en:'Abhijit'},
  rahu_kaal:{ru:'\u0420\u0430\u0445\u0443 \u041a\u0430\u0430\u043b',en:'Rahu Kaal'},
  moon_in:{ru:'\u041b\u0443\u043d\u0430 \u0432',en:'Moon in'},
  // Calculator
  muhurta_calc_h2:{ru:'\u041f\u043e\u0434\u0431\u0435\u0440\u0438\u0442\u0435 \u0431\u043b\u0430\u0433\u043e\u043f\u0440\u0438\u044f\u0442\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f',en:'Find auspicious timing'},
  calc_btn:{ru:'\u0420\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043c\u0443\u0445\u0443\u0440\u0442\u0443',en:'Calculate muhurta'},
  event_date:{ru:'\u0414\u0430\u0442\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u044f (\u0414\u0414.\u041c\u041c.\u0413\u0413\u0413\u0413)',en:'Event date (DD.MM.YYYY)'},
  event_time:{ru:'\u0412\u0440\u0435\u043c\u044f (\u0447\u0447:\u043c\u043c)',en:'Time (hh:mm)'},
  event_city:{ru:'\u0413\u043e\u0440\u043e\u0434',en:'City'},
  // Event types
  ev_general:{ru:'\u041e\u0431\u0449\u0438\u0435 \u0434\u0435\u043b\u0430',en:'General'},
  ev_marriage:{ru:'\u0421\u0432\u0430\u0434\u044c\u0431\u0430',en:'Wedding'},
  ev_griha:{ru:'\u041d\u043e\u0432\u043e\u0441\u0435\u043b\u044c\u0435',en:'Housewarming'},
  ev_business:{ru:'\u0411\u0438\u0437\u043d\u0435\u0441',en:'Business'},
  ev_travel:{ru:'\u041f\u043e\u0435\u0437\u0434\u043a\u0430',en:'Travel'},
  ev_medical:{ru:'\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u044f',en:'Surgery'},
  ev_education:{ru:'\u041e\u0431\u0443\u0447\u0435\u043d\u0438\u0435',en:'Education'},
  ev_legal:{ru:'\u0421\u0443\u0434 / \u0418\u0441\u043a',en:'Legal / Court'},
  // Calendar
  cal_h2:{ru:'\u041a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044c \u043c\u0443\u0445\u0443\u0440\u0442',en:'Muhurta Calendar'},
  cal_sub:{ru:'\u0411\u043b\u0430\u0433\u043e\u043f\u0440\u0438\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0434\u043d\u044f \u0434\u043b\u044f 7 \u0442\u0438\u043f\u043e\u0432 \u0441\u043e\u0431\u044b\u0442\u0438\u0439. \u0414\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0435 15 \u0434\u043d\u0435\u0439.',en:'Auspiciousness of each day for 7 event types. Data for the next 15 days.'},
  cal_excellent:{ru:'\u041e\u0442\u043b\u0438\u0447\u043d\u043e',en:'Excellent'},
  cal_good:{ru:'\u0425\u043e\u0440\u043e\u0448\u043e',en:'Good'},
  cal_neutral:{ru:'\u041d\u0435\u0439\u0442\u0440\u0430\u043b\u044c\u043d\u043e',en:'Neutral'},
  cal_avoid:{ru:'\u0418\u0437\u0431\u0435\u0433\u0430\u0442\u044c',en:'Avoid'},
  cal_date:{ru:'\u0414\u0430\u0442\u0430',en:'Date'},
  // Hours
  hours_h2:{ru:'\u041f\u043b\u0430\u043d\u0435\u0442\u0430\u0440\u043d\u044b\u0435 \u0445\u043e\u0440\u044b \u0441\u0435\u0433\u043e\u0434\u043d\u044f',en:'Planetary Hours Today'},
  hours_ruler:{ru:'\u0423\u043f\u0440\u0430\u0432\u0438\u0442\u0435\u043b\u044c \u0434\u043d\u044f',en:'Day Ruler'},
  hours_now:{ru:'\u0421\u0415\u0419\u0427\u0410\u0421',en:'NOW'},
  // Natal
  natal_h2:{ru:'\u041d\u0430\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u043a\u0430\u0440\u0442\u0430 \u2014 \u0443\u0437\u043d\u0430\u0439\u0442\u0435 \u0441\u0435\u0431\u044f \u0433\u043b\u0443\u0431\u0436\u0435',en:'Natal Chart \u2014 Know Yourself Deeper'},
  calc_date:{ru:'\u0414\u0430\u0442\u0430 \u0440\u043e\u0436\u0434\u0435\u043d\u0438\u044f',en:'Date of birth'},
  calc_time:{ru:'\u0412\u0440\u0435\u043c\u044f (\u0447\u0447:\u043c\u043c)',en:'Time (hh:mm)'},
  calc_city:{ru:'\u0413\u043e\u0440\u043e\u0434 \u0440\u043e\u0436\u0434\u0435\u043d\u0438\u044f',en:'City of birth'},
  calc_name:{ru:'\u0418\u043c\u044f (\u0434\u043b\u044f \u043e\u0442\u0447\u0451\u0442\u0430)',en:'Name (for report)'},
  calc_unknown_time:{ru:'\u041d\u0435 \u0437\u043d\u0430\u044e \u0442\u043e\u0447\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0440\u043e\u0436\u0434\u0435\u043d\u0438\u044f',en:"I don't know exact birth time"},
  natal_calc_btn:{ru:'\u0420\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u0442\u044c',en:'Calculate'},
  // Result
  muhurta_phala:{ru:'\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u041c\u0443\u0445\u0443\u0440\u0442\u044b',en:'Muhurta Result'},
  panchang_analysis:{ru:'\u0410\u041d\u0410\u041b\u0418\u0417 \u041f\u0410\u041d\u0427\u0410\u041d\u0413\u0410',en:'PANCHANG ANALYSIS'},
  auspicious_time:{ru:'\u0411\u041b\u0410\u0413\u041e\u041f\u0420\u0418\u042f\u0422\u041d\u041e\u0415 \u0412\u0420\u0415\u041c\u042f',en:'AUSPICIOUS TIME'},
  inauspicious_time:{ru:'\u041d\u0415\u0411\u041b\u0410\u0413\u041e\u041f\u0420\u0418\u042f\u0422\u041d\u041e\u0415 \u0412\u0420\u0415\u041c\u042f',en:'INAUSPICIOUS TIME'},
  recommendations:{ru:'\u0420\u0415\u041a\u041e\u041c\u0415\u041d\u0414\u0410\u0426\u0418\u0418',en:'RECOMMENDATIONS'},
  calculated:{ru:'\u0420\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d\u043e',en:'Calculated'},
  calculating:{ru:'\u0420\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u043c\u0443\u0445\u0443\u0440\u0442\u0443...',en:'Calculating muhurta...'},
  error_date:{ru:'\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0434\u0430\u0442\u0443: \u0414\u0414.\u041c\u041c.\u0413\u0413\u0413\u0413',en:'Enter date: DD.MM.YYYY'},
  error_bad_date:{ru:'\u041d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u0430\u044f \u0434\u0430\u0442\u0430',en:'Invalid date'},
  error_calc:{ru:'\u041e\u0448\u0438\u0431\u043a\u0430 \u0440\u0430\u0441\u0447\u0451\u0442\u0430. \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0434\u0430\u043d\u043d\u044b\u0435.',en:'Calculation error. Check your data.'},
  // Nav
  nav_wiki:{ru:'Wiki',en:'Wiki'},
  nav_muhurta:{ru:'\u041c\u0443\u0445\u0443\u0440\u0442\u0430',en:'Muhurta'},
  nav_calendar:{ru:'\u041a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044c',en:'Calendar'},
  nav_calc:{ru:'\u0420\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u0442\u044c',en:'Calculate'},
  // Footer
  footer_offer:{ru:'\u041e\u0444\u0435\u0440\u0442\u0430',en:'Terms'},
  footer_privacy:{ru:'\u041f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u043a\u043e\u043d\u0444\u0438\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438',en:'Privacy Policy'},
  cookie_text:{ru:'\u042d\u0442\u043e\u0442 \u0441\u0430\u0439\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0435 cookie.',en:'This site uses technical cookies.'},
  cookie_accept:{ru:'\u041f\u0440\u0438\u043d\u044f\u0442\u044c',en:'Accept'},
  cookie_decline:{ru:'\u041e\u0442\u043a\u043b\u043e\u043d\u0438\u0442\u044c',en:'Decline'},
  disclaimer:{ru:'\u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b \u043d\u043e\u0441\u044f\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e-\u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440. \u041d\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0433\u0430\u0434\u0430\u043d\u0438\u0435\u043c. 16+',en:'Content is informational and analytical. Not fortune-telling. 16+'},
  fb_name:{ru:'\u0412\u0430\u0448\u0435 \u0438\u043c\u044f',en:'Your name'},
  fb_email:{ru:'Email',en:'Email'},
  fb_message:{ru:'\u0412\u0430\u0448\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435...',en:'Your message...'},
  fb_send:{ru:'\u041e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c',en:'Send'}
};

function T(key){var t=TEXTS[key];if(!t)return key;return t[LANG]||t['ru']||key}

function toggleLang(){
  LANG=LANG==='ru'?'en':'ru';
  try{localStorage.setItem('sutra-lang',LANG)}catch(e){}
  document.getElementById('lang-btn').textContent=LANG==='ru'?'EN':'RU';
  document.documentElement.lang=LANG;
  applyLang();
}

function applyLang(){
  // Update placeholders and text
  var el;
  el=document.getElementById('muhurta-date');if(el)el.placeholder=T('event_date');
  el=document.getElementById('muhurta-time');if(el)el.placeholder=T('event_time');
  el=document.getElementById('muhurta-city');if(el&&!el.value)el.placeholder=T('event_city');
  el=document.getElementById('date-input');if(el)el.placeholder=T('calc_date');
  el=document.getElementById('time-input');if(el)el.placeholder=T('calc_time');
  el=document.getElementById('city-input');if(el)el.placeholder=T('calc_city');
  el=document.getElementById('name-input');if(el)el.placeholder=T('calc_name');
  el=document.getElementById('fb-name');if(el)el.placeholder=T('fb_name');
  el=document.getElementById('fb-email');if(el)el.placeholder=T('fb_email');
  el=document.getElementById('fb-message');if(el)el.placeholder=T('fb_message');
  // Event type options
  var evSel=document.getElementById('event-type');
  if(evSel){
    var evMap={general:'ev_general',marriage:'ev_marriage',griha_pravesh:'ev_griha',business:'ev_business',travel:'ev_travel',medical:'ev_medical',education:'ev_education',legal:'ev_legal'};
    Array.from(evSel.options).forEach(function(opt){var k=evMap[opt.value];if(k)opt.textContent=T(k)});
  }
  // All data-t elements
  document.querySelectorAll('[data-t]').forEach(function(el){
    var key=el.getAttribute('data-t');
    var val=T(key);
    // Some keys need special HTML rendering
    if(key==='muhurta_calc_h2') el.innerHTML=LANG==='en'?'Find <em>auspicious timing</em>':'\u041f\u043e\u0434\u0431\u0435\u0440\u0438\u0442\u0435 <em>\u0431\u043b\u0430\u0433\u043e\u043f\u0440\u0438\u044f\u0442\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f</em>';
    else if(key==='cal_h2') el.innerHTML=LANG==='en'?'Muhurta <em>Calendar</em>':'\u041a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044c <em>\u043c\u0443\u0445\u0443\u0440\u0442</em>';
    else if(key==='hours_h2') el.innerHTML=LANG==='en'?'Planetary <em>Hours</em> Today':'\u041f\u043b\u0430\u043d\u0435\u0442\u0430\u0440\u043d\u044b\u0435 <em>\u0445\u043e\u0440\u044b</em> \u0441\u0435\u0433\u043e\u0434\u043d\u044f';
    else if(key==='calc_btn') el.textContent=T(key)+' \u2192';
    else el.textContent=val;
  });
  // Wiki link
  var wikiLinks=document.querySelectorAll('a[href="/wiki/"],a[href="/en/wiki/"]');
  wikiLinks.forEach(function(a){a.href=LANG==='en'?'/en/wiki/':'/wiki/'});
  // Hero dynamic text
  var heroH1=document.getElementById('hero-h1');if(heroH1)heroH1.textContent=T('hero_h1');
  var heroSub=document.querySelector('.hero-sub');if(heroSub)heroSub.textContent=T('hero_sub');
  // Reload dynamic sections with new lang
  loadTodayMuhurta();
  loadCalendar();
  loadHours();
}

/* ================================================================
   CITIES DB (50 cities with coordinates)
   ================================================================ */
var CITIES = [
  {name:'\u041c\u043e\u0441\u043a\u0432\u0430',lat:55.7558,lon:37.6173,tz:'Europe/Moscow'},
  {name:'\u0421\u0430\u043d\u043a\u0442-\u041f\u0435\u0442\u0435\u0440\u0431\u0443\u0440\u0433',lat:59.9343,lon:30.3351,tz:'Europe/Moscow',alt:['\u041f\u0438\u0442\u0435\u0440','\u041b\u0435\u043d\u0438\u043d\u0433\u0440\u0430\u0434','\u0421\u041f\u0431']},
  {name:'\u041d\u043e\u0432\u043e\u0441\u0438\u0431\u0438\u0440\u0441\u043a',lat:55.0084,lon:82.9357,tz:'Asia/Novosibirsk'},
  {name:'\u0415\u043a\u0430\u0442\u0435\u0440\u0438\u043d\u0431\u0443\u0440\u0433',lat:56.8389,lon:60.6057,tz:'Asia/Yekaterinburg',alt:['\u0421\u0432\u0435\u0440\u0434\u043b\u043e\u0432\u0441\u043a']},
  {name:'\u041a\u0430\u0437\u0430\u043d\u044c',lat:55.7887,lon:49.1221,tz:'Europe/Moscow'},
  {name:'\u041d\u0438\u0436\u043d\u0438\u0439 \u041d\u043e\u0432\u0433\u043e\u0440\u043e\u0434',lat:56.2965,lon:43.9361,tz:'Europe/Moscow',alt:['\u0413\u043e\u0440\u044c\u043a\u0438\u0439']},
  {name:'\u0427\u0435\u043b\u044f\u0431\u0438\u043d\u0441\u043a',lat:55.1644,lon:61.4368,tz:'Asia/Yekaterinburg'},
  {name:'\u0421\u0430\u043c\u0430\u0440\u0430',lat:53.1959,lon:50.1003,tz:'Europe/Samara',alt:['\u041a\u0443\u0439\u0431\u044b\u0448\u0435\u0432']},
  {name:'\u041e\u043c\u0441\u043a',lat:54.9885,lon:73.3242,tz:'Asia/Omsk'},
  {name:'\u0420\u043e\u0441\u0442\u043e\u0432-\u043d\u0430-\u0414\u043e\u043d\u0443',lat:47.2357,lon:39.7015,tz:'Europe/Moscow'},
  {name:'\u0423\u0444\u0430',lat:54.7388,lon:55.9721,tz:'Asia/Yekaterinburg'},
  {name:'\u041a\u0440\u0430\u0441\u043d\u043e\u044f\u0440\u0441\u043a',lat:56.0153,lon:92.8932,tz:'Asia/Krasnoyarsk'},
  {name:'\u0412\u043e\u0440\u043e\u043d\u0435\u0436',lat:51.6683,lon:39.2,tz:'Europe/Moscow'},
  {name:'\u041f\u0435\u0440\u043c\u044c',lat:58.0105,lon:56.2502,tz:'Asia/Yekaterinburg'},
  {name:'\u0412\u043e\u043b\u0433\u043e\u0433\u0440\u0430\u0434',lat:48.708,lon:44.5133,tz:'Europe/Volgograd',alt:['\u0421\u0442\u0430\u043b\u0438\u043d\u0433\u0440\u0430\u0434']},
  {name:'\u041a\u0440\u0430\u0441\u043d\u043e\u0434\u0430\u0440',lat:45.0355,lon:38.9753,tz:'Europe/Moscow'},
  {name:'\u0421\u0430\u0440\u0430\u0442\u043e\u0432',lat:51.5336,lon:46.0344,tz:'Europe/Saratov'},
  {name:'\u0422\u044e\u043c\u0435\u043d\u044c',lat:57.1522,lon:65.5272,tz:'Asia/Yekaterinburg'},
  {name:'\u041a\u0438\u0435\u0432',lat:50.4501,lon:30.5234,tz:'Europe/Kiev'},
  {name:'\u041c\u0438\u043d\u0441\u043a',lat:53.9006,lon:27.559,tz:'Europe/Minsk'},
  {name:'\u0422\u0430\u0448\u043a\u0435\u043d\u0442',lat:41.2995,lon:69.2401,tz:'Asia/Tashkent'},
  {name:'\u0410\u043b\u043c\u0430\u0442\u044b',lat:43.238,lon:76.9458,tz:'Asia/Almaty',alt:['\u0410\u043b\u043c\u0430-\u0410\u0442\u0430']},
  {name:'\u0422\u0431\u0438\u043b\u0438\u0441\u0438',lat:41.7151,lon:44.8271,tz:'Asia/Tbilisi'},
  {name:'\u0411\u0430\u043a\u0443',lat:40.4093,lon:49.8671,tz:'Asia/Baku'},
  {name:'\u0421\u043e\u0447\u0438',lat:43.5853,lon:39.7231,tz:'Europe/Moscow'},
  {name:'\u041a\u0430\u043b\u0438\u043d\u0438\u043d\u0433\u0440\u0430\u0434',lat:54.7104,lon:20.4522,tz:'Europe/Kaliningrad',alt:['\u041a\u0451\u043d\u0438\u0433\u0441\u0431\u0435\u0440\u0433']},
  {name:'\u0412\u043b\u0430\u0434\u0438\u0432\u043e\u0441\u0442\u043e\u043a',lat:43.1155,lon:131.8855,tz:'Asia/Vladivostok'},
  {name:'\u0418\u0440\u043a\u0443\u0442\u0441\u043a',lat:52.2978,lon:104.2964,tz:'Asia/Irkutsk'},
  {name:'\u0425\u0430\u0431\u0430\u0440\u043e\u0432\u0441\u043a',lat:48.4827,lon:135.0838,tz:'Asia/Vladivostok'},
  {name:'\u041c\u0430\u0445\u0430\u0447\u043a\u0430\u043b\u0430',lat:42.9849,lon:47.5047,tz:'Europe/Moscow'},
  {name:'\u0422\u043e\u043c\u0441\u043a',lat:56.4846,lon:84.9476,tz:'Asia/Tomsk'},
  {name:'\u041e\u0440\u0435\u043d\u0431\u0443\u0440\u0433',lat:51.7681,lon:55.097,tz:'Asia/Yekaterinburg'},
  {name:'\u041a\u0435\u043c\u0435\u0440\u043e\u0432\u043e',lat:55.3547,lon:86.0879,tz:'Asia/Novokuznetsk'},
  {name:'\u0420\u044f\u0437\u0430\u043d\u044c',lat:54.6296,lon:39.7368,tz:'Europe/Moscow'},
  {name:'\u0411\u0430\u0440\u043d\u0430\u0443\u043b',lat:53.3467,lon:83.7836,tz:'Asia/Barnaul'},
  {name:'\u041f\u0435\u043d\u0437\u0430',lat:53.1959,lon:45.0183,tz:'Europe/Moscow'},
  {name:'\u0410\u0441\u0442\u0440\u0430\u0445\u0430\u043d\u044c',lat:46.3498,lon:48.0408,tz:'Europe/Astrakhan'},
  {name:'\u041b\u0438\u043f\u0435\u0446\u043a',lat:52.6032,lon:39.5703,tz:'Europe/Moscow'},
  {name:'\u0422\u0443\u043b\u0430',lat:54.1961,lon:37.6182,tz:'Europe/Moscow'},
  {name:'\u041a\u0438\u0440\u043e\u0432',lat:58.6035,lon:49.668,tz:'Europe/Kirov'},
  {name:'New Delhi',lat:28.6139,lon:77.209,tz:'Asia/Kolkata'},
  {name:'Mumbai',lat:19.076,lon:72.8777,tz:'Asia/Kolkata'},
  {name:'New York',lat:40.7128,lon:-74.006,tz:'America/New_York'},
  {name:'London',lat:51.5074,lon:-0.1278,tz:'Europe/London'},
  {name:'Berlin',lat:52.52,lon:13.405,tz:'Europe/Berlin'},
  {name:'Paris',lat:48.8566,lon:2.3522,tz:'Europe/Paris'},
  {name:'Tel Aviv',lat:32.0853,lon:34.7818,tz:'Asia/Jerusalem'},
  {name:'Dubai',lat:25.2048,lon:55.2708,tz:'Asia/Dubai'},
  {name:'Istanbul',lat:41.0082,lon:28.9784,tz:'Europe/Istanbul'},
  {name:'Bangkok',lat:13.7563,lon:100.5018,tz:'Asia/Bangkok'}
];

/* ================================================================
   CITY SEARCH & AUTOCOMPLETE
   ================================================================ */
function searchCity(query) {
  if (!query || query.length < 2) return [];
  var q = query.toLowerCase();
  var results = [];
  for (var i = 0; i < CITIES.length; i++) {
    var c = CITIES[i];
    if (c.name.toLowerCase().indexOf(q) >= 0) { results.push(c); continue; }
    if (c.alt) {
      for (var j = 0; j < c.alt.length; j++) {
        if (c.alt[j].toLowerCase().indexOf(q) >= 0) { results.push(c); break; }
      }
    }
  }
  return results.slice(0, 8);
}

function findCity(name) {
  var q = name.toLowerCase().replace(/[\u0451\u0401]/g, '\u0435');
  for (var i = 0; i < CITIES.length; i++) {
    var c = CITIES[i];
    if (c.name.toLowerCase().replace(/[\u0451\u0401]/g, '\u0435') === q) return c;
    if (c.alt) {
      for (var j = 0; j < c.alt.length; j++) {
        if (c.alt[j].toLowerCase().replace(/[\u0451\u0401]/g, '\u0435') === q) return c;
      }
    }
  }
  return CITIES[0]; // Moscow fallback
}

(function initCityAutocomplete() {
  var input = document.getElementById('city-input');
  var dropdown = document.getElementById('city-dropdown');
  if (!input || !dropdown) return;
  input.addEventListener('input', function() {
    var results = searchCity(this.value);
    if (results.length === 0) { dropdown.style.display = 'none'; return; }
    dropdown.innerHTML = '';
    results.forEach(function(c) {
      var div = document.createElement('div');
      div.textContent = c.name;
      div.onclick = function() { input.value = c.name; dropdown.style.display = 'none'; };
      dropdown.appendChild(div);
    });
    dropdown.style.display = 'block';
  });
  document.addEventListener('click', function(e) {
    if (!input.contains(e.target) && !dropdown.contains(e.target)) dropdown.style.display = 'none';
  });
})();

/* ================================================================
   INITIALIZE FROM CONFIG
   ================================================================ */
(function init() {
  var C = window.CONFIG || {};

  // Meta tags
  document.getElementById('page-title').textContent = C.title || '';
  document.getElementById('meta-desc').content = C.description || '';
  document.getElementById('meta-kw').content = C.keywords || '';
  document.getElementById('og-title').content = C.title || '';
  document.getElementById('og-desc').content = C.description || '';
  document.getElementById('og-url').content = 'https://' + (C.domain || '');
  document.getElementById('canonical').href = 'https://' + (C.domain || '');

  // JSON-LD WebApplication
  document.getElementById('jsonld-app').textContent = JSON.stringify({
    "@context":"https://schema.org","@type":"WebApplication",
    "name": C.title || '', "url":"https://"+(C.domain||''),
    "applicationCategory":"LifestyleApplication","operatingSystem":"All",
    "description": C.description || '',
    "offers":{"@type":"Offer","price":"0","priceCurrency":"RUB"},
    "publisher":{"@type":"Organization","name":"\u041d\u0418\u0418 \u0421\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0433\u043e \u0421\u0438\u043d\u0442\u0435\u0437\u0430","url":"https://muhurta.ru"}
  });

  // Header
  // SVG lockup replaces text logo — no JS overwrite needed

  // Hero
  if (C.hero_label) document.getElementById('hero-label').textContent = C.hero_label;
  document.getElementById('hero-h1').textContent = C.hero_h1 || '';
  if (C.hero_h1_sa) document.getElementById('hero-sa').textContent = C.hero_h1_sa;
  document.getElementById('hero-sub').textContent = C.hero_subtitle || '';

  // Hero proof
  var proofEl = document.getElementById('hero-proof');
  (C.proof||[]).forEach(function(p) {
    proofEl.innerHTML += '<div class="proof-item"><div class="proof-num">' + p.num + '</div><div class="proof-label">' + p.label + '</div></div>';
  });

  // Pain points
  document.getElementById('pain-label').textContent = C.pain_label || '';
  document.getElementById('pain-h2').innerHTML = C.pain_h2 || '';
  var painGrid = document.getElementById('pain-grid');
  (C.pains||[]).forEach(function(p) {
    painGrid.innerHTML += '<div class="card"><span class="pain-icon">' + p.icon + '</span><h3 class="pain-title">' + p.title + '</h3><p class="pain-body">' + p.body + '</p></div>';
  });

  // Steps
  var stepsGrid = document.getElementById('steps-grid');
  var stepColors = ['var(--accent)', 'var(--gold)', 'var(--mint)'];
  (C.steps||[]).forEach(function(s, i) {
    stepsGrid.innerHTML += '<div><div style="font-size:32px;margin-bottom:12px;color:' + stepColors[i%3] + '">' + s.icon + '</div><div style="font-size:14px;margin-bottom:6px">' + s.label + '</div><div style="font-size:12px;color:var(--text-d)">' + s.desc + '</div></div>';
  });

  // Calculator (safe — elements may not exist in muhurta-first layout)
  var calcH2 = document.getElementById('calc-h2');
  if (calcH2) calcH2.innerHTML = C.calc_h2 || '';
  var calcHint = document.getElementById('calc-hint');
  if (calcHint) calcHint.textContent = C.calc_hint || '';
  var calcMethod = document.getElementById('calc-method');
  if (calcMethod) calcMethod.textContent = C.calc_method || '';
  if (!C.need_time) { var ti = document.getElementById('time-input'); if(ti) ti.style.display = 'none'; var tur = document.getElementById('time-unknown-row'); if(tur) tur.style.display = 'none'; }
  if (!C.need_city) { var ci = document.getElementById('city-input'); if(ci && ci.parentElement) ci.parentElement.style.display = 'none'; }
  if (C.need_gender) { var gi = document.getElementById('gender-input'); if(gi) gi.style.display = ''; }

  // Panchang bar visibility
  if (C.show_panchang_bar === false) {
    var pb = document.getElementById('panchang-bar'); if (pb) pb.style.display = 'none';
  }

  // Sky mode
  var skyCanvas = document.getElementById('sutra-sky');
  if (skyCanvas && C.show_sky) skyCanvas.setAttribute('data-sky', C.show_sky);

  // Price
  document.getElementById('price-value').innerHTML = (C.price_display || C.price || '500') + ' \u20bd';
  BASE_PRICE = C.price || 500;

  // Features table
  var featGrid = document.getElementById('feat-grid');
  var freeHTML = '<div class="feat-col" style="background:var(--surface);border:1px solid var(--border-s)"><div class="feat-head" style="background:var(--accent-d);color:var(--accent);border-bottom:1px solid var(--border-s)">NISHULKA \u00b7 0 ₽</div><div class="feat-body">';
  (C.free_features||[]).forEach(function(f) { freeHTML += '<div class="feat-item"><span style="color:var(--accent);font-size:14px">&#9673;</span> ' + f + '</div>'; });
  freeHTML += '</div></div>';
  var premHTML = '<div class="feat-col" style="background:rgba(201,169,110,.04);border:1px solid var(--accent);position:relative"><div style="position:absolute;top:-11px;left:50%;transform:translateX(-50%);font-family:Cinzel,serif;font-size:8px;letter-spacing:.2em;padding:3px 16px;border-radius:40px;background:var(--accent);color:#fff;white-space:nowrap">SAMPURNA</div><div class="feat-head" style="background:rgba(201,169,110,.08);color:var(--accent);border-bottom:1px solid rgba(201,169,110,.15)">SAMPURNA PHALA \u00b7 ' + (C.price_display||C.price||'500') + ' \u20bd</div><div class="feat-body">';
  (C.premium_features||[]).forEach(function(f) { premHTML += '<div class="feat-item"><span style="color:var(--accent);font-size:14px">&#9673;</span> ' + f + '</div>'; });
  premHTML += '</div></div>';
  featGrid.innerHTML = freeHTML + premHTML;

  // Bridge
  document.getElementById('bridge-h2').innerHTML = C.bridge_h2 || '';
  document.getElementById('bridge-body').textContent = C.bridge_body || '';
  var bridgeCta = document.getElementById('bridge-cta');
  bridgeCta.textContent = (C.bridge_cta || '') + ' \u2192';
  bridgeCta.href = C.bridge_url || '#';
  // Bridge links
  var bridgeLinksEl = document.getElementById('bridge-links');
  (C.bridge_links||[]).forEach(function(l, i) {
    if (i > 0) bridgeLinksEl.innerHTML += '<span style="font-size:11px;color:var(--text-d)">\u00b7</span>';
    bridgeLinksEl.innerHTML += '<span class="bridge-link"><span style="color:var(--' + (l.color||'gold') + ')">' + (l.icon||'\u2666') + '</span> ' + l.label + '</span>';
  });

  // SEO
  document.getElementById('seo-h2').innerHTML = C.seo_h2 || '';
  var seoEl = document.getElementById('seo-article');
  (C.seo_paragraphs||[]).forEach(function(p) { seoEl.innerHTML += '<p>' + p + '</p>'; });

  // Footer
  document.getElementById('footer-copy').innerHTML = '\u00a9 ' + new Date().getFullYear() + ' ' + (C.system_name||'') + ' \u00b7 Powered by <a href="https://sutra.center" target="_blank">SUTRA</a>';
  var contactParts = [C.phone].filter(Boolean);
  document.getElementById('footer-contact').textContent = contactParts.join(' \u00b7 ');
  var orgParts = [];
  if (C.org_name) orgParts.push(C.org_name);
  if (C.inn) orgParts.push('\u0418\u041d\u041d ' + C.inn);
  if (C.ogrn) orgParts.push('\u041e\u0413\u0420\u041d ' + C.ogrn);
  document.getElementById('footer-org').textContent = orgParts.join(' \u00b7 ');

  // FAQ + JSON-LD
  var faqList = document.getElementById('faq-list');
  var faqLd = [];
  (C.faq||[]).forEach(function(item) {
    var div = document.createElement('div'); div.className = 'faq-item';
    div.innerHTML = '<div class="faq-q" onclick="this.parentElement.classList.toggle(\'open\')"><span>' + item.q + '</span><span class="faq-arrow">\u25be</span></div><div class="faq-a">' + item.a + '</div>';
    faqList.appendChild(div);
    faqLd.push({"@type":"Question","name":item.q,"acceptedAnswer":{"@type":"Answer","text":item.a}});
  });
  if (faqLd.length > 0) {
    document.getElementById('jsonld-faq').textContent = JSON.stringify({
      "@context":"https://schema.org","@type":"FAQPage","mainEntity":faqLd
    });
  }

  // Paywall blurred content
  var blurredEl = document.getElementById('paywall-blurred-content');
  (C.paywall_sections||[]).forEach(function(s) {
    blurredEl.innerHTML += '<div class="result-card"><span class="result-label">' + s.label + '</span><p class="result-text">' + s.text + '</p></div>';
  });

  // ========== MUHURTA: Auto-load today + calendar + hours ==========
  // Set lang button initial state
  var langBtn=document.getElementById('lang-btn');
  if(langBtn)langBtn.textContent=LANG==='ru'?'EN':'RU';
  document.documentElement.lang=LANG;

  loadTodayMuhurta();
  loadCalendar();
  loadHours();
  initMuhurtaCityAutocomplete();
  applyLang();

  // Pre-fill muhurta date with today
  var now = new Date();
  var dd = String(now.getDate()).padStart(2,'0');
  var mm = String(now.getMonth()+1).padStart(2,'0');
  var yyyy = now.getFullYear();
  var mDateInput = document.getElementById('muhurta-date');
  if (mDateInput) mDateInput.value = dd+'.'+mm+'.'+yyyy;

  // Auto-format muhurta date input
  if (mDateInput) mDateInput.addEventListener('input', function() {
    var v = this.value.replace(/[^\d]/g,'');
    if(v.length>2) v=v.slice(0,2)+'.'+v.slice(2);
    if(v.length>5) v=v.slice(0,5)+'.'+v.slice(5,9);
    this.value=v;
  });
})();

/* ================================================================
   MUHURTA: Get user's approximate location from timezone
   ================================================================ */
function getUserLocation() {
  try {
    var tz = Intl.DateTimeFormat().resolvedOptions().timeZone;
    var TZ_MAP = {
      'Europe/Moscow': {lat:55.7558,lon:37.6173,city:'Москва'},
      'Europe/Volgograd': {lat:48.708,lon:44.5133,city:'Волгоград'},
      'Europe/Samara': {lat:53.1959,lon:50.1003,city:'Самара'},
      'Asia/Yekaterinburg': {lat:56.8389,lon:60.6057,city:'Екатеринбург'},
      'Asia/Omsk': {lat:54.9885,lon:73.3242,city:'Омск'},
      'Asia/Novosibirsk': {lat:55.0084,lon:82.9357,city:'Новосибирск'},
      'Asia/Krasnoyarsk': {lat:56.0153,lon:92.8932,city:'Красноярск'},
      'Asia/Irkutsk': {lat:52.2978,lon:104.2964,city:'Иркутск'},
      'Asia/Vladivostok': {lat:43.1155,lon:131.8855,city:'Владивосток'},
      'Europe/Kiev': {lat:50.4501,lon:30.5234,city:'Киев'},
      'Europe/Minsk': {lat:53.9006,lon:27.559,city:'Минск'},
      'Asia/Tashkent': {lat:41.2995,lon:69.2401,city:'Ташкент'},
      'Asia/Almaty': {lat:43.238,lon:76.9458,city:'Алматы'},
      'Asia/Kolkata': {lat:28.6139,lon:77.209,city:'New Delhi'},
      'Europe/London': {lat:51.5074,lon:-0.1278,city:'London'},
      'Europe/Berlin': {lat:52.52,lon:13.405,city:'Berlin'},
      'America/New_York': {lat:40.7128,lon:-74.006,city:'New York'}
    };
    return TZ_MAP[tz] || TZ_MAP['Europe/Moscow'];
  } catch(e) { return {lat:55.7558,lon:37.6173,city:'Москва'}; }
}

/* ================================================================
   MUHURTA: Load today's panchang + score (auto, no form)
   ================================================================ */
function loadTodayMuhurta() {
  var loc = getUserLocation();
  var now = new Date();
  var dateStr = now.getFullYear()+'-'+String(now.getMonth()+1).padStart(2,'0')+'-'+String(now.getDate()).padStart(2,'0');

  // Fetch panchang
  fetch(API+'/api/v1/free/panchang?date='+dateStr+'&lat='+loc.lat+'&lon='+loc.lon)
    .then(function(r){return r.json()})
    .then(function(d){
      if(!d.success) return;
      // Score card
      var scoreEl = document.getElementById('today-score-num');
      var labelEl = document.getElementById('today-score-label');
      var weekdayEl = document.getElementById('today-weekday');

      weekdayEl.textContent = (d.weekday_ru||'') + ' \u00b7 ' + (d.vara?d.vara.name_ru:'') + ' \u00b7 ' + loc.city;

      // Panchang cards
      var pEl = document.getElementById('today-panchang');
      var items = [];
      if(d.tithi) items.push({label:T('tithi'),value:d.tithi.name_ru,quality:d.tithi.quality_ru,pct:d.tithi.percent_passed});
      if(d.nakshatra) items.push({label:T('nakshatra'),value:d.nakshatra.name_ru+(d.nakshatra.pada?', '+T('pada')+' '+d.nakshatra.pada:''),quality:d.nakshatra.type_ru});
      if(d.yoga) items.push({label:T('yoga'),value:d.yoga.name_ru,quality:d.yoga.quality_ru});
      if(d.karana) items.push({label:T('karana'),value:d.karana.name_ru,quality:d.karana.quality_ru});

      pEl.innerHTML = items.map(function(it){
        var qColor = (it.quality||'').toLowerCase().indexOf('благ')>=0 ? 'var(--mint)' :
                     (it.quality||'').toLowerCase().indexOf('неблаг')>=0 ? 'var(--mars)' : 'var(--text-d)';
        return '<div style="background:var(--surface);border:1px solid var(--border-s);border-radius:2px;padding:12px 8px">'+
          '<div style="font-family:Cinzel,serif;font-size:8px;letter-spacing:.15em;color:var(--text-d);text-transform:uppercase;margin-bottom:4px">'+it.label+'</div>'+
          '<div style="font-size:14px;margin-bottom:2px">'+it.value+'</div>'+
          '<div style="font-size:10px;color:'+qColor+'">'+((it.quality||'')+(it.pct?' \u00b7 '+it.pct+'%':''))+'</div>'+
          '</div>';
      }).join('');

      // Auspicious/inauspicious times
      var timesEl = document.getElementById('today-times');
      var timesHTML = '';
      if(d.abhijit_muhurta) timesHTML += '<span style="color:var(--mint)">\u2713 Абхиджит '+d.abhijit_muhurta.start+'\u2013'+d.abhijit_muhurta.end+'</span>';
      if(d.rahu_kaal) timesHTML += '<span style="color:var(--mars)">\u26a0 Раху Каал '+d.rahu_kaal.start+'\u2013'+d.rahu_kaal.end+'</span>';
      if(d.moon_sign_ru) timesHTML += '<span style="color:var(--accent)">\u263d Луна в '+d.moon_sign_ru+'</span>';
      timesEl.innerHTML = timesHTML;
    })
    .catch(function(e){ console.error('Panchang load error:', e); });

  // Fetch muhurta score for today
  fetch(API+'/api/v1/free/muhurta', {
    method:'POST', headers:{'Content-Type':'application/json'},
    body: JSON.stringify({date:dateStr,time:'12:00',city:loc.city,lat:loc.lat,lon:loc.lon,activity:'general'})
  })
    .then(function(r){return r.json()})
    .then(function(d){
      if(!d.success) return;
      var scoreEl = document.getElementById('today-score-num');
      var labelEl = document.getElementById('today-score-label');
      var cardEl = document.getElementById('today-score-card');
      var score = d.overall ? d.overall.score : 0;
      var quality = d.overall ? d.overall.quality_ru : '';
      var qualityEN = {'\u041e\u0442\u043b\u0438\u0447\u043d\u043e':'Excellent','\u0425\u043e\u0440\u043e\u0448\u043e':'Good','\u041d\u0435\u0439\u0442\u0440\u0430\u043b\u044c\u043d\u043e':'Neutral','\u0418\u0437\u0431\u0435\u0433\u0430\u0442\u044c':'Avoid'};
      var qDisplay = LANG==='en' ? (qualityEN[quality]||quality) : quality;
      scoreEl.textContent = score;
      labelEl.textContent = qDisplay + ' \u00b7 ' + T('of_100');
      // Color by quality
      var scoreColor = score >= 70 ? 'var(--mint)' : score >= 40 ? 'var(--accent)' : 'var(--mars)';
      scoreEl.style.color = scoreColor;
      cardEl.style.borderColor = scoreColor;
    })
    .catch(function(){});
}

/* ================================================================
   MUHURTA: Event calculator
   ================================================================ */
function doMuhurtaCalc() {
  var errEl = document.getElementById('muhurta-error');
  errEl.textContent = ''; errEl.style.color = '';

  var dateStr = document.getElementById('muhurta-date').value.trim();
  var parts = dateStr.split('.');
  if(parts.length!==3){errEl.textContent='Введите дату: ДД.ММ.ГГГГ';return}
  var day=parseInt(parts[0],10),month=parseInt(parts[1],10),year=parseInt(parts[2],10);
  if(isNaN(day)||isNaN(month)||isNaN(year)){errEl.textContent='Некорректная дата';return}

  var timeStr = (document.getElementById('muhurta-time').value.trim()) || '12:00';
  var cityStr = (document.getElementById('muhurta-city').value.trim()) || 'Москва';
  var city = findCity(cityStr);
  var eventType = document.getElementById('event-type').value;

  var apiDate = year+'-'+String(month).padStart(2,'0')+'-'+String(day).padStart(2,'0');

  errEl.textContent = 'Рассчитываем мухурту...'; errEl.style.color = 'var(--accent)';

  fetch(API+'/api/v1/free/muhurta', {
    method:'POST', headers:{'Content-Type':'application/json'},
    body: JSON.stringify({date:apiDate,time:timeStr,city:cityStr,lat:city.lat,lon:city.lon,activity:eventType})
  })
    .then(function(r){if(!r.ok)throw new Error('API error '+r.status);return r.json()})
    .then(function(data){
      errEl.textContent=''; errEl.style.color='';
      renderMuhurtaResult(data, dateStr, cityStr, eventType);
    })
    .catch(function(err){
      errEl.textContent='Ошибка расчёта. Проверьте данные.'; errEl.style.color='var(--mars)';
    });
}

/* ================================================================
   MUHURTA: Render muhurta result
   ================================================================ */
function renderMuhurtaResult(data, dateStr, cityStr, eventType) {
  var section = document.getElementById('muhurta-result');
  var content = document.getElementById('muhurta-result-content');
  section.style.display = 'block';

  var EVENT_NAMES = {general:'Общие дела',marriage:'Свадьба',griha_pravesh:'Новоселье',business:'Бизнес',travel:'Поездка',medical:'Операция',education:'Обучение',legal:'Суд / Иск'};
  var score = data.overall ? data.overall.score : 0;
  var quality = data.overall ? data.overall.quality_ru : '';
  var scoreColor = score >= 70 ? 'var(--mint)' : score >= 40 ? 'var(--accent)' : 'var(--mars)';
  var scoreIcon = score >= 70 ? '\u2713' : score >= 40 ? '\u25cb' : '\u26a0';

  var html = '';

  // Score card
  html += '<div class="result-card fade-up" style="text-align:center;border:2px solid '+scoreColor+'">';
  html += '<div style="font-size:48px;color:'+scoreColor+';font-family:Cormorant Garamond,serif;font-weight:300">'+scoreIcon+' '+score+'<span style="font-size:18px;opacity:.5">/100</span></div>';
  html += '<div style="font-family:Cinzel,serif;font-size:14px;letter-spacing:.1em;color:'+scoreColor+';margin:8px 0">'+quality+'</div>';
  html += '<div style="font-size:13px;color:var(--text-m)">'+(EVENT_NAMES[eventType]||eventType)+' &middot; '+dateStr+' &middot; '+cityStr+'</div>';
  html += '</div>';

  // Panchang analysis
  if (data.panchang) {
    var p = data.panchang;
    html += '<div class="result-card fade-up-2" style="margin-top:16px">';
    html += '<span class="result-label">PANCHANG ANALYSIS</span>';
    html += '<div style="display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:12px">';
    if(p.tithi) html += _panchangCell('Титхи', p.tithi.name_ru, p.tithi.quality||'');
    if(p.nakshatra) html += _panchangCell('Накшатра', p.nakshatra.name_ru+(p.nakshatra.pada?', П.'+p.nakshatra.pada:''), p.nakshatra.suitable?'Good':'');
    if(p.yoga) html += _panchangCell('Йога', p.yoga.name, p.yoga.quality||'');
    if(p.karana) html += _panchangCell('Карана', p.karana.name, p.karana.quality||'');
    html += '</div></div>';
  }

  // Auspicious times
  if (data.auspicious_times) {
    html += '<div class="result-card fade-up-3" style="margin-top:16px">';
    html += '<span class="result-label">БЛАГОПРИЯТНОЕ ВРЕМЯ</span>';
    var at = data.auspicious_times;
    if(at.brahma_muhurta) html += '<div style="margin-top:8px;font-size:14px;color:var(--mint)">\u2713 '+at.brahma_muhurta.name_ru+': '+at.brahma_muhurta.start+'\u2013'+at.brahma_muhurta.end+'<div style="font-size:11px;color:var(--text-d);margin-top:2px">'+at.brahma_muhurta.description_ru+'</div></div>';
    if(at.abhijit_muhurta) html += '<div style="margin-top:8px;font-size:14px;color:var(--mint)">\u2713 '+at.abhijit_muhurta.name_ru+': '+at.abhijit_muhurta.start+'\u2013'+at.abhijit_muhurta.end+'<div style="font-size:11px;color:var(--text-d);margin-top:2px">'+at.abhijit_muhurta.description_ru+'</div></div>';
    html += '</div>';
  }

  // Inauspicious times
  if (data.inauspicious_times) {
    html += '<div class="result-card" style="margin-top:16px">';
    html += '<span class="result-label">НЕБЛАГОПРИЯТНОЕ ВРЕМЯ</span>';
    var it = data.inauspicious_times;
    if(it.rahu_kalam) html += '<div style="margin-top:8px;font-size:14px;color:var(--mars)">\u26a0 '+it.rahu_kalam.name_ru+': '+it.rahu_kalam.start+'\u2013'+it.rahu_kalam.end+'<div style="font-size:11px;color:var(--text-d);margin-top:2px">'+it.rahu_kalam.warning_ru+'</div></div>';
    if(it.yamaganda) html += '<div style="margin-top:8px;font-size:14px;color:var(--mars)">\u26a0 '+it.yamaganda.name_ru+': '+it.yamaganda.start+'\u2013'+it.yamaganda.end+'<div style="font-size:11px;color:var(--text-d);margin-top:2px">'+it.yamaganda.warning_ru+'</div></div>';
    if(it.gulika) html += '<div style="margin-top:8px;font-size:14px;color:var(--text-d)">\u26a0 '+it.gulika.name_ru+': '+it.gulika.start+'\u2013'+it.gulika.end+'<div style="font-size:11px;color:var(--text-d);margin-top:2px">'+it.gulika.warning_ru+'</div></div>';
    html += '</div>';
  }

  // Recommendations
  if (data.recommendations_ru && data.recommendations_ru.length) {
    html += '<div class="result-card" style="margin-top:16px">';
    html += '<span class="result-label">РЕКОМЕНДАЦИИ</span>';
    data.recommendations_ru.forEach(function(r){
      html += '<div style="margin-top:8px;font-size:14px;color:var(--text-m)">'+r+'</div>';
    });
    html += '</div>';
  }

  // Timestamp
  html += '<div class="result-timestamp">Рассчитано: '+new Date().toLocaleString('ru-RU')+' \u00b7 Swiss Ephemeris v2.10 \u00b7 Lahiri Ayanamsha</div>';

  content.innerHTML = html;
  setTimeout(function(){section.scrollIntoView({behavior:'smooth',block:'start'})},100);
}

function _panchangCell(label, value, quality) {
  var qLower = (quality||'').toLowerCase();
  var color = qLower === 'good' || qLower === 'excellent' ? 'var(--mint)' :
              qLower === 'neutral' ? 'var(--text-d)' :
              qLower === 'bad' || qLower === 'avoid' ? 'var(--mars)' : 'var(--text-m)';
  var icon = qLower === 'good' || qLower === 'excellent' ? '\u2713' :
             qLower === 'bad' || qLower === 'avoid' ? '\u2717' : '\u25cb';
  return '<div style="background:var(--surface-2);border-radius:2px;padding:10px 6px;text-align:center">'+
    '<div style="font-family:Cinzel,serif;font-size:8px;letter-spacing:.12em;color:var(--text-d);text-transform:uppercase">'+label+'</div>'+
    '<div style="font-size:13px;margin:4px 0">'+value+'</div>'+
    '<div style="font-size:11px;color:'+color+'">'+icon+' '+quality+'</div></div>';
}

/* ================================================================
   MUHURTA: Calendar heatmap
   ================================================================ */
function loadCalendar() {
  var loc = getUserLocation();
  var now = new Date();
  var startDate = now.getFullYear()+'-'+String(now.getMonth()+1).padStart(2,'0')+'-'+String(now.getDate()).padStart(2,'0');
  var end = new Date(now.getTime() + 14*86400000);
  var endDate = end.getFullYear()+'-'+String(end.getMonth()+1).padStart(2,'0')+'-'+String(end.getDate()).padStart(2,'0');

  fetch(API+'/api/v1/free/muhurta-calendar', {
    method:'POST', headers:{'Content-Type':'application/json'},
    body: JSON.stringify({start_date:startDate,end_date:endDate,city:loc.city,lat:loc.lat,lon:loc.lon})
  })
    .then(function(r){return r.json()})
    .then(function(d){
      if(!d.success || !d.calendar) return;
      var events = d.events || [];
      var cal = d.calendar;

      var html = '<table class="summary-table" style="font-size:12px;text-align:center">';
      // Header row
      html += '<thead><tr><th style="text-align:left;width:70px">Дата</th>';
      events.forEach(function(ev){ html += '<th title="'+ev.name+'" style="font-size:16px;cursor:help">'+ev.icon+'</th>'; });
      html += '</tr></thead><tbody>';

      // Data rows
      cal.forEach(function(day){
        html += '<tr><td style="text-align:left;white-space:nowrap"><span style="font-size:13px">'+day.date+'</span> <span style="font-size:10px;color:var(--text-d)">'+day.weekday+'</span></td>';
        events.forEach(function(ev){
          var sc = day.scores[ev.id];
          if(!sc){html += '<td>\u2014</td>';return}
          var bg, fg;
          if(sc.quality==='excellent'){bg='var(--mint)';fg='#fff'}
          else if(sc.quality==='good'){bg='var(--accent)';fg='#08060A'}
          else if(sc.quality==='neutral'){bg='var(--surface-2)';fg='var(--text-d)'}
          else{bg='var(--mars)';fg='#fff'}
          html += '<td><span style="display:inline-block;padding:3px 8px;border-radius:2px;background:'+bg+';color:'+fg+';font-size:11px;min-width:32px" title="'+ev.name+': '+sc.score+'/100">'+sc.score+'</span></td>';
        });
        html += '</tr>';
      });
      html += '</tbody></table>';
      document.getElementById('muhurta-calendar').innerHTML = html;
    })
    .catch(function(e){ document.getElementById('muhurta-calendar').innerHTML = '<p style="text-align:center;color:var(--text-d);font-size:12px">Не удалось загрузить календарь</p>'; });
}

/* ================================================================
   MUHURTA: Planetary hours
   ================================================================ */
function loadHours() {
  var loc = getUserLocation();

  fetch(API+'/api/v1/cosmic/hours?lat='+loc.lat+'&lon='+loc.lon)
    .then(function(r){return r.json()})
    .then(function(d){
      if(!d.success || !d.hours) return;
      var container = document.getElementById('planetary-hours');
      var now = new Date();
      var nowMinutes = now.getHours()*60 + now.getMinutes();

      // Day ruler
      var html = '';
      if(d.day_ruler) {
        html += '<div style="text-align:center;margin-bottom:20px;font-size:14px;color:var(--text-m)">Управитель дня: <span style="color:var(--accent);font-size:18px">'+d.day_ruler.symbol+'</span> '+(d.day_ruler.planet_ru||d.day_ruler.planet)+'</div>';
      }

      html += '<div style="display:flex;flex-direction:column;gap:4px">';
      d.hours.forEach(function(h){
        // Parse start time to check if current
        var sp = h.start.split(':');
        var startMin = parseInt(sp[0])*60 + parseInt(sp[1]);
        var ep = h.end.split(':');
        var endMin = parseInt(ep[0])*60 + parseInt(ep[1]);
        var isCurrent = nowMinutes >= startMin && nowMinutes < endMin;

        var borderColor = isCurrent ? 'var(--accent)' : 'var(--border-s)';
        var bgColor = isCurrent ? 'var(--accent-d)' : 'transparent';
        var badge = isCurrent ? '<span style="font-family:Cinzel,serif;font-size:8px;letter-spacing:.1em;background:var(--accent);color:#08060A;padding:2px 8px;border-radius:2px;margin-left:8px">СЕЙЧАС</span>' : '';

        html += '<div style="display:flex;align-items:center;gap:12px;padding:8px 12px;border:1px solid '+borderColor+';border-radius:2px;background:'+bgColor+';font-size:13px">';
        html += '<span style="font-size:18px;width:24px;text-align:center">'+h.symbol+'</span>';
        html += '<span style="font-family:JetBrains Mono,monospace;font-size:11px;color:var(--text-d);min-width:90px">'+h.start+'\u2013'+h.end+'</span>';
        html += '<span style="flex:1">'+h.planet_ru+badge+'</span>';
        if(h.activities && h.activities.theme) html += '<span style="font-size:11px;color:var(--text-d)">'+h.activities.theme+'</span>';
        html += '</div>';
      });
      html += '</div>';
      container.innerHTML = html;
    })
    .catch(function(){ document.getElementById('planetary-hours').innerHTML = '<p style="text-align:center;color:var(--text-d);font-size:12px">Не удалось загрузить хоры</p>'; });
}

/* ================================================================
   MUHURTA: City autocomplete for muhurta form
   ================================================================ */
function initMuhurtaCityAutocomplete() {
  var input = document.getElementById('muhurta-city');
  var dropdown = document.getElementById('muhurta-city-dropdown');
  if (!input || !dropdown) return;
  // Pre-fill with detected city
  var loc = getUserLocation();
  input.value = loc.city;

  input.addEventListener('input', function() {
    var results = searchCity(this.value);
    if (results.length === 0) { dropdown.style.display = 'none'; return; }
    dropdown.innerHTML = '';
    results.forEach(function(c) {
      var div = document.createElement('div');
      div.textContent = c.name;
      div.onclick = function() { input.value = c.name; dropdown.style.display = 'none'; };
      dropdown.appendChild(div);
    });
    dropdown.style.display = 'block';
  });
  document.addEventListener('click', function(e) {
    if (!input.contains(e.target) && !dropdown.contains(e.target)) dropdown.style.display = 'none';
  });
}

/* ================================================================
   THEME TOGGLE
   ================================================================ */
function toggleTheme() {
  var html = document.documentElement;
  var key = (CONFIG.domain||'tpl').replace(/\./g,'_') + '-theme';
  if (html.classList.contains('dark')) {
    html.classList.remove('dark'); html.classList.add('light');
    document.getElementById('theme-icon').textContent = '\u263d';
    try{localStorage.setItem(key,'light')}catch(e){}
  } else {
    html.classList.remove('light'); html.classList.add('dark');
    document.getElementById('theme-icon').textContent = '\u2600';
    try{localStorage.setItem(key,'dark')}catch(e){}
  }
}
try {
  var _tk = (CONFIG.domain||'tpl').replace(/\./g,'_') + '-theme';
  var saved = localStorage.getItem(_tk);
  if (saved === 'light') {
    document.documentElement.classList.remove('dark');
    document.documentElement.classList.add('light');
    document.getElementById('theme-icon').textContent = '\u263d';
  } else if (saved === 'dark') {
    document.documentElement.classList.remove('light');
    document.documentElement.classList.add('dark');
    document.getElementById('theme-icon').textContent = '\u2600';
  }
} catch(e) {}

/* ================================================================
   COOKIE BANNER
   ================================================================ */
function acceptCookies(){document.getElementById('cookie-banner').classList.add('hidden');try{localStorage.setItem('cookies','1')}catch(e){}}
function declineCookies(){document.getElementById('cookie-banner').classList.add('hidden');try{localStorage.setItem('cookies','0')}catch(e){}}
try{if(localStorage.getItem('cookies'))document.getElementById('cookie-banner').classList.add('hidden')}catch(e){}

/* ================================================================
   DATE & TIME INPUT MASKS
   ================================================================ */
document.getElementById('date-input').addEventListener('input', function(){
  var v=this.value.replace(/[^\d]/g,'');if(v.length>8)v=v.slice(0,8);
  var p=[];
  if(v.length>0)p.push(v.slice(0,Math.min(2,v.length)));
  if(v.length>2)p.push(v.slice(2,Math.min(4,v.length)));
  if(v.length>4)p.push(v.slice(4,8));
  this.value=p.join('.');
});
document.getElementById('date-input').addEventListener('keydown',function(e){if(e.key==='Enter')doCalculate()});

document.getElementById('time-input').addEventListener('input', function(){
  var v=this.value.replace(/[^\d]/g,'');if(v.length>4)v=v.slice(0,4);
  var p=[];
  if(v.length>0)p.push(v.slice(0,Math.min(2,v.length)));
  if(v.length>2)p.push(v.slice(2,4));
  this.value=p.join(':');
});

function handleTimeUnknown(){
  var cb=document.getElementById('time-unknown'),ti=document.getElementById('time-input');
  if(cb.checked){ti.value='12:00';ti.disabled=true;ti.style.opacity='.4'}
  else{ti.value='';ti.disabled=false;ti.style.opacity='1'}
}

/* ================================================================
   CONSENT & PROMO
   ================================================================ */
function updatePremiumBtn(){
  var c1=document.getElementById('consent-offer'),c2=document.getElementById('consent-privacy'),btn=document.getElementById('premium-buy-btn');
  if(c1&&c2&&btn){var ok=c1.checked&&c2.checked;btn.style.opacity=ok?'1':'0.4';btn.style.pointerEvents=ok?'auto':'none'}
}
function checkConsent(){
  var c1=document.getElementById('consent-offer'),c2=document.getElementById('consent-privacy');
  if(!(c1&&c2&&c1.checked&&c2.checked)){
    var ct=c1.closest('div');
    if(ct){ct.style.border='1px solid var(--mars)';ct.style.borderRadius='4px';ct.style.padding='8px';ct.scrollIntoView({behavior:'smooth',block:'center'});setTimeout(function(){ct.style.border='';ct.style.padding=''},3000)}
    return false;
  }
  return true;
}

var PROMO_CODES = {
  'SUTRA10':{discount:0.10,label:'-10%'},
  'FIRST':{discount:0.15,label:'-15%'},
  'SUTRA2026':{discount:1.0,label:'0 ₽',maxUses:5}
};
var BASE_PRICE=(CONFIG||{}).price||500;
Object.keys(PROMO_CODES).forEach(function(k){PROMO_CODES[k].final=Math.round(BASE_PRICE*(1-PROMO_CODES[k].discount))});
var _activePromo=null;

function getPromoUsage(code){try{return parseInt(localStorage.getItem('promo_'+code)||'0')}catch(e){return 0}}
function incrementPromoUsage(code){try{localStorage.setItem('promo_'+code,String(getPromoUsage(code)+1))}catch(e){}}

function checkPromo(){
  var input=document.getElementById('promo-code'),status=document.getElementById('promo-status'),hint=document.getElementById('promo-hint'),priceEl=document.getElementById('price-value');
  if(!input||!status)return;
  var code=input.value.trim().toUpperCase();
  var promo=PROMO_CODES[code];
  if(promo){
    if(promo.maxUses){var used=getPromoUsage(code);if(used>=promo.maxUses){status.innerHTML='<span style="color:var(--mars)">\u041d\u0435\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u0435\u043d</span>';_activePromo=null;return}}
    _activePromo=promo;_activePromo._code=code;
    status.innerHTML='<span style="color:var(--mint)">'+promo.label+'</span>';
    var pt=promo.final===0?'\u0411\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e!':promo.final+' \u20bd';
    hint.textContent='\u041f\u0440\u043e\u043c\u043e\u043a\u043e\u0434 \u043f\u0440\u0438\u043c\u0435\u043d\u0451\u043d! \u0426\u0435\u043d\u0430: '+pt;hint.style.color='var(--mint)';
    if(priceEl)priceEl.innerHTML='<s style="opacity:.4;font-size:14px">'+BASE_PRICE+' \u20bd</s>&nbsp;&nbsp;'+promo.final+' \u20bd';
  } else {
    _activePromo=null;
    status.innerHTML=code.length>2?'<span style="color:var(--mars)">\u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d</span>':'';
    hint.textContent='';if(priceEl)priceEl.innerHTML=BASE_PRICE+' \u20bd';
  }
}

/* ================================================================
   MAIN CALCULATE FUNCTION
   ================================================================ */
function doCalculate(){
  var errEl=document.getElementById('calc-error');errEl.textContent='';errEl.style.color='';

  var dateStr=document.getElementById('date-input').value.trim();
  var parts=dateStr.split('.');
  if(parts.length!==3){errEl.textContent='\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0434\u0430\u0442\u0443: \u0414\u0414.\u041c\u041c.\u0413\u0413\u0413\u0413';return}
  var day=parseInt(parts[0],10),month=parseInt(parts[1],10),year=parseInt(parts[2],10);
  if(isNaN(day)||isNaN(month)||isNaN(year)){errEl.textContent='\u041d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u0430\u044f \u0434\u0430\u0442\u0430';return}
  if(day<1||day>31||month<1||month>12||year<1900||year>2030){errEl.textContent='\u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0434\u0430\u0442\u0443 (1900\u20132026)';return}

  var timeStr=(document.getElementById('time-input').value.trim())||'12:00';
  var tp=timeStr.split(':');var hour=parseInt(tp[0]||'12',10),minute=parseInt(tp[1]||'0',10);
  if(isNaN(hour)||hour<0||hour>23)hour=12;if(isNaN(minute)||minute<0||minute>59)minute=0;

  var cityStr=(document.getElementById('city-input').value.trim())||'\u041c\u043e\u0441\u043a\u0432\u0430';
  var city=findCity(cityStr);

  var dateForApi=String(day).padStart(2,'0')+'.'+String(month).padStart(2,'0')+'.'+year;
  var timeForApi=String(hour).padStart(2,'0')+':'+String(minute).padStart(2,'0');

  errEl.textContent='\u0420\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c... Swiss Ephemeris';errEl.style.color='var(--accent)';

  var body={date:dateForApi,time:timeForApi,city:cityStr,lat:city.lat,lon:city.lon};
  if(city.tz)body.tz=city.tz;
  var name=document.getElementById('name-input').value.trim();
  if(name)body.name=name;
  var gender=document.getElementById('gender-input').value;
  if(gender)body.gender=gender;

  var endpoint=CONFIG.gate_endpoint||'/api/v1/free/calculate';
  var method=(CONFIG.gate_method||'POST').toUpperCase();
  var url=API+endpoint;
  var opts={method:method,headers:{'Content-Type':'application/json'}};
  if(method==='POST')opts.body=JSON.stringify(body);
  else url+='?'+new URLSearchParams(body).toString();

  fetch(url,opts)
    .then(function(resp){if(!resp.ok)throw new Error('API error '+resp.status);return resp.json()})
    .then(function(data){
      errEl.textContent='';errEl.style.color='';
      window._lastResult=data;
      window._lastBirth={date:dateForApi,time:timeForApi,city:cityStr,lat:city.lat,lon:city.lon,tz:city.tz||'',name:name};

      document.getElementById('result').classList.add('visible');
      document.getElementById('progress-bar-container').style.display='block';
      document.getElementById('purchase-block').style.display='block';
      document.getElementById('result-name-display').textContent=name||dateForApi;

      // Timestamp
      document.getElementById('result-timestamp').textContent=
        '\u0420\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d\u043e: '+new Date().toLocaleString('ru-RU')+' \u00b7 Swiss Ephemeris v2.10 \u00b7 Lahiri Ayanamsha \u00b7 '+city.name;

      setTimeout(function(){document.getElementById('progress-bar-fill').style.width='20%'},300);
      setTimeout(function(){document.getElementById('result').scrollIntoView({behavior:'smooth',block:'start'})},100);

      // Telegram Stars link
      var tgBtn=document.getElementById('tg-pay-btn');
      if(tgBtn&&CONFIG.telegram_bot){tgBtn.href='https://t.me/'+CONFIG.telegram_bot+'?start='+(CONFIG.telegram_start||'pay')+'_'+dateForApi.replace(/\./g,'_');tgBtn.style.display='block'}

      // Render Rashi Chart via widget
      renderGateResult(data);
    })
    .catch(function(err){errEl.textContent='\u041e\u0448\u0438\u0431\u043a\u0430 \u0440\u0430\u0441\u0447\u0451\u0442\u0430. \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0434\u0430\u043d\u043d\u044b\u0435.';errEl.style.color='var(--mars)'});
}

/* ================================================================
   GATE RESULT — Jyotish-specific
   ================================================================
   Renders: Rashi Chart (North/South), Planet Table, Yogas summary.
   Uses RashiChart and PlanetTable widgets.
*/
function renderGateResult(data) {
  // Parse planet data for chart widget
  var planets = data.planets || {};
  var lagnaSign = 1;

  // Try to get lagna from various API response formats
  if (data.lagna_sign) lagnaSign = data.lagna_sign;
  else if (data.ascendant && data.ascendant.sign_id) lagnaSign = data.ascendant.sign_id;
  else if (data.lagna && data.lagna.sign_id) lagnaSign = data.lagna.sign_id;

  // Convert planets object to array for chart widget
  var chartPlanets = [];
  var ORDER = ['Sun','Moon','Mars','Mercury','Jupiter','Venus','Saturn','Rahu','Ketu'];
  ORDER.forEach(function(key) {
    var p = planets[key];
    if (!p) return;
    chartPlanets.push({
      name: key,
      sign: p.sign_id || p.sign || 1,
      degree: p.degree || p.longitude || 0,
      retro: p.is_retrograde || p.retrograde || false
    });
  });

  // Render Rashi Chart
  if (window.RashiChart && CONFIG.show_rashi_chart !== false) {
    RashiChart.render('rashi-chart', {
      ascendant: lagnaSign,
      planets: chartPlanets,
      style: CONFIG.chart_style || 'north'
    });
  }

  // Render Planet Table
  if (window.PlanetTable && CONFIG.show_planet_table !== false) {
    PlanetTable.render('planet-table', planets, lagnaSign);
  }

  // Gate-specific extra: Yogas count + Lagna summary
  var gateEl = document.getElementById('gate-result');
  var gateHTML = '';

  // Lagna info
  var SIGNS_RU = ['','Овен','Телец','Близнецы','Рак','Лев','Дева','Весы','Скорпион','Стрелец','Козерог','Водолей','Рыбы'];
  var SIGNS_SA = ['','Mesha','Vrishabha','Mithuna','Karka','Simha','Kanya','Tula','Vrishchika','Dhanu','Makara','Kumbha','Meena'];
  var SIGNS_GLYPH = ['','\u2648','\u2649','\u264A','\u264B','\u264C','\u264D','\u264E','\u264F','\u2650','\u2651','\u2652','\u2653'];

  gateHTML += '<div class="result-card fade-up" style="display:flex;gap:24px;flex-wrap:wrap;align-items:center">';
  gateHTML += '<div><span class="result-label">LAGNA (ASCENDANT)</span>';
  gateHTML += '<div class="result-value">' + (SIGNS_RU[lagnaSign]||lagnaSign) + '</div>';
  gateHTML += '<div style="font-size:12px;color:var(--text-d);font-family:Cinzel,serif;font-style:italic;margin-top:4px">' + (SIGNS_SA[lagnaSign]||'') + '</div></div>';

  // Yogas count
  var yogasCount = 0;
  if (data.yogas && Array.isArray(data.yogas)) yogasCount = data.yogas.length;
  else if (data.yogas_count) yogasCount = data.yogas_count;
  if (yogasCount > 0) {
    gateHTML += '<div style="border-left:1px solid var(--border-s);padding-left:24px"><span class="result-label">YOGAS DETECTED</span>';
    gateHTML += '<div class="result-value">' + yogasCount + '</div>';
    gateHTML += '<div style="font-size:11px;color:var(--text-d);margin-top:4px">\u041f\u043e\u043b\u043d\u0430\u044f \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0430 \u0432 \u043f\u0440\u0435\u043c\u0438\u0443\u043c-\u043e\u0442\u0447\u0451\u0442\u0435</div></div>';
  }

  // Moon nakshatra
  var moon = planets['Moon'];
  if (moon && moon.nakshatra) {
    gateHTML += '<div style="border-left:1px solid var(--border-s);padding-left:24px"><span class="result-label">JANMA NAKSHATRA</span>';
    gateHTML += '<div class="result-value" style="font-size:18px">\u2606 ' + moon.nakshatra + '</div>';
    if (moon.pada) gateHTML += '<div style="font-size:11px;color:var(--text-d);margin-top:4px">Pada ' + moon.pada + '</div>';
    gateHTML += '</div>';
  }

  gateHTML += '</div>';
  gateEl.innerHTML = gateHTML;
}

/* ================================================================
   SHARE
   ================================================================ */
function shareResult(platform){
  var url=window.location.href;
  var text='\u0420\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u0439 Janma Kundali \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e \u2014 '+(CONFIG.domain||'');
  if(platform==='telegram')window.open('https://t.me/share/url?url='+encodeURIComponent(url)+'&text='+encodeURIComponent(text));
  else if(platform==='whatsapp')window.open('https://wa.me/?text='+encodeURIComponent(text+' '+url));
  else if(platform==='copy'&&navigator.clipboard)navigator.clipboard.writeText(url).then(function(){alert('\u0421\u0441\u044b\u043b\u043a\u0430 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0430')});
  else if(navigator.share)navigator.share({title:CONFIG.system_name||'',text:text,url:url}).catch(function(){});
}

/* ================================================================
   FEEDBACK FORM
   ================================================================ */
var _fbSent=0,_fbLastTime=0;
async function sendFeedback(e){
  e.preventDefault();
  var status=document.getElementById('fb-status');
  if(document.getElementById('fb-hp').value){status.style.display='block';status.style.color='var(--mint)';status.textContent='\u0421\u043f\u0430\u0441\u0438\u0431\u043e!';return}
  if(_fbSent>=3){status.style.display='block';status.style.color='var(--mars)';status.textContent='\u041b\u0438\u043c\u0438\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439';return}
  if(Date.now()-_fbLastTime<10000){status.style.display='block';status.style.color='var(--mars)';status.textContent='\u041f\u043e\u0434\u043e\u0436\u0434\u0438\u0442\u0435 10 \u0441\u0435\u043a\u0443\u043d\u0434';return}
  var name=document.getElementById('fb-name').value.trim().slice(0,100).replace(/<[^>]*>/g,'');
  var email=document.getElementById('fb-email').value.trim().slice(0,100).replace(/<[^>]*>/g,'');
  var message=document.getElementById('fb-message').value.trim().slice(0,2000).replace(/<[^>]*>/g,'');
  if(!message||message.length<3){status.style.display='block';status.style.color='var(--mars)';status.textContent='\u041d\u0430\u043f\u0438\u0448\u0438\u0442\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435';return}
  _fbLastTime=Date.now();status.style.display='block';status.style.color='var(--text-d)';status.textContent='\u041e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c...';
  try{
    var resp=await fetch('https://widgets.sutra.center/api/feedback',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({name:name||'\u0410\u043d\u043e\u043d\u0438\u043c',email:email,message:message,source:CONFIG.domain||''})});
    if(resp.ok){_fbSent++;status.style.color='var(--mint)';status.textContent='\u0421\u043f\u0430\u0441\u0438\u0431\u043e!';document.getElementById('feedback-form').reset()}
    else throw new Error('error');
  }catch(err){
    window.location.href='mailto:'+(CONFIG.email||'')+'?subject='+encodeURIComponent((CONFIG.domain||'')+': '+name)+'&body='+encodeURIComponent(message);
    status.style.color='var(--accent)';status.textContent='\u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0439 \u043a\u043b\u0438\u0435\u043d\u0442...';
  }
}

/* ================================================================
   LOADING OVERLAY ANIMATION (Vedic-themed messages)
   ================================================================ */
var _loadingInterval=null;
var LOADING_MESSAGES=[
  {at:0,msg:'\u0421\u043e\u0435\u0434\u0438\u043d\u044f\u0435\u043c\u0441\u044f \u0441 Swiss Ephemeris...',pct:5},
  {at:2000,msg:'\u0412\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u043c Julian Day Number...',pct:10},
  {at:4000,msg:'\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c Ayanamsha \u0434\u043b\u044f \u044d\u043f\u043e\u0445\u0438...',pct:18},
  {at:6000,msg:'\u0420\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f Navagraha...',pct:28},
  {at:9000,msg:'\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c Nakshatra \u0438 Pada...',pct:38},
  {at:12000,msg:'\u0410\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c Vimshottari Dasha...',pct:48},
  {at:16000,msg:'\u0413\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0446\u0438\u044e \u043a\u0430\u0440\u0442\u044b...',pct:60},
  {at:22000,msg:'\u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c Sampurna Phala (\u043f\u043e\u043b\u043d\u044b\u0439 \u043e\u0442\u0447\u0451\u0442)...',pct:75},
  {at:30000,msg:'\u0424\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u043c PDF...',pct:88},
  {at:40000,msg:'\u041f\u043e\u0447\u0442\u0438 \u0433\u043e\u0442\u043e\u0432\u043e \u2014 Shubham Bhavatu...',pct:95}
];

function startLoadingAnimation(){
  var start=Date.now();var bar=document.getElementById('loading-progress-fill');var st=document.getElementById('loading-status');
  var idx=0;
  _loadingInterval=setInterval(function(){
    var elapsed=Date.now()-start;
    while(idx<LOADING_MESSAGES.length&&elapsed>=LOADING_MESSAGES[idx].at){
      st.textContent=LOADING_MESSAGES[idx].msg;
      bar.style.width=LOADING_MESSAGES[idx].pct+'%';
      idx++;
    }
  },500);
}
function stopLoadingAnimation(){
  if(_loadingInterval){clearInterval(_loadingInterval);_loadingInterval=null}
  var bar=document.getElementById('loading-progress-fill');if(bar)bar.style.width='100%';
  var st=document.getElementById('loading-status');if(st)st.textContent='\u0413\u043e\u0442\u043e\u0432\u043e! Shubham Bhavatu.';
}

/* ================================================================
   PURCHASE HANDLER
   ================================================================ */
function handlePurchase(){
  var price=_activePromo?_activePromo.final:BASE_PRICE;
  if(_activePromo&&_activePromo.final===0){
    if(_activePromo._code)incrementPromoUsage(_activePromo._code);
    generateAIPremiumPDF();return;
  }
  var date=document.getElementById('date-input')?document.getElementById('date-input').value:'';
  var botUrl='https://t.me/'+(CONFIG.telegram_bot||'MatrixBestDestiny_Bot')+'?start='+(CONFIG.telegram_start||'pay')+'_'+encodeURIComponent(date);
  var modal=document.createElement('div');
  modal.style.cssText='position:fixed;inset:0;z-index:10000;background:var(--blur-overlay);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center';
  modal.innerHTML='<div style="max-width:400px;padding:32px;background:var(--surface);border:1px solid var(--border-s);border-radius:4px;text-align:center">'+
    '<div style="font-family:Cinzel,serif;font-size:14px;letter-spacing:.15em;color:var(--accent);margin-bottom:16px">SAMPURNA PHALA</div>'+
    '<div style="font-size:24px;font-family:Cormorant Garamond,serif;color:var(--accent);margin-bottom:20px">'+price+' \u20bd</div>'+
    '<a href="'+botUrl+'" target="_blank" style="display:block;padding:14px 24px;background:linear-gradient(135deg,#0088cc,#00aaee);color:#fff;border-radius:4px;font-size:13px;text-decoration:none;margin-bottom:12px">&#9992; \u041e\u043f\u043b\u0430\u0442\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 Telegram</a>'+
    '<p style="font-size:10px;color:var(--text-d);margin-bottom:16px">\u041e\u0442\u0447\u0451\u0442 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0432 \u0447\u0430\u0442 \u0431\u043e\u0442\u0430</p>'+
    '<button onclick="this.closest(\'div[style*=fixed]\').remove()" style="padding:8px 24px;background:transparent;border:1px solid var(--border-s);color:var(--text-d);border-radius:2px;font-size:11px;cursor:pointer">\u0417\u0430\u043a\u0440\u044b\u0442\u044c</button>'+
    '</div>';
  document.body.appendChild(modal);
}

/* ================================================================
   AI PREMIUM PDF GENERATION
   ================================================================ */
function generateAIPremiumPDF(){
  var r=window._lastResult;
  if(!r){alert('\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0440\u0430\u0441\u0447\u0451\u0442');return}
  var btn=document.getElementById('premium-buy-btn');
  if(btn){btn.textContent='\u0413\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c Jyotish-\u043e\u0442\u0447\u0451\u0442...';btn.style.pointerEvents='none';btn.style.opacity='.6'}

  var overlay=document.getElementById('ai-loading-overlay');
  if(overlay){overlay.style.display='flex';startLoadingAnimation()}

  var birth=window._lastBirth||{};
  var name=birth.name||'';
  var date=birth.date||'';
  var context=JSON.stringify(r).slice(0,3000);

  var calls=(CONFIG.ai_sections||[]).map(function(s){
    var fullPrompt=s.prompt+'\n\n\u041a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u043a\u0430\u0440\u0442\u044b: '+context;
    return fetch(API+'/api/v1/matrix/generate',{
      method:'POST',headers:{'Content-Type':'application/json'},
      body:JSON.stringify({prompt:fullPrompt,section:s.section,system:CONFIG.system_name_en||'jyotish',max_tokens:8192})
    }).then(function(resp){return resp.json()}).then(function(data){return{section:s.section,text:data.text||data.content||''}}).catch(function(){return{section:s.section,text:''}});
  });

  Promise.all(calls).then(function(results){
    stopLoadingAnimation();if(overlay)overlay.style.display='none';

    var accent='#B8935A';var dim='#6b5e4a';

    var h='<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Мухурта — благоприятное время по джйотиш, расчёт онлайн</title>';
    h+='<link rel="stylesheet" href="/fonts/local-fonts.css">';
    h+='<link rel="icon" href="/favicon.svg" type="image/svg+xml">';
    h+='<style>';
    h+='body{font-family:Jost,sans-serif;color:#2C2820;background:#FBF8F1;margin:0;padding:40px 60px;line-height:1.7;max-width:800px;margin:0 auto;font-weight:300}';
    h+='h1,h2,h3{font-family:Cormorant Garamond,serif;font-weight:300;margin:0}';
    h+='.accent{color:'+accent+'} .dim{color:'+dim+'}';
    h+='.section{margin:20px 0;padding:20px;border-left:3px solid '+accent+';background:rgba(184,147,90,0.03)}';
    h+='.label{font-family:Cinzel,serif;font-size:10px;letter-spacing:2px;text-transform:uppercase;margin-bottom:8px}';
    h+='.divider{text-align:center;margin:40px 0 24px;padding:20px 0;border-top:2px solid rgba(184,147,90,0.2);border-bottom:2px solid rgba(184,147,90,0.2)}';
    h+='table{width:100%;border-collapse:collapse;font-size:13px} td,th{padding:8px;border-bottom:1px solid #E8E0D0;text-align:left}';
    h+='.footer{text-align:center;margin-top:40px;padding-top:16px;border-top:1px solid #E8E0D0;font-size:11px;color:'+dim+'}';
    h+='@media print{body{padding:20px 40px;-webkit-print-color-adjust:exact;print-color-adjust:exact}@page{margin:15mm}.page-break{page-break-before:always}}';
    h+='</style></head><body>';

    // Cover
    h+='<div style="text-align:center;padding:60px 0 40px;border-bottom:2px solid rgba(184,147,90,0.2);margin-bottom:24px">';
    h+='<div style="font-size:14px;letter-spacing:4px;color:'+accent+';text-transform:uppercase;margin-bottom:20px">&#183; JYOTISH &#183;</div>';
    h+='<div style="font-size:28px;font-family:Cormorant Garamond,serif;margin-bottom:4px;color:#2C2820">Janma Kundali</div>';
    h+='<div style="font-size:22px;font-family:Cormorant Garamond,serif;margin-bottom:12px;color:#2C2820">\u041f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0430</div>';
    h+='<div style="font-size:15px;color:'+dim+'">'+(name?name+' \u00b7 ':'')+date+'</div>';
    h+='<div style="font-size:10px;color:'+accent+';margin-top:16px;font-family:JetBrains Mono,monospace">Swiss Ephemeris v2.10 \u00b7 NASA JPL DE431 \u00b7 Lahiri Ayanamsha</div>';
    h+='<div style="font-size:11px;color:'+accent+';margin-top:8px">'+(CONFIG.domain||'')+' \u00b7 Powered by SUTRA</div>';
    h+='</div>';

    // AI sections
    h+='<div class="page-break"></div>';
    h+='<div class="divider"><span style="font-family:Cinzel,serif;font-size:10px;letter-spacing:3px;color:'+accent+';text-transform:uppercase">SAMPURNA PHALA</span></div>';

    var aiTitles=CONFIG.ai_titles||{};
    results.forEach(function(res,idx){
      if(idx>0&&idx%2===0)h+='<div class="page-break"></div>';
      h+='<div class="section">';
      h+='<div class="label" style="color:'+accent+'">'+(aiTitles[res.section]||res.section).toUpperCase()+'</div>';
      var bodyHTML=(res.text||'\u0420\u0430\u0437\u0434\u0435\u043b \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438.')
        .replace(/\*\*(.+?)\*\*/g,'<strong>$1</strong>')
        .replace(/\*(.+?)\*/g,'<em>$1</em>')
        .split('\n\n').map(function(p){return p.trim()?'<p style="font-size:13px;line-height:1.8;margin:0 0 10px">'+p.replace(/\n/g,' ')+'</p>':''}).join('');
      h+=bodyHTML+'</div>';
    });

    // Cross-sell SUTRA
    h+='<div style="max-width:500px;margin:32px auto;padding:20px 24px;border:1px solid rgba(184,147,90,0.2);border-radius:4px;text-align:center;background:rgba(184,147,90,0.03)">';
    h+='<div style="font-size:10px;letter-spacing:2px;text-transform:uppercase;color:'+accent+';margin-bottom:8px">SUTRA</div>';
    h+='<p style="font-size:12px;color:'+dim+';line-height:1.7;margin:0 0 12px">\u041f\u043e\u043b\u043d\u044b\u0439 \u0440\u0430\u0441\u0447\u0451\u0442: Vimshottari Dasha, Ashtakavarga, Shadbala, KP, Jaimini \u2014 79 API endpoints \u0432 \u043e\u0434\u043d\u043e\u043c \u043a\u0430\u0431\u0438\u043d\u0435\u0442\u0435.</p>';
    h+='<a href="https://sutra.center" style="display:inline-block;padding:8px 24px;background:linear-gradient(135deg,'+accent+',#A07B42);color:#2C2820;font-size:11px;letter-spacing:.1em;text-transform:uppercase;text-decoration:none;border-radius:2px;font-family:Cinzel,serif">sutra.center</a>';
    h+='</div>';

    // Disclaimer
    h+='<div style="max-width:600px;margin:20px auto 0;padding:12px 16px;font-size:9px;color:#999;text-align:center;line-height:1.6;border-top:1px solid #E8E0D0">';
    h+='\u0414\u0430\u043d\u043d\u044b\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u043d\u043e\u0441\u0438\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e-\u0430\u043d\u0430\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440. \u041d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0433\u0430\u0434\u0430\u043d\u0438\u0435\u043c, \u043c\u0435\u0434\u0438\u0446\u0438\u043d\u0441\u043a\u043e\u0439 \u0438\u043b\u0438 \u0444\u0438\u043d\u0430\u043d\u0441\u043e\u0432\u043e\u0439 \u043a\u043e\u043d\u0441\u0443\u043b\u044c\u0442\u0430\u0446\u0438\u0435\u0439. 16+';
    h+='</div>';

    // Footer
    h+='<div class="footer">&#183; JYOTISH &#183; '+(CONFIG.domain||'').toUpperCase()+'<br>Powered by SUTRA \u00b7 Swiss Ephemeris \u00b7 '+new Date().getFullYear()+'</div>';
    h+='</body></html>';

    h=h.replace(/\u2726/g,'·').replace(/\u2609/g,'Солнце').replace(/\u263d/g,'Луна').replace(/\u263e/g,'Луна').replace(/\u263c/g,'Солнце').replace(/\u2642/g,'Марс').replace(/\u263f/g,'Меркурий').replace(/\u2643/g,'Юпитер').replace(/\u2640/g,'Венера').replace(/\u2644/g,'Сатурн').replace(/\u260a/g,'Раху').replace(/\u260b/g,'Кету');var w=window.open('','_blank');
    if(w){w.document.write(h);w.document.close();w.onload=function(){setTimeout(function(){w.print()},500)}}
    if(btn){btn.textContent='\u2728 Sampurna Phala \u2014 \u041f\u043e\u043b\u043d\u0430\u044f \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0430';btn.style.pointerEvents='auto';btn.style.opacity='1'}
  });
}
</script>
<script>
/* ── Дофамин: панчанга-ячейки результата muhurta кликабельны → разжёвка «что такое анга» (окна уже само-объясняются) ── */
var PANCHANGA_INFO={
 'Титхи':'Титхи — лунный день. Показывает энергию и настроение дня. В растущую луну (Шукла-пакша) хорошо начинать и копить; в убывающую (Кришна) — завершать и отпускать.',
 'Вара':'Вара — день недели и его планета-управитель. Задаёт общий тон дня: понедельник (Луна) — про чувства, вторник (Марс) — про действие.',
 'Накшатра':'Накшатра — лунное созвездие (одно из 27). Тонкая окраска дня: куда естественно течёт энергия и какие дела сегодня «по руке».',
 'Йога':'Йога — особое сочетание Солнца и Луны (одно из 27). Качество усилий и удачи: благоприятная помогает начинаниям, неблагоприятная просит осторожности.',
 'Карана':'Карана — половина титхи (одна из 11). Уточняет, насколько благоприятны конкретные дела в эту половину лунного дня.'
};
(function(){
  var content=document.getElementById('muhurta-result-content'); if(!content) return;
  function wire(){
    var divs=content.querySelectorAll('div'); var firstCell=null;
    for(var i=0;i<divs.length;i++){
      var cell=divs[i]; var fc=cell.firstElementChild; if(!fc) continue;
      var anga=(fc.textContent||'').trim();
      if(!PANCHANGA_INFO[anga]) continue;
      if(!firstCell) firstCell=cell;
      if(cell.__angaWired) continue;
      cell.__angaWired=true; cell.style.cursor='pointer'; cell.setAttribute('data-anga',anga);
    }
    if(firstCell && firstCell.parentNode && firstCell.parentNode.parentNode && !document.getElementById('m-panchanga-hint')){
      var grid=firstCell.parentNode;
      var h=document.createElement('div'); h.id='m-panchanga-hint'; h.className='panchanga-hint';
      h.textContent='👆 Нажмите на элемент панчанги — что он значит';
      grid.parentNode.insertBefore(h, grid);
    }
  }
  try{ new MutationObserver(wire).observe(content,{childList:true,subtree:true}); }catch(e){}
  wire(); _wirePanchangTips();
})();
function _wirePanchangTips(){
  if(!document.getElementById('panchanga-tip-css')){
    var st=document.createElement('style'); st.id='panchanga-tip-css';
    st.textContent='.panchanga-hint{text-align:center;font-size:13px;color:var(--accent,#C9A96E);opacity:.85;margin:0 0 12px;letter-spacing:.02em}'+
      '[data-anga]:hover{transform:translateY(-2px)}'+
      '.panchanga-tip{position:fixed;z-index:10000;max-width:300px;background:var(--surface,#1a1614);color:var(--text,#EDE4D3);border:1px solid var(--accent,#C9A96E);border-radius:4px;padding:14px 16px;box-shadow:0 10px 40px rgba(0,0,0,.45);opacity:0;transform:translateY(6px);transition:opacity .2s,transform .2s;pointer-events:none;font-family:Jost,sans-serif}'+
      '.panchanga-tip.show{opacity:1;transform:translateY(0)}'+
      '.panchanga-tip-title{font-family:Cinzel,serif;font-size:13px;letter-spacing:.08em;color:var(--accent,#C9A96E);margin-bottom:8px}'+
      '.panchanga-tip-body{font-size:13px;line-height:1.6;color:var(--text-m,#B8A890)}';
    document.head.appendChild(st);
  }
  if(window.__panchangTipWired) return; window.__panchangTipWired=true;
  document.addEventListener('click',function(ev){
    var cell=ev.target&&ev.target.closest?ev.target.closest('[data-anga]'):null;
    if(!cell){ _hidePanchangTip(); return; }
    var anga=cell.getAttribute('data-anga'); var body=PANCHANGA_INFO[anga]; if(!body){ _hidePanchangTip(); return; }
    _showPanchangTip(cell, anga, body);
  });
}
function _showPanchangTip(anchor,title,body){
  var tip=document.getElementById('panchanga-tip');
  if(!tip){ tip=document.createElement('div'); tip.id='panchanga-tip'; tip.className='panchanga-tip';
    tip.innerHTML='<div class="panchanga-tip-title"></div><div class="panchanga-tip-body"></div>'; document.body.appendChild(tip); }
  tip.querySelector('.panchanga-tip-title').textContent=title;
  tip.querySelector('.panchanga-tip-body').textContent=body;
  var rc=anchor.getBoundingClientRect();
  tip.style.visibility='hidden'; tip.classList.add('show');
  var tw=tip.offsetWidth, th=tip.offsetHeight;
  var left=rc.left+rc.width/2-tw/2; left=Math.max(10,Math.min(left,window.innerWidth-tw-10));
  var top=rc.top-th-10; if(top<10) top=rc.bottom+10;
  tip.style.left=left+'px'; tip.style.top=top+'px'; tip.style.visibility='visible';
}
function _hidePanchangTip(){ var t=document.getElementById('panchanga-tip'); if(t)t.classList.remove('show'); }
</script>
<script src="https://widgets.sutra.center/v2/infra/ai-guru.js" defer></script><script>document.addEventListener("DOMContentLoaded",function(){if(window.AIGuru)AIGuru.init({systemName:"Мухурта · благоприятное время",siteName:"Помощник SUTRA",placeholder:"Спросите о вашей карте...",greeting:"Намасте! Я помогу разобраться в вашей карте. Задайте вопрос."});});</script>
<style id="cp-protect">#result,#result *,#gate-result,#gate-result *,.result-cards,.result-cards *{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#result input,#result textarea,#result select,#result button,#result a{-webkit-user-select:auto;-moz-user-select:auto;user-select:auto}@media print{#result,#gate-result,.result-cards{display:none!important}}</style><script id="cp-protect-js">(function(){function r(t){return t&&t.closest&&t.closest("#result,#gate-result,.result-cards")}function inp(t){return t&&t.matches&&t.matches("input,textarea,select")}["copy","cut","contextmenu","dragstart"].forEach(function(ev){document.addEventListener(ev,function(e){if(r(e.target)&&!inp(e.target))e.preventDefault()},true)})})();</script>
<style id="eco-brand-css">
#sutra-eco-brand{max-width:760px;margin:32px auto;text-align:center}
.seb-eye{font-family:'Cinzel',serif;font-size:10px;letter-spacing:.25em;text-transform:uppercase;color:var(--gold,#C9A96E);margin-bottom:6px}
.seb-h{font-family:'Cormorant Garamond','EB Garamond',serif;font-size:24px;color:var(--text,#F0E8D8);margin:0 0 6px}
.seb-sub{font-size:13px;color:var(--text-m,#c9bfb0);margin:0 auto 18px;max-width:520px;line-height:1.6}
.seb-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
.seb-card{display:flex;flex-direction:column;gap:3px;padding:15px 14px;border:1px solid var(--border-s,rgba(201,169,110,.18));border-radius:10px;background:var(--surface,#13100E);text-decoration:none;transition:border-color .25s,transform .25s}
.seb-card:hover{border-color:var(--gold,#C9A96E);transform:translateY(-2px)}
.seb-n{font-family:'Cinzel',serif;font-size:12px;letter-spacing:.06em;color:var(--gold,#C9A96E)}
.seb-t{font-size:12px;color:var(--text-m,#c9bfb0);line-height:1.4}
.seb-foot{margin-top:16px;font-size:10px;color:var(--text-d,#8a8a8a);letter-spacing:.08em;text-transform:uppercase}
@media(max-width:520px){.seb-grid{grid-template-columns:1fr}}
</style><script id="eco-datecarry">
(function(){
  function carry(){
    try{
      var inp=document.getElementById('date-input')||document.getElementById('birthDate')||document.querySelector('input[placeholder*="ДД"]');
      var d=inp&&inp.value?inp.value.replace(/\D/g,''):''; if(d.length!==8) return;
      document.querySelectorAll('.seb-card').forEach(function(a){var u=a.getAttribute('href').split('?')[0];a.setAttribute('href',u+'?d='+d);});
    }catch(e){}
  }
  document.addEventListener('click',function(e){ if(e.target.closest&&e.target.closest('.seb-card')) carry(); },true);
})();
</script><script id="sutra-handoff">
(function(){
  try{
    var p=new URLSearchParams(location.search).get('d'); if(!p) return;
    var d=(''+p).replace(/\D/g,''); if(d.length===8) d=d.slice(0,2)+'.'+d.slice(2,4)+'.'+d.slice(4);
    if(!/^\d{2}\.\d{2}\.\d{4}$/.test(d)) return;
    function go(){
      var inp=document.getElementById('birthDate')||document.getElementById('date-input')||document.querySelector('input[name="birthDate"],input[placeholder*="ДД"]');
      if(!inp) return;
      inp.value=d; inp.dispatchEvent(new Event('input',{bubbles:true})); inp.dispatchEvent(new Event('change',{bubbles:true}));
      var btn=document.querySelector('.btn-calc,.btn-mars,button[onclick*="calc"],button[onclick*="Calc"],button[type="submit"].btn-primary');
      if(btn){ btn.click(); }
      else if(typeof calculate==='function'){ calculate(); }
    }
    if(document.readyState!=='loading') setTimeout(go,400); else document.addEventListener('DOMContentLoaded',function(){setTimeout(go,400);});
  }catch(e){}
})();
</script>
<script id="rk-pay">
(function(){
  var API='https://api.sutra.center';
  window.handlePurchase=function(){
    try{
      if(typeof _activePromo!=='undefined'&&_activePromo&&_activePromo.final===0){
        if(_activePromo._code&&typeof incrementPromoUsage==='function')incrementPromoUsage(_activePromo._code);
        if(typeof generateAIPremiumPDF==='function')generateAIPremiumPDF();
        return;
      }
    }catch(e){}
    var btn=document.getElementById('premium-buy-btn');
    var di=document.getElementById('date-input'); var date=di?di.value:'';
    if(btn){btn.setAttribute('data-t',btn.textContent);btn.textContent='Открываем оплату…';btn.style.pointerEvents='none';btn.style.opacity='.6';}
    fetch(API+'/api/v1/rk/create',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({site:'muhurta',calc:{date:date}})})
      .then(function(r){return r.json();})
      .then(function(d){
        if(d&&d.payment_url){ try{sessionStorage.setItem('rk_inv',String(d.inv_id));}catch(e){} window.location.href=d.payment_url; }
        else { alert('Не удалось создать платёж.'); if(btn){btn.textContent=btn.getAttribute('data-t')||'Оплатить';btn.style.pointerEvents='';btn.style.opacity='';} }
      })
      .catch(function(){ alert('Ошибка связи с оплатой.'); if(btn){btn.textContent=btn.getAttribute('data-t')||'Оплатить';btn.style.pointerEvents='';btn.style.opacity='';} });
  };
  function deliver(date){
    try{
      var di=document.getElementById('date-input');
      if(di&&date&&!di.value){ di.value=date; di.dispatchEvent(new Event('input',{bubbles:true})); }
      if(!window._lastResult && typeof doCalculate==='function'){ doCalculate(); }
    }catch(e){}
    var w=0;(function wait(){ w++;
      if(window._lastResult){ if(typeof generateAIPremiumPDF==='function') generateAIPremiumPDF(); }
      else if(w<40){ setTimeout(wait,500); }
    })();
  }
  function onReturn(){
    var q=new URLSearchParams(location.search);
    var inv=q.get('InvId')||q.get('InvoiceID')||(function(){try{return sessionStorage.getItem('rk_inv');}catch(e){return null;}})();
    if(!inv) return;
    var tries=0;
    (function poll(){ tries++;
      fetch(API+'/api/v1/rk/status/'+encodeURIComponent(inv)).then(function(r){return r.json();}).then(function(d){
        if(d&&d.paid){ try{sessionStorage.removeItem('rk_inv');history.replaceState({},'',location.pathname);}catch(e){} deliver(d.calc&&d.calc.date); }
        else if(tries<20){ setTimeout(poll,3000); }
      }).catch(function(){ if(tries<20) setTimeout(poll,3000); });
    })();
  }
  if(document.readyState!=='loading') setTimeout(onReturn,900); else document.addEventListener('DOMContentLoaded',function(){setTimeout(onReturn,900);});
})();
</script>
</body>
</html>
