{"version":3,"file":"shared-lib.DSIPIb43.mjs","names":[],"sources":["https:/framerusercontent.com/modules/rffzIMQIUPQ5UOzTxxG8/XClt1Or0xhCSOoh2e7lz/siteMetadata.js"],"sourcesContent":["// Generated by Framer (4076eae)\nexport default function metadata(params,activeLocale){return{customHTMLBodyEnd:'<script>\\n/**\\n * Framer Scroll Memory — Android harden\\n * - Per-URL save/restore via sessionStorage\\n * - Wait-until-tall restore\\n * - Anti-footer snap loop for Chrome/Android\\n */\\n(function () {\\n  const TIMEOUT_MS = 2500;                 // 복원 대기 최대 시간\\n  const GUARD_MS = 2500;                   // 안티-푸터 가드 시간\\n  const MIN_GAP_FROM_BOTTOM = 120;         // 저장값이 바닥과 이 정도 이상이면 \\'의도치 않은 바닥 점프\\'로 판단\\n  const KEY = (u) => \"scroll:\" + u;\\n\\n  // 브라우저 기본 복원 비활성화\\n  try { if (\"scrollRestoration\" in history) history.scrollRestoration = \"manual\"; } catch {}\\n\\n  // CSS 보조: 부드러운 스크롤/앵커 보류\\n  try {\\n    const s = document.createElement(\"style\");\\n    s.textContent = \"html{scroll-behavior:auto;overflow-anchor:none}\";\\n    document.head.appendChild(s);\\n  } catch {}\\n\\n  // URL 키 (해시까지 포함하면 동일 경로의 섹션 복원에 유리)\\n  const urlKey = () => location.pathname + location.search + location.hash;\\n\\n  function getSaved() {\\n    try {\\n      const v = sessionStorage.getItem(KEY(urlKey()));\\n      if (v == null) return null;\\n      const y = parseInt(v, 10);\\n      return Number.isFinite(y) ? y : null;\\n    } catch { return null; }\\n  }\\n\\n  let saveRAF = 0;\\n  function saveScroll() {\\n    if (saveRAF) return;\\n    saveRAF = requestAnimationFrame(() => {\\n      try {\\n        const y = window.scrollY || document.documentElement.scrollTop || 0;\\n        sessionStorage.setItem(KEY(urlKey()), String(y));\\n      } catch {}\\n      saveRAF = 0;\\n    });\\n  }\\n\\n  // 문서 높이가 targetY를 수용할 만큼 충분해질 때까지 대기 후 복원\\n  function restoreWhenStable(targetY, timeoutMs = TIMEOUT_MS) {\\n    const start = performance.now();\\n    const doc = document.scrollingElement || document.documentElement || document.body;\\n\\n    function tallEnough() {\\n      const height = doc.scrollHeight;\\n      const vh = window.innerHeight || 0;\\n      return height >= Math.max(targetY + 1, vh);\\n    }\\n\\n    function place() {\\n      // 두 프레임에 걸쳐 강제 고정 (지연 로드/주소창 리사이즈 대비)\\n      window.scrollTo(0, targetY);\\n      requestAnimationFrame(() => window.scrollTo(0, targetY));\\n    }\\n\\n    function tick() {\\n      const elapsed = performance.now() - start;\\n      if (tallEnough() || elapsed > timeoutMs) {\\n        place();\\n        // 바닥으로 튀는 현상 적극 방어\\n        antiFooterGuard(targetY, GUARD_MS);\\n        return;\\n      }\\n      requestAnimationFrame(tick);\\n    }\\n    // 첫 프레임 비우기 (레이아웃 시작)\\n    requestAnimationFrame(tick);\\n  }\\n\\n  // 안드로이드/크롬에서 뒤로가기 직후 바닥으로 튀면 반복적으로 되돌림\\n  function antiFooterGuard(targetY, guardMs) {\\n    const start = performance.now();\\n    const doc = document.scrollingElement || document.documentElement || document.body;\\n\\n    function guardTick() {\\n      const now = performance.now();\\n      if (now - start > guardMs) return;\\n\\n      const y = window.scrollY || document.documentElement.scrollTop || 0;\\n      const bottom = (window.innerHeight || 0) + y;\\n      const gap = (doc.scrollHeight || 0) - bottom;\\n\\n      // 바닥 근처로 튐 + 우리가 저장한 위치는 바닥에서 충분히 떨어져 있음 → 되돌리기\\n      if (gap < 4 && (doc.scrollHeight - (targetY + (window.innerHeight || 0)) > MIN_GAP_FROM_BOTTOM)) {\\n        window.scrollTo(0, targetY);\\n      }\\n      requestAnimationFrame(guardTick);\\n    }\\n    requestAnimationFrame(guardTick);\\n  }\\n\\n  function restoreFromHistoryIfAny() {\\n    const y = getSaved();\\n    if (y == null) return;\\n\\n    // 초기 바닥 점프 방지: 우선 0으로 한 번 고정 후 안정화 복원\\n    window.scrollTo(0, 0);\\n    restoreWhenStable(y);\\n  }\\n\\n  // 스크롤 저장\\n  window.addEventListener(\"scroll\", saveScroll, { passive: true });\\n  window.addEventListener(\"beforeunload\", saveScroll);\\n  window.addEventListener(\"pagehide\", saveScroll);\\n  document.addEventListener(\"visibilitychange\", () => {\\n    if (document.visibilityState === \"hidden\") saveScroll();\\n  });\\n\\n  // SPA 라우트 전 저장 & 포워드 내비게이션은 항상 상단 시작\\n  const wrap = (fn) => function (state, title, url) {\\n    saveScroll();\\n    const prev = location.href;\\n    const ret = fn.apply(this, arguments);\\n    if (url && String(url) !== prev) requestAnimationFrame(() => window.scrollTo(0, 0));\\n    return ret;\\n  };\\n  try {\\n    history.pushState = wrap(history.pushState);\\n    history.replaceState = wrap(history.replaceState);\\n  } catch {}\\n\\n  // 뒤로가기 복원 (bfcache 포함)\\n  window.addEventListener(\"popstate\", restoreFromHistoryIfAny);\\n  window.addEventListener(\"pageshow\", (e) => {\\n    const nav = performance.getEntriesByType && performance.getEntriesByType(\"navigation\")[0];\\n    const isBF = e.persisted || (nav && nav.type === \"back_forward\");\\n    if (isBF) restoreFromHistoryIfAny();\\n  });\\n\\n  // (선택) 동일 탭 재방문 시 복원하려면 아래 주석 해제\\n  // document.addEventListener(\"DOMContentLoaded\", () => {\\n  //   const nav = performance.getEntriesByType && performance.getEntriesByType(\"navigation\")[0];\\n  //   if (nav && nav.type === \"reload\") restoreFromHistoryIfAny();\\n  // });\\n})();\\n</script>\\n\\n\\n',customHTMLHeadEnd:'<meta name=\"naver-site-verification\" content=\"89af069756e78dca167a50252b7f063bf02f2069\">',customHTMLHeadStart:'<meta name=\"keywords\" content=\"한예종, 서울예대, 연극영화 입시, 레슨포케이아트, 연극, 연기, 한예종 연기, 영화, 극작, 연출, 방송영상, 한예종실기, 특별전형입시학원\">',description:\"레슨포케이아트는 연극\\xb7영화 입시 실기, 자소서, 면접 전문 입시 학원입니다. 한예종 영화과, 한예종 방영과 최다 합격을 기록했습니다.\",favicon:\"https://framerusercontent.com/assets/Q9UVQBCyWyzR9U7ADmT9JXgVF0k.png\",robots:\"max-image-preview:large\",socialImage:\"https://framerusercontent.com/assets/pHUSNgWNShSC5HR3wLV55IOkg.png\",title:\"레슨포케이아트 | 한예종 최다 합격 연극영화 입시 실기 전문 학원\"};}export const metadataVersion=1;\nexport const __FramerMetadata__ = {\"exports\":{\"metadataVersion\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],"mappings":"2DACA,SAAwB,EAAS,EAAO,EAAa,CAAC,MAAM,CAAC,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAkuJ,kBAAkB,2FAA2F,oBAAoB,kHAAkH,YAAY,6EAAgF,QAAQ,uEAAuE,OAAO,0BAA0B,YAAY,qEAAqE,MAAM,uCAAuC"}