/* =========================
   RESET
========================= */
* {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

html {
  scroll-behavior: smooth;
}

/* =========================
   ANIMATIONS
========================= */
.fade {
  animation: fade 0.6s ease-out forwards;
}

.fade-up {
  animation: fadeUp 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

.fade-left {
  animation: fadeLeft 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

.fade-right {
  animation: fadeRight 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

.fade-down {
  animation: fadeDown 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

@keyframes fade {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

@keyframes fadeUp {
  from {
    opacity: 0;
    transform: translateY(20px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes fadeLeft {
  from {
    opacity: 0;
    transform: translateX(20px);
  }
  to {
    opacity: 1;
    transform: translateX(0);
  }
}

@keyframes fadeRight {
  from {
    opacity: 0;
    transform: translateX(-20px);
  }
  to {
    opacity: 1;
    transform: translateX(0);
  }
}

@keyframes fadeDown {
  from {
    opacity: 0;
    transform: translateY(-20px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* =========================
   BACKGROUND
========================= */

:root {
  --_noise-texture: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 300 300'><defs><filter id='n' x='0' y='0' width='100%' height='100%' color-interpolation-filters='sRGB'><feTurbulence type='fractalNoise' baseFrequency='0.3' numOctaves='3' stitchTiles='stitch' result='t'/><feColorMatrix type='saturate' values='0' in='t' result='g'/><feComponentTransfer in='g' result='a'><feFuncA type='linear' slope='0.5'/></feComponentTransfer></filter></defs><rect width='100%' height='100%' filter='url(%23n)'/></svg>");

  --_noise-size: 7%;
  --_gradient-blend-mode: normal;
  --_gradient-blur: 0px;
  --_gradient:
    radial-gradient(at 65% 90%, #94214b 0px, transparent 50%),
    radial-gradient(at 33% 68%, #943021 0px, transparent 50%),
    radial-gradient(at 54% 60%, #946a21 0px, transparent 50%),
    radial-gradient(at 40% 69%, #21946a 0px, transparent 50%),
    radial-gradient(at 54% 73%, #214b94 0px, transparent 50%);
}

.noise {
  background-image: var(--_noise-texture);
  background-size: var(--_noise-size);
  background-position: center;
  background-repeat: repeat;
}

.frosted-backdrop {
  backdrop-filter: blur(var(--_gradient-blur)) contrast(100%) brightness(100%);
  -webkit-backdrop-filter: blur(var(--_gradient-blur)) contrast(100%)
    brightness(100%);
}

.background {
  position: fixed;
  inset: 0;
  background: var(--_gradient) #07090d;
  mix-blend-mode: var(--_gradient-blend-mode);
  z-index: -1;
}

/* Very subtle background light */
/* .background::before {
  content: "";
  position: absolute;
  top: -10%;
  left: -10%;
  width: 40%;
  height: 40%;
  background: radial-gradient(
    circle,
    rgba(56, 189, 248, 0.03) 0%,
    transparent 70%
  );
  filter: blur(100px);
} */

/* =========================
   ADMIN 3D CARD EFFECT
========================= */
.card-lie {
  transform-style: preserve-3d;
  transform: rotateX(20deg) rotateZ(-10deg);
  transition: all 0.6s cubic-bezier(0.16, 1, 0.3, 1);
}

.card-lie:hover {
  transform: rotateX(0) rotateZ(0);
}

/* =========================
   JSON EDITOR (ADMIN)
========================= */
#jsonEditor {
  width: 100%;
  height: 500px;
  background: #0d1117;
  color: #e6edf3;
  font-family:
    ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono",
    "Courier New", monospace;
  padding: 20px;
  border-radius: 12px;
  border: 1px solid rgba(255, 255, 255, 0.05);
  font-size: 13px;
  line-height: 1.6;
}

/* =========================
   SCROLLBAR
========================= */
::-webkit-scrollbar {
  width: 5px;
}

::-webkit-scrollbar-track {
  background: transparent;
}

::-webkit-scrollbar-thumb {
  background: rgba(255, 255, 255, 0.1);
  border-radius: 10px;
}

::-webkit-scrollbar-thumb:hover {
  background: rgba(255, 255, 255, 0.2);
}

/* =========================
   GLOBAL CENTERING FIX
========================= */
.v-center {
  width: 100% !important;
  max-width: 1280px !important;
  margin-left: auto !important;
  margin-right: auto !important;
  display: block !important;
  position: relative !important;
}

#header > div,
#app > div,
#footer > div {
  width: 100% !important;
  max-width: 1280px !important;
  margin-left: auto !important;
  margin-right: auto !important;
  display: block !important;
}

#header,
#app,
#footer {
  width: 100% !important;
  display: block !important;
}

#header {
  position: fixed !important;
  top: 0 !important;
  left: 0 !important;
  z-index: 1000 !important;
}
