/* Переменные тем, базовые стили страницы, экран входа, пасхалка-змейка */

/* Цветовые переменные тёмной и светлой темы */

:root {
  --bg-body: #1a1a2e;
  --bg-container: transparent;
  --bg-messages: rgba(0, 0, 0, 0.4);
  --bg-online: rgba(0, 0, 0, 0.4);
  --text-primary: #e0e0ff;
  --text-secondary: #ffd93d;
  --text-muted: #888;
  --border-color: #ff6b6b;
  --border-light: #ffd93d;
  --input-bg: #0f3460;
  --btn-bg: #ff6b6b;
  --btn-hover: #ff4d4d;
  --shadow-color: rgba(255, 107, 107, 0.3);
  --message-bg: rgba(0,0,0,0.3);
  --reaction-picker-bg: #16213e;
  --ход-цвет: #f0b429;              /* чей ход — отдельный цвет, не как «моё место» */
  --ход-тень: rgba(240, 180, 41, 0.45);
  --online-user-hover: rgba(255, 107, 107, 0.2);
  --modal-overlay: rgba(0,0,0,0.7);
  --scrollbar-track: #0f3460;
  --scrollbar-thumb: #ff6b6b;
  --divider: rgba(255, 217, 61, 0.25);
  /* Пузыри сообщений светлые в обеих темах, поэтому текст внутри них
     красится отдельными переменными — акценты темы на светлом фоне не читаются */
  --msg-username: #c0392b;
  --msg-time: #5f6b7a;
  --msg-mention: #c0392b;
  --msg-mention-bg: rgba(192, 57, 43, 0.12);
  --msg-control: #6b7280;
  --msg-border: rgba(26, 26, 46, 0.35);
  --msg-track: rgba(26, 26, 46, 0.15);
  --badge-bg: #ff6b6b;
  --badge-color: #fff;
  --own-msg-bg: #d4f1ff;
  --other-msg-bg: #f0f0f0;
  --error-bg: rgba(22, 33, 62, 0.95);
  --error-text: #e0e0ff;
  --error-border: #ff6b6b;
  --error-btn-bg: #ff6b6b;
  --error-btn-color: #fff;
  --error-btn-shadow: rgba(255, 107, 107, 0.3);
  --recording-bg: rgba(22, 33, 62, 0.95);
  --recording-text: #e0e0ff;
  --recording-border: #ff6b6b;
  --admin-btn-bg: rgba(255, 107, 107, 0.2);
  --admin-btn-hover: rgba(255, 107, 107, 0.4);
  --pause-bg: rgba(22, 33, 62, 0.95);
  --pause-text: #e0e0ff;
  --admin-room-bg: rgba(0, 0, 0, 0.3);
  --admin-room-border: #ffd93d;
  --admin-room-header: #ffd93d;
}
body.light-theme {
  --bg-body: #edeef0;
  --bg-container: transparent;
  --bg-messages: rgba(255, 255, 255, 0.4);
  --bg-online: rgba(255, 255, 255, 0.4);
  --text-primary: #1a1a2e;
  --text-secondary: #447bba;
  --text-muted: #818c99;
  --border-color: #447bba;
  --border-light: #447bba;
  --input-bg: #f0f2f5;
  --btn-bg: #447bba;
  --btn-hover: #336699;
  --shadow-color: rgba(68, 123, 186, 0.3);
  --message-bg: rgba(255,255,255,0.6);
  --reaction-picker-bg: #ffffff;
  --ход-цвет: #b8791a;
  --ход-тень: rgba(184, 121, 26, 0.4);
  --online-user-hover: rgba(68, 123, 186, 0.2);
  --modal-overlay: rgba(0,0,0,0.5);
  --scrollbar-track: #e7e8ec;
  --scrollbar-thumb: #447bba;
  --divider: rgba(68, 123, 186, 0.28);
  --msg-username: #2f6096;
  --msg-time: #5f6b7a;
  --msg-mention: #2f6096;
  --msg-mention-bg: rgba(47, 96, 150, 0.12);
  --msg-control: #6b7280;
  --msg-border: rgba(47, 96, 150, 0.45);
  --msg-track: rgba(47, 96, 150, 0.18);
  --badge-bg: #447bba;
  --badge-color: #fff;
  --own-msg-bg: #d4f1ff;
  --other-msg-bg: #e8e8e8;
  --error-bg: #1a1a2e;
  --error-text: #ffffff;
  --error-border: #ff6b6b;
  --error-btn-bg: #ff6b6b;
  --error-btn-color: #ffffff;
  --error-btn-shadow: rgba(255, 107, 107, 0.3);
  --recording-bg: #ffffff;
  --recording-text: #1a1a2e;
  --recording-border: #447bba;
  --admin-btn-bg: rgba(68, 123, 186, 0.2);
  --admin-btn-hover: rgba(68, 123, 186, 0.4);
  --pause-bg: rgba(255, 255, 255, 0.95);
  --pause-text: #1a1a2e;
  --admin-room-bg: rgba(255, 255, 255, 0.5);
  --admin-room-border: #447bba;
  --admin-room-header: #447bba;
}
* { box-sizing: border-box; }
/* Базовые стили страницы, заголовок, капли дождя */

body {
  background: var(--bg-body);
  color: var(--text-primary);
  /* В Press Start 2P нет ни эмодзи, ни символов вроде ▶ ⏸ ✕ — без явного
     шрифта для них браузер сваливался в cursive (на Windows это Comic Sans),
     отчего иконки выглядели чужеродно и съезжали по базовой линии */
  font-family: 'Press Start 2P', 'Segoe UI Emoji', 'Segoe UI Symbol',
               'Apple Color Emoji', 'Noto Color Emoji', 'Noto Emoji', sans-serif;
  font-size: 12px;
  max-width: 1200px;
  margin: 0 auto;
  padding: 20px 15px;
  transition: background 0.3s, color 0.3s;
  position: relative;
  min-height: 100vh;
  /* На iOS в 100vh входит и панель браузера, поэтому низ страницы
     уезжает под неё. dvh считает только видимую часть; браузеры,
     которые его не знают, эту строку просто пропустят. */
  min-height: 100dvh;
  /* Последним — замеренная величина: dvh разворачивается не в макетную
     область и оставляет зазор (см. задатьВысотуЭкрана в app.js). Действует
     до первой подгонки — дальше она проставляет точную высоту строчным
     стилем. Если скрипт не отработал, останется 100dvh выше. */
  min-height: var(--высота-экрана, 100dvh);
  overflow-x: hidden;
}
.raindrop {
  position: fixed;
  pointer-events: none;
  z-index: 0;
  font-size: 20px;
  opacity: 0.2;
  will-change: transform, opacity;
  user-select: none;
  transition: none;
}
/* Кликабельные капли-пасхалки поднимаем над панелями интерфейса.
   Панели полупрозрачные и с размытием: на z-index 0 каплю сквозь них видно,
   но клик забирает панель — и кажется, будто нажимается мимо смайлика.
   Поднимаем только пасхалки (в среднем 0.33 на экране), обычные капли
   остаются фоном. Ниже подсказок (100) и модалок (3000+), чтобы не лезть
   поверх открытых окон. */
.raindrop.whale {
  pointer-events: auto !important;
  z-index: 2;
  cursor: pointer;
  transition: transform 0.2s ease, opacity 0.2s ease;
}
.raindrop.whale:hover {
  transform: scale(1.3) !important;
  opacity: 0.8 !important;
}
.raindrop.whale:active {
  transform: scale(0.8) !important;
  opacity: 0.3 !important;
}
#login, #chat-container, #weather-widget, h1, .toast, #private-chat-modal, #recording-modal, #ban-modal, #pause-modal, #theme-modal {
  position: relative;
  z-index: 1;
}
h1 {
  text-align: center;
  color: #ff6b6b;
  text-shadow: 0 0 10px #ff6b6b;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  flex-wrap: wrap;
  margin-bottom: 10px;
}
body.light-theme h1 {
  color: #447bba;
  text-shadow: 0 0 10px rgba(68, 123, 186, 0.3);
}
.header-emojis {
  display: inline-block;
  min-width: 4.5em;
  text-align: center;
  font-size: 1.4em;
  vertical-align: middle;
  letter-spacing: 2px;
  transition: transform 0.2s;
}
.header-emojis.pop {
  animation: pop 0.35s ease;
}
@keyframes pop {
  0% { transform: scale(0.6); opacity: 0.3; }
  70% { transform: scale(1.25); }
  100% { transform: scale(1); opacity: 1; }
}
/* Экран входа и выбор аватара */

#login {
  max-width: 450px;
  margin: 30px auto;
  padding: 25px 30px;
  background: var(--bg-container);
  -webkit-backdrop-filter: blur(4px);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  border: 1px solid var(--border-light);
  border-radius: 16px;
  box-shadow: 0 0 30px var(--shadow-color);
  transition: background 0.3s, border-color 0.3s, box-shadow 0.3s;
  text-align: center;
}
#login h2 {
  margin-top: 0;
  color: var(--text-secondary);
  font-size: 14px;
  letter-spacing: 1px;
}
#login input {
  width: 100%;
  margin: 8px 0;
  padding: 10px 12px;
  background: var(--input-bg);
  border: 1px solid var(--border-light);
  color: var(--text-primary);
  font-family: inherit;
  font-size: 10px;
  border-radius: 8px;
  transition: background 0.3s, border-color 0.3s, color 0.3s;
}
#login label {
  display: block;
  margin-top: 12px;
  font-size: 10px;
  color: var(--text-secondary);
  text-align: left;
}
#login label:first-of-type { margin-top: 0; }
#login button {
  margin: 8px 4px;
  padding: 10px 20px;
}
.avatar-grid {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: 8px;
  margin: 10px 0 12px;
  justify-items: center;
}
.avatar-grid span {
  font-size: 32px;
  cursor: pointer;
  padding: 4px;
  border-radius: 50%;
  transition: transform 0.15s, background 0.15s;
  line-height: 1.2;
  background: transparent;
  border: 2px solid transparent;
}
.avatar-grid span:hover {
  transform: scale(1.25);
  background: var(--online-user-hover);
}
.avatar-grid span.selected {
  border-color: var(--text-secondary);
  background: var(--online-user-hover);
  transform: scale(1.1);
}
/* Пасхалка — змейка */

#snake-overlay {
  display: none;
  position: fixed;
  top: 0; left: 0; right: 0; bottom: 0;
  background: rgba(0,0,0,0.8);
  z-index: 99999;
  align-items: center;
  justify-content: center;
  -webkit-backdrop-filter: blur(8px);
  backdrop-filter: blur(8px);
}
#snake-overlay.active { display: flex; }
#snake-modal {
  background: #1a1a2e;
  border: 2px solid #ff6b6b;
  border-radius: 16px;
  padding: 20px;
  box-shadow: 0 0 40px rgba(255,107,107,0.3);
  max-width: 600px;
  width: 95%;
  text-align: center;
}
#snake-modal h2 {
  color: #ffd93d;
  font-size: 16px;
  margin: 0 0 10px;
}
#snake-modal canvas {
  display: block;
  margin: 0 auto;
  background: #0f3460;
  border: 2px solid #ffd93d;
  border-radius: 8px;
  image-rendering: pixelated;
  width: 100%;
  height: auto;
  aspect-ratio: 1/1;
}
#snake-modal .snake-score {
  color: #ffd93d;
  font-size: 14px;
  margin: 10px 0;
}
#snake-modal .snake-close {
  background: #ff6b6b;
  color: #fff;
  border: 2px solid #ffd93d;
  padding: 8px 24px;
  border-radius: 12px;
  font-family: inherit;
  font-size: 12px;
  cursor: pointer;
  transition: all 0.2s;
  margin-top: 8px;
}
#snake-modal .snake-close:hover {
  background: #ff4d4d;
  transform: scale(1.05);
}
body.light-theme #snake-modal {
  background: #edeef0;
  border-color: #447bba;
}
body.light-theme #snake-modal h2 {
  color: #447bba;
}
body.light-theme #snake-modal canvas {
  background: #ffffff;
  border-color: #447bba;
}
body.light-theme #snake-modal .snake-score {
  color: #447bba;
}
body.light-theme #snake-modal .snake-close {
  background: #447bba;
  border-color: #447bba;
  color: #fff;
}
body.light-theme #snake-modal .snake-close:hover {
  background: #336699;
}

/* Демон DOOM в дожде Игровой. Только прозрачность: filter и box-shadow
   поднимают элементу отдельный слой композитора, а капель и так много —
   именно на этом складывается мерцание блоков с backdrop-filter */
.raindrop.demon { opacity: 0.4 !important; }
.raindrop.demon:hover { opacity: 0.95 !important; }
