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

body {
  background: linear-gradient(#0a1124, #1c2a49);
  height: 100vh;
  overflow: hidden;
  display: flex;
  justify-content: center;
  align-items: flex-end;
  font-family: system-ui;
}

/* Scene wrapper */
.scene {
  position: relative;
  width: 100%;
  height: 100%;
}

/* Mountains */
.mountain {
  position: absolute;
  bottom: 0;
  width: 40vw;
  height: 40vw;
  background: linear-gradient(to bottom, #1b2747, #0d152a);
  clip-path: polygon(50% 0%, 0% 100%, 100% 100%);
  filter: drop-shadow(0 0 8px rgba(255,255,255,0.05));
}

.m1 {
  left: 10vw;
  transform: scale(1.2);
}

.m2 {
  right: 10vw;
  transform: scale(1.6);
  opacity: 0.7;
}

/* Snowfall */
.snow {
  position: absolute;
  inset: 0;
  pointer-events: none;
}

.snow:before,
.snow:after,
.snow div {
  content: "";
  position: absolute;
  inset: 0;
  background-repeat: repeat;
  animation: snowfall var(--speed) linear infinite;
  opacity: var(--opacity);
}

/* Layer 1: tiny dense snow */
.snow:before {
  --size: 1px;
  --opacity: 0.6;
  --speed: 12s;
  background-image:
    radial-gradient(var(--size) var(--size) at 20% 20%, white 90%, transparent),
    radial-gradient(var(--size) var(--size) at 80% 40%, white 90%, transparent),
    radial-gradient(var(--size) var(--size) at 10% 70%, white 90%, transparent),
    radial-gradient(var(--size) var(--size) at 50% 10%, white 90%, transparent),
    radial-gradient(var(--size) var(--size) at 90% 60%, white 90%, transparent),
    radial-gradient(var(--size) var(--size) at 30% 90%, white 90%, transparent),
    radial-gradient(var(--size) var(--size) at 70% 30%, white 90%, transparent),
    radial-gradient(var(--size) var(--size) at 40% 80%, white 90%, transparent);
}

/* Layer 2: medium snow */
.snow:after {
  --size: 2px;
  --opacity: 0.45;
  --speed: 9s;
  background-image:
    radial-gradient(var(--size) var(--size) at 15% 10%, white 90%, transparent),
    radial-gradient(var(--size) var(--size) at 70% 20%, white 90%, transparent),
    radial-gradient(var(--size) var(--size) at 40% 50%, white 90%, transparent),
    radial-gradient(var(--size) var(--size) at 90% 80%, white 90%, transparent),
    radial-gradient(var(--size) var(--size) at 25% 70%, white 90%, transparent);
}

/* Layer 3: large soft flakes */
.snow div {
  --size: 3px;
  --opacity: 0.35;
  --speed: 7s;
  background-image:
    radial-gradient(var(--size) var(--size) at 10% 30%, white 90%, transparent),
    radial-gradient(var(--size) var(--size) at 60% 10%, white 90%, transparent),
    radial-gradient(var(--size) var(--size) at 80% 50%, white 90%, transparent),
    radial-gradient(var(--size) var(--size) at 30% 80%, white 90%, transparent);
}

@keyframes snowfall {
  from { background-position: 0 0; }
  to { background-position: 0 600px; }
}