<?xml version="1.0" encoding="UTF-8" standalone="no"?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0"><channel><title>PAGINA LIPSA</title><description>Pagina Lipsă îți oferă experiențe personalizate de astrologie și numerologie. Descoperă astrograma ta, compatibilitatea în cuplu și Pagina Lipsă de Mâine.</description><managingEditor>noreply@blogger.com (Unknown)</managingEditor><pubDate>Mon, 7 Sep 2026 19:18:00 +0300</pubDate><generator>Blogger http://www.blogger.com</generator><openSearch:totalResults xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">1</openSearch:totalResults><openSearch:startIndex xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">1</openSearch:startIndex><openSearch:itemsPerPage xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">25</openSearch:itemsPerPage><link>http://www.paginalipsa.ro/</link><language>en-us</language><itunes:explicit>no</itunes:explicit><itunes:subtitle>Pagina Lipsă îți oferă experiențe personalizate de astrologie și numerologie. Descoperă astrograma ta, compatibilitatea în cuplu și Pagina Lipsă de Mâine.</itunes:subtitle><itunes:owner><itunes:email>noreply@blogger.com</itunes:email></itunes:owner><item><title/><link>http://www.paginalipsa.ro/2026/08/astrograma-ta-personalizata-completeaza.html</link><author>noreply@blogger.com (Unknown)</author><pubDate>Mon, 17 Aug 2026 20:13:47 +0300</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-1515054121071454112.post-43551610404014935</guid><description>&lt;!-- =========================================================
     INTRO MISTERIOS - PAGINA LIPSA
========================================================= --&gt;
&lt;div aria-label="Intrare Pagina Lipsa" class="pl-intro-screen" id="plIntroScreen"&gt;
  &lt;div class="pl-intro-content"&gt;
    &lt;img alt="Simbol Pagina Lipsa - berbec in diamant" class="pl-intro-logo" src="https://blogger.googleusercontent.com/img/a/AVvXsEiLL8dqr9DH-BWzybetiaqItdsqjph3fTQk162eFQHTZIDMjsTkpNgPWy1RoB67JK2liAj_-WPlDx6HQ75jaR8E-s73C5gp8kA_a8ebU9PBrl2tThmdkRO7tLTl-Ew4jf2aoyxgH6UXO0mO_t4256Il4wLXiRxXwaMar3nktr_KW88zjcV_ctFo4dU5al0" /&gt;

    &lt;h1 class="pl-intro-title"&gt;Cât de bine crezi că te cunoști?&lt;/h1&gt;

    &lt;p class="pl-intro-subtitle"&gt;
      Poate că pagina care îți lipsește o putem scrie chiar acum.
    &lt;/p&gt;

    &lt;button class="pl-intro-enter" id="plIntroEnter" type="button"&gt;
      INTRĂ
    &lt;/button&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;!-- =========================================================
     PAGINA PRINCIPALA - PAGINA LIPSA
========================================================= --&gt;

&lt;div class="pl-home" id="paginaPrincipala"&gt;
  &lt;div class="pl-home-inner"&gt;
    &lt;div aria-hidden="true" class="pl-symbol pl-symbol-star"&gt;&lt;/div&gt;

    &lt;p class="pl-home-intro"&gt;
      Alege experiența care ți se potrivește. Descoperă ce îți poate aduce ziua de mâine, explorează mai multe despre tine prin astrograma personalizată sau află ce spune compatibilitatea despre dinamica relației voastre.
    &lt;/p&gt;

    &lt;button class="pl-choice pl-forecast-choice" onclick="deschideSectiunePL('prognoza')" type="button"&gt;
      &lt;span class="pl-badge pl-badge-free"&gt;GRATIS&lt;/span&gt;
      &lt;span class="pl-choice-icon"&gt;☾&lt;/span&gt;
      &lt;span class="pl-choice-content"&gt;
        &lt;strong&gt;PAGINA LIPSĂ DE MÂINE&lt;/strong&gt;
        &lt;small&gt;Descoperă ce îți poate aduce ziua de mâine&lt;/small&gt;
      &lt;/span&gt;
      &lt;span class="pl-arrow"&gt;›&lt;/span&gt;
    &lt;/button&gt;

    &lt;button class="pl-choice" onclick="deschideSectiunePL('astro')" type="button"&gt;
      &lt;span class="pl-badge pl-badge-standard"&gt;STANDARD&lt;/span&gt;
      &lt;span aria-hidden="true" class="pl-choice-icon pl-css-star"&gt;&lt;/span&gt;
      &lt;span class="pl-choice-content"&gt;
        &lt;strong&gt;ASTROGRAMA TA&lt;/strong&gt;
        &lt;small&gt;Descopera interpretarea ta personala&lt;/small&gt;
      &lt;/span&gt;
      &lt;span class="pl-arrow"&gt;›&lt;/span&gt;
    &lt;/button&gt;

    &lt;button class="pl-choice pl-premium" onclick="deschideSectiunePL('compatibilitate')" type="button"&gt;
      &lt;span class="pl-badge"&gt;PREMIUM&lt;/span&gt;
      &lt;span class="pl-choice-icon"&gt;♡&lt;/span&gt;
      &lt;span class="pl-choice-content"&gt;
        &lt;strong class="pl-compat-title-mobile"&gt;COMPATIBILITATE&amp;nbsp;IN&amp;nbsp;CUPLU&lt;/strong&gt;
        &lt;small&gt;Descopera dinamica dintre voi si punctele care va apropie sau va provoaca&lt;/small&gt;
      &lt;/span&gt;
      &lt;span class="pl-arrow"&gt;›&lt;/span&gt;
    &lt;/button&gt;

    &lt;button class="pl-choice pl-discover-choice" onclick="deschideSectiunePL('descopera')" type="button"&gt;
      &lt;span class="pl-badge pl-badge-info"&gt;INFO&lt;/span&gt;
      &lt;span class="pl-choice-icon"&gt;◈&lt;/span&gt;
      &lt;span class="pl-choice-content"&gt;
        &lt;strong&gt;DESCOPERA PAGINA LIPSA&lt;/strong&gt;
        &lt;small&gt;Vezi exemple si afla ce primesti in fiecare experienta&lt;/small&gt;
      &lt;/span&gt;
      &lt;span class="pl-arrow"&gt;›&lt;/span&gt;
    &lt;/button&gt;








    &lt;!-- =========================================================
         DEMO AUDIO CARTE - SCLAVUL DIN OGLINDA
         Varianta compacta, asortata cu meniul principal
    ========================================================== --&gt;
    &lt;section class="pl-book-demo" id="plBookDemo" aria-label="Audio Sclavul din oglinda"&gt;
      &lt;span class="pl-book-demo-badge"&gt;AUDIO&lt;/span&gt;

      &lt;div class="pl-book-demo-layout"&gt;
        &lt;a class="pl-book-demo-cover-link" href="https://payhip.com/b/kY07K" target="_blank" rel="noopener" aria-label="Vezi cartea Sclavul din oglinda"&gt;
          &lt;img class="pl-book-demo-cover" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcGkCFQzvzSlWod0-eas2hbeNmAejiqn-sQeQpFleUc8y5lS9ywVELMnvhHznnQXK1PUPwbOTqfsitqLSWVz1qBb8xNAaJgNpNubWZXuEbFOjQyaEFzU60etvvfJDMvYOAEk_NRzGa311G9_B5ZjcvzF9-77NVBNpm8Rfj2z7z23coxTJrG6uPyLNBd7o/s320/sclavul%20din%20oglinda%20cover.png" alt="Coperta cartii Sclavul din oglinda de Michael Dalit" loading="lazy" /&gt;
        &lt;/a&gt;

        &lt;div class="pl-book-demo-main"&gt;
          &lt;h2&gt;Dacă nu-ți poți schimba destinul, acum este momentul să alegi să schimbi altceva.&lt;/h2&gt;

          &lt;div class="pl-book-demo-drive-wrap"&gt;
            &lt;iframe
              id="plBookAudioDrive"
              class="pl-book-demo-drive"
              src="https://drive.google.com/file/d/1ki4gLvcsRsES8poEMmwZ0ZlXZBknOSgi/preview"
              title="Audio Sclavul din oglindă"
              loading="lazy"
              allow="autoplay"&gt;
            &lt;/iframe&gt;
          &lt;/div&gt;

          &lt;a class="pl-book-demo-buy" href="https://payhip.com/b/kY07K" target="_blank" rel="noopener"&gt;
            TU CÂND ÎNCEPI? &lt;span aria-hidden="true"&gt;›&lt;/span&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/section&gt;

    &lt;button class="pl-choice pl-project-choice" onclick="deschideDespreProiectPL()" type="button"&gt;
      &lt;span class="pl-badge pl-badge-project"&gt;POVESTEA&lt;/span&gt;
      &lt;span class="pl-choice-icon"&gt;✦&lt;/span&gt;
      &lt;span class="pl-choice-content"&gt;
        &lt;strong&gt;DESPRE PROIECT&lt;/strong&gt;
        &lt;small&gt;Descoperă povestea din spatele Pagina Lipsă&lt;/small&gt;
      &lt;/span&gt;
      &lt;span class="pl-arrow"&gt;›&lt;/span&gt;
    &lt;/button&gt;

    &lt;div class="pl-feedback-section"&gt;
      &lt;h3&gt;Experiente povestite in cateva randuri&lt;/h3&gt;

      &lt;div class="pl-feedback-grid"&gt;

        &lt;div class="pl-feedback-card"&gt;
          &lt;div class="pl-feedback-name"&gt;Elena &lt;span&gt;Leu&lt;/span&gt;&lt;/div&gt;
          &lt;p&gt;
            „Nu mă așteptam ca astrograma să fie atât de detaliată. La început am zis că 14 pagini
            sunt multe, dar am ajuns să o citesc până la capăt. Sunt pasaje în care
            m-am regăsit foarte mult și altele la care încă mă gândesc.”
          &lt;/p&gt;
        &lt;/div&gt;

        &lt;div class="pl-feedback-card"&gt;
          &lt;div class="pl-feedback-name"&gt;Viorica &lt;span&gt;Gemeni&lt;/span&gt;&lt;/div&gt;
          &lt;p&gt;
            „Raportul de cuplu chiar e lung si a durat cateva secunde pana s-a generat.
            Recunosc ca ma intrebam daca s-a blocat, dar a meritat asteptarea. Mi-a
            placut ca nu vorbeste doar despre compatibilitate, ci si despre lucrurile
            la care avem de lucrat.”
          &lt;/p&gt;
        &lt;/div&gt;

        &lt;div class="pl-feedback-card"&gt;
          &lt;div class="pl-feedback-name"&gt;Ana &lt;span&gt;Berbec&lt;/span&gt;&lt;/div&gt;
          &lt;p&gt;
            „Unele lucruri mi s-au parut greu de acceptat la prima citire. Tocmai asta
            m-a facut sa revin asupra raportului. Nu am simtit ca incearca sa-mi spuna
            doar lucruri frumoase.”
          &lt;/p&gt;
        &lt;/div&gt;

        &lt;div class="pl-feedback-card"&gt;
          &lt;div class="pl-feedback-name"&gt;Florin &lt;span&gt;Varsator&lt;/span&gt;&lt;/div&gt;
          &lt;p&gt;
            „Am intrat mai mult din curiozitate si destul de sceptic. Raportul e mai
            amplu decat ma asteptam si unele interpretari au fost surprinzator de
            apropiate de felul in care ma cunosc. Nu m-a convins fiecare fraza, dar
            mi-a dat cateva lucruri la care sa ma gandesc.”
          &lt;/p&gt;
        &lt;/div&gt;

        &lt;div class="pl-feedback-card"&gt;
          &lt;div class="pl-feedback-name"&gt;Alexandra &lt;span&gt;Taur&lt;/span&gt;&lt;/div&gt;
          &lt;p&gt;
            „Mi-ar fi placut sa se genereze instant, dar am asteptat putin si apoi am
            inteles de ce. Raportul este foarte detaliat si nu seamana cu textele
            generale despre zodii pe care le gasesti peste tot. Pentru mine a meritat.”
          &lt;/p&gt;
        &lt;/div&gt;

      &lt;/div&gt;


          &lt;button class="pl-feedback-top" onclick="window.scrollTo({top:0, behavior:'smooth'});" type="button"&gt;
        ↑ SUS
      &lt;/button&gt;

      &lt;button aria-label="Acces administrare" class="pl-admin-hotspot" onclick="deschideLoginAdminPL()" tabindex="-1" type="button"&gt;&lt;/button&gt;

&lt;/div&gt;

  &lt;/div&gt;
&lt;/div&gt;







&lt;!-- =========================================================
     PROGNOZA DE MAINE - GRATUIT
========================================================= --&gt;
&lt;div class="pl-section pl-forecast-section" id="sectiunePrognoza" style="display:none;"&gt;
  &lt;div class="pl-forecast-nav"&gt;
    &lt;button class="pl-back" onclick="inapoiPaginaPrincipalaPL()" type="button"&gt;← ÎNAPOI&lt;/button&gt;
  &lt;/div&gt;

  &lt;div class="pl-forecast-card"&gt;
    &lt;div id="plForecastFormView"&gt;
      &lt;span class="pl-badge-static pl-forecast-free-badge"&gt;GRATIS&lt;/span&gt;
      &lt;div class="pl-forecast-symbol"&gt;☾&lt;/div&gt;
      &lt;h2&gt;PROGNOZA TA PENTRU MÂINE&lt;/h2&gt;
      &lt;p class="pl-forecast-intro"&gt;
        Introdu doar data nașterii și sexul. În câteva clipe primești un indiciu despre energia zilei de mâine, într-un mesaj scurt și echilibrat.
      &lt;/p&gt;

      &lt;form id="plForecastForm" onsubmit="return false;"&gt;
        &lt;label for="plForecastBirth"&gt;Data nașterii&lt;/label&gt;
        &lt;input autocomplete="off" id="plForecastBirth" inputmode="numeric" maxlength="10" placeholder="Ex: 12.09.1990" type="text" /&gt;

        &lt;label for="plForecastSex"&gt;Sex&lt;/label&gt;
        &lt;select id="plForecastSex"&gt;
          &lt;option value=""&gt;Selectează&lt;/option&gt;
          &lt;option value="F"&gt;Feminin&lt;/option&gt;
          &lt;option value="M"&gt;Masculin&lt;/option&gt;
        &lt;/select&gt;

        &lt;p class="pl-forecast-privacy"&gt;Datele exacte de nastere introduse sunt folosite doar pentru calcul si nu sunt salvate!&lt;/p&gt;

        &lt;button class="pl-forecast-submit" id="plForecastSubmit" type="button" onclick="genereazaPrognozaMainePL()"&gt;VEZI ZIUA DE MÂINE&lt;/button&gt;
        &lt;div aria-live="polite" class="pl-forecast-message" id="plForecastMessage" role="status"&gt;&lt;/div&gt;
      &lt;/form&gt;
    &lt;/div&gt;

    &lt;div id="plForecastResultView" style="display:none;"&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;!-- =========================================================
     DESPRE PROIECT - POVESTEA PAGINII LIPSA
========================================================= --&gt;
&lt;div id="sectiuneDespreProiect" class="pl-section pl-about-section" style="display:none;"&gt;

  &lt;div class="pl-about-nav"&gt;
    &lt;button type="button" class="pl-back" onclick="inchideDespreProiectPL()"&gt;← ÎNAPOI&lt;/button&gt;
  &lt;/div&gt;

  &lt;div class="pl-about-card"&gt;

    &lt;div class="pl-about-symbol"&gt;✦&lt;/div&gt;
    &lt;div class="pl-about-eyebrow"&gt;DESPRE PROIECT&lt;/div&gt;

    &lt;h2&gt;POVESTEA PAGINII LIPSĂ&lt;/h2&gt;

    &lt;p&gt;
      Pagina Lipsă a pornit din dorința de a crea o variantă accesibilă, personală și
      distractivă de explorare a astrologiei, numerologiei și a lucrurilor care ne fac
      curioși despre noi înșine.
    &lt;/p&gt;

    &lt;p&gt;
      Dar Pagina Lipsă este și un &lt;strong&gt;proiect personal de programare și automatizare&lt;/strong&gt;,
      construit de la zero de cineva aflat la început de drum în acest domeniu.
    &lt;/p&gt;

    &lt;p&gt;
      Fiecare funcție, fiecare automatizare și fiecare experiență pe care o descoperi aici
      reprezintă și o etapă de învățare. Proiectul crește odată cu experiența celui care îl
      construiește.
    &lt;/p&gt;

    &lt;div class="pl-about-highlight"&gt;
      &lt;strong&gt;De ce contează susținerea?&lt;/strong&gt;
      &lt;p&gt;
        Pentru ca un proiect online să poată continua, are nevoie de timp, servicii,
        infrastructură și resurse reale. Dezvoltarea, testarea și îmbunătățirea constantă
        au costuri, chiar și atunci când o parte din experiență rămâne accesibilă.
      &lt;/p&gt;
    &lt;/div&gt;

    &lt;p&gt;
      Susținerea ta ajută Pagina Lipsă să rămână online, să evolueze și să transforme idei
      noi în experiențe pe care le putem oferi mai departe.
    &lt;/p&gt;

    &lt;p&gt;
      Atunci când alegi să susții proiectul, prin carte sau prin participarea la inițiativele
      Pagina Lipsă, nu susții doar un produs. Susții și procesul de învățare, dezvoltare și
      construcție din spatele lui.
    &lt;/p&gt;

    &lt;div class="pl-about-support-action"&gt;
      &lt;a href="https://payhip.com/b/kY07K" target="_blank" rel="noopener" class="pl-about-buy-book"&gt;
        ♡ SUSȚINE PROIECTUL — CUMPĂRĂ CARTEA
      &lt;/a&gt;
    &lt;/div&gt;

    &lt;div class="pl-about-solution"&gt;
      &lt;div class="pl-about-solution-symbol"&gt;⌘&lt;/div&gt;
      &lt;h3&gt;ÎȚI PLACE CUM FUNCȚIONEAZĂ PAGINA LIPSĂ?&lt;/h3&gt;

      &lt;p&gt;
        Dacă ai o idee și ți-ar plăcea o soluție asemănătoare, putem vorbi despre ea.
        Sunt la început de drum, dar pot încerca să construiesc și pentru proiectul tău
        o experiență personalizată, bazată pe programare și automatizare.
      &lt;/p&gt;

      &lt;div class="pl-about-solution-label"&gt;HAI SĂ DISCUTĂM&lt;/div&gt;
    &lt;/div&gt;

    &lt;div class="pl-about-contact"&gt;
      &lt;h3&gt;VREI SĂ TRIMIȚI UN GÂND BUN?&lt;/h3&gt;
      &lt;p&gt;
        O idee, o sugestie, o experiență sau pur și simplu câteva cuvinte
      &lt;/p&gt;

      &lt;a href="mailto:paginalipsa@gmail.com" class="pl-about-email"&gt;
        paginalipsa@gmail.com
      &lt;/a&gt;
    &lt;/div&gt;

    &lt;div class="pl-about-signature"&gt;
      &lt;span&gt;Îți mulțumesc,&lt;/span&gt;
      &lt;strong&gt;MihaiL&lt;/strong&gt;
    &lt;/div&gt;

  &lt;/div&gt;
&lt;/div&gt;


&lt;!-- =========================================================
     ACCES ADMIN / LIVE
========================================================= --&gt;
&lt;div class="pl-admin-overlay" id="plAdminOverlay" style="display: none;"&gt;
  &lt;div class="pl-admin-login"&gt;
    &lt;button class="pl-admin-close" onclick="inchideLoginAdminPL()" type="button"&gt;×&lt;/button&gt;
    &lt;div class="pl-admin-title"&gt;ACCES ADMIN&lt;/div&gt;
    &lt;p&gt;Autentificare pentru modul LIVE.&lt;/p&gt;

    &lt;label for="plAdminUser"&gt;User&lt;/label&gt;
    &lt;input autocomplete="username" id="plAdminUser" type="text" /&gt;

    &lt;label for="plAdminPassword"&gt;Parola&lt;/label&gt;
    &lt;input autocomplete="current-password" id="plAdminPassword" type="password" /&gt;

    &lt;button class="pl-admin-login-button" id="plAdminLoginButton" onclick="autentificaAdminPL()" type="button"&gt;
      INTRA
    &lt;/button&gt;

    &lt;div class="pl-admin-message" id="plAdminMesaj"&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;!-- =========================================================
     DESCOPERA PAGINA LIPSA
========================================================= --&gt;

&lt;div class="pl-section" id="sectiuneDescopera" style="display: none;"&gt;

  &lt;div class="pl-discover-nav"&gt;
    &lt;button class="pl-back" onclick="inapoiPaginaPrincipalaPL()" type="button"&gt;← INAPOI&lt;/button&gt;
  &lt;/div&gt;

  &lt;div class="pl-discover-wrap"&gt;

    &lt;div class="pl-discover-head"&gt;
      &lt;div class="pl-symbol"&gt;◈&lt;/div&gt;
      &lt;h2&gt;DESCOPERA PAGINA LIPSA&lt;/h2&gt;
      &lt;p&gt;
        Pagina Lipsa nu inseamna raspunsuri de cateva randuri.
        Descopera experientele pe care le-am creat si vezi ce primesti inainte sa alegi.
      &lt;/p&gt;
    &lt;/div&gt;

    &lt;div class="pl-discover-product"&gt;
      &lt;div aria-hidden="true" class="pl-discover-icon pl-css-star"&gt;&lt;/div&gt;
      &lt;h3&gt;ASTROGRAMA PERSONALA&lt;/h3&gt;
      &lt;div class="pl-discover-highlight"&gt;O analiză complexă, de peste 15 pagini.&lt;/div&gt;
      &lt;p&gt;
        Fiecare analiza porneste de la un proces complex de calcul, in care data,
        ora exacta si locul nasterii sunt utilizate pentru determinarea configuratiei
        astrale corespunzatoare momentului nasterii. Sunt calculate pozitiile corpurilor
        ceresti, distributia acestora in semne si case astrologice, ascendentul si
        relatiile unghiulare dintre planete, rezultand o harta natala unica. Aceste
        date astronomice si matematice constituie baza tehnica peste care este
        construita interpretarea astrologica, corelata cu elementele numerologice
        ale profilului personal. Rezultatul nu este un text ales aleatoriu dupa zodie,
        ci o analiza individualizata, construita pornind de la configuratia specifica
        datelor introduse.
      &lt;/p&gt;
      &lt;button class="pl-discover-action" onclick="deschideSectiunePL('astro')" type="button"&gt;
        VEZI EXEMPLU DE ASTROGRAMA PERSONALA
      &lt;/button&gt;
    &lt;/div&gt;

    &lt;div class="pl-discover-product"&gt;
      &lt;div class="pl-discover-icon"&gt;♡&lt;/div&gt;
      &lt;h3&gt;COMPATIBILITATE IN CUPLU&lt;/h3&gt;
      &lt;div class="pl-discover-highlight"&gt;Un raport complex, de peste 40 de pagini.&lt;/div&gt;
      &lt;p&gt;
        Analiza de compatibilitate porneste de la calcularea separata a celor doua
        harti natale, utilizand pentru fiecare persoana data, ora exacta si locul
        nasterii. Sunt determinate configuratiile astrale individuale - pozitiile
        corpurilor ceresti, ascendentele, distributia planetelor in semne si case
        astrologice si relatiile unghiulare dintre acestea - dupa care cele doua
        structuri sunt suprapuse si analizate comparativ. Procesul urmareste conexiunile
        dintre elementele celor doua harti, zonele de complementaritate, atractie si
        sustinere, dar si configuratiile asociate diferentelor de ritm, comunicare sau
        potentialelor tensiuni. Peste aceasta baza de calcul astronomic si matematic
        este construita interpretarea astrologica si sunt integrate elementele
        numerologice individuale si de cuplu. Rezultatul nu este o simpla comparatie
        intre doua zodii, ci o analiza ampla si personalizata a dinamicii dintre doua
        configuratii natale distincte.
      &lt;/p&gt;
      &lt;button class="pl-discover-action" onclick="deschideSectiunePL('compatibilitate')" type="button"&gt;
        VEZI EXEMPLU DE COMPATIBILITATE IN CUPLU
      &lt;/button&gt;
    &lt;/div&gt;

    &lt;div class="pl-discover-product pl-discover-exclusive"&gt;
      &lt;span class="pl-badge-static"&gt;EXCLUSIVE&lt;/span&gt;
      &lt;div class="pl-discover-icon"&gt;✧&lt;/div&gt;
      &lt;h3&gt;SCRIE-TI PAGINA LIPSA&lt;/h3&gt;
      &lt;div class="pl-discover-highlight"&gt;
        O experienta exclusiva. Sesiune privata de chat de minimum 60 de minute.
      &lt;/div&gt;
      &lt;p&gt;
        Comunica fara rezerve despre ceea ce iti lipseste sau te nelinisteste.
        Ai la dispozitie un spatiu dedicat conversatiei, in care poti explora
        in profunzime ceea ce te preocupa.
      &lt;/p&gt;
      &lt;p class="pl-discover-quote"&gt;
        Poate ca raspunsul de care ai nevoie e mai aproape decat crezi.
      &lt;/p&gt;
      &lt;button class="pl-discover-action" onclick="deschideSectiunePL('sesiune')" type="button"&gt;
        DESCOPERA CUM FUNCTIONEAZA
      &lt;/button&gt;
    &lt;/div&gt;

    &lt;div class="pl-discover-note"&gt;
      Exemplele de rapoarte vor putea fi consultate aici fara a expune date personale reale.
    &lt;/div&gt;

    &lt;div class="pl-discover-disclaimer"&gt;
      &lt;strong&gt;Notă importantă&lt;/strong&gt;&lt;br /&gt;
      Interpretările oferite pe Pagina Lipsă au scop recreativ și de divertisment. Ele nu reprezintă certitudini, predicții garantate sau recomandări profesionale și nu ar trebui folosite ca bază pentru decizii importante. Privește-le ca pe o experiență de explorare personală, cu curiozitate și spirit deschis.
    &lt;/div&gt;

  &lt;/div&gt;

&lt;/div&gt;


&lt;!-- =========================================================
     COMPATIBILITATE IN CUPLU
========================================================= --&gt;

&lt;div class="pl-section" id="sectiuneCompatibilitate" style="display: none;"&gt;

  &lt;div class="pl-compat-nav"&gt;
    &lt;button class="pl-back" onclick="inapoiPaginaPrincipalaPL()" type="button"&gt;← INAPOI&lt;/button&gt;
  &lt;/div&gt;

  &lt;div class="compat-form-wrap" id="compatCard"&gt;

    &lt;div class="compat-head"&gt;
      &lt;span class="pl-badge-static"&gt;PREMIUM&lt;/span&gt;
      &lt;div class="pl-symbol"&gt;♡&lt;/div&gt;

      &lt;h2&gt;COMPATIBILITATE IN CUPLU&lt;/h2&gt;

      &lt;p class="compat-intro"&gt;
        Completeaza datele pentru ambele persoane. Pachetul Premium va include analiza compatibilitatii voastre si cele doua astrograme individuale.
      &lt;/p&gt;

      &lt;div class="compat-package"&gt;
        &lt;strong&gt;PRIMESTI 3 INTERPRETARI&lt;/strong&gt;
        &lt;span&gt;♡ Analiza compatibilitatii voastre&lt;/span&gt;
        &lt;span&gt;• Astrograma Persoanei 1&lt;/span&gt;
        &lt;span&gt;• Astrograma Persoanei 2&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;


    &lt;form id="compatForm" onsubmit="return false;"&gt;


      &lt;!-- =====================================================
           PERSOANA 1
      ====================================================== --&gt;

      &lt;div class="compat-person"&gt;
        &lt;div class="compat-person-title"&gt;
          &lt;span&gt;01&lt;/span&gt;
          &lt;div&gt;
            &lt;strong&gt;PERSOANA 1&lt;/strong&gt;
            &lt;small&gt;Prima astrograma individuala&lt;/small&gt;
          &lt;/div&gt;
        &lt;/div&gt;


        &lt;label for="compatAnimal1"&gt;
          Cu ce rezonezi?
        &lt;/label&gt;

        &lt;select id="compatAnimal1" required=""&gt;
          &lt;option value=""&gt;Selecteaza&lt;/option&gt;
          &lt;option value="Vulpe"&gt;Vulpe&lt;/option&gt;
          &lt;option value="Lup"&gt;Lup&lt;/option&gt;
          &lt;option value="Pisica"&gt;Pisica&lt;/option&gt;
          &lt;option value="Leu"&gt;Leu&lt;/option&gt;
          &lt;option value="Bufnita"&gt;Bufnita&lt;/option&gt;
          &lt;option value="Delfin"&gt;Delfin&lt;/option&gt;
          &lt;option value="Fluture"&gt;Fluture&lt;/option&gt;
          &lt;option value="Cal"&gt;Cal&lt;/option&gt;
          &lt;option value="Vultur"&gt;Vultur&lt;/option&gt;
          &lt;option value="Cerb"&gt;Cerb&lt;/option&gt;
          &lt;option value="Urs"&gt;Urs&lt;/option&gt;
          &lt;option value="Corb"&gt;Corb&lt;/option&gt;
        &lt;/select&gt;


        &lt;label for="compatData1"&gt;
          Data nasterii
        &lt;/label&gt;

        &lt;input autocomplete="off" id="compatData1" inputmode="numeric" maxlength="10" placeholder="Ex: 12.09.1990" required="" type="text" /&gt;

        &lt;p class="hint"&gt;
          Data este folosita doar pentru calculul interpretarii.
        &lt;/p&gt;


        &lt;label for="compatSex1"&gt;
          Sex
        &lt;/label&gt;

        &lt;select id="compatSex1" required=""&gt;
          &lt;option value=""&gt;Selecteaza&lt;/option&gt;
          &lt;option value="M"&gt;Masculin&lt;/option&gt;
          &lt;option value="F"&gt;Feminin&lt;/option&gt;
        &lt;/select&gt;


        &lt;label&gt;
          Ora aproximativa a nasterii
        &lt;/label&gt;

        &lt;div class="ora-container"&gt;
          &lt;select id="compatOraHH1" required=""&gt;
            &lt;option value=""&gt;Ora&lt;/option&gt;
          &lt;/select&gt;

          &lt;span class="separator-ora"&gt;:&lt;/span&gt;

          &lt;select id="compatOraMM1" required=""&gt;
            &lt;option value=""&gt;Minute&lt;/option&gt;
          &lt;/select&gt;
        &lt;/div&gt;

        &lt;p class="hint"&gt;
          Selecteaza ora si minutele cat mai apropiate de momentul nasterii.
        &lt;/p&gt;


        &lt;label for="compatOras1"&gt;
          Localitatea nasterii
        &lt;/label&gt;

        &lt;input autocomplete="off" id="compatOras1" maxlength="100" placeholder="Ex: Bucuresti" required="" type="text" /&gt;

        &lt;p class="hint"&gt;
          Localitatea este folosita doar pentru calculul ascendentului.
        &lt;/p&gt;

      &lt;/div&gt;


      &lt;div class="compat-divider"&gt;
        &lt;span&gt;♡&lt;/span&gt;
      &lt;/div&gt;


      &lt;!-- =====================================================
           PERSOANA 2
      ====================================================== --&gt;

      &lt;div class="compat-person"&gt;

        &lt;div class="compat-person-title"&gt;
          &lt;span&gt;02&lt;/span&gt;

          &lt;div&gt;
            &lt;strong&gt;PERSOANA 2&lt;/strong&gt;
            &lt;small&gt;A doua astrograma individuala&lt;/small&gt;
          &lt;/div&gt;
        &lt;/div&gt;


        &lt;label for="compatAnimal2"&gt;
          Cu ce rezonezi?
        &lt;/label&gt;

        &lt;select id="compatAnimal2" required=""&gt;
          &lt;option value=""&gt;Selecteaza&lt;/option&gt;
          &lt;option value="Vulpe"&gt;Vulpe&lt;/option&gt;
          &lt;option value="Lup"&gt;Lup&lt;/option&gt;
          &lt;option value="Pisica"&gt;Pisica&lt;/option&gt;
          &lt;option value="Leu"&gt;Leu&lt;/option&gt;
          &lt;option value="Bufnita"&gt;Bufnita&lt;/option&gt;
          &lt;option value="Delfin"&gt;Delfin&lt;/option&gt;
          &lt;option value="Fluture"&gt;Fluture&lt;/option&gt;
          &lt;option value="Cal"&gt;Cal&lt;/option&gt;
          &lt;option value="Vultur"&gt;Vultur&lt;/option&gt;
          &lt;option value="Cerb"&gt;Cerb&lt;/option&gt;
          &lt;option value="Urs"&gt;Urs&lt;/option&gt;
          &lt;option value="Corb"&gt;Corb&lt;/option&gt;
        &lt;/select&gt;


        &lt;label for="compatData2"&gt;
          Data nasterii
        &lt;/label&gt;

        &lt;input autocomplete="off" id="compatData2" inputmode="numeric" maxlength="10" placeholder="Ex: 21.04.1988" required="" type="text" /&gt;

        &lt;p class="hint"&gt;
          Data este folosita doar pentru calculul interpretarii.
        &lt;/p&gt;


        &lt;label for="compatSex2"&gt;
          Sex
        &lt;/label&gt;

        &lt;select id="compatSex2" required=""&gt;
          &lt;option value=""&gt;Selecteaza&lt;/option&gt;
          &lt;option value="M"&gt;Masculin&lt;/option&gt;
          &lt;option value="F"&gt;Feminin&lt;/option&gt;
        &lt;/select&gt;


        &lt;label&gt;
          Ora aproximativa a nasterii
        &lt;/label&gt;

        &lt;div class="ora-container"&gt;

          &lt;select id="compatOraHH2" required=""&gt;
            &lt;option value=""&gt;Ora&lt;/option&gt;
          &lt;/select&gt;

          &lt;span class="separator-ora"&gt;:&lt;/span&gt;

          &lt;select id="compatOraMM2" required=""&gt;
            &lt;option value=""&gt;Minute&lt;/option&gt;
          &lt;/select&gt;

        &lt;/div&gt;

        &lt;p class="hint"&gt;
          Selecteaza ora si minutele cat mai apropiate de momentul nasterii.
        &lt;/p&gt;


        &lt;label for="compatOras2"&gt;
          Localitatea nasterii
        &lt;/label&gt;

        &lt;input autocomplete="off" id="compatOras2" maxlength="100" placeholder="Ex: Constanta" required="" type="text" /&gt;

        &lt;p class="hint"&gt;
          Localitatea este folosita doar pentru calculul ascendentului.
        &lt;/p&gt;

      &lt;/div&gt;


      &lt;!-- =====================================================
           SURSA
      ====================================================== --&gt;

      &lt;div class="compat-final-block"&gt;

        &lt;label for="compatSursa"&gt;
          Cum ai descoperit Pagina Lipsa?
        &lt;/label&gt;

        &lt;select id="compatSursa" required=""&gt;
          &lt;option value=""&gt;Selecteaza&lt;/option&gt;
          &lt;option value="TikTok"&gt;TikTok&lt;/option&gt;
          &lt;option value="Instagram"&gt;Instagram&lt;/option&gt;
          &lt;option value="Facebook"&gt;Facebook&lt;/option&gt;
          &lt;option value="Google"&gt;Google&lt;/option&gt;
          &lt;option value="Altfel"&gt;Altfel&lt;/option&gt;
        &lt;/select&gt;


        &lt;div class="privacy-box"&gt;
          Datele exacte de nastere introduse sunt folosite doar pentru calcul si nu sunt salvate!
        &lt;/div&gt;


        &lt;!-- ===================================================
             COD PREMIUM - LA FINAL
        ==================================================== --&gt;

        &lt;div class="compat-code-box"&gt;

          &lt;div class="compat-code-label"&gt;
            &lt;span class="pl-badge-static compat-mini-badge"&gt;PREMIUM&lt;/span&gt;
            &lt;strong&gt;COD DE ACCES&lt;/strong&gt;
          &lt;/div&gt;

          &lt;input autocomplete="off" id="compatCodAcces" inputmode="numeric" maxlength="11" placeholder="Ex: 1234-5678-2" required="" type="text" /&gt;

          &lt;div class="promo-status" id="compatPromoStatus" style="display: none;"&gt;
            ✨ Acces promotional activ
          &lt;/div&gt;

          &lt;p class="hint" id="compatCodHint"&gt;
            Introdu codul Premium pentru generarea intregului pachet de compatibilitate.
          &lt;/p&gt;

        &lt;/div&gt;


        &lt;button id="compatSubmitButton" type="submit"&gt;
          GENEREAZA COMPATIBILITATEA
        &lt;/button&gt;
          &lt;button type="button" class="pl-no-code-btn pl-no-code-compat" onclick="deschideObtineCodPL()"&gt;
            NU AI COD?
          &lt;/button&gt;


        &lt;div aria-live="polite" id="compatMesaj" role="status"&gt;&lt;/div&gt;

      &lt;/div&gt;

    &lt;/form&gt;

    &lt;div id="compatResultContent" style="display: none;"&gt;&lt;/div&gt;

  &lt;/div&gt;

&lt;/div&gt;


&lt;!-- =========================================================
     GASESTE PAGINA LIPSA - TEST 28 + 5 INTREBARI DE APROFUNDARE
========================================================= --&gt;

&lt;div class="pl-section" id="sectiuneSesiune" style="display: none;"&gt;
  &lt;div class="pl-test-wrap"&gt;
    &lt;button class="pl-back" onclick="inapoiPaginaPrincipalaPL()" type="button"&gt;← INAPOI&lt;/button&gt;
    &lt;div class="pl-test-card" id="plTestCard"&gt;
      &lt;span class="pl-badge-static"&gt;EXCLUSIVE&lt;/span&gt;
      &lt;div class="pl-symbol"&gt;✧&lt;/div&gt;
      &lt;h2&gt;GASESTE PAGINA LIPSA&lt;/h2&gt;
      &lt;p class="pl-test-lead"&gt;Uneori raspunsul pe care il cautam nu se afla in prima intrebare pe care ne-o punem. Acest parcurs incepe cu un indiciu astrologic, continua cu 28 de intrebari si se incheie cu 5 intrebari care merg mai in profunzime.&lt;/p&gt;
      &lt;p class="pl-test-lead"&gt;&lt;strong&gt;Nu incercam sa iti spunem cine esti. Incercam sa observam ce se repeta in raspunsurile tale si ce merita explorat mai atent.&lt;/strong&gt;&lt;/p&gt;
      &lt;div class="pl-test-note"&gt;Acest test este un instrument de reflectie si nu reprezinta evaluare sau diagnostic psihologic.&lt;/div&gt;

      &lt;div id="plTestStart"&gt;
        &lt;div class="pl-test-profile-box"&gt;
          &lt;div class="pl-test-profile-kicker"&gt;PRIMUL INDICIU&lt;/div&gt;
          &lt;h3&gt;Completeaza profilul tau&lt;/h3&gt;
          &lt;p class="pl-test-profile-copy"&gt;Inainte de intrebari, avem nevoie de cateva repere folosite si in astrograma simpla. Ele ne ajuta sa adaugam profilului tau un strat suplimentar de interpretare.&lt;/p&gt;

          &lt;label class="pl-test-field-label" for="plTestAnimal"&gt;Cu ce rezonezi?&lt;/label&gt;
          &lt;select class="pl-test-input" id="plTestAnimal"&gt;
            &lt;option value=""&gt;Selecteaza&lt;/option&gt;
            &lt;option value="Vulpe"&gt;Vulpe&lt;/option&gt;&lt;option value="Lup"&gt;Lup&lt;/option&gt;&lt;option value="Pisica"&gt;Pisica&lt;/option&gt;
            &lt;option value="Leu"&gt;Leu&lt;/option&gt;&lt;option value="Bufnita"&gt;Bufnita&lt;/option&gt;&lt;option value="Delfin"&gt;Delfin&lt;/option&gt;
            &lt;option value="Fluture"&gt;Fluture&lt;/option&gt;&lt;option value="Cal"&gt;Cal&lt;/option&gt;&lt;option value="Vultur"&gt;Vultur&lt;/option&gt;
            &lt;option value="Cerb"&gt;Cerb&lt;/option&gt;&lt;option value="Urs"&gt;Urs&lt;/option&gt;&lt;option value="Corb"&gt;Corb&lt;/option&gt;
          &lt;/select&gt;

          &lt;label class="pl-test-field-label" for="plTestBirth"&gt;Data nasterii&lt;/label&gt;
          &lt;input class="pl-test-input" id="plTestBirth" inputmode="numeric" maxlength="10" placeholder="Ex: 12.09.1990" type="text" autocomplete="bday" /&gt;

          &lt;label class="pl-test-field-label" for="plTestSex"&gt;Sex&lt;/label&gt;
          &lt;select class="pl-test-input" id="plTestSex"&gt;
            &lt;option value=""&gt;Selecteaza&lt;/option&gt;
            &lt;option value="M"&gt;Masculin&lt;/option&gt;
            &lt;option value="F"&gt;Feminin&lt;/option&gt;
          &lt;/select&gt;

          &lt;label class="pl-test-field-label"&gt;Ora aproximativa a nasterii&lt;/label&gt;
          &lt;div class="ora-container"&gt;
            &lt;select id="plTestOraHH"&gt;&lt;option value=""&gt;Ora&lt;/option&gt;&lt;/select&gt;
            &lt;span class="separator-ora"&gt;:&lt;/span&gt;
            &lt;select id="plTestOraMM"&gt;&lt;option value=""&gt;Minute&lt;/option&gt;&lt;/select&gt;
          &lt;/div&gt;
          &lt;p class="hint"&gt;Selecteaza ora si minutele cat mai apropiate de momentul nasterii.&lt;/p&gt;

          &lt;label class="pl-test-field-label" for="plTestOras"&gt;Localitatea nasterii&lt;/label&gt;
          &lt;input class="pl-test-input" autocomplete="off" id="plTestOras" maxlength="100" placeholder="Ex: Bucuresti" type="text" /&gt;

          &lt;div class="pl-test-zodiac-preview" id="plTestZodiacPreview"&gt;Zodia va fi calculata automat.&lt;/div&gt;
          &lt;div class="pl-test-note"&gt;Datele de nastere sunt folosite pentru calculele astrologice. In raportul testului pastram rezultatele necesare profilului, nu data, ora sau localitatea introduse.&lt;/div&gt;
        &lt;/div&gt;

        &lt;div class="pl-test-take-time"&gt;&lt;strong&gt;Nu te grabi.&lt;/strong&gt;&lt;br/&gt;Rezerva-ti cateva minute doar pentru tine si raspunde cat mai sincer, nu cum crezi ca „ar trebui”. Nu exista raspunsuri bune sau gresite. Cu cat raspunsurile sunt mai autentice, cu atat indiciile pot deveni mai relevante.&lt;/div&gt;

        &lt;label class="pl-test-consent"&gt;&lt;input id="plTestConsent" type="checkbox"&gt; &lt;span&gt;Sunt de acord ca raspunsurile mele si rezultatele necesare profilului sa fie transmise catre Pagina Lipsa pentru pregatirea unei eventuale analize personalizate.&lt;/span&gt;&lt;/label&gt;
        &lt;button class="pl-test-primary" id="plTestStartBtn" type="button"&gt;INCEPE TESTUL&lt;/button&gt;
      &lt;/div&gt;

      &lt;div id="plTestQuiz" style="display:none;"&gt;
        &lt;div class="pl-test-progress"&gt;&lt;div id="plTestProgressBar"&gt;&lt;/div&gt;&lt;/div&gt;
        &lt;div class="pl-test-counter" id="plTestCounter"&gt;&lt;/div&gt;
        &lt;h3 id="plTestQuestion"&gt;&lt;/h3&gt;
        &lt;div id="plTestOptions"&gt;&lt;/div&gt;
        &lt;div class="pl-test-nav"&gt;&lt;button class="pl-test-secondary" id="plTestPrev" type="button"&gt;← INAPOI&lt;/button&gt;&lt;/div&gt;
      &lt;/div&gt;

      &lt;div id="plTestFunnel" style="display:none;"&gt;
        &lt;div class="pl-test-progress"&gt;&lt;div id="plFunnelProgressBar"&gt;&lt;/div&gt;&lt;/div&gt;
        &lt;div class="pl-test-counter" id="plFunnelCounter"&gt;&lt;/div&gt;
        &lt;div class="pl-test-direction" id="plTestDirection"&gt;&lt;/div&gt;
        &lt;div class="pl-test-funnel-rule"&gt;&lt;strong&gt;Aici raspunsurile scurte nu sunt suficiente.&lt;/strong&gt;&lt;br/&gt;Pentru fiecare dintre urmatoarele 5 intrebari, scrie cel putin o propozitie completa. Ideal, spune in 2–4 propozitii ce gandesti sau ce simti. Un singur cuvant sau o formulare foarte scurta nu va putea fi trimisa.&lt;/div&gt;
        &lt;h3 id="plFunnelQuestion"&gt;&lt;/h3&gt;
        &lt;textarea id="plFunnelAnswer" maxlength="1600" rows="7" placeholder="Scrie cel putin o propozitie completa, in cuvintele tale..."&gt;&lt;/textarea&gt;
        &lt;div class="pl-test-answer-hint" id="plFunnelHint"&gt;Minimum 6 cuvinte si 30 de caractere.&lt;/div&gt;
        &lt;div class="pl-test-nav"&gt;&lt;button class="pl-test-secondary" id="plFunnelPrev" type="button"&gt;← INAPOI&lt;/button&gt;&lt;button class="pl-test-primary" id="plFunnelNext" type="button"&gt;CONTINUA&lt;/button&gt;&lt;/div&gt;
      &lt;/div&gt;

      &lt;div id="plTestSending" style="display:none;"&gt;&lt;p class="pl-test-lead"&gt;Punem cap la cap indiciile din raspunsurile tale...&lt;/p&gt;&lt;/div&gt;
      &lt;div id="plTestFinal" style="display:none;"&gt;&lt;/div&gt;
      &lt;iframe id="plTestTarget" name="plTestTarget" style="display:none;"&gt;&lt;/iframe&gt;
      &lt;form id="plTestSubmitForm" method="POST" target="plTestTarget" action="https://script.google.com/macros/s/AKfycbzJK9msWoF8yhTNHj5IVrfIV3a9l9e4Nf3Tu_FVAQn1qiwkAM4Q3e25lh-b0RG3PrKx/exec" style="display:none;"&gt;&lt;/form&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;!-- =========================================================
     ASTROGRAMA TA - FLUXUL ACTUAL
========================================================= --&gt;

&lt;div id="sectiuneAstrograma" style="display: none;"&gt;

  &lt;div class="pl-astro-nav"&gt;

    &lt;button class="pl-back" onclick="inapoiPaginaPrincipalaPL()" type="button"&gt;
      ← INAPOI
    &lt;/button&gt;

  &lt;/div&gt;


&lt;div class="astro-form-wrap" id="astroCard"&gt;

  &lt;div id="formularContent"&gt;

    &lt;h2&gt;Descopera o pagina lipsa din viata ta care te-ar putea surprinde!&lt;/h2&gt;

    &lt;p class="intro"&gt;
      Completeaza datele de mai jos, iar interpretarea ta va fi generata direct in pagina.
    &lt;/p&gt;


    &lt;iframe id="astroTarget" name="astroTarget" style="display: none;"&gt;&lt;/iframe&gt;


    &lt;form action="https://script.google.com/macros/s/AKfycbzJK9msWoF8yhTNHj5IVrfIV3a9l9e4Nf3Tu_FVAQn1qiwkAM4Q3e25lh-b0RG3PrKx/exec" id="astroForm" method="POST" target="astroTarget"&gt;


      &lt;input id="requestId" name="requestId" type="hidden" value="" /&gt;

      &lt;input id="adminToken" name="adminToken" type="hidden" value="" /&gt;

      &lt;input id="zodieFinal" name="zodie" type="hidden" value="" /&gt;

      &lt;input id="ascendentFinal" name="ascendent" type="hidden" value="" /&gt;

      &lt;input id="cifraDestinuluiFinal" name="cifraDestinului" type="hidden" value="" /&gt;

      &lt;input id="grupaVarstaFinal" name="grupaVarsta" type="hidden" value="" /&gt;

      &lt;input id="dispozitivFinal" name="dispozitiv" type="hidden" value="" /&gt;

      &lt;input id="sistemFinal" name="sistem" type="hidden" value="" /&gt;

      &lt;input id="browserFinal" name="browser" type="hidden" value="" /&gt;

      &lt;input id="limbaFinal" name="limba" type="hidden" value="" /&gt;

      &lt;!-- Harta natala este calculata local in browser. Nu contine data, ora sau localitatea. --&gt;
      &lt;input id="hartaDateFinal" name="hartaDate" type="hidden" value="" /&gt;
      &lt;textarea id="hartaImagineFinal" name="hartaImagine" style="display: none;"&gt;&lt;/textarea&gt;


      &lt;label for="animal"&gt;
        Cu ce rezonezi?
      &lt;/label&gt;


      &lt;select id="animal" name="animal" required=""&gt;
        &lt;option value=""&gt;Selecteaza&lt;/option&gt;
        &lt;option value="Vulpe"&gt;Vulpe&lt;/option&gt;
        &lt;option value="Lup"&gt;Lup&lt;/option&gt;
        &lt;option value="Pisica"&gt;Pisica&lt;/option&gt;
        &lt;option value="Leu"&gt;Leu&lt;/option&gt;
        &lt;option value="Bufnita"&gt;Bufnita&lt;/option&gt;
        &lt;option value="Delfin"&gt;Delfin&lt;/option&gt;
        &lt;option value="Fluture"&gt;Fluture&lt;/option&gt;
        &lt;option value="Cal"&gt;Cal&lt;/option&gt;
        &lt;option value="Vultur"&gt;Vultur&lt;/option&gt;
        &lt;option value="Cerb"&gt;Cerb&lt;/option&gt;
        &lt;option value="Urs"&gt;Urs&lt;/option&gt;
        &lt;option value="Corb"&gt;Corb&lt;/option&gt;
      &lt;/select&gt;


      &lt;label for="dataNasterii"&gt;
        Data nasterii
      &lt;/label&gt;


      &lt;input autocomplete="off" id="dataNasterii" inputmode="numeric" maxlength="10" placeholder="Ex: 12.09.1990" required="" type="text" /&gt;


      &lt;p class="hint"&gt;
        Data este folosita in browser pentru calculul zodiei, cifrei destinului si grupei de varsta. Nu este trimisa in formular catre server.
      &lt;/p&gt;


      &lt;label for="sex"&gt;
        Sex
      &lt;/label&gt;


      &lt;select id="sex" name="sex" required=""&gt;

        &lt;option value=""&gt;
          Selecteaza
        &lt;/option&gt;

        &lt;option value="M"&gt;
          Masculin
        &lt;/option&gt;

        &lt;option value="F"&gt;
          Feminin
        &lt;/option&gt;

      &lt;/select&gt;


      &lt;label&gt;
        Ora aproximativa a nasterii
      &lt;/label&gt;


      &lt;div class="ora-container"&gt;

        &lt;select id="oraHH" required=""&gt;
          &lt;option value=""&gt;Ora&lt;/option&gt;
        &lt;/select&gt;


        &lt;span class="separator-ora"&gt;
          :
        &lt;/span&gt;


        &lt;select id="oraMM" required=""&gt;
          &lt;option value=""&gt;Minute&lt;/option&gt;
        &lt;/select&gt;

      &lt;/div&gt;


      &lt;p class="hint"&gt;
        Selecteaza ora si minutele cat mai apropiate de momentul nasterii. Minutele sunt afisate din 5 in 5.
      &lt;/p&gt;


      &lt;label for="oras"&gt;
        Localitatea nasterii
      &lt;/label&gt;


      &lt;input autocomplete="off" id="oras" maxlength="100" placeholder="Ex: Bucuresti" required="" type="text" /&gt;


      &lt;p class="hint"&gt;
        Localitatea este folosita doar pentru obtinerea coordonatelor necesare calculului ascendentului si nu este salvata in Sheet.
      &lt;/p&gt;


      &lt;label for="sursa"&gt;
        Cum ai descoperit Pagina Lipsa?
      &lt;/label&gt;


      &lt;select id="sursa" name="sursa" required=""&gt;

        &lt;option value=""&gt;
          Selecteaza
        &lt;/option&gt;

        &lt;option value="TikTok"&gt;
          TikTok
        &lt;/option&gt;

        &lt;option value="Instagram"&gt;
          Instagram
        &lt;/option&gt;

        &lt;option value="Facebook"&gt;
          Facebook
        &lt;/option&gt;

        &lt;option value="Google"&gt;
          Google
        &lt;/option&gt;

        &lt;option value="Altfel"&gt;
          Altfel
        &lt;/option&gt;

      &lt;/select&gt;


      &lt;div class="privacy-box"&gt;
        Datele exacte de nastere introduse sunt folosite doar pentru calcul si nu sunt salvate!
      &lt;/div&gt;

      &lt;!-- =====================================================
           COD DE ACCES - LA FINAL
      ====================================================== --&gt;

      &lt;div class="astro-code-box"&gt;

        &lt;div class="astro-code-label"&gt;
          &lt;span class="pl-badge-static astro-mini-badge"&gt;STANDARD&lt;/span&gt;
          &lt;strong&gt;COD DE ACCES&lt;/strong&gt;
        &lt;/div&gt;

&lt;input autocomplete="off" id="codAcces" inputmode="numeric" maxlength="11" name="codAcces" placeholder="Ex: 1234-5678-1" required="" type="text" /&gt;


      &lt;div class="promo-status" id="promoStatus" style="display: none;"&gt;
        ✨ Acces promotional activ
      &lt;/div&gt;


      &lt;p class="hint" id="codHint"&gt;
        Introdu codul primit de la Pagina Lipsa. Fiecare cod poate fi folosit o singura data.
      &lt;/p&gt;

      &lt;/div&gt;



      &lt;div class="hp-field"&gt;

        &lt;input autocomplete="off" name="honeypot" tabindex="-1" type="text" /&gt;

      &lt;/div&gt;


      &lt;button id="submitButton" type="submit"&gt;
        VREAU INTERPRETAREA MEA
      &lt;/button&gt;
      &lt;button type="button" class="pl-no-code-btn" onclick="deschideObtineCodPL()"&gt;
        NU AI COD?
      &lt;/button&gt;


      &lt;div aria-live="polite" id="mesajFormular" role="status"&gt;&lt;/div&gt;

    &lt;/form&gt;

  &lt;/div&gt;


  &lt;div id="resultContent" style="display: none;"&gt;&lt;/div&gt;

&lt;/div&gt;

&lt;/div&gt;



&lt;!-- =========================================================
     OBTINE COD - PROMOTIE CARTE + SOCIAL MEDIA
========================================================= --&gt;
&lt;div id="plGetCodeOverlay" class="pl-get-code-overlay" style="display:none;" aria-hidden="true"&gt;
  &lt;div class="pl-get-code-card" role="dialog" aria-modal="true" aria-labelledby="plGetCodeTitle"&gt;
    &lt;button type="button" class="pl-get-code-close" onclick="inchideObtineCodPL()" aria-label="Închide"&gt;×&lt;/button&gt;

    &lt;div class="pl-get-code-symbol"&gt;◇&lt;/div&gt;
    &lt;h2 id="plGetCodeTitle"&gt;OBȚINE UN COD DE ACCES&lt;/h2&gt;

    &lt;div class="pl-get-code-current"&gt;
      &lt;div class="pl-get-code-badge"&gt;PROMOȚIE ACTUALĂ&lt;/div&gt;
      &lt;h3&gt;SUSȚINE PROIECTUL PAGINA LIPSĂ&lt;/h3&gt;
      &lt;p&gt;
        Cumpără cartea, trimite dovada achiziției la
        &lt;strong&gt;paginalipsa@gmail.com&lt;/strong&gt; și primești
        &lt;strong&gt;mult mai mult decât dăruiești!&lt;/strong&gt;
      &lt;/p&gt;
      &lt;p class="pl-get-code-support-text"&gt;
        Este felul tău de a susține proiectul Pagina Lipsă. Iar noi îți întoarcem gestul.
      &lt;/p&gt;

      &lt;a class="pl-get-code-buy" href="https://payhip.com/b/kY07K" target="_blank" rel="noopener"&gt;
        CUMPĂRĂ CARTEA
      &lt;/a&gt;
    &lt;/div&gt;

    &lt;div class="pl-get-code-divider"&gt;&lt;span&gt;SAU&lt;/span&gt;&lt;/div&gt;

    &lt;div class="pl-get-code-social"&gt;
      &lt;h3&gt;ALTE MODURI DE A OBȚINE CODURI&lt;/h3&gt;
      &lt;p&gt;
        Periodic, Pagina Lipsă oferă coduri de acces prin promoții speciale pe
        &lt;strong&gt;TikTok, Instagram și Facebook&lt;/strong&gt;.
      &lt;/p&gt;
      &lt;p&gt;
        Urmărește Pagina Lipsă pe platformele sociale pentru a afla când apar campanii noi
        și oportunități de a primi coduri.
      &lt;/p&gt;
    &lt;/div&gt;

    &lt;div class="pl-get-code-note"&gt;
      Numărul și tipul codurilor pot varia în funcție de promoția activă.
    &lt;/div&gt;

    &lt;button type="button" class="pl-get-code-back" onclick="inchideObtineCodPL()"&gt;ÎNAPOI&lt;/button&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;style&gt;

html,
body {
  background:#000000 !important;
  overflow-anchor:none !important;
}


.body-fauxcolumn-outer,
.content-outer,
.content-inner,
.main-outer,
.main-inner,
.columns,
.columns-inner,
.column-center-outer,
.column-center-inner,
.region-inner,
#outer-wrapper,
#content-wrapper,
#main-wrapper {
  background:#000000 !important;
  background-image:none !important;
}


.date-header,
.date-posts .date-header,
h2.date-header,
.post-header,
.post-timestamp,
.timestamp-link,
.post-header-line-1,
.post-footer,
.post-footer-line,
.post-footer-line-1,
.post-footer-line-2,
.post-footer-line-3,
.post-share-buttons,
.post-icons,
#blog-pager,
.blog-pager,
.blog-pager-older-link,
.blog-pager-newer-link,
.home-link,
.feed-links,
.feed-link,
.post-feeds,
.jump-link,
#PopularPosts1,
.widget.PopularPosts,
.PopularPosts,
#BlogArchive1,
.widget.BlogArchive,
.BlogArchive,
#Attribution1,
.widget.Attribution,
.Attribution,
.post-snippet,
.post-summary,
.snippet-container,
.snippet-item,
.snippet-fade {
  display:none !important;
}


.post-title,
.post-title a,
.entry-title,
.entry-title a,
h3.post-title,
h3.post-title a,
.post h3,
.post h3 a {
  color:#000000 !important;
  text-shadow:none !important;
  background:transparent !important;
  border:none !important;
}


.footer-outer,
.footer-inner,
.footer,
#footer,
#footer-wrapper {
  background:#000000 !important;
  background-image:none !important;
  border:none !important;
  box-shadow:none !important;
}


/* =========================================================
   ASTROGRAMA INDIVIDUALA
========================================================= */

.astro-form-wrap {
  display:block !important;
  visibility:visible !important;
  opacity:1 !important;

  max-width:760px;
  margin:40px auto;
  padding:38px;

  background:#F7F1E7;

  border:1px solid #C9A64B;
  border-radius:14px;

  box-shadow:
    0 8px 25px rgba(0,0,0,0.22),
    0 0 0 1px rgba(201,166,75,0.12);

  font-family:
    Georgia,
    "Times New Roman",
    serif;

  box-sizing:border-box;
}


.astro-form-wrap h2 {
  text-align:center;
  font-size:29px;
  line-height:1.3;
  margin:0 0 12px 0;
  color:#17130B !important;
}


.astro-form-wrap .intro {
  text-align:center;
  line-height:1.65;
  color:#4A4235;
  margin-bottom:32px;
}


.astro-form-wrap label {
  display:block;
  margin-top:19px;
  margin-bottom:7px;
  font-weight:bold;
  color:#17130B;
}


.astro-form-wrap input,
.astro-form-wrap select {
  width:100%;
  padding:13px;
  border:1px solid #CDBF9E;
  border-radius:7px;
  box-sizing:border-box;
  font-size:15px;
  background:#FFFDF8;
  color:#17130B;
}


.astro-form-wrap input:focus,
.astro-form-wrap select:focus {
  outline:none;
  border-color:#B8912E;
  box-shadow:
    0 0 0 2px rgba(184,145,46,0.18);
}


.astro-form-wrap input[readonly] {
  background:#FFF9E5;
  color:#7A5C0B;
  font-weight:bold;
}


.ora-container {
  display:flex;
  align-items:center;
  gap:9px;
  width:100%;
}


.ora-container select {
  flex:1;
}


.separator-ora {
  font-size:24px;
  font-weight:bold;
  color:#B8912E;
}


.hint {
  font-size:12px;
  color:#776B58;
  margin:6px 2px 0 2px;
  line-height:1.4;
}


.promo-status {
  margin-top:10px;
  padding:10px 12px;
  background:#FFF7D6;
  border:1px solid #D7C46A;
  border-radius:7px;
  text-align:center;
  font-size:13px;
  font-weight:bold;
  color:#6B5416;
}


.privacy-box {
  margin-top:25px;
  padding:14px 16px;
  background:#FFFDF8;
  border:1px solid #D7C8A5;
  border-radius:8px;
  font-size:12px;
  line-height:1.55;
  color:#776B58;
}


.hp-field {
  position:absolute !important;
  left:-9999px !important;
  top:-9999px !important;
  width:1px !important;
  height:1px !important;
  opacity:0 !important;
  pointer-events:none !important;
}


.astro-form-wrap button {
  width:100%;
  margin-top:28px;
  padding:15px;
  background:#17130B;
  color:#E3C66B;
  border:1px solid #B8912E;
  border-radius:7px;
  font-size:17px;
  font-weight:bold;
  font-family:
    Georgia,
    "Times New Roman",
    serif;
  cursor:pointer;
}


.astro-form-wrap button:hover {
  background:#B8912E;
  color:#111111;
}


.astro-form-wrap button:disabled {
  opacity:0.65;
  cursor:wait;
}


#mesajFormular {
  margin-top:20px;
  text-align:center;
  font-weight:bold;
  line-height:1.55;
  color:#B8912E;
}


.result-page {
  text-align:center;
  color:#17130B !important;
}


.result-brand {
  font-size:13px;
  letter-spacing:2px;
  color:#B8912E !important;
  font-weight:bold;
  margin-bottom:8px;
}


.result-title {
  font-size:27px !important;
  line-height:1.2;
  margin:0 0 16px;
  color:#A8844F !important;
  font-weight:bold;
}


.result-circle {
  width:96px;
  height:96px;
  margin:0 auto 18px;
  border-radius:50%;
  border:2px solid #C9A64B;
  background:#000000;
  display:flex;
  align-items:center;
  justify-content:center;
  box-sizing:border-box;
}


.result-face {
  display:inline-block;
  color:#D4AF37 !important;
  font-size:48px;
  font-weight:bold;
  line-height:1;
  transform:rotate(90deg);
}


.result-line {
  width:55px;
  height:2px;
  background:#B8912E;
  margin:0 auto 17px;
}


.result-subtitle {
  font-size:20px !important;
  line-height:1.35;
  margin:0 0 12px;
  color:#17130B !important;
  font-weight:bold;
}


.result-text {
  font-size:15px;
  line-height:1.55;
  color:#4A4235 !important;
  margin:0 auto 10px;
  max-width:500px;
}


.result-small {
  font-size:13px;
  line-height:1.5;
  color:#776B58 !important;
  margin:0 auto 14px;
}


.result-info {
  background:#FFFDF8;
  border:1px solid #D7C8A5;
  border-radius:8px;
  padding:11px 14px;
  margin-top:14px;
  font-size:13px;
  line-height:1.5;
  color:#4A4235 !important;
}


.result-download,
.result-back,
.result-support {
  display:inline-block !important;
  margin-top:14px;
  padding:12px 18px !important;
  text-decoration:none !important;
  border-radius:7px !important;
  font-size:13px !important;
  font-weight:bold !important;
  font-family:
    Georgia,
    "Times New Roman",
    serif !important;
}


.result-download {
  background:#17130B !important;
  color:#E3C66B !important;
  border:1px solid #B8912E !important;
}


.result-download:hover {
  background:#B8912E !important;
  color:#111111 !important;
}


.result-back {
  background:#F7F1E7 !important;
  color:#17130B !important;
  border:1px solid #CDBF9E !important;
  margin-left:6px;
}


.result-support {
  background:#FFFDF8 !important;
  color:#8A6A17 !important;
  border:1px solid #D7C46A !important;
  margin-left:6px;
}


/* =========================================================
   PAGINA PRINCIPALA
========================================================= */

.pl-home,
.pl-section {
  max-width:760px;
  margin:40px auto;
  padding:0 10px;
  box-sizing:border-box;
  font-family:Georgia,"Times New Roman",serif;
}


.pl-home-inner,
.pl-coming-card {
  position:relative;
  background:#F7F1E7;
  border:1px solid #C9A64B;
  border-radius:14px;
  padding:38px;
  box-sizing:border-box;
  box-shadow:
    0 8px 25px rgba(0,0,0,0.22),
    0 0 0 1px rgba(201,166,75,0.12);
  text-align:center;
}


.pl-symbol {
  color:#B8912E;
  font-size:32px;
  line-height:1;
  margin-bottom:12px;
}


.pl-home h1 {
  margin:0 0 12px;
  color:#17130B !important;
  font-size:31px;
  letter-spacing:1px;
}


.pl-home-intro {
  max-width:530px;
  margin:0 auto 30px;
  color:#4A4235;
  font-size:15px;
  line-height:1.65;
}


.pl-choice {
  position:relative;
  width:100%;
  display:flex;
  align-items:center;
  gap:14px;
  margin:14px 0 0;
  padding:19px 48px 19px 18px;
  border:1px solid #CDBF9E;
  border-radius:10px;
  background:#FFFDF8;
  color:#17130B;
  text-align:left;
  cursor:pointer;
  font-family:Georgia,"Times New Roman",serif;
  transition:
    transform .15s ease,
    border-color .15s ease,
    box-shadow .15s ease;
  box-sizing:border-box;
}


.pl-choice:hover {
  transform:translateY(-1px);
  border-color:#B8912E;
  box-shadow:0 6px 16px rgba(0,0,0,0.09);
}


.pl-choice-icon {
  flex:0 0 32px;
  width:32px;
  height:32px;
  display:flex;
  align-items:center;
  justify-content:center;
  border:1px solid #C9A64B;
  border-radius:50%;
  color:#B8912E;
  font-size:21px;
  background:#F7F1E7;
}


.pl-choice-content {
  display:block;
  flex:1;
  min-width:0;
}


.pl-choice-content strong {
  display:block;
  color:#17130B;
  font-size:15px;
  letter-spacing:.3px;
  margin-bottom:5px;
}


.pl-choice-content small {
  display:block;
  color:#776B58;
  font-size:12px;
  line-height:1.45;
  font-weight:normal;
}


.pl-arrow {
  position:absolute;
  right:17px;
  top:50%;
  transform:translateY(-50%);
  color:#B8912E;
  font-size:27px;
  line-height:1;
}


.pl-badge {
  position:absolute;
  top:-8px;
  right:13px;
  background:#17130B;
  color:#E3C66B;
  border:1px solid #B8912E;
  border-radius:999px;
  padding:4px 9px;
  font-size:9px;
  font-weight:bold;
  letter-spacing:1px;
}


.pl-exclusive .pl-badge {
  background:#B8912E;
  color:#111111;
}


.pl-coming-card {
  padding:44px 36px 38px;
}


.pl-coming-card h2 {
  color:#17130B !important;
  font-size:25px;
  margin:8px 0 18px;
}


.pl-coming-main {
  color:#17130B;
  font-weight:bold;
  margin:0 0 10px;
}


.pl-coming-description {
  color:#776B58;
  line-height:1.6;
  max-width:480px;
  margin:0 auto;
}


.pl-badge-static {
  display:inline-block;
  background:#17130B;
  color:#E3C66B;
  border:1px solid #B8912E;
  border-radius:999px;
  padding:5px 11px;
  font-size:9px;
  font-weight:bold;
  letter-spacing:1px;
  margin-bottom:18px;
}


#sectiuneSesiune .pl-badge-static {
  background:#B8912E;
  color:#111111;
}


.pl-back {
  display:inline-block;
  margin-top:28px;
  padding:11px 18px;
  background:#17130B;
  color:#E3C66B;
  border:1px solid #B8912E;
  border-radius:7px;
  font-size:10.5px;
  font-weight:bold;
  font-family:Georgia,"Times New Roman",serif;
  cursor:pointer;
}


.pl-astro-nav,
.pl-compat-nav {
  max-width:760px;
  margin:22px auto -20px;
  padding:0 10px;
  box-sizing:border-box;
  text-align:left;
  font-family:Georgia,"Times New Roman",serif;
}


.pl-astro-nav .pl-back,
.pl-compat-nav .pl-back {
  margin-top:0;
}


/* =========================================================
   FORMULAR COMPATIBILITATE
========================================================= */

.compat-form-wrap {
  max-width:760px;
  margin:40px auto;
  padding:38px;
  background:#F7F1E7;
  border:1px solid #C9A64B;
  border-radius:14px;
  box-shadow:
    0 8px 25px rgba(0,0,0,0.22),
    0 0 0 1px rgba(201,166,75,0.12);
  font-family:Georgia,"Times New Roman",serif;
  box-sizing:border-box;
}


.compat-head {
  text-align:center;
  margin-bottom:32px;
}


.compat-head h2 {
  margin:4px 0 12px;
  color:#17130B !important;
  font-size:28px;
  line-height:1.25;
}


.compat-intro {
  max-width:520px;
  margin:0 auto 22px;
  color:#4A4235;
  line-height:1.6;
  font-size:14px;
}


.compat-package {
  padding:15px 18px;
  background:#FFFDF8;
  border:1px solid #D7C8A5;
  border-radius:9px;
  text-align:left;
}


.compat-package strong {
  display:block;
  margin-bottom:8px;
  color:#8A6A17;
  font-size:12px;
  letter-spacing:.5px;
}


.compat-package span {
  display:block;
  margin:5px 0;
  color:#4A4235;
  font-size:12px;
}


.compat-person {
  padding:23px 22px 26px;
  background:#FFFDF8;
  border:1px solid #D7C8A5;
  border-radius:11px;
}


.compat-person-title {
  display:flex;
  align-items:center;
  gap:9px;
  margin-bottom:20px;
  padding-bottom:15px;
  border-bottom:1px solid #E4D9BF;
}


.compat-person-title &gt; span {
  flex:0 0 32px;
  width:32px;
  height:32px;
  display:flex;
  align-items:center;
  justify-content:center;
  border-radius:50%;
  background:#17130B;
  border:1px solid #B8912E;
  color:#E3C66B;
  font-size:10.5px;
  font-weight:bold;
}


.compat-person-title div {
  text-align:left;
}


.compat-person-title strong {
  display:block;
  color:#17130B;
  font-size:14px;
  letter-spacing:.6px;
}


.compat-person-title small {
  display:block;
  margin-top:3px;
  color:#776B58;
  font-size:11px;
}


.compat-form-wrap label {
  display:block;
  margin-top:18px;
  margin-bottom:7px;
  color:#17130B;
  font-weight:bold;
}


.compat-form-wrap input,
.compat-form-wrap select {
  width:100%;
  padding:13px;
  border:1px solid #CDBF9E;
  border-radius:7px;
  box-sizing:border-box;
  font-size:15px;
  background:#FFFDF8;
  color:#17130B;
}


.compat-person input,
.compat-person select {
  background:#FFFFFF;
}


.compat-form-wrap input:focus,
.compat-form-wrap select:focus {
  outline:none;
  border-color:#B8912E;
  box-shadow:
    0 0 0 2px rgba(184,145,46,0.18);
}


.compat-form-wrap input[readonly] {
  background:#FFF9E5;
  color:#7A5C0B;
  font-weight:bold;
}


.compat-divider {
  height:58px;
  display:flex;
  align-items:center;
  justify-content:center;
}


.compat-divider:before,
.compat-divider:after {
  content:"";
  height:1px;
  flex:1;
  background:#D7C8A5;
}


.compat-divider span {
  display:flex;
  align-items:center;
  justify-content:center;
  width:34px;
  height:34px;
  margin:0 12px;
  border:1px solid #C9A64B;
  border-radius:50%;
  color:#B8912E;
  background:#F7F1E7;
  font-size:15px;
}


.compat-final-block {
  margin-top:28px;
}


.compat-code-box {
  margin-top:28px;
  padding:20px;
  background:#FFF9E5;
  border:1px solid #D7C46A;
  border-radius:10px;
}

.astro-code-box {
  margin-top:28px;
  padding:20px;
  background:#FFF9E5;
  border:1px solid #D7C46A;
  border-radius:10px;
}

.astro-code-label {
  display:flex;
  align-items:center;
  gap:10px;
  margin-bottom:11px;
}

.astro-code-label strong {
  color:#17130B;
  font-size:13px;
}

.astro-mini-badge {
  margin:0;
  padding:4px 8px;
  font-size:8px;
  background:#FFFFFF;
  color:#17130B;
  border:1px solid #CDBF9E;
}



.compat-code-label {
  display:flex;
  align-items:center;
  gap:10px;
  margin-bottom:11px;
}


.compat-code-label strong {
  color:#17130B;
  font-size:13px;
}


.compat-mini-badge {
  margin:0;
  padding:4px 8px;
  font-size:8px;
}


#compatSubmitButton {
  width:100%;
  margin-top:25px;
  padding:15px;
  background:#17130B;
  color:#E3C66B;
  border:1px solid #B8912E;
  border-radius:7px;
  font-size:16px;
  font-weight:bold;
  font-family:Georgia,"Times New Roman",serif;
  cursor:pointer;
}


#compatSubmitButton:hover {
  background:#B8912E;
  color:#111111;
}


#compatMesaj {
  margin-top:18px;
  text-align:center;
  color:#B8912E;
  font-weight:bold;
  line-height:1.5;
}


@media (max-width:600px) {

  .astro-form-wrap,
  .compat-form-wrap {
    padding:24px;
    margin:20px 10px;
  }


  .astro-form-wrap h2 {
    font-size:25px;
  }


  .compat-head h2 {
    font-size:24px;
  }


  .compat-person {
    padding:19px 15px 22px;
  }


  .result-title {
    font-size:24px !important;
  }


  .result-download,
  .result-back,
  .result-support {
    width:100%;
    box-sizing:border-box;
    margin:6px 0 !important;
  }


  .pl-home,
  .pl-section {
    margin:20px auto;
  }


  .pl-home-inner,
  .pl-coming-card {
    padding:26px 20px;
  }


  .pl-home h1 {
    font-size:27px;
  }


  .pl-home-intro {
    font-size:14px;
  }


  .pl-choice {
    padding:18px 42px 18px 14px;
    gap:11px;
  }


  .pl-choice-icon {
    flex-basis:34px;
    width:34px;
    height:34px;
    font-size:15px;
  }


  .pl-choice-content strong {
    font-size:13px;
  }


  .pl-choice-content small {
    font-size:11px;
  }

}


/* =========================================================
   MESAJ GENERARE - ASTRO + CUPLU
========================================================= */
.pl-wait-main {
  margin-top:22px;
  text-align:center;
  color:#B8912E !important;
  font-size:28px;
  line-height:1.45;
  font-weight:bold;
  font-family:Georgia,"Times New Roman",serif;
}

.pl-wait-box {
  margin-top:22px;
  padding:16px 20px;
  background:#17130B;
  color:#E3C66B !important;
  border:1px solid #B8912E;
  border-radius:8px;
  text-align:center;
  font-size:16px;
  line-height:1.5;
  font-weight:bold;
  font-family:Georgia,"Times New Roman",serif;
}

@media (max-width:600px) {
  .pl-wait-main { font-size:22px; }
  .pl-wait-box { font-size:14px; padding:14px 16px; }
}


/* =========================================================
   LAYOUT MAI LAT + OPTIMIZARE MOBIL
========================================================= */

@media (min-width: 900px) {
  .pl-home,
  .pl-section,
  .astro-form-wrap,
  .compat-form-wrap,
  .pl-astro-nav,
  .pl-compat-nav {
    width:100%;
    max-width:760px;
  }

  .pl-home-inner,
  .pl-coming-card,
  .astro-form-wrap,
  .compat-form-wrap {
    padding-left:44px;
    padding-right:44px;
  }
}

@media (max-width: 600px) {
  html,
  body {
    width:100% !important;
    max-width:100% !important;
    overflow-x:hidden !important;
  }

  .pl-home,
  .pl-section,
  #sectiuneAstrograma,
  #sectiuneCompatibilitate,
  #sectiuneSesiune {
    width:100% !important;
    max-width:100% !important;
    margin:0 auto !important;
    padding:0 12px !important;
    box-sizing:border-box !important;
  }

  .pl-home-inner,
  .pl-coming-card,
  .astro-form-wrap,
  .compat-form-wrap {
    width:100% !important;
    max-width:none !important;
    margin:18px auto !important;
    padding:22px 16px !important;
    box-sizing:border-box !important;
    border-radius:12px !important;
  }

  .pl-astro-nav,
  .pl-compat-nav {
    width:100% !important;
    max-width:none !important;
    margin:14px auto -4px !important;
    padding:0 12px !important;
    box-sizing:border-box !important;
  }

  .pl-choice {
    width:100% !important;
    min-height:72px;
    padding:16px 40px 16px 12px !important;
  }

  .compat-person {
    width:100% !important;
    padding:18px 13px 20px !important;
    box-sizing:border-box !important;
  }

  .compat-code-box {
    padding:16px 13px !important;
  }

  .astro-form-wrap input,
  .astro-form-wrap select,
  .compat-form-wrap input,
  .compat-form-wrap select {
    font-size:16px !important;
    min-height:46px;
  }

  .ora-container {
    gap:8px !important;
  }

  .astro-form-wrap button,
  #compatSubmitButton,
  .pl-back,
  .result-download,
  .result-back,
  .result-support {
    font-size:15px !important;
    min-height:46px;
  }

  .pl-home h1 {
    font-size:25px !important;
  }

  .compat-head h2,
  .astro-form-wrap h2 {
    font-size:23px !important;
  }

  .compat-intro,
  .pl-home-intro,
  .astro-form-wrap .intro {
    font-size:12px !important;
    line-height:1.55 !important;
  }

  .pl-wait-main {
    font-size:20px !important;
    line-height:1.35 !important;
  }

  .pl-wait-box {
    font-size:12px !important;
    line-height:1.45 !important;
    padding:13px 12px !important;
  }
}


/* =========================================================
   FIX MOBIL - FARA DEPASIRE ORIZONTALA
========================================================= */
@media (max-width: 600px) {

  *,
  *::before,
  *::after {
    box-sizing:border-box !important;
  }

  html,
  body {
    width:100% !important;
    max-width:100vw !important;
    margin:0 !important;
    padding:0 !important;
    overflow-x:hidden !important;
  }

  .pl-home,
  .pl-section,
  #sectiuneAstrograma,
  #sectiuneCompatibilitate,
  #sectiuneSesiune {
    width:auto !important;
    max-width:100% !important;
    margin:0 8px !important;
    padding:0 !important;
  }

  .pl-home-inner,
  .pl-coming-card,
  .astro-form-wrap,
  .compat-form-wrap {
    display:block !important;
    width:auto !important;
    min-width:0 !important;
    max-width:100% !important;
    margin:14px 0 !important;
    padding:20px 14px !important;
  }

  .pl-astro-nav,
  .pl-compat-nav {
    width:auto !important;
    min-width:0 !important;
    max-width:100% !important;
    margin:12px 8px 0 !important;
    padding:0 !important;
  }

  .pl-choice,
  .compat-person,
  .compat-code-box,
  .ora-container,
  .result-page,
  .result-download,
  .result-back,
  .result-support {
    min-width:0 !important;
    max-width:100% !important;
  }

  .astro-form-wrap input,
  .astro-form-wrap select,
  .compat-form-wrap input,
  .compat-form-wrap select,
  #compatCodAcces {
    display:block !important;
    width:100% !important;
    min-width:0 !important;
    max-width:100% !important;
  }

  .ora-container {
    display:grid !important;
    grid-template-columns:minmax(0,1fr) minmax(0,1fr) !important;
    width:100% !important;
  }

  .ora-container select {
    width:100% !important;
  }

  img,
  svg,
  iframe {
    max-width:100% !important;
  }
}


/* =========================================================
   FIX BLOGGER MOBILE - ELIMINA LATIMEA DESKTOP A TEMEI
========================================================= */
@media screen and (max-width: 700px) {

  html,
  body {
    min-width:0 !important;
    width:100% !important;
    max-width:100% !important;
    overflow-x:hidden !important;
  }

  body,
  #outer-wrapper,
  #content-wrapper,
  #main-wrapper,
  .content-outer,
  .content-inner,
  .main-outer,
  .main-inner,
  .columns,
  .columns-inner,
  .column-center-outer,
  .column-center-inner,
  .region-inner,
  .main,
  .widget,
  .Blog,
  .blog-posts,
  .date-outer,
  .date-posts,
  .post-outer,
  .post,
  .post-body,
  .entry-content {
    min-width:0 !important;
    width:100% !important;
    max-width:100% !important;
    margin-left:0 !important;
    margin-right:0 !important;
    padding-left:0 !important;
    padding-right:0 !important;
    box-sizing:border-box !important;
    float:none !important;
  }

  .post-body,
  .entry-content {
    overflow:visible !important;
  }

  #paginaPrincipala,
  #sectiuneAstrograma,
  #sectiuneCompatibilitate,
  #sectiuneSesiune {
    width:calc(100% - 16px) !important;
    max-width:calc(100% - 16px) !important;
    margin-left:8px !important;
    margin-right:8px !important;
    padding:0 !important;
    box-sizing:border-box !important;
  }

  .pl-home,
  .pl-section,
  .astro-form-wrap,
  .compat-form-wrap,
  .pl-home-inner,
  .pl-coming-card {
    width:100% !important;
    max-width:100% !important;
    min-width:0 !important;
    margin-left:0 !important;
    margin-right:0 !important;
    box-sizing:border-box !important;
  }

  .astro-form-wrap,
  .compat-form-wrap,
  .pl-home-inner,
  .pl-coming-card {
    padding:20px 14px !important;
  }

  .pl-astro-nav,
  .pl-compat-nav {
    width:calc(100% - 16px) !important;
    max-width:calc(100% - 16px) !important;
    min-width:0 !important;
    margin:12px 8px 0 !important;
    padding:0 !important;
  }

  .pl-choice,
  .compat-person,
  .compat-package,
  .compat-code-box,
  .compat-final-block,
  .result-page {
    width:100% !important;
    max-width:100% !important;
    min-width:0 !important;
    box-sizing:border-box !important;
  }

  input,
  select,
  textarea,
  button {
    max-width:100% !important;
    box-sizing:border-box !important;
  }

  .ora-container {
    width:100% !important;
    max-width:100% !important;
    min-width:0 !important;
    display:flex !important;
    gap:8px !important;
  }

  .ora-container select {
    flex:1 1 0 !important;
    width:0 !important;
    min-width:0 !important;
  }
}


/* =========================================================
   FIX MOBIL V4 - LOGO SI MENIU FARA ALUNGIRE
========================================================= */
@media screen and (max-width: 700px) {

  /* Logo-ul de sus isi pastreaza proportiile naturale */
  header img,
  .header img,
  #header img,
  .Header img,
  .header-inner img,
  .header-outer img,
  .header-widget img,
  .Header .widget-content img {
    width:auto !important;
    height:auto !important;
    max-width:92vw !important;
    max-height:none !important;
    object-fit:contain !important;
    aspect-ratio:auto !important;
    display:block !important;
    margin-left:auto !important;
    margin-right:auto !important;
  }

  /* Nu fortam containerele de header/logo la 100% cu deformare */
  .header-outer,
  .header-inner,
  #header,
  .Header,
  .header-widget,
  .Header .widget-content {
    min-width:0 !important;
    max-width:100% !important;
    width:auto !important;
    height:auto !important;
    box-sizing:border-box !important;
  }

  /* Meniul principal ramane card, nu banda intinsa pe tot ecranul */
  #paginaPrincipala {
    width:auto !important;
    max-width:none !important;
    margin:0 8px !important;
  }

  #paginaPrincipala .pl-home {
    width:auto !important;
    max-width:none !important;
    margin:0 !important;
    padding:0 !important;
  }

  #paginaPrincipala .pl-home-inner {
    width:auto !important;
    max-width:none !important;
    margin:16px 0 !important;
    padding:22px 16px !important;
  }

  /* Butoanele de meniu raman compacte si bine proportionate */
  #paginaPrincipala .pl-choice {
    width:100% !important;
    max-width:100% !important;
    min-height:68px !important;
    padding:15px 38px 15px 12px !important;
    border-radius:10px !important;
  }

  #paginaPrincipala .pl-choice-icon {
    flex:0 0 34px !important;
    width:34px !important;
    height:34px !important;
  }

  #paginaPrincipala .pl-choice-content {
    min-width:0 !important;
    flex:1 1 auto !important;
  }

  /* Imaginile generale nu sunt fortate pe latime completa */
  img {
    height:auto !important;
  }
}


/* =========================================================
   DESCOPERA PAGINA LIPSA
========================================================= */
.pl-discover-nav {
  max-width:760px;
  margin:22px auto -20px;
  padding:0 10px;
  box-sizing:border-box;
  text-align:left;
}

.pl-discover-wrap {
  max-width:760px;
  margin:40px auto;
  padding:38px;
  background:#F7F1E7;
  border:1px solid #C9A64B;
  border-radius:14px;
  box-shadow:0 8px 25px rgba(0,0,0,.22);
  box-sizing:border-box;
  font-family:Georgia,"Times New Roman",serif;
}

.pl-discover-head {
  text-align:center;
  margin-bottom:24px;
}

.pl-discover-head h2 {
  margin:4px 0 12px;
  color:#17130B !important;
  font-size:28px;
}

.pl-discover-head p {
  max-width:570px;
  margin:0 auto;
  color:#4A4235 !important;
  font-size:15px;
  line-height:1.65;
}

.pl-discover-product {
  position:relative;
  margin-top:18px;
  padding:24px 22px;
  background:#FFFDF8;
  border:1px solid #D8C17A;
  border-radius:12px;
  text-align:center;
  box-sizing:border-box;
}

.pl-discover-exclusive {
  padding-top:34px;
}

.pl-discover-icon {
  margin-bottom:8px;
  color:#B8912E;
  font-size:28px;
}

.pl-discover-product h3 {
  margin:0 0 8px;
  color:#17130B !important;
  font-size:20px;
  letter-spacing:.5px;
}

.pl-discover-highlight {
  margin:0 0 12px;
  color:#9A7420 !important;
  font-size:16px;
  font-weight:bold;
  line-height:1.45;
}

.pl-discover-product p {
  max-width:570px;
  margin:0 auto 16px;
  color:#4A4235 !important;
  font-size:14px;
  line-height:1.65;
}

.pl-discover-quote {
  font-style:italic;
  color:#776B58 !important;
}

.pl-discover-action {
  width:100%;
  max-width:390px;
  min-height:46px;
  margin-top:4px;
  padding:12px 18px;
  background:#17130B;
  color:#E3C66B !important;
  border:1px solid #B8912E;
  border-radius:8px;
  font-family:Georgia,"Times New Roman",serif;
  font-size:14px;
  font-weight:bold;
  letter-spacing:.4px;
  cursor:pointer;
}

.pl-discover-note {
  margin-top:20px;
  padding:14px 16px;
  background:#17130B;
  color:#E3C66B !important;
  border:1px solid #B8912E;
  border-radius:8px;
  text-align:center;
  font-size:13px;
  line-height:1.5;
}

.pl-discover-disclaimer {
  max-width:570px;
  margin:14px auto 0;
  padding:0 10px;
  color:#000000 !important;
  font-size:9px;
  line-height:1.5;
  text-align:center;
  opacity:.78;
}

.pl-discover-disclaimer strong {
  color:#000000 !important;
  font-size:9px;
  font-weight:bold;
}

@media screen and (max-width:700px) {
  .pl-discover-nav {
    width:calc(100% - 16px) !important;
    max-width:calc(100% - 16px) !important;
    margin:12px 8px 0 !important;
    padding:0 !important;
  }

  #sectiuneDescopera {
    width:calc(100% - 16px) !important;
    max-width:calc(100% - 16px) !important;
    margin:0 8px !important;
    padding:0 !important;
    box-sizing:border-box !important;
  }

  .pl-discover-wrap {
    width:100% !important;
    max-width:100% !important;
    min-width:0 !important;
    margin:14px 0 !important;
    padding:20px 14px !important;
    box-sizing:border-box !important;
  }

  .pl-discover-head h2 {
    font-size:23px !important;
  }

  .pl-discover-product {
    width:100% !important;
    max-width:100% !important;
    min-width:0 !important;
    padding:20px 14px !important;
  }

  .pl-discover-product h3 {
    font-size:18px !important;
  }

  .pl-discover-action {
    max-width:100% !important;
    font-size:12px !important;
  }
}


/* =========================================================
   EXEMPLE DE FEEDBACK
========================================================= */
.pl-feedback-section {
  margin-top:34px;
  padding-top:26px;
  border-top:1px solid rgba(184,145,46,.45);
  text-align:center;
}

.pl-feedback-kicker {
  color:#A77E20;
  font-size:10.5px;
  font-weight:bold;
  letter-spacing:1.5px;
}

.pl-feedback-section h3 {
  margin:8px 0 20px;
  color:#17130B !important;
  font-family:Georgia,"Times New Roman",serif;
  font-size:22px;
}

.pl-feedback-grid {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:14px;
}

.pl-feedback-card {
  min-width:0;
  padding:14px;
  background:#FFFDF8;
  border:1px solid #D8C17A;
  border-radius:11px;
  text-align:left;
  box-sizing:border-box;
}

.pl-feedback-card:last-child {
  grid-column:1 / -1;
}

.pl-feedback-name {
  margin-bottom:9px;
  color:#17130B !important;
  font-family:Georgia,"Times New Roman",serif;
  font-size:16px;
  font-weight:bold;
}

.pl-feedback-name span {
  margin-left:7px;
  color:#A77E20 !important;
  font-size:13px;
  font-weight:normal;
}

.pl-feedback-card p {
  margin:0;
  color:#4A4235 !important;
  font-family:Georgia,"Times New Roman",serif;
  font-size:13px;
  line-height:1.65;
}

.pl-feedback-disclaimer {
  margin-top:13px;
  color:#776B58 !important;
  font-size:11px;
  font-style:italic;
  line-height:1.45;
}

@media screen and (max-width:700px) {
  .pl-feedback-section {
    margin-top:28px;
    padding-top:22px;
  }

  .pl-feedback-grid {
    grid-template-columns:1fr !important;
    gap:11px !important;
  }

  .pl-feedback-card,
  .pl-feedback-card:last-child {
    grid-column:auto !important;
    width:100% !important;
    max-width:100% !important;
    padding:16px 14px !important;
  }

  .pl-feedback-section h3 {
    font-size:19px !important;
  }

  .pl-feedback-card p {
    font-size:13px !important;
  }
}


.pl-feedback-top {
  display:inline-block;
  width:auto;
  min-width:110px;
  margin:22px auto 0;
  padding:10px 20px;
  background:#17130B;
  color:#E3C66B !important;
  border:1px solid #B8912E;
  border-radius:7px;
  font-family:Georgia,"Times New Roman",serif;
  font-size:10.5px;
  font-weight:bold;
  letter-spacing:1px;
  cursor:pointer;
}
.pl-feedback-top:hover {
  background:#B8912E;
  color:#111111 !important;
}


.pl-badge-standard {
  background:#FFFFFF !important;
  color:#111111 !important;
  border:1px solid #D8D8D8 !important;
}

.pl-badge-free {
  background:#2F6B4F !important;
  color:#FFFFFF !important;
}


/* =========================================================
   FONTURI MARITE - DESKTOP + MOBIL
========================================================= */

/* Meniu principal */
.pl-home-intro {
  font-size:16px !important;
}

.pl-choice-content strong {
  font-size:16px !important;
}

.pl-choice-content small {
  font-size:13px !important;
  line-height:1.5 !important;
}

/* Feedback */
.pl-feedback-section h3 {
  font-size:23px !important;
}

.pl-feedback-name {
  font-size:17px !important;
}

.pl-feedback-name span {
  font-size:14px !important;
}

.pl-feedback-card p {
  font-size:14px !important;
  line-height:1.68 !important;
}

/* Descopera */
.pl-discover-head p,
.pl-discover-product p {
  font-size:15px !important;
  line-height:1.68 !important;
}

.pl-discover-highlight {
  font-size:17px !important;
}

.pl-discover-product h3 {
  font-size:21px !important;
}

/* Formulare */
.astro-form-wrap .intro,
.compat-intro {
  font-size:15px !important;
}

.astro-form-wrap label,
.compat-form-wrap label {
  font-size:15px !important;
}

.astro-form-wrap input,
.astro-form-wrap select,
.compat-form-wrap input,
.compat-form-wrap select {
  font-size:16px !important;
}

.hint,
.privacy-box {
  font-size:13px !important;
}

.compat-package strong {
  font-size:13px !important;
}

.compat-package span {
  font-size:13px !important;
}

.compat-person-title strong {
  font-size:15px !important;
}

.compat-person-title small {
  font-size:12px !important;
}

.astro-code-label strong,
.compat-code-label strong {
  font-size:14px !important;
}

/* Rezultate */
.result-text {
  font-size:16px !important;
}

.result-small,
.result-info {
  font-size:14px !important;
}

/* Mobil */
@media screen and (max-width:700px) {
  .pl-home-intro {
    font-size:15px !important;
  }

  .pl-choice-content strong {
    font-size:12px !important;
  }

  .pl-choice-content small {
    font-size:12px !important;
    line-height:1.5 !important;
  }

  .pl-feedback-section h3 {
    font-size:20px !important;
  }

  .pl-feedback-name {
    font-size:16px !important;
  }

  .pl-feedback-name span {
    font-size:13px !important;
  }

  .pl-feedback-card p {
    font-size:12px !important;
  }

  .pl-discover-head p,
  .pl-discover-product p {
    font-size:12px !important;
  }

  .pl-discover-highlight {
    font-size:16px !important;
  }

  .pl-discover-product h3 {
    font-size:19px !important;
  }

  .astro-form-wrap .intro,
  .compat-intro {
    font-size:12px !important;
  }

  .astro-form-wrap label,
  .compat-form-wrap label {
    font-size:12px !important;
  }

  .astro-form-wrap input,
  .astro-form-wrap select,
  .compat-form-wrap input,
  .compat-form-wrap select {
    font-size:16px !important;
  }

  .hint,
  .privacy-box {
    font-size:12.5px !important;
  }

  .compat-package strong,
  .compat-package span {
    font-size:12.5px !important;
  }

  .compat-person-title strong {
    font-size:12px !important;
  }

  .compat-person-title small {
    font-size:12px !important;
  }

  .result-text {
    font-size:15px !important;
  }

  .result-small,
  .result-info {
    font-size:13px !important;
  }
}


/* Logo/simbol principal - usor mai sus si perfect centrat */
#paginaPrincipala .pl-symbol {
  position:relative;
  top:-5px;
  margin-left:auto !important;
  margin-right:auto !important;
  text-align:center !important;
}


/* Intro pagina principala - bold */
#paginaPrincipala .pl-home-intro {
  font-weight:700 !important;
}


/* =========================================================
   REZULTAT ASTRO - ACTIUNI CENTRATE
========================================================= */
#resultContent .result-download,
#resultContent .result-support {
  display:block !important;
  width:max-content !important;
  max-width:100% !important;
  margin-left:auto !important;
  margin-right:auto !important;
  box-sizing:border-box !important;
  text-align:center !important;
}

#resultContent .result-download {
  margin-top:18px !important;
}

#resultContent .result-support {
  margin-top:12px !important;
  margin-left:auto !important;
}

@media screen and (max-width:700px) {
  #resultContent .result-download,
  #resultContent .result-support {
    width:100% !important;
    max-width:100% !important;
  }
}


/* Buton SUSTINE - aceeasi dimensiune cu butonul principal de generare */
#resultContent .result-support {
  width:100% !important;
  max-width:100% !important;
  display:block !important;
  padding:14px 18px !important;
  margin:12px auto 0 !important;
  box-sizing:border-box !important;
  text-align:center !important;
}


/* Mesaj emotional deasupra butonului de sustinere */
#resultContent .result-support-message {
  max-width:520px;
  margin:22px auto 2px !important;
  text-align:center !important;
  font-family:Georgia, "Times New Roman", serif !important;
  font-size:15px !important;
  line-height:1.55 !important;
  font-style:italic;
  color:#4A4235 !important;
}


/* REZULTAT CUPLU - aceeasi prezentare ca rezultatul personal */
#compatResultContent .result-download,
#compatResultContent .result-support {
  display:block !important;
  width:100% !important;
  max-width:100% !important;
  margin-left:auto !important;
  margin-right:auto !important;
  box-sizing:border-box !important;
  text-align:center !important;
}

#compatResultContent .result-download {
  margin-top:18px !important;
  padding:14px 18px !important;
}

#compatResultContent .result-support {
  margin-top:12px !important;
  padding:14px 18px !important;
}

#compatResultContent .result-support-message {
  max-width:520px;
  margin:22px auto 2px !important;
  text-align:center !important;
  font-family:Georgia, "Times New Roman", serif !important;
  font-size:15px !important;
  line-height:1.55 !important;
  font-style:italic;
  color:#4A4235 !important;
}


/* Buton SUSTINE - compact, centrat si verde discret */
#resultContent .result-support,
#compatResultContent .result-support {
  display:block !important;
  width:340px !important;
  max-width:90% !important;
  margin:12px auto 0 !important;
  padding:14px 18px !important;
  box-sizing:border-box !important;
  text-align:center !important;
  background:#E7EFE4 !important;
  color:#36563A !important;
  border:1px solid #789274 !important;
}

#resultContent .result-support:hover,
#compatResultContent .result-support:hover {
  background:#D7E5D3 !important;
  color:#29452D !important;
  border-color:#607D5D !important;
}

@media screen and (max-width:700px) {
  #resultContent .result-support,
  #compatResultContent .result-support {
    width:82% !important;
    max-width:340px !important;
  }
}


/* Mesaj sustinere - bold in ambele rezultate */
#resultContent .result-support-message,
#compatResultContent .result-support-message {
  font-weight:700 !important;
  font-style:normal !important;
}


/* Butoane rezultat - dimensiuni identice PERSONAL + CUPLU */
#resultContent .result-download,
#resultContent .result-support,
#compatResultContent .result-download,
#compatResultContent .result-support {
  display:block !important;
  width:380px !important;
  max-width:90% !important;
  min-height:54px !important;
  margin-left:auto !important;
  margin-right:auto !important;
  padding:14px 18px !important;
  box-sizing:border-box !important;
  text-align:center !important;
  line-height:24px !important;
}

#resultContent .result-support,
#compatResultContent .result-support {
  margin-top:12px !important;
}

@media screen and (max-width:700px) {
  #resultContent .result-download,
  #resultContent .result-support,
  #compatResultContent .result-download,
  #compatResultContent .result-support {
    width:88% !important;
    max-width:380px !important;
    min-height:54px !important;
  }
}


/* =========================================================
   MOD ADMIN / LIVE
========================================================= */
.pl-admin-hotspot {
  display:block;
  width:76px;
  height:18px;
  margin:2px auto 0;
  padding:0;
  border:0;
  background:transparent;
  opacity:0;
  cursor:default;
}

.pl-admin-overlay {
  position:fixed;
  inset:0;
  z-index:99999;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:20px;
  background:rgba(0,0,0,.82);
  box-sizing:border-box;
}

.pl-admin-login {
  position:relative;
  width:100%;
  max-width:390px;
  padding:30px 28px 26px;
  background:#F7F1E7;
  border:1px solid #C9A64B;
  border-radius:14px;
  box-sizing:border-box;
  font-family:Georgia,"Times New Roman",serif;
  box-shadow:0 12px 34px rgba(0,0,0,.4);
}

.pl-admin-title {
  margin-bottom:8px;
  text-align:center;
  color:#17130B;
  font-size:22px;
  font-weight:bold;
}

.pl-admin-login p {
  margin:0 0 20px;
  text-align:center;
  color:#776B58;
  font-size:13px;
}

.pl-admin-login label {
  display:block;
  margin:13px 0 6px;
  color:#17130B;
  font-size:13px;
  font-weight:bold;
}

.pl-admin-login input {
  width:100%;
  padding:12px 13px;
  border:1px solid #CDBF9E;
  border-radius:7px;
  background:#FFFDF8;
  color:#17130B;
  font-size:16px;
  box-sizing:border-box;
}

.pl-admin-login-button {
  width:100%;
  margin-top:20px;
  padding:13px;
  background:#17130B;
  color:#E3C66B;
  border:1px solid #B8912E;
  border-radius:7px;
  font-family:Georgia,"Times New Roman",serif;
  font-size:14px;
  font-weight:bold;
  cursor:pointer;
}

.pl-admin-close {
  position:absolute;
  top:10px;
  right:12px;
  border:0;
  background:transparent;
  color:#776B58;
  font-size:24px;
  cursor:pointer;
}

.pl-admin-message {
  min-height:18px;
  margin-top:12px;
  text-align:center;
  color:#9B3B31;
  font-size:10.5px;
  font-weight:bold;
}

#paginaPrincipala .pl-symbol.pl-admin-active {
  font-size:14px !important;
  letter-spacing:2px;
  font-weight:bold;
  color:#B8912E !important;
  top:0 !important;
}

body.pl-admin-mode .astro-code-box,
body.pl-admin-mode .compat-code-box {
  display:none !important;
}


/* =========================================================
   FIX MOBIL - COMPATIBILITATE IN CUPLU PE UN SINGUR RAND
========================================================= */
@media screen and (max-width:700px) {
  #paginaPrincipala .pl-premium {
    gap:8px !important;
    padding-left:10px !important;
    padding-right:30px !important;
  }

  #paginaPrincipala .pl-premium .pl-choice-icon {
    flex:0 0 30px !important;
    width:30px !important;
    height:30px !important;
    font-size:17px !important;
  }

  #paginaPrincipala .pl-compat-title-mobile {
    white-space:nowrap !important;
    font-size:12px !important;
    letter-spacing:-0.15px !important;
  }
}


/* =========================================================
   FIX MOBIL V2 - TITLU CUPLU GARANTAT PE UN SINGUR RAND
========================================================= */
@media screen and (max-width:700px) {
  #paginaPrincipala button.pl-choice.pl-premium {
    gap:5px !important;
    padding-left:7px !important;
    padding-right:24px !important;
  }

  #paginaPrincipala button.pl-choice.pl-premium .pl-choice-icon {
    flex:0 0 26px !important;
    width:26px !important;
    height:26px !important;
    min-width:26px !important;
    font-size:15px !important;
  }

  #paginaPrincipala button.pl-choice.pl-premium .pl-choice-content {
    min-width:0 !important;
    width:auto !important;
    overflow:visible !important;
  }

  #paginaPrincipala button.pl-choice.pl-premium .pl-compat-title-mobile {
    display:block !important;
    width:max-content !important;
    max-width:none !important;
    white-space:nowrap !important;
    word-break:keep-all !important;
    overflow-wrap:normal !important;
    hyphens:none !important;
    font-size:11px !important;
    line-height:1.1 !important;
    letter-spacing:-0.45px !important;
    margin-bottom:4px !important;
  }

  #paginaPrincipala button.pl-choice.pl-premium .pl-arrow {
    right:10px !important;
  }
}

/* Pentru telefoane foarte inguste */
@media screen and (max-width:360px) {
  #paginaPrincipala button.pl-choice.pl-premium .pl-compat-title-mobile {
    font-size:10px !important;
    letter-spacing:-0.55px !important;
  }

  #paginaPrincipala button.pl-choice.pl-premium .pl-choice-icon {
    flex-basis:24px !important;
    width:24px !important;
    height:24px !important;
    min-width:24px !important;
  }
}


/* =========================================================
   MOBIL - TOATE TITLURILE PRINCIPALE LA ACEEASI DIMENSIUNE
========================================================= */
@media screen and (max-width:700px) {
  #paginaPrincipala .pl-choice strong {
    font-size:11px !important;
    line-height:1.1 !important;
    letter-spacing:-0.45px !important;
  }
}

@media screen and (max-width:360px) {
  #paginaPrincipala .pl-choice strong {
    font-size:10px !important;
    letter-spacing:-0.55px !important;
  }
}


/* =========================================================
   FIX FINAL MOBIL - SIMBOL + ALINIERE UNIFORMA MENIU
========================================================= */

/* FIX DEFINITIV BLOGGER: stelutele sunt desenate din CSS, fara entitati HTML */
#paginaPrincipala .pl-symbol-star::before,
.pl-css-star::before {
  content:"";
  display:inline-block;
  width:26px;
  height:26px;
  background:#B8912E;
  -webkit-clip-path:polygon(50% 0%, 58% 42%, 100% 50%, 58% 58%, 50% 100%, 42% 58%, 0% 50%, 42% 42%);
  clip-path:polygon(50% 0%, 58% 42%, 100% 50%, 58% 58%, 50% 100%, 42% 58%, 0% 50%, 42% 42%);
  vertical-align:middle;
}

.pl-choice-icon.pl-css-star::before {
  width:20px;
  height:20px;
}

.pl-discover-icon.pl-css-star::before {
  width:24px;
  height:24px;
}

#paginaPrincipala .pl-symbol-star.pl-admin-active::before {
  display:none !important;
}

@media screen and (max-width:700px) {

  /* Aceeasi geometrie pentru TOATE cele 4 optiuni */
  #paginaPrincipala button.pl-choice,
  #paginaPrincipala button.pl-choice.pl-premium {
    gap:8px !important;
    padding-left:10px !important;
    padding-right:30px !important;
  }

  /* Toate pictogramele au ACEEASI dimensiune */
  #paginaPrincipala button.pl-choice .pl-choice-icon,
  #paginaPrincipala button.pl-choice.pl-premium .pl-choice-icon {
    flex:0 0 30px !important;
    width:30px !important;
    height:30px !important;
    min-width:30px !important;
    font-size:17px !important;
    box-sizing:border-box !important;
  }

  /* Continutul incepe exact de la aceeasi pozitie */
  #paginaPrincipala button.pl-choice .pl-choice-content,
  #paginaPrincipala button.pl-choice.pl-premium .pl-choice-content {
    min-width:0 !important;
    flex:1 1 auto !important;
    width:auto !important;
    overflow:visible !important;
  }

  /* Toate titlurile au aceeasi marime si aceeasi linie de baza */
  #paginaPrincipala button.pl-choice strong,
  #paginaPrincipala button.pl-choice.pl-premium .pl-compat-title-mobile {
    display:block !important;
    font-size:11px !important;
    line-height:1.1 !important;
    letter-spacing:-0.45px !important;
    margin-bottom:4px !important;
  }

  /* Compatibilitatea ramane obligatoriu pe un singur rand */
  #paginaPrincipala button.pl-choice.pl-premium .pl-compat-title-mobile {
    width:max-content !important;
    max-width:none !important;
    white-space:nowrap !important;
    word-break:keep-all !important;
    overflow-wrap:normal !important;
    hyphens:none !important;
  }

  /* Aceeasi pozitie pentru sageti */
  #paginaPrincipala button.pl-choice .pl-arrow,
  #paginaPrincipala button.pl-choice.pl-premium .pl-arrow {
    right:10px !important;
  }
}

@media screen and (max-width:360px) {
  #paginaPrincipala button.pl-choice strong,
  #paginaPrincipala button.pl-choice.pl-premium .pl-compat-title-mobile {
    font-size:10px !important;
    letter-spacing:-0.55px !important;
  }

  #paginaPrincipala button.pl-choice .pl-choice-icon,
  #paginaPrincipala button.pl-choice.pl-premium .pl-choice-icon {
    flex-basis:28px !important;
    width:28px !important;
    height:28px !important;
    min-width:28px !important;
    font-size:16px !important;
  }
}


/* TEST SCRIE-TI PAGINA LIPSA */
.pl-test-wrap{max-width:760px;margin:0 auto;padding:22px 14px 55px;box-sizing:border-box}.pl-test-card{position:relative;background:#F7F1E7;border:1px solid #C9A64B;border-radius:16px;padding:38px 30px;color:#2f2922;box-sizing:border-box}.pl-test-card h2{text-align:center;margin:8px 0 14px}.pl-test-card h3{font-size:20px;line-height:1.45;margin:18px 0}.pl-test-lead{font-size:15px;line-height:1.75;text-align:center}.pl-test-note{font-size:11px;line-height:1.5;text-align:center;opacity:.72;margin:12px 0 22px}
.pl-test-profile-box .ora-container{
  display:flex !important;
  align-items:center !important;
  gap:10px !important;
  width:100% !important;
  max-width:none !important;
  box-sizing:border-box !important;
}
.pl-test-profile-box .ora-container select{
  display:block !important;
  flex:1 1 0 !important;
  width:calc(50% - 13px) !important;
  min-width:0 !important;
  max-width:none !important;
  box-sizing:border-box !important;
  padding:13px 12px !important;
  border:1px solid #D8CDBF !important;
  border-radius:10px !important;
  background:#FFFBF6 !important;
  font-family:Georgia,serif !important;
  font-size:15px !important;
  color:#2D2532 !important;
}
.pl-test-profile-box .separator-ora{
  flex:0 0 16px !important;
  text-align:center !important;
}
@media screen and (max-width:700px){
  .pl-test-profile-box .ora-container{
    display:flex !important;
    grid-template-columns:none !important;
    width:100% !important;
  }
  .pl-test-profile-box .ora-container select{
    width:calc(50% - 13px) !important;
  }
}

.pl-test-take-time{margin:22px 0 18px;padding:16px 15px;border:1px solid #A8844F;border-radius:12px;background:#fffaf3;text-align:center;font-size:14px;line-height:1.65;color:#3C2A4D}.pl-test-consent{display:flex;gap:10px;align-items:flex-start;font-size:13px;line-height:1.5;margin:18px 0}.pl-test-primary,.pl-test-secondary{border-radius:10px;padding:13px 18px;font-family:inherit;font-weight:700;cursor:pointer}.pl-test-primary{background:#3C2A4D;color:#fff;border:1px solid #3C2A4D}.pl-test-secondary{background:transparent;color:#3C2A4D;border:1px solid #9d8ca8}.pl-test-progress{height:7px;background:#e3d8c8;border-radius:20px;overflow:hidden;margin:20px 0 8px}.pl-test-progress&gt;div{height:100%;width:0;background:#7b648c;transition:width .25s}.pl-test-counter{font-size:12px;text-align:right;opacity:.68}.pl-test-option{display:block;width:100%;text-align:left;background:#fffaf3;border:1px solid #d9cbb8;border-radius:10px;padding:13px 14px;margin:9px 0;font-family:inherit;font-size:14px;line-height:1.4;cursor:pointer;color:#332d27}.pl-test-option:hover{border-color:#8d739d}.pl-test-option.selected{border:2px solid #6f4d7d;background:#f1e8f7}.pl-test-nav{display:flex;justify-content:space-between;gap:12px;margin-top:20px}.pl-test-direction{text-align:center;font-size:13px;letter-spacing:.08em;color:#6f4d7d;font-weight:700;margin-top:18px}.pl-test-card textarea{width:100%;box-sizing:border-box;border:1px solid #cdbda8;border-radius:10px;background:#fffaf3;padding:14px;font:14px/1.55 Georgia,serif;resize:vertical;color:#302a25}.pl-test-final-title{text-align:center;color:#3C2A4D;font-size:24px;margin:10px 0 16px}.pl-test-final-category{text-align:center;font-size:22px;font-weight:700;letter-spacing:.04em;color:#6f4d7d;margin:18px 0}.pl-test-code{display:inline-block;background:#fff;border:1px dashed #A8844F;border-radius:9px;padding:9px 14px;font-weight:700;letter-spacing:.08em}.pl-test-buy{display:inline-block;margin-top:16px;text-decoration:none}.pl-test-small{font-size:11px;line-height:1.5;opacity:.7;margin-top:20px}@media(max-width:600px){.pl-test-card{padding:30px 18px}.pl-test-card h3{font-size:18px}.pl-test-option{font-size:13px}.pl-test-nav{flex-wrap:wrap}.pl-test-primary,.pl-test-secondary{flex:1}}
.pl-test-profile-box{margin:22px 0 18px;padding:20px 18px;border:1px solid #d8c9b6;border-radius:13px;background:#fffaf3}.pl-test-profile-kicker{text-align:center;font-size:11px;letter-spacing:.14em;color:#6f4d7d;font-weight:700}.pl-test-profile-box h3{text-align:center;margin:8px 0 8px}.pl-test-profile-copy{font-size:13px;line-height:1.6;text-align:center;color:#554b42}.pl-test-field-label{display:block;font-size:13px;font-weight:700;margin:14px 0 7px}.pl-test-input{width:100%;box-sizing:border-box;border:1px solid #cdbda8;border-radius:10px;background:#fff;padding:13px 14px;font:15px Georgia,serif;color:#302a25}.pl-test-sex-row{display:flex;gap:10px;margin:12px 0}.pl-test-sex-choice{flex:1;display:flex;align-items:center;justify-content:center;gap:8px;border:1px solid #d4c4af;border-radius:10px;background:#fff;padding:11px;cursor:pointer}.pl-test-zodiac-preview{text-align:center;margin-top:10px;font-size:13px;font-weight:700;color:#6f4d7d}.pl-test-funnel-rule{margin:16px 0 20px;padding:14px 15px;border-left:3px solid #7b648c;background:#f3ebf6;border-radius:8px;font-size:12px;line-height:1.55;color:#44394c}.pl-test-answer-hint{font-size:11px;margin-top:7px;color:#756979}.pl-test-answer-hint.is-ok{font-weight:700;color:#3f6545}.pl-test-mystery{margin:18px 0;padding:18px;border:1px solid #d9cbb8;border-radius:12px;background:#fffaf3;text-align:center}.pl-test-mystery strong{color:#3C2A4D}.pl-test-final-eyebrow{text-align:center;font-size:11px;letter-spacing:.14em;color:#8a775f;margin-bottom:8px}.pl-test-final-clue{text-align:center;font-size:20px;line-height:1.4;font-weight:700;color:#3C2A4D;margin:10px 0 18px}
&lt;/style&gt;



&lt;script&gt;
(function() {
  var viewport =
    document.querySelector(
      'meta[name="viewport"]'
    );

  if (!viewport) {
    viewport =
      document.createElement(
        "meta"
      );

    viewport.name =
      "viewport";

    document.head.appendChild(
      viewport
    );
  }

  viewport.setAttribute(
    "content",
    "width=device-width, initial-scale=1, viewport-fit=cover"
  );
})();
&lt;/script&gt;

&lt;script&gt;
// ==========================================================
// MOD ADMIN / LIVE - autentificare server-side
// ==========================================================
(function() {

  const ADMIN_URL =
    "https://script.google.com/macros/s/AKfycbzJK9msWoF8yhTNHj5IVrfIV3a9l9e4Nf3Tu_FVAQn1qiwkAM4Q3e25lh-b0RG3PrKx/exec";

  const TOKEN_KEY =
    "PL_ADMIN_TOKEN";

  const EXP_KEY =
    "PL_ADMIN_EXPIRA";


  function bytesHex(
    buffer
  ) {

    return Array.from(
      new Uint8Array(
        buffer
      )
    )
      .map(
        function(b) {
          return b
            .toString(16)
            .padStart(2, "0");
        }
      )
      .join("");

  }


  function hexBytes(
    hex
  ) {

    const arr =
      new Uint8Array(
        hex.length / 2
      );

    for (
      let i = 0;
      i &lt; arr.length;
      i++
    ) {

      arr[i] =
        parseInt(
          hex.substr(
            i * 2,
            2
          ),
          16
        );

    }

    return arr;

  }


  async function sha256Hex(
    text
  ) {

    const data =
      new TextEncoder()
        .encode(
          String(
            text || ""
          )
        );

    const digest =
      await crypto.subtle.digest(
        "SHA-256",
        data
      );

    return bytesHex(
      digest
    );

  }


  async function hmacHex(
    keyHex,
    mesaj
  ) {

    const key =
      await crypto.subtle.importKey(
        "raw",
        hexBytes(
          keyHex
        ),
        {
          name: "HMAC",
          hash: "SHA-256"
        },
        false,
        ["sign"]
      );

    const semnatura =
      await crypto.subtle.sign(
        "HMAC",
        key,
        new TextEncoder()
          .encode(
            mesaj
          )
      );

    return bytesHex(
      semnatura
    );

  }


  function jsonpAdmin(
    params
  ) {

    return new Promise(
      function(resolve, reject) {

        const callback =
          "plAdminCb_" +
          Date.now() +
          "_" +
          Math.random()
            .toString(36)
            .slice(2);

        let script =
          null;

        let terminat =
          false;


        function curata() {

          if (script) {
            script.remove();
          }

          try {
            delete window[
              callback
            ];
          }
          catch(e) {}

        }


        window[
          callback
        ] =
        function(date) {

          if (terminat) {
            return;
          }

          terminat =
            true;

          curata();

          resolve(
            date || {}
          );

        };


        params.callback =
          callback;

        params.t =
          Date.now();


        const query =
          Object.keys(
            params
          )
            .map(
              function(k) {
                return (
                  encodeURIComponent(k) +
                  "=" +
                  encodeURIComponent(
                    params[k]
                  )
                );
              }
            )
            .join("&amp;");


        script =
          document.createElement(
            "script"
          );

        script.src =
          ADMIN_URL +
          "?" +
          query;


        script.onerror =
          function() {

            if (terminat) {
              return;
            }

            terminat =
              true;

            curata();

            reject(
              new Error(
                "Nu s-a putut verifica accesul ADMIN."
              )
            );

          };


        document.body.appendChild(
          script
        );


        setTimeout(
          function() {

            if (terminat) {
              return;
            }

            terminat =
              true;

            curata();

            reject(
              new Error(
                "Autentificarea a expirat. Incearca din nou."
              )
            );

          },
          10000
        );

      }
    );

  }


  function tokenCurent() {

    const token =
      localStorage.getItem(
        TOKEN_KEY
      ) || "";

    const expira =
      Number(
        localStorage.getItem(
          EXP_KEY
        ) || 0
      );


    if (
      !token ||
      expira &lt;=
        Date.now()
    ) {

      localStorage.removeItem(
        TOKEN_KEY
      );

      localStorage.removeItem(
        EXP_KEY
      );

      return "";

    }


    return token;

  }


  function aplicaAdmin() {

    const token =
      tokenCurent();

    const activ =
      !!token;


    document.body.classList.toggle(
      "pl-admin-mode",
      activ
    );


    const simbol =
      document.querySelector(
        "#paginaPrincipala .pl-symbol"
      );


    if (simbol) {

      simbol.textContent =
        activ
          ? "ADMIN"
          : "";

      simbol.classList.toggle(
        "pl-admin-active",
        activ
      );

    }


    const adminTokenInput =
      document.getElementById(
        "adminToken"
      );

    if (
      adminTokenInput
    ) {

      adminTokenInput.value =
        token;

    }


    const codAstro =
      document.getElementById(
        "codAcces"
      );

    const codCuplu =
      document.getElementById(
        "compatCodAcces"
      );


    if (codAstro) {

      codAstro.required =
        !activ;

      if (activ) {
        codAstro.value = "";
      }

    }


    if (codCuplu) {

      codCuplu.required =
        !activ;

      if (activ) {
        codCuplu.value = "";
      }

    }


    return activ;

  }


  window.PLAdmin = {

    isActive:
      function() {
        return !!tokenCurent();
      },

    getToken:
      function() {
        return tokenCurent();
      },

    apply:
      aplicaAdmin,

    logout:
      function() {

        localStorage.removeItem(
          TOKEN_KEY
        );

        localStorage.removeItem(
          EXP_KEY
        );

        aplicaAdmin();

      }

  };


  window.deschideLoginAdminPL =
  function() {

    const overlay =
      document.getElementById(
        "plAdminOverlay"
      );

    const mesaj =
      document.getElementById(
        "plAdminMesaj"
      );


    if (mesaj) {
      mesaj.textContent = "";
    }


    if (overlay) {
      overlay.style.display =
        "flex";
    }


    setTimeout(
      function() {

        const user =
          document.getElementById(
            "plAdminUser"
          );

        if (user) {
          user.focus();
        }

      },
      50
    );

  };


  window.inchideLoginAdminPL =
  function() {

    const overlay =
      document.getElementById(
        "plAdminOverlay"
      );

    if (overlay) {
      overlay.style.display =
        "none";
    }

  };


  window.autentificaAdminPL =
  async function() {

    const userInput =
      document.getElementById(
        "plAdminUser"
      );

    const parolaInput =
      document.getElementById(
        "plAdminPassword"
      );

    const mesaj =
      document.getElementById(
        "plAdminMesaj"
      );

    const buton =
      document.getElementById(
        "plAdminLoginButton"
      );


    const user =
      String(
        userInput
          ? userInput.value
          : ""
      ).trim();

    const parola =
      String(
        parolaInput
          ? parolaInput.value
          : ""
      );


    if (
      !user ||
      !parola
    ) {

      if (mesaj) {
        mesaj.textContent =
          "Completeaza userul si parola.";
      }

      return;

    }


    if (buton) {

      buton.disabled =
        true;

      buton.textContent =
        "VERIFICAM...";

    }


    try {

      const challenge =
        await jsonpAdmin({
          action:
            "adminChallenge",
          user:
            user
        });


      if (
        !challenge.succes
      ) {

        throw new Error(
          challenge.mesaj ||
          "Date de autentificare incorecte."
        );

      }


      const parolaHash =
        await sha256Hex(
          parola
        );


      const proof =
        await hmacHex(
          parolaHash,
          challenge.nonce
        );


      const rezultat =
        await jsonpAdmin({
          action:
            "adminLogin",
          user:
            user,
          challengeId:
            challenge.challengeId,
          proof:
            proof
        });


      if (
        !rezultat.succes ||
        !rezultat.token
      ) {

        throw new Error(
          rezultat.mesaj ||
          "Date de autentificare incorecte."
        );

      }


      localStorage.setItem(
        TOKEN_KEY,
        rezultat.token
      );


      localStorage.setItem(
        EXP_KEY,
        String(
          rezultat.expiraLa ||
          (
            Date.now() +
            8 * 60 * 60 * 1000
          )
        )
      );


      if (parolaInput) {
        parolaInput.value =
          "";
      }


      aplicaAdmin();

      inchideLoginAdminPL();

      if (
        typeof inapoiPaginaPrincipalaPL ===
        "function"
      ) {

        inapoiPaginaPrincipalaPL();

      }

    }

    catch(eroare) {

      if (mesaj) {

        mesaj.textContent =
          eroare &amp;&amp;
          eroare.message
            ? eroare.message
            : "Autentificarea nu a reusit.";

      }

    }

    finally {

      if (buton) {

        buton.disabled =
          false;

        buton.textContent =
          "INTRA";

      }

    }

  };


  document.addEventListener(
    "DOMContentLoaded",
    aplicaAdmin
  );


  setTimeout(
    aplicaAdmin,
    100
  );

})();
&lt;/script&gt;

&lt;script src="https://cdn.jsdelivr.net/npm/astronomy-engine@2.1.19/astronomy.browser.min.js"&gt;&lt;/script&gt;
&lt;script&gt;
/* ==========================================================
   PAGINA LIPSA - HARTA NATALA REALA / PAGINA PREMIUM
   - planete geocentrice reale
   - ASC + MC calculate din ora si coordonate
   - case Equal House
   - aspecte majore
   - Elemente + Modalitati calculate din 10 planete + ASC
   - imagine portrait completa, apropiata de macheta aprobata
   ========================================================== */
window.PLChartEngine = (function() {
  const ZODII = [
    "Berbec","Taur","Gemeni","Rac","Leu","Fecioara",
    "Balanta","Scorpion","Sagetator","Capricorn","Varsator","Pesti"
  ];
  const ZODIAC_GLYPHS = [
    0x2648,0x2649,0x264A,0x264B,0x264C,0x264D,
    0x264E,0x264F,0x2650,0x2651,0x2652,0x2653
  ].map(function(cp){ return String.fromCodePoint(cp); });
  const ELEMENT = ["Foc","Pamant","Aer","Apa","Foc","Pamant","Aer","Apa","Foc","Pamant","Aer","Apa"];
  const MODAL = ["Cardinal","Fix","Mutabil","Cardinal","Fix","Mutabil","Cardinal","Fix","Mutabil","Cardinal","Fix","Mutabil"];
  const PLANETS = [
    ["Soare",0x2609,"Sun"],
    ["Luna",0x263D,"Moon"],
    ["Mercur",0x263F,"Mercury"],
    ["Venus",0x2640,"Venus"],
    ["Marte",0x2642,"Mars"],
    ["Jupiter",0x2643,"Jupiter"],
    ["Saturn",0x2644,"Saturn"],
    ["Uranus",0x2645,"Uranus"],
    ["Neptun",0x2646,"Neptune"],
    ["Pluto",0x2647,"Pluto"]
  ].map(function(p){
    return [p[0], String.fromCodePoint(p[1]), p[2]];
  });

  function norm(v){ return ((Number(v)%360)+360)%360; }
  function rad(v){ return v*Math.PI/180; }
  function signIndex(lon){ return Math.floor(norm(lon)/30)%12; }
  function signName(lon){ return ZODII[signIndex(lon)]; }
  function degreeInSign(lon){ return norm(lon)%30; }
  const DEG = String.fromCharCode(176);
  const PRIME = String.fromCodePoint(0x2032);
  function point(cx,cy,r,a){ return {x:cx+r*Math.cos(a), y:cy-r*Math.sin(a)}; }

  function bucharestLocalToUtc(data,hh,mm){
    const target=Date.UTC(data.an,data.luna-1,data.zi,Number(hh),Number(mm),0);
    let guess=target;
    const fmt=new Intl.DateTimeFormat("en-CA",{
      timeZone:"Europe/Bucharest",hour12:false,
      year:"numeric",month:"2-digit",day:"2-digit",
      hour:"2-digit",minute:"2-digit",second:"2-digit"
    });
    for(let k=0;k&lt;4;k++){
      const parts={};
      fmt.formatToParts(new Date(guess)).forEach(function(p){
        if(p.type!=="literal") parts[p.type]=p.value;
      });
      const represented=Date.UTC(
        Number(parts.year),Number(parts.month)-1,Number(parts.day),
        Number(parts.hour)%24,Number(parts.minute),Number(parts.second)
      );
      const next=target-(represented-guess);
      if(Math.abs(next-guess)&lt;1000){ guess=next; break; }
      guess=next;
    }
    return new Date(guess);
  }

  function julianDayFromDate(date){ return date.getTime()/86400000+2440587.5; }
  function gmstGrade(jd){
    const T=(jd-2451545.0)/36525.0;
    return norm(
      280.46061837+
      360.98564736629*(jd-2451545.0)+
      0.000387933*T*T-(T*T*T)/38710000
    );
  }

  function calcAngles(dateUtc,lat,lng){
    const jd=julianDayFromDate(dateUtc);
    const lst=norm(gmstGrade(jd)+Number(lng));
    const eps=rad(23.4392911);
    const theta=rad(lst);
    const phi=rad(Number(lat));

    let asc=Math.atan2(
      -Math.cos(theta),
      Math.sin(theta)*Math.cos(eps)+Math.tan(phi)*Math.sin(eps)
    )*180/Math.PI;
    asc=norm(asc+180);

    let mc=Math.atan2(
      Math.sin(theta),
      Math.cos(theta)*Math.cos(eps)
    )*180/Math.PI;
    mc=norm(mc);

    return {asc:asc,mc:mc};
  }

  function geoLongitude(bodyName,dateUtc){
    if(!window.Astronomy || !Astronomy.Body || !Astronomy.GeoVector || !Astronomy.Ecliptic){
      throw new Error("Motorul astronomic nu s-a incarcat.");
    }
    const body=Astronomy.Body[bodyName];
    const vec=Astronomy.GeoVector(body,dateUtc,true);
    return norm(Astronomy.Ecliptic(vec).elon);
  }

  function toPct(obj){
    const keys=Object.keys(obj);
    const total=keys.reduce(function(s,k){return s+obj[k];},0)||1;
    const raw=keys.map(function(k){return {k:k,v:obj[k]*100/total};});
    const out={},rem=[];
    raw.forEach(function(o){
      const f=Math.floor(o.v);
      out[o.k]=f;
      rem.push({k:o.k,r:o.v-f});
    });
    let left=100-keys.reduce(function(s,k){return s+out[k];},0);
    rem.sort(function(a,b){return b.r-a.r;});
    for(let i=0;i&lt;left;i++) out[rem[i%rem.length].k]++;
    return out;
  }

  function calcDistributions(planets,asc){
    const el={Foc:0,Pamant:0,Aer:0,Apa:0};
    const mo={Cardinal:0,Fix:0,Mutabil:0};
    planets.map(function(p){return p.lon;}).concat([asc]).forEach(function(lon){
      const idx=signIndex(lon);
      el[ELEMENT[idx]]++;
      mo[MODAL[idx]]++;
    });
    return {elemente:toPct(el),modalitati:toPct(mo)};
  }

  function calcAspects(planets){
    const specs=[
      {a:0,orb:7,type:"conj"},
      {a:60,orb:4,type:"sext"},
      {a:90,orb:6,type:"square"},
      {a:120,orb:6,type:"trine"},
      {a:180,orb:7,type:"opp"}
    ];
    const out=[];
    for(let i=0;i&lt;planets.length;i++){
      for(let j=i+1;j&lt;planets.length;j++){
        let d=Math.abs(norm(planets[i].lon-planets[j].lon));
        if(d&gt;180)d=360-d;
        let best=null;
        specs.forEach(function(s){
          const delta=Math.abs(d-s.a);
          if(delta&lt;=s.orb &amp;&amp; (!best || delta&lt;best.delta)){
            best={type:s.type,delta:delta};
          }
        });
        if(best) out.push({i:i,j:j,type:best.type});
      }
    }
    return out;
  }

  function wheelAngle(lon,asc){
    return rad(180-norm(lon-asc));
  }

  function roundedRect(ctx,x,y,w,h,r,stroke,fill,lineWidth){
    ctx.beginPath();
    ctx.moveTo(x+r,y);
    ctx.arcTo(x+w,y,x+w,y+h,r);
    ctx.arcTo(x+w,y+h,x,y+h,r);
    ctx.arcTo(x,y+h,x,y,r);
    ctx.arcTo(x,y,x+w,y,r);
    if(fill){ctx.fillStyle=fill;ctx.fill();}
    if(stroke){ctx.strokeStyle=stroke;ctx.lineWidth=lineWidth||1;ctx.stroke();}
  }

  function wrapText(ctx,text,x,y,maxWidth,lineHeight,maxLines){
    const words=String(text).split(/\s+/);
    let line="", lines=[];
    for(let i=0;i&lt;words.length;i++){
      const test=line ? line+" "+words[i] : words[i];
      if(ctx.measureText(test).width&gt;maxWidth &amp;&amp; line){
        lines.push(line); line=words[i];
      } else line=test;
    }
    if(line)lines.push(line);
    if(maxLines &amp;&amp; lines.length&gt;maxLines){
      lines=lines.slice(0,maxLines);
      lines[maxLines-1]=lines[maxLines-1].replace(/[.,;:!?]*$/,"")+"...";
    }
    lines.forEach(function(l,idx){ctx.fillText(l,x,y+idx*lineHeight);});
    return y+lines.length*lineHeight;
  }

  function drawBar(ctx,x,y,w,pct,color){
    roundedRect(ctx,x,y,w,12,6,null,"#EEE4D2");
    roundedRect(ctx,x,y,w*Math.max(0,Math.min(100,pct))/100,12,6,null,color);
  }

  function drawWheelOnPage(ctx,meta,cx,cy,R){
    const gold="#B8912E",dark="#251A32",line="#D8C39A",soft="#EEE4D2",paper="#FBF8F2";
    function circle(r,color,w){
      ctx.beginPath();ctx.arc(cx,cy,r,0,Math.PI*2);
      ctx.strokeStyle=color;ctx.lineWidth=w;ctx.stroke();
    }

    circle(R,dark,2.4);
    circle(R-60,gold,1.2);
    circle(R-155,line,1.1);
    circle(R-275,line,1.15);

    // Inel zodiacal.
    for(let i=0;i&lt;12;i++){
      const lon=i*30;
      const a=wheelAngle(lon,meta.asc);
      const p1=point(cx,cy,R-60,a),p2=point(cx,cy,R,a);
      ctx.beginPath();ctx.moveTo(p1.x,p1.y);ctx.lineTo(p2.x,p2.y);
      ctx.strokeStyle=line;ctx.lineWidth=1;ctx.stroke();

      const gp=point(cx,cy,R-30,wheelAngle(lon+15,meta.asc));
      ctx.fillStyle=gold;
      ctx.font='34px "Segoe UI Symbol","Arial Unicode MS",Arial,sans-serif';
      ctx.textAlign="center";ctx.textBaseline="middle";
      ctx.fillText(ZODIAC_GLYPHS[i],gp.x,gp.y);
    }

    // Case Equal House.
    for(let h=0;h&lt;12;h++){
      const cusp=norm(meta.asc+h*30);
      const a=wheelAngle(cusp,meta.asc);
      const p1=point(cx,cy,R-275,a),p2=point(cx,cy,R-60,a);
      ctx.beginPath();ctx.moveTo(p1.x,p1.y);ctx.lineTo(p2.x,p2.y);
      ctx.strokeStyle=(h===0||h===6)?dark:'#D5C29C';
      ctx.lineWidth=(h===0||h===6)?2.5:1.35;ctx.stroke();

      const hp=point(cx,cy,R-226,wheelAngle(cusp+15,meta.asc));
      ctx.fillStyle=dark;ctx.font='bold 33px Arial,Helvetica,sans-serif';
      ctx.fillText(String(h+1),hp.x,hp.y);
    }

    // Axe MC/IC.
    [meta.mc,norm(meta.mc+180)].forEach(function(lon,idx){
      const a=wheelAngle(lon,meta.asc);
      const p1=point(cx,cy,R-275,a),p2=point(cx,cy,R+3,a);
      ctx.beginPath();ctx.moveTo(p1.x,p1.y);ctx.lineTo(p2.x,p2.y);
      ctx.strokeStyle=dark;ctx.lineWidth=1.8;ctx.stroke();
      const lp=point(cx,cy,R+25,a);
      ctx.fillStyle=dark;ctx.font='bold 19px Arial,Helvetica,sans-serif';
      ctx.fillText(idx===0?"MC":"IC",lp.x,lp.y);
    });

    ctx.fillStyle=dark;ctx.font='bold 33px Arial,Helvetica,sans-serif';
    ctx.fillText("ASC",cx-R-35,cy);
    ctx.fillText("DSC",cx+R+35,cy);

    // Aspectele sunt calculate in continuare, dar nu le desenam pe pagina principala.
    // Scopul este o harta mai curata si mai usor de citit in PDF.

    // Pozitii planetare: nivele alternante + linii subtiri catre pozitia reala.
    const sorted=meta.planete.map(function(p,i){return {i:i,lon:norm(p.lon)};})
      .sort(function(a,b){return a.lon-b.lon;});
    const radial={};
    let cluster=[];
    function flush(){
      const radii=[R-92,R-132,R-172,R-212,R-68];
      cluster.forEach(function(v,k){radial[v.i]=radii[k%radii.length];});
      cluster=[];
    }
    sorted.forEach(function(v){
      if(!cluster.length){cluster=[v];return;}
      let d=v.lon-cluster[cluster.length-1].lon;
      if(d&lt;0)d+=360;
      if(d&lt;12)cluster.push(v);else{flush();cluster=[v];}
    });
    flush();

    meta.planete.forEach(function(p,i){
      const a=wheelAngle(p.lon,meta.asc);
      const rr=radial[i]||R-112;
      const actual=point(cx,cy,R-64,a),pp=point(cx,cy,rr,a);

      ctx.beginPath();ctx.moveTo(actual.x,actual.y);ctx.lineTo(pp.x,pp.y);
      ctx.strokeStyle="#CDBA91";ctx.lineWidth=1;ctx.stroke();

      ctx.fillStyle=paper;
      ctx.beginPath();
      ctx.arc(pp.x,pp.y,32,0,Math.PI*2);
      ctx.fill();

      ctx.fillStyle=dark;
      ctx.font='40px "Segoe UI Symbol","Arial Unicode MS",Arial,sans-serif';
      ctx.fillText(p.glyph,pp.x,pp.y-5);

      const deg=Math.floor(degreeInSign(p.lon));
      let min=Math.round((degreeInSign(p.lon)-deg)*60);
      if(min===60)min=59;
      ctx.font='bold 15px Arial,Helvetica,sans-serif';
      ctx.fillText(
        String(deg)+DEG+String(min).padStart(2,"0")+PRIME,
        pp.x,
        pp.y+25
      );
    });

    // Centru curat - ornament desenat geometric, fara caracter Unicode.
    circle(48,gold,1.2);
    ctx.fillStyle=gold;
    ctx.beginPath();
    ctx.moveTo(cx,cy-9);
    ctx.lineTo(cx+9,cy);
    ctx.lineTo(cx,cy+9);
    ctx.lineTo(cx-9,cy);
    ctx.closePath();
    ctx.fill();
  }

  function drawReportPage(meta){
    const c=document.createElement("canvas");
    c.width=1200;
    c.height=1990;

    const x=c.getContext("2d");
    const UI_FONT='Arial, Helvetica, sans-serif';
    const paper="#FBF8F2";
    const gold="#B8912E";
    const dark="#251A32";
    const text="#333333";
    const muted="#6F685F";
    const red="#C84F45";
    const green="#6F8743";
    const blue="#3F79B0";
    const water="#2B5E91";

    x.fillStyle=paper;
    x.fillRect(0,0,c.width,c.height);

    x.textAlign="center";
    x.textBaseline="middle";

    // HEADER
    x.fillStyle=dark;
    x.font='bold 58px Georgia,serif';
    x.fillText("ASTROGRAMA TA",600,70);

    x.fillStyle=gold;
    x.font='bold 30px Georgia,serif';
    x.fillText("HARTA NATALĂ",600,128);

    x.strokeStyle=gold;
    x.lineWidth=1.6;
    x.beginPath();
    x.moveTo(245,128);
    x.lineTo(410,128);
    x.stroke();
    x.beginPath();
    x.moveTo(790,128);
    x.lineTo(955,128);
    x.stroke();

    x.fillStyle=text;
    x.font='italic 25px Arial,Helvetica,sans-serif';
    wrapText(
      x,
      "Configurația planetară din momentul nașterii, într-o reprezentare clară și ușor de urmărit.",
      600,
      170,
      840,
      34,
      2
    );

    // CERC MARE, MAI AERISIT
    drawWheelOnPage(
      x,
      meta,
      600,
      655,
      380
    );

    // PANOU PRINCIPAL: ELEMENTE + MODALITATI
    roundedRect(
      x,
      55,
      1160,
      1090,
      395,
      20,
      gold,
      "#FCF9F3",
      1.2
    );

    x.strokeStyle="#DCC9A7";
    x.lineWidth=1;
    x.beginPath();
    x.moveTo(600,1190);
    x.lineTo(600,1525);
    x.stroke();

    // ELEMENTE
    x.fillStyle=gold;
    x.font='bold 38px Arial,Helvetica,sans-serif';
    x.fillText("ELEMENTE",320,1215);

    const el=meta.distributie.elemente;
    const erows=[
      ["Foc",el.Foc,red],
      ["Pământ",el.Pamant,green],
      ["Aer",el.Aer,blue],
      ["Apă",el.Apa,water]
    ];

    erows.forEach(function(r,i){
      const yy=1285+i*58;

      x.textAlign="left";
      x.fillStyle=dark;
      x.font='bold 31px Arial,Helvetica,sans-serif';
      x.fillText(r[0],100,yy);

      drawBar(
        x,
        245,
        yy-7,
        230,
        r[1],
        r[2]
      );

      x.textAlign="right";
      x.fillStyle=dark;
      x.font='bold 31px Arial,Helvetica,sans-serif';
      x.fillText(r[1]+"%",530,yy);
    });

    // MODALITATI
    x.textAlign="center";
    x.fillStyle=gold;
    x.font='bold 38px Arial,Helvetica,sans-serif';
    x.fillText("MODALITĂȚI",875,1215);

    const mo=meta.distributie.modalitati;
    const mrows=[
      ["Cardinal", "inițiază", mo.Cardinal, gold],
      ["Fix", "stabilizează", mo.Fix, green],
      ["Mutabil", "se adaptează", mo.Mutabil, blue]
    ];

    mrows.forEach(function(r,i){
      const yy=1290+i*77;

      x.textAlign="left";
      x.fillStyle=dark;
      x.font='bold 33px Arial,Helvetica,sans-serif';
      x.fillText(r[0],650,yy);

      x.fillStyle=muted;
      x.font='italic 23px Arial,Helvetica,sans-serif';
      x.fillText("("+r[1]+")",650,yy+23);

      drawBar(
        x,
        860,
        yy-7,
        170,
        r[2],
        r[3]
      );

      x.textAlign="right";
      x.fillStyle=dark;
      x.font='bold 33px Arial,Helvetica,sans-serif';
      x.fillText(r[2]+"%",1100,yy);
    });

    // INTERPRETARI SCURTE - doar dominantele
    function dominant(obj,ordine){
      let k=ordine[0];
      ordine.forEach(function(c){
        if(Number(obj[c])&gt;Number(obj[k]))k=c;
      });
      return k;
    }

    const domEl=dominant(el,["Foc","Pamant","Aer","Apa"]);
    const domMo=dominant(mo,["Cardinal","Fix","Mutabil"]);

    const elText={
      Foc:"energie, inițiativă și curaj",
      Pamant:"stabilitate, pragmatism și orientare spre rezultate concrete",
      Aer:"gândire, comunicare și curiozitate",
      Apa:"sensibilitate, intuiție și profunzime emoțională"
    };

    const moText={
      Cardinal:"porneste lucrurile si ia initiativa",
      Fix:"mentine directia, consolideaza si construieste in timp",
      Mutabil:"se adapteaza, schimba perspectiva si gaseste alternative"
    };

    roundedRect(
      x,
      55,
      1595,
      1090,
      245,
      18,
      gold,
      "#FCF9F3",
      1.2
    );

    x.textAlign="left";
    x.fillStyle=gold;
    x.font='bold 33px Arial,Helvetica,sans-serif';
    x.fillText("DOMINANTĂ ELEMENTARĂ",90,1650);

    x.fillStyle=dark;
    x.font='bold 33px Arial,Helvetica,sans-serif';
    x.fillText(domEl,90,1720);

    x.fillStyle=text;
    x.font='28px Arial,Helvetica,sans-serif';
    wrapText(
      x,
      elText[domEl],
      235,
      1720,
      360,
      31,
      3
    );

    x.fillStyle=gold;
    x.font='bold 33px Arial,Helvetica,sans-serif';
    x.fillText("MODALITATE DOMINANTĂ",650,1650);

    x.fillStyle=dark;
    x.font='bold 33px Arial,Helvetica,sans-serif';
    x.fillText(domMo,650,1720);

    x.fillStyle=text;
    x.font='28px Arial,Helvetica,sans-serif';
    wrapText(
      x,
      moText[domMo],
      830,
      1720,
      315,
      31,
      3
    );

    // FOOTER
    x.textAlign="center";
    x.strokeStyle=gold;
    x.lineWidth=1;
    x.beginPath();
    x.moveTo(355,1938);
    x.lineTo(510,1938);
    x.stroke();
    x.beginPath();
    x.moveTo(690,1938);
    x.lineTo(845,1938);
    x.stroke();

    x.fillStyle=dark;
    x.font='bold 15px Arial,Helvetica,sans-serif';
    x.fillText("PAGINA LIPSĂ",600,1938);

    return c.toDataURL(
      "image/jpeg",
      0.92
    );
  }

  function build(data,hh,mm,lat,lng){
    const utc=bucharestLocalToUtc(data,hh,mm);
    const angles=calcAngles(utc,lat,lng);
    const planets=PLANETS.map(function(p){
      return {nume:p[0],glyph:p[1],body:p[2],lon:geoLongitude(p[2],utc)};
    });

    const meta={
      versiune:3,
      sistemCase:"Equal House",
      asc:angles.asc,
      ascendent:signName(angles.asc),
      mc:angles.mc,
      planete:planets,
      distributie:calcDistributions(planets,angles.asc)
    };
    meta.aspecte=calcAspects(planets);

    return {meta:meta,image:drawReportPage(meta)};
  }

  return {build:build,signName:signName};
})();
&lt;/script&gt;


&lt;script&gt;
/* ==========================================================
   PAGINA LIPSA - PROMO ANTI-CACHE
   Fiecare verificare primeste o adresa unica, astfel incat
   Chrome sa nu poata reutiliza un raspuns PROMO vechi.
   ========================================================== */
window.PLAntiCacheToken = function() {
  return (
    String(Date.now()) +
    "_" +
    Math.random().toString(36).slice(2) +
    "_" +
    String(
      window.performance &amp;&amp; performance.now
        ? Math.round(performance.now() * 1000)
        : 0
    )
  );
};
&lt;/script&gt;

&lt;script&gt;

// ==========================================================
// NAVIGATIE PAGINA PRINCIPALA
// ==========================================================

window.deschideSectiunePL =
function(tip) {

  if (
    window.PLAdmin
  ) {
    window.PLAdmin.apply();
  }

  const home =
    document.getElementById(
      "paginaPrincipala"
    );

  const astro =
    document.getElementById(
      "sectiuneAstrograma"
    );

  const compat =
    document.getElementById(
      "sectiuneCompatibilitate"
    );

  const sesiune =
    document.getElementById(
      "sectiuneSesiune"
    );

  const descopera =
    document.getElementById(
      "sectiuneDescopera"
    );

  const prognoza =
    document.getElementById(
      "sectiunePrognoza"
    );


  if (home) {
    home.style.display =
      "none";
  }


  if (astro) {
    astro.style.display =
      "none";
  }


  if (compat) {
    compat.style.display =
      "none";
  }


  if (sesiune) {
    sesiune.style.display =
      "none";
  }

  if (descopera) {
    descopera.style.display =
      "none";
  }

  if (prognoza) {
    prognoza.style.display =
      "none";
  }

  if (
    tip === "prognoza" &amp;&amp;
    prognoza
  ) {
    prognoza.style.display =
      "block";

    if (typeof window.PLResetPrognoza === "function") {
      window.PLResetPrognoza();
    }
  }


  if (
    tip === "astro" &amp;&amp;
    astro
  ) {

    astro.style.display =
      "block";

    // Resetam vizual fluxul ASTRO de fiecare data cand utilizatorul
    // intra din meniul principal, inclusiv dupa un raport deja generat.
    const formularAstroNav =
      document.getElementById(
        "formularContent"
      );

    const rezultatAstroNav =
      document.getElementById(
        "resultContent"
      );

    const formularAstroFormNav =
      document.getElementById(
        "astroForm"
      );

    const mesajAstroNav =
      document.getElementById(
        "mesajFormular"
      );

    const butonAstroNav =
      document.getElementById(
        "submitButton"
      );

    if (formularAstroNav) {
      formularAstroNav.style.display =
        "block";
    }

    if (rezultatAstroNav) {
      rezultatAstroNav.style.display =
        "none";

      rezultatAstroNav.innerHTML =
        "";
    }

    if (formularAstroFormNav) {
      formularAstroFormNav.style.display =
        "block";

      // Reset complet al formularului pentru o noua astrograma.
      formularAstroFormNav.reset();

      // Golim explicit campurile ascunse generate la rularea precedenta.
      const campuriResetAstro = [
        "requestId",
        "zodieFinal",
        "ascendentFinal",
        "cifraDestinuluiFinal",
        "grupaVarstaFinal",
        "dispozitivFinal",
        "sistemFinal",
        "browserFinal",
        "limbaFinal",
        "hartaDateFinal",
        "hartaImagineFinal"
      ];

      campuriResetAstro.forEach(function(id) {
        const camp =
          document.getElementById(id);

        if (camp) {
          camp.value = "";
        }
      });

      // Resetam si campurile vizibile in mod explicit, pentru browserele
      // care pot restaura automat valorile unui formular.
      const campuriVizibileReset = [
        "animal",
        "dataNasterii",
        "sex",
        "oraHH",
        "oraMM",
        "oras",
        "sursa",
        "codAcces"
      ];

      campuriVizibileReset.forEach(function(id) {
        const camp =
          document.getElementById(id);

        if (camp) {
          camp.value = "";
        }
      });

      // Codul promo va fi completat din nou automat daca promotia este activa.
      const codAstroReset =
        document.getElementById(
          "codAcces"
        );

      if (codAstroReset) {
        codAstroReset.readOnly =
          false;

        codAstroReset.setAttribute(
          "inputmode",
          "numeric"
        );
      }

      const promoAstroReset =
        document.getElementById(
          "promoStatus"
        );

      if (promoAstroReset) {
        promoAstroReset.style.display =
          "none";
      }

      const hintAstroReset =
        document.getElementById(
          "codHint"
        );

      if (hintAstroReset) {
        hintAstroReset.textContent =
          "Introdu codul primit de la Pagina Lipsa. Fiecare cod poate fi folosit o singura data.";
      }
    }

    if (mesajAstroNav) {
      mesajAstroNav.style.display =
        "block";

      mesajAstroNav.textContent =
        "";
    }

    if (butonAstroNav) {
      butonAstroNav.disabled =
        false;

      butonAstroNav.style.display =
        "block";

      butonAstroNav.textContent =
        "VREAU INTERPRETAREA MEA";
    }

    if (
      typeof window.PLVerificaPromoAstro ===
      "function"
    ) {
      window.PLVerificaPromoAstro();
    }

  }


  if (
    tip === "compatibilitate" &amp;&amp;
    compat
  ) {

    compat.style.display =
      "block";


    // Resetam vizual fluxul CUPLU de fiecare data cand utilizatorul
    // intra din meniul principal, inclusiv dupa un raport deja generat.
    const formularCompatNav =
      document.getElementById(
        "compatForm"
      );

    const rezultatCompatNav =
      document.getElementById(
        "compatResultContent"
      );

    const compatHeadNav =
      document.querySelector(
        "#compatCard .compat-head"
      );

    const mesajCompatNav =
      document.getElementById(
        "compatMesaj"
      );

    const butonCompatNav =
      document.getElementById(
        "compatSubmitButton"
      );


    if (formularCompatNav) {
      // Fiecare intrare in zona de cuplu porneste de la un formular curat.
      // Astfel nu raman datele persoanelor din sesiunea anterioara.
      formularCompatNav.reset();

      formularCompatNav.style.display =
        "block";
    }


    if (rezultatCompatNav) {

      rezultatCompatNav.style.display =
        "none";

      rezultatCompatNav.innerHTML =
        "";

    }


    if (compatHeadNav) {
      compatHeadNav.style.display =
        "block";
    }


    if (mesajCompatNav) {

      mesajCompatNav.style.display =
        "block";

      mesajCompatNav.textContent =
        "";

    }


    if (butonCompatNav) {

      butonCompatNav.disabled =
        false;

      butonCompatNav.style.display =
        "block";

      butonCompatNav.textContent =
        "GENEREAZA COMPATIBILITATEA";

    }


    if (
      typeof window.PLVerificaPromoCuplu ===
      "function"
    ) {
      window.PLVerificaPromoCuplu();
    }

  }


  if (
    tip === "sesiune" &amp;&amp;
    sesiune
  ) {

    sesiune.style.display =
      "block";

  }

  if (
    tip === "descopera" &amp;&amp;
    descopera
  ) {

    descopera.style.display =
      "block";

  }


  window.scrollTo(
    0,
    0
  );

};


window.inapoiPaginaPrincipalaPL =
function() {

  if (
    window.PLAdmin
  ) {
    window.PLAdmin.apply();
  }

  const home =
    document.getElementById(
      "paginaPrincipala"
    );

  const astro =
    document.getElementById(
      "sectiuneAstrograma"
    );

  const compat =
    document.getElementById(
      "sectiuneCompatibilitate"
    );

  const sesiune =
    document.getElementById(
      "sectiuneSesiune"
    );

  const descopera =
    document.getElementById(
      "sectiuneDescopera"
    );

  const prognoza =
    document.getElementById(
      "sectiunePrognoza"
    );


  if (astro) {
    astro.style.display =
      "none";
  }


  if (compat) {
    compat.style.display =
      "none";

    // Stergem datele introduse in compatibilitate cand utilizatorul
    // revine la pagina principala.
    const formularCompatReset =
      document.getElementById(
        "compatForm"
      );

    if (formularCompatReset) {
      formularCompatReset.reset();
    }

    const rezultatCompatReset =
      document.getElementById(
        "compatResultContent"
      );

    if (rezultatCompatReset) {
      rezultatCompatReset.style.display =
        "none";
      rezultatCompatReset.innerHTML =
        "";
    }

    const mesajCompatReset =
      document.getElementById(
        "compatMesaj"
      );

    if (mesajCompatReset) {
      mesajCompatReset.textContent =
        "";
    }

    const butonCompatReset =
      document.getElementById(
        "compatSubmitButton"
      );

    if (butonCompatReset) {
      butonCompatReset.disabled =
        false;
      butonCompatReset.style.display =
        "block";
      butonCompatReset.textContent =
        "GENEREAZA COMPATIBILITATEA";
    }
  }


  if (sesiune) {
    sesiune.style.display =
      "none";
  }

  if (descopera) {
    descopera.style.display =
      "none";
  }

  if (prognoza) {
    prognoza.style.display =
      "none";
  }


  if (home) {
    home.style.display =
      "block";
  }


  window.scrollTo(
    0,
    0
  );

};


// ==========================================================
// FORMULAR COMPATIBILITATE
// FLUX REAL: CALCUL + COD CUPLU + PDF COMPLET
// ==========================================================

(function() {

  const data1 =
    document.getElementById(
      "compatData1"
    );

  const data2 =
    document.getElementById(
      "compatData2"
    );

  const codCompat =
    document.getElementById(
      "compatCodAcces"
    );

  const formularCompat =
    document.getElementById(
      "compatForm"
    );

  const mesajCompat =
    document.getElementById(
      "compatMesaj"
    );

  const compatResultContent =
    document.getElementById(
      "compatResultContent"
    );

  const compatPromoStatus =
    document.getElementById(
      "compatPromoStatus"
    );

  const compatCodHint =
    document.getElementById(
      "compatCodHint"
    );

  const COMPAT_STATUS_URL =
    "https://script.google.com/macros/s/AKfycbzJK9msWoF8yhTNHj5IVrfIV3a9l9e4Nf3Tu_FVAQn1qiwkAM4Q3e25lh-b0RG3PrKx/exec";

  let compatPromoActiv =
    false;


  const oraHH1 =
    document.getElementById(
      "compatOraHH1"
    );

  const oraMM1 =
    document.getElementById(
      "compatOraMM1"
    );

  const oraHH2 =
    document.getElementById(
      "compatOraHH2"
    );

  const oraMM2 =
    document.getElementById(
      "compatOraMM2"
    );


  function populeazaOra(
    selectOra,
    selectMinute
  ) {

    for (
      let i = 0;
      i &lt; 24;
      i++
    ) {

      const valoare =
        String(i)
          .padStart(
            2,
            "0"
          );


      const opt =
        document.createElement(
          "option"
        );


      opt.value =
        valoare;


      opt.textContent =
        valoare;


      selectOra.appendChild(
        opt
      );

    }


    for (
      let i = 0;
      i &lt; 60;
      i += 5
    ) {

      const valoare =
        String(i)
          .padStart(
            2,
            "0"
          );


      const opt =
        document.createElement(
          "option"
        );


      opt.value =
        valoare;


      opt.textContent =
        valoare;


      selectMinute.appendChild(
        opt
      );

    }

  }


  populeazaOra(
    oraHH1,
    oraMM1
  );


  populeazaOra(
    oraHH2,
    oraMM2
  );


  function formateazaData(
    input
  ) {

    input.addEventListener(
      "input",
      function() {

        let cifre =
          this.value
            .replace(
              /\D/g,
              ""
            )
            .slice(
              0,
              8
            );


        if (
          cifre.length &lt;= 2
        ) {

          this.value =
            cifre;

        }

        else if (
          cifre.length &lt;= 4
        ) {

          this.value =
            cifre.slice(
              0,
              2
            ) +
            "." +
            cifre.slice(
              2
            );

        }

        else {

          this.value =
            cifre.slice(
              0,
              2
            ) +
            "." +
            cifre.slice(
              2,
              4
            ) +
            "." +
            cifre.slice(
              4,
              8
            );

        }

      }
    );

  }


  formateazaData(
    data1
  );


  formateazaData(
    data2
  );


  codCompat.addEventListener(
    "input",
    function() {

      if (
        compatPromoActiv
      ) {

        this.value =
          "PROMO";

        return;

      }

      let cifre =
        this.value
          .replace(
            /\D/g,
            ""
          )
          .slice(
            0,
            9
          );


      if (
        cifre.length &lt;= 4
      ) {

        this.value =
          cifre;

      }

      else if (
        cifre.length &lt;= 8
      ) {

        this.value =
          cifre.slice(
            0,
            4
          ) +
          "-" +
          cifre.slice(
            4,
            8
          );

      }

      else {

        this.value =
          cifre.slice(
            0,
            4
          ) +
          "-" +
          cifre.slice(
            4,
            8
          ) +
          "-" +
          cifre.slice(
            8,
            9
          );

      }

    }
  );



  function verificaPromoCompatibilitate() {

    return new Promise(
      function(resolve) {

        const callbackName =
          "compatPromoCallback_" +
          Date.now() +
          "_" +
          Math.floor(
            Math.random() * 100000
          );

        let script =
          null;

        let terminat =
          false;

        function curata() {

          try {
            delete window[
              callbackName
            ];
          }
          catch (e) {
            window[
              callbackName
            ] = undefined;
          }

          if (
            script &amp;&amp;
            script.parentNode
          ) {

            script.parentNode.removeChild(
              script
            );

          }

        }


        window[
          callbackName
        ] =
          function(raspuns) {

            terminat =
              true;

            compatPromoActiv =
              Boolean(
                raspuns &amp;&amp;
                raspuns.succes === true &amp;&amp;
                raspuns.promoActiv === true
              );

            if (
              compatPromoActiv
            ) {

              codCompat.value =
                "PROMO";

              codCompat.readOnly =
                true;

              codCompat.removeAttribute(
                "inputmode"
              );

              if (compatPromoStatus) {
                compatPromoStatus.style.display =
                  "block";
              }

              if (compatCodHint) {
                compatCodHint.textContent =
                  "Acces promotional activ pentru Compatibilitate in Cuplu.";
              }

            }
            else {

              codCompat.readOnly =
                false;

              codCompat.setAttribute(
                "inputmode",
                "numeric"
              );

              if (
                codCompat.value === "PROMO"
              ) {
                codCompat.value = "";
              }

              if (compatPromoStatus) {
                compatPromoStatus.style.display =
                  "none";
              }

            }

            curata();
            resolve(
              compatPromoActiv
            );

          };


        script =
          document.createElement(
            "script"
          );

        script.src =
          COMPAT_STATUS_URL +
          "?authuser=0&amp;action=promo" +
          "&amp;force=1" +
          "&amp;tip=CUPLU" +
          "&amp;callback=" +
          encodeURIComponent(
            callbackName
          ) +
          "&amp;_plcb=" +
          encodeURIComponent(
            window.PLAntiCacheToken
              ? window.PLAntiCacheToken()
              : String(Date.now())
          ) +
          "&amp;_rnd=" +
          Math.random();

        script.onerror =
          function() {

            terminat =
              true;

            compatPromoActiv =
              false;

            if (compatPromoStatus) {
              compatPromoStatus.style.display =
                "none";
            }

            curata();
            resolve(
              false
            );

          };

        document.body.appendChild(
          script
        );

        setTimeout(
          function() {

            if (
              !terminat
            ) {

              compatPromoActiv =
                false;

              if (compatPromoStatus) {
                compatPromoStatus.style.display =
                  "none";
              }

              curata();
              resolve(
                false
              );

            }

          },
          7000
        );

      }
    );

  }


  async function verificaPromoCompatibilitateRobust() {
    for (let incercare = 0; incercare &lt; 3; incercare++) {
      try {
        const activ = await verificaPromoCompatibilitate();
        if (activ) {
          return true;
        }
      }
      catch (e) {}
      if (incercare &lt; 2) {
        await new Promise(function(resolve) {
          setTimeout(resolve, 350 + incercare * 250);
        });
      }
    }
    return false;
  }

  window.PLVerificaPromoCuplu =
    verificaPromoCompatibilitateRobust;

  verificaPromoCompatibilitateRobust();

  function dataValida(
    valoare
  ) {

    const match =
      String(
        valoare || ""
      ).match(
        /^(\d{2})\.(\d{2})\.(\d{4})$/
      );


    if (!match) {
      return false;
    }


    const zi =
      Number(
        match[1]
      );


    const luna =
      Number(
        match[2]
      );


    const an =
      Number(
        match[3]
      );


    const verificare =
      new Date(
        an,
        luna - 1,
        zi
      );


    return (
      verificare.getFullYear() === an &amp;&amp;
      verificare.getMonth() === luna - 1 &amp;&amp;
      verificare.getDate() === zi &amp;&amp;
      verificare &lt;= new Date()
    );

  }


  formularCompat.addEventListener(
    "submit",
    async function(event) {

      event.preventDefault();


      mesajCompat.textContent =
        "";


      const animal1 =
        document.getElementById(
          "compatAnimal1"
        ).value;


      const sex1 =
        document.getElementById(
          "compatSex1"
        ).value;


      const oras1 =
        String(
          document.getElementById(
            "compatOras1"
          ).value || ""
        ).trim();


      const animal2 =
        document.getElementById(
          "compatAnimal2"
        ).value;


      const sex2 =
        document.getElementById(
          "compatSex2"
        ).value;


      const oras2 =
        String(
          document.getElementById(
            "compatOras2"
          ).value || ""
        ).trim();


      const sursa =
        document.getElementById(
          "compatSursa"
        ).value;

      // Folosim statusul promo deja verificat la deschiderea paginii.
      // Nu mai facem aici o a doua verificare de retea, pentru a evita
      // intarzierea dintre click si afisarea starii de procesare.
      const cod =
        compatPromoActiv
          ? "PROMO"
          : String(
              codCompat.value || ""
            ).trim();


      if (!animal1) {

        mesajCompat.textContent =
          "Selecteaza animalul pentru Persoana 1.";

        return;

      }


      if (
        !dataValida(
          data1.value
        )
      ) {

        mesajCompat.textContent =
          "Introdu o data valida pentru Persoana 1.";

        data1.focus();

        return;

      }


      if (!sex1) {

        mesajCompat.textContent =
          "Selecteaza sexul pentru Persoana 1.";

        return;

      }


      if (
        oraHH1.value === "" ||
        oraMM1.value === ""
      ) {

        mesajCompat.textContent =
          "Selecteaza ora pentru Persoana 1.";

        return;

      }


      if (
        oras1.length &lt; 2
      ) {

        mesajCompat.textContent =
          "Introdu localitatea pentru Persoana 1.";

        return;

      }


      if (!animal2) {

        mesajCompat.textContent =
          "Selecteaza animalul pentru Persoana 2.";

        return;

      }


      if (
        !dataValida(
          data2.value
        )
      ) {

        mesajCompat.textContent =
          "Introdu o data valida pentru Persoana 2.";

        data2.focus();

        return;

      }


      if (!sex2) {

        mesajCompat.textContent =
          "Selecteaza sexul pentru Persoana 2.";

        return;

      }


      if (
        oraHH2.value === "" ||
        oraMM2.value === ""
      ) {

        mesajCompat.textContent =
          "Selecteaza ora pentru Persoana 2.";

        return;

      }


      if (
        oras2.length &lt; 2
      ) {

        mesajCompat.textContent =
          "Introdu localitatea pentru Persoana 2.";

        return;

      }


      if (!sursa) {

        mesajCompat.textContent =
          "Selecteaza cum ai descoperit Pagina Lipsa.";

        return;

      }


      const adminActiv =
        !!(
          window.PLAdmin &amp;&amp;
          window.PLAdmin.isActive()
        );


      if (
        !adminActiv
      ) {

        if (
          compatPromoActiv
        ) {

          codCompat.value =
            "PROMO";

        }
        else if (
          !/^\d{4}-\d{4}-2$/.test(
            cod
          )
        ) {

          mesajCompat.textContent =
            "Introdu un cod Premium valid in formatul 1234-5678-2.";

          codCompat.focus();

          return;

        }

      }


      const H =
        window.PLCompatHelpers;

      if (!H) {

        mesajCompat.textContent =
          "Serviciul de calcul nu este disponibil. Reincarca pagina.";

        return;

      }


      const butonCompat =
        document.getElementById(
          "compatSubmitButton"
        );

      // Feedback imediat dupa click, inainte de orice apel de retea.
      butonCompat.disabled =
        true;

      butonCompat.style.display =
        "none";

      mesajCompat.innerHTML =
        '&lt;div class="pl-wait-main"&gt;' +
          'Calculam compatibilitatea si pregatim raportul complet...' +
        '&lt;/div&gt;' +
        '&lt;div class="pl-wait-box"&gt;' +
          'Te rugam sa ai putina rabdare. Pregatim interpretarea si PDF-ul tau personalizat.' +
        '&lt;/div&gt;';

      // Lasam browserul sa afiseze mesajul inainte de verificarea codului.
      await new Promise(function(resolve) {
        requestAnimationFrame(function() {
          requestAnimationFrame(resolve);
        });
      });

      if (
        !adminActiv
      ) {

        try {

          const verificareCodCuplu =
            await window.PLVerificaCodAcces(
              compatPromoActiv ? "PROMO" : cod,
              "CUPLU"
            );

          if (
            !verificareCodCuplu ||
            !verificareCodCuplu.ok
          ) {

            mesajCompat.textContent =
              verificareCodCuplu &amp;&amp;
              verificareCodCuplu.mesaj
                ? verificareCodCuplu.mesaj
                : "Codul de acces nu este valid.";

            butonCompat.disabled = false;
            butonCompat.style.display = "block";
            codCompat.focus();

            return;

          }

        }

        catch (eroareCod) {

          mesajCompat.textContent =
            eroareCod &amp;&amp;
            eroareCod.message
              ? eroareCod.message
              : "Nu am putut verifica momentan codul de acces. Incearca din nou.";

          butonCompat.disabled = false;
          butonCompat.style.display = "block";

          return;

        }

      }


      try {

        const d1 =
          H.valideazaDataText(
            data1.value
          );

        const d2 =
          H.valideazaDataText(
            data2.value
          );


        // Cele doua localitati se cauta in paralel, nu una dupa alta.
        const coordonate =
          await Promise.all([
            H.obtineCoordonate(oras1),
            H.obtineCoordonate(oras2)
          ]);

        const coord1 = coordonate[0];
        const coord2 = coordonate[1];


        const zodie1 =
          H.calculeazaZodieLocal(
            data1.value
          );

        const zodie2 =
          H.calculeazaZodieLocal(
            data2.value
          );


        const destin1 =
          H.calculeazaCifraDestinuluiLocal(
            data1.value
          );

        const destin2 =
          H.calculeazaCifraDestinuluiLocal(
            data2.value
          );


        const grupaVarsta1 =
          H.calculeazaGrupaVarsta(
            d1
          );

        const grupaVarsta2 =
          H.calculeazaGrupaVarsta(
            d2
          );


        const ascendent1 =
          H.calculeazaAscendent(
            d1,
            oraHH1.value,
            oraMM1.value,
            coord1.lat,
            coord1.lng
          );

        const ascendent2 =
          H.calculeazaAscendent(
            d2,
            oraHH2.value,
            oraMM2.value,
            coord2.lat,
            coord2.lng
          );


        let harta1 = null;
        let harta2 = null;
        try {
          harta1 = H.genereazaHartaNatala(d1, oraHH1.value, oraMM1.value, coord1.lat, coord1.lng);
          harta2 = H.genereazaHartaNatala(d2, oraHH2.value, oraMM2.value, coord2.lat, coord2.lng);
        }
        catch (eroareHarta) {
          console.warn("Hartile natale nu au putut fi calculate; raportul de cuplu continua.", eroareHarta);
        }


        const requestId =
          H.genereazaRequestId();


        const target =
          document.createElement(
            "iframe"
          );

        target.name =
          "compatTarget_" +
          requestId;

        target.style.display =
          "none";

        document.body.appendChild(
          target
        );


        const postForm =
          document.createElement(
            "form"
          );

        postForm.method =
          "POST";

        postForm.action =
          "https://script.google.com/macros/s/AKfycbzJK9msWoF8yhTNHj5IVrfIV3a9l9e4Nf3Tu_FVAQn1qiwkAM4Q3e25lh-b0RG3PrKx/exec";

        postForm.target =
          target.name;

        postForm.style.display =
          "none";


        const campuri = {

          tipCerere:
            "CUPLU",

          requestId:
            requestId,

          codAcces:
            adminActiv
              ? ""
              : cod,

          adminToken:
            adminActiv &amp;&amp;
            window.PLAdmin
              ? window.PLAdmin.getToken()
              : "",

          animal1:
            animal1,

          sex1:
            sex1,

          grupaVarsta1:
            grupaVarsta1,

          zodie1:
            zodie1,

          ascendent1:
            ascendent1,

          destin1:
            destin1,

          animal2:
            animal2,

          sex2:
            sex2,

          grupaVarsta2:
            grupaVarsta2,

          zodie2:
            zodie2,

          ascendent2:
            ascendent2,

          destin2:
            destin2,

          sursa:
            sursa,

          dispozitiv:
            H.detecteazaDispozitiv(),

          sistem:
            H.detecteazaSistem(),

          browser:
            H.detecteazaBrowser(),

          limba:
            String(
              navigator.language || ""
            ).slice(
              0,
              30
            ),

          hartaDate1:
            harta1 ? JSON.stringify(harta1.meta) : "",

          hartaImagine1:
            harta1 ? harta1.image : "",

          hartaDate2:
            harta2 ? JSON.stringify(harta2.meta) : "",

          hartaImagine2:
            harta2 ? harta2.image : "",

          honeypot:
            ""

        };


        Object.keys(
          campuri
        ).forEach(
          function(nume) {

            const input =
              document.createElement(
                "input"
              );

            input.type =
              "hidden";

            input.name =
              nume;

            input.value =
              String(
                campuri[nume]
              );

            postForm.appendChild(
              input
            );

          }
        );


        document.body.appendChild(
          postForm
        );

        postForm.submit();


        const rezultat =
          await H.asteaptaRezultat(
            requestId
          );


        postForm.remove();

        setTimeout(
          function() {

            target.remove();

          },
          1000
        );


        if (
          !rezultat.succes
        ) {

          throw new Error(
            rezultat.mesaj ||
            "Nu am putut genera raportul."
          );

        }


        // ==================================================
        // ECRANUL 2 - CUPLU
        // Folosim un container separat, exact ca la astrograma
        // individuala. Astfel rezultatul nu poate fi ascuns impreuna
        // cu formularul.
        // ==================================================

        formularCompat.style.display =
          "none";

        const compatHead =
          document.querySelector(
            "#compatCard .compat-head"
          );

        if (compatHead) {
          compatHead.style.display =
            "none";
        }

        mesajCompat.textContent =
          "";

        mesajCompat.style.display =
          "none";

        compatResultContent.style.display =
          "block";

        // Zona de sustinere identica cu rezultatul ASTROGRAMEI personale.
        const sustineUrl =
          "https://payhip.com/b/kY07K";

        compatResultContent.innerHTML =
          '&lt;div class="result-page"&gt;' +

            '&lt;div class="result-brand"&gt;' +
              'PAGINA LIPSA' +
            '&lt;/div&gt;' +

            '&lt;h2 class="result-title"&gt;' +
              'AI AVUT NOROC!' +
            '&lt;/h2&gt;' +

            '&lt;div class="result-circle"&gt;' +
              '&lt;span class="result-face"&gt;:)&lt;/span&gt;' +
            '&lt;/div&gt;' +

            '&lt;div class="result-line"&gt;&lt;/div&gt;' +

            '&lt;h3 class="result-subtitle"&gt;' +
              'Raportul vostru este pregatit.' +
            '&lt;/h3&gt;' +

            '&lt;p class="result-text"&gt;' +
              'Compatibilitatea voastra, impreuna cu cele doua astrograme individuale, a fost generata.' +
            '&lt;/p&gt;' +

            '&lt;p class="result-small"&gt;' +
              'Fisierul PDF este disponibil temporar. Salveaza-l pe dispozitivul tau daca vrei sa il pastrezi.' +
            '&lt;/p&gt;' +

            '&lt;a class="result-download" target="_blank" rel="noopener" href="' +
              rezultat.pdfUrl +
            '"&gt;' +
              'DESCARCA RAPORTUL COMPLET PDF' +
            '&lt;/a&gt;' +

            '&lt;p class="result-support-message pl-fapta-buna"&gt;' +
              'Uneori, o idee are nevoie doar de cineva care să creadă în ea. Susține proiectul Pagina Lipsă.' +
            '&lt;/p&gt;' +
            '&lt;a class="result-support" target="_blank" rel="noopener" href="' +
              sustineUrl +
            '"&gt;' +
              '♡ CUMPĂRĂ CARTEA' +
            '&lt;/a&gt;' +
            '&lt;a class="result-book-cover-link" target="_blank" rel="noopener" href="' +
              sustineUrl +
            '"&gt;' +
              '&lt;img class="result-book-cover" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcGkCFQzvzSlWod0-eas2hbeNmAejiqn-sQeQpFleUc8y5lS9ywVELMnvhHznnQXK1PUPwbOTqfsitqLSWVz1qBb8xNAaJgNpNubWZXuEbFOjQyaEFzU60etvvfJDMvYOAEk_NRzGa311G9_B5ZjcvzF9-77NVBNpm8Rfj2z7z23coxTJrG6uPyLNBd7o/s320/sclavul%20din%20oglinda%20cover.png" alt="Coperta cartii Sclavul din oglinda - Michael Dalit" loading="lazy" /&gt;' +
            '&lt;/a&gt;' +

          '&lt;/div&gt;';

        const compatCard =
          document.getElementById(
            "compatCard"
          );

        if (compatCard) {

          setTimeout(
            function() {

              compatCard.scrollIntoView({
                behavior: "auto",
                block: "start"
              });

            },
            100
          );

        }

      }

      catch (eroare) {

        mesajCompat.textContent =
          eroare &amp;&amp;
          eroare.message
            ? eroare.message
            : "A aparut o eroare. Incearca din nou.";

        butonCompat.disabled =
          false;

        butonCompat.style.display =
          "block";

        butonCompat.textContent =
          "GENEREAZA COMPATIBILITATEA";

      }

    }
  );

})();


// ==========================================================
// FLUXUL ACTUAL AL ASTROGRAMEI
// ==========================================================

(function() {

  const STATUS_URL =
    "https://script.google.com/macros/s/AKfycbzJK9msWoF8yhTNHj5IVrfIV3a9l9e4Nf3Tu_FVAQn1qiwkAM4Q3e25lh-b0RG3PrKx/exec";


  const formularContent =
    document.getElementById(
      "formularContent"
    );


  const resultContent =
    document.getElementById(
      "resultContent"
    );


  const formular =
    document.getElementById(
      "astroForm"
    );


  const mesaj =
    document.getElementById(
      "mesajFormular"
    );


  const buton =
    document.getElementById(
      "submitButton"
    );


  const dataInput =
    document.getElementById(
      "dataNasterii"
    );


  const orasInput =
    document.getElementById(
      "oras"
    );


  const codInput =
    document.getElementById(
      "codAcces"
    );


  const promoStatus =
    document.getElementById(
      "promoStatus"
    );


  const codHint =
    document.getElementById(
      "codHint"
    );


  const selectOra =
    document.getElementById(
      "oraHH"
    );


  const selectMinute =
    document.getElementById(
      "oraMM"
    );


  let promoActiv =
    false;


  for (
    let i = 0;
    i &lt; 24;
    i++
  ) {

    const valoare =
      String(i)
        .padStart(
          2,
          "0"
        );


    const optiune =
      document.createElement(
        "option"
      );


    optiune.value =
      valoare;


    optiune.textContent =
      valoare;


    selectOra.appendChild(
      optiune
    );

  }


  for (
    let i = 0;
    i &lt; 60;
    i += 5
  ) {

    const valoare =
      String(i)
        .padStart(
          2,
          "0"
        );


    const optiune =
      document.createElement(
        "option"
      );


    optiune.value =
      valoare;


    optiune.textContent =
      valoare;


    selectMinute.appendChild(
      optiune
    );

  }


  dataInput.addEventListener(
    "input",
    function() {

      let cifre =
        this.value
          .replace(
            /\D/g,
            ""
          )
          .slice(
            0,
            8
          );


      if (
        cifre.length &lt;= 2
      ) {

        this.value =
          cifre;

      }

      else if (
        cifre.length &lt;= 4
      ) {

        this.value =
          cifre.slice(
            0,
            2
          ) +
          "." +
          cifre.slice(
            2
          );

      }

      else {

        this.value =
          cifre.slice(
            0,
            2
          ) +
          "." +
          cifre.slice(
            2,
            4
          ) +
          "." +
          cifre.slice(
            4,
            8
          );

      }

    }
  );


  codInput.addEventListener(
    "input",
    function() {

      if (
        promoActiv
      ) {

        this.value =
          "PROMO";

        return;

      }


      let cifre =
        this.value
          .replace(
            /\D/g,
            ""
          )
          .slice(
            0,
            9
          );


      if (
        cifre.length &lt;= 4
      ) {

        this.value =
          cifre;

      }

      else if (
        cifre.length &lt;= 8
      ) {

        this.value =
          cifre.slice(
            0,
            4
          ) +
          "-" +
          cifre.slice(
            4,
            8
          );

      }

      else {

        this.value =
          cifre.slice(
            0,
            4
          ) +
          "-" +
          cifre.slice(
            4,
            8
          ) +
          "-" +
          cifre.slice(
            8,
            9
          );

      }

    }
  );


  function verificaPromo() {

    return new Promise(
      function(resolve) {

        const callbackName =
          "paginaLipsaPromo_" +
          Date.now()
            .toString(36) +
          "_" +
          Math.random()
            .toString(36)
            .substring(
              2,
              8
            );


        let script =
          null;


        let terminat =
          false;


        function curata() {

          if (
            terminat
          ) {

            return;

          }


          terminat =
            true;


          try {

            delete window[
              callbackName
            ];

          }

          catch(e) {}


          if (
            script &amp;&amp;
            script.parentNode
          ) {

            script.parentNode
              .removeChild(
                script
              );

          }

        }


        window[
          callbackName
        ] =
          function(raspuns) {

            promoActiv =
              Boolean(
                raspuns &amp;&amp;
                raspuns.succes === true &amp;&amp;
                raspuns.promoActiv === true
              );


            if (
              promoActiv
            ) {

              codInput.value =
                "PROMO";


              codInput.readOnly =
                true;


              codInput.removeAttribute(
                "inputmode"
              );


              promoStatus.style.display =
                "block";


              codHint.textContent =
                "Promotia este activa. Accesul a fost completat automat.";

            }

            else {

              if (
                String(
                  codInput.value
                ).toUpperCase() ===
                "PROMO"
              ) {

                codInput.value =
                  "";

              }


              codInput.readOnly =
                false;


              codInput.setAttribute(
                "inputmode",
                "numeric"
              );


              promoStatus.style.display =
                "none";


              codHint.textContent =
                "Introdu codul primit de la Pagina Lipsa. Fiecare cod poate fi folosit o singura data.";

            }


            curata();

            resolve(
              promoActiv
            );

          };


        script =
          document.createElement(
            "script"
          );


        script.src =
          STATUS_URL +
          "?authuser=0&amp;action=promo" +
          "&amp;force=1" +
          "&amp;callback=" +
          encodeURIComponent(
            callbackName
          ) +
          "&amp;_plcb=" +
          encodeURIComponent(
            window.PLAntiCacheToken
              ? window.PLAntiCacheToken()
              : String(Date.now())
          ) +
          "&amp;_rnd=" +
          Math.random();


        script.onerror =
          function() {

            promoActiv =
              false;


            codInput.readOnly =
              false;


            promoStatus.style.display =
              "none";


            curata();

            resolve(
              false
            );

          };


        document.body.appendChild(
          script
        );


        setTimeout(
          function() {

            if (
              !terminat
            ) {

              promoActiv =
                false;


              codInput.readOnly =
                false;


              promoStatus.style.display =
                "none";


              curata();

              resolve(
                false
              );

            }

          },
          6000
        );

      }
    );

  }


  async function verificaPromoRobust() {
    for (let incercare = 0; incercare &lt; 3; incercare++) {
      try {
        const activ = await verificaPromo();
        if (activ) {
          return true;
        }
      }
      catch (e) {}
      if (incercare &lt; 2) {
        await new Promise(function(resolve) {
          setTimeout(resolve, 350 + incercare * 250);
        });
      }
    }
    return false;
  }

  window.PLVerificaPromoAstro =
    verificaPromoRobust;

  verificaPromoRobust();


  function afiseazaMesaj(
    text
  ) {

    mesaj.textContent =
      text;

    if (buton) {
      buton.disabled = false;
      buton.style.display = "block";
      buton.textContent = "VREAU INTERPRETAREA MEA";
    }

  }

  function afiseazaAsteptareAstro() {

    mesaj.innerHTML =
      '&lt;div class="pl-wait-main"&gt;' +
        'Calculam interpretarea ta...' +
      '&lt;/div&gt;' +
      '&lt;div class="pl-wait-box"&gt;' +
        'Te rugam sa ai rabdare. Generarea poate dura pana la 20 de secunde. Sunt calcule de facut si nu am vrea sa gresim!' +
      '&lt;/div&gt;';

  }



  function genereazaRequestId() {

    return (
      Date.now()
        .toString(36) +
      "_" +
      Math.random()
        .toString(36)
        .substring(
          2,
          12
        )
    );

  }


  function valideazaDataText(
    dataText
  ) {

    const match =
      String(
        dataText
      ).match(
        /^(\d{2})\.(\d{2})\.(\d{4})$/
      );


    if (
      !match
    ) {

      return null;

    }


    const zi =
      Number(
        match[1]
      );


    const luna =
      Number(
        match[2]
      );


    const an =
      Number(
        match[3]
      );


    const d =
      new Date(
        an,
        luna - 1,
        zi
      );


    if (
      d.getFullYear() !== an ||
      d.getMonth() !== luna - 1 ||
      d.getDate() !== zi
    ) {

      return null;

    }


    return {
      zi: zi,
      luna: luna,
      an: an
    };

  }


  function calculeazaZodieLocal(
    dataText
  ) {

    const p =
      dataText.split(
        "."
      );


    const zi =
      Number(
        p[0]
      );


    const luna =
      Number(
        p[1]
      );


    if (
      (luna === 3 &amp;&amp; zi &gt;= 21) ||
      (luna === 4 &amp;&amp; zi &lt;= 19)
    ) return "Berbec";


    if (
      (luna === 4 &amp;&amp; zi &gt;= 20) ||
      (luna === 5 &amp;&amp; zi &lt;= 20)
    ) return "Taur";


    if (
      (luna === 5 &amp;&amp; zi &gt;= 21) ||
      (luna === 6 &amp;&amp; zi &lt;= 20)
    ) return "Gemeni";


    if (
      (luna === 6 &amp;&amp; zi &gt;= 21) ||
      (luna === 7 &amp;&amp; zi &lt;= 22)
    ) return "Rac";


    if (
      (luna === 7 &amp;&amp; zi &gt;= 23) ||
      (luna === 8 &amp;&amp; zi &lt;= 22)
    ) return "Leu";


    if (
      (luna === 8 &amp;&amp; zi &gt;= 23) ||
      (luna === 9 &amp;&amp; zi &lt;= 22)
    ) return "Fecioara";


    if (
      (luna === 9 &amp;&amp; zi &gt;= 23) ||
      (luna === 10 &amp;&amp; zi &lt;= 22)
    ) return "Balanta";


    if (
      (luna === 10 &amp;&amp; zi &gt;= 23) ||
      (luna === 11 &amp;&amp; zi &lt;= 21)
    ) return "Scorpion";


    if (
      (luna === 11 &amp;&amp; zi &gt;= 22) ||
      (luna === 12 &amp;&amp; zi &lt;= 21)
    ) return "Sagetator";


    if (
      (luna === 12 &amp;&amp; zi &gt;= 22) ||
      (luna === 1 &amp;&amp; zi &lt;= 19)
    ) return "Capricorn";


    if (
      (luna === 1 &amp;&amp; zi &gt;= 20) ||
      (luna === 2 &amp;&amp; zi &lt;= 18)
    ) return "Varsator";


    return "Pesti";

  }


  function calculeazaCifraDestinuluiLocal(
    dataText
  ) {

    const cifre =
      String(
        dataText
      ).replace(
        /\D/g,
        ""
      );


    let suma =
      0;


    for (
      let i = 0;
      i &lt; cifre.length;
      i++
    ) {

      suma +=
        Number(
          cifre[i]
        );

    }


    while (
      suma &gt; 9 &amp;&amp;
      suma !== 11 &amp;&amp;
      suma !== 22 &amp;&amp;
      suma !== 33
    ) {

      suma =
        String(
          suma
        )
          .split(
            ""
          )
          .reduce(
            function(
              total,
              cifra
            ) {

              return (
                total +
                Number(
                  cifra
                )
              );

            },
            0
          );

    }


    return suma;

  }


  function calculeazaGrupaVarsta(
    data
  ) {

    const azi =
      new Date();


    let varsta =
      azi.getFullYear() -
      data.an;


    const lunaCurenta =
      azi.getMonth() + 1;


    const ziCurenta =
      azi.getDate();


    if (
      lunaCurenta &lt; data.luna ||
      (
        lunaCurenta === data.luna &amp;&amp;
        ziCurenta &lt; data.zi
      )
    ) {

      varsta--;

    }


    if (
      varsta &lt; 18
    ) return "sub 18";


    if (
      varsta &lt;= 24
    ) return "18-24";


    if (
      varsta &lt;= 34
    ) return "25-34";


    if (
      varsta &lt;= 44
    ) return "35-44";


    if (
      varsta &lt;= 54
    ) return "45-54";


    if (
      varsta &lt;= 64
    ) return "55-64";


    return "65+";

  }
    function julianDay(
    year,
    month,
    day,
    hour
  ) {

    if (
      month &lt;= 2
    ) {

      year -= 1;
      month += 12;

    }


    const A =
      Math.floor(
        year / 100
      );


    const B =
      2 -
      A +
      Math.floor(
        A / 4
      );


    return (
      Math.floor(
        365.25 *
        (year + 4716)
      ) +
      Math.floor(
        30.6001 *
        (month + 1)
      ) +
      day +
      B -
      1524.5 +
      hour / 24
    );

  }


  function gmstGrade(
    jd
  ) {

    const T =
      (
        jd -
        2451545.0
      ) /
      36525.0;


    let gmst =
      280.46061837 +
      360.98564736629 *
      (
        jd -
        2451545.0
      ) +
      0.000387933 *
      T *
      T -
      (
        T *
        T *
        T
      ) /
      38710000;


    gmst =
      (
        (
          gmst % 360
        ) +
        360
      ) % 360;


    return gmst;

  }


  function calculeazaAscendent(
    data,
    ora,
    minut,
    lat,
    lng
  ) {

    const dataLocala =
      new Date(
        data.an,
        data.luna - 1,
        data.zi,
        Number(
          ora
        ),
        Number(
          minut
        ),
        0
      );


    const yearUTC =
      dataLocala.getUTCFullYear();


    const monthUTC =
      dataLocala.getUTCMonth() + 1;


    const dayUTC =
      dataLocala.getUTCDate();


    const hourUTC =
      dataLocala.getUTCHours() +
      dataLocala.getUTCMinutes() / 60;


    const jd =
      julianDay(
        yearUTC,
        monthUTC,
        dayUTC,
        hourUTC
      );


    const lst =
      (
        gmstGrade(
          jd
        ) +
        Number(
          lng
        ) +
        360
      ) % 360;


    const rad =
      Math.PI / 180;


    const epsilon =
      23.4392911 *
      rad;


    const theta =
      lst *
      rad;


    const phi =
      Number(
        lat
      ) *
      rad;


    let lambda =
      Math.atan2(
        -Math.cos(
          theta
        ),
        (
          Math.sin(
            theta
          ) *
          Math.cos(
            epsilon
          )
        ) +
        (
          Math.tan(
            phi
          ) *
          Math.sin(
            epsilon
          )
        )
      ) /
      rad;


    lambda =
      (
        lambda +
        180 +
        360
      ) % 360;


    const zodii = [
      "Berbec",
      "Taur",
      "Gemeni",
      "Rac",
      "Leu",
      "Fecioara",
      "Balanta",
      "Scorpion",
      "Sagetator",
      "Capricorn",
      "Varsator",
      "Pesti"
    ];


    const index =
      Math.floor(
        lambda / 30
      ) % 12;


    return zodii[
      index
    ];

  }


  function obtineCoordonate(
    oras
  ) {

    return new Promise(
      function(
        resolve,
        reject
      ) {

        const callbackName =
          "paginaLipsaGeo_" +
          Date.now()
            .toString(36) +
          "_" +
          Math.random()
            .toString(36)
            .substring(
              2,
              8
            );


        let script =
          null;


        let terminat =
          false;


        function curata() {

          if (
            terminat
          ) {

            return;

          }


          terminat =
            true;


          try {

            delete window[
              callbackName
            ];

          }

          catch(e) {}


          if (
            script &amp;&amp;
            script.parentNode
          ) {

            script.parentNode
              .removeChild(
                script
              );

          }

        }


        window[
          callbackName
        ] =
          function(
            raspuns
          ) {

            if (
              raspuns &amp;&amp;
              raspuns.succes
            ) {

              const rezultat = {
                lat:
                  Number(
                    raspuns.lat
                  ),

                lng:
                  Number(
                    raspuns.lng
                  )
              };


              curata();

              resolve(
                rezultat
              );

            }

            else {

              const eroare =
                new Error(
                  raspuns &amp;&amp;
                  raspuns.mesaj
                    ? raspuns.mesaj
                    : "Localitatea nu a fost gasita."
                );


              curata();

              reject(
                eroare
              );

            }

          };


        script =
          document.createElement(
            "script"
          );


        script.src =
          STATUS_URL +
          "?authuser=0&amp;action=geocode" +
          "&amp;oras=" +
          encodeURIComponent(
            oras
          ) +
          "&amp;callback=" +
          encodeURIComponent(
            callbackName
          ) +
          "&amp;t=" +
          Date.now();


        script.onerror =
          function() {

            curata();

            reject(
              new Error(
                "Nu am putut verifica localitatea."
              )
            );

          };


        document.body.appendChild(
          script
        );


        setTimeout(
          function() {

            if (
              !terminat
            ) {

              curata();

              reject(
                new Error(
                  "Verificarea localitatii a durat prea mult."
                )
              );

            }

          },
          10000
        );

      }
    );

  }


  function detecteazaDispozitiv() {

    const ua =
      navigator.userAgent ||
      "";


    if (
      /tablet|ipad/i.test(
        ua
      )
    ) {

      return "Tableta";

    }


    if (
      /mobile|iphone|android/i.test(
        ua
      )
    ) {

      return "Mobil";

    }


    return "Desktop";

  }


  function detecteazaSistem() {

    const ua =
      navigator.userAgent ||
      "";


    if (
      /Windows/i.test(
        ua
      )
    ) return "Windows";


    if (
      /Android/i.test(
        ua
      )
    ) return "Android";


    if (
      /iPhone|iPad|iPod/i.test(
        ua
      )
    ) return "iOS";


    if (
      /Mac OS/i.test(
        ua
      )
    ) return "macOS";


    if (
      /Linux/i.test(
        ua
      )
    ) return "Linux";


    return "Necunoscut";

  }


  function detecteazaBrowser() {

    const ua =
      navigator.userAgent ||
      "";


    if (
      /Edg\//i.test(
        ua
      )
    ) return "Edge";


    if (
      /OPR\//i.test(
        ua
      )
    ) return "Opera";


    if (
      /Firefox\//i.test(
        ua
      )
    ) return "Firefox";


    if (
      /Chrome\//i.test(
        ua
      )
    ) return "Chrome";


    if (
      /Safari\//i.test(
        ua
      )
    ) return "Safari";


    return "Necunoscut";

  }


  function verificaStatus(
    requestId
  ) {

    return new Promise(
      function(
        resolve,
        reject
      ) {

        const callbackName =
          "paginaLipsaStatus_" +
          Date.now()
            .toString(36) +
          "_" +
          Math.random()
            .toString(36)
            .substring(
              2,
              8
            );


        let script =
          null;


        let terminat =
          false;


        function curata() {

          if (
            terminat
          ) {

            return;

          }


          terminat =
            true;


          try {

            delete window[
              callbackName
            ];

          }

          catch(e) {}


          if (
            script &amp;&amp;
            script.parentNode
          ) {

            script.parentNode
              .removeChild(
                script
              );

          }

        }


        window[
          callbackName
        ] =
          function(
            raspuns
          ) {

            curata();

            resolve(
              raspuns || {
                gata:false
              }
            );

          };


        script =
          document.createElement(
            "script"
          );


        script.src =
          STATUS_URL +
          "?authuser=0&amp;action=status" +
          "&amp;requestId=" +
          encodeURIComponent(
            requestId
          ) +
          "&amp;callback=" +
          encodeURIComponent(
            callbackName
          ) +
          "&amp;t=" +
          Date.now();


        script.onerror =
          function() {

            curata();

            reject(
              new Error(
                "Nu am putut verifica generarea."
              )
            );

          };


        document.body.appendChild(
          script
        );


        setTimeout(
          function() {

            if (
              !terminat
            ) {

              curata();

              reject(
                new Error(
                  "Verificarea a durat prea mult."
                )
              );

            }

          },
          10000
        );

      }
    );

  }


  function asteaptaRezultat(
    requestId
  ) {

    return new Promise(
      function(
        resolve,
        reject
      ) {

        let incercari =
          0;


        const maxim =
          60;


        function verifica() {

          incercari++;


          verificaStatus(
            requestId
          )
            .then(
              function(
                raspuns
              ) {

                if (
                  raspuns &amp;&amp;
                  raspuns.gata
                ) {

                  resolve(
                    raspuns
                  );

                  return;

                }


                if (
                  incercari &gt;=
                  maxim
                ) {

                  reject(
                    new Error(
                      "Generarea a durat prea mult. Incearca din nou."
                    )
                  );

                  return;

                }


                setTimeout(
                  verifica,
                  800
                );

              }
            )
            .catch(
              function() {

                if (
                  incercari &gt;=
                  maxim
                ) {

                  reject(
                    new Error(
                      "Nu am putut confirma generarea."
                    )
                  );

                  return;

                }


                setTimeout(
                  verifica,
                  800
                );

              }
            );

        }


        setTimeout(
          verifica,
          350
        );

      }
    );

  }


  // ==========================================================
  // SALT FORTAT LA CARD
  // ==========================================================

  function centreazaCardInEcran() {

    const card =
      document.getElementById(
        "astroCard"
      );


    if (!card) {
      return;
    }


    function mutaLaCard() {

      const rect =
        card.getBoundingClientRect();


      const pozitie =
        window.pageYOffset +
        rect.top -
        15;


      window.scrollTo(
        0,
        Math.max(
          0,
          pozitie
        )
      );


      document.documentElement.scrollTop =
        Math.max(
          0,
          pozitie
        );


      document.body.scrollTop =
        Math.max(
          0,
          pozitie
        );

    }


    mutaLaCard();


    requestAnimationFrame(
      function() {

        mutaLaCard();


        requestAnimationFrame(
          function() {

            mutaLaCard();

          }
        );

      }
    );


    setTimeout(
      mutaLaCard,
      100
    );


    setTimeout(
      mutaLaCard,
      300
    );


    setTimeout(
      function() {

        card.scrollIntoView({
          behavior: "auto",
          block: "start"
        });

      },
      500
    );

  }


  function afiseazaRezultat(
    rezultat
  ) {

    formularContent.style.display =
      "none";


    resultContent.style.display =
      "block";


    const pdfUrl =
      rezultat.pdfUrl || "";


    const sustineUrl = "https://payhip.com/b/kY07K";


    let html =
      '&lt;div class="result-page"&gt;' +

        '&lt;div class="result-brand"&gt;' +
          'PAGINA LIPSA' +
        '&lt;/div&gt;' +

        '&lt;h2 class="result-title"&gt;' +
          'AI AVUT NOROC!' +
        '&lt;/h2&gt;' +

        '&lt;div class="result-circle"&gt;' +
          '&lt;span class="result-face"&gt;:)&lt;/span&gt;' +
        '&lt;/div&gt;' +

        '&lt;div class="result-line"&gt;&lt;/div&gt;' +

        '&lt;h3 class="result-subtitle"&gt;' +
          'Interpretarea ta este pregatita.' +
        '&lt;/h3&gt;' +

        '&lt;p class="result-text"&gt;' +
          'Am generat materialul tau personalizat pe baza informatiilor introduse.' +
        '&lt;/p&gt;' +

        '&lt;p class="result-small"&gt;' +
          'Fisierul PDF este disponibil temporar. Salveaza-l pe dispozitivul tau daca vrei sa il pastrezi.' +
        '&lt;/p&gt;';


    if (
      pdfUrl
    ) {

      html +=
        '&lt;a class="result-download" target="_blank" rel="noopener" href="' +
        pdfUrl +
        '"&gt;' +
        'DESCARCA INTERPRETAREA PDF' +
        '&lt;/a&gt;';

    }


    if (
      sustineUrl
    ) {

      html +=
        '&lt;p class="result-support-message pl-fapta-buna"&gt;' +
          'Uneori, o idee are nevoie doar de cineva care să creadă în ea. Susține proiectul Pagina Lipsă.' +
        '&lt;/p&gt;' +

        '&lt;a class="result-support" target="_blank" rel="noopener" href="' +
        sustineUrl +
        '"&gt;' +
        '♡ CUMPĂRĂ CARTEA' +
        '&lt;/a&gt;' +
        '&lt;a class="result-book-cover-link" target="_blank" rel="noopener" href="https://payhip.com/b/kY07K"&gt;' +
          '&lt;img class="result-book-cover" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcGkCFQzvzSlWod0-eas2hbeNmAejiqn-sQeQpFleUc8y5lS9ywVELMnvhHznnQXK1PUPwbOTqfsitqLSWVz1qBb8xNAaJgNpNubWZXuEbFOjQyaEFzU60etvvfJDMvYOAEk_NRzGa311G9_B5ZjcvzF9-77NVBNpm8Rfj2z7z23coxTJrG6uPyLNBd7o/s320/sclavul%20din%20oglinda%20cover.png" alt="Coperta cartii Sclavul din oglinda - Michael Dalit" loading="lazy" /&gt;' +
        '&lt;/a&gt;';

    }


    html +=
      '&lt;/div&gt;';


    resultContent.innerHTML =
      html;


    centreazaCardInEcran();

  }


  // Functiile de calcul sunt reutilizate si de formularul CUPLU.
  window.PLCompatHelpers = {
    valideazaDataText: valideazaDataText,
    obtineCoordonate: obtineCoordonate,
    calculeazaZodieLocal: calculeazaZodieLocal,
    calculeazaCifraDestinuluiLocal: calculeazaCifraDestinuluiLocal,
    calculeazaGrupaVarsta: calculeazaGrupaVarsta,
    calculeazaAscendent: calculeazaAscendent,
    genereazaRequestId: genereazaRequestId,
    asteaptaRezultat: asteaptaRezultat,
    detecteazaDispozitiv: detecteazaDispozitiv,
    detecteazaSistem: detecteazaSistem,
    detecteazaBrowser: detecteazaBrowser,
    genereazaHartaNatala: function(data, ora, minut, lat, lng) {
      if (!window.PLChartEngine) {
        throw new Error("Motorul hartii natale nu este disponibil.");
      }
      return window.PLChartEngine.build(data, ora, minut, lat, lng);
    }
  };


  formular.addEventListener(
    "submit",
    async function(
      event
    ) {

      event.preventDefault();


      mesaj.textContent =
        "";

      // Feedback vizual instant, chiar din primul moment al clickului.
      // Nu asteptam verificarea PROMO sau alte apeluri de retea.
      buton.disabled = true;
      buton.style.display = "block";
      buton.textContent = "SE VERIFICA...";

      await new Promise(function(resolve) {
        requestAnimationFrame(resolve);
      });


      const adminActiv =
        !!(
          window.PLAdmin &amp;&amp;
          window.PLAdmin.isActive()
        );


      if (
        !adminActiv
      ) {

        try {

          await verificaPromoRobust();

        }

        catch(e) {}

      }


      const cod =
        String(
          codInput.value || ""
        )
          .trim()
          .toUpperCase();


      if (
        !adminActiv
      ) {

        if (
          promoActiv
        ) {

          codInput.value =
            "PROMO";

        }

        else {

          if (
            !/^\d{4}-\d{4}-1$/.test(
              cod
            )
          ) {

            afiseazaMesaj(
              "Introdu un cod de acces valid in formatul 1234-5678-1."
            );

            codInput.focus();

            return;

          }

        }

      }


      const adminTokenInput =
        document.getElementById(
          "adminToken"
        );


      if (
        adminTokenInput
      ) {

        adminTokenInput.value =
          adminActiv &amp;&amp;
          window.PLAdmin
            ? window.PLAdmin.getToken()
            : "";

      }


      const data =
        valideazaDataText(
          dataInput.value
        );


      if (
        !data
      ) {

        afiseazaMesaj(
          "Introdu o data de nastere valida in formatul ZZ.LL.AAAA."
        );

        dataInput.focus();

        return;

      }


      const azi =
        new Date();


      const dataNasteriiVerificare =
        new Date(
          data.an,
          data.luna - 1,
          data.zi
        );


      if (
        dataNasteriiVerificare &gt;
        azi
      ) {

        afiseazaMesaj(
          "Data nasterii nu poate fi in viitor."
        );

        dataInput.focus();

        return;

      }


      const animal =
        document
          .getElementById(
            "animal"
          )
          .value;


      if (
        !animal
      ) {

        afiseazaMesaj(
          "Selecteaza animalul cu care rezonezi."
        );

        return;

      }


      const sex =
        document
          .getElementById(
            "sex"
          )
          .value;


      if (
        !sex
      ) {

        afiseazaMesaj(
          "Selecteaza sexul."
        );

        return;

      }


      const ora =
        selectOra.value;


      const minut =
        selectMinute.value;


      if (
        ora === "" ||
        minut === ""
      ) {

        afiseazaMesaj(
          "Selecteaza ora aproximativa a nasterii."
        );

        return;

      }


      const oras =
        String(
          orasInput.value || ""
        ).trim();


      if (
        oras.length &lt; 2
      ) {

        afiseazaMesaj(
          "Introdu localitatea nasterii."
        );

        orasInput.focus();

        return;

      }


      const sursa =
        document
          .getElementById(
            "sursa"
          )
          .value;


      if (
        !sursa
      ) {

        afiseazaMesaj(
          "Selecteaza cum ai descoperit Pagina Lipsa."
        );

        return;

      }


      // Toate verificarile locale au trecut: incepe generarea efectiva.
      buton.disabled =
        true;

      buton.style.display =
        "block";

      buton.textContent =
        "SE GENEREAZA...";

      afiseazaAsteptareAstro();

      // Oferim browserului doua cadre pentru a desena mesajul de asteptare.
      await new Promise(function(resolve) {
        requestAnimationFrame(function() {
          requestAnimationFrame(resolve);
        });
      });


      // Codul este validat direct de Apps Script la trimiterea formularului.
      // Eliminam verificarea JSONP duplicata pentru a economisi un apel de retea.

      try {

        const coordonate =
          await obtineCoordonate(
            oras
          );


        const zodie =
          calculeazaZodieLocal(
            dataInput.value
          );


        const cifraDestinului =
          calculeazaCifraDestinuluiLocal(
            dataInput.value
          );


        const grupaVarsta =
          calculeazaGrupaVarsta(
            data
          );


        const ascendent =
          calculeazaAscendent(
            data,
            ora,
            minut,
            coordonate.lat,
            coordonate.lng
          );


        let hartaNatala = null;
        try {
          if (window.PLChartEngine) {
            hartaNatala = window.PLChartEngine.build(
              data, ora, minut, coordonate.lat, coordonate.lng
            );
          }
        }
        catch (eroareHarta) {
          console.warn("Harta natala nu a putut fi calculata; raportul continua fara ea.", eroareHarta);
        }


        const requestId =
          genereazaRequestId();


        document
          .getElementById(
            "requestId"
          )
          .value =
          requestId;


        document
          .getElementById(
            "zodieFinal"
          )
          .value =
          zodie;


        document
          .getElementById(
            "ascendentFinal"
          )
          .value =
          ascendent;


        document
          .getElementById(
            "cifraDestinuluiFinal"
          )
          .value =
          cifraDestinului;


        document
          .getElementById(
            "grupaVarstaFinal"
          )
          .value =
          grupaVarsta;


        document
          .getElementById(
            "dispozitivFinal"
          )
          .value =
          detecteazaDispozitiv();


        document
          .getElementById(
            "sistemFinal"
          )
          .value =
          detecteazaSistem();


        document
          .getElementById(
            "browserFinal"
          )
          .value =
          detecteazaBrowser();


        document
          .getElementById(
            "limbaFinal"
          )
          .value =
          String(
            navigator.language ||
            ""
          )
            .slice(
              0,
              30
            );


        document.getElementById("hartaDateFinal").value =
          hartaNatala ? JSON.stringify(hartaNatala.meta) : "";
        document.getElementById("hartaImagineFinal").value =
          hartaNatala ? hartaNatala.image : "";


        formular.submit();


        const rezultat =
          await asteaptaRezultat(
            requestId
          );


        if (
          !rezultat.succes
        ) {

          throw new Error(
            rezultat.mesaj ||
            "Nu am putut genera interpretarea."
          );

        }


        afiseazaRezultat(
          rezultat
        );

      }

      catch (
        eroare
      ) {

        afiseazaMesaj(
          eroare &amp;&amp;
          eroare.message
            ? eroare.message
            : "A aparut o eroare. Incearca din nou."
        );


        buton.disabled =
          false;

        buton.style.display =
          "block";


        buton.textContent =
          "VREAU INTERPRETAREA MEA";

      }

    }
  );

})();

&lt;/script&gt;


&lt;script&gt;
/* ==========================================================
   PROMO AUTO-REFRESH - CHROME SAFE
   ========================================================== */
(function() {
  let ultimaVerificare = 0;
  let inCurs = false;

  async function actualizeazaPromo(force) {
    const acum = Date.now();

    if (!force &amp;&amp; acum - ultimaVerificare &lt; 2500) {
      return;
    }

    if (inCurs) {
      return;
    }

    inCurs = true;
    ultimaVerificare = acum;

    try {
      const verificari = [];

      if (typeof window.PLVerificaPromoAstro === "function") {
        verificari.push(
          Promise.resolve()
            .then(function() {
              return window.PLVerificaPromoAstro();
            })
            .catch(function() {
              return false;
            })
        );
      }

      if (typeof window.PLVerificaPromoCuplu === "function") {
        verificari.push(
          Promise.resolve()
            .then(function() {
              return window.PLVerificaPromoCuplu();
            })
            .catch(function() {
              return false;
            })
        );
      }

      if (verificari.length) {
        await Promise.all(verificari);
      }
    }
    finally {
      inCurs = false;
    }
  }

  window.PLRefreshPromo = actualizeazaPromo;

  window.addEventListener("pageshow", function() {
    actualizeazaPromo(true);
    setTimeout(function() {
      actualizeazaPromo(true);
    }, 800);
  });

  window.addEventListener("focus", function() {
    actualizeazaPromo(true);
  });

  document.addEventListener("visibilitychange", function() {
    if (!document.hidden) {
      actualizeazaPromo(true);
    }
  });

  document.addEventListener(
    "pointerdown",
    function() {
      actualizeazaPromo(false);
    },
    { passive: true }
  );

  setTimeout(function() {
    actualizeazaPromo(true);
  }, 400);

  setTimeout(function() {
    actualizeazaPromo(true);
  }, 1800);

  setInterval(function() {
    if (!document.hidden) {
      actualizeazaPromo(true);
    }
  }, 7000);
})();
&lt;/script&gt;

&lt;script&gt;window.PL_PROMO_VERSION="ANTICACHE_20260825_V2";&lt;/script&gt;


&lt;style&gt;
/* ==========================================================
   COPERTA CARTII - DUPA BUTONUL CUMPARA CARTEA
   ========================================================== */
.result-book-cover-link {
  display:block !important;
  width:100% !important;
  margin:18px auto 0 !important;
  padding:24px 18px 26px !important;
  box-sizing:border-box !important;
  text-align:center !important;
  background:#000 !important;
  border-radius:12px !important;
  text-decoration:none !important;
}

.result-book-cover {
  display:block !important;
  width:230px !important;
  max-width:72vw !important;
  height:auto !important;
  margin:0 auto !important;
  border-radius:7px !important;
  box-shadow:0 8px 24px rgba(0,0,0,.38) !important;
  transition:transform .18s ease, opacity .18s ease !important;
}

.result-book-cover-link:hover .result-book-cover {
  transform:translateY(-2px) scale(1.015);
  opacity:.97;
}

@media screen and (max-width:700px) {
  .result-book-cover-link {
    margin-top:14px !important;
    padding:20px 14px 22px !important;
  }

  .result-book-cover {
    width:200px !important;
    max-width:68vw !important;
  }
}
&lt;/style&gt;



&lt;style&gt;
/* Mesaj "fapta buna" - licarire eleganta */
@keyframes plFaptaBunaLicareste {
  0%, 100% {
    opacity: 1;
  }
  50% {
    opacity: 0.18;
  }
}

.result-support-message.pl-fapta-buna {
  animation: plFaptaBunaLicareste 1.8s ease-in-out infinite !important;
  will-change: opacity;
}

@media (prefers-reduced-motion: reduce) {
  .result-support-message.pl-fapta-buna {
    animation: none !important;
  }
}
&lt;/style&gt;


&lt;style&gt;
/* COPERTA CARTII LIGHT */
.result-book-cover-link {
  display:block !important;
  width:100% !important;
  margin:18px auto 0 !important;
  padding:22px 16px 24px !important;
  box-sizing:border-box !important;
  text-align:center !important;
  background:#000 !important;
  border-radius:12px !important;
  text-decoration:none !important;
}
.result-book-cover {
  display:block !important;
  width:220px !important;
  max-width:70vw !important;
  height:auto !important;
  margin:0 auto !important;
  border-radius:7px !important;
}
@media screen and (max-width:700px) {
  .result-book-cover { width:190px !important; }
}
&lt;/style&gt;


&lt;style&gt;
/* =========================================================
   INTRO MISTERIOS - PAGINA LIPSA
========================================================= */

.pl-intro-screen {
  position:fixed;
  inset:0;
  z-index:2147483000;
  display:flex;
  align-items:center;
  justify-content:center;
  width:100%;
  min-height:100vh;
  min-height:100dvh;
  padding:26px 18px;
  box-sizing:border-box;
  overflow:auto;
  background:#000000;
  opacity:1;
  visibility:visible;
  transition:opacity .65s ease, visibility .65s ease;
}

.pl-intro-screen.pl-intro-hide {
  opacity:0;
  visibility:hidden;
  pointer-events:none;
}

.pl-intro-content {
  width:min(620px, 100%);
  margin:auto;
  text-align:center;
  font-family:Georgia, "Times New Roman", serif;
}

.pl-intro-logo {
  display:block;
  width:min(330px, 68vw);
  height:auto;
  margin:0 auto 22px;
  border:0;
  outline:0;
  filter:drop-shadow(0 0 10px rgba(212,175,55,.22));
  transform-origin:center center;
  animation:plIntroPulse 2.8s ease-in-out infinite;
  will-change:transform, filter;
}

@keyframes plIntroPulse {
  0%, 100% {
    transform:scale(1);
    filter:drop-shadow(0 0 8px rgba(212,175,55,.18));
  }
  50% {
    transform:scale(1.035);
    filter:drop-shadow(0 0 18px rgba(212,175,55,.34));
  }
}

.pl-intro-title {
  margin:0 auto 14px !important;
  max-width:590px;
  color:#F3E6BD !important;
  background:transparent !important;
  border:0 !important;
  text-shadow:0 0 14px rgba(201,166,75,.14) !important;
  font-family:Georgia, "Times New Roman", serif !important;
  font-size:clamp(26px, 4.2vw, 38px) !important;
  line-height:1.22 !important;
  font-weight:600 !important;
  letter-spacing:.2px !important;
  text-align:center !important;
}

.pl-intro-subtitle {
  max-width:500px;
  margin:0 auto 30px;
  color:#C8B98B;
  font-size:clamp(14px, 2.4vw, 17px);
  line-height:1.65;
  font-style:italic;
}

.pl-intro-enter {
  min-width:150px;
  padding:13px 30px;
  background:#080706;
  color:#E3C66B;
  border:1px solid #B8912E;
  border-radius:7px;
  box-shadow:0 0 0 1px rgba(201,166,75,.08), 0 8px 24px rgba(0,0,0,.3);
  font-family:Georgia, "Times New Roman", serif;
  font-size:14px;
  font-weight:bold;
  letter-spacing:2px;
  cursor:pointer;
  transition:background .2s ease, color .2s ease, transform .2s ease, box-shadow .2s ease;
}

.pl-intro-enter:hover,
.pl-intro-enter:focus {
  background:#B8912E;
  color:#0A0906;
  transform:translateY(-1px);
  box-shadow:0 0 18px rgba(184,145,46,.22);
  outline:none;
}

body.pl-intro-lock {
  overflow:hidden !important;
}

@media (max-width:600px) {
  .pl-intro-screen {
    padding:20px 16px;
  }

  .pl-intro-logo {
    width:min(270px, 72vw);
    margin-bottom:18px;
  }

  .pl-intro-subtitle {
    max-width:330px;
    margin-bottom:26px;
  }

  .pl-intro-enter {
    min-width:145px;
    padding:13px 27px;
  }
}

@media (max-height:650px) {
  .pl-intro-screen {
    align-items:flex-start;
  }

  .pl-intro-content {
    padding:18px 0 24px;
  }

  .pl-intro-logo {
    width:min(220px, 46vh);
    margin-bottom:12px;
  }

  .pl-intro-title {
    font-size:24px !important;
  }

  .pl-intro-subtitle {
    margin-bottom:18px;
  }
}

@media (prefers-reduced-motion:reduce) {
  .pl-intro-logo {
    animation:none;
  }

  .pl-intro-screen,
  .pl-intro-enter {
    transition:none;
  }
}
&lt;/style&gt;



&lt;script&gt;
/* =========================================================
   CLICK PE HEADER -&gt; MENIUL PRINCIPAL, FARA INTRO / REFRESH
========================================================= */
(function () {
  function arataMeniulDirectPL(event) {
    if (event) {
      event.preventDefault();
      event.stopPropagation();
    }

    var intro = document.getElementById("plIntroScreen");
    if (intro) {
      intro.classList.add("pl-intro-hide");
      intro.style.display = "none";
    }

    document.body.classList.remove("pl-intro-lock");

    [
      "sectiuneAstrograma",
      "sectiuneCompatibilitate",
      "sectiuneSesiune",
      "sectiuneDescopera",
      "sectiunePrognoza",
      "sectiuneDespreProiect"
    ].forEach(function (id) {
      var el = document.getElementById(id);
      if (el) el.style.display = "none";
    });

    var home = document.getElementById("paginaPrincipala");
    if (home) home.style.display = "block";

    try {
      history.replaceState(
        {plPaginaLipsa:true, view:"home"},
        document.title,
        location.href
      );
    } catch (e) {}

    try {
      window.scrollTo({top:0, left:0, behavior:"smooth"});
    } catch (e) {
      window.scrollTo(0, 0);
    }

    return false;
  }

  window.PLArataMeniulDirect = arataMeniulDirectPL;

  function conecteazaHeaderPL() {
    var headerLinks = document.querySelectorAll(
      "#Header1 a, #header-inner a, .Header a, .header-inner a"
    );

    headerLinks.forEach(function (link) {
      if (link.dataset.plMenuDirect === "1") return;
      link.dataset.plMenuDirect = "1";
      link.addEventListener("click", arataMeniulDirectPL, true);
    });

    var headerImgs = document.querySelectorAll(
      "#Header1_headerimg, #Header1 img, #header-inner img, .Header img"
    );

    headerImgs.forEach(function (img) {
      img.style.cursor = "pointer";
      if (img.dataset.plMenuDirect === "1") return;
      img.dataset.plMenuDirect = "1";

      if (!img.closest("a")) {
        img.addEventListener("click", arataMeniulDirectPL, true);
      }
    });
  }

  if (document.readyState === "loading") {
    document.addEventListener("DOMContentLoaded", conecteazaHeaderPL);
  } else {
    conecteazaHeaderPL();
  }

  window.setTimeout(conecteazaHeaderPL, 500);
})();
&lt;/script&gt;


&lt;script&gt;
/* =========================================================
   FUNCTIONARE INTRO - FARA REFRESH
========================================================= */
(function () {
  function initPaginaLipsaIntro() {
    var intro = document.getElementById("plIntroScreen");
    var enter = document.getElementById("plIntroEnter");

    if (!intro || !enter) return;

    document.body.classList.add("pl-intro-lock");

    try {
      window.scrollTo(0, 0);
    } catch (e) {}

    function intraInPagina() {
      intro.classList.add("pl-intro-hide");
      document.body.classList.remove("pl-intro-lock");

      window.setTimeout(function () {
        intro.style.display = "none";

        var home = document.getElementById("paginaPrincipala");
        if (home) {
          home.style.display = "";
        }

        try {
          window.scrollTo({ top: 0, left: 0, behavior: "smooth" });
        } catch (e) {
          window.scrollTo(0, 0);
        }
      }, 680);
    }

    enter.addEventListener("click", intraInPagina);

    enter.addEventListener("keydown", function (event) {
      if (event.key === "Enter" || event.key === " ") {
        event.preventDefault();
        intraInPagina();
      }
    });
  }

  if (document.readyState === "loading") {
    document.addEventListener("DOMContentLoaded", initPaginaLipsaIntro);
  } else {
    initPaginaLipsaIntro();
  }
})();
&lt;/script&gt;


&lt;style&gt;
/* =========================================================
   AJUSTARE INTRO - LOGO FARA PATRAT + PUTIN MAI MIC
   ========================================================= */
#plIntroScreen,
#plIntroScreen .pl-intro-content {
  background:#000000 !important;
}

#plIntroScreen .pl-intro-logo {
  display:block !important;

  /* logo putin mai mic */
  width:min(245px, 52vw) !important;
  height:auto !important;
  margin:0 auto 22px !important;

  /* elimina vizual fundalul negru patrat al imaginii */
  mix-blend-mode:screen !important;
  background:transparent !important;
  border:none !important;
  border-radius:0 !important;
  box-shadow:none !important;

  /* pastram doar o lumina foarte fina in jurul auriului */
  filter:drop-shadow(0 0 8px rgba(212,175,55,.20)) !important;

  transform-origin:center center !important;
  animation:plIntroPulseClean 2.8s ease-in-out infinite !important;
}

@keyframes plIntroPulseClean {
  0%, 100% {
    transform:scale(1);
    filter:drop-shadow(0 0 7px rgba(212,175,55,.16));
  }
  50% {
    transform:scale(1.025);
    filter:drop-shadow(0 0 13px rgba(212,175,55,.27));
  }
}

@media (max-width:600px) {
  #plIntroScreen .pl-intro-logo {
    width:min(205px, 50vw) !important;
    margin-bottom:18px !important;
  }
}

@media (max-height:650px) {
  #plIntroScreen .pl-intro-logo {
    width:min(185px, 38vh) !important;
    margin-bottom:12px !important;
  }
}

@media (prefers-reduced-motion:reduce) {
  #plIntroScreen .pl-intro-logo {
    animation:none !important;
  }
}
&lt;/style&gt;


&lt;style&gt;
/* =========================================================
   INTRO - TITLU PE UN SINGUR RAND
   ========================================================= */
#plIntroScreen .pl-intro-content {
  width:min(920px, 96vw) !important;
}

#plIntroScreen .pl-intro-title {
  max-width:none !important;
  width:100% !important;
  white-space:nowrap !important;
  font-size:clamp(23px, 3.15vw, 38px) !important;
  line-height:1.2 !important;
}

/* Pe telefoane inguste, micsoram suficient titlul ca sa ramana pe un rand */
@media (max-width:600px) {
  #plIntroScreen .pl-intro-content {
    width:98vw !important;
  }

  #plIntroScreen .pl-intro-title {
    font-size:clamp(17px, 5.1vw, 27px) !important;
    letter-spacing:0 !important;
  }
}

@media (max-width:380px) {
  #plIntroScreen .pl-intro-title {
    font-size:16px !important;
  }
}
&lt;/style&gt;


&lt;style&gt;
/* =========================================================
   OBTINE COD - STIL
========================================================= */
.pl-get-code-btn{
  width:auto !important; min-width:145px !important; display:block !important;
  margin:14px auto 0 !important; padding:10px 18px !important;
  background:transparent !important; color:#8A6A17 !important;
  border:1px solid #B8912E !important; border-radius:7px !important;
  font:700 12px Georgia,"Times New Roman",serif !important;
  letter-spacing:.7px !important; cursor:pointer !important;
}
.pl-get-code-btn:hover{background:#17130B !important;color:#E3C66B !important}

.pl-get-code-overlay{
  position:fixed; inset:0; z-index:2147483100; background:rgba(0,0,0,.9);
  align-items:center; justify-content:center; padding:20px; box-sizing:border-box; overflow:auto;
}
.pl-get-code-card{
  position:relative; width:min(620px,100%); max-height:calc(100vh - 40px); overflow:auto;
  margin:auto; padding:38px 34px 30px; box-sizing:border-box;
  background:#F7F1E7; border:1px solid #C9A64B; border-radius:14px;
  box-shadow:0 15px 45px rgba(0,0,0,.45); text-align:center;
  font-family:Georgia,"Times New Roman",serif;
}
.pl-get-code-close{
  position:absolute; top:9px; right:12px; width:36px !important; height:36px;
  margin:0 !important; padding:0 !important; border:0 !important;
  background:transparent !important; color:#8A6A17 !important;
  font-size:28px !important; line-height:1 !important; cursor:pointer;
}
.pl-get-code-symbol{color:#B8912E;font-size:34px;margin-bottom:8px}
.pl-get-code-card h2{margin:0 0 22px;color:#17130B !important;font-size:25px;line-height:1.25}

.pl-get-code-current{
  padding:22px 20px; background:#FFF9E5; border:1px solid #C9A64B;
  border-radius:11px;
}
.pl-get-code-badge{
  display:inline-block; margin-bottom:11px; padding:5px 10px;
  background:#17130B; color:#E3C66B; border:1px solid #B8912E;
  border-radius:999px; font-size:9px; font-weight:bold; letter-spacing:1px;
}
.pl-get-code-current h3,.pl-get-code-social h3{
  margin:0 0 11px; color:#8A6A17; font-size:15px; letter-spacing:.5px;
}
.pl-get-code-current p,.pl-get-code-social p{
  margin:8px auto 0; color:#4A4235; font-size:14px; line-height:1.65;
}
.pl-get-code-support-text{font-style:italic;color:#776B58 !important}
.pl-get-code-buy{
  display:block !important; width:100%; box-sizing:border-box;
  margin:19px auto 0 !important; padding:14px 18px !important;
  background:#17130B !important; color:#E3C66B !important;
  border:1px solid #B8912E !important; border-radius:7px !important;
  text-decoration:none !important; font-size:14px !important; font-weight:bold !important;
  letter-spacing:.8px; transition:.18s ease;
}
.pl-get-code-buy:hover{background:#B8912E !important;color:#111 !important}
.pl-get-code-divider{
  display:flex; align-items:center; gap:12px; margin:22px 0;
  color:#9A8251; font-size:10px; font-weight:bold; letter-spacing:1px;
}
.pl-get-code-divider:before,.pl-get-code-divider:after{
  content:""; height:1px; flex:1; background:#D7C8A5;
}
.pl-get-code-social{
  padding:14px; background:#FFFDF8; border:1px solid #D7C8A5; border-radius:10px;
}
.pl-get-code-note{
  margin-top:17px; color:#776B58; font-size:11px; line-height:1.5;
}
.pl-get-code-back{
  width:auto !important; min-width:135px; margin:19px auto 0 !important;
  padding:10px 18px !important; background:transparent !important;
  color:#8A6A17 !important; border:1px solid #B8912E !important; border-radius:7px !important;
  font:700 11px Georgia,"Times New Roman",serif !important; letter-spacing:.7px; cursor:pointer;
}
@media(max-width:600px){
  .pl-get-code-card{padding:34px 18px 24px}
  .pl-get-code-card h2{font-size:21px}
  .pl-get-code-current{padding:19px 15px}
  .pl-get-code-current p,.pl-get-code-social p{font-size:13px}
}
&lt;/style&gt;

&lt;script&gt;
function deschideObtineCodPL(){
  var x=document.getElementById("plGetCodeOverlay");
  if(!x)return;
  x.style.display="flex";
  x.setAttribute("aria-hidden","false");
  document.body.style.overflow="hidden";
}
function inchideObtineCodPL(){
  var x=document.getElementById("plGetCodeOverlay");
  if(!x)return;
  x.style.display="none";
  x.setAttribute("aria-hidden","true");
  document.body.style.overflow="";
}
document.addEventListener("click",function(e){
  var x=document.getElementById("plGetCodeOverlay");
  if(x &amp;&amp; e.target===x) inchideObtineCodPL();
});
document.addEventListener("keydown",function(e){
  if(e.key==="Escape") inchideObtineCodPL();
});
&lt;/script&gt;


&lt;style&gt;
/* =========================================================
   BUTON MIC "NU AI COD?" SUB VREAU INTERPRETAREA MEA
========================================================= */
#astroForm .pl-no-code-btn {
  display:block !important;
  width:auto !important;
  min-width:0 !important;
  margin:9px auto 0 !important;
  padding:7px 13px !important;
  background:transparent !important;
  color:#8A6A17 !important;
  border:1px solid #B8912E !important;
  border-radius:6px !important;
  box-shadow:none !important;
  font-family:Georgia,"Times New Roman",serif !important;
  font-size:10.5px !important;
  line-height:1.2 !important;
  font-weight:bold !important;
  letter-spacing:.55px !important;
  cursor:pointer !important;
  text-align:center !important;
  transition:background .18s ease,color .18s ease,transform .18s ease !important;
}

#astroForm .pl-no-code-btn:hover,
#astroForm .pl-no-code-btn:focus {
  background:#17130B !important;
  color:#E3C66B !important;
  transform:translateY(-1px);
  outline:none !important;
}

@media screen and (max-width:700px) {
  #astroForm .pl-no-code-btn {
    width:auto !important;
    padding:7px 12px !important;
    font-size:10px !important;
  }
}
&lt;/style&gt;


&lt;style&gt;
/* BUTON MIC "NU AI COD?" SI LA COMPATIBILITATEA DE CUPLU */
#compatForm .pl-no-code-btn,
.compat-form-wrap .pl-no-code-compat {
  display:block !important;
  width:auto !important;
  min-width:0 !important;
  margin:9px auto 0 !important;
  padding:7px 13px !important;
  background:transparent !important;
  color:#8A6A17 !important;
  border:1px solid #B8912E !important;
  border-radius:6px !important;
  box-shadow:none !important;
  font-family:Georgia,"Times New Roman",serif !important;
  font-size:10.5px !important;
  line-height:1.2 !important;
  font-weight:bold !important;
  letter-spacing:.55px !important;
  cursor:pointer !important;
  text-align:center !important;
}

#compatForm .pl-no-code-btn:hover,
.compat-form-wrap .pl-no-code-compat:hover {
  background:#17130B !important;
  color:#E3C66B !important;
}

@media screen and (max-width:700px) {
  #compatForm .pl-no-code-btn,
  .compat-form-wrap .pl-no-code-compat {
    width:auto !important;
    padding:7px 12px !important;
    font-size:10px !important;
  }
}
&lt;/style&gt;


&lt;style&gt;
/* =========================================================
   DESPRE PROIECT
========================================================= */

.pl-project-choice {
  margin-top:12px !important;
  background:#F8F3E9 !important;
  border-style:dashed !important;
}

.pl-project-choice .pl-choice-icon {
  font-size:18px !important;
}

.pl-badge-project {
  background:#F7F1E7 !important;
  color:#8A6A17 !important;
  border:1px solid #C9A64B !important;
}

.pl-about-section {
  max-width:760px;
  margin:40px auto;
  padding:0 10px;
  box-sizing:border-box;
  font-family:Georgia,"Times New Roman",serif;
}

.pl-about-nav {
  max-width:760px;
  margin:22px auto -20px;
  padding:0;
  box-sizing:border-box;
  text-align:left;
}

.pl-about-nav .pl-back {
  margin-top:0;
}

.pl-about-card {
  margin-top:40px;
  padding:42px 40px 38px;
  background:#F7F1E7;
  border:1px solid #C9A64B;
  border-radius:14px;
  box-shadow:
    0 8px 25px rgba(0,0,0,.22),
    0 0 0 1px rgba(201,166,75,.12);
  box-sizing:border-box;
  color:#4A4235;
  text-align:left;
}

.pl-about-symbol {
  text-align:center;
  color:#B8912E;
  font-size:34px;
  line-height:1;
  margin-bottom:9px;
}

.pl-about-eyebrow {
  text-align:center;
  color:#8A6A17;
  font-size:10px;
  font-weight:bold;
  letter-spacing:2px;
  margin-bottom:9px;
}

.pl-about-card h2 {
  margin:0 0 28px;
  text-align:center;
  color:#17130B !important;
  font-size:28px;
  line-height:1.25;
}

.pl-about-card &gt; p {
  max-width:600px;
  margin:0 auto 18px;
  font-size:15px;
  line-height:1.75;
  color:#4A4235;
}

.pl-about-card p strong {
  color:#17130B;
}

.pl-about-highlight {
  max-width:600px;
  margin:27px auto;
  padding:20px 22px;
  background:#FFF9E5;
  border:1px solid #D7C46A;
  border-radius:10px;
}

.pl-about-highlight &gt; strong {
  display:block;
  margin-bottom:8px;
  color:#8A6A17;
  font-size:14px;
  letter-spacing:.3px;
}

.pl-about-highlight p {
  margin:0;
  color:#4A4235;
  font-size:14px;
  line-height:1.7;
}

.pl-about-contact {
  max-width:600px;
  margin:34px auto 0;
  padding:25px 22px;
  background:#17130B;
  border:1px solid #B8912E;
  border-radius:11px;
  text-align:center;
}

.pl-about-contact h3 {
  margin:0 0 10px;
  color:#E3C66B !important;
  font-size:16px;
  letter-spacing:.7px;
}

.pl-about-contact p {
  margin:0 auto 13px;
  max-width:470px;
  color:#D9CEAD;
  font-size:13px;
  line-height:1.65;
}

.pl-about-email {
  display:inline-block;
  color:#E3C66B !important;
  font-size:15px;
  font-weight:bold;
  text-decoration:none !important;
  border-bottom:1px solid rgba(227,198,107,.55);
  padding-bottom:2px;
}

.pl-about-email:hover {
  color:#FFF1BC !important;
}

.pl-about-signature {
  max-width:600px;
  margin:28px auto 0;
  text-align:right;
  color:#4A4235;
}

.pl-about-signature span {
  display:block;
  margin-bottom:5px;
  font-size:14px;
  font-style:italic;
}

.pl-about-signature strong {
  display:block;
  color:#8A6A17;
  font-size:20px;
  font-style:italic;
  font-weight:normal;
}

@media screen and (max-width:700px) {
  .pl-about-section {
    margin:20px auto;
  }

  .pl-about-card {
    margin-top:34px;
    padding:30px 20px 27px;
  }

  .pl-about-card h2 {
    font-size:23px;
  }

  .pl-about-card &gt; p {
    font-size:14px;
    line-height:1.7;
  }

  .pl-about-highlight {
    padding:17px 16px;
  }

  .pl-about-contact {
    padding:22px 16px;
  }
}
&lt;/style&gt;

&lt;script&gt;
/* =========================================================
   DESPRE PROIECT - NAVIGARE FARA REFRESH
========================================================= */
function deschideDespreProiectPL() {
  var ids = [
    "paginaPrincipala",
    "sectiuneDescopera",
    "sectiunePrognoza",
    "sectiuneCompatibilitate",
    "sectiuneSesiune",
    "sectiuneAstrograma"
  ];

  ids.forEach(function(id) {
    var el = document.getElementById(id);
    if (el) el.style.display = "none";
  });

  var despre = document.getElementById("sectiuneDespreProiect");
  if (despre) {
    despre.style.display = "block";
  }

  try {
    window.scrollTo({top:0, left:0, behavior:"smooth"});
  } catch (e) {
    window.scrollTo(0,0);
  }
}

function inchideDespreProiectPL() {
  var despre = document.getElementById("sectiuneDespreProiect");
  if (despre) {
    despre.style.display = "none";
  }

  var home = document.getElementById("paginaPrincipala");
  if (home) {
    home.style.display = "block";
  }

  try {
    window.scrollTo({top:0, left:0, behavior:"smooth"});
  } catch (e) {
    window.scrollTo(0,0);
  }
}
&lt;/script&gt;


&lt;style&gt;
/* DESPRE PROIECT - textul de contact pe un singur rand */
.pl-about-contact p {
  max-width:none !important;
  white-space:nowrap !important;
  font-size:13px !important;
}

@media screen and (max-width:700px) {
  .pl-about-contact p {
    font-size:clamp(9.5px, 2.7vw, 13px) !important;
    letter-spacing:-0.1px !important;
  }
}
&lt;/style&gt;


&lt;style&gt;
/* DESPRE PROIECT - BUTON SUSTINE / CUMPARA CARTEA */
.pl-about-support-action {
  max-width:600px;
  margin:25px auto 30px;
  text-align:center;
}

.pl-about-buy-book {
  display:inline-block !important;
  padding:13px 22px !important;
  background:#17130B !important;
  color:#E3C66B !important;
  border:1px solid #B8912E !important;
  border-radius:7px !important;
  box-shadow:0 5px 16px rgba(0,0,0,.16);
  text-decoration:none !important;
  font-family:Georgia,"Times New Roman",serif !important;
  font-size:12px !important;
  font-weight:bold !important;
  letter-spacing:.65px !important;
  text-align:center !important;
  transition:background .18s ease,color .18s ease,transform .18s ease !important;
}

.pl-about-buy-book:hover,
.pl-about-buy-book:focus {
  background:#B8912E !important;
  color:#111111 !important;
  transform:translateY(-1px);
  outline:none !important;
}

@media screen and (max-width:700px) {
  .pl-about-buy-book {
    max-width:100% !important;
    box-sizing:border-box !important;
    padding:12px 16px !important;
    font-size:11px !important;
  }
}
&lt;/style&gt;


&lt;style&gt;
/* =========================================================
   SEMNATURA "MihaiL" - ASPECT SCRIS DE MANA
========================================================= */
.pl-about-signature strong {
  font-family:"Segoe Script","Bradley Hand","Brush Script MT","Lucida Handwriting",cursive !important;
  font-size:25px !important;
  line-height:1.15 !important;
  font-style:normal !important;
  font-weight:400 !important;
  letter-spacing:.2px !important;
  color:#8A6A17 !important;
  transform:rotate(-2deg);
  transform-origin:right center;
}

@media screen and (max-width:700px) {
  .pl-about-signature strong {
    font-size:23px !important;
  }
}
&lt;/style&gt;


&lt;style&gt;
/* =========================================================
   DESPRE PROIECT - SOLUTII PERSONALIZATE
========================================================= */
.pl-about-solution {
  max-width:600px;
  margin:32px auto 24px;
  padding:24px 22px;
  box-sizing:border-box;
  background:#FFFDF8;
  border:1px solid #C9A64B;
  border-radius:11px;
  text-align:center;
}

.pl-about-solution-symbol {
  margin-bottom:9px;
  color:#B8912E;
  font-size:23px;
  line-height:1;
}

.pl-about-solution h3 {
  margin:0 0 12px;
  color:#17130B !important;
  font-family:Georgia,"Times New Roman",serif !important;
  font-size:13px;
  line-height:1.35;
  letter-spacing:.4px;
}

.pl-about-solution p {
  max-width:520px;
  margin:0 auto 18px;
  color:#4A4235;
  font-family:Georgia,"Times New Roman",serif;
  font-size:13.5px;
  line-height:1.7;
}

.pl-about-solution-label {
  margin-bottom:6px;
  color:#8A6A17;
  font-size:9px;
  font-weight:bold;
  letter-spacing:1.5px;
}

.pl-about-solution-email {
  display:inline-block;
  color:#8A6A17 !important;
  font-family:Georgia,"Times New Roman",serif;
  font-size:14px;
  font-weight:bold;
  text-decoration:none !important;
  border-bottom:1px solid rgba(138,106,23,.45);
  padding-bottom:2px;
}

.pl-about-solution-email:hover {
  color:#B8912E !important;
}

@media screen and (max-width:700px) {
  .pl-about-solution {
    padding:21px 16px;
    margin-top:27px;
  }

  .pl-about-solution h3 {
    font-size:14px;
  }

  .pl-about-solution p {
    font-size:13px;
  }
}
&lt;/style&gt;


&lt;style&gt;
/* HAI SA DISCUTAM - fara email duplicat */
.pl-about-solution-label {
  margin-top:18px !important;
  margin-bottom:0 !important;
}
&lt;/style&gt;


&lt;script&gt;
/* =========================================================
   VERIFICARE COD INAINTE DE GEOLOCALIZARE
   Codul este doar verificat aici; NU este consumat.
========================================================= */
window.PLVerificaCodAcces = function(cod, tip) {
  return new Promise(function(resolve, reject) {

    var endpoint =
      "https://script.google.com/macros/s/AKfycbzJK9msWoF8yhTNHj5IVrfIV3a9l9e4Nf3Tu_FVAQn1qiwkAM4Q3e25lh-b0RG3PrKx/exec";

    var callback =
      "PLCodCheck_" +
      Date.now() +
      "_" +
      Math.floor(Math.random() * 1000000);

    var script =
      document.createElement("script");

    var terminat = false;

    function curata() {
      try {
        delete window[callback];
      } catch(e) {
        window[callback] = undefined;
      }

      if (script &amp;&amp; script.parentNode) {
        script.parentNode.removeChild(script);
      }
    }

    var timer =
      setTimeout(function() {
        if (terminat) return;
        terminat = true;
        curata();
        reject(
          new Error(
            "Nu am putut verifica momentan codul de acces. Incearca din nou."
          )
        );
      }, 10000);

    window[callback] = function(raspuns) {
      if (terminat) return;
      terminat = true;
      clearTimeout(timer);
      curata();

      resolve(
        raspuns || {
          ok:false,
          mesaj:"Codul de acces nu este valid."
        }
      );
    };

    script.onerror = function() {
      if (terminat) return;
      terminat = true;
      clearTimeout(timer);
      curata();

      reject(
        new Error(
          "Nu am putut verifica momentan codul de acces. Incearca din nou."
        )
      );
    };

    script.src =
      endpoint +
      "?action=verificaCod" +
      "&amp;cod=" +
      encodeURIComponent(String(cod || "")) +
      "&amp;tip=" +
      encodeURIComponent(String(tip || "ASTRO")) +
      "&amp;callback=" +
      encodeURIComponent(callback) +
      "&amp;_=" +
      Date.now();

    document.body.appendChild(script);

  });
};
&lt;/script&gt;


&lt;style&gt;
/* =========================================================
   PROGNOZA DE MAINE - GRATUIT
========================================================= */
.pl-badge-info {
  background:#F1E8F7 !important;
  color:#6F4D7D !important;
  border:1px solid #C8A9D6 !important;
}

.pl-forecast-choice .pl-choice-icon {
  font-size:22px !important;
}

.pl-forecast-section {
  max-width:760px;
  margin:40px auto;
  padding:0 10px;
  box-sizing:border-box;
  font-family:Georgia,"Times New Roman",serif;
}

.pl-forecast-nav {
  max-width:760px;
  margin:22px auto -20px;
  padding:0;
  text-align:left;
}

.pl-forecast-nav .pl-back { margin-top:0; }

.pl-forecast-card {
  margin:40px auto;
  padding:38px;
  background:#F7F1E7;
  border:1px solid #C9A64B;
  border-radius:14px;
  box-shadow:0 8px 25px rgba(0,0,0,.22),0 0 0 1px rgba(201,166,75,.12);
  box-sizing:border-box;
  text-align:center;
}

.pl-forecast-free-badge {
  background:#2F6B4F !important;
  color:#FFFFFF !important;
  border-color:#2F6B4F !important;
}

.pl-forecast-symbol {
  width:62px; height:62px; margin:0 auto 14px;
  display:flex; align-items:center; justify-content:center;
  border:1px solid #C9A64B; border-radius:50%;
  color:#B8912E; font-size:31px; background:#FFFDF8;
}

.pl-forecast-card h2 {
  margin:0 0 12px; color:#17130B !important;
  font-size:28px; line-height:1.25;
}

.pl-forecast-intro {
  max-width:540px; margin:0 auto 28px; color:#4A4235;
  font-size:14px; line-height:1.65;
}

#plForecastForm { max-width:520px; margin:0 auto; text-align:left; }
#plForecastForm label {
  display:block; margin:18px 0 7px; color:#17130B; font-weight:bold;
}
#plForecastForm input, #plForecastForm select {
  width:100%; padding:13px; border:1px solid #CDBF9E; border-radius:7px;
  box-sizing:border-box; font-size:15px; background:#FFFDF8; color:#17130B;
}
#plForecastForm input:focus, #plForecastForm select:focus {
  outline:none; border-color:#B8912E; box-shadow:0 0 0 2px rgba(184,145,46,.18);
}
.pl-forecast-privacy {
  margin:18px 0 0; padding:11px 13px; background:#FFFDF8;
  border:1px solid #D7C8A5; border-radius:8px; color:#776B58;
  font-size:9.5px; line-height:1.45; text-align:center; opacity:.78;
}
.pl-forecast-submit {
  width:100%; margin-top:24px; padding:15px; background:#17130B; color:#E3C66B;
  border:1px solid #B8912E; border-radius:7px; font-size:16px; font-weight:bold;
  font-family:Georgia,"Times New Roman",serif; cursor:pointer;
}
.pl-forecast-submit:hover { background:#B8912E; color:#111; }
.pl-forecast-message {
  min-height:18px; margin-top:15px; text-align:center; color:#9B3D2C;
  font-size:13px; font-weight:bold; line-height:1.45;
}

.pl-forecast-result { max-width:590px; margin:0 auto; }
.pl-forecast-date {
  color:#8A6A17; font-size:12px; font-weight:bold; letter-spacing:.6px;
  text-transform:uppercase; margin-bottom:10px;
}
.pl-forecast-face {
  font-size:58px; line-height:1; margin:5px 0 10px;
}
.pl-forecast-result h2 { margin:0 0 6px; font-size:27px; }
.pl-forecast-zodiac { color:#776B58; font-size:13px; margin-bottom:24px; }
.pl-forecast-copy {
  text-align:left; background:#FFFDF8; border:1px solid #D7C8A5; border-radius:10px;
  padding:21px 22px; color:#40382D; font-size:15px; line-height:1.72;
}
.pl-forecast-copy p { margin:0 0 13px; }
.pl-forecast-copy p:last-child { margin-bottom:0; }
.pl-forecast-copy .pl-warning-sentence { font-weight:bold; color:#5E4A20; }

.pl-forecast-bridge {
  margin-top:24px; padding:20px 18px; border-top:1px solid #D7C8A5;
  border-bottom:1px solid #D7C8A5; color:#4A4235; font-size:14px; line-height:1.65;
}
.pl-forecast-bridge strong { color:#17130B; }
.pl-forecast-actions { margin-top:18px; display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.pl-forecast-action {
  min-height:58px; padding:11px 12px; border-radius:8px; cursor:pointer;
  font-family:Georgia,"Times New Roman",serif; font-weight:bold; font-size:12px; line-height:1.35;
}
.pl-forecast-action span { display:block; margin-top:4px; font-size:10px; font-weight:normal; }
.pl-forecast-action-astro { background:#FFFDF8; color:#17130B; border:1px solid #CDBF9E; }
.pl-forecast-action-couple { background:#17130B; color:#E3C66B; border:1px solid #B8912E; }
.pl-forecast-again {
  margin-top:17px; padding:10px 15px; background:transparent; color:#776B58;
  border:1px solid #CDBF9E; border-radius:7px; cursor:pointer; font-family:Georgia,"Times New Roman",serif;
}

@media (max-width:600px) {
  .pl-forecast-card { padding:28px 18px; }
  .pl-forecast-card h2 { font-size:23px; }
  .pl-forecast-actions { grid-template-columns:1fr; }
  .pl-forecast-copy { padding:18px 16px; font-size:14px; }
}


/* =========================================================
   CONFIDENTIALITATE - TEXT MIC SI DISCRET PESTE TOT
========================================================= */
.privacy-box,
.pl-forecast-privacy {
  font-size:9px !important;
  line-height:1.35 !important;
  color:#776B58 !important;
  font-weight:normal !important;
  opacity:.72 !important;
}

@media (max-width:600px) {
  .privacy-box,
  .pl-forecast-privacy {
    font-size:9px !important;
    line-height:1.35 !important;
  }
}

&lt;/style&gt;
&lt;script&gt;
/* =========================================================
   PROGNOZA DE MAINE - GENERATOR LOCAL, DETERMINIST
   Aceeasi data nasterii + sex + zi tinta =&gt; acelasi rezultat.
========================================================= */
(function() {
  function hashPL(text) {
    var h = 2166136261;
    for (var i = 0; i &lt; text.length; i++) {
      h ^= text.charCodeAt(i);
      h = Math.imul(h, 16777619);
    }
    return h &gt;&gt;&gt; 0;
  }

  function pickPL(arr, seed, salt) {
    return arr[hashPL(String(seed) + "|" + salt) % arr.length];
  }

  function parseDatePL(value) {
    var m = String(value || "").trim().match(/^(\d{2})[.\/-](\d{2})[.\/-](\d{4})$/);
    if (!m) return null;
    var d = Number(m[1]), mo = Number(m[2]), y = Number(m[3]);
    var dt = new Date(y, mo - 1, d);
    if (dt.getFullYear() !== y || dt.getMonth() !== mo - 1 || dt.getDate() !== d) return null;
    var now = new Date();
    if (dt &gt; now || y &lt; now.getFullYear() - 120) return null;
    return { day:d, month:mo, year:y, normalized:String(d).padStart(2,"0")+"."+String(mo).padStart(2,"0")+"."+y };
  }

  function zodiacPL(d, m) {
    if ((m===3&amp;&amp;d&gt;=21)||(m===4&amp;&amp;d&lt;=19)) return "Berbec";
    if ((m===4&amp;&amp;d&gt;=20)||(m===5&amp;&amp;d&lt;=20)) return "Taur";
    if ((m===5&amp;&amp;d&gt;=21)||(m===6&amp;&amp;d&lt;=20)) return "Gemeni";
    if ((m===6&amp;&amp;d&gt;=21)||(m===7&amp;&amp;d&lt;=22)) return "Rac";
    if ((m===7&amp;&amp;d&gt;=23)||(m===8&amp;&amp;d&lt;=22)) return "Leu";
    if ((m===8&amp;&amp;d&gt;=23)||(m===9&amp;&amp;d&lt;=22)) return "Fecioară";
    if ((m===9&amp;&amp;d&gt;=23)||(m===10&amp;&amp;d&lt;=22)) return "Balanță";
    if ((m===10&amp;&amp;d&gt;=23)||(m===11&amp;&amp;d&lt;=21)) return "Scorpion";
    if ((m===11&amp;&amp;d&gt;=22)||(m===12&amp;&amp;d&lt;=21)) return "Săgetător";
    if ((m===12&amp;&amp;d&gt;=22)||(m===1&amp;&amp;d&lt;=19)) return "Capricorn";
    if ((m===1&amp;&amp;d&gt;=20)||(m===2&amp;&amp;d&lt;=18)) return "Vărsător";
    return "Pești";
  }

  function tomorrowPL() {
    var n = new Date();
    return new Date(n.getFullYear(), n.getMonth(), n.getDate() + 1, 12, 0, 0, 0);
  }

  function isoLocalPL(dt) {
    return dt.getFullYear()+"-"+String(dt.getMonth()+1).padStart(2,"0")+"-"+String(dt.getDate()).padStart(2,"0");
  }

  function prettyDatePL(dt) {
    var luni=["ianuarie","februarie","martie","aprilie","mai","iunie","iulie","august","septembrie","octombrie","noiembrie","decembrie"];
    return dt.getDate()+" "+luni[dt.getMonth()]+" "+dt.getFullYear();
  }

  var banks = {
    pozitiv: {
      face:"&#128522;", title:"MÂINE ARATĂ BINE",
      intro:[
        "Mâine pare să vină cu o energie mai ușoară pentru tine, iar o situație care ți-a ocupat gândurile în ultima perioadă poate începe să se așeze într-un mod mai clar și mai firesc.",
        "Ziua de mâine poate aduce acel sentiment plăcut că lucrurile încep să se lege, chiar dacă schimbarea nu va fi spectaculoasă și apare mai degrabă printr-un detaliu care îți ridică moralul.",
        "Există șanse ca mâine să observi o oportunitate, o idee sau un gest pe care în alte zile l-ai fi trecut cu vederea, iar tocmai acel lucru mic să dea tonul unei zile mai luminoase.",
        "Mâine ai putea simți că ritmul devine mai prietenos cu tine și că o problemă care părea complicată își pierde din greutate atunci când o privești fără grabă.",
        "O stare mai optimistă te poate însoți mâine și îți poate fi mai ușor să vezi partea folositoare a unei situații care până acum ți se părea doar obositoare.",
        "Ziua de mâine are potențialul să îți aducă mai multă încredere în propriile alegeri, mai ales dacă îți dai voie să urmezi ceea ce simți fără să ignori însă detaliile practice."
      ],
      rel:[
        "În relațiile cu ceilalți, o conversație sinceră poate apropia două puncte de vedere și există șansa ca cineva să îți răspundă mai cald sau mai deschis decât te-ai fi așteptat.",
        "În plan personal, o discuție spontană sau un gest simplu poate crea o apropiere frumoasă, mai ales dacă alegi să spui direct ce simți în loc să aștepți ca celălalt să ghicească.",
        "O persoană apropiată îți poate oferi exact perspectiva de care aveai nevoie, chiar dacă la început nu ești complet de acord cu ceea ce auzi și ai nevoie de puțin timp ca să procesezi.",
        "Relațiile sunt favorizate atunci când lași loc și pentru spontaneitate; un mesaj, o invitație sau o discuție pe nepregătite poate schimba atmosfera în bine.",
        "Dacă ai ceva nespus, mâine poate fi un moment bun să îl exprimi cu calm, pentru că există mai mult spațiu pentru înțelegere decât pentru confruntare.",
        "În apropierea oamenilor potriviți, ziua poate căpăta o notă mai luminoasă, iar un schimb sincer de idei te poate ajuta să vezi mai clar și ce ai tu nevoie."
      ],
      work:[
        "Pe partea practică, un lucru pe care îl rezolvi la timp îți poate elibera mintea pentru restul zilei, așa că merită să începi cu sarcina pe care ai tot împins-o mai târziu.",
        "La muncă sau în planurile personale, progresul vine mai ușor dacă alegi un singur obiectiv important și îl duci până la capăt, în loc să îți împarți atenția în prea multe direcții.",
        "O decizie mică legată de bani, program sau organizare poate avea un efect mai bun decât pare la prima vedere, mai ales dacă este luată după ce verifici toate detaliile.",
        "Ai șanse să fii mai eficient decât de obicei dacă îți păstrezi ritmul și nu lași solicitările altora să îți schimbe complet prioritățile stabilite pentru zi.",
        "Mâine poate fi potrivită pentru a pune ordine într-un plan, pentru a relua ceva început sau pentru a face primul pas într-o direcție pe care ai tot analizat-o.",
        "În zona profesională sau financiară, lucrurile par mai clare atunci când alegi pragmatismul și nu te grăbești să interpretezi orice întârziere ca pe un semn rău."
      ],
      warn:[
        "Totuși, ai grijă să nu iei o decizie importantă doar pentru că în acel moment totul pare mai simplu decât este în realitate; entuziasmul este util, dar merită însoțit de puțină verificare.",
        "Atenție la promisiunile făcute prea repede, mai ales dacă programul tău este deja încărcat; o zi bună nu înseamnă că trebuie să spui da tuturor lucrurilor care apar.",
        "Nu lăsa o veste bună să te facă să ignori un detaliu care merită verificat înainte de a merge mai departe, mai ales când sunt implicați bani sau un angajament pe termen mai lung.",
        "Singura capcană a zilei poate fi graba de a profita de tot ceea ce apare; păstrează ceva timp și pentru tine, ca energia bună să nu se transforme spre seară în oboseală.",
        "Ai grijă să nu confunzi optimismul cu certitudinea, pentru că unele lucruri au nevoie de încă puțin timp înainte să poți spune că sunt cu adevărat rezolvate.",
        "Bucură-te de ceea ce merge bine, dar evită să forțezi un răspuns sau o concluzie doar pentru a încheia repede o situație care încă se construiește."
      ],
      close:[
        "Spre seară, ritmul se poate liniști plăcut și vei aprecia mai mult ziua dacă îți lași câteva momente fără planuri, doar pentru a observa ce a mers bine.",
        "Finalul zilei te poate găsi cu mai multă claritate decât ai avut dimineața, iar un lucru aparent mărunt poate deveni exact confirmarea de care aveai nevoie.",
        "Dacă nu încerci să controlezi fiecare detaliu, mâine are șanse să îți lase o impresie bună și să îți amintească faptul că uneori progresul vine discret.",
        "Păstrează spre seară un moment pentru tine și întreabă-te ce ai vrea să repeți din această zi; răspunsul poate fi mai util decât pare.",
        "Ziua poate încheia într-o notă senină dacă alegi să nu complici ceea ce este deja simplu și să te bucuri de lucrurile care vin natural.",
        "În ansamblu, este o zi în care merită să fii prezent în ceea ce trăiești, fără să alergi imediat către următorul obiectiv."
      ]
    },
    neutru: {
      face:"&#128528;", title:"MÂINE E DESPRE ECHILIBRU",
      intro:[
        "Mâine nu pare să fie o zi a marilor schimbări, dar tocmai ritmul ei mai liniștit îți poate da ocazia să rezolvi ceva ce ai amânat și să privești mai limpede o situație care te preocupă.",
        "Ziua de mâine vine mai degrabă cu un ritm constant decât cu surprize, iar asta îți poate fi de folos dacă ai nevoie să pui ordine în lucruri sau să îți recapeți concentrarea.",
        "Mâine poate părea la început o zi obișnuită, însă tocmai lipsa agitației îți oferă spațiul necesar să observi ce merită păstrat și ce ai putea simplifica în programul tău.",
        "Energia zilei de mâine este una echilibrată, fără extreme mari, iar rezultatul depinde mai mult de felul în care îți alegi prioritățile decât de ceea ce apare din exterior.",
        "Nu se anunță neapărat o zi spectaculoasă, dar poate deveni una folositoare dacă îți permiți să faci lucrurile pe rând și să nu îți ceri rezultate imediate pentru orice.",
        "Mâine îți poate cere mai multă răbdare decât entuziasm, dar tocmai acest ritm îți poate da o perspectivă mai sănătoasă asupra unei situații care a fost prea mult timp în centrul atenției tale."
      ],
      rel:[
        "În relațiile cu ceilalți, încearcă să nu cauți semnificații ascunse în fiecare cuvânt și să nu transformi o reacție de moment într-o concluzie definitivă despre ceea ce simte cineva.",
        "În plan personal, lucrurile merg mai bine dacă lași conversațiile să curgă fără să forțezi o explicație imediată, pentru că nu orice tăcere sau răspuns scurt ascunde o problemă.",
        "Cineva apropiat poate avea un ritm diferit de al tău mâine, iar puțină răbdare poate face diferența dintre o neînțelegere inutilă și o discuție care se încheie firesc.",
        "O relație importantă poate avea nevoie mai degrabă de prezență decât de soluții; ascultă înainte să încerci să repari ceva ce poate nici nu este cu adevărat stricat.",
        "Evită să pui presiune pe ceilalți pentru a răspunde exact cum ți-ai dori, pentru că ziua favorizează mai mult observația și adaptarea decât concluziile rapide.",
        "În apropierea celor dragi, o atitudine calmă va conta mai mult decât cuvintele perfecte, iar o discuție simplă poate fi suficientă pentru a păstra echilibrul dintre voi."
      ],
      work:[
        "Pe partea practică, o listă scurtă și realistă îți va fi mai utilă decât un plan foarte ambițios, pentru că ziua răsplătește consecvența și nu viteza cu care încerci să termini totul.",
        "La muncă sau în treburile personale, încearcă să termini ceea ce ai început înainte să deschizi alte direcții; senzația de progres va veni din ordine, nu din numărul de lucruri începute.",
        "În chestiunile financiare, ziua nu cere nici risc, nici teamă, ci doar puțină atenție la detalii și evitarea cumpărăturilor făcute din plictiseală sau impuls.",
        "Un lucru administrativ sau practic pe care l-ai tot amânat poate fi rezolvat mai ușor decât crezi, mai ales dacă nu îl transformi mental într-o sarcină mai mare decât este.",
        "În zona profesională, păstrează un ritm constant și nu interpreta o întârziere drept eșec; uneori progresul unei zile se vede abia după ce ai terminat-o.",
        "Mâine este mai potrivită pentru consolidare decât pentru schimbări bruște, așa că poți câștiga mai mult punând la punct ce ai deja decât pornind în prea multe direcții noi."
      ],
      warn:[
        "Ai grijă mai ales la oboseala din a doua parte a zilei, pentru că atunci poți deveni mai sensibil la tonul celorlalți și poți interpreta prea personal lucruri care nu au fost spuse cu această intenție.",
        "Atenție să nu îți umpli programul doar pentru a simți că ai făcut suficient; dacă apare oboseala, o pauză scurtă poate fi mai productivă decât încă o sarcină bifată pe fugă.",
        "Nu lua o lipsă de răspuns drept refuz și nici o întârziere drept semn rău; unele lucruri au pur și simplu nevoie de mai mult timp decât ai vrea mâine.",
        "Evită deciziile luate doar pentru a scăpa de o incertitudine, pentru că o noapte în plus de gândire poate aduce o perspectivă mai bună decât o concluzie grăbită.",
        "Fii atent la tendința de a compara ritmul tău cu al altora; ceea ce pare lent mâine poate fi exact viteza de care ai nevoie pentru a nu rata un detaliu important.",
        "Nu transforma o zi liniștită într-una complicată căutând probleme acolo unde nu sunt; dacă ceva nu cere o reacție imediată, lasă-l să se așeze."
      ],
      close:[
        "Nu trebuie ca fiecare zi să aducă ceva spectaculos; uneori cele mai importante lucruri se așază tocmai atunci când aparent nu se întâmplă nimic și ai timp să le vezi mai clar.",
        "Spre finalul zilei, vei aprecia mai mult lucrurile simple dacă nu îți măsori starea doar prin cât de multe ai reușit să faci într-un timp scurt.",
        "Ziua îți poate lăsa un sentiment bun dacă alegi echilibrul în locul presiunii și accepți că unele răspunsuri nu trebuie obținute chiar mâine.",
        "O seară mai liniștită îți poate pune gândurile în ordine și te poate ajuta să vezi că nu orice zi trebuie să fie memorabilă pentru a fi valoroasă.",
        "În ansamblu, mâine câștigă cel care își păstrează ritmul, își ascultă limitele și nu transformă fiecare detaliu într-un test personal.",
        "Lasă ziua să fie ceea ce este, fără să îi ceri mai mult decât poate oferi, iar spre seară s-ar putea să observi că ai rezolvat totuși mai multe decât credeai."
      ]
    },
    atentie: {
      face:"&#128543;", title:"MÂINE, PUȚINĂ ATENȚIE",
      intro:[
        "Mâine s-ar putea să simți că răbdarea îți este pusă la încercare mai ușor, iar o situație pe care în mod normal ai trece-o cu vederea poate să te atingă mai mult decât te-ai fi așteptat.",
        "Ziua de mâine poate avea câteva momente în care lucrurile nu se mișcă în ritmul pe care ți-l dorești, iar provocarea principală va fi să nu transformi frustrarea de moment într-o concluzie definitivă.",
        "Mâine poți fi mai sensibil la ceea ce se întâmplă în jurul tău și un detaliu minor poate căpăta o importanță prea mare dacă îl analizezi exact în momentul în care ești obosit sau grăbit.",
        "Energia zilei de mâine cere puțin mai multă atenție la reacții, pentru că există tendința de a răspunde rapid înainte să ai toate informațiile sau înainte să se liniștească emoția inițială.",
        "Unele lucruri pot părea mai complicate mâine decât sunt în realitate, mai ales în prima parte a zilei, când răbdarea și capacitatea de a relativiza pot fi ceva mai scăzute.",
        "Mâine poate veni cu un mic test de răbdare sau flexibilitate, dar nu este nevoie să îl tratezi ca pe un semn că întreaga zi va merge prost; felul în care reacționezi poate schimba mult tonul ei."
      ],
      rel:[
        "În relațiile cu ceilalți, încearcă să nu răspunzi imediat atunci când un ton, un mesaj sau o observație te deranjează, pentru că există riscul să auzi mai dur ceea ce celălalt nu a intenționat astfel.",
        "În plan personal, o diferență de opinie poate deveni mai mare decât este dacă amândoi încercați să aveți ultimul cuvânt, așa că uneori cea mai bună alegere este să lăsați discuția să respire.",
        "O persoană apropiată poate părea mai distantă sau mai greu de citit, dar evită să umpli singur spațiile goale cu scenarii; un răspuns simplu și direct poate clarifica mai mult decât presupunerile.",
        "Dacă apare o discuție sensibilă, încearcă să separi ceea ce simți în acel moment de ceea ce s-a spus efectiv, pentru că diferența dintre ele poate fi mai mare decât pare la prima reacție.",
        "În relațiile apropiate, răbdarea va conta mai mult decât argumentele bine construite; nu orice lucru trebuie rezolvat în aceeași conversație în care a apărut.",
        "Mâine nu este cea mai bună zi pentru a testa sentimentele cuiva sau pentru a cere confirmări repetate; lasă lucrurile să se arate prin comportamente, nu doar prin răspunsuri obținute sub presiune."
      ],
      work:[
        "Pe partea practică, verifică de două ori detaliile înainte să trimiți un mesaj important, să confirmi o întâlnire sau să iei o decizie financiară, pentru că graba poate produce mici neplăceri evitabile.",
        "La muncă sau în treburile personale, încearcă să nu te lupți simultan cu toate problemele; alege ce este cu adevărat urgent și lasă restul pentru momentul în care ai mai multă claritate.",
        "În chestiunile de bani, program sau obligații, păstrează o marjă de siguranță și nu conta pe faptul că totul va merge exact la minut, deoarece o mică întârziere poate modifica planul zilei.",
        "O sarcină care pare simplă poate cere puțin mai mult timp decât ai calculat, așa că lasă spațiu între activități și evită să promiți termene prea strânse doar pentru a mulțumi pe cineva.",
        "Dacă trebuie să iei o hotărâre importantă, strânge informațiile necesare și nu te grăbi să închizi subiectul doar pentru a scăpa de presiunea lui; mâine claritatea vine mai bine după o pauză.",
        "În zona profesională, evită să iei personal o observație sau o schimbare de plan; ceea ce pare o critică poate fi pur și simplu o ajustare de moment care nu spune nimic despre valoarea muncii tale."
      ],
      warn:[
        "Atenție în special la cuvintele spuse impulsiv, pentru că o discuție mică nu merită transformată într-un conflict mare și va fi mult mai ușor să clarifici după ce trece reacția inițială.",
        "Încearcă să nu iei decizii importante atunci când ești deja iritat sau obosit; câteva ore de distanță pot schimba complet felul în care privești aceeași situație.",
        "Ai grijă la graba de a demonstra că ai dreptate, mai ales într-o conversație apropiată; uneori poți câștiga argumentul și pierde tocmai liniștea pe care încercai să o protejezi.",
        "Nu lăsa o întârziere, un mesaj fără răspuns sau o schimbare de plan să devină dovada unei probleme mai mari înainte să verifici ce s-a întâmplat de fapt.",
        "Fii atent la impulsul de a cheltui, de a renunța sau de a răspunde doar pentru a descărca o stare; ceea ce pare urgent mâine poate să nu mai pară la fel după puțin timp.",
        "Cea mai utilă precauție pentru mâine este să îți acorzi câteva secunde înainte de reacțiile importante, pentru că exact acel mic spațiu poate evita o neînțelegere inutilă."
      ],
      close:[
        "Partea bună este că energia zilei se poate liniști spre seară, iar ceea ce dimineața părea complicat poate căpăta o cu totul altă perspectivă dacă nu îl forțezi să se rezolve imediat.",
        "Spre finalul zilei, multe lucruri se pot așeza de la sine dacă le-ai lăsat suficient spațiu, iar un moment mai tensionat nu trebuie să definească întreaga zi.",
        "Dacă îți protejezi ritmul și alegi răspunsurile în locul reacțiilor, ziua poate deveni mult mai blândă decât părea la început și îți poate lăsa chiar o lecție folositoare.",
        "O seară mai liniștită poate schimba complet impresia pe care ai avut-o despre zi, așa că nu trage concluzii definitive în primul moment în care ceva nu merge conform planului.",
        "Mâine nu este o zi de care să te temi, ci una în care puțină răbdare și mai multă atenție la propriile reacții pot face diferența dintre tensiune și echilibru.",
        "În ansamblu, cheia zilei este să nu lași un episod minor să ocupe tot spațiul; după ce trece, vei vedea mai clar cât de mic a fost de fapt."
      ]
    }
  };

  window.PLResetPrognoza = function() {
    var formView=document.getElementById("plForecastFormView");
    var resultView=document.getElementById("plForecastResultView");
    var msg=document.getElementById("plForecastMessage");
    var f=document.getElementById("plForecastForm");
    if (formView) formView.style.display="block";
    if (resultView) { resultView.style.display="none"; resultView.innerHTML=""; }
    if (msg) msg.textContent="";
    if (f) f.reset();
  };

  window.genereazaPrognozaMainePL = function() {
    var birthEl=document.getElementById("plForecastBirth");
    var sexEl=document.getElementById("plForecastSex");
    var msg=document.getElementById("plForecastMessage");
    var formView=document.getElementById("plForecastFormView");
    var resultView=document.getElementById("plForecastResultView");
    if (!birthEl || !sexEl || !resultView) return;

    var birth=parseDatePL(birthEl.value);
    var sex=sexEl.value;
    if (!birth) { if(msg) msg.textContent="Introdu o dată de naștere validă în formatul ZZ.LL.AAAA."; return; }
    if (sex!=="F" &amp;&amp; sex!=="M") { if(msg) msg.textContent="Selectează sexul pentru a continua."; return; }
    if(msg) msg.textContent="";

    var target=tomorrowPL();
    var zodiac=zodiacPL(birth.day,birth.month);
    var seedText=birth.normalized+"|"+sex+"|"+isoLocalPL(target)+"|"+zodiac;
    var seed=hashPL(seedText);
    var score=hashPL(seedText+"|stare")%100;
    var state=score&lt;45?"pozitiv":(score&lt;85?"neutru":"atentie");
    var b=banks[state];

    var sentences=[
      pickPL(b.intro,seed,"intro"),
      pickPL(b.rel,seed,"rel"),
      pickPL(b.work,seed,"work"),
      pickPL(b.warn,seed,"warn"),
      pickPL(b.close,seed,"close")
    ];

    var address=sex==="F"?"pregătită":"pregătit";
    var html='';
    html+='&lt;div class="pl-forecast-result"&gt;';
    html+='&lt;div class="pl-forecast-date"&gt;Prognoză pentru '+prettyDatePL(target)+'&lt;/div&gt;';
    html+='&lt;div class="pl-forecast-face" aria-hidden="true"&gt;'+b.face+'&lt;/div&gt;';
    html+='&lt;h2&gt;'+b.title+'&lt;/h2&gt;';
    html+='&lt;div class="pl-forecast-zodiac"&gt;'+zodiac+' • '+(sex==="F"?"Feminin":"Masculin")+'&lt;/div&gt;';
    html+='&lt;div class="pl-forecast-copy"&gt;';
    html+='&lt;p&gt;'+sentences[0]+'&lt;/p&gt;';
    html+='&lt;p&gt;'+sentences[1]+'&lt;/p&gt;';
    html+='&lt;p&gt;'+sentences[2]+'&lt;/p&gt;';
    html+='&lt;p class="pl-warning-sentence"&gt;'+sentences[3]+'&lt;/p&gt;';
    html+='&lt;p&gt;'+sentences[4]+'&lt;/p&gt;';
    html+='&lt;/div&gt;';
    html+='&lt;div class="pl-forecast-bridge"&gt;&lt;strong&gt;O zi e doar o pagină nescrisă din povestea ta.&lt;br&gt;Să te cunoști mai bine te poate ajuta să înțelegi de ce simți, alegi sau reacționezi într-un anumit fel. Astrograma ta poate fi un început. Iar dacă ești într-o relație, uneori zilele mai senine încep atunci când vă înțelegeți mai bine unul pe celălalt.&lt;/strong&gt;&lt;/div&gt;';
    html+='&lt;div class="pl-forecast-actions"&gt;';
    html+='&lt;button type="button" class="pl-forecast-action pl-forecast-action-astro" onclick="deschideSectiunePL(&amp;quot;astro&amp;quot;)"&gt;✦ DESCOPERĂ ASTROGRAMA TA&lt;span&gt;Începe cu tine&lt;/span&gt;&lt;/button&gt;';
    html+='&lt;button type="button" class="pl-forecast-action pl-forecast-action-couple" onclick="deschideSectiunePL(&amp;quot;compatibilitate&amp;quot;)"&gt;♡ DESCOPERĂ COMPATIBILITATEA DE CUPLU&lt;span&gt;Pentru mai multe zile senine în doi&lt;/span&gt;&lt;/button&gt;';
    html+='&lt;/div&gt;';
    html+='&lt;/div&gt;';

    resultView.innerHTML=html;
    if(formView) formView.style.display="none";
    resultView.style.display="block";
    try { resultView.scrollIntoView({behavior:"smooth",block:"start"}); } catch(e) {}
  };

  document.addEventListener("input", function(e) {
    if (e.target &amp;&amp; e.target.id === "plForecastBirth") {
      var v=e.target.value.replace(/[^0-9]/g,"").slice(0,8);
      if (v.length&gt;4) v=v.slice(0,2)+"."+v.slice(2,4)+"."+v.slice(4);
      else if (v.length&gt;2) v=v.slice(0,2)+"."+v.slice(2);
      e.target.value=v;
    }
  });
})();
&lt;/script&gt;


&lt;script&gt;
(function(){
  var ENDPOINT="https://script.google.com/macros/s/AKfycbzJK9msWoF8yhTNHj5IVrfIV3a9l9e4Nf3Tu_FVAQn1qiwkAM4Q3e25lh-b0RG3PrKx/exec";
  /* Inlocuieste cu linkul noii carti cand este publicata. */
  var BOOK_URL="";
  var CAT={REL:"RELATII",FAM:"FAMILIE",CAR:"CARIERA",BAN:"BANI SI SIGURANTA",SINE:"TINE",DEC:"SCHIMBARE / DECIZIE",SING:"SINGURATATE / CONECTARE"};
  function o(t,s){return {t:t,s:s||{}}}
  var Q=[
    {q:"Care zona a vietii tale iti ocupa cel mai des gandurile in aceasta perioada?",o:[o("Relatia de cuplu / o persoana",{REL:3}),o("Familia",{FAM:3}),o("Munca / cariera",{CAR:3}),o("Banii / siguranta financiara",{BAN:3}),o("Eu si felul in care ma simt",{SINE:3}),o("O schimbare sau o decizie importanta",{DEC:3}),o("Singuratatea / lipsa unei relatii",{SING:3}),o("Altceva",{SINE:1,DEC:1})]},
    {q:"Daca ai putea schimba un singur lucru acum, unde ai interveni prima data?",o:[o("In relatiile mele",{REL:2,SING:1}),o("In familie",{FAM:3}),o("In viata profesionala",{CAR:3}),o("In situatia financiara",{BAN:3}),o("In felul in care ma vad pe mine",{SINE:3}),o("In directia in care merge viata mea",{DEC:3})]},
    {q:"Cand ramai singur/a cu gandurile tale, ele se intorc cel mai des la:",o:[o("O anumita persoana",{REL:3}),o("Un conflict sau o situatie nerezolvata",{REL:1,FAM:1,DEC:1}),o("Viitorul meu",{DEC:2,CAR:1}),o("Ceva ce am facut sau nu am facut",{SINE:2,DEC:1}),o("Ce ar trebui sa schimb",{DEC:3}),o("Sentimentul ca imi lipseste ceva, fara sa stiu exact ce",{SINE:2,SING:2})]},
    {q:"Ce simti ca iti lipseste cel mai mult acum?",o:[o("Afectiune",{REL:2,SING:2}),o("Siguranta",{BAN:1,REL:1,FAM:1}),o("Claritate",{DEC:2,SINE:1}),o("Recunoastere",{CAR:2,SINE:1}),o("Libertate",{DEC:2,SINE:1}),o("Stabilitate",{BAN:2,FAM:1}),o("Incredere in mine",{SINE:3}),o("Un scop",{SINE:2,CAR:1})]},
    {q:"Care afirmatie se apropie cel mai mult de situatia ta?",o:[o("Exista cineva pe care mi-as dori sa-l inteleg mai bine",{REL:3}),o("Exista o situatie din familie care ma apasa",{FAM:3}),o("Nu sunt unde mi-as dori profesional",{CAR:3}),o("Banii imi influenteaza prea mult alegerile",{BAN:3}),o("Simt ca raspunsul trebuie cautat mai ales in mine",{SINE:3}),o("Trebuie sa aleg ceva si nu stiu ce",{DEC:3})]},
    {q:"In ultimele saptamani ai simtit mai des:",o:[o("Neliniste",{}),o("Tristete",{}),o("Frustrare",{}),o("Furie",{}),o("Confuzie",{}),o("Singuratate",{SING:2}),o("Nemultumire",{}),o("Sunt relativ bine, dar caut raspunsuri",{})]},
    {q:"Cand apare o problema importanta, primul tau impuls este sa:",o:[o("O analizez foarte mult",{}),o("Vorbesc cu cineva",{}),o("O rezolv imediat",{}),o("Astept sa vad ce se intampla",{}),o("O evit o perioada",{}),o("Reactionez emotional",{})]},
    {q:"Cat de des te surprinzi reluand in minte aceeasi situatie?",o:[o("Aproape permanent",{}),o("Des",{}),o("Uneori",{}),o("Rareori",{})]},
    {q:"Atunci cand nu stii ce gandeste sau ce intentioneaza cineva important pentru tine:",o:[o("Intreb direct",{REL:1}),o("Analizez comportamentul lui/ei",{REL:2}),o("Imi imaginez mai multe scenarii",{REL:2,SINE:1}),o("Astept",{REL:1}),o("Ma retrag ca sa ma protejez",{REL:1,SINE:1})]},
    {q:"Intr-un conflict, ce faci cel mai des?",o:[o("Spun imediat ce ma deranjeaza",{}),o("Incerc sa pastrez pacea",{}),o("Tac, dar ma gandesc mult dupa",{}),o("Ma retrag",{}),o("Devin defensiv/a",{}),o("Depinde foarte mult de persoana",{})]},
    {q:"Ce te afecteaza mai puternic?",o:[o("Sa fiu respins/a",{REL:1,SING:1}),o("Sa fiu dezamagit/a",{}),o("Sa pierd controlul",{DEC:1}),o("Sa simt ca am esuat",{SINE:1,CAR:1}),o("Sa fiu ignorat/a",{REL:1,SING:1}),o("Sa iau decizia gresita",{DEC:2})]},
    {q:"Cand cineva apropiat devine distant, ai tendinta sa:",o:[o("Ma apropii si mai mult",{REL:2}),o("Cer explicatii",{REL:2}),o("Analizez ce am facut gresit",{REL:2,SINE:1}),o("Ma retrag si eu",{REL:1}),o("Ma prefac ca nu ma afecteaza",{REL:1}),o("Nu este relevant pentru situatia mea",{})]},
    {q:"Ai ramas intr-o situatie care nu te mai multumea pentru ca schimbarea parea mai dificila?",o:[o("Da, de multe ori",{DEC:2}),o("Da, uneori",{DEC:1}),o("Rareori",{}),o("Nu",{})]},
    {q:"Cand trebuie sa iei o decizie importanta:",o:[o("Ma bazez pe logica",{DEC:1}),o("Ma bazez pe ceea ce simt",{DEC:1}),o("Cer multe pareri",{DEC:2}),o("Aman",{DEC:2}),o("Oscilez intre variante",{DEC:3})]},
    {q:"Ce te face cel mai des sa amani o schimbare?",o:[o("Frica de a pierde ceea ce am",{DEC:2}),o("Frica de necunoscut",{DEC:2}),o("Teama ca voi regreta",{DEC:2}),o("Parerea celorlalti",{SINE:1,DEC:1}),o("Banii",{BAN:2,DEC:1}),o("Speranta ca lucrurile se vor rezolva singure",{DEC:2})]},
    {q:"Cat de importanta este pentru tine aprobarea persoanelor apropiate?",o:[o("Foarte importanta",{SINE:2}),o("Destul de importanta",{SINE:1}),o("Putin importanta",{}),o("Aproape deloc",{})]},
    {q:"Daca cineva important pentru tine este nemultumit de tine:",o:[o("Incerc imediat sa repar situatia",{SINE:1,REL:1}),o("Ma intreb ce am facut gresit",{SINE:2}),o("Imi sustin pozitia",{}),o("Ma afecteaza, dar nu arat",{SINE:1}),o("Ma indepartez",{})]},
    {q:"Care dintre urmatoarele te sperie cel mai mult cand te gandesti la viitor?",o:[o("Sa pierd o persoana importanta",{REL:3}),o("Sa raman singur/a",{SING:3}),o("Sa nu am suficienta stabilitate financiara",{BAN:3}),o("Sa raman intr-o viata care nu ma implineste",{DEC:2,SINE:1}),o("Sa fac o alegere gresita",{DEC:3}),o("Sa nu ajung unde mi-am propus",{CAR:2,SINE:1})]},
    {q:"Cand lucrurile nu merg conform planului:",o:[o("Incerc sa recapat controlul",{DEC:1}),o("Devin nelinistit/a",{}),o("Ma adaptez destul de usor",{}),o("Ma invinovatesc",{SINE:2}),o("Dau vina pe circumstante sau pe ceilalti",{})]},
    {q:"In general, ai tendinta sa cauti explicatia unei probleme:",o:[o("Mai intai la mine",{SINE:2}),o("Mai intai la ceilalti",{}),o("In circumstante",{}),o("Incerc sa privesc toate variantele",{})]},
    {q:"Exista ceva despre care simti ca ar fi trebuit sa fii deja mai departe?",o:[o("Relatie",{REL:2,SING:1}),o("Familie",{FAM:3}),o("Cariera",{CAR:3}),o("Bani",{BAN:3}),o("Dezvoltare personala",{SINE:3}),o("Nu simt asta",{})]},
    {q:"Ce propozitie se apropie cel mai mult de ceea ce simti?",o:[o("Vreau sa stiu ce simte cineva fata de mine",{REL:3}),o("Vreau sa stiu daca sa raman sau sa plec",{REL:2,DEC:2}),o("Vreau sa stiu daca fac alegerea corecta",{DEC:3}),o("Vreau sa inteleg de ce repet anumite situatii",{SINE:3}),o("Vreau sa schimb ceva, dar nu reusesc",{DEC:2,SINE:1}),o("Vreau sa inteleg ce imi lipseste",{SINE:2,SING:1})]},
    {q:"Daca ai primi astazi un raspuns complet sincer la o singura intrebare, acesta ar fi mai degraba despre:",o:[o("Sentimentele sau intentiile unei persoane",{REL:3}),o("Viitorul unei relatii",{REL:3}),o("O problema de familie",{FAM:3}),o("Cariera mea",{CAR:3}),o("Situatia financiara",{BAN:3}),o("O alegere importanta",{DEC:3}),o("Mine",{SINE:3})]},
    {q:"Ce faci cand realitatea nu este cea pe care ti-o doresti?",o:[o("Incerc sa o schimb",{}),o("Mai astept",{DEC:1}),o("Caut explicatii",{SINE:1}),o("Incerc sa o accept",{}),o("Imi este greu sa renunt la ceea ce speram",{REL:1,DEC:1})]},
    {q:"Ce ti-ar fi mai greu sa accepti?",o:[o("Ca cineva nu simte ceea ce speram",{REL:3}),o("Ca o relatie s-a terminat",{REL:3}),o("Ca trebuie sa incep din nou",{DEC:2}),o("Ca am investit timp intr-o directie gresita",{CAR:1,DEC:2}),o("Ca trebuie sa renunt la siguranta pentru schimbare",{BAN:1,DEC:2}),o("Ca unele lucruri nu depind de mine",{SINE:1,DEC:1})]},
    {q:"Cand te gandesti la problema care te-a adus aici, de ce ai nevoie cel mai mult?",o:[o("Claritate",{DEC:1}),o("Confirmare",{REL:1,SINE:1}),o("Curaj",{DEC:1}),o("Un plan",{CAR:1,DEC:1}),o("O perspectiva diferita",{SINE:1}),o("Sa fiu ascultat/a",{SING:1,FAM:1}),o("Sa iau o decizie",{DEC:2})]},
    {q:"Cum ai prefera sa vorbeasca cineva cu tine despre aceasta problema?",o:[o("Foarte direct",{}),o("Cu multa empatie",{}),o("Punandu-mi intrebari",{}),o("Oferindu-mi variante concrete",{}),o("Spunandu-mi inclusiv lucruri pe care poate nu vreau sa le aud",{})]},
    {q:"Daca nimic nu s-ar schimba in urmatoarele 12 luni, cat de mult te-ar deranja?",o:[o("Foarte mult",{}),o("Mult",{}),o("Moderat",{}),o("Putin",{}),o("Deloc",{})]}
  ];
  var F={
    REL:["Gandeste-te la persoana sau relatia care te-a facut sa ajungi aici. Ce anume te preocupa cel mai mult?","Din ceea ce se intampla intre voi, ce te afecteaza cel mai mult?","Ce inseamna pentru tine faptul ca lucrurile au ajuns in acest punct?","Daca situatia nu s-ar schimba, de ce te-ai teme cel mai mult?","Dincolo de ceea ce face sau nu face cealalta persoana, de ce simti ca ai tu nevoie, de fapt?"],
    FAM:["Gandeste-te la situatia din familie care te apasa cel mai mult. Ce se intampla, in cuvintele tale?","Ce parte a acestei situatii te afecteaza cel mai mult?","Ce inseamna pentru tine ceea ce se intampla in familie?","Daca nimic nu s-ar schimba, ce te-ai teme ca ai putea pierde sau trai in continuare?","Dincolo de ceilalti, de ce ai avea tu nevoie pentru ca aceasta situatie sa devina mai usor de dus?"],
    CAR:["Care este lucrul care te nemultumeste cel mai mult in viata profesionala acum?","Ce efect are aceasta situatie asupra ta, dincolo de munca de zi cu zi?","Ce inseamna pentru tine faptul ca nu esti acolo unde ti-ai dori profesional?","Daca peste un an lucrurile ar fi exact la fel, ce te-ar apasa cel mai mult?","Ce crezi ca ai avea nevoie sa se schimbe, in tine sau in situatie, ca sa poti face urmatorul pas?"],
    BAN:["Care este preocuparea financiara care iti ocupa cel mai mult mintea acum?","Ce te afecteaza cel mai mult la aceasta situatie: lipsa banilor, nesiguranta sau limitarile pe care ti le impune?","Ce inseamna pentru tine sa nu ai siguranta financiara pe care ti-o doresti?","Care este lucrul de care te temi cel mai mult daca situatia ramane neschimbata?","Dincolo de suma de bani, ce ai simti ca ai castiga daca aceasta problema s-ar rezolva?"],
    SINE:["Cand spui ca ai vrea sa intelegi mai bine ceva despre tine, ce anume iti vine prima data in minte?","Ce te deranjeaza sau te doare cel mai mult la acest lucru?","Ce ajungi sa crezi despre tine atunci cand se intampla?","Daca acest tipar ar continua, ce te-ai teme ca ar putea insemna pentru viata ta?","Daca ai lasa pentru un moment deoparte asteptarile celorlalti, de ce ai avea tu nevoie cu adevarat?"],
    DEC:["Care este schimbarea sau decizia care iti ocupa cel mai mult mintea acum?","Ce face aceasta alegere atat de dificila pentru tine?","Ce ar insemna pentru tine sa alegi gresit?","Dintre lucrurile pe care le-ai putea pierde, care te sperie cel mai mult?","Daca frica de consecinte nu ar exista, spre ce alegere simti ca ai inclina?"],
    SING:["Ce iti lipseste cel mai mult atunci cand simti singuratate sau lipsa de conectare?","Ce te afecteaza cel mai mult in aceasta lipsa?","Ce ajungi sa crezi despre tine sau despre viitor atunci cand sentimentul apare?","Daca lucrurile ar ramane asa, de ce te-ai teme cel mai mult?","Dincolo de a avea pe cineva langa tine, ce nevoie ai vrea cel mai mult sa iti fie implinita?" ]
  };
  var A=[],idx=0,cat="SINE",FA=[],fi=0,testZodie="",testSex="",testAnimal="",testAscendent="",testDestin=0,testGrupa="";
  function el(id){return document.getElementById(id)}
  function esc(x){return String(x||"").replace(/[&amp;&lt;&gt;\"]/g,function(c){return {'&amp;':'&amp;amp;','&lt;':'&amp;lt;','&gt;':'&amp;gt;','"':'&amp;quot;'}[c]})}
  function parseBirth(v){var m=String(v||'').match(/^(\d{2})\.(\d{2})\.(\d{4})$/);if(!m)return null;var d=Number(m[1]),mo=Number(m[2]),y=Number(m[3]);var dt=new Date(y,mo-1,d);if(dt.getFullYear()!==y||dt.getMonth()!==mo-1||dt.getDate()!==d||y&lt;1900||dt&gt;new Date())return null;return {d:d,m:mo,y:y}}
  function zodiacFromBirth(v){var x=parseBirth(v);if(!x)return '';var d=x.d,m=x.m;if((m===3&amp;&amp;d&gt;=21)||(m===4&amp;&amp;d&lt;=19))return 'Berbec';if((m===4&amp;&amp;d&gt;=20)||(m===5&amp;&amp;d&lt;=20))return 'Taur';if((m===5&amp;&amp;d&gt;=21)||(m===6&amp;&amp;d&lt;=20))return 'Gemeni';if((m===6&amp;&amp;d&gt;=21)||(m===7&amp;&amp;d&lt;=22))return 'Rac';if((m===7&amp;&amp;d&gt;=23)||(m===8&amp;&amp;d&lt;=22))return 'Leu';if((m===8&amp;&amp;d&gt;=23)||(m===9&amp;&amp;d&lt;=22))return 'Fecioara';if((m===9&amp;&amp;d&gt;=23)||(m===10&amp;&amp;d&lt;=22))return 'Balanta';if((m===10&amp;&amp;d&gt;=23)||(m===11&amp;&amp;d&lt;=21))return 'Scorpion';if((m===11&amp;&amp;d&gt;=22)||(m===12&amp;&amp;d&lt;=21))return 'Sagetator';if((m===12&amp;&amp;d&gt;=22)||(m===1&amp;&amp;d&lt;=19))return 'Capricorn';if((m===1&amp;&amp;d&gt;=20)||(m===2&amp;&amp;d&lt;=18))return 'Varsator';return 'Pesti'}
  function destinyFromBirth(v){var x=parseBirth(v);if(!x)return 0;var digits=String(v).replace(/\D/g,'').split('').map(Number),n=digits.reduce(function(a,b){return a+b},0);while(n&gt;9&amp;&amp;[11,22,33].indexOf(n)===-1){n=String(n).split('').reduce(function(a,b){return a+Number(b)},0)}return n}
  function ageGroupFromBirth(v){var x=parseBirth(v);if(!x)return '';var now=new Date(),age=now.getFullYear()-x.y;var had=(now.getMonth()+1&gt;x.m)||((now.getMonth()+1===x.m)&amp;&amp;now.getDate()&gt;=x.d);if(!had)age--;if(age&lt;18)return 'sub 18';if(age&lt;=24)return '18-24';if(age&lt;=34)return '25-34';if(age&lt;=44)return '35-44';if(age&lt;=54)return '45-54';if(age&lt;=64)return '55-64';return '65+'}
  function populateTestTime(){var hh=el('plTestOraHH'),mm=el('plTestOraMM');if(!hh||!mm||hh.options.length&gt;1)return;for(var i=0;i&lt;24;i++){var o=document.createElement('option');o.value=String(i).padStart(2,'0');o.textContent=o.value;hh.appendChild(o)}for(var j=0;j&lt;60;j+=5){var m=document.createElement('option');m.value=String(j).padStart(2,'0');m.textContent=m.value;mm.appendChild(m)}}
  function validLongAnswer(v){v=String(v||'').trim();var words=v.split(/\s+/).filter(Boolean);return v.length&gt;=30&amp;&amp;words.length&gt;=6}
  function selectedSex(){var r=el('plTestSex');return r?r.value:''}
  function render(){var q=Q[idx];el('plTestCounter').textContent='INTREBAREA '+(idx+1)+' DIN 28';el('plTestProgressBar').style.width=((idx+1)/28*100)+'%';el('plTestQuestion').textContent=q.q;var h='';q.o.forEach(function(x,i){h+='&lt;button type="button" class="pl-test-option '+(A[idx]===i?'selected':'')+'" data-i="'+i+'"&gt;'+esc(x.t)+'&lt;/button&gt;'});el('plTestOptions').innerHTML=h;Array.prototype.forEach.call(el('plTestOptions').querySelectorAll('button'),function(b){b.onclick=function(){A[idx]=Number(this.getAttribute('data-i'));if(idx&lt;27){idx++;render()}else{finish28()}}});el('plTestPrev').style.visibility=idx?'visible':'hidden'}
  function scores(){var s={REL:0,FAM:0,CAR:0,BAN:0,SINE:0,DEC:0,SING:0};A.forEach(function(ai,i){if(ai==null)return;var sc=Q[i].o[ai].s;Object.keys(sc).forEach(function(k){s[k]+=sc[k]})});return s}
  function finish28(){var s=scores(),keys=Object.keys(s);keys.sort(function(a,b){return s[b]-s[a]});cat=keys[0];el('plTestQuiz').style.display='none';el('plTestFunnel').style.display='block';el('plTestDirection').textContent='RASPUNSURILE TALE AU LASAT UN PRIM INDICIU. URMATOARELE 5 INTREBARI IL VOR TESTA.';fi=0;renderF()}
  function renderF(){el('plFunnelCounter').textContent='INTREBAREA DE APROFUNDARE '+(fi+1)+' DIN 5';el('plFunnelProgressBar').style.width=((fi+1)/5*100)+'%';el('plFunnelQuestion').textContent=F[cat][fi];el('plFunnelAnswer').value=FA[fi]||'';el('plFunnelPrev').style.visibility=fi?'visible':'hidden';el('plFunnelNext').textContent=fi===4?'INCHEIE TESTUL':'CONTINUA';updateHint()}
  function updateHint(){var v=el('plFunnelAnswer').value.trim(),w=v?v.split(/\s+/).filter(Boolean).length:0,h=el('plFunnelHint');if(validLongAnswer(v)){h.textContent='Raspuns suficient de dezvoltat.';h.classList.add('is-ok')}else{h.textContent='Minimum 6 cuvinte si 30 de caractere. Acum: '+w+' cuvinte.';h.classList.remove('is-ok')}}
  function code(){var chars='ABCDEFGHJKLMNPQRSTUVWXYZ23456789',r='PL-';for(var i=0;i&lt;6;i++)r+=chars.charAt(Math.floor(Math.random()*chars.length));return r}
  function submit(){var c=code(),s=scores(),data={action:'testPaginaLipsa',testCode:c,category:cat,categoryLabel:CAT[cat],zodie:testZodie,sex:testSex,animal:testAnimal,ascendent:testAscendent,cifraDestinului:testDestin,grupaVarsta:testGrupa,scores:JSON.stringify(s),answers28:JSON.stringify(A.map(function(ai,i){return {q:Q[i].q,a:Q[i].o[ai].t}})),funnelAnswers:JSON.stringify(F[cat].map(function(q,i){return {q:q,a:FA[i]||''}})),userAgent:navigator.userAgent||''};var form=el('plTestSubmitForm');form.innerHTML='';Object.keys(data).forEach(function(k){var inp=document.createElement('input');inp.type='hidden';inp.name=k;inp.value=data[k];form.appendChild(inp)});el('plTestFunnel').style.display='none';el('plTestSending').style.display='block';form.submit();setTimeout(function(){showFinal(c)},1300)}
  function showFinal(c){
    el('plTestSending').style.display='none';
    var buy=BOOK_URL?'&lt;a class="pl-test-primary pl-test-buy" href="'+BOOK_URL+'" target="_blank" rel="noopener"&gt;DESCOPERA CARTEA&lt;/a&gt;':'&lt;div class="pl-test-note"&gt;&lt;strong&gt;Cartea va fi disponibila in curand.&lt;/strong&gt;&lt;/div&gt;';
    var clue={REL:'RELATII',FAM:'FAMILIE',CAR:'CARIERA',BAN:'SIGURANTA SI BANI',SINE:'RELATIA CU TINE',DEC:'O ALEGERE IMPORTANTA',SING:'CONECTARE SI APROPIERE'}[cat]||CAT[cat];
    el('plTestFinal').innerHTML='&lt;div class="pl-test-final-eyebrow"&gt;AI RASPUNS SINCER. ASTA CONTEAZA.&lt;/div&gt;&lt;p class="pl-test-lead"&gt;Din raspunsurile tale se contureaza cateva indicii in jurul zonei &lt;strong&gt;'+esc(clue)+'&lt;/strong&gt;.&lt;/p&gt;&lt;div class="pl-test-mystery"&gt;&lt;strong&gt;Pari un om dispus sa se uite sincer la ceea ce traieste si sa caute raspunsuri, nu doar confirmari.&lt;/strong&gt;&lt;br/&gt;&lt;br/&gt;Iar aici apare partea interesanta: ceea ce ai spus la inceput nu este neaparat acelasi lucru cu ceea ce se vede cand toate raspunsurile sunt puse impreuna.&lt;/div&gt;&lt;p class="pl-test-lead"&gt;&lt;strong&gt;Poate ca Pagina care iti lipseste este chiar intre aceste raspunsuri.&lt;/strong&gt;&lt;/p&gt;&lt;p style="text-align:center"&gt;&lt;span class="pl-test-code"&gt;'+c+'&lt;/span&gt;&lt;/p&gt;&lt;p class="pl-test-lead"&gt;Pastreaza codul. Cu cartea primesti si analiza personalizata a testului tau.&lt;/p&gt;'+buy+'&lt;p class="pl-test-small"&gt;Analiza are rol de reflectie si orientare si nu reprezinta diagnostic sau terapie.&lt;/p&gt;';
    el('plTestFinal').style.display='block'
  }
  document.addEventListener('DOMContentLoaded',function(){
    if(!el('plTestStartBtn'))return;
    populateTestTime();
    var birth=el('plTestBirth');
    birth.addEventListener('input',function(){var v=this.value.replace(/[^0-9]/g,'').slice(0,8);if(v.length&gt;4)v=v.slice(0,2)+'.'+v.slice(2,4)+'.'+v.slice(4);else if(v.length&gt;2)v=v.slice(0,2)+'.'+v.slice(2);this.value=v;var z=zodiacFromBirth(v);el('plTestZodiacPreview').textContent=z?'Zodia calculata: '+z:'Zodia va fi calculata automat.'});
    el('plTestStartBtn').onclick=function(){
      testZodie=zodiacFromBirth(birth.value);testSex=selectedSex();testAnimal=el('plTestAnimal').value;testDestin=destinyFromBirth(birth.value);testGrupa=ageGroupFromBirth(birth.value);
      var hh=el('plTestOraHH').value,mm=el('plTestOraMM').value,oras=el('plTestOras').value.trim();
      if(!testAnimal){alert('Selecteaza animalul cu care rezonezi.');el('plTestAnimal').focus();return}
      if(!testZodie){alert('Introdu o data de nastere valida in formatul ZZ.LL.AAAA.');birth.focus();return}
      if(!testSex){alert('Selecteaza sexul.');el('plTestSex').focus();return}
      if(!hh||!mm){alert('Selecteaza ora aproximativa a nasterii.');return}
      if(oras.length&lt;2){alert('Introdu localitatea nasterii.');el('plTestOras').focus();return}
      if(!el('plTestConsent').checked){alert('Bifeaza acordul pentru transmiterea raspunsurilor.');return}
      var H=window.PLCompatHelpers;
      if(!H||typeof H.obtineCoordonate!=='function'||typeof H.genereazaHartaNatala!=='function'){alert('Serviciul de calcul astrologic nu este disponibil. Reincarca pagina.');return}
      var btn=el('plTestStartBtn');btn.disabled=true;btn.textContent='CALCULAM PRIMUL INDICIU...';
      H.obtineCoordonate(oras).then(function(coord){
        var bd=parseBirth(birth.value);
        var dataAstro={zi:bd.d,luna:bd.m,an:bd.y};
        var h=H.genereazaHartaNatala(dataAstro,hh,mm,coord.lat,coord.lng);
        testAscendent=(h&amp;&amp;h.ascendent&amp;&amp;h.ascendent.zodie)?h.ascendent.zodie:'';
        if(!testAscendent&amp;&amp;typeof H.calculeazaAscendent==='function'){
          try{testAscendent=H.calculeazaAscendent(dataAstro,hh,mm,coord.lat,coord.lng)||''}catch(e){}
        }
        btn.disabled=false;btn.textContent='INCEPE TESTUL';
        el('plTestStart').style.display='none';el('plTestQuiz').style.display='block';render()
      }).catch(function(err){
        btn.disabled=false;btn.textContent='INCEPE TESTUL';
        var msg=(err&amp;&amp;err.message)?err.message:'Nu am putut verifica datele introduse.';
        alert(msg);
      })
    };
    el('plTestPrev').onclick=function(){if(idx&gt;0){idx--;render()}};
    el('plFunnelPrev').onclick=function(){if(fi&gt;0){FA[fi]=el('plFunnelAnswer').value.trim();fi--;renderF()}};
    el('plFunnelAnswer').addEventListener('input',updateHint);
    el('plFunnelNext').onclick=function(){var v=el('plFunnelAnswer').value.trim();if(!validLongAnswer(v)){alert('Raspunsul trebuie sa contina cel putin o propozitie completa: minimum 6 cuvinte si 30 de caractere. Te rog dezvolta putin raspunsul.');el('plFunnelAnswer').focus();return}FA[fi]=v;if(fi&lt;4){fi++;renderF()}else submit()}
  })
})();
&lt;/script&gt;


&lt;style&gt;

/* =========================================================
   DEMO AUDIO CARTE - SCLAVUL DIN OGLINDA
   Stil compact, in aceeasi familie vizuala cu butoanele
========================================================= */
.pl-book-demo {
  position:relative;
  width:100%;
  margin:16px 0 24px;
  padding:14px;
  box-sizing:border-box;
  background:#FFFDF8;
  border:1px solid #CDBF9E;
  border-radius:10px;
  color:#17130B;
  font-family:Georgia,"Times New Roman",serif;
  text-align:left;
}

.pl-book-demo-badge {
  position:absolute;
  top:-8px;
  right:13px;
  display:inline-block;
  padding:4px 9px;
  background:#FFF1B8;
  color:#75570A;
  border:1px solid #E2C45E;
  border-radius:999px;
  font-size:9px;
  font-weight:bold;
  letter-spacing:1px;
}

.pl-book-demo-top {
  display:flex;
  align-items:center;
  gap:11px;
  min-width:0;
}

.pl-book-demo-cover-link {
  flex:0 0 auto;
  display:block;
  text-decoration:none;
}

.pl-book-demo-cover {
  display:block;
  width:58px;
  height:auto;
  border-radius:3px;
  box-shadow:0 4px 10px rgba(0,0,0,.14);
}

.pl-book-demo-copy {
  display:flex;
  align-items:center;
  gap:9px;
  min-width:0;
  flex:1;
}

.pl-book-demo-icon {
  flex:0 0 32px;
  width:32px;
  height:32px;
  display:flex;
  align-items:center;
  justify-content:center;
  border:1px solid #C9A64B;
  border-radius:50%;
  color:#B8912E;
  background:#F7F1E7;
  font-size:15px;
}

.pl-book-demo-text {
  min-width:0;
  flex:1;
}

.pl-book-demo h2 {
  margin:0 0 6px;
  color:#17130B !important;
  font-family:Georgia,"Times New Roman",serif;
  font-size:13px;
  line-height:1.35;
  font-weight:bold;
  letter-spacing:.1px;
}

.pl-book-demo p {
  margin:0;
  color:#776B58 !important;
  font-size:12px;
  line-height:1.45;
}

.pl-book-demo p strong {
  color:#4A4235 !important;
}

.pl-book-demo-drive-wrap {
  width:100%;
  height:58px;
  margin:10px 0 9px;
  overflow:hidden;
  border:1px solid #D7C8A5;
  border-radius:8px;
  background:#F7F1E7;
  box-sizing:border-box;
}

.pl-book-demo-drive {
  display:block;
  width:100%;
  height:58px;
  border:0;
  background:transparent;
}

.pl-book-demo-buy {
  position:relative;
  display:flex;
  align-items:center;
  justify-content:center;
  width:100%;
  min-height:36px;
  padding:8px 34px 8px 14px;
  box-sizing:border-box;
  background:#17130B;
  color:#E3C66B !important;
  border:1px solid #B8912E;
  border-radius:7px;
  text-decoration:none !important;
  font-family:Georgia,"Times New Roman",serif;
  font-size:10.5px;
  font-weight:bold;
  letter-spacing:.7px;
}

.pl-book-demo-buy span {
  position:absolute;
  right:16px;
  top:50%;
  transform:translateY(-50%);
  color:#B8912E;
  font-size:23px;
  line-height:1;
}

.pl-book-demo-buy:hover {
  background:#B8912E;
  color:#111111 !important;
}

.pl-book-demo-buy:hover span {
  color:#111111;
}

@media screen and (max-width:700px) {
  .pl-book-demo {
    margin:17px 0 26px;
    padding:12px 10px 10px;
    border-radius:10px;
  }

  .pl-book-demo-top {
    gap:11px;
  }

  .pl-book-demo-cover {
    width:48px;
  }

  .pl-book-demo-copy {
    gap:9px;
  }

  .pl-book-demo-icon {
    display:none;
  }

  .pl-book-demo h2 {
    font-size:12px !important;
    line-height:1.35;
    margin-bottom:5px;
  }

  .pl-book-demo p {
    font-size:11.5px !important;
    line-height:1.4;
  }

  .pl-book-demo-drive-wrap,
  .pl-book-demo-drive {
    height:56px;
  }

  .pl-book-demo-drive-wrap {
    margin:9px 0 8px;
  }

  .pl-book-demo-buy {
    min-height:34px;
    font-size:10.5px;
  }
}

/* v33 - layout compact: coperta stanga, continut dreapta */
.pl-book-demo {
  padding:20px 18px 14px;
}

.pl-book-demo-layout {
  display:flex;
  align-items:stretch;
  gap:12px;
  width:100%;
}

.pl-book-demo-cover-link {
  flex:0 0 78px;
  display:flex;
  align-items:flex-start;
  justify-content:center;
}

.pl-book-demo-cover {
  width:76px;
  max-height:116px;
  object-fit:cover;
}

.pl-book-demo-main {
  flex:1;
  min-width:0;
  display:flex;
  flex-direction:column;
}

.pl-book-demo-main h2 {
  margin:1px 0 8px;
  font-size:13px !important;
  line-height:1.3;
}

.pl-book-demo-drive-wrap {
  margin:0 0 7px;
  height:58px;
  border-color:#D9C47A;
  background:#FFF8DB;
}

.pl-book-demo-drive {
  height:58px;
}

/* Google Drive deseneaza playerul in interiorul iframe-ului.
   Fundalul din jur este indulcit; controalele negre din iframe nu pot fi recolorate din Blogger. */
.pl-book-demo-buy {
  width:44%;
  min-width:210px;
  max-width:300px;
  align-self:center;
  min-height:34px;
}

@media screen and (max-width:700px) {
  .pl-book-demo {
    padding:17px 10px 10px;
  }

  .pl-book-demo-layout {
    gap:9px;
  }

  .pl-book-demo-cover-link {
    flex-basis:62px;
  }

  .pl-book-demo-cover {
    width:60px;
    max-height:94px;
  }

  .pl-book-demo-main h2 {
    font-size:11.5px !important;
    margin-bottom:6px;
  }

  .pl-book-demo-drive-wrap,
  .pl-book-demo-drive {
    height:54px;
  }

  .pl-book-demo-buy {
    width:70%;
    min-width:0;
    max-width:260px;
  }
}

/* v34 - mobile fix pentru zona cartii */
@media screen and (max-width:700px) {
  .pl-book-demo {
    padding:16px 10px 10px;
  }

  .pl-book-demo-layout {
    display:grid;
    grid-template-columns:58px minmax(0,1fr);
    grid-template-areas:
      "cover title"
      "player player"
      "button button";
    column-gap:10px;
    row-gap:8px;
    align-items:start;
  }

  .pl-book-demo-cover-link {
    grid-area:cover;
    width:58px;
    flex:none;
    align-self:start;
  }

  .pl-book-demo-cover {
    width:58px;
    max-height:88px;
    object-fit:cover;
  }

  .pl-book-demo-main {
    display:contents;
  }

  .pl-book-demo-main h2 {
    grid-area:title;
    margin:4px 20px 0 0;
    font-size:11.5px !important;
    line-height:1.35;
    align-self:center;
  }

  .pl-book-demo-drive-wrap {
    grid-area:player;
    width:100%;
    height:48px;
    margin:2px 0 0;
    border-radius:7px;
    overflow:hidden;
  }

  .pl-book-demo-drive {
    width:100%;
    height:48px;
    transform:none;
  }

  .pl-book-demo-buy {
    grid-area:button;
    width:100%;
    min-width:0;
    max-width:none;
    min-height:34px;
    padding:7px 32px 7px 12px;
    font-size:10.5px;
    line-height:1.15;
  }

  .pl-book-demo-buy span {
    right:12px;
    font-size:20px;
  }

  .pl-book-demo-badge {
    top:-8px;
    right:11px;
    font-size:9px;
    padding:4px 9px;
  }
}

/* v35 - CTA carte auriu cu text negru */
.pl-book-demo-buy,
.pl-book-demo-buy:visited {
  background:#D4AF37 !important;
  color:#111111 !important;
  border-color:#B8912E !important;
}

.pl-book-demo-buy span {
  color:#111111 !important;
}

.pl-book-demo-buy:hover {
  background:#E2C45E !important;
  color:#111111 !important;
}

.pl-book-demo-buy:hover span {
  color:#111111 !important;
}

/* v36 - CTA carte mai ingust si centrat */
.pl-book-demo-buy,
.pl-book-demo-buy:visited {
  width:42% !important;
  min-width:190px !important;
  max-width:270px !important;
  align-self:center !important;
  margin-left:auto !important;
  margin-right:auto !important;
}

@media screen and (max-width:700px) {
  .pl-book-demo-buy,
  .pl-book-demo-buy:visited {
    width:62% !important;
    min-width:170px !important;
    max-width:220px !important;
    justify-self:center !important;
    align-self:center !important;
  }
}

/* v37 - CTA si mesaj carte */
.pl-book-demo-buy,
.pl-book-demo-buy:visited {
  width:36% !important;
  min-width:175px !important;
  max-width:235px !important;
  margin-left:auto !important;
  margin-right:auto !important;
  justify-self:center !important;
  align-self:center !important;
}

.pl-book-demo-main h2 {
  animation: plDestinPulse 1.8s ease-in-out infinite;
}

@keyframes plDestinPulse {
  0%, 100% { opacity:1; }
  50% { opacity:.42; }
}

@media (prefers-reduced-motion: reduce) {
  .pl-book-demo-main h2 {
    animation:none !important;
  }
}

@media screen and (max-width:700px) {
  .pl-book-demo-buy,
  .pl-book-demo-buy:visited {
    width:54% !important;
    min-width:155px !important;
    max-width:190px !important;
  }
}
&lt;/style&gt;

&lt;!-- =========================================================
     PAGINA LIPSA - GA4 EVENIMENTE PERSONALIZATE
     Nu trimite date personale introduse in formulare.
========================================================= --&gt;
&lt;script&gt;
(function () {
  function plGA(eventName, params) {
    try {
      if (typeof window.gtag !== "function") return;
      window.gtag("event", eventName, Object.assign({
        pl_site: "pagina_lipsa"
      }, params || {}));
    } catch (e) {}
  }
  window.PLGA = plGA;

  // Intrari in sectiunile principale. Capturam clickul, fara date din formulare.
  document.addEventListener("click", function (e) {
    var el = e.target &amp;&amp; e.target.closest ? e.target.closest("button,a") : null;
    if (!el) return;

    var onclick = el.getAttribute("onclick") || "";
    var href = el.getAttribute("href") || "";
    var txt = (el.textContent || "").replace(/\s+/g, " ").trim().toLowerCase();

    if (onclick.indexOf("deschideSectiunePL('prognoza')") !== -1 ||
        onclick.indexOf('deschideSectiunePL("prognoza")') !== -1) {
      plGA("pl_open_free_daily", { section: "free_daily" });
    }

    if (onclick.indexOf("deschideSectiunePL('astro')") !== -1 ||
        onclick.indexOf('deschideSectiunePL("astro")') !== -1) {
      plGA("pl_open_astro", { section: "astro" });
    }

    if (onclick.indexOf("deschideSectiunePL('compatibilitate')") !== -1 ||
        onclick.indexOf('deschideSectiunePL("compatibilitate")') !== -1) {
      plGA("pl_open_couple", { section: "couple" });
    }

    if (el.classList.contains("pl-no-code-btn")) {
      plGA("pl_no_code_click", {
        section: el.classList.contains("pl-no-code-compat") ? "couple" : "astro"
      });
    }

    if (el.classList.contains("result-support") ||
        el.classList.contains("result-book-cover-link") ||
        txt.indexOf("cumpără cartea") !== -1 ||
        txt.indexOf("cumpara cartea") !== -1) {
      plGA("pl_book_click", {
        section: el.closest("#compatResultContent") ? "couple" :
                 el.closest("#resultContent") ? "astro" :
                 el.closest("#plBookDemo") ? "home_book_demo" : "other",
        destination: "payhip"
      });
    }
  }, true);

  // Pornirea generarii rapoartelor.
  document.addEventListener("submit", function (e) {
    if (!e.target) return;
    if (e.target.id === "astroForm") {
      plGA("pl_astro_generate_start", { section: "astro" });
    }
    if (e.target.id === "compatForm") {
      plGA("pl_couple_generate_start", { section: "couple" });
    }
  }, true);

  // Formularul de cuplu este tratat in cod si cu submit/click; fallback pe buton.
  document.addEventListener("click", function (e) {
    var el = e.target &amp;&amp; e.target.closest ? e.target.closest("button") : null;
    if (!el) return;

    if (el.id === "compatSubmitButton") {
      plGA("pl_couple_generate_click", { section: "couple" });
    }

    if (el.id === "plForecastSubmit") {
      plGA("pl_free_generate", { section: "free_daily" });
    }
  }, true);

  // Detectam afisarea unui rezultat final fara sa citim continutul personal.
  function watchResult(id, eventName, section) {
    var node = document.getElementById(id);
    if (!node || typeof MutationObserver === "undefined") return;

    var sent = false;
    var obs = new MutationObserver(function () {
      var visible = node.style.display !== "none";
      var hasContent = (node.innerHTML || "").trim().length &gt; 40;
      if (visible &amp;&amp; hasContent &amp;&amp; !sent) {
        sent = true;
        plGA(eventName, { section: section });
      }
      if (!visible || !hasContent) sent = false;
    });
    obs.observe(node, { childList: true, subtree: true, attributes: true, attributeFilter: ["style"] });
  }

  function init() {
    watchResult("resultContent", "pl_astro_result", "astro");
    watchResult("compatResultContent", "pl_couple_result", "couple");

    var bookAudioDrive = document.getElementById("plBookAudioDrive");
    if (bookAudioDrive) {
      var driveViewSent = false;
      bookAudioDrive.addEventListener("load", function () {
        if (!driveViewSent) {
          driveViewSent = true;
          plGA("pl_audiobook_player_loaded", { section: "home_book_demo", host: "google_drive" });
        }
      });
    }
  }

  if (document.readyState === "loading") {
    document.addEventListener("DOMContentLoaded", init);
  } else {
    init();
  }
})();
&lt;/script&gt;


&lt;script&gt;
/* =========================================================
   v37 - BACK TELEFON / BROWSER
   Dintr-o sectiune, Back revine la pagina principala.
========================================================= */
(function() {
  if (window.PLHistoryBackFixInstalled) return;
  window.PLHistoryBackFixInstalled = true;

  function arataHomePL() {
    [
      "sectiuneAstrograma",
      "sectiuneCompatibilitate",
      "sectiuneSesiune",
      "sectiuneDescopera",
      "sectiunePrognoza",
      "sectiuneDespreProiect"
    ].forEach(function(id) {
      var el = document.getElementById(id);
      if (el) el.style.display = "none";
    });

    var home = document.getElementById("paginaPrincipala");
    if (home) home.style.display = "block";
    window.scrollTo(0, 0);
  }

  try {
    history.replaceState(
      {plPaginaLipsa:true, view:"home"},
      document.title,
      location.href
    );
  } catch (e) {}

  var openSectionOriginal = window.deschideSectiunePL;
  if (typeof openSectionOriginal === "function") {
    window.deschideSectiunePL = function(tip) {
      openSectionOriginal(tip);
      try {
        history.pushState(
          {plPaginaLipsa:true, view:String(tip)},
          document.title,
          location.href
        );
      } catch (e) {}
    };
  }

  var openAboutOriginal = window.deschideDespreProiectPL;
  if (typeof openAboutOriginal === "function") {
    window.deschideDespreProiectPL = function() {
      openAboutOriginal();
      try {
        history.pushState(
          {plPaginaLipsa:true, view:"despre-proiect"},
          document.title,
          location.href
        );
      } catch (e) {}
    };
  }

  window.addEventListener("popstate", function(event) {
    var state = event.state;

    if (!state || !state.plPaginaLipsa || state.view === "home") {
      arataHomePL();
      return;
    }

    if (state.view === "despre-proiect") {
      if (typeof openAboutOriginal === "function") {
        openAboutOriginal();
      }
      return;
    }

    if (typeof openSectionOriginal === "function") {
      openSectionOriginal(state.view);
    }
  });

  var backHomeOriginal = window.inapoiPaginaPrincipalaPL;
  if (typeof backHomeOriginal === "function") {
    window.inapoiPaginaPrincipalaPL = function() {
      if (history.state &amp;&amp;
          history.state.plPaginaLipsa &amp;&amp;
          history.state.view !== "home") {
        history.back();
      } else {
        backHomeOriginal();
      }
    };
  }

  var closeAboutOriginal = window.inchideDespreProiectPL;
  if (typeof closeAboutOriginal === "function") {
    window.inchideDespreProiectPL = function() {
      if (history.state &amp;&amp;
          history.state.plPaginaLipsa &amp;&amp;
          history.state.view !== "home") {
        history.back();
      } else {
        closeAboutOriginal();
      }
    };
  }
})();
&lt;/script&gt;

</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/a/AVvXsEiLL8dqr9DH-BWzybetiaqItdsqjph3fTQk162eFQHTZIDMjsTkpNgPWy1RoB67JK2liAj_-WPlDx6HQ75jaR8E-s73C5gp8kA_a8ebU9PBrl2tThmdkRO7tLTl-Ew4jf2aoyxgH6UXO0mO_t4256Il4wLXiRxXwaMar3nktr_KW88zjcV_ctFo4dU5al0=s72-c" width="72"/></item></channel></rss>