/**
 * 마사지로그 - 업소 꾸미기 100종 효과 CSS
 * 슬롯: frame, bg, title(name), badge_extra, anim, detail
 * 적용 클래스 패턴: .gl-card.deco-{key}
 */

/* =====================================================================
   KEYFRAME ANIMATIONS
   ===================================================================== */

@keyframes deco-pulse-glow {
  0%,100% { box-shadow: 0 0 8px 2px currentColor; }
  50%      { box-shadow: 0 0 22px 6px currentColor; }
}
@keyframes deco-float {
  0%,100% { transform: translateY(0); }
  50%      { transform: translateY(-6px); }
}
@keyframes deco-shine {
  0%   { background-position: -200% center; }
  100% { background-position: 200% center; }
}
@keyframes deco-shimmer {
  0%   { background-position: -200% center; }
  100% { background-position: 200% center; }
}
@keyframes deco-rainbow-border {
  0%   { border-color: #ff0000; }
  14%  { border-color: #ff7700; }
  28%  { border-color: #ffff00; }
  42%  { border-color: #00ff00; }
  57%  { border-color: #0000ff; }
  71%  { border-color: #8b00ff; }
  85%  { border-color: #ff00ff; }
  100% { border-color: #ff0000; }
}
@keyframes deco-rotate-border {
  0%   { --border-angle: 0deg; }
  100% { --border-angle: 360deg; }
}
@keyframes deco-heartbeat {
  0%,100% { transform: scale(1); }
  14%     { transform: scale(1.04); }
  28%     { transform: scale(1); }
  42%     { transform: scale(1.03); }
  70%     { transform: scale(1); }
}
@keyframes deco-wave {
  0%,100% { transform: skewX(0deg); }
  25%     { transform: skewX(1.5deg); }
  75%     { transform: skewX(-1.5deg); }
}
@keyframes deco-sparkle {
  0%,100% { opacity:1; transform:scale(1) rotate(0deg); }
  50%     { opacity:.6; transform:scale(1.2) rotate(180deg); }
}
@keyframes deco-rotate-full {
  from { transform: rotate(0deg); }
  to   { transform: rotate(360deg); }
}
@keyframes deco-bg-pan {
  0%   { background-position: 0% 50%; }
  50%  { background-position: 100% 50%; }
  100% { background-position: 0% 50%; }
}
@keyframes deco-typewriter {
  from { clip-path: inset(0 100% 0 0); }
  to   { clip-path: inset(0 0% 0 0); }
}
@keyframes deco-bounce {
  0%,100% { transform: translateY(0); }
  40%     { transform: translateY(-4px); }
  60%     { transform: translateY(-2px); }
}
@keyframes deco-text-wave {
  0%,100% { transform: translateY(0); }
  50%     { transform: translateY(-4px); }
}
@keyframes deco-fire {
  0%,100% { text-shadow: 0 0 4px #ff4500, 0 0 10px #ff4500, 0 0 20px #ff6600; }
  50%     { text-shadow: 0 0 6px #ffcc00, 0 0 14px #ff4500, 0 0 28px #ff0000; }
}
@keyframes deco-electric {
  0%,100% { box-shadow: 0 0 5px #00e5ff, 0 0 15px #00e5ff; }
  25%     { box-shadow: 0 0 2px #7efff5, 0 0 8px #00e5ff, 0 0 20px #00bcd4; }
  50%     { box-shadow: 0 0 10px #00e5ff, 0 0 25px #00bcd4, 0 0 40px #0097a7; }
  75%     { box-shadow: 0 0 3px #7efff5, 0 0 10px #00e5ff; }
}
@keyframes deco-hologram {
  0%,100% { filter: hue-rotate(0deg) brightness(1); }
  33%     { filter: hue-rotate(120deg) brightness(1.2); }
  66%     { filter: hue-rotate(240deg) brightness(0.9); }
}
@keyframes deco-cosmic {
  0%   { background-position: 0% 0%; }
  100% { background-position: 200% 200%; }
}
@keyframes deco-sparkle-corner {
  0%,100% { opacity:0; transform:scale(0) rotate(0deg); }
  50%     { opacity:1; transform:scale(1) rotate(45deg); }
}
@keyframes deco-badge-pulse {
  0%,100% { transform: scale(1); }
  50%     { transform: scale(1.08); }
}
@keyframes deco-neon-flicker {
  0%,19%,21%,23%,25%,54%,56%,100% { opacity: 1; }
  20%,24%,55%                      { opacity: 0.4; }
}
@keyframes deco-text-glow-pulse {
  0%,100% { text-shadow: 0 0 6px currentColor; }
  50%     { text-shadow: 0 0 16px currentColor, 0 0 30px currentColor; }
}
@keyframes deco-detail-glow {
  0%,100% { box-shadow: 0 2px 20px rgba(0,0,0,.2); }
  50%     { box-shadow: 0 2px 40px rgba(255,200,0,.35), 0 2px 20px rgba(0,0,0,.2); }
}

/* =====================================================================
   ══ FRAME (카드 테두리) 18종 ══
   ===================================================================== */

/* frame_gold */
.gl-card.deco-frame_gold {
  border: 2px solid #d97706 !important;
  box-shadow: 0 0 0 1px #fbbf24, 0 4px 24px rgba(217,119,6,.35) !important;
}
/* frame_silver */
.gl-card.deco-frame_silver {
  border: 2px solid #9ca3af !important;
  box-shadow: 0 0 0 1px #e5e7eb, 0 4px 20px rgba(156,163,175,.3) !important;
}
/* frame_rose_gold */
.gl-card.deco-frame_rose_gold {
  border: 2px solid #e879a0 !important;
  box-shadow: 0 0 0 1px #fca5c7, 0 4px 20px rgba(232,121,160,.3) !important;
}
/* frame_glow_blue */
.gl-card.deco-frame_glow_blue {
  border: 2px solid #3b82f6 !important;
  box-shadow: 0 0 12px 3px rgba(59,130,246,.55) !important;
}
/* frame_glow_pink */
.gl-card.deco-frame_glow_pink {
  border: 2px solid #F97316 !important;
  box-shadow: 0 0 12px 3px rgba(236,72,153,.55) !important;
}
/* frame_glow_green */
.gl-card.deco-frame_glow_green {
  border: 2px solid #22c55e !important;
  box-shadow: 0 0 12px 3px rgba(34,197,94,.55) !important;
}
/* frame_glow_purple */
.gl-card.deco-frame_glow_purple {
  border: 2px solid #a855f7 !important;
  box-shadow: 0 0 12px 3px rgba(168,85,247,.55) !important;
}
/* frame_rainbow */
.gl-card.deco-frame_rainbow {
  border: 3px solid transparent !important;
  background-clip: padding-box !important;
  position: relative;
}
.gl-card.deco-frame_rainbow::before {
  content: '';
  position: absolute;
  inset: -3px;
  border-radius: inherit;
  background: linear-gradient(135deg,#ff0000,#ff7700,#ffff00,#00ff00,#0000ff,#8b00ff,#ff00ff,#ff0000);
  z-index: -1;
}
/* frame_fire */
.gl-card.deco-frame_fire {
  border: 2px solid #ef4444 !important;
  box-shadow: 0 0 8px 2px rgba(239,68,68,.5), 0 0 18px 4px rgba(251,146,60,.3) !important;
}
/* frame_ice */
.gl-card.deco-frame_ice {
  border: 2px solid #93c5fd !important;
  box-shadow: 0 0 8px 2px rgba(147,197,253,.55), 0 0 18px 4px rgba(186,230,253,.3) !important;
}
/* frame_diamond */
.gl-card.deco-frame_diamond {
  border: 2px solid #e0f2fe !important;
  box-shadow: 0 0 0 1px #bae6fd, 0 0 16px 4px rgba(186,230,253,.5), 0 4px 28px rgba(14,165,233,.25) !important;
}
/* frame_hologram */
.gl-card.deco-frame_hologram {
  border: 2px solid transparent !important;
  position: relative;
}
.gl-card.deco-frame_hologram::before {
  content: '';
  position: absolute;
  inset: -2px;
  border-radius: inherit;
  background: linear-gradient(135deg,#ff0080,#ff8c00,#40e0d0,#0080ff,#8000ff,#ff0080);
  background-size: 300% 300%;
  animation: deco-bg-pan 3s linear infinite;
  z-index: -1;
}
/* frame_double_gold */
.gl-card.deco-frame_double_gold {
  border: 3px double #d97706 !important;
  box-shadow: inset 0 0 0 2px rgba(251,191,36,.3), 0 4px 20px rgba(217,119,6,.3) !important;
}
/* frame_cosmic */
.gl-card.deco-frame_cosmic {
  border: 2px solid transparent !important;
  position: relative;
}
.gl-card.deco-frame_cosmic::before {
  content: '';
  position: absolute;
  inset: -2px;
  border-radius: inherit;
  background: linear-gradient(135deg,#1a1a2e,#16213e,#0f3460,#533483,#e94560);
  background-size: 400% 400%;
  animation: deco-cosmic 4s linear infinite;
  z-index: -1;
}
/* frame_electric */
.gl-card.deco-frame_electric {
  border: 2px solid #00e5ff !important;
  animation: deco-electric 2s ease-in-out infinite;
}
/* frame_aurora */
.gl-card.deco-frame_aurora {
  border: 2px solid transparent !important;
  position: relative;
}
.gl-card.deco-frame_aurora::before {
  content: '';
  position: absolute;
  inset: -2px;
  border-radius: inherit;
  background: linear-gradient(135deg,#00c6ff,#0072ff,#a855f7,#06b6d4,#22c55e,#00c6ff);
  background-size: 300% 300%;
  animation: deco-bg-pan 5s ease infinite;
  z-index: -1;
}
/* frame_platinum */
.gl-card.deco-frame_platinum {
  border: 2px solid #e5e7eb !important;
  box-shadow: 0 0 0 1px rgba(255,255,255,.9), inset 0 0 0 1px rgba(229,231,235,.5), 0 4px 24px rgba(229,231,235,.4) !important;
}
/* frame_gradient_fire */
.gl-card.deco-frame_gradient_fire {
  border: 2px solid transparent !important;
  position: relative;
}
.gl-card.deco-frame_gradient_fire::before {
  content: '';
  position: absolute;
  inset: -2px;
  border-radius: inherit;
  background: linear-gradient(135deg,#ff4500,#ff6600,#ffcc00,#ff4500);
  background-size: 200% 200%;
  animation: deco-bg-pan 2s linear infinite;
  z-index: -1;
}

/* =====================================================================
   ══ BG (카드 배경) 18종 ══
   ===================================================================== */

/* bg_aurora */
.gl-card.deco-bg_aurora .gl-info {
  background: linear-gradient(160deg,#0d1b2a,#1a3a4a,#0d2b3e) !important;
}
.gl-card.deco-bg_aurora .gl-info::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(135deg,rgba(0,198,255,.25),rgba(168,85,247,.2),rgba(6,182,212,.15));
  background-size: 200% 200%;
  animation: deco-bg-pan 6s ease infinite;
  pointer-events: none;
  border-radius: inherit;
}
.gl-card.deco-bg_aurora .gl-info { position: relative; }
/* bg_sunset */
.gl-card.deco-bg_sunset .gl-info {
  background: linear-gradient(160deg,#1c1018,#3d1c2e,#2d1523) !important;
}
/* bg_ocean */
.gl-card.deco-bg_ocean .gl-info {
  background: linear-gradient(160deg,#0c1a2e,#0e2d4a,#0a1e35) !important;
}
/* bg_forest */
.gl-card.deco-bg_forest .gl-info {
  background: linear-gradient(160deg,#0b1e12,#0f2d1a,#0d2415) !important;
}
/* bg_midnight */
.gl-card.deco-bg_midnight .gl-info {
  background: linear-gradient(160deg,#060a1a,#0a1030,#08102a) !important;
}
/* bg_rose */
.gl-card.deco-bg_rose .gl-info {
  background: linear-gradient(160deg,#1e0d14,#2e1020,#1a0b12) !important;
}
/* bg_lavender */
.gl-card.deco-bg_lavender .gl-info {
  background: linear-gradient(160deg,#12081e,#1c0e30,#160a24) !important;
}
/* bg_mint */
.gl-card.deco-bg_mint .gl-info {
  background: linear-gradient(160deg,#071a18,#0c2826,#091e1c) !important;
}
/* bg_gold_luxury */
.gl-card.deco-bg_gold_luxury .gl-info {
  background: linear-gradient(160deg,#1c1208,#2e1e06,#221606) !important;
}
/* bg_dark_luxury */
.gl-card.deco-bg_dark_luxury .gl-info {
  background: linear-gradient(160deg,#060608,#0e0c10,#08080c) !important;
}
/* bg_sparkle */
.gl-card.deco-bg_sparkle .gl-info {
  background: linear-gradient(160deg,#100820,#1a0e30,#12081e) !important;
  background-image: radial-gradient(circle,rgba(255,255,255,.06) 1px,transparent 1px) !important;
  background-size: 20px 20px !important;
}
/* bg_nebula */
.gl-card.deco-bg_nebula .gl-info {
  background: linear-gradient(160deg,#0a0018,#120020,#180030) !important;
}
.gl-card.deco-bg_nebula .gl-info::after {
  content: '';
  position: absolute;
  inset: 0;
  background: radial-gradient(ellipse at 30% 50%,rgba(168,85,247,.3),transparent 60%),
              radial-gradient(ellipse at 70% 30%,rgba(59,130,246,.25),transparent 60%);
  pointer-events: none;
  border-radius: inherit;
}
.gl-card.deco-bg_nebula .gl-info { position: relative; }
/* bg_cherry */
.gl-card.deco-bg_cherry .gl-info {
  background: linear-gradient(160deg,#1e0814,#2d1020,#24091a) !important;
}
/* bg_holographic */
.gl-card.deco-bg_holographic .gl-info {
  background: linear-gradient(135deg,#1a0a20,#0a1a20,#0a200a,#200a1a) !important;
  background-size: 300% 300% !important;
  animation: deco-bg-pan 4s ease infinite;
}
/* bg_crystal */
.gl-card.deco-bg_crystal .gl-info {
  background: linear-gradient(160deg,#0a1828,#0e2238,#081628) !important;
  backdrop-filter: blur(10px);
}
/* bg_velvet */
.gl-card.deco-bg_velvet .gl-info {
  background: linear-gradient(160deg,#1a0a0a,#2a0e0e,#1e0808) !important;
}
/* bg_neon_night */
.gl-card.deco-bg_neon_night .gl-info {
  background: linear-gradient(160deg,#020a18,#04122a,#020e22) !important;
}
/* bg_pastel */
.gl-card.deco-bg_pastel .gl-info {
  background: linear-gradient(160deg,#1a1228,#1e1430,#181020) !important;
}

/* =====================================================================
   ══ TITLE (제목 텍스트) 18종 ══
   ===================================================================== */

/* title_gold */
.gl-card.deco-title_gold .gl-name {
  background: linear-gradient(90deg,#d97706,#fbbf24,#f59e0b,#d97706) !important;
  -webkit-background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  background-clip: text !important;
  background-size: 200% auto;
}
/* title_silver */
.gl-card.deco-title_silver .gl-name {
  background: linear-gradient(90deg,#9ca3af,#e5e7eb,#d1d5db,#9ca3af) !important;
  -webkit-background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  background-clip: text !important;
}
/* title_rainbow */
.gl-card.deco-title_rainbow .gl-name {
  background: linear-gradient(90deg,#ff0000,#ff7700,#ffff00,#00ff00,#0000ff,#8b00ff) !important;
  -webkit-background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  background-clip: text !important;
  background-size: 200% auto;
  animation: deco-shine 3s linear infinite;
}
/* title_neon_glow */
.gl-card.deco-title_neon_glow .gl-name {
  color: #00e5ff !important;
  text-shadow: 0 0 6px #00e5ff, 0 0 14px #00e5ff, 0 0 28px #00bcd4 !important;
  animation: deco-text-glow-pulse 2s ease-in-out infinite;
}
/* title_fire */
.gl-card.deco-title_fire .gl-name {
  background: linear-gradient(180deg,#ffcc00,#ff6600,#ff0000) !important;
  -webkit-background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  background-clip: text !important;
  animation: deco-fire 1.5s ease-in-out infinite;
}
/* title_ice */
.gl-card.deco-title_ice .gl-name {
  background: linear-gradient(180deg,#e0f2fe,#93c5fd,#60a5fa) !important;
  -webkit-background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  background-clip: text !important;
  text-shadow: 0 0 8px rgba(147,197,253,.6) !important;
}
/* title_shimmer */
.gl-card.deco-title_shimmer .gl-name {
  background: linear-gradient(90deg,#9ca3af,#ffffff,#d1d5db,#ffffff,#9ca3af) !important;
  -webkit-background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  background-clip: text !important;
  background-size: 200% auto;
  animation: deco-shimmer 2s linear infinite;
}
/* title_typewriter */
.gl-card.deco-title_typewriter .gl-name {
  overflow: hidden;
  white-space: nowrap;
  animation: deco-typewriter 2s steps(20,end) infinite alternate;
}
/* title_bounce */
.gl-card.deco-title_bounce .gl-name {
  display: inline-block;
  animation: deco-bounce 1s ease-in-out infinite;
}
/* title_wave */
.gl-card.deco-title_wave .gl-name {
  display: inline-block;
  animation: deco-text-wave 1.5s ease-in-out infinite;
}
/* title_3d */
.gl-card.deco-title_3d .gl-name {
  color: #f0f0f0 !important;
  text-shadow: 1px 1px 0 #999,2px 2px 0 #888,3px 3px 0 #777,4px 4px 8px rgba(0,0,0,.4) !important;
}
/* title_shadow_gold */
.gl-card.deco-title_shadow_gold .gl-name {
  color: #fff !important;
  text-shadow: 0 2px 6px rgba(217,119,6,.8), 0 1px 0 #d97706 !important;
}
/* title_gradient_pp */
.gl-card.deco-title_gradient_pp .gl-name {
  background: linear-gradient(90deg,#a855f7,#F97316,#a855f7) !important;
  -webkit-background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  background-clip: text !important;
}
/* title_underline_g */
.gl-card.deco-title_underline_g .gl-name {
  border-bottom: 2px solid #d97706;
  padding-bottom: 2px;
}
/* title_underline_r */
.gl-card.deco-title_underline_r .gl-name {
  border-bottom: 2px solid transparent;
  border-image: linear-gradient(90deg,#ff0000,#ff7700,#ffff00,#00ff00,#0000ff,#8b00ff) 1;
  padding-bottom: 2px;
}
/* title_big */
.gl-card.deco-title_big .gl-name {
  font-size: 1.1em !important;
  font-weight: 800 !important;
  letter-spacing: -0.3px;
}
/* title_outlined */
.gl-card.deco-title_outlined .gl-name {
  -webkit-text-stroke: 1px rgba(255,255,255,.8);
  color: transparent !important;
}
/* title_sparkle */
.gl-card.deco-title_sparkle .gl-name {
  background: linear-gradient(90deg,#ffd700,#fff,#ffd700,#fff,#ffd700) !important;
  -webkit-background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  background-clip: text !important;
  background-size: 300% auto;
  animation: deco-shine 2s linear infinite;
  text-shadow: none !important;
}

/* =====================================================================
   ══ BADGE_EXTRA (특수 배지) 16종 ══
   ===================================================================== */

.deco-extra-badge {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  padding: 2px 7px;
  border-radius: 20px;
  font-size: 10px;
  font-weight: 700;
  line-height: 1.5;
  white-space: nowrap;
  animation: deco-badge-pulse 2s ease-in-out infinite;
}
/* badge_crown */
.deco-extra-badge.deco-badge_crown { background: linear-gradient(135deg,#d97706,#fbbf24); color: #1a0e00; }
/* badge_diamond */
.deco-extra-badge.deco-badge_diamond { background: linear-gradient(135deg,#bae6fd,#93c5fd,#60a5fa); color: #0c1a2e; }
/* badge_fire_badge */
.deco-extra-badge.deco-badge_fire_badge { background: linear-gradient(135deg,#ef4444,#f97316); color: #fff; }
/* badge_star_gold */
.deco-extra-badge.deco-badge_star_gold { background: linear-gradient(135deg,#fbbf24,#f59e0b); color: #1a0e00; }
/* badge_verified */
.deco-extra-badge.deco-badge_verified { background: linear-gradient(135deg,#22c55e,#16a34a); color: #fff; }
/* badge_trending */
.deco-extra-badge.deco-badge_trending { background: linear-gradient(135deg,#3b82f6,#1d4ed8); color: #fff; }
/* badge_popular */
.deco-extra-badge.deco-badge_popular { background: linear-gradient(135deg,#F97316,#be185d); color: #fff; }
/* badge_premium_b */
.deco-extra-badge.deco-badge_premium_b { background: linear-gradient(135deg,#a855f7,#7c3aed); color: #fff; }
/* badge_hot */
.deco-extra-badge.deco-badge_hot { background: #ff4500; color: #fff; }
/* badge_exclusive */
.deco-extra-badge.deco-badge_exclusive { background: #374151; color: #fbbf24; border: 1px solid #fbbf24; }
/* badge_limited */
.deco-extra-badge.deco-badge_limited { background: #991b1b; color: #fca5a5; }
/* badge_event */
.deco-extra-badge.deco-badge_event { background: #0F766E; color: #fff; }
/* badge_sale */
.deco-extra-badge.deco-badge_sale { background: #dc2626; color: #fff; }
/* badge_new_open */
.deco-extra-badge.deco-badge_new_open { background: linear-gradient(135deg,#06b6d4,#0891b2); color: #fff; }
/* badge_best */
.deco-extra-badge.deco-badge_best { background: linear-gradient(135deg,#d97706,#b45309); color: #fff; }
/* badge_award */
.deco-extra-badge.deco-badge_award { background: linear-gradient(135deg,#c0a060,#a07840); color: #fff; }

/* =====================================================================
   ══ ANIM (카드 애니메이션) 15종 ══
   ===================================================================== */

/* anim_float */
.gl-card.deco-anim_float {
  animation: deco-float 3s ease-in-out infinite;
}
/* anim_pulse_glow */
.gl-card.deco-anim_pulse_glow {
  --pulse-color: rgba(168,85,247,.6);
  animation: deco-pulse-glow 2s ease-in-out infinite;
  color: #a855f7;
}
/* anim_shine */
.gl-card.deco-anim_shine {
  position: relative;
  overflow: hidden;
}
.gl-card.deco-anim_shine::after {
  content: '';
  position: absolute;
  top: -50%;
  left: -75%;
  width: 50%;
  height: 200%;
  background: linear-gradient(to right,rgba(255,255,255,0),rgba(255,255,255,.25),rgba(255,255,255,0));
  transform: skewX(-20deg);
  animation: deco-shine 3s linear infinite;
}
/* anim_rainbow_border */
.gl-card.deco-anim_rainbow_border {
  border: 3px solid #ff0000 !important;
  animation: deco-rainbow-border 2s linear infinite;
}
/* anim_sparkle_corner */
.gl-card.deco-anim_sparkle_corner {
  position: relative;
  overflow: visible;
}
.gl-card.deco-anim_sparkle_corner::before,
.gl-card.deco-anim_sparkle_corner::after {
  content: '✨';
  position: absolute;
  font-size: 14px;
  animation: deco-sparkle-corner 1.5s ease-in-out infinite;
}
.gl-card.deco-anim_sparkle_corner::before { top: -8px; left: -4px; animation-delay: 0s; }
.gl-card.deco-anim_sparkle_corner::after  { bottom: -8px; right: -4px; animation-delay: 0.75s; }
/* anim_heartbeat */
.gl-card.deco-anim_heartbeat {
  animation: deco-heartbeat 1.5s ease-in-out infinite;
}
/* anim_wave */
.gl-card.deco-anim_wave {
  animation: deco-wave 3s ease-in-out infinite;
}
/* anim_rotate_frame */
.gl-card.deco-anim_rotate_frame {
  position: relative;
}
.gl-card.deco-anim_rotate_frame::before {
  content: '';
  position: absolute;
  inset: -3px;
  border-radius: inherit;
  background: conic-gradient(from 0deg,#ff0000,#ff7700,#ffff00,#00ff00,#0000ff,#8b00ff,#ff0000);
  z-index: -1;
  animation: deco-rotate-full 3s linear infinite;
}
/* anim_neon_pulse */
.gl-card.deco-anim_neon_pulse {
  border: 2px solid #F97316 !important;
  animation: deco-pulse-glow 1.5s ease-in-out infinite;
  color: #F97316;
}
/* anim_ripple */
.gl-card.deco-anim_ripple {
  position: relative;
}
.gl-card.deco-anim_ripple::after {
  content: '';
  position: absolute;
  inset: -6px;
  border-radius: inherit;
  border: 2px solid rgba(168,85,247,.4);
  animation: deco-sparkle 2s ease-out infinite;
}
/* anim_swing */
.gl-card.deco-anim_swing {
  transform-origin: top center;
  animation: deco-wave 3s ease-in-out infinite;
}
/* anim_glow_breathe */
.gl-card.deco-anim_glow_breathe {
  animation: deco-detail-glow 3s ease-in-out infinite;
}
/* anim_twinkle */
.gl-card.deco-anim_twinkle::before {
  content: '⭐';
  position: absolute;
  top: 6px;
  right: 6px;
  font-size: 16px;
  animation: deco-sparkle 1s ease-in-out infinite;
  z-index: 10;
}
.gl-card.deco-anim_twinkle { position: relative; }
/* anim_holo_shine */
.gl-card.deco-anim_holo_shine {
  animation: deco-hologram 4s ease-in-out infinite;
}

/* =====================================================================
   ══ DETAIL PAGE (상세페이지) 15종 ══
   ===================================================================== */

/* detail_gold_header */
.shop-detail-wrap.deco-detail_gold_header .shop-hero {
  background: linear-gradient(135deg,#1c1208,#2e1e06,#3d2a08) !important;
  border-bottom: 2px solid #d97706;
}
/* detail_vip_banner */
.shop-detail-wrap.deco-detail_vip_banner .shop-hero::after {
  content: '⭐ VIP 업소';
  position: absolute;
  top: 16px; right: 16px;
  background: linear-gradient(135deg,#d97706,#fbbf24);
  color: #1a0e00;
  padding: 4px 12px;
  border-radius: 20px;
  font-size: 12px;
  font-weight: 700;
}
.shop-detail-wrap.deco-detail_vip_banner .shop-hero { position: relative; }
/* detail_luxury_bg */
.shop-detail-wrap.deco-detail_luxury_bg {
  background: linear-gradient(160deg,#0a0808,#12080c,#0c0810) !important;
}
/* detail_neon_accent */
.shop-detail-wrap.deco-detail_neon_accent .shop-name {
  color: #00e5ff !important;
  text-shadow: 0 0 8px #00e5ff, 0 0 20px #00bcd4 !important;
}
/* detail_aurora_bg */
.shop-detail-wrap.deco-detail_aurora_bg {
  background: linear-gradient(160deg,#060a1a,#0a1428,#08102a) !important;
}
.shop-detail-wrap.deco-detail_aurora_bg::before {
  content: '';
  position: fixed;
  inset: 0;
  background: radial-gradient(ellipse at 50% 0%,rgba(0,198,255,.12),transparent 60%),
              radial-gradient(ellipse at 80% 50%,rgba(168,85,247,.1),transparent 50%);
  pointer-events: none;
  z-index: 0;
}
/* detail_hero_video_overlay */
.shop-detail-wrap.deco-detail_hero_glow .shop-hero {
  box-shadow: 0 8px 40px rgba(168,85,247,.3), 0 2px 12px rgba(0,0,0,.4) !important;
}
/* detail_section_gold */
.shop-detail-wrap.deco-detail_section_gold .detail-section {
  border-left: 3px solid #d97706;
  padding-left: 12px;
}
/* detail_badge_float */
.shop-detail-wrap.deco-detail_badge_float .shop-badge-area {
  animation: deco-float 3s ease-in-out infinite;
}
/* detail_info_glow */
.shop-detail-wrap.deco-detail_info_glow .shop-info-card {
  box-shadow: 0 2px 24px rgba(168,85,247,.2) !important;
  border: 1px solid rgba(168,85,247,.2) !important;
}
/* detail_title_sparkle */
.shop-detail-wrap.deco-detail_title_sparkle .shop-name {
  background: linear-gradient(90deg,#ffd700,#fff,#ffd700) !important;
  -webkit-background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  background-clip: text !important;
  background-size: 200% auto;
  animation: deco-shine 2s linear infinite;
}
/* detail_dark_premium */
.shop-detail-wrap.deco-detail_dark_premium {
  background: linear-gradient(160deg,#050508,#08080e,#060610) !important;
}
/* detail_fire_title */
.shop-detail-wrap.deco-detail_fire_title .shop-name {
  background: linear-gradient(180deg,#ffcc00,#ff6600,#ff0000) !important;
  -webkit-background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  background-clip: text !important;
}
/* detail_galaxy */
.shop-detail-wrap.deco-detail_galaxy {
  background: radial-gradient(ellipse at top,#1a0a30 0%,#0a0818 50%,#040408 100%) !important;
}
/* detail_crystal */
.shop-detail-wrap.deco-detail_crystal .shop-info-card {
  background: rgba(186,230,253,.06) !important;
  border: 1px solid rgba(186,230,253,.2) !important;
  backdrop-filter: blur(16px) !important;
}
/* detail_hologram */
.shop-detail-wrap.deco-detail_hologram .shop-hero {
  animation: deco-hologram 4s ease-in-out infinite;
}

/* =====================================================================
   ══ NEW KEYFRAMES v2 ══
   ===================================================================== */

@keyframes deco-plasma {
  0%   { filter: hue-rotate(0deg)   brightness(1.15) saturate(1.6); }
  50%  { filter: hue-rotate(180deg) brightness(1.35) saturate(2.0); }
  100% { filter: hue-rotate(360deg) brightness(1.15) saturate(1.6); }
}
@keyframes deco-breathing {
  0%,100% { transform: scale(1); }
  50%     { transform: scale(1.018); }
}
@keyframes deco-starfall-item {
  0%   { transform: translateY(-110%) translateX(0)    rotate(0deg);   opacity: 0.9; }
  80%  { opacity: 0.6; }
  100% { transform: translateY(200%) translateX(-20px) rotate(720deg); opacity: 0; }
}
@keyframes deco-flip-y {
  0%   { transform: perspective(700px) rotateY(0deg); }
  50%  { transform: perspective(700px) rotateY(90deg) scale(0.96); }
  100% { transform: perspective(700px) rotateY(0deg); }
}
@keyframes deco-particle-float {
  0%,100% { transform: translateX(0)   translateY(0)   scale(1);    opacity: 0.7; }
  25%     { transform: translateX(6px)  translateY(-8px) scale(1.15); opacity: 1; }
  75%     { transform: translateX(-5px) translateY(5px)  scale(0.85); opacity: 0.5; }
}
@keyframes deco-3d-depth {
  0%,100% { transform: perspective(600px) rotateX(0deg)   rotateY(0deg); }
  25%     { transform: perspective(600px) rotateX(3deg)   rotateY(-3deg); }
  75%     { transform: perspective(600px) rotateX(-3deg)  rotateY(3deg); }
}
@keyframes deco-custom-glow {
  0%,100% { box-shadow: 0 0 8px 2px var(--deco-color, #7c3aed); }
  50%     { box-shadow: 0 0 24px 8px var(--deco-color, #7c3aed); }
}
@keyframes deco-custom-text-glow {
  0%,100% { text-shadow: 0 0 6px var(--deco-color, #7c3aed); }
  50%     { text-shadow: 0 0 18px var(--deco-color, #7c3aed), 0 0 32px var(--deco-color, #7c3aed); }
}
@keyframes deco-spotlight-sweep {
  0%   { background-position: -200% 50%; }
  100% { background-position: 300% 50%; }
}
@keyframes deco-award-pulse {
  0%,100% { box-shadow: 0 0 0 0 rgba(251,191,36,.6); }
  50%     { box-shadow: 0 0 0 10px rgba(251,191,36,0); }
}
@keyframes deco-rainbow-sb {
  0%   { background-position: 0% 50%; }
  50%  { background-position: 100% 50%; }
  100% { background-position: 0% 50%; }
}

/* =====================================================================
   ══ FRAME v2 — 추가 효과 ══
   ===================================================================== */

/* frame_plasma (ultra) */
.gl-card.deco-frame_plasma {
  border: 2px solid transparent !important;
  position: relative;
}
.gl-card.deco-frame_plasma::before {
  content: '';
  position: absolute; inset: -2px;
  border-radius: inherit;
  background: conic-gradient(from 0deg, #a855f7, #0D9488, #0ea5e9, #06b6d4, #a855f7);
  animation: deco-rotate-full 2s linear infinite, deco-plasma 4s ease infinite;
  z-index: -1;
}

/* frame_custom (exclusive / colorable) */
.gl-card.deco-frame_custom {
  border: 2px solid var(--deco-color, #7c3aed) !important;
  animation: deco-custom-glow 2s ease-in-out infinite;
}

/* =====================================================================
   ══ BG v2 — 추가 효과 ══
   ===================================================================== */

/* bg_custom (exclusive / colorable) */
.gl-card.deco-bg_custom .gl-info {
  background: #10081e !important;
  position: relative;
}
.gl-card.deco-bg_custom .gl-info::after {
  content: '';
  position: absolute; inset: 0;
  border-radius: inherit;
  background: radial-gradient(ellipse at 60% 30%, var(--deco-color, #7c3aed), transparent 72%);
  opacity: 0.5;
  pointer-events: none;
  animation: deco-bg-pan 6s ease infinite;
}

/* =====================================================================
   ══ TITLE v2 — 추가 효과 ══
   ===================================================================== */

/* title_custom (exclusive / colorable) */
.gl-card.deco-title_custom .gl-name {
  color: var(--deco-color, #7c3aed) !important;
  -webkit-text-fill-color: var(--deco-color, #7c3aed) !important;
  animation: deco-custom-text-glow 2.5s ease-in-out infinite;
}

/* =====================================================================
   ══ ANIM v2 — 추가/누락 효과 ══
   ===================================================================== */

/* anim_breathing */
.gl-card.deco-anim_breathing {
  animation: deco-breathing 3s ease-in-out infinite;
}

/* anim_zoom_hover */
.gl-card.deco-anim_zoom_hover {
  transition: transform .3s cubic-bezier(.34,1.56,.64,1) !important;
}
.gl-card.deco-anim_zoom_hover:hover {
  transform: scale(1.06) translateY(-3px) !important;
}

/* anim_electric */
.gl-card.deco-anim_electric {
  border: 2px solid #00e5ff !important;
  animation: deco-electric 1.8s ease-in-out infinite;
}

/* anim_hologram */
.gl-card.deco-anim_hologram {
  animation: deco-hologram 3.5s ease-in-out infinite;
}
.gl-card.deco-anim_hologram::before {
  content: '';
  position: absolute; inset: 0;
  border-radius: inherit;
  background: linear-gradient(135deg,
    rgba(255,0,128,.08), rgba(0,255,200,.08),
    rgba(128,0,255,.08), rgba(0,128,255,.08));
  background-size: 300% 300%;
  animation: deco-bg-pan 3s ease infinite;
  pointer-events: none; z-index: 1;
}
.gl-card.deco-anim_hologram { position: relative; overflow: hidden; }

/* anim_neon_flicker */
.gl-card.deco-anim_neon_flicker {
  border: 2px solid #F97316 !important;
  box-shadow: 0 0 10px 2px rgba(236,72,153,.6) !important;
  animation: deco-neon-flicker 3s ease-in-out infinite;
}

/* anim_3d_hover */
.gl-card.deco-anim_3d_hover {
  animation: deco-3d-depth 4s ease-in-out infinite;
  transform-style: preserve-3d;
}

/* anim_particle */
.gl-card.deco-anim_particle {
  position: relative; overflow: visible;
}
.gl-card.deco-anim_particle::before,
.gl-card.deco-anim_particle::after {
  content: '✦';
  position: absolute;
  font-size: 12px; color: #fbbf24;
  animation: deco-particle-float 2s ease-in-out infinite;
}
.gl-card.deco-anim_particle::before { top: -10px; left: 20%; animation-delay: 0s; }
.gl-card.deco-anim_particle::after  { bottom: -10px; right: 20%; animation-delay: 1s; color: #a855f7; }

/* anim_flip_reveal */
.gl-card.deco-anim_flip_reveal {
  animation: deco-flip-y 4s ease-in-out infinite;
}

/* anim_starfall */
.gl-card.deco-anim_starfall {
  position: relative; overflow: hidden;
}
.gl-card.deco-anim_starfall::before,
.gl-card.deco-anim_starfall::after {
  content: '★';
  position: absolute;
  font-size: 11px; color: rgba(251,191,36,.7);
  animation: deco-starfall-item 2.5s ease-in infinite;
}
.gl-card.deco-anim_starfall::before { left: 25%; animation-delay: 0s; }
.gl-card.deco-anim_starfall::after  { left: 65%; animation-delay: 1.2s; font-size: 9px; }

/* anim_custom_glow (exclusive / colorable) */
.gl-card.deco-anim_custom_glow {
  animation: deco-custom-glow 2s ease-in-out infinite;
}

/* =====================================================================
   ══ DETAIL PAGE v2 — 누락 효과 (정확한 모델 키로) ══
   ===================================================================== */

/* detail_gold_dividers */
.shop-detail-wrap.deco-detail_gold_dividers .detail-section,
.shop-detail-wrap.deco-detail_gold_dividers .info-section {
  border-bottom: 1px solid rgba(217,119,6,.5);
}
.shop-detail-wrap.deco-detail_gold_dividers hr {
  border-color: #d97706;
}

/* detail_luxury_font */
.shop-detail-wrap.deco-detail_luxury_font {
  font-family: 'Georgia', 'Times New Roman', serif;
  letter-spacing: 0.03em;
}
.shop-detail-wrap.deco-detail_luxury_font .shop-name {
  font-family: 'Georgia', serif;
  font-weight: 700; letter-spacing: -0.02em;
}

/* detail_neon_cta */
.shop-detail-wrap.deco-detail_neon_cta .cta-btn,
.shop-detail-wrap.deco-detail_neon_cta .btn-call,
.shop-detail-wrap.deco-detail_neon_cta .btn-kakao {
  box-shadow: 0 0 12px 3px rgba(0,229,255,.45) !important;
  border: 1px solid rgba(0,229,255,.5) !important;
}

/* detail_anim_title */
.shop-detail-wrap.deco-detail_anim_title .shop-name {
  background: linear-gradient(90deg,#ffd700,#fff,#ffd700) !important;
  -webkit-background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  background-clip: text !important;
  background-size: 200% auto;
  animation: deco-shine 2s linear infinite;
}

/* detail_float_badge */
.shop-detail-wrap.deco-detail_float_badge .shop-badge-area,
.shop-detail-wrap.deco-detail_float_badge .badge-wrap {
  animation: deco-float 3s ease-in-out infinite;
}

/* detail_glass_cards */
.shop-detail-wrap.deco-detail_glass_cards .info-card,
.shop-detail-wrap.deco-detail_glass_cards .shop-info-card,
.shop-detail-wrap.deco-detail_glass_cards .detail-card {
  background: rgba(255,255,255,.04) !important;
  border: 1px solid rgba(255,255,255,.12) !important;
  backdrop-filter: blur(16px) !important;
  -webkit-backdrop-filter: blur(16px) !important;
}

/* detail_vip_ribbon */
.shop-detail-wrap.deco-detail_vip_ribbon .shop-hero {
  position: relative;
}
.shop-detail-wrap.deco-detail_vip_ribbon .shop-hero::after {
  content: '👑 VIP';
  position: absolute; top: 0; right: 0;
  background: linear-gradient(135deg,#d97706,#fbbf24);
  color: #1a0e00;
  padding: 6px 18px 6px 24px;
  font-size: 12px; font-weight: 800;
  clip-path: polygon(0 0,100% 0,100% 100%,12px 100%);
}

/* detail_rainbow_sb */
.shop-detail-wrap.deco-detail_rainbow_sb .sidebar,
.shop-detail-wrap.deco-detail_rainbow_sb .shop-sidebar {
  border-left: 3px solid transparent;
  border-image: linear-gradient(180deg,#ff0000,#ff7700,#ffff00,#00ff00,#0000ff,#8b00ff) 1;
}

/* detail_spotlight */
.shop-detail-wrap.deco-detail_spotlight .shop-hero {
  position: relative; overflow: hidden;
}
.shop-detail-wrap.deco-detail_spotlight .shop-hero::before {
  content: '';
  position: absolute; inset: 0;
  background: linear-gradient(90deg, transparent 0%, rgba(255,255,255,.12) 45%, rgba(255,255,255,.18) 50%, rgba(255,255,255,.12) 55%, transparent 100%);
  background-size: 300% 100%;
  animation: deco-spotlight-sweep 4s ease-in-out infinite;
  pointer-events: none; z-index: 1;
}

/* detail_award_banner */
.shop-detail-wrap.deco-detail_award_banner .shop-hero {
  border: 2px solid #d97706;
  animation: deco-award-pulse 2s ease-in-out infinite;
}
.shop-detail-wrap.deco-detail_award_banner .shop-hero::before {
  content: '🏆 수상 업소';
  position: absolute; top: 10px; left: 10px;
  background: linear-gradient(135deg,#d97706,#fbbf24);
  color: #1a0e00; padding: 4px 12px; border-radius: 20px;
  font-size: 11px; font-weight: 800; z-index: 5;
}

/* detail_hologram_hd */
.shop-detail-wrap.deco-detail_hologram_hd .shop-hero {
  animation: deco-hologram 4s ease-in-out infinite;
}
.shop-detail-wrap.deco-detail_hologram_hd .shop-hero::after {
  content: '';
  position: absolute; inset: 0;
  background: repeating-linear-gradient(
    0deg,
    transparent, transparent 2px,
    rgba(255,255,255,.03) 2px, rgba(255,255,255,.03) 4px
  );
  pointer-events: none; z-index: 2;
}

/* =====================================================================
   SHOP CARD HOVER ENHANCEMENT (꾸미기 카드 호버 강화)
   ===================================================================== */
.gl-card[class*="deco-"]:hover {
  transform: translateY(-4px) scale(1.01);
  transition: transform .25s ease;
}

/* =====================================================================
   PRINT: 인쇄 시 애니메이션 제거
   ===================================================================== */
@media print {
  .gl-card[class*="deco-"] {
    animation: none !important;
  }
  .gl-card[class*="deco-"]::before,
  .gl-card[class*="deco-"]::after {
    animation: none !important;
  }
}

/* =====================================================================
   REDUCED MOTION
   ===================================================================== */
@media (prefers-reduced-motion: reduce) {
  .gl-card[class*="deco-"],
  .gl-card[class*="deco-"] *,
  .gl-card[class*="deco-"]::before,
  .gl-card[class*="deco-"]::after,
  .deco-extra-badge {
    animation: none !important;
    transition: none !important;
  }
}
