  /* ===== 라운드 기록 풀스크린 페이지 — Profile/Statistics 에서 진입. body.viewing-history = open. ===== */
  .history-page {
    position: fixed;
    inset: 0;
    background: var(--app-bg); /* 전 화면 공통 배경 변수 */
    z-index: 9000;
    transform: translateX(100%);
    transition: transform 0.28s cubic-bezier(0.32, 0.72, 0, 1);
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    padding: calc(env(safe-area-inset-top, 0px) + 8px) 16px calc(env(safe-area-inset-bottom, 0px) + 24px);
    visibility: hidden;
    overscroll-behavior-y: contain;   /* 위/아래 끝에서 당길 때 브라우저 새로고침(pull-to-refresh) 전파 차단 */
  }
  /* 단체조 인라인 보드 — 우리조|단체조 토글 아래에 조별 현황을 같은 페이지 안에서 렌더(별도 페이지 아님). */
  .sp-te-board { padding: 6px 0 8px; }
  .sp-te-board .te-name { margin-top: 2px; }
  .sp-te-board .te-gd-back { display: inline-flex; align-items: center; gap: 2px; margin: 2px 0 8px; padding: 6px 10px 6px 4px; background: none; border: none; font: inherit; font-weight: 700; font-size: 14px; color: var(--green-700, #15803d); cursor: pointer; }
  .sp-te-board .te-gd-back:active { opacity: 0.6; }
  body.viewing-history #historyPage,
  body.viewing-spectate #spectatePage,
  body.viewing-settings #settingsPage,
  body.viewing-notif #notifPage,
  body.viewing-weather #weatherPage,
  body.viewing-compose #composePostPage {
    transform: translateX(0);
    visibility: visible;
  }
  body.viewing-compose .bottom-nav, body.viewing-compose #buildChip { display:none !important; }
  body.viewing-compose { overflow:hidden; }
  /* 날씨 상세를 닫을 때 양쪽 화살표를 먼저 감춘 뒤 다음 프레임에 페이지를 슬라이드한다. */
  #weatherPage.weather-closing .history-page-header,
  body.weather-detail-closing .global-back-chevron {
    display: none !important;
    visibility: hidden !important;
    opacity: 0 !important;
    transition: none !important;
  }
  /* 게시물 작성(사진 추가) 화면 */
  #composePostPage .cmp-header { display:flex; align-items:center; justify-content:space-between; padding:6px 4px 14px; }
  #composePostPage .cmp-header .history-page-title { flex:1; text-align:center; }
  .cmp-done { min-width:44px; min-height:44px; background:none; border:none; color:var(--green-700,#15803d); font-family:inherit; font-size:16px; font-weight:800; cursor:pointer; padding:6px 8px; -webkit-tap-highlight-color:transparent; }
  .cmp-card { background:#fff; border:1px solid var(--gray-200,#e5e7eb); border-radius:18px; padding:18px; box-shadow:0 4px 16px rgba(20,83,45,0.05); margin-bottom:20px; }
  .cmp-card-h { font-size:17px; font-weight:800; color:var(--gray-900,#111827); margin-bottom:12px; }
  .cmp-card-row { display:flex; align-items:center; justify-content:space-between; gap:12px; }
  .cmp-chip { display:inline-block; background:var(--green-50,#eef7f0); color:var(--green-700,#15803d); font-size:11.5px; font-weight:800; border-radius:999px; padding:3px 10px; margin-bottom:8px; }
  .cmp-venue { font-size:17px; font-weight:800; color:var(--gray-900,#111827); }
  .cmp-date { font-size:13px; color:var(--gray-500,#6b7280); margin-top:4px; }
  .cmp-total { font-size:26px; font-weight:900; color:var(--green-800,#166534); flex-shrink:0; }
  .cmp-sec-head { display:flex; align-items:center; justify-content:space-between; margin:0 2px 10px; }
  .cmp-sec-title { font-size:15px; font-weight:800; color:var(--gray-900,#111827); }
  .cmp-sec-hint { font-size:12.5px; color:var(--gray-400,#9ca3af); }
  .cmp-photo-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:10px; }
  .cmp-photo-cell { aspect-ratio:1/1; border-radius:14px; border:1.5px dashed var(--gray-300,#d1d5db); background:var(--gray-50,#f9fafb); display:flex; flex-direction:column; align-items:center; justify-content:center; gap:6px; color:var(--gray-300,#d1d5db); overflow:hidden; position:relative; }
  .cmp-photo-cell.add { border:1.5px solid var(--green-200,#bbe3c6); background:var(--green-50,#eef7f0); color:var(--green-700,#15803d); cursor:pointer; -webkit-tap-highlight-color:transparent; }
  .cmp-photo-cell.add span { font-size:12px; font-weight:700; }
  .cmp-photo-cell img { width:100%; height:100%; object-fit:cover; }
  .cmp-photo-cell .cmp-rm { position:absolute; top:6px; right:6px; width:26px; height:26px; border-radius:50%; border:1.5px solid rgba(255,255,255,0.85); padding:0; display:flex; align-items:center; justify-content:center; background:rgba(17,24,39,0.5); -webkit-backdrop-filter:blur(6px); backdrop-filter:blur(6px); color:#fff; cursor:pointer; box-shadow:0 2px 8px rgba(0,0,0,0.28); transition:transform .12s ease, background .12s ease; -webkit-tap-highlight-color:transparent; }
  .cmp-photo-cell .cmp-rm:active { transform:scale(0.86); background:rgba(17,24,39,0.72); }
  .cmp-photo-cell .cmp-rm svg { width:12px; height:12px; display:block; }
  .cmp-tip { display:flex; align-items:flex-start; gap:8px; background:rgba(255,244,214,0.7); border-radius:12px; padding:12px 14px; font-size:12.5px; color:var(--gray-700,#374151); line-height:1.5; margin:16px 0 22px; }
  .cmp-emoji-row { display:flex; gap:8px; overflow-x:auto; padding-bottom:4px; scrollbar-width:none; }
  .cmp-emoji-row::-webkit-scrollbar { display:none; }
  .cmp-emoji { flex:0 0 auto; width:52px; height:52px; border-radius:14px; border:1.5px solid var(--gray-200,#e5e7eb); background:#fff; font-size:24px; cursor:pointer; -webkit-tap-highlight-color:transparent; display:flex; align-items:center; justify-content:center; }
  .cmp-emoji.on { border-color:var(--green-600,#16a34a); background:var(--green-50,#eef7f0); box-shadow:0 2px 8px rgba(20,83,45,0.15); }
  .cmp-emoji-clear { background:none; border:none; color:var(--green-700,#15803d); font-family:inherit; font-size:13px; font-weight:700; cursor:pointer; }
  .cmp-memo { width:100%; box-sizing:border-box; min-height:72px; resize:none; border:1px solid var(--gray-200,#e5e7eb); border-radius:14px; padding:14px; font-family:inherit; font-size:14.5px; background:#fff; color:var(--gray-900,#111827); }
  .cmp-memo:focus { outline:none; border-color:var(--green-600,#16a34a); }
  .cmp-memo-count { text-align:right; font-size:11.5px; color:var(--gray-400,#9ca3af); margin-top:4px; }
  .cmp-vis { display:flex; align-items:center; gap:10px; width:100%; box-sizing:border-box; background:#fff; border:1px solid var(--gray-200,#e5e7eb); border-radius:14px; padding:15px 16px; font-family:inherit; cursor:pointer; -webkit-tap-highlight-color:transparent; }
  .cmp-vis .cmp-vis-title { font-size:14.5px; font-weight:800; color:var(--gray-900,#111827); }
  .cmp-vis .cmp-vis-val { margin-left:auto; display:inline-flex; align-items:center; gap:4px; font-size:13.5px; font-weight:700; color:var(--gray-500,#6b7280); }
  .cmp-vis .cmp-vis-chev { width:13px; height:13px; flex-shrink:0; display:block; }
  /* 알림 페이지 — 닫을 때도 슬라이드(오른쪽으로 사라짐). visibility 를 슬라이드 끝까지 유지. */
  #notifPage, #composePostPage { transition: transform 0.28s cubic-bezier(0.32, 0.72, 0, 1), visibility 0s linear 0.28s; }
  body.viewing-notif #notifPage, body.viewing-compose #composePostPage { transition: transform 0.28s cubic-bezier(0.32, 0.72, 0, 1), visibility 0s linear 0s; }
  body.viewing-history .bottom-nav,
  body.viewing-spectate .bottom-nav,
  body.viewing-settings .bottom-nav,
  body.viewing-notif .bottom-nav { display: none !important; }
  body.viewing-history #buildChip,
  body.viewing-spectate #buildChip,
  body.viewing-settings #buildChip,
  body.viewing-notif #buildChip { display: none !important; }
  body.viewing-history, body.viewing-spectate, body.viewing-settings, body.viewing-notif { overflow: hidden; }
  /* 라이브 피드 카드 + 관전 표 */
  .live-dot { display:inline-block; width:8px; height:8px; border-radius:50%; background:#ef4444; box-shadow:0 0 0 0 rgba(239,68,68,0.5); animation: livePulse 1.6s infinite; }
  @keyframes livePulse { 0%{box-shadow:0 0 0 0 rgba(239,68,68,0.5);} 70%{box-shadow:0 0 0 6px rgba(239,68,68,0);} 100%{box-shadow:0 0 0 0 rgba(239,68,68,0);} }
  /* 'LIVE' 배지 칩 — 라이브 없으면 회색, 있으면 빨강 + 빛번짐 반짝. */
  .live-chip { display:inline-flex; align-items:center; font-size:10px; font-weight:900; letter-spacing:0.6px; color:var(--gray-400,#9ca3af); background:var(--gray-100,#f3f4f6); border:1px solid var(--gray-200,#e5e7eb); border-radius:6px; padding:2.5px 6px; line-height:1; transition:color .3s, background .3s, border-color .3s; }
  .live-chip.on { color:#fff; background:#ef4444; border-color:#ef4444; animation: liveGlow 1.5s ease-in-out infinite; }
  @keyframes liveGlow {
    0%,100% { box-shadow:0 0 4px 0 rgba(239,68,68,0.45), 0 0 0 0 rgba(239,68,68,0.35); }
    50%     { box-shadow:0 0 14px 3px rgba(239,68,68,0.85), 0 0 0 4px rgba(239,68,68,0); }
  }
  /* 라이브 없음 — 활동 카드 톤의 한 바디 */
  .live-empty-card { background:var(--app-surface); -webkit-backdrop-filter:blur(14px) saturate(150%); backdrop-filter:blur(14px) saturate(150%); border:1px solid var(--app-surface-border); border-radius:16px; padding:22px 16px; box-shadow:var(--app-surface-shadow); display:flex; flex-direction:column; align-items:center; text-align:center; }
  .live-empty-card .lec-title { font-size:13.5px; font-weight:700; color:var(--gray-600,#4b5563); }
  .live-card { display:block; width:100%; padding:14px; background:var(--app-surface); border:1px solid var(--app-surface-border); border-radius:16px; margin-bottom:10px; cursor:pointer; font-family:inherit; text-align:left; -webkit-tap-highlight-color:transparent; box-shadow:var(--app-surface-shadow); }
  .live-card:active { transform:scale(0.99); }
  .live-card-head { display:flex; align-items:center; gap:11px; }
  .live-avatar { position:relative; width:44px; height:44px; border-radius:50%; background:var(--green-700); color:white; display:flex; align-items:center; justify-content:center; font-size:18px; font-weight:800; flex-shrink:0; }
  .live-badge { position:absolute; right:-1px; bottom:-1px; width:12px; height:12px; border-radius:50%; background:#ef4444; border:2px solid white; }
  .live-info { flex:1; min-width:0; }
  .live-name { font-size:14.5px; font-weight:800; color:var(--gray-900); }
  .live-tag { font-size:10px; font-weight:900; color:#ef4444; border:1px solid #fecaca; border-radius:4px; padding:1px 4px; margin-left:4px; vertical-align:middle; }
  .live-venue { font-size:12px; color:var(--gray-500); margin-top:2px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .live-viewers { font-size:11px; color:var(--green-700,#15803d); font-weight:700; margin-top:3px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .live-watch { font-size:12.5px; font-weight:800; color:var(--green-700); flex-shrink:0; }
  .live-progress { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); margin-top:12px; padding:10px 0 2px; border-top:1px solid rgba(20,83,45,.1); }
  .live-progress-item { min-width:0; text-align:center; border-right:1px solid rgba(20,83,45,.09); }
  .live-progress-item:last-child { border-right:0; }
  .live-progress-value { display:block; color:var(--green-900,#14532d); font-size:20px; line-height:1.15; font-weight:900; white-space:nowrap; }
  .live-progress-label { display:block; margin-top:3px; color:var(--gray-500,#6b7280); font-size:10.5px; font-weight:700; white-space:nowrap; }
  /* 최근 스코어 칸 — score shape 를 값 크기에 맞게 키워 숫자와 겹치지 않게. */
  .live-progress-value .sp-shape-wrap { width:36px; height:30px; vertical-align:middle; }
  .live-progress-value .sp-g { font-size:15px; font-weight:900; }
  .live-progress-empty { margin-top:11px; padding-top:10px; border-top:1px solid rgba(20,83,45,.1); color:var(--gray-500,#6b7280); font-size:11.5px; font-weight:700; text-align:center; }

  /* ===== 게임/기록 진행 status bar (스코어카드 상단) — 좌:진행도 / 우:정산 순위 ===== */
  /* 라이브(진행중) — 흰 박스 컨테이너(예전 스타일). 완료 시엔 .gsb-complete 로 박스 제거. */
  .game-statusbar { position:relative; display:flex; align-items:stretch; gap:9px; background:#fff; border:1px solid var(--gray-200,#e5e7eb); border-radius:16px; padding:13px 10px 10px; margin:0 2px 12px; box-shadow:0 1px 2px rgba(15,40,25,.04); overflow:visible; }
  /* 진행 완료 — 박스 제거(배경 직접) + 콘텐츠 균등 배치. */
  .game-statusbar.gsb-complete { background:none; border:none; border-radius:0; padding:2px 2px 6px; margin:0 0 8px; box-shadow:none; }
  /* 최소 송금 진입 ⓘ — 우측 상단 모서리. 캡처에는 제외. */
  .game-statusbar .gsb-info { position:absolute; top:6px; right:8px; width:18px; height:18px; border-radius:50%; border:1px solid var(--gray-300,#d1d5db); background:#fff; color:var(--gray-500,#6b7280); font-size:11px; font-weight:900; font-style:italic; line-height:1; font-family:Georgia,'Times New Roman',serif; padding:0; cursor:pointer; display:flex; align-items:center; justify-content:center; -webkit-tap-highlight-color:transparent; z-index:2; }
  .game-statusbar .gsb-info:active { background:var(--gray-100,#f3f4f6); }
  .card.capturing .game-statusbar .gsb-info { display:none !important; }
  .settle-detail-body .min-transfer-wrap { display:block; }
  .settle-detail-body .min-transfer-title { font-size:13px; font-weight:800; color:var(--green-900,#14532d); margin-bottom:8px; }
  .game-statusbar .gsb-prog { flex:0 0 auto; display:flex; flex-direction:column; justify-content:center; gap:6px; padding-right:8px; border-right:1px solid var(--gray-100,#f3f4f6); }
  .game-statusbar .gsb-live { display:inline-flex; align-items:center; gap:5px; font-size:10.5px; font-weight:800; color:var(--green-700,#15803d); }
  .game-statusbar .gsb-live .d { width:7px; height:7px; border-radius:50%; background:var(--green-600,#16a34a); }
  .game-statusbar .gsb-live.done { color:var(--green-800,#166534); }
  .game-statusbar .gsb-holes { font-size:18px; font-weight:900; color:var(--green-900,#14532d); line-height:1; letter-spacing:-.02em; }
  .game-statusbar .gsb-holes small { font-size:11.5px; font-weight:800; color:var(--gray-400,#9ca3af); }
  /* 18홀 — 9개씩 2줄 (grid 9열). */
  .game-statusbar .gsb-dots { display:grid; grid-template-columns:repeat(9, 5px); gap:3px; }
  .game-statusbar .gsb-dots i { width:5px; height:5px; border-radius:50%; background:var(--gray-200,#e5e7eb); }
  .game-statusbar .gsb-dots i.on { background:var(--green-600,#16a34a); }
  /* 우측 순위칩 — 4인도 안 잘리게 shrink 허용(2·3인은 기본폭 유지+가운데정렬). overflow visible 로 왕관/가장자리 안 잘림. */
  .game-statusbar .gsb-ranks { flex:1; min-width:0; display:flex; justify-content:space-around; gap:6px; overflow:visible; }
  .game-statusbar .gsb-rk { flex:1 1 0; max-width:100px; min-width:0; display:flex; flex-direction:column; align-items:center; gap:5px; position:relative; padding-top:5px; }
  .game-statusbar .gsb-crown { position:absolute; top:-12px; font-size:15px; line-height:1; }
  .game-statusbar .gsb-av { width:50px; height:50px; border-radius:50%; display:grid; place-items:center; font-size:19px; font-weight:900; overflow:hidden; border:2px solid #fff; box-shadow:0 1px 4px rgba(0,0,0,.14); background:var(--gray-100,#f3f4f6); color:var(--gray-400,#9ca3af); }
  .game-statusbar .gsb-av.init { background:var(--gray-100,#f3f4f6); color:var(--gray-400,#9ca3af); }
  /* 그리너 계정(사진 미설정) — 초록 이니셜. 비계정 게스트만 회색. */
  .game-statusbar .gsb-av.init.greener { background:var(--green-700,#15803d); color:#fff; }
  /* 캐논 아바타(greenerAvatarHtml, .gav)를 상태바 칩에 쓸 때 — 50px + 흰 테두리·그림자만 얹음(색/사진/원형은 .gav가 담당). */
  .game-statusbar .gav.gsb-av-c { border:2px solid #fff; box-shadow:0 1px 4px rgba(0,0,0,.14); }
  .game-statusbar .gsb-nm { font-size:13px; font-weight:800; color:var(--gray-800,#374151); max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .game-statusbar .gsb-mon { font-size:13px; font-weight:900; font-variant-numeric:tabular-nums; letter-spacing:-.02em; max-width:none; overflow:visible; text-overflow:clip; white-space:nowrap; }
  .game-statusbar .gsb-mon.pos { color:var(--green-700,#15803d); }
  .game-statusbar .gsb-mon.neg { color:#dc2626; }
  .game-statusbar .gsb-rank { font-size:11px; font-weight:800; color:var(--gray-400,#9ca3af); }
  /* 상세모드 지표 타일(Score·FW·GIR·Putt) — 제목 위 + 값 박스(테두리만, fill 없이) 크게. */
  .game-statusbar .gsb-stats { gap:8px; flex:1; }
  .game-statusbar .gsb-stat { flex:1 1 0; min-width:0; display:flex; flex-direction:column; align-items:stretch; gap:5px; }
  .game-statusbar .gsb-stat-l { font-size:11px; font-weight:800; color:var(--gray-500,#6b7280); white-space:nowrap; text-align:center; }
  .game-statusbar .gsb-stat-v { font-size:19px; font-weight:900; color:var(--green-900,#14532d); line-height:1; white-space:nowrap; text-align:center; padding:13px 4px; border:1px solid var(--gray-200,#e5e7eb); border-radius:12px; background:none; }
  .game-statusbar .gsb-stat-v .gsb-stat-u, .game-statusbar .gsb-stat-v span { font-size:12px; font-weight:800; color:var(--green-700,#15803d); }
  .game-statusbar .gsb-stat-v .gsb-stat-empty { font-size:13px; font-weight:700; color:var(--gray-400,#9ca3af); }
  /* 1인 단순기록 — 순위칩 대신 프로필+이름+점수 가로 간단 표기. */
  .game-statusbar .gsb-solo { display:flex; align-items:center; gap:10px; flex:1; min-width:0; padding:2px 4px; }
  .game-statusbar .gsb-solo-nm { font-size:15px; font-weight:800; color:var(--gray-900,#111827); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .game-statusbar .gsb-solo-sc { font-size:17px; font-weight:900; color:var(--green-900,#14532d); margin-left:auto; white-space:nowrap; }
  /* 기록 모드에선 정산이 없어도 status bar 노출(대비파 순위). 위저드 단계에선 숨김. */
  #gameCard.wizard-active .game-statusbar { display:none !important; }
  .sp-meta { text-align:center; margin-bottom:14px; }
  body.detail-editing .sp-meta { margin-bottom:8px; }
  body.detail-editing .sp-sec-label { margin-top:8px; margin-bottom:5px; }
  body.detail-editing #spectateBody { padding-top:6px; }
  .sp-venue { font-size:16px; font-weight:800; color:var(--gray-900); }
  .sp-venue-line { display:inline-flex; align-items:center; justify-content:center; gap:7px; line-height:1.2; vertical-align:middle; }
  .sp-venue-line > span { display:inline-flex; align-items:center; line-height:1.2; }
  .sp-venue-line .sp-venue-divider { color:var(--gray-500,#6b7280); font-weight:700; }
  /* 관전 행(공용: 관전 페이지 .sp-viewers · 메인 스코어카드 .sc-viewers-chip) — 라이브면 항상 표시.
     좌: '관전' 헤더 + 관전자(없으면 안내) / 우: LIVE + 라이브댓글(💬). 배경 없음. */
  .sp-viewers, .sc-viewers-chip { display:flex; align-items:center; justify-content:space-between; gap:10px; width:100%; box-sizing:border-box; text-align:left; font-size:12.5px; font-weight:700; color:var(--green-700,#15803d); background:transparent; padding:2px 0 8px; margin:0; }
  .scv-left { display:inline-flex; align-items:center; gap:6px; min-width:0; overflow:hidden; white-space:nowrap; }
  .scv-label { flex:0 0 auto; color:var(--green-800,#166534); font-weight:800; }
  .scv-names { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .scv-none { flex:0 1 auto; color:var(--gray-500,#6b7280); font-weight:600; }
  .scv-right { flex:0 0 auto; display:inline-flex; align-items:center; gap:9px; }
  .scv-live { flex:0 0 auto; display:inline-flex; align-items:center; gap:5px; color:#ef4444; font-weight:800; letter-spacing:0.3px; }
  .scv-chat { flex:0 0 auto; position:relative; top:1px; display:inline-flex; align-items:center; justify-content:center; width:32px; height:32px; padding:0; border:0; background:none; cursor:pointer; -webkit-tap-highlight-color:transparent; }
  .scv-chat .sp-chat-ico { display:block; overflow:visible; color:var(--gray-700,#374151); }
  /* 미열람 개수 — 빨간 원형 숫자 배지(우상단). '안읽음' 텍스트 없이 숫자만. */
  .scv-unread { position:absolute; top:-3px; right:-4px; min-width:16px; height:16px; padding:0 4px; box-sizing:border-box; border-radius:999px; background:#ef4444; color:#fff; font-size:10px; font-weight:800; line-height:1; border:1.5px solid #fff; pointer-events:none; display:flex; align-items:center; justify-content:center; }
  .scv-unread[hidden] { display:none; }
  #spectatePage .uvh-live { display:none; }   /* 베뉴 LIVE 는 관전자 행으로 이동(중복 제거) */
  /* 저장 기록 수정 — 의미가 모호한 연필 대신 텍스트 액션으로 표시. */
  .sp-edit-pencil { background:rgba(255,255,255,.68); border:1px solid rgba(20,83,45,.18); border-radius:999px; cursor:pointer; font-family:inherit; font-size:10.5px; font-weight:800; line-height:1; padding:6px 10px; color:var(--green-700); -webkit-tap-highlight-color:transparent; white-space:nowrap; }
  /* 게임 정산(세로) 토글 — 게임으로 진행한 라운드에서만 베뉴명 우측에 노출 */
  .sp-venue-center { text-align:center; }
  .sp-progress-row { position:relative; display:flex; align-items:center; justify-content:center; margin-top:3px; min-height:26px; }
  .sp-progress-row .sp-progress { margin-top:0; }
  /* 스코어/게임 모드 토글 (세그먼트) — 관전 헤더 우측. 세로 게임뷰의 #scModeToggle 와 동일 톤. */
  .sp-mode-toggle, .sc-mode-toggle { position:absolute; right:0; top:50%; transform:translateY(-50%); display:inline-flex; background:rgba(255,255,255,0.72); border:1px solid rgba(20,83,45,0.18); border-radius:999px; padding:2px; box-shadow:0 2px 8px rgba(20,83,45,0.05); -webkit-tap-highlight-color:transparent; }
  .spm-btn, .scm-btn { background:none; border:none; font-family:inherit; font-size:12px; font-weight:800; color:var(--gray-500,#6b7280); border-radius:999px; padding:5px 12px; cursor:pointer; -webkit-tap-highlight-color:transparent; }
  .spm-btn.active, .scm-btn.active { background:var(--green-700,#15803d); color:#fff; box-shadow:0 1px 5px rgba(20,83,45,0.18); }
  .sp-edit-pencil:active { opacity:0.6; }
  .sp-editing-tag { font-size:11px; font-weight:800; color:var(--green-700); margin-left:6px; vertical-align:middle; }
  /* 확인 화면 인라인 편집 — 저장/취소 바 (본문 하단, in-flow) */
  .sp-edit-bar { display:flex; gap:10px; justify-content:center; margin:20px 0 8px; }
  .sp-edit-bar button { font-family:inherit; font-size:14px; font-weight:800; padding:12px 22px; border-radius:999px; cursor:pointer; -webkit-tap-highlight-color:transparent; border:none; }
  .sp-edit-save { flex:2; max-width:300px; background:var(--green-700, #15803d); color:#fff; box-shadow:0 3px 10px rgba(20,83,45,0.28); }
  .sp-edit-cancel { flex:1; max-width:130px; background:var(--gray-100, #f1f3f2); color:var(--gray-600, #4b5563); border:1px solid var(--gray-200, #e5e7eb) !important; }
  /* 개인 기록 하단 세로 액션 스택 (다른 게임 모드와 통일) */
  .sp-action-stack { display:flex; flex-direction:column; gap:10px; margin:22px 0 6px; }
  .sp-action-stack button { font-family:inherit; font-size:15px; font-weight:800; padding:14px; border-radius:12px; cursor:pointer; -webkit-tap-highlight-color:transparent; border:none; width:100%; }
  .sp-stack-save { background:var(--green-700, #15803d); color:#fff; box-shadow:0 3px 10px rgba(20,83,45,0.28); }
  .sp-stack-share { background:#FEE500; color:#191600; }
  .sp-stack-cancel { background:transparent !important; color:var(--gray-500, #6b7280); font-weight:700 !important; font-size:13.5px !important; padding:6px !important; }
  /* 편집 셀 — 탭하면 키패드 (네이티브 input 대신 → 숫자 깨짐 방지) */
  /* 높이 고정 + 상하 padding 제거 → par(숫자)든 shape(24×20)든 셀 높이 동일 → 입력해도 행 높이 불변. */
  .sp-cellbtn { width:100%; box-sizing:border-box; height:26px; display:flex; align-items:center; justify-content:center; text-align:center; font-size:12px; font-weight:800; line-height:1; padding:0; border:1px solid var(--gray-300, #d1d5db); border-radius:6px; background:#fff; color:var(--gray-900,#111827); font-family:inherit; cursor:pointer; -webkit-tap-highlight-color:transparent; }
  .sp-cellbtn:active { background:var(--green-50, #f0fdf4); border-color:var(--green-700,#15803d); }
  /* 현재 dock에서 마킹 중인 셀 강조 — 어디를 입력 중인지 스코어카드에서 바로 보이게. */
  .sp-cellbtn.sp-cellbtn-cur { outline:2px solid var(--green-600,#16a34a); outline-offset:-1px; background:var(--green-50,#f0fdf4) !important; border-color:var(--green-600,#16a34a) !important; }
  .sp-cellbtn-par { color:var(--gray-500,#6b7280); font-weight:700; border-style:dashed; }
  /* 점수 셀 — 테두리/배경 없이 score shape(원·사각)만 보이게 */
  .sp-cellbtn.sp-cellbtn-score { border-color:transparent; background:transparent; }
  .sp-cellbtn.sp-cellbtn-score:active { background:transparent; border-color:transparent; }
  /* 편집 이름/베뉴 입력 */
  .sp-name-edit { width:100%; box-sizing:border-box; text-align:center; font-size:12px; font-weight:700; padding:4px 2px; border:1px solid var(--gray-300,#d1d5db); border-radius:6px; background:#fff; color:var(--gray-900,#111827); font-family:inherit; }
  .sp-name-edit:focus, .sp-vinput:focus { outline:none; border-color:var(--green-700,#15803d); }
  /* N1 '플레이어 관리' 토글 — 전/후반 토글 위. 평소 컨트롤 숨김, 이 버튼 눌러야 행 컨트롤 노출. */
  .sp-roster-bar { display:flex; justify-content:space-between; align-items:center; margin:2px 0 6px; }
  .sp-roster-toggle { font-size:12px; font-weight:700; padding:5px 12px; border:1px solid var(--gray-300,#d1d5db); border-radius:16px; background:#fff; color:var(--gray-700,#374151); cursor:pointer; }
  .sp-roster-toggle.on { background:var(--green-700,#15803d); border-color:var(--green-700,#15803d); color:#fff; }
  .sp-roster-add { font-size:12px; font-weight:700; padding:5px 12px; border:1px dashed var(--green-700,#15803d); border-radius:16px; background:#fff; color:var(--green-700,#15803d); cursor:pointer; }
  .sp-roster-actions { display:flex; align-items:center; gap:6px; }
  .sp-roster-cancel { font-size:12px; font-weight:700; padding:5px 12px; border:1px solid var(--gray-300,#d1d5db); border-radius:16px; background:#fff; color:var(--gray-600,#4b5563); cursor:pointer; }
  .sp-roster-cancel:active { background:var(--gray-100,#f3f4f6); }
  /* N1 로스터 편집 — 이름칸(전체폭 유지) 아래 줄에 위/아래 스왑 + 삭제. ⚠️ td 에 display:flex 금지(table-cell 깨져 이름 접힘) — 입력=block, 컨트롤만 flex. */
  td.sp-name-roster { padding:3px 2px !important; }
  .sp-name-roster .sp-name-edit { display:block; width:100%; box-sizing:border-box; }
  .sp-rctl { display:flex; justify-content:center; align-items:center; gap:4px; margin-top:3px; }
  .sp-rmv-btn { width:17px; height:15px; line-height:13px; padding:0; font-size:8px; border:1px solid var(--gray-300,#d1d5db); border-radius:3px; background:#fff; color:var(--gray-600,#4b5563); cursor:pointer; }
  /* 로스터 모드 — 이름/핸디캡은 이름칸 전체폭, ▲▼(슬롯 변경)는 이름칸 우측(=1번홀 위) 상단에 띄움(절대배치, 텍스트 안 가림).
     점수셀은 흐리게 → ▲▼가 1번홀 위에 떠도 방해 안 됨. */
  /* 로스터(게임 모드) — 기록모드와 동일: 이름칸 안에 이름/핸디 + ▲▼(공용 .sp-rctl = 아래·가로·소형). 점수셀만 흐림. */
  .sp-gtable .sp-name-roster { padding:3px 2px !important; }
  .sp-gtable .sp-name-roster .sp-roster-nc { display:flex; flex-direction:column; align-items:center; gap:3px; min-width:0; }
  .sp-gtable .sp-name-roster .sp-roster-nc .sp-gname { line-height:1.15; font-weight:800; text-align:center; }
  .sp-gtable-roster tbody td:not(.sp-name):not(.sp-del-cell) { opacity:.3; }   /* 나머지 스코어 살짝 흐릿 */
  .sp-rmv-btn:disabled { opacity:.28; cursor:default; }
  /* 행삭제 — 위저드 스와이프 삭제와 동일한 빨간 시각. 행 가장우측 셀(총점 자리)에 배치. */
  td.sp-del-cell { text-align:center; padding:2px !important; }
  .sp-row-del { display:inline-flex; align-items:center; justify-content:center; width:26px; height:26px; padding:0; font-size:13px; line-height:1; border:none; border-radius:7px; background:#dc2626; color:#fff; cursor:pointer; -webkit-tap-highlight-color:transparent; }
  .sp-row-del:active { background:#b91c1c; }
  .sp-venue-edit { display:flex; flex-direction:column; gap:6px; align-items:center; }
  /* 글라스 스타일 — 반투명 흰색 + blur (하단 네비/카드와 동일 톤) */
  .sp-vinput { font-family:inherit; font-size:15px; font-weight:800; text-align:center; border:1px solid rgba(255,255,255,0.55); border-radius:10px; padding:8px 14px; background:rgba(255,255,255,0.45); -webkit-backdrop-filter:blur(12px); backdrop-filter:blur(12px); box-shadow:0 2px 8px rgba(20,83,45,0.06); color:var(--gray-900,#111827); max-width:240px; }
  .sp-vinput::placeholder { color:var(--gray-400,#9ca3af); font-weight:600; }
  .sp-vinput:focus { outline:none; border-color:var(--green-700,#15803d); background:rgba(255,255,255,0.7); }
  .sp-vinput-row { display:flex; gap:6px; }
  .sp-vinput-sm { font-size:12.5px; font-weight:700; padding:7px 10px; width:120px; }
  /* 편집 키패드 (바텀시트) — 관전 페이지(z-index 9000) 위 */
  /* 단순기록 점수 dock — 상세모드(.hs-backdrop)와 동일하게 투명·비차단 → 모달이 아닌 하단 고정 dock. 스코어카드 셀이 계속 보이고 탭 가능. */
  .sp-pad-backdrop { position:fixed; inset:0; z-index:9590; background:transparent; display:none; pointer-events:none; }
  .sp-pad-backdrop.open { display:block; }
  .sp-pad { position:fixed; left:0; right:0; bottom:0; z-index:9600; background:#fff; border-top-left-radius:18px; border-top-right-radius:18px; box-shadow:0 -6px 24px rgba(0,0,0,0.18); padding:14px 16px calc(16px + env(safe-area-inset-bottom,0px)); transform:translateY(115%); transition:transform .22s cubic-bezier(0.32,0.72,0,1); max-width:560px; margin:0 auto; }
  .sp-pad.open { transform:translateY(0); }
  .sp-pad-header { display:flex; justify-content:space-between; align-items:center; margin-bottom:12px; }
  .sp-pad-title { font-size:14px; font-weight:800; color:var(--green-900,#14532d); }
  .sp-pad .sp-pad-grid { margin-bottom:10px; }
  /* 단순기록 점수 입력 — 본문 인라인 dock (상세기록 포맷). 크림 글라스, 풀폭 3×3 키패드. position:fixed 아님. */
  .sp-pad-inline { margin-top:12px; border-radius:16px; padding:11px 14px calc(12px + env(safe-area-inset-bottom,0px)); box-shadow:0 4px 16px rgba(20,83,45,0.06); }
  .sp-pad-cream { background:rgba(250,248,242,0.74); -webkit-backdrop-filter:blur(16px) saturate(140%); backdrop-filter:blur(16px) saturate(140%); border:1px solid rgba(20,83,45,0.12); }
  .sp-pad-inline .hs-head-nav { display:flex; align-items:center; justify-content:space-between; margin-bottom:10px; }
  .sp-pad-inline .hs-title { flex:1; text-align:center; font-size:14px; font-weight:800; color:var(--green-900,#14532d); }
  .spk-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:8px; }
  .spk-grid-par { grid-template-columns:repeat(4,1fr); }
  .spk-btn { position:relative; width:100%; height:58px; padding:4px 6px 6px; border:1px solid var(--gray-200,#e5e7eb); border-radius:12px; background:#fff; font-family:inherit; font-weight:800; color:var(--gray-800,#1f2937); cursor:pointer; display:grid; grid-template-rows:minmax(0,1fr) auto; align-items:center; justify-items:center; gap:0; box-shadow:0 2px 7px rgba(17,24,39,.035); -webkit-tap-highlight-color:transparent; }
  .spk-btn:active { transform:scale(0.96); }
  .spk-btn .sp-shape-wrap { align-self:center; width:50px; height:35px; }
  .spk-btn .sp-g { align-self:center; font-size:21px; font-weight:850; line-height:1; color:var(--gray-800,#1f2937); }
  .spk-caption { align-self:end; font-size:9px; line-height:1; font-weight:650; color:var(--gray-500,#6b7280); }
  .spk-par { font-size:18px; height:52px; }
  .spk-is-par { background:#fff; border-color:var(--gray-200,#e5e7eb); }
  .spk-is-par .sp-g { color:var(--green-900,#14532d); font-size:22px; }
  /* 키패드 score shape — 언더파 하트는 빨강, 오버파 스퀘어는 파랑. */
  .spk-under { color:#dc2626; }
  .spk-over { color:#2563eb; }
  .spk-cur-score { background:#ecfdf5 !important; border-color:#86efac !important; box-shadow:0 0 0 2px rgba(22,163,74,.08); }
  .spk-is-par.spk-cur-score { outline:none; }
  /* 기본/상세 토글 — 전/후반 토글과 같은 우측 x위치 */
  .sc-vb-right .sp-detail-half { position:absolute; right:8px; top:50%; transform:translateY(-50%); margin-left:0; }
  .sp-vbar .sc-vb-right { padding:0 !important; }
  .spk-clear { margin-top:10px; width:100%; min-height:42px; font-size:13px; font-weight:700; color:var(--red,#dc2626); background:transparent; border:1px solid #f3d0d0; border-radius:12px; cursor:pointer; -webkit-tap-highlight-color:transparent; }
  .spk-clear:active { background:#fef2f2; }
  .spk-grid-ox { grid-template-columns:repeat(2,1fr); }
  .spk-ox.on { background:#166534; color:#fff; border-color:#166534; }
  .spk-ox-x.on { background:#dc2626; color:#fff; border-color:#dc2626; }
  .spk-na { grid-column:1 / -1; text-align:center; color:var(--gray-500,#6b7280); font-size:13px; padding:16px 0; }
  /* 내 상세 기록 토글 */
  .sp-detail-toggle { display:flex; align-items:center; gap:10px; width:100%; margin:12px 0 4px; padding:11px 14px; border:1px solid rgba(20,83,45,.14); border-radius:12px; background:#fff; font-family:inherit; cursor:pointer; -webkit-tap-highlight-color:transparent; }
  .sp-detail-toggle.on { background:#eef7f0; border-color:var(--green-600,#16a34a); }
  .sp-detail-toggle .sdt-ico { width:24px; height:24px; flex-shrink:0; display:grid; place-items:center; border-radius:7px; background:var(--green-50,#eef7f0); color:var(--green-800,#166534); font-weight:800; }
  .sp-detail-toggle.on .sdt-ico { background:var(--green-700,#15803d); color:#fff; }
  .sp-detail-toggle .sdt-txt { flex:1; text-align:left; font-size:13.5px; font-weight:800; color:var(--gray-900,#111827); display:flex; flex-direction:column; line-height:1.25; }
  .sp-detail-toggle .sdt-sub { font-size:10.5px; font-weight:600; color:var(--gray-500,#6b7280); }
  .sp-detail-toggle .sdt-state { font-size:12px; font-weight:800; color:var(--gray-400,#9ca3af); }
  .sp-detail-toggle.on .sdt-state { color:var(--green-700,#15803d); }
  .sp-mydetail td.sp-name { color:var(--green-700,#15803d); font-weight:700; }
  /* 남의 상세(네트워크 읽기전용) — 내 상세와 구분되게 살짝 흐리고 회색 라벨. */
  .sp-detail-ro td { opacity:.72; }
  .sp-detail-ro td.sp-name { color:var(--gray-500,#6b7280); font-weight:700; }
  /* 네트워크 상세뷰 — 참가자별 섹션(이름 헤더 + 그 사람 FW/GIR/Putt 스코어카드). */
  .sp-detail-person { margin-bottom:18px; }
  .sp-detail-person:last-child { margin-bottom:0; }
  .sp-detail-person-nm { font-size:13.5px; font-weight:800; color:var(--green-800,#166534); margin:2px 2px 8px; }
  /* 개인 기록 홀별 입력 바텀시트 */
  .sp-hole-tap { cursor:pointer; }
  /* 배경 — 상단 스코어카드 스크롤 가능하도록 탭 차단 안 함(pointer-events:none). */
  .hs-backdrop { position:fixed; inset:0; z-index:9590; background:transparent; display:none; pointer-events:none; }
  /* 시트 — 하단 고정, 내용 전체가 한 화면에(스크롤 없음). */
  .hs-sheet { position:fixed; left:0; right:0; bottom:0; z-index:9600; background:#fff; border-top-left-radius:18px; border-top-right-radius:18px; box-shadow:0 -8px 28px rgba(0,0,0,0.22); padding:10px 16px calc(10px + env(safe-area-inset-bottom,0px)); transform:translateY(115%); transition:transform .22s cubic-bezier(0.32,0.72,0,1); max-width:560px; margin:0 auto; overflow:hidden; }
  .hs-sheet.open { transform:translateY(0); }
  /* 상세 기록 — 섹션 라벨 줄 우측 컴팩트 전/후반 토글 */
  .sp-half-toggle { display:inline-flex; gap:0; padding:2px; border:1px solid rgba(20,83,45,0.18); border-radius:999px; background:rgba(255,255,255,0.72); box-shadow:0 2px 8px rgba(20,83,45,0.05); flex-shrink:0; }
  .sp-half-toggle button { border:none; border-radius:999px; background:transparent; color:var(--gray-500,#6b7280); font-family:inherit; font-size:12px; font-weight:800; padding:5px 12px; cursor:pointer; -webkit-tap-highlight-color:transparent; }
  .sp-half-toggle button.on { background:var(--green-700,#15803d); color:#fff; box-shadow:0 1px 5px rgba(20,83,45,0.18); }
  .sp-detail-half button { padding:4px 11px; font-size:11px; }
  .hs-hit-btn.hs-hit-x.on { background:#dc2626; border-color:#dc2626; color:#fff; }
  /* FW/GIR O/X 두 버튼 한 줄 */
  .hs-inline .hs-hit-opts { display:flex; gap:6px; }
  .hs-inline .hs-hit-opts .hs-hit-btn { flex:1; width:auto; }
  /* 기본 키패드 dock · 내 상세 dock 높이/헤더 위치 통일 — 전환 시 헤더 안 움직이고 입력만 바뀜 */
  .sp-mydetail-dock { margin-top:14px; background:rgba(250,248,242,0.74); -webkit-backdrop-filter:blur(16px) saturate(140%); backdrop-filter:blur(16px) saturate(140%); border:1px solid rgba(20,83,45,0.12); border-radius:16px; padding:12px 14px calc(14px + env(safe-area-inset-bottom,0px)); box-shadow:0 4px 16px rgba(20,83,45,0.06); }
  .sp-pad-inline, .sp-mydetail-dock { box-sizing:border-box; }
  /* 상세 기록 인라인 입력칸 (스코어카드 아래) — 글라스 · 컴팩트 */
  .hs-inline { --hs-btn-size:34px; --hs-btn-gap:5px; --hs-row-width:229px; margin-top:10px; 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:14px; padding:6px 12px 8px; box-shadow:0 4px 16px rgba(20,83,45,0.05); }
  .hs-inline.has-par-seed { --hs-btn-size:38px; --hs-btn-gap:7px; --hs-row-width:263px; padding-top:8px; padding-bottom:10px; }
  /* 상단 네비 줄: ‹ 이전홀   N번홀   다음홀 › */
  .hs-inline .hs-head-nav { display:flex; align-items:center; justify-content:space-between; margin-bottom:4px; }
  .hs-inline .hs-title { font-size:14px; }
  .hs-navbtn { border:none; background:none; color:var(--green-700,#15803d); font-family:inherit; font-size:12.5px; font-weight:800; padding:4px 2px; cursor:pointer; -webkit-tap-highlight-color:transparent; }
  .hs-navbtn:active { opacity:0.5; }
  .hs-inline .hs-row { padding:3px 0; gap:8px; }
  .hs-inline.has-par-seed .hs-row { padding:7px 0; }
  .hs-inline .hs-label { width:40px; font-size:12px; }
  /* 모든 clickable 버튼(par/score/OX/putt) 동일 크기 — 위 스코어카드 셀과 비슷하게 축소 */
  .hs-inline .hs-opt, .hs-inline .hs-ox { flex:0 0 auto; min-width:var(--hs-btn-size); width:var(--hs-btn-size); height:calc(var(--hs-btn-size) - 2px); padding:0; font-size:13px; display:inline-flex; align-items:center; justify-content:center; background:rgba(255,255,255,0.6); }
  .hs-inline .hs-hit-btn { width:100%; min-width:0; height:calc(var(--hs-btn-size) - 2px); padding:0 12px; }
  .hs-inline .hs-hit-opts { flex:0 0 var(--hs-row-width); width:var(--hs-row-width); min-width:0; }
  .hs-score-picker { flex:1; min-width:0; display:flex; align-items:center; gap:12px; }
  .hs-inline.has-par-seed .hs-score-picker { gap:5px; }
  .hs-score-values { display:flex; align-items:center; gap:var(--hs-btn-gap); }
  .hs-inline .hs-score-picker .hs-opt { flex:0 0 var(--hs-btn-size); width:var(--hs-btn-size); min-width:var(--hs-btn-size); font-variant-numeric:tabular-nums; }
  .hs-score-arrow { flex:0 0 24px; width:24px; min-width:24px; height:32px; padding:0; border:none; border-radius:0; background:transparent; color:var(--gray-400,#9ca3af); font-family:inherit; font-size:20px; line-height:1; font-weight:800; cursor:pointer; }
  .hs-inline.has-par-seed .hs-score-arrow { flex-basis:18px; width:18px; min-width:18px; }
  .hs-score-arrow:active { opacity:.45; }
  .hs-score-arrow:disabled { opacity:.22; cursor:default; }
  .hs-inline .hs-opts { gap:var(--hs-btn-gap); flex-wrap:nowrap; overflow-x:visible; }
  /* 좌우 스크롤 힌트 — 가장자리 페이드로 더 있음을 암시 (Score 행) */
  .hs-hrow-wrap { position:relative; flex:1; min-width:0; }
  .hs-hrow-wrap::before, .hs-hrow-wrap::after { content:''; position:absolute; top:0; bottom:0; width:20px; pointer-events:none; z-index:1; }
  .hs-hrow-wrap::before { left:0; background:linear-gradient(to right, rgba(255,255,255,0.85), rgba(255,255,255,0)); }
  .hs-hrow-wrap::after { right:0; background:linear-gradient(to left, rgba(255,255,255,0.85), rgba(255,255,255,0)); }
  /* Score/Putt — 한 줄 가로 스크롤 */
  .hs-hrow { flex:1; display:flex; gap:6px; overflow-x:auto; -webkit-overflow-scrolling:touch; scrollbar-width:none; padding-bottom:2px; }
  .hs-hrow::-webkit-scrollbar { display:none; }
  .hs-hrow .hs-opt { flex:0 0 auto; min-width:66px; }
  .hs-inline .hs-hrow .hs-opt { min-width:var(--hs-btn-size); width:var(--hs-btn-size); }
  /* Score/Putt — 한 줄 가로 스크롤 */
  .hs-hrow { flex:1; display:flex; gap:6px; overflow-x:auto; -webkit-overflow-scrolling:touch; scrollbar-width:none; padding-bottom:2px; }
  .hs-hrow::-webkit-scrollbar { display:none; }
  .hs-hrow .hs-opt { flex:0 0 auto; min-width:66px; }
  /* O/X 버튼 */
  .hs-ox { min-width:52px; padding:9px 0; font-family:inherit; font-size:16px; font-weight:900; border:1.5px solid var(--gray-200,#e5e7eb); border-radius:10px; background:#fff; color:var(--gray-400,#9ca3af); cursor:pointer; -webkit-tap-highlight-color:transparent; }
  .hs-ox-o.on { background:var(--green-700,#15803d); border-color:var(--green-700,#15803d); color:#fff; }
  .hs-ox-x.on { background:var(--gray-500,#6b7280); border-color:var(--gray-500,#6b7280); color:#fff; }
  .hs-hit-btn { width:100%; padding:9px 14px; font-family:inherit; font-size:13px; font-weight:850; border:1.5px solid var(--gray-200,#e5e7eb); border-radius:10px; background:rgba(255,255,255,.72); color:var(--gray-500,#6b7280); cursor:pointer; white-space:nowrap; }
  .hs-hit-btn.on { background:var(--green-700,#15803d); border-color:var(--green-700,#15803d); color:#fff; }
  .hs-head { display:flex; justify-content:space-between; align-items:center; margin-bottom:6px; }
  .hs-title { font-size:18px; font-weight:800; color:var(--green-900,#14532d); }
  .hs-row { display:flex; align-items:center; gap:10px; padding:9px 0; border-bottom:1px solid var(--gray-100,#f3f4f6); }
  .hs-row:last-child { border-bottom:none; }
  .hs-label { width:60px; flex-shrink:0; font-size:13px; font-weight:800; color:var(--gray-600,#4b5563); }
  .hs-label b { display:block; font-size:11px; color:var(--green-700,#15803d); font-weight:800; margin-top:1px; }
  .hs-opts { display:flex; gap:6px; flex-wrap:wrap; flex:1; }
  .hs-opts-score { gap:5px; }
  .hs-opt { min-width:40px; padding:9px 0; flex:0 0 auto; font-family:inherit; font-size:15px; font-weight:800; border:1.5px solid var(--gray-200,#e5e7eb); border-radius:10px; background:#fff; color:var(--gray-800,#1f2937); cursor:pointer; text-align:center; -webkit-tap-highlight-color:transparent; }
  .hs-opt.on { background:var(--green-700,#15803d); color:#fff; border-color:var(--green-700,#15803d); }
  /* 퍼트 — 비후보(또는 이미 선택 후 안 고른 값)만 흐리게. 후보/선택은 기본 스타일 그대로. 흐린 값도 클릭 가능. */
  .hs-opt.hs-dim:not(.on), .spk-btn.hs-dim:not(.on) { opacity:.26; }
  .hs-score.under.on { background:#dc2626; border-color:#dc2626; }
  .hs-score.over.on { background:#2563eb; border-color:#2563eb; }
  /* ===== 단순기록 네트워크 상세 dock — 기본 키패드(cream)와 배경/보더/셀높이 통일 =====
     (색상 .on 규칙은 위 정의를 그대로 사용. 여기선 크기/레이아웃만 오버라이드해 충돌 회피.) */
  .hs-inline.sp-mydetail-dock { background:rgba(250,248,242,0.74); -webkit-backdrop-filter:blur(16px) saturate(140%); backdrop-filter:blur(16px) saturate(140%); border:1px solid rgba(20,83,45,0.12); border-radius:16px; padding:12px 14px calc(14px + env(safe-area-inset-bottom,0px)); }
  .hs-inline.sp-mydetail-dock .hs-head-nav { margin-bottom:6px; }
  .hs-inline.sp-mydetail-dock .hs-body { display:flex; flex-direction:column; gap:9px; }
  .hs-inline.sp-mydetail-dock .hs-row { gap:10px; padding:0; border-bottom:none; }
  .hs-inline.sp-mydetail-dock .hs-label { width:44px; min-width:44px; }
  /* 버튼 공통 — 높이는 행별로: 스코어·펏=정사각(세로=가로), FW/GIR=축소. 상세 dock 전체 높이를 기본 dock(≈200)에 맞춤. */
  .hs-inline.sp-mydetail-dock .hs-opt, .hs-inline.sp-mydetail-dock .hs-hit-btn { min-width:0; width:100%; padding:0; font-size:15px; border-radius:12px; display:flex; align-items:center; justify-content:center; }
  /* Score 행: 화살표 양끝 + 5칸 정사각(세로=가로) */
  .hs-inline.sp-mydetail-dock .hs-score-picker { flex:1; gap:6px; align-items:stretch; }
  .hs-inline.sp-mydetail-dock .hs-score-arrow { flex:0 0 20px; width:20px; min-width:20px; height:auto; font-size:22px; }
  .hs-inline.sp-mydetail-dock .hs-score-values { flex:1; display:grid; grid-template-columns:repeat(5,1fr); gap:6px; }
  .hs-inline.sp-mydetail-dock .hs-score-picker .hs-opt { flex:none; width:100%; min-width:0; height:auto; aspect-ratio:1; }
  /* FW/GIR O·X: 폭 채우는 2칸. 높이를 키워 탭 타깃 확대 + 행 간격(gap)과 함께 FW↔GIR 오터치 방지. */
  .hs-inline.sp-mydetail-dock .hs-hit-opts { flex:1; display:grid; grid-template-columns:repeat(2,1fr); gap:6px; width:auto; }
  .hs-inline.sp-mydetail-dock .hs-hit-btn { height:50px; }
  /* Putt: 6칸 정사각(세로=가로) */
  .hs-inline.sp-mydetail-dock .hs-opts-putt { flex:1; display:grid; grid-template-columns:repeat(6,1fr); gap:6px; }
  .hs-inline.sp-mydetail-dock .hs-opts-putt .hs-opt { height:auto; aspect-ratio:1; }
  /* par3 FW 해당없음 */
  .hs-inline.sp-mydetail-dock .hs-na { flex:1; height:50px; display:flex; align-items:center; padding:0; }
  .hs-toggle { padding:9px 18px; font-family:inherit; font-size:14px; font-weight:800; border:1.5px solid var(--gray-200,#e5e7eb); border-radius:10px; background:#fff; color:var(--gray-500,#6b7280); cursor:pointer; -webkit-tap-highlight-color:transparent; }
  .hs-toggle.on { background:var(--green-50,#f0fdf4); border-color:var(--green-700,#15803d); color:var(--green-700,#15803d); }
  .hs-na { font-size:13px; color:var(--gray-400,#9ca3af); font-weight:600; padding:9px 0; }
  .hs-nav { display:flex; gap:10px; margin-top:16px; }
  .hs-prev { flex:1; padding:12px; border-radius:999px; border:1px solid var(--gray-200,#e5e7eb); background:var(--gray-100,#f1f3f2); color:var(--gray-600,#4b5563); font-weight:800; font-family:inherit; cursor:pointer; }
  .hs-next { flex:2; padding:12px; border-radius:999px; border:none; background:var(--green-700,#15803d); color:#fff; font-weight:800; font-family:inherit; cursor:pointer; box-shadow:0 3px 10px rgba(20,83,45,0.28); }
  /* 피드 사진 올리기 */
  .feed-compose-btn { width:100%; padding:12px; margin-bottom:12px; border-radius:12px; border:1px dashed var(--green-300,#86efac); background:rgba(255,255,255,0.5); color:var(--green-700,#15803d); font-family:inherit; font-size:14px; font-weight:800; cursor:pointer; -webkit-tap-highlight-color:transparent; }
  .feed-compose-btn:active { background:var(--green-50,#f0fdf4); }
  .act-photo { width:100%; max-height:360px; object-fit:cover; border-radius:12px; margin-top:10px; display:block; background:var(--gray-100,#f1f3f2); cursor:zoom-in; }
  /* ===== 라이브 관전 실시간 댓글 팝업 (흰색, 관전 헤더 💬 바로 아래 · 화면 우측 절반) ===== */
  .lc-panel { position:fixed; top:calc(env(safe-area-inset-top,0px) + 58px); right:8px; z-index:100048;
    width:min(50vw,420px); min-width:290px; height:50vh; min-height:320px; max-height:70vh;
    background:rgba(255,255,255,0.90); border:1px solid rgba(0,0,0,0.12); border-radius:16px;
    box-shadow:0 14px 44px rgba(0,0,0,.24); display:none; flex-direction:column; overflow:hidden; }
  .lc-panel.open { display:flex; animation:lcIn .16s ease; }
  @keyframes lcIn { from { opacity:0; transform:translateY(-6px) scale(.98); } to { opacity:1; transform:none; } }
  .lc-head { display:flex; align-items:center; justify-content:space-between; padding:11px 12px; border-bottom:1px solid var(--gray-100,#f1f3f2); flex:0 0 auto; }
  .lc-title { font-size:14px; font-weight:850; color:var(--gray-800,#1f2937); }
  .lc-count { font-size:12px; font-weight:700; color:var(--gray-400,#9ca3af); }
  .lc-x { display:flex; align-items:center; justify-content:center; width:28px; height:28px; padding:0; border:0; border-radius:50%; background:var(--gray-100,#f1f3f2); color:var(--gray-500,#6b7280); font-size:14px; line-height:1; cursor:pointer; }
  .lc-x:active { transform:scale(.9); }
  .lc-body { flex:1 1 auto; min-height:0; overflow-y:auto; -webkit-overflow-scrolling:touch; padding:11px 12px; display:flex; flex-direction:column; gap:12px; }
  .lc-empty { margin:auto; color:var(--gray-400,#9ca3af); font-size:12.5px; text-align:center; }
  .lc-msg { display:flex; align-items:flex-start; gap:8px; }
  .lc-av-wrap { position:relative; flex:0 0 auto; }
  .lc-av { display:block; width:30px; height:30px; border-radius:50%; background-size:cover; background-position:center; background-color:var(--green-50,#eef7f0); }
  .lc-av-i { display:flex; align-items:center; justify-content:center; font-size:12px; font-weight:800; color:var(--green-700,#15803d); }
  /* 플레이어(실제 라운드 참가자) 간접 표시 — 초록 링 + 코너 ⛳ */
  .lc-av-wrap.is-player .lc-av { box-shadow:0 0 0 2px #fff, 0 0 0 3.5px var(--green-500,#22c55e); }
  .lc-av-wrap.is-player::after { content:'⛳'; position:absolute; right:-4px; bottom:-4px; font-size:10px; line-height:1; background:#fff; border-radius:50%; box-shadow:0 0 0 1px rgba(0,0,0,.06); }
  .lc-msg-b { flex:1 1 auto; min-width:0; }
  .lc-msg-h { display:flex; align-items:baseline; gap:5px; }
  .lc-msg-n { font-size:12.5px; font-weight:800; color:var(--gray-800,#1f2937); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:60%; }
  .lc-msg-t { font-size:10.5px; color:var(--gray-400,#9ca3af); flex:0 0 auto; }
  .lc-msg-x { font-size:13px; color:var(--gray-700,#374151); line-height:1.4; word-break:break-word; margin-top:1px; }
  .lc-like { flex:0 0 auto; display:flex; flex-direction:column; align-items:center; gap:1px; border:0; background:none; color:var(--gray-400,#9ca3af); font-size:10px; font-weight:800; cursor:pointer; padding:2px 1px; -webkit-tap-highlight-color:transparent; }
  .lc-like.liked { color:#ef4444; }
  .lc-like-ic { font-size:13px; line-height:1; }
  .lc-foot { flex:0 0 auto; border-top:1px solid var(--gray-100,#f1f3f2); padding:9px 10px; }
  .lc-input-row { display:flex; align-items:center; gap:7px; }
  /* 입력창·이모지 — 패널과 동일 투명도(자체 배경 없이 패널 50%가 그대로 비침), 테두리로만 구분. */
  .lc-input { flex:1 1 auto; min-width:0; border:1px solid rgba(0,0,0,0.18); border-radius:999px; padding:8px 13px; font-family:inherit; font-size:16px; background:transparent !important; -webkit-appearance:none; appearance:none; color:var(--gray-900,#111827); }
  .lc-input::placeholder { color:var(--gray-500,#6b7280); }
  .lc-input:focus { outline:none; border-color:var(--green-500,#22c55e); background:transparent; }
  .lc-send { flex:0 0 auto; display:flex; align-items:center; justify-content:center; width:34px; height:34px; padding:0; border:0; border-radius:50%; background:var(--green-600,#16a34a); cursor:pointer; }
  .lc-send:active { transform:scale(.92); }
  .lc-send svg { width:16px; height:16px; display:block; }
  .lc-emojis { display:flex; gap:6px; margin-top:8px; }
  .lc-emojis button { flex:1 1 0; min-width:0; height:30px; padding:0; border:1px solid rgba(0,0,0,0.12); border-radius:9px; background:transparent; font-size:16px; cursor:pointer; -webkit-tap-highlight-color:transparent; }
  .lc-emojis button:active { transform:scale(.92); }
  /* 관전 헤더 💬 활성(패널 열림) */
  .sp-more-btn.on { background:var(--green-50,#eef7f0); }
  .sp-chat-ico { display:block; overflow:visible; color:var(--gray-700,#374151); }
  .js-lc-btn.on .sp-chat-ico { color:var(--green-700,#15803d); }
  /* 빨간 점 = 미열람(새 채팅/반응) 있을 때만. 평소 숨김. */
  .sp-chat-dot { display:none; }
  .js-lc-btn.has-unread .sp-chat-dot { display:block; }
  /* 사진 전체화면 뷰어 */
  .photo-viewer { position:fixed; inset:0; z-index:100050; background:rgba(0,0,0,0.94); display:none; opacity:0; overflow:hidden; transition:opacity .2s ease; -webkit-tap-highlight-color:transparent; }
  .photo-viewer.open { display:block; opacity:1; }
  .photo-viewer .pv-slides { position:absolute; inset:0; display:flex; overflow-x:auto; overflow-y:hidden; scroll-snap-type:x mandatory; -webkit-overflow-scrolling:touch; scrollbar-width:none; touch-action:pan-x; }
  .photo-viewer .pv-slides::-webkit-scrollbar { display:none; }
  .photo-viewer .pv-slide { flex:0 0 100%; width:100%; height:100%; scroll-snap-align:center; display:flex; align-items:center; justify-content:center; }
  .photo-viewer .pv-slide img { max-width:100%; max-height:100%; width:auto; height:auto; object-fit:contain; display:block; cursor:zoom-out; }
  .photo-viewer .pv-count { position:absolute; top:calc(env(safe-area-inset-top,0px) + 16px); left:50%; transform:translateX(-50%); background:rgba(0,0,0,0.5); color:#fff; font-size:13px; font-weight:700; padding:4px 12px; border-radius:999px; -webkit-backdrop-filter:blur(6px); backdrop-filter:blur(6px); }
  /* 닫기 X — 코스상세 모달(.cd-x)과 동일한 단일 회색원 + 텍스트 ✕ (이중 원 제거) */
  .photo-viewer .pv-close { position:absolute; top:calc(env(safe-area-inset-top,0px) + 14px); right:16px; 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; -webkit-backdrop-filter:blur(6px); backdrop-filter:blur(6px); }
  .photo-viewer .pv-close:active { transform:scale(0.9); }
  /* ===== 원형 프로필 아바타(캐논, greenerAvatarHtml) — 전역 단일 규칙 ===== */
  /*  그리너+사진=사진 / 그리너=진한초록+성 / 게스트=회색+성. 크기는 --gav-sz(기본 32). */
  .gav { position:relative; display:inline-flex; width:var(--gav-sz,32px); height:var(--gav-sz,32px); border-radius:50%; overflow:hidden; flex:0 0 auto; vertical-align:middle; }
  .gav-greener { background:#166534; }   /* 진한 초록 — 그리너(사진 없음) */
  .gav-guest { background:#9ca3af; }      /* 회색 — 비그리너 */
  .gav-i { position:absolute; inset:0; display:flex; align-items:center; justify-content:center; color:#fff; font-weight:800; font-size:calc(var(--gav-sz,32px) * 0.44); line-height:1; }
  .gav-img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
  .gav-onphoto { border:1.5px solid rgba(255,255,255,0.9); box-shadow:0 1px 4px rgba(0,0,0,0.4); }   /* 사진 위 오버레이용 흰 테두리 */
  /* 코스 사진 갤러리 오버레이 — 업로더 프로필(좌상단, clickable) + 하트(우하단) */
  .photo-viewer .cpv-slide { position:relative; }
  .cpv-by { position:absolute; top:calc(env(safe-area-inset-top,0px) + 14px); left:16px; z-index:2; display:flex; align-items:center; gap:7px; }
  .cpv-av { position:relative; width:30px; height:30px; border-radius:50%; overflow:hidden; background:rgba(130,130,130,0.75); border:1.5px solid rgba(255,255,255,0.85); display:block; flex:0 0 auto; }
  .cpv-av-i { position:absolute; inset:0; display:flex; align-items:center; justify-content:center; color:#fff; font-weight:800; font-size:13px; }
  .cpv-av-img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
  .cpv-name { color:#fff; font-size:13px; font-weight:700; text-shadow:0 1px 5px rgba(0,0,0,0.55); }
  .cpv-like { position:absolute; right:18px; bottom:calc(env(safe-area-inset-bottom,0px) + 28px); z-index:2; display:flex; flex-direction:column; align-items:center; gap:2px; border:0; background:none; color:#fff; cursor:pointer; padding:6px; -webkit-tap-highlight-color:transparent; }
  .cpv-heart { font-size:30px; line-height:1; text-shadow:0 1px 7px rgba(0,0,0,0.55); }
  .cpv-like.liked .cpv-heart { color:#ef4444; }
  .cpv-like:active { transform:scale(0.9); }
  .cpv-more { position:absolute; top:calc(env(safe-area-inset-top,0px) + 14px); right:56px; z-index:3; width:32px; height:32px; display:flex; align-items:center; justify-content:center; padding:0; border:0; background:none; color:#fff; font-size:22px; line-height:1; cursor:pointer; text-shadow:0 1px 6px rgba(0,0,0,.55); -webkit-tap-highlight-color:transparent; }
  .cpv-more:active { transform:scale(0.9); }
  .cpv-like-n { font-size:12px; font-weight:800; text-shadow:0 1px 4px rgba(0,0,0,0.55); }
  /* 사진 캐러셀 (최대 5장, 인스타식 도트) */
  .act-carousel { margin-top:10px; position:relative; }
  .act-slides { display:flex; overflow-x:auto; scroll-snap-type:x mandatory; border-radius:12px; -webkit-overflow-scrolling:touch; scrollbar-width:none; background:var(--gray-100,#f1f3f2); }
  .act-slides::-webkit-scrollbar { display:none; }
  .act-slide { flex:0 0 100%; scroll-snap-align:center; width:100%; max-height:360px; object-fit:cover; margin-top:0; border-radius:12px; }
  /* 피드 라운드 — 컨테이너 0/0. 카드는 좌우 16px inset. 우측 16 확보 → single은 여백, multi는 다음 카드 peek 공간. */
  .act-round { }
  .act-person { background: var(--app-surface); border: 1px solid var(--app-surface-border); border-radius: 16px; padding: 14px; box-shadow: var(--app-surface-shadow); box-sizing: border-box; }
  .act-round > .act-person { width: auto; margin: 0 16px; }
  /* 멀티 — 사람만 좌우 스와이프. 카드 폭=화면-36, 좌16, 카드간 gap 6, 다음 카드 peek 14(우측 inset 20). */
  .act-round-track { display:flex; gap:6px; overflow-x:auto; scroll-snap-type:x mandatory; scroll-padding-left:16px; -webkit-overflow-scrolling:touch; scrollbar-width:none; padding-left:16px; padding-right:26px; box-sizing:border-box; }
  .act-round-track::-webkit-scrollbar { display:none; }
  .act-round-track > .act-person { flex:0 0 calc(100vw - 46px); scroll-snap-align:start; }
  /* 캐러셀 카드는 같은 높이로 늘어남 → 세로 flex + footer(달성칩·동반자행) 하단 고정으로 카드 간 정렬. 빈공간(상세행)은 위로 흡수. */
  .act-round-track > .act-person { display:flex; flex-direction:column; }
  .act-round-track .aps-body { display:flex; flex-direction:column; flex:1 1 auto; }
  .act-round-track .aps-foot { margin-top:auto; }
  .act-shared { width: auto; margin: 4px 16px 0; box-sizing: border-box; padding: 0 14px; }
  .act-shared .act-actions { border-top: none; margin-top: 6px; padding-top: 0; }
  .act-shared.has-photo { padding: 14px; margin-top: 0; background: var(--app-surface); border: 1px solid var(--app-surface-border); border-radius: 16px; box-shadow: var(--app-surface-shadow); }
  .act-shared.has-photo .act-actions { margin-top: 10px; }
  .act-shared .act-photo, .act-shared .act-carousel { margin-top: 0; }
  /* 사진 있는 라운드 → 피드+사진 하나의 박스. 내부 박스 제거, 트랙은 박스 전체폭. */
  .act-round.rd-onephoto { width: auto; margin: 0 16px; box-sizing: border-box; background: var(--app-surface); border: 1px solid var(--app-surface-border); border-radius: 16px; box-shadow: var(--app-surface-shadow); overflow: hidden; }
  .act-round.rd-onephoto > .act-person { width: 100%; margin: 0; background: none; border: none; box-shadow: none; border-radius: 0; padding-bottom: 12px; }
  .act-round.rd-onephoto > .act-shared.has-photo { width: 100%; margin: 0; padding: 12px 14px 14px; background: none; border: none; box-shadow: none; border-radius: 0; border-top: 1px solid rgba(0,0,0,0.08); }
  .act-round.rd-onephoto .act-round-track { padding: 0; gap: 0; }
  .act-round.rd-onephoto .act-round-track > .act-person { flex:0 0 100%; background: none; border: none; box-shadow: none; border-radius: 0; }
  /* 활동 피드 + 프로필 내피드 = 공유 규칙. 부모 패딩과 무관하게 화면 full-bleed(100vw)로 통일.
     calc(-50vw + 50%) 이 부모 좌우패딩(피드탭 0 / 프로필탭 16)을 자동 상쇄 → 두 곳 동일.
     카드 좌우 inset은 .act-* 클래스가 담당(공유) → 나중에 한 곳만 고쳐도 양쪽 반영. */
  #activityFeedList, #profileFeedList { width: 100vw; margin-left: calc(-50vw + 50%); margin-right: calc(-50vw + 50%); padding: 0; }
  /* 라운드 카드 상단행 — 좌: 베뉴+타수, 우: 사진 썸네일(정사각). 타일·뱃지는 이 아래 풀폭. */
  .aps-top { display:flex; gap:12px; align-items:flex-start; }
  .aps-top-l { flex:1 1 auto; min-width:0; }
  .act-thumb { flex:0 0 100px; width:100px; align-self:stretch; min-height:62px; position:relative; margin:2px 0 0; padding:0; border:none; border-radius:12px; overflow:hidden; background:var(--gray-100,#f1f3f2); cursor:zoom-in; -webkit-tap-highlight-color:transparent; }
  .act-thumb img { width:100%; height:100%; object-fit:cover; display:block; }
  .act-thumb:active { opacity:0.88; }
  .act-thumb-more { position:absolute; right:6px; bottom:6px; padding:2px 8px; border-radius:999px; font-size:11px; font-weight:800; color:#fff; letter-spacing:0.3px; background:rgba(20,20,20,0.5); -webkit-backdrop-filter:blur(6px); backdrop-filter:blur(6px); border:1px solid rgba(255,255,255,0.25); pointer-events:none; }
  .aps-score { font-size:30px; font-weight:850; color:var(--green-900,#14532d); line-height:1; margin:8px 0 10px; }
  .aps-score-row { display:flex; align-items:baseline; gap:8px; flex-wrap:wrap; margin:8px 0 10px; }
  .aps-score-row .aps-score { margin:0; }
  .aps-kind { font-size:12px; font-weight:600; color:var(--gray-500,#6b7280); white-space:nowrap; }
  .aps-score .aps-ta { font-size:14px; font-weight:700; margin-left:2px; color:var(--gray-600); }
  .aps-none { font-size:15px; color:var(--gray-500); font-weight:700; }
  .aps-badges { display:flex; flex-wrap:wrap; gap:6px; margin:14px 0 0; min-height:34px; align-content:flex-start; }
  .aps-tiles { display:flex; gap:8px; margin-top:10px; }
  /* 캐러셀 정렬용 예약 자리 — 높이만 차지하고 안 보이게(상세 없는 카드의 tiles 슬롯) */
  .aps-tiles-ph { visibility:hidden; }
  .aps-tile { flex:1; background:rgba(20,83,45,0.05); border-radius:10px; padding:8px 6px; text-align:center; }
  /* 미입력 지표 — 값 대신 흐린 작은 글씨 */
  .aps-tv-empty { font-size:12px; font-weight:700; color:var(--gray-400,#9ca3af); }
  .aps-tv { font-size:16px; font-weight:850; color:var(--green-900,#14532d); }
  .aps-tv span { font-size:11px; font-weight:700; }
  .aps-tl { font-size:10.5px; color:var(--gray-500); font-weight:700; margin-top:2px; }
  /* 관전 상세뷰 — status bar 안(우측)에 박스 4개(스코어/FW/GIR/퍼트). 좌: 진행/dots, 우: 박스들이 남은 폭 채움. */
  .gsb-stat-boxes { display:flex; gap:6px; flex:1 1 auto; min-width:0; }
  .gsb-stat-boxes .aps-tile { flex:1 1 0; min-width:0; padding:10px 4px; border-radius:12px; }
  .gsb-stat-boxes .aps-tv { font-size:17px; }
  .gsb-stat-boxes .aps-tv span { font-size:11px; font-weight:800; color:var(--green-700,#15803d); }
  .gsb-stat-boxes .aps-tl { font-size:10px; margin-top:3px; }
  /* 게임 모드 세로 스코어카드 — 홀/Par 열 좁게. */
  /* 세로 스코어카드 — 홀/Par 열 좁게, 플레이어 열 균등. table.sp-vtable 로 specificity 올려 기본 sp-table 규칙(td:last-child:9% 등)을 확실히 덮음. */
  table.sp-vtable th:first-child, table.sp-vtable td:first-child { width:12%; }
  table.sp-vtable th:nth-child(2), table.sp-vtable td:nth-child(2) { width:13%; }
  table.sp-vtable th:last-child, table.sp-vtable td:last-child { width:auto; }
  table.sp-vtable th:nth-child(n+3), table.sp-vtable td:nth-child(n+3) { width:auto; }
  .sp-vtable th, .sp-vtable td { padding:6px 2px; }
  .sp-vtable td.sp-vhole { font-weight:800; color:var(--gray-700,#374151); }
  .sp-vtable td.sp-vpar { font-weight:700; color:var(--gray-500,#6b7280); }
  .sp-vtable tbody tr:nth-child(even) { background:rgba(20,83,45,0.025); }
  .sp-vtable tr.sp-vtot td { font-weight:900; color:var(--green-900,#14532d); border-top:1.5px solid var(--gray-300,#d1d5db); background:rgba(20,83,45,0.05); }
  /* 홀별 정산 서브라인(+2만/-5천) — 셀 점수 아래. */
  .sp-vtable td .sp-vd { display:block; font-size:9px; font-weight:800; line-height:1.1; margin-top:2px; }
  .sp-vtable td .sp-vd.pos { color:var(--green-700,#15803d); }
  .sp-vtable td .sp-vd.neg { color:#dc2626; }
  /* 로컬 게임뷰 서식 통일 — HDCP 색상 + ×2(배판) 행 강조 + 배수 라벨. */
  .sp-vtable tr.sp-vhdcp td { color:var(--green-800,#166534); font-weight:800; }
  .sp-vtable tr.sp-vmul-row { background:rgba(245,158,11,0.10); }
  .sp-vtable tr.sp-vmul-row td.sp-vhole { color:var(--amber-700,#b45309); }
  .sp-vtable tr.sp-vmul-row:nth-child(even) { background:rgba(245,158,11,0.10); }
  .sp-vmul { color:var(--amber-600,#d97706); font-weight:800; font-size:9px; margin-left:1px; vertical-align:2px; }
  .sp-vtable td .sp-near { display:block; font-size:8.5px; font-weight:800; line-height:1.2; color:var(--amber-700,#b45309); background:var(--gold-light,#fef3c7); border-radius:4px; padding:0 3px; margin:0 auto 2px; width:fit-content; }
  .sp-vmul { display:inline-block; font-size:8.5px; font-weight:900; color:#b45309; margin-left:1px; vertical-align:top; }
  .sp-vtable tr.sp-vhdcp td { font-size:9.5px; color:var(--gray-400,#9ca3af); font-weight:700; background:rgba(0,0,0,0.015); }
  /* 게임 가로 스코어카드(Option A 전치) — sp-table 기반. 셀=[스코어밴드][금액밴드] 고정 2단 → 스코어가 항상 같은 세로 위치. */
  .sp-gtable td { vertical-align:top; }
  .sp-gtable .sp-gcell { position:relative; display:flex; flex-direction:column; align-items:center; justify-content:flex-start; }
  .sp-gtable .sp-gsc { position:relative; display:flex; align-items:center; justify-content:center; height:20px; }   /* 스코어밴드 — 고정 높이 */
  .sp-gtable .sp-gmo { display:flex; align-items:center; justify-content:center; height:12px; }                      /* 금액밴드 — 비어도 자리 유지, 세로중앙 */
  .sp-gtable .sp-gmo .sp-vd { font-size:8.5px; font-weight:800; line-height:1; }   /* 셀·계·핸디캡 금액 모두 동일 크기·세로중앙 → 정렬 통일 */
  .sp-gtable .sp-total .sp-gmo .sp-vd { font-size:8.5px; }
  .sp-gtable .sp-gmo .sp-vd.pos { color:var(--green-700,#15803d); }
  .sp-gtable .sp-gmo .sp-vd.neg { color:#dc2626; }
  /* 니어 — 'Near' 배지 + 해당 셀 옅은 노랑으로 강조(초록보다 눈에 잘 띄게). */
  .sp-gtable td.sp-gnear-cell { background:rgba(234,179,8,0.22); }
  .sp-gtable .sp-gnear { position:absolute; top:-4px; right:-2px; font-size:7.5px; font-weight:900; line-height:1; letter-spacing:-0.2px; color:#854d0e; background:rgba(254,240,138,0.98); padding:1px 2.5px; border-radius:3px; z-index:3; }
  /* 배판(배수) 셀 배경 하이라이트 없음 — 흰색 유지. 표시는 홀번호 우측 위 작은 ×N(절대배치, 홀번호 위치 불변). */
  /* 홀 헤더 행만 살짝 키움 — ×N이 상단에 붙어 잘리는 느낌 방지(위쪽 여유 공간 확보). */
  .sp-gtable thead th { position:relative; padding-top:7px !important; padding-bottom:3px !important; }
  .sp-gtable thead th .sp-vmul { position:absolute; top:2px; right:1px; margin:0; color:var(--amber-400,#fbbf24); font-size:6px; font-weight:900; line-height:1; }
  /* 완성홀 헤더 칩 제거 — 홀번호는 항상 기본 흰색(다크그린 헤더서 초록칩이 안 보이던 문제). 탭은 sp-gh-tap 이 담당. */
  .sp-gtable .sp-total .sp-gcell .sp-g { color:var(--green-700,#15803d); font-weight:900; }
  /* 이름=스코어밴드(스코어와 세로중앙 일치), +핸디캡=금액밴드(셀 정산과 세로중앙 일치). 밴드 정렬은 .sp-gsc/.sp-gmo가 담당. */
  .sp-gtable .sp-gname { font-weight:700; color:var(--gray-800,#1f2937); }
  .sp-gtable .sp-name-hdcp { font-size:8.5px; font-weight:800; color:var(--green-700,#15803d); line-height:1; }
  /* 로스터 모드 — 핸디캡 탭 편집 칩(스코어카드에서 바로 변경). */
  .sp-gtable .sp-hdcp-edit { display:inline-block; margin-top:2px; padding:2px 7px; border:1px solid var(--green-500,#22c55e); background:#f0fdf4; color:var(--green-700,#15803d); border-radius:999px; font-size:9.5px; font-weight:800; line-height:1.25; white-space:nowrap; cursor:pointer; -webkit-tap-highlight-color:transparent; }
  .sp-gtable .sp-hdcp-edit:active { background:#dcfce7; }
  /* 계 열 — 총정산 금액(+28.5만 등)이 안 잘리게 폭 확대(폰트는 위에서 8.5px 통일). */
  .sp-gtable th:last-child, .sp-gtable td:last-child { width:13%; }
  /* 우측 상단 장수 표시(1/3) — 글라스. 뷰포트에 들어오면 표시, 3초 머무르면 숨김, 이동 시 재표시 */
  .act-count { position:absolute; top:8px; right:8px; padding:3px 9px; border-radius:999px; font-size:11.5px; font-weight:800; color:#fff; letter-spacing:0.3px; background:rgba(20,20,20,0.32); -webkit-backdrop-filter:blur(8px) saturate(140%); backdrop-filter:blur(8px) saturate(140%); border:1px solid rgba(255,255,255,0.25); pointer-events:none; opacity:1; transition:opacity 0.45s ease; }
  /* 멀티 피드(사람 스와이프) — 1/N 표시. 우상단 ⋯ 메뉴와 겹치지 않게 왼쪽으로. */
  .act-people-wrap { position: relative; }
  .act-people-wrap > .act-count { right: 76px; }
  .act-count.hide { opacity:0; }
  /* 멀티 피드 하단 캐러셀 dots — "멀티 라운드"임을 시각적으로 표시 */
  /* 캐러셀 dots — .act-person 박스 안쪽 하단(사진 유무 무관 통일). 동반자행 아래 여백 확보. */
  .act-dots { display:flex; justify-content:center; gap:6px; margin-top:16px; }
  .act-dot { width:6px; height:6px; border-radius:50%; background:rgba(20,20,20,0.16); transition:width .22s ease, background .22s ease; }
  .act-dot.on { width:16px; border-radius:3px; background:var(--green-700,#15803d); }
  /* 논블로킹 토스트 */
  .g-toast { position:fixed; left:50%; bottom:calc(100px + env(safe-area-inset-bottom,0px)); transform:translateX(-50%) translateY(10px); background:rgba(20,24,20,0.92); color:#fff; padding:11px 18px; border-radius:999px; font-size:13.5px; font-weight:700; z-index:99998; opacity:0; pointer-events:none; transition:opacity .2s, transform .2s; max-width:82%; text-align:center; box-shadow:0 4px 16px rgba(0,0,0,0.25); }
  .g-toast.show { opacity:1; transform:translateX(-50%) translateY(0); }
  /* 테스터 빌드(Capacitor 네이티브)에서만 우측에 버전 뱃지 — 어느 빌드인지 즉시 식별. 옛 TWA엔 안 뜸. */
  .tester-badge { position:fixed; right:6px; bottom:calc(env(safe-area-inset-bottom,0px) + 92px); z-index:100001; background:rgba(20,83,45,0.82); color:#fff; font-size:10px; font-weight:800; letter-spacing:.02em; padding:3px 8px; border-radius:999px; pointer-events:none; box-shadow:0 2px 8px rgba(0,0,0,0.2); }
  /* 사진 업로드 진행 오버레이 */
  .upload-progress { position:fixed; inset:0; z-index:99999; background:rgba(0,0,0,0.35); display:none; align-items:center; justify-content:center; }
  .upload-progress.show { display:flex; }
  .upload-progress .up-box { background:#fff; border-radius:16px; padding:22px 26px; display:flex; flex-direction:column; align-items:center; gap:12px; box-shadow:0 8px 28px rgba(0,0,0,0.2); }
  .upload-progress .up-spinner { width:34px; height:34px; border:3px solid var(--gray-200,#e5e7eb); border-top-color:var(--green-700,#15803d); border-radius:50%; animation:upSpin .8s linear infinite; }
  @keyframes upSpin { to { transform:rotate(360deg); } }
  .upload-progress .up-text { font-size:14px; font-weight:800; color:var(--gray-800,#1f2937); }
  /* 내 글 ⋯ 메뉴 버튼 (인스타 스타일) */
  .act-menu { margin-left:auto; background:none; border:none; padding:0 6px 6px; color:var(--gray-500,#6b7280); cursor:pointer; font-size:22px; line-height:0.6; font-weight:900; letter-spacing:1px; -webkit-tap-highlight-color:transparent; align-self:flex-start; }
  .act-menu:active { opacity:0.5; }
  /* ⋯ 메뉴 시트 (하단 액션시트) */
  .pm-backdrop { position:fixed; inset:0; z-index:9700; background:rgba(0,0,0,0.35); display:none; }
  .pm-backdrop.open { display:block; }
  /* 하단 시트 — 전체를 감싸는 풀폭 글라스 패널(한 레이어 더). */
  .pm-sheet { position:fixed; left:0; right:0; bottom:0; z-index:9710; display:none; flex-direction:column; gap:10px; padding:18px 14px calc(18px + env(safe-area-inset-bottom,0px));  /* gap:행간, 닫기 간격은 .pm-cancel-pill margin-top */ background:rgba(247,246,242,0.9); -webkit-backdrop-filter:blur(24px) saturate(170%); backdrop-filter:blur(24px) saturate(170%); border-top-left-radius:24px; border-top-right-radius:24px; box-shadow:0 -10px 40px rgba(0,0,0,0.18); }
  .pm-item { width:100%; padding:15px; border-radius:14px; border:none; background:rgba(255,255,255,0.98); color:var(--gray-900,#111827); font-family:inherit; font-size:16px; font-weight:700; cursor:pointer; box-shadow:0 6px 20px rgba(0,0,0,0.14); -webkit-tap-highlight-color:transparent; }
  .pm-item.pm-danger { color:var(--red,#dc2626); font-weight:800; }
  .pm-item.pm-cancel { font-weight:800; color:var(--gray-500,#6b7280); }
  /* 메뉴 그룹 — 항목들을 한 레이어(글라스 카드)로 감쌈 (iOS 액션시트 스타일) */
  .pm-group { display:flex; flex-direction:column; border-radius:20px; overflow:hidden; border:1px solid rgba(255,255,255,0.7); background:rgba(255,255,255,0.94); box-shadow:0 6px 18px rgba(20,83,45,0.08); }
  .pm-divider { height:1px; background:rgba(0,0,0,0.07); margin:0 16px; }
  /* ⋯ 메뉴 인라인 사진 그리드 */
  .pm-photo-sec { padding:12px 16px 14px; }
  .pm-photo-head { display:flex; align-items:center; gap:14px; margin-bottom:10px; }
  .pm-photo-grid { display:grid; grid-template-columns:repeat(5,1fr); gap:6px; }
  .pmph-cell { position:relative; aspect-ratio:1/1; border-radius:10px; overflow:hidden; background:rgba(240,240,240,0.7); display:flex; align-items:center; justify-content:center; padding:0; border:none; -webkit-tap-highlight-color:transparent; }
  .pmph-cell img { width:100%; height:100%; object-fit:cover; display:block; cursor:pointer; }
  .pmph-add { border:1.5px dashed rgba(20,83,45,0.28); background:rgba(20,83,45,0.05); cursor:pointer; }
  .pmph-add:active { background:rgba(20,83,45,0.12); }
  .pmph-plus { font-size:22px; font-weight:700; color:var(--green-700,#15803d); line-height:1; }
  .pmph-rm { position:absolute; top:3px; right:3px; width:20px; height:20px; border-radius:50%; border:none; background:rgba(0,0,0,0.6); color:#fff; font-size:12px; line-height:1; display:flex; align-items:center; justify-content:center; cursor:pointer; padding:0; }
  .pm-row { display:flex; align-items:center; gap:14px; width:100%; min-height:60px; padding:8px 16px; box-sizing:border-box; border:none; background:transparent; font-family:inherit; cursor:pointer; text-align:left; -webkit-tap-highlight-color:transparent; }
  .pm-row:active { background:rgba(0,0,0,0.05); }
  .pm-ico { width:42px; height:42px; border-radius:50%; flex-shrink:0; display:flex; align-items:center; justify-content:center; font-size:20px; background:rgba(240,240,240,0.7); }
  .pm-ico.edit { background:rgba(20,83,45,0.10); color:var(--green-700,#15803d); }
  .pm-ico.danger { background:rgba(239,68,68,0.12); color:#ef4444; }
  .pm-ico svg { width:22px; height:22px; }
  .pm-body { flex:1; min-width:0; }
  .pm-title { display:block; font-size:16.5px; font-weight:800; color:var(--gray-900,#111827); }
  .pm-row-danger .pm-title { color:#ef4444; }
  .pm-sub { display:block; font-size:12.5px; font-weight:600; color:var(--gray-500,#6b7280); margin-top:2px; }
  .pm-chev { font-size:20px; color:var(--gray-400,#9ca3af); flex-shrink:0; font-weight:400; }
  .pm-cancel-pill { display:flex; align-items:center; justify-content:center; gap:8px; width:100%; min-height:52px; padding:8px 16px; box-sizing:border-box; border:none; border-radius:999px; background:rgba(238,243,238,0.9); -webkit-backdrop-filter:blur(20px) saturate(170%); backdrop-filter:blur(20px) saturate(170%); color:var(--gray-700,#374151); font-family:inherit; font-size:15.5px; font-weight:800; cursor:pointer; box-shadow:0 8px 24px rgba(0,0,0,0.08); -webkit-tap-highlight-color:transparent; margin-top:10px; }
  .pm-cancel-pill:active { transform:scale(0.98); }
  /* 아래에서 위로 — 부드럽고 텐션감(살짝 오버슈트) */
  .pm-sheet.open { display:flex; animation:pmSlideUp 0.44s cubic-bezier(0.22,1.35,0.34,1) both; }
  @keyframes pmSlideUp { from { transform:translateY(100%); opacity:0; } to { transform:translateY(0); opacity:1; } }
  .pm-backdrop.open { animation:pmFadeIn 0.24s ease both; }
  @keyframes pmFadeIn { from { opacity:0; } to { opacity:1; } }
  /* 닫힐 때 — 위로 살짝 당겼다(텐션) 아래로 내려가며 사라짐 (열기와 동일한 스프링감) */
  .pm-sheet.closing { display:flex; animation:pmSlideDown 0.34s cubic-bezier(0.36,0,0.66,-0.56) both; }
  @keyframes pmSlideDown { from { transform:translateY(0); opacity:1; } to { transform:translateY(100%); opacity:0; } }
  .pm-backdrop.closing { animation:pmFadeOut 0.30s ease both; }
  @keyframes pmFadeOut { from { opacity:1; } to { opacity:0; } }
  .acmt-del { margin-left:auto; align-self:flex-start; background:none; border:none; padding:0 4px; color:var(--gray-400,#9ca3af); cursor:pointer; font-size:16px; line-height:1; font-weight:600; -webkit-tap-highlight-color:transparent; flex-shrink:0; }
  .acmt-del:active { color:var(--red,#dc2626); }
  .act-photo-text { font-size:14px; color:var(--gray-800,#1f2937); line-height:1.5; margin-top:8px; white-space:pre-wrap; word-break:break-word; }
  .photo-compose-preview-wrap { width:100%; border-radius:12px; overflow:hidden; background:var(--gray-100,#f1f3f2); }
  .photo-compose-preview { width:100%; max-height:340px; object-fit:contain; display:block; }
  .photo-compose-caption { width:100%; box-sizing:border-box; margin-top:10px; padding:10px 12px; border:1.5px solid var(--gray-200,#e5e7eb); border-radius:10px; font-family:inherit; font-size:14px; resize:none; color:var(--gray-900,#111827); }
  .photo-compose-caption:focus { outline:none; border-color:var(--green-700,#15803d); }
  /* 개인 기록 — 스탯 행(GIR/퍼트/FW) + 토글 + 요약 */
  .sp-table .sp-stat td { color:var(--gray-700,#374151); font-weight:700; }
  .sp-table .sp-stat .sp-name { color:var(--gray-500,#6b7280); font-weight:700; }
  .sp-mark { color:var(--green-700,#15803d); font-weight:900; }
  .sp-mark-o { color:var(--gray-500,#6b7280); font-weight:900; }   /* X (미달성 명시) */
  .sp-mark-x { color:var(--gray-300,#d1d5db); font-weight:800; }   /* · (미입력) */
  .sp-fw-na { color:var(--gray-300,#d1d5db); }
  .sp-cellbtn.sp-toggle.on { background:var(--green-50,#f0fdf4); border-color:var(--green-700,#15803d); color:var(--green-700,#15803d); }
  .sp-pstats { display:flex; gap:8px; margin-bottom:10px; }
  .sp-pstat { flex:1; 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:12px; padding:10px 4px; text-align:center; box-shadow:0 4px 16px rgba(20,83,45,0.05); }
  .sp-pstat-v { font-size:22px; font-weight:900; color:var(--green-900,#14532d); line-height:1.1; }
  .sp-pstat-vs { font-size:12px; font-weight:800; color:var(--gray-500,#6b7280); }
  .sp-pstat-u { font-size:13px; font-weight:800; }
  .sp-pstat-l { font-size:10px; font-weight:700; color:var(--gray-400,#9ca3af); margin-top:3px; letter-spacing:0.2px; }
  .sp-progress { font-size:12.5px; color:var(--gray-500); margin-top:3px; }
  .sp-venue-wrap { display:grid; grid-template-columns:minmax(0,1fr) auto minmax(0,1fr); align-items:center; gap:4px; }
  .sp-venue-wrap .sp-venue { min-width:0; }
  .sp-venue-wrap > .sp-mode-chip-left { justify-self:start; }
  .sp-venue-wrap > .sp-edit-pencil { justify-self:end; }
  .sp-mode-chip { display:inline-block; font-size:11.5px; font-weight:800; color:var(--green-800,#166534); background:var(--green-50,#eef7f0); border:1px solid var(--green-100,#dcfce7); border-radius:999px; padding:3px 11px; letter-spacing:-0.2px; }
  .sp-mode-chip-left { justify-self:start; font-size:10.5px; padding:4px 9px; }
  .sp-edit-action { justify-self:end; }
  .rri-mode { display:inline-block; font-size:10.5px; font-weight:700; color:var(--green-700,#15803d); background:var(--green-50,#eef7f0); border-radius:6px; padding:1px 7px; flex-shrink:0; }
  /* 요약카드 — 카드 1장 폭은 항상 4명 기준(¼)으로 고정. 1~3명이면 같은 폭 유지하며 가운데 정렬(균등 간격). */
  .sp-cards { display:flex; flex-wrap:wrap; justify-content:center; gap:8px; margin-bottom:16px; }
  .sp-card { flex:0 1 calc((100% - 24px) / 4); max-width:calc((100% - 24px) / 4); min-width:0; box-sizing:border-box; display:flex; flex-direction:column; background:white; border:1px solid var(--gray-200); border-radius:12px; padding:9px 5px 10px; text-align:center; }
  /* 태그 가능한 플레이어 박스(내 라운드) — 클릭 시 동반자 태그 picker. div/button 박스모델 통일(게스트 상단 2px 밀림 방지). */
  .sp-card-tagbtn { font-family:inherit; margin:0; -webkit-appearance:none; appearance:none; cursor:pointer; -webkit-tap-highlight-color:transparent; transition:border-color .15s, box-shadow .15s; }
  .sp-card-tagbtn:active { transform:scale(0.98); }
  .sp-card-tagbtn { border-color:var(--green-300, #86efac); }
  .sp-card-tag { font-size:10px; font-weight:800; color:var(--green-700); margin-top:4px; }
  /* 태그 요청중(보낸 pending) — 회색 muted, 탭 시 취소 */
  .sp-card-pending { border-color:var(--gray-300,#d1d5db) !important; opacity:0.92; }
  .sp-card-tag-pending { color:var(--gray-500,#6b7280); }
  /* 태그 수락된 슬롯 — @핸들 표시 */
  .sp-card-handle { display:block; margin:5px auto 0; max-width:100%; box-sizing:border-box; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:9px; font-weight:800; color:var(--green-700,#15803d); background:rgba(20,83,45,0.08); border:none; border-radius:999px; padding:3px 6px; cursor:pointer; font-family:inherit; -webkit-tap-highlight-color:transparent; }
  .sp-card-handle:active { background:rgba(20,83,45,0.16); }
  .sp-card-name { padding-top:2px; font-size:11.5px; font-weight:750; color:var(--gray-700); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:4px; min-height:48px; }
  .sp-card-name .mini-avatar { width:30px; min-width:30px; height:30px; min-height:30px; aspect-ratio:1 / 1; flex:0 0 30px; border-radius:50%; font-size:11px; box-sizing:border-box; }
  .sp-card-name .mini-avatar.has-photo { color:transparent; }
  .sp-card-name .mini-avatar.has-photo .mini-av-i { color:#fff; }   /* 사진 깨지면 이니셜 다시 보이게(transparent 무력화) */
  .sp-card-name .sp-card-nm { overflow:hidden; text-overflow:ellipsis; min-width:0; }
  .sp-card-name.sp-card-guest .sp-card-nm { color:var(--gray-500,#6b7280); }
  .sp-card-total { font-size:23px; font-weight:900; color:var(--green-900); margin-top:1px; }
  .sp-card-sub { margin-top:2px; font-size:9.5px; font-weight:700; color:var(--gray-400); }
  /* 공통 베뉴 헤더 — 라이브·세로·관전·저장·공유 캡처가 모두 같은 구조/토큰을 사용한다. */
  .unified-venue-header { position:relative; width:100%; display:grid; justify-items:center; gap:3px; text-align:center; margin:0 0 5px; }
  .uvh-venue-block { width:100%; display:flex; align-items:center; }
  .uvh-venue { width:100%; display:flex; align-items:center; justify-content:flex-start; gap:6px; color:var(--gray-900,#111827); font-size:16px; font-weight:900; }
  /* 베뉴 이름은 절대 잘리지 않음(축소/생략 금지). 날짜·LIVE 는 우측 그룹으로 밀어냄. */
  .uvh-venue-name { flex:0 0 auto; white-space:nowrap; text-align:left; }
  .uvh-venue-right { margin-left:auto; flex:0 1 auto; min-width:0; display:flex; align-items:center; justify-content:flex-end; gap:13px; }
  .uvh-venue-date { flex:0 1 auto; min-width:0; overflow:hidden; text-overflow:ellipsis; color:var(--gray-500,#6b7280); font-size:12.5px; font-weight:700; white-space:nowrap; text-align:right; }
  .uvh-status-inline { flex:0 0 auto; color:var(--gray-500,#6b7280); font-size:10.5px; font-weight:750; white-space:nowrap; }
  .uvh-location-icon { width:18px; height:18px; object-fit:contain; }
  .uvh-course-flow { width:100%; min-height:50px; display:grid; grid-template-columns:minmax(0,1fr) 18px minmax(0,1fr); align-items:center; gap:2px; padding:3px; border:1px solid rgba(20,83,45,.15); border-radius:999px; background:rgba(255,255,255,.78); color:var(--gray-900,#111827); font-size:15px; font-weight:850; line-height:1.2; box-sizing:border-box; }
  .uvh-course-side { min-width:0; height:46px; display:flex; align-items:center; gap:8px; padding:4px 10px 4px 5px; border-radius:999px; }
  .uvh-course-side.current { background:linear-gradient(135deg,#17643b,#0f5132); color:#fff; }
  .uvh-course-flow.uvh-has-current .uvh-course-side:not(.current) { opacity:.46; filter:saturate(.55); }
  .uvh-course-side[data-sc-half] { cursor:pointer; -webkit-tap-highlight-color:transparent; }
  .uvh-course-side img { width:44px; height:32px; border-radius:999px; object-fit:cover; flex:0 0 44px; }
  .uvh-course-side > span { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .uvh-arrow { color:var(--gray-400,#9ca3af); font-size:18px; font-weight:700; }
  .uvh-meta { position:relative; width:100%; min-height:18px; display:flex; align-items:center; justify-content:flex-start; gap:8px; color:var(--gray-500,#6b7280); font-size:12.5px; font-weight:700; }
  .uvh-live { color:var(--green-800,#166534); font-weight:900; letter-spacing:.02em; }
  .uvh-live::before { content:""; display:inline-block; width:7px; height:7px; margin-right:5px; border-radius:50%; background:#22a559; vertical-align:1px; }
  .uvh-meta-action { flex:0 0 auto; display:inline-flex; align-items:center; }
  .uvh-record-toggle { display:inline-grid; grid-template-columns:1fr 1fr; align-items:center; gap:2px; padding:2px; border:1px solid rgba(20,83,45,.18); border-radius:999px; background:#fff; color:var(--gray-500,#6b7280); font-family:inherit; font-size:10.5px; font-weight:800; cursor:pointer; white-space:nowrap; }
  .uvh-record-toggle span { min-width:37px; padding:5px 7px; border-radius:999px; text-align:center; }
  .uvh-record-toggle span.active { background:var(--green-700,#15803d); color:#fff; box-shadow:0 1px 4px rgba(20,83,45,.16); }
  .uvh-mode-btn { display:inline-flex; align-items:center; gap:5px; padding:7px 10px; border:1px solid rgba(20,83,45,.18); border-radius:999px; background:#fff; color:var(--green-800,#166534); font-family:inherit; font-size:11px; font-weight:800; cursor:pointer; white-space:nowrap; }
  .uvh-mode-menu { position:absolute; z-index:30; top:calc(100% - 3px); right:0; width:min(310px,92vw); display:grid; gap:2px; padding:6px; border:1px solid rgba(20,83,45,.16); border-radius:10px; background:#fff; box-shadow:0 10px 26px rgba(20,83,45,.14); }
  .uvh-mode-option { width:100%; display:flex; align-items:baseline; gap:4px; padding:9px 10px; border:0; border-radius:7px; background:transparent; color:var(--gray-900,#111827); font-family:inherit; font-size:11px; text-align:left; cursor:pointer; white-space:nowrap; }
  .uvh-mode-option strong { flex:0 0 auto; font-size:11.5px; }
  .uvh-mode-option span { min-width:0; overflow:hidden; text-overflow:ellipsis; color:var(--gray-500,#6b7280); }
  .uvh-mode-option.active { background:var(--green-50,#eef7f0); color:var(--green-800,#166534); }
  .uvh-edit-main { width:100%; display:grid; gap:5px; }
  .uvh-edit-venue { width:100%; display:flex; align-items:center; }
  .uvh-edit-venue-main { width:100%; display:flex; align-items:center; justify-content:flex-start; gap:6px; }
  .uvh-edit-venue > .sc-vb-venue { min-width:0; flex:1 1 auto; }
  .uvh-edit-venue-main > .sc-vb-venue { min-width:0; flex:1 1 auto; }
  .uvh-edit-courses { width:100%; display:grid; grid-template-columns:minmax(0,1fr) 18px minmax(0,1fr); align-items:center; gap:2px; padding:3px; border:1px solid rgba(20,83,45,.15); border-radius:999px; background:#fff; box-sizing:border-box; }
  .uvh-edit-course-side { min-width:0; height:46px; display:flex; align-items:center; gap:9px; padding:4px 7px 4px 4px; border-radius:999px; }
  .uvh-edit-course-side.current { background:var(--green-100,#dcfce7); box-shadow:inset 0 0 0 1px rgba(21,128,61,.2); }
  .uvh-edit-courses.uvh-has-current .uvh-edit-course-side:not(.current) { opacity:.46; filter:saturate(.55); }
  .uvh-edit-course-side[data-sc-half] { cursor:pointer; -webkit-tap-highlight-color:transparent; }
  .uvh-edit-course-side img { width:44px; height:32px; border-radius:999px; object-fit:cover; flex:0 0 44px; }
  .uvh-half-copy { position:relative; min-width:0; height:100%; flex:1; display:flex; align-items:center; justify-content:flex-start; padding:0 6px 0 0; box-sizing:border-box; }
  .uvh-half-label { position:absolute; right:5px; bottom:3px; color:var(--gray-500,#6b7280); font-size:7.5px; font-weight:800; line-height:1; white-space:nowrap; }
  .uvh-edit-course-side.current .uvh-half-label { color:var(--green-700,#15803d); }
  .uvh-edit-course-side .sc-vb-cell { width:100%; min-width:0; flex:1; padding:0; }
  .uvh-edit-course-side .sc-chip { width:100%; min-width:0; border:0; background:transparent; box-shadow:none; padding:2px 1px; }
  .uvh-course-copy { position:relative; min-width:0; height:100%; flex:1; display:flex; align-items:center; padding:0 6px 0 0; line-height:1.15; box-sizing:border-box; }
  .uvh-course-copy strong { position:absolute; right:5px; bottom:3px; max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:7.5px; }
  .uvh-course-copy small { max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:12px; font-weight:850; margin:0; }
  /* 코스 pill 우측하단 '전반/후반' 라벨 제거 — 모든 화면(라이브 세로 게임·기록·공유). */
  .uvh-course-copy strong, .uvh-half-label { display:none; }
  .uvh-edit-date { display:inline-flex; align-items:center; margin-left:auto; flex:0 0 auto; }
  /* LIVE 뱃지 ↔ 날짜 사이 간격 확보 (편집 헤더). */
  .uvh-edit-venue-main .uvh-status-inline + .uvh-edit-date { margin-left:13px; }
  .uvh-edit-date .sc-chip-date { width:auto; min-width:0; height:auto; padding:0; border:0; border-radius:0; background:transparent; box-shadow:none; color:var(--gray-500,#6b7280); font:inherit; font-size:10px; font-weight:700; text-align:right; -webkit-appearance:none; appearance:none; }
  /* 달력 아이콘 무조건 숨김 + 값 우측 정렬 + 작은 폰트 강제 (shadow value) */
  .uvh-edit-date .sc-chip-date::-webkit-calendar-picker-indicator { display:none !important; -webkit-appearance:none; }
  .uvh-edit-date .sc-chip-date::-webkit-date-and-time-value { font-size:10px; text-align:right; padding:0; margin:0; }
  /* 세로 게임 화면: 사진 전후반 선택은 베뉴 행과 분리해 스코어카드 바로 위에 한 번만 둔다. */
  .sc-half-course-nav { width:100%; min-width:0; margin:6px 2px 4px; display:flex; align-items:center; justify-content:space-between; gap:8px; }
  .sc-half-course-nav:empty { display:none; }
  .sc-half-current { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:13px; font-weight:800; color:var(--green-900,#14532d); }
  .sc-half-next { background:none; border:0; padding:4px 2px; font-family:inherit; font-size:13.5px; font-weight:800; color:var(--green-700,#15803d); cursor:pointer; white-space:nowrap; -webkit-tap-highlight-color:transparent; }
  .sc-half-next:active { opacity:.6; }
  /* 공통 전/후반 세그먼트 토글 — 모든 모드(게임·OCR·기록·관전) 동일. 스코어카드 헤더 우측정렬. */
  .half-seg { margin-left:auto; flex:0 0 auto; display:inline-flex; gap:0; padding:2px; background:var(--gray-100,#f3f4f6); border:1.5px solid var(--gray-300,#d1d5db); border-radius:10px; -webkit-tap-highlight-color:transparent; }
  .half-seg-btn { min-width:44px; padding:4px 12px; border:0; border-radius:7px; background:transparent; color:var(--gray-600,#4b5563); font-family:inherit; font-size:12px; font-weight:800; line-height:1.2; cursor:pointer; transition:background .15s, color .15s; -webkit-tap-highlight-color:transparent; }
  .half-seg-btn.active { background:#1c5734; color:#fff; }
  @media (max-width:600px) { .half-seg-btn { min-width:40px; font-size:11px; padding:3px 10px; } }
  .sc-half-course-nav .uvh-edit-courses,
  .sc-half-course-nav .uvh-course-flow { margin:0; }
  .sc-half-course-nav .uvh-edit-course-side,
  .sc-half-course-nav .uvh-course-side { gap:3px; padding-left:3px; padding-right:5px; }
  .sc-half-course-nav .uvh-edit-course-side img,
  .sc-half-course-nav .uvh-course-side img { width:36px; height:28px; flex-basis:36px; }
  .sp-sec-label { margin-top:13px; margin-bottom:7px; }
  body.detail-editing .sp-meta { margin-bottom:4px; }
  body.detail-editing .sp-cards { margin-bottom:12px; }
  body:not(.detail-editing) .sp-meta { margin-bottom:2px; }
  body:not(.detail-editing) .sp-cards { margin-bottom:9px; }
  body:not(.detail-editing) .sp-sec-label { margin-top:9px; margin-bottom:5px; }
  body:not(.detail-editing) .sp-table th, body:not(.detail-editing) .sp-table td { padding-top:3px; padding-bottom:3px; }
  body:not(.detail-editing) .sp-pad-inline { margin-top:9px; }
  .sp-section-title { display:block; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .sp-half-next { border:0; background:transparent; color:var(--gray-500,#6b7280); font-family:inherit; font-size:11.5px; font-weight:800; padding:5px 0; cursor:pointer; white-space:nowrap; }
  /* overflow-x:hidden → overflow-y:auto 강제 트랩 회피. clip 으로 가로만 잘라냄(세로 스크롤은 페이지에 위임). */
  .sp-table-wrap { overflow-x:clip; overflow-y:visible; border:1px solid var(--gray-200); border-radius:10px; background:white; }
  /* 11열(홀+9홀+계)이 가로 스크롤 없이 화면에 들어가도록 fixed 레이아웃 */
  .sp-table { border-collapse:collapse; font-size:11px; width:100%; table-layout:fixed; }
  .sp-table th, .sp-table td { padding:4px 1px; text-align:center; border-bottom:1px solid var(--gray-100); white-space:nowrap; overflow:hidden; }
  .sp-table th:first-child, .sp-table td:first-child { width:15%; }   /* 이름/홀 열 */
  .sp-table th:last-child, .sp-table td:last-child { width:9%; }      /* 계 열 */
  .sp-table thead th { background:var(--green-900); color:white; font-weight:700; }
  .sp-table .sp-name, .sp-table td:first-child { text-align:center; font-weight:700; color:var(--gray-800); position:sticky; left:0; background:white; }
  .sp-table .sp-name .mini-avatar { margin:0 auto; }
  /* 공유 캡처 — 가장자리 여백(베뉴 아이콘 잘림 방지) + 플레이어명 컬럼 확장(이름 잘림 방지). */
  /* 공유 캡처 — 화면과 동일하게(table-layout·컬럼폭 그대로). html2canvas 가 position:sticky 를 깨뜨려 이름칸이 뭉개지므로 그것만 static 으로. */
  #spectateBody.sp-capturing { padding:6px 12px 8px; }
  #spectateBody.sp-capturing .uvh-location-icon { display:none; }              /* 베뉴 아이콘 잘림 → 공유에선 제거(요청) */
  #spectateBody.sp-capturing .uvh-course-copy small { overflow:visible; }      /* 코스명 꼬리(y) 잘림 방지 */
  #spectateBody.sp-capturing .sp-table .sp-name,
  #spectateBody.sp-capturing .sp-table td:first-child { position:static; }
  #spectateBody.sp-capturing .gsb-nm { overflow:visible; }
  /* 이름 input — html2canvas 가 상하 패딩 때문에 텍스트 상단을 잘라먹음 → 상하 패딩 제거 + line-height 로 세로중앙. */
  #spectateBody.sp-capturing .sp-name-edit { padding-top:0; padding-bottom:0; line-height:2; height:auto; }
  .sp-table thead th:first-child { background:var(--green-900); }
  .sp-table .sp-par td { color:var(--gray-400); font-weight:600; }
  .sp-table .sp-total { font-weight:900; color:var(--green-700); }
  /* 전반/후반 섹션 라벨 */
  .sp-sec-label { font-size:13px; font-weight:800; color:var(--green-900); margin:16px 2px 7px; display:flex; align-items:center; justify-content:space-between; }
  .sp-sec-label:first-child { margin-top:0; }
  /* gained 값 + 기존 score shape SVG (빨간 하트 / 파란 네모) */
  .sp-table .sp-g { font-weight:800; line-height:1; color:var(--gray-800); }
  .sp-table .sp-parc { color:var(--gray-400); }
  .sp-shape-wrap { position:relative; display:inline-flex; align-items:center; justify-content:center; width:24px; height:20px; }
  .sp-shape-wrap svg { position:absolute; inset:0; width:100%; height:100%; }
  .sp-shape-wrap .sp-on { position:relative; z-index:1; }
  /* (행 높이 고정은 .sp-cellbtn 의 fixed height 로 처리 — shape/숫자 셀 동일 높이) */
  /* 내 이름 행/카드 음영 + '나' 태그 + 클레임 버튼 */
  .sp-table tr.sp-mine td { background: var(--green-50, #e5f5ea) !important; }
  .sp-table tr.sp-mine .sp-name { background: #e3f1e7 !important; }
  .sp-me-tag { display:inline-block; font-size:10px; font-weight:800; color:#fff; background:#124837; border-radius:999px; padding:1px 6px; margin-left:4px; vertical-align:middle; }
  .sp-card.sp-card-mine { background:#eef7f0; border-color:var(--green-500, #2e8b57); }
  .sp-claim-btn { width:100%; margin:0 0 14px; padding:13px; border:none; border-radius:12px; background:#124837; color:#fff; font-size:14px; font-weight:800; font-family:inherit; cursor:pointer; -webkit-tap-highlight-color:transparent; }
  .sp-claim-btn:active { transform:scale(0.98); background:#16502f; }
  .sp-claim-btn.sp-edit-btn { background:#fff; color:#124837; border:1.5px solid #124837; }
  .sp-claim-btn.sp-edit-btn:active { background:var(--green-50, #eef7f0); }
  /* 관전/편집 헤더 가운데 greener 홈 버튼 */
  .sp-home-btn { position: absolute; left: 50%; top: 2px; transform: translateX(-50%); background: none; border: none; padding: 4px; cursor: pointer; -webkit-tap-highlight-color: transparent; display: flex; align-items: center; }
  /* ★ 가로 기록 편집기(#spectatePage) 헤더 줄맞춤 근본픽스 — 위저드(.cw-h) 메커니즘을 '그대로' 복제해 로고 행 높이·위치를 통일.
     (1) 로고 top:2px 상단고정 → back(align-items:center)과 헤더 높이 변할 때 어긋나 2줄처럼 보였음 → 로고도 top:50% 중앙정렬.
     (2) #spectatePage 컨테이너 top패딩이 env+8px 이라 위저드(env)보다 로고 행이 8px 아래로 내려갔음 → 헤더 대상만 env 로 맞춤.
     (3) 헤더 자체 metrics 를 .cw-h(min-height:44px; padding 6/10)와 동일하게. → 위저드와 로고 행 완전 일치, 항상 한 줄. */
  #spectatePage { padding-top: env(safe-area-inset-top, 0px); } /* 위저드 .comp-wz 와 동일: safe-area 는 컨테이너에서만(기존 env+8 → env). 헤더 상단 여백은 헤더 padding 이 담당 */
  #spectatePage > .history-page-header { align-items: center; min-height: 44px; padding: 6px 0 10px; }
  #spectatePage > .history-page-header .sp-home-btn { top: 50%; transform: translate(-50%, -50%); }
  .sp-home-btn .brand-wordmark { height: 26px; display: block; }
  .sp-home-btn:active { opacity: 0.6; }
  .history-page-header {
    /* 전역 header{position:fixed} 상속 차단 — 이 헤더는 스크롤 페이지 안 normal flow 여야 함.
       relative 로 두어 중앙 로고(.hp-logo-wrap) 절대배치 기준으로도 사용(스펙테이트 헤더와 동일 방식으로 통일). */
    position: relative;
    min-height: 0;
    background: transparent;
    display: flex;
    align-items: center;
    gap: 6px;
    /* ★ 상하 대칭 패딩 — 로고(.hp-logo-wrap, top:50%=패딩박스중앙)와 back(align-items:center=콘텐츠박스중앙)이
       비대칭패딩이면 어긋남(로고가 back보다 아래로). 대칭이면 두 중앙이 일치(날씨/기록 등 base 헤더). */
    padding: 10px 0;
  }
  /* ★ 꺽쇄(뒤로가기) 세로 미세조정 — 이 값 하나로 모든 화면 꺽쇄가 동시에 움직인다.
     (.history-back-btn = 인플로우 페이지 헤더 / .global-back-chevron = 고정 메인 헤더. 위치 방식만 다르고 이 오프셋은 공유.) */
  :root { --gr-chevron-nudge: 2px; --gr-wordmark-nudge: -12%; }
  /* ★ 공통 헤더 로고 정렬 — 모든 헤더(라이브 앱헤더/스펙테이트/위저드/기록페이지)에서 그리너 워드마크 이미지를
     back 꺽쇄와 '세로중앙 일치'시키는 단일 보정. 로고박스는 이미 헤더중앙에 있으나, 이미지 내부 워드마크가
     골프공+상단여백 때문에 박스의 ~69%(아래쏠림)에 위치 → 광학중심을 박스중심으로 끌어올림.
     값은 --gr-wordmark-nudge 한 곳에서만 관리(--gr-chevron-nudge 와 동일 패턴, 화면별 개별조정 금지). */
  header .brand-wordmark,
  .history-page-header .brand-wordmark { transform: translateY(var(--gr-wordmark-nudge)); }
  .history-back-btn {
    min-width: 44px;
    min-height: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: transparent;
    border: none;
    font-size: 36px;
    line-height: 1;
    font-weight: 300;
    color: var(--gray-800);
    padding: 0 10px 4px;
    margin-left: -10px;
    transform: translateY(var(--gr-chevron-nudge));   /* 세로 오프셋은 --gr-chevron-nudge 한 곳에서 관리(위저드 꺽쇄와 공유). */
    cursor: pointer;
    font-family: inherit;
  }
  .history-back-btn:active { opacity: 0.5; }
  /* 세부 페이지 헤더 중앙 로고 — 제목 텍스트 대신 그리너 메인로고(다른 화면과 통일). */
  /* 중앙 로고 — back 꺽쇄와 세로중앙 일치(absolute top:50%). 모든 오버레이 헤더 공통(위저드/기록/경쟁 등 per-header 오버라이드 불필요). */
  .history-page-header .hp-logo-wrap { position:absolute; left:50%; top:50%; transform:translate(-50%,-50%); display:flex; align-items:center; background:none; border:none; padding:4px; font-family:inherit; cursor:pointer; -webkit-tap-highlight-color:transparent; z-index:1; }
  .history-page-header .hp-logo-wrap .brand-wordmark { height:26px; display:block; }
  .history-page-header .hp-logo-wrap:active { opacity:.6; }
  /* 로고 헤더(날씨·라운드기록) — 좌 꺽쇄 / 우 요소를 양끝으로(중앙 로고는 절대배치). */
  .history-page-header.hp-logo-head { justify-content: space-between; }
  .history-page-title {
    font-size: 22px;
    font-weight: 800;
    color: var(--gray-900);
    margin: 0;
    letter-spacing: -0.4px;
  }
  .history-page-count {
    margin-left: auto;
    font-size: 13px;
    font-weight: 600;
    color: var(--gray-500);
  }
  .history-page-body {
    display: flex;
    flex-direction: column;
    gap: 8px;
  }

  /* Profile 탭 — section 타이틀 */
  .profile-section-title {
    font-size: 13px;
    font-weight: 800;
    color: var(--gray-700);
    margin: 20px 4px 10px;
    letter-spacing: 0.02em;
  }

  /* Profile 탭 — 최근 라운드 카드 */
  .recent-rounds-list {
    display: flex;
    flex-direction: column;
    gap: 8px;
  }
  .recent-round-item {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 14px;
    background: white;
    border: none;
    border-radius: 12px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.04);
    cursor: pointer;
    font-family: inherit;
    transition: all 0.15s;
    text-align: left;
    -webkit-tap-highlight-color: transparent;
  }
  .recent-round-item:hover { transform: translateY(-1px); box-shadow: 0 4px 12px rgba(0,0,0,0.06); }
  .recent-round-item:active { transform: scale(0.98); }
  .recent-round-item .rri-main { flex: 1; min-width: 0; }
  /* 라운드 기록 페이지 + 기록 탭 '내 라운드' 서브뷰 — 글라스 카드 + 우측 삭제(×) 버튼 (동일 룩 공유) */
  .history-page-body .history-round-item,
  #recRoundsBody .history-round-item {
    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);
    box-shadow: 0 4px 16px rgba(20, 83, 45, 0.05);
    padding: 0; gap: 0;
  }
  .history-page-body .history-round-item:hover,
  #recRoundsBody .history-round-item:hover { transform: none; box-shadow: 0 4px 16px rgba(20, 83, 45, 0.08); }
  .history-page-body .history-round-item:active,
  #recRoundsBody .history-round-item:active { transform: none; }
  /* [기록카드] 카드 간 간격 + 경계선 살짝 진하게(styles/02 의 !important 흰 border 를 더 높은 특이도로 override) */
  #recRoundsBody .history-round-item.round-list-card,
  .history-page-body .history-round-item.round-list-card { margin-bottom: 10px; }
  #recordTabContent .history-round-item.round-list-card,
  .history-page-body .history-round-item.round-list-card { border-color: rgba(20,83,45,0.14) !important; }
  .history-round-item .rri-click {
    flex: 1; min-width: 0; display: flex; align-items: center; gap: 12px;
    background: transparent; border: none; cursor: pointer; font-family: inherit;
    text-align: left; padding: 14px; -webkit-tap-highlight-color: transparent;
    transition: transform 0.15s;
  }
  .history-round-item .rri-click:active { transform: scale(0.98); }
  .history-round-item .rri-del {
    flex-shrink: 0; width: 34px; align-self: stretch;
    display: flex; align-items: center; justify-content: center;
    background: transparent; border: none; border-left: 1px solid rgba(0,0,0,0.06);
    color: var(--gray-400, #9ca3af); font-size: 22px; line-height: 1; font-family: inherit;
    cursor: pointer; -webkit-tap-highlight-color: transparent;
  }
  .history-round-item .rri-del:hover { color: #ef4444; }
  .history-round-item .rri-del:active { color: #ef4444; transform: scale(0.9); }
  /* 1줄: 베뉴 · 코스(생략표시) + 모드칩 + 날짜(우측). nowrap 로 높이 고정. */
  .recent-round-item .rri-topline {
    display: flex; align-items: baseline; gap: 6px;
    margin-bottom: 2px; white-space: nowrap;
  }
  .recent-round-item .rri-course {
    font-size: 14px;
    font-weight: 700;
    color: var(--gray-900);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    flex: 0 1 auto; min-width: 0;
  }
  .recent-round-item .rri-date2 {
    font-size: 11.5px; color: var(--gray-400, #9ca3af); flex-shrink: 0; margin-left: auto;
  }
  /* [어테스트] 검증 배지 = 타수 왼쪽, 타수는 크게 단독 우측. */
  .rri-score-col { display: inline-flex; flex-direction: row; align-items: center; gap: 9px; flex-shrink: 0; }
  .verify-badge { display: inline-flex; align-items: center; justify-content: center; gap: 3px; min-width: 66px; box-sizing: border-box; font-size: 11px; font-weight: 700; white-space: nowrap; line-height: 1.5; }   /* 인증/인증요청 동일 너비 + 가로중앙 */
  .verify-badge.vb-ok { color: #15803d; background: transparent; border: 1px solid #a7dcb8; border-radius: 7px; padding: 2px 8px; cursor: pointer; -webkit-tap-highlight-color: transparent; }   /* Attested — 그린 아웃라인, 탭 시 인증 안내 */
  .verify-badge.vb-ok .vb-check { font-weight: 800; }
  .verify-badge.vb-no { color: #dc2626; background: transparent; border: 1px solid #f0b8b8; border-radius: 7px; padding: 2px 8px; cursor: pointer; -webkit-tap-highlight-color: transparent; }   /* 인증 요청 — 인증 체크와 같은 박스형(레드 아웃라인), 탭 시 첨부 모달 */
  /* 인증(✓) 배지 탭 → 인증 조건 안내 팝업 */
  .verify-info-modal { text-align:left; }
  .verify-info-lead { margin:0 0 10px; font-size:13.5px; line-height:1.6; color:var(--gray-700,#374151); }
  .verify-info-note { margin:0 0 14px; font-size:11.5px; line-height:1.5; color:var(--gray-500,#6b7280); }
  .verify-info-list { margin:0 0 14px; padding-left:20px; }
  .verify-info-list li { margin:5px 0; font-size:13.5px; line-height:1.5; font-weight:700; color:var(--gray-800,#1f2937); }
  .verify-info-list li::marker { color:var(--green-700,#15803d); font-weight:800; }
  .verify-info-foot { margin:0 0 4px; font-size:12.5px; line-height:1.6; color:var(--gray-600,#4b5563); }
  .verify-info-foot b { color:var(--green-700,#15803d); }
  /* [어테스트 Phase2] 스코어카드 첨부 인증 모달 */
  .attest-sheet { background:#fff; border-radius:18px; padding:20px 18px 16px; width:min(340px,86vw); box-shadow:0 12px 40px rgba(0,0,0,0.2); }
  .attest-title { font-size:17px; font-weight:800; color:var(--gray-900,#111827); text-align:center; margin-bottom:12px; }
  .attest-reason { font-size:12.5px; font-weight:700; color:#92400e; background:#fef3c7; border-radius:8px; padding:8px 10px; margin-bottom:12px; }
  .attest-reason-ic { margin-right:2px; }
  .attest-guide { font-size:13px; line-height:1.6; color:var(--gray-600,#4b5563); margin-bottom:12px; }
  .attest-guide b { color:var(--green-700,#15803d); }
  .attest-status:empty { display:none; }
  .attest-status { margin-bottom:10px; }
  .attest-loading { font-size:13px; color:var(--gray-500,#6b7280); text-align:center; padding:8px 0; }
  .attest-fail { font-size:12.5px; color:#dc2626; background:#fef2f2; border-radius:8px; padding:9px 11px; line-height:1.5; }
  .attest-upload-btn { width:100%; 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; }
  .attest-upload-btn:active { transform:scale(.99); }
  .attest-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; }
  /* 2줄: 동반자 (생략표시). 없으면 렌더 안 함 → 높이 안 늘어남. */
  .recent-round-item .rri-mates {
    font-size: 12px; color: var(--gray-500);
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  }
  .recent-round-item .rri-date {
    font-size: 12px;
    color: var(--gray-500);
  }
  .recent-round-item .recent-round-score {
    font-size: 20px;
    font-weight: 900;
    color: var(--green-700);
    flex-shrink: 0;
  }
  /* 라운드 기록 페이지 — 정렬 바(날짜순/스코어순 + 오름·내림 화살표) */
  .hist-sort-bar { display: flex; align-items: center; gap: 8px; margin: 2px 0 14px; }
  .hist-sort-chip {
    display: inline-flex; align-items: center; gap: 4px; flex: 0 0 auto; white-space: nowrap;
    padding: 7px 14px; border-radius: 999px;
    border: 1px solid var(--gray-200, #e5e7eb); background: #fff;
    font-family: inherit; font-size: 13px; font-weight: 700; color: var(--gray-600, #6b7280);
    cursor: pointer; -webkit-tap-highlight-color: transparent; transition: all 0.12s;
  }
  .hist-sort-chip.active { background: #14532d; border-color: #14532d; color: #fff; }
  .hist-sort-chip .hsc-arrow { font-size: 12px; font-weight: 900; }
  /* 돋보기 — 정렬 바 우측(구장·동반자 검색). 상세 UI 는 추후. */
  .hist-sort-bar .hist-search-box { margin-left: auto; position: relative; flex: 1 1 auto; min-width: 0; max-width: 200px; }
  .hist-sort-bar .hist-search-input { width: 100%; height: 32px; box-sizing: border-box; padding: 0 32px 0 13px; border: 1px solid var(--gray-200, #e5e7eb); border-radius: 999px; background: var(--gray-100, #f3f4f6); font-family: inherit; font-size: 13px; font-weight: 700; color: var(--gray-900, #111827); -webkit-appearance: none; }
  .hist-sort-bar .hist-search-input::placeholder { font-size: 13px; }
  .hist-sort-bar .hist-search-input::placeholder { color: var(--gray-400, #9ca3af); font-weight: 500; }
  .hist-sort-bar .hist-search-input:focus { outline: none; border-color: var(--green-600, #16a34a); background: #fff; }
  .hist-sort-bar .hist-search-ico { position: absolute; right: 12px; top: 50%; transform: translateY(-50%); width: 16px; height: 16px; color: var(--gray-500, #6b7280); pointer-events: none; }
  .hist-search-empty { text-align: center; color: var(--gray-500, #6b7280); font-size: 13px; padding: 40px 0; }
  /* ===== 라운드기록 필터 바(항상 노출) ===== */
  .hist-filter-bar { background: #fff; border: 1px solid var(--gray-200, #e5e7eb); border-radius: 16px; padding: 14px; margin: 2px 0 12px; box-shadow: 0 1px 2px rgba(15,40,25,.04); }
  .hfb-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px 10px; }
  .hfb-field { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
  .hfb-label { display: inline-flex; align-items: center; gap: 4px; font-size: 12px; font-weight: 700; color: var(--gray-600, #4b5563); white-space: nowrap; }
  .hfb-label .pack-icon { width: 13px; height: 13px; }
  .hist-filter-bar select { width: 100%; box-sizing: border-box; height: 40px; padding: 0 8px; border: 1px solid var(--gray-200, #e5e7eb); border-radius: 10px; background: #fff; font-family: inherit; font-size: 13.5px; font-weight: 700; color: var(--gray-900, #111827); }
  .hfb-toggle { cursor: pointer; }
  .hfb-toggle input { display: none; }
  .hfb-sw-wrap { display: inline-flex; align-items: center; height: 40px; }
  .hfb-sw { width: 42px; height: 24px; border-radius: 999px; background: var(--gray-300, #d1d5db); position: relative; transition: background .15s; flex: 0 0 auto; }
  .hfb-sw::after { content: ''; position: absolute; top: 3px; left: 3px; width: 18px; height: 18px; border-radius: 50%; background: #fff; transition: transform .15s; box-shadow: 0 1px 3px rgba(0,0,0,.2); }
  .hfb-toggle input:checked + .hfb-sw { background: var(--green-600, #16a34a); }
  .hfb-toggle input:checked + .hfb-sw::after { transform: translateX(18px); }
  @media (max-width: 380px) { .hfb-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
  /* ===== 스코어카드 정보 수정 모달 ===== */
  .sci-modal { max-width: 360px; text-align: left; }
  .sci-banner { display: flex; gap: 8px; align-items: flex-start; margin: 0 0 14px; padding: 10px 12px; background: #fdf5e6; border-radius: 10px; font-size: 12px; line-height: 1.5; color: #633806; }
  .sci-banner .sci-banner-ico { flex: 0 0 auto; font-style: normal; color: #854f0b; }
  .sci-section-label { font-size: 12px; font-weight: 800; color: var(--green-700, #15803d); letter-spacing: .2px; margin: 0 2px 8px; }
  .sci-flabel { display: block; font-size: 12px; color: var(--gray-500, #6b7280); margin: 0 2px 3px; }
  .sci-modal input[type=text], .sci-modal input[type=date] { width: 100%; box-sizing: border-box; height: 42px; padding: 0 12px; border: 1px solid var(--gray-200, #e5e7eb); border-radius: 10px; background: #fff; font-family: inherit; font-size: 14px; color: var(--gray-900, #111827); margin-bottom: 8px; -webkit-appearance: none; }
  .sci-modal input:focus { outline: none; border-color: var(--green-600, #16a34a); }
  .sci-venue-wrap { position: relative; margin-bottom: 8px; }
  .sci-modal .sci-venue-wrap input { margin-bottom: 0 !important; padding-right: 38px; }
  .sci-venue-wrap .sci-venue-ico { position: absolute; right: 12px; top: 50%; transform: translateY(-50%); width: 16px; height: 16px; color: var(--gray-400, #9ca3af); pointer-events: none; }
  .sci-venue-wrap #sciVenue:not(:placeholder-shown) ~ .sci-venue-ico { display: none; }
  .sci-venue-wrap #sciVenueSuggest { position: absolute; left: 0; right: 0; top: 46px; z-index: 5; background: #fff; border: 1px solid var(--gray-200, #e5e7eb); border-radius: 10px; box-shadow: 0 6px 20px rgba(0,0,0,.1); max-height: 220px; overflow-y: auto; }
  .sci-venue-wrap .venue-suggestion-item { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 10px 12px; font-size: 13.5px; font-weight: 700; color: var(--gray-900, #111827); cursor: pointer; border-bottom: 1px solid var(--gray-100, #f3f4f6); }
  .sci-venue-wrap .venue-suggestion-item:last-child { border-bottom: none; }
  .sci-venue-wrap .venue-suggestion-item:active { background: var(--green-50, #eef7f0); }
  .sci-venue-wrap .venue-suggestion-item .vs-region { font-size: 11px; font-weight: 700; color: var(--gray-400, #9ca3af); }
  .sci-venue-wrap .venue-suggestion-item.venue-new { color: var(--green-700, #15803d); }
  .sci-course-row { display: flex; gap: 8px; }
  .sci-course-col { flex: 1; min-width: 0; }
  .sci-divider { height: 1px; background: var(--gray-200, #e5e7eb); margin: 4px 0 14px; }
  .sci-prow { display: flex; align-items: center; gap: 10px; padding: 6px 0; }
  /* 아바타 — 기본(태그 안됨) 회색, 링크(태그)되면 초록/실제 사진. */
  .sci-prow .sci-pav { width: 32px; height: 32px; border-radius: 50%; background: var(--gray-200, #e5e7eb); color: var(--gray-500, #6b7280); display: flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 800; flex: 0 0 auto; overflow: hidden; }
  .sci-prow .sci-pav.linked { background: var(--green-700, #15803d); color: #fff; }
  .sci-prow .sci-pav img { width: 100%; height: 100%; object-fit: cover; }
  .sci-pinput-wrap { position: relative; flex: 1; min-width: 0; }
  .sci-pinput-wrap input { width: 100%; box-sizing: border-box; margin-bottom: 0 !important; }
  .sci-pinput-wrap.has-value input { padding-right: 38px; }
  .sci-pinput-wrap.has-value input.has-rbadge { padding-right: 120px; }
  .sci-pinput-wrap .sci-mask-badge, .sci-pinput-wrap .sci-handle-badge { position: absolute; right: 8px; top: 50%; transform: translateY(-50%); font-size: 11px; font-weight: 800; border-radius: 999px; padding: 3px 9px; pointer-events: none; max-width: 84px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .sci-pinput-wrap .sci-mask-badge { color: #854f0b; background: #fdf5e6; }
  .sci-pinput-wrap .sci-handle-badge { color: var(--green-800, #166534); background: var(--green-50, #eef7f0); }
  .sci-pinput-wrap.has-value .sci-mask-badge, .sci-pinput-wrap.has-value .sci-handle-badge { right: 38px; }
  .sci-pinput-wrap .sci-clear-x { position: absolute; right: 8px; top: 50%; transform: translateY(-50%); width: 22px; height: 22px; border-radius: 50%; border: none; background: var(--gray-200, #e5e7eb); color: var(--gray-600, #4b5563); font-size: 15px; line-height: 1; display: none; align-items: center; justify-content: center; cursor: pointer; padding: 0; -webkit-tap-highlight-color: transparent; }
  .sci-pinput-wrap.has-value .sci-clear-x { display: flex; }
  .sci-pinput-wrap .sci-clear-x:active { background: var(--gray-300, #d1d5db); }
  /* 그리너 매치 힌트 — 실명이 그리너 계정과 동명이고 아직 미연결일 때 '연결?' 제안. */
  .sci-gmatch { margin: -1px 0 9px 42px; }
  .sci-gm-label { display: block; font-size: 11.5px; color: var(--gray-500, #6b7280); margin-bottom: 6px; }
  .sci-gm-label b { color: var(--green-800, #166534); font-weight: 800; }
  .sci-gm-chips { display: flex; flex-wrap: wrap; gap: 6px; }
  /* 액션임이 분명하도록 — 흰 카드(상태배지 X) + 끝에 채운 초록 CTA 버튼 + 살짝 떠 보이는 그림자. */
  .sci-gm-chip { display: inline-flex; align-items: center; gap: 6px; padding: 4px 4px 4px 4px; border: 1px solid var(--green-300, #86cfa0); border-radius: 999px; background: #fff; box-shadow: 0 1px 3px rgba(20,83,45,.10); font-family: inherit; font-size: 12px; font-weight: 800; cursor: pointer; -webkit-tap-highlight-color: transparent; transition: transform .06s ease, box-shadow .12s ease; }
  .sci-gm-chip:active { transform: scale(.96); box-shadow: 0 1px 2px rgba(20,83,45,.14); }
  .sci-gm-av { width: 22px; height: 22px; border-radius: 50%; overflow: hidden; background: var(--green-700, #15803d); color: #fff; display: flex; align-items: center; justify-content: center; font-size: 10px; font-weight: 800; flex: 0 0 auto; }
  .sci-gm-av img { width: 100%; height: 100%; object-fit: cover; }
  .sci-gm-nm { color: var(--gray-900, #111827); }
  .sci-gm-h { color: var(--gray-600, #4b5563); font-weight: 700; padding-left: 2px; }
  /* 채운 초록 pill = 명백한 탭 유도 CTA */
  .sci-gm-cta { margin-left: 4px; padding: 4px 11px; border-radius: 999px; background: var(--green-700, #15803d); color: #fff; font-weight: 900; font-size: 11.5px; letter-spacing: .2px; }
  .sci-gm-chip:active .sci-gm-cta { background: var(--green-800, #166534); }
  .sci-sec-wrap { position: relative; }
  .sci-name-suggest { position: absolute; left: 0; right: 0; top: 46px; z-index: 6; background: #fff; border: 1px solid var(--gray-200, #e5e7eb); border-radius: 10px; box-shadow: 0 6px 20px rgba(0,0,0,.1); max-height: 208px; overflow-y: auto; }
  .sci-name-suggest .sci-ns-item { display: flex; align-items: center; gap: 8px; padding: 9px 11px; cursor: pointer; border-bottom: 1px solid var(--gray-100, #f3f4f6); font-size: 13.5px; font-weight: 700; color: var(--gray-900, #111827); }
  .sci-name-suggest .sci-ns-item:last-child { border-bottom: none; }
  .sci-name-suggest .sci-ns-item:active { background: var(--green-50, #eef7f0); }
  .sci-ns-av { width: 26px; height: 26px; border-radius: 50%; background: var(--green-700, #15803d); color: #fff; display: flex; align-items: center; justify-content: center; font-size: 11px; font-weight: 800; flex: 0 0 auto; overflow: hidden; }
  .sci-ns-av img { width: 100%; height: 100%; object-fit: cover; }
  .sci-ns-name { font-size: 13.5px; font-weight: 700; color: var(--gray-900, #111827); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .sci-ns-me { font-size: 10px; font-weight: 800; color: var(--green-700, #15803d); background: var(--green-50, #eef7f0); border-radius: 999px; padding: 2px 7px; flex: 0 0 auto; }
  .sci-ns-handle { font-size: 11px; color: var(--gray-400, #9ca3af); margin-left: auto; flex: 0 0 auto; }
  .sci-actions { display: flex; gap: 10px; margin-top: 18px; }
  .sci-actions button { height: 46px; border-radius: 12px; font-family: inherit; font-size: 15px; font-weight: 800; cursor: pointer; -webkit-tap-highlight-color: transparent; border: none; }
  .sci-actions .sci-cancel { flex: 1; background: var(--gray-100, #f3f4f6); color: var(--gray-700, #374151); }
  .sci-actions .sci-save { flex: 2; background: var(--green-700, #15803d); color: #fff; }
  /* photo-done 베뉴바 우측 — 카드정보 수정 진입(연필). 톱니 자리 재사용. */
  .sc-vb-edit { display: none; }
  body.photo-done-stage .sc-vb-edit { display: inline-flex; align-items: center; justify-content: center; }
  /* 라운드 기록 카드 — [날짜/모드] [베뉴/동반자] [스코어] [⋯] 4칼럼 */
  .recent-round-item .rri-col-when { flex-shrink: 0; min-width: 84px; align-self: center; }
  .recent-round-item .rri-date-top { font-size: 11px; color: var(--gray-400, #9ca3af); margin-bottom: 5px; white-space: nowrap; }
  .recent-round-item .rri-mode2 { display: inline-block; font-size: 10.5px; font-weight: 800; color: var(--green-700, #15803d); background: var(--green-50, #eef7f0); border-radius: 6px; padding: 2px 8px; white-space: nowrap; }
  /* 기록 유형별 태그 색상 — 게임류(오장·뽑기·스킨스·업다운)=노랑, 기록류(단순/상세)=연두. */
  .recent-round-item .rri-mode2.rmt-ojang,
  .recent-round-item .rri-mode2.rmt-ppopgi,
  .recent-round-item .rri-mode2.rmt-skins,
  .recent-round-item .rri-mode2.rmt-teamupdown { background: #FFF4E5; color: #B27700; }
  .recent-round-item .rri-mode2.rmt-record { background: #EDF7DC; color: #4E7A0E; }
  .recent-round-item .rri-col-info { flex: 1; min-width: 0; }
  .recent-round-item .rri-col-info .rri-course { font-size: 14px; font-weight: 700; color: var(--gray-900, #111827); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; margin-bottom: 3px; }
  /* 내가 안 친 라운드(동반 팀) — 우측 타수 자리 중립 태그 */
  .recent-round-item .rri-team-tag { flex-shrink: 0; font-size: 11px; font-weight: 700; color: var(--gray-500, #6b7280); background: var(--gray-100, #f3f4f6); border-radius: 8px; padding: 4px 9px; white-space: nowrap; }
  /* ⋯ 메뉴 버튼 (× 대체) */
  .history-round-item .rri-menu {
    flex-shrink: 0; width: 34px; align-self: stretch;
    display: flex; align-items: center; justify-content: center;
    background: transparent; border: none; border-left: 1px solid rgba(0,0,0,0.06);
    color: var(--gray-400, #9ca3af); font-size: 20px; line-height: 1; font-family: inherit;
    cursor: pointer; -webkit-tap-highlight-color: transparent; letter-spacing: 1px;
  }
  .history-round-item .rri-menu:active { color: var(--gray-700, #374151); }
  /* 최근 라운드 / 전체 라운드 공통 카드 포맷.
     [날짜·모드] [베뉴·동반자] [스코어] [상세/메뉴] 정보 위계를 두 화면에서 동일하게 유지. */
  .round-list-card {
    width: 100%;
    box-sizing: border-box;
    background: rgba(255,255,255,0.58);
    -webkit-backdrop-filter: blur(14px) saturate(150%);
    backdrop-filter: blur(14px) saturate(150%);
    border: 1px solid rgba(255,255,255,0.72);
    border-radius: 18px;
    box-shadow: 0 4px 16px rgba(20,60,40,0.04);
    overflow: hidden;
  }
  button.round-card-main {
    display: grid;
    grid-template-columns: 62px minmax(0,1fr) auto;
    grid-template-rows: auto auto;
    align-items: center;
    gap: 3px 8px;
    min-width: 0;
    width: 100%;
    padding: 13px 12px;
    border: none;
    background: transparent;
    color: inherit;
    font-family: inherit;
    text-align: left;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
    transition: transform .12s ease, background .12s ease;
  }
  button.round-card-main.round-card-direct { grid-template-columns:62px minmax(0,1fr) auto 22px; }
  button.round-card-main:active { transform: scale(0.985); background: rgba(20,83,45,0.035); }
  .round-list-card .rri-col-when,
  .round-list-card .rri-col-info { display:contents; }
  .round-list-card .rri-date-top { grid-column:1; grid-row:1; align-self:center; justify-self:center; margin:0; font-size:10.5px; line-height:1.25; text-align:center; }
  .round-list-card .rri-mode2 { grid-column:1; grid-row:2; justify-self:center; max-width:60px; overflow:hidden; text-overflow:ellipsis; }
  .round-list-card .rri-col-info .rri-course { grid-column:2; grid-row:1; align-self:center; justify-self:stretch; display:flex; align-items:baseline; justify-content:flex-start; min-width:0; margin-left:13px; margin-bottom:0; font-size:inherit; line-height:1.25; text-align:left; }
  .round-list-card .rri-venue { flex:0 0 auto; max-width:100%; overflow:visible; overflow-wrap:anywhere; white-space:normal; font-size:14px; font-weight:700; color:var(--gray-900,#111827); }
  .round-list-card .rri-section-name { flex-shrink:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:11.5px; font-weight:400; color:var(--gray-500,#6b7280); }
  .round-list-card .rri-mates { grid-column:2; grid-row:2; align-self:center; justify-self:stretch; margin-left:13px; font-size:11.5px; text-align:left; }
  .round-list-card .recent-round-score { grid-column:3; grid-row:1 / 3; font-size:24px; font-weight:800; line-height:1; }
  .round-list-card .rri-team-tag { grid-column:3; grid-row:1 / 3; max-width:72px; overflow:hidden; text-overflow:ellipsis; }
  .round-list-card .rri-chevron {
    display: flex; align-items: center; justify-content: center;
    grid-column:4; grid-row:1 / 3;
    width: 26px; align-self: stretch; color: var(--gray-300,#d1d5db);
    font-size: 20px; font-weight: 500;
  }
  /* 전체 보기만 ⋯ 메뉴 열을 유지. 공통 카드와 분리선 톤은 과하지 않게. */
  .history-page-body .history-round-item.round-list-card {
    display:flex; padding:0; gap:0;
    background:rgba(255,255,255,0.58);
    border:1px solid rgba(255,255,255,0.72);
    border-radius:14px;
    box-shadow:0 4px 16px rgba(20,83,45,0.055);
  }
  /* [내라운드 리디자인] 2행×4열: 날짜/모드 · 베뉴·코스/동반자 · 인증(중앙) · 스코어(중앙). 1·2열 각 행 세로중앙정렬. */
  .history-round-item.round-list-card .rri-click {
    display:grid; grid-template-columns:auto minmax(0,1fr) auto auto; grid-template-rows:auto auto;
    align-items:center; flex:1; width:auto; gap:5px 12px; padding:13px 14px;
  }
  .rrg-date { grid-column:1; grid-row:1; align-self:center; font-size:12.5px; font-weight:500; color:#7B8494; white-space:nowrap; }
  .rrg-mode { grid-column:1; grid-row:2; align-self:center; }
  .rrg-venue { grid-column:2 / 4; grid-row:1; align-self:center; display:flex; align-items:baseline; gap:6px; min-width:0; }   /* 코스명이 비어있는 col3(row1)까지 침범 가능 — 스코어 원 직전까지 */
  .rrg-mates { grid-column:2; grid-row:2; align-self:center; min-width:0; font-size:12px; color:#7B8494; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .rrg-verify { grid-column:3; grid-row:2; align-self:center; justify-self:center; }   /* 인증 = 2번째 행(모드·동반자와 같은 행) */
  .rrg-score { grid-column:4; grid-row:1 / 3; align-self:center; }   /* 스코어 원 = 2행 span 세로중앙 */
  .rr-venue { flex:0 0 auto; font-size:15px; font-weight:700; color:#111827; white-space:nowrap; }   /* 베뉴명은 절대 잘리지 않음 */
  .rr-sep { flex:0 0 auto; color:#c3c7cd; font-size:12px; }
  .rr-section { flex:0 1 auto; min-width:0; font-size:12.5px; font-weight:400; color:#7B8494; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }   /* 코스명부터 말줄임 */
  .rr-type { display:inline-flex; font-size:11.5px; font-weight:600; padding:3px 9px; border-radius:8px; white-space:nowrap; }
  .rr-type.rt-record { color:#146B3A; background:#e7f3ea; }
  .rr-type.rt-game { color:#b4590a; background:#fdf1e2; }
  .rr-circle { width:50px; height:50px; box-sizing:border-box; border-radius:50%; border:2px solid rgba(20,83,45,0.5); background:transparent; display:flex; align-items:center; justify-content:center; font-size:21px; font-weight:700; color:#1f2937; letter-spacing:-.01em; }
  .rr-circle.sc-good { border-color:#146B3A; color:#146B3A; }                 /* 평균보다 잘침 → 그리너 그린 */
  .rr-circle.sc-bad { border-color:rgba(202,138,4,0.55); color:#a97f14; }     /* 평균보다 못침 → 옅은 골드(빨강 X) */
  /* [어테스트] 타수+배지 세로 스택을 score 자리(col3, 두 행 span)에 배치 */
  .round-list-card .rri-score-col { grid-column:3; grid-row:1 / 3; align-self:center; justify-self:end; }
  .history-round-item.round-list-card .rri-menu {
    width:26px;
    margin:6px 2px 6px 0;
    align-self:stretch;
    border-left:0;
    border-radius:9px;
    font-size:18px;
  }
  .history-round-item.round-list-card .rri-menu:active { background:rgba(20,83,45,0.06); }
  @media (max-width: 360px) {
    button.round-card-main { grid-template-columns: 58px minmax(0,1fr) auto; gap:3px 6px; padding-left:8px; padding-right:8px; }
    button.round-card-main.round-card-direct { grid-template-columns:58px minmax(0,1fr) auto 20px; }
    .history-round-item.round-list-card .rri-click { grid-template-columns:auto minmax(0,1fr) auto auto; gap:5px 9px; padding:12px 11px; }
    .rr-circle { width:46px; height:46px; font-size:20px; }
    .rr-venue { font-size:14px; }
    .round-list-card .recent-round-score { font-size:18px; }
  }
  /* ⋯ 액션 시트 */
  #histRoundMenu .hrm-sheet { background: #fff; border-radius: 16px; padding: 8px; width: min(320px, 82vw); box-shadow: 0 12px 40px rgba(0,0,0,0.2); }
  #histRoundMenu .hrm-row { width: 100%; padding: 14px; border: none; background: none; border-radius: 10px; font-family: inherit; font-size: 15px; font-weight: 700; text-align: left; cursor: pointer; -webkit-tap-highlight-color: transparent; }
  #histRoundMenu .hrm-row:active { background: var(--gray-100, #f3f4f6); }
  #histRoundMenu .hrm-danger { color: #dc2626; }
  #histRoundMenu .hrm-cancel { width: 100%; margin-top: 4px; padding: 13px; border: none; background: var(--gray-100, #f3f4f6); border-radius: 10px; font-family: inherit; font-size: 14px; font-weight: 700; color: var(--gray-600, #6b7280); cursor: pointer; }
  /* 같은 라운드 스택 카드 — 뒤에 카드(그림자)로 N개 표시. 높이는 일반 카드와 동일. */
  .history-round-item.hri-stacked {
    box-shadow:
      0 3px 12px rgba(20, 83, 45, 0.05),
      5px 5px 0 -1px #e9dfc6,          /* 뒤 카드 1 (진한 크림) */
      5px 5px 0 0 rgba(20, 83, 45, 0.28),
      10px 10px 0 -1px #ddd0ad,        /* 뒤 카드 2 (더 진하게 → 깊이) */
      10px 10px 0 0 rgba(20, 83, 45, 0.32);
    margin-bottom: 20px;
  }
  .history-round-item.hri-stacked .hri-stack-count {
    font-size: 12px; font-weight: 800; color: var(--green-700, #15803d);
    letter-spacing: 0;
  }
  /* 펼친 그룹 — 접기 헤더 + 하위 카드들 살짝 들여쓰기 */
  .hri-exp { position: relative; margin-bottom: 8px; }
  .hri-exp-collapse {
    display: flex; align-items: center; justify-content: space-between;
    width: 100%; padding: 8px 12px; margin-bottom: 6px;
    background: rgba(20,83,45,0.05); border: none; border-radius: 10px;
    font-family: inherit; font-size: 12.5px; font-weight: 800; color: var(--green-800, #166534);
    cursor: pointer; -webkit-tap-highlight-color: transparent;
  }
  .hri-exp-collapse .hec-arrow { font-size: 11px; }
  .hri-exp .history-round-item { margin-left: 10px; }

