.subpages-masonry {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
  gap: 1rem;
}

.subpage-item {
  display: flex;
  flex-direction: column;
  background-color: #f0f0f0;
  border-radius: 8px;
  overflow: hidden;
  box-shadow: 0 4px 6px rgba(0,0,0,0.1);
  transition: all 0.3s ease;
}

.subpage-item:hover {
  transform: translateY(-5px);
  box-shadow: 0 6px 12px rgba(0,0,0,0.15);
}

.subpage-block {
  background-color: var(--bg-color);
  flex-grow: 1;
  display: flex;
  align-items: center;
  justify-content: center;
}

/* Method 1: Padding-based aspect ratio (most compatible) */
.subpage-block:not(:has(+ .subpage-children)) {
  position: relative;
  padding-top: 100%; /* Creates 1:1 aspect ratio */
}

.subpage-block:not(:has(+ .subpage-children)) a {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
}

/* Method 2: Modern aspect-ratio with fallback */
@supports (aspect-ratio: 1) {
  .subpage-block:not(:has(+ .subpage-children)) {
    position: static;
    padding-top: 0;
    aspect-ratio: 1 / 1;
  }
  
  .subpage-block:not(:has(+ .subpage-children)) a {
    position: static;
  }
}

.subpage-block a {
  display: flex;
  align-items: center;
  justify-content: center;
  color: white;
  text-decoration: none;
  font-weight: bold;
  font-size: 1.1em;
  text-align: center;
  width: 100%;
  padding: 1.25rem 1rem;
}

.subpage-children {
  padding: 10px;
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.subpage-children .subpage-block {
  aspect-ratio: auto;
}

.level-1 { grid-column: span 1; }
.level-2 .subpage-block a { padding: .5rem; font-size: 1em; }
.level-3 .subpage-block a { padding: .25rem; font-size: 0.9em; }

@media (max-width: 768px) {
  .subpage-block:not(:has(+ .subpage-children)) {
    aspect-ratio: auto;
  }
  
  .level-1 { grid-column: span 3; }
}

@media (min-width: 768px) {
  .subpages-masonry {
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  }
}