It looks like this is a web page, not a feed. I looked for a feed associated with this page, but couldn't find one. Please enter the address of your feed to validate.

Source: http://ningma.org.ua/forums/tools.php?action=rss

  1.  
  2. <!DOCTYPE html>
  3. <html lang="" x-data="{ menuOpen: false }" data-theme="dark">
  4. <head>
  5.  <script>
  6.    (function(){
  7.      var t = localStorage.getItem('theme') || 'dark';
  8.      document.documentElement.setAttribute('data-theme', t);
  9.    })();
  10.  </script>
  11.  <meta charset="UTF-8">
  12.  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  13.  <meta name="csrf-token" content="3M8BuynS3MCol7eLuARcdqQIVe4CEn22XoIxYs1zzqEgC4EjjKBy1X34q73mlxER">
  14.  <title>Сторінку не знайдено — Нінгма</title>
  15.  <meta name="description" content="Буддизм в Україні — Орден Лунг-Жонг-па">
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  <link rel="stylesheet" href="/static/css/output.css">
  23.  
  24.  
  25.  <script src="https://unpkg.com/htmx.org@2.0.4" integrity="sha384-HGfztofotfshcF7+8n44JQL2oJmowVChPTg48S+jvZoztPfvwD79OC/LTtG6dMp+" crossorigin="anonymous" defer></script>
  26.  
  27.  
  28.  <script src="https://unpkg.com/alpinejs@3.14.3" integrity="sha384-iZD2X8o1Zdq0HR5H/7oa8W30WS4No+zWCKUPD7fHRay9I1Gf+C4F8sVmw7zec1wW" crossorigin="anonymous" defer></script>
  29.  
  30.  
  31.  
  32.  
  33.  <script>
  34.    document.addEventListener('DOMContentLoaded', function() {
  35.      const style = document.createElement('style');
  36.      let duration = (Math.random() * 20 + 10).toFixed(1);
  37.      style.textContent = 'body::after { animation-duration: ' + duration + 's !important; }';
  38.      document.head.appendChild(style);
  39.      setInterval(function() {
  40.        duration = (Math.random() * 20 + 10).toFixed(1);
  41.        style.textContent = 'body::after { animation-duration: ' + duration + 's !important; }';
  42.      }, 30000);
  43.    });
  44.  </script>
  45.  
  46.  <style>
  47.    html {
  48.      position: relative;
  49.    }
  50.    html::after {
  51.      content: '';
  52.      position: fixed;
  53.      right: -220px;
  54.      bottom: -220px;
  55.      width: 1050px;
  56.      height: 1050px;
  57.      background-image: url('/static/images/mandala.svg');
  58.      background-size: contain;
  59.      background-repeat: no-repeat;
  60.      opacity: 0.08;
  61.      pointer-events: none;
  62.      z-index: 9999;
  63.      animation: mandala-pulse 20s ease-in-out infinite;
  64.    }
  65.    @keyframes mandala-pulse {
  66.      0%   { opacity: 0.08; }
  67.      50%  { opacity: 0.22; }
  68.      100% { opacity: 0.08; }
  69.    }
  70.  </style>
  71. </head>
  72.  
  73. <body style="overflow-x:hidden" class="bg-bg text-text font-sans antialiased min-h-screen">
  74.  
  75.  
  76.  
  77.  
  78.  <header class="fixed top-0 left-0 right-0 z-50 px-6 md:px-12 h-16 md:h-18
  79.                 flex items-center justify-between
  80.                 bg-gradient-to-b from-bg/98 to-bg/0 backdrop-blur-md">
  81.  
  82.    
  83.    <a id="site-logo" href="/" class="flex items-center gap-3 no-underline group">
  84.      <svg width="32" height="32" viewBox="0 0 40 40" fill="none">
  85.        <circle cx="20" cy="20" r="18" stroke="#C4972A" stroke-width="0.75" opacity="0.6"/>
  86.        <circle cx="20" cy="20" r="3" fill="#C4972A" opacity="0.8"/>
  87.        <line x1="20" y1="8" x2="20" y2="32" stroke="#C4972A" stroke-width="0.75" opacity="0.5"/>
  88.        <line x1="8" y1="20" x2="32" y2="20" stroke="#C4972A" stroke-width="0.75" opacity="0.5"/>
  89.        <line x1="11.5" y1="11.5" x2="28.5" y2="28.5" stroke="#C4972A" stroke-width="0.75" opacity="0.5"/>
  90.        <line x1="28.5" y1="11.5" x2="11.5" y2="28.5" stroke="#C4972A" stroke-width="0.75" opacity="0.5"/>
  91.      </svg>
  92.      <div class="flex flex-col leading-tight">
  93.        <span class="font-serif text-lg text-text tracking-wide">Нінгма</span>
  94.        <span class="text-[10px] text-gold-dim tracking-widest uppercase">Буддизм в Україні</span>
  95.      </div>
  96.    </a>
  97.  
  98.    
  99.    <nav class="hidden md:flex items-center gap-8">
  100.      <a href="/"
  101.         class="text-text-dim hover:text-text text-xs tracking-widest uppercase transition-colors duration-300">
  102.        Главная
  103.      </a>
  104.      <a href="/articles/"
  105.         class="text-text-dim hover:text-text text-xs tracking-widest uppercase transition-colors duration-300">
  106.        Учение
  107.      </a>
  108.      <a href="/library/"
  109.         class="text-text-dim hover:text-text text-xs tracking-widest uppercase transition-colors duration-300">
  110.        Библиотека
  111.      </a>
  112.      <a href="/videogallery/"
  113.         class="text-text-dim hover:text-text text-xs tracking-widest uppercase transition-colors duration-300">
  114.        Видео
  115.      </a>
  116.      <a href="/forum/"
  117.         class="text-text-dim hover:text-text text-xs tracking-widest uppercase transition-colors duration-300">
  118.        Форум
  119.      </a>
  120.      <a href="/about/"
  121.         class="text-text-dim hover:text-text text-xs tracking-widest uppercase transition-colors duration-300">
  122.        О нас
  123.      </a>
  124.    </nav>
  125.  
  126.    
  127.    <div class="flex items-center gap-4">
  128.      
  129.      
  130.      <div class="hidden md:flex items-center gap-3">
  131.        <a id="login-btn" href="/accounts/login/" class="text-text-dim hover:text-gold text-xs tracking-widest uppercase transition-colors">
  132.          Войти
  133.        </a>
  134.        <a href="/accounts/signup/" class="border border-gold-dim text-gold px-3 py-1.5 text-[11px] tracking-widest uppercase hover:bg-gold/10 transition-colors">
  135.          Регистрация
  136.        </a>
  137.      </div>
  138.      
  139.  
  140.      
  141.      <div id="lang-switcher" class="hidden md:flex items-center gap-2 text-[11px] tracking-widest">
  142.        
  143.        <form action="/i18n/setlang/" method="post" style="display:inline">
  144.          <input type="hidden" name="csrfmiddlewaretoken" value="3M8BuynS3MCol7eLuARcdqQIVe4CEn22XoIxYs1zzqEgC4EjjKBy1X34q73mlxER">
  145.          <input type="hidden" name="next" value="/forums/tools.php">
  146.          <input type="hidden" name="language" value="ru">
  147.          <button type="submit" class="text-gold transition-colors bg-transparent border-0 cursor-pointer p-0">RU</button>
  148.        </form>
  149.        <span class="text-text-faint">·</span>
  150.        <form action="/i18n/setlang/" method="post" style="display:inline">
  151.          <input type="hidden" name="csrfmiddlewaretoken" value="3M8BuynS3MCol7eLuARcdqQIVe4CEn22XoIxYs1zzqEgC4EjjKBy1X34q73mlxER">
  152.          <input type="hidden" name="next" value="/forums/tools.php">
  153.          <input type="hidden" name="language" value="uk">
  154.          <button type="submit" class="text-text-faint hover:text-text-dim transition-colors bg-transparent border-0 cursor-pointer p-0">UA</button>
  155.        </form>
  156.        <span class="text-text-faint">·</span>
  157.        <form action="/i18n/setlang/" method="post" style="display:inline">
  158.          <input type="hidden" name="csrfmiddlewaretoken" value="3M8BuynS3MCol7eLuARcdqQIVe4CEn22XoIxYs1zzqEgC4EjjKBy1X34q73mlxER">
  159.          <input type="hidden" name="next" value="/forums/tools.php">
  160.          <input type="hidden" name="language" value="en">
  161.          <button type="submit" class="text-text-faint hover:text-text-dim transition-colors bg-transparent border-0 cursor-pointer p-0">EN</button>
  162.        </form>
  163.      </div>
  164.  
  165.      
  166.      <button class="text-text-dim hover:text-gold transition-colors p-1"
  167.              hx-get="/search/"
  168.              hx-target="#search-modal"
  169.              hx-trigger="click">
  170.        <svg width="16" height="16" viewBox="0 0 24 24" fill="none"
  171.             stroke="currentColor" stroke-width="1.5">
  172.          <circle cx="11" cy="11" r="8"/>
  173.          <path d="m21 21-4.35-4.35"/>
  174.        </svg>
  175.      </button>
  176.  
  177.      
  178.      <button id="theme-btn" onclick="toggleTheme()"
  179.              class="text-text-dim hover:text-gold transition-colors p-1"
  180.              aria-label="Тема">
  181.        <svg id="theme-icon-sun" width="16" height="16" viewBox="0 0 24 24" fill="none"
  182.             stroke="currentColor" stroke-width="1.5" style="display:none">
  183.          <circle cx="12" cy="12" r="5"/>
  184.          <line x1="12" y1="1" x2="12" y2="3"/>
  185.          <line x1="12" y1="21" x2="12" y2="23"/>
  186.          <line x1="4.22" y1="4.22" x2="5.64" y2="5.64"/>
  187.          <line x1="18.36" y1="18.36" x2="19.78" y2="19.78"/>
  188.          <line x1="1" y1="12" x2="3" y2="12"/>
  189.          <line x1="21" y1="12" x2="23" y2="12"/>
  190.          <line x1="4.22" y1="19.78" x2="5.64" y2="18.36"/>
  191.          <line x1="18.36" y1="5.64" x2="19.78" y2="4.22"/>
  192.        </svg>
  193.        <svg id="theme-icon-moon" width="16" height="16" viewBox="0 0 24 24" fill="none"
  194.             stroke="currentColor" stroke-width="1.5">
  195.          <path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"/>
  196.        </svg>
  197.      </button>
  198.      
  199.      <button id="burger-btn" class="md:hidden text-text-dim hover:text-gold transition-colors p-1"
  200.              @click="menuOpen = !menuOpen"
  201.              aria-label="Меню">
  202.        <svg x-show="!menuOpen" width="20" height="20" viewBox="0 0 24 24"
  203.             fill="none" stroke="currentColor" stroke-width="1.5">
  204.          <path d="M3 6h18M3 12h18M3 18h18"/>
  205.        </svg>
  206.        <svg x-show="menuOpen" width="20" height="20" viewBox="0 0 24 24"
  207.             fill="none" stroke="currentColor" stroke-width="1.5">
  208.          <path d="M18 6 6 18M6 6l12 12"/>
  209.        </svg>
  210.      </button>
  211.    </div>
  212.  </header>
  213.  
  214.  
  215.  <div x-show="menuOpen"
  216.       x-transition:enter="transition ease-out duration-200"
  217.       x-transition:enter-start="opacity-0 -translate-y-2"
  218.       x-transition:enter-end="opacity-100 translate-y-0"
  219.       x-transition:leave="transition ease-in duration-150"
  220.       x-transition:leave-start="opacity-100 translate-y-0"
  221.       x-transition:leave-end="opacity-0 -translate-y-2"
  222.       class="fixed top-16 left-0 right-0 z-40 bg-bg2 border-b border-border
  223.              flex flex-col px-6 py-6 gap-5 md:hidden">
  224.    <a href="/" @click="menuOpen = false"
  225.       class="text-text-dim text-sm tracking-widest uppercase">Главная</a>
  226.    <a href="/articles/" @click="menuOpen = false"
  227.       class="text-text-dim text-sm tracking-widest uppercase">Учение</a>
  228.    <a href="/library/" @click="menuOpen = false"
  229.       class="text-text-dim text-sm tracking-widest uppercase">Библиотека</a>
  230.    <a href="/videogallery/" @click="menuOpen = false"
  231.       class="text-text-dim text-sm tracking-widest uppercase">Видео</a>
  232.    <a href="/forum/" @click="menuOpen = false"
  233.       class="text-text-dim text-sm tracking-widest uppercase">Форум</a>
  234.    <a href="/about/" @click="menuOpen = false"
  235.       class="text-text-dim text-sm tracking-widest uppercase">О нас</a>
  236.    
  237.    
  238.    <div class="flex gap-4 pt-2 border-t border-border">
  239.      <a href="/accounts/login/" @click="menuOpen = false" class="text-text-dim text-sm tracking-widest uppercase">Войти</a>
  240.      <a href="/accounts/signup/" @click="menuOpen = false" class="text-gold text-sm tracking-widest uppercase">Регистрация</a>
  241.    </div>
  242.    
  243.  
  244.    
  245.    <div class="flex gap-4 pt-2 border-t border-border text-xs tracking-widest">
  246.      
  247.      <form action="/i18n/setlang/" method="post" style="display:inline">
  248.        <input type="hidden" name="csrfmiddlewaretoken" value="3M8BuynS3MCol7eLuARcdqQIVe4CEn22XoIxYs1zzqEgC4EjjKBy1X34q73mlxER">
  249.        <input type="hidden" name="next" value="/forums/tools.php">
  250.        <input type="hidden" name="language" value="ru">
  251.        <button type="submit" class="text-gold bg-transparent border-0 cursor-pointer p-0 text-xs tracking-widest">RU</button>
  252.      </form>
  253.      <form action="/i18n/setlang/" method="post" style="display:inline">
  254.        <input type="hidden" name="csrfmiddlewaretoken" value="3M8BuynS3MCol7eLuARcdqQIVe4CEn22XoIxYs1zzqEgC4EjjKBy1X34q73mlxER">
  255.        <input type="hidden" name="next" value="/forums/tools.php">
  256.        <input type="hidden" name="language" value="uk">
  257.        <button type="submit" class="text-text-faint bg-transparent border-0 cursor-pointer p-0 text-xs tracking-widest">UA</button>
  258.      </form>
  259.      <form action="/i18n/setlang/" method="post" style="display:inline">
  260.        <input type="hidden" name="csrfmiddlewaretoken" value="3M8BuynS3MCol7eLuARcdqQIVe4CEn22XoIxYs1zzqEgC4EjjKBy1X34q73mlxER">
  261.        <input type="hidden" name="next" value="/forums/tools.php">
  262.        <input type="hidden" name="language" value="en">
  263.        <button type="submit" class="text-text-faint bg-transparent border-0 cursor-pointer p-0 text-xs tracking-widest">EN</button>
  264.      </form>
  265.    </div>
  266.  </div>
  267.  
  268.  
  269.  <div id="search-modal"></div>
  270.  
  271.  
  272.  <div x-data="{ agentOpen: false }">
  273.    <button id="agent-btn" @click="agentOpen = !agentOpen; var _o = agentOpen; if(window.innerWidth < 768) document.getElementById('scroll-top').style.display = _o ? 'none' : ''; if(window.innerWidth >= 768) document.querySelector('main').style.paddingRight = _o ? '420px' : ''.paddingRight = agentOpen ? '420px' : ''"
  274.            x-show="!agentOpen"
  275.            x-cloak
  276.            class="fixed bottom-8 right-8 z-50 w-10 h-10
  277.                   border border-gold-dim text-gold
  278.                   flex items-center justify-center
  279.                   hover:bg-gold/10 transition-all duration-300"
  280.            style="animation:spulse 2.5s ease-in-out infinite">
  281.      <svg width="18" height="18" viewBox="0 0 24 24" fill="none"
  282.           stroke="currentColor" stroke-width="1.5">
  283.        <path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/>
  284.      </svg>
  285.    </button>
  286.    
  287.  
  288.  
  289.  
  290.  
  291. <div x-show="agentOpen"
  292.     x-transition:enter="transition ease-out duration-200"
  293.     x-transition:enter-start="opacity-0"
  294.     x-transition:enter-end="opacity-100"
  295.     x-transition:leave="transition ease-in duration-150"
  296.     x-transition:leave-start="opacity-100"
  297.     x-transition:leave-end="opacity-0"
  298.     @click="agentOpen = false"
  299.     class="fixed inset-0 z-50 bg-black/40 backdrop-blur-sm md:hidden"
  300.     x-cloak>
  301. </div>
  302.  
  303.  
  304. <div x-show="agentOpen"
  305.     x-transition:enter="transition ease-out duration-300"
  306.     x-transition:enter-start="translate-x-full"
  307.     x-transition:enter-end="translate-x-0"
  308.     x-transition:leave="transition ease-in duration-200"
  309.     x-transition:leave-start="translate-x-0"
  310.     x-transition:leave-end="translate-x-full"
  311.     class="fixed right-0 top-0 bottom-0 z-50
  312.            w-full md:w-[420px]
  313.            bg-bg border-l border-border
  314.            flex flex-col shadow-2xl"
  315.     x-cloak>
  316.  
  317.  
  318.  <div class="flex items-center justify-between px-5 py-4 border-b border-border shrink-0">
  319.    <div class="flex items-center gap-3">
  320.      <svg width="24" height="24" viewBox="0 0 40 40" fill="none">
  321.        <circle cx="20" cy="20" r="18" stroke="#C4972A" stroke-width="0.75" opacity="0.6"/>
  322.        <circle cx="20" cy="20" r="3" fill="#C4972A" opacity="0.8"/>
  323.        <line x1="20" y1="8" x2="20" y2="32" stroke="#C4972A" stroke-width="0.75" opacity="0.5"/>
  324.        <line x1="8" y1="20" x2="32" y2="20" stroke="#C4972A" stroke-width="0.75" opacity="0.5"/>
  325.      </svg>
  326.      <div>
  327.        <div class="font-serif text-sm text-text">Дорже Жамбо-лама</div>
  328.        <div class="text-[10px] text-text-faint tracking-widest uppercase">Запитати Вчителя</div>
  329.      </div>
  330.    </div>
  331.    <button @click="agentOpen = false"
  332.            class="text-text-faint hover:text-text transition-colors p-1">
  333.      <svg width="16" height="16" viewBox="0 0 24 24" fill="none"
  334.           stroke="currentColor" stroke-width="1.5">
  335.        <path d="M18 6 6 18M6 6l12 12"/>
  336.      </svg>
  337.    </button>
  338.  </div>
  339.  
  340.  
  341.  <div class="flex-1 overflow-hidden flex flex-col">
  342.  
  343.    
  344.    
  345.    <div class="flex-1 flex flex-col items-center justify-center px-8 py-12 text-center">
  346.      <p class="font-serif text-xl font-light text-text mb-2">Вітаємо</p>
  347.      <p class="text-text-faint text-sm leading-relaxed mb-8">
  348.        Щоб спілкуватись з асистентом, увійдіть або зареєструйтесь
  349.      </p>
  350.      <div class="flex flex-col gap-3 w-full max-w-xs">
  351.        <a href="/accounts/login/?next=/forums/tools.php"
  352.           class="border border-gold-dim text-gold py-3 text-xs tracking-widest uppercase
  353.                  hover:bg-gold/10 transition-colors text-center">
  354.          Войти
  355.        </a>
  356.        <a href="/accounts/signup/?next=/forums/tools.php"
  357.           class="border border-border text-text-dim py-3 text-xs tracking-widest uppercase
  358.                  hover:border-gold-dim hover:text-gold transition-colors text-center">
  359.          Зарегистрироваться
  360.        </a>
  361.      </div>
  362.    </div>
  363.  
  364.    
  365.  
  366.  </div>
  367. </div>
  368.  
  369. <script>
  370. var _agentLoading = false;
  371. var _agentSessionId = 'sess_' + Math.random().toString(36).substr(2, 9);
  372. var _agentMsgCount = 0;
  373.  
  374. function agentKeydown(e) {
  375.  if (e.key === 'Enter' && !e.shiftKey) {
  376.    e.preventDefault();
  377.    agentSend();
  378.  }
  379. }
  380.  
  381. function agentResize(el) {
  382.  el.style.height = 'auto';
  383.  el.style.height = Math.min(el.scrollHeight, 128) + 'px';
  384. }
  385.  
  386. async function agentSend() {
  387.  var input = document.getElementById('agent-input');
  388.  var text = input.value.trim();
  389.  if (!text || _agentLoading) return;
  390.  
  391.  input.value = '';
  392.  input.style.height = 'auto';
  393.  _agentLoading = true;
  394.  _agentMsgCount++;
  395.  
  396.  var btn = document.getElementById('agent-send-btn');
  397.  if (btn) btn.disabled = true;
  398.  
  399.  agentAppendMsg('user', text);
  400.  var loadingId = 'loading_' + Date.now();
  401.  agentAppendLoading(loadingId);
  402.  
  403.  try {
  404.    var resp = await fetch('/agent/ask/', {
  405.      method: 'POST',
  406.      headers: {
  407.        'Content-Type': 'application/json',
  408.        'X-CSRFToken': agentGetCsrf(),
  409.      },
  410.      body: JSON.stringify({text: text, session_id: _agentSessionId, source_filter: window._agentSourceFilter || null}),
  411.    });
  412.    var data = await resp.json();
  413.    document.getElementById(loadingId)?.remove();
  414.    agentAppendMsg('agent', data.answer || data.error || '...');
  415.    if (_agentMsgCount >= 3) {
  416.      document.getElementById('agent-rating').classList.remove('hidden');
  417.    }
  418.  } catch(e) {
  419.    document.getElementById(loadingId)?.remove();
  420.    agentAppendMsg('agent', 'Помилка з\'єднання. Спробуйте ще раз.');
  421.  } finally {
  422.    _agentLoading = false;
  423.    if (btn) btn.disabled = false;
  424.  }
  425. }
  426.  
  427. function agentAppendMsg(role, text) {
  428.  var container = document.getElementById('agent-messages');
  429.  var isUser = role === 'user';
  430.  var div = document.createElement('div');
  431.  div.className = 'flex gap-3' + (isUser ? ' justify-end' : '');
  432.  if (isUser) {
  433.    div.innerHTML = '<div class="bg-gold/10 border border-gold-dim/30 px-4 py-3 text-sm text-text leading-relaxed max-w-[85%]">' + agentEscape(text) + '</div>';
  434.  } else {
  435.    div.innerHTML = '<div class="shrink-0 w-7 h-7 rounded-full border border-gold-dim flex items-center justify-center"><svg width="12" height="12" viewBox="0 0 40 40" fill="none"><circle cx="20" cy="20" r="3" fill="#C4972A"/></svg></div><div class="bg-bg2 border border-border px-4 py-3 text-sm text-text-dim leading-relaxed max-w-[85%]">' + text + '</div>';
  436.  }
  437.  container.appendChild(div);
  438.  container.scrollTop = container.scrollHeight;
  439. }
  440.  
  441. function agentAppendLoading(id) {
  442.  var container = document.getElementById('agent-messages');
  443.  var div = document.createElement('div');
  444.  div.id = id;
  445.  div.className = 'flex gap-3';
  446.  div.innerHTML = '<div class="shrink-0 w-7 h-7 rounded-full border border-gold-dim flex items-center justify-center"><svg width="12" height="12" viewBox="0 0 40 40" fill="none"><circle cx="20" cy="20" r="3" fill="#C4972A"/></svg></div><div class="bg-bg2 border border-border px-4 py-3 text-sm text-text-faint"><span class="animate-pulse">···</span></div>';
  447.  container.appendChild(div);
  448.  container.scrollTop = container.scrollHeight;
  449. }
  450.  
  451. function agentEscape(text) {
  452.  return text.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');
  453. }
  454.  
  455. function agentGetCsrf() {
  456.  var meta = document.querySelector('meta[name="csrf-token"]');
  457.  return meta ? meta.getAttribute('content') : '';
  458. }
  459.  
  460. function agentRate(stars) {
  461.  document.querySelectorAll('#agent-stars button').forEach(function(btn, i) {
  462.    btn.textContent = i < stars ? '★' : '☆';
  463.    btn.classList.toggle('text-gold', i < stars);
  464.  });
  465.  fetch('/agent/rate/', {
  466.    method: 'POST',
  467.    headers: {'Content-Type': 'application/json', 'X-CSRFToken': agentGetCsrf()},
  468.    body: JSON.stringify({stars: stars, session_id: _agentSessionId}),
  469.  });
  470. }
  471. </script>
  472.  
  473.  </div>
  474.  
  475.  
  476.  <main class="pt-16" style="transition: padding-right 0.3s ease">
  477.    
  478. <div class="min-h-screen flex items-center justify-center px-6 py-24">
  479.  <div class="w-full max-w-md text-center">
  480.  
  481.    <svg class="mx-auto mb-6" width="40" height="40" viewBox="0 0 40 40" fill="none">
  482.      <circle cx="20" cy="20" r="18" stroke="#C4972A" stroke-width="0.75" opacity="0.6"/>
  483.      <circle cx="20" cy="20" r="3" fill="#C4972A" opacity="0.8"/>
  484.      <line x1="20" y1="8" x2="20" y2="32" stroke="#C4972A" stroke-width="0.75" opacity="0.5"/>
  485.      <line x1="8" y1="20" x2="32" y2="20" stroke="#C4972A" stroke-width="0.75" opacity="0.5"/>
  486.      <line x1="11.5" y1="11.5" x2="28.5" y2="28.5" stroke="#C4972A" stroke-width="0.75" opacity="0.5"/>
  487.      <line x1="28.5" y1="11.5" x2="11.5" y2="28.5" stroke="#C4972A" stroke-width="0.75" opacity="0.5"/>
  488.    </svg>
  489.  
  490.    <h1 class="font-serif text-3xl md:text-4xl font-light text-text mb-4">404</h1>
  491.    <p class="text-text-dim text-sm leading-relaxed mb-8">
  492.      Сторінку не знайдено або посилання застаріле.
  493.    </p>
  494.  
  495.    <a href="/"
  496.       class="border border-gold-dim text-gold py-3 px-8
  497.              text-xs tracking-widest uppercase
  498.              hover:bg-gold/10 transition-colors">
  499.      На главную
  500.    </a>
  501.  
  502.  </div>
  503. </div>
  504.  
  505.  </main>
  506.  
  507.  
  508.  <footer class="border-t border-border mt-24 px-6 md:px-12 py-12
  509.                 grid grid-cols-1 md:grid-cols-4 gap-10">
  510.    <div>
  511.      <div class="flex items-center gap-3 mb-4">
  512.        <svg width="28" height="28" viewBox="0 0 40 40" fill="none">
  513.          <circle cx="20" cy="20" r="18" stroke="#C4972A" stroke-width="0.75" opacity="0.6"/>
  514.          <circle cx="20" cy="20" r="3" fill="#C4972A" opacity="0.8"/>
  515.          <line x1="20" y1="8" x2="20" y2="32" stroke="#C4972A" stroke-width="0.75" opacity="0.5"/>
  516.          <line x1="8" y1="20" x2="32" y2="20" stroke="#C4972A" stroke-width="0.75" opacity="0.5"/>
  517.        </svg>
  518.        <span class="font-serif text-base text-text">Нінгма</span>
  519.      </div>
  520.      <p class="text-sm text-text-dim leading-relaxed">
  521.        Буддійський орден Лунг-Жонг-па в Україні. Понад 30 років несемо Вчення Будди.
  522.      </p>
  523.    </div>
  524.  
  525.    <div>
  526.      <h4 class="text-[10px] tracking-widest uppercase text-text-faint mb-4">Учение</h4>
  527.      <div class="flex flex-col gap-2">
  528.        <a href="/articles/" class="text-sm text-text-dim hover:text-gold transition-colors">Статьи</a>
  529.        <a href="/library/"  class="text-sm text-text-dim hover:text-gold transition-colors">Библиотека</a>
  530.        <a href="/videogallery/" class="text-sm text-text-dim hover:text-gold transition-colors">Видео</a>
  531.      </div>
  532.    </div>
  533.    <div>
  534.      <h4 class="text-[10px] tracking-widest uppercase text-text-faint mb-4">Сообщество</h4>
  535.      <div class="flex flex-col gap-2">
  536.        <a href="/forum/"   class="text-sm text-text-dim hover:text-gold transition-colors">Форум</a>
  537.        <a href="/about/"   class="text-sm text-text-dim hover:text-gold transition-colors">О нас</a>
  538.        <a href="/contact/" class="text-sm text-text-dim hover:text-gold transition-colors">Связь</a>
  539.        <a href="/legal/"   class="text-sm text-text-dim hover:text-gold transition-colors">Правовая информация</a>
  540.      </div>
  541.    </div>
  542.    <div>
  543.      <h4 class="text-[10px] tracking-widest uppercase text-text-faint mb-4">Поддержать</h4>
  544.      <p class="text-sm text-text-dim leading-relaxed mb-4">
  545.        Поддержите развитие сайта
  546.      </p>
  547.      <a href="https://send.monobank.ua/jar/AfBMcvNQmY" target="_blank"
  548.         class="inline-flex items-center gap-2 border border-gold-dim text-gold
  549.                px-4 py-2 text-xs tracking-widest uppercase
  550.                hover:bg-gold/10 transition-colors">
  551.        🙏 Поддержать сайт
  552.      </a>
  553.    </div>
  554.  </footer>
  555.  
  556.  <div class="border-t border-border px-6 md:px-12 py-4
  557.              flex flex-col md:flex-row justify-between items-center gap-2">
  558.    <p class="text-[11px] text-text-faint">
  559.      © 2026 Буддійський орден Лунг-Жонг-па в Україні
  560.    </p>
  561.    <p class="text-[10px] text-gold-dim tracking-widest">ОМ МА НІ ПЕМЕ ХУМ</p>
  562.  </div>
  563.  
  564.  
  565.  <!-- Tour -->
  566.  <script src="/static/js/tour.js?v=2"></script>
  567.  
  568.  
  569.  
  570.  
  571.  <button id="scroll-top"
  572.          onclick="window.scrollTo({top:0,behavior:'smooth'})"
  573.          style="left:50%;transform:translateX(-50%)"
  574.          class="fixed bottom-8 z-50 w-10 h-10
  575.                 border border-gold-dim text-gold
  576.                 flex items-center justify-center
  577.                 hover:bg-gold/10 transition-all duration-300
  578.                 opacity-0 translate-y-4 pointer-events-none"
  579.          aria-label="Наверх">
  580.    <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
  581.      <path d="M12 19V5M5 12l7-7 7 7"/>
  582.    </svg>
  583.  </button>
  584.  <script>
  585.    const btn = document.getElementById('scroll-top');
  586.    window.addEventListener('scroll', () => {
  587.      if (window.scrollY > 300) {
  588.        btn.classList.remove('opacity-0','translate-y-4','pointer-events-none');
  589.        btn.classList.add('opacity-100','translate-y-0');
  590.      } else {
  591.        btn.classList.add('opacity-0','translate-y-4','pointer-events-none');
  592.        btn.classList.remove('opacity-100','translate-y-0');
  593.      }
  594.    });
  595.  </script>
  596.  
  597.  
  598.  
  599. <div id="cookie-banner"
  600.     class="fixed bottom-0 left-0 right-0 z-50 bg-bg2 border-t border-border
  601.            px-6 py-4 flex flex-col md:flex-row items-center justify-between gap-4"
  602.     style="display:none!important">
  603.  <p class="text-text-faint text-xs leading-relaxed max-w-2xl">
  604.    Цей сайт використовує файли cookie для забезпечення роботи сервісів. Продовжуючи перегляд, ви погоджуєтесь з використанням cookies.
  605.    <a href="/legal/" class="text-gold hover:text-gold-dim transition-colors ml-1">Подробнее</a>
  606.  </p>
  607.  <button onclick="acceptCookies()"
  608.          class="flex-shrink-0 border border-gold-dim text-gold px-6 py-2
  609.                 text-xs tracking-widest uppercase hover:bg-gold/10 transition-colors">
  610.    Принять
  611.  </button>
  612. </div>
  613.  
  614. <script>
  615.  function acceptCookies() {
  616.    localStorage.setItem('cookies_accepted', '1');
  617.    document.getElementById('cookie-banner').style.display = 'none';
  618.  }
  619.  if (!localStorage.getItem('cookies_accepted')) {
  620.    document.getElementById('cookie-banner').style.removeProperty('display');
  621.  }
  622. </script>
  623.  <script>
  624.    function toggleTheme() {
  625.      const html = document.documentElement;
  626.      const current = html.getAttribute('data-theme');
  627.      const next = current === 'light' ? 'dark' : 'light';
  628.      html.setAttribute('data-theme', next);
  629.      localStorage.setItem('theme', next);
  630.      document.getElementById('theme-icon-sun').style.display = next === 'light' ? 'block' : 'none';
  631.      document.getElementById('theme-icon-moon').style.display = next === 'dark' ? 'block' : 'none';
  632.    }
  633.    (function() {
  634.      const saved = localStorage.getItem('theme') || 'dark';
  635.      document.documentElement.setAttribute('data-theme', saved);
  636.      document.addEventListener('DOMContentLoaded', function() {
  637.        document.getElementById('theme-icon-sun').style.display = saved === 'light' ? 'block' : 'none';
  638.        document.getElementById('theme-icon-moon').style.display = saved === 'dark' ? 'block' : 'none';
  639.      });
  640.    })();
  641.  </script>
  642.  
  643.  <script src="/static/js/selection-tooltip.js?v=2"></script>
  644.  <script src="/static/js/summarize-btn.js?v=1"></script>
  645. <script defer src="https://static.cloudflareinsights.com/beacon.min.js/v833ccba57c9e4d2798f2e76cebdd09a11778172276447" integrity="sha512-57MDmcccJXYtNnH+ZiBwzC4jb2rvgVCEokYN+L/nLlmO8rfYT/gIpW2A569iJ/3b+0UEasghjuZH/ma3wIs/EQ==" data-cf-beacon='{"version":"2024.11.0","token":"50d9ede244cc460e86997a9255e73365","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}' crossorigin="anonymous"></script>
  646. </body>
  647. </html>
  648.  
Copyright © 2002-9 Sam Ruby, Mark Pilgrim, Joseph Walton, and Phil Ringnalda