<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:base="https://www.pandoraburo.ru/" xml:lang="ru">
  <id>https://www.pandoraburo.ru/kosti-i-zhrebiy-nox</id>
  <link href="https://www.pandoraburo.ru/kosti-i-zhrebiy-nox.xml" rel="self"/>
  <title>Кости и Жребий — NOX</title>
  <subtitle type="html">
&lt;html lang="ru"&gt;
&lt;head&gt;
&lt;meta charset="UTF-8"&gt;
&lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&gt;
&lt;meta name="theme-color" content="#05070f"&gt;
&lt;title&gt;Кости и Жребий — NOX · Оракул Ночи&lt;/title&gt;
&lt;meta name="description" content="Гадание на костях (астрагалах), Книга Перемен И-Цзин и подбрасывание монеты. Онлайн-жребий с магическими эффектами."&gt;
&lt;meta name="keywords" content="гадание на костях, астрагалы, игральные кости, книга перемен, и-цзин, гексаграмма, подбрасывание монеты, жребий, да нет"&gt;

&lt;link rel="preconnect" href="https://fonts.googleapis.com" /&gt;
&lt;link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="crossorigin" /&gt;
&lt;link href="https://fonts.googleapis.com/css2?family=Cinzel:wght@400;600;800&amp;amp;family=Inter:wght@400;500;600;700;800&amp;amp;family=JetBrains+Mono:wght@400;700&amp;amp;display=swap" rel="stylesheet" /&gt;
&lt;link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" /&gt;

&lt;style&gt;
/* ═══════════ ПЕРЕМЕННЫЕ ═══════════ */
:root{
  --bg-0:#05070f; --bg-1:#0a0f1e; --bg-2:#101830;
  --cyan:#00f0ff; --magenta:#ff2bd6; --gold:#d4af37; --gold-b:#f0d060;
  --violet:#b55cff; --green:#39ff14; --orange:#ff8a1e;
  --text:#e8f4ff; --dim:#8aa0c0; --line:rgba(255,255,255,.08);
  --font-disp:'Cinzel',serif;
  --font-body:'Inter',system-ui,sans-serif;
  --font-mono:'JetBrains Mono',monospace;
}
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{
  min-height:100vh;
  background:radial-gradient(ellipse at top,#0a1530 0%,var(--bg-0) 70%);
  color:var(--text);
  font-family:var(--font-body);
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
}
body::before{
  content:'';position:fixed;inset:0;pointer-events:none;z-index:0;
  background:
    radial-gradient(circle at 10% 20%,rgba(0,240,255,.1),transparent 40%),
    radial-gradient(circle at 90% 80%,rgba(57,255,20,.07),transparent 40%),
    radial-gradient(circle at 50% 50%,rgba(0,240,255,.04),transparent 50%);
}
body::after{
  content:'';position:fixed;inset:0;pointer-events:none;z-index:1;
  background-image:
    radial-gradient(1px 1px at 20% 30%,#fff,transparent),
    radial-gradient(1px 1px at 60% 70%,#fff,transparent),
    radial-gradient(1px 1px at 80% 10%,#fff,transparent),
    radial-gradient(1px 1px at 35% 85%,#fff,transparent),
    radial-gradient(2px 2px at 45% 15%,#00f0ff,transparent),
    radial-gradient(1px 1px at 70% 90%,#39ff14,transparent);
  opacity:.5;
  animation:stars 8s ease-in-out infinite alternate;
}
@keyframes stars{0%{opacity:.3}100%{opacity:.7}}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}

/* ═══════════ ШАПКА ═══════════ */
.nox-header{
  position:sticky;top:0;z-index:50;
  padding:14px 20px;
  background:rgba(5,7,15,.85);
  backdrop-filter:blur(12px);
  border-bottom:1px solid var(--line);
  display:flex;align-items:center;justify-content:space-between;gap:14px;
}
.nox-logo{
  display:flex;align-items:center;gap:10px;
  text-decoration:none;color:inherit;
  transition:transform .2s;
}
.nox-logo:hover{transform:scale(1.03)}
.nox-logo-icon{
  width:38px;height:38px;border-radius:50%;
  background:radial-gradient(circle at 30% 30%,#2a1b60,#0a0820);
  border:2px solid var(--gold);
  display:flex;align-items:center;justify-content:center;
  font-size:18px;color:var(--gold);
  box-shadow:0 0 20px rgba(212,175,55,.5);
}
.nox-logo-text{
  font-family:var(--font-disp);
  font-size:20px;font-weight:800;letter-spacing:5px;
  background:linear-gradient(90deg,var(--gold),var(--gold-b));
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;
}
.nox-menu-btn{
  display:flex;align-items:center;gap:8px;
  padding:9px 16px;border-radius:999px;
  background:rgba(212,175,55,.1);
  border:1px solid rgba(212,175,55,.4);
  color:var(--gold-b);font-size:12px;font-weight:700;
  letter-spacing:1px;text-transform:uppercase;
  transition:.2s;
}
.nox-menu-btn:hover{background:rgba(212,175,55,.2);box-shadow:0 0 15px rgba(212,175,55,.3)}

/* ═══════════ БЕГУЩАЯ СТРОКА ═══════════ */
.nox-happiness{
  max-width:900px;margin:16px auto 8px;padding:12px 18px;
  background:linear-gradient(90deg,rgba(0,240,255,.08),rgba(255,43,214,.08),rgba(212,175,55,.08));
  border:1px solid rgba(212,175,55,.4);
  border-radius:999px;
  display:flex;align-items:center;gap:12px;
  position:relative;overflow:hidden;
  box-shadow:0 0 25px rgba(212,175,55,.15);
  margin-left:20px;margin-right:20px;
}
.nox-happiness-icon{
  font-size:18px;color:var(--gold);flex-shrink:0;
  animation:twinkle 2s ease-in-out infinite alternate;
}
@keyframes twinkle{0%{filter:drop-shadow(0 0 5px var(--gold))}100%{filter:drop-shadow(0 0 15px var(--gold))}}
.nox-happiness-text{
  flex:1;font-size:13px;color:#fff;line-height:1.4;font-style:italic;
  transition:opacity .5s,transform .5s;
  text-shadow:0 0 8px rgba(0,240,255,.3);
}
.nox-happiness-text.flip{opacity:0;transform:translateY(8px)}
.nox-happiness-btn{
  font-size:10px;color:var(--gold);font-weight:700;
  padding:4px 10px;border:1px solid var(--gold);border-radius:999px;
  letter-spacing:1px;text-transform:uppercase;transition:.2s;flex-shrink:0;
}
.nox-happiness-btn:hover{background:var(--gold);color:#0a0a0a}

/* ═══════════ ХЛЕБНЫЕ КРОШКИ ═══════════ */
.nox-crumbs{
  max-width:1200px;margin:0 auto;padding:0 20px;
  font-size:11px;color:var(--dim);
  display:flex;align-items:center;gap:8px;
  letter-spacing:.5px;
}
.nox-crumbs a{color:var(--dim);text-decoration:none;transition:.2s}
.nox-crumbs a:hover{color:var(--cyan)}
.nox-crumbs .sep{opacity:.5}
.nox-crumbs .cur{color:var(--gold-b)}

/* ═══════════ ОСНОВНОЙ КОНТЕНТ ═══════════ */
.nox-main{
  max-width:1200px;margin:0 auto;padding:24px 20px 40px;
  position:relative;z-index:10;
}
.nox-title{
  font-family:var(--font-disp);
  font-size:clamp(28px,5vw,44px);font-weight:800;
  letter-spacing:4px;text-transform:uppercase;
  background:linear-gradient(90deg,var(--cyan),var(--green),var(--gold));
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;
  text-align:center;
  margin-bottom:8px;
  filter:drop-shadow(0 0 40px rgba(0,240,255,.3));
}
.nox-title-sub{
  text-align:center;color:var(--dim);font-size:13px;
  letter-spacing:3px;text-transform:uppercase;
  margin-bottom:26px;font-style:italic;
}

/* ═══════════ ТАБЫ ═══════════ */
.nox-tabs{
  display:flex;justify-content:center;gap:10px;
  margin-bottom:26px;flex-wrap:wrap;
}
.nox-tab{
  padding:12px 26px;border-radius:999px;
  border:1px solid var(--line);
  background:rgba(255,255,255,.03);
  color:var(--dim);
  font-size:13px;font-weight:700;
  letter-spacing:1.2px;text-transform:uppercase;
  transition:all .3s;
  display:inline-flex;align-items:center;gap:8px;
}
.nox-tab:hover{
  color:var(--cyan);border-color:var(--cyan);
  box-shadow:0 0 15px rgba(0,240,255,.3);
}
.nox-tab.on{
  background:linear-gradient(135deg,rgba(0,240,255,.2),rgba(57,255,20,.1));
  color:#fff;border-color:var(--cyan);
  box-shadow:0 0 25px rgba(0,240,255,.5);
  text-shadow:0 0 10px var(--cyan);
}

/* ═══════════ СЦЕНА ═══════════ */
.nox-stage-wrap{display:none}
.nox-stage-wrap.on{display:block;animation:stageIn .5s ease}
@keyframes stageIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}

.nox-stage{
  position:relative;
  border-radius:24px;
  background:radial-gradient(ellipse at 50% 0%,#0a1a30 0%,#0a0820 60%,#05070f 100%);
  border:1px solid rgba(0,240,255,.25);
  box-shadow:inset 0 0 80px rgba(0,0,0,.7),0 0 40px rgba(0,240,255,.08);
  overflow:hidden;
  min-height:480px;
  padding:30px 20px;
  margin-bottom:20px;
}

/* ═══════════ КОСТИ ═══════════ */
.dice-info{
  text-align:center;
  color:var(--dim);font-size:13px;font-style:italic;
  margin-bottom:20px;
}
.dice-stage{
  display:flex;
  justify-content:center;
  align-items:center;
  gap:40px;
  margin:40px 0;
  min-height:180px;
  flex-wrap:wrap;
}
.die-wrap{
  display:flex;flex-direction:column;align-items:center;gap:14px;
}
.die-label{
  font-family:var(--font-disp);
  font-size:11px;letter-spacing:2px;text-transform:uppercase;
  color:var(--dim);
}
.die{
  width:90px;height:90px;
  background:linear-gradient(145deg,#1a2a50,#0a1530);
  border:2px solid var(--cyan);
  border-radius:16px;
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:52px;
  color:var(--cyan);
  box-shadow:
    0 0 25px rgba(0,240,255,.5),
    inset 0 0 20px rgba(0,240,255,.15);
  font-family:var(--font-mono);
  font-weight:700;
  transition:all .3s;
  transform-style:preserve-3d;
  position:relative;
}
.die.rolling{
  animation:diceRoll 1s cubic-bezier(.3,.7,.4,1) forwards;
}
@keyframes diceRoll{
  0%{transform:translateY(-200px) rotateX(0) rotateY(0) rotateZ(0);opacity:0}
  40%{opacity:1}
  60%{transform:translateY(-30px) rotateX(720deg) rotateY(360deg) rotateZ(180deg)}
  80%{transform:translateY(10px) rotateX(1000deg) rotateY(540deg) rotateZ(270deg)}
  100%{transform:translateY(0) rotateX(1080deg) rotateY(720deg) rotateZ(360deg)}
}
.die.revealed{
  border-color:var(--gold);
  color:var(--gold-b);
  box-shadow:
    0 0 35px rgba(212,175,55,.7),
    inset 0 0 25px rgba(212,175,55,.25);
  animation:dieResult 0.6s cubic-bezier(.34,1.56,.64,1);
}
@keyframes dieResult{
  0%{transform:scale(1.3)}
  100%{transform:scale(1)}
}

/* ═══════════ И-ЦЗИН ═══════════ */
.iching-info{
  text-align:center;
  color:var(--dim);font-size:13px;font-style:italic;
  margin-bottom:20px;
}
.iching-stage{
  display:flex;
  justify-content:center;
  align-items:center;
  gap:40px;
  margin:20px 0;
  flex-wrap:wrap;
}
.iching-coins{
  display:flex;
  gap:16px;
  margin-bottom:20px;
  justify-content:center;
  flex-wrap:wrap;
}
.coin{
  width:60px;height:60px;
  border-radius:50%;
  background:radial-gradient(circle at 30% 30%,#f0d68a,#a07020 70%);
  border:2px solid var(--gold-b);
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:24px;
  color:#3a2410;
  box-shadow:
    0 0 20px rgba(212,175,55,.5),
    inset 0 0 10px rgba(0,0,0,.3);
  font-family:var(--font-disp);
  font-weight:800;
  transform-style:preserve-3d;
  transition:transform .3s;
}
.coin.heads{color:#5a3a10}
.coin.tails{
  background:radial-gradient(circle at 30% 30%,#c0c8d8,#506080 70%);
  border-color:#8090a8;
  color:#1a2030;
}
.coin.flipping{
  animation:coinFlip .7s ease-in-out;
}
@keyframes coinFlip{
  0%{transform:translateY(-100px) rotateY(0);opacity:0}
  30%{opacity:1}
  50%{transform:translateY(-40px) rotateY(720deg)}
  100%{transform:translateY(0) rotateY(1440deg)}
}

.iching-hexagram{
  display:flex;
  flex-direction:column;
  gap:8px;
  padding:24px;
  border-radius:16px;
  background:radial-gradient(circle at 50% 50%,rgba(212,175,55,.08),transparent 70%);
  border:1px solid rgba(212,175,55,.3);
  min-width:200px;
  align-items:center;
}
.hex-line{
  width:160px;
  height:12px;
  display:flex;
  gap:8px;
  opacity:0;
  transform:translateX(-20px);
  transition:all .5s cubic-bezier(.34,1.56,.64,1);
}
.hex-line.drawn{
  opacity:1;
  transform:translateX(0);
}
.hex-line span{
  height:100%;
  background:linear-gradient(90deg,var(--gold),var(--gold-b));
  border-radius:3px;
  box-shadow:0 0 12px rgba(212,175,55,.7),inset 0 0 6px rgba(255,255,255,.3);
}
.hex-line.yang span{flex:1}
.hex-line.yin span{flex:1}
.hex-line.yin span:first-child{margin-right:16px}

.iching-name{
  text-align:center;
  margin-top:12px;
}
.iching-name .num{
  font-family:var(--font-mono);
  font-size:11px;color:var(--dim);
  letter-spacing:2px;
}
.iching-name .ttl{
  font-family:var(--font-disp);
  font-size:22px;font-weight:800;
  color:var(--gold-b);
  letter-spacing:3px;
  margin:4px 0 8px;
  text-shadow:0 0 20px rgba(212,175,55,.6);
}
.iching-name .meaning{
  font-size:13px;color:#cbd5e1;line-height:1.6;
  max-width:400px;margin:0 auto;
}

/* ═══════════ МОНЕТА ═══════════ */
.coin-q-wrap{
  text-align:center;
  margin-bottom:20px;
}
.coin-q-input{
  width:100%;max-width:480px;
  padding:14px 18px;
  background:rgba(0,240,255,.05);
  border:1px solid rgba(0,240,255,.3);
  border-radius:14px;
  color:#fff;font-size:14px;
  font-family:inherit;
  transition:.2s;
}
.coin-q-input::placeholder{color:rgba(138,160,192,.5)}
.coin-q-input:focus{
  outline:none;
  border-color:var(--cyan);
  box-shadow:0 0 0 3px rgba(0,240,255,.2),0 0 20px rgba(0,240,255,.3);
}
.big-coin-wrap{
  display:flex;
  justify-content:center;
  align-items:center;
  min-height:260px;
  margin:20px 0;
}
.big-coin{
  width:160px;height:160px;
  border-radius:50%;
  background:radial-gradient(circle at 30% 30%,#f0d68a,#a07020 70%);
  border:4px solid var(--gold-b);
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:64px;
  color:#3a2410;
  box-shadow:
    0 0 50px rgba(212,175,55,.6),
    inset 0 0 30px rgba(0,0,0,.3);
  font-family:var(--font-disp);
  font-weight:800;
  transform-style:preserve-3d;
  transition:all .3s;
}
.big-coin.flipping{
  animation:bigCoinFlip 1.4s cubic-bezier(.4,.2,.3,1);
}
@keyframes bigCoinFlip{
  0%{transform:rotateY(0) translateY(-200px);opacity:0}
  30%{opacity:1;transform:rotateY(720deg) translateY(-80px)}
  60%{transform:rotateY(1440deg) translateY(-30px)}
  100%{transform:rotateY(2160deg) translateY(0)}
}
.big-coin.result-heads{
  background:radial-gradient(circle at 30% 30%,#ffe680,#d4af37 70%);
  box-shadow:
    0 0 70px rgba(240,214,138,.9),
    0 0 120px rgba(212,175,55,.5),
    inset 0 0 30px rgba(0,0,0,.2);
  animation:coinPulseH 2s ease-in-out infinite;
}
.big-coin.result-tails{
  background:radial-gradient(circle at 30% 30%,#c0c8d8,#506080 70%);
  border-color:#8090a8;
  color:#1a2030;
  box-shadow:
    0 0 70px rgba(140,160,200,.8),
    0 0 120px rgba(80,100,140,.5),
    inset 0 0 30px rgba(0,0,0,.3);
  animation:coinPulseT 2s ease-in-out infinite;
}
@keyframes coinPulseH{
  0%,100%{box-shadow:0 0 70px rgba(240,214,138,.9),0 0 120px rgba(212,175,55,.5),inset 0 0 30px rgba(0,0,0,.2)}
  50%{box-shadow:0 0 100px rgba(240,214,138,1),0 0 160px rgba(212,175,55,.8),inset 0 0 30px rgba(0,0,0,.2)}
}
@keyframes coinPulseT{
  0%,100%{box-shadow:0 0 70px rgba(140,160,200,.8),0 0 120px rgba(80,100,140,.5),inset 0 0 30px rgba(0,0,0,.3)}
  50%{box-shadow:0 0 100px rgba(140,160,200,1),0 0 160px rgba(80,100,140,.8),inset 0 0 30px rgba(0,0,0,.3)}
}

/* ═══════════ КНОПКА ═══════════ */
.nox-action{
  text-align:center;
  margin-top:20px;
}
.nox-btn{
  display:inline-flex;align-items:center;gap:10px;
  padding:15px 42px;border-radius:999px;
  font-size:14px;font-weight:800;letter-spacing:1.5px;text-transform:uppercase;
  background:linear-gradient(135deg,var(--cyan),var(--green));
  color:#000;
  box-shadow:0 0 30px rgba(0,240,255,.6),0 0 60px rgba(57,255,20,.3);
  transition:all .25s;
}
.nox-btn:hover{transform:translateY(-3px);box-shadow:0 0 50px rgba(0,240,255,.9),0 0 80px rgba(57,255,20,.5)}
.nox-btn:disabled{opacity:.5;cursor:not-allowed;transform:none}
.nox-btn.gold{background:linear-gradient(135deg,var(--gold),var(--gold-b))}

/* ═══════════ ЖУРНАЛ ═══════════ */
.nox-log{
  background:linear-gradient(145deg,rgba(15,25,50,.6),rgba(8,14,32,.8));
  border:1px solid var(--line);
  border-radius:20px;
  padding:22px;
  box-shadow:0 8px 32px rgba(0,0,0,.5);
}
.nox-log h2{
  font-family:var(--font-disp);
  font-size:15px;letter-spacing:3px;text-transform:uppercase;
  color:var(--gold);
  padding-bottom:10px;
  border-bottom:1px solid var(--line);
  margin-bottom:14px;
  display:flex;align-items:center;gap:10px;
}
.nox-log h2::before{content:'?';font-size:18px}
.nox-log-item{
  padding:14px 16px;
  border-left:3px solid var(--cyan);
  background:linear-gradient(90deg,rgba(0,240,255,.08),transparent);
  border-radius:0 10px 10px 0;
  margin-bottom:10px;
  animation:logIn .5s ease;
}
@keyframes logIn{from{opacity:0;transform:translateX(-10px)}to{opacity:1;transform:none}}
.nox-log-item.gold{border-left-color:var(--gold);background:linear-gradient(90deg,rgba(212,175,55,.08),transparent)}
.nox-log-item .icon{
  font-size:28px;display:inline-block;
  vertical-align:middle;margin-right:12px;
  filter:drop-shadow(0 0 8px rgba(0,240,255,.6));
}
.nox-log-item .body{
  display:inline-block;vertical-align:middle;
  max-width:calc(100% - 50px);
}
.nox-log-item .ttl{
  font-family:var(--font-disp);
  font-size:14px;color:var(--gold-b);font-weight:700;
  letter-spacing:1px;margin-bottom:3px;
}
.nox-log-item .desc{
  font-size:13px;color:#cbd5e1;line-height:1.5;
}
.nox-log-empty{
  text-align:center;color:var(--dim);
  font-style:italic;font-size:13px;
  padding:24px 0;
}

/* ═══════════ НАВИГАЦИЯ ВНИЗУ ═══════════ */
.nox-nav-bottom{
  display:flex;justify-content:space-between;gap:10px;
  max-width:1200px;margin:40px auto 0;padding:0 20px;
}
.nox-nav-btn{
  flex:1;
  padding:14px 18px;
  border-radius:14px;
  background:rgba(255,255,255,.03);
  border:1px solid var(--line);
  color:var(--text);
  text-decoration:none;
  font-size:12px;font-weight:700;letter-spacing:1px;text-transform:uppercase;
  transition:.25s;
  display:flex;align-items:center;justify-content:center;gap:8px;
  text-align:center;
}
.nox-nav-btn:hover{
  border-color:var(--cyan);
  color:var(--cyan);
  box-shadow:0 0 20px rgba(0,240,255,.25);
  transform:translateY(-2px);
}
.nox-nav-btn.home{
  background:linear-gradient(135deg,rgba(212,175,55,.15),rgba(212,175,55,.05));
  border-color:rgba(212,175,55,.5);
  color:var(--gold-b);
}
.nox-nav-btn.home:hover{color:#fff;box-shadow:0 0 20px rgba(212,175,55,.35)}

/* ═══════════ МЕНЮ ═══════════ */
.nox-menu-overlay{
  position:fixed;inset:0;z-index:200;
  display:none;
  background:rgba(3,5,15,.94);
  backdrop-filter:blur(12px);
  padding:20px;
  overflow-y:auto;
}
.nox-menu-overlay.open{display:block;animation:menuIn .35s ease}
@keyframes menuIn{from{opacity:0}to{opacity:1}}
.nox-menu-head{
  max-width:1100px;margin:0 auto 20px;
  display:flex;justify-content:space-between;align-items:center;
}
.nox-menu-head h2{
  font-family:var(--font-disp);font-size:22px;
  letter-spacing:5px;color:var(--gold-b);
}
.nox-menu-close{
  width:44px;height:44px;border-radius:50%;
  background:rgba(255,255,255,.05);
  border:1px solid var(--line);
  color:var(--dim);font-size:18px;
  transition:.2s;
}
.nox-menu-close:hover{background:rgba(255,43,214,.2);border-color:var(--magenta);color:var(--magenta);transform:rotate(90deg)}
.nox-menu-grid{
  max-width:1100px;margin:0 auto;
  display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));
  gap:12px;
}
.nox-menu-item{
  padding:20px 12px;
  border-radius:16px;
  background:linear-gradient(145deg,rgba(15,25,50,.7),rgba(8,14,32,.9));
  border:1px solid var(--line);
  text-align:center;text-decoration:none;color:inherit;
  transition:.25s;
  cursor:pointer;
}
.nox-menu-item:hover{
  transform:translateY(-4px);
  border-color:var(--item-color,var(--cyan));
  box-shadow:0 0 25px var(--item-color,rgba(0,240,255,.3));
}
.nox-menu-item.current{
  border-color:var(--gold);
  background:linear-gradient(145deg,rgba(212,175,55,.15),rgba(8,14,32,.9));
  box-shadow:0 0 25px rgba(212,175,55,.3);
}
.nox-menu-icon{font-size:28px;display:block;margin-bottom:8px;transition:transform .3s}
.nox-menu-item:hover .nox-menu-icon{transform:scale(1.15) rotate(-5deg)}
.nox-menu-name{font-family:var(--font-disp);font-size:12px;font-weight:700;letter-spacing:1px}
.nox-menu-sub{font-size:9px;color:var(--dim);margin-top:3px;text-transform:uppercase;letter-spacing:.5px}
.nox-menu-item[data-color="gold"]{--item-color:var(--gold)}
.nox-menu-item[data-color="cyan"]{--item-color:var(--cyan)}
.nox-menu-item[data-color="magenta"]{--item-color:var(--magenta)}
.nox-menu-item[data-color="violet"]{--item-color:var(--violet)}
.nox-menu-item[data-color="green"]{--item-color:var(--green)}
.nox-menu-item[data-color="orange"]{--item-color:var(--orange)}

/* ═══════════ АДАПТИВ ═══════════ */
@media(max-width:640px){
  .nox-title{font-size:24px;letter-spacing:2px}
  .nox-stage{padding:20px 12px;min-height:400px}
  .dice-stage{gap:20px;margin:20px 0}
  .die{width:70px;height:70px;font-size:40px}
  .coin{width:48px;height:48px;font-size:20px}
  .iching-coins{gap:10px}
  .hex-line{width:130px}
  .big-coin{width:120px;height:120px;font-size:48px}
  .nox-nav-btn{font-size:10px;padding:12px 8px}
  .nox-tab{padding:9px 14px;font-size:11px}
  .nox-logo-text{font-size:16px;letter-spacing:4px}
  .nox-logo-icon{width:32px;height:32px;font-size:16px}
}
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;


&lt;header class="nox-header"&gt;
  &lt;a href="index.html" class="nox-logo"&gt;
    &lt;div class="nox-logo-icon"&gt;?&lt;/div&gt;
    &lt;div class="nox-logo-text"&gt;NOX&lt;/div&gt;
  &lt;/a&gt;
  &lt;button class="nox-menu-btn" onclick="noxMenuOpen()"&gt;
    &lt;i class="fas fa-th"&gt;&lt;/i&gt; Меню
  &lt;/button&gt;
&lt;/header&gt;


&lt;div class="nox-happiness"&gt;
  &lt;span class="nox-happiness-icon"&gt;✨&lt;/span&gt;
  &lt;span class="nox-happiness-text" id="noxHappinessText"&gt;Загрузка...&lt;/span&gt;
  &lt;button class="nox-happiness-btn" onclick="noxNewHappiness()"&gt;Ещё&lt;/button&gt;
&lt;/div&gt;


&lt;div class="nox-crumbs"&gt;
  &lt;a href="index.html"&gt;NOX&lt;/a&gt;
  &lt;span class="sep"&gt;/&lt;/span&gt;
  &lt;span class="cur"&gt;Кости и Жребий&lt;/span&gt;
&lt;/div&gt;


&lt;main class="nox-main"&gt;
  &lt;h1 class="nox-title"&gt;? Кости и Жребий&lt;/h1&gt;
  &lt;div class="nox-title-sub"&gt;— три пути случайности —&lt;/div&gt;

  
  &lt;div class="nox-tabs"&gt;
    &lt;button class="nox-tab on" data-stage="dice"&gt;&lt;i&gt;?&lt;/i&gt; Кости&lt;/button&gt;
    &lt;button class="nox-tab" data-stage="iching"&gt;&lt;i&gt;☯️&lt;/i&gt; И-Цзин&lt;/button&gt;
    &lt;button class="nox-tab" data-stage="coin"&gt;&lt;i&gt;?&lt;/i&gt; Монета&lt;/button&gt;
  &lt;/div&gt;

  
  &lt;div class="nox-stage-wrap on" id="stage-dice"&gt;
    &lt;div class="nox-stage"&gt;
      &lt;div class="dice-info"&gt;Три астрагала расскажут о прошлом, настоящем и будущем&lt;/div&gt;

      &lt;div class="dice-stage"&gt;
        &lt;div class="die-wrap"&gt;
          &lt;div class="die-label"&gt;Прошлое&lt;/div&gt;
          &lt;div class="die" data-i="0"&gt;?&lt;/div&gt;
        &lt;/div&gt;
        &lt;div class="die-wrap"&gt;
          &lt;div class="die-label"&gt;Настоящее&lt;/div&gt;
          &lt;div class="die" data-i="1"&gt;?&lt;/div&gt;
        &lt;/div&gt;
        &lt;div class="die-wrap"&gt;
          &lt;div class="die-label"&gt;Будущее&lt;/div&gt;
          &lt;div class="die" data-i="2"&gt;?&lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="nox-action"&gt;
        &lt;button class="nox-btn" id="diceRoll"&gt;? Бросить кости&lt;/button&gt;
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class="nox-log"&gt;
      &lt;h2&gt;Толкование&lt;/h2&gt;
      &lt;div id="diceLog"&gt;
        &lt;div class="nox-log-empty"&gt;Нажми «Бросить кости», чтобы начать…&lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  
  &lt;div class="nox-stage-wrap" id="stage-iching"&gt;
    &lt;div class="nox-stage"&gt;
      &lt;div class="iching-info"&gt;Три монеты подбрасываются 6 раз — складывается гексаграмма&lt;/div&gt;

      &lt;div class="iching-stage"&gt;
        &lt;div&gt;
          &lt;div class="iching-coins" id="ichingCoins"&gt;
            &lt;div class="coin heads" data-i="0"&gt;陽&lt;/div&gt;
            &lt;div class="coin heads" data-i="1"&gt;陽&lt;/div&gt;
            &lt;div class="coin heads" data-i="2"&gt;陽&lt;/div&gt;
          &lt;/div&gt;

          &lt;div class="iching-hexagram" id="hexagram"&gt;
            
          &lt;/div&gt;

          &lt;div class="iching-name" id="ichingName" style="display:none"&gt;
            &lt;div class="num" id="ichingNum"&gt;&lt;/div&gt;
            &lt;div class="ttl" id="ichingTtl"&gt;&lt;/div&gt;
            &lt;div class="meaning" id="ichingMeaning"&gt;&lt;/div&gt;
          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="nox-action"&gt;
        &lt;button class="nox-btn gold" id="ichingGo"&gt;☯️ Бросить монеты&lt;/button&gt;
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class="nox-log"&gt;
      &lt;h2&gt;Толкование&lt;/h2&gt;
      &lt;div id="ichingLog"&gt;
        &lt;div class="nox-log-empty"&gt;Нажми «Бросить монеты», чтобы начать…&lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  
  &lt;div class="nox-stage-wrap" id="stage-coin"&gt;
    &lt;div class="nox-stage"&gt;
      &lt;div class="dice-info"&gt;Сформулируй вопрос — монета ответит «Да» или «Нет»&lt;/div&gt;

      &lt;div class="coin-q-wrap"&gt;
        &lt;input type="text" class="coin-q-input" id="coinQ" placeholder="Задай вопрос (необязательно)…" maxlength="120" /&gt;
      &lt;/div&gt;

      &lt;div class="big-coin-wrap"&gt;
        &lt;div class="big-coin" id="bigCoin"&gt;?&lt;/div&gt;
      &lt;/div&gt;

      &lt;div class="nox-action"&gt;
        &lt;button class="nox-btn gold" id="coinFlip"&gt;? Подбросить монету&lt;/button&gt;
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class="nox-log"&gt;
      &lt;h2&gt;Ответ&lt;/h2&gt;
      &lt;div id="coinLog"&gt;
        &lt;div class="nox-log-empty"&gt;Сформулируй вопрос и подбрось монету…&lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

&lt;/main&gt;


&lt;nav class="nox-nav-bottom"&gt;
  &lt;a href="candles.html" class="nox-nav-btn"&gt;← Свечи&lt;/a&gt;
  &lt;a href="index.html" class="nox-nav-btn home"&gt;? Главная&lt;/a&gt;
  &lt;a href="pendulum.html" class="nox-nav-btn"&gt;Маятник →&lt;/a&gt;
&lt;/nav&gt;


&lt;div class="nox-menu-overlay" id="noxMenu"&gt;
  &lt;div class="nox-menu-head"&gt;
    &lt;h2&gt;? NOX&lt;/h2&gt;
    &lt;button class="nox-menu-close" onclick="noxMenuClose()"&gt;✕&lt;/button&gt;
  &lt;/div&gt;
  &lt;div class="nox-menu-grid" id="noxMenuGrid"&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;script&gt;
"use strict";

/* ═══════════════════════════════════════════
   БЕГУЩАЯ СТРОКА
   ═══════════════════════════════════════════ */
const HAPPINESS = [
  "Сегодня вселенная на твоей стороне — сделай первый шаг.",
  "То, что ты ищешь, уже ищет тебя.",
  "Маленькое чудо случится там, где ты не ждёшь.",
  "Твоя интуиция сегодня громче обычного — слушай её.",
  "Одна дверь закрывается, чтобы открылась лучшая.",
  "Не спеши. Всё идёт по нужному маршруту.",
  "Смелость — это не отсутствие страха, а шаг вопреки ему.",
  "Загадай желание — сегодня оно услышано.",
  "Луна знает твои тайны и хранит их.",
  "Ответ придёт во сне, если отпустить вопрос.",
  "Скажи «да» тому, что давно ждёт твоего согласия.",
  "Не бойся перемен — они несут подарки.",
  "Судьба любит тех, кто не боится ошибаться.",
  "Ты сильнее, чем кажется. Помни об этом.",
  "Заметь знак — он уже рядом.",
  "Сегодня хороший день, чтобы простить себя.",
  "Твой путь уникален. Не сравнивай его с чужим.",
  "То, что кажется концом, — лишь поворот.",
  "Позволь себе мечтать вслух.",
  "Свет внутри тебя сильнее любой тьмы."
];
let hIdx = 0;
function noxNewHappiness() {
  const el = document.getElementById('noxHappinessText');
  el.classList.add('flip');
  setTimeout(() =&gt; {
    let i;
    do { i = Math.floor(Math.random() * HAPPINESS.length); }
    while (i === hIdx &amp;&amp; HAPPINESS.length &gt; 1);
    hIdx = i;
    el.textContent = HAPPINESS[i];
    el.classList.remove('flip');
  }, 350);
}

/* ═══════════════════════════════════════════
   МЕНЮ
   ═══════════════════════════════════════════ */
const MENU_ITEMS = [
  { file:'index.html',      icon:'?', name:'Главная',   sub:'NOX',           color:'gold' },
  { file:'tarot.html',      icon:'?', name:'Таро',      sub:'Карты',         color:'magenta' },
  { file:'candles.html',    icon:'?️', name:'Свечи',     sub:'Огонь',         color:'orange' },
  { file:'dice.html',       icon:'?', name:'Кости',     sub:'Жребий',        color:'cyan' },
  { file:'pendulum.html',   icon:'?', name:'Маятник',   sub:'Ответ',         color:'violet' },
  { file:'astrology.html',  icon:'?', name:'Астрология',sub:'Карта',         color:'cyan' },
  { file:'numerology.html', icon:'?', name:'Нумерология',sub:'Числа',        color:'gold' },
  { file:'runes.html',      icon:'?', name:'Руны',      sub:'Футарк',        color:'gold' },
  { file:'coffee.html',     icon:'☕', name:'Гуща',      sub:'Кофе',          color:'orange' },
  { file:'dreams.html',     icon:'?', name:'Сонник',    sub:'Сны',           color:'violet' },
  { file:'palm.html',       icon:'✋', name:'Хиромантия',sub:'Ладони',        color:'orange' },
  { file:'breath.html',     icon:'?️', name:'Практики', sub:'Покой',         color:'green' },
  { file:'amulet.html',     icon:'⛓️', name:'Оберег',    sub:'Код',           color:'green' }
];
const CURRENT_FILE = 'dice.html';
function noxMenuRender() {
  const g = document.getElementById('noxMenuGrid');
  g.innerHTML = MENU_ITEMS.map(m =&gt; `
    &lt;a class="nox-menu-item ${m.file===CURRENT_FILE?'current':''}" data-color="${m.color}" href="${m.file}"&gt;
      &lt;span class="nox-menu-icon"&gt;${m.icon}&lt;/span&gt;
      &lt;div class="nox-menu-name"&gt;${m.name}&lt;/div&gt;
      &lt;div class="nox-menu-sub"&gt;${m.sub}&lt;/div&gt;
    &lt;/a&gt;
  `).join('');
}
function noxMenuOpen() {
  noxMenuRender();
  document.getElementById('noxMenu').classList.add('open');
}
function noxMenuClose() {
  document.getElementById('noxMenu').classList.remove('open');
}

/* ═══════════════════════════════════════════
   ТАБЫ
   ═══════════════════════════════════════════ */
document.querySelectorAll('.nox-tab').forEach(t =&gt; {
  t.addEventListener('click', () =&gt; {
    document.querySelectorAll('.nox-tab').forEach(x =&gt; x.classList.remove('on'));
    document.querySelectorAll('.nox-stage-wrap').forEach(x =&gt; x.classList.remove('on'));
    t.classList.add('on');
    document.getElementById('stage-' + t.dataset.stage).classList.add('on');
  });
});

/* ═══════════════════════════════════════════
   МОДУЛЬ 1: КОСТИ
   ═══════════════════════════════════════════ */
const DICE_PIPS = { 1:'⚀', 2:'⚁', 3:'⚂', 4:'⚃', 5:'⚄', 6:'⚅' };
const DICE_MEANING = {
  1: { past: 'Единица в прошлом — начало пути, одиночество, ясность.', now: 'Сейчас ты в точке выбора. Всё зависит от тебя.', future: 'Новый старт уже близко. Готовься.' },
  2: { past: 'Двойка в прошлом — союз, партнёрство, важный выбор.', now: 'Баланс и гармония в настоящем. Ты на верном пути.', future: 'Встреча судьбы впереди. Откройся ей.' },
  3: { past: 'Тройка в прошлом — рост, общение, творчество.', now: 'Радость и творчество в настоящем. Твори смело.', future: 'Исполнение желания близко.' },
  4: { past: 'Четвёрка в прошлом — стабильность и основа.', now: 'Фундамент заложен. Время строить.', future: 'Прочный результат впереди.' },
  5: { past: 'Пятёрка в прошлом — испытание, вызов.', now: 'Перемены в настоящем. Не бойся их.', future: 'Победа над страхом. Ты справишься.' },
  6: { past: 'Шестёрка в прошлом — гармония и любовь.', now: 'Успех и радость сейчас. Наслаждайся.', future: 'Полное счастье впереди.' }
};

let diceBusy = false;
document.getElementById('diceRoll').addEventListener('click', () =&gt; {
  if (diceBusy) return;
  diceBusy = true;
  const btn = document.getElementById('diceRoll');
  btn.disabled = true;

  const dice = document.querySelectorAll('#stage-dice .die');
  const log = document.getElementById('diceLog');
  log.innerHTML = '&lt;div class="nox-log-empty"&gt;Кости катятся…&lt;/div&gt;';

  // Сброс
  dice.forEach(d =&gt; {
    d.classList.remove('rolling', 'revealed');
    d.textContent = '?';
    void d.offsetWidth;
  });

  // Бросок — 3 кубика с задержкой
  const values = [1,2,3].map(() =&gt; 1 + Math.floor(Math.random() * 6));

  dice.forEach((d, i) =&gt; {
    setTimeout(() =&gt; d.classList.add('rolling'), i * 150);
  });

  setTimeout(() =&gt; {
    dice.forEach((d, i) =&gt; {
      d.classList.remove('rolling');
      d.classList.add('revealed');
      d.textContent = DICE_PIPS[values[i]];
      const r = d.getBoundingClientRect();
      noxSparkles(r.left + r.width/2, r.top + r.height/2, 15);
    });
    setTimeout(() =&gt; {
      log.innerHTML = '';
      const positions = ['Прошлое', 'Настоящее', 'Будущее'];
      const keys = ['past', 'now', 'future'];
      const icons = ['⏳', '?', '?'];
      values.forEach((v, i) =&gt; {
        const item = document.createElement('div');
        item.className = 'nox-log-item';
        item.innerHTML = `
          &lt;span class="icon"&gt;${icons[i]}&lt;/span&gt;
          &lt;div class="body"&gt;
            &lt;div class="ttl"&gt;${positions[i]} · ${v}&lt;/div&gt;
            &lt;div class="desc"&gt;${DICE_MEANING[v][keys[i]]}&lt;/div&gt;
          &lt;/div&gt;
        `;
        log.appendChild(item);
      });
      diceBusy = false;
      btn.disabled = false;
    }, 400);
  }, 1500);
});

/* ═══════════════════════════════════════════
   МОДУЛЬ 2: И-ЦЗИН
   ═══════════════════════════════════════════ */

/* База: 64 гексаграммы (верхняя+нижняя триграммы) */
const TRIGRAMS = {
  111: { name:'Цянь', sym:'☰', el:'Небо' },
  110: { name:'Дуй',  sym:'☱', el:'Озеро' },
  101: { name:'Ли',   sym:'☲', el:'Огонь' },
  100: { name:'Чжэнь',sym:'☳', el:'Гром' },
  011: { name:'Сюнь', sym:'☴', el:'Ветер' },
  010: { name:'Кань', sym:'☵', el:'Вода' },
  001: { name:'Гэнь', sym:'☶', el:'Гора' },
  000: { name:'Кунь', sym:'☷', el:'Земля' }
};

/* 64 гексаграммы — название и краткое значение */
const HEXAGRAMS = {
  111111: { num:1, name:'Цянь', meaning:'Творчество, сила, чистая энергия. Время действовать решительно.' },
  000000: { num:2, name:'Кунь', meaning:'Исполнение, принятие, женская сила. Действуй мягко.' },
  100010: { num:3, name:'Чжунь', meaning:'Начальная трудность. Первый шаг всегда самый сложный.' },
  010001: { num:4, name:'Мэн', meaning:'Невежество, обучение. Ищи учителя.' },
  111010: { num:5, name:'Сюй', meaning:'Ожидание, терпение. Всё случится в свой час.' },
  010111: { num:6, name:'Сун', meaning:'Конфликт. Лучше отступить, чем спорить.' },
  000010: { num:7, name:'Ши', meaning:'Войско, дисциплина. Действуй организованно.' },
  010000: { num:8, name:'Би', meaning:'Союз, объединение. Ищи поддержку.' },
  111011: { num:9, name:'Сяо Чу', meaning:'Малое сдерживание. Маленькие шаги — тоже шаги.' },
  110111: { num:10, name:'Ли', meaning:'Поступь, осторожность. Иди как по тонкому льду.' },
  111000: { num:11, name:'Тай', meaning:'Расцвет, мир, гармония. Всё идёт как надо.' },
  000111: { num:12, name:'Пи', meaning:'Упадок, застой. Прими паузу.' },
  101111: { num:13, name:'Тун Жэнь', meaning:'Родство с людьми. Объединяйся с близкими по духу.' },
  111101: { num:14, name:'Да Ю', meaning:'Большое обладание. Ты в силе — используй её мудро.' },
  001000: { num:15, name:'Цянь', meaning:'Скромность, смирение. Оно приведёт к успеху.' },
  000100: { num:16, name:'Юй', meaning:'Радость, энтузиазм. Вдохновляй других.' },
  100110: { num:17, name:'Суй', meaning:'Следование. Иди за своим сердцем.' },
  011001: { num:18, name:'Гу', meaning:'Исправление, работа над ошибками.' },
  110000: { num:19, name:'Линь', meaning:'Приближение, готовность. Время настало.' },
  000011: { num:20, name:'Гуань', meaning:'Созерцание, наблюдение. Смотри, не действуй.' },
  100101: { num:21, name:'Ши Хэ', meaning:'Прогрызание, преодоление препятствий.' },
  101001: { num:22, name:'Би', meaning:'Красота, украшение. Внешнее отражает внутреннее.' },
  000001: { num:23, name:'Бо', meaning:'Разрушение, отсечение. Освободись от лишнего.' },
  100000: { num:24, name:'Фу', meaning:'Возврат, возобновление. Всё идёт по кругу.' },
  100111: { num:25, name:'У Ван', meaning:'Невинность, естественность. Будь прост.' },
  111001: { num:26, name:'Да Чу', meaning:'Большое накопление. Копи ресурсы.' },
  100011: { num:27, name:'И', meaning:'Питание, забота о себе. Не забывай о теле.' },
  011110: { num:28, name:'Да Го', meaning:'Большое превосходство. Не бойся идти против течения.' },
  010010: { num:29, name:'Кань', meaning:'Опасность, тьма. Будь внимателен.' },
  101101: { num:30, name:'Ли', meaning:'Огонь, ясность. Свет внутри тебя силён.' },
  001110: { num:31, name:'Сянь', meaning:'Взаимодействие, притяжение. Встреча двух сердец.' },
  011100: { num:32, name:'Хэн', meaning:'Постоянство, длительность. Не сдавайся.' },
  001111: { num:33, name:'Дунь', meaning:'Отступление. Иногда отойти — значит победить.' },
  111100: { num:34, name:'Да Чжуан', meaning:'Мощь, сила. Используй её ответственно.' },
  000101: { num:35, name:'Цзинь', meaning:'Прогресс, восход. Всё движется вверх.' },
  101000: { num:36, name:'Мин И', meaning:'Поражение света. Свет борется с тьмой.' },
  101011: { num:37, name:'Цзя Жэнь', meaning:'Семья, дом. Заботься о близких.' },
  110101: { num:38, name:'Куй', meaning:'Разлад, противостояние. Ищи компромисс.' },
  001010: { num:39, name:'Цзянь', meaning:'Препятствие. Ищи обходной путь.' },
  010100: { num:40, name:'Цзе', meaning:'Освобождение. Проблемы решаются.' },
  110001: { num:41, name:'Сунь', meaning:'Уменьшение, жертва. Отдай — и получишь.' },
  100011: { num:42, name:'И', meaning:'Приумножение. Время роста и прибыли.' },
  111110: { num:43, name:'Гуай', meaning:'Прорыв. Действуй решительно.' },
  011111: { num:44, name:'Гоу', meaning:'Встреча, искушение. Будь бдителен.' },
  000110: { num:45, name:'Цуй', meaning:'Собирание, объединение. Вместе сильнее.' },
  011000: { num:46, name:'Шэн', meaning:'Восхождение, рост. Поднимайся шаг за шагом.' },
  010110: { num:47, name:'Кунь', meaning:'Истощение, усталость. Отдохни.' },
  011010: { num:48, name:'Цзин', meaning:'Колодец, источник. Возвращайся к истокам.' },
  101110: { num:49, name:'Гэ', meaning:'Революция, переворот. Меняй всё.' },
  011101: { num:50, name:'Дин', meaning:'Котёл, трансформация. Готовь новое.' },
  100100: { num:51, name:'Чжэнь', meaning:'Гром, потрясение. Пробудись.' },
  001001: { num:52, name:'Гэнь', meaning:'Гора, остановка. Замри и наблюдай.' },
  001011: { num:53, name:'Цзянь', meaning:'Постепенное развитие. Не спеши.' },
  110100: { num:54, name:'Гуй Мэй', meaning:'Невеста, подчинение. Прими обстоятельства.' },
  101100: { num:55, name:'Фэн', meaning:'Изобилие, полнота. Наслаждайся моментом.' },
  001101: { num:56, name:'Люй', meaning:'Странник, дорога. Ты в пути.' },
  011011: { num:57, name:'Сюнь', meaning:'Ветер, мягкость. Действуй нежно.' },
  110110: { num:58, name:'Дуй', meaning:'Радость, общение. Откройся людям.' },
  010011: { num:59, name:'Хуань', meaning:'Рассеивание, распространение. Ты свободен.' },
  110010: { num:60, name:'Цзе', meaning:'Ограничение, рамки. Установи границы.' },
  110011: { num:61, name:'Чжун Фу', meaning:'Внутренняя правда. Слушай сердце.' },
  001100: { num:62, name:'Сяо Го', meaning:'Малое превосходство. Внимание к деталям.' },
  101010: { num:63, name:'Цзи Цзи', meaning:'После завершения. Конец — новое начало.' },
  010101: { num:64, name:'Вэй Цзи', meaning:'Ещё не завершено. Всё впереди.' }
};

let ichingBusy = false;
let currentLines = []; // шесть линий (1 = ян, 0 = инь), снизу вверх

document.getElementById('ichingGo').addEventListener('click', () =&gt; {
  if (ichingBusy) return;
  ichingBusy = true;
  const btn = document.getElementById('ichingGo');
  btn.disabled = true;

  const coins = document.querySelectorAll('#ichingCoins .coin');
  const hex = document.getElementById('hexagram');
  const log = document.getElementById('ichingLog');
  const nameBox = document.getElementById('ichingName');

  // Сброс
  hex.innerHTML = '';
  nameBox.style.display = 'none';
  log.innerHTML = '&lt;div class="nox-log-empty"&gt;Монеты летят…&lt;/div&gt;';
  currentLines = [];

  // Создаём 6 пустых позиций для линий (сверху вниз, но записываем снизу вверх)
  for (let i = 0; i &lt; 6; i++) {
    const line = document.createElement('div');
    line.className = 'hex-line';
    hex.appendChild(line);
  }

  // Бросок 6 раз
  let throwIdx = 0;

  function throwCoins() {
    if (throwIdx &gt;= 6) {
      finishIChing();
      return;
    }

    // Анимация монет
    coins.forEach((c, i) =&gt; {
      c.classList.remove('flipping');
      void c.offsetWidth;
      setTimeout(() =&gt; c.classList.add('flipping'), i * 80);
    });

    // Результат: 3 монеты, орёл = 3, решка = 2
    const results = [0,0,0].map(() =&gt; Math.random() &lt; 0.5 ? 3 : 2);
    const sum = results.reduce((a, b) =&gt; a + b, 0);
    // 6 = старый ян, 7 = молодой ян, 8 = молодая инь, 9 = старая инь
    // Для простоты: &gt;=7 → ян, &lt;7 → инь
    const isYang = sum &gt;= 7;

    setTimeout(() =&gt; {
      coins.forEach((c, i) =&gt; {
        c.classList.remove('heads', 'tails', 'flipping');
        if (results[i] === 3) {
          c.classList.add('heads');
          c.textContent = '陽';
        } else {
          c.classList.add('tails');
          c.textContent = '陰';
        }
      });

      // Рисуем линию (снизу вверх в hex, но добавляем в начало массива)
      currentLines.unshift(isYang ? 1 : 0);

      const lineEl = hex.children[5 - throwIdx]; // сверху вниз
      lineEl.className = 'hex-line ' + (isYang ? 'yang' : 'yin');
      lineEl.innerHTML = isYang
        ? '&lt;span&gt;&lt;/span&gt;'
        : '&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;';
      setTimeout(() =&gt; lineEl.classList.add('drawn'), 100);

      throwIdx++;
      setTimeout(throwCoins, 400);
    }, 700);
  }

  throwCoins();

  function finishIChing() {
    // Ключ гексаграммы — строка из 6 бит сверху вниз
    const key = currentLines.slice().reverse().join(''); // сверху вниз
    const hexData = HEXAGRAMS[key] || { num: 0, name: 'Неизвестно', meaning: 'Толкование недоступно.' };

    setTimeout(() =&gt; {
      document.getElementById('ichingNum').textContent = 'Гексаграмма № ' + hexData.num;
      document.getElementById('ichingTtl').textContent = hexData.name;
      document.getElementById('ichingMeaning').textContent = hexData.meaning;
      nameBox.style.display = 'block';

      log.innerHTML = `
        &lt;div class="nox-log-item gold"&gt;
          &lt;span class="icon"&gt;☯️&lt;/span&gt;
          &lt;div class="body"&gt;
            &lt;div class="ttl"&gt;№ ${hexData.num} · ${hexData.name}&lt;/div&gt;
            &lt;div class="desc"&gt;${hexData.meaning}&lt;/div&gt;
          &lt;/div&gt;
        &lt;/div&gt;
      `;

      noxSparkles(window.innerWidth/2, window.innerHeight/2, 40);
      ichingBusy = false;
      btn.disabled = false;
    }, 500);
  }
});

/* ═══════════════════════════════════════════
   МОДУЛЬ 3: МОНЕТА
   ═══════════════════════════════════════════ */
const COIN_PHRASES_HEADS = [
  'Да — вселенная подтверждает.',
  'Согласие. Действуй смело.',
  'Знак благоприятный. Начинай.',
  'Ответ — «да». Иди вперёд.',
  'Всё складывается. Соглашайся.'
];
const COIN_PHRASES_TAILS = [
  'Нет — сейчас не время.',
  'Отказ. Отпусти и подожди.',
  'Знак неблагоприятный. Пауза.',
  'Ответ — «нет». Развернись.',
  'Не сейчас. Есть другой путь.'
];
const COIN_PHRASES_EDGE = [
  'Редкий случай — ребро! Всё решится неожиданно.',
  'Монета встала на ребро — судьба ещё не решила.',
  'Это знак: ответ придёт сам, не торопи события.'
];

let coinBusy = false;
document.getElementById('coinFlip').addEventListener('click', () =&gt; {
  if (coinBusy) return;
  coinBusy = true;
  const btn = document.getElementById('coinFlip');
  btn.disabled = true;

  const coin = document.getElementById('bigCoin');
  const log = document.getElementById('coinLog');
  const q = document.getElementById('coinQ').value.trim();

  // Сброс
  coin.classList.remove('flipping', 'result-heads', 'result-tails');
  coin.textContent = '?';
  void coin.offsetWidth;

  log.innerHTML = '&lt;div class="nox-log-empty"&gt;Монета в воздухе…&lt;/div&gt;';

  // Анимация
  coin.classList.add('flipping');

  setTimeout(() =&gt; {
    coin.classList.remove('flipping');

    // Результат: 48% орёл, 48% решка, 4% ребро
    const r = Math.random();
    let result, icon, phrases;

    if (r &lt; 0.48) {
      result = 'heads';
      icon = '陽';
      phrases = COIN_PHRASES_HEADS;
    } else if (r &lt; 0.96) {
      result = 'tails';
      icon = '陰';
      phrases = COIN_PHRASES_TAILS;
    } else {
      result = 'edge';
      icon = '◯';
      phrases = COIN_PHRASES_EDGE;
    }

    coin.textContent = icon;
    coin.classList.add('result-' + result);

    // Искры
    const rect = coin.getBoundingClientRect();
    const colorMap = {
      heads: ['#f0d060','#d4af37','#fff6d4'],
      tails: ['#c0c8d8','#8090a8','#e0e8f8'],
      edge: ['#b55cff','#ff2bd6','#00f0ff']
    };
    noxSparklesMulti(rect.left + rect.width/2, rect.top + rect.height/2, 40, colorMap[result]);

    const phrase = phrases[Math.floor(Math.random() * phrases.length)];
    const title = result === 'heads' ? '? ОРЁЛ — ДА'
                : result === 'tails' ? '? РЕШКА — НЕТ'
                : '? РЕБРО — ОСОБЫЙ ЗНАК';

    setTimeout(() =&gt; {
      log.innerHTML = `
        ${q ? `&lt;div style="color:var(--dim);font-size:12px;font-style:italic;text-align:center;margin-bottom:10px"&gt;«${q.replace(/&lt;/g,'&amp;lt;')}»&lt;/div&gt;` : ''}
        &lt;div class="nox-log-item gold" style="text-align:center"&gt;
          &lt;div style="font-family:var(--font-disp);font-size:20px;color:var(--gold-b);letter-spacing:3px;margin-bottom:8px"&gt;
            ${title}
          &lt;/div&gt;
          &lt;div style="font-size:14px;color:#cbd5e1;line-height:1.6"&gt;${phrase}&lt;/div&gt;
        &lt;/div&gt;
      `;
      coinBusy = false;
      btn.disabled = false;
    }, 600);

  }, 1400);
});

/* ═══════════════════════════════════════════
   ИСКРЫ
   ═══════════════════════════════════════════ */
function noxSparkles(cx, cy, count) {
  noxSparklesMulti(cx, cy, count, ['#00f0ff','#39ff14','#d4af37','#f0d060','#b55cff']);
}
function noxSparklesMulti(cx, cy, count, colors) {
  count = count || 20;
  for (let i = 0; i &lt; count; i++) {
    const s = document.createElement('div');
    s.style.cssText = `
      position:fixed;left:${cx}px;top:${cy}px;width:6px;height:6px;
      border-radius:50%;background:${colors[i % colors.length]};
      box-shadow:0 0 12px ${colors[i % colors.length]};
      pointer-events:none;z-index:9999;
      transition:transform 1.2s cubic-bezier(.1,.8,.3,1),opacity 1.2s ease;
    `;
    document.body.appendChild(s);
    requestAnimationFrame(() =&gt; {
      const a = Math.random() * Math.PI * 2;
      const d = 80 + Math.random() * 160;
      s.style.transform = `translate(${Math.cos(a)*d}px,${Math.sin(a)*d}px) scale(.3)`;
      s.style.opacity = '0';
    });
    setTimeout(() =&gt; s.remove(), 1300);
  }
}

/* ═══════════════════════════════════════════
   ИНИЦИАЛИЗАЦИЯ
   ═══════════════════════════════════════════ */
window.addEventListener('DOMContentLoaded', () =&gt; {
  noxNewHappiness();
  setInterval(noxNewHappiness, 12000);
  console.log('? NOX · Кости и Жребий — загружено');
});
document.addEventListener('keydown', e =&gt; {
  if (e.key === 'Escape') noxMenuClose();
});
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</subtitle>
  <updated>2026-10-10T07:36:45Z</updated>
  <logo>https://pandoraburo.ru/ssl/u/pic/07/26436cc3c611f19d9efcd8c4a10874/-/0c723f71762611f1b3964aaba1665535.jpg</logo>
  <author>
    <name>1592962</name>
    <uri>https://www.pandoraburo.ru/</uri>
  </author>
</feed>
