/* WXChat V9.3.2 · Portal card polish only. Layout and data behavior remain unchanged. */
:root {
  --wx-card-shadow: 0 18px 44px rgba(45, 40, 82, .10), 0 3px 10px rgba(35, 31, 63, .05), inset 0 1px 0 rgba(255,255,255,.9);
  --wx-card-shadow-hover: 0 28px 68px rgba(45, 40, 82, .16), 0 8px 18px rgba(35, 31, 63, .08), inset 0 1px 0 rgba(255,255,255,.96);
}

.preview-grid article,
.module-card,
.app-access-panel,
.module-stat,
.activity-strip {
  transform: translateZ(0);
  will-change: transform, box-shadow;
}

.preview-grid article {
  box-shadow: var(--wx-card-shadow);
  transition: transform .28s cubic-bezier(.2,.75,.25,1), box-shadow .28s ease, border-color .28s ease;
}
.preview-grid article:hover {
  transform: translateY(-6px);
  box-shadow: var(--wx-card-shadow-hover);
  border-color: rgba(126, 108, 255, .18);
}

.module-card {
  box-shadow: var(--wx-card-shadow);
  transition: transform .28s cubic-bezier(.2,.75,.25,1), box-shadow .28s ease, border-color .28s ease, opacity .28s ease;
}
.module-card:hover {
  transform: translateY(-7px);
  box-shadow: var(--wx-card-shadow-hover);
  border-color: rgba(126, 108, 255, .20);
}
.module-card:active:not(.is-locked) { transform: translateY(-3px); }
.module-card.is-locked:hover { box-shadow: var(--wx-card-shadow); }

.app-access-panel {
  box-shadow: 0 18px 52px rgba(45, 40, 82, .11), inset 0 1px 0 rgba(255,255,255,.92);
  transition: box-shadow .28s ease, transform .28s ease;
}
.app-access-panel:hover {
  transform: translateY(-3px);
  box-shadow: 0 24px 62px rgba(45, 40, 82, .14), inset 0 1px 0 rgba(255,255,255,.96);
}

.module-stat {
  background: linear-gradient(145deg, rgba(255,255,255,.86), rgba(246,246,250,.72));
  box-shadow: 0 8px 20px rgba(46, 41, 78, .06), inset 0 1px 0 rgba(255,255,255,.92);
  transition: transform .22s ease, box-shadow .22s ease, border-color .22s ease;
}
.module-stat:hover {
  transform: translateY(-3px);
  box-shadow: 0 14px 28px rgba(46, 41, 78, .10), inset 0 1px 0 rgba(255,255,255,.96);
  border-color: rgba(111,92,255,.14);
}

.activity-strip {
  box-shadow: 0 10px 28px rgba(46, 41, 78, .06), inset 0 1px 0 rgba(255,255,255,.72);
  transition: transform .24s ease, box-shadow .24s ease;
}
.activity-strip:hover {
  transform: translateY(-2px);
  box-shadow: 0 16px 34px rgba(46, 41, 78, .09), inset 0 1px 0 rgba(255,255,255,.82);
}

.ghost-button:focus-visible,
.primary-button:focus-visible,
.module-card:focus-visible {
  outline: 3px solid rgba(111,92,255,.20);
  outline-offset: 3px;
}

@media (hover: none) {
  .preview-grid article:hover,
  .module-card:hover,
  .app-access-panel:hover,
  .module-stat:hover,
  .activity-strip:hover { transform: none; }
}
@media (prefers-reduced-motion: reduce) {
  .preview-grid article,
  .module-card,
  .app-access-panel,
  .module-stat,
  .activity-strip { transition: none !important; }
}
