/* ============================================================
   마이애미짐 회원앱 — 디자인 정합성 패치 (제안)
   style.css / design-tokens.css 뒤에 로드하는 오버라이드 레이어.

   ※ 임시 파일이다. 검수가 끝나면 내용을 design-tokens.css와 style.css로
     흡수시키고 이 파일은 지운다(수정지시서 v3 2번). 덧칠을 영구히 남기지 않는다.

   확정 규칙
     01 GOLD    3-stop 그라데이션으로 통일
                #A07840 → #E9B949 → #C9A040
                단색이 필요한 자리(텍스트·1px 테두리·점·아이콘)는 정점 #E9B949
     02 RADIUS  주요 액션 버튼(12px)과 원형(레벨 배지·아바타·라이브 점)만 유지, 그 외 0
     03 GAUGE   모든 게이지 3-stop(90deg), XP 게이지는 전체 골드 유지
   ============================================================ */

/* 토큰(:root) 정의는 tokens-app.css로 옮겼다 — 2026-09-29.
   이 파일에는 선택자 규칙만 남는다. 토큰 파일 정리가 끝나면 이 파일도 style.css로
   흡수하고 삭제한다. */

/* ══════════════════════════════════════════════════
   02 · RADIUS — 기본을 0으로 내리고, 예외만 되돌린다
   ══════════════════════════════════════════════════ */
body.app-shell .ranking-card,
body.app-shell .modal-box,
body.app-shell .register-input,
body.app-shell .seg,
body.app-shell .seg-btn,
body.app-shell .chip,
body.app-shell .key,
body.app-shell .phone-digit,
body.app-shell .calendar-day,
body.app-shell .weekly-dot,
body.app-shell .weekly-ladder-step,
body.app-shell .coupon-row,
body.app-shell .notif-row,
body.app-shell .notif-icon,
body.app-shell .challenge-row,
body.app-shell .challenger-row,
body.app-shell .branch-challenge-row,
body.app-shell .branch-challenge-track,
body.app-shell .branch-challenge-fill,
body.app-shell .cheer-btn,
body.app-shell .cheer-feed-row,
body.app-shell .community-board-preview,
body.app-shell .community-board-preview-bubble,
body.app-shell .referral-benefit-list,
body.app-shell .referral-slot,
body.app-shell .my-settings-item-icon,
body.app-shell .coupon-entry-icon,
body.app-shell .status-chip,
body.app-shell .routine-ex,
body.app-shell .routine-progress-bar,
body.app-shell .routine-progress-fill,
body.app-shell .stat-mini-track,
body.app-shell .stat-mini-fill,
body.app-shell .quest-progress-track,
body.app-shell .quest-progress-fill,
body.app-shell .running-history-item,
body.app-shell .running-history-expand,
body.app-shell .running-history-gauge .bar,
body.app-shell .running-history-gauge .fill,
body.app-shell .camera-viewport,
body.app-shell .share-card-preview,
body.app-shell .congestion-pill,
body.app-shell .congestion-hours i,
body.app-shell .seg-badge,
body.app-shell .badge-ready,
body.app-shell .coupon-entry-count,
body.app-shell .my-settings-item-count,
body.app-shell .weekly-streak-badge,
body.app-shell .confirm-btn.no,
body.app-shell .confirm-btn.yes:not(.gold):not(.gold-premium):not(.gold-outline),
body.app-shell .tab-indicator{
  border-radius: 0;
}

/* 예외 ① 주요 액션 버튼은 12px 유지 */
body.app-shell .confirm-btn.yes.gold,
body.app-shell .confirm-btn.yes.gold-premium,
body.app-shell .confirm-btn.yes.gold-outline{
  border-radius: 12px;
}
/* 예외 ② 원형 — 레벨 배지 · 프로필 아바타 · 라이브 점 */
body.app-shell .level-badge,
body.app-shell .level-badge-frame,
body.app-shell .level-progress-ring,
body.app-shell .level-badge-aura,
body.app-shell .avatar-preview,
body.app-shell .profile-avatar,
body.app-shell .live-dot,
body.app-shell .running-live-dot,
body.app-shell .calendar-day-dot,
body.app-shell .legend-dot,
body.app-shell .onboarding-dots span{
  border-radius: 50%;
}

/* ══════════════════════════════════════════════════
   01 · GOLD — 버튼 · 배지 · 강조
   ══════════════════════════════════════════════════ */
body.app-shell .confirm-btn.yes.gold{
  background: var(--gold-grad);
  border-color: transparent;
  color: var(--gold-ink);
  box-shadow: none;
}
/* 입체 금속(.gold-premium)을 주요 액션과 같은 처리로 통일 */
body.app-shell .confirm-btn.yes.gold-premium,
body.app-shell .confirm-btn.yes.gold-premium:active{
  background: var(--gold-grad);
  border-color: transparent;
  color: var(--gold-ink);
  box-shadow: none;
  text-shadow: none;
}
/* 보조 액션은 테두리만 */
body.app-shell .confirm-btn.yes.gold-outline,
body.app-shell .confirm-btn.yes.gold-outline:active{
  background: transparent;
  color: #E9B949;
  border: 1px solid #E9B949;
  box-shadow: none;
}
body.app-shell .confirm-btn.yes:not(.gold):not(.gold-premium):not(.gold-outline){
  background: transparent;
  border: 1px solid #26262A;
  color: #FFFFFF;
  box-shadow: none;
}
body.app-shell .confirm-btn.no{
  background: transparent;
  border: 1px solid #26262A;
  color: #9A9AA0;
  box-shadow: none;
}
/* 꺼진 금색은 고장처럼 보인다 — 비활성은 테두리형으로 */
body.app-shell .confirm-btn:disabled{
  opacity: 1;
  background: transparent;
  border: 1px solid #26262A;
  color: #5A5A62;
  box-shadow: none;
}

/* 레벨 배지 — 원형은 유지하고 입체 효과만 제거 */
body.app-shell .level-badge{
  background: var(--gold-grad);
  box-shadow: none;
  color: var(--gold-ink);
  text-shadow: none;
}
body.app-shell .level-badge::after{ display: none; }   /* 광택 스윕 */
body.app-shell .level-badge-aura{ display: none; }     /* 외곽 발광 */

/* ══════════════════════════════════════════════════
   03 · GAUGE
   ══════════════════════════════════════════════════ */
body.app-shell .progress-track{
  height: 6px;
  border-radius: 0;
  background: #1E1E22;
  border: 0;
  box-shadow: none;
}
body.app-shell .progress-track::before{ display: none; }
body.app-shell .progress-fill{
  background: var(--gold-grad-h);
  border-radius: 0;
  box-shadow: none;
}
body.app-shell .progress-fill::after{ display: none; }  /* 끝단 흰 캡 */

body.app-shell .running-history-gauge .bar,
body.app-shell .branch-challenge-track,
body.app-shell .quest-progress-track,
body.app-shell .stat-mini-track,
body.app-shell .routine-progress-bar{
  background: #1E1E22;
  box-shadow: none;
  border: 0;
}
body.app-shell .running-history-gauge .fill,
body.app-shell .branch-challenge-fill,
body.app-shell .quest-progress-fill,
body.app-shell .stat-mini-fill,
body.app-shell .routine-progress-fill{
  background: var(--gold-grad-h);
  box-shadow: none;
}
/* 달성분은 흰색 — "골드는 아직 안 한 것, 흰색은 이미 한 것" */
body.app-shell .running-history-gauge.done .fill,
body.app-shell .branch-challenge-row.done .branch-challenge-fill,
body.app-shell .challenger-row.goal-reached .challenger-fill{
  background: #FFFFFF;
}
body.app-shell .running-history-gauge.done,
body.app-shell .branch-challenge-row.done,
body.app-shell .challenger-row.goal-reached{
  box-shadow: none;
}

/* ══════════════════════════════════════════════════
   그림자 · 발광 일괄 제거
   ══════════════════════════════════════════════════ */
body.app-shell .ranking-card,
body.app-shell .dash-card,
body.app-shell .modal-box,
body.app-shell .coupon-row,
body.app-shell .key,
body.app-shell .phone-digit.filled,
body.app-shell .brand-logo,
body.app-shell .profile-avatar,
body.app-shell .avatar-preview,
body.app-shell .tab-indicator,
body.app-shell .badge-ready{
  box-shadow: none;
}
body.app-shell .ranking-card{
  background: #141416;
  border: 1px solid #1E1E22;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}
body.app-shell .modal-box{
  background: #141416;
  border: 1px solid #1E1E22;
}
body.app-shell .dash-card{
  background: #141416;
  border: 1px solid #1E1E22;
}

/* ══════════════════════════════════════════════════
   탭바 — 발광 알약을 상단 2px 흰 선으로
   ══════════════════════════════════════════════════ */
body.app-shell .app-tabbar{
  background: #0A0A0C;
  border-top: 1px solid #1E1E22;
}
body.app-shell .tab-indicator{
  top: 0;
  height: 2px;
  width: 26px;
  background: #FFFFFF;
  box-shadow: none;
}
body.app-shell .app-tab{ color: #5A5A62; }
body.app-shell .app-tab.active{ color: #FFFFFF; }

/* ══════════════════════════════════════════════════
   세그먼트 · 칩 — 선택 표시에는 금색을 쓰지 않는다
   (금색을 쓰면 화면의 대표 액션과 경쟁한다)
   ══════════════════════════════════════════════════ */
body.app-shell .seg{
  gap: 0;
  border-bottom: 1px solid #1E1E22;
  background: transparent;
  padding: 0;
}
body.app-shell .seg-btn{
  background: transparent;
  border: 0;
  border-bottom: 2px solid transparent;
  color: #9A9AA0;
  box-shadow: none;
}
body.app-shell .seg-btn.on{
  background: transparent;
  color: #FFFFFF;
  border-bottom-color: #FFFFFF;
}
body.app-shell .chip{
  background: transparent;
  border: 1px solid #26262A;
  color: #9A9AA0;
  box-shadow: none;
}
body.app-shell .chip.sel{
  background: #FFFFFF;
  border-color: #FFFFFF;
  color: #000000;
  font-weight: 400;   /* 고르기 전과 같은 굵기 — 굵기가 바뀌면 글자 폭이 흔들린다. 선택은 흰 판이 표시 */
}

/* ══════════════════════════════════════════════════
   입력 · 리스트 · 아바타
   ══════════════════════════════════════════════════ */
body.app-shell .register-input{
  border: 1px solid #26262A;
  background: transparent;
}
body.app-shell .avatar-preview{
  border: 1px solid #26262A;          /* 2px 점선 → 1px 실선 */
}
/* 설정 줄 아이콘 색·구역 이름(알림·이용·계정·약관)은 style.css 원래 규칙에서 정한다(2026-10-18).
   여기서 #5A5A62(대비 2.5~2.9)와 한글 자간 .04em으로 덮고 있었다 */

/* ══════════════════════════════════════════════════
   달력 — 팔레트 밖 색(초록 #4ade80 · 하늘 #7dd3fc) 정리
   출석한 날은 흰 칸 + 검정 숫자로 ("이미 한 것은 흰색")
   ══════════════════════════════════════════════════ */
body.app-shell .calendar-day.attended{
  background: #FFFFFF;
  color: #000000;
  border-color: #FFFFFF;
  font-weight: 700;
}
body.app-shell .calendar-day-dot.dot-checkin  { background: #5A5A62; }
/* 러닝보너스는 골드 점 → 흰 테두리 빈 점(2026-10-16 사장님 승인, 골드는 게이지·1위·주요 버튼·축하에만).
   3px 점은 테두리가 안 보여서 이 점만 5px로 키운다. 체크인=회색 점, 미션=흰 점과 모양으로 갈린다 */
body.app-shell .calendar-day-dot.dot-running  { width: 5px; height: 5px; background: transparent; box-shadow: inset 0 0 0 1px var(--text); }
body.app-shell .calendar-day-dot.dot-challenge{ background: #FFFFFF; }
body.app-shell .calendar-day.attended .calendar-day-dot.dot-running  { background: transparent; box-shadow: inset 0 0 0 1px var(--bg); }
body.app-shell .calendar-day.attended .calendar-day-dot.dot-challenge{ background: #5A5A62; }
body.app-shell .legend-dot.dot-checkin  { background: #5A5A62; }
body.app-shell .legend-dot.dot-running  { background: transparent; box-shadow: inset 0 0 0 1.5px var(--text); }
body.app-shell .legend-dot.dot-challenge{ background: #FFFFFF; }

body.app-shell .weekly-dot.filled{
  background: #FFFFFF;
  color: #000000;
  border-color: #FFFFFF;
}

/* ══════════════════════════════════════════════════
   정렬 — 중앙 정렬은 전체 화면 모달 · 빈 상태 · 3단 통계에만
   ══════════════════════════════════════════════════ */
body.app-shell .weekly-bonus-display,
body.app-shell .weekly-bonus-sub,
body.app-shell .branch-challenge-sub,
body.app-shell .running-timer-huge,
body.app-shell .running-active-hint,
body.app-shell .running-goal-row,
body.app-shell .dash-greeting{
  text-align: left;
}
/* 데이터 숫자는 순백 — 이미 해낸 값 */
body.app-shell .stat-num,
body.app-shell .running-history-gauge.done .pct{
  color: #FFFFFF;
}

/* 라이브 점 — 분홍 제거 */
body.app-shell .live-dot,
body.app-shell .running-live-dot{
  background: #FFFFFF;
}

/* ── 누락 보정 : ID 선택자(#tabHome)로 잠긴 규칙들 ────────── */
body.app-shell .streak-banner,
body.app-shell .dash-message,
body.app-shell .dash-prestige-note,
body.app-shell .coupon-entry-btn,
body.app-shell .weekly-hint,
body.app-shell .status-chip-picker .status-chip{
  border-radius: 0;
}
/* 홈 레벨 원 — 금색 원판은 '넓은 면'에 골드를 쓴 것이라 규칙 위반(2026-10-16 사장님 승인).
   안은 어두운 판 + 흰 숫자, 금색은 둘레 진행 링(#levelProgressRing, 게이지)에만 남긴다 */
#tabHome .level-badge{
  background: var(--bg-panel);
  border: 1px solid var(--line-2);
  box-shadow: none;
  color: var(--text);
  text-shadow: none;
}
#tabHome .level-badge::after{ display: none; }
#tabHome .level-badge-frame::before{ display: none; }   /* 장식용 점선 링 */
#tabHome .progress-track{
  height: 6px; border-radius: 0; background: #1E1E22; border: 0; box-shadow: none;
}
#tabHome .progress-fill{
  background: var(--gold-grad-h); border-radius: 0; box-shadow: none;
}
#tabHome .progress-fill::after{ display: none; }
/* 탭 인디케이터는 원래 left 계산이 폭 40px 기준이라 폭을 유지한다 */
body.app-shell .tab-indicator{ width: 40px; }
body.app-shell .attendance-calendar-tray,
body.app-shell .weekly-bonus-display,
body.app-shell .weekly-dots,
body.app-shell .cheer-remaining,
body.app-shell .congestion-badge-row,
body.app-shell .congestion-hours,
body.app-shell .profile-header,
body.app-shell .nickname-form,
body.app-shell .running-history-right,
body.app-shell .running-history-xp,
body.app-shell .challenge-modal-box,
body.app-shell .onboarding-slide{
  border-radius: 0;
}

/* 배경을 러닝보드와 같은 값으로 — style.css의 body.app-shell이 #000000을 직접 쓰고 있음 */
body.app-shell{ background: #0A0A0C; }

/* ══════════════════════════════════════════════════
   골드 규칙 정정 — design-tokens.css §2 "GOLD 성취 전용"으로 되돌림

     골드   성취의 결과 — 게이지 채운 부분 · 1위 · 목표 달성 · 획득한 보상
            + 화면당 대표 액션 1개(브랜드 강조로서의 예외)
     흰색   사실 · 데이터 — 숫자 · 출석한 날 · 완료 체크 · 안내 수치
     회색   아직 — 미달 · 미획득 · 비활성

   기존 코드는 "골드는 아직 안 한 것에"(회원앱 개선 스펙 1-1)를 따르고 있어
   토큰 파일 정의와 반대였다. 아래가 그 반전이다.
   ══════════════════════════════════════════════════ */

/* 도전과제 보상 — 받은 것이 골드, 아직인 것이 회색 */
body.app-shell .qrow-xp{ color:#5A5A62; }
body.app-shell .qrow.done .qrow-xp{ color:#E9B949; }
body.app-shell .qrow.done .qrow-label{ color:#FFFFFF; }
body.app-shell .qrow.done .qrow-icon{ opacity:1; }

/* 주 3회 보너스 사다리 — 이미 받은 단계가 골드 */
body.app-shell .ladder-step .ladder-xp{ color:#5A5A62; }
body.app-shell .ladder-step.done{ background:transparent; border-color:#26262A; box-shadow:none; }
body.app-shell .ladder-step.done .ladder-xp{ color:#E9B949; }
/* "지금 출석하면 받는 경험치"는 미획득이 아니라 안내 수치 — 사실이므로 흰색, 강조는 크기가 담당 */
body.app-shell .weekly-bonus-num,
body.app-shell .weekly-bonus-unit{ color:#FFFFFF; }

/* 러닝 기록 — 목표 달성이 골드, 미달이 회색 (지금은 정반대로 미달이 빛난다) */
body.app-shell .running-history-gauge .bar{ background:#1E1E22; }
body.app-shell .running-history-gauge .fill,
body.app-shell .running-history-gauge.done .fill{ background:var(--gold-grad-h); }
/* "달성"·"+XP" 글자는 흰색 — 일반 수치·라벨에 골드를 쓰지 않는다(2026-10-16 사장님 승인). 막대(게이지)만 골드 */
body.app-shell .running-history-gauge.done .pct{ color:var(--text); font-weight:700; }
body.app-shell .running-history-xp{ color:var(--text); }   /* 이미 지급된 보너스 */
/* 홈 아래 메뉴(운동·러닝 기록, 쿠폰함, 랭킹, 인증샷)의 컬러 이모지 — 빨간 티켓·금색 트로피가
   블랙/화이트/골드 3색 밖이라 흑백으로(2026-10-16 사장님 승인) */
body.app-shell .coupon-entry-icon{ filter: grayscale(1) brightness(1.4); }

/* 지점 챌린지 — 달성 항목이 골드 */
body.app-shell .branch-challenge-fill,
body.app-shell .branch-challenge-row.done .branch-challenge-fill{ background:var(--gold-grad-h); }
body.app-shell .branch-challenge-count b{ color:#FFFFFF; }
body.app-shell .branch-challenge-row.done .branch-challenge-count b,
body.app-shell .branch-challenge-row.done .branch-challenge-label{ color:#E9B949; }

/* 함께 도전 중인 회원 — 목표 달성은 게이지만 골드, '3/3 · 달성!' 글자는 흰색(일반 라벨에 골드 금지, 2026-10-18) */
body.app-shell .challenger-row.goal-reached .challenger-progress{ color:var(--text); }   /* 달성은 '달성!' 글자와 꽉 찬 게이지가 알린다 — 굵기는 그대로 400 */
body.app-shell .challenger-row.goal-reached .challenger-fill{ background:var(--gold-grad-h); }

/* 친구 초대 — 안내표의 혜택은 아직 받은 게 아니므로 흰색, 실제 받은 것만 골드 */
body.app-shell .referral-benefit .v{ color:#FFFFFF; }
body.app-shell .referral-benefit.done .v{ color:#E9B949; }

/* 달력·완료 체크는 흰색 유지 — 출석은 사실 기록이지 성취가 아니다 */
/* "오늘 목표 보너스 +30 XP"도 아직 받은 값이 아니라 안내 수치 — 흰색 */
body.app-shell .running-goal-bonus b{ color:#FFFFFF; }

/* ══════════════════════════════════════════════════
   최종 결정 — 형태
     · 주요 액션 버튼 : 라운딩 대신 노치 13px 양쪽
       (design-tokens.css --notch 28px과 같은 형태 언어. 러닝보드 패널과 모서리가 같다)
     · 세그먼트       : 각진 세그먼트 버튼, 선택은 흰 채움
     · 그 외 사각     : 전부 0
     · 원형           : 레벨 배지 · 아바타 · 라이브 점
   ══════════════════════════════════════════════════ */

/* 주요 액션 버튼 — 셋을 같은 처리로 통일(테두리형 .gold-outline도 채움으로 올림:
   친구 초대 모달의 대표 액션이고, clip-path는 테두리를 같이 잘라 모서리가 열려 보인다) */
body.app-shell .confirm-btn.yes.gold,
body.app-shell .confirm-btn.yes.gold-premium,
body.app-shell .confirm-btn.yes.gold-outline{
  border-radius: 0;
  border: 0;
  background: var(--gold-grad);
  color: var(--gold-ink);
  box-shadow: none;
  text-shadow: none;
  clip-path: polygon(13px 0, 100% 0, 100% calc(100% - 13px), calc(100% - 13px) 100%, 0 100%, 0 13px);
}
/* 비활성은 노치 없이 각진 테두리 — 꺼진 금색은 쓰지 않는다 */
body.app-shell .confirm-btn.yes.gold:disabled,
body.app-shell .confirm-btn.yes.gold-premium:disabled,
body.app-shell .confirm-btn.yes.gold-outline:disabled,
body.app-shell .confirm-btn:disabled{
  background: transparent;
  border: 1px solid #26262A;
  color: #5A5A62;
  clip-path: none;
  border-radius: 0;
  opacity: 1;
  box-shadow: none;
}

/* 세그먼트 — 각진 세그먼트 버튼(밑줄 아님) */
body.app-shell .seg{
  gap: 0;
  border: 1px solid #26262A;
  background: transparent;
  padding: 0;
  display: flex;
}
body.app-shell .seg-btn{
  background: transparent;
  border: 0;
  border-radius: 0;
  color: #9A9AA0;
  box-shadow: none;
}
body.app-shell .seg-btn + .seg-btn{ border-left: 1px solid #26262A; }
body.app-shell .seg-btn.on{
  background: #FFFFFF;
  color: #000000;
  font-weight: 600;   /* 고르기 전(600)과 같게 — 선택은 흰 판이 표시, 굵기가 바뀌면 글자 폭이 흔들린다 */
}

/* 친구 초대 모달 마무리 — 안내 박스 각지게, "바로 사용" 배지는 상태 표시라 골드 아님 */
body.app-shell .referral-note,
body.app-shell .referral-hero,
body.app-shell .referral-slot,
body.app-shell .referral-benefit{ border-radius: 0; }
body.app-shell .referral-benefit .badge-ready{
  background: transparent;
  border: 1px solid #26262A;
  color: #9A9AA0;
  box-shadow: none;
  border-radius: 0;
}
/* 도크 안의 비활성 버튼도 같은 처리(style.css가 .tab-dock 스코프로 더 세게 잡고 있음) */
body.app-shell .tab-dock .confirm-btn.yes.gold:disabled,
body.app-shell .tab-dock .confirm-btn:disabled{
  background: transparent;
  border: 1px solid #26262A;
  color: #5A5A62;
  clip-path: none;
  border-radius: 0;
  opacity: 1;
  box-shadow: none;
}

/* ══════════════════════════════════════════════════
   형태 최종 — 노치 철회, 각진 사각으로 확정
     사각은 전부 0. 원형은 레벨 배지 · 아바타 · 라이브 점.
     행동 유도는 형태가 아니라 금색 채움이 담당한다.
     (러닝보드 패널의 노치 28px는 사이니지 전용으로 남긴다)
   ══════════════════════════════════════════════════ */
body.app-shell .confirm-btn.yes.gold,
body.app-shell .confirm-btn.yes.gold-premium,
body.app-shell .confirm-btn.yes.gold-outline{
  clip-path: none;
  border-radius: 0;
}

/* ══════════════════════════════════════════════════
   상태등은 기능 신호 — 브랜드 팔레트 밖에 둔다
   design-tokens.css §6: "브랜드 색이 아니라 기능 신호. 에러의 빨강과 같은 성격"
   깜빡이는 등(LIVE·기록 중·센서 연결됨)은 빨강 그대로 두고, 작은 발광도 유지한다
   — 6px 점이 '켜진 등'으로 읽히려면 그 빛이 필요하다.
   ══════════════════════════════════════════════════ */
/* --live 는 tokens-core.css 에 있다(사이니지와 같은 기능색) */
body.app-shell .live-dot{
  background: #FF3B6B;
  box-shadow: 0 0 6px #FF3B6B;
}
/* 러닝의 "기록 중"·"센서 연결됨" 점은 현재 골드인데, 상태등은 성취가 아니다 —
   커뮤니티 LIVE 점과 같은 빨강으로 통일한다 */
body.app-shell .running-live-dot{
  background: #FF3B6B;
  box-shadow: 0 0 6px #FF3B6B;
}

/* ══════════════════════════════════════════════════
   새 시즌 시작하기 — 단 하나의 특별한 버튼
     회원이 평생 몇 번 볼까 말까 한 순간(레벨 99 + 아이콘 완성)에만 나타난다.
     특별함을 '입체 질감'이 아니라 '움직임'으로 만든다 — 각진 형태와 평면 규칙을
     하나도 깨지 않는다.
     이 광택 스윕은 새 연출이 아니라 레벨 배지에서 걷어낸 것이다. 거기선 3초마다
     늘 돌아서 아무 의미가 없었고, 여기로 오면 제자리를 찾는다.

     주의 — .gold-premium은 쿠폰 사용 버튼(#couponDetailUseBtn)에도 걸려 있다.
     그쪽은 일상 액션이라 일반 금색 버튼으로 두어야 이 처리가 희소해진다.
     (위 통일 규칙이 이미 그렇게 만들고 있으므로 추가 작업 없음)
   ══════════════════════════════════════════════════ */
body.app-shell #prestigeConfirmBtn{
  background: linear-gradient(135deg, #A07840 0%, #FBEBBE 32%, #E9B949 58%, #C9A040 100%);
  color: #1A1206;
  border: 0;
  border-radius: 0;
  clip-path: none;
  box-shadow: none;
  position: relative;
  overflow: hidden;
}
body.app-shell #prestigeConfirmBtn::after{
  content: '';
  position: absolute;
  top: 0; left: -100%;
  width: 55%; height: 100%;
  background: linear-gradient(120deg, transparent 0%, rgba(255,255,255,.5) 50%, transparent 100%);
  animation: premSweep 2.6s ease-in-out infinite;
}
@keyframes premSweep{ 0%{ left:-100% } 55%{ left:150% } 100%{ left:150% } }
@media (prefers-reduced-motion: reduce){
  body.app-shell #prestigeConfirmBtn::after{ animation: none; left: -100%; }
}

/* 홈 "마일리지 / 회원권" 칩의 면·테두리 덮어쓰기는 지웠다 — 2026-10-17부터 칩에 상자가 없다(style.css .home-hero-meta-chip) */
/* 관리자 "시스템 상태" 점은 상태등이므로 원형·기능색 그대로 둔다(회원앱 규칙 밖) */

/* "최근 러닝 기록" 제목에 빨간 점멸 등이 붙어 있다 — .ranking-title::before가 앱에서도
   기본으로 --live 점을 그린다. 이 카드엔 실시간인 게 없다.
   앱의 진짜 상태등은 전부 .live-dot 엘리먼트라, 앱에서는 이 자동 점만 끈다
   (사이니지는 body.app-shell 밖이라 영향 없음) */
body.app-shell .ranking-title::before{ content: none; }

/* 프로필 수정 — 라벨은 중앙, 바로 아래 안내 문구는 왼쪽이라 축이 섞여 있다 */
body.app-shell .emoji-picker-label{ text-align: left; margin-top: 0; }

/* ══════════════════════════════════════════════════
   회원 앱 글자 역할표 적용 — 매장 화면과 같이 쓰는 클래스만 여기서 (2026-10-18)
   역할표 자체는 tokens-core.css '회원 앱 글자 역할표'. 앱 전용 클래스는 style.css 원래 규칙을
   고쳤고, 아래는 매장 TV(display·board)·태블릿도 쓰는 클래스라 body.app-shell로 앱에만 건다.
   ══════════════════════════════════════════════════ */
/* 카드·팝업 제목 16/700, 화면 대표 이름 20/700 — 800은 700과 눈으로 구분이 안 돼 쓰지 않는다. 한글이라 자간 0 */
body.app-shell .ranking-title{ font-weight: 700; letter-spacing: 0; }
body.app-shell .modal-title{ font-weight: 700; }
body.app-shell .dash-name{ font-weight: 700; }
/* 문장 400 */
body.app-shell .weekly-hint{ font-weight: 400; line-height: var(--app-lh-sub); }
/* 팝업 설명 줄 간격 — 크기 짝 토큰(러닝 완주 화면 .rr-short는 자기 값이 따로 있다) */
body.app-shell .modal-sub{ line-height: var(--app-lh-sub); }
body.app-shell .branch-challenge-count{ line-height: var(--app-lh-sub); }
/* 꼬리표 12/600, 한글이라 자간 0 */
body.app-shell .ranking-level{ font-weight: 600; letter-spacing: 0; }
/* 영문 대문자 라벨은 앱 전체 한 값 */
body.app-shell .lv-label{ letter-spacing: var(--tracking-label); }
body.app-shell .live-badge{ letter-spacing: var(--tracking-label); }
/* 꼬리표 12/600 — 요일 점은 매장 축하 화면도 쓴다 */
body.app-shell .weekly-dot{ font-weight: 600; }
/* 프로필 동그라미 안 이모지·'?' 한 글자 — 숫자처럼 1(직원 등록 화면도 같은 부품) */
body.app-shell .avatar-preview{ line-height: 1; }
