:root {
  --bgColorMenu: #1d1d27;
  --duration: 0.7s;
  --icon-color: #ffffff;
  --value-up: #00ff95;
  --value-down: #ff4d4d;
  --background-color: linear-gradient(135deg, #14141f, #1a2a3e);
  --text-color: #ffffff;
  --spacing-unit: 8px;
  --icon-size: 24px;
}

html {
  box-sizing: border-box;
}

html *,
html *::before,
html *::after {
  box-sizing: inherit;
}

body {
  font-family: 'Roboto', sans-serif;
  background: var(--background-color);
  text-align: left;
  color: var(--text-color);
  margin: 0;
  padding: 0;
  position: relative;
  overflow-x: hidden;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  width: 100vw;
  transition: background-color var(--duration);
}

@media (prefers-color-scheme: dark) {
  :root {
    --icon-color: #cccccc;
    --background-color: linear-gradient(135deg, #0f0f17, #152238);
  }
}

.loading-overlay {
  display: none;
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(0, 0, 0, 0.5);
  justify-content: center;
  align-items: center;
  z-index: 1002;
}

.loader {
  border: 4px solid #f3f3f3;
  border-top: 4px solid var(--value-up);
  border-radius: 50%;
  width: 40px;
  height: 40px;
  animation: spin 1s linear infinite;
}

.message {
  position: fixed;
  top: 20px;
  right: 20px;
  padding: 10px 20px;
  border-radius: 4px;
  z-index: 1003;
}

.message.error {
  background-color: var(--value-down);
  color: white;
}

.message.success {
  background-color: var(--value-up);
  color: white;
}

@keyframes spin {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}

@keyframes pulse {
  0% { opacity: 0.7; transform: scale(1); }
  50% { opacity: 1; transform: scale(1.05); }
  100% { opacity: 0.7; transform: scale(1); }
}

@media (max-width: 600px) {
  body {
    font-size: 16px;
    padding-bottom: var(--spacing-unit);
  }
}