 html { scroll-behavior: smooth; }
  body { font-family: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; }
  .glass { background: rgba(255,255,255,0.72); backdrop-filter: blur(16px) saturate(160%); -webkit-backdrop-filter: blur(16px) saturate(160%); border: 1px solid rgba(255,255,255,0.5); }
  .dark .glass { background: rgba(16,27,51,0.55); border: 1px solid rgba(255,255,255,0.08); }
  .glass-nav { background: rgba(255,255,255,0.75); backdrop-filter: blur(14px) saturate(160%); -webkit-backdrop-filter: blur(14px) saturate(160%); }
  .dark .glass-nav { background: rgba(6,11,22,0.65); }
  .grad-hero { background: radial-gradient(1100px 480px at 85% -10%, rgba(52,102,246,0.16), transparent 60%), radial-gradient(700px 400px at 5% 20%, rgba(52,102,246,0.10), transparent 60%); }
  .dark .grad-hero { background: radial-gradient(1100px 480px at 85% -10%, rgba(52,102,246,0.22), transparent 60%), radial-gradient(700px 400px at 5% 20%, rgba(52,102,246,0.14), transparent 60%); }
  .grad-cta { background: linear-gradient(120deg, #122A6E 0%, #1D4ED8 55%, #3466F6 100%); }
  .card-hover { transition: transform .35s ease, box-shadow .35s ease; }
  .card-hover:hover { transform: translateY(-6px); }
  .marquee-track { display: flex; width: max-content; animation: marquee 28s linear infinite; }
  @keyframes marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }
  .toggle-dot { transition: transform .3s ease; }
  .dark .toggle-dot { transform: translateX(20px); }
  ::selection { background: rgba(52,102,246,0.25); }
  input:focus, textarea:focus, select:focus { outline: none; }
  .focus-ring:focus { box-shadow: 0 0 0 3px rgba(52,102,246,0.35); }
  .tab-btn.active { background: #1D4ED8; color: white; }
  details > summary { list-style: none; cursor: pointer; }
  details > summary::-webkit-details-marker { display: none; }
  details[open] .chev { transform: rotate(180deg); }
  @media (prefers-reduced-motion: reduce) { .marquee-track { animation: none; } html { scroll-behavior: auto; } }

  /* ---- Cinematic hero (NFT-drop aesthetic) ---- */
  .hero-stage {
    position: relative;
    background: #050810;
    overflow: hidden;
  }
  .hero-stage canvas { position: absolute; inset: 0; width: 100%; height: 100%; display: block; }
  .hero-vignette {
    position: absolute; inset: 0;
    background: radial-gradient(120% 90% at 50% 30%, transparent 35%, rgba(5,8,16,0.55) 78%, #050810 100%);
    pointer-events: none;
  }
  .hero-scanline {
    position: absolute; left: 0; right: 0; height: 140px;
    background: linear-gradient(180deg, transparent, rgba(93,143,251,0.16) 45%, rgba(125,211,252,0.28) 50%, rgba(93,143,251,0.16) 55%, transparent);
    filter: blur(2px);
    animation: scan 6s ease-in-out infinite;
    pointer-events: none;
  }
  @keyframes scan { 0% { top: -20%; opacity: 0; } 15% { opacity: .9; } 50% { top: 55%; opacity: .9; } 85% { opacity: .9; } 100% { top: 120%; opacity: 0; } }

  .reveal-frame {
    clip-path: inset(0 0 0 0);
    animation: reveal-wipe 1.6s cubic-bezier(.65,0,.35,1) both;
  }
  @keyframes reveal-wipe { from { clip-path: inset(0 100% 0 0); } to { clip-path: inset(0 0 0 0); } }

  .float-slow { animation: float-y 6s ease-in-out infinite; }
  @keyframes float-y { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-14px); } }

  .fade-up { opacity: 0; transform: translateY(18px); animation: fade-up-in .9s ease forwards; }
  @keyframes fade-up-in { to { opacity: 1; transform: translateY(0); } }

  .glow-text { text-shadow: 0 0 30px rgba(93,143,251,0.45); }

  .chip-shimmer { position: relative; overflow: hidden; }
  .chip-shimmer::after {
    content: ''; position: absolute; top: 0; left: -60%; width: 50%; height: 100%;
    background: linear-gradient(120deg, transparent, rgba(255,255,255,0.35), transparent);
    animation: shimmer 3.2s ease-in-out infinite;
  }
  @keyframes shimmer { 0% { left: -60%; } 60%,100% { left: 130%; } }

  .edition-pulse { animation: pulse-dot 1.6s ease-in-out infinite; }
  @keyframes pulse-dot { 0%,100% { opacity: 1; } 50% { opacity: .35; } }

  @media (prefers-reduced-motion: reduce) {
    .hero-scanline, .float-slow, .fade-up, .chip-shimmer::after, .edition-pulse, .reveal-frame { animation: none !important; }
    .fade-up { opacity: 1; transform: none; }
    .reveal-frame { clip-path: none; }
  }