/* Grid */
.gm-card-grid {
  display: grid;
  gap: var(--gm-cg-gap, 28px);
}
.gm-cg-cols-1 { grid-template-columns: 1fr; }
.gm-cg-cols-2 { grid-template-columns: repeat(2, 1fr); }
.gm-cg-cols-3 { grid-template-columns: repeat(3, 1fr); }
.gm-cg-cols-4 { grid-template-columns: repeat(4, 1fr); }

/* Card base */
.gm-ccard {
  background: var(--gm-ccard-bg, #ffffff);
  border-radius: var(--gm-ccard-radius, 16px);
  overflow: hidden;
  border: 2px solid transparent;
  display: flex;
  flex-direction: column;
  transition: transform 0.25s cubic-bezier(0.16,1,0.3,1),
              box-shadow 0.25s cubic-bezier(0.16,1,0.3,1),
              border-color 0.25s ease;
}

.gm-cg-style-default .gm-ccard { box-shadow: 0 4px 20px rgba(31,50,95,0.08); }
.gm-cg-style-elevated .gm-ccard { box-shadow: 0 12px 40px rgba(31,50,95,0.14); }
.gm-cg-style-outline .gm-ccard { border-color: #DFE1E3; box-shadow: none; }
.gm-cg-style-flat .gm-ccard { box-shadow: none; }

.gm-ccard.gm-h-lift:hover, .gm-ccard.gm-h-all:hover { transform: translateY(-6px); box-shadow: 0 18px 48px rgba(31,50,95,0.16); }
.gm-ccard.gm-h-border:hover, .gm-ccard.gm-h-all:hover { border-color: var(--gm-hover-border, #FF8D07); }

.gm-ccard-img { position: relative; overflow: hidden; flex-shrink: 0; display: flex; justify-content: center; }
.gm-ccard-img img { width: var(--gm-img-w, 100%); height: var(--gm-img-h, 300px); object-fit: cover; display: block; transition: transform 0.35s ease; }
.gm-ccard.gm-h-zoom:hover .gm-ccard-img img, .gm-ccard.gm-h-all:hover .gm-ccard-img img { transform: scale(1.06); }

.gm-ccard-badge {
  position: absolute; top: 12px; width: 36px; height: 36px;
  border-radius: 10px; background: var(--gm-badge-bg, #FF8D07);
  display: flex; align-items: center; justify-content: center;
  box-shadow: 0 3px 10px rgba(255,141,7,0.38); z-index: 1; transition: transform 0.2s;
}
.gm-badge-top-left { left: 12px; }
.gm-badge-top-right { right: 12px; }

.gm-ccard:hover .gm-ccard-badge { transform: scale(1.1); }
.gm-ccard-badge svg { stroke: white; fill: none; width: 20px; height: 20px; }

.gm-ccard-img.gm-no-img { height: var(--gm-img-h, 300px); width: var(--gm-img-w, 100%); background: #DFE1E3; display: flex; align-items: center; justify-content: center; margin: 0 auto; }

.gm-ccard-body { padding: var(--gm-body-pad, 18px); display: flex; flex-direction: column; flex: 1; }
.gm-ccard-title { font-family: 'Montserrat', sans-serif; font-size: var(--gm-title-size, 17px); font-weight: var(--gm-title-weight, 700); color: var(--gm-title-colour, #1F325F); line-height: 1.3; margin: 0 0 var(--gm-title-mb, 8px) 0; }
.gm-ccard-desc { font-family: 'Open Sans', sans-serif; font-size: var(--gm-desc-size, 13.5px); color: var(--gm-desc-colour, #44546A); line-height: var(--gm-desc-lh, 1.7); margin: 0 0 var(--gm-desc-mb, 16px) 0; flex: 1; }

.gm-ccard-link { font-family: 'Montserrat', sans-serif; font-size: var(--gm-link-size, 11.5px); font-weight: 700; color: var(--gm-link-colour, #FF8D07); text-decoration: none; text-transform: uppercase; letter-spacing: 0.08em; display: inline-flex; align-items: center; gap: 5px; margin-top: auto; transition: gap 0.2s, color 0.2s; }
.gm-ccard-link:hover { gap: 9px; color: #E07000; }

@media(max-width: 1024px) {
  .gm-cg-cols-3, .gm-cg-cols-4 { grid-template-columns: repeat(2, 1fr); }
}

@media(max-width: 767px) {
  .gm-cg-cols-2, .gm-cg-cols-3, .gm-cg-cols-4 { grid-template-columns: 1fr; }
  .gm-ccard-img img, .gm-ccard-img.gm-no-img { width: 100% !important; height: auto !important; aspect-ratio: 16/9; }
  .gm-ccard-body { padding: 16px; }
}