
:root {
  --bg: #050607;
  --bg-2: #0b0d0f;

  --surface: rgba(13, 16, 18, 0.94);
  --surface-2: rgba(20, 24, 26, 0.96);

  --lime: #9cff00;
  --lime-2: #b7ff33;
  --lime-soft: rgba(156, 255, 0, 0.16);

  --white: #ffffff;
  --text: #edf1e8;
  --text-soft: #b5beb1;
  --text-muted: #74806f;

  --border: rgba(156, 255, 0, 0.22);

  --shadow: 0 24px 80px rgba(0, 0, 0, 0.48);

  --font: "Roboto Condensed", Arial, sans-serif;
}


/* =========================================================
   RESET
========================================================= */

*,
*::before,
*::after {
  box-sizing: border-box;
}

html,
body {
  margin: 0;
  min-height: 100%;
}

body {
  min-width: 320px;
  font-family: var(--font);
  color: var(--text);
  background: var(--bg);

  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

img {
  display: block;
  max-width: 100%;
}

a {
  color: inherit;
  text-decoration: none;
}


/* =========================================================
   PAGE
========================================================= */

.bridge-page {
  position: relative;

  min-height: 100vh;
  min-height: 100svh;

  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;

  padding: 28px 16px 22px;

  overflow: hidden;

  background:
    radial-gradient(
      circle at 50% 18%,
      rgba(156, 255, 0, 0.12),
      transparent 34rem
    ),
    linear-gradient(
      180deg,
      #050607 0%,
      #090b0d 100%
    );
}


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

.bg-orb {
  position: absolute;
  border-radius: 50%;
  pointer-events: none;
}

.orb-1 {
  top: -180px;
  right: -140px;

  width: 520px;
  height: 520px;

  border: 70px solid rgba(156, 255, 0, 0.028);
}

.orb-2 {
  bottom: -240px;
  left: -180px;

  width: 600px;
  height: 600px;

  border: 1px solid rgba(156, 255, 0, 0.08);
}

.bg-grid {
  position: absolute;
  inset: 0;

  pointer-events: none;

  opacity: 0.11;

  background-image:
    linear-gradient(
      rgba(156, 255, 0, 0.06) 1px,
      transparent 1px
    ),
    linear-gradient(
      90deg,
      rgba(156, 255, 0, 0.06) 1px,
      transparent 1px
    );

  background-size: 38px 38px;

  -webkit-mask-image:
    radial-gradient(
      circle at center,
      black 30%,
      transparent 90%
    );

  mask-image:
    radial-gradient(
      circle at center,
      black 30%,
      transparent 90%
    );
}


/* =========================================================
   FLOATING ASSETS
========================================================= */

.floating-asset {
  position: absolute;
  z-index: 1;

  pointer-events: none;
  user-select: none;

  filter:
    drop-shadow(
      0 10px 20px rgba(0, 0, 0, 0.35)
    );
}

.floating-coin {
  top: 10%;
  left: 9%;

  width: 110px;

  animation:
    floatCoin 6s ease-in-out infinite;
}

.floating-chip {
  right: 8%;
  bottom: 15%;

  width: 120px;

  animation:
    floatChip 7.2s ease-in-out infinite;
}


/* =========================================================
   CARD
========================================================= */

.bridge-card {
  position: relative;
  z-index: 2;

  width: min(100%, 500px);

  overflow: hidden;

  border: 1px solid var(--border);
  border-radius: 18px;

  padding: 34px 34px 32px;

  background:
    linear-gradient(
      180deg,
      rgba(14, 17, 19, 0.98),
      rgba(9, 11, 13, 0.98)
    );

  box-shadow: var(--shadow);

  animation:
    cardEntrance
    700ms
    cubic-bezier(.22, 1, .36, 1)
    both;
}

.bridge-card::before {
  content: "";

  position: absolute;
  inset: 0;

  background:
    radial-gradient(
      circle at 75% 18%,
      rgba(156, 255, 0, 0.09),
      transparent 10rem
    );

  pointer-events: none;
}


/* =========================================================
   BRAND
========================================================= */

.brand-wrap {
  position: relative;
  z-index: 2;

  display: flex;
  justify-content: center;

  margin-bottom: 20px;
}

.brand-logo {
  width: auto;
  height: 64px;

  object-fit: contain;
}


/* =========================================================
   REGION BADGES
========================================================= */

.top-badges {
  position: relative;
  z-index: 2;

  display: flex;
  justify-content: center;

  gap: 8px;

  margin-bottom: 18px;
}

.badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;

  min-height: 32px;

  padding: 7px 12px;

  border-radius: 999px;

  font-size: 0.76rem;
  font-weight: 800;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

.badge-region {
  background: rgba(156, 255, 0, 0.1);
  border: 1px solid rgba(156, 255, 0, 0.24);

  color: var(--lime-2);
}

.badge-age {
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.09);

  color: #eaf3df;
}


/* =========================================================
   CONTENT
========================================================= */

.card-content {
  position: relative;
  z-index: 2;

  text-align: center;
}

.eyebrow {
  display: inline-block;

  margin-bottom: 8px;

  color: var(--lime-2);

  font-size: 0.72rem;
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

h1 {
  margin: 0 0 14px;

  color: var(--white);

  font-size:
    clamp(2rem, 6vw, 2.8rem);

  font-weight: 800;
  line-height: 1;
  letter-spacing: -0.035em;
}

.description {
  max-width: 350px;

  margin: 0 auto 24px;

  color: var(--text-soft);

  font-size: 0.98rem;
  line-height: 1.55;
}

.description strong {
  color: var(--white);
}


/* =========================================================
   CONFIRM BUTTON
========================================================= */

.confirm-button {
  position: relative;

  display: flex;

  width: 100%;
  min-height: 58px;

  align-items: center;
  justify-content: center;

  gap: 10px;

  padding: 14px 20px;

  border-radius: 12px;

  background:
    linear-gradient(
      180deg,
      var(--lime-2),
      var(--lime)
    );

  color: #111;

  font-size: 1rem;
  font-weight: 800;
  letter-spacing: 0.01em;

  box-shadow:
    0 0 0 0 rgba(156, 255, 0, 0.42),
    0 14px 28px rgba(156, 255, 0, 0.08);

  animation:
    buttonPulse 1.9s ease-out infinite;

  transition:
    transform 160ms ease,
    box-shadow 160ms ease,
    filter 160ms ease;
}

.confirm-button:hover {
  animation-play-state: paused;

  transform:
    translateY(-2px) scale(1.01);

  filter: brightness(1.04);

  box-shadow:
    0 16px 34px rgba(156, 255, 0, 0.16);
}

.confirm-button:active {
  transform:
    translateY(0) scale(0.985);
}

.confirm-button:focus-visible {
  outline: 3px solid var(--white);
  outline-offset: 5px;
}

.confirm-button span {
  font-size: 1.25rem;

  transition:
    transform 160ms ease;
}

.confirm-button:hover span {
  transform: translateX(3px);
}


/* =========================================================
   LEGAL NOTE
========================================================= */

.legal-note {
  margin: 18px 0 0;

  color: var(--text-muted);

  font-size: 0.72rem;
  line-height: 1.45;
}


/* =========================================================
   MASCOT
========================================================= */

.mascot {
  position: absolute;

  right: -48px;
  bottom: -16px;

  width: 230px;

  opacity: 0.18;

  pointer-events: none;

  transform: rotate(-5deg);
}


/* =========================================================
   FOOTER
========================================================= */

.footer {
  position: relative;
  z-index: 2;

  display: flex;

  align-items: center;
  justify-content: center;

  gap: 8px;

  margin-top: 22px;

  color: #677061;

  font-size: 0.68rem;
}

.footer-dot {
  color: var(--lime);
}


/* =========================================================
   ANIMATIONS
========================================================= */

@keyframes cardEntrance {
  from {
    opacity: 0;

    transform:
      translateY(18px) scale(0.99);
  }

  to {
    opacity: 1;

    transform:
      translateY(0) scale(1);
  }
}

@keyframes buttonPulse {
  0% {
    box-shadow:
      0 0 0 0 rgba(156, 255, 0, 0.40),
      0 14px 28px rgba(156, 255, 0, 0.08);
  }

  60% {
    box-shadow:
      0 0 0 13px rgba(156, 255, 0, 0),
      0 18px 34px rgba(156, 255, 0, 0.14);
  }

  100% {
    box-shadow:
      0 0 0 18px rgba(156, 255, 0, 0),
      0 14px 28px rgba(156, 255, 0, 0.08);
  }
}

@keyframes floatCoin {
  0%, 100% {
    transform:
      translateY(0) rotate(-10deg);
  }

  50% {
    transform:
      translateY(-14px) rotate(-4deg);
  }
}

@keyframes floatChip {
  0%, 100% {
    transform:
      translateY(0) rotate(8deg);
  }

  50% {
    transform:
      translateY(-18px) rotate(2deg);
  }
}


/* =========================================================
   MOBILE
========================================================= */

@media (max-width: 640px) {
  .bridge-page {
    padding:
      18px 14px
      max(18px, env(safe-area-inset-bottom));
  }

  .bridge-card {
    padding: 28px 20px 26px;
    border-radius: 16px;
  }

  .brand-logo {
    height: 52px;
  }

  h1 {
    font-size:
      clamp(1.9rem, 10vw, 2.4rem);
  }

  .description {
    font-size: 0.92rem;
    margin-bottom: 22px;
  }

  .confirm-button {
    min-height: 54px;
    font-size: 0.94rem;
  }

  .mascot {
    width: 180px;
    right: -50px;
    bottom: -6px;
    opacity: 0.14;
  }

  .floating-coin {
    width: 78px;
    top: 7%;
    left: -4%;
  }

  .floating-chip {
    width: 84px;
    right: -3%;
    bottom: 12%;
  }
}


/* =========================================================
   VERY SMALL MOBILE
========================================================= */

@media (max-width: 370px) {
  .bridge-card {
    padding: 26px 18px 24px;
  }

  .brand-logo {
    height: 46px;
  }

  h1 {
    font-size: 1.85rem;
  }

  .confirm-button {
    font-size: 0.85rem;
  }
}


/* =========================================================
   REDUCED MOTION
========================================================= */

@media (prefers-reduced-motion: reduce) {
  .bridge-card,
  .confirm-button,
  .floating-coin,
  .floating-chip {
    animation: none;
  }

  .confirm-button,
  .confirm-button span {
    transition: none;
  }
}
