:root{ --tc3d-accent:#35d06a; }

.tc3d-root{
  width:100%;
  padding: 20px;
  box-sizing: border-box;
  background: var(--tc3d-bg);
}

.tc3d-grid{
  display:grid;
  grid-template-columns: repeat(var(--tc3d-cols-d), minmax(0, 1fr));
  gap: var(--tc3d-gap);
  align-items: stretch;
}

@media (max-width: 1024px){
  .tc3d-grid{ grid-template-columns: repeat(var(--tc3d-cols-t), minmax(0,1fr)); }
}
@media (max-width: 640px){
  .tc3d-grid{ grid-template-columns: repeat(var(--tc3d-cols-m), minmax(0,1fr)); }
}

.tc3d-card{
  position:relative;
  display:block;
  text-decoration:none;
  color:#fff;
  border-radius: var(--tc3d-radius);
  background: linear-gradient(180deg, rgba(255,255,255,.05), rgba(255,255,255,.02));
  transform-style: preserve-3d;
  will-change: transform;
  outline: none;
}

.tc3d-card::before{
  content:"";
  position:absolute;
  inset:0;
  border-radius: var(--tc3d-radius);
  background: rgba(0,0,0,.35);
  z-index:0;
}

.tc3d-card-inner{
  position:relative;
  z-index:2;
  height:100%;
  min-height: 190px;
  border-radius: var(--tc3d-radius);
  background: var(--tc3d-card-bg);
  border: 1px solid rgba(255,255,255,.08);
  box-shadow: 0 18px 60px rgba(0,0,0,.55);
  overflow:hidden;
  transform: translateZ(0);
}

.tc3d-card-inner::after{
  content:"";
  position:absolute;
  left:-20%;
  top:-40%;
  width:140%;
  height:120%;
  background: radial-gradient(circle at 30% 30%, rgba(255,255,255,.12), transparent 55%);
  transform: rotate(12deg);
  pointer-events:none;
  opacity:.75;
}

.tc3d-media{
  display:flex;
  align-items:center;
  justify-content:center;
  padding: 20px 14px 10px;
  min-height: 130px;
}

.tc3d-img{
  max-width: 92%;
  max-height: 120px;
  filter: drop-shadow(0 16px 22px rgba(0,0,0,.55));
  transform: translateZ(35px);
}

.tc3d-placeholder{
  width: 78px;
  height: 78px;
  border-radius: 18px;
  background: linear-gradient(135deg, rgba(255,255,255,.08), rgba(255,255,255,.02));
  border: 1px dashed rgba(255,255,255,.18);
  transform: translateZ(35px);
}

.tc3d-title{
  position:relative;
  padding: 14px 14px 16px;
  text-align:center;
  font-weight: 600;
  font-size: 14px;
  letter-spacing: .2px;
  color: rgba(255,255,255,.92);
  background: linear-gradient(180deg, rgba(0,0,0,0), rgba(0,0,0,.18));
}

.tc3d-badge{
  position:absolute;
  top:12px;
  left:12px;
  padding:6px 10px;
  border-radius: 999px;
  font-size: 12px;
  color: rgba(0,0,0,.86);
  background: var(--tc3d-accent);
  box-shadow: 0 10px 26px rgba(0,0,0,.35);
  transform: translateZ(45px);
  z-index:3;
}

.tc3d-shine{
  position:absolute;
  inset:-2px;
  border-radius: calc(var(--tc3d-radius) + 2px);
  pointer-events:none;
  opacity:0;
  transition: opacity .18s ease;
  background: radial-gradient(circle at var(--mx, 50%) var(--my, 50%), rgba(255,255,255,.22), transparent 42%);
  mix-blend-mode: screen;
  z-index:3;
}

.tc3d-glow{
  position:absolute;
  inset:-1px;
  border-radius: calc(var(--tc3d-radius) + 1px);
  pointer-events:none;
  opacity:.18;
  transition: opacity .18s ease, filter .18s ease;
  border: 2px solid rgba(53,208,106,.55);
  filter: blur(0px);
  z-index:1;
}

.tc3d-card:hover .tc3d-shine{ opacity:1; }
.tc3d-card:hover .tc3d-glow{ opacity:.55; filter: blur(.4px); }

.tc3d-card{
  transition: transform .18s ease, filter .18s ease;
}

.tc3d-card:hover{
  filter: brightness(1.06);
}

.tc3d-card:focus-visible{
  box-shadow: 0 0 0 2px rgba(53,208,106,.35), 0 18px 60px rgba(0,0,0,.55);
}

.tc3d-float .tc3d-card{
  animation: tc3dFloat 5.2s ease-in-out infinite;
}
.tc3d-float .tc3d-card:nth-child(2n){ animation-duration: 6.2s; }
.tc3d-float .tc3d-card:nth-child(3n){ animation-duration: 7.1s; }
@keyframes tc3dFloat{
  0%,100%{ transform: translateY(0); }
  50%{ transform: translateY(-6px); }
}

.tc3d-ripple{
  position:absolute;
  border-radius:999px;
  transform: translate(-50%, -50%);
  background: radial-gradient(circle, rgba(53,208,106,.45), rgba(53,208,106,.10) 45%, transparent 70%);
  width: 10px;
  height: 10px;
  pointer-events:none;
  opacity: .9;
  animation: tc3dRipple .65s ease-out forwards;
  z-index:4;
}
@keyframes tc3dRipple{
  from{ width: 10px; height:10px; opacity:.9; }
  to{ width: 280px; height:280px; opacity:0; }
}

@media (prefers-reduced-motion: reduce){
  .tc3d-float .tc3d-card{ animation: none !important; }
  .tc3d-card{ transition:none !important; }
}
