  /* ====== Record 탭 CTA ====== */
  .record-cta-btn {
    display: flex;
    align-items: center;
    gap: 14px;
    width: 100%;
    padding: 20px 20px;
    background: linear-gradient(135deg, var(--green-700) 0%, var(--green-900) 100%);
    border: none;
    border-radius: 16px;
    color: white;
    cursor: pointer;
    font-family: inherit;
    text-align: left;
    margin-bottom: 20px;
    box-shadow: 0 6px 16px rgba(20, 83, 45, 0.25);
    transition: all 0.15s;
    -webkit-tap-highlight-color: transparent;
  }
  .record-cta-btn:active { transform: scale(0.98); box-shadow: 0 4px 10px rgba(20,83,45,0.2); }
  .record-cta-icon { font-size: 32px; }
  .record-cta-text { flex: 1; }
  .record-cta-title { font-size: 17px; font-weight: 800; margin-bottom: 2px; }
  .record-cta-sub { font-size: 12.5px; opacity: 0.85; }
  .record-cta-arrow { font-size: 26px; opacity: 0.7; }

  /* Record 탭 — 향후 기능 grid */
  .record-future-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
  }
  .record-future-item {
    padding: 16px 12px;
    background: white;
    border-radius: 12px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.04);
    text-align: center;
    opacity: 0.7;
  }
  .rfi-icon { font-size: 28px; margin-bottom: 6px; }
  .rfi-label {
    font-size: 13px;
    font-weight: 700;
    color: var(--gray-700);
    line-height: 1.4;
  }
  .rfi-sub {
    font-size: 10px;
    color: var(--gray-400);
    font-weight: 500;
  }

  /* ====== Feed 탭 — Coming Soon preview ====== */
  .feed-coming-soon {
    padding: 16px 4px;
  }
  .fcs-emoji {
    font-size: 48px;
    text-align: center;
    margin-bottom: 10px;
  }
  .fcs-title {
    font-size: 19px;
    font-weight: 800;
    color: var(--green-900);
    text-align: center;
    margin-bottom: 6px;
  }
  .fcs-desc {
    font-size: 13px;
    color: var(--gray-600);
    text-align: center;
    line-height: 1.6;
    margin-bottom: 24px;
  }
  .fcs-preview-list {
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin-bottom: 24px;
    opacity: 0.85;
    filter: saturate(0.85);
  }
  .fcs-preview-item {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px 14px;
    background: white;
    border-radius: 12px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.04);
  }
  .fcs-avatar {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    background: #dcfce7;
    color: var(--green-900);
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 800;
    font-size: 14px;
    flex-shrink: 0;
  }
  .fcs-content { flex: 1; min-width: 0; }
  .fcs-name {
    font-size: 12px;
    font-weight: 700;
    color: var(--gray-700);
    margin-bottom: 2px;
  }
  .fcs-text {
    font-size: 13px;
    color: var(--gray-900);
  }
  .fcs-like { font-size: 18px; flex-shrink: 0; opacity: 0.35; }
  /* ===== 활동 피드 카드 ===== */
  .act-list { display: flex; flex-direction: column; gap: 34px; }
  .act-card { background: rgba(255,255,255,0.5); -webkit-backdrop-filter: blur(14px) saturate(150%); backdrop-filter: blur(14px) saturate(150%); border: 1px solid rgba(255,255,255,0.65); border-radius: 16px; padding: 14px; box-shadow: 0 4px 16px rgba(20,83,45,0.05); }
  .act-head { display: flex; align-items: center; gap: 11px; margin-bottom: 9px; }
  .act-avatar { width: 40px; height: 40px; border-radius: 50%; background: #166534; color: #fff; display: flex; align-items: center; justify-content: center; font-size: 16px; font-weight: 800; flex-shrink: 0; background-size: cover; background-position: center; }
  .act-avatar-stack { display:flex; align-items:center; flex-shrink:0; padding-left:6px; }
  .act-avatar-stack .act-avatar { width:40px; height:40px; margin-left:-7px; border:2px solid rgba(255,255,255,.96); box-shadow:0 1px 4px rgba(20,83,45,.13); }
  .act-head-info { flex: 1; min-width: 0; }
  .act-name { font-size: 14px; font-weight: 800; color: var(--gray-900); }
  .act-time { font-size: 11.5px; color: var(--gray-400); margin-top: 1px; }
  .act-hl { display: flex; gap: 5px; flex-shrink: 0; flex-wrap: wrap; justify-content: flex-end; max-width: 52%; }
  .act-badge { flex:0 0 auto; width:auto; min-width:0; height:30px; box-sizing:border-box; font-size:10.5px; font-weight:700; padding:0 10px; border-radius:10px; white-space:nowrap; display:inline-flex; align-items:center; justify-content:center; gap:4px; }
  .act-badge.b-life { color: #854d0e; background: #fef3c7; }
  .act-badge.b-eagle { color: #b77905; background: #fff7dc; }
  .act-badge.b-birdie { color: #e85d83; background: #fff0f4; }
  .act-badge.b-par { color: #0f6e56; background: #dcfce7; }
  .act-badge.b-rank { color: #854d0e; background: #fef3c7; }
  .act-badge.b-rank2 { color: #4b5563; background: #eef0f2; }
  .act-badge.b-rank3 { color: #92400e; background: #f2d2b6; }
  .act-badge.b-streak { color: #0f6e56; background: #dcfce7; }
  .act-badge.b-done { color: #6b7280; background: #eef1f0; }   /* 활약 없을 때 중립 '라운드 완주' — 놀리지 않는 톤 */
  /* 활약 줄 (카드 본문 아래) + 동반자 줄 */
  .act-hl-row { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 8px; }
  .act-player-results { display:flex; flex-direction:column; gap:8px; margin:0 0 11px; }
  .act-player-result { min-width:0; padding-top:8px; border-top:1px solid rgba(20,83,45,.08); }
  .act-player-result:first-child { padding-top:0; border-top:0; }
  .act-player-result:last-child { padding-bottom:9px; border-bottom:1px solid rgba(20,83,45,.10); }
  .act-player-score { display:flex; align-items:center; justify-content:flex-start; gap:6px; font-size:14px; color:var(--gray-800); font-weight:700; margin:0 0 7px; }
  .act-player-score b { color:var(--green-900); font-weight:900; }
  .act-player-badges { display:flex; flex-wrap:wrap; gap:6px; overflow:visible; padding:1px 0 0; }
  .act-companions { font-size:12.5px; color:var(--gray-500); margin:14px 0 8px; line-height:1.4; display:flex; align-items:center; flex-wrap:wrap; gap:8px 10px; }
  .act-comp { display:inline-flex; align-items:center; }
  .act-comp .act-comp-nm { margin-left:5px; font-size:12.5px; font-weight:700; color:var(--gray-600,#4b5563); }
  .act-comp.act-comp-txt { font-size:12.5px; font-weight:700; color:var(--gray-600,#4b5563); }
  /* 미니 원형 아바타 — 계정=초록, 게스트=회색. 성씨 한 글자. */
  /* 캐논 색: 그리너=진초록(#166534) / 게스트=회색(#9ca3af). 사진은 img(onerror 폴백). */
  .mini-avatar { position:relative; width:22px; height:22px; flex:0 0 22px; display:inline-flex; align-items:center; justify-content:center; border-radius:50%; background:#166534; color:#fff; font-size:11px; font-weight:800; overflow:hidden; }
  .mini-avatar.guest { background:#9ca3af; color:#fff; }
  .mini-avatar .mini-av-i { position:absolute; inset:0; display:flex; align-items:center; justify-content:center; color:#fff; }
  .mini-avatar .mini-av-img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
  .act-comp .mini-avatar { width:26px; height:26px; flex-basis:26px; font-size:12px; }
  .act-line { display:flex; align-items:center; min-width:0; font-size:14px; color:var(--gray-800); line-height:1.5; margin-bottom:11px; white-space:nowrap; }
  .act-line-main { min-width:0; overflow:hidden; text-overflow:ellipsis; }
  .act-line b { font-weight: 800; color: var(--green-900); }
  .act-line-score { margin-left:6px; color:var(--green-900,#14532d); font-weight:900; }
  .act-single-badges { display:flex; flex-wrap:wrap; gap:6px; margin:-3px 0 11px; }
  /* 개인 상세기록 피드 — 4-타일 요약(총타수/GIR/평균퍼트/페어웨이). */
  .act-stat-tiles { display:grid; grid-template-columns:repeat(4,1fr); gap:6px; margin:0 0 11px; }
  .act-stat { background:var(--green-50,#eef7f0); border:1px solid rgba(20,83,45,.1); border-radius:10px; padding:8px 4px; text-align:center; min-width:0; }
  .act-stat-v { font-size:17px; font-weight:900; color:var(--green-900,#14532d); line-height:1.1; white-space:nowrap; }
  .act-stat-v span { font-size:11px; font-weight:800; margin-left:1px; }
  .act-stat-l { margin-top:3px; font-size:10px; font-weight:700; color:var(--gray-500,#6b7280); white-space:nowrap; }
  .act-actions { display: flex; gap: 20px; align-items: center; border-top: 1px solid rgba(0,0,0,0.06); margin-top: 11px; padding-top: 11px; }
  .act-act { display: inline-flex; align-items: center; gap: 6px; font-size: 14.5px; color: var(--gray-500); background: none; border: none; font-family: inherit; cursor: pointer; -webkit-tap-highlight-color: transparent; padding: 0; }
  .act-act:active { transform: scale(0.94); }
  /* 좋아요/댓글 아이콘 크게 (하드코딩된 16px SVG를 CSS로 확대) */
  .act-act > svg { width: 24px !important; height: 24px !important; }
  .act-act > .pack-icon { width:24px; height:24px; }
  .act-act.liked { color: #ef4444; }
  .act-act.liked svg path { fill: #ef4444 !important; stroke: #ef4444 !important; }   /* 좋아요 시 하트 빨강 채움(테두리도 빨강) */
  .act-act .ti { font-size: 17px; }
  .act-act.act-view { margin-left: auto; color: var(--green-700); font-weight: 700; }
  .act-actions-right { margin-left: auto; display: inline-flex; align-items: center; gap: 14px; }
  .act-act.act-view2 { color: var(--green-700); font-weight: 700; font-size: 12.5px; }
  /* 본문 클릭 → 스코어카드 열기 */
  .act-body-open { cursor: pointer; -webkit-tap-highlight-color: transparent; border-radius: 8px; transition: background .12s; }
  .act-body-open:active { background: rgba(0,0,0,0.03); }
  /* 인스타식 인라인 소셜 미리보기 */
  .act-social { margin-top: 8px; display: flex; flex-direction: column; gap: 3px; }
  .act-likes { font-size: 13.5px; font-weight: 700; color: var(--gray-800, #1f2937); cursor: pointer; -webkit-tap-highlight-color: transparent; }
  .act-likes b { font-weight: 800; }
  .act-cmt-more { font-size: 13px; color: var(--gray-500, #6b7280); cursor: pointer; -webkit-tap-highlight-color: transparent; }
  .act-cmt-prev { font-size: 13.5px; color: var(--gray-800, #1f2937); line-height: 1.4; cursor: pointer; -webkit-tap-highlight-color: transparent; word-break: break-word; }
  .act-cmt-prev b { font-weight: 800; margin-right: 4px; }
  /* 빈 피드 — 친구찾기 CTA + 샘플 미리보기 */
  .feed-empty-cta { display: flex; align-items: center; gap: 10px; padding: 14px; margin-bottom: 12px; background: var(--green-50, #eef7f0); border: 1px solid var(--green-100, #d7ead9); border-radius: 14px; }
  .feed-empty-cta .fec-text { flex: 1; min-width: 0; font-size: 13px; color: var(--green-900, #14532d); line-height: 1.4; font-weight: 600; }
  .feed-empty-cta .fec-btn { flex-shrink: 0; padding: 9px 14px; border: none; border-radius: 999px; background: #124837; color: #fff; font-size: 13px; font-weight: 800; font-family: inherit; cursor: pointer; }
  .feed-empty-cta .fec-btn:active { transform: scale(0.97); }
  .feed-sample-label { font-size: 11.5px; font-weight: 700; color: var(--gray-400, #9ca3af); margin: 0 4px 8px; }
  .act-card.act-sample { opacity: 0.62; pointer-events: none; }
  /* 같은 라운드 함께한 사람 (팔로잉) — 대표 카드 아래 붙는 칩 줄. */
  /* 같은 라운드 그룹 — 카드 뒤에 카드(스택) 그림자 */
  .act-card.act-card-stacked {
    box-shadow:
      0 3px 12px rgba(20,83,45,0.05),
      6px 6px 0 -1px #e9dfc6,
      6px 6px 0 0 rgba(20,83,45,0.26),
      12px 12px 0 -1px #ddd0ad,
      12px 12px 0 0 rgba(20,83,45,0.30);
    margin-bottom: 20px;
  }
  .act-group-mates { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin: -6px 4px 14px; padding: 8px 10px; background: rgba(255,255,255,0.4); border: 1px solid rgba(20,83,45,0.08); border-radius: 0 0 14px 14px; }
  .act-group-mates .agm-label { font-size: 11.5px; font-weight: 700; color: var(--gray-500, #6b7280); margin-right: 2px; }
  .act-group-mates .agm-chip { display: inline-flex; align-items: center; gap: 4px; padding: 4px 10px; background: var(--green-50, #f0fdf4); border: 1px solid var(--green-100, #dcfce7); border-radius: 999px; font-size: 12px; font-weight: 700; color: var(--green-800, #166534); cursor: pointer; font-family: inherit; -webkit-tap-highlight-color: transparent; }
  .act-group-mates .agm-chip b { font-weight: 800; }
  .act-group-mates .agm-chip:active { opacity: 0.7; }
  /* 댓글 모달 */
  .acmt-list { display: flex; flex-direction: column; gap: 12px; max-height: 46vh; overflow-y: auto; margin: 4px 0 12px; }
  .acmt-row { display: flex; gap: 10px; }
  .acmt-av { width: 32px; height: 32px; border-radius: 50%; background: var(--green-700); color: #fff; display: flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 800; flex-shrink: 0; }
  .acmt-body { flex: 1; min-width: 0; }
  .acmt-name { font-size: 12.5px; font-weight: 700; color: var(--gray-800); }
  .acmt-name span { font-weight: 500; color: var(--gray-400); font-size: 11px; margin-left: 6px; }
  .acmt-text { font-size: 13.5px; color: var(--gray-800); line-height: 1.45; margin-top: 1px; word-break: break-word; }
  /* 댓글 입력 — 둥근 박스 안에 전송(↑) 버튼이 들어오도록 */
  .acmt-input-row { position: relative; display: flex; align-items: center; }
  /* 홈버튼(하단 네비)처럼 — 부드러운 둥근 캡슐: 은은한 테두리 + 살짝 떠 있는 그림자 */
  .acmt-input { flex: 1; box-sizing: border-box; border: 1px solid rgba(20,83,45,0.12); border-radius: 999px; padding: 13px 48px 13px 20px; font-size: 14px; font-family: inherit; background: var(--gray-50, #f4f5f4); color: var(--gray-900, #111827); box-shadow: 0 4px 14px rgba(20,83,45,0.08); }
  .acmt-input:focus { outline: none; border-color: var(--green-700, #15803d); background: #fff; }
  .acmt-send { position: absolute; right: 5px; top: 50%; transform: translateY(-50%); width: 34px; height: 34px; border: none; border-radius: 50%; background: var(--green-700, #15803d); color: #fff; font-size: 18px; font-weight: 900; line-height: 1; cursor: pointer; display: none; align-items: center; justify-content: center; -webkit-tap-highlight-color: transparent; box-shadow: 0 2px 8px rgba(20,83,45,0.28); }
  .acmt-send:active { transform: translateY(-50%) scale(0.9); }
  /* ===== 댓글 하단 시트 (반 화면, 위에서 올라옴) ===== */
  .cmt-sheet { position:fixed; left:0; right:0; bottom:0; z-index:9710; height:58vh; max-height:58vh; display:none; flex-direction:column; background:rgba(250,248,242,0.94); -webkit-backdrop-filter:blur(26px) saturate(180%); backdrop-filter:blur(26px) saturate(180%); border-top-left-radius:24px; border-top-right-radius:24px; box-shadow:0 -10px 40px rgba(0,0,0,0.18); overflow:hidden; }
  .cmt-sheet.open { display:flex; animation:pmSlideUp 0.44s cubic-bezier(0.22,1.35,0.34,1) both; }
  .cmt-sheet.closing { display:flex; animation:pmSlideDown 0.34s cubic-bezier(0.36,0,0.66,-0.56) both; }
  .cmt-grabzone { flex-shrink:0; touch-action:none; cursor:grab; position:relative; z-index:2; }
  .cmt-grab { width:40px; height:5px; border-radius:999px; background:rgba(0,0,0,0.18); margin:9px auto 2px; flex-shrink:0; }
  .cmt-sheet .cmt-header { display:flex; align-items:center; justify-content:flex-start; min-height:30px; padding:22px 16px 10px; flex-shrink:0; background:transparent; }
  .cmt-page-title { font-size:15.5px; font-weight:800; color:var(--green-900,#14532d); margin:0; display:flex; align-items:center; gap:6px; }
  .cmt-count-n { color:var(--green-600,#16a34a); font-weight:900; }
  .cmt-sortbar { position:relative; z-index:30; margin-top:34px; padding:6px 16px 8px; flex-shrink:0; }
  .cmt-sort { background:none; border:none; font-family:inherit; font-size:13px; font-weight:700; color:var(--gray-700,#374151); cursor:pointer; padding:4px 2px; display:inline-flex; align-items:center; gap:4px; line-height:1; -webkit-tap-highlight-color:transparent; }
  .cmt-sort-chev { width:12px; height:12px; color:var(--gray-400,#9ca3af); flex-shrink:0; display:block; }
  .cmt-sort-menu { position:absolute; top:calc(100% + 4px); left:14px; z-index:40; display:flex; flex-direction:column; width:172px; background:rgba(255,255,255,0.68); -webkit-backdrop-filter:blur(22px) saturate(180%); backdrop-filter:blur(22px) saturate(180%); border:1px solid rgba(255,255,255,0.55); border-radius:16px; box-shadow:0 12px 32px rgba(0,0,0,0.16); overflow:hidden; }
  .cmt-sort-menu button { background:none; border:none; font-family:inherit; font-size:13.5px; font-weight:700; color:var(--gray-700,#374151); text-align:left; padding:12px 16px; cursor:pointer; -webkit-tap-highlight-color:transparent; }
  .cmt-sort-menu button + button { border-top:1px solid rgba(0,0,0,0.06); }
  .cmt-sort-menu button.on { color:var(--green-700,#15803d); background:rgba(20,83,45,0.06); }
  .cmt-sort-menu button:active { background:rgba(0,0,0,0.05); }
  .cmt-list { flex:1; min-height:0; overflow-y:auto; padding:12px 14px 14px; display:flex; flex-direction:column; gap:10px; -webkit-overflow-scrolling:touch; }
  .cmt-card { background:rgba(255,255,255,0.5); -webkit-backdrop-filter:blur(14px) saturate(150%); backdrop-filter:blur(14px) saturate(150%); border:1px solid rgba(255,255,255,0.65); border-radius:16px; padding:13px 14px; box-shadow:0 4px 16px rgba(20,83,45,0.05); }
  .cmt-card.reply { margin-left:36px; position:relative; background:rgba(255,255,255,0.38); }
  .cmt-card.reply::before { content:''; position:absolute; left:-20px; top:-6px; width:16px; height:26px; border-left:2px solid rgba(0,0,0,0.12); border-bottom:2px solid rgba(0,0,0,0.12); border-bottom-left-radius:8px; }
  .cmt-head-row { display:flex; align-items:center; gap:10px; }
  .cmt-av { width:38px; height:38px; border-radius:50%; background:var(--green-700,#15803d); color:#fff; display:flex; align-items:center; justify-content:center; font-size:15px; font-weight:800; flex-shrink:0; background-size:cover; background-position:center; }
  .cmt-av.reply-av { width:30px; height:30px; font-size:13px; }
  .cmt-namewrap { flex:1; min-width:0; }
  .cmt-name-row { display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
  .cmt-name { font-size:14px; font-weight:800; color:var(--gray-900,#111827); }
  .cmt-badge { font-size:10px; font-weight:800; padding:2px 7px; border-radius:999px; line-height:1.3; }
  .cmt-badge.author { background:#dcefe1; color:#15803d; }
  .cmt-badge.follower { background:#e6f0fb; color:#2563eb; }
  .cmt-badge.livechat { background:#fde6e0; color:#c2410c; }   /* 라이브 관전 채팅서 이관된 댓글 */
  .cmt-time { font-size:11.5px; color:var(--gray-400,#9ca3af); }
  .cmt-text { font-size:14px; color:var(--gray-800,#1f2937); line-height:1.5; margin:3px 0 0; word-break:break-word; white-space:pre-wrap; }
  .cmt-actions { display:flex; align-items:center; gap:16px; flex-shrink:0; }
  .cmt-reply-btn { display:flex; align-items:center; justify-content:center; background:none; border:none; padding:2px; cursor:pointer; color:var(--gray-400,#9ca3af); -webkit-tap-highlight-color:transparent; }
  .cmt-reply-btn svg { width:17px; height:17px; }
  .cmt-reply-btn:active { transform:scale(1.15); }
  .cmt-like { display:flex; align-items:center; gap:5px; background:none; border:none; cursor:pointer; padding:2px; font-family:inherit; -webkit-tap-highlight-color:transparent; }
  .cmt-like svg { width:17px; height:17px; stroke:var(--gray-400,#9ca3af); fill:none; transition:transform .12s ease; }
  .cmt-like.on svg { stroke:#ef4444; fill:#ef4444; }
  .cmt-like:active svg { transform:scale(1.25); }
  .cmt-like-n { font-size:12.5px; font-weight:700; color:var(--gray-500,#6b7280); min-width:8px; }
  .cmt-like.on .cmt-like-n { color:#ef4444; }
  .cmt-del { background:none; border:none; color:var(--gray-300,#d1d5db); font-size:19px; line-height:1; cursor:pointer; padding:0 2px; flex-shrink:0; -webkit-tap-highlight-color:transparent; }
  .cmt-del:active { color:var(--red,#dc2626); }
  .cmt-empty { text-align:center; color:var(--gray-400,#9ca3af); font-size:13px; padding:40px 0; }
  .cmt-input-wrap { flex-shrink:0; padding:10px 16px calc(env(safe-area-inset-bottom,0px) + 12px); border-top:1px solid rgba(0,0,0,0.06); background:transparent; }
  .cmt-reply-bar { display:flex; align-items:center; justify-content:space-between; font-size:12px; color:var(--gray-500,#6b7280); padding:0 6px 8px; }
  .cmt-reply-bar button { background:none; border:none; color:var(--green-700,#15803d); font-family:inherit; font-size:12px; font-weight:700; cursor:pointer; }
  .cmt-sheet .acmt-input-row { gap:9px; }
  .cmt-my-av { width:34px; height:34px; border-radius:50%; background:var(--green-700,#15803d); color:#fff; display:flex; align-items:center; justify-content:center; font-size:14px; font-weight:800; flex-shrink:0; background-size:cover; background-position:center; }
  .cmt-sheet .acmt-input { box-shadow:none; }
  .fcs-features {
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 16px;
    background: var(--green-50);
    border-radius: 12px;
    border: 1px solid var(--green-100);
  }
  .fcs-feature {
    font-size: 13px;
    font-weight: 600;
    color: var(--green-900);
  }
  /* 텍스트 — cream bg 위 다크 그린. */
  .splash-title {
    color: #14532d;
    font-size: clamp(38px, 10vw, 48px);
    font-weight: 900;
    line-height: 1.05;
    letter-spacing: -0.02em;
    margin: 0;
    text-transform: uppercase;
  }
  .splash-sub {
    color: rgba(244, 238, 222, 0.82);
    font-size: 14px;
    font-weight: 500;
    line-height: 1.5;
    margin: 0;
    text-align: center;
    opacity: 0;
    animation: spSloganIn .21s ease-out 1.13s both;
  }
  /* 그린 배경 위 — 고스트(아웃라인) 버튼. */
  .splash-cta {
    display: block;
    width: 100%;
    padding: 17px 24px;
    background: transparent;
    border: 1.5px solid rgba(244, 238, 222, 0.5);
    border-radius: 999px;
    color: #f4eede;
    font-size: 16px;
    font-weight: 700;
    letter-spacing: 0.02em;
    cursor: pointer;
    transition: all 0.2s ease-out;
    font-family: inherit;
  }
  .splash-cta:hover, .splash-cta:active {
    background: rgba(244, 238, 222, 0.12);
    transform: scale(0.98);
  }
  /* 글라스 스타일 — 로그인 이력 유저용 '시작하기' (그린 배경 위 frosted) */
  .splash-cta-glass {
    position: relative;
    overflow: hidden;
    isolation: isolate;
    background: rgba(244, 238, 222, 0.16);
    -webkit-backdrop-filter: blur(18px) saturate(160%);
    backdrop-filter: blur(18px) saturate(160%);
    border: 1.5px solid rgba(244, 238, 222, 0.55);
    color: #f4eede;
    box-shadow: 0 6px 22px rgba(0, 0, 0, 0.18);
  }
  .splash-cta-glass:hover, .splash-cta-glass:active {
    background: rgba(244, 238, 222, 0.26);
  }
  .splash-cta-kakao {
    background: #FEE500;
    border-color: #FEE500;
    color: #191600;
    box-shadow: 0 4px 20px rgba(254, 229, 0, 0.35);
  }
  .splash-cta-kakao:hover, .splash-cta-kakao:active { background: #f4d800; border-color: #f4d800; }
  .splash-cta-kakao .kakao-bubble { font-size: 15px; margin-right: 2px; }
  .splash-cta-apple {
    background: #000; border-color: #000; color: #fff;
    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
    display: flex; align-items: center; justify-content: center; gap: 8px;
  }
  .splash-cta-apple:hover, .splash-cta-apple:active { background: #111; border-color: #111; }
  .splash-cta-apple svg { width: 18px; height: 18px; margin-top: -2px; fill: #fff; }
  #splashButtons { display: flex; flex-direction: column; gap: 14px; }
  @media (max-width: 380px) {
    .app-splash { padding: 50px 24px 28px; }
    .splash-title { font-size: 36px; }
    .splash-sub { font-size: 13.5px; }
    .splash-cta { padding: 16px 20px; font-size: 15px; }
  }

  :root {
    /* [테마 정비 1단계] 크림 → 쿨 오프화이트. 배경·카드·테두리·그림자 계열만 조정(기능/레이아웃 불변). */
    --app-bg: #FBFCFB;                     /* 앱 전체 배경(쿨 오프화이트) — 순백 직전 한 단계 밝게. 카드(#FFF)와는 테두리·그림자로 구분 */
    --brand-cream: #fff;                /* (미사용 레거시) */
    --app-surface: #FFFFFF;                /* 주요 카드·입력·팝오버 = 순백(반투명 글래스 → 불투명) */
    --app-surface-soft: #F7F9F7;           /* 낮은 위계 표면 */
    --app-surface-border: #DFE6E1;         /* 기본 테두리(쿨) */
    --app-surface-shadow: 0 4px 14px rgba(20,65,38,.05);   /* 더 약한 그림자 */
    /* 시맨틱 토큰(2단계 스윕에서 하드코딩 대체에 사용) */
    --surface-secondary: #F0F4F1;          /* 탭 바탕·비활성 세그먼트·보조 컨테이너 */
    --surface-selected: #E6F3E9;           /* 선택 상태 연녹색 */
    --border-default: #DFE6E1;
    --divider-default: #E9EEEA;            /* 카드 내부 구분선 */
    --brand-green: #146B3A;                /* 브랜드 초록 기준값(현행 초록 유지) */
    --text-primary: #172019;
    --text-secondary: #747F77;
    --green-900: #14532d;
    --green-700: #166534;
    --green-500: #22c55e;
    --green-100: #dcfce7;
    --green-50: #e5f5ea;
    --gold: #f59e0b;
    --gold-light: #fef3c7;
    --gray-900: #111827;
    --gray-700: #374151;
    --gray-500: #6b7280;
    --gray-300: #d1d5db;
    --gray-200: #e5e7eb;
    --gray-100: #f3f4f6;
    --gray-50: #f9fafb;
    --red: #dc2626;
    --red-light: #fee2e2;
    --blue: #2563eb;
    --blue-light: #dbeafe;
  }
  * { box-sizing: border-box; }
  /* 네이티브 앱(WKWebView) 고무줄 오버스크롤 방지 — 위/아래로 당길 때 흰 영역이 드러나며
     탭이 안 먹는 버그 차단. 루트 배경도 크림으로 통일해 혹시 남는 바운스도 흰색 안 보이게. */
  html { background: var(--app-bg); overscroll-behavior: none; }
  html, body { overscroll-behavior: none; -webkit-overflow-scrolling: auto; }
  /* 당겨서 새로고침 인디케이터 */
  #ptrInd { position: fixed; top: calc(env(safe-area-inset-top, 0px) + 12px); left: 50%; z-index: 100200; width: 40px; height: 40px; border-radius: 50%; background: #fff; box-shadow: 0 3px 14px rgba(20,83,45,0.22); display: flex; align-items: center; justify-content: center; color: #14532d; font-size: 20px; opacity: 0; transform: translate(-50%, -64px); pointer-events: none; }
  #ptrInd .ptr-icon { display: inline-block; }
  #ptrInd.spin .ptr-icon { animation: ptrspin 0.7s linear infinite; }
  @keyframes ptrspin { to { transform: rotate(360deg); } }
  body {
    font-family: -apple-system, BlinkMacSystemFont, "Apple SD Gothic Neo", "Pretendard", "Malgun Gothic", sans-serif;
    margin: 0;
    /* 기본 화면은 거의 흰색인 크림. 위저드·진행 화면만 기존 브랜드 크림을 유지한다. */
    background: var(--app-bg);
    color: var(--gray-900);
    min-height: 100vh;
    padding: 24px 16px 64px;
  }
  /* 피드 탭 — base 좌우 패딩 0. 3개 섹션이 각자 좌우 인셋을 관리한다:
     지금 라이브=16/16(정적 박스), 추천 친구=0/0(스와이프), 활동 피드=0/0(스와이프).
     헤더/하단네비는 position:fixed + 자체 패딩이라 영향 없음. 피드→홈 통합 대비 섹션 스코프. */
  body.tab-feed, body.tab-explore { padding-left: 0; padding-right: 0; }   /* [P1] 탐색도 컨텐츠 자체 16 패딩 → body 좌우패딩 0으로(이중 패딩 방지, 홈과 동일 인셋) */

  /* [홈리뉴얼] 지금 라운딩 중 — 사람 중심 가로 스크롤. 헤더=좌우 16 인셋, row=내부 16 패딩(우측 블리드) */
  .lr-head { display:flex; align-items:center; justify-content:space-between; margin:20px 16px 10px; }
  /* 공통 섹션 헤더(.profile-section-title, 활동 피드)와 동일 포맷 — 13px/800/gray-700/letter-spacing */
  .lr-head-title { font-size:13px; font-weight:800; color:var(--gray-700); letter-spacing:.02em; display:flex; align-items:center; gap:7px; }
  .lr-head-all { background:none; border:0; padding:4px 2px; font-family:inherit; font-size:13px; font-weight:650; color:var(--gray-500); cursor:pointer; }
  .lr-head-all:active { color:var(--green-700); }
  .lr-row { display:flex; gap:18px; overflow-x:auto; -webkit-overflow-scrolling:touch; padding:2px 16px 6px; scrollbar-width:none; }
  .lr-row::-webkit-scrollbar { display:none; }
  .lr-item { flex:0 0 auto; width:78px; display:flex; flex-direction:column; align-items:center; gap:8px; background:none; border:0; padding:0; font-family:inherit; cursor:pointer; }
  .lr-item:active { transform:scale(.96); }
  .lr-av-wrap { position:relative; width:62px; height:62px; }
  /* 무프로필 그리너 = 진한 초록 배경 + 흰 이니셜(앱 공통 아바타 룰, .suggest-avatar 와 동일). 프로필 사진 있으면 background-image 로 덮음 */
  .lr-av { width:62px; height:62px; border-radius:50%; border:2px solid var(--green-600); background-size:cover; background-position:center; background-color:#166534; color:#fff; font-weight:820; font-size:22px; display:grid; place-items:center; overflow:hidden; box-sizing:border-box; }
  .lr-dot { position:absolute; right:2px; bottom:2px; width:13px; height:13px; border-radius:50%; background:var(--green-600); border:2.5px solid var(--app-bg); }
  .lr-name { max-width:78px; font-size:12.5px; font-weight:750; color:var(--gray-900); text-align:center; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .lr-watch { font-size:11.5px; font-weight:650; color:var(--green-700); }
  /* 빈 상태 — 라이브 카드(아바타행) 있을 때와 비슷한 높이 유지(답답함 방지) + 중앙정렬 */
  .lr-empty { display:flex; align-items:center; justify-content:center; min-height:86px; margin:2px 16px 6px; padding:0; text-align:center; font-size:13px; font-weight:550; color:var(--gray-500); }

  /* [Phase3] 친구 대회 (탐색 탭) + 리더보드 */
  .comp-empty { font-size:13px; color:var(--gray-500,#6b7280); line-height:1.6; padding:14px 2px; text-align:center; }
  .comp-card { width:100%; display:flex; align-items:center; gap:10px; padding:14px; margin-bottom:8px; background:rgba(255,255,255,0.6); border:1px solid rgba(20,83,45,0.12); border-radius:14px; font-family:inherit; text-align:left; cursor:pointer; -webkit-tap-highlight-color:transparent; }
  .comp-card:active { transform:scale(.99); }
  .comp-card-main { flex:1; min-width:0; display:flex; flex-direction:column; gap:3px; }
  .comp-card-name { font-size:15px; font-weight:800; color:var(--gray-900,#111827); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .comp-card-sub { font-size:12px; color:var(--gray-500,#6b7280); }
  .comp-card-chev { color:var(--gray-300,#d1d5db); font-size:20px; flex-shrink:0; }
  .comp-actions { display:flex; gap:8px; margin-top:4px; }
  /* 친구 대회 페이지네이션 (2개씩) */
  .comp-pager { display:flex; align-items:center; justify-content:center; gap:14px; margin:2px 0 4px; }
  .comp-pager-btn { padding:6px 12px; border:1px solid rgba(20,83,45,0.18); border-radius:9px; background:#fff; color:var(--green-700,#15803d); font-family:inherit; font-size:12.5px; font-weight:700; cursor:pointer; -webkit-tap-highlight-color:transparent; }
  .comp-pager-btn:disabled { color:var(--gray-300,#d1d5db); border-color:var(--gray-200,#e5e7eb); cursor:default; }
  .comp-pager-info { font-size:12px; font-weight:700; color:var(--gray-500,#6b7280); min-width:44px; text-align:center; }
  .comp-btn { flex:1; padding:11px; border-radius:12px; font-family:inherit; font-size:13.5px; font-weight:800; cursor:pointer; -webkit-tap-highlight-color:transparent; }
  .comp-btn-primary { border:0; background:var(--green-700,#15803d); color:#fff; }
  .comp-btn-ghost { border:1px solid rgba(20,83,45,0.2); background:transparent; color:var(--green-700,#15803d); }
  .comp-sheet { position:relative; background:#fff; border-radius:18px; padding:20px 18px 16px; width:min(360px,88vw); box-shadow:0 12px 40px rgba(0,0,0,0.2); max-height:86vh; overflow-y:auto; overflow-x:hidden; box-sizing:border-box; }
  .comp-sheet * { box-sizing:border-box; }
  .comp-sheet-title { font-size:17px; font-weight:800; text-align:center; color:var(--gray-900,#111827); margin-bottom:12px; }
  /* 표준 닫기 X — flex 센터링으로 글리프 정확히 가운데(모든 X 버튼 공용 서식). */
  .comp-sheet-x { position:absolute; top:10px; right:10px; width:34px; height:34px; display:flex; align-items:center; justify-content:center; padding:0; border:0; background:none; font-size:22px; line-height:1; color:var(--gray-400,#9ca3af); cursor:pointer; -webkit-tap-highlight-color:transparent; }
  .comp-sheet-x:active { opacity:.5; }
  .comp-label { display:block; font-size:12.5px; font-weight:700; color:var(--gray-600,#4b5563); margin:12px 2px 6px; }
  .comp-input { width:100%; padding:11px 12px; border:1px solid var(--gray-300,#d1d5db); border-radius:10px; font-family:inherit; font-size:14px; box-sizing:border-box; background:#fff; color:var(--gray-900,#111827); }
  .comp-code-input { text-align:center; letter-spacing:4px; font-size:20px; font-weight:800; }
  .comp-seg { display:flex; gap:6px; background:var(--gray-100,#f1f3f2); border-radius:10px; padding:3px; }
  .comp-seg button { flex:1; padding:8px; border:0; background:transparent; border-radius:8px; font-family:inherit; font-size:13px; font-weight:700; color:var(--gray-500,#6b7280); cursor:pointer; }
  .comp-seg button.active { background:#fff; color:var(--green-700,#15803d); box-shadow:0 1px 3px rgba(0,0,0,0.08); }
  .comp-seg-3 button { padding:8px 4px; font-size:12px; }   /* 3버튼(수동 핸디캡 포함) — 좁은 폭 대응 */
  .comp-hint { font-size:11.5px; color:var(--gray-500,#6b7280); margin:6px 2px 0; line-height:1.5; }
  .comp-dates { display:flex; align-items:center; gap:8px; }
  .comp-dates .comp-input { flex:1 1 0; min-width:0; width:auto; }   /* 두 날짜 입력이 폭을 나눠 가짐(삐져나감 방지) */
  .comp-dash { flex:0 0 auto; text-align:center; color:var(--gray-400,#9ca3af); }   /* ~ 가운데 */
  .comp-invite-list { max-height:150px; overflow-y:auto; border:1px solid var(--gray-100,#f1f3f2); border-radius:10px; padding:2px; }
  .comp-invite-row { display:flex; align-items:center; gap:9px; padding:8px 10px; border-radius:8px; cursor:pointer; -webkit-tap-highlight-color:transparent; }
  .comp-invite-row:active { background:var(--gray-50,#f9fafb); }
  .comp-invite-av { width:30px; height:30px; border-radius:50%; background:var(--green-700,#15803d); background-size:cover; background-position:center; color:#fff; display:flex; align-items:center; justify-content:center; font-size:12px; font-weight:800; flex-shrink:0; }
  .comp-invite-nm { flex:1; min-width:0; font-size:13.5px; font-weight:600; color:var(--gray-900,#111827); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .comp-invite-chk { width:20px; height:20px; flex-shrink:0; accent-color:var(--green-700,#15803d); }
  .comp-invite-empty { font-size:12.5px; color:var(--gray-500,#6b7280); text-align:center; padding:12px 0; }
  .comp-submit { width:100%; margin-top:16px; padding:13px; border:0; border-radius:12px; background:var(--green-700,#15803d); color:#fff; font-family:inherit; font-size:14px; font-weight:800; cursor:pointer; }
  .comp-cancel { width:100%; margin-top:8px; padding:11px; border:0; background:none; color:var(--gray-500,#6b7280); font-family:inherit; font-size:14px; font-weight:600; cursor:pointer; }
  .comp-loading { text-align:center; color:var(--gray-500,#6b7280); font-size:13px; padding:24px 0; }
  .comp-detail-name { font-size:18px; font-weight:800; color:var(--gray-900,#111827); text-align:center; margin:4px 24px 4px; }
  .comp-detail-meta { font-size:12.5px; color:var(--gray-500,#6b7280); text-align:center; margin-bottom:8px; }
  .comp-metric-note { font-size:11.5px; color:var(--green-800,#166534); text-align:center; background:var(--green-50,#eef7f0); border-radius:8px; padding:7px 10px; line-height:1.5; margin-bottom:12px; }
  .comp-invite { display:flex; align-items:center; gap:8px; background:var(--gray-50,#f9fafb); border:1px solid var(--gray-100,#f1f3f2); border-radius:10px; padding:9px 12px; margin-bottom:14px; }
  .comp-invite-label { font-size:12px; color:var(--gray-500,#6b7280); flex-shrink:0; }
  .comp-invite-code { flex:1; font-size:16px; font-weight:800; letter-spacing:2px; color:var(--gray-900,#111827); }
  .comp-invite-copy { border:1px solid rgba(20,83,45,0.2); background:transparent; color:var(--green-700,#15803d); border-radius:8px; padding:5px 12px; font-family:inherit; font-size:12.5px; font-weight:700; cursor:pointer; flex-shrink:0; }
  .clb-list { display:flex; flex-direction:column; }
  .clb-row { display:flex; align-items:center; gap:10px; padding:10px 4px; border-bottom:1px solid var(--gray-100,#f1f3f2); }
  .clb-row:last-child { border-bottom:0; }
  .clb-me { background:var(--green-50,#eef7f0); border-radius:10px; padding:10px 8px; margin:2px -4px; border-bottom:0; }
  .clb-nq { opacity:0.6; }
  .clb-rank { width:22px; text-align:center; font-size:15px; font-weight:800; color:var(--green-800,#166534); flex-shrink:0; }
  .clb-rank-nq { color:var(--gray-400,#9ca3af); }
  .clb-av { width:34px; height:34px; border-radius:50%; background-size:cover; background-position:center; background-color:var(--green-700,#15803d); flex-shrink:0; }
  .clb-av-i { display:flex; align-items:center; justify-content:center; color:#fff; font-weight:800; font-size:14px; }
  .clb-info { flex:1; min-width:0; display:flex; flex-direction:column; gap:2px; }
  .clb-name { font-size:14px; font-weight:700; color:var(--gray-900,#111827); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .clb-metag { font-size:10px; font-weight:700; color:#fff; background:var(--green-700,#15803d); border-radius:5px; padding:1px 5px; }
  .clb-sub { font-size:11.5px; color:var(--gray-500,#6b7280); }
  .clb-val { font-size:19px; font-weight:800; color:var(--green-800,#166534); flex-shrink:0; text-align:right; }
  .clb-val .te-gained { font-weight:900; }
  .clb-val .te-gross { display:block; font-size:11px; font-weight:600; color:var(--gray-400,#9ca3af); margin-top:0; }
  .comp-detail-actions { margin-top:14px; text-align:center; }
  .comp-leave { border:0; background:none; color:#dc2626; font-family:inherit; font-size:13px; font-weight:600; cursor:pointer; padding:6px; }
  .comp-manage-btn { display:block; width:100%; margin-bottom:8px; padding:11px; border:1px solid var(--green-700,#15803d); border-radius:11px; background:#fff; color:var(--green-700,#15803d); font-family:inherit; font-size:13.5px; font-weight:800; cursor:pointer; }
  /* 아는 친구 초대 배너 (탐색 탭) */
  .invite-card { display:flex; align-items:center; gap:11px; padding:13px 14px; border:1px solid rgba(21,128,61,.16); border-radius:16px; background:var(--green-50,#eef7f0); box-shadow:0 4px 14px rgba(20,83,45,.05); }
  .invite-card-ic { flex:0 0 auto; display:flex; align-items:center; justify-content:center; color:var(--gray-500,#6b7280); }
  .invite-card-ic .pack-icon { width:26px; height:26px; }
  .invite-card-tx { flex:1; min-width:0; overflow:hidden; }
  .invite-card-tt { font-size:14px; font-weight:800; color:var(--gray-900,#111827); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .invite-card-sub { margin-top:2px; font-size:11px; line-height:1.4; color:var(--gray-500,#6b7280); }
  .invite-card-btn { flex:0 0 auto; padding:7px 14px; border:0; border-radius:9px; background:var(--green-700,#15803d); color:#fff; font-family:inherit; font-size:12px; font-weight:800; cursor:pointer; white-space:nowrap; transition:background .15s; }
  .invite-card-btn.done { background:var(--green-900,#0f4f28); }
  /* 코스 리뷰 카드 (탐색 탭 · P8 1차) */
  #courseReviewList { display:flex; flex-direction:column; gap:10px; }
  /* 카드 높이 통일(태그 유무 무관 3줄 기준) + 사진 세로 꽉참 */
  .crv-card { display:flex; gap:11px; padding:11px 12px; height:140px; overflow:hidden; border:1px solid var(--line,#eceeec); border-radius:14px; background:var(--app-surface,#fff); box-shadow:0 3px 12px rgba(20,83,45,.04); cursor:pointer; -webkit-tap-highlight-color:transparent; }
  .crv-card:active { transform:scale(.99); }
  .crv-thumb { flex:0 0 auto; width:84px; align-self:stretch; border-radius:12px; background:var(--green-50,#eef7f0); display:flex; align-items:center; justify-content:center; font-size:30px; }
  .crv-thumb-img { background-size:cover; background-position:center; }
  .crv-body { flex:1; min-width:0; display:flex; flex-direction:column; justify-content:center; gap:4px; overflow:hidden; }
  /* 코스 리뷰 번호 페이지네이션 */
  .review-pager { display:flex; align-items:center; justify-content:center; gap:5px; margin:14px 0 2px; flex-wrap:wrap; }
  .rpg-num, .rpg-arw { min-width:30px; height:30px; padding:0 6px; border:0; border-radius:8px; background:none; color:var(--gray-500,#6b7280); font-family:inherit; font-size:13px; font-weight:700; cursor:pointer; -webkit-tap-highlight-color:transparent; }
  .rpg-num.active { min-width:30px; padding:0; border-radius:50%; background:var(--green-700,#15803d); color:#fff; }
  .rpg-arw { color:var(--green-700,#15803d); font-size:17px; font-weight:800; }
  .rpg-ellip { min-width:16px; text-align:center; color:var(--gray-400,#9ca3af); font-size:13px; font-weight:700; align-self:center; }
  /* 코스리뷰: 내 방문 코스 일괄 리뷰 CTA */
  /* 방문 코스 리뷰쓰기 CTA — 초대 배너와 동일 연초록 배경 + 좌측 사진 여백없이 꽉참 */
  .crv-bulk-cta { display:flex; align-items:stretch; width:100%; margin-bottom:12px; padding:0; border:1px solid rgba(21,128,61,.16); border-radius:14px; background:var(--green-50,#eef7f0); cursor:pointer; text-align:left; overflow:hidden; font-family:inherit; -webkit-tap-highlight-color:transparent; box-shadow:0 4px 14px rgba(20,83,45,.05); }
  .crv-bulk-thumb { flex:0 0 auto; width:104px; align-self:stretch; background-size:cover; background-position:center; background-color:#dceee2; }
  .crv-bulk-tx { flex:1; min-width:0; display:flex; flex-direction:column; justify-content:center; gap:4px; padding:13px 14px; }
  .crv-bulk-tt { font-size:14px; font-weight:800; color:var(--gray-900,#111827); }
  .crv-bulk-sub { font-size:11.5px; line-height:1.5; color:var(--gray-600,#4b5563); }
  .crv-bulk-arw { flex:0 0 auto; align-self:center; padding-right:12px; font-size:20px; font-weight:700; color:var(--gray-400,#9ca3af); }
  .crv-empty-hint { padding:8px 2px 2px; font-size:12.5px; color:var(--gray-400,#9ca3af); text-align:center; }
  /* 코스리뷰 정렬 탭 + 코스 검색 */
  .crv-sortbar { display:flex; align-items:center; gap:7px; margin-bottom:10px; }
  .crv-sorts { display:flex; gap:3px; flex:0 0 auto; }
  .crv-sort { padding:5px 8px; border:0; border-radius:8px; background:none; color:var(--gray-500,#6b7280); font-family:inherit; font-size:11px; font-weight:700; cursor:pointer; white-space:nowrap; -webkit-tap-highlight-color:transparent; }
  .crv-sort.active { background:var(--green-50,#eef7f0); color:var(--green-700,#15803d); }
  .crv-search-wrap { flex:0 1 120px; min-width:0; margin-left:auto; position:relative; }   /* 우측 정렬 + 폭 축소 */
  /* 특이도 높여 전역 input[type=text](font-size:14px)를 이김 — 좌측 정렬탭(11px)과 통일 */
  .crv-search-wrap .crv-search { width:100%; padding:6px 30px 6px 10px; border:1px solid var(--gray-200,#e5e7eb); border-radius:9px; font-family:inherit; font-size:11px !important; font-weight:700; background:#fff; color:var(--gray-800,#1f2937); box-sizing:border-box; }
  .crv-search::placeholder { color:var(--gray-400,#9ca3af); font-weight:400; }
  .crv-search-ic { position:absolute; top:50%; right:9px; transform:translateY(-50%); width:13px; height:13px; color:var(--gray-400,#9ca3af); pointer-events:none; }
  .crv-clear { position:absolute; top:50%; right:8px; transform:translateY(-50%); display:none; align-items:center; justify-content:center; width:16px; height:16px; padding:0; border:0; background:none; color:var(--gray-400,#9ca3af); font-size:14px; line-height:1; cursor:pointer; }
  /* 일괄 리뷰 모달 */
  .brv-sheet { background:#fff; border-radius:20px; padding:18px 16px 14px; width:min(380px,92vw); max-height:80vh; display:flex; flex-direction:column; box-shadow:0 16px 44px rgba(0,0,0,.22); }
  .brv-h { font-size:16px; font-weight:800; color:var(--gray-900,#111827); }
  .brv-sub { margin:5px 0 12px; font-size:12px; line-height:1.5; color:var(--gray-500,#6b7280); }
  .brv-list { overflow-y:auto; display:flex; flex-direction:column; gap:8px; }
  .brv-row { display:flex; align-items:center; gap:10px; padding:9px 4px; border-bottom:1px solid var(--gray-100,#f1f3f2); }
  .brv-thumb { flex:0 0 auto; width:40px; height:40px; border-radius:10px; background:var(--green-50,#eef7f0); display:flex; align-items:center; justify-content:center; font-size:20px; }
  .brv-thumb-img { background-size:cover; background-position:center; }
  /* 코스 상세 모달 — 3축 별점 + 코스 메타 */
  .cd-sheet { position:relative; background:#fff; border-radius:20px; width:min(400px,92vw); max-height:86vh; overflow-y:auto; box-shadow:0 16px 44px rgba(0,0,0,.24); }
  .cd-x { position:absolute; top:10px; right:10px; z-index:2; display:flex; align-items:center; justify-content:center; width:32px; height:32px; padding:0; border:0; border-radius:50%; background:rgba(0,0,0,.4); color:#fff; font-size:17px; line-height:1; cursor:pointer; }
  .cd-link { color:var(--green-700,#15803d); font-weight:700; text-decoration:none; word-break:break-all; }
  .cd-photo { position:relative; aspect-ratio:3/2; max-height:280px; background-size:cover; background-position:center; background-color:var(--green-50,#eef7f0); display:flex; align-items:flex-end; }
  .cd-photo-none { align-items:center; justify-content:center; font-size:54px; }
  /* 사진 우측하단 '＋ 이 코스 사진 추가하기' — 사진/메타 경계에 걸치도록 아래로, 투명도 높여 은은하게 */
  .cd-photo-add { position:absolute; right:10px; bottom:-13px; z-index:3; display:inline-flex; align-items:center; gap:2px; padding:7px 12px; border-radius:999px; background:rgba(0,0,0,.38); color:#fff; font-family:inherit; font-size:12px; font-weight:800; line-height:1; cursor:pointer; -webkit-backdrop-filter:blur(7px); backdrop-filter:blur(7px); border:1px solid rgba(255,255,255,.22); -webkit-tap-highlight-color:transparent; }
  .cd-photo-add:active { transform:scale(0.95); }
  /* 리뷰 시트 사진 스트립 — [사진][+] 최대 5. */
  .rv-photos { display:flex; flex-wrap:wrap; gap:8px; }
  .rvp-cell { position:relative; width:66px; height:66px; border-radius:11px; overflow:hidden; flex:0 0 auto; background:var(--gray-100,#f1f3f2); border:0; padding:0; box-sizing:border-box; cursor:pointer; -webkit-tap-highlight-color:transparent; }
  .rvp-cell img { width:100%; height:100%; object-fit:cover; display:block; transition:opacity .15s; }
  .rvp-cell:not(.rvp-sel) img { opacity:.5; }   /* 미선택(코스 갤러리 등록 안 함) = 흐리게 */
  .rvp-cell.rvp-sel { box-shadow:inset 0 0 0 2px var(--green-600,#16a34a); }
  .rvp-chk { position:absolute; top:4px; right:4px; width:19px; height:19px; border-radius:50%; background:rgba(255,255,255,.92); border:0.5px solid var(--gray-300,#d1d5db); color:transparent; font-size:12px; font-weight:900; line-height:19px; text-align:center; }
  .rvp-cell.rvp-sel .rvp-chk { background:var(--green-600,#16a34a); border-color:var(--green-600,#16a34a); color:#fff; }
  .rvp-add { display:flex; align-items:center; justify-content:center; border:1.5px dashed var(--gray-300,#d1d5db); background:var(--gray-50,#f9fafb); color:var(--gray-400,#9ca3af); }
  .rvp-add:active { transform:scale(0.94); }
  /* 코스 상세 대표사진 — 탭하면 전체 갤러리 */
  .cd-photo-tap { cursor:zoom-in; }
  /* 사진 좌상단 — 임시(letsgrip, 교체 유도) 라벨 / 업로더 원형프로필 크레딧(UGC) */
  .cd-photo-tmp { position:absolute; top:10px; left:10px; z-index:2; padding:3px 9px; border-radius:7px; font-size:10.5px; font-weight:800; color:#fff; background:rgba(0,0,0,.42); -webkit-backdrop-filter:blur(6px); backdrop-filter:blur(6px); border:1px solid rgba(255,255,255,.2); }
  .cd-cred { position:absolute; top:10px; left:10px; z-index:2; }   /* 업로더 크레딧 위치(아바타는 .gav 캐논) */
  /* 코스 사진 크롭 — 가로 프레임 + 드래그 위치조정 */
  .ccrop-ov { position:fixed; inset:0; z-index:100060; background:rgba(0,0,0,.85); display:flex; align-items:center; justify-content:center; -webkit-tap-highlight-color:transparent; }
  .ccrop-sheet { display:flex; flex-direction:column; align-items:center; gap:12px; padding:0 16px; }
  .ccrop-title { color:#fff; font-size:15px; font-weight:800; }
  .ccrop-frame { position:relative; overflow:hidden; border-radius:14px; background:#000; touch-action:none; box-shadow:0 0 0 1px rgba(255,255,255,.15); }
  .ccrop-img { position:absolute; top:0; left:0; max-width:none; -webkit-user-select:none; user-select:none; -webkit-user-drag:none; cursor:grab; }
  .ccrop-img:active { cursor:grabbing; }
  .ccrop-zoom { width:min(80vw,320px); accent-color:#16a34a; margin:2px 0 0; }
  .ccrop-hint { color:rgba(255,255,255,.7); font-size:12px; }
  .ccrop-btns { display:flex; gap:10px; margin-top:2px; }
  .ccrop-btns button { padding:11px 26px; border:0; border-radius:11px; font-family:inherit; font-size:14px; font-weight:800; cursor:pointer; }
  .ccrop-cancel { background:rgba(255,255,255,.16); color:#fff; }
  .ccrop-done { background:var(--green-600,#16a34a); color:#fff; }
  /* 자유 코스 리뷰 모달 — 코스 검색 자동완성 + 방문 날짜 */
  .frc-sheet { position:relative; background:#fff; border-radius:20px; width:min(400px,92vw); max-height:86vh; overflow-y:auto; padding:20px 18px 18px; box-shadow:0 16px 44px rgba(0,0,0,.24); }
  .frc-h { font-size:18px; font-weight:850; color:var(--green-900,#14532d); }
  .frc-sub { font-size:12.5px; color:var(--gray-500,#6b7280); margin:4px 0 14px; }
  .frc-label { font-size:12px; font-weight:800; color:var(--gray-700,#374151); margin:12px 0 6px; }
  .frc-search-wrap { position:relative; }
  .frc-search, .frc-date { width:100%; box-sizing:border-box; border:1px solid var(--app-surface-border,#e5e7eb); border-radius:11px; padding:11px 13px; font-family:inherit; font-size:16px; color:var(--gray-900,#111827); background:var(--gray-50,#f9fafb); }
  .frc-search:focus, .frc-date:focus { outline:none; border-color:var(--green-400,#4ade80); background:#fff; }
  .frc-results { display:none; margin-top:6px; border:1px solid var(--gray-100,#f1f3f2); border-radius:11px; overflow:hidden; max-height:230px; overflow-y:auto; }
  .frc-results.on { display:block; }
  .frc-item { display:block; width:100%; text-align:left; border:0; background:#fff; padding:11px 13px; font-family:inherit; font-size:14px; font-weight:600; color:var(--gray-800,#1f2937); cursor:pointer; border-bottom:1px solid var(--gray-100,#f1f3f2); }
  .frc-item:last-child { border-bottom:0; }
  .frc-item:active { background:var(--green-50,#eef7f0); }
  .frc-none { padding:12px 13px; font-size:13px; color:var(--gray-400,#9ca3af); }
  .frc-go { width:100%; margin-top:18px; padding:13px; border:0; border-radius:12px; background:var(--green-600,#16a34a); color:#fff; font-family:inherit; font-size:15px; font-weight:800; cursor:pointer; }
  .frc-go:disabled { opacity:.45; cursor:not-allowed; }
  .frc-photo-only { width:100%; margin-top:10px; padding:12px; border:1.5px solid var(--green-600,#16a34a); border-radius:12px; background:none; color:var(--green-700,#15803d); font-family:inherit; font-size:14px; font-weight:800; cursor:pointer; }
  .frc-photo-only:disabled { opacity:.4; cursor:not-allowed; }
  .frc-opt { font-size:11px; font-weight:700; color:var(--gray-400,#9ca3af); }
  .frc-alt { width:100%; margin-top:10px; padding:10px; border:0; background:none; color:var(--gray-500,#6b7280); font-family:inherit; font-size:13px; font-weight:700; cursor:pointer; }
  .cd-photo-attr { font-size:9.5px; color:rgba(255,255,255,.9); background:rgba(0,0,0,.32); padding:2px 7px; margin:0 0 8px 10px; border-radius:6px; }
  .cd-body { padding:16px; }
  .cd-title { font-size:18px; font-weight:800; color:var(--gray-900,#111827); }
  .cd-section { font-size:13px; font-weight:600; color:var(--gray-500,#6b7280); }
  .cd-overall { margin-top:5px; font-size:15px; font-weight:800; color:var(--green-700,#15803d); }
  .cd-overall .crv-star { color:#f0a92b; }
  .cd-count { font-size:12px; font-weight:600; color:var(--gray-500,#6b7280); }
  .cd-h { margin:18px 0 10px; font-size:13px; font-weight:800; color:var(--gray-700,#374151); letter-spacing:.02em; }
  .cd-axes { display:flex; flex-direction:column; gap:14px; }
  .cd-axis-h { display:flex; align-items:baseline; justify-content:space-between; margin-bottom:5px; }
  .cd-axis-l { font-size:13px; font-weight:700; color:var(--gray-800,#1f2937); }
  .cd-axis-v { font-size:12.5px; font-weight:800; color:var(--green-700,#15803d); }
  .cd-bar { height:7px; border-radius:999px; background:var(--gray-100,#f1f3f2); overflow:hidden; }
  .cd-bar > span { display:block; height:100%; border-radius:999px; background:linear-gradient(90deg,#34d399,#15803d); }
  .cd-axis-ends { display:flex; justify-content:space-between; margin-top:3px; font-size:10px; color:var(--gray-400,#9ca3af); }
  .cd-meta { display:flex; flex-direction:column; gap:8px; }
  .cd-meta-row { display:flex; gap:12px; font-size:13px; }
  .cd-meta-k { flex:0 0 58px; white-space:nowrap; color:var(--gray-500,#6b7280); font-weight:600; }
  .cd-meta-v { flex:1; min-width:0; color:var(--gray-800,#1f2937); font-weight:600; word-break:keep-all; }
  .cd-homepage { display:inline-block; margin-top:8px; font-size:13px; font-weight:800; color:var(--green-700,#15803d); text-decoration:none; }
  .cd-meta-none { font-size:12.5px; color:var(--gray-400,#9ca3af); }
  .brv-info { flex:1; min-width:0; }
  .brv-course { font-size:13.5px; font-weight:700; color:var(--gray-900,#111827); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .brv-date { font-size:11px; font-weight:500; color:var(--gray-400,#9ca3af); }
  .brv-go { flex:0 0 auto; padding:7px 13px; border:0; border-radius:9px; background:var(--green-700,#15803d); color:#fff; font-family:inherit; font-size:12px; font-weight:800; cursor:pointer; }
  .brv-done { flex:0 0 auto; font-size:12px; font-weight:700; color:var(--green-700,#15803d); }
  .brv-empty { padding:20px 4px; text-align:center; font-size:13px; line-height:1.6; color:var(--gray-500,#6b7280); }
  .brv-close { width:100%; margin-top:12px; padding:11px; border:1px solid var(--green-700,#15803d); border-radius:10px; background:var(--green-50,#eef7f0); color:var(--green-700,#15803d); font-family:inherit; font-size:13.5px; font-weight:800; cursor:pointer; }
  .crv-top { display:flex; align-items:baseline; justify-content:space-between; gap:10px; }
  .crv-venue { font-size:14.5px; font-weight:800; color:var(--gray-900,#111827); min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .crv-section { font-weight:600; color:var(--gray-500,#6b7280); font-size:12.5px; }
  .crv-score { flex:0 0 auto; font-size:14px; font-weight:900; color:var(--green-700,#15803d); }
  .crv-star { color:#f0a92b; margin-right:2px; }
  .crv-meta { display:flex; align-items:center; gap:6px; margin-top:6px; }
  .crv-av { flex:0 0 auto; }   /* 크기·색은 .gav 캐논(greenerAvatarHtml)이 담당 */
  .crv-av-i { display:flex; align-items:center; justify-content:center; background:var(--green-700,#15803d); color:#fff; font-size:10px; font-weight:800; }
  .crv-name { font-size:12px; font-weight:700; color:var(--gray-700,#374151); }
  /* 코스별 여러 리뷰어 아바타(추/문…) 겹쳐 표시 */
  .crv-avs { display:inline-flex; align-items:center; }
  .crv-avs .crv-av { margin-right:-6px; border:1.5px solid #fff; box-shadow:0 0 0 0.5px rgba(0,0,0,0.04); }
  .crv-more { margin-left:9px; font-size:11px; font-weight:700; color:var(--gray-400,#9ca3af); }
  .crv-when { font-size:11px; font-weight:500; color:var(--gray-400,#9ca3af); }
  .crv-text { margin-top:7px; font-size:13px; line-height:1.5; color:var(--gray-700,#374151); display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:2; overflow:hidden; text-overflow:ellipsis; white-space:normal; }
  .crv-tags { display:flex; flex-wrap:wrap; gap:5px; margin-top:9px; }
  .crv-tag { font-size:11px; font-weight:700; color:var(--green-700,#15803d); background:var(--green-50,#eef7f0); border-radius:7px; padding:3px 8px; }
  /* 공유 시트 — 링크복사 / 링크공유 / QR 3버튼 */
  .share-link-sheet { background:#fff; border-radius:20px; padding:18px 16px 14px; width:min(360px,90vw); box-shadow:0 16px 44px rgba(0,0,0,.22); }
  .sls-h { display:flex; align-items:center; gap:7px; font-size:15.5px; font-weight:800; color:var(--gray-900,#111827); }
  .sls-sub { margin:5px 0 14px; font-size:12.5px; line-height:1.5; color:var(--gray-500,#6b7280); white-space:pre-line; }
  .sls-opts { display:grid; grid-template-columns:repeat(3,1fr); gap:8px; margin-top:14px; }
  .sls-opt { display:flex; flex-direction:column; align-items:center; gap:8px; padding:14px 6px 12px; border:1px solid var(--gray-200,#e5e7eb); border-radius:14px; background:var(--gray-50,#f9fafb); color:var(--gray-700,#374151); font-family:inherit; cursor:pointer; transition:background .15s,border-color .15s,color .15s; }
  .sls-opt:active { background:var(--gray-100,#f3f4f6); }
  .sls-opt.qr-on { border-color:var(--green-700,#15803d); background:var(--green-50,#eef7f0); color:var(--green-700,#15803d); }
  .sls-opt.done { border-color:var(--green-700,#15803d); background:var(--green-50,#eef7f0); color:var(--green-700,#15803d); }
  .sls-oic { display:flex; align-items:center; justify-content:center; width:40px; height:40px; border-radius:50%; background:#fff; border:1px solid var(--gray-200,#e5e7eb); }
  .sls-opt.qr-on .sls-oic, .sls-opt.done .sls-oic { border-color:var(--green-700,#15803d); }
  .sls-oic svg { width:20px; height:20px; }
  .sls-ol { font-size:12px; font-weight:700; }
  .sls-qr { display:flex; flex-direction:column; align-items:center; gap:8px; margin-top:14px; padding:16px; border:1px solid var(--gray-200,#e5e7eb); border-radius:14px; background:#fff; }
  .sls-qrimg { width:200px; height:200px; image-rendering:pixelated; image-rendering:crisp-edges; border-radius:6px; }
  .sls-qrcap { font-size:12px; font-weight:600; color:var(--gray-500,#6b7280); }
  .sls-close { width:100%; margin-top:12px; padding:11px; border:1px solid var(--green-700,#15803d); border-radius:10px; background:var(--green-50,#eef7f0); color:var(--green-700,#15803d); font-family:inherit; font-size:13.5px; font-weight:800; cursor:pointer; }
  /* 멤버 관리(주최자) — 멤버 행 + 수동 핸디캡 입력 + 삭제 */
  .comp-submit-ghost { background:#fff; color:var(--green-700,#15803d); border:1px solid var(--green-700,#15803d); margin-top:10px; }
  .cmg-list { margin-top:6px; display:flex; flex-direction:column; gap:6px; }
  .cmg-row { display:flex; align-items:center; gap:10px; padding:8px 4px; border-bottom:1px solid var(--gray-100,#f1f3f2); }
  .cmg-row .clb-av { width:32px; height:32px; border-radius:50%; background-size:cover; background-position:center; flex-shrink:0; }
  .cmg-row .clb-av-i { display:flex; align-items:center; justify-content:center; background:var(--green-700,#15803d); color:#fff; font-size:13px; font-weight:800; }
  .cmg-nm { flex:1; min-width:0; font-size:14px; font-weight:700; color:var(--gray-800,#1f2937); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .cmg-hc { width:64px; flex-shrink:0; padding:7px 8px; border:1px solid var(--gray-300,#d1d5db); border-radius:8px; font-family:inherit; font-size:13px; font-weight:700; text-align:center; color:var(--gray-800,#1f2937); }
  .cmg-rm { flex-shrink:0; width:28px; height:28px; display:flex; align-items:center; justify-content:center; padding:0; border:0; background:none; color:var(--gray-400,#9ca3af); font-size:18px; line-height:1; cursor:pointer; -webkit-tap-highlight-color:transparent; }
  .cmg-rm:active { opacity:.5; }
  .cmg-owner { flex-shrink:0; font-size:11px; font-weight:700; color:var(--green-700,#15803d); background:var(--green-50,#eef7f0); border-radius:6px; padding:3px 7px; }

  /* ===== 친구 챌린지 — 풀윈도우 위저드 + 상세 ===== */
  .comp-wz { position:fixed; inset:0; z-index:9600; background:var(--app-bg,#F7F9F7); display:none; flex-direction:column; overflow-x:hidden; padding-top:env(safe-area-inset-top); }
  .comp-wz.open { display:flex; }
  /* 앱 표준 헤더 크롬 — 3분할 flex(꺽쇄 44 | 로고 flex:1 중앙 | 우측 44). 전부 flex 아이템 + align-items:center 라 한 라인.
     safe-area 는 .comp-wz 에서만(이중 패딩 금지). 고정 height 로 로고·꺽쇄·⋯ 정확히 같은 세로 위치. */
  /* 레이아웃/정렬은 .history-page-header(검증된 공용 헤더)가 담당 — .cw-h 는 오버레이 컨텍스트만(고정·배경·테두리·좌우패딩). */
  .cw-h { flex:0 0 auto; background:var(--app-bg,#F7F9F7); padding:6px 12px 10px; }
  /* 오버레이 헤더(단체팀·챌린지 등 comp-wz) — 로고가 가끔 아랫줄로 밀리는 현상 방지.
     전역 header{position:fixed} 누수 차단(relative 강제) + 로고를 back/⋯ 행과 수직중앙 일치(absolute, 한 줄 고정). */
  .history-page-header.cw-h { position:relative; min-height:44px; align-items:center; flex-wrap:nowrap; }
  /* .hp-logo-wrap 중앙정렬은 공통 규칙(styles/03)에서 담당 — per-header 오버라이드 제거(공통헤더양식 통일). */
  .cw-hr { min-width:44px; display:flex; align-items:center; justify-content:flex-end; }
  .cw-dots { display:flex; gap:5px; justify-content:center; padding:8px 0 2px; background:var(--app-bg,#F7F9F7); flex:0 0 auto; }
  .cw-dots i { width:6px; height:6px; border-radius:50%; background:#d9d3c4; transition:width .18s ease; }
  .cw-dots i.on { background:var(--green-700,#15803d); width:18px; border-radius:3px; }
  .cw-body { flex:1; overflow-y:auto; overflow-x:hidden; padding:14px 16px 22px; -webkit-overflow-scrolling:touch; scrollbar-width:none; overscroll-behavior-y:contain; }
  .cw-body::-webkit-scrollbar { display:none; }
  .cw-body * { box-sizing:border-box; }
  /* 단체팀 보드 풀오버레이 — '우리 조 라운드 시작' CTA 를 하단 sticky 로 고정(끝까지 스크롤 안 해도 항상 보임). */
  #teBoard .te-start, #teBoard .te-awards-cta { position:sticky; bottom:calc(env(safe-area-inset-bottom,0px) + 8px); z-index:3; }
  /* 플레이 위저드식 채우기 프로그레스바 */
  .cw-prog { display:grid; gap:7px; margin:0 2px 16px; }
  .cw-prog-copy { display:flex; align-items:center; justify-content:space-between; gap:12px; }
  .cw-prog-title { font-size:14px; font-weight:800; color:var(--gray-900,#111827); }
  .cw-prog-count { font-size:12px; font-weight:700; color:var(--gray-500,#6b7280); white-space:nowrap; }
  .cw-prog-desc { font-size:11.5px; line-height:1.4; color:var(--gray-500,#6b7280); }
  .cw-prog-track { height:4px; overflow:hidden; border-radius:999px; background:var(--gray-200,#e5e7eb); }
  .cw-prog-fill { width:0; height:100%; border-radius:inherit; background:var(--green-700,#15803d); transition:width .2s ease; }
  /* 다음 버튼 — 콘텐츠 뒤 인라인(하단 고정 X). 플레이 위저드 nav 와 동일하게 살짝 위로. */
  .cw-nav { margin:28px 0 4px; }
  .cw-foot { flex:0 0 auto; display:flex; align-items:center; gap:10px; padding:10px 16px; padding-bottom:max(12px,env(safe-area-inset-bottom)); border-top:1px solid var(--gray-200,#ece8dd); background:var(--app-bg,#F7F9F7); }
  .cw-prev { flex:0 0 auto; padding:14px 20px; border:1px solid var(--gray-300,#d8d3c6); border-radius:13px; background:var(--app-surface,#fff); color:var(--gray-700,#4b5563); font-family:inherit; font-size:15px; font-weight:800; cursor:pointer; }
  .cw-prev:active { background:var(--gray-100,#f1f3f2); }
  .te-list-sub { margin:18px 2px 8px; font-size:12px; font-weight:800; color:var(--gray-400,#9ca3af); }   /* 내 이벤트 목록 — '종료된 이벤트' 구분 헤더 */
  /* 진행 중인 단체전 — 추천친구식 가로 스와이프 카드(공개 브라우징 → 탭하면 코드 입장) */
  .te-live-list { display:flex; gap:10px; overflow-x:auto; -webkit-overflow-scrolling:touch; scroll-snap-type:x proximity; padding:2px 2px 8px; margin:0 0 6px; scrollbar-width:none; }
  .te-live-list::-webkit-scrollbar { display:none; }
  .te-live-card { flex:0 0 auto; width:198px; scroll-snap-align:start; display:flex; flex-direction:column; align-items:flex-start; gap:3px; padding:15px 15px 13px; background:#fff; border:1px solid rgba(20,83,45,.08); border-radius:16px; box-shadow:0 4px 14px rgba(20,83,45,.07); font-family:inherit; text-align:left; cursor:pointer; -webkit-tap-highlight-color:transparent; transition:transform .12s ease; }
  .te-live-card:active { transform:scale(.98); }
  .tlc-live { display:inline-flex; align-items:center; gap:4px; font-size:10.5px; font-weight:800; color:#dc2626; margin-bottom:3px; }
  .tlc-live .tlc-d { width:6px; height:6px; border-radius:50%; background:#dc2626; }
  .tlc-name { font-size:15.5px; font-weight:900; color:var(--gray-900,#111827); word-break:keep-all; line-height:1.25; }
  .tlc-venue { font-size:13px; font-weight:600; color:var(--gray-600,#4b5563); word-break:keep-all; }
  .tlc-meta { font-size:11.5px; font-weight:600; color:var(--gray-400,#9ca3af); }
  .tlc-cta { margin-top:9px; font-size:12.5px; font-weight:800; color:var(--green-700,#15803d); }
  .te-live-empty { width:100%; padding:20px 10px; text-align:center; font-size:13px; color:var(--gray-400,#9ca3af); line-height:1.55; }
  /* 참여중 목록 — 진행 중 / 완료된 단체전 2섹션(각 가로 스크롤). */
  .te-live-sections { margin:0; }
  .te-live-row { display:flex; gap:10px; overflow-x:auto; -webkit-overflow-scrolling:touch; scroll-snap-type:x proximity; padding:2px 2px 8px; margin:0 0 4px; scrollbar-width:none; }
  .te-live-row::-webkit-scrollbar { display:none; }
  .te-sec-q { margin-top:22px; }
  .te-sec-q.te-done-head { margin-top:16px; color:var(--gray-400,#9ca3af); }
  .te-done-headrow { display:flex; align-items:baseline; justify-content:space-between; gap:10px; }
  .te-clear-done { background:none; border:0; padding:2px 2px; font-size:12px; font-weight:600; color:var(--gray-400,#9ca3af); cursor:pointer; letter-spacing:-.2px; -webkit-tap-highlight-color:transparent; }
  .te-clear-done:active { opacity:.6; }
  /* 완료된 단체전 카드 — 회색 처리(결과 조회는 가능). */
  .te-live-card.done { background:var(--gray-50,#f9fafb); border-color:rgba(0,0,0,.06); box-shadow:none; }
  .te-live-card.done .tlc-live { color:var(--gray-400,#9ca3af); }
  .te-live-card.done .tlc-name { color:var(--gray-500,#6b7280); }
  .te-live-card.done .tlc-venue { color:var(--gray-400,#9ca3af); }
  .te-live-card.done .tlc-cta { color:var(--gray-400,#9ca3af); }
  /* 단체조 리더보드 — 개인 순위 카드 + 필터 + 행(변동) + 축하 피드 */
  /* 입장 로비 탭 — 전체순위 / 시상 */
  .te-lobtabs { display:flex; gap:6px; background:var(--surface-secondary,#f0f4f1); border-radius:12px; padding:4px; margin:10px 0 14px; }
  .te-lobtab { flex:1 1 0; height:38px; border:0; border-radius:9px; background:transparent; color:var(--gray-500,#6b7280); font-family:inherit; font-size:14px; font-weight:700; cursor:pointer; -webkit-tap-highlight-color:transparent; transition:background .15s, color .15s; }
  .te-lobtab.on { background:#fff; color:#15803d; font-weight:800; box-shadow:0 1px 4px rgba(20,83,45,.1); }
  .te-awtab { margin-bottom:6px; }
  .te-statcards { display:flex; gap:11px; margin:6px 0 14px; }
  .te-statcard { flex:1 1 0; min-width:0; background:#fff; border:1px solid rgba(20,83,45,.08); border-radius:16px; padding:15px 15px 14px; box-shadow:0 3px 12px rgba(20,83,45,.05); }
  .te-statcard.te-sc-me { background:#edf7f0; border-color:rgba(21,101,52,.18); }
  .te-sc-t { font-size:12px; font-weight:700; color:var(--gray-500,#6b7280); }
  .te-sc-v { font-size:27px; font-weight:900; color:var(--gray-900,#111827); line-height:1.15; margin:3px 0 4px; }
  .te-sc-me .te-sc-v { color:#15803d; }
  .te-sc-s { font-size:12px; font-weight:600; color:var(--gray-500,#6b7280); word-break:keep-all; }
  .te-sc-s .up { color:#15803d; font-weight:800; } .te-sc-s .down { color:#dc2626; font-weight:800; }
  .te-lbcard { background:#fff; border:1px solid rgba(20,83,45,.07); border-radius:18px; padding:14px 12px 6px; box-shadow:0 4px 14px rgba(20,83,45,.06); margin-bottom:14px; }
  .te-lbfilter { display:flex; gap:7px; padding:0 3px 10px; }
  .te-lbf { flex:0 0 auto; height:30px; padding:0 14px; border-radius:999px; border:0; background:transparent; color:var(--gray-500,#6b7280); font-family:inherit; font-size:12.5px; font-weight:700; cursor:pointer; -webkit-tap-highlight-color:transparent; }
  .te-lbf.on { background:#15803d; color:#fff; font-weight:800; }
  .telb-row { display:flex; align-items:center; gap:11px; padding:11px 8px; border-radius:12px; }
  .telb-row + .telb-row { border-top:1px solid rgba(0,0,0,.05); }
  .telb-row.me { background:#edf7f0; border-top-color:transparent; }
  .telb-rk { flex:0 0 auto; min-width:20px; text-align:center; font-size:14px; font-weight:800; color:var(--gray-400,#9ca3af); }
  .telb-row.me .telb-rk { color:#15803d; }
  .telb-info { flex:1 1 auto; min-width:0; display:flex; flex-direction:column; gap:2px; }
  .telb-nm { font-size:14.5px; font-weight:800; color:var(--gray-900,#111827); word-break:keep-all; }
  .telb-sub { font-size:11.5px; font-weight:600; color:var(--gray-400,#9ca3af); }
  .telb-sc { flex:0 0 auto; font-size:15px; font-weight:900; color:var(--gray-800,#1f2937); }
  .telb-dl { flex:0 0 auto; min-width:26px; text-align:right; font-size:12px; font-weight:800; }
  .telb-dl.up { color:#15803d; } .telb-dl.down { color:#dc2626; } .telb-dl.flat { color:var(--gray-300,#d1d5db); }
  .te-celeb { display:flex; align-items:center; gap:9px; margin-top:4px; padding:12px 10px; border-top:1px solid rgba(0,0,0,.05); }
  .te-celeb-emoji { flex:0 0 auto; font-size:17px; }
  .te-celeb-txt { font-size:12.5px; font-weight:600; color:var(--gray-600,#4b5563); word-break:keep-all; line-height:1.4; }
  /* 생성 위저드 — 대회 기간(1~4일) 칩 */
  .te-days { display:flex; gap:8px; }
  .te-day-chip { flex:0 0 auto; min-width:52px; height:38px; padding:0 12px; border-radius:12px; border:1px solid rgba(20,83,45,.16); background:#fff; color:var(--gray-600,#4b5563); font-family:inherit; font-size:14px; font-weight:700; cursor:pointer; -webkit-tap-highlight-color:transparent; }
  .te-day-chip.active { background:#e4f2e8; border-color:transparent; color:#166534; font-weight:800; }
  /* 단체전 위저드 — 코스(전·후반) 선택: 조별상이 체크박스 + 전/후반 셀 + 칩(플레이 위저드와 동일 규칙) */
  .tw-course-diff { display:flex; align-items:center; gap:9px; margin:16px 0 2px; font-size:14px; font-weight:700; color:var(--gray-700,#374151); cursor:pointer; }
  .tw-course-diff input { width:19px; height:19px; accent-color:var(--green-700,#15803d); flex:0 0 auto; }
  .tw-section-area { margin-top:4px; transition:opacity .15s ease; }
  .tw-section-area.disabled { opacity:.38; pointer-events:none; }
  .tw-sec-cells { display:flex; gap:8px; margin-top:6px; }
  .tw-sec-cell { flex:1; min-width:0; display:flex; align-items:center; gap:7px; padding:12px; border:1.5px solid var(--gray-200,#e5e7eb); border-radius:12px; background:#fff; min-height:48px; box-sizing:border-box; }
  .tw-sec-cell.filled { border-color:var(--green-600,#16a34a); background:#f0f7f1; cursor:pointer; }
  .tw-sec-lbl { font-size:12px; font-weight:800; color:var(--gray-400,#9ca3af); flex:0 0 auto; }
  .tw-sec-val { flex:1; min-width:0; font-size:14.5px; font-weight:800; color:var(--gray-900,#111827); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .tw-sec-cell:not(.filled) .tw-sec-val { color:var(--gray-400,#9ca3af); font-weight:600; }
  .tw-sec-x { flex:0 0 auto; color:var(--green-700,#15803d); font-size:12px; font-weight:800; }
  .cw-cta { width:100%; padding:16px; border:0; border-radius:13px; background:var(--green-700,#15803d); color:#fff; font-family:inherit; font-size:16px; font-weight:800; cursor:pointer; }
  .cw-cta:active { background:var(--green-800,#166534); }
  .cw-cta:active { background:var(--green-800,#166534); }
  .cw-q { font-size:14px; font-weight:800; color:var(--green-900,#14532d); margin:6px 0 11px; }
  .cw-cover { position:relative; width:100%; height:130px; border-radius:14px; overflow:hidden; border:1px solid var(--gray-200,#e0dccf); }
  .cw-cover-in, .cdv-cover-in { display:block; width:100%; height:100%; }
  .comp-cover-svg svg { width:100%; height:100%; display:block; }
  .cw-cover-edit { position:absolute; right:8px; bottom:8px; background:rgba(0,0,0,.55); color:#fff; font-size:11px; font-weight:800; padding:5px 10px; border-radius:999px; }
  .cw-title { width:100%; margin-top:10px; padding:11px 12px; border:1px solid var(--gray-300,#d8d3c6); border-radius:11px; font-family:inherit; font-size:15px; font-weight:800; box-sizing:border-box; background:var(--app-surface,#fff); color:var(--green-900,#14532d); }
  .cw-presets { display:flex; gap:8px; margin-top:10px; overflow-x:auto; -webkit-overflow-scrolling:touch; padding-bottom:2px; }
  .cw-pth { width:54px; height:54px; border-radius:11px; overflow:hidden; flex:0 0 auto; border:2px solid transparent; padding:0; background:none; cursor:pointer; }
  .cw-pth.on { border-color:var(--green-700,#15803d); }
  .cw-pth-in { display:block; width:100%; height:100%; }
  .cw-upl { width:54px; height:54px; border-radius:11px; flex:0 0 auto; border:1px dashed #b9b3a2; background:var(--app-surface,#fff); color:#8a8577; font-size:22px; cursor:pointer; }
  .cw-upl.on { border-color:var(--green-700,#15803d); color:var(--green-700,#15803d); }
  .cw-opt { display:flex; align-items:center; gap:11px; width:100%; padding:12px; border:1px solid var(--gray-200,#e0dccf); border-radius:12px; background:var(--app-surface,#fff); margin-bottom:8px; cursor:pointer; text-align:left; }
  .cw-opt.sel { border:2px solid var(--green-700,#15803d); padding:11px; }
  .cw-opt-tx { flex:1; min-width:0; }
  .cw-opt-tt { display:block; font-size:14px; font-weight:800; color:var(--gray-900,#1f2937); }
  .cw-opt-sb { display:block; font-size:11.5px; color:var(--gray-500,#6b7280); margin-top:2px; line-height:1.35; }
  .cw-opt-ck { color:var(--green-700,#15803d); font-weight:900; font-size:16px; }
  .cw-segrow { display:flex; gap:6px; }
  .cw-seg { flex:1; padding:10px 4px; border:1px solid var(--gray-200,#e0dccf); border-radius:10px; background:var(--app-surface,#fff); font-family:inherit; font-size:12.5px; font-weight:800; color:var(--gray-600,#4b5563); cursor:pointer; }
  .cw-seg.on { background:var(--green-700,#15803d); color:#fff; border-color:var(--green-700,#15803d); }
  .cw-dates { display:flex; align-items:center; gap:8px; margin-top:8px; }
  .cw-dates input { flex:1; padding:9px 10px; border:1px solid var(--gray-300,#d8d3c6); border-radius:9px; font-family:inherit; font-size:13px; background:var(--app-surface,#fff); color:var(--gray-900,#111); }
  .cw-daterange { font-size:12px; color:var(--gray-500,#6b7280); margin-top:7px; }
  .cw-minrow { display:flex; align-items:center; gap:10px; flex-wrap:nowrap; }
  .cw-min { width:52px; flex:0 0 52px; text-align:center; padding:9px 6px; border:1px solid var(--gray-300,#d8d3c6); border-radius:9px; font-family:inherit; font-size:14px; font-weight:800; background:var(--app-surface,#fff); color:var(--gray-900,#111); box-sizing:border-box; }
  .cw-min-lb { flex:1 1 auto; min-width:0; font-size:12px; color:var(--gray-500,#6b7280); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .cw-cnt { display:flex; align-items:flex-start; gap:10px; width:100%; padding:11px; border:1px solid var(--gray-200,#e0dccf); border-radius:11px; background:var(--app-surface,#fff); margin-bottom:7px; cursor:pointer; text-align:left; }
  .cw-cnt.on { border-color:var(--green-700,#15803d); }
  .cw-rad { width:18px; height:18px; border-radius:50%; border:2px solid #cfd4d9; flex:0 0 auto; margin-top:1px; }
  .cw-cnt.on .cw-rad { border-color:var(--green-700,#15803d); background:radial-gradient(var(--green-700,#15803d) 44%, #fff 48%); }
  .cw-cnt-tt { display:block; font-size:12.5px; font-weight:800; color:var(--gray-900,#1f2937); }
  .cw-cnt-sb { display:block; font-size:10.5px; color:var(--gray-500,#6b7280); margin-top:2px; line-height:1.3; }
  .cw-inv { display:flex; align-items:center; gap:10px; width:100%; padding:9px 4px; border:0; border-bottom:1px solid #efece2; background:none; cursor:pointer; text-align:left; }
  .cw-av { width:34px; height:34px; border-radius:50%; background:#dfe3e6; color:#6b7280; display:flex; align-items:center; justify-content:center; font-weight:800; font-size:13px; flex:0 0 auto; background-size:cover; background-position:center; }
  .cw-inv-nm { flex:1; font-size:14px; font-weight:700; color:var(--gray-900,#1f2937); }
  .cw-inv-h { color:#9ca3af; font-weight:600; font-size:12px; }
  .cw-chk { width:22px; height:22px; border-radius:6px; border:2px solid #cfd4d9; flex:0 0 auto; display:flex; align-items:center; justify-content:center; color:#fff; font-size:13px; font-weight:900; }
  .cw-chk.on { background:var(--green-700,#15803d); border-color:var(--green-700,#15803d); }
  .cw-note { font-size:11px; color:#9ca3af; margin-top:9px; line-height:1.45; }
  .cw-note b { color:var(--green-700,#15803d); font-weight:800; }
  .cw-gav { flex:0 0 auto; }
  /* Step3 선택 멤버 상단 스트립 */
  .cw-selbar { margin:0 0 12px; padding:10px 12px; background:var(--green-50,#eef7f0); border:1px solid var(--green-200,#bbe3c6); border-radius:12px; }
  .cw-selbar-lb { font-size:11.5px; font-weight:800; color:var(--green-800,#166534); margin-bottom:8px; }
  .cw-selbar-lb b { color:var(--green-700,#15803d); }
  .cw-selchips { display:flex; flex-wrap:wrap; gap:6px; }
  .cw-selchip { display:inline-flex; align-items:center; gap:6px; padding:3px 8px 3px 3px; border:1px solid var(--green-200,#bbe3c6); border-radius:999px; background:#fff; font-family:inherit; font-size:12px; font-weight:700; color:var(--gray-800,#1f2937); cursor:pointer; max-width:100%; }
  .cw-selchip-nm { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .cw-selchip-x { font-style:normal; color:var(--gray-400,#9ca3af); font-size:14px; line-height:1; }
  /* net 게임수 부족자 '직접 입력' 플래그 */
  .cw-hc-fix { display:inline-block; margin-left:6px; padding:1px 7px; border-radius:999px; background:var(--amber-50,#fef3c7); color:var(--amber-700,#b45309); font-size:10.5px; font-weight:800; vertical-align:1px; }
  .cw-hrow { display:flex; align-items:center; gap:10px; padding:8px 2px; border-bottom:1px solid #efece2; }
  .cw-hnm { flex:1; font-size:13.5px; font-weight:700; color:var(--gray-900,#1f2937); min-width:0; }
  .cw-hc { width:66px; flex:0 0 auto; text-align:center; padding:8px; border:1px solid var(--gray-300,#d8d3c6); border-radius:9px; font-family:inherit; font-size:13px; font-weight:800; background:var(--app-surface,#fff); color:var(--gray-900,#111); }
  .cw-hc.ghost { color:#9ca3af; background:#f2efe7; border-style:dashed; }
  .cw-sum { background:var(--app-surface,#fff); border:1px solid var(--gray-200,#e6e2d6); border-radius:12px; padding:8px 12px; font-size:12.5px; color:var(--gray-700,#374151); }
  .cw-sum div { display:flex; justify-content:space-between; gap:12px; padding:5px 0; }
  .cw-sum div + div { border-top:1px solid #f2efe7; }
  .cw-sum b { color:var(--green-900,#14532d); font-weight:800; text-align:right; }

  /* ===== 단체팀 라이브 이벤트(P2, BETA) ===== */
  .te-beta { display:inline-block; vertical-align:2px; margin-left:5px; padding:1px 7px; border-radius:999px; background:var(--amber-50,#fef3c7); color:var(--amber-700,#b45309); font-size:10px; font-weight:800; letter-spacing:.5px; }
  .cw-input { width:100%; padding:13px 13px; border:1px solid var(--gray-300,#d8d3c6); border-radius:12px; font-family:inherit; font-size:16px; font-weight:700; box-sizing:border-box; background:var(--app-surface,#fff); color:var(--green-900,#14532d); }
  .cw-input::placeholder { color:#b6b1a2; font-weight:600; }
  .te-big { width:100%; display:flex; flex-direction:column; gap:4px; align-items:flex-start; text-align:left; padding:16px; margin-bottom:10px; border:1px solid var(--gray-200,#e0dccf); border-radius:14px; background:var(--app-surface,#fff); cursor:pointer; -webkit-tap-highlight-color:transparent; }
  .te-big:active { transform:scale(.99); background:var(--gray-50,#f9fafb); }
  .te-big-t { font-size:15.5px; font-weight:800; color:var(--green-900,#14532d); }
  .te-big-s { font-size:12px; color:var(--gray-500,#6b7280); line-height:1.4; }
  .te-confirm { background:var(--app-surface,#fff); border:1px solid var(--gray-200,#e6e2d6); border-radius:12px; padding:4px 12px; margin-bottom:4px; }
  .te-cf-row { display:flex; justify-content:space-between; gap:12px; padding:9px 0; font-size:13px; color:var(--gray-600,#4b5563); }
  .te-cf-row + .te-cf-row { border-top:1px solid #f2efe7; }
  .te-cf-row b { color:var(--green-900,#14532d); font-weight:800; text-align:right; }
  .te-name { font-size:19px; font-weight:900; color:var(--green-900,#14532d); margin:2px 2px 6px; line-height:1.25; }
  .te-meta { font-size:12.5px; color:var(--gray-500,#6b7280); margin:0 2px 14px; }
  .te-meta b { color:var(--green-800,#166534); font-weight:800; }
  .te-live { display:inline-flex; align-items:center; gap:4px; color:var(--green-700,#15803d); font-weight:800; }
  .te-live .d { width:7px; height:7px; border-radius:50%; background:var(--green-600,#16a34a); animation:tePulse 1.4s ease-in-out infinite; }
  @keyframes tePulse { 0%,100% { opacity:.35; } 50% { opacity:1; } }
  .te-ended { display:inline-block; margin-left:4px; padding:1px 7px; border-radius:999px; background:var(--gray-200,#e5e7eb); color:var(--gray-600,#4b5563); font-size:10.5px; font-weight:800; }
  .te-seg { margin-bottom:12px; }
  .te-lb { margin-bottom:16px; }
  .clb-val small { font-size:11px; font-weight:700; color:var(--gray-400,#9ca3af); margin-left:1px; }
  .te-start { margin-top:2px; }
  /* 단체팀 이벤트 조 라운드 — 베뉴 자동 지정·잠금(호스트가 정한 골프장). */
  .te-venue-locked { background:var(--gray-100,#f1f3f2) !important; color:var(--gray-500,#6b7280) !important; cursor:not-allowed; }
  .section-tab-cell.te-cell-locked { background:var(--gray-100,#f1f3f2) !important; border-color:var(--gray-200,#e5e7eb) !important; }
  .section-tab-cell.te-cell-locked input { background:transparent !important; color:var(--gray-500,#6b7280) !important; cursor:not-allowed; }
  .section-tab-cell.te-cell-locked .stc-flag { opacity:.5; }
  /* 조별 현황(리스트 → 드릴인 스코어카드) */
  .te-groups-h { font-size:14px; font-weight:800; color:var(--green-900,#14532d); margin:18px 2px 10px; }
  .te-glist { display:flex; flex-direction:column; gap:8px; margin-bottom:16px; }
  .te-grow { width:100%; display:flex; align-items:center; gap:10px; padding:13px 14px; border:0.5px solid var(--gray-200,#e6e2d6); border-radius:12px; background:var(--app-surface,#fff); font-family:inherit; cursor:pointer; text-align:left; -webkit-tap-highlight-color:transparent; }
  .te-grow:active { transform:scale(.99); background:var(--gray-50,#f9fafb); }
  .te-glabel { flex:0 0 auto; font-size:13px; font-weight:800; color:var(--green-800,#166534); background:var(--green-50,#e5f5ea); padding:2px 9px; border-radius:999px; }
  .te-glabel-lg { font-size:14px; padding:3px 11px; }
  .te-ginfo { flex:1 1 auto; min-width:0; display:flex; flex-direction:column; gap:2px; }
  .te-groster { min-width:0; font-size:13px; color:var(--gray-800,#1f2937); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; line-height:1.35; }
  .te-gm-n { font-weight:600; }
  .te-gm-n.cap { font-weight:800; color:var(--green-800,#166534); }
  .te-gm-dot { color:var(--gray-300,#d1d5db); margin:0 5px; }
  .te-gm-none { color:var(--gray-400,#9ca3af); font-weight:600; }
  .te-gstat { font-size:11.5px; font-weight:600; color:var(--gray-400,#9ca3af); }
  .te-gchev { flex:0 0 auto; color:var(--gray-300,#d1d5db); font-size:20px; font-weight:700; }
  /* 드릴인 — 라운드 시작 전 조원 명단 */
  .te-gd-roster { display:flex; flex-direction:column; gap:4px; margin-top:12px; }
  .te-gd-mrow { display:flex; align-items:center; gap:11px; padding:11px 12px; border:0.5px solid var(--gray-200,#e6e2d6); border-radius:12px; background:var(--app-surface,#fff); }
  .te-gd-mnm { flex:1 1 auto; min-width:0; font-size:15px; font-weight:700; color:var(--gray-900,#111827); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .te-back-row { display:inline-flex; align-items:center; gap:4px; margin:2px 0 12px; padding:6px 2px; background:none; border:0; font-family:inherit; font-size:14px; font-weight:800; color:var(--green-700,#15803d); cursor:pointer; -webkit-tap-highlight-color:transparent; }
  .te-gd-head { display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin:0 2px 6px; }
  .te-gd-meta { font-size:12px; color:var(--gray-500,#6b7280); }
  .te-sc-wrap { padding:2px 0 12px; overflow-x:auto; -webkit-overflow-scrolling:touch; }
  .te-sc { width:100%; border-collapse:collapse; margin-top:6px; table-layout:fixed; }
  .te-sc td, .te-sc th { text-align:center; font-size:11px; padding:4px 1px; color:var(--gray-700,#374151); border-bottom:1px solid #f4f2ec; font-weight:600; }
  .te-sc .te-sc-nm { text-align:left; width:52px; font-weight:700; color:var(--gray-900,#111827); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .te-sc-head th { color:var(--gray-400,#9ca3af); font-weight:700; }
  .te-sc-par td { color:var(--gray-400,#9ca3af); font-weight:600; }
  .te-sc-tot { font-weight:800; color:var(--green-800,#166534); }
  .te-sc-empty { color:#d1d5db; }
  .te-sc .sp-shape-wrap { width:20px; height:17px; }
  .te-sc .sp-g { font-size:11px; font-weight:800; color:var(--gray-800,#1f2937); }
  .te-sc .sp-parc { color:var(--gray-500,#6b7280); font-weight:700; }
  /* 시상식(Phase 2) */
  .te-awards-cta { background:var(--gold,#f59e0b) !important; margin-bottom:8px; }
  .te-awards-cta:active { background:#d98a06 !important; }
  .te-aw-hero { text-align:center; padding:8px 0 18px; }
  .te-aw-hero-ic { font-size:44px; line-height:1; }
  .te-aw-hero-t { font-size:20px; font-weight:900; color:var(--green-900,#14532d); margin-top:8px; }
  .te-aw-hero-s { font-size:12.5px; color:var(--gray-500,#6b7280); margin-top:4px; }
  .te-aw-card { border:0.5px solid var(--gray-200,#e6e2d6); border-radius:14px; background:var(--app-surface,#fff); padding:13px 15px; margin-bottom:11px; }
  .te-aw-big { border:1.5px solid var(--gold,#f59e0b); background:#fffdf6; }
  .te-aw-head { display:flex; align-items:center; gap:8px; margin-bottom:10px; }
  .te-aw-ico { font-size:19px; line-height:1; }
  .te-aw-title { flex:1 1 auto; min-width:0; font-size:13.5px; font-weight:800; color:var(--green-900,#14532d); }
  .te-aw-edit { flex:0 0 auto; font-family:inherit; font-size:12px; font-weight:800; color:var(--green-700,#15803d); background:var(--green-50,#e5f5ea); border:0; border-radius:999px; padding:5px 11px; cursor:pointer; -webkit-tap-highlight-color:transparent; }
  .te-aw-wins { display:flex; flex-direction:column; gap:10px; }
  .te-aw-win { display:flex; align-items:center; gap:11px; }
  .te-aw-big .te-aw-nm { font-size:18px; }
  .te-aw-wt { min-width:0; }
  .te-aw-nm { font-size:15px; font-weight:800; color:var(--gray-900,#111827); }
  .te-aw-sub { font-size:12px; color:var(--gray-500,#6b7280); margin-top:1px; }
  .te-aw-note { font-size:12px; color:var(--green-700,#15803d); font-weight:700; margin-top:2px; }
  .te-aw-empty { font-size:13px; color:var(--gray-400,#9ca3af); padding:2px 0; }
  .te-aw-add { width:100%; padding:13px; border:1px dashed var(--green-300,#a7d7b6); border-radius:12px; background:none; color:var(--green-700,#15803d); font-family:inherit; font-size:13.5px; font-weight:800; cursor:pointer; -webkit-tap-highlight-color:transparent; margin-top:2px; }
  .te-awp-list { max-height:44vh; overflow-y:auto; margin-bottom:10px; }
  .te-awp-row { width:100%; display:flex; align-items:center; gap:10px; padding:9px 4px; border:0; border-bottom:1px solid #f1efe8; background:none; font-family:inherit; cursor:pointer; text-align:left; -webkit-tap-highlight-color:transparent; }
  .te-awp-row.sel { background:var(--green-50,#e5f5ea); border-radius:8px; }
  .te-awp-nm { flex:1 1 auto; min-width:0; font-size:14px; font-weight:700; color:var(--gray-900,#111827); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .te-awp-g { flex:0 0 auto; font-size:11px; color:var(--gray-400,#9ca3af); }

  /* 조 대기실(waiting room) — 최소 스타일, 기존 cw-/comp- 재사용 */
  .te-gwait-head { margin:2px 2px 14px; }
  .te-gwait-t { font-size:18px; font-weight:900; color:var(--green-900,#14532d); line-height:1.25; }
  .te-gwait-s { font-size:13px; color:var(--gray-500,#6b7280); margin-top:3px; }
  .te-gcode { display:flex; align-items:center; justify-content:space-between; gap:10px; padding:14px 16px; background:var(--green-50,#e5f5ea); border-radius:14px; margin-bottom:10px; }
  .te-gcode-l { font-size:13px; font-weight:700; color:var(--green-800,#166534); }
  .te-gcode-v { font-size:24px; font-weight:900; letter-spacing:3px; color:var(--green-900,#14532d); }
  .te-gcode-r { display:flex; align-items:center; gap:12px; }
  .te-gcode-share { flex:0 0 auto; width:38px; height:38px; border:0; border-radius:11px; background:var(--green-600,#16a34a); color:#fff; display:inline-flex; align-items:center; justify-content:center; cursor:pointer; -webkit-tap-highlight-color:transparent; box-shadow:0 1px 3px rgba(20,83,45,.25); }
  .te-gcode-share:active { transform:scale(.94); }
  .te-gcode-share .pack-icon { width:19px; height:19px; background:#fff; }
  .te-gcode { margin-bottom:18px; }
  .te-gm-list { display:flex; flex-direction:column; gap:8px; margin-bottom:18px; }
  .te-gm-row { display:flex; align-items:center; gap:10px; padding:11px 14px; border:0.5px solid var(--gray-200,#e6e2d6); border-radius:12px; background:var(--app-surface,#fff); }
  .te-gm-nm { flex:1 1 auto; min-width:0; font-size:14px; font-weight:700; color:var(--gray-900,#111827); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .te-gm-cap { font-size:11px; font-weight:800; color:var(--green-700,#15803d); background:var(--green-50,#e5f5ea); padding:2px 7px; border-radius:999px; }
  .te-gm-kick { flex:0 0 auto; font-size:12px; font-weight:700; color:var(--danger,#dc2626); background:transparent; border:1px solid rgba(220,38,38,.35); border-radius:999px; padding:5px 12px; cursor:pointer; -webkit-tap-highlight-color:transparent; }
  .te-gwait-note { text-align:center; margin-top:6px; }

  /* 챌린지 상세(가민식) */
  .cdv-body { flex:1; display:flex; flex-direction:column; overflow-y:auto; overflow-x:hidden; -webkit-overflow-scrolling:touch; padding-bottom:8px; scrollbar-width:none; }
  .cdv-body::-webkit-scrollbar { display:none; }
  .cdv-spacer { flex:1 0 10px; }
  /* 헤더 우측 '⋯' 슬롯 */
  .cw-hr { flex:0 0 44px; display:flex; align-items:center; justify-content:center; }
  .cw-kebab { width:44px; height:44px; display:flex; align-items:center; justify-content:center; border:0; background:none; color:#1c5734; font-size:24px; line-height:1; cursor:pointer; -webkit-tap-highlight-color:transparent; }
  .cw-kebab:active { opacity:.4; }
  /* 부제(순위 산정) — 클릭 시 설명 모달 */
  .cdv-meta-btn { display:block; width:100%; border:0; background:none; font-family:inherit; cursor:pointer; }
  .cdv-info-i { color:var(--gray-400,#9ca3af); font-size:12px; margin-left:2px; }
  .comp-info-p { font-size:14px; line-height:1.6; color:var(--gray-800,#374151); margin:4px 0 8px; font-weight:600; }
  .comp-info-sub { font-size:12px; color:var(--gray-500,#6b7280); margin:0 0 14px; }
  .cdv-cover { position:relative; width:100%; height:150px; overflow:hidden; }
  .cdv-cover-grad { position:absolute; inset:0; background:linear-gradient(180deg, rgba(0,0,0,0) 40%, rgba(0,0,0,.55) 100%); }
  .cdv-cover-tx { position:absolute; left:16px; right:16px; bottom:12px; }
  .cdv-cover-name { font-size:19px; font-weight:900; color:#fff; letter-spacing:-.3px; }
  .cdv-cover-sub { font-size:12.5px; color:rgba(255,255,255,.9); margin-top:2px; }
  .cdv-hero { text-align:center; padding:18px 0 4px; }
  .cdv-name { text-align:center; font-size:19px; font-weight:900; letter-spacing:-.3px; color:var(--green-900,#14532d); margin:6px 16px 0; }
  .cdv-hero-av { display:inline-flex; width:96px; height:96px; border-radius:50%; background:#dfe3e6 center/cover no-repeat; align-items:center; justify-content:center; border:3px solid var(--green-600,#1e9e56); }
  .cdv-hero-i { font-size:34px; font-weight:800; color:#6b7280; background:var(--green-50,#eef7f0); }
  .cdv-hero-nm { font-size:16px; font-weight:800; color:var(--green-900,#14532d); margin-top:8px; }
  .cdv-hero-lb { font-size:12px; color:var(--gray-500,#6b7280); margin-top:1px; }
  .cdv-meta { text-align:center; font-size:12.5px; font-weight:700; color:var(--gray-600,#4b5563); margin-top:6px; }
  .cdv-note { text-align:center; font-size:11px; color:var(--gray-400,#9ca3af); margin:3px 16px 12px; line-height:1.4; }
  .cdv-cmt-h { font-size:13px; font-weight:800; color:var(--green-900,#14532d); margin:16px 16px 6px; }
  .cdv-cmts { padding:0 16px; }
  .cdv-cmt { display:flex; gap:9px; align-items:flex-start; padding:7px 0; }
  .cdv-cmt-av { width:28px; height:28px; border-radius:50%; background:#dfe3e6 center/cover no-repeat; color:#6b7280; display:flex; align-items:center; justify-content:center; font-weight:800; font-size:11px; flex:0 0 auto; }
  .cdv-cmt-tx { font-size:13px; color:var(--gray-800,#374151); line-height:1.45; }
  .cdv-cmt-tx b { color:var(--gray-900,#111); font-weight:800; margin-right:4px; }
  .cdv-cmt-empty { font-size:12.5px; color:#9ca3af; padding:4px 0 8px; }
  .cdv-detail-actions { display:flex; gap:8px; padding:14px 16px 4px; }
  .cdv-detail-actions .comp-manage-btn, .cdv-detail-actions .comp-leave { flex:1; }
  .cdv-cmt-bar { position:sticky; bottom:0; display:flex; gap:8px; align-items:center; padding:9px 12px; padding-bottom:max(9px,env(safe-area-inset-bottom)); background:var(--app-bg,#F7F9F7); border-top:1px solid var(--gray-200,#ece8dd); margin-top:8px; }
  .cdv-cmt-input { flex:1; padding:10px 13px; border:1px solid var(--gray-300,#d8d3c6); border-radius:999px; font-family:inherit; font-size:13.5px; background:var(--app-surface,#fff); color:var(--gray-900,#111); }
  .cdv-cmt-send { border:0; background:none; color:var(--green-700,#15803d); font-family:inherit; font-size:14px; font-weight:800; cursor:pointer; padding:6px 8px; flex:0 0 auto; }

  /* 코스 상세 — 평가자 원형프로필 스택 + 'greener 한마디' 스와이프 */
  .cd-revs { display:flex; align-items:center; flex-wrap:wrap; margin:0 0 12px; padding-left:7px; }
  .cd-rev-av { margin-left:-7px; border:2px solid var(--app-surface,#fff); box-shadow:0 0 0 0.5px rgba(0,0,0,.04); }
  .cd-rev-more { margin-left:6px; font-size:12px; font-weight:700; color:var(--gray-500,#6b7280); }
  .cd-h-say { display:flex; align-items:center; justify-content:space-between; }
  .cd-say-hint { font-size:11px; font-weight:600; color:var(--gray-400,#9ca3af); }
  .cd-say { display:flex; overflow-x:auto; scroll-snap-type:x mandatory; -webkit-overflow-scrolling:touch; margin:0 -2px 6px; }
  .cd-say::-webkit-scrollbar { display:none; }
  .cd-say-slide { flex:0 0 100%; scroll-snap-align:center; display:flex; align-items:center; gap:10px; padding:10px 12px; box-sizing:border-box; background:var(--app-surface,#fff); border:1px solid var(--gray-200,#ece8dd); border-radius:12px; }
  .cd-say-slide + .cd-say-slide { margin-left:8px; }
  .cd-say-av { flex:0 0 auto; }
  .cd-say-tx { flex:1; min-width:0; font-size:13.5px; color:var(--gray-800,#374151); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
