/**
 * ACTS 공개 페이지 [acts_ministers_page] — v3.1 (iOS 폰트 고정 재작성)
 *
 * ── 핵심 변경 ──────────────────────────────────────────────────────────────
 * 이전(v3.0): html:has() / body.xxx 에 text-size-adjust → 테마 CSS에 덮어쓰일 수 있음
 *             font-size: 16px 래퍼 고정 → 자식 rem이 html에 여전히 의존
 *
 * v3.1~: px 변수, rem/vw 최소화
 * v3.3: html text-size-adjust + fine-pointer 전용 transform :hover
 * v3.4: a/button touch-action:manipulation + (hover:none)|(coarse) 에서 transform 무효·:active opacity
 * v3.5: 액츠 목록 — 프로필(#actsProfileRoot)과 동일: 루트 id, min-height, 768px px 토큰·검색 16px·tap 하이라이트
 * v3.6: (구) JS → html.has-touch — 제거됨. 터치 보조는 @media (hover: none) 만 사용.
 * v3.7~3.8: 카드 hover 에서 scale/translateY 제거 + 뷰포트·(hover:none) 에서 카드 서브트리 transform 상시 차단
 * v3.11: WebKit Text Inflation — .banner-track / .cards-row + 좁은 m-card; -webkit-text-size-adjust:none 보강.
 * v3.13: 액츠 목록 UI·§0 테마 셸 제거 → acts-profile-all + acts-ministers-list 로 이전.
 *
 * 왜 덮어쓰기만으로는 실패했나:
 *   @media (hover:none) 로 scale 을 무효화하는 방식은, 조건이 한 번이라도 어긋나면
 *   원본 scale() 이 그대로 발동한다.
 * 근본 대응:
 *   카드 계열 hover 에서 scale()·translateY() 모두 쓰지 않는다. (translateY 도 레이아웃·합성 레이어에 따라
 *   “커진 것처럼” 보일 수 있음) 데스크톱은 그림자·테두리만으로 호버 표현.
 * §18: max-width≤1280px 에서 카드 서브트리 transform:none !important 상시 → 테마·가짜:hover·태블릿 가로 대비.
 *
 * @location joyn-members-pro/modules/acts/assets/acts-public-v3.css
 * @version  3.14.1
 */

/* ① WKWebView: text-size-adjust 는 html 에 선언하는 것이 확실함 (래퍼만으론 무시될 수 있음)
 * 100% 만으로 글자/MI 만 커지는 경우가 있어 none 으로 자동 조정 완전 비활성화 */
html:has(body.jmp-acts-public-page),
html:has(.acts-public-wrap.acts-v3) {
  -webkit-text-size-adjust: none;
  text-size-adjust: none;
}

/* ══════════════════════════════════════════════════════════════════
   1. 디자인 토큰 — 컬러 / 래이아웃 변수
   ══════════════════════════════════════════════════════════════════ */
.acts-public-wrap.acts-v3 {
  /* 컬러 팔레트 */
  --bg:             #f4f6fb;
  --bg2:            #eceef5;
  --panel:          #ffffff;
  --panel2:         #f8f9fd;
  --text:           #0c1426;
  --text2:          #6b7a99;
  --text3:          #a0adc4;
  --line:           rgba(12,20,38,.09);
  --line2:          rgba(12,20,38,.14);
  --shadow:         0 8px 32px rgba(12,20,38,.08);
  --tab-bg:         #000000; /* 하단 탭바: mainpage-mini 모바일 네비와 동일 검정 */
  --chip-bg:        rgba(12,20,38,.05);
  --chip-on-bg:     rgba(26,86,219,.09);
  --chip-on-cl:     #1a46b0;
  --chip-on-bd:     rgba(26,86,219,.22);
  --scroll-track:   rgba(12,20,38,.05);
  --accent:         #1a56db;
  --accent2:        #6d28d9;
  --accent-soft:    rgba(26,86,219,.09);
  --accent-border:  rgba(26,86,219,.18);
  --lv1:            #16a34a;
  --lv2:            #1a56db;
  --lv3:            #6d28d9;
  --lv4:            #d97706;
  --lv5:            #dc2626;

  /* 레이아웃 */
  --tab-h:     56px; /* mainpage-mini .mpm-mobile-bottom-nav min-height 와 동일 */
  --tab-safe:  min(env(safe-area-inset-bottom, 0px), 10px);
  --header-h:  64px;
  --r-card:    20px;
  --r-btn:     12px;

  /* ── 폰트 스케일 (전부 px — rem/vw 없음) ──────────────────────────
   * html font-size, vw 변동에 완전히 단절됨 (프로필 페이지 동일 방식)
   * iOS Safari 뷰포트 재계산 → 변수값 자체가 px이므로 영향 없음.
   */
  --fs-2xs:   10px;   /* 레벨 배지·뱃지 아이콘 */
  --fs-xs:    11px;   /* 탭 라벨, rank 숫자 */
  --fs-sm:    12px;   /* 카드 spec, 도트 이하 보조 */
  --fs-base:  14px;   /* 카드 이름, chip, sec-more, 배너 desc */
  --fs-md:    16px;   /* 헤더 검색 입력, 섹션 제목, 버튼 텍스트
                         (iOS 포커스 확대 기준선: 16px 이상) */
  --fs-lg:    18px;   /* 배너 제목 */
  --fs-xl:    19px;   /* 로고 텍스트 */
  --fs-drawer-title: 16px;

  /* ── 아이콘 스케일 (px 고정) — Remix Icon (.jmp-acts-ri) font-size */
  --icon-2xs:  10px;  /* 레벨 pill 아이콘 */
  --icon-xs:   15px;  /* chip 아이콘 */
  --icon-sm:   16px;  /* 레벨 배지 아이콘 */
  --icon-md:   20px;  /* scroll-top, drawer close */
  --icon-hdr:  21px;  /* 헤더 버튼 */
  --icon-logo: 22px;  /* 로고 */
  --icon-base: 24px;  /* 기본 아이콘 */
  --icon-tab:  22px;  /* 하단탭 아이콘 — mainpage-mini .mpm-mbn-icon i */
  --icon-sec:  19px;  /* sec-title 아이콘 */
  --icon-more: 15px;  /* sec-more 아이콘 */
  --icon-srch: 18px;  /* 헤더 검색 아이콘 */
  --icon-empty:48px;  /* 빈 상태 아이콘 */
  --icon-dfeed:40px;  /* feed placeholder 아이콘 */
}

/* ══════════════════════════════════════════════════════════════════
   2. 베이스 — 리셋 + iOS 폰트 고정
   ══════════════════════════════════════════════════════════════════ */
.acts-public-wrap.acts-v3 *,
.acts-public-wrap.acts-v3 *::before,
.acts-public-wrap.acts-v3 *::after {
  box-sizing: border-box;
}

.acts-public-wrap.acts-v3 {
  /* 보조: 다른 엔진용. WKWebView 주력은 파일 상단 html:has(...) 규칙 */
  -webkit-text-size-adjust: none;
  text-size-adjust: none;

  font-family: -apple-system, BlinkMacSystemFont, 'Apple SD Gothic Neo', sans-serif;
  /* font-size 루트 — var(--fs-base) px. html font-size 미참조. */
  font-size: var(--fs-base);
  background: var(--bg);
  color: var(--text);
  -webkit-font-smoothing: antialiased;
  margin: 0;
  padding: 0;
  width: 100%;
  min-width: 0;
  min-height: 100vh;
  min-height: -webkit-fill-available;
  transition: background .25s, color .25s;
}

/* 기본 Remix 아이콘 크기 고정 (px) */
.acts-public-wrap.acts-v3 .jmp-acts-ri {
  font-size: var(--icon-base);
  line-height: 1;
}

/* ② 더블탭 줌 완화 + 약 300ms 클릭 지연 완화 */
.acts-public-wrap.acts-v3 a,
.acts-public-wrap.acts-v3 button,
.acts-public-wrap.acts-v3 input[type="button"],
.acts-public-wrap.acts-v3 input[type="submit"],
.acts-public-wrap.acts-v3 input[type="reset"] {
  touch-action: manipulation;
}

/* ══════════════════════════════════════════════════════════════════
   3. 모바일 @media — 입력 포커스 확대 방지 + text-size-adjust 재확인
   ══════════════════════════════════════════════════════════════════ */
@media (max-width: 768px) {
  .acts-public-wrap.acts-v3 {
    /* 이미 px 변수이므로 재정의 불필요.
     * text-size-adjust 재명시: 테마 @media 블록이 덮을 수 없도록. */
    -webkit-text-size-adjust: none !important;
    text-size-adjust: none !important;
  }

  /* 포커스 시 iOS 자동 확대: text 입력류는 16px 이상 강제
   * (16px 미만이면 Safari 가 포커스 시 뷰포트 확대함) */
  .acts-public-wrap.acts-v3 input:not([type="button"]):not([type="submit"]):not([type="reset"]):not([type="checkbox"]):not([type="radio"]):not([type="hidden"]):not([type="range"]):not([type="image"]),
  .acts-public-wrap.acts-v3 textarea,
  .acts-public-wrap.acts-v3 select {
    font-size: var(--fs-md) !important; /* = 16px */
  }
}

/* ══════════════════════════════════════════════════════════════════
   4. 레이아웃 셸
   ══════════════════════════════════════════════════════════════════ */
.acts-public-wrap.acts-v3 .page {
  display: flex;
  flex-direction: column;
  min-height: 100vh;
  min-height: -webkit-fill-available;
}

/* ══════════════════════════════════════════════════════════════════
   5. Header
   ══════════════════════════════════════════════════════════════════ */
.acts-public-wrap.acts-v3 .header {
  position: sticky;
  top: 0;
  z-index: 10;
  height: var(--header-h);
  background: var(--bg);
  border-bottom: 1px solid var(--line);
  backdrop-filter: blur(20px);
  display: flex;
  align-items: center;
}
.acts-public-wrap.acts-v3 .header-inner {
  width: 100%;
  max-width: 1400px;
  margin: 0 auto;
  padding: 0 24px;
  display: flex;
  align-items: center;
  gap: 10px;
}

/* 검색 */
.acts-public-wrap.acts-v3 .hdr-search-wrap {
  flex: 1;
  display: flex;
  align-items: center;
  gap: 8px;
  background: var(--panel2);
  border: 1px solid var(--line2);
  border-radius: 12px;
  padding: 0 14px;
  height: 38px;
  transition: border-color .15s, box-shadow .15s;
}
.acts-public-wrap.acts-v3 .hdr-search-wrap:focus-within {
  border-color: var(--accent-border);
  box-shadow: 0 0 0 3px var(--accent-soft);
}
.acts-public-wrap.acts-v3 .hdr-search-icon {
  font-size: var(--icon-srch);
  color: var(--text3);
  flex-shrink: 0;
}
.acts-public-wrap.acts-v3 .hdr-search-input {
  flex: 1;
  background: none;
  border: none;
  outline: none;
  font-family: inherit;
  font-size: var(--fs-md);   /* 16px → iOS 포커스 확대 없음 */
  color: var(--text);
}
.acts-public-wrap.acts-v3 .hdr-search-input::placeholder {
  color: var(--text3);
}

/* 모바일 전용: 로고·신청 텍스트 숨김 시 검색 줄 앞뒤 아이콘 */
.acts-public-wrap.acts-v3 .hdr-mobile-brand,
.acts-public-wrap.acts-v3 .hdr-mobile-apply {
  display: none;
  flex-shrink: 0;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 38px;
  border-radius: 10px;
  text-decoration: none;
  box-sizing: border-box;
  transition: background .15s, opacity .15s, color .15s;
}
.acts-public-wrap.acts-v3 .hdr-mobile-brand {
  color: var(--accent);
  border: 1px solid var(--line2);
  background: var(--panel2);
}
.acts-public-wrap.acts-v3 .hdr-mobile-brand .jmp-acts-ri {
  font-size: 22px;
}
.acts-public-wrap.acts-v3 .hdr-mobile-brand:active {
  opacity: 0.88;
}
.acts-public-wrap.acts-v3 .hdr-mobile-apply {
  background: var(--accent);
  color: #fff;
  border: 1px solid transparent;
}
.acts-public-wrap.acts-v3 .hdr-mobile-apply .jmp-acts-ri {
  font-size: 24px;
  font-weight: 600;
}
.acts-public-wrap.acts-v3 .hdr-mobile-apply:active {
  opacity: 0.92;
}

/* 로고 */
.acts-public-wrap.acts-v3 .logo {
  display: flex;
  align-items: center;
  gap: 8px;
  font-family: 'Pretendard', sans-serif;
  font-size: var(--fs-xl);   /* 19px */
  font-weight: 900;
  letter-spacing: -.4px;
  white-space: nowrap;
  color: var(--text);
}
.acts-public-wrap.acts-v3 .logo .jmp-acts-ri {
  font-size: var(--icon-logo);   /* 22px */
  color: var(--accent);
}
.acts-public-wrap.acts-v3 .logo-text b {
  background: var(--accent);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
}
@media (max-width: 767px) {
  .acts-public-wrap.acts-v3 .header .logo { display: none !important; }
  .acts-public-wrap.acts-v3 .hdr-mobile-brand,
  .acts-public-wrap.acts-v3 .hdr-mobile-apply {
    display: inline-flex;
  }
  .acts-public-wrap.acts-v3 .header-inner {
    padding: 0 12px;
    gap: 8px;
  }
  .acts-public-wrap.acts-v3 .hdr-search-wrap {
    min-width: 0;
  }
}
@media (min-width: 768px) {
  .acts-public-wrap.acts-v3 .hdr-mobile-brand,
  .acts-public-wrap.acts-v3 .hdr-mobile-apply {
    display: none !important;
  }
}

/* 헤더 우측 버튼 */
.acts-public-wrap.acts-v3 .header-right {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-left: auto;
}
.acts-public-wrap.acts-v3 .hdr-btn {
  width: 38px;
  height: 38px;
  border-radius: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--text2);
  transition: all .15s;
  border: none;
  background: none;
  cursor: pointer;
}
.acts-public-wrap.acts-v3 .hdr-btn .jmp-acts-ri {
  font-size: var(--icon-hdr);   /* 21px */
}
.acts-public-wrap.acts-v3 .hdr-btn:hover { background: var(--chip-bg); color: var(--text); }

.acts-public-wrap.acts-v3 .hdr-btn-a {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 14px;
  border-radius: 10px;
  font-size: var(--fs-base);   /* 14px */
  font-weight: 600;
  color: var(--text2);
  transition: all .15s;
  text-decoration: none;
}
.acts-public-wrap.acts-v3 .hdr-btn-a:hover { background: var(--chip-bg); color: var(--text); }
.acts-public-wrap.acts-v3 .hdr-btn-a.primary { background: var(--accent); color: #fff; }
.acts-public-wrap.acts-v3 .hdr-btn-a.primary:hover { opacity: .9; }
@media (max-width: 767px) {
  .acts-public-wrap.acts-v3 .header-right .hdr-nav-item { display: none !important; }
}

/* ══════════════════════════════════════════════════════════════════
   6. Main
   ══════════════════════════════════════════════════════════════════ */
.acts-public-wrap.acts-v3 .main {
  flex: 1;
  padding-bottom: calc(var(--tab-h) + var(--tab-safe) + 16px);
  width: 100%;
  max-width: 1400px;
  margin: 0 auto;
}
@media (min-width: 768px) {
  .acts-public-wrap.acts-v3 .main { padding-bottom: 32px; }
}

/* ══════════════════════════════════════════════════════════════════
   7. Banner (Hero)
   ══════════════════════════════════════════════════════════════════ */
/* 히어로: 좌우 풀블리드(패딩 0), 상단만 헤더와 간격 */
.acts-public-wrap.acts-v3 .banner-section { padding: 20px 0 0; }
.acts-public-wrap.acts-v3 .banner-track {
  display: flex;
  gap: 0;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scrollbar-width: none;
  scroll-behavior: smooth;
  touch-action: pan-x;
  /* WebKit Text Inflation: 가로 스크롤 띠 + 슬라이드 내 좁은 영역 탭 시 자동 확대 방지 */
  -webkit-text-size-adjust: none;
}
.acts-public-wrap.acts-v3 .banner-track * {
  -webkit-text-size-adjust: none;
}
.acts-public-wrap.acts-v3 .banner-track::-webkit-scrollbar { display: none; }
/* 한 뷰포트(트랙)당 1슬라이드 — 3장 자동 순환 */
.acts-public-wrap.acts-v3 .banner-slide {
  flex: 0 0 100%;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  scroll-snap-align: start;
  scroll-snap-stop: always;
  border-radius: 0;
  overflow: hidden;
  aspect-ratio: 21/7;
  position: relative;
  background: var(--panel2);
  box-shadow: none;
  cursor: pointer;
  transition: box-shadow .2s;
}
.acts-public-wrap.acts-v3 .banner-slide img { width: 100%; height: 100%; object-fit: cover; }
.acts-public-wrap.acts-v3 .banner-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(to right, rgba(0,0,0,.65) 0%, rgba(0,0,0,.1) 55%, transparent 100%);
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  padding: 20px;
}
.acts-public-wrap.acts-v3 .banner-tag {
  display: inline-flex;
  align-items: center;
  padding: 5px 12px;
  border-radius: 999px;
  background: var(--accent);
  color: #fff;
  font-size: var(--fs-sm);   /* 12px */
  font-weight: 700;
  margin-bottom: 10px;
  align-self: flex-start;
}
.acts-public-wrap.acts-v3 .banner-title {
  font-family: 'Pretendard', sans-serif;
  font-size: var(--fs-lg);   /* 18px */
  font-weight: 800;
  color: #fff;
  line-height: 1.25;
  text-shadow: 0 2px 10px rgba(0,0,0,.4);
}
.acts-public-wrap.acts-v3 .banner-desc {
  font-size: var(--fs-base);   /* 14px */
  color: rgba(255,255,255,.8);
  margin-top: 6px;
}
.acts-public-wrap.acts-v3 .banner-controls {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  margin-top: 12px;
}
.acts-public-wrap.acts-v3 .b-dot {
  width: 6px;
  height: 6px;
  border-radius: 3px;
  background: var(--line2);
  transition: all .3s;
  cursor: pointer;
}
.acts-public-wrap.acts-v3 .b-dot.on { width: 20px; background: var(--accent); }
@media (max-width: 767px) {
  .acts-public-wrap.acts-v3 .banner-slide { aspect-ratio: 21/9.1; }
}

/* ══════════════════════════════════════════════════════════════════
   8. Section
   ══════════════════════════════════════════════════════════════════ */
.acts-public-wrap.acts-v3 .section { margin-bottom: 12px; }
.acts-public-wrap.acts-v3 .sec-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 8px 24px 14px;
}
.acts-public-wrap.acts-v3 .sec-title {
  display: flex;
  align-items: center;
  gap: 7px;
  font-size: var(--fs-md);   /* 16px */
  font-weight: 700;
  color: var(--text);
}
.acts-public-wrap.acts-v3 .sec-title .jmp-acts-ri {
  font-size: var(--icon-sec);   /* 19px */
  color: var(--accent);
}
.acts-public-wrap.acts-v3 .sec-more {
  display: flex;
  align-items: center;
  gap: 2px;
  font-size: var(--fs-base);   /* 14px (→ 13px 아닌 14px: --fs-base) */
  font-weight: 600;
  color: var(--text3);
  padding: 5px 10px;
  border-radius: 8px;
  transition: all .15s;
  background: none;
  border: none;
  cursor: pointer;
  font-family: inherit;
}
.acts-public-wrap.acts-v3 .sec-more .jmp-acts-ri {
  font-size: var(--icon-more);   /* 15px */
}
.acts-public-wrap.acts-v3 .sec-more:hover { background: var(--chip-bg); color: var(--text2); }
.acts-public-wrap.acts-v3 .sec-divider { height: 6px; background: var(--bg2); margin: 4px 0; }

/* ══════════════════════════════════════════════════════════════════
   9. Cards row (Netflix 스타일 가로 스크롤)
   ══════════════════════════════════════════════════════════════════ */
.acts-public-wrap.acts-v3 .cards-row {
  display: flex;
  gap: 12px;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scrollbar-width: thin;
  scrollbar-color: var(--scroll-track) transparent;
  padding: 4px 24px 16px;
  scroll-behavior: smooth;
  /* WebKit Text Inflation: 155px m-card 가 narrow column 으로 분류되는 가로 스크롤 띠 */
  -webkit-text-size-adjust: none;
}
.acts-public-wrap.acts-v3 .cards-row .m-card,
.acts-public-wrap.acts-v3 .cards-row .m-card * {
  -webkit-text-size-adjust: none;
}
@media (max-width: 768px) {
  .acts-public-wrap.acts-v3 .cards-row { padding-left: 5px; }
}

/* 좁은 모바일: TOP5·최근등록 가로 스크롤 행에 카드 폭을 (100% − gap×2)/3 로 고정 → 뷰포트에 정확히 3열 */
@media (max-width: 520px) {
  .acts-public-wrap.acts-v3 .cards-row {
    --acts-mcard-row-gap: 8px;
    gap: var(--acts-mcard-row-gap);
    padding: 4px max(12px, env(safe-area-inset-left, 0px)) 16px max(12px, env(safe-area-inset-right, 0px));
    box-sizing: border-box;
  }
  .acts-public-wrap.acts-v3 .cards-row .m-card {
    flex: 0 0 calc((100% - 2 * var(--acts-mcard-row-gap)) / 3);
    width: calc((100% - 2 * var(--acts-mcard-row-gap)) / 3);
    min-width: 0;
  }
}
.acts-public-wrap.acts-v3 .cards-row::-webkit-scrollbar { height: 4px; }
.acts-public-wrap.acts-v3 .cards-row::-webkit-scrollbar-thumb {
  background: var(--scroll-track);
  border-radius: 2px;
}

/* ── m-card (메인 카드) ── */
.acts-public-wrap.acts-v3 .m-card {
  flex: 0 0 155px;
  scroll-snap-align: start;
  border-radius: 16px;
  overflow: hidden;
  position: relative;
  cursor: pointer;
  aspect-ratio: 2/3;
  background: var(--panel2);
  box-shadow: var(--shadow);
  transition: box-shadow .22s;
  text-decoration: none;
  display: block;
}
.acts-public-wrap.acts-v3 .m-card img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  /* 호버 scale 미사용 — img transform 트랜지션 없음 */
}

.acts-public-wrap.acts-v3 .m-card-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(to top, rgba(0,0,0,.88) 0%, rgba(0,0,0,.25) 50%, transparent 100%);
}

/* 카드 정보 영역 */
.acts-public-wrap.acts-v3 .m-card-info {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  padding: 10px 10px 12px;
  color: #fff;   /* 항상 밝은 색 (다크 그라데이션 위) */
}

/* 순위 배지 */
.acts-public-wrap.acts-v3 .m-card-rank {
  position: absolute;
  top: 9px;
  left: 9px;
  min-width: 24px;
  height: 24px;
  border-radius: 8px;
  background: rgba(0,0,0,.55);
  backdrop-filter: blur(6px);
  color: #fff;
  font-family: 'Pretendard', sans-serif;
  font-size: var(--fs-sm);   /* 12px */
  font-weight: 800;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0 6px;
}
.acts-public-wrap.acts-v3 .m-card:nth-child(1) .m-card-rank { background: rgba(255,180,0,.85); color: #000; }
.acts-public-wrap.acts-v3 .m-card:nth-child(2) .m-card-rank { background: rgba(180,185,195,.8); color: #000; }
.acts-public-wrap.acts-v3 .m-card:nth-child(3) .m-card-rank { background: rgba(180,100,40,.8); color: #fff; }

/* 레벨 pill (데스크톱에서 텍스트 표시) */
.acts-public-wrap.acts-v3 .m-card-lv {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  padding: 3px 8px;
  border-radius: 999px;
  font-size: var(--fs-2xs);   /* 10px */
  font-weight: 700;
  color: #fff;
  margin-bottom: 5px;
}
.acts-public-wrap.acts-v3 .m-card-lv .jmp-acts-ri {
  font-size: var(--icon-2xs);   /* 10px */
}

/* 레벨 배지 아이콘 (모바일: 원형, 데스크톱: 숨김) */
.acts-public-wrap.acts-v3 .m-card-lv-badge,
.acts-public-wrap.acts-v3 .d-card .m-card-lv-badge {
  display: none;   /* 기본 숨김; 모바일에서 활성화 */
}

/* 카드 이름 */
.acts-public-wrap.acts-v3 .m-card-name {
  display: block;
  font-weight: 700;
  color: #fff !important;
  font-size: var(--fs-base);   /* 14px */
  line-height: 1.2;
  text-shadow: 0 1px 6px rgba(0,0,0,.5);
}
.acts-public-wrap.acts-v3 .m-card-spec {
  font-size: var(--fs-sm);   /* 12px */
  color: rgba(255,255,255,.88) !important;
  margin-top: 2px;
}

/* 레벨 색상 */
.acts-public-wrap.acts-v3 .lv1-bg { background: var(--lv1); }
.acts-public-wrap.acts-v3 .lv2-bg { background: var(--lv2); }
.acts-public-wrap.acts-v3 .lv3-bg { background: var(--lv3); }
.acts-public-wrap.acts-v3 .lv4-bg { background: var(--lv4); }
.acts-public-wrap.acts-v3 .lv5-bg { background: var(--lv5); }

/* ── 모바일 카드: 레벨 pill 숨김 → 원형 배지 아이콘 표시 ── */
@media (max-width: 768px) {
  .acts-public-wrap.acts-v3 .m-card .m-card-lv,
  .acts-public-wrap.acts-v3 .d-card .m-card-lv {
    display: none !important;
  }
  .acts-public-wrap.acts-v3 .m-card-lv-badge,
  .acts-public-wrap.acts-v3 .d-card .m-card-lv-badge {
    display: flex !important;
    position: absolute !important;
    top: 8px !important;
    right: 8px !important;
    z-index: 2;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    backdrop-filter: blur(6px);
    color: #fff !important;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
  }
  .acts-public-wrap.acts-v3 .m-card-lv-badge .jmp-acts-ri,
  .acts-public-wrap.acts-v3 .d-card .m-card-lv-badge .jmp-acts-ri {
    font-size: var(--icon-sm) !important;   /* 16px */
    color: #fff !important;
  }
}

/* ══════════════════════════════════════════════════════════════════
   10. Feed placeholder
   ══════════════════════════════════════════════════════════════════ */
.acts-public-wrap.acts-v3 .feed-placeholder {
  padding: 32px 24px;
  text-align: center;
  color: var(--text3);
  font-size: var(--fs-base);   /* 14px */
}
.acts-public-wrap.acts-v3 .feed-placeholder .jmp-acts-ri {
  font-size: var(--icon-dfeed);   /* 40px */
  opacity: .5;
  display: block;
  margin-bottom: 8px;
}

/* ── 액츠 홈: 액츠 소식 피드 ── */
.acts-public-wrap.acts-v3 .acts-home-feed {
  padding: 0 clamp(16px, 3vw, 40px) 8px;
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.acts-public-wrap.acts-v3 .acts-feed-card {
  background: var(--panel);
  border: 1px solid var(--line);
  border-radius: 20px;
  overflow: hidden;
  transition: box-shadow .2s;
}
.acts-public-wrap.acts-v3 .acts-feed-card:hover {
  box-shadow: 0 4px 20px rgba(12, 20, 38, .08);
}
.acts-public-wrap.acts-v3 .acts-feed-card__head {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 14px 16px 10px;
}
.acts-public-wrap.acts-v3 .acts-feed-card__avatar {
  width: 40px;
  height: 40px;
  border-radius: 12px;
  overflow: hidden;
  flex-shrink: 0;
  text-decoration: none;
  display: block;
}
.acts-public-wrap.acts-v3 .acts-feed-card__avatar img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.acts-public-wrap.acts-v3 .acts-feed-card__avatar-ph {
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--panel2);
  color: var(--text3);
  font-size: 20px;
}
.acts-public-wrap.acts-v3 .acts-feed-card__meta { flex: 1; min-width: 0; }
.acts-public-wrap.acts-v3 .acts-feed-card__name-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
}
.acts-public-wrap.acts-v3 .acts-feed-card__name {
  font-weight: 700;
  font-size: .9rem;
  color: var(--text);
  text-decoration: none;
}
.acts-public-wrap.acts-v3 .acts-feed-card__lv {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  padding: 2px 8px;
  border-radius: 999px;
  font-size: .65rem;
  font-weight: 700;
  color: #fff;
}
.acts-public-wrap.acts-v3 .acts-feed-card__lv .jmp-acts-ri,
.acts-public-wrap.acts-v3 .acts-feed-card__lv i {
  font-size: 10px;
  line-height: 1;
}
.acts-public-wrap.acts-v3 .acts-feed-card__sub {
  font-size: .75rem;
  color: var(--text3);
  margin-top: 1px;
}
.acts-public-wrap.acts-v3 .acts-feed-card__img {
  width: 100%;
  aspect-ratio: 16 / 9;
  overflow: hidden;
}
.acts-public-wrap.acts-v3 .acts-feed-card__img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.acts-public-wrap.acts-v3 .acts-feed-card__body {
  padding: 12px 16px 14px;
}
.acts-public-wrap.acts-v3 .acts-feed-card__title {
  font-size: .92rem;
  font-weight: 700;
  color: var(--text);
  margin-bottom: 6px;
  line-height: 1.35;
}
.acts-public-wrap.acts-v3 .acts-feed-card__text {
  font-size: .88rem;
  color: var(--text2);
  line-height: 1.65;
  margin: 0 0 10px;
}
.acts-public-wrap.acts-v3 .acts-feed-card__tags {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-bottom: 10px;
}
.acts-public-wrap.acts-v3 .acts-feed-card__tag {
  font-size: .76rem;
  font-weight: 600;
  color: var(--accent);
  padding: 3px 8px;
  background: var(--accent-soft);
  border-radius: 999px;
}
.acts-public-wrap.acts-v3 .acts-feed-card__actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 4px 10px;
  padding-top: 4px;
  border-top: 1px solid var(--line);
  margin-top: 2px;
}
.acts-public-wrap.acts-v3 .acts-feed-card__act {
  border: 0;
  background: transparent;
  padding: 6px 8px;
  border-radius: 10px;
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: .82rem;
  font-weight: 600;
  color: var(--text3);
  cursor: pointer;
  font-family: inherit;
  text-decoration: none;
  transition: background .15s, color .15s;
}
.acts-public-wrap.acts-v3 a.acts-feed-card__act:hover,
.acts-public-wrap.acts-v3 button.acts-feed-card__act:hover {
  background: var(--chip-bg);
  color: var(--text2);
}
.acts-public-wrap.acts-v3 .acts-home-feed-more-wrap {
  padding: 8px clamp(16px, 3vw, 40px) 4px;
}
.acts-public-wrap.acts-v3 .acts-home-feed-more {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: .86rem;
  font-weight: 700;
  color: var(--text2);
  text-decoration: none;
}
.acts-public-wrap.acts-v3 .acts-home-feed-more:hover {
  color: var(--accent);
}

/* ══════════════════════════════════════════════════════════════════
   11. Filter bar / Chips
   ══════════════════════════════════════════════════════════════════ */
.acts-public-wrap.acts-v3 .filter-bar {
  display: flex;
  gap: 8px;
  align-items: center;
  overflow-x: auto;
  scrollbar-width: none;
  padding: 16px 24px;
}
.acts-public-wrap.acts-v3 .filter-bar::-webkit-scrollbar { display: none; }
.acts-public-wrap.acts-v3 .sub-filter-bar {
  display: flex;
  gap: 8px;
  align-items: center;
  overflow-x: auto;
  scrollbar-width: none;
  padding: 0 24px 14px;
}
.acts-public-wrap.acts-v3 .sub-filter-bar::-webkit-scrollbar { display: none; }

.acts-public-wrap.acts-v3 .chip {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 8px 16px;
  border-radius: 999px;
  background: var(--chip-bg);
  color: var(--text2);
  border: 1px solid transparent;
  font-size: var(--fs-base);   /* 14px (기존 13px → --fs-base 14px) */
  font-weight: 600;
  font-family: inherit;
  transition: all .18s;
  white-space: nowrap;
  cursor: pointer;
}
.acts-public-wrap.acts-v3 .chip .jmp-acts-ri {
  font-size: var(--icon-xs);   /* 15px */
}
.acts-public-wrap.acts-v3 .chip:hover { background: var(--line2); color: var(--text); }
.acts-public-wrap.acts-v3 .chip.on {
  background: var(--chip-on-bg);
  color: var(--chip-on-cl);
  border-color: var(--chip-on-bd);
}
.acts-public-wrap.acts-v3 .chip.lv1.on { background: rgba(52,211,153,.14); color: var(--lv1); border-color: rgba(52,211,153,.35); }
.acts-public-wrap.acts-v3 .chip.lv2.on { background: rgba(79,142,247,.14); color: var(--lv2); border-color: rgba(79,142,247,.35); }
.acts-public-wrap.acts-v3 .chip.lv3.on { background: rgba(157,120,248,.14); color: var(--lv3); border-color: rgba(157,120,248,.35); }
.acts-public-wrap.acts-v3 .chip.lv4.on { background: rgba(251,191,36,.14); color: var(--lv4); border-color: rgba(251,191,36,.35); }
.acts-public-wrap.acts-v3 .chip.lv5.on { background: rgba(248,113,113,.14); color: var(--lv5); border-color: rgba(248,113,113,.35); }

/* ══════════════════════════════════════════════════════════════════
   12. Drawer (전체 액츠 시트)
   ══════════════════════════════════════════════════════════════════ */
.acts-public-wrap.acts-v3 .drawer-backdrop {
  display: none;
  position: fixed;
  inset: 0;
  z-index: 200;
  background: rgba(0,0,0,.55);
  backdrop-filter: blur(4px);
  align-items: flex-end;
  justify-content: center;
}
.acts-public-wrap.acts-v3 .drawer-backdrop.show {
  display: flex;
  animation: actsV3FadeIn .2s ease;
}
@keyframes actsV3FadeIn { from { opacity: 0; } to { opacity: 1; } }

.acts-public-wrap.acts-v3 .drawer-sheet {
  width: 100%;
  max-width: 680px;
  background: var(--panel);
  border-radius: 28px 28px 0 0;
  padding: 12px 20px 32px;
  display: flex;
  flex-direction: column;
  max-height: 90vh;
  animation: actsV3SlideUp .24s cubic-bezier(.4,0,.2,1);
}
@keyframes actsV3SlideUp {
  from { transform: translateY(100%); }
  to   { transform: translateY(0); }
}
.acts-public-wrap.acts-v3 .drawer-handle {
  width: 40px;
  height: 4px;
  border-radius: 2px;
  background: var(--line2);
  margin: 0 auto 16px;
}
.acts-public-wrap.acts-v3 .drawer-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 4px;
}
.acts-public-wrap.acts-v3 .drawer-title {
  display: flex;
  align-items: center;
  gap: 7px;
  font-size: var(--fs-drawer-title);   /* 16px */
  font-weight: 800;
  color: var(--text);
}
.acts-public-wrap.acts-v3 .drawer-title .jmp-acts-ri {
  font-size: var(--icon-md);   /* 20px */
  color: var(--accent);
}
.acts-public-wrap.acts-v3 .drawer-close {
  width: 34px;
  height: 34px;
  border-radius: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--text3);
  transition: all .15s;
  cursor: pointer;
  border: none;
  background: none;
  font-family: inherit;
}
.acts-public-wrap.acts-v3 .drawer-close:hover { background: var(--chip-bg); color: var(--text); }

.acts-public-wrap.acts-v3 .drawer-cards {
  flex: 1;
  overflow-y: auto;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(110px, 1fr));
  gap: 10px;
  padding: 8px 2px 4px;
}

/* ── d-card (드로어 카드) ── */
.acts-public-wrap.acts-v3 .d-card {
  border-radius: 14px;
  overflow: hidden;
  position: relative;
  cursor: pointer;
  aspect-ratio: 2/3;
  background: var(--panel2);
  box-shadow: var(--shadow);
  transition: box-shadow .2s;
  text-decoration: none;
  display: block;
}
.acts-public-wrap.acts-v3 .d-card img { width: 100%; height: 100%; object-fit: cover; }
.acts-public-wrap.acts-v3 .d-card .m-card-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(to top, rgba(0,0,0,.88) 0%, rgba(0,0,0,.2) 50%, transparent 100%);
}
.acts-public-wrap.acts-v3 .d-card .m-card-info {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  padding: 8px 8px 10px;
  color: #fff;
}
.acts-public-wrap.acts-v3 .d-card.filtered-out { display: none; }

.acts-public-wrap.acts-v3 .filter-empty {
  display: none;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 12px;
  padding: 60px 20px;
  color: var(--text3);
}
.acts-public-wrap.acts-v3 .filter-empty.show { display: flex; }
.acts-public-wrap.acts-v3 .filter-empty .jmp-acts-ri {
  font-size: var(--icon-empty);   /* 48px */
  opacity: .35;
}

/* ══════════════════════════════════════════════════════════════════
   13. Bottom tab bar
   ══════════════════════════════════════════════════════════════════ */
.acts-public-wrap.acts-v3 .bottom-tabs,
.acts-public-wrap.acts-v3 .jmp-acts-bottom-nav {
  position: fixed !important;
  bottom: 0 !important;
  left: 0 !important;
  right: 0 !important;
  z-index: 99900 !important;
  height: calc(var(--tab-h) + var(--tab-safe)) !important;
  min-height: var(--tab-h) !important;
  padding: 0 !important;
  padding-bottom: var(--tab-safe) !important;
  padding-left: 0 !important;
  padding-right: 0 !important;
  padding-top: 0 !important;
  margin: 0 !important;
  box-sizing: border-box !important;
  background: var(--tab-bg) !important;
  background-color: var(--tab-bg) !important;
  border: none !important;
  border-top: 1px solid rgba(255, 255, 255, 0.08) !important;
  box-shadow: none !important;
  display: flex !important;
  align-items: center !important;
  justify-content: space-around !important;
  gap: 2px !important;
  flex-direction: row !important;
  font-family: 'Pretendard Variable', Pretendard, -apple-system, BlinkMacSystemFont, system-ui, sans-serif !important;
  transition: transform .28s cubic-bezier(.4,0,.2,1);
  -webkit-tap-highlight-color: transparent;
}
.acts-public-wrap.acts-v3 .bottom-tabs.hide-nav,
.acts-public-wrap.acts-v3 .jmp-acts-bottom-nav.hide-nav {
  transform: translateY(100%);
}
@media (min-width: 768px) {
  .acts-public-wrap.acts-v3 .bottom-tabs,
  .acts-public-wrap.acts-v3 .jmp-acts-bottom-nav { display: none !important; }
}
@media (max-width: 767px) {
  .acts-public-wrap.acts-v3 .bottom-tabs,
  .acts-public-wrap.acts-v3 .jmp-acts-bottom-nav { isolation: isolate; }
}

.acts-public-wrap.acts-v3 .bottom-tabs .tab-btn,
.acts-public-wrap.acts-v3 .jmp-acts-bottom-nav .tab-btn {
  flex: 1 1 0 !important;
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 4px !important;
  color: #ffffff !important;
  padding: 8px 4px 10px !important;
  margin: 0 !important;
  border: none !important;
  background: none !important;
  background-color: transparent !important;
  cursor: pointer !important;
  font-family: inherit !important;
  line-height: 1.2 !important;
  text-decoration: none !important;
  min-width: 0 !important;
  appearance: none !important;
  transition: color .15s ease;
  -webkit-tap-highlight-color: transparent;
}
.acts-public-wrap.acts-v3 .bottom-tabs .tab-btn .jmp-acts-ri,
.acts-public-wrap.acts-v3 .jmp-acts-bottom-nav .tab-btn .jmp-acts-ri {
  font-size: var(--icon-tab) !important;   /* 23px */
}
.acts-public-wrap.acts-v3 .bottom-tabs .tab-btn .t-lbl,
.acts-public-wrap.acts-v3 .jmp-acts-bottom-nav .tab-btn .t-lbl {
  font-size: var(--fs-xs) !important;   /* 11px — mainpage-mini .mpm-mbn-label */
  font-weight: 500 !important;
  letter-spacing: -0.02em !important;
  max-width: 100% !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  text-align: center !important;
}

/* 테마 .entry-content a 등이 a.tab-btn-link 내부 span·아이콘에 링크색을 강제할 때 대비 */
.acts-public-wrap.acts-v3 .bottom-tabs .tab-btn .t-lbl,
.acts-public-wrap.acts-v3 .jmp-acts-bottom-nav .tab-btn .t-lbl,
.acts-public-wrap.acts-v3 .bottom-tabs .tab-btn .jmp-acts-ri,
.acts-public-wrap.acts-v3 .jmp-acts-bottom-nav .tab-btn .jmp-acts-ri {
  color: #ffffff !important;
  -webkit-text-fill-color: #ffffff !important;
}
.acts-public-wrap.acts-v3 .bottom-tabs .tab-btn.active,
.acts-public-wrap.acts-v3 .jmp-acts-bottom-nav .tab-btn.active {
  color: #518cff !important;
}
.acts-public-wrap.acts-v3 .bottom-tabs .tab-btn.active .t-lbl,
.acts-public-wrap.acts-v3 .jmp-acts-bottom-nav .tab-btn.active .t-lbl,
.acts-public-wrap.acts-v3 .bottom-tabs .tab-btn.active .jmp-acts-ri,
.acts-public-wrap.acts-v3 .jmp-acts-bottom-nav .tab-btn.active .jmp-acts-ri {
  color: #518cff !important;
  -webkit-text-fill-color: #518cff !important;
}
.acts-public-wrap.acts-v3 .bottom-tabs .tab-btn.tab-btn-link,
.acts-public-wrap.acts-v3 .jmp-acts-bottom-nav .tab-btn.tab-btn-link {
  text-decoration: none !important;
}
@media (hover: hover) {
  .acts-public-wrap.acts-v3 .bottom-tabs .tab-btn:hover,
  .acts-public-wrap.acts-v3 .jmp-acts-bottom-nav .tab-btn:hover {
    color: #518cff !important;
  }
  .acts-public-wrap.acts-v3 .bottom-tabs .tab-btn:hover .t-lbl,
  .acts-public-wrap.acts-v3 .jmp-acts-bottom-nav .tab-btn:hover .t-lbl,
  .acts-public-wrap.acts-v3 .bottom-tabs .tab-btn:hover .jmp-acts-ri,
  .acts-public-wrap.acts-v3 .jmp-acts-bottom-nav .tab-btn:hover .jmp-acts-ri {
    color: #518cff !important;
    -webkit-text-fill-color: #518cff !important;
  }
  .acts-public-wrap.acts-v3 .bottom-tabs .tab-btn.active:hover,
  .acts-public-wrap.acts-v3 .jmp-acts-bottom-nav .tab-btn.active:hover {
    color: #518cff !important;
  }
  .acts-public-wrap.acts-v3 .bottom-tabs .tab-btn.active:hover .t-lbl,
  .acts-public-wrap.acts-v3 .jmp-acts-bottom-nav .tab-btn.active:hover .t-lbl,
  .acts-public-wrap.acts-v3 .bottom-tabs .tab-btn.active:hover .jmp-acts-ri,
  .acts-public-wrap.acts-v3 .jmp-acts-bottom-nav .tab-btn.active:hover .jmp-acts-ri {
    color: #518cff !important;
    -webkit-text-fill-color: #518cff !important;
  }
}
.acts-public-wrap.acts-v3 .bottom-tabs .tab-btn.tab-btn-link:hover,
.acts-public-wrap.acts-v3 .jmp-acts-bottom-nav .tab-btn.tab-btn-link:hover {
  color: #518cff !important;
}
.acts-public-wrap.acts-v3 .bottom-tabs .tab-btn.tab-btn-link:hover .t-lbl,
.acts-public-wrap.acts-v3 .jmp-acts-bottom-nav .tab-btn.tab-btn-link:hover .t-lbl,
.acts-public-wrap.acts-v3 .bottom-tabs .tab-btn.tab-btn-link:hover .jmp-acts-ri,
.acts-public-wrap.acts-v3 .jmp-acts-bottom-nav .tab-btn.tab-btn-link:hover .jmp-acts-ri {
  color: #518cff !important;
  -webkit-text-fill-color: #518cff !important;
}
.acts-public-wrap.acts-v3 .bottom-tabs .tab-btn:active,
.acts-public-wrap.acts-v3 .jmp-acts-bottom-nav .tab-btn:active {
  color: #3d7ae8 !important;
}
.acts-public-wrap.acts-v3 .bottom-tabs .tab-btn:active .t-lbl,
.acts-public-wrap.acts-v3 .jmp-acts-bottom-nav .tab-btn:active .t-lbl,
.acts-public-wrap.acts-v3 .bottom-tabs .tab-btn:active .jmp-acts-ri,
.acts-public-wrap.acts-v3 .jmp-acts-bottom-nav .tab-btn:active .jmp-acts-ri {
  color: #3d7ae8 !important;
  -webkit-text-fill-color: #3d7ae8 !important;
}

/* ══════════════════════════════════════════════════════════════════
   14. Scroll-to-top 버튼
   ══════════════════════════════════════════════════════════════════ */
.acts-public-wrap.acts-v3 .scroll-top-btn,
.acts-public-wrap.acts-v3 .jmp-acts-scroll-top {
  position: fixed !important;
  bottom: calc(var(--tab-h) + var(--tab-safe) + 14px) !important;
  right: 16px !important;
  z-index: 99950 !important;
  width: 42px !important;
  height: 42px !important;
  border-radius: 50% !important;
  background: var(--accent) !important;
  background-color: var(--accent) !important;
  color: #fff !important;
  border: none !important;
  margin: 0 !important;
  padding: 0 !important;
  cursor: pointer !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  box-shadow: 0 4px 16px rgba(0,0,0,.22) !important;
  opacity: 0;
  transform: translateY(10px) scale(.85);
  pointer-events: none;
  transition: opacity .24s, transform .24s;
  appearance: none !important;
}
.acts-public-wrap.acts-v3 .scroll-top-btn.show,
.acts-public-wrap.acts-v3 .jmp-acts-scroll-top.show {
  opacity: 1;
  transform: translateY(0) scale(1);
  pointer-events: auto;
}
.acts-public-wrap.acts-v3 .scroll-top-btn .jmp-acts-ri,
.acts-public-wrap.acts-v3 .jmp-acts-scroll-top .jmp-acts-ri {
  font-size: var(--icon-md) !important;   /* 20px */
  color: #fff !important;
}
@media (min-width: 768px) {
  .acts-public-wrap.acts-v3 .scroll-top-btn,
  .acts-public-wrap.acts-v3 .jmp-acts-scroll-top { bottom: 24px !important; }
}

/* ══════════════════════════════════════════════════════════════════
   16. 터치 보조: 카드 transform 무효 + :active 시 살짝 눌림 (html.has-touch 제거)
   ══════════════════════════════════════════════════════════════════ */
@media (hover: none) {
  .acts-public-wrap.acts-v3 .banner-slide,
  .acts-public-wrap.acts-v3 .banner-slide:hover,
  .acts-public-wrap.acts-v3 .banner-slide:active,
  .acts-public-wrap.acts-v3 .m-card,
  .acts-public-wrap.acts-v3 .m-card:hover,
  .acts-public-wrap.acts-v3 .m-card:active,
  .acts-public-wrap.acts-v3 .m-card *,
  .acts-public-wrap.acts-v3 .m-card:hover *,
  .acts-public-wrap.acts-v3 .m-card:active *,
  .acts-public-wrap.acts-v3 .d-card,
  .acts-public-wrap.acts-v3 .d-card:hover,
  .acts-public-wrap.acts-v3 .d-card:active,
  .acts-public-wrap.acts-v3 .d-card *,
  .acts-public-wrap.acts-v3 .d-card:hover *,
  .acts-public-wrap.acts-v3 .d-card:active * {
    transform: none !important;
  }
  .acts-public-wrap.acts-v3 .banner-slide:active,
  .acts-public-wrap.acts-v3 .m-card:active,
  .acts-public-wrap.acts-v3 .d-card:active {
    opacity: 0.88;
    transition: opacity 0.12s ease;
  }
}

/* ══════════════════════════════════════════════════════════════════
   17. 데스크톱 호버: transform 미사용 — box-shadow·border 만 (tap=:hover 에도 시각적 “확대” 없음)
   ══════════════════════════════════════════════════════════════════ */
@media (hover: hover) and (pointer: fine) {
  .acts-public-wrap.acts-v3 .banner-slide:hover {
    transform: none;
    box-shadow: 0 12px 36px rgba(12,20,38,.14);
  }
  .acts-public-wrap.acts-v3 .m-card:hover {
    transform: none;
    box-shadow: 0 20px 48px rgba(0,0,0,.35);
    z-index: 2;
  }
  .acts-public-wrap.acts-v3 .d-card:hover {
    transform: none;
    box-shadow: 0 16px 40px rgba(0,0,0,.4);
  }
}

/* ══════════════════════════════════════════════════════════════════
   18. 좁은 뷰포트: 카드 서브트리 transform 상시 무효 — 테마·타 플러그인·가짜 :hover 대비
   (bottom-tabs·drawer·scroll-top 등 카드 밖 요소는 제외)
   ══════════════════════════════════════════════════════════════════ */
@media (max-width: 1280px) {
  .acts-public-wrap.acts-v3 .banner-slide,
  .acts-public-wrap.acts-v3 .banner-slide:hover,
  .acts-public-wrap.acts-v3 .banner-slide:active,
  .acts-public-wrap.acts-v3 .m-card,
  .acts-public-wrap.acts-v3 .m-card:hover,
  .acts-public-wrap.acts-v3 .m-card:active,
  .acts-public-wrap.acts-v3 .m-card *,
  .acts-public-wrap.acts-v3 .m-card:hover *,
  .acts-public-wrap.acts-v3 .m-card:active *,
  .acts-public-wrap.acts-v3 .d-card,
  .acts-public-wrap.acts-v3 .d-card:hover,
  .acts-public-wrap.acts-v3 .d-card:active,
  .acts-public-wrap.acts-v3 .d-card *,
  .acts-public-wrap.acts-v3 .d-card:hover *,
  .acts-public-wrap.acts-v3 .d-card:active * {
    transform: none !important;
  }
}

/* ══════════════════════════════════════════════════════════════════
   19. 텍스트·아이콘만 커짐 (이미지·박스 크기는 유지)
   ── text-size-adjust 를 v3 서브트리 전체에 재명시 + 카드 링크 타이포 고정
   ══════════════════════════════════════════════════════════════════ */
@media (max-width: 1280px) {
  .acts-public-wrap.acts-v3,
  .acts-public-wrap.acts-v3 *:not(.jmp-acts-ri) {
    -webkit-text-size-adjust: none !important;
    text-size-adjust: none !important;
  }

  .acts-public-wrap.acts-v3 .m-card,
  .acts-public-wrap.acts-v3 .m-card:hover,
  .acts-public-wrap.acts-v3 .m-card:active,
  .acts-public-wrap.acts-v3 .d-card,
  .acts-public-wrap.acts-v3 .d-card:hover,
  .acts-public-wrap.acts-v3 .d-card:active {
    font-size: var(--fs-base) !important;
  }
  .acts-public-wrap.acts-v3 .m-card .m-card-rank,
  .acts-public-wrap.acts-v3 .m-card:hover .m-card-rank,
  .acts-public-wrap.acts-v3 .m-card:active .m-card-rank,
  .acts-public-wrap.acts-v3 .d-card .m-card-rank,
  .acts-public-wrap.acts-v3 .d-card:hover .m-card-rank,
  .acts-public-wrap.acts-v3 .d-card:active .m-card-rank {
    font-size: var(--fs-sm) !important;
  }
  .acts-public-wrap.acts-v3 .m-card .m-card-lv,
  .acts-public-wrap.acts-v3 .m-card:hover .m-card-lv,
  .acts-public-wrap.acts-v3 .m-card:active .m-card-lv,
  .acts-public-wrap.acts-v3 .d-card .m-card-lv,
  .acts-public-wrap.acts-v3 .d-card:hover .m-card-lv,
  .acts-public-wrap.acts-v3 .d-card:active .m-card-lv {
    font-size: var(--fs-2xs) !important;
  }
  .acts-public-wrap.acts-v3 .m-card .m-card-lv .jmp-acts-ri,
  .acts-public-wrap.acts-v3 .m-card:hover .m-card-lv .jmp-acts-ri,
  .acts-public-wrap.acts-v3 .m-card:active .m-card-lv .jmp-acts-ri,
  .acts-public-wrap.acts-v3 .d-card .m-card-lv .jmp-acts-ri,
  .acts-public-wrap.acts-v3 .d-card:hover .m-card-lv .jmp-acts-ri,
  .acts-public-wrap.acts-v3 .d-card:active .m-card-lv .jmp-acts-ri {
    font-size: var(--icon-2xs) !important;
  }
  .acts-public-wrap.acts-v3 .m-card .m-card-name,
  .acts-public-wrap.acts-v3 .m-card:hover .m-card-name,
  .acts-public-wrap.acts-v3 .m-card:active .m-card-name,
  .acts-public-wrap.acts-v3 .d-card .m-card-name,
  .acts-public-wrap.acts-v3 .d-card:hover .m-card-name,
  .acts-public-wrap.acts-v3 .d-card:active .m-card-name {
    font-size: var(--fs-base) !important;
  }
  .acts-public-wrap.acts-v3 .m-card .m-card-spec,
  .acts-public-wrap.acts-v3 .m-card:hover .m-card-spec,
  .acts-public-wrap.acts-v3 .m-card:active .m-card-spec,
  .acts-public-wrap.acts-v3 .d-card .m-card-spec,
  .acts-public-wrap.acts-v3 .d-card:hover .m-card-spec,
  .acts-public-wrap.acts-v3 .d-card:active .m-card-spec {
    font-size: var(--fs-sm) !important;
  }
  .acts-public-wrap.acts-v3 .m-card .m-card-lv-badge .jmp-acts-ri,
  .acts-public-wrap.acts-v3 .m-card:hover .m-card-lv-badge .jmp-acts-ri,
  .acts-public-wrap.acts-v3 .m-card:active .m-card-lv-badge .jmp-acts-ri,
  .acts-public-wrap.acts-v3 .d-card .m-card-lv-badge .jmp-acts-ri,
  .acts-public-wrap.acts-v3 .d-card:hover .m-card-lv-badge .jmp-acts-ri,
  .acts-public-wrap.acts-v3 .d-card:active .m-card-lv-badge .jmp-acts-ri {
    font-size: var(--icon-sm) !important;
  }
}
