/* ============================================
   membership.css — 멤버십 페이지 (/membership)
   - 등급 비주얼 토큰: .t-ST / .t-BG / .t-HIT / .t-SH / .t-MH
     --tc 는 등급 대표 컬러. 서버 tiers[].color 가 있으면 membership.js 가 inline style 로 덮어쓴다.
     --tc-soft(옅은 배경) / --tc-ink(글자 강조) 는 color-mix 로 --tc 에서 파생 — 미지원 브라우저는 폴백 값.
   - STARTER 심플/라이트 · BEGINNER 쿠지히트 핑크 · HIT 오렌지/골드 · SUPER HIT 핫핑크 네온 글로우
     · MEGA HIT 다크 배경 + 퍼플/골드 프리미엄 프레임
   ============================================ */

.t-ST  { --tc: #94A3B8; }
.t-BG  { --tc: #FF4081; }
.t-HIT { --tc: #F59E0B; }
.t-SH  { --tc: #FF2D95; }
.t-MH  { --tc: #7C3AED; --tg: #FFD700; }
.t-ST, .t-BG, .t-HIT, .t-SH, .t-MH {
  --tc-soft: rgba(0, 0, 0, .03);
  --tc-line: rgba(0, 0, 0, .1);
  --tc-ink: var(--tc);
}
@supports (color: color-mix(in srgb, red 50%, blue)) {
  .t-ST, .t-BG, .t-HIT, .t-SH, .t-MH {
    --tc-soft: color-mix(in srgb, var(--tc) 9%, var(--surface));
    --tc-line: color-mix(in srgb, var(--tc) 45%, transparent);
    --tc-ink: color-mix(in srgb, var(--tc) 72%, #000);
  }
  body.dark-theme .t-ST, body.dark-theme .t-BG, body.dark-theme .t-HIT,
  body.dark-theme .t-SH, body.dark-theme .t-MH {
    --tc-soft: color-mix(in srgb, var(--tc) 16%, var(--surface));
    --tc-ink: color-mix(in srgb, var(--tc) 62%, #fff);
  }
}
/* MEGA HIT 는 라이트/다크 공통으로 다크 프리미엄 — 강조 글자는 골드 */
.t-MH { --tc-ink: #FFD76B !important; }

/* ===== 레이아웃 ===== */
.ms-wrap { max-width: 1200px; margin: 0 auto; padding: 8px 6% 60px; }
@media (max-width: 600px) { .ms-wrap { padding: 4px 16px 48px; } }
.ms-h-ico { display: inline-flex; width: 1.1em; height: 1.1em; flex-shrink: 0; }
/* 아이콘 컨테이너 — icons.js 가 넣는 .kj-icon-wrap/SVG(기본 1.1em)가 컨테이너 크기를 그대로 채우도록 */
.ms-h-ico > .kj-icon-wrap, .ms-emblem > span > .kj-icon-wrap, .ms-fallback > .kj-icon-wrap,
.ms-reward-thumb > span > .kj-icon-wrap, .ms-result-img > span > .kj-icon-wrap,
.ms-modal-ico .kj-icon-wrap, .ms-step-check > .kj-icon-wrap, .ms-modal-x .kj-icon-wrap,
.ms-empty > .ms-h-ico > .kj-icon-wrap { width: 100%; height: 100%; }
.ms-h-ico .kj-svg-icon, .ms-emblem > span .kj-svg-icon, .ms-fallback .kj-svg-icon,
.ms-reward-thumb > span .kj-svg-icon, .ms-result-img > span .kj-svg-icon,
.ms-modal-ico .kj-svg-icon, .ms-step-check .kj-svg-icon, .ms-modal-x .kj-svg-icon { width: 100%; height: 100%; display: block; }
.ms-h-ico::before, .ms-emblem > span::before, .ms-fallback::before, .ms-reward-thumb > span::before,
.ms-result-img > span::before, .ms-step-check::before { display: none !important; }

.ms-section { margin-top: 36px; min-width: 0; }
.ms-sec-head { display: flex; align-items: baseline; justify-content: space-between; flex-wrap: wrap; gap: 6px 16px; margin-bottom: 14px; }
.ms-sec-head h2 { font-family: 'Jua', sans-serif; font-size: 22px; color: var(--text); display: inline-flex; align-items: center; gap: 8px; }
.ms-sec-head h2 .ms-h-ico { color: var(--pink-deep); }
.ms-sec-head p { font-size: 13px; color: var(--text-soft); line-height: 1.5; }
.ms-sec-head p b { color: var(--pink-deep); }

/* ===== 스켈레톤 ===== */
.ms-skel {
  min-height: 220px;
  background: linear-gradient(110deg, #f3eef0 30%, #faf6f8 50%, #f3eef0 70%) !important;
  background-size: 200% 100% !important;
  animation: msSkel 1.3s linear infinite;
  border: none !important;
  box-shadow: none !important;
}
body.dark-theme .ms-skel { background: linear-gradient(110deg, #251c33 30%, #2f2442 50%, #251c33 70%) !important; background-size: 200% 100% !important; }
@keyframes msSkel { to { background-position: -200% 0; } }
@media (prefers-reduced-motion: reduce) { .ms-skel { animation: none; } }

/* ===== 상단 (내 등급 + 지갑) ===== */
.ms-top { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); gap: 20px; }
.ms-top.is-guest { grid-template-columns: minmax(0, 1fr); }
@media (max-width: 900px) { .ms-top { grid-template-columns: minmax(0, 1fr); gap: 16px; } }
.ms-card {
  position: relative;
  border-radius: 24px;
  padding: 24px;
  background: var(--surface);
  border: 1.5px solid var(--line);
  box-shadow: var(--shadow-md);
  min-width: 0;
  overflow: hidden;
}
@media (max-width: 600px) { .ms-card { padding: 18px; border-radius: 20px; } }

/* --- 내 멤버십 카드 --- */
.ms-my { background: linear-gradient(135deg, var(--surface) 0%, var(--tc-soft) 100%); border: 2px solid var(--tc-line); }
.ms-my.t-SH {
  border-color: var(--tc);
  box-shadow: 0 0 0 1px rgba(255, 45, 149, .25), 0 0 22px rgba(255, 45, 149, .35), 0 12px 30px rgba(255, 45, 149, .18);
}
.ms-my.t-MH, .ms-step.t-MH, .ms-draw.t-MH {
  background: linear-gradient(135deg, #1E1033 0%, #3B1A5A 55%, #2D1B3D 100%);
  border: 2.5px solid var(--tg);
  color: #F5F0FA;
  box-shadow: 0 0 0 1px rgba(201, 162, 39, .55) inset, 0 14px 40px rgba(124, 58, 237, .38), 0 0 26px rgba(255, 215, 0, .2);
}
.ms-my.t-MH::before {
  content: ''; position: absolute; top: -40px; right: -40px; width: 180px; height: 180px; pointer-events: none;
  background: radial-gradient(circle, rgba(255, 215, 0, .28), transparent 65%);
}
.ms-my-head { display: flex; align-items: center; gap: 14px; margin-bottom: 18px; position: relative; }
.ms-my-head .ms-my-id { flex: 1; min-width: 0; }
.ms-my-head small { display: block; font-size: 12px; font-weight: 700; color: var(--text-soft); margin-bottom: 2px; }
.ms-my.t-MH .ms-my-head small, .ms-my.t-MH .ms-my-total small, .ms-my.t-MH .ms-legend { color: rgba(245, 240, 250, .72); }
.ms-my-tier { font-family: 'Jua', sans-serif; font-size: 30px; line-height: 1.1; color: var(--tc-ink); letter-spacing: .5px; word-break: keep-all; }
.ms-my.t-MH .ms-my-tier { text-shadow: 0 2px 14px rgba(255, 215, 0, .5); }
.ms-my.t-SH .ms-my-tier { text-shadow: 0 0 12px rgba(255, 45, 149, .45); }
.ms-override {
  display: inline-flex; align-items: center; gap: 4px; margin-top: 6px;
  font-size: 11.5px; font-weight: 800; padding: 3px 9px; border-radius: 999px;
  background: rgba(0, 0, 0, .06); color: var(--text-soft);
}
body.dark-theme .ms-override, .ms-my.t-MH .ms-override { background: rgba(255, 255, 255, .1); color: rgba(245, 240, 250, .8); }
.ms-rate-pill {
  flex-shrink: 0; text-align: center; padding: 8px 12px; border-radius: 14px;
  background: var(--surface); border: 1.5px solid var(--tc-line); line-height: 1.2;
}
.ms-rate-pill small { display: block; font-size: 11px; font-weight: 700; color: var(--text-soft); }
.ms-rate-pill b { font-family: 'Jua', sans-serif; font-size: 20px; color: var(--tc-ink); }
.ms-my.t-MH .ms-rate-pill { background: rgba(255, 255, 255, .06); border-color: rgba(255, 215, 0, .5); }
.ms-my.t-MH .ms-rate-pill small { color: rgba(245, 240, 250, .7); }

/* 등급 엠블럼 — 카드/사다리 공통 */
.ms-emblem {
  flex-shrink: 0; width: 58px; height: 58px; border-radius: 18px;
  display: inline-flex; align-items: center; justify-content: center;
  background: linear-gradient(135deg, var(--tc), color-mix(in srgb, var(--tc) 55%, #fff));
  background-color: var(--tc);
  color: #fff; box-shadow: 0 6px 16px rgba(0, 0, 0, .12);
}
.ms-emblem > span { display: inline-flex; width: 30px; height: 30px; }
.ms-emblem.t-ST { background: linear-gradient(135deg, #CBD5E1, #94A3B8); }
.ms-emblem.t-SH { box-shadow: 0 0 0 2px rgba(255, 255, 255, .6) inset, 0 0 18px rgba(255, 45, 149, .65); }
.ms-emblem.t-MH {
  background: linear-gradient(135deg, #2D1B3D, #5B21B6);
  color: var(--tg); border: 2px solid var(--tg);
  box-shadow: 0 0 16px rgba(255, 215, 0, .4);
}
.ms-emblem.sm { width: 40px; height: 40px; border-radius: 13px; }
.ms-emblem.sm > span { width: 21px; height: 21px; }

.ms-my-total { margin-bottom: 14px; position: relative; }
.ms-my-total small { display: block; font-size: 12.5px; font-weight: 700; color: var(--text-soft); margin-bottom: 2px; }
.ms-my-total b { font-family: 'Jua', sans-serif; font-size: 26px; color: var(--text); }
.ms-my.t-MH .ms-my-total b { color: #fff; }

.ms-progress { position: relative; height: 12px; border-radius: 999px; background: rgba(0, 0, 0, .07); overflow: hidden; }
body.dark-theme .ms-progress, .ms-my.t-MH .ms-progress { background: rgba(255, 255, 255, .12); }
.ms-progress-fill {
  position: absolute; inset: 0 auto 0 0; border-radius: 999px;
  background: linear-gradient(90deg, var(--tc), var(--tn, var(--tc)));
  transition: width .6s ease;
}
.ms-my.t-MH .ms-progress-fill { background: linear-gradient(90deg, #A78BFA, var(--tg)); }
.ms-legend { display: flex; justify-content: space-between; gap: 10px; margin-top: 7px; font-size: 11.5px; font-weight: 800; color: var(--text-soft); }
.ms-legend span:last-child { text-align: right; }
.ms-next {
  margin-top: 14px; padding: 12px 14px; border-radius: 14px;
  background: rgba(255, 255, 255, .7); border: 1px solid var(--tc-line);
  font-size: 13.5px; line-height: 1.6; color: var(--text); word-break: keep-all;
}
body.dark-theme .ms-next { background: rgba(255, 255, 255, .05); }
.ms-next b { color: var(--tc-ink); }
.ms-next .ms-next-tier { color: var(--tn-ink, var(--tc-ink)); }
.ms-my.t-MH .ms-next { background: rgba(255, 255, 255, .06); border-color: rgba(255, 215, 0, .35); color: #F5F0FA; }
.ms-my.t-MH .ms-next b { color: #FFD76B; }

/* --- 비로그인 안내 카드 --- */
.ms-guest {
  display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 18px 28px; align-items: center;
  background: linear-gradient(135deg, #FFF5F8 0%, #FFF3D6 100%);
  border: 2px solid var(--pink);
}
body.dark-theme .ms-guest { background: linear-gradient(135deg, rgba(45, 27, 61, .9), rgba(74, 37, 69, .9)); border-color: rgba(255, 107, 157, .45); }
.ms-guest h2 { font-family: 'Jua', sans-serif; font-size: 22px; color: var(--pink-deep); margin-bottom: 8px; word-break: keep-all; }
.ms-guest ul { list-style: none; display: grid; gap: 6px; font-size: 13.5px; color: var(--text); line-height: 1.55; }
.ms-guest li { display: flex; gap: 8px; align-items: flex-start; }
.ms-guest li .ms-h-ico { color: var(--pink-deep); margin-top: 2px; }
.ms-guest-cta { display: flex; flex-direction: column; gap: 8px; align-items: stretch; }
.ms-guest-cta small { font-size: 12px; color: var(--text-soft); text-align: center; }
@media (max-width: 700px) { .ms-guest { grid-template-columns: minmax(0, 1fr); } }

.ms-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 6px;
  padding: 12px 22px; border-radius: 14px; border: none; cursor: pointer;
  font-family: 'Pretendard', sans-serif; font-weight: 800; font-size: 14.5px; text-decoration: none;
  background: linear-gradient(135deg, var(--pink), var(--pink-deep)); color: #fff;
  box-shadow: 0 4px 0 #d62a6a; transition: transform .12s, box-shadow .12s, opacity .12s;
  white-space: nowrap;
}
.ms-btn:hover { transform: translateY(2px); box-shadow: 0 2px 0 #d62a6a; }
.ms-btn:focus-visible, .ms-chip:focus-visible, .ms-link-btn:focus-visible, .ms-ghost:focus-visible { outline: 3px solid rgba(255, 64, 129, .45); outline-offset: 2px; }
.ms-btn[disabled] { cursor: not-allowed; opacity: .55; transform: none; box-shadow: none; }
.ms-ghost {
  display: inline-flex; align-items: center; justify-content: center; gap: 6px;
  padding: 9px 14px; border-radius: 12px; cursor: pointer;
  font-family: 'Pretendard', sans-serif; font-weight: 800; font-size: 13px; text-decoration: none;
  background: var(--surface); color: var(--text); border: 1.5px solid var(--line);
  white-space: nowrap;
}
.ms-ghost:hover { border-color: var(--pink); color: var(--pink-deep); }
.ms-link-btn {
  background: none; border: none; padding: 4px 2px; cursor: pointer;
  font-family: 'Pretendard', sans-serif; font-weight: 800; font-size: 12.5px; color: var(--pink-deep);
  text-decoration: underline; text-underline-offset: 3px;
}

/* --- Point 지갑 --- */
.ms-wallet-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 8px; }
.ms-wallet-head h2 { font-family: 'Jua', sans-serif; font-size: 18px; color: var(--text); display: inline-flex; align-items: center; gap: 7px; }
.ms-wallet-head h2 .ms-h-ico { color: #F59E0B; }
.ms-point-big { display: flex; align-items: baseline; gap: 4px; margin: 4px 0 2px; }
.ms-point-big b { font-family: 'Jua', sans-serif; font-size: 40px; line-height: 1.1; color: var(--pink-deep); word-break: break-all; }
.ms-point-big span { font-family: 'Jua', sans-serif; font-size: 22px; color: var(--pink-deep); }
.ms-point-cap { font-size: 12px; color: var(--text-soft); margin-bottom: 14px; }
.ms-point-stats { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 16px; }
.ms-point-stats > div { background: var(--bg); border-radius: 14px; padding: 10px 12px; min-width: 0; }
body.dark-theme .ms-point-stats > div { background: var(--bg-2); }
.ms-point-stats small { display: block; font-size: 11.5px; font-weight: 700; color: var(--text-soft); }
.ms-point-stats b { font-family: 'Jua', sans-serif; font-size: 17px; color: var(--text); word-break: break-all; }
.ms-point-stats .plus b { color: #059669; }
body.dark-theme .ms-point-stats .plus b { color: #34D399; }
.ms-tickets h3 { font-size: 13px; font-weight: 800; color: var(--text-soft); margin-bottom: 8px; display: flex; align-items: center; gap: 6px; }
.ms-ticket-list { list-style: none; display: grid; grid-template-columns: 1fr 1fr; gap: 6px 10px; }
@media (max-width: 420px) { .ms-ticket-list { grid-template-columns: minmax(0, 1fr); } }
.ms-ticket-list li {
  display: flex; align-items: center; justify-content: space-between; gap: 8px;
  padding: 8px 11px; border-radius: 11px; border: 1px solid var(--line); font-size: 12.5px; min-width: 0;
}
.ms-ticket-list li span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--text); font-weight: 600; }
.ms-ticket-list li b { font-family: 'Jua', sans-serif; font-size: 15px; color: var(--pink-deep); flex-shrink: 0; }
.ms-ticket-list li.zero b { color: var(--text-soft); opacity: .7; }
.ms-ticket-list li.md { border-color: var(--tc-line); background: var(--tc-soft); }
.ms-ticket-list li.md b { color: var(--tc-ink); }
.ms-ticket-list li.md.t-MH { background: linear-gradient(135deg, #2D1B3D, #4A2545); border-color: rgba(255, 215, 0, .5); }
.ms-ticket-list li.md.t-MH span { color: #F5F0FA; }

.ms-err { text-align: center; padding: 28px 16px; color: var(--text-soft); font-size: 13.5px; line-height: 1.6; }
.ms-err .ms-ghost { margin-top: 10px; }

/* ===== 등급 사다리 ===== */
.ms-ladder { list-style: none; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 12px; }
.ms-step {
  position: relative; border-radius: 18px; padding: 16px 14px 14px;
  background: var(--tc-soft); border: 2px solid var(--tc-line);
  display: flex; flex-direction: column; align-items: flex-start; gap: 8px; min-width: 0;
}
.ms-step.t-SH { border-color: var(--tc); box-shadow: 0 0 14px rgba(255, 45, 149, .3); }
.ms-step-name { font-family: 'Jua', sans-serif; font-size: 18px; color: var(--tc-ink); line-height: 1.15; word-break: keep-all; }
.ms-step-min { font-size: 12.5px; font-weight: 700; color: var(--text-soft); }
.ms-step-rate { font-size: 12.5px; font-weight: 800; color: var(--text); }
.ms-step-rate b { font-family: 'Jua', sans-serif; font-size: 16px; color: var(--tc-ink); }
.ms-step.t-MH .ms-step-min { color: rgba(245, 240, 250, .7); }
.ms-step.t-MH .ms-step-rate { color: #F5F0FA; }
.ms-step-mine {
  position: absolute; top: 10px; right: 10px;
  font-size: 10.5px; font-weight: 800; padding: 3px 8px; border-radius: 999px;
  background: var(--tc); color: #fff;
}
.ms-step.t-MH .ms-step-mine { background: var(--tg); color: #3B1A5A; }
.ms-step.is-mine { outline: 3px solid var(--tc); outline-offset: 2px; }
.ms-step.t-MH.is-mine { outline-color: var(--tg); }
.ms-step.is-reached .ms-step-check { color: var(--tc-ink); }
.ms-step-check { display: inline-flex; width: 14px; height: 14px; vertical-align: -2px; margin-right: 3px; }
@media (max-width: 860px) {
  .ms-ladder { grid-template-columns: minmax(0, 1fr); gap: 8px; }
  .ms-step { flex-direction: row; align-items: center; gap: 12px; padding: 12px 14px; }
  .ms-step-main { flex: 1; min-width: 0; }
  .ms-step-rate { text-align: right; flex-shrink: 0; }
  .ms-step-mine { position: static; order: 3; flex-shrink: 0; }
}

/* ===== 등급 필터 (한 줄 · 모바일 가로 스크롤) ===== */
.ms-filter {
  display: flex; flex-wrap: nowrap; gap: 8px;
  overflow-x: auto; overscroll-behavior-x: contain; -webkit-overflow-scrolling: touch;
  scrollbar-width: none; padding: 4px 2px 12px; margin: 0 -2px;
  scroll-snap-type: x proximity;
}
.ms-filter::-webkit-scrollbar { display: none; }
.ms-chip {
  flex: 0 0 auto; scroll-snap-align: start;
  display: inline-flex; align-items: center; gap: 7px;
  padding: 9px 15px; border-radius: 999px; cursor: pointer;
  background: var(--surface); color: var(--text);
  border: 2px solid var(--line);
  font-family: 'Pretendard', sans-serif; font-weight: 800; font-size: 13px; white-space: nowrap;
  transition: background .15s, color .15s, border-color .15s, box-shadow .15s;
}
.ms-chip .dot { width: 10px; height: 10px; border-radius: 50%; background: var(--tc, var(--pink-deep)); flex-shrink: 0; }
.ms-chip .cnt { font-size: 11px; font-weight: 800; padding: 1px 7px; border-radius: 999px; background: rgba(0, 0, 0, .06); color: var(--text-soft); }
body.dark-theme .ms-chip .cnt { background: rgba(255, 255, 255, .1); }
.ms-chip:hover { border-color: var(--tc, var(--pink)); }
.ms-chip.active { background: var(--tc, var(--pink-deep)); border-color: var(--tc, var(--pink-deep)); color: #fff; }
.ms-chip.active .dot { background: #fff; }
.ms-chip.active .cnt { background: rgba(255, 255, 255, .25); color: #fff; }
.ms-chip.t-ST.active { color: #1E293B; background: #CBD5E1; border-color: #94A3B8; }
.ms-chip.t-ST.active .dot { background: #64748B; }
.ms-chip.t-ST.active .cnt { color: #1E293B; background: rgba(255, 255, 255, .55); }
.ms-chip.t-SH.active { box-shadow: 0 0 14px rgba(255, 45, 149, .55); }
.ms-chip.t-MH.active { background: linear-gradient(135deg, #2D1B3D, #5B21B6); border-color: var(--tg); color: #FFD76B; box-shadow: 0 0 12px rgba(255, 215, 0, .3); }
.ms-chip.t-MH.active .dot { background: var(--tg); }

/* ===== 뽑기 목록 ===== */
.ms-group { margin-top: 18px; }
.ms-group + .ms-group { margin-top: 30px; }
.ms-group-head { display: flex; align-items: center; flex-wrap: wrap; gap: 8px 10px; margin-bottom: 12px; }
.ms-group-head h3 { font-family: 'Jua', sans-serif; font-size: 19px; color: var(--tc-ink); }
.ms-group-head small { font-size: 12px; color: var(--text-soft); font-weight: 700; }
.ms-group-head.t-MH h3 { color: #7C3AED; }
body.dark-theme .ms-group-head.t-MH h3 { color: #FFD76B; }
.ms-mine-tag { font-size: 11px; font-weight: 800; padding: 3px 9px; border-radius: 999px; background: var(--pink-deep); color: #fff; }

.ms-tb {
  display: inline-flex; align-items: center; gap: 4px;
  font-family: 'Pretendard', sans-serif; font-size: 11px; font-weight: 800; letter-spacing: .3px;
  padding: 4px 9px; border-radius: 999px; white-space: nowrap;
  background: var(--tc); color: #fff;
}
.ms-tb.t-ST { background: #E2E8F0; color: #334155; }
.ms-tb.t-SH { box-shadow: 0 0 10px rgba(255, 45, 149, .6); }
.ms-tb.t-MH { background: linear-gradient(135deg, #2D1B3D, #5B21B6); color: #FFD76B; border: 1px solid var(--tg); }

.ms-draw-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(290px, 100%), 1fr)); gap: 18px; }
@media (max-width: 600px) { .ms-draw-grid { grid-template-columns: minmax(0, 1fr); gap: 14px; } }
.ms-draw {
  position: relative; display: flex; flex-direction: column; min-width: 0;
  border-radius: 20px; overflow: hidden;
  background: var(--surface); border: 2px solid var(--tc-line);
  box-shadow: var(--shadow-sm);
}
.ms-draw.ms-skel { min-height: 360px; }
.ms-draw.t-SH { border-color: var(--tc); box-shadow: 0 0 0 1px rgba(255, 45, 149, .2), 0 0 18px rgba(255, 45, 149, .3); }
.ms-draw.type-DAILY::after {
  content: ''; position: absolute; inset: 0 0 auto 0; height: 4px; pointer-events: none;
  background: linear-gradient(90deg, #10B981, #34D399);
}
.ms-draw-media {
  position: relative; aspect-ratio: 16 / 10; background: var(--tc-soft);
  display: flex; align-items: center; justify-content: center; overflow: hidden;
}
.ms-draw.t-MH .ms-draw-media { background: radial-gradient(circle at 50% 40%, rgba(255, 215, 0, .16), transparent 65%); }
.ms-draw-media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ms-draw-media .ms-fallback { display: inline-flex; width: 64px; height: 64px; color: var(--tc); opacity: .75; }
.ms-draw.t-MH .ms-draw-media .ms-fallback { color: var(--tg); }
.ms-media-badges { position: absolute; top: 10px; left: 10px; right: 10px; display: flex; justify-content: space-between; gap: 6px; pointer-events: none; }
.ms-type {
  display: inline-flex; align-items: center; gap: 4px;
  font-size: 11px; font-weight: 800; letter-spacing: .4px; padding: 4px 9px; border-radius: 999px;
  color: #fff; box-shadow: 0 2px 6px rgba(0, 0, 0, .18);
}
.ms-type.DAILY { background: linear-gradient(135deg, #10B981, #059669); }
.ms-type.POINT { background: linear-gradient(135deg, #6366F1, #4F46E5); }
.ms-soldout-mask {
  position: absolute; inset: 0; background: rgba(20, 20, 30, .58);
  display: flex; align-items: center; justify-content: center;
  color: #fff; font-family: 'Jua', sans-serif; font-size: 22px; letter-spacing: 1px;
}
.ms-draw.is-soldout .ms-draw-media img { filter: grayscale(.9); }

.ms-draw-body { padding: 14px 16px 16px; display: flex; flex-direction: column; gap: 10px; flex: 1; min-width: 0; }
.ms-draw-body h4 { font-family: 'Jua', sans-serif; font-size: 18px; line-height: 1.3; color: var(--text); word-break: keep-all; overflow-wrap: anywhere; }
.ms-draw.t-MH .ms-draw-body h4 { color: #fff; }
.ms-draw-desc {
  font-size: 13px; line-height: 1.55; color: var(--text-soft); overflow-wrap: anywhere;
  display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;
}
.ms-draw.t-MH .ms-draw-desc { color: rgba(245, 240, 250, .75); }
.ms-period { display: flex; align-items: center; gap: 6px; font-size: 12px; font-weight: 700; color: var(--text-soft); }
.ms-draw.t-MH .ms-period { color: rgba(245, 240, 250, .7); }

.ms-rewards { background: var(--bg); border-radius: 14px; padding: 10px 12px; min-width: 0; }
body.dark-theme .ms-rewards { background: var(--bg-2); }
.ms-draw.t-MH .ms-rewards { background: rgba(255, 255, 255, .06); border: 1px solid rgba(255, 215, 0, .22); }
.ms-rewards-head { display: flex; justify-content: space-between; align-items: center; gap: 8px; font-size: 12px; font-weight: 800; color: var(--text-soft); margin-bottom: 6px; }
.ms-rewards-head b { color: var(--pink-deep); font-family: 'Jua', sans-serif; font-size: 14px; }
.ms-draw.t-MH .ms-rewards-head { color: rgba(245, 240, 250, .7); }
.ms-draw.t-MH .ms-rewards-head b { color: #FFD76B; }
.ms-reward-list { list-style: none; display: grid; gap: 6px; }
.ms-reward {
  display: flex; align-items: center; gap: 9px; min-width: 0;
  font-size: 12.5px; font-weight: 600; color: var(--text);
}
.ms-draw.t-MH .ms-reward { color: #F5F0FA; }
.ms-reward-thumb {
  flex-shrink: 0; width: 36px; height: 36px; border-radius: 10px; overflow: hidden;
  background: var(--surface); border: 1px solid var(--line);
  display: inline-flex; align-items: center; justify-content: center; color: var(--text-soft);
}
.ms-reward-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ms-reward-thumb > span { display: inline-flex; width: 18px; height: 18px; }
.ms-reward-name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ms-reward.is-top .ms-reward-thumb { border: 2px solid #FFC93C; box-shadow: 0 0 0 2px rgba(255, 201, 60, .25); }
.ms-reward.is-top .ms-reward-name { font-weight: 800; }
.ms-top-tag {
  flex-shrink: 0; font-size: 10px; font-weight: 900; letter-spacing: .4px;
  padding: 2px 7px; border-radius: 999px; background: linear-gradient(135deg, #FFC93C, #FF8C00); color: #fff;
}
.ms-out-tag { flex-shrink: 0; font-size: 10.5px; font-weight: 800; color: var(--text-soft); }
.ms-reward.is-out .ms-reward-name { text-decoration: line-through; opacity: .55; }
.ms-reward.is-out .ms-reward-thumb { filter: grayscale(1); opacity: .6; }
.ms-rewards-more { display: flex; justify-content: flex-end; margin-top: 4px; }
.ms-draw.t-MH .ms-link-btn { color: #FFD76B; }

.ms-cost { display: grid; gap: 5px; font-size: 12.5px; line-height: 1.5; color: var(--text); }
.ms-cost-row { display: flex; align-items: flex-start; gap: 6px; overflow-wrap: anywhere; }
.ms-cost-row .ms-h-ico { margin-top: 1px; color: var(--text-soft); }
.ms-cost-main { font-weight: 800; }
.ms-cost-main.free { color: #059669; }
body.dark-theme .ms-cost-main.free { color: #34D399; }
.ms-cost-main .pt { font-family: 'Jua', sans-serif; font-size: 20px; color: #4F46E5; margin-right: 2px; }
body.dark-theme .ms-cost-main .pt { color: #A5B4FC; }
.ms-cost-sub { color: var(--text-soft); font-weight: 600; }
.ms-cost-ticket { color: var(--tc-ink); font-weight: 800; }
.ms-draw.t-MH .ms-cost { color: #F5F0FA; }
.ms-draw.t-MH .ms-cost-sub, .ms-draw.t-MH .ms-cost-row .ms-h-ico { color: rgba(245, 240, 250, .7); }
.ms-draw.t-MH .ms-cost-main .pt { color: #C4B5FD; }

.ms-elig { font-size: 12px; font-weight: 700; color: var(--text-soft); }
.ms-elig.is-lock { color: #B45309; background: rgba(245, 158, 11, .1); padding: 8px 10px; border-radius: 10px; line-height: 1.5; }
body.dark-theme .ms-elig.is-lock { color: #FCD34D; background: rgba(245, 158, 11, .12); }
.ms-draw.t-MH .ms-elig { color: rgba(245, 240, 250, .7); }
.ms-draw.t-MH .ms-elig.is-lock { color: #FFD76B; background: rgba(255, 215, 0, .1); }
.ms-elig .sub { display: block; font-weight: 600; font-size: 11.5px; opacity: .85; }

.ms-draw-actions { margin-top: auto; padding-top: 2px; }
.ms-draw-btn { width: 100%; padding: 13px 16px; font-size: 14.5px; white-space: normal; text-align: center; line-height: 1.3; }
.ms-draw.t-MH .ms-draw-btn:not([disabled]) { background: linear-gradient(135deg, #FFD700, #FFC93C); color: #3B1A5A; box-shadow: 0 4px 0 #C9A227; }
.ms-draw.type-DAILY .ms-draw-btn:not([disabled]) { background: linear-gradient(135deg, #10B981, #059669); box-shadow: 0 4px 0 #047857; }
.ms-draw.type-DAILY.t-MH .ms-draw-btn:not([disabled]) { background: linear-gradient(135deg, #FFD700, #FFC93C); color: #3B1A5A; box-shadow: 0 4px 0 #C9A227; }
.ms-draw-btn.is-login:not([disabled]) { background: var(--surface); color: var(--pink-deep); border: 2px solid var(--pink); box-shadow: 0 3px 0 var(--pink-deep); }
.ms-draw-btn[disabled] { background: rgba(0, 0, 0, .08); color: var(--text-soft); opacity: 1; }
body.dark-theme .ms-draw-btn[disabled], .ms-draw.t-MH .ms-draw-btn[disabled] { background: rgba(255, 255, 255, .1); color: rgba(245, 240, 250, .6); }
.ms-draw-btn[aria-busy="true"] { opacity: .75; cursor: progress; }
.ms-today { font-size: 11.5px; font-weight: 700; color: var(--text-soft); text-align: center; margin-top: 6px; }
.ms-draw.t-MH .ms-today { color: rgba(245, 240, 250, .65); }

.ms-empty {
  text-align: center; padding: 40px 20px; border-radius: 20px;
  background: var(--surface); border: 2px dashed var(--line); color: var(--text-soft); font-size: 14px; line-height: 1.65;
}
.ms-empty .ms-h-ico { width: 44px; height: 44px; color: var(--pink); margin-bottom: 10px; }
.ms-empty b { display: block; font-family: 'Jua', sans-serif; font-size: 18px; color: var(--text); margin-bottom: 4px; }

/* ===== 안내 ===== */
.ms-notice {
  margin-top: 40px;
  background: linear-gradient(135deg, rgba(255, 107, 157, .04), rgba(255, 201, 60, .04));
  border: 2px dashed var(--pink); border-radius: 18px; padding: 22px 26px;
  font-size: 13.5px; line-height: 1.75; color: var(--text);
}
body.dark-theme .ms-notice { background: rgba(255, 107, 157, .06); }
.ms-notice h3 { font-family: 'Jua', sans-serif; font-size: 17px; color: var(--pink-deep); margin-bottom: 10px; display: flex; align-items: center; gap: 8px; }
.ms-notice ul { padding-left: 18px; display: grid; gap: 6px; }
.ms-notice b { color: var(--pink-deep); }
.ms-notice a { color: var(--pink-deep); font-weight: 800; }
@media (max-width: 600px) { .ms-notice { padding: 18px 16px; font-size: 13px; } }

/* ===== 모달 ===== */
.ms-modal {
  position: fixed; inset: 0; z-index: 9000;
  background: rgba(20, 20, 30, .55); backdrop-filter: blur(4px);
  display: flex; align-items: center; justify-content: center; padding: 16px;
}
.ms-modal[hidden] { display: none; }
.ms-modal-card {
  width: 100%; max-width: 460px; max-height: min(86vh, 760px);
  display: flex; flex-direction: column;
  background: var(--surface); color: var(--text); border-radius: 22px; overflow: hidden;
  box-shadow: 0 20px 48px rgba(0, 0, 0, .22);
  animation: msPop .18s ease;
}
.ms-modal-card.wide { max-width: 560px; }
@keyframes msPop { from { transform: translateY(8px) scale(.98); opacity: 0; } to { transform: none; opacity: 1; } }
@media (prefers-reduced-motion: reduce) { .ms-modal-card { animation: none; } }
.ms-modal-head {
  display: flex; align-items: center; gap: 10px; flex-shrink: 0;
  padding: 18px 18px 16px 22px; color: #fff;
  background: linear-gradient(135deg, var(--pink), var(--yellow));
}
.ms-modal-head h2 { flex: 1; min-width: 0; font-family: 'Jua', sans-serif; font-size: 19px; font-weight: 400; word-break: keep-all; }
.ms-modal-ico { display: inline-flex; width: 26px; height: 26px; flex-shrink: 0; }
.ms-modal-ico:empty { display: none; }
.ms-modal-x {
  flex-shrink: 0; width: 40px; height: 40px; min-height: 40px; border-radius: 50%; border: none; cursor: pointer;
  background: rgba(255, 255, 255, .25); color: #fff;
}
.ms-modal-x:hover { background: rgba(255, 255, 255, .4); }
.ms-modal-body { padding: 20px 22px 8px; overflow-y: auto; overscroll-behavior: contain; font-size: 14px; line-height: 1.65; word-break: keep-all; }
.ms-modal-body p { margin-bottom: 10px; }
.ms-modal-body p:last-child { margin-bottom: 0; }
.ms-modal-body strong { color: var(--pink-deep); }
.ms-modal-actions { display: flex; gap: 8px; justify-content: flex-end; flex-wrap: wrap; padding: 14px 22px 20px; flex-shrink: 0; }
.ms-modal-actions:empty { display: none; }
.ms-modal-actions .ms-btn, .ms-modal-actions .ms-ghost { padding: 11px 20px; font-size: 14px; }
@media (max-width: 420px) {
  .ms-modal-actions > * { flex: 1 1 0; }
}
.ms-info-row {
  display: flex; justify-content: space-between; align-items: center; gap: 10px;
  background: var(--bg); border-radius: 12px; padding: 11px 14px; margin: 8px 0; font-size: 13px;
}
body.dark-theme .ms-info-row { background: var(--bg-2); }
.ms-info-row b { font-family: 'Jua', sans-serif; font-size: 15px; color: var(--pink-deep); text-align: right; }
.ms-confirm-name { font-family: 'Jua', sans-serif; font-size: 18px; margin-bottom: 8px; color: var(--text); overflow-wrap: anywhere; }

/* 결과 */
.ms-result { text-align: center; }
.ms-result-img {
  width: 160px; height: 160px; margin: 4px auto 14px; border-radius: 20px; overflow: hidden;
  background: var(--bg); display: flex; align-items: center; justify-content: center;
  border: 3px solid #FFC93C; box-shadow: 0 10px 26px rgba(255, 201, 60, .3);
}
body.dark-theme .ms-result-img { background: var(--bg-2); }
.ms-result-img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ms-result-img > span { display: inline-flex; width: 64px; height: 64px; color: var(--pink-deep); }
.ms-result-name { font-family: 'Jua', sans-serif; font-size: 22px; color: var(--text); margin-bottom: 10px; overflow-wrap: anywhere; }
.ms-result-where {
  display: inline-flex; align-items: center; gap: 6px; flex-wrap: wrap; justify-content: center;
  padding: 10px 14px; border-radius: 14px; font-size: 13.5px; font-weight: 800;
  background: rgba(16, 185, 129, .1); color: #047857;
}
body.dark-theme .ms-result-where { background: rgba(16, 185, 129, .16); color: #6EE7B7; }
.ms-result-where.manual { background: rgba(245, 158, 11, .12); color: #B45309; }
body.dark-theme .ms-result-where.manual { color: #FCD34D; }
.ms-result-sub { margin-top: 10px; font-size: 12.5px; color: var(--text-soft); }

/* 경품 전체 / Point 내역 리스트 */
.ms-list { list-style: none; display: grid; gap: 8px; }
.ms-list .ms-reward { padding: 8px 10px; border-radius: 12px; border: 1px solid var(--line); font-size: 13px; }
.ms-list .ms-reward-type { flex-shrink: 0; font-size: 11px; font-weight: 700; color: var(--text-soft); }
.ms-ledger-item {
  display: flex; justify-content: space-between; align-items: flex-start; gap: 12px;
  padding: 11px 12px; border-radius: 12px; border: 1px solid var(--line);
}
.ms-ledger-l { min-width: 0; flex: 1; }
.ms-ledger-type { display: inline-block; font-size: 11px; font-weight: 800; padding: 2px 8px; border-radius: 999px; background: var(--bg-2); color: var(--text); margin-bottom: 4px; }
.ms-ledger-memo { display: block; font-size: 13px; font-weight: 600; color: var(--text); overflow-wrap: anywhere; }
.ms-ledger-date { display: block; font-size: 11.5px; color: var(--text-soft); margin-top: 2px; }
.ms-ledger-r { flex-shrink: 0; text-align: right; }
.ms-ledger-amt { display: block; font-family: 'Jua', sans-serif; font-size: 17px; }
.ms-ledger-amt.plus { color: #059669; }
.ms-ledger-amt.minus { color: #DC2626; }
body.dark-theme .ms-ledger-amt.plus { color: #34D399; }
body.dark-theme .ms-ledger-amt.minus { color: #F87171; }
.ms-ledger-bal { display: block; font-size: 11.5px; color: var(--text-soft); }
.ms-ledger-more { display: flex; justify-content: center; margin-top: 12px; }
.ms-ledger-note { font-size: 12px; color: var(--text-soft); margin-bottom: 12px; }

/* 다음 등급 핵심 혜택 (명세 18절) */
.ms-next-benefits { margin-top: 10px; padding: 12px 14px; border-radius: 12px; background: rgba(255, 255, 255, .55); border: 1px dashed var(--tn, var(--tc, #FF4081)); }
.ms-next-benefits small { display: block; font-weight: 800; font-size: 12px; color: var(--text-soft); margin-bottom: 6px; }
.ms-next-benefits ul { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 4px 12px; }
.ms-next-benefits li { font-size: 13px; color: var(--text); display: flex; gap: 6px; align-items: baseline; min-width: 0; word-break: keep-all; }
.ms-next-benefits .ms-ck { color: var(--tn, var(--tc, #FF4081)); font-weight: 900; flex-shrink: 0; }
@media (max-width: 480px) { .ms-next-benefits ul { grid-template-columns: 1fr; } }
body.dark-theme .ms-next-benefits { background: rgba(255, 255, 255, .05); }
.ms-my.t-MH .ms-next-benefits { background: rgba(255, 255, 255, .06); border-color: rgba(255, 215, 0, .45); }
.ms-my.t-MH .ms-next-benefits li, .ms-my.t-MH .ms-next-benefits small { color: #F5F0FA; }

/* 등급별 모션 (명세 32절) — SUPER HIT 네온 글로우 펄스 · MEGA HIT 골드 광택 스윕 + 프리미엄 글로우.
   등급이 높을수록 시각적 매력 ↑. 모션 최소화 설정 사용자는 정지. */
@keyframes msNeonPulse {
  0%, 100% { box-shadow: 0 0 0 1px rgba(255, 45, 149, .25), 0 0 14px rgba(255, 45, 149, .28), 0 12px 30px rgba(255, 45, 149, .14); }
  50%      { box-shadow: 0 0 0 1px rgba(255, 45, 149, .45), 0 0 30px rgba(255, 45, 149, .55), 0 12px 34px rgba(255, 45, 149, .24); }
}
@keyframes msGoldGlow {
  0%, 100% { box-shadow: 0 0 0 1px rgba(201, 162, 39, .55) inset, 0 14px 40px rgba(124, 58, 237, .38), 0 0 20px rgba(255, 215, 0, .16); }
  50%      { box-shadow: 0 0 0 1px rgba(255, 215, 0, .8) inset, 0 14px 44px rgba(124, 58, 237, .5), 0 0 36px rgba(255, 215, 0, .38); }
}
@keyframes msGoldSweep { 0% { transform: translateX(-120%) skewX(-18deg); } 60%, 100% { transform: translateX(260%) skewX(-18deg); } }
@keyframes msOrbFloat { 0%, 100% { transform: translate(0, 0) scale(1); opacity: .9; } 50% { transform: translate(-14px, 10px) scale(1.12); opacity: 1; } }
.ms-my.t-SH, .ms-draw.t-SH { animation: msNeonPulse 2.8s ease-in-out infinite; }
.ms-my.t-MH, .ms-draw.t-MH, .ms-step.t-MH { animation: msGoldGlow 3.2s ease-in-out infinite; }
.ms-my.t-MH::before { animation: msOrbFloat 6s ease-in-out infinite; }
.ms-draw.t-MH .ms-draw-media::after {
  content: ''; position: absolute; top: -10%; bottom: -10%; left: 0; width: 38%; pointer-events: none;
  background: linear-gradient(90deg, transparent, rgba(255, 228, 140, .35), transparent);
  animation: msGoldSweep 4.2s ease-in-out infinite;
}
@media (prefers-reduced-motion: reduce) {
  .ms-my.t-SH, .ms-draw.t-SH, .ms-my.t-MH, .ms-draw.t-MH, .ms-step.t-MH, .ms-my.t-MH::before, .ms-draw.t-MH .ms-draw-media::after { animation: none; }
}
