Загрузка данных
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Dice Arena — Меньше 12</title>
<!-- Шрифты и иконки -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700;800&family=Unbounded:wght@500;700;900&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/all.min.css">
<link rel="stylesheet" href="style.css">
<!-- Конфетти -->
<script src="https://cdn.jsdelivr.net/npm/canvas-confetti@1.9.3/dist/confetti.browser.min.js" defer></script>
<script src="script.js" defer></script>
</head>
<body>
<!-- Живой фон -->
<div class="bg">
<div class="blob b1"></div>
<div class="blob b2"></div>
<div class="blob b3"></div>
<div class="grain"></div>
</div>
<main class="app">
<header class="top">
<div class="brand">
<div class="brand-mark"><i class="fa-solid fa-dice"></i></div>
<div>
<h1>Dice Arena</h1>
<p class="subtitle">Набери больше соперника, но строго меньше 12</p>
</div>
</div>
<div class="top-actions">
<button class="icon-btn" id="sound-btn" title="Звук"></button>
<button class="icon-btn" id="rules-btn" title="Правила"><i class="fa-solid fa-circle-question"></i></button>
</div>
</header>
<!-- Экран авторизации -->
<section id="auth-screen" class="card auth reveal">
<h2>Вход на арену</h2>
<p class="muted">Новый ник — аккаунт создастся автоматически</p>
<form id="auth-form" autocomplete="off">
<label class="field">
<span>Имя игрока</span>
<div class="field-box">
<i class="fa-solid fa-user"></i>
<input id="username" type="text" placeholder="Никнейм" maxlength="16" required>
</div>
</label>
<label class="field">
<span>Пароль</span>
<div class="field-box">
<i class="fa-solid fa-lock"></i>
<input id="password" type="password" placeholder="••••••" required>
<button type="button" class="eye" id="toggle-pass"><i class="fa-solid fa-eye"></i></button>
</div>
</label>
<button type="submit" class="btn btn-gold wide">Войти <i class="fa-solid fa-arrow-right"></i></button>
</form>
<p class="hint"><i class="fa-solid fa-shield-halved"></i> Пароль хранится только в виде SHA-256 хэша в вашем браузере</p>
</section>
<!-- Игровой экран -->
<section id="game-screen" class="hidden">
<div class="bar card">
<div class="user">
<div class="avatar" id="avatar">A</div>
<div>
<span class="muted small">Игрок</span>
<strong id="current-user">—</strong>
</div>
</div>
<div class="stats">
<div class="stat"><span class="stat-val" id="total-player-wins">0</span><span class="stat-lbl">Ваши победы</span></div>
<div class="stat"><span class="stat-val clay" id="total-computer-wins">0</span><span class="stat-lbl">Победы ИИ</span></div>
<div class="stat"><span class="stat-val sage" id="streak">0</span><span class="stat-lbl">Серия</span></div>
</div>
<button class="btn btn-ghost" id="logout-btn"><i class="fa-solid fa-arrow-right-from-bracket"></i><span>Выйти</span></button>
</div>
<div class="table">
<div class="zone card player active" id="player-zone">
<div class="zone-head"><i class="fa-solid fa-user"></i> Вы <span class="turn-pill">ваш ход</span></div>
<div class="sum" id="player-sum">0</div>
<div class="meter"><div class="meter-fill" id="player-meter"></div><span class="meter-limit"></span></div>
<div class="chips" id="player-dice"></div>
<div class="attempts">Бросков осталось: <b id="player-attempts">3</b></div>
</div>
<div class="dice-stage">
<div class="dice-box" id="dice-box">
<div class="dice-shadow"></div>
<div class="dice-hop">
<div class="dice-wrap"><div class="cube" id="cube"></div></div>
</div>
</div>
<div class="round-num">Раунд <b id="round-num">1</b></div>
</div>
<div class="zone card computer" id="computer-zone">
<div class="zone-head"><i class="fa-solid fa-robot"></i> Компьютер <span class="turn-pill">думает…</span></div>
<div class="sum" id="computer-sum">0</div>
<div class="meter"><div class="meter-fill" id="computer-meter"></div><span class="meter-limit"></span></div>
<div class="chips" id="computer-dice"></div>
<div class="attempts">Бросков осталось: <b id="computer-attempts">3</b></div>
</div>
</div>
<div class="controls">
<button id="roll-btn" class="btn btn-gold"><i class="fa-solid fa-dice"></i> Бросить <kbd>Space</kbd></button>
<button id="stop-btn" class="btn btn-outline" disabled><i class="fa-solid fa-hand"></i> Пас <kbd>Enter</kbd></button>
<button id="next-round-btn" class="btn btn-sage hidden"><i class="fa-solid fa-rotate-right"></i> Следующий раунд <kbd>Enter</kbd></button>
</div>
<div class="log card" id="round-log">
<p class="system-msg">Арена готова. Сделайте первый бросок!</p>
</div>
<div class="bottom-grid">
<div class="card panel">
<h3><i class="fa-solid fa-clock-rotate-left"></i> История раундов</h3>
<ul class="history" id="history"></ul>
</div>
<div class="card panel">
<h3><i class="fa-solid fa-trophy"></i> Таблица лидеров</h3>
<ol class="leaders" id="leaderboard"></ol>
</div>
</div>
</section>
<footer>Dice Arena · удача любит смелых, но не жадных</footer>
</main>
<!-- Правила -->
<div class="modal hidden" id="rules-modal">
<div class="modal-card card">
<button class="icon-btn close" id="rules-close"><i class="fa-solid fa-xmark"></i></button>
<h2>Правила</h2>
<ol class="rules">
<li>У каждого до <b>3 бросков</b> кубика за раунд.</li>
<li>Сумма <b>12 и больше</b> — мгновенный проигрыш.</li>
<li>Остановиться можно в любой момент кнопкой «Пас».</li>
<li>Потом бросает компьютер. У кого сумма больше, тот и победил.</li>
</ol>
<p class="muted small">Space — бросок, Enter — пас или следующий раунд, Esc — закрыть</p>
</div>
</div>
<div class="toasts" id="toasts"></div>
</body>
</html>