    :root { --cg-min-col: 160px; --cg-row-unit: 6px; }


    .cg-intro {
      text-align: center;
      margin: 20px auto;
      max-width: 800px;
    }

    .cg-intro h2 {
      margin-bottom: 10px;
    }

    .cg-intro p {
      margin: 0 auto;
      line-height: 1.5;
      font-size: 16px;
      color: #444;
    }

    /* Gallery */
    .cg-gallery {
      display: grid;
      grid-template-columns: repeat(auto-fill, minmax(var(--cg-min-col), 1fr));
      gap: 0;
      grid-auto-rows: var(--cg-row-unit);
      grid-auto-flow: dense;
      align-items: start;
    }

    .cg-item {
      display: block;
      overflow: hidden;
      text-decoration: none;
      color: inherit;
      box-sizing: border-box;
    }

    .cg-ratio {
      width: 100%;
      padding-top: 100%;
      position: relative;
    }

    .cg-ratio img {
      position: absolute;
      inset: 0;
      width: 100%;
      height: 100%;
      object-fit: cover;
      display: block;
      transition: transform .32s ease;
      -webkit-user-drag: none;
      user-select: none;
    }
    .cg-item:hover .cg-ratio img { transform: scale(1.03); }

    .cg-w-2 { grid-column: span 2; }
    .cg-h-2 .cg-ratio { padding-top: 200%; }
    .cg-w-2.cg-h-2 { grid-column: span 2; }
    .cg-w-2.cg-h-2 .cg-ratio { padding-top: 200%; }

    @media (max-width: 480px) {
      .cg-gallery { grid-template-columns: repeat(2, 1fr); }
      .cg-item { grid-column: span 1 !important; }
      .cg-ratio { padding-top: 100% !important; }
    }

    img { vertical-align: middle; border: 0; }
