/*!
 * SchoolMusic - VVIP 가격 카드 ONLY (미니멀 주입 버전)
 * ---------------------------------------------------------------
 * 전체 페이지 리스타일링 없이, 가격표 바로 아래에 VVIP 혜택가 카드 1개만 삽입합니다.
 * - 검색창/썸네일/상품명/가격 폰트 등 기존 스쿨뮤직 디자인은 전혀 건드리지 않음
 * - 카드 안 텍스트는 볼드(900) 대신 스쿨뮤직 기본 폰트 유지 + 크기만 키워 시인성 확보
 *
 * 폰트 크기 조정은 아래 CSS_TEXT 안의 숫자만 바꾸면 됩니다. (한눈에 보이도록 정리)
 *
 * 부크마클릿(테스트용):
 *   javascript:(function(){var s=document.createElement('script');s.src='https://server.tayra-dace.ts.net/school/07-vvip-card-only.js?'+Date.now();document.head.appendChild(s);})();
 *
 * 파일 인코딩: UTF-8 + BOM (EUC-KR 페이지에서도 한글 안 깨짐)
 */
(function () {
  'use strict';

  /* ===== 카드 CSS (여기 숫자만 바꾸면 크기 조정됨) ===== */
  var CSS_TEXT = `
    /* 카드 전체 박스 */
    .sm-vc-row {
      display: flex;
      align-items: center;
      gap: 14px;
      padding: 18px 20px;
      margin: 10px 0;
      background: linear-gradient(135deg, #fff5f6 0%, #ffe9ec 100%);
      border: 1.5px solid #f4c5c9;
      border-radius: 14px;
      box-sizing: border-box;
    }

    /* 왼쪽 엠블럼 (기타 피크 + 골드 S) */
    .sm-vc-emblem {
      flex-shrink: 0;
      position: relative;
      width: 44px;
      height: 50px;
      background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 46' preserveAspectRatio='xMidYMid meet'><defs><linearGradient id='b' x1='0' y1='0' x2='0' y2='1'><stop offset='0' stop-color='%232a2c33'/><stop offset='1' stop-color='%2314161a'/></linearGradient></defs><path d='M 20 2.5 C 30 2.5, 37 9, 37 19 C 37 31, 26 43.5, 20 43.5 C 14 43.5, 3 31, 3 19 C 3 9, 10 2.5, 20 2.5 Z' fill='url(%23b)' stroke='%23e7c876' stroke-opacity='0.6' stroke-width='0.9'/></svg>") center / contain no-repeat;
      filter: drop-shadow(0 4px 10px rgba(20,22,26,.22));
    }
    .sm-vc-emblem::before {
      content: "S";
      position: absolute;
      inset: 0;
      display: flex;
      align-items: center;
      justify-content: center;
      padding-bottom: 5px;
      font-family: Georgia, "Times New Roman", serif;
      font-style: italic;
      font-size: 21px;
      color: #e7c876;
    }

    /* 가운데 텍스트 묶음 (라벨 + 가격) */
    .sm-vc-info {
      display: flex;
      flex-direction: column;
      gap: 4px;
      min-width: 0;
    }
    /* "VVIP 멤버십 혜택가" 라벨 */
    .sm-vc-label {
      color: #c41020;
      font-size: 17px;       /* ← 라벨 크기 */
      font-weight: normal;
      letter-spacing: -0.2px;
      white-space: nowrap;
    }
    /* 혜택가 (원래 위치, 큰 빨간 글씨) */
    .sm-vc-price {
      color: #c41020;
      font-size: 34px;       /* ← 혜택가 크기 */
      font-weight: 500;      /* 볼드(700+) 대신 미디엄 */
      letter-spacing: -0.8px;
      line-height: 1.05;
    }
    /* 오른쪽 빨간 뱃지: "혜택 금액"(윗줄) + 금액(줄바꿈 아랫줄) */
    .sm-vc-save {
      margin-left: auto;
      flex-shrink: 0;
      padding: 10px 16px;
      border-radius: 14px;
      background: #ec0d2e;
      color: #fff;
      text-align: center;
      white-space: nowrap;
    }
    .sm-vc-save-label {
      display: block;
      font-size: 14px;       /* ← "혜택 금액" 글자 크기 */
      font-weight: 500;
      letter-spacing: -0.2px;
    }
    .sm-vc-save-num {
      display: block;
      margin-top: 2px;
      font-size: 18px;       /* ← 금액 글자 크기 */
      font-weight: 600;
      letter-spacing: -0.3px;
    }

    /* 좁은 화면 대응 */
    @media (max-width: 520px) {
      .sm-vc-row { padding: 14px 14px; gap: 10px; }
      .sm-vc-price { font-size: 28px; }
    }
  `;

  function injectCss() {
    if (document.getElementById('sm-vvip-card-only-style')) return;
    var style = document.createElement('style');
    style.id = 'sm-vvip-card-only-style';
    style.appendChild(document.createTextNode(CSS_TEXT));
    (document.head || document.documentElement).appendChild(style);
  }

  /* ===== 카드 라벨 (이 텍스트만 고정, 가격/혜택금액은 상세페이지에서 읽음) ===== */
  var CARD_LABEL = 'VVIP 멤버십 혜택가';

  function onlyNum(s) { return parseInt(String(s).replace(/[^0-9]/g, ''), 10) || 0; }
  function won(n) { return n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',') + '원'; }

  // 상세페이지에서 실제 판매가 / 정가(취소선) 읽기
  // 값은 ID 기반(reset_good_price)으로 안정적으로 읽고, 배치는 화면의 큰 가격 표시 요소 기준
  function readPrices() {
    // 1) 실제 판매가(단가): 모든 상품 공통 ID — 폰트 크기/레이아웃 무관
    var gp = document.getElementById('reset_good_price');
    var sale = gp ? onlyNum(gp.value) : 0;
    if (!sale) {
      var fa = document.getElementById('reset_formated_price_area');
      if (fa) sale = onlyNum(fa.textContent);
    }
    if (!sale) return null;

    // 2) 배치 기준: 화면의 큰 판매가 표시 요소 (같은 숫자 + 폰트 24px 이상)
    var anchor = null;
    var fonts = document.querySelectorAll('font[style*="font-size"]');
    for (var i = 0; i < fonts.length; i++) {
      var st = fonts[i].getAttribute('style') || '';
      var m = st.match(/font-size:\s*(\d+)px/);
      if (!m || parseInt(m[1], 10) < 24) continue;
      if (onlyNum(fonts[i].textContent) === sale) { anchor = fonts[i]; break; }
    }

    // 3) 정가(취소선): 판매가보다 큰 값 (관련상품 오인 방지 위해 sale*10 미만)
    var orig = 0;
    var strikes = document.querySelectorAll('font[style*="line-through"], strike, del');
    for (var j = 0; j < strikes.length; j++) {
      var ov = onlyNum(strikes[j].textContent);
      if (ov > sale && ov < sale * 10) { orig = ov; break; }
    }

    return { anchor: anchor, sale: sale, orig: orig };
  }

  function buildCard() {
    var p = readPrices();
    if (!p) return false;

    // 배치 기준 요소: 큰 가격 표시(anchor) 우선, 없으면 결제금액 영역
    var anchorEl = p.anchor || document.getElementById('reset_formated_price_area');
    if (!anchorEl) return false;

    // 가격이 들어있는 테이블 → 그 테이블 바로 뒤에 카드 삽입
    var priceTable = anchorEl.closest ? anchorEl.closest('table') : null;
    if (!priceTable || !priceTable.parentNode) {
      // 테이블 못 찾으면 anchor 부모에 바로 붙임
      priceTable = anchorEl;
    }
    var hostTd = priceTable.parentNode;
    if (hostTd && hostTd.querySelector && hostTd.querySelector('.sm-vc-row')) return true; // 이미 삽입됨

    var row = document.createElement('div');
    row.className = 'sm-vc-row';
    row.innerHTML =
      '<span class="sm-vc-emblem" aria-hidden="true"></span>' +
      '<div class="sm-vc-info">' +
        '<span class="sm-vc-label"></span>' +
        '<span class="sm-vc-price"></span>' +
      '</div>' +
      '<span class="sm-vc-save">' +
        '<span class="sm-vc-save-label">혜택 금액</span>' +
        '<span class="sm-vc-save-num"></span>' +
      '</span>';

    row.querySelector('.sm-vc-label').textContent = CARD_LABEL;
    // 혜택가 = 상세페이지 실제 판매가 그대로 (원래 위치)
    row.querySelector('.sm-vc-price').textContent = won(p.sale);
    // 빨간 뱃지 금액(아랫줄) = 정가 - 판매가 (정가 있을 때만 뱃지 표시)
    var saveEl = row.querySelector('.sm-vc-save');
    if (p.orig > p.sale) {
      row.querySelector('.sm-vc-save-num').textContent = '-' + won(p.orig - p.sale);
    } else {
      saveEl.style.display = 'none';
    }

    // 가격 테이블 바로 뒤에 카드 삽입 (가격 바로 아래에 보이도록)
    priceTable.parentNode.insertBefore(row, priceTable.nextSibling);
    return true;
  }

  function init() {
    injectCss();
    // 제외 상품이면 카드 미삽입
    if (document.body && document.body.dataset.vvipExcluded === 'true') return;
    // 약간의 재시도 (동적 렌더링 대비)
    if (buildCard()) return;
    var tries = 0;
    var timer = setInterval(function () {
      tries++;
      if (buildCard() || tries > 10) clearInterval(timer);
    }, 200);
  }

  if (document.readyState === 'loading') {
    document.addEventListener('DOMContentLoaded', init);
  } else {
    init();
  }
})();
