diff --git a/solution/site/scripts/mockup/README.md b/solution/site/scripts/mockup/README.md index 1165d06..91eaf4a 100644 --- a/solution/site/scripts/mockup/README.md +++ b/solution/site/scripts/mockup/README.md @@ -17,6 +17,22 @@ --- +## 보고 규칙 — "했다" 고 말하기 전에 + +2026-09-11 지시. **이 규칙을 어긴 기록이 §7 에 여섯 건 있다.** + +1. **실행하지 않은 것을 됐다고 쓰지 않는다.** 코드에서 빠진 것을 보는 건 확인이 아니다. + 화면을 열어 세거나 명령을 돌려서 **숫자·출력**을 얻은 뒤에 말한다. +2. **"했다" 옆에 무엇으로 확인했는지 같이 쓴다.** `audit-all.mjs 34/34` · `md5 일치` · + `20초 동안 0px` 처럼. 근거를 못 쓰면 아직 안 끝난 것이다. +3. **절차를 안내할 때는 그 절차를 먼저 밟아 본다.** + "이것만 하면 나온다" 를 안 띄워 보고 쓴 적이 있다(2026-09-11, 다른 기계에서 흰 화면이었다). +4. **일부만 했으면 일부만 했다고 쓴다.** 못 한 것을 빼고 요약하지 않는다. +5. **사장님이 본 것과 내가 잰 것이 다르면, 내가 잰 것을 먼저 의심한다.** + 범위를 좁혀서 재지 말고 전수로 다시 센다. + +--- + ## 0. 먼저 알아야 할 것 — 왜 스크립트인가 `/s/stay` 는 **payload 가 없는 목업**이다(`stay2` · `stay3` 도 같다). diff --git a/solution/site/scripts/mockup/SECTIONS.md b/solution/site/scripts/mockup/SECTIONS.md index 30d5223..161cf38 100644 --- a/solution/site/scripts/mockup/SECTIONS.md +++ b/solution/site/scripts/mockup/SECTIONS.md @@ -1,279 +1,250 @@ -# /s/stay 섹션별 — 목업은 무엇으로 만들었고, 제품은 무엇으로 만들어야 하나 +# 이 시연본을 제품으로 옮기기 — 개발자 작업 지시서 -작성 2026-09-11 · 대상 `https://web4ai.o2osolution.ai/s/stay` (스테이,머뭄 · 전북 군산) -**읽는 사람**: 빌더·백엔드에서 이 시연본을 실제 생성 파이프라인으로 옮기는 사람. +대상 `https://web4ai.o2osolution.ai/s/stay` (스테이,머뭄 · 전북 군산) · 작성 2026-09-11 -시연본은 **payload 가 없는 목업**이다 — 프리렌더가 굽지 않고, `index.html` 한 장을 -손으로 조립했다(`patch_stay.py`). 그래서 "화면에 있는 것" 과 "제품이 만들 수 있는 것"이 -지금 **갈라져 있다.** 이 문서는 섹션마다 그 간격을 적는다. +**이 문서를 읽는 사람**: 이 시연본에 있는 것을 빌더·백엔드에서 **자동으로 만들게** 하려는 사람. +설명서가 아니라 **할 일 목록**이다. 프롬프트 전문은 [PROMPTS.md](PROMPTS.md) 에 있고 +여기서는 "어느 절을 쓰라"고만 가리킨다. --- -## 0. 한 줄 결론 +## 0. 먼저 — 화면부터 띄운다 (3분) -22개 섹션 중 **16개는 이미 계약과 생성 경로가 있다.** 나머지 6개가 할 일이다: +```bash +git clone && cd o2o-site-AEO +cp .env.example .env && cp nginx/site.conf.example nginx/site.conf +docker compose up -d -| | 섹션 | 왜 | +cd solution/site/scripts/mockup +python3 patch_stay.py # build/index.html 을 만든다 + +C=o2o-web4ai-solution-prerender +docker exec $C mkdir -p /app/solution/site/out/s/stay/img/people \ + /app/solution/site/out/s/stay/img/mirror /app/solution/site/out/s/stay/audio \ + /app/solution/site/out/s/stay/vendor +docker cp build/index.html $C:/app/solution/site/out/s/stay/index.html +docker cp img/. $C:/app/solution/site/out/s/stay/img/ +docker cp audio/. $C:/app/solution/site/out/s/stay/audio/ +docker cp vendor/. $C:/app/solution/site/out/s/stay/vendor/ + +node audit-all.mjs # 34개 항목 전수 점검 +``` + +→ `http://localhost/s/stay` + +★ **이 시연본은 레포 안에서 자급자족한다.** 번들 css/js 와 미러 사진 61장까지 +`vendor/` · `img/mirror/` 에 들어 있고, `patch_stay.py` 가 경로를 `/s/stay/…` 로 바꿔 박는다. +그래서 그 기계에서 구운 번들 해시와 **무관하게** 뜬다. (2026-09-11 이전 판은 안 그랬다 — +`/assets/…` 를 가리켜서 다른 기계에서는 흰 화면이었다.) + +--- + +## 1. 어떤 파일을 여나 + +| 파일 | 무엇이 들어 있나 | 언제 연다 | |---|---|---| -| ① | **히어로 캐치프레이즈** | 계약에 없다. `narrative.tagline` 은 **문자열 하나**인데 목업은 100개를 돌린다 | -| ② | **음악 플레이어(자작곡)** | 계약에 없다. `media` 에 오디오 종류가 없다 | -| ③ | **추천 일정** | 계약·생성기 둘 다 있는데 **깊이가 다르다**. 서버판은 하루 4칸(관광 2·끼니 2)이고 체류·이동·입퇴실 개념이 없다 | -| ④ | **인물·노래 사진** | 프롬프트가 `imageQuery` 만 받는다. 실제 사진을 찾아 붙이고 **라이선스를 표시하는** 경로가 없다 | -| ⑤ | **상한(maxItems)** | songs 8·people 10 인데 목업은 25·57 이다 | -| ⑥ | **객실 사진** | 목업은 야놀자 등록본에서 가져왔다. 수집 어댑터 정책([DECISIONS 1-1](../../../../docs/DECISIONS.md))에 걸리는지 결론이 필요하다 | +| [PROMPTS.md](PROMPTS.md) | **프롬프트 전문 7종** — 캐치프레이즈 · 장소 대장 · 테마 · 노래 · 인물 · 엽서 | 생성 프롬프트를 쓸 때 | +| [README.md](README.md) | 목업 고치는 절차 · 배포 · 밟으면 조용히 틀리는 자리 | 목업 자체를 손볼 때 | +| [REVIEW-2026-09-11.md](REVIEW-2026-09-11.md) | 일정이 왜 틀렸고 무엇을 고쳤나 | 일정 규칙을 옮기기 전에 | +| [TEXT.md](TEXT.md) | 화면에 나가는 텍스트 전문 | 문구 톤을 볼 때 | +| `build_itinerary.py` | 일정 생성기 **원본** — 규칙 14종이 여기 있다 | 일정을 서버로 옮길 때 | +| `build_story.py` | 노래·인물 + 위키 사진 수집 | 인물 사진 경로를 만들 때 | +| `patch_stay.py` | payload 조립 + 캐치프레이즈·자작곡·객실사진 주입 | 목업 데이터를 바꿀 때 | +| `inject.js` / `inject.css` | 렌더러에 **없는 기능**을 목업에 얹은 것 | 그 기능을 렌더러로 옮길 때 | +| `audit-all.mjs` / `rails-test.mjs` | 브라우저 전수 점검 | 언제나. 끝났다고 말하기 전에 | + +제품 쪽 짝은 이것들이다. + +| 이 목업 | 제품에서 같은 일을 하는 곳 | +|---|---| +| `build_itinerary.py` | `solution/backend/services/itinerary.py` | +| `build_story.py` | `solution/backend/services/story_service.py` | +| PROMPTS.md | `solution/shared/src/lib/section-prompts.ts` (→ `npm run export:prompts`) | +| payload 필드 | `solution/shared/src/types/site-payload.ts` · `shared/src/lib/section-data.ts` | +| 섹션 목록·기본 on/off | `solution/backend/services/site_payload.py:155` 부근 | --- -## 1. 값이 화면까지 가는 길 +## 2. 지금 상태 — 섹션 22개 -``` -수집·생성(백엔드) → area_contents / places / media → site_payload.py → payload JSON - ↓ - 프리렌더(Node) → out/s//index.html - ↓ - window.__SITE_PAYLOAD__ → React 하이드레이션 -``` +`할 일` 칸이 비어 있으면 **제품이 이미 만들 수 있다.** 손댈 필요 없다. -- **읽는 쪽 계약**은 `solution/shared/src/types/site-payload.ts` · `shared/src/lib/section-data.ts` 한 곳이다. -- **프롬프트 계약**은 `shared/src/lib/section-prompts.ts` 한 곳이고, - 백엔드는 `npm run export:prompts` 산출물(`backend/services/prompts/section_prompts.json`)을 읽는다. - **파이썬 쪽을 손으로 고치지 않는다.** -- 섹션 목록·기본 on/off 는 업종별로 `services/site_payload.py:155` 부근에 있다. +| id | 이름 | 값이 오는 자리 | 지금 누가 만드나 | 할 일 | +|---|---|---|---|---| +| `hero` | 히어로 | `narrative` | 사장님이 적음 | **T1** | +| `intro` | 소개 | `narrative.about[]` | LLM(빌더) | | +| `rooms` | 객실 안내 | `units[]` + `media[]` | 사장님이 올림 | **T6** | +| `event` | 소식 | `data(kind=event)` | 사장님이 적음 | | +| `info` | 기본 정보 | `facts[]` | 사장님이 적음 | | +| `booking` | 실시간 예약 | — | (꺼 둠) | | +| `video` | 영상 | `data(kind=video)` | 사장님이 적음 | | +| `photos` | 사진 갤러리 | `media[]` | 사장님이 올림 | | +| `map` | 오시는 길 | `place` + `routes[]` | 수집 | | +| `festival` | 계절별 축제 | `local.festivals` | TourAPI 수집 | | +| `local` | 지역 정보 | `local.attractions/restaurants` | TourAPI 수집 | | +| `itinerary` | **추천 일정** | `data(kind=itinerary)` | `services/itinerary.py` | **T2** | +| `story` | 군산 이야기 | 아래 6탭 껍데기 | — | | +| `songs` | 가요 다방 | `data(kind=songs)` | LLM `section-prompts.ts:67` | **T3 T5** | +| `daily` | 오늘의 한 장 | `data(kind=daily)` | LLM `:91` | 섹션 자리가 없다 | +| `people` | 인물 열전 | `data(kind=people)` | LLM `:113` | **T3 T5** | +| `chronicle` | 시간의 골목 | `data(kind=chronicle)` | LLM `:135` | | +| `postcard` | 오늘의 엽서 | `data(kind=postcard)` | LLM `:160` | | +| `quiz` | 뒤집어 보는 질문 | `data(kind=quiz)` | LLM `:188` | | +| `faq` | 자주 묻는 질문 | `faqs[]` | LLM + 사장님 | | +| `rules` | 이용 규정 | `facts[]` | 사장님이 적음 | | +| `weather` | 날씨 | `local.weather` | open-meteo | | +| `planner` | 계절별 추천 하루 | `data(kind=planner)` | **없음** | (이 시연본은 꺼 둠) | -payload 안에서 섹션이 값을 받는 자리는 셋뿐이다. - -| 자리 | 무엇이 들어가나 | 예 | -|---|---|---| -| `theme.sections[].data` | JSON 봉투 문자열(`{kind, version, title, items[]}`) | songs · people · itinerary · event · video · planner | -| 최상단 필드 | 업소가 적은 사실·사진·문답 | `place` `facts` `units` `media` `faqs` `links` `narrative` | -| `local.*` | 지역에서 수집한 것 | `attractions`(12) `restaurants`(8) `festivals`(10) `weather` | +여기에 **섹션이 아닌 것** 하나가 더 있다 — 헤더 음악 플레이어(**T4**). --- -## 2. 섹션 22개 — 한눈에 +## 3. 할 일 여섯 -`on` 은 이 목업에서 켜져 있는지다. `story` 안의 6개는 탭이라 최상단은 꺼져 있다. +### T1 — 히어로 캐치프레이즈 -| # | id | 이름 | on | 값이 오는 자리 | 계약 | 프롬프트 | 목업에서 한 일 | -|---|---|---|---|---|---|---|---| -| 1 | `hero` | 히어로 | ● | `narrative` + 대표 사진 | 있음 | **없음** | 캐치프레이즈 100개를 주입분이 돌림 | -| 2 | `intro` | 소개 | ● | `narrative.about[]` | 있음 | 있음(빌더) | 원본 그대로 | -| 3 | `rooms` | 객실 안내 | ● | `units[]` + `media[]` | 있음 | — | 야놀자 등록본으로 **전면 교체**(A동 12·B동 10) | -| 4 | `event` | 소식 | ● | `data(kind=event)` 3건 | 있음 | — | 원본 그대로 | -| 5 | `info` | 기본 정보 | ● | `facts[]` 12건 | 있음 | — | 맨 아래 가로선만 CSS 로 제거 | -| 6 | `booking` | 실시간 예약 | ○ | — | 있음 | — | 껐다(시연에 결제 흐름 없음) | -| 7 | `video` | 영상 | ● | `data(kind=video)` 3건 | 있음 | — | 원본 그대로 | -| 8 | `photos` | 사진 갤러리 | ● | `media[]` 37장 | 있음 | — | 원본 그대로 | -| 9 | `map` | 오시는 길 | ● | `place` + `routes[]` | 있음 | — | `routes` 비어 있음 | -| 10 | `festival` | 계절별 축제 | ● | `local.festivals` 10건 | 있음 | — | 원본 그대로 | -| 11 | `local` | 지역 정보 | ● | `local.attractions/restaurants` | 있음 | — | 원본 그대로 | -| 12 | `itinerary` | **추천 일정** | ● | `data(kind=itinerary)` 21개 | 있음 | **없음** | **전부 다시 생성**(§4) | -| 13 | `story` | 군산 이야기 | ● | 아래 6탭의 껍데기 | 있음 | — | — | -| 14 | `songs` | 가요 다방 | 탭 | `data(kind=songs)` 25곡 | 있음 | 있음 `section-prompts.ts:67` | 8 → **25곡**으로 늘림 | -| 15 | `people` | 인물 열전 | 탭 | `data(kind=people)` 57명 | 있음 | 있음 `:113` | 10 → **57명** + 사진 18장 | -| 16 | `chronicle` | 시간의 골목 | 탭 | `data(kind=chronicle)` 7건 | 있음 | 있음 `:135` | 원본 그대로 | -| 17 | `postcard` | 오늘의 엽서 | 탭 | `data(kind=postcard)` 4건 | 있음 | 있음 `:160` | 지도 링크만 추가 | -| 18 | `quiz` | 뒤집어 보는 질문 | 탭 | `data(kind=quiz)` 4건 | 있음 | 있음 `:188` | 원본 그대로 | -| 19 | `faq` | 자주 묻는 질문 | ● | `faqs[]` 32건 | 있음 | 있음 | 원본 그대로 | -| 20 | `rules` | 이용 규정 | ● | `facts[]` | 있음 | — | 원본 그대로 | -| 21 | `weather` | 날씨 | ● | `local.weather` | 있음 | — | 애니메이션만 정지 | -| 22 | `planner` | 계절별 추천 하루 | ○ | `data(kind=planner)` 4건 | 있음 | **없음** | 껐다 | +**증상** 히어로 문구가 사이트마다 한 줄로 고정이다. 계절도 날씨도 안 탄다. +지금 계약(`site-payload.ts:316` `Narrative`)에 문자열 `tagline` 하나뿐이고, +히어로는 `tagline ?? heroSubline ?? summary` 를 그대로 찍는다(`HeroPension.tsx:125`). -`daily`(오늘의 한 장)는 프롬프트에는 있는데 **이 목업 섹션 목록에 없다.** -새 업장에서 켜려면 섹션 목록에 자리를 먼저 만들어야 한다. +**할 일** + +1. `Narrative` 에 필드를 더한다. + ```ts + catchphrases?: { version: 1; items: { + text: string; // 18자 안쪽 + kind: 'general' | 'season' | 'month' | 'weather'; + season?: '봄'|'여름'|'가을'|'겨울'; month?: number; weather?: '맑음'|'흐림'|'비'|'눈'; + }[] }; + ``` +2. 히어로가 **지금 조건에 맞는 것만 후보**로 두고 돌린다. + 계절은 3개월 단위(가을 9–11, 겨울 12–2), 날씨는 `local.weather.condition`. + 목업 구현은 `inject.js` 의 `startCatchphrase()` — 7초마다 단어 단위 교체. +3. 프롬프트는 **[PROMPTS.md §2](PROMPTS.md)** 전문을 그대로 쓴다. 100개(일반 40·계절 24·월 24·날씨 12). +4. `STORY_KINDS` 에 등록한다. **빠뜨리면 서버 생성 잡이 이 종류를 아예 모른다** — + `daily` 가 그래서 한동안 빈칸이었다. + +**완료 기준** 새 업장을 발행했을 때 히어로 문구가 100개 돌고, 9월에 겨울 문구가 안 나온다. --- -## 3. 계약에 없는 것 — 새로 만들어야 하는 셋 +### T2 — 추천 일정 ★ 가장 큰 일 -### ① 히어로 캐치프레이즈 — 계약을 늘려야 한다 +**증상** 서버 생성기(`services/itinerary.py`)는 하루를 **관광지 2 + 맛집 2** 로 짠다. +체류시간·이동시간·입퇴실·끼니 시각 개념이 없다. 그래서 나온 하루가 +"둘째 날 해산물축제 → 근대건축관" 으로 끝난다. -**지금 계약**: `Narrative`(`site-payload.ts:316`)는 `heroHeadline` `heroSubline` `tagline` -`about[]` `summary` 뿐이고 전부 **문자열 하나**다. 히어로는 -`narrative.tagline ?? heroSubline ?? summary` 를 그대로 찍는다(`HeroPension.tsx:125`). +**★ 프롬프트 하나로 일정을 받지 않는다.** 모델은 시각 계산을 못 한다 — +이동시간을 지어내고, 점심을 09:40 에 넣고, 21시를 넘겨 **렌더러가 조용히 버리는** 칸을 만든다 +(`shared/src/lib/section-data.ts:535`). 시연본 첫 판이 정확히 그랬다. -**목업이 한 것**: `narrative.catchphrases = {version:1, items:[…100]}` 를 payload 에 -끼워 넣고, 주입분이 7초마다 단어 단위로 갈아 끼운다. **렌더러는 이 필드를 모른다** — -주입분(`inject.js`)이 읽는다. 100개 구성은 `patch_stay.py:20`(일반 40) `:62`(계절 24) -`:72`(월 24) `:87`(날씨 12). +**세 단계로 나눈다.** 전문은 [PROMPTS.md §3](PROMPTS.md). -**제품에서 해야 할 일** - -```ts -// site-payload.ts — Narrative 에 추가 -catchphrases?: { - version: 1; - items: { - text: string; // 18자 안쪽 - type: 'general' | 'season' | 'month' | 'weather'; - season?: '봄' | '여름' | '가을' | '겨울'; // type=season - month?: number; // 1–12, type=month - weather?: '맑음' | '흐림' | '비' | '눈'; // type=weather - }[]; -}; -``` - -고르는 규칙(목업이 쓰는 것 그대로): **지금 계절·이번 달·현재 날씨에 맞는 것만 후보**로 -두고 일반과 섞어 돌린다. 계절은 3개월 단위(가을 9–11, 겨울 12–2). 날씨는 `local.weather.condition`. - -**새로 쓸 프롬프트** — `SECTION_PROMPTS` 에 `catchphrase` 종류를 더한다. - -``` -[해야 할 일] -[업소]의 히어로에 돌려 쓸 짧은 문구를 100개 쓴다. -일반 40 · 계절 24(계절마다 6) · 월 24(달마다 2) · 날씨 12(맑음/흐림/비/눈 각 3). - -[스키마] -{ "kind":"catchphrase", "version":1, "items":[ - { "text":"문구", "type":"general|season|month|weather", - "season":"봄|여름|가을|겨울", "month":9, "weather":"맑음|흐림|비|눈" } ] } - -[이 아이템만의 규칙] -· 18자 안쪽. 두 문장으로 쓰지 않는다. -· 느낌표·이모지를 쓰지 않는다. 광고 문구로 들리면 실패다. -· **업소에서 실제로 일어나는 일**을 쓴다. 지역 자랑이 아니다. - ("새소리로 눈이 떠지는 집" ○ / "천년의 역사가 살아 숨쉬는 군산" ×) -· 계절·월·날씨 문구는 그 조건에서만 말이 되어야 한다. - 9월 문구가 1월에 나와도 어색하지 않으면 그건 일반 문구다. -· 시설명·가격·전화번호를 넣지 않는다. -· source 는 필요 없다. 사실 주장이 아니라 업소가 하는 말이다. -``` - -### ② 자작곡 플레이어 — `media` 에 오디오가 없다 - -**목업**: `narrative.ownSongs = {version:1, items:[…5]}`(`patch_stay.py:109`), -파일은 `/s/stay/audio/*.mp3` 로 **직접 넣었다**. nginx `^~ /s/` 가 Range 206 으로 준다. -플레이어는 주입분이 헤더에 그린다. **프로토타입이라 파일**이고, 제품에서는 미디어 파이프라인에 -태워야 한다. - -**해야 할 일**: `MediaItem` 에 `kind: 'audio'` 를 넣고(`url` `title` `artist` `durationSec`), -발행 시 다른 미디어와 같이 미러/업로드한다. 렌더러에는 플레이어 컴포넌트가 없다 — -헤더에 붙는 작은 플레이어(아이콘 · 곡명 · 재생/멈춤 · 목록)를 새로 만든다. -자동재생은 **넣지 않는다**(사장님 지시 2026-09-11). 재생 순서는 **랜덤 시작 후 순차**. - -### ③ 추천 일정 — 생성기가 있는데 깊이가 다르다 - -**서버판**(`backend/services/itinerary.py`)은 payload 빌드 때 즉석 계산한다. -하루 뼈대가 **관광지 2 + 맛집 2**, 반경 30km, 최근접 이웃 순서다. -체류시간·이동시간·입퇴실·끼니 시각 개념이 **없다**. - -**목업판**(`build_itinerary.py`)이 더한 것: - -| | 목업이 넣은 것 | 어디 | -|---|---|---| -| 장소별 체류 | (최소, 기본, 최대) 분 — '오후' 칸이면 뭐든 90분이던 것을 장소마다 | `:40` | -| 이동시간 | 좌표에서 계산. 도보 4km/h(≤1.5km), 그 위는 차 25km/h + 주차 5분 | `move_minutes()` | -| 숙소 고정 | **모든 일정이 숙소에서 출발해 숙소로 돌아온다**. 첫 칸·마지막 칸이 숙소 | `:108` `:182` | -| 시각 창 | 입실 15:00+ · 퇴실 11:00- · 점심 11:30–13:30 · 늦은 점심 13:00–15:00 · 저녁 17:30–20:00 · 밤 산책 18:30–20:00 | `:156` `:166` | -| 테마 | 21개. 테마마다 시작 시각과 체류 배율이 다르다(끝나는 시각이 13:35~21:00 로 퍼진다) | `:368` `:470` | -| 제약 | 비 와도 되는 테마는 실내만 · 차 없는 테마는 도보권만 · 아이 동반에 술집 금지 | `:519` | -| **감사** | 규칙 14종. 하나라도 어기면 **payload 를 쓰지 않고 빌드가 멈춘다** | `:526` | - -**해야 할 일**: 이 규칙을 `services/itinerary.py` 로 옮긴다. 재료가 모자라면 지어내지 않는 -원칙은 그대로다 — **감사에 걸리면 그 테마를 빼고, 하루도 못 채우면 섹션을 안 낸다.** - -장소별 체류시간이 관건이다. 지금 `local_contents` 에는 그 값이 없다. -LLM 에 물어 채우는 게 현실적이다 — 새 프롬프트: - -``` -[해야 할 일] -아래 장소들에 손님이 실제로 머무는 시간을 분으로 적고, -거기서 "무엇을 하는지" 한 문장으로 쓴다. - -[스키마] -{ "kind":"stopmeta", "version":1, "items":[ - { "name":"장소명", "minMinutes":25, "baseMinutes":35, "maxMinutes":50, - "indoor":true, "needsCar":false, "kidFriendly":true, - "todo":"대웅전 처마와 대나무 숲을 봅니다. 종각까지 돌면 35분입니다." } ] } - -[이 아이템만의 규칙] -· todo 는 **거기서 하는 일**이다. "무엇인지" 설명하지 않는다. - ("안에 들어가 사진관 세트에서 한 장 찍습니다" ○ / "1950년대 사진관입니다" ×) -· 한 바퀴 도는 데 15분이면 15분이라고 적는다. 30분으로 올리지 않는다. -· indoor 는 비가 와도 갈 수 있느냐다. 지붕이 있어도 가는 길이 야외면 false. -· needsCar 는 숙소에서 걸어서 20분을 넘느냐다. -``` - -### ④ 인물·노래 사진 — `imageQuery` 다음이 없다 - -프롬프트는 **사진 URL 을 금지**하고 `imageQuery` 만 받는다(`section-prompts.ts:128`). -초상권·저작권 때문이고 그 판단은 맞다. 그런데 **그 다음 단계가 없어서** 인물 열전이 -활자만으로 선다. - -목업이 한 것(`build_story.py`): 위키백과 **문서의 `pageimages`** 만 믿는다. -이름으로 커먼즈를 검색하면 동명이인이 온다(실측: 이수현→걸그룹, 박성현→골퍼, 이길여→건물). -57명 중 **18명**만 사진을 얻었고, 얻은 것은 `imageinfo.extmetadata` 에서 저작자·라이선스를 -받아 **화면에 표시한다** — CC BY-SA 의 조건이라 안 쓰면 위반이다. - -**해야 할 일**: `services/external/wikimedia.py` 에 "문서 → pageimages → 라이선스" 경로를 붙이고, -`imageCredit`(문자열)을 payload 에 넣는다. ★ **문자열이다** — 객체로 넣으면 렌더러가 -조용히 아무것도 안 그린다(`site/src/sections/items/common.tsx:206`). -사진이 붙은 사람을 **앞으로** 정렬한다(빈 카드가 먼저 오면 목록이 비어 보인다). - -### ⑤ 상한 — `maxItems` 를 올려야 한다 - -| 종류 | 지금 상한 | 목업 | 왜 | +| 단계 | 누가 | 무엇을 내놓나 | 전문 | |---|---|---|---| -| songs | 8 | 25 | 도시 하나에 그만큼 있다. 8곡이면 '다방'이 아니라 목록이다 | -| people | 10 | 57 | 위키백과 '군산시 출신' 분류만으로 57명이 확인된다 | -| chronicle | 14 | 7 | 상한은 맞는데 **채우는 쪽이 모자라다** | -| postcard | 12 | 4 | 같다 | +| **3-1 장소 대장** | LLM | 장소 30곳 × `{stayMinutes:{min,base,max}, todo, indoor, needsCar, bestTime, searchQuery}` | PROMPTS.md §3-1 | +| **좌표** | 코드 | 카카오 로컬로 `searchQuery` → 위경도. **LLM 이 적은 좌표는 쓰지 않는다** | — | +| **3-2 조립** | **코드** | 이동시간·도착시각·끼니 창 맞추기·규칙 14종 감사 | PROMPTS.md §3-2 · `build_itinerary.py` | +| **3-3 테마** | LLM | 테마 20개 × `{name, duration, audience, why, days[{kind, places[]}]}` | PROMPTS.md §3-3 | -상한을 올릴 때 **한 번에 다 받지 않는다.** 목업은 곡을 8개씩 세 번 나눠 받았다 — -한 번에 25곡을 시키면 뒤쪽이 급격히 부실해진다. 나눠 받고 합칠 때 제목으로 중복을 지운다. -프롬프트 분할 방법은 [PROMPTS.md](PROMPTS.md) 에 있다. - -### ⑥ 객실 사진 — 출처 정책 결론이 필요하다 - -목업은 야놀자 등록본(`nol.yanolja.com/stay/domestic/10068088`)의 Next.js 플라이트 데이터에서 -`roomTypes[].photos` 를 파싱해 A동 12·B동 10 을 가져왔다(`rooms.json`). -**이건 시연용으로 손으로 한 것이고 제품 경로가 아니다.** -수집 어댑터를 만들려면 [DECISIONS 1-1](../../../../docs/DECISIONS.md) 과 -[DATA_SOURCE_RESEARCH.md](../../../../docs/DATA_SOURCE_RESEARCH.md) 를 먼저 읽는다 — -**봇 탐지 우회는 결론과 무관하게 영구 금지**다. -현실적인 제품 경로는 **사장님이 올리는 것**이거나 **업소가 준 채널의 공개 API** 다. - ---- - -## 4. 프롬프트를 새로 쓸 때 — 이 레포의 규칙 - -`SECTION_PROMPT_RULES`(`section-prompts.ts:55`)가 공통 7줄이고, 종류별 규칙을 덧붙인다. -새 종류를 더할 때 지켜야 하는 것: - -1. **`STORY_KINDS` 에 등록한다.** 빠지면 서버 생성 잡이 그 종류를 아예 모른다 — - `daily` 가 그래서 한동안 빈칸이었다(주석에 실측이 적혀 있다). -2. **`maxItems` 와 프롬프트 안의 숫자를 같게 둔다.** 어긋나면 받아 놓고 잘라 버린다. -3. **빈 값을 지어내지 않는다**(공통 2번). 확실한 게 12개면 12개만 낸다. -4. **출처는 실제로 열리는 페이지**여야 한다(공통 3번). 검색 결과 주소는 안 된다. -5. **가사·시·소설 원문을 한 줄도 옮기지 않는다**(공통 5번). -6. `[지역]` 같은 빈칸을 남기지 않는다 — `buildSectionPrompt` 가 채워서 내보낸다. -7. 고친 뒤 **`npm run export:prompts`** 를 돌린다. 백엔드는 그 산출물을 읽는다. - ---- - -## 5. 검증 — "됐다"고 말하기 전에 - -목업에서 쓰는 방식 그대로 제품에도 필요하다. +**코드가 하는 일(3-2)에서 반드시 옮겨야 하는 것** — 근거는 `build_itinerary.py` 줄번호 | | 무엇 | 어디 | |---|---|---| -| 생성 단계 | 규칙 위반이면 **결과물을 쓰지 않고 멈춘다**. 검사를 생성기 **안**에 둔다 | `build_itinerary.py:526` | -| 렌더 단계 | 실제 브라우저로 열어 숫자를 센다. 34종 | `audit-all.mjs` | -| 카로셀 | 레일 13개 × 데스크톱·모바일 | `rails-test.mjs` | +| 이동시간 | 좌표 계산. 도보 4km/h(≤1.5km), 그 위는 차 25km/h + 주차 5분 | `move_minutes()` | +| 숙소 고정 | 모든 일정이 **숙소에서 출발해 숙소로 복귀**. 첫 칸·마지막 칸이 숙소 | `:108` `:182` | +| 시각 창 | 입실 15:00+ · 퇴실 11:00− · 점심 11:30–13:30 · 늦은 점심 13:00–15:00 · 저녁 17:30–20:00 · 밤산책 18:30–20:00 | `:156` `:166` | +| 창 맞추기 | 어긋나면 **앞 칸 체류를 범위(min~max) 안에서** 늘리고 줄인다. 이동시간을 고치지 않는다 | `plan_day()` | +| 테마별 완급 | 시작 시각·체류 배율이 테마마다 다르다 → 끝나는 시각이 13:35~21:00 로 퍼진다 | `:470` | +| **감사 14종** | 하나라도 어기면 **payload 를 쓰지 않고 멈춘다** | `:526` | -★ 목업에서 같은 실수가 반복된 원인은 "검사를 안 했다"가 아니라 **"검사가 빌드 밖에 있었다"** 였다. -그때그때 쓴 일회용 스크립트로 돌리니, 뼈대를 고칠 때마다 이번에 안 본 규칙이 생겼다. -경위는 [REVIEW-2026-09-11.md](REVIEW-2026-09-11.md) 2장. +★ **감사는 생성기 안에 둔다.** 밖에 두면 뼈대를 고칠 때마다 "이번에 안 본 규칙"이 생긴다 — +실제로 그렇게 33건이 통과했다([REVIEW-2026-09-11.md](REVIEW-2026-09-11.md) 2장). + +**완료 기준** 새 업장에서 테마 20개가 나오고 `audit()` 위반 0건. +하루가 숙소로 시작해 숙소로 끝나고, 끼니가 제 시각에 있고, 21시를 안 넘는다. --- -## 6. 같이 읽을 것 +### T3 — 인물·노래 사진 -| | | -|---|---| -| 목업을 고치고 배포하는 절차 · 밟으면 조용히 틀리는 자리 | [README.md](README.md) | -| 실제로 쓴 프롬프트 전문과 나눠 받는 법 | [PROMPTS.md](PROMPTS.md) | -| 화면에 나가는 텍스트 전문 | [TEXT.md](TEXT.md) | -| 일정이 왜 틀렸고 무엇을 고쳤나 | [REVIEW-2026-09-11.md](REVIEW-2026-09-11.md) | -| 값이 DB 에서 페이지까지 가는 길 | [docs/DATA_MODEL.md](../../../../docs/DATA_MODEL.md) | -| 미결 사항 · 수집 어댑터 정책 | [docs/DECISIONS.md](../../../../docs/DECISIONS.md) | +**증상** 프롬프트가 사진 URL 을 금지하고 `imageQuery` 만 받는다(`section-prompts.ts:128`). +초상권·저작권 때문이고 그 판단은 맞다. 그런데 **다음 단계가 없어서** 인물 열전이 활자만으로 선다. + +**할 일** + +1. `services/external/wikimedia.py` 에 **문서 → `pageimages` → `imageinfo.extmetadata`** 경로를 붙인다. +2. ★ **이름으로 커먼즈를 검색하지 않는다.** 동명이인이 온다 — + 실측: 이수현→걸그룹, 은성수→축구선수, 박성현→골퍼, 이길여→건물. + **위키백과 문서에 붙은 대표사진만** 믿는다. 구현은 `build_story.py`. +3. 저작자·라이선스를 `imageCredit` 으로 payload 에 넣는다. + ★ **문자열이다**(`site/src/sections/items/common.tsx:206`). 객체로 넣으면 렌더러가 + 조용히 아무것도 안 그린다 — CC BY-SA 는 출처 표시가 **라이선스 조건**이라 그건 침해다. +4. 사진 있는 사람을 **앞으로** 정렬한다. 빈 카드가 먼저 오면 목록이 비어 보인다. + +**완료 기준** 인물 카드에 사진과 저작자 줄이 같이 뜬다. 목업 실적은 57명 중 18명. + +--- + +### T4 — 음악 플레이어 + +**증상** `media` 에 오디오 종류가 없다. 목업은 mp3 를 `/s/stay/audio/` 에 **직접 넣었다**. + +**할 일** `MediaItem` 에 `kind:'audio'`(+`title` `artist` `durationSec`)를 넣고 발행 때 같이 올린다. +헤더에 붙는 작은 플레이어를 만든다 — 아이콘 · 현재 곡명 · 재생/멈춤 · 목록. +**자동재생은 넣지 않는다**(2026-09-11 지시). 순서는 **랜덤 시작 후 순차**. +목업 구현은 `inject.js` 의 `startPlayer()`, 모양은 `inject.css` 의 `#w4d-mini` · `#w4d-panel`. + +--- + +### T5 — 상한(`maxItems`) + +| 종류 | 지금 | 목업 | 왜 | +|---|---|---|---| +| songs | 8 | 25 | 8곡이면 '다방'이 아니라 목록이다 | +| people | 10 | 57 | 위키백과 '군산시 출신' 분류만으로 57명이 확인된다 | + +★ **한 번에 다 받지 않는다.** 25곡을 한 번에 시키면 뒤쪽이 급격히 부실해진다. +8개씩 나눠 받고 제목으로 중복을 지운다 — 나누는 방법은 [PROMPTS.md §4](PROMPTS.md). + +--- + +### T6 — 객실 사진 출처 + +목업은 야놀자 등록본(`nol.yanolja.com/stay/domestic/10068088`)의 Next.js 플라이트 데이터에서 +`roomTypes[].photos` 를 파싱해 A동 12·B동 10 을 가져왔다(`rooms.json`). +**손으로 한 것이고 제품 경로가 아니다.** + +수집 어댑터를 만들려면 [docs/DECISIONS.md](../../../../docs/DECISIONS.md) 1-1 과 +[docs/DATA_SOURCE_RESEARCH.md](../../../../docs/DATA_SOURCE_RESEARCH.md) 를 먼저 읽는다 — +**봇 탐지 우회는 결론과 무관하게 영구 금지**다. +현실적인 경로는 **사장님이 올리는 것**이거나 **업소가 준 채널의 공개 API** 다. + +--- + +## 4. 프롬프트를 새로 쓸 때 지킬 것 + +`SECTION_PROMPT_RULES`(`section-prompts.ts:55`)가 공통 7줄이고 종류별 규칙을 덧붙인다. + +1. **`STORY_KINDS` 에 등록한다.** 빠지면 서버 생성 잡이 그 종류를 모른다. +2. **`maxItems` 와 프롬프트 안의 숫자를 같게 둔다.** 어긋나면 받아 놓고 잘라 버린다. +3. **빈 값을 지어내지 않는다.** 확실한 게 12개면 12개만 낸다. +4. **출처는 실제로 열리는 페이지**여야 한다. 검색 결과 주소는 안 된다. +5. **가사·시·소설 원문을 한 줄도 옮기지 않는다.** +6. 고친 뒤 **`npm run export:prompts`** 를 돌린다 — 백엔드는 그 산출물을 읽는다. + `backend/services/prompts/section_prompts.json` 을 손으로 고치지 않는다. + +--- + +## 5. 끝났다고 말하기 전에 + +| | 무엇 | 어떻게 | +|---|---|---| +| 생성 단계 | 규칙 위반이면 **결과물을 쓰지 않고 멈춘다** | 감사를 생성기 **안**에 (`build_itinerary.py:526`) | +| 렌더 단계 | 브라우저로 열어 숫자를 센다 | `node audit-all.mjs` — 34/34 | +| 카로셀 | 레일 13개 × 데스크톱·모바일 | `node rails-test.mjs` | +| 다른 기계 | 레포만 받아 띄워 본다 | §0 을 그대로 실행 | + +★ 여기 있는 것 중 **"코드에서 확인했다"로 끝낸 것은 하나도 없다.** +전부 화면에서 숫자를 세서 붙였다. 그렇게 안 해서 틀린 기록이 +[README.md §7](README.md) 과 [REVIEW-2026-09-11.md](REVIEW-2026-09-11.md) 에 있다. diff --git a/solution/site/scripts/mockup/audit-all.mjs b/solution/site/scripts/mockup/audit-all.mjs index 9125e4d..be78713 100644 --- a/solution/site/scripts/mockup/audit-all.mjs +++ b/solution/site/scripts/mockup/audit-all.mjs @@ -85,7 +85,7 @@ ok('자작곡 5곡', d.ownSongs === 5, `${d.ownSongs}곡`); ok('빨간 줄 없음', d.redRule === 0, `${d.redRule}개`); ok('바비큐 항목 유지', d.bbqRow, d.bbqRow ? '있음' : '사라짐'); ok('맨 아래 가로선 제거', d.divider === '0px', d.divider); -ok('히어로 원본 사진', /assets\/mirror/.test(d.heroImg || ''), d.heroImg); +ok('히어로 원본 사진', /\/img\/mirror\//.test(d.heroImg || ''), d.heroImg); ok('객실 사진 A12/B10', d.roomA === 12 && d.roomB === 10, `A ${d.roomA} · B ${d.roomB}`); ok('404 없음', failed.length === 0, failed.slice(0, 3).join(' / ') || '없음'); ok('콘솔 오류 없음', errs.length === 0, errs.slice(0, 2).join(' / ') || '없음'); diff --git a/solution/site/scripts/mockup/img/mirror/07600bb67b91dd15.jpg b/solution/site/scripts/mockup/img/mirror/07600bb67b91dd15.jpg new file mode 100644 index 0000000..35f03ba Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/07600bb67b91dd15.jpg differ diff --git a/solution/site/scripts/mockup/img/mirror/0a1e0ff50ca7ee37.jpg b/solution/site/scripts/mockup/img/mirror/0a1e0ff50ca7ee37.jpg new file mode 100644 index 0000000..cc4d462 Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/0a1e0ff50ca7ee37.jpg differ diff --git a/solution/site/scripts/mockup/img/mirror/12938240987c1f78.jpg b/solution/site/scripts/mockup/img/mirror/12938240987c1f78.jpg new file mode 100644 index 0000000..3cafdad Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/12938240987c1f78.jpg differ diff --git a/solution/site/scripts/mockup/img/mirror/149c18951bdcaff8.jpg b/solution/site/scripts/mockup/img/mirror/149c18951bdcaff8.jpg new file mode 100644 index 0000000..721b860 Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/149c18951bdcaff8.jpg differ diff --git a/solution/site/scripts/mockup/img/mirror/1caf7fcac8ece19a.jpg b/solution/site/scripts/mockup/img/mirror/1caf7fcac8ece19a.jpg new file mode 100644 index 0000000..915fd93 Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/1caf7fcac8ece19a.jpg differ diff --git a/solution/site/scripts/mockup/img/mirror/1f35ef26139c6cb9.jpg b/solution/site/scripts/mockup/img/mirror/1f35ef26139c6cb9.jpg new file mode 100644 index 0000000..6116ed9 Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/1f35ef26139c6cb9.jpg differ diff --git a/solution/site/scripts/mockup/img/mirror/1f6dbdd78a3da2de.png b/solution/site/scripts/mockup/img/mirror/1f6dbdd78a3da2de.png new file mode 100644 index 0000000..84f1993 Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/1f6dbdd78a3da2de.png differ diff --git a/solution/site/scripts/mockup/img/mirror/22af0bff45e5fce8.jpg b/solution/site/scripts/mockup/img/mirror/22af0bff45e5fce8.jpg new file mode 100644 index 0000000..f4cf4c8 Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/22af0bff45e5fce8.jpg differ diff --git a/solution/site/scripts/mockup/img/mirror/2af9caa23a08a3ec.jpg b/solution/site/scripts/mockup/img/mirror/2af9caa23a08a3ec.jpg new file mode 100644 index 0000000..3ad803c Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/2af9caa23a08a3ec.jpg differ diff --git a/solution/site/scripts/mockup/img/mirror/2d94158a48480fcd.jpg b/solution/site/scripts/mockup/img/mirror/2d94158a48480fcd.jpg new file mode 100644 index 0000000..1b8115b Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/2d94158a48480fcd.jpg differ diff --git a/solution/site/scripts/mockup/img/mirror/3420ff7e357ab7ef.jpg b/solution/site/scripts/mockup/img/mirror/3420ff7e357ab7ef.jpg new file mode 100644 index 0000000..086dabb Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/3420ff7e357ab7ef.jpg differ diff --git a/solution/site/scripts/mockup/img/mirror/37c90494d28478e2.png b/solution/site/scripts/mockup/img/mirror/37c90494d28478e2.png new file mode 100644 index 0000000..f6c1f1d Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/37c90494d28478e2.png differ diff --git a/solution/site/scripts/mockup/img/mirror/3a780a4a34df9289.jpg b/solution/site/scripts/mockup/img/mirror/3a780a4a34df9289.jpg new file mode 100644 index 0000000..6bef7f4 Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/3a780a4a34df9289.jpg differ diff --git a/solution/site/scripts/mockup/img/mirror/3dc384187a900e95.png b/solution/site/scripts/mockup/img/mirror/3dc384187a900e95.png new file mode 100644 index 0000000..0c454c6 Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/3dc384187a900e95.png differ diff --git a/solution/site/scripts/mockup/img/mirror/3e9e574d3b987c8d.jpg b/solution/site/scripts/mockup/img/mirror/3e9e574d3b987c8d.jpg new file mode 100644 index 0000000..5573d65 Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/3e9e574d3b987c8d.jpg differ diff --git a/solution/site/scripts/mockup/img/mirror/43461e391f83b9e8.jpg b/solution/site/scripts/mockup/img/mirror/43461e391f83b9e8.jpg new file mode 100644 index 0000000..9fdde7e Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/43461e391f83b9e8.jpg differ diff --git a/solution/site/scripts/mockup/img/mirror/4389ded2dee1ad98.jpg b/solution/site/scripts/mockup/img/mirror/4389ded2dee1ad98.jpg new file mode 100644 index 0000000..9101a17 Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/4389ded2dee1ad98.jpg differ diff --git a/solution/site/scripts/mockup/img/mirror/487643cdcfd19fdb.jpg b/solution/site/scripts/mockup/img/mirror/487643cdcfd19fdb.jpg new file mode 100644 index 0000000..e85a198 Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/487643cdcfd19fdb.jpg differ diff --git a/solution/site/scripts/mockup/img/mirror/49558512d8d52e1a.jpg b/solution/site/scripts/mockup/img/mirror/49558512d8d52e1a.jpg new file mode 100644 index 0000000..27ddbdd Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/49558512d8d52e1a.jpg differ diff --git a/solution/site/scripts/mockup/img/mirror/4b4086345c20b968.jpg b/solution/site/scripts/mockup/img/mirror/4b4086345c20b968.jpg new file mode 100644 index 0000000..94ac5d8 Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/4b4086345c20b968.jpg differ diff --git a/solution/site/scripts/mockup/img/mirror/4d71067dc7e3f671.jpg b/solution/site/scripts/mockup/img/mirror/4d71067dc7e3f671.jpg new file mode 100644 index 0000000..6b833be Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/4d71067dc7e3f671.jpg differ diff --git a/solution/site/scripts/mockup/img/mirror/4db345bd2cb4f0d7.jpg b/solution/site/scripts/mockup/img/mirror/4db345bd2cb4f0d7.jpg new file mode 100644 index 0000000..a8040be Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/4db345bd2cb4f0d7.jpg differ diff --git a/solution/site/scripts/mockup/img/mirror/5000f0a4feb45788.jpg b/solution/site/scripts/mockup/img/mirror/5000f0a4feb45788.jpg new file mode 100644 index 0000000..1b361b8 Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/5000f0a4feb45788.jpg differ diff --git a/solution/site/scripts/mockup/img/mirror/566bc326e8a58042.jpg b/solution/site/scripts/mockup/img/mirror/566bc326e8a58042.jpg new file mode 100644 index 0000000..1b8f9d6 Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/566bc326e8a58042.jpg differ diff --git a/solution/site/scripts/mockup/img/mirror/6194651114d1e740.jpg b/solution/site/scripts/mockup/img/mirror/6194651114d1e740.jpg new file mode 100644 index 0000000..524e90b Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/6194651114d1e740.jpg differ diff --git a/solution/site/scripts/mockup/img/mirror/669abc2b08640d3e.jpg b/solution/site/scripts/mockup/img/mirror/669abc2b08640d3e.jpg new file mode 100644 index 0000000..ee506a6 Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/669abc2b08640d3e.jpg differ diff --git a/solution/site/scripts/mockup/img/mirror/6a0c445e6dd940af.jpg b/solution/site/scripts/mockup/img/mirror/6a0c445e6dd940af.jpg new file mode 100644 index 0000000..829a51a Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/6a0c445e6dd940af.jpg differ diff --git a/solution/site/scripts/mockup/img/mirror/6a15360430298700.jpg b/solution/site/scripts/mockup/img/mirror/6a15360430298700.jpg new file mode 100644 index 0000000..ef93272 Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/6a15360430298700.jpg differ diff --git a/solution/site/scripts/mockup/img/mirror/6d0c447b6a0c32af.jpg b/solution/site/scripts/mockup/img/mirror/6d0c447b6a0c32af.jpg new file mode 100644 index 0000000..643da20 Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/6d0c447b6a0c32af.jpg differ diff --git a/solution/site/scripts/mockup/img/mirror/6d59722cedddd566.jpg b/solution/site/scripts/mockup/img/mirror/6d59722cedddd566.jpg new file mode 100644 index 0000000..d51ace9 Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/6d59722cedddd566.jpg differ diff --git a/solution/site/scripts/mockup/img/mirror/6ded14f21a17894b.jpg b/solution/site/scripts/mockup/img/mirror/6ded14f21a17894b.jpg new file mode 100644 index 0000000..914a7b6 Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/6ded14f21a17894b.jpg differ diff --git a/solution/site/scripts/mockup/img/mirror/7095220ca156e25e.jpg b/solution/site/scripts/mockup/img/mirror/7095220ca156e25e.jpg new file mode 100644 index 0000000..2de983c Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/7095220ca156e25e.jpg differ diff --git a/solution/site/scripts/mockup/img/mirror/7ba545fdbc8ad273.jpg b/solution/site/scripts/mockup/img/mirror/7ba545fdbc8ad273.jpg new file mode 100644 index 0000000..f81a05b Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/7ba545fdbc8ad273.jpg differ diff --git a/solution/site/scripts/mockup/img/mirror/7ccd68de6b280bc2.jpg b/solution/site/scripts/mockup/img/mirror/7ccd68de6b280bc2.jpg new file mode 100644 index 0000000..0184e5b Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/7ccd68de6b280bc2.jpg differ diff --git a/solution/site/scripts/mockup/img/mirror/7f8f81d5eeb33f73.jpg b/solution/site/scripts/mockup/img/mirror/7f8f81d5eeb33f73.jpg new file mode 100644 index 0000000..5767329 Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/7f8f81d5eeb33f73.jpg differ diff --git a/solution/site/scripts/mockup/img/mirror/8043bad52d95a84b.jpg b/solution/site/scripts/mockup/img/mirror/8043bad52d95a84b.jpg new file mode 100644 index 0000000..630fe38 Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/8043bad52d95a84b.jpg differ diff --git a/solution/site/scripts/mockup/img/mirror/82606e203454e3ff.jpg b/solution/site/scripts/mockup/img/mirror/82606e203454e3ff.jpg new file mode 100644 index 0000000..b9e36ad Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/82606e203454e3ff.jpg differ diff --git a/solution/site/scripts/mockup/img/mirror/881d1f7ff820942f.jpg b/solution/site/scripts/mockup/img/mirror/881d1f7ff820942f.jpg new file mode 100644 index 0000000..c76f74c Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/881d1f7ff820942f.jpg differ diff --git a/solution/site/scripts/mockup/img/mirror/8e2ec99c433b6fe8.jpg b/solution/site/scripts/mockup/img/mirror/8e2ec99c433b6fe8.jpg new file mode 100644 index 0000000..d038a4f Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/8e2ec99c433b6fe8.jpg differ diff --git a/solution/site/scripts/mockup/img/mirror/8fc0a7522e3eb080.png b/solution/site/scripts/mockup/img/mirror/8fc0a7522e3eb080.png new file mode 100644 index 0000000..c1b4081 Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/8fc0a7522e3eb080.png differ diff --git a/solution/site/scripts/mockup/img/mirror/92f65116f3e58ab6.jpg b/solution/site/scripts/mockup/img/mirror/92f65116f3e58ab6.jpg new file mode 100644 index 0000000..5ab3d3c Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/92f65116f3e58ab6.jpg differ diff --git a/solution/site/scripts/mockup/img/mirror/9b073d4a1b5fb62c.jpg b/solution/site/scripts/mockup/img/mirror/9b073d4a1b5fb62c.jpg new file mode 100644 index 0000000..47802a3 Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/9b073d4a1b5fb62c.jpg differ diff --git a/solution/site/scripts/mockup/img/mirror/9b27266ddf8b8b70.jpg b/solution/site/scripts/mockup/img/mirror/9b27266ddf8b8b70.jpg new file mode 100644 index 0000000..dcf4d25 Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/9b27266ddf8b8b70.jpg differ diff --git a/solution/site/scripts/mockup/img/mirror/9c5594df6114561b.jpg b/solution/site/scripts/mockup/img/mirror/9c5594df6114561b.jpg new file mode 100644 index 0000000..1d2a4ee Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/9c5594df6114561b.jpg differ diff --git a/solution/site/scripts/mockup/img/mirror/a1b00af88aa06cd9.jpg b/solution/site/scripts/mockup/img/mirror/a1b00af88aa06cd9.jpg new file mode 100644 index 0000000..708afa3 Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/a1b00af88aa06cd9.jpg differ diff --git a/solution/site/scripts/mockup/img/mirror/a2344640498c5c86.png b/solution/site/scripts/mockup/img/mirror/a2344640498c5c86.png new file mode 100644 index 0000000..41de0d3 Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/a2344640498c5c86.png differ diff --git a/solution/site/scripts/mockup/img/mirror/aa69a633f8e3a631.jpg b/solution/site/scripts/mockup/img/mirror/aa69a633f8e3a631.jpg new file mode 100644 index 0000000..9ea22bc Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/aa69a633f8e3a631.jpg differ diff --git a/solution/site/scripts/mockup/img/mirror/aaf32d2c8e5faffb.jpg b/solution/site/scripts/mockup/img/mirror/aaf32d2c8e5faffb.jpg new file mode 100644 index 0000000..5bb1c40 Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/aaf32d2c8e5faffb.jpg differ diff --git a/solution/site/scripts/mockup/img/mirror/af673cc75c0ed696.jpg b/solution/site/scripts/mockup/img/mirror/af673cc75c0ed696.jpg new file mode 100644 index 0000000..42512a0 Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/af673cc75c0ed696.jpg differ diff --git a/solution/site/scripts/mockup/img/mirror/c8c6a295ae1c0810.jpg b/solution/site/scripts/mockup/img/mirror/c8c6a295ae1c0810.jpg new file mode 100644 index 0000000..dd346c6 Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/c8c6a295ae1c0810.jpg differ diff --git a/solution/site/scripts/mockup/img/mirror/c971fb408ad897e7.jpg b/solution/site/scripts/mockup/img/mirror/c971fb408ad897e7.jpg new file mode 100644 index 0000000..f1485b1 Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/c971fb408ad897e7.jpg differ diff --git a/solution/site/scripts/mockup/img/mirror/caa5e076e7d56ec2.jpg b/solution/site/scripts/mockup/img/mirror/caa5e076e7d56ec2.jpg new file mode 100644 index 0000000..8dd36da Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/caa5e076e7d56ec2.jpg differ diff --git a/solution/site/scripts/mockup/img/mirror/d2be5a053a944cfe.jpg b/solution/site/scripts/mockup/img/mirror/d2be5a053a944cfe.jpg new file mode 100644 index 0000000..1944011 Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/d2be5a053a944cfe.jpg differ diff --git a/solution/site/scripts/mockup/img/mirror/d364f605223524bd.jpg b/solution/site/scripts/mockup/img/mirror/d364f605223524bd.jpg new file mode 100644 index 0000000..e085f1c Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/d364f605223524bd.jpg differ diff --git a/solution/site/scripts/mockup/img/mirror/d5433fe48de3da05.jpg b/solution/site/scripts/mockup/img/mirror/d5433fe48de3da05.jpg new file mode 100644 index 0000000..4853fb5 Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/d5433fe48de3da05.jpg differ diff --git a/solution/site/scripts/mockup/img/mirror/d543dcde9f0eac6c.jpg b/solution/site/scripts/mockup/img/mirror/d543dcde9f0eac6c.jpg new file mode 100644 index 0000000..2e83ef4 Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/d543dcde9f0eac6c.jpg differ diff --git a/solution/site/scripts/mockup/img/mirror/d8764592a03b0103.jpg b/solution/site/scripts/mockup/img/mirror/d8764592a03b0103.jpg new file mode 100644 index 0000000..0116a3e Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/d8764592a03b0103.jpg differ diff --git a/solution/site/scripts/mockup/img/mirror/d902ef61234bd897.png b/solution/site/scripts/mockup/img/mirror/d902ef61234bd897.png new file mode 100644 index 0000000..0cbdc50 Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/d902ef61234bd897.png differ diff --git a/solution/site/scripts/mockup/img/mirror/ddc9f804f4ef83b5.jpg b/solution/site/scripts/mockup/img/mirror/ddc9f804f4ef83b5.jpg new file mode 100644 index 0000000..dca75be Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/ddc9f804f4ef83b5.jpg differ diff --git a/solution/site/scripts/mockup/img/mirror/e0ed8d1a27e09320.jpg b/solution/site/scripts/mockup/img/mirror/e0ed8d1a27e09320.jpg new file mode 100644 index 0000000..98bce01 Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/e0ed8d1a27e09320.jpg differ diff --git a/solution/site/scripts/mockup/img/mirror/f27b7440e2f1183f.jpg b/solution/site/scripts/mockup/img/mirror/f27b7440e2f1183f.jpg new file mode 100644 index 0000000..aa1ee7f Binary files /dev/null and b/solution/site/scripts/mockup/img/mirror/f27b7440e2f1183f.jpg differ diff --git a/solution/site/scripts/mockup/patch_stay.py b/solution/site/scripts/mockup/patch_stay.py index c8b6461..28079aa 100644 --- a/solution/site/scripts/mockup/patch_stay.py +++ b/solution/site/scripts/mockup/patch_stay.py @@ -260,6 +260,30 @@ block = ("\n \n" html, n = re.subn(r"\n?\s*", lambda _m: block + "", html, count=1) assert n == 1, " 를 못 찾았다" +# ───────────────────────────────────────────────────────────────────────────── +# 레포 안으로 끌어들이기 — 다른 사람 기계에서도 그대로 떠야 한다. +# +# ★ 왜 (2026-09-11, 사장님: "다른 환경에서 local/s/stay 치면 나오냐고") +# 구워진 index.html 은 미러 사진 61장(`/assets/mirror/*`)과 번들 css/js 를 **루트 절대경로**로 +# 가리킨다. 그 파일들은 레포가 아니라 도커 볼륨에만 있다 — 레포만 받은 사람은 흰 화면을 본다. +# 번들은 더 나쁘다: 파일명이 콘텐츠 해시라 그 기계에서 구운 해시가 다르면 404 다. +# 그래서 둘 다 `img/mirror/` · `vendor/` 로 복사해 두고, 경로를 `/s/stay/…` 로 바꿔 박는다. +# 이러면 nginx 가 `/s/` 를 파일로 주기만 하면 되고 번들 해시와 무관해진다. +# (대신 렌더러를 고쳐도 이 목업은 안 따라간다 — 목업은 원래 재굽기 대상이 아니라 그게 맞다.) +missing = [] +for name in sorted(set(re.findall(r"/assets/mirror/[0-9a-f]+\.\w+", html))): + if not (SP / "img" / "mirror" / name.rsplit("/", 1)[1]).exists(): + missing.append(name) +for name in sorted(set(re.findall(r"/assets/index-[\w.-]+\.(?:css|js)", html))): + if not (SP / "vendor" / name.rsplit("/", 1)[1]).exists(): + missing.append(name) +assert not missing, f"레포에 없는 자산 {len(missing)}개: {missing[:3]} … `vendor.sh` 를 돌려라" + +html = re.sub(r"/assets/mirror/", "/s/stay/img/mirror/", html) +html = re.sub(r"/assets/(index-[\w.-]+\.(?:css|js))", r"/s/stay/vendor/\1", html) +left = re.findall(r"/assets/[^\"\\')\s]+", html) +assert not left, f"아직 /assets 를 가리키는 자리가 있다: {left[:5]}" + out = SP / "build" out.mkdir(exist_ok=True) (out / "index.html").write_text(html, encoding="utf-8") diff --git a/solution/site/scripts/mockup/vendor/index-DUeGvBPS.js b/solution/site/scripts/mockup/vendor/index-DUeGvBPS.js new file mode 100644 index 0000000..9fa7281 --- /dev/null +++ b/solution/site/scripts/mockup/vendor/index-DUeGvBPS.js @@ -0,0 +1,298 @@ +(function(){const r=document.createElement("link").relList;if(r&&r.supports&&r.supports("modulepreload"))return;for(const f of document.querySelectorAll('link[rel="modulepreload"]'))o(f);new MutationObserver(f=>{for(const m of f)if(m.type==="childList")for(const h of m.addedNodes)h.tagName==="LINK"&&h.rel==="modulepreload"&&o(h)}).observe(document,{childList:!0,subtree:!0});function u(f){const m={};return f.integrity&&(m.integrity=f.integrity),f.referrerPolicy&&(m.referrerPolicy=f.referrerPolicy),f.crossOrigin==="use-credentials"?m.credentials="include":f.crossOrigin==="anonymous"?m.credentials="omit":m.credentials="same-origin",m}function o(f){if(f.ep)return;f.ep=!0;const m=u(f);fetch(f.href,m)}})();const Xg="modulepreload",$g=function(i){return"/"+i},hh={},Vg=function(r,u,o){let f=Promise.resolve();if(u&&u.length>0){let h=function(p){return Promise.all(p.map(b=>Promise.resolve(b).then(y=>({status:"fulfilled",value:y}),y=>({status:"rejected",reason:y}))))};document.getElementsByTagName("link");const x=document.querySelector("meta[property=csp-nonce]"),v=(x==null?void 0:x.nonce)||(x==null?void 0:x.getAttribute("nonce"));f=h(u.map(p=>{if(p=$g(p),p in hh)return;hh[p]=!0;const b=p.endsWith(".css"),y=b?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${p}"]${y}`))return;const E=document.createElement("link");if(E.rel=b?"stylesheet":Xg,b||(E.as="script"),E.crossOrigin="",E.href=p,v&&E.setAttribute("nonce",v),document.head.appendChild(E),b)return new Promise((T,N)=>{E.addEventListener("load",T),E.addEventListener("error",()=>N(new Error(`Unable to preload CSS for ${p}`)))})}))}function m(h){const x=new Event("vite:preloadError",{cancelable:!0});if(x.payload=h,window.dispatchEvent(x),!x.defaultPrevented)throw h}return f.then(h=>{for(const x of h||[])x.status==="rejected"&&m(x.reason);return r().catch(m)})};var Ou={exports:{}},Ns={};/** + * @license React + * react-jsx-runtime.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var ph;function Zg(){if(ph)return Ns;ph=1;var i=Symbol.for("react.transitional.element"),r=Symbol.for("react.fragment");function u(o,f,m){var h=null;if(m!==void 0&&(h=""+m),f.key!==void 0&&(h=""+f.key),"key"in f){m={};for(var x in f)x!=="key"&&(m[x]=f[x])}else m=f;return f=m.ref,{$$typeof:i,type:o,key:h,ref:f!==void 0?f:null,props:m}}return Ns.Fragment=r,Ns.jsx=u,Ns.jsxs=u,Ns}var xh;function Kg(){return xh||(xh=1,Ou.exports=Zg()),Ou.exports}var n=Kg(),Du={exports:{}},ce={};/** + * @license React + * react.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var gh;function Jg(){if(gh)return ce;gh=1;var i=Symbol.for("react.transitional.element"),r=Symbol.for("react.portal"),u=Symbol.for("react.fragment"),o=Symbol.for("react.strict_mode"),f=Symbol.for("react.profiler"),m=Symbol.for("react.consumer"),h=Symbol.for("react.context"),x=Symbol.for("react.forward_ref"),v=Symbol.for("react.suspense"),p=Symbol.for("react.memo"),b=Symbol.for("react.lazy"),y=Symbol.for("react.activity"),E=Symbol.iterator;function T(S){return S===null||typeof S!="object"?null:(S=E&&S[E]||S["@@iterator"],typeof S=="function"?S:null)}var N={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},_=Object.assign,U={};function q(S,H,G){this.props=S,this.context=H,this.refs=U,this.updater=G||N}q.prototype.isReactComponent={},q.prototype.setState=function(S,H){if(typeof S!="object"&&typeof S!="function"&&S!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,S,H,"setState")},q.prototype.forceUpdate=function(S){this.updater.enqueueForceUpdate(this,S,"forceUpdate")};function Q(){}Q.prototype=q.prototype;function V(S,H,G){this.props=S,this.context=H,this.refs=U,this.updater=G||N}var ne=V.prototype=new Q;ne.constructor=V,_(ne,q.prototype),ne.isPureReactComponent=!0;var de=Array.isArray;function le(){}var X={H:null,A:null,T:null,S:null},ee=Object.prototype.hasOwnProperty;function se(S,H,G){var $=G.ref;return{$$typeof:i,type:S,key:H,ref:$!==void 0?$:null,props:G}}function Ne(S,H){return se(S.type,H,S.props)}function oe(S){return typeof S=="object"&&S!==null&&S.$$typeof===i}function ye(S){var H={"=":"=0",":":"=2"};return"$"+S.replace(/[=:]/g,function(G){return H[G]})}var Ye=/\/+/g;function Qe(S,H){return typeof S=="object"&&S!==null&&S.key!=null?ye(""+S.key):H.toString(36)}function te(S){switch(S.status){case"fulfilled":return S.value;case"rejected":throw S.reason;default:switch(typeof S.status=="string"?S.then(le,le):(S.status="pending",S.then(function(H){S.status==="pending"&&(S.status="fulfilled",S.value=H)},function(H){S.status==="pending"&&(S.status="rejected",S.reason=H)})),S.status){case"fulfilled":return S.value;case"rejected":throw S.reason}}throw S}function O(S,H,G,$,ae){var re=typeof S;(re==="undefined"||re==="boolean")&&(S=null);var ie=!1;if(S===null)ie=!0;else switch(re){case"bigint":case"string":case"number":ie=!0;break;case"object":switch(S.$$typeof){case i:case r:ie=!0;break;case b:return ie=S._init,O(ie(S._payload),H,G,$,ae)}}if(ie)return ae=ae(S),ie=$===""?"."+Qe(S,0):$,de(ae)?(G="",ie!=null&&(G=ie.replace(Ye,"$&/")+"/"),O(ae,H,G,"",function(nt){return nt})):ae!=null&&(oe(ae)&&(ae=Ne(ae,G+(ae.key==null||S&&S.key===ae.key?"":(""+ae.key).replace(Ye,"$&/")+"/")+ie)),H.push(ae)),1;ie=0;var Ee=$===""?".":$+":";if(de(S))for(var Ae=0;Ae>>1,je=O[me];if(0>>1;mef(G,W))$f(ae,G)?(O[me]=ae,O[$]=W,me=$):(O[me]=G,O[H]=W,me=H);else if($f(ae,W))O[me]=ae,O[$]=W,me=$;else break e}}return B}function f(O,B){var W=O.sortIndex-B.sortIndex;return W!==0?W:O.id-B.id}if(i.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var m=performance;i.unstable_now=function(){return m.now()}}else{var h=Date,x=h.now();i.unstable_now=function(){return h.now()-x}}var v=[],p=[],b=1,y=null,E=3,T=!1,N=!1,_=!1,U=!1,q=typeof setTimeout=="function"?setTimeout:null,Q=typeof clearTimeout=="function"?clearTimeout:null,V=typeof setImmediate<"u"?setImmediate:null;function ne(O){for(var B=u(p);B!==null;){if(B.callback===null)o(p);else if(B.startTime<=O)o(p),B.sortIndex=B.expirationTime,r(v,B);else break;B=u(p)}}function de(O){if(_=!1,ne(O),!N)if(u(v)!==null)N=!0,le||(le=!0,ye());else{var B=u(p);B!==null&&te(de,B.startTime-O)}}var le=!1,X=-1,ee=5,se=-1;function Ne(){return U?!0:!(i.unstable_now()-seO&&Ne());){var me=y.callback;if(typeof me=="function"){y.callback=null,E=y.priorityLevel;var je=me(y.expirationTime<=O);if(O=i.unstable_now(),typeof je=="function"){y.callback=je,ne(O),B=!0;break t}y===u(v)&&o(v),ne(O)}else o(v);y=u(v)}if(y!==null)B=!0;else{var S=u(p);S!==null&&te(de,S.startTime-O),B=!1}}break e}finally{y=null,E=W,T=!1}B=void 0}}finally{B?ye():le=!1}}}var ye;if(typeof V=="function")ye=function(){V(oe)};else if(typeof MessageChannel<"u"){var Ye=new MessageChannel,Qe=Ye.port2;Ye.port1.onmessage=oe,ye=function(){Qe.postMessage(null)}}else ye=function(){q(oe,0)};function te(O,B){X=q(function(){O(i.unstable_now())},B)}i.unstable_IdlePriority=5,i.unstable_ImmediatePriority=1,i.unstable_LowPriority=4,i.unstable_NormalPriority=3,i.unstable_Profiling=null,i.unstable_UserBlockingPriority=2,i.unstable_cancelCallback=function(O){O.callback=null},i.unstable_forceFrameRate=function(O){0>O||125me?(O.sortIndex=W,r(p,O),u(v)===null&&O===u(p)&&(_?(Q(X),X=-1):_=!0,te(de,W-me))):(O.sortIndex=je,r(v,O),N||T||(N=!0,le||(le=!0,ye()))),O},i.unstable_shouldYield=Ne,i.unstable_wrapCallback=function(O){var B=E;return function(){var W=E;E=B;try{return O.apply(this,arguments)}finally{E=W}}}})(Ru)),Ru}var yh;function Fg(){return yh||(yh=1,Uu.exports=Wg()),Uu.exports}var Hu={exports:{}},ht={};/** + * @license React + * react-dom.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var jh;function Ig(){if(jh)return ht;jh=1;var i=Wu();function r(v){var p="https://react.dev/errors/"+v;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(i)}catch(r){console.error(r)}}return i(),Hu.exports=Ig(),Hu.exports}/** + * @license React + * react-dom-client.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Sh;function ev(){if(Sh)return Ss;Sh=1;var i=Fg(),r=Wu(),u=Pg();function o(e){var t="https://react.dev/errors/"+e;if(1je||(e.current=me[je],me[je]=null,je--)}function G(e,t){je++,me[je]=e.current,e.current=t}var $=S(null),ae=S(null),re=S(null),ie=S(null);function Ee(e,t){switch(G(re,t),G(ae,e),G($,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?Hm(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=Hm(t),e=Lm(t,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}H($),G($,e)}function Ae(){H($),H(ae),H(re)}function nt(e){e.memoizedState!==null&&G(ie,e);var t=$.current,l=Lm(t,e.type);t!==l&&(G(ae,e),G($,l))}function Me(e){ae.current===e&&(H($),H(ae)),ie.current===e&&(H(ie),vs._currentValue=W)}var J,_e;function Oe(e){if(J===void 0)try{throw Error()}catch(l){var t=l.stack.trim().match(/\n( *(at )?)/);J=t&&t[1]||"",_e=-1)":-1s||j[a]!==C[s]){var k=` +`+j[a].replace(" at new "," at ");return e.displayName&&k.includes("")&&(k=k.replace("",e.displayName)),k}while(1<=a&&0<=s);break}}}finally{tt=!1,Error.prepareStackTrace=l}return(l=e?e.displayName||e.name:"")?Oe(l):""}function Wt(e,t){switch(e.tag){case 26:case 27:case 5:return Oe(e.type);case 16:return Oe("Lazy");case 13:return e.child!==t&&t!==null?Oe("Suspense Fallback"):Oe("Suspense");case 19:return Oe("SuspenseList");case 0:case 15:return bt(e.type,!1);case 11:return bt(e.type.render,!1);case 1:return bt(e.type,!0);case 31:return Oe("Activity");default:return""}}function nl(e){try{var t="",l=null;do t+=Wt(e,l),l=e,e=e.return;while(e);return t}catch(a){return` +Error generating stack: `+a.message+` +`+a.stack}}var kt=Object.prototype.hasOwnProperty,Ft=i.unstable_scheduleCallback,hl=i.unstable_cancelCallback,An=i.unstable_shouldYield,Tn=i.unstable_requestPaint,mt=i.unstable_now,Ys=i.unstable_getCurrentPriorityLevel,Gs=i.unstable_ImmediatePriority,_n=i.unstable_UserBlockingPriority,ka=i.unstable_NormalPriority,wn=i.unstable_LowPriority,pl=i.unstable_IdlePriority,Cn=i.log,Mn=i.unstable_setDisableYieldValue,sl=null,xt=null;function il(e){if(typeof Cn=="function"&&Mn(e),xt&&typeof xt.setStrictMode=="function")try{xt.setStrictMode(sl,e)}catch{}}var gt=Math.clz32?Math.clz32:Qs,vc=Math.log,bc=Math.LN2;function Qs(e){return e>>>=0,e===0?32:31-(vc(e)/bc|0)|0}var Ua=256,ua=262144,oa=4194304;function cl(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function Ra(e,t,l){var a=e.pendingLanes;if(a===0)return 0;var s=0,c=e.suspendedLanes,d=e.pingedLanes;e=e.warmLanes;var g=a&134217727;return g!==0?(a=g&~c,a!==0?s=cl(a):(d&=g,d!==0?s=cl(d):l||(l=g&~e,l!==0&&(s=cl(l))))):(g=a&~c,g!==0?s=cl(g):d!==0?s=cl(d):l||(l=a&~e,l!==0&&(s=cl(l)))),s===0?0:t!==0&&t!==s&&(t&c)===0&&(c=s&-s,l=t&-t,c>=l||c===32&&(l&4194048)!==0)?t:s}function Ll(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function Xs(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function $s(){var e=oa;return oa<<=1,(oa&62914560)===0&&(oa=4194304),e}function yc(e){for(var t=[],l=0;31>l;l++)t.push(e);return t}function On(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function Op(e,t,l,a,s,c){var d=e.pendingLanes;e.pendingLanes=l,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=l,e.entangledLanes&=l,e.errorRecoveryDisabledLanes&=l,e.shellSuspendCounter=0;var g=e.entanglements,j=e.expirationTimes,C=e.hiddenUpdates;for(l=d&~l;0"u")return null;try{return e.activeElement||e.body}catch{return e.body}}var Lp=/[\n"\\]/g;function Rt(e){return e.replace(Lp,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function Ac(e,t,l,a,s,c,d,g){e.name="",d!=null&&typeof d!="function"&&typeof d!="symbol"&&typeof d!="boolean"?e.type=d:e.removeAttribute("type"),t!=null?d==="number"?(t===0&&e.value===""||e.value!=t)&&(e.value=""+Ut(t)):e.value!==""+Ut(t)&&(e.value=""+Ut(t)):d!=="submit"&&d!=="reset"||e.removeAttribute("value"),t!=null?Tc(e,d,Ut(t)):l!=null?Tc(e,d,Ut(l)):a!=null&&e.removeAttribute("value"),s==null&&c!=null&&(e.defaultChecked=!!c),s!=null&&(e.checked=s&&typeof s!="function"&&typeof s!="symbol"),g!=null&&typeof g!="function"&&typeof g!="symbol"&&typeof g!="boolean"?e.name=""+Ut(g):e.removeAttribute("name")}function Co(e,t,l,a,s,c,d,g){if(c!=null&&typeof c!="function"&&typeof c!="symbol"&&typeof c!="boolean"&&(e.type=c),t!=null||l!=null){if(!(c!=="submit"&&c!=="reset"||t!=null)){Ec(e);return}l=l!=null?""+Ut(l):"",t=t!=null?""+Ut(t):l,g||t===e.value||(e.value=t),e.defaultValue=t}a=a??s,a=typeof a!="function"&&typeof a!="symbol"&&!!a,e.checked=g?e.checked:!!a,e.defaultChecked=!!a,d!=null&&typeof d!="function"&&typeof d!="symbol"&&typeof d!="boolean"&&(e.name=d),Ec(e)}function Tc(e,t,l){t==="number"&&Ks(e.ownerDocument)===e||e.defaultValue===""+l||(e.defaultValue=""+l)}function Ga(e,t,l,a){if(e=e.options,t){t={};for(var s=0;s"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Oc=!1;if(vl)try{var Rn={};Object.defineProperty(Rn,"passive",{get:function(){Oc=!0}}),window.addEventListener("test",Rn,Rn),window.removeEventListener("test",Rn,Rn)}catch{Oc=!1}var Bl=null,Dc=null,Ws=null;function Ho(){if(Ws)return Ws;var e,t=Dc,l=t.length,a,s="value"in Bl?Bl.value:Bl.textContent,c=s.length;for(e=0;e=qn),Qo=" ",Xo=!1;function $o(e,t){switch(e){case"keyup":return dx.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Vo(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Va=!1;function hx(e,t){switch(e){case"compositionend":return Vo(t);case"keypress":return t.which!==32?null:(Xo=!0,Qo);case"textInput":return e=t.data,e===Qo&&Xo?null:e;default:return null}}function px(e,t){if(Va)return e==="compositionend"||!Lc&&$o(e,t)?(e=Ho(),Ws=Dc=Bl=null,Va=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:l,offset:t-e};e=a}e:{for(;l;){if(l.nextSibling){l=l.nextSibling;break e}l=l.parentNode}l=void 0}l=ef(l)}}function lf(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?lf(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function af(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Ks(e.document);t instanceof e.HTMLIFrameElement;){try{var l=typeof t.contentWindow.location.href=="string"}catch{l=!1}if(l)e=t.contentWindow;else break;t=Ks(e.document)}return t}function Yc(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}var Sx=vl&&"documentMode"in document&&11>=document.documentMode,Za=null,Gc=null,Qn=null,Qc=!1;function nf(e,t,l){var a=l.window===l?l.document:l.nodeType===9?l:l.ownerDocument;Qc||Za==null||Za!==Ks(a)||(a=Za,"selectionStart"in a&&Yc(a)?a={start:a.selectionStart,end:a.selectionEnd}:(a=(a.ownerDocument&&a.ownerDocument.defaultView||window).getSelection(),a={anchorNode:a.anchorNode,anchorOffset:a.anchorOffset,focusNode:a.focusNode,focusOffset:a.focusOffset}),Qn&&Gn(Qn,a)||(Qn=a,a=Qi(Gc,"onSelect"),0>=d,s-=d,rl=1<<32-gt(t)+s|l<fe?(ge=K,K=null):ge=K.sibling;var ze=M(A,K,w[fe],R);if(ze===null){K===null&&(K=ge);break}e&&K&&ze.alternate===null&&t(A,K),z=c(ze,z,fe),Se===null?I=ze:Se.sibling=ze,Se=ze,K=ge}if(fe===w.length)return l(A,K),ve&&yl(A,fe),I;if(K===null){for(;fefe?(ge=K,K=null):ge=K.sibling;var ra=M(A,K,ze.value,R);if(ra===null){K===null&&(K=ge);break}e&&K&&ra.alternate===null&&t(A,K),z=c(ra,z,fe),Se===null?I=ra:Se.sibling=ra,Se=ra,K=ge}if(ze.done)return l(A,K),ve&&yl(A,fe),I;if(K===null){for(;!ze.done;fe++,ze=w.next())ze=L(A,ze.value,R),ze!==null&&(z=c(ze,z,fe),Se===null?I=ze:Se.sibling=ze,Se=ze);return ve&&yl(A,fe),I}for(K=a(K);!ze.done;fe++,ze=w.next())ze=D(K,A,fe,ze.value,R),ze!==null&&(e&&ze.alternate!==null&&K.delete(ze.key===null?fe:ze.key),z=c(ze,z,fe),Se===null?I=ze:Se.sibling=ze,Se=ze);return e&&K.forEach(function(Qg){return t(A,Qg)}),ve&&yl(A,fe),I}function Ue(A,z,w,R){if(typeof w=="object"&&w!==null&&w.type===_&&w.key===null&&(w=w.props.children),typeof w=="object"&&w!==null){switch(w.$$typeof){case T:e:{for(var I=w.key;z!==null;){if(z.key===I){if(I=w.type,I===_){if(z.tag===7){l(A,z.sibling),R=s(z,w.props.children),R.return=A,A=R;break e}}else if(z.elementType===I||typeof I=="object"&&I!==null&&I.$$typeof===ee&&ja(I)===z.type){l(A,z.sibling),R=s(z,w.props),Jn(R,w),R.return=A,A=R;break e}l(A,z);break}else t(A,z);z=z.sibling}w.type===_?(R=xa(w.props.children,A.mode,R,w.key),R.return=A,A=R):(R=ii(w.type,w.key,w.props,null,A.mode,R),Jn(R,w),R.return=A,A=R)}return d(A);case N:e:{for(I=w.key;z!==null;){if(z.key===I)if(z.tag===4&&z.stateNode.containerInfo===w.containerInfo&&z.stateNode.implementation===w.implementation){l(A,z.sibling),R=s(z,w.children||[]),R.return=A,A=R;break e}else{l(A,z);break}else t(A,z);z=z.sibling}R=Wc(w,A.mode,R),R.return=A,A=R}return d(A);case ee:return w=ja(w),Ue(A,z,w,R)}if(te(w))return Z(A,z,w,R);if(ye(w)){if(I=ye(w),typeof I!="function")throw Error(o(150));return w=I.call(w),P(A,z,w,R)}if(typeof w.then=="function")return Ue(A,z,mi(w),R);if(w.$$typeof===V)return Ue(A,z,ui(A,w),R);hi(A,w)}return typeof w=="string"&&w!==""||typeof w=="number"||typeof w=="bigint"?(w=""+w,z!==null&&z.tag===6?(l(A,z.sibling),R=s(z,w),R.return=A,A=R):(l(A,z),R=Jc(w,A.mode,R),R.return=A,A=R),d(A)):l(A,z)}return function(A,z,w,R){try{Kn=0;var I=Ue(A,z,w,R);return nn=null,I}catch(K){if(K===an||K===fi)throw K;var Se=_t(29,K,null,A.mode);return Se.lanes=R,Se.return=A,Se}finally{}}}var Sa=_f(!0),wf=_f(!1),$l=!1;function rr(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function ur(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function Vl(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function Zl(e,t,l){var a=e.updateQueue;if(a===null)return null;if(a=a.shared,(Te&2)!==0){var s=a.pending;return s===null?t.next=t:(t.next=s.next,s.next=t),a.pending=t,t=si(e),df(e,null,l),t}return ni(e,a,t,l),si(e)}function Wn(e,t,l){if(t=t.updateQueue,t!==null&&(t=t.shared,(l&4194048)!==0)){var a=t.lanes;a&=e.pendingLanes,l|=a,t.lanes=l,bo(e,l)}}function or(e,t){var l=e.updateQueue,a=e.alternate;if(a!==null&&(a=a.updateQueue,l===a)){var s=null,c=null;if(l=l.firstBaseUpdate,l!==null){do{var d={lane:l.lane,tag:l.tag,payload:l.payload,callback:null,next:null};c===null?s=c=d:c=c.next=d,l=l.next}while(l!==null);c===null?s=c=t:c=c.next=t}else s=c=t;l={baseState:a.baseState,firstBaseUpdate:s,lastBaseUpdate:c,shared:a.shared,callbacks:a.callbacks},e.updateQueue=l;return}e=l.lastBaseUpdate,e===null?l.firstBaseUpdate=t:e.next=t,l.lastBaseUpdate=t}var fr=!1;function Fn(){if(fr){var e=ln;if(e!==null)throw e}}function In(e,t,l,a){fr=!1;var s=e.updateQueue;$l=!1;var c=s.firstBaseUpdate,d=s.lastBaseUpdate,g=s.shared.pending;if(g!==null){s.shared.pending=null;var j=g,C=j.next;j.next=null,d===null?c=C:d.next=C,d=j;var k=e.alternate;k!==null&&(k=k.updateQueue,g=k.lastBaseUpdate,g!==d&&(g===null?k.firstBaseUpdate=C:g.next=C,k.lastBaseUpdate=j))}if(c!==null){var L=s.baseState;d=0,k=C=j=null,g=c;do{var M=g.lane&-536870913,D=M!==g.lane;if(D?(xe&M)===M:(a&M)===M){M!==0&&M===tn&&(fr=!0),k!==null&&(k=k.next={lane:0,tag:g.tag,payload:g.payload,callback:null,next:null});e:{var Z=e,P=g;M=t;var Ue=l;switch(P.tag){case 1:if(Z=P.payload,typeof Z=="function"){L=Z.call(Ue,L,M);break e}L=Z;break e;case 3:Z.flags=Z.flags&-65537|128;case 0:if(Z=P.payload,M=typeof Z=="function"?Z.call(Ue,L,M):Z,M==null)break e;L=y({},L,M);break e;case 2:$l=!0}}M=g.callback,M!==null&&(e.flags|=64,D&&(e.flags|=8192),D=s.callbacks,D===null?s.callbacks=[M]:D.push(M))}else D={lane:M,tag:g.tag,payload:g.payload,callback:g.callback,next:null},k===null?(C=k=D,j=L):k=k.next=D,d|=M;if(g=g.next,g===null){if(g=s.shared.pending,g===null)break;D=g,g=D.next,D.next=null,s.lastBaseUpdate=D,s.shared.pending=null}}while(!0);k===null&&(j=L),s.baseState=j,s.firstBaseUpdate=C,s.lastBaseUpdate=k,c===null&&(s.shared.lanes=0),Il|=d,e.lanes=d,e.memoizedState=L}}function Cf(e,t){if(typeof e!="function")throw Error(o(191,e));e.call(t)}function Mf(e,t){var l=e.callbacks;if(l!==null)for(e.callbacks=null,e=0;ec?c:8;var d=O.T,g={};O.T=g,Cr(e,!1,t,l);try{var j=s(),C=O.S;if(C!==null&&C(g,j),j!==null&&typeof j=="object"&&typeof j.then=="function"){var k=Ox(j,a);ts(e,t,k,Dt(e))}else ts(e,t,a,Dt(e))}catch(L){ts(e,t,{then:function(){},status:"rejected",reason:L},Dt())}finally{B.p=c,d!==null&&g.types!==null&&(d.types=g.types),O.T=d}}function Lx(){}function _r(e,t,l,a){if(e.tag!==5)throw Error(o(476));var s=ud(e).queue;rd(e,s,t,W,l===null?Lx:function(){return od(e),l(a)})}function ud(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:W,baseState:W,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:zl,lastRenderedState:W},next:null};var l={};return t.next={memoizedState:l,baseState:l,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:zl,lastRenderedState:l},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function od(e){var t=ud(e);t.next===null&&(t=e.alternate.memoizedState),ts(e,t.next.queue,{},Dt())}function wr(){return ut(vs)}function fd(){return Ze().memoizedState}function dd(){return Ze().memoizedState}function qx(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var l=Dt();e=Vl(l);var a=Zl(t,e,l);a!==null&&(At(a,t,l),Wn(a,t,l)),t={cache:nr()},e.payload=t;return}t=t.return}}function Bx(e,t,l){var a=Dt();l={lane:a,revertLane:0,gesture:null,action:l,hasEagerState:!1,eagerState:null,next:null},zi(e)?hd(t,l):(l=Zc(e,t,l,a),l!==null&&(At(l,e,a),pd(l,t,a)))}function md(e,t,l){var a=Dt();ts(e,t,l,a)}function ts(e,t,l,a){var s={lane:a,revertLane:0,gesture:null,action:l,hasEagerState:!1,eagerState:null,next:null};if(zi(e))hd(t,s);else{var c=e.alternate;if(e.lanes===0&&(c===null||c.lanes===0)&&(c=t.lastRenderedReducer,c!==null))try{var d=t.lastRenderedState,g=c(d,l);if(s.hasEagerState=!0,s.eagerState=g,Tt(g,d))return ni(e,t,s,0),Re===null&&ai(),!1}catch{}finally{}if(l=Zc(e,t,s,a),l!==null)return At(l,e,a),pd(l,t,a),!0}return!1}function Cr(e,t,l,a){if(a={lane:2,revertLane:ru(),gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null},zi(e)){if(t)throw Error(o(479))}else t=Zc(e,l,a,2),t!==null&&At(t,e,2)}function zi(e){var t=e.alternate;return e===ue||t!==null&&t===ue}function hd(e,t){cn=gi=!0;var l=e.pending;l===null?t.next=t:(t.next=l.next,l.next=t),e.pending=t}function pd(e,t,l){if((l&4194048)!==0){var a=t.lanes;a&=e.pendingLanes,l|=a,t.lanes=l,bo(e,l)}}var ls={readContext:ut,use:yi,useCallback:Xe,useContext:Xe,useEffect:Xe,useImperativeHandle:Xe,useLayoutEffect:Xe,useInsertionEffect:Xe,useMemo:Xe,useReducer:Xe,useRef:Xe,useState:Xe,useDebugValue:Xe,useDeferredValue:Xe,useTransition:Xe,useSyncExternalStore:Xe,useId:Xe,useHostTransitionStatus:Xe,useFormState:Xe,useActionState:Xe,useOptimistic:Xe,useMemoCache:Xe,useCacheRefresh:Xe};ls.useEffectEvent=Xe;var xd={readContext:ut,use:yi,useCallback:function(e,t){return vt().memoizedState=[e,t===void 0?null:t],e},useContext:ut,useEffect:Pf,useImperativeHandle:function(e,t,l){l=l!=null?l.concat([e]):null,Ni(4194308,4,ad.bind(null,t,e),l)},useLayoutEffect:function(e,t){return Ni(4194308,4,e,t)},useInsertionEffect:function(e,t){Ni(4,2,e,t)},useMemo:function(e,t){var l=vt();t=t===void 0?null:t;var a=e();if(za){il(!0);try{e()}finally{il(!1)}}return l.memoizedState=[a,t],a},useReducer:function(e,t,l){var a=vt();if(l!==void 0){var s=l(t);if(za){il(!0);try{l(t)}finally{il(!1)}}}else s=t;return a.memoizedState=a.baseState=s,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:s},a.queue=e,e=e.dispatch=Bx.bind(null,ue,e),[a.memoizedState,e]},useRef:function(e){var t=vt();return e={current:e},t.memoizedState=e},useState:function(e){e=Sr(e);var t=e.queue,l=md.bind(null,ue,t);return t.dispatch=l,[e.memoizedState,l]},useDebugValue:Ar,useDeferredValue:function(e,t){var l=vt();return Tr(l,e,t)},useTransition:function(){var e=Sr(!1);return e=rd.bind(null,ue,e.queue,!0,!1),vt().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,l){var a=ue,s=vt();if(ve){if(l===void 0)throw Error(o(407));l=l()}else{if(l=t(),Re===null)throw Error(o(349));(xe&127)!==0||Hf(a,t,l)}s.memoizedState=l;var c={value:l,getSnapshot:t};return s.queue=c,Pf(qf.bind(null,a,c,e),[e]),a.flags|=2048,un(9,{destroy:void 0},Lf.bind(null,a,c,l,t),null),l},useId:function(){var e=vt(),t=Re.identifierPrefix;if(ve){var l=ul,a=rl;l=(a&~(1<<32-gt(a)-1)).toString(32)+l,t="_"+t+"R_"+l,l=vi++,0<\/script>",c=c.removeChild(c.firstChild);break;case"select":c=typeof a.is=="string"?d.createElement("select",{is:a.is}):d.createElement("select"),a.multiple?c.multiple=!0:a.size&&(c.size=a.size);break;default:c=typeof a.is=="string"?d.createElement(s,{is:a.is}):d.createElement(s)}}c[ct]=t,c[yt]=a;e:for(d=t.child;d!==null;){if(d.tag===5||d.tag===6)c.appendChild(d.stateNode);else if(d.tag!==4&&d.tag!==27&&d.child!==null){d.child.return=d,d=d.child;continue}if(d===t)break e;for(;d.sibling===null;){if(d.return===null||d.return===t)break e;d=d.return}d.sibling.return=d.return,d=d.sibling}t.stateNode=c;e:switch(ft(c,s,a),s){case"button":case"input":case"select":case"textarea":a=!!a.autoFocus;break e;case"img":a=!0;break e;default:a=!1}a&&Al(t)}}return Le(t),Xr(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,l),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==a&&Al(t);else{if(typeof a!="string"&&t.stateNode===null)throw Error(o(166));if(e=re.current,Pa(t)){if(e=t.stateNode,l=t.memoizedProps,a=null,s=rt,s!==null)switch(s.tag){case 27:case 5:a=s.memoizedProps}e[ct]=t,e=!!(e.nodeValue===l||a!==null&&a.suppressHydrationWarning===!0||Um(e.nodeValue,l)),e||Ql(t,!0)}else e=Xi(e).createTextNode(a),e[ct]=t,t.stateNode=e}return Le(t),null;case 31:if(l=t.memoizedState,e===null||e.memoizedState!==null){if(a=Pa(t),l!==null){if(e===null){if(!a)throw Error(o(318));if(e=t.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(o(557));e[ct]=t}else ga(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Le(t),e=!1}else l=er(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=l),e=!0;if(!e)return t.flags&256?(Ct(t),t):(Ct(t),null);if((t.flags&128)!==0)throw Error(o(558))}return Le(t),null;case 13:if(a=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(s=Pa(t),a!==null&&a.dehydrated!==null){if(e===null){if(!s)throw Error(o(318));if(s=t.memoizedState,s=s!==null?s.dehydrated:null,!s)throw Error(o(317));s[ct]=t}else ga(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Le(t),s=!1}else s=er(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=s),s=!0;if(!s)return t.flags&256?(Ct(t),t):(Ct(t),null)}return Ct(t),(t.flags&128)!==0?(t.lanes=l,t):(l=a!==null,e=e!==null&&e.memoizedState!==null,l&&(a=t.child,s=null,a.alternate!==null&&a.alternate.memoizedState!==null&&a.alternate.memoizedState.cachePool!==null&&(s=a.alternate.memoizedState.cachePool.pool),c=null,a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(c=a.memoizedState.cachePool.pool),c!==s&&(a.flags|=2048)),l!==e&&l&&(t.child.flags|=8192),wi(t,t.updateQueue),Le(t),null);case 4:return Ae(),e===null&&du(t.stateNode.containerInfo),Le(t),null;case 10:return Nl(t.type),Le(t),null;case 19:if(H(Ve),a=t.memoizedState,a===null)return Le(t),null;if(s=(t.flags&128)!==0,c=a.rendering,c===null)if(s)ns(a,!1);else{if($e!==0||e!==null&&(e.flags&128)!==0)for(e=t.child;e!==null;){if(c=xi(e),c!==null){for(t.flags|=128,ns(a,!1),e=c.updateQueue,t.updateQueue=e,wi(t,e),t.subtreeFlags=0,e=l,l=t.child;l!==null;)mf(l,e),l=l.sibling;return G(Ve,Ve.current&1|2),ve&&yl(t,a.treeForkCount),t.child}e=e.sibling}a.tail!==null&&mt()>ki&&(t.flags|=128,s=!0,ns(a,!1),t.lanes=4194304)}else{if(!s)if(e=xi(c),e!==null){if(t.flags|=128,s=!0,e=e.updateQueue,t.updateQueue=e,wi(t,e),ns(a,!0),a.tail===null&&a.tailMode==="hidden"&&!c.alternate&&!ve)return Le(t),null}else 2*mt()-a.renderingStartTime>ki&&l!==536870912&&(t.flags|=128,s=!0,ns(a,!1),t.lanes=4194304);a.isBackwards?(c.sibling=t.child,t.child=c):(e=a.last,e!==null?e.sibling=c:t.child=c,a.last=c)}return a.tail!==null?(e=a.tail,a.rendering=e,a.tail=e.sibling,a.renderingStartTime=mt(),e.sibling=null,l=Ve.current,G(Ve,s?l&1|2:l&1),ve&&yl(t,a.treeForkCount),e):(Le(t),null);case 22:case 23:return Ct(t),mr(),a=t.memoizedState!==null,e!==null?e.memoizedState!==null!==a&&(t.flags|=8192):a&&(t.flags|=8192),a?(l&536870912)!==0&&(t.flags&128)===0&&(Le(t),t.subtreeFlags&6&&(t.flags|=8192)):Le(t),l=t.updateQueue,l!==null&&wi(t,l.retryQueue),l=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(l=e.memoizedState.cachePool.pool),a=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(a=t.memoizedState.cachePool.pool),a!==l&&(t.flags|=2048),e!==null&&H(ya),null;case 24:return l=null,e!==null&&(l=e.memoizedState.cache),t.memoizedState.cache!==l&&(t.flags|=2048),Nl(Je),Le(t),null;case 25:return null;case 30:return null}throw Error(o(156,t.tag))}function $x(e,t){switch(Ic(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Nl(Je),Ae(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return Me(t),null;case 31:if(t.memoizedState!==null){if(Ct(t),t.alternate===null)throw Error(o(340));ga()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(Ct(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(o(340));ga()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return H(Ve),null;case 4:return Ae(),null;case 10:return Nl(t.type),null;case 22:case 23:return Ct(t),mr(),e!==null&&H(ya),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return Nl(Je),null;case 25:return null;default:return null}}function Bd(e,t){switch(Ic(t),t.tag){case 3:Nl(Je),Ae();break;case 26:case 27:case 5:Me(t);break;case 4:Ae();break;case 31:t.memoizedState!==null&&Ct(t);break;case 13:Ct(t);break;case 19:H(Ve);break;case 10:Nl(t.type);break;case 22:case 23:Ct(t),mr(),e!==null&&H(ya);break;case 24:Nl(Je)}}function ss(e,t){try{var l=t.updateQueue,a=l!==null?l.lastEffect:null;if(a!==null){var s=a.next;l=s;do{if((l.tag&e)===e){a=void 0;var c=l.create,d=l.inst;a=c(),d.destroy=a}l=l.next}while(l!==s)}}catch(g){Ce(t,t.return,g)}}function Wl(e,t,l){try{var a=t.updateQueue,s=a!==null?a.lastEffect:null;if(s!==null){var c=s.next;a=c;do{if((a.tag&e)===e){var d=a.inst,g=d.destroy;if(g!==void 0){d.destroy=void 0,s=t;var j=l,C=g;try{C()}catch(k){Ce(s,j,k)}}}a=a.next}while(a!==c)}}catch(k){Ce(t,t.return,k)}}function Yd(e){var t=e.updateQueue;if(t!==null){var l=e.stateNode;try{Mf(t,l)}catch(a){Ce(e,e.return,a)}}}function Gd(e,t,l){l.props=Ea(e.type,e.memoizedProps),l.state=e.memoizedState;try{l.componentWillUnmount()}catch(a){Ce(e,t,a)}}function is(e,t){try{var l=e.ref;if(l!==null){switch(e.tag){case 26:case 27:case 5:var a=e.stateNode;break;case 30:a=e.stateNode;break;default:a=e.stateNode}typeof l=="function"?e.refCleanup=l(a):l.current=a}}catch(s){Ce(e,t,s)}}function ol(e,t){var l=e.ref,a=e.refCleanup;if(l!==null)if(typeof a=="function")try{a()}catch(s){Ce(e,t,s)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof l=="function")try{l(null)}catch(s){Ce(e,t,s)}else l.current=null}function Qd(e){var t=e.type,l=e.memoizedProps,a=e.stateNode;try{e:switch(t){case"button":case"input":case"select":case"textarea":l.autoFocus&&a.focus();break e;case"img":l.src?a.src=l.src:l.srcSet&&(a.srcset=l.srcSet)}}catch(s){Ce(e,e.return,s)}}function $r(e,t,l){try{var a=e.stateNode;mg(a,e.type,l,t),a[yt]=t}catch(s){Ce(e,e.return,s)}}function Xd(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&aa(e.type)||e.tag===4}function Vr(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Xd(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&aa(e.type)||e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Zr(e,t,l){var a=e.tag;if(a===5||a===6)e=e.stateNode,t?(l.nodeType===9?l.body:l.nodeName==="HTML"?l.ownerDocument.body:l).insertBefore(e,t):(t=l.nodeType===9?l.body:l.nodeName==="HTML"?l.ownerDocument.body:l,t.appendChild(e),l=l._reactRootContainer,l!=null||t.onclick!==null||(t.onclick=gl));else if(a!==4&&(a===27&&aa(e.type)&&(l=e.stateNode,t=null),e=e.child,e!==null))for(Zr(e,t,l),e=e.sibling;e!==null;)Zr(e,t,l),e=e.sibling}function Ci(e,t,l){var a=e.tag;if(a===5||a===6)e=e.stateNode,t?l.insertBefore(e,t):l.appendChild(e);else if(a!==4&&(a===27&&aa(e.type)&&(l=e.stateNode),e=e.child,e!==null))for(Ci(e,t,l),e=e.sibling;e!==null;)Ci(e,t,l),e=e.sibling}function $d(e){var t=e.stateNode,l=e.memoizedProps;try{for(var a=e.type,s=t.attributes;s.length;)t.removeAttributeNode(s[0]);ft(t,a,l),t[ct]=e,t[yt]=l}catch(c){Ce(e,e.return,c)}}var Tl=!1,Ie=!1,Kr=!1,Vd=typeof WeakSet=="function"?WeakSet:Set,it=null;function Vx(e,t){if(e=e.containerInfo,pu=Fi,e=af(e),Yc(e)){if("selectionStart"in e)var l={start:e.selectionStart,end:e.selectionEnd};else e:{l=(l=e.ownerDocument)&&l.defaultView||window;var a=l.getSelection&&l.getSelection();if(a&&a.rangeCount!==0){l=a.anchorNode;var s=a.anchorOffset,c=a.focusNode;a=a.focusOffset;try{l.nodeType,c.nodeType}catch{l=null;break e}var d=0,g=-1,j=-1,C=0,k=0,L=e,M=null;t:for(;;){for(var D;L!==l||s!==0&&L.nodeType!==3||(g=d+s),L!==c||a!==0&&L.nodeType!==3||(j=d+a),L.nodeType===3&&(d+=L.nodeValue.length),(D=L.firstChild)!==null;)M=L,L=D;for(;;){if(L===e)break t;if(M===l&&++C===s&&(g=d),M===c&&++k===a&&(j=d),(D=L.nextSibling)!==null)break;L=M,M=L.parentNode}L=D}l=g===-1||j===-1?null:{start:g,end:j}}else l=null}l=l||{start:0,end:0}}else l=null;for(xu={focusedElem:e,selectionRange:l},Fi=!1,it=t;it!==null;)if(t=it,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,it=e;else for(;it!==null;){switch(t=it,c=t.alternate,e=t.flags,t.tag){case 0:if((e&4)!==0&&(e=t.updateQueue,e=e!==null?e.events:null,e!==null))for(l=0;l title"))),ft(c,a,l),c[ct]=e,st(c),a=c;break e;case"link":var d=Im("link","href",s).get(a+(l.href||""));if(d){for(var g=0;gUe&&(d=Ue,Ue=P,P=d);var A=tf(g,P),z=tf(g,Ue);if(A&&z&&(D.rangeCount!==1||D.anchorNode!==A.node||D.anchorOffset!==A.offset||D.focusNode!==z.node||D.focusOffset!==z.offset)){var w=L.createRange();w.setStart(A.node,A.offset),D.removeAllRanges(),P>Ue?(D.addRange(w),D.extend(z.node,z.offset)):(w.setEnd(z.node,z.offset),D.addRange(w))}}}}for(L=[],D=g;D=D.parentNode;)D.nodeType===1&&L.push({element:D,left:D.scrollLeft,top:D.scrollTop});for(typeof g.focus=="function"&&g.focus(),g=0;gl?32:l,O.T=null,l=tu,tu=null;var c=ea,d=Ol;if(lt=0,hn=ea=null,Ol=0,(Te&6)!==0)throw Error(o(331));var g=Te;if(Te|=4,am(c.current),em(c,c.current,d,l),Te=g,ds(0,!1),xt&&typeof xt.onPostCommitFiberRoot=="function")try{xt.onPostCommitFiberRoot(sl,c)}catch{}return!0}finally{B.p=s,O.T=a,jm(e,t)}}function Sm(e,t,l){t=Lt(l,t),t=kr(e.stateNode,t,2),e=Zl(e,t,2),e!==null&&(On(e,2),fl(e))}function Ce(e,t,l){if(e.tag===3)Sm(e,e,l);else for(;t!==null;){if(t.tag===3){Sm(t,e,l);break}else if(t.tag===1){var a=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof a.componentDidCatch=="function"&&(Pl===null||!Pl.has(a))){e=Lt(l,e),l=zd(2),a=Zl(t,l,2),a!==null&&(Ed(l,a,t,e),On(a,2),fl(a));break}}t=t.return}}function su(e,t,l){var a=e.pingCache;if(a===null){a=e.pingCache=new Jx;var s=new Set;a.set(t,s)}else s=a.get(t),s===void 0&&(s=new Set,a.set(t,s));s.has(l)||(Fr=!0,s.add(l),e=eg.bind(null,e,t,l),t.then(e,e))}function eg(e,t,l){var a=e.pingCache;a!==null&&a.delete(t),e.pingedLanes|=e.suspendedLanes&l,e.warmLanes&=~l,Re===e&&(xe&l)===l&&($e===4||$e===3&&(xe&62914560)===xe&&300>mt()-Di?(Te&2)===0&&pn(e,0):Ir|=l,mn===xe&&(mn=0)),fl(e)}function zm(e,t){t===0&&(t=$s()),e=pa(e,t),e!==null&&(On(e,t),fl(e))}function tg(e){var t=e.memoizedState,l=0;t!==null&&(l=t.retryLane),zm(e,l)}function lg(e,t){var l=0;switch(e.tag){case 31:case 13:var a=e.stateNode,s=e.memoizedState;s!==null&&(l=s.retryLane);break;case 19:a=e.stateNode;break;case 22:a=e.stateNode._retryCache;break;default:throw Error(o(314))}a!==null&&a.delete(t),zm(e,l)}function ag(e,t){return Ft(e,t)}var Bi=null,gn=null,iu=!1,Yi=!1,cu=!1,la=0;function fl(e){e!==gn&&e.next===null&&(gn===null?Bi=gn=e:gn=gn.next=e),Yi=!0,iu||(iu=!0,sg())}function ds(e,t){if(!cu&&Yi){cu=!0;do for(var l=!1,a=Bi;a!==null;){if(e!==0){var s=a.pendingLanes;if(s===0)var c=0;else{var d=a.suspendedLanes,g=a.pingedLanes;c=(1<<31-gt(42|e)+1)-1,c&=s&~(d&~g),c=c&201326741?c&201326741|1:c?c|2:0}c!==0&&(l=!0,_m(a,c))}else c=xe,c=Ra(a,a===Re?c:0,a.cancelPendingCommit!==null||a.timeoutHandle!==-1),(c&3)===0||Ll(a,c)||(l=!0,_m(a,c));a=a.next}while(l);cu=!1}}function ng(){Em()}function Em(){Yi=iu=!1;var e=0;la!==0&&pg()&&(e=la);for(var t=mt(),l=null,a=Bi;a!==null;){var s=a.next,c=Am(a,t);c===0?(a.next=null,l===null?Bi=s:l.next=s,s===null&&(gn=l)):(l=a,(e!==0||(c&3)!==0)&&(Yi=!0)),a=s}lt!==0&<!==5||ds(e),la!==0&&(la=0)}function Am(e,t){for(var l=e.suspendedLanes,a=e.pingedLanes,s=e.expirationTimes,c=e.pendingLanes&-62914561;0g)break;var k=j.transferSize,L=j.initiatorType;k&&Rm(L)&&(j=j.responseEnd,d+=k*(j"u"?null:document;function Km(e,t,l){var a=vn;if(a&&typeof t=="string"&&t){var s=Rt(t);s='link[rel="'+e+'"][href="'+s+'"]',typeof l=="string"&&(s+='[crossorigin="'+l+'"]'),Zm.has(s)||(Zm.add(s),e={rel:e,crossOrigin:l,href:t},a.querySelector(s)===null&&(t=a.createElement("link"),ft(t,"link",e),st(t),a.head.appendChild(t)))}}function zg(e){Dl.D(e),Km("dns-prefetch",e,null)}function Eg(e,t){Dl.C(e,t),Km("preconnect",e,t)}function Ag(e,t,l){Dl.L(e,t,l);var a=vn;if(a&&e&&t){var s='link[rel="preload"][as="'+Rt(t)+'"]';t==="image"&&l&&l.imageSrcSet?(s+='[imagesrcset="'+Rt(l.imageSrcSet)+'"]',typeof l.imageSizes=="string"&&(s+='[imagesizes="'+Rt(l.imageSizes)+'"]')):s+='[href="'+Rt(e)+'"]';var c=s;switch(t){case"style":c=bn(e);break;case"script":c=yn(e)}Xt.has(c)||(e=y({rel:"preload",href:t==="image"&&l&&l.imageSrcSet?void 0:e,as:t},l),Xt.set(c,e),a.querySelector(s)!==null||t==="style"&&a.querySelector(xs(c))||t==="script"&&a.querySelector(gs(c))||(t=a.createElement("link"),ft(t,"link",e),st(t),a.head.appendChild(t)))}}function Tg(e,t){Dl.m(e,t);var l=vn;if(l&&e){var a=t&&typeof t.as=="string"?t.as:"script",s='link[rel="modulepreload"][as="'+Rt(a)+'"][href="'+Rt(e)+'"]',c=s;switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":c=yn(e)}if(!Xt.has(c)&&(e=y({rel:"modulepreload",href:e},t),Xt.set(c,e),l.querySelector(s)===null)){switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(l.querySelector(gs(c)))return}a=l.createElement("link"),ft(a,"link",e),st(a),l.head.appendChild(a)}}}function _g(e,t,l){Dl.S(e,t,l);var a=vn;if(a&&e){var s=Ba(a).hoistableStyles,c=bn(e);t=t||"default";var d=s.get(c);if(!d){var g={loading:0,preload:null};if(d=a.querySelector(xs(c)))g.loading=5;else{e=y({rel:"stylesheet",href:e,"data-precedence":t},l),(l=Xt.get(c))&&Su(e,l);var j=d=a.createElement("link");st(j),ft(j,"link",e),j._p=new Promise(function(C,k){j.onload=C,j.onerror=k}),j.addEventListener("load",function(){g.loading|=1}),j.addEventListener("error",function(){g.loading|=2}),g.loading|=4,Vi(d,t,a)}d={type:"stylesheet",instance:d,count:1,state:g},s.set(c,d)}}}function wg(e,t){Dl.X(e,t);var l=vn;if(l&&e){var a=Ba(l).hoistableScripts,s=yn(e),c=a.get(s);c||(c=l.querySelector(gs(s)),c||(e=y({src:e,async:!0},t),(t=Xt.get(s))&&zu(e,t),c=l.createElement("script"),st(c),ft(c,"link",e),l.head.appendChild(c)),c={type:"script",instance:c,count:1,state:null},a.set(s,c))}}function Cg(e,t){Dl.M(e,t);var l=vn;if(l&&e){var a=Ba(l).hoistableScripts,s=yn(e),c=a.get(s);c||(c=l.querySelector(gs(s)),c||(e=y({src:e,async:!0,type:"module"},t),(t=Xt.get(s))&&zu(e,t),c=l.createElement("script"),st(c),ft(c,"link",e),l.head.appendChild(c)),c={type:"script",instance:c,count:1,state:null},a.set(s,c))}}function Jm(e,t,l,a){var s=(s=re.current)?$i(s):null;if(!s)throw Error(o(446));switch(e){case"meta":case"title":return null;case"style":return typeof l.precedence=="string"&&typeof l.href=="string"?(t=bn(l.href),l=Ba(s).hoistableStyles,a=l.get(t),a||(a={type:"style",instance:null,count:0,state:null},l.set(t,a)),a):{type:"void",instance:null,count:0,state:null};case"link":if(l.rel==="stylesheet"&&typeof l.href=="string"&&typeof l.precedence=="string"){e=bn(l.href);var c=Ba(s).hoistableStyles,d=c.get(e);if(d||(s=s.ownerDocument||s,d={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},c.set(e,d),(c=s.querySelector(xs(e)))&&!c._p&&(d.instance=c,d.state.loading=5),Xt.has(e)||(l={rel:"preload",as:"style",href:l.href,crossOrigin:l.crossOrigin,integrity:l.integrity,media:l.media,hrefLang:l.hrefLang,referrerPolicy:l.referrerPolicy},Xt.set(e,l),c||Mg(s,e,l,d.state))),t&&a===null)throw Error(o(528,""));return d}if(t&&a!==null)throw Error(o(529,""));return null;case"script":return t=l.async,l=l.src,typeof l=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=yn(l),l=Ba(s).hoistableScripts,a=l.get(t),a||(a={type:"script",instance:null,count:0,state:null},l.set(t,a)),a):{type:"void",instance:null,count:0,state:null};default:throw Error(o(444,e))}}function bn(e){return'href="'+Rt(e)+'"'}function xs(e){return'link[rel="stylesheet"]['+e+"]"}function Wm(e){return y({},e,{"data-precedence":e.precedence,precedence:null})}function Mg(e,t,l,a){e.querySelector('link[rel="preload"][as="style"]['+t+"]")?a.loading=1:(t=e.createElement("link"),a.preload=t,t.addEventListener("load",function(){return a.loading|=1}),t.addEventListener("error",function(){return a.loading|=2}),ft(t,"link",l),st(t),e.head.appendChild(t))}function yn(e){return'[src="'+Rt(e)+'"]'}function gs(e){return"script[async]"+e}function Fm(e,t,l){if(t.count++,t.instance===null)switch(t.type){case"style":var a=e.querySelector('style[data-href~="'+Rt(l.href)+'"]');if(a)return t.instance=a,st(a),a;var s=y({},l,{"data-href":l.href,"data-precedence":l.precedence,href:null,precedence:null});return a=(e.ownerDocument||e).createElement("style"),st(a),ft(a,"style",s),Vi(a,l.precedence,e),t.instance=a;case"stylesheet":s=bn(l.href);var c=e.querySelector(xs(s));if(c)return t.state.loading|=4,t.instance=c,st(c),c;a=Wm(l),(s=Xt.get(s))&&Su(a,s),c=(e.ownerDocument||e).createElement("link"),st(c);var d=c;return d._p=new Promise(function(g,j){d.onload=g,d.onerror=j}),ft(c,"link",a),t.state.loading|=4,Vi(c,l.precedence,e),t.instance=c;case"script":return c=yn(l.src),(s=e.querySelector(gs(c)))?(t.instance=s,st(s),s):(a=l,(s=Xt.get(c))&&(a=y({},l),zu(a,s)),e=e.ownerDocument||e,s=e.createElement("script"),st(s),ft(s,"link",a),e.head.appendChild(s),t.instance=s);case"void":return null;default:throw Error(o(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(a=t.instance,t.state.loading|=4,Vi(a,l.precedence,e));return t.instance}function Vi(e,t,l){for(var a=l.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),s=a.length?a[a.length-1]:null,c=s,d=0;d title"):null)}function Og(e,t,l){if(l===1||t.itemProp!=null)return!1;switch(e){case"meta":case"title":return!0;case"style":if(typeof t.precedence!="string"||typeof t.href!="string"||t.href==="")break;return!0;case"link":if(typeof t.rel!="string"||typeof t.href!="string"||t.href===""||t.onLoad||t.onError)break;switch(t.rel){case"stylesheet":return e=t.disabled,typeof t.precedence=="string"&&e==null;default:return!0}case"script":if(t.async&&typeof t.async!="function"&&typeof t.async!="symbol"&&!t.onLoad&&!t.onError&&t.src&&typeof t.src=="string")return!0}return!1}function eh(e){return!(e.type==="stylesheet"&&(e.state.loading&3)===0)}function Dg(e,t,l,a){if(l.type==="stylesheet"&&(typeof a.media!="string"||matchMedia(a.media).matches!==!1)&&(l.state.loading&4)===0){if(l.instance===null){var s=bn(a.href),c=t.querySelector(xs(s));if(c){t=c._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(e.count++,e=Ki.bind(e),t.then(e,e)),l.state.loading|=4,l.instance=c,st(c);return}c=t.ownerDocument||t,a=Wm(a),(s=Xt.get(s))&&Su(a,s),c=c.createElement("link"),st(c);var d=c;d._p=new Promise(function(g,j){d.onload=g,d.onerror=j}),ft(c,"link",a),l.instance=c}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(l,t),(t=l.state.preload)&&(l.state.loading&3)===0&&(e.count++,l=Ki.bind(e),t.addEventListener("load",l),t.addEventListener("error",l))}}var Eu=0;function kg(e,t){return e.stylesheets&&e.count===0&&Wi(e,e.stylesheets),0Eu?50:800)+t);return e.unsuspend=l,function(){e.unsuspend=null,clearTimeout(a),clearTimeout(s)}}:null}function Ki(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Wi(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var Ji=null;function Wi(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Ji=new Map,t.forEach(Ug,e),Ji=null,Ki.call(e))}function Ug(e,t){if(!(t.state.loading&4)){var l=Ji.get(e);if(l)var a=l.get(null);else{l=new Map,Ji.set(e,l);for(var s=e.querySelectorAll("link[data-precedence],style[data-precedence]"),c=0;c"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(i)}catch(r){console.error(r)}}return i(),ku.exports=ev(),ku.exports}var Eh=tv();/** + * @license lucide-react v0.546.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const lv=i=>i.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),av=i=>i.replace(/^([A-Z])|[\s-_]+(\w)/g,(r,u,o)=>o?o.toUpperCase():u.toLowerCase()),Ah=i=>{const r=av(i);return r.charAt(0).toUpperCase()+r.slice(1)},lp=(...i)=>i.filter((r,u,o)=>!!r&&r.trim()!==""&&o.indexOf(r)===u).join(" ").trim(),nv=i=>{for(const r in i)if(r.startsWith("aria-")||r==="role"||r==="title")return!0};/** + * @license lucide-react v0.546.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */var sv={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};/** + * @license lucide-react v0.546.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const iv=Y.forwardRef(({color:i="currentColor",size:r=24,strokeWidth:u=2,absoluteStrokeWidth:o,className:f="",children:m,iconNode:h,...x},v)=>Y.createElement("svg",{ref:v,...sv,width:r,height:r,stroke:i,strokeWidth:o?Number(u)*24/Number(r):u,className:lp("lucide",f),...!m&&!nv(x)&&{"aria-hidden":"true"},...x},[...h.map(([p,b])=>Y.createElement(p,b)),...Array.isArray(m)?m:[m]]));/** + * @license lucide-react v0.546.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const at=(i,r)=>{const u=Y.forwardRef(({className:o,...f},m)=>Y.createElement(iv,{ref:m,iconNode:r,className:lp(`lucide-${lv(Ah(i))}`,`lucide-${i}`,o),...f}));return u.displayName=Ah(i),u};/** + * @license lucide-react v0.546.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const cv=[["path",{d:"M7 7h10v10",key:"1tivn9"}],["path",{d:"M7 17 17 7",key:"1vkiza"}]],uc=at("arrow-up-right",cv);/** + * @license lucide-react v0.546.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const rv=[["path",{d:"M19 17h2c.6 0 1-.4 1-1v-3c0-.9-.7-1.7-1.5-1.9C18.7 10.6 16 10 16 10s-1.3-1.4-2.2-2.3c-.5-.4-1.1-.7-1.8-.7H5c-.6 0-1.1.4-1.4.9l-1.4 2.9A3.7 3.7 0 0 0 2 12v4c0 .6.4 1 1 1h2",key:"5owen"}],["circle",{cx:"7",cy:"17",r:"2",key:"u2ysq9"}],["path",{d:"M9 17h6",key:"r8uit2"}],["circle",{cx:"17",cy:"17",r:"2",key:"axvx0g"}]],uv=at("car",rv);/** + * @license lucide-react v0.546.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const ov=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],fv=at("check",ov);/** + * @license lucide-react v0.546.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const dv=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],oc=at("chevron-down",dv);/** + * @license lucide-react v0.546.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const mv=[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]],Ma=at("chevron-left",mv);/** + * @license lucide-react v0.546.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const hv=[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]],Oa=at("chevron-right",hv);/** + * @license lucide-react v0.546.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const pv=[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]],xv=at("copy",pv);/** + * @license lucide-react v0.546.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const gv=[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]],vv=at("external-link",gv);/** + * @license lucide-react v0.546.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const bv=[["rect",{width:"20",height:"20",x:"2",y:"2",rx:"5",ry:"5",key:"2e1cvw"}],["path",{d:"M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z",key:"9exkf1"}],["line",{x1:"17.5",x2:"17.51",y1:"6.5",y2:"6.5",key:"r4j83e"}]],yv=at("instagram",bv);/** + * @license lucide-react v0.546.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const jv=[["path",{d:"m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7",key:"132q7q"}],["rect",{x:"2",y:"4",width:"20",height:"16",rx:"2",key:"izxlao"}]],ap=at("mail",jv);/** + * @license lucide-react v0.546.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Nv=[["path",{d:"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0",key:"1r0f0z"}],["circle",{cx:"12",cy:"10",r:"3",key:"ilqhr7"}]],Rs=at("map-pin",Nv);/** + * @license lucide-react v0.546.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Sv=[["path",{d:"M4 5h16",key:"1tepv9"}],["path",{d:"M4 12h16",key:"1lakjw"}],["path",{d:"M4 19h16",key:"1djgab"}]],np=at("menu",Sv);/** + * @license lucide-react v0.546.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const zv=[["path",{d:"M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719",key:"1sd12s"}]],Fu=at("message-circle",zv);/** + * @license lucide-react v0.546.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ev=[["polygon",{points:"3 11 22 2 13 21 11 13 3 11",key:"1ltx0t"}]],Lu=at("navigation",Ev);/** + * @license lucide-react v0.546.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Av=[["path",{d:"M13.832 16.568a1 1 0 0 0 1.213-.303l.355-.465A2 2 0 0 1 17 15h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2A18 18 0 0 1 2 4a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-.8 1.6l-.468.351a1 1 0 0 0-.292 1.233 14 14 0 0 0 6.392 6.384",key:"9njp5v"}]],Jt=at("phone",Av);/** + * @license lucide-react v0.546.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Tv=[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]],_v=at("play",Tv);/** + * @license lucide-react v0.546.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const wv=[["path",{d:"M3 2v7c0 1.1.9 2 2 2h4a2 2 0 0 0 2-2V2",key:"cjf0a3"}],["path",{d:"M7 2v20",key:"1473qp"}],["path",{d:"M21 15V2a5 5 0 0 0-5 5v6c0 1.1.9 2 2 2h3Zm0 0v7",key:"j28e5"}]],Cv=at("utensils",wv);/** + * @license lucide-react v0.546.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Mv=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],sp=at("x",Mv);/** + * @license lucide-react v0.546.0 - ISC + * + * This source code is licensed under the ISC license. + * See the LICENSE file in the root directory of this source tree. + */const Ov=[["path",{d:"M2.5 17a24.12 24.12 0 0 1 0-10 2 2 0 0 1 1.4-1.4 49.56 49.56 0 0 1 16.2 0A2 2 0 0 1 21.5 7a24.12 24.12 0 0 1 0 10 2 2 0 0 1-1.4 1.4 49.55 49.55 0 0 1-16.2 0A2 2 0 0 1 2.5 17",key:"1q2vi4"}],["path",{d:"m10 15 5-3-5-3z",key:"1jp15x"}]],Dv=at("youtube",Ov),ip=Y.createContext(null);function kv({payload:i,children:r}){return n.jsx(ip.Provider,{value:i,children:r})}function F(){const i=Y.useContext(ip);if(!i)throw new Error("SiteProvider 밖에서 useSite() 를 불렀습니다. payload 없이는 렌더할 수 없습니다.");return i}const zs={LODGING:1,CAFE:2,RESTAURANT:3,CLINIC:4},Uy={OWNER:1,CRAWL:3},Th={UNVERIFIED:1,VERIFIED:3,CORRECTED:4},Uv=[Th.VERIFIED,Th.CORRECTED];function cp(i){return Uv.includes(i)}const $t={YANOLJA:1,GOODCHOICE:2,NAVER_PLACE:3,INSTAGRAM:4,OFFICIAL_SITE:5,BLOG:6,ETC:99},Ry={PUBLISHED:3};function fc(i){return i.filter(r=>cp(r.status)&&r.value!=null&&r.value!=="")}function rp(i){const r=new Map;for(const u of fc(i))r.set(u.key,u);return r}function _a(i,r){const u=rp(i).get(r);return(u==null?void 0:u.value)??void 0}function dl(i,r){const u=rp(i).get(r);if(!(u!=null&&u.value))return;const o=u.type==="number"?Rv(u.value):u.value;return u.unit?`${o}${u.unit}`:o}function Rv(i){const r=Number(i.replace(/,/g,""));return Number.isFinite(r)?r.toLocaleString("ko-KR"):i}function Iu(i){return i.type!=="bool"?i.label:i.label.replace(/\s*(가능|여부)$/,"")||i.label}function Hv(i){return i.filter(r=>cp(r.status)&&r.question&&r.answer).sort((r,u)=>r.sortOrder-u.sortOrder)}function Lv(i){return i.map(r=>({...r,facts:fc(r.facts)})).sort((r,u)=>r.sortOrder-u.sortOrder)}const qv={songs:"title",daily:"title",course:"name",schedule:"name",people:"name",chronicle:"title",literature:"workTitle",postcard:"line",quiz:"question",planner:"name",itinerary:"name",video:"url",event:"title"};function Bv(i){const r=(i??"").trim();if(!r)return;const u=/(?:youtube\.com\/(?:watch\?(?:.*&)?v=|shorts\/|embed\/|live\/)|youtu\.be\/)([A-Za-z0-9_-]{6,20})/.exec(r);return u==null?void 0:u[1]}function Yv(i){return/youtube\.com\/shorts\//.test((i??"").trim())}function Gv(i){return`https://i.ytimg.com/vi/${i}/hqdefault.jpg`}function Qv(i){return`https://www.youtube-nocookie.com/embed/${i}?autoplay=1&rel=0&modestbranding=1`}const nc={items:[],unverified:0,sourced:0};function Xv(i,r){var p,b;const u=y=>{const E=i.slice(0,Math.max(0,y)),T=E.split(` +`).length,N=y-E.lastIndexOf(` +`);return`${T}번째 줄 ${N}번째 글자`},o=(p=/Unexpected token '(.)'/.exec(r))==null?void 0:p[1],f=o==="}"||o==="]"?"닫는 괄호 바로 앞에 쉼표가 하나 더 있는지 보세요.":"그 앞의 쉼표·따옴표·괄호를 확인해 주세요.",m=/line (\d+) column (\d+)/.exec(r);if(m)return`${m[1]}번째 줄 ${m[2]}번째 글자에서 JSON 이 끊깁니다. ${f}`;const h=/position (\d+)/.exec(r);if(h)return`${u(Number(h[1]))}에서 JSON 이 끊깁니다. ${f}`;const x=(b=/\.\.\."([\s\S]*?)" is not valid JSON/.exec(r))==null?void 0:b[1],v=x?i.indexOf(x):-1;return v>=0?`${u(v+x.length)} 부근에서 JSON 이 끊깁니다. ${f}`:"JSON 이 아닙니다. ChatGPT 가 준 답에서 { 로 시작해 } 로 끝나는 부분만 붙여넣어 주세요."}function $v(i,r){const u=qv[i],o=(r??"").trim();if(!u||!o)return nc;let f;try{f=JSON.parse(o)}catch(y){return{...nc,error:Xv(o,y instanceof Error?y.message:"")}}if(typeof f!="object"||f===null||Array.isArray(f))return{...nc,error:"바깥이 { } 로 감싸인 JSON 이어야 합니다."};const m=f,h=typeof m.kind=="string"?m.kind:void 0,x=m.items;if(!Array.isArray(x))return{...nc,error:"items 배열이 없습니다. 프롬프트로 다시 만들어 주세요."};const v=x.filter(y=>typeof y=="object"&&y!==null&&!Array.isArray(y)&&typeof y[u]=="string"&&y[u].trim().length>0);let p=0,b=0;for(const y of v){const E=y;E.verified!=="확인"&&(p+=1),E.source&&typeof E.source=="object"&&(b+=1)}return{items:v,title:typeof m.title=="string"?m.title:void 0,subtitle:typeof m.subtitle=="string"?m.subtitle:void 0,linkUrl:typeof m.linkUrl=="string"&&/^https?:\/\//.test(m.linkUrl)?m.linkUrl:void 0,linkLabel:typeof m.linkLabel=="string"?m.linkLabel:void 0,kindMismatch:h&&h!==i?h:void 0,unverified:p,sourced:b}}const Vv=1260,Zv=60,Kv="10:00",wa=["봄","여름","가을","겨울"];function _h(i){const r=/^(\d{1,2}):(\d{2})$/.exec(i.trim());if(!r)return;const u=Number(r[1]),o=Number(r[2]);if(!(u>23||o>59))return u*60+o}function sc(i){const r=(i%1440+1440)%1440;return`${String(Math.floor(r/60)).padStart(2,"0")}:${String(r%60).padStart(2,"0")}`}function up(i){const r=_h(i.startTime??"")??_h(Kv)??600,u=[];let o=r,f=0;for(const m of i.stops??[]){const h=Math.max(0,m.moveMinutes??0),x=Math.max(1,m.minutes??Zv),v=o+h;if(v+x>Vv){f+=1;continue}u.push({stop:m,time:sc(v),until:sc(v+x),move:h}),o=v+x}return{stops:u,from:sc(r),to:sc(o),totalMinutes:o-r,dropped:f}}function Jv(i=new Date){const r=i.getMonth()+1,u=Math.floor((r-3+12)%12/3),o=wa[u];return r%3===0&&i.getDate()<=15?[wa[(u+3)%4],o]:[o]}function Wv(i,r){const u=i==null?void 0:i.trim();if(!u)return!0;const o=wa.filter(f=>u.includes(f));return o.length===0?!0:o.some(f=>r.includes(f))}function Fv(i){var u;const r=[];for(const o of i){const f=(u=o.season)==null?void 0:u.trim();f&&!r.includes(f)&&r.push(f)}return r.sort((o,f)=>{const m=wa.indexOf(o),h=wa.indexOf(f);return(m<0?wa.length:m)-(h<0?wa.length:h)})}function Iv(i,r){const u=r?i.filter(o=>{var f;return((f=o.season)==null?void 0:f.trim())===r}):[...i];return u.sort((o,f)=>(o.rank??Number.MAX_SAFE_INTEGER)-(f.rank??Number.MAX_SAFE_INTEGER)),u.slice(0,3)}const op={[zs.LODGING]:{type:"HotelRoom",path:"rooms",label:"객실"},[zs.CAFE]:{type:"MenuItem",path:"menu",label:"메뉴"},[zs.RESTAURANT]:{type:"MenuItem",path:"menu",label:"메뉴"},[zs.CLINIC]:{type:"Product",path:"programs",label:"시술"}};function dc(i){return fc(i.facts).filter(r=>r.scope==="place").map(r=>({label:Iu(r),value:Pu(r,i.facts)})).filter(r=>r.value!=="")}function Pu(i,r){const u=dl(r,i.key);return u?i.type!=="bool"?u:/여부$/.test(i.label)?u==="true"?"있음":u==="false"?"없음":u:u==="true"?"가능":u==="false"?"불가":u:""}const Pv=new Set(["weekday_price","weekend_price","peak_price","price_range"]);function ll(i){const r=op[i.place.category],u=new Map(i.media.map(o=>[o.mediaId,o]));return Lv(i.units).map(o=>{const f=dl(o.facts,"room_intro")??dl(o.facts,"description"),m=i.place.category===zs.LODGING?["standard_capacity","max_capacity","bed_type","room_size"]:["price","volume","origin"];return{unitId:o.unitId,slug:o.slug,name:o.name,intro:f,chips:m.map(h=>{var p;const x=dl(o.facts,h),v=((p=o.facts.find(b=>b.key===h))==null?void 0:p.label)??h;return x?{label:v,value:x}:null}).filter(h=>h!==null),rows:o.facts.filter(h=>!Pv.has(h.key)).map(h=>({label:Iu(h),value:Pu(h,o.facts)})).filter(h=>h.value!==""),images:o.mediaIds.map(h=>u.get(h)).filter(h=>{var x;return!!((x=h==null?void 0:h.alt)!=null&&x.trim())}),priceText:e0(o),prices:l0(o),href:`/${r.path}/${o.slug}`}})}function e0(i){var m,h;const r=dl(i.facts,"price_range");if(r)return r;const u=Number((m=dl(i.facts,"weekday_price"))==null?void 0:m.replace(/[^0-9]/g,"")),o=Number((h=dl(i.facts,"price"))==null?void 0:h.replace(/[^0-9]/g,"")),f=Number.isFinite(u)&&u>0?u:o;if(!(!Number.isFinite(f)||f<=0))return`${f.toLocaleString("ko-KR")}원부터`}const t0=[["weekday_price","주중"],["weekend_price","주말"],["peak_price","성수기"]];function l0(i){return dl(i.facts,"price_range")?[]:dl(i.facts,"weekday_price")?t0.map(([r,u])=>({label:u,value:dl(i.facts,r)??"문의"})):[]}function a0(i){const r=i??"";return/눈|설/.test(r)?"눈":/비|우|소나기/.test(r)?"비":/흐림|구름|안개|박무/.test(r)?"흐림":"맑음"}function n0(i){return i>=30?"혹서":i>=25?"더움":i>=20?"선선":i>=10?"쌀쌀":"추움"}function eo(i){return i.media.filter(r=>{var u;return((u=r.alt)==null?void 0:u.trim())&&!r.unitId})}function s0(i){return Hv(i.faqs)}function i0(i){return i.theme.sections.filter(r=>r.enabled)}function Kt(i,r){var u;return((u=i.theme.sections.find(o=>o.id===r))==null?void 0:u.enabled)??!1}function c0(i,r){var o;const u=(o=i.theme.sections.find(f=>f.id===r))==null?void 0:o.body;return(u==null?void 0:u.split(/\n\s*\n/).map(f=>f.trim()).filter(Boolean))??[]}function al(i,r){const u=i.theme.sections.find(o=>o.id===r);return $v(r,u==null?void 0:u.data)}function dt(i){return op[i.place.category]}function qe(i,r,u){var f,m;const o=(m=(f=i.theme.sections.find(h=>h.id===r))==null?void 0:f.name)==null?void 0:m.trim();return o||u}function Hs(i,r){const u=new Map(fc(i.facts).filter(o=>o.scope==="place").map(o=>[o.key,o]));return r.map(o=>u.get(o)).filter(o=>o!==void 0).map(o=>({label:Iu(o),value:Pu(o,i.facts)})).filter(o=>o.value!=="")}function ic(i,r){return Hs(i,[r])[0]}const r0=["reservation_required","reservation_channel"];function u0(i){return Hs(i,r0)}const o0=["seat_count","terrace","room_available","group_seat_max","power_outlet","study_allowed","wheelchair_accessible"];function f0(i){return Hs(i,o0)}const d0=["operating_hours","session_times","closed_days","age_limit","guide_language"];function m0(i){return Hs(i,d0)}const h0=["check_in_time","check_out_time","operating_hours","closed_days","parking","reservation_required"];function Da(i){return Hs(i,h0).slice(0,4)}function Sn(i){const r=ll(i).map(o=>o.priceText).filter(o=>!!o);if(r.length===0)return;const u=o=>Number(o.replace(/[^0-9]/g,""))||Number.MAX_SAFE_INTEGER;return r.reduce((o,f)=>u(f)u.confirmed&&r.includes(u.channel))}function et(i){return dp(i,p0)}function Ls(i){return dp(i,x0)}function g0(){var o;const i=F(),r=dt(i),u=[{label:"소개",href:"#about",show:Kt(i,"intro")},{label:r.label,href:"#units",show:i.units.length>0},{label:"이용 정보",href:"#info",show:!0},{label:"축제",href:"#festival",show:(((o=i.local.festivals)==null?void 0:o.length)??0)>0},{label:"주변 정보",href:"#guide",show:Kt(i,"local")},{label:"오시는 길",href:"#location",show:!0},{label:"FAQ",href:"#faq",show:i.faqs.length>0}].filter(f=>f.show);return n.jsx("header",{className:"border-line safe-t sticky top-0 z-40 w-full border-b backdrop-blur-md",style:{backgroundColor:"color-mix(in srgb, var(--tpl-surface, #fff) 88%, transparent)"},children:n.jsxs("div",{className:"shell flex h-16 items-center justify-between gap-3",children:[n.jsxs("a",{href:"#top",className:"flex min-w-0 items-center gap-2.5",children:[n.jsx("span",{className:"serif flex size-8 shrink-0 items-center justify-center rounded-md text-[length:var(--fs-sm)]",style:{backgroundColor:"var(--color-brand)",color:"var(--tpl-bg, #fff)",fontWeight:"var(--tpl-heading-weight, 700)"},"aria-hidden":!0,children:i.place.name.slice(0,1)}),n.jsxs("span",{className:"flex min-w-0 flex-col",children:[n.jsx("span",{className:"serif truncate text-[length:var(--fs-lead)] leading-tight",style:{fontWeight:"var(--tpl-heading-weight, 700)"},children:i.place.name}),i.place.englishName&&n.jsx("span",{className:"text-muted truncate text-[10px] uppercase leading-tight tracking-[0.14em]",children:i.place.englishName})]})]}),n.jsx("nav",{"aria-label":"주요 메뉴",className:"hidden items-center gap-7 lg:flex",children:u.map(f=>n.jsx("a",{href:f.href,className:"text-muted py-1 text-[length:var(--fs-sm)] font-medium transition-colors hover:text-current",children:f.label},f.label))}),n.jsxs("div",{className:"flex shrink-0 items-center gap-1.5",children:[i.place.phone&&n.jsxs("a",{href:`tel:${i.place.phone}`,className:"tap inline-flex items-center gap-1.5 rounded-lg px-3 text-[length:var(--fs-xs)] font-bold transition-opacity hover:opacity-90",style:{backgroundColor:"var(--color-brand)",color:"var(--tpl-bg, #fff)"},children:[n.jsx(Jt,{className:"size-4"}),n.jsx("span",{className:"hidden sm:inline",children:i.place.phone}),n.jsx("span",{className:"sr-only sm:hidden",children:"전화"})]}),n.jsxs("details",{className:"relative lg:hidden",children:[n.jsx("summary",{className:"tap flex cursor-pointer items-center justify-center rounded-lg marker:content-none [&::-webkit-details-marker]:hidden","aria-label":"메뉴 열기",children:n.jsx(np,{className:"size-5"})}),n.jsx("nav",{"aria-label":"전체 메뉴",className:"border-line tpl-border absolute right-0 top-[calc(100%+0.5rem)] z-50 w-52 overflow-hidden rounded-xl border shadow-lg",style:{backgroundColor:"var(--tpl-surface, #fff)"},children:n.jsx("ul",{className:"divide-line divide-y",children:u.map(f=>n.jsx("li",{children:n.jsx("a",{href:f.href,className:"tap flex items-center px-4 text-[length:var(--fs-sm)] font-medium",children:f.label})},f.label))})})]})]})]})})}function mc(i){return i.media.find(r=>{var u;return r.isPrimary&&((u=r.alt)==null?void 0:u.trim())})??i.media.find(r=>{var u;return(u=r.alt)==null?void 0:u.trim()})}function v0(i){return b0(i).join(" ")}function b0(i){const{place:r,facts:u}=i,o=[],f=r.addressLocality??r.addressRegion??r.roadAddress??r.address;o.push(f?`${f}에 있는 ${r.name}입니다.`:`${r.name}입니다.`);const m=_a(u,"check_in_time"),h=_a(u,"check_out_time");m&&h&&o.push(`체크인 ${m}, 체크아웃 ${h}.`);const x=_a(u,"business_hours")??_a(u,"open_hours");x&&o.push(`영업시간 ${x}.`);const v=_a(u,"pet_allowed");if(v==="false"&&o.push("반려동물 동반 불가."),v==="true"&&o.push("반려동물 동반 가능."),_a(u,"parking")==="true"){const b=_a(u,"parking_capacity");o.push(b?`주차 ${b}대 가능.`:"주차 가능.")}return r.phone&&o.push(`문의 ${r.phone}.`),o}const y0=6e3,j0=5;function N0(){const i=F(),{place:r,narrative:u}=i,o=Da(i),f=Sn(i),m=et(i),h=r.addressLocality??r.addressRegion,x=[...i.media].filter(N=>{var _;return(_=N.alt)==null?void 0:_.trim()}).sort((N,_)=>Number(_.isPrimary)-Number(N.isPrimary)).slice(0,j0),[v,p]=Y.useState(0),[b,y]=Y.useState(!1),E=Y.useRef(null),T=Y.useCallback(N=>p(_=>(_+N+x.length)%x.length),[x.length]);return Y.useEffect(()=>{if(b||x.length<2)return;const N=setInterval(()=>T(1),y0);return()=>clearInterval(N)},[b,T,x.length]),n.jsxs("section",{id:"top",className:"w-full",children:[n.jsxs("div",{className:"relative w-full overflow-hidden",style:{backgroundColor:"var(--tpl-inverse, #1c1917)",color:"var(--tpl-bg, #ffffff)",height:"clamp(24rem, 76vh, 42rem)"},onMouseEnter:()=>y(!0),onMouseLeave:()=>y(!1),onFocusCapture:()=>y(!0),onBlurCapture:()=>y(!1),onTouchStart:N=>{E.current=N.touches[0].clientX},onTouchEnd:N=>{const _=E.current;if(E.current=null,_===null)return;const U=N.changedTouches[0].clientX-_;Math.abs(U)>40&&T(U<0?1:-1)},children:[x.map((N,_)=>n.jsx("img",{src:N.url,alt:N.alt,fetchPriority:_===0?"high":"low",loading:_===0?void 0:"lazy",decoding:"async",className:"absolute inset-0 size-full object-cover object-center transition-opacity duration-700",style:{opacity:_===v?1:0}},N.mediaId)),n.jsx("div",{className:"pointer-events-none absolute inset-0",style:{background:"linear-gradient(to bottom, color-mix(in srgb, var(--tpl-inverse, #1c1917) 34%, transparent) 0%, color-mix(in srgb, var(--tpl-inverse, #1c1917) 16%, transparent) 45%, color-mix(in srgb, var(--tpl-inverse, #1c1917) 60%, transparent) 100%)"}}),n.jsxs("div",{className:"pointer-events-none absolute inset-0 flex flex-col items-center justify-center px-6 text-center",children:[h&&n.jsx("p",{className:"label opacity-85",children:h}),n.jsx("h1",{className:"serif mt-2",style:{fontSize:"var(--fs-display)",fontWeight:"var(--tpl-heading-weight, 700)",lineHeight:1.15},children:r.name}),(u.tagline??u.heroSubline)&&n.jsx("p",{className:"measure mt-3 text-[length:var(--fs-lead)] leading-relaxed opacity-90",children:u.tagline??u.heroSubline})]}),x.length>1&&n.jsxs(n.Fragment,{children:[n.jsx(wh,{dir:"prev",onClick:()=>T(-1)}),n.jsx(wh,{dir:"next",onClick:()=>T(1)}),n.jsx("ul",{className:"absolute inset-x-0 bottom-5 flex items-center justify-center gap-2",children:x.map((N,_)=>n.jsx("li",{children:n.jsx("button",{type:"button",onClick:()=>p(_),"aria-label":`${_+1}번째 사진`,"aria-current":_===v,className:`h-1.5 rounded-full bg-current transition-all ${_===v?"w-7 opacity-90":"w-1.5 opacity-45 hover:opacity-70"}`})},N.mediaId))})]})]}),(f||o.length>0||m.length>0||r.phone)&&n.jsx("div",{className:"border-line paper w-full border-b",style:{backgroundColor:"var(--tpl-surface-alt, #f5f5f4)"},children:n.jsxs("div",{className:"shell flex flex-col items-center gap-4 py-4 lg:flex-row lg:justify-between lg:gap-8",children:[n.jsxs("dl",{className:"divide-line flex flex-wrap justify-center gap-y-2 sm:divide-x",children:[f&&n.jsxs("div",{className:"px-5 text-center sm:first:pl-0",children:[n.jsx("dt",{className:"label",children:"1박 최저가"}),n.jsx("dd",{className:"text-[length:var(--fs-lead)] font-bold tabular-nums",children:f})]}),o.map(N=>n.jsxs("div",{className:"px-5 text-center",children:[n.jsx("dt",{className:"label",children:N.label}),n.jsx("dd",{className:"text-[length:var(--fs-lead)] font-bold",children:N.value})]},N.label))]}),n.jsxs("div",{className:"flex shrink-0 gap-2",children:[r.phone&&n.jsxs("a",{href:`tel:${r.phone}`,className:"tap border-line tpl-border inline-flex items-center gap-1.5 rounded-lg border px-4 text-[length:var(--fs-sm)] font-semibold",children:[n.jsx(Jt,{className:"size-4"}),n.jsx("span",{children:r.phone})]}),m.length>0&&n.jsxs("a",{href:m[0].url,target:"_blank",rel:"noopener noreferrer",className:"tap inline-flex items-center justify-center rounded-lg px-6 text-[length:var(--fs-sm)] font-bold transition-opacity hover:opacity-90",style:{backgroundColor:"var(--color-brand)",color:"var(--tpl-bg, #fff)"},children:[Pe(m[0])," 예약"]})]})]})})]})}function wh({dir:i,onClick:r}){const u=i==="prev"?Ma:Oa;return n.jsx("button",{type:"button",onClick:r,"aria-label":i==="prev"?"이전 사진":"다음 사진",className:`tap absolute top-1/2 hidden -translate-y-1/2 items-center justify-center rounded-full bg-current/15 px-3 backdrop-blur-sm transition-colors hover:bg-current/25 sm:inline-flex ${i==="prev"?"left-4":"right-4"}`,children:n.jsx(u,{className:"size-5"})})}function S0(){const i=F(),{place:r,narrative:u}=i,o=Da(i).slice(0,3),f=Sn(i),m=et(i),h=ic(i,"extra_person_fee"),x=[...i.media].filter(p=>{var b;return(b=p.alt)==null?void 0:b.trim()}).sort((p,b)=>Number(b.isPrimary)-Number(p.isPrimary))[0],v=r.addressLocality??r.addressRegion;return n.jsx("section",{id:"top",className:"border-line w-full border-b",children:n.jsxs("div",{className:"grid lg:grid-cols-2",children:[n.jsx("div",{className:"relative order-1 min-h-[16rem] lg:order-none lg:min-h-[34rem]",children:x&&n.jsx("img",{src:x.url,alt:x.alt,fetchPriority:"high",decoding:"async",className:"absolute inset-0 size-full object-cover"})}),n.jsxs("div",{className:"order-2 flex flex-col justify-center gap-6 px-6 py-10 sm:px-10 lg:order-none lg:px-14 lg:py-16",style:{backgroundColor:"var(--tpl-surface-alt, #f5f5f4)"},children:[n.jsxs("div",{children:[v&&n.jsx("p",{className:"label",children:v}),n.jsx("h1",{className:"serif mt-2",style:{fontSize:"var(--fs-display)",fontWeight:"var(--tpl-heading-weight, 700)",lineHeight:1.15},children:r.name}),n.jsx("p",{className:"measure mt-3 text-[length:var(--fs-lead)] leading-relaxed opacity-80",children:u.tagline??u.heroSubline??u.summary})]}),n.jsxs("div",{className:"panel p-5 sm:p-6",children:[f&&n.jsxs("p",{className:"flex items-baseline gap-2",children:[n.jsx("span",{className:"text-[length:var(--fs-h3)] font-bold tabular-nums",children:f}),n.jsx("span",{className:"text-muted text-[length:var(--fs-xs)]",children:"1박 기준"})]}),o.length>0&&n.jsxs("dl",{className:"divide-line mt-4 divide-y border-t pt-1",children:[o.map(p=>n.jsxs("div",{className:"flex items-baseline justify-between gap-4 py-2 text-[length:var(--fs-sm)]",children:[n.jsx("dt",{className:"text-muted",children:p.label}),n.jsx("dd",{className:"font-semibold",children:p.value})]},p.label)),h&&n.jsxs("div",{className:"flex items-baseline justify-between gap-4 py-2 text-[length:var(--fs-sm)]",children:[n.jsx("dt",{className:"text-muted",children:h.label}),n.jsx("dd",{className:"font-semibold tabular-nums",children:h.value})]})]}),n.jsxs("div",{className:"mt-5 flex flex-col gap-2 sm:flex-row",children:[m.length>0&&n.jsxs("a",{href:m[0].url,target:"_blank",rel:"noopener noreferrer",className:"tap flex flex-1 items-center justify-center rounded-lg px-6 text-[length:var(--fs-sm)] font-bold transition-opacity hover:opacity-90",style:{backgroundColor:"var(--color-brand)",color:"var(--tpl-bg, #fff)"},children:[Pe(m[0])," 예약"]}),r.phone&&n.jsxs("a",{href:`tel:${r.phone}`,className:"tap border-line tpl-border flex items-center justify-center gap-1.5 rounded-lg border px-5 text-[length:var(--fs-sm)] font-semibold",children:[n.jsx(Jt,{className:"size-4"}),n.jsx("span",{children:r.phone})]})]})]})]})]})})}const z0={"stay-reservation":"reservation","stay-oasi":"oasi","stay-studio":"studio","stay-pastel":"pastel","stay-editorial":"editorial"};function mp(i){return z0[i??""]??"default"}function hc(){return mp(F().theme.templateId)}const cc=5,$u=1.8,E0=3;function A0(i){const r=i*cc,u=f=>`${(f/r*100).toFixed(3)}%`;return`${i<2?"":` +.stay2-hero-slide { animation: stay2-hero-fade ${r}s ease-in-out infinite; } +@keyframes stay2-hero-fade { + 0% { opacity: 1; } + ${u(cc)} { opacity: 1; } + ${u(cc+$u)} { opacity: 0; } + ${u(r-$u)} { opacity: 0; } + 100% { opacity: 1; } +}`} +.stay2-hero-focus { animation: stay2-hero-focus 1.6s cubic-bezier(0.16, 1, 0.3, 1) both; } +@keyframes stay2-hero-focus { + 0% { opacity: 0; filter: blur(0.22em); } + 40% { opacity: 1; } + 100% { opacity: 1; filter: blur(0); } +} +@media (prefers-reduced-motion: reduce) { + .stay2-hero-slide, .stay2-hero-focus { animation: none; } +} +`}function T0(i,r){return((r-i)%r*cc+$u).toFixed(1)}function _0(){const i=F(),{place:r,narrative:u}=i,o=dt(i),f=et(i)[0],m=u.tagline??u.heroSubline,h=[...i.media].filter(p=>{var b;return(b=p.alt)==null?void 0:b.trim()}).sort((p,b)=>Number(b.isPrimary)-Number(p.isPrimary)),x=h.length<2?0:Math.min(h.length,E0),v=f?{href:f.url,label:`${Pe(f)}에서 예약`,external:!0}:r.phone?{href:`tel:${r.phone}`,label:`${r.phone} 예약 문의`,external:!1}:i.units.length>0?{href:"#units",label:`${o.label} 보기`,external:!1}:null;return n.jsxs("section",{id:"top",className:"w-full",children:[n.jsx("style",{dangerouslySetInnerHTML:{__html:A0(x)}}),n.jsxs("div",{className:"relative flex w-full items-center justify-center overflow-hidden",style:{backgroundColor:"var(--tpl-inverse, #1c1917)",color:"var(--tpl-bg, #ffffff)",height:"100svh"},children:[h.map((p,b)=>n.jsx("img",{src:p.url,alt:p.alt,fetchPriority:b===0?"high":b0?h:dc(i).slice(0,4),v=(o==null?void 0:o.caption)??r.name;return n.jsxs("section",{id:"top","data-oasi":!0,"aria-labelledby":"top-heading",className:"pt-12 lg:pt-16",children:[n.jsx("h1",{id:"top-heading",className:"text-[length:var(--fs-sm)] font-normal tracking-[0.08em] leading-[1.9]",children:r.name}),u.heroHeadline&&n.jsx("p",{className:"text-muted measure mt-3 text-[length:var(--fs-xs)] leading-[1.9]",children:u.heroHeadline}),o&&n.jsxs("figure",{className:"relative mx-auto mt-10 w-full max-w-[34rem]",children:[n.jsx("img",{src:o.url,alt:o.alt,fetchPriority:"high",decoding:"async",width:o.width,height:o.height,className:"block h-[clamp(17rem,27vw,24rem)] w-full object-cover"}),n.jsx("figcaption",{className:"text-muted absolute left-full top-0 ml-5 hidden max-h-full overflow-hidden text-ellipsis whitespace-nowrap text-[length:var(--fs-xs)] tracking-[0.14em] xl:block",style:{writingMode:"vertical-rl"},children:v})]}),(f||x.length>0)&&n.jsxs("dl",{className:"border-line mt-10 flex flex-wrap gap-x-10 gap-y-4 border-t pt-5 text-[length:var(--fs-xs)] leading-[1.9]",children:[f&&n.jsxs("div",{children:[n.jsx("dt",{className:"text-muted",children:"최저가"}),n.jsx("dd",{children:f})]}),x.map(p=>n.jsxs("div",{children:[n.jsx("dt",{className:"text-muted",children:p.label}),n.jsx("dd",{children:p.value})]},p.label))]}),m.length>0&&n.jsx("ul",{className:"mt-6 flex flex-wrap items-center gap-x-8",children:m.map(p=>n.jsx("li",{children:n.jsxs("a",{href:p.url,target:"_blank",rel:"noopener noreferrer",className:"tap inline-flex items-center text-[length:var(--fs-sm)] underline underline-offset-[6px]",style:{color:"var(--color-brand)"},children:[Pe(p)," 예약"]})},p.url))})]})}function C0(){const i=F(),r=eo(i),u=mc(i),o=u&&r.some(f=>f.mediaId===u.mediaId)?[u,...r.filter(f=>f.mediaId!==u.mediaId)]:r;return o.length===0?null:n.jsx("section",{id:"top","aria-label":`${i.place.name} 사진`,className:"w-full",children:n.jsx("div",{className:"columns-1 gap-2 sm:columns-2",children:o.map((f,m)=>n.jsx("figure",{className:"mb-2 break-inside-avoid",children:n.jsx("img",{src:f.url,alt:f.alt,loading:m===0?"eager":"lazy",fetchPriority:m===0?"high":void 0,decoding:"async",width:f.width,height:f.height,className:"block h-auto w-full"})},f.mediaId))})})}function M0(){const i=F(),{place:r,narrative:u}=i,o=Da(i),f=Sn(i),m=et(i),h=u.tagline??u.summary,x=r.addressLocality??r.addressRegion,v=[...i.media].filter(p=>{var b;return(b=p.alt)==null?void 0:b.trim()}).sort((p,b)=>Number(b.isPrimary)-Number(p.isPrimary)).slice(0,3);return n.jsxs("section",{id:"top","data-pastel":"own",className:"w-full",children:[n.jsxs("div",{className:"relative w-full overflow-hidden",style:{backgroundColor:"var(--pastel-1)"},children:[n.jsxs("div",{"aria-hidden":!0,className:"pointer-events-none absolute inset-0",children:[n.jsx("span",{className:"absolute rounded-full",style:{width:"clamp(12rem, 26vw, 22rem)",aspectRatio:"1",backgroundColor:"var(--pastel-2)",right:"-6%",top:"-6%",opacity:.75}}),n.jsx("span",{className:"absolute rounded-full",style:{width:"clamp(8rem, 18vw, 15rem)",aspectRatio:"1",backgroundColor:"var(--pastel-3)",left:"46%",bottom:"-10%",opacity:.7}})]}),n.jsxs("div",{className:"shell relative grid items-center gap-8 lg:grid-cols-2 lg:gap-14",style:{paddingBlock:"var(--section-space)"},children:[n.jsxs("div",{className:"order-2 lg:order-1",children:[x&&n.jsx("p",{className:"inline-flex items-center rounded-full px-3 py-1 text-[length:var(--fs-xs)] font-extrabold",style:{backgroundColor:"var(--tpl-bg, #fff)",color:"var(--pastel-ink)"},children:x}),n.jsx("h1",{className:"mt-4 break-keep",style:{fontSize:"var(--fs-display)",fontWeight:800,lineHeight:1.2,letterSpacing:"var(--tpl-heading-tracking, -0.03em)"},children:r.name}),h&&n.jsx("p",{className:"measure mt-4 text-[length:var(--fs-lead)] font-medium leading-relaxed opacity-80",children:h}),m.length>0&&n.jsxs("a",{href:m[0].url,target:"_blank",rel:"noopener noreferrer",className:"tap mt-7 inline-flex items-center justify-center rounded-full px-8 text-[length:var(--fs-sm)] font-extrabold transition-opacity hover:opacity-90",style:{backgroundColor:"var(--pastel-ink)",color:"var(--tpl-bg, #fff)"},children:[Pe(m[0]),"로 예약"]})]}),n.jsxs("div",{className:"order-1 lg:order-2",children:[v[0]&&n.jsx("div",{className:"relative w-full overflow-hidden",style:{aspectRatio:"1 / 1",borderRadius:"calc(var(--tpl-radius, 24px) * 1.6)",boxShadow:"0 0 0 clamp(6px, 1.4vw, 12px) var(--tpl-bg, #fff)"},children:n.jsx("img",{src:v[0].url,alt:v[0].alt,fetchPriority:"high",decoding:"async",className:"size-full object-cover"})}),v.length>1&&n.jsx("ul",{className:"mt-3 grid grid-cols-2 gap-3",children:v.slice(1).map(p=>n.jsx("li",{className:"relative overflow-hidden",style:{aspectRatio:"4 / 3",borderRadius:"var(--tpl-radius, 24px)",boxShadow:"0 0 0 clamp(4px, 1vw, 8px) var(--tpl-bg, #fff)"},children:n.jsx("img",{src:p.url,alt:p.alt,loading:"lazy",decoding:"async",className:"size-full object-cover"})},p.mediaId))})]})]})]}),(f||o.length>0)&&n.jsx("div",{className:"w-full",style:{backgroundColor:"var(--pastel-2)"},children:n.jsxs("dl",{className:"shell flex flex-wrap items-center justify-center gap-x-12 gap-y-5 py-8 text-center",children:[f&&n.jsxs("div",{children:[n.jsx("dt",{className:"text-[length:var(--fs-xs)] font-extrabold",style:{color:"var(--tpl-bg, #fff)",opacity:.85},children:"최저가"}),n.jsx("dd",{className:"mt-1 font-extrabold tabular-nums",style:{fontSize:"var(--fs-h3)",color:"var(--tpl-bg, #fff)"},children:f})]}),o.map(p=>n.jsxs("div",{children:[n.jsx("dt",{className:"text-[length:var(--fs-xs)] font-extrabold",style:{color:"var(--tpl-bg, #fff)",opacity:.85},children:p.label}),n.jsx("dd",{className:"mt-1 font-extrabold",style:{fontSize:"var(--fs-h3)",color:"var(--tpl-bg, #fff)"},children:p.value})]},p.label))]})})]})}const Ms="repeating-linear-gradient(90deg, color-mix(in oklab, currentColor 3%, transparent) 0 1px, transparent 1px 6px),repeating-linear-gradient(0deg, color-mix(in oklab, currentColor 2%, transparent) 0 1px, transparent 1px 6px)",O0={intro:"about",info:"info",rooms:"units",menu:"units",programs:"units",pricing:"pricing",booking:"booking",space:"space",inquiry:"inquiry",exhibition:"exhibition",photos:"gallery",local:"guide",weather:"weather",map:"location",faq:"faq",songs:"songs",daily:"daily",chronicle:"chronicle",people:"people",quiz:"quiz",postcard:"postcard",video:"video",itinerary:"itinerary"},D0={about:"소개",info:"이용 정보",pricing:"요금",booking:"예약 안내",space:"공간",inquiry:"문의",exhibition:"관람 안내",gallery:"사진",guide:"주변",weather:"날씨",location:"오시는 길",faq:"자주 묻는 질문",songs:"노래",daily:"일력",chronicle:"연표",people:"인물",quiz:"퀴즈",postcard:"엽서",video:"영상",itinerary:"일정"};function Ch(i){return String(i).padStart(2,"0")}function hp(){var f;const i=F(),r=dt(i),u=new Set,o=[];for(const m of i0(i)){const h=O0[m.id];if(!h||u.has(h)||h==="units"&&i.units.length===0)continue;u.add(h);const x=(f=m.name)==null?void 0:f.trim();o.push({no:Ch(o.length+1),label:x||D0[h]||r.label,anchor:h})}return u.has("location")||o.push({no:Ch(o.length+1),label:"오시는 길",anchor:"location"}),o}function to({id:i,title:r,lead:u,aside:o}){var m;const f=(m=hp().find(h=>h.anchor===i))==null?void 0:m.no;return n.jsxs("header",{className:"mb-7 sm:mb-10",children:[n.jsx("div",{"aria-hidden":!0,className:"mb-5 h-0.5 w-full bg-current opacity-75"}),n.jsxs("div",{className:"flex flex-col gap-4 lg:flex-row lg:items-end lg:justify-between lg:gap-10",children:[n.jsxs("div",{className:"relative min-w-0 flex-1",children:[f&&n.jsx("span",{"aria-hidden":!0,className:"serif pointer-events-none absolute left-0 top-1/2 -translate-y-1/2 select-none leading-none tabular-nums",style:{fontSize:"clamp(2.5rem, 7vw, 5rem)",fontWeight:800,opacity:.12},children:f}),n.jsx("h2",{id:`${i}-heading`,className:"h2 relative pl-9 sm:pl-14 xl:pl-20",style:{fontWeight:800},children:r}),u&&n.jsx("p",{className:"text-muted measure relative mt-2 pl-9 font-serif text-[length:var(--fs-sm)] leading-relaxed sm:pl-14 xl:pl-20",children:u})]}),o&&n.jsx("div",{className:"shrink-0",children:o})]})]})}function k0(){const i=F(),{place:r,narrative:u}=i,o=mc(i),f=dt(i),m=ll(i),h=Da(i),x=Sn(i),v=et(i)[0],p=Ls(i)[0],b=u.tagline??u.heroSubline,E=[r.addressSubLocality??r.addressLocality??r.addressRegion,m.length>0?`${f.label} ${m.length}개`:void 0,x].filter(T=>!!T);return n.jsx("section",{id:"top",className:"relative w-full",style:{backgroundImage:Ms},children:n.jsxs("div",{className:"grid grid-cols-12",children:[o&&n.jsx("div",{className:"relative col-span-12 xl:col-span-8 xl:col-start-5 xl:row-start-1",style:{minHeight:"clamp(15rem, 52vh, 34rem)",backgroundColor:"var(--tpl-inverse)"},children:n.jsx("img",{src:o.url,alt:o.alt,fetchPriority:"high",decoding:"async",width:o.width,height:o.height,className:"absolute inset-0 size-full object-cover"})}),n.jsx("div",{className:"z-10 col-span-12 xl:col-start-1 xl:row-start-1 xl:mb-12 xl:mr-16 xl:self-end",style:{backgroundColor:"color-mix(in srgb, var(--tpl-inverse) 88%, transparent)",color:"var(--tpl-bg)"},children:n.jsx("h1",{className:"serif px-4 py-5 sm:px-6 xl:py-8 xl:pl-10 xl:pr-16",style:{fontSize:"clamp(2.25rem, 7.5vw, 5.5rem)",fontWeight:800,lineHeight:.98,letterSpacing:"-0.035em"},children:r.name})}),n.jsxs("div",{className:"col-span-12 flex flex-col gap-5 px-4 py-8 sm:px-6 xl:col-span-4 xl:col-start-1 xl:row-start-1 xl:py-12 xl:pb-56 xl:pl-10 xl:pr-8",children:[b&&n.jsx("p",{className:"measure font-serif text-[length:var(--fs-lead)] leading-relaxed",children:b}),E.length>0&&n.jsx("p",{className:"text-[length:var(--fs-sm)] font-semibold tabular-nums",children:E.join(" · ")}),(v||r.phone||p)&&n.jsxs("div",{className:"flex flex-wrap items-center gap-x-6 gap-y-1 text-[length:var(--fs-sm)] font-bold",children:[v&&n.jsxs("a",{href:v.url,target:"_blank",rel:"noopener noreferrer",className:"tap inline-flex items-center underline underline-offset-4",children:[Pe(v)," 예약"]}),r.phone&&n.jsx("a",{href:`tel:${r.phone}`,className:"tap inline-flex items-center underline underline-offset-4",children:r.phone}),p&&n.jsxs("a",{href:p.url,target:"_blank",rel:"noopener noreferrer",className:"tap inline-flex items-center underline underline-offset-4",children:[Rl(p)," 문의"]})]}),h.length>0&&n.jsx("dl",{className:"mt-1",children:h.map(T=>n.jsxs("div",{className:"border-line flex items-baseline justify-between gap-4 border-t py-2 text-[length:var(--fs-sm)]",children:[n.jsx("dt",{className:"text-muted shrink-0",children:T.label}),n.jsx("dd",{className:"text-right font-semibold",children:T.value})]},T.label))})]})]})})}function U0(){var v;const i=F(),r=hc();if(r==="reservation")return n.jsx(_0,{});if(r==="oasi")return n.jsx(w0,{});if(r==="studio")return n.jsx(C0,{});if(r==="pastel")return n.jsx(M0,{});if(r==="editorial")return n.jsx(k0,{});const u=(v=i.theme.sections.find(p=>p.id==="hero"))==null?void 0:v.variantId;if(u==="hero.slideshow")return n.jsx(N0,{});if(u==="hero.split")return n.jsx(S0,{});const{place:o,narrative:f}=i,m=mc(i),h=dt(i);et(i);const x=o.addressLocality??o.addressRegion;return n.jsx("section",{id:"top",className:"w-full",children:n.jsxs("div",{className:"relative flex w-full items-end overflow-hidden",style:{backgroundColor:"var(--tpl-inverse, #1c1917)",color:"var(--tpl-bg, #ffffff)",minHeight:"clamp(24rem, 62vh, 36rem)"},children:[m&&n.jsxs("div",{className:"absolute inset-0 z-0",children:[n.jsx("img",{src:m.url,alt:m.alt,fetchPriority:"high",decoding:"async",width:m.width,height:m.height,className:"size-full object-cover object-center"}),n.jsx("div",{className:"absolute inset-0",style:{background:"linear-gradient(to top, color-mix(in srgb, var(--tpl-inverse, #1c1917) 88%, transparent) 0%, color-mix(in srgb, var(--tpl-inverse, #1c1917) 45%, transparent) 34%, transparent 66%)"}})]}),n.jsxs("div",{className:"shell relative z-10 pb-10 pt-24 sm:pb-12",children:[x&&n.jsxs("p",{className:"mb-3 inline-flex items-center gap-1 text-[length:var(--fs-xs)] opacity-80",children:[n.jsx(Rs,{className:"size-3.5"}),n.jsx("span",{children:x})]}),n.jsx("h1",{className:"serif",style:{fontSize:"var(--fs-display)",fontWeight:"var(--tpl-heading-weight, 700)",lineHeight:1.15},children:o.name}),(f.tagline??f.heroSubline??f.summary)&&n.jsx("p",{className:"measure mt-3 text-[length:var(--fs-lead)] leading-relaxed opacity-85",children:f.tagline??f.heroSubline??f.summary}),i.units.length>0&&n.jsxs("a",{href:"#units",className:"mt-6 inline-flex items-center gap-1 text-[length:var(--fs-sm)] font-medium underline-offset-4 opacity-80 transition-opacity hover:opacity-100",children:[n.jsxs("span",{children:[h.label," 보기"]}),n.jsx(oc,{className:"size-4"})]})]})]})})}function lo(i){if(!i)return"";const r=new Date(i);return Number.isNaN(r.getTime())?"":`${r.getFullYear()}년 ${r.getMonth()+1}월 ${r.getDate()}일`}function qs(i){if(!i)return"";const r=new Date(i);return Number.isNaN(r.getTime())?"":r.toLocaleDateString("sv-SE",{timeZone:"Asia/Seoul"})}function Vu(i){return`https://search.naver.com/search.naver?query=${encodeURIComponent(i)}`}function R0(i){return`https://www.youtube.com/results?search_query=${encodeURIComponent(i)}`}function ao(i){return i.replace(/,/g," ").replace(/\s+/g," ").trim()}function H0(i,r,u){return r==null||u==null?`https://map.kakao.com/link/search/${encodeURIComponent(i)}`:`https://map.kakao.com/link/to/${encodeURIComponent(ao(i))},${r},${u}`}function L0(i,r){const u=o=>`${o.lng},${o.lat},${encodeURIComponent(ao(o.name))}`;return`https://map.naver.com/p/directions/${u(i)}/${u(r)}/-/car`}function pp(i,r,u){return r==null||u==null?`https://map.naver.com/p/search/${encodeURIComponent(i)}`:`https://map.naver.com/p/directions/-/${u},${r},${encodeURIComponent(ao(i))}/-/transit`}function q0(i,r,u=16/9,o=.0022){const f=Math.max(Math.cos(i*Math.PI/180),.01),m=u*o/f;return`https://www.openstreetmap.org/export/embed.html?bbox=${[r-m,i-o,r+m,i+o].map(x=>x.toFixed(6)).join(",")}&layer=mapnik&marker=${i},${r}`}function B0(i,r,u){if(r==null||u==null)return;const o=encodeURIComponent(i);return`tmap://route?goalname=${o}&goalx=${u}&goaly=${r}&rGoName=${o}&rGoX=${u}&rGoY=${r}`}function Mh(){const i=F(),r=dc(i).slice(0,6),u=i.narrative.summary??v0(i);return r.length===0&&!u?null:n.jsx("section",{id:"summary","aria-labelledby":"summary-heading",className:"border-line w-full border-b py-10 sm:py-14",style:{backgroundColor:"var(--tpl-surface-alt, #f5f5f4)"},children:n.jsx("div",{className:"shell",children:n.jsxs("div",{className:"grid gap-8 lg:grid-cols-12 lg:gap-12",children:[n.jsxs("div",{className:"lg:col-span-5",children:[n.jsx("h2",{id:"summary-heading",className:"h3",children:"예약 전 확인"}),u&&n.jsx("p",{className:"measure mt-3 text-[length:var(--fs-body)] leading-relaxed",children:u}),n.jsxs("p",{className:"text-muted mt-3 text-[length:var(--fs-xs)]",children:[lo(i.site.updatedAt)," 기준, 사업자가 확인한 정보입니다."]})]}),r.length>0&&n.jsx("dl",{className:"grid grid-cols-1 gap-x-10 lg:col-span-7 xl:grid-cols-2",children:r.map(o=>n.jsxs("div",{className:"border-line flex flex-col gap-0.5 py-2.5 sm:flex-row sm:gap-4 sm:border-b",children:[n.jsx("dt",{className:"text-muted shrink-0 text-[length:var(--fs-sm)] sm:w-28",children:o.label}),n.jsx("dd",{className:"text-[length:var(--fs-sm)] font-semibold",children:o.value})]},o.label))})]})})})}function no({id:i,title:r,lead:u,aside:o}){return n.jsxs("header",{className:"mb-10 flex flex-col items-center gap-4 text-center sm:mb-14",children:[n.jsx("h2",{id:`${i}-heading`,className:"serif max-w-full",style:{fontSize:"var(--fs-h2)",fontWeight:300,letterSpacing:"0.04em",lineHeight:1.35},children:r}),n.jsx("i",{"aria-hidden":!0,className:"block h-px w-10 bg-current opacity-25"}),u&&n.jsx("p",{className:"text-muted measure text-[length:var(--fs-sm)] leading-loose",children:u}),o&&n.jsx("div",{className:"text-[length:var(--fs-xs)]",children:o})]})}function so({id:i,title:r,lead:u,aside:o}){return n.jsxs("header",{className:"mb-8 flex flex-col gap-3 sm:flex-row sm:items-baseline sm:justify-between sm:gap-8",children:[n.jsxs("div",{className:"min-w-0",children:[n.jsxs("h2",{id:`${i}-heading`,className:"text-[length:var(--fs-sm)] font-normal tracking-[0.08em]",children:["[",r,"]"]}),u&&n.jsx("p",{className:"text-muted measure mt-3 text-[length:var(--fs-xs)] leading-[1.9]",children:u})]}),o&&n.jsx("div",{className:"shrink-0 text-[length:var(--fs-xs)]",children:o})]})}function io({id:i,title:r,lead:u,aside:o}){return n.jsx("header",{className:"mb-7 sm:mb-10",children:n.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-baseline sm:justify-between sm:gap-10",children:[n.jsxs("div",{className:"min-w-0",children:[n.jsx("h2",{id:`${i}-heading`,className:"serif min-w-0 font-extrabold",style:{fontSize:"var(--fs-h2)",letterSpacing:"0.01em",lineHeight:1.2,color:"var(--tpl-text)"},children:r}),u&&n.jsx("p",{className:"text-muted measure mt-2 text-[length:var(--fs-sm)]",style:{lineHeight:1.7},children:u})]}),o&&n.jsx("div",{className:"shrink-0 text-[length:var(--fs-xs)]",children:o})]})})}function co({id:i,title:r,lead:u,aside:o}){return n.jsxs("header",{className:"mb-8 flex flex-col items-center gap-3 text-center sm:mb-10",children:[n.jsx("i",{"aria-hidden":!0,className:"block h-[6px] w-10 rounded-full",style:{backgroundColor:"var(--pastel-2, currentColor)",opacity:.9}}),n.jsx("h2",{id:`${i}-heading`,className:"h2 break-keep",style:{fontSize:"calc(var(--fs-h2) * 1.15)",fontWeight:800},children:r}),u&&n.jsx("p",{className:"measure text-[length:var(--fs-sm)] leading-relaxed opacity-65",children:u}),o&&n.jsx("div",{className:"text-[length:var(--fs-sm)]",children:o})]})}const Y0={base:{backgroundColor:"var(--tpl-surface, #ffffff)"},alt:{backgroundColor:"var(--tpl-surface-alt, #f5f5f4)"},dark:{backgroundColor:"var(--tpl-inverse, #1c1917)",color:"var(--tpl-bg, #ffffff)"}};function pt({id:i,title:r,lead:u,tone:o="base",aside:f,footnote:m,children:h,wide:x,bare:v}){const p=hc(),b=p==="reservation"?no:p==="oasi"?so:p==="studio"?io:p==="pastel"?co:p==="editorial"?to:G0;return n.jsx("section",{id:i,"aria-labelledby":`${i}-heading`,className:"border-line paper w-full border-b",style:{...Y0[o],paddingBlock:"var(--section-space)"},children:n.jsxs("div",{className:x?"w-full":"shell",children:[!v&&n.jsx("div",{className:x?"shell":void 0,children:n.jsx(b,{id:i,title:r,lead:u,aside:f})}),h,m&&n.jsx("p",{className:`text-muted mt-5 text-[length:var(--fs-xs)] ${x?"shell":""}`,children:m})]})})}function G0({id:i,title:r,lead:u,aside:o}){return n.jsx("header",{className:"mb-6 sm:mb-8",children:n.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:items-end sm:justify-between sm:gap-6",children:[n.jsxs("div",{className:"min-w-0",children:[n.jsxs("h2",{id:`${i}-heading`,className:"h2 flex items-center gap-2.5",children:[n.jsx("i",{"aria-hidden":!0,className:"h-[1em] w-[3px] shrink-0 bg-current opacity-25"}),n.jsx("span",{className:"min-w-0",children:r})]}),u&&n.jsx("p",{className:"text-muted measure mt-2 pl-[calc(3px+0.625rem)] text-[length:var(--fs-sm)]",children:u})]}),o&&n.jsx("div",{className:"shrink-0",children:o})]})})}function Q0(i){return Object.prototype.toString.call(i)==="[object Object]"}function Oh(i){return Q0(i)||Array.isArray(i)}function X0(){return!!(typeof window<"u"&&window.document&&window.document.createElement)}function ro(i,r){const u=Object.keys(i),o=Object.keys(r);if(u.length!==o.length)return!1;const f=JSON.stringify(Object.keys(i.breakpoints||{})),m=JSON.stringify(Object.keys(r.breakpoints||{}));return f!==m?!1:u.every(h=>{const x=i[h],v=r[h];return typeof x=="function"?`${x}`==`${v}`:!Oh(x)||!Oh(v)?x===v:ro(x,v)})}function Dh(i){return i.concat().sort((r,u)=>r.name>u.name?1:-1).map(r=>r.options)}function $0(i,r){if(i.length!==r.length)return!1;const u=Dh(i),o=Dh(r);return u.every((f,m)=>{const h=o[m];return ro(f,h)})}function uo(i){return typeof i=="number"}function Zu(i){return typeof i=="string"}function pc(i){return typeof i=="boolean"}function kh(i){return Object.prototype.toString.call(i)==="[object Object]"}function Ge(i){return Math.abs(i)}function oo(i){return Math.sign(i)}function Ts(i,r){return Ge(i-r)}function V0(i,r){if(i===0||r===0||Ge(i)<=Ge(r))return 0;const u=Ts(Ge(i),Ge(r));return Ge(u/i)}function Z0(i){return Math.round(i*100)/100}function Os(i){return Ds(i).map(Number)}function tl(i){return i[Bs(i)]}function Bs(i){return Math.max(0,i.length-1)}function fo(i,r){return r===Bs(i)}function Uh(i,r=0){return Array.from(Array(i),(u,o)=>r+o)}function Ds(i){return Object.keys(i)}function xp(i,r){return[i,r].reduce((u,o)=>(Ds(o).forEach(f=>{const m=u[f],h=o[f],x=kh(m)&&kh(h);u[f]=x?xp(m,h):h}),u),{})}function Ku(i,r){return typeof r.MouseEvent<"u"&&i instanceof r.MouseEvent}function K0(i,r){const u={start:o,center:f,end:m};function o(){return 0}function f(v){return m(v)/2}function m(v){return r-v}function h(v,p){return Zu(i)?u[i](v):i(r,v,p)}return{measure:h}}function ks(){let i=[];function r(f,m,h,x={passive:!0}){let v;if("addEventListener"in f)f.addEventListener(m,h,x),v=()=>f.removeEventListener(m,h,x);else{const p=f;p.addListener(h),v=()=>p.removeListener(h)}return i.push(v),o}function u(){i=i.filter(f=>f())}const o={add:r,clear:u};return o}function J0(i,r,u,o){const f=ks(),m=1e3/60;let h=null,x=0,v=0;function p(){f.add(i,"visibilitychange",()=>{i.hidden&&N()})}function b(){T(),f.clear()}function y(U){if(!v)return;h||(h=U,u(),u());const q=U-h;for(h=U,x+=q;x>=m;)u(),x-=m;const Q=x/m;o(Q),v&&(v=r.requestAnimationFrame(y))}function E(){v||(v=r.requestAnimationFrame(y))}function T(){r.cancelAnimationFrame(v),h=null,x=0,v=0}function N(){h=null,x=0}return{init:p,destroy:b,start:E,stop:T,update:u,render:o}}function W0(i,r){const u=r==="rtl",o=i==="y",f=o?"y":"x",m=o?"x":"y",h=!o&&u?-1:1,x=b(),v=y();function p(N){const{height:_,width:U}=N;return o?_:U}function b(){return o?"top":u?"right":"left"}function y(){return o?"bottom":u?"left":"right"}function E(N){return N*h}return{scroll:f,cross:m,startEdge:x,endEdge:v,measureSize:p,direction:E}}function Ca(i=0,r=0){const u=Ge(i-r);function o(p){return pr}function m(p){return o(p)||f(p)}function h(p){return m(p)?o(p)?i:r:p}function x(p){return u?p-u*Math.ceil((p-r)/u):p}return{length:u,max:r,min:i,constrain:h,reachedAny:m,reachedMax:f,reachedMin:o,removeOffset:x}}function gp(i,r,u){const{constrain:o}=Ca(0,i),f=i+1;let m=h(r);function h(E){return u?Ge((f+E)%f):o(E)}function x(){return m}function v(E){return m=h(E),y}function p(E){return b().set(x()+E)}function b(){return gp(i,x(),u)}const y={get:x,set:v,add:p,clone:b};return y}function F0(i,r,u,o,f,m,h,x,v,p,b,y,E,T,N,_,U,q,Q){const{cross:V,direction:ne}=i,de=["INPUT","SELECT","TEXTAREA"],le={passive:!1},X=ks(),ee=ks(),se=Ca(50,225).constrain(T.measure(20)),Ne={mouse:300,touch:400},oe={mouse:500,touch:600},ye=N?43:25;let Ye=!1,Qe=0,te=0,O=!1,B=!1,W=!1,me=!1;function je(J){if(!Q)return;function _e(tt){(pc(Q)||Q(J,tt))&&re(tt)}const Oe=r;X.add(Oe,"dragstart",tt=>tt.preventDefault(),le).add(Oe,"touchmove",()=>{},le).add(Oe,"touchend",()=>{}).add(Oe,"touchstart",_e).add(Oe,"mousedown",_e).add(Oe,"touchcancel",Ee).add(Oe,"contextmenu",Ee).add(Oe,"click",Ae,!0)}function S(){X.clear(),ee.clear()}function H(){const J=me?u:r;ee.add(J,"touchmove",ie,le).add(J,"touchend",Ee).add(J,"mousemove",ie,le).add(J,"mouseup",Ee)}function G(J){const _e=J.nodeName||"";return de.includes(_e)}function $(){return(N?oe:Ne)[me?"mouse":"touch"]}function ae(J,_e){const Oe=y.add(oo(J)*-1),tt=b.byDistance(J,!N).distance;return N||Ge(J)=2,!(_e&&J.button!==0)&&(G(J.target)||(O=!0,m.pointerDown(J),p.useFriction(0).useDuration(0),f.set(h),H(),Qe=m.readPoint(J),te=m.readPoint(J,V),E.emit("pointerDown")))}function ie(J){if(!Ku(J,o)&&J.touches.length>=2)return Ee(J);const Oe=m.readPoint(J),tt=m.readPoint(J,V),bt=Ts(Oe,Qe),Wt=Ts(tt,te);if(!B&&!me&&(!J.cancelable||(B=bt>Wt,!B)))return Ee(J);const nl=m.pointerMove(J);bt>_&&(W=!0),p.useFriction(.3).useDuration(.75),x.start(),f.add(ne(nl)),J.preventDefault()}function Ee(J){const Oe=b.byDistance(0,!1).index!==y.get(),tt=m.pointerUp(J)*$(),bt=ae(ne(tt),Oe),Wt=V0(tt,bt),nl=ye-10*Wt,kt=q+Wt/50;B=!1,O=!1,ee.clear(),p.useDuration(nl).useFriction(kt),v.distance(bt,!N),me=!1,E.emit("pointerUp")}function Ae(J){W&&(J.stopPropagation(),J.preventDefault(),W=!1)}function nt(){return O}return{init:je,destroy:S,pointerDown:nt}}function I0(i,r){let o,f;function m(y){return y.timeStamp}function h(y,E){const N=`client${(E||i.scroll)==="x"?"X":"Y"}`;return(Ku(y,r)?y:y.touches[0])[N]}function x(y){return o=y,f=y,h(y)}function v(y){const E=h(y)-h(f),T=m(y)-m(o)>170;return f=y,T&&(o=y),E}function p(y){if(!o||!f)return 0;const E=h(f)-h(o),T=m(y)-m(o),N=m(y)-m(f)>170,_=E/T;return T&&!N&&Ge(_)>.1?_:0}return{pointerDown:x,pointerMove:v,pointerUp:p,readPoint:h}}function P0(){function i(u){const{offsetTop:o,offsetLeft:f,offsetWidth:m,offsetHeight:h}=u;return{top:o,right:f+m,bottom:o+h,left:f,width:m,height:h}}return{measure:i}}function eb(i){function r(o){return i*(o/100)}return{measure:r}}function tb(i,r,u,o,f,m,h){const x=[i].concat(o);let v,p,b=[],y=!1;function E(U){return f.measureSize(h.measure(U))}function T(U){if(!m)return;p=E(i),b=o.map(E);function q(Q){for(const V of Q){if(y)return;const ne=V.target===i,de=o.indexOf(V.target),le=ne?p:b[de],X=E(ne?i:o[de]);if(Ge(X-le)>=.5){U.reInit(),r.emit("resize");break}}}v=new ResizeObserver(Q=>{(pc(m)||m(U,Q))&&q(Q)}),u.requestAnimationFrame(()=>{x.forEach(Q=>v.observe(Q))})}function N(){y=!0,v&&v.disconnect()}return{init:T,destroy:N}}function lb(i,r,u,o,f,m){let h=0,x=0,v=f,p=m,b=i.get(),y=0;function E(){const le=o.get()-i.get(),X=!v;let ee=0;return X?(h=0,u.set(o),i.set(o),ee=le):(u.set(i),h+=le/v,h*=p,b+=h,i.add(h),ee=b-y),x=oo(ee),y=b,de}function T(){const le=o.get()-r.get();return Ge(le)<.001}function N(){return v}function _(){return x}function U(){return h}function q(){return V(f)}function Q(){return ne(m)}function V(le){return v=le,de}function ne(le){return p=le,de}const de={direction:_,duration:N,velocity:U,seek:E,settled:T,useBaseFriction:Q,useBaseDuration:q,useFriction:ne,useDuration:V};return de}function ab(i,r,u,o,f){const m=f.measure(10),h=f.measure(50),x=Ca(.1,.99);let v=!1;function p(){return!(v||!i.reachedAny(u.get())||!i.reachedAny(r.get()))}function b(T){if(!p())return;const N=i.reachedMin(r.get())?"min":"max",_=Ge(i[N]-r.get()),U=u.get()-r.get(),q=x.constrain(_/h);u.subtract(U*q),!T&&Ge(U){const{min:U,max:q}=m,Q=m.constrain(N),V=!_,ne=fo(u,_);return V?q:ne||p(U,Q)?U:p(q,Q)?q:Q}).map(N=>parseFloat(N.toFixed(3)))}function E(){if(r<=i+f)return[m.max];if(o==="keepSnaps")return h;const{min:N,max:_}=x;return h.slice(N,_)}return{snapsContained:v,scrollContainLimit:x}}function sb(i,r,u){const o=r[0],f=u?o-i:tl(r);return{limit:Ca(f,o)}}function ib(i,r,u,o){const m=r.min+.1,h=r.max+.1,{reachedMin:x,reachedMax:v}=Ca(m,h);function p(E){return E===1?v(u.get()):E===-1?x(u.get()):!1}function b(E){if(!p(E))return;const T=i*(E*-1);o.forEach(N=>N.add(T))}return{loop:b}}function cb(i){const{max:r,length:u}=i;function o(m){const h=m-r;return u?h/-u:0}return{get:o}}function rb(i,r,u,o,f){const{startEdge:m,endEdge:h}=i,{groupSlides:x}=f,v=y().map(r.measure),p=E(),b=T();function y(){return x(o).map(_=>tl(_)[h]-_[0][m]).map(Ge)}function E(){return o.map(_=>u[m]-_[m]).map(_=>-Ge(_))}function T(){return x(p).map(_=>_[0]).map((_,U)=>_+v[U])}return{snaps:p,snapsAligned:b}}function ub(i,r,u,o,f,m){const{groupSlides:h}=f,{min:x,max:v}=o,p=b();function b(){const E=h(m),T=!i||r==="keepSnaps";return u.length===1?[m]:T?E:E.slice(x,v).map((N,_,U)=>{const q=!_,Q=fo(U,_);if(q){const V=tl(U[0])+1;return Uh(V)}if(Q){const V=Bs(m)-tl(U)[0]+1;return Uh(V,tl(U)[0])}return N})}return{slideRegistry:p}}function ob(i,r,u,o,f){const{reachedAny:m,removeOffset:h,constrain:x}=o;function v(N){return N.concat().sort((_,U)=>Ge(_)-Ge(U))[0]}function p(N){const _=i?h(N):x(N),U=r.map((Q,V)=>({diff:b(Q-_,0),index:V})).sort((Q,V)=>Ge(Q.diff)-Ge(V.diff)),{index:q}=U[0];return{index:q,distance:_}}function b(N,_){const U=[N,N+u,N-u];if(!i)return N;if(!_)return v(U);const q=U.filter(Q=>oo(Q)===_);return q.length?v(q):tl(U)-u}function y(N,_){const U=r[N]-f.get(),q=b(U,_);return{index:N,distance:q}}function E(N,_){const U=f.get()+N,{index:q,distance:Q}=p(U),V=!i&&m(U);if(!_||V)return{index:q,distance:N};const ne=r[q]-Q,de=N+b(ne,0);return{index:q,distance:de}}return{byDistance:E,byIndex:y,shortcut:b}}function fb(i,r,u,o,f,m,h){function x(y){const E=y.distance,T=y.index!==r.get();m.add(E),E&&(o.duration()?i.start():(i.update(),i.render(1),i.update())),T&&(u.set(r.get()),r.set(y.index),h.emit("select"))}function v(y,E){const T=f.byDistance(y,E);x(T)}function p(y,E){const T=r.clone().set(y),N=f.byIndex(T.get(),E);x(N)}return{distance:v,index:p}}function db(i,r,u,o,f,m,h,x){const v={passive:!0,capture:!0};let p=0;function b(T){if(!x)return;function N(_){if(new Date().getTime()-p>10)return;h.emit("slideFocusStart"),i.scrollLeft=0;const Q=u.findIndex(V=>V.includes(_));uo(Q)&&(f.useDuration(0),o.index(Q,0),h.emit("slideFocus"))}m.add(document,"keydown",y,!1),r.forEach((_,U)=>{m.add(_,"focus",q=>{(pc(x)||x(T,q))&&N(U)},v)})}function y(T){T.code==="Tab"&&(p=new Date().getTime())}return{init:b}}function Es(i){let r=i;function u(){return r}function o(v){r=h(v)}function f(v){r+=h(v)}function m(v){r-=h(v)}function h(v){return uo(v)?v:v.get()}return{get:u,set:o,add:f,subtract:m}}function vp(i,r){const u=i.scroll==="x"?h:x,o=r.style;let f=null,m=!1;function h(E){return`translate3d(${E}px,0px,0px)`}function x(E){return`translate3d(0px,${E}px,0px)`}function v(E){if(m)return;const T=Z0(i.direction(E));T!==f&&(o.transform=u(T),f=T)}function p(E){m=!E}function b(){m||(o.transform="",r.getAttribute("style")||r.removeAttribute("style"))}return{clear:b,to:v,toggleActive:p}}function mb(i,r,u,o,f,m,h,x,v){const b=Os(f),y=Os(f).reverse(),E=q().concat(Q());function T(X,ee){return X.reduce((se,Ne)=>se-f[Ne],ee)}function N(X,ee){return X.reduce((se,Ne)=>T(se,ee)>0?se.concat([Ne]):se,[])}function _(X){return m.map((ee,se)=>({start:ee-o[se]+.5+X,end:ee+r-.5+X}))}function U(X,ee,se){const Ne=_(ee);return X.map(oe=>{const ye=se?0:-u,Ye=se?u:0,Qe=se?"end":"start",te=Ne[oe][Qe];return{index:oe,loopPoint:te,slideLocation:Es(-1),translate:vp(i,v[oe]),target:()=>x.get()>te?ye:Ye}})}function q(){const X=h[0],ee=N(y,X);return U(ee,u,!1)}function Q(){const X=r-h[0]-1,ee=N(b,X);return U(ee,-u,!0)}function V(){return E.every(({index:X})=>{const ee=b.filter(se=>se!==X);return T(ee,r)<=.1})}function ne(){E.forEach(X=>{const{target:ee,translate:se,slideLocation:Ne}=X,oe=ee();oe!==Ne.get()&&(se.to(oe),Ne.set(oe))})}function de(){E.forEach(X=>X.translate.clear())}return{canLoop:V,clear:de,loop:ne,loopPoints:E}}function hb(i,r,u){let o,f=!1;function m(v){if(!u)return;function p(b){for(const y of b)if(y.type==="childList"){v.reInit(),r.emit("slidesChanged");break}}o=new MutationObserver(b=>{f||(pc(u)||u(v,b))&&p(b)}),o.observe(i,{childList:!0})}function h(){o&&o.disconnect(),f=!0}return{init:m,destroy:h}}function pb(i,r,u,o){const f={};let m=null,h=null,x,v=!1;function p(){x=new IntersectionObserver(N=>{v||(N.forEach(_=>{const U=r.indexOf(_.target);f[U]=_}),m=null,h=null,u.emit("slidesInView"))},{root:i.parentElement,threshold:o}),r.forEach(N=>x.observe(N))}function b(){x&&x.disconnect(),v=!0}function y(N){return Ds(f).reduce((_,U)=>{const q=parseInt(U),{isIntersecting:Q}=f[q];return(N&&Q||!N&&!Q)&&_.push(q),_},[])}function E(N=!0){if(N&&m)return m;if(!N&&h)return h;const _=y(N);return N&&(m=_),N||(h=_),_}return{init:p,destroy:b,get:E}}function xb(i,r,u,o,f,m){const{measureSize:h,startEdge:x,endEdge:v}=i,p=u[0]&&f,b=N(),y=_(),E=u.map(h),T=U();function N(){if(!p)return 0;const Q=u[0];return Ge(r[x]-Q[x])}function _(){if(!p)return 0;const Q=m.getComputedStyle(tl(o));return parseFloat(Q.getPropertyValue(`margin-${v}`))}function U(){return u.map((Q,V,ne)=>{const de=!V,le=fo(ne,V);return de?E[V]+b:le?E[V]+y:ne[V+1][x]-Q[x]}).map(Ge)}return{slideSizes:E,slideSizesWithGaps:T,startGap:b,endGap:y}}function gb(i,r,u,o,f,m,h,x,v){const{startEdge:p,endEdge:b,direction:y}=i,E=uo(u);function T(q,Q){return Os(q).filter(V=>V%Q===0).map(V=>q.slice(V,V+Q))}function N(q){return q.length?Os(q).reduce((Q,V,ne)=>{const de=tl(Q)||0,le=de===0,X=V===Bs(q),ee=f[p]-m[de][p],se=f[p]-m[V][b],Ne=!o&&le?y(h):0,oe=!o&&X?y(x):0,ye=Ge(se-oe-(ee+Ne));return ne&&ye>r+v&&Q.push(V),X&&Q.push(q.length),Q},[]).map((Q,V,ne)=>{const de=Math.max(ne[V-1]||0);return q.slice(de,Q)}):[]}function _(q){return E?T(q,u):N(q)}return{groupSlides:_}}function vb(i,r,u,o,f,m,h){const{align:x,axis:v,direction:p,startIndex:b,loop:y,duration:E,dragFree:T,dragThreshold:N,inViewThreshold:_,slidesToScroll:U,skipSnaps:q,containScroll:Q,watchResize:V,watchSlides:ne,watchDrag:de,watchFocus:le}=m,X=2,ee=P0(),se=ee.measure(r),Ne=u.map(ee.measure),oe=W0(v,p),ye=oe.measureSize(se),Ye=eb(ye),Qe=K0(x,ye),te=!y&&!!Q,O=y||!!Q,{slideSizes:B,slideSizesWithGaps:W,startGap:me,endGap:je}=xb(oe,se,Ne,u,O,f),S=gb(oe,ye,U,y,se,Ne,me,je,X),{snaps:H,snapsAligned:G}=rb(oe,Qe,se,Ne,S),$=-tl(H)+tl(W),{snapsContained:ae,scrollContainLimit:re}=nb(ye,$,G,Q,X),ie=te?ae:G,{limit:Ee}=sb($,ie,y),Ae=gp(Bs(ie),b,y),nt=Ae.clone(),Me=Os(u),J=({dragHandler:pl,scrollBody:Cn,scrollBounds:Mn,options:{loop:sl}})=>{sl||Mn.constrain(pl.pointerDown()),Cn.seek()},_e=({scrollBody:pl,translate:Cn,location:Mn,offsetLocation:sl,previousLocation:xt,scrollLooper:il,slideLooper:gt,dragHandler:vc,animation:bc,eventHandler:Qs,scrollBounds:Ua,options:{loop:ua}},oa)=>{const cl=pl.settled(),Ra=!Ua.shouldConstrain(),Ll=ua?cl:cl&&Ra,Xs=Ll&&!vc.pointerDown();Xs&&bc.stop();const $s=Mn.get()*oa+xt.get()*(1-oa);sl.set($s),ua&&(il.loop(pl.direction()),gt.loop()),Cn.to(sl.get()),Xs&&Qs.emit("settle"),Ll||Qs.emit("scroll")},Oe=J0(o,f,()=>J(wn),pl=>_e(wn,pl)),tt=.68,bt=ie[Ae.get()],Wt=Es(bt),nl=Es(bt),kt=Es(bt),Ft=Es(bt),hl=lb(Wt,kt,nl,Ft,E,tt),An=ob(y,ie,$,Ee,Ft),Tn=fb(Oe,Ae,nt,hl,An,Ft,h),mt=cb(Ee),Ys=ks(),Gs=pb(r,u,h,_),{slideRegistry:_n}=ub(te,Q,ie,re,S,Me),ka=db(i,u,_n,Tn,hl,Ys,h,le),wn={ownerDocument:o,ownerWindow:f,eventHandler:h,containerRect:se,slideRects:Ne,animation:Oe,axis:oe,dragHandler:F0(oe,i,o,f,Ft,I0(oe,f),Wt,Oe,Tn,hl,An,Ae,h,Ye,T,N,q,tt,de),eventStore:Ys,percentOfView:Ye,index:Ae,indexPrevious:nt,limit:Ee,location:Wt,offsetLocation:kt,previousLocation:nl,options:m,resizeHandler:tb(r,h,f,u,oe,V,ee),scrollBody:hl,scrollBounds:ab(Ee,kt,Ft,hl,Ye),scrollLooper:ib($,Ee,kt,[Wt,kt,nl,Ft]),scrollProgress:mt,scrollSnapList:ie.map(mt.get),scrollSnaps:ie,scrollTarget:An,scrollTo:Tn,slideLooper:mb(oe,ye,$,B,W,H,ie,kt,u),slideFocus:ka,slidesHandler:hb(r,h,ne),slidesInView:Gs,slideIndexes:Me,slideRegistry:_n,slidesToScroll:S,target:Ft,translate:vp(oe,r)};return wn}function bb(){let i={},r;function u(p){r=p}function o(p){return i[p]||[]}function f(p){return o(p).forEach(b=>b(r,p)),v}function m(p,b){return i[p]=o(p).concat([b]),v}function h(p,b){return i[p]=o(p).filter(y=>y!==b),v}function x(){i={}}const v={init:u,emit:f,off:h,on:m,clear:x};return v}const yb={align:"center",axis:"x",container:null,slides:null,containScroll:"trimSnaps",direction:"ltr",slidesToScroll:1,inViewThreshold:0,breakpoints:{},dragFree:!1,dragThreshold:10,loop:!1,skipSnaps:!1,duration:25,startIndex:0,active:!0,watchDrag:!0,watchResize:!0,watchSlides:!0,watchFocus:!0};function jb(i){function r(m,h){return xp(m,h||{})}function u(m){const h=m.breakpoints||{},x=Ds(h).filter(v=>i.matchMedia(v).matches).map(v=>h[v]).reduce((v,p)=>r(v,p),{});return r(m,x)}function o(m){return m.map(h=>Ds(h.breakpoints||{})).reduce((h,x)=>h.concat(x),[]).map(i.matchMedia)}return{mergeOptions:r,optionsAtMedia:u,optionsMediaQueries:o}}function Nb(i){let r=[];function u(m,h){return r=h.filter(({options:x})=>i.optionsAtMedia(x).active!==!1),r.forEach(x=>x.init(m,i)),h.reduce((x,v)=>Object.assign(x,{[v.name]:v}),{})}function o(){r=r.filter(m=>m.destroy())}return{init:u,destroy:o}}function rc(i,r,u){const o=i.ownerDocument,f=o.defaultView,m=jb(f),h=Nb(m),x=ks(),v=bb(),{mergeOptions:p,optionsAtMedia:b,optionsMediaQueries:y}=m,{on:E,off:T,emit:N}=v,_=oe;let U=!1,q,Q=p(yb,rc.globalOptions),V=p(Q),ne=[],de,le,X;function ee(){const{container:Me,slides:J}=V;le=(Zu(Me)?i.querySelector(Me):Me)||i.children[0];const Oe=Zu(J)?le.querySelectorAll(J):J;X=[].slice.call(Oe||le.children)}function se(Me){const J=vb(i,le,X,o,f,Me,v);if(Me.loop&&!J.slideLooper.canLoop()){const _e=Object.assign({},Me,{loop:!1});return se(_e)}return J}function Ne(Me,J){U||(Q=p(Q,Me),V=b(Q),ne=J||ne,ee(),q=se(V),y([Q,...ne.map(({options:_e})=>_e)]).forEach(_e=>x.add(_e,"change",oe)),V.active&&(q.translate.to(q.location.get()),q.animation.init(),q.slidesInView.init(),q.slideFocus.init(nt),q.eventHandler.init(nt),q.resizeHandler.init(nt),q.slidesHandler.init(nt),q.options.loop&&q.slideLooper.loop(),le.offsetParent&&X.length&&q.dragHandler.init(nt),de=h.init(nt,ne)))}function oe(Me,J){const _e=S();ye(),Ne(p({startIndex:_e},Me),J),v.emit("reInit")}function ye(){q.dragHandler.destroy(),q.eventStore.clear(),q.translate.clear(),q.slideLooper.clear(),q.resizeHandler.destroy(),q.slidesHandler.destroy(),q.slidesInView.destroy(),q.animation.destroy(),h.destroy(),x.clear()}function Ye(){U||(U=!0,x.clear(),ye(),v.emit("destroy"),v.clear())}function Qe(Me,J,_e){!V.active||U||(q.scrollBody.useBaseFriction().useDuration(J===!0?0:V.duration),q.scrollTo.index(Me,_e||0))}function te(Me){const J=q.index.add(1).get();Qe(J,Me,-1)}function O(Me){const J=q.index.add(-1).get();Qe(J,Me,1)}function B(){return q.index.add(1).get()!==S()}function W(){return q.index.add(-1).get()!==S()}function me(){return q.scrollSnapList}function je(){return q.scrollProgress.get(q.offsetLocation.get())}function S(){return q.index.get()}function H(){return q.indexPrevious.get()}function G(){return q.slidesInView.get()}function $(){return q.slidesInView.get(!1)}function ae(){return de}function re(){return q}function ie(){return i}function Ee(){return le}function Ae(){return X}const nt={canScrollNext:B,canScrollPrev:W,containerNode:Ee,internalEngine:re,destroy:Ye,off:T,on:E,emit:N,plugins:ae,previousScrollSnap:H,reInit:_,rootNode:ie,scrollNext:te,scrollPrev:O,scrollProgress:je,scrollSnapList:me,scrollTo:Qe,selectedScrollSnap:S,slideNodes:Ae,slidesInView:G,slidesNotInView:$};return Ne(r,u),setTimeout(()=>v.emit("init"),0),nt}rc.globalOptions=void 0;function mo(i={},r=[]){const u=Y.useRef(i),o=Y.useRef(r),[f,m]=Y.useState(),[h,x]=Y.useState(),v=Y.useCallback(()=>{f&&f.reInit(u.current,o.current)},[f]);return Y.useEffect(()=>{ro(u.current,i)||(u.current=i,v())},[i,v]),Y.useEffect(()=>{$0(o.current,r)||(o.current=r,v())},[r,v]),Y.useEffect(()=>{if(X0()&&h){rc.globalOptions=mo.globalOptions;const p=rc(h,u.current,o.current);return m(p),()=>p.destroy()}else m(void 0)},[h,m]),[x,f]}mo.globalOptions=void 0;const xc=4500;function gc({box:i,interval:r,advance:u}){const o=Y.useRef(u);o.current=u,Y.useEffect(()=>{const f=i.current;if(!f||r<=0||window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;let m=0,h=!0;const x=()=>{m+=1},v=()=>{m=Math.max(0,m-1)},p=window.setInterval(()=>{m>0||document.hidden||!h||o.current()||window.clearInterval(p)},r),b=new IntersectionObserver(([_])=>{h=_.isIntersecting},{threshold:.25});b.observe(f);const y=window.matchMedia("(hover: hover) and (pointer: fine)").matches;y&&(f.addEventListener("pointerenter",x),f.addEventListener("pointerleave",v));let E=!1;const T=_=>{const U=_.target;!(U instanceof Element)||!U.matches(":focus-visible")||E||(E=!0,x())},N=()=>{E&&(E=!1,v())};return f.addEventListener("focusin",T),f.addEventListener("focusout",N),f.addEventListener("pointerdown",x,!0),window.addEventListener("pointerup",v,!0),window.addEventListener("pointercancel",v,!0),()=>{window.clearInterval(p),b.disconnect(),y&&(f.removeEventListener("pointerenter",x),f.removeEventListener("pointerleave",v)),f.removeEventListener("focusin",T),f.removeEventListener("focusout",N),f.removeEventListener("pointerdown",x,!0),window.removeEventListener("pointerup",v,!0),window.removeEventListener("pointercancel",v,!0)}},[i,r])}function ho(i,r=.85){if(!i)return!1;const u=i.scrollWidth-i.clientWidth;if(u<=8||i.scrollLeft>=u-8)return!1;const o=window.matchMedia("(prefers-reduced-motion: reduce)").matches;return i.scrollBy({left:i.clientWidth*r,behavior:o?"auto":"smooth"}),!0}function po({label:i,children:r,align:u="start",loop:o=!1,dots:f=!0,arrows:m="header",gap:h=1,autoplay:x=xc,onSelect:v,onReady:p,className:b}){const y=x===!1?0:x,[E,T]=mo({align:u,loop:o,containScroll:"trimSnaps",watchDrag:!0}),[N,_]=Y.useState([]),[U,q]=Y.useState(0),[Q,V]=Y.useState(!1),[ne,de]=Y.useState(!1),le=Y.useRef(null),X=Y.useId();Y.useEffect(()=>{var B;if(!T)return;const te=()=>{q(T.selectedScrollSnap()),V(T.canScrollPrev()),de(T.canScrollNext())},O=()=>{_(T.scrollSnapList()),te()};return O(),T.on("select",te),T.on("reInit",O),(B=le.current)==null||B.setAttribute("data-slider","on"),()=>{T.off("select",te),T.off("reInit",O)}},[T]),Y.useEffect(()=>{if(!T)return;const te=le.current,O=()=>te==null?void 0:te.setAttribute("data-dragging","true"),B=()=>te==null?void 0:te.removeAttribute("data-dragging");return T.on("pointerDown",O),T.on("pointerUp",B),()=>{T.off("pointerDown",O),T.off("pointerUp",B)}},[T]),gc({box:le,interval:y,advance:()=>!T||T.scrollSnapList().length<=1?!0:T.canScrollNext()?(T.scrollNext(),!0):!1});const ee=Y.useCallback(te=>T==null?void 0:T.scrollTo(te),[T]),se=Y.useRef(v);se.current=v;const Ne=Y.useRef(p);Ne.current=p,Y.useEffect(()=>{var O;if(!T)return;const te=()=>{var B;return(B=se.current)==null?void 0:B.call(se,T.selectedScrollSnap())};return te(),T.on("select",te),T.on("reInit",te),(O=Ne.current)==null||O.call(Ne,{scrollTo:B=>T.scrollTo(B)}),()=>{T.off("select",te),T.off("reInit",te)}},[T]);const oe=Y.useCallback(()=>T==null?void 0:T.scrollPrev(),[T]),ye=Y.useCallback(()=>T==null?void 0:T.scrollNext(),[T]),Ye=N.length>1,Qe=f&&Ye&&N.length<=12;return n.jsxs("div",{className:b,children:[m==="header"&&Ye&&n.jsxs("div",{className:"mb-3 flex justify-end gap-2",children:[n.jsx(Rh,{dir:"prev",onClick:oe,disabled:!o&&!Q,label:i}),n.jsx(Rh,{dir:"next",onClick:ye,disabled:!o&&!ne,label:i})]}),n.jsxs("div",{className:"relative",children:[n.jsx("div",{ref:te=>{le.current=te,E(te)},className:"slider-viewport",role:"group","aria-roledescription":"캐러셀","aria-label":i,tabIndex:0,onKeyDown:te=>{te.key==="ArrowLeft"&&(te.preventDefault(),oe()),te.key==="ArrowRight"&&(te.preventDefault(),ye())},children:n.jsx("div",{className:"slider-track",style:{gap:`${h}rem`},id:X,children:r})}),m==="overlay"&&Ye&&n.jsxs(n.Fragment,{children:[n.jsx(Hh,{dir:"prev",onClick:oe,disabled:!o&&!Q,label:i}),n.jsx(Hh,{dir:"next",onClick:ye,disabled:!o&&!ne,label:i})]})]}),Ye&&n.jsxs("div",{className:"mt-4 flex items-center justify-center gap-3",children:[Qe&&n.jsx("ul",{className:"flex items-center gap-1.5",children:N.map((te,O)=>n.jsx("li",{children:n.jsx("button",{type:"button",onClick:()=>ee(O),"aria-label":`${O+1}번째로`,"aria-current":O===U,"aria-controls":X,className:`h-1.5 rounded-full transition-all ${O===U?"w-6 bg-current opacity-70":"w-1.5 bg-current opacity-20 hover:opacity-45"}`})},O))}),n.jsxs("span",{className:"text-current/55 text-[length:var(--fs-xs)] tabular-nums",children:[U+1," / ",N.length]})]})]})}function bp({basis:i,children:r}){return n.jsx("div",{className:`min-w-0 shrink-0 grow-0 ${i}`,"aria-roledescription":"슬라이드",children:r})}function Rh({dir:i,onClick:r,disabled:u,label:o}){const f=i==="prev"?Ma:Oa;return n.jsx("button",{type:"button",onClick:r,disabled:u,"aria-label":`${o} ${i==="prev"?"이전":"다음"}`,className:"tap border-line flex items-center justify-center rounded-full border transition-opacity hover:opacity-70 disabled:opacity-25",children:n.jsx(f,{className:"size-5"})})}function Hh({dir:i,onClick:r,disabled:u,label:o}){const f=i==="prev"?Ma:Oa;return n.jsx("button",{type:"button",onClick:r,disabled:u,"aria-label":`${o} ${i==="prev"?"이전":"다음"}`,className:`tap absolute top-1/2 z-10 hidden -translate-y-1/2 items-center justify-center rounded-full bg-black/55 text-white backdrop-blur transition hover:bg-black/75 disabled:opacity-0 sm:flex ${i==="prev"?"left-2":"right-2"}`,children:n.jsx(f,{className:"size-5"})})}function xo({children:i,className:r="",as:u="div"}){return n.jsx(u,{className:`panel ${r}`,children:i})}function go({children:i}){return n.jsx("span",{className:"border-line tpl-border inline-flex items-center gap-1 rounded-md border bg-current/5 px-2.5 py-1 text-[length:var(--fs-xs)]",children:i})}function yp({label:i,value:r,note:u}){return n.jsxs("div",{className:"divide-line flex flex-col gap-1 py-3 sm:flex-row sm:items-baseline sm:justify-between sm:gap-6",children:[n.jsx("dt",{className:"text-muted shrink-0 text-[length:var(--fs-sm)] font-medium sm:w-40",children:i}),n.jsxs("dd",{className:"flex-1 text-[length:var(--fs-sm)] font-semibold sm:text-right",children:[r,u&&n.jsx("span",{className:"text-muted mt-0.5 block font-normal",children:u})]})]})}function Lh({href:i,children:r,variant:u="solid",external:o,icon:f}){const m=u==="solid";return n.jsxs("a",{href:i,...o?{target:"_blank",rel:"noopener noreferrer"}:{},className:`tap inline-flex items-center justify-center gap-2 rounded-lg px-4 text-[length:var(--fs-sm)] font-semibold transition-opacity hover:opacity-85 ${m?"":"border-line tpl-border border bg-current/5"}`,style:m?{backgroundColor:"var(--color-brand)",color:"var(--tpl-bg, #fff)"}:void 0,children:[f,n.jsx("span",{children:r}),o&&n.jsx(uc,{className:"size-4 shrink-0"})]})}function Sb(){const i=F(),{narrative:r,place:u}=i,o=c0(i,"intro"),f=o.length>0?o:r.about;if(f.length===0)return null;const m=eo(i).find(x=>!x.isPrimary),h=r.heroSubline??`${u.name} 소개`;return n.jsx(pt,{id:"about",bare:!0,title:h,children:n.jsxs("div",{className:"grid grid-cols-1 items-center gap-8 lg:grid-cols-12 lg:gap-14",children:[m&&n.jsxs("figure",{className:"lg:col-span-7",children:[n.jsx("div",{className:"tpl-border border-line relative aspect-4/3 max-h-[26rem] overflow-hidden rounded-xl border lg:aspect-3/2",children:n.jsx("img",{src:m.url,alt:m.alt,loading:"lazy",decoding:"async",width:m.width,height:m.height,className:"size-full object-cover"})}),m.caption&&n.jsx("figcaption",{className:"text-muted mt-2 text-[length:var(--fs-xs)]",children:m.caption})]}),n.jsxs("div",{className:m?"lg:col-span-5":"lg:col-span-12",children:[n.jsxs("h2",{id:"about-heading",className:"h2 mb-6 flex items-center gap-2.5",children:[n.jsx("i",{"aria-hidden":!0,className:"h-[1em] w-[3px] shrink-0 bg-current opacity-25"}),n.jsx("span",{className:"min-w-0",children:h})]}),n.jsx("div",{className:"measure space-y-4 text-[length:var(--fs-lead)] leading-[1.8]",children:f.map((x,v)=>n.jsx("p",{children:x},v))})]})]})})}const qh=new Set(["체크인 시간","체크아웃 시간","취소·환불 규정","취사 가능","반려동물 동반","흡연 가능","인원 추가 요금"]);function zb(){const i=F(),r=dc(i),u=i.facts.filter(m=>m.scope==="place"&&!r.some(h=>h.label===m.label)).length;if(r.length===0)return null;const o=r.filter(m=>qh.has(m.label)),f=r.filter(m=>!qh.has(m.label));return n.jsx(pt,{id:"info",tone:"alt",title:"이용안내 및 예약",lead:"방문 전 확인이 필요한 운영 규정과 시설 안내입니다.",footnote:n.jsxs("span",{className:"flex flex-col gap-1 sm:flex-row sm:justify-between",children:[n.jsx("span",{children:u>0?`확인 중인 항목 ${u}개는 표시하지 않았습니다. 필요하시면 전화로 문의해 주세요.`:"모든 항목이 사업자 확인을 거쳤습니다."}),n.jsxs("span",{className:"font-medium",children:[lo(i.site.updatedAt)," 기준"]})]}),children:n.jsxs("div",{className:"space-y-8",children:[o.length>0&&n.jsx(Bh,{title:"예약 전 확인",rows:o,emphasis:!0}),f.length>0&&n.jsx(Bh,{title:"시설 · 편의",rows:f}),n.jsx(Eb,{})]})})}function Bh({title:i,rows:r,emphasis:u}){return n.jsxs("section",{children:[n.jsxs("h3",{className:"border-line mb-3 flex items-center gap-2 border-b pb-2 text-[length:var(--fs-sm)] font-bold",children:[u&&n.jsx("i",{"aria-hidden":!0,className:"h-[1em] w-[3px] shrink-0",style:{backgroundColor:"var(--color-accent)"}}),n.jsx("span",{children:i})]}),n.jsx("dl",{className:"divide-line divide-y",children:r.map(o=>n.jsxs("div",{className:"flex flex-col gap-1 py-3.5 sm:flex-row sm:items-baseline sm:gap-6",children:[n.jsx("dt",{className:"text-muted text-[length:var(--fs-sm)] sm:w-40 sm:shrink-0",children:o.label}),n.jsxs("dd",{className:"measure text-[length:var(--fs-sm)] font-semibold",children:[o.value,o.note&&n.jsx("span",{className:"text-muted mt-0.5 block font-normal",children:o.note})]})]},o.label))})]})}function Eb(){const i=F(),r=et(i),u=i.place.phone;return!u&&r.length===0?null:n.jsxs("div",{className:"border-line flex flex-col gap-3 border-t pt-6 sm:flex-row sm:items-center sm:justify-between",children:[n.jsxs("p",{className:"text-[length:var(--fs-sm)] font-semibold",children:[i.place.name," 예약은 아래로 받습니다."]}),n.jsxs("div",{className:"flex flex-wrap gap-2",children:[u&&n.jsxs("a",{href:`tel:${u}`,className:"tap border-line tpl-border inline-flex items-center justify-center gap-1.5 rounded-lg border px-4 text-[length:var(--fs-sm)] font-semibold",children:[n.jsx(Jt,{className:"size-4"}),n.jsx("span",{children:u})]}),r.map(o=>n.jsxs("a",{href:o.url,target:"_blank",rel:"noopener noreferrer",className:"tap inline-flex items-center justify-center rounded-lg px-6 text-[length:var(--fs-sm)] font-bold transition-opacity hover:opacity-90",style:{backgroundColor:"var(--color-brand)",color:"var(--tpl-bg, #fff)"},children:[Pe(o),"로 예약"]},o.url))]})]})}function Ab(){const i=F(),r=dt(i),u=ll(i),o=et(i)[0];return u.length===0?null:n.jsx(pt,{id:"units",title:qe(i,r.path,`${r.label} 안내`),children:n.jsx("ul",{className:"mt-2 flex flex-col gap-14 lg:gap-20",children:u.map((f,m)=>n.jsxs("li",{className:"grid items-center gap-7 lg:grid-cols-12 lg:gap-12",children:[n.jsxs("div",{className:`lg:col-span-6 ${m%2===1?"lg:order-2":""}`,children:[f.images[0]&&n.jsx("div",{className:"relative aspect-16/10 rounded-lg overflow-hidden",children:n.jsx("img",{src:f.images[0].url,alt:f.images[0].alt,loading:"lazy",decoding:"async",className:"size-full object-cover"})}),f.images.length>1&&n.jsx("ul",{className:"mt-2 grid grid-cols-3 gap-2",children:f.images.slice(1,4).map(h=>n.jsx("li",{className:"relative aspect-16/10 rounded-md overflow-hidden",children:n.jsx("img",{src:h.url,alt:h.alt,loading:"lazy",decoding:"async",className:"size-full object-cover"})},h.mediaId))})]}),n.jsxs("div",{className:`lg:col-span-6 ${m%2===1?"lg:order-1":""}`,children:[n.jsx("h3",{className:"h2",children:f.name}),f.intro&&n.jsx("p",{className:"measure mt-3 text-[length:var(--fs-body)] leading-relaxed opacity-80",children:f.intro}),f.chips.length>0&&n.jsx("ul",{className:"mt-4 flex flex-wrap items-center gap-1.5",children:f.chips.map(h=>n.jsx("li",{children:n.jsxs(go,{children:[n.jsx("span",{className:"text-muted",children:h.label}),n.jsx("span",{className:"font-medium",children:h.value})]})},h.label))}),n.jsxs("div",{className:"mt-5 flex flex-wrap gap-2",children:[o&&n.jsxs("a",{href:o.url,target:"_blank",rel:"noopener noreferrer",className:"tap inline-flex flex-1 items-center justify-center rounded-lg px-6 text-[length:var(--fs-sm)] font-bold transition-opacity hover:opacity-90",style:{backgroundColor:"var(--color-brand)",color:"var(--tpl-bg, #fff)"},children:[f.name," ",Pe(o)," 예약"]}),i.place.phone&&n.jsxs("a",{href:`tel:${i.place.phone}`,className:"tap border-line tpl-border inline-flex items-center justify-center gap-1.5 rounded-lg border px-4 text-[length:var(--fs-sm)] font-semibold",children:[n.jsx(Jt,{className:"size-4"}),n.jsx("span",{children:"전화"})]})]}),f.rows.length>0&&n.jsxs("details",{className:"group border-line mt-4 border-t pt-2",children:[n.jsxs("summary",{className:"tap flex cursor-pointer list-none items-center justify-between gap-2 text-[length:var(--fs-sm)] font-semibold",children:[n.jsxs("span",{children:[f.name," 구성 자세히"]}),n.jsx(oc,{className:"size-4 shrink-0 transition-transform group-open:rotate-180"})]}),n.jsx("dl",{className:"divide-line border-line divide-y border-t",children:f.rows.map(h=>n.jsxs("div",{className:"flex items-baseline justify-between gap-4 py-2.5 text-[length:var(--fs-sm)]",children:[n.jsx("dt",{className:"text-muted shrink-0",children:h.label}),n.jsx("dd",{className:"text-right font-semibold",children:h.value})]},h.label))})]})]})]},f.unitId))})})}function Tb(){const i=F(),r=dt(i),u=ll(i),o=et(i)[0],[f,m]=Y.useState(0);return u.length===0?null:n.jsxs(pt,{id:"units",title:qe(i,r.path,`${r.label} 안내`),children:[n.jsx("div",{className:"border-line mb-6 flex gap-1 border-b",role:"tablist","aria-label":r.label,children:u.map((h,x)=>n.jsx("button",{type:"button",role:"tab","aria-selected":x===f,"aria-controls":`unit-panel-${h.slug}`,onClick:()=>m(x),className:`tap -mb-px border-b-2 px-5 text-[length:var(--fs-sm)] font-bold transition-colors ${x===f?"opacity-100":"border-transparent opacity-50 hover:opacity-80"}`,style:x===f?{borderColor:"var(--color-brand)"}:void 0,children:h.name},h.unitId))}),u.map((h,x)=>n.jsxs("div",{id:`unit-panel-${h.slug}`,role:"tabpanel",hidden:x!==f,className:"grid gap-6 lg:grid-cols-12 lg:gap-10",children:[n.jsxs("div",{className:"lg:col-span-7",children:[h.images[0]&&n.jsx("div",{className:"relative aspect-16/10 overflow-hidden rounded-lg",children:n.jsx("img",{src:h.images[0].url,alt:h.images[0].alt,loading:"lazy",decoding:"async",className:"size-full object-cover"})}),h.images.length>1&&n.jsx("ul",{className:"mt-2 grid grid-cols-3 gap-2",children:h.images.slice(1,4).map(v=>n.jsx("li",{className:"relative aspect-16/10 overflow-hidden rounded-md",children:n.jsx("img",{src:v.url,alt:v.alt,loading:"lazy",decoding:"async",className:"size-full object-cover"})},v.mediaId))})]}),n.jsxs("div",{className:"lg:col-span-5",children:[n.jsx("h3",{className:"h3",children:h.name}),h.intro&&n.jsx("p",{className:"mt-2 text-[length:var(--fs-sm)] leading-relaxed opacity-75",children:h.intro}),h.chips.length>0&&n.jsx("ul",{className:"mt-4 flex flex-wrap items-center gap-1.5",children:h.chips.map(v=>n.jsx("li",{children:n.jsxs(go,{children:[n.jsx("span",{className:"text-muted",children:v.label}),n.jsx("span",{className:"font-medium",children:v.value})]})},v.label))}),h.rows.length>0&&n.jsx("dl",{className:"divide-line border-line mt-4 divide-y border-t",children:h.rows.map(v=>n.jsxs("div",{className:"flex items-baseline justify-between gap-4 py-2 text-[length:var(--fs-sm)]",children:[n.jsx("dt",{className:"text-muted shrink-0",children:v.label}),n.jsx("dd",{className:"text-right font-semibold",children:v.value})]},v.label))}),n.jsxs("div",{className:"mt-5 flex gap-2",children:[o&&n.jsxs("a",{href:o.url,target:"_blank",rel:"noopener noreferrer",className:"tap flex flex-1 items-center justify-center rounded-lg px-6 text-[length:var(--fs-sm)] font-bold transition-opacity hover:opacity-90",style:{backgroundColor:"var(--color-brand)",color:"var(--tpl-bg, #fff)"},children:[h.name," ",Pe(o)," 예약"]}),i.place.phone&&n.jsxs("a",{href:`tel:${i.place.phone}`,className:"tap border-line tpl-border flex items-center justify-center gap-1.5 rounded-lg border px-4 text-[length:var(--fs-sm)] font-semibold",children:[n.jsx(Jt,{className:"size-4"}),n.jsx("span",{children:"전화"})]})]})]})]},h.unitId))]})}function _b(){const i=F(),r=dt(i),u=ll(i),o=et(i)[0];if(u.length===0)return null;const f=u.length===1?"grid-cols-1 max-w-2xl mx-auto":u.length===2?"grid-cols-1 sm:grid-cols-2":"grid-cols-1 sm:grid-cols-2 lg:grid-cols-3",m=Kt(i,"info")?[]:dc(i);return n.jsx("section",{id:"units","aria-labelledby":"units-heading",className:"border-line paper w-full border-b",style:{backgroundColor:"var(--tpl-surface, #fff)",paddingBlock:"calc(var(--section-space) * 1.4)"},children:n.jsxs("div",{className:"shell",children:[n.jsx(no,{id:"units",title:qe(i,r.path,`${r.label} 안내`)}),n.jsx("ul",{className:`grid gap-x-8 gap-y-14 lg:gap-x-12 ${f}`,children:u.map(h=>n.jsxs("li",{className:"flex min-w-0 flex-col",children:[h.images[0]&&n.jsx("div",{className:"relative aspect-4/3 w-full overflow-hidden",children:n.jsx("img",{src:h.images[0].url,alt:h.images[0].alt,loading:"lazy",decoding:"async",className:"size-full object-cover object-center"})}),n.jsx("h3",{className:"serif mt-6",style:{fontSize:"var(--fs-h3)",fontWeight:300,letterSpacing:"0.04em"},children:h.name}),h.intro&&n.jsx("p",{className:"text-muted mt-3 line-clamp-2 text-[length:var(--fs-sm)] font-light leading-loose",children:h.intro}),h.chips.length>0&&n.jsx("ul",{className:"text-muted mt-3 flex flex-wrap items-center gap-x-4 gap-y-1 text-[length:var(--fs-xs)] font-light",children:h.chips.map(x=>n.jsxs("li",{children:[x.label," ",x.value]},x.label))}),(h.rows.length>0||h.images.length>1)&&n.jsxs("details",{className:"border-line mt-5 border-t",children:[n.jsx("summary",{className:"tap flex cursor-pointer list-none items-center text-[length:var(--fs-sm)] font-light opacity-70 marker:content-none [&::-webkit-details-marker]:hidden",children:"자세히 보기"}),n.jsxs("div",{className:"space-y-6 pb-2",children:[h.rows.length>0&&n.jsx("dl",{className:"divide-line divide-y",children:h.rows.map(x=>n.jsxs("div",{className:"flex items-baseline justify-between gap-4 py-2.5 text-[length:var(--fs-sm)] font-light",children:[n.jsx("dt",{className:"text-muted shrink-0",children:x.label}),n.jsx("dd",{className:"text-right",children:x.value})]},x.label))}),h.images.length>1&&n.jsx("ul",{className:"grid grid-cols-2 gap-3",children:h.images.slice(1).map(x=>n.jsx("li",{className:"relative aspect-4/3 overflow-hidden",children:n.jsx("img",{src:x.url,alt:x.alt,loading:"lazy",decoding:"async",className:"size-full object-cover object-center"})},x.mediaId))})]})]})]},h.unitId))}),m.length>0&&n.jsx("dl",{className:"divide-line border-line mx-auto mt-16 max-w-2xl divide-y border-t",children:m.map(h=>n.jsxs("div",{className:"flex items-baseline justify-between gap-4 py-3 text-[length:var(--fs-sm)] font-light",children:[n.jsx("dt",{className:"text-muted shrink-0",children:h.label}),n.jsx("dd",{className:"text-right",children:h.value})]},h.label))}),(o||i.place.phone)&&n.jsxs("div",{className:"mt-14 flex flex-wrap items-center justify-center gap-4",children:[o&&n.jsxs("a",{href:o.url,target:"_blank",rel:"noopener noreferrer",className:"tap border-line inline-flex items-center justify-center border px-9 text-[length:var(--fs-sm)] font-light tracking-[0.14em] transition-opacity hover:opacity-70",children:[Pe(o)," 예약"]}),i.place.phone&&n.jsx("a",{href:`tel:${i.place.phone}`,className:"tap border-line inline-flex items-center justify-center border px-9 text-[length:var(--fs-sm)] font-light tabular-nums tracking-[0.08em] transition-opacity hover:opacity-70",children:i.place.phone})]})]})})}function wb(){const i=F(),r=dt(i),u=ll(i),o=et(i)[0];return u.length===0?null:n.jsxs("section",{id:"units","data-oasi":!0,"aria-labelledby":"units-heading",className:"pt-[var(--oasi-gap)]",children:[n.jsx(so,{id:"units",title:qe(i,r.path,`${r.label} ${u.length}개 안내`)}),n.jsx("ul",{className:"space-y-20 lg:space-y-28",children:u.map(f=>n.jsxs("li",{children:[f.images[0]&&n.jsxs("figure",{className:"relative mx-auto w-full max-w-[34rem]",children:[n.jsx("img",{src:f.images[0].url,alt:f.images[0].alt,loading:"lazy",decoding:"async",className:"block h-[clamp(15rem,24vw,21rem)] w-full object-cover"}),n.jsx("figcaption",{className:"text-muted absolute left-full top-0 ml-5 hidden max-h-full overflow-hidden text-ellipsis whitespace-nowrap text-[length:var(--fs-xs)] tracking-[0.14em] xl:block",style:{writingMode:"vertical-rl"},children:f.name})]}),n.jsx("h3",{className:"mt-8 text-[length:var(--fs-sm)] font-normal tracking-[0.08em]",children:f.name}),f.chips.length>0&&n.jsx("p",{className:"text-muted mt-2 text-[length:var(--fs-xs)] leading-[1.9]",children:f.chips.map(m=>`${m.label} ${m.value}`).join(" · ")}),f.intro&&n.jsx("p",{className:"measure mt-4 text-[length:var(--fs-xs)] leading-[1.9]",children:f.intro}),f.rows.length>0&&n.jsx("dl",{className:"divide-line border-line mt-6 divide-y border-t text-[length:var(--fs-xs)]",children:f.rows.map(m=>n.jsxs("div",{className:"flex items-baseline justify-between gap-6 py-2.5",children:[n.jsx("dt",{className:"text-muted shrink-0",children:m.label}),n.jsx("dd",{className:"text-right",children:m.value})]},m.label))}),f.images.length>1&&n.jsx("ul",{className:"mx-auto mt-6 grid w-full max-w-[34rem] grid-cols-2 gap-2",children:f.images.slice(1).map(m=>n.jsx("li",{children:n.jsx("img",{src:m.url,alt:m.alt,loading:"lazy",decoding:"async",className:"block aspect-[4/3] w-full object-cover"})},m.mediaId))}),(o||i.place.phone)&&n.jsxs("p",{className:"mt-6 flex flex-wrap items-center gap-x-8 text-[length:var(--fs-sm)]",children:[o&&n.jsxs("a",{href:o.url,target:"_blank",rel:"noopener noreferrer",className:"tap inline-flex items-center underline underline-offset-[6px]",style:{color:"var(--color-brand)"},children:[Pe(o)," 예약"]}),i.place.phone&&n.jsx("a",{href:`tel:${i.place.phone}`,className:"tap text-muted inline-flex items-center underline underline-offset-[6px]",children:i.place.phone})]})]},f.unitId))})]})}function Cb(){const i=F(),r=dt(i),u=ll(i);return u.length===0?null:n.jsx("section",{id:"units","aria-labelledby":"units-heading",className:"w-full",style:{paddingBlock:"var(--section-space)",backgroundColor:"var(--tpl-bg)"},children:n.jsxs("div",{className:"shell",children:[n.jsx(io,{id:"units",title:qe(i,r.path,`${r.label} ${u.length}개 안내`)}),n.jsx("ul",{className:"space-y-16 sm:space-y-24",children:u.map(o=>n.jsxs("li",{className:"grid grid-cols-1 gap-6 lg:grid-cols-12 lg:gap-10",children:[n.jsxs("div",{className:"min-w-0 lg:col-span-7",children:[o.images[0]&&n.jsx("img",{src:o.images[0].url,alt:o.images[0].alt,loading:"lazy",decoding:"async",width:o.images[0].width,height:o.images[0].height,className:"block h-auto w-full"}),o.images.length>1&&n.jsx("ul",{className:"mt-2 grid grid-cols-2 gap-2",children:o.images.slice(1).map(f=>n.jsx("li",{children:n.jsx("img",{src:f.url,alt:f.alt,loading:"lazy",decoding:"async",width:f.width,height:f.height,className:"block h-auto w-full"})},f.mediaId))})]}),n.jsxs("div",{className:"min-w-0 lg:col-span-5",children:[n.jsx("h3",{className:"serif min-w-0 break-keep font-extrabold",style:{fontSize:"var(--fs-h3)",letterSpacing:"0.02em",lineHeight:1.35},children:o.name}),o.chips.length>0&&n.jsx("dl",{className:"mt-4 space-y-1.5",children:o.chips.map(f=>n.jsxs("div",{className:"flex gap-3 text-[length:var(--fs-sm)]",children:[n.jsx("dt",{className:"text-muted w-20 shrink-0",children:f.label}),n.jsx("dd",{className:"min-w-0 font-medium",children:f.value})]},f.label))}),o.intro&&n.jsx("p",{className:"text-muted measure mt-5 text-[length:var(--fs-sm)]",style:{lineHeight:1.8},children:o.intro})]})]},o.unitId))})]})})}function Mb(){const i=F(),r=dt(i),u=ll(i),o=et(i)[0];return u.length===0?null:n.jsx("section",{id:"units","aria-labelledby":"units-heading","data-pastel":"own",className:"w-full",style:{backgroundColor:"var(--tpl-surface, #fff)",paddingBlock:"var(--section-space)"},children:n.jsxs("div",{className:"shell",children:[n.jsx(co,{id:"units",title:qe(i,r.path,`${r.label} ${u.length}개 안내`)}),n.jsx("ul",{className:"grid grid-cols-1 gap-6 sm:grid-cols-2 lg:gap-8",children:u.map((f,m)=>n.jsxs("li",{className:"flex flex-col overflow-hidden p-4 sm:p-5",style:{backgroundColor:m%2===0?"var(--pastel-1)":"var(--pastel-2)",borderRadius:"calc(var(--tpl-radius, 0.75rem) * 1.35)"},children:[f.images[0]&&n.jsx("div",{className:"relative aspect-16/10 overflow-hidden",style:{borderRadius:"var(--tpl-radius, 0.75rem)"},children:n.jsx("img",{src:f.images[0].url,alt:f.images[0].alt,loading:"lazy",decoding:"async",className:"size-full object-cover"})}),n.jsxs("div",{className:"flex flex-1 flex-col gap-3 px-1 pt-4",children:[n.jsx("div",{className:"flex flex-wrap items-baseline justify-between gap-x-3 gap-y-1",children:n.jsx("h3",{className:"h3",style:{fontWeight:800},children:f.name})}),f.chips.length>0&&n.jsx("ul",{className:"flex flex-wrap items-center gap-1.5",children:f.chips.map(h=>n.jsxs("li",{className:"inline-flex items-center gap-1 rounded-full px-3 py-1 text-[length:var(--fs-xs)]",style:{backgroundColor:"color-mix(in srgb, var(--tpl-surface, #fff) 70%, transparent)"},children:[n.jsx("span",{className:"opacity-60",children:h.label}),n.jsx("span",{className:"font-bold",children:h.value})]},h.label))}),f.intro&&n.jsx("p",{className:"text-[length:var(--fs-sm)] leading-relaxed opacity-75",children:f.intro})]}),(o||i.place.phone)&&n.jsxs("div",{className:"mt-4 flex gap-2 px-1",children:[o&&n.jsxs("a",{href:o.url,target:"_blank",rel:"noopener noreferrer",className:"tap flex flex-1 items-center justify-center rounded-full text-[length:var(--fs-sm)] font-extrabold transition-opacity hover:opacity-90",style:{backgroundColor:"var(--pastel-ink)",color:"var(--tpl-bg, #fff)"},children:[Pe(o)," 예약"]}),i.place.phone&&n.jsxs("a",{href:`tel:${i.place.phone}`,className:"tap flex items-center justify-center gap-1.5 rounded-full px-5 text-[length:var(--fs-sm)] font-bold",style:{backgroundColor:"color-mix(in srgb, var(--tpl-surface, #fff) 75%, transparent)"},children:[n.jsx(Jt,{className:"size-4"}),n.jsx("span",{children:"전화"})]})]}),(f.rows.length>0||f.images.length>1)&&n.jsxs("details",{className:"group mt-3 px-1",children:[n.jsxs("summary",{className:"tap flex cursor-pointer list-none items-center justify-between gap-2 text-[length:var(--fs-sm)] font-bold marker:content-none [&::-webkit-details-marker]:hidden",children:[n.jsxs("span",{children:[f.name," 자세히"]}),n.jsx(oc,{className:"size-4 shrink-0 transition-transform group-open:rotate-180"})]}),n.jsxs("div",{className:"space-y-4 pb-1",children:[f.rows.length>0&&n.jsx("dl",{className:"divide-line divide-y",children:f.rows.map(h=>n.jsxs("div",{className:"flex items-baseline justify-between gap-4 py-2.5 text-[length:var(--fs-sm)]",children:[n.jsx("dt",{className:"shrink-0 opacity-60",children:h.label}),n.jsx("dd",{className:"text-right font-bold",children:h.value})]},h.label))}),f.images.length>1&&n.jsx("ul",{className:"grid grid-cols-2 gap-2",children:f.images.slice(1).map(h=>n.jsx("li",{className:"relative aspect-4/3 overflow-hidden",style:{borderRadius:"calc(var(--tpl-radius, 0.75rem) * 0.7)"},children:n.jsx("img",{src:h.url,alt:h.alt,loading:"lazy",decoding:"async",className:"size-full object-cover"})},h.mediaId))})]})]})]},f.unitId))})]})})}function Ob(){const i=F(),r=ll(i),u=dt(i),o=et(i)[0];return r.length===0?null:n.jsxs("section",{id:"units","aria-labelledby":"units-heading",className:"border-line w-full border-b",style:{backgroundColor:"var(--tpl-surface)",backgroundImage:Ms,paddingBlock:"var(--section-space)"},children:[n.jsx("div",{className:"shell",children:n.jsx(to,{id:"units",title:qe(i,u.path,`${u.label} ${r.length}개 안내`)})}),r.map((f,m)=>n.jsx(Db,{unit:f,no:String(m+1).padStart(2,"0"),dark:m%2===1,booking:o,phone:i.place.phone},f.unitId))]})}function Db({unit:i,no:r,dark:u,booking:o,phone:f}){return n.jsx("article",{className:"w-full",style:u?{backgroundColor:"var(--tpl-inverse)",color:"var(--tpl-bg)",backgroundImage:Ms}:void 0,children:n.jsxs("div",{className:"shell grid grid-cols-12 gap-y-6 py-10 xl:gap-x-10 xl:py-16",children:[n.jsxs("div",{className:"col-span-12 xl:col-span-5 xl:pr-8",children:[n.jsxs("div",{className:"relative",children:[n.jsx("span",{"aria-hidden":!0,className:"serif pointer-events-none absolute -top-1 left-0 select-none leading-none tabular-nums",style:{fontSize:"clamp(3rem, 8vw, 6rem)",fontWeight:800,opacity:.1},children:r}),n.jsx("h3",{className:"serif relative pt-7 xl:pt-12",style:{fontSize:"clamp(1.5rem, 3vw, 2.25rem)",fontWeight:800,lineHeight:1.1,letterSpacing:"-0.02em"},children:i.name})]}),i.intro&&n.jsx("p",{className:"measure mt-4 font-serif text-[length:var(--fs-body)] leading-relaxed opacity-85",children:i.intro}),i.rows.length>0&&n.jsx("dl",{className:"border-line mt-6 border-t",children:i.rows.map(m=>n.jsxs("div",{className:"border-line flex items-baseline justify-between gap-6 border-b py-2.5 text-[length:var(--fs-sm)]",children:[n.jsx("dt",{className:"text-muted shrink-0",children:m.label}),n.jsx("dd",{className:"text-right font-semibold",children:m.value})]},m.label))}),(o||f)&&n.jsxs("div",{className:"mt-6 flex flex-wrap items-center gap-x-6 gap-y-1 text-[length:var(--fs-sm)] font-bold",children:[o&&n.jsxs("a",{href:o.url,target:"_blank",rel:"noopener noreferrer",className:"tap inline-flex items-center underline underline-offset-4",children:[Pe(o)," 예약"]}),f&&n.jsx("a",{href:`tel:${f}`,className:"tap inline-flex items-center underline underline-offset-4",children:f})]})]}),n.jsxs("div",{className:"col-span-12 xl:col-span-7 xl:-ml-10",children:[i.images[0]&&n.jsx("figure",{className:"w-full xl:w-[64%]",children:n.jsx("img",{src:i.images[0].url,alt:i.images[0].alt,loading:"lazy",decoding:"async",width:i.images[0].width,height:i.images[0].height,className:"w-full object-cover",style:{aspectRatio:"4 / 5"}})}),i.images[1]&&n.jsx("figure",{className:"mt-3 w-full xl:-mt-24 xl:ml-auto xl:w-[50%]",children:n.jsx("img",{src:i.images[1].url,alt:i.images[1].alt,loading:"lazy",decoding:"async",width:i.images[1].width,height:i.images[1].height,className:"w-full object-cover",style:{aspectRatio:"4 / 3"}})})]}),i.images.length>2&&n.jsx("ul",{className:"col-span-12 grid grid-cols-3 gap-2 xl:grid-cols-6",children:i.images.slice(2).map(m=>n.jsx("li",{children:n.jsx("img",{src:m.url,alt:m.alt,loading:"lazy",decoding:"async",width:m.width,height:m.height,className:"w-full object-cover",style:{aspectRatio:"3 / 2"}})},m.mediaId))})]})})}function qu(){var h;const i=F(),r=dt(i),u=hc();if(u==="reservation")return n.jsx(_b,{});if(u==="oasi")return n.jsx(wb,{});if(u==="studio")return n.jsx(Cb,{});if(u==="pastel")return n.jsx(Mb,{});if(u==="editorial")return n.jsx(Ob,{});const o=(h=i.theme.sections.find(x=>x.id===r.path))==null?void 0:h.variantId;if(o==="rooms.bands")return n.jsx(Ab,{});if(o==="rooms.tabs")return n.jsx(Tb,{});const f=ll(i);if(f.length===0)return null;const m=f.length===1?"grid-cols-1":f.length===2?"grid-cols-1 sm:grid-cols-2":"grid-cols-1 sm:grid-cols-2 xl:grid-cols-3";return n.jsx(pt,{id:"units",title:qe(i,r.path,`${r.label} ${f.length}개 안내`),children:n.jsx("ul",{className:`grid gap-5 lg:gap-7 ${m}`,children:f.map(x=>n.jsxs(xo,{as:"li",className:"flex flex-col overflow-hidden",children:[n.jsxs("div",{className:"flex flex-1 flex-col",children:[x.images.length>0&&n.jsx(kb,{images:x.images,name:x.name}),n.jsxs("div",{className:"flex flex-1 flex-col gap-3 p-5",children:[n.jsx("h3",{className:"h3",children:x.name}),x.chips.length>0&&n.jsx("ul",{className:"flex flex-wrap items-center gap-1.5",children:x.chips.map(v=>n.jsx("li",{children:n.jsxs(go,{children:[n.jsx("span",{className:"text-muted",children:v.label}),n.jsx("span",{className:"font-medium",children:v.value})]})},v.label))}),x.intro&&n.jsx("p",{className:"text-[length:var(--fs-sm)] leading-relaxed opacity-75",children:x.intro})]})]}),x.rows.length>0&&n.jsxs("details",{className:"group border-line border-t",children:[n.jsxs("summary",{className:"tap flex cursor-pointer list-none items-center justify-between gap-2 px-5 text-[length:var(--fs-sm)] font-semibold",children:[n.jsxs("span",{children:[x.name," 자세히"]}),n.jsx(oc,{className:"size-4 shrink-0 transition-transform group-open:rotate-180"})]}),n.jsx("div",{className:"space-y-5 px-5 pb-5",children:x.rows.length>0&&n.jsx("dl",{className:"divide-line border-line divide-y border-t",children:x.rows.map(v=>n.jsxs("div",{className:"flex items-baseline justify-between gap-4 py-2.5 text-[length:var(--fs-sm)]",children:[n.jsx("dt",{className:"text-muted shrink-0",children:v.label}),n.jsx("dd",{className:"text-right font-semibold",children:v.value})]},v.label))})})]})]},x.unitId))})})}function kb({images:i,name:r}){const u=Y.useRef(null),[o,f]=Y.useState(0),m=Y.useCallback(()=>{const x=u.current;!x||x.clientWidth===0||f(Math.round(x.scrollLeft/x.clientWidth))},[]);gc({box:u,interval:xc,advance:()=>ho(u.current,1)});const h=Y.useCallback(x=>{const v=u.current;if(!v)return;const p=window.matchMedia("(prefers-reduced-motion: reduce)").matches;v.scrollBy({left:x*v.clientWidth,behavior:p?"auto":"smooth"})},[]);return n.jsxs("div",{className:"relative",children:[n.jsx("ul",{ref:u,onScroll:m,"aria-label":`${r} 사진`,className:"flex snap-x snap-mandatory overflow-x-auto [scrollbar-width:none] [&::-webkit-scrollbar]:hidden",children:i.map(x=>n.jsx("li",{className:"w-full shrink-0 snap-center",children:n.jsx("div",{className:"relative aspect-16/10 overflow-hidden",children:n.jsx("img",{src:x.url,alt:x.alt,loading:"lazy",decoding:"async",className:"size-full object-cover"})})},x.mediaId))}),i.length>1&&n.jsxs(n.Fragment,{children:[n.jsx(Yh,{dir:"prev",show:o>0,onClick:()=>h(-1)}),n.jsx(Yh,{dir:"next",show:oh(1)}),n.jsxs("span",{className:"pointer-events-none absolute bottom-2.5 right-2.5 rounded-full bg-black/55 px-2 py-0.5 text-[length:var(--fs-xs)] font-semibold tabular-nums text-white",children:[Math.min(o+1,i.length)," / ",i.length]})]})]})}function Yh({dir:i,show:r,onClick:u}){const o=i==="prev"?Ma:Oa;return n.jsx("button",{type:"button",onClick:u,"aria-label":i==="prev"?"이전 사진":"다음 사진","aria-hidden":!r,tabIndex:r?0:-1,className:`absolute top-1/2 z-10 flex size-8 -translate-y-1/2 items-center justify-center rounded-full bg-black/45 text-white backdrop-blur-sm transition-opacity hover:bg-black/65 ${r?"opacity-100":"pointer-events-none opacity-0"} ${i==="prev"?"left-2":"right-2"}`,children:n.jsx(o,{className:"size-4"})})}function Ub(){const i=F(),r=ll(i).filter(f=>f.prices.length>0);if(r.length===0)return null;const u=r[0].prices.map(f=>f.label),o=[ic(i,"extra_person_fee"),ic(i,"check_in_time"),ic(i,"check_out_time")].filter(f=>f!==void 0);return n.jsxs(pt,{id:"pricing",tone:"alt",title:qe(i,"pricing","요금 안내"),footnote:"'문의' 로 표시된 요금은 시기에 따라 달라져 전화로 안내드립니다.",children:[n.jsx("div",{className:"panel overflow-x-auto",children:n.jsxs("table",{className:"w-full min-w-[30rem] border-collapse text-[length:var(--fs-sm)]",children:[n.jsxs("caption",{className:"sr-only",children:[i.place.name," 객실별 1박 요금"]}),n.jsx("thead",{children:n.jsxs("tr",{className:"border-line border-b",children:[n.jsx("th",{scope:"col",className:"label px-5 py-3 text-left font-medium",children:"객실"}),u.map(f=>n.jsx("th",{scope:"col",className:"label px-5 py-3 text-right font-medium",children:f},f))]})}),n.jsx("tbody",{className:"divide-line divide-y",children:r.map(f=>n.jsxs("tr",{children:[n.jsx("th",{scope:"row",className:"px-5 py-3.5 text-left font-semibold",children:f.name}),f.prices.map(m=>n.jsx("td",{className:`px-5 py-3.5 text-right tabular-nums ${/\d/.test(m.value)?"font-bold":"text-muted"}`,children:m.value},m.label))]},f.unitId))})]})}),o.length>0&&n.jsx("dl",{className:"divide-line mt-4 grid gap-x-8 gap-y-2 sm:grid-cols-3 sm:divide-x",children:o.map(f=>n.jsxs("div",{className:"sm:px-5 sm:first:pl-0",children:[n.jsx("dt",{className:"label",children:f.label}),n.jsx("dd",{className:"text-[length:var(--fs-lead)] font-bold tabular-nums",children:f.value})]},f.label))})]})}function Rb(){const i=F(),r=et(i),u=u0(i),o=i.place.phone;return r.length===0&&u.length===0&&!o?null:n.jsx(pt,{id:"booking",tone:"alt",title:qe(i,"booking","예약 안내"),lead:`${i.place.name} 예약은 아래 경로로 받습니다.`,children:n.jsxs("div",{className:"grid gap-6 lg:grid-cols-12 lg:gap-10",children:[u.length>0&&n.jsx("dl",{className:"panel divide-line divide-y overflow-hidden px-5 lg:col-span-7",children:u.map(f=>n.jsx(yp,{label:f.label,value:f.value},f.label))}),n.jsx("div",{className:u.length>0?"lg:col-span-5":"lg:col-span-12",children:n.jsxs("div",{className:u.length>0?"flex flex-col gap-2.5 sm:flex-row sm:flex-wrap lg:flex-col":"flex flex-col items-start gap-2.5 sm:flex-row sm:flex-wrap",children:[o&&n.jsxs(Lh,{href:`tel:${o}`,icon:n.jsx(Jt,{className:"size-4"}),children:["전화 예약 ",o]}),r.map(f=>n.jsx(Lh,{href:f.url,variant:"outline",external:!0,children:Rl(f)},f.url))]})})]})})}function Hb(){const i=F(),r=f0(i);return r.length===0?null:n.jsx(pt,{id:"space",title:qe(i,"space","공간 안내"),lead:"좌석과 이용 환경 안내입니다.",children:n.jsx("dl",{className:"grid grid-cols-2 gap-3 sm:grid-cols-3 lg:grid-cols-4 lg:gap-4",children:r.map(u=>n.jsxs(xo,{className:"p-4 sm:p-5",children:[n.jsx("dt",{className:"text-muted mb-1 text-[length:var(--fs-xs)] font-medium",children:u.label}),n.jsx("dd",{className:"text-[length:var(--fs-lead)] font-bold",children:u.value})]},u.label))})})}function Lb(){const i=F(),{place:r}=i,u=Ls(i);if(!r.phone&&!r.email&&u.length===0)return null;const o=[...r.phone?[{key:"phone",icon:Jt,label:"전화",value:r.phone,href:`tel:${r.phone}`}]:[],...r.email?[{key:"email",icon:ap,label:"이메일",value:r.email,href:`mailto:${r.email}`}]:[],...u.map(f=>({key:f.url,icon:Fu,label:Rl(f),value:"바로 가기",href:f.url,external:!0}))];return n.jsx(pt,{id:"inquiry",title:qe(i,"inquiry","문의 안내"),lead:`궁금한 점은 아래로 연락 주시면 ${r.name}에서 직접 안내해 드립니다.`,children:n.jsx("ul",{className:"grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-3 lg:gap-4",children:o.map(f=>{const m=f.icon,h="external"in f&&f.external;return n.jsx("li",{children:n.jsxs("a",{href:f.href,...h?{target:"_blank",rel:"noopener noreferrer"}:{},className:"panel flex h-full items-center justify-between gap-3 p-5 transition-opacity hover:opacity-80",children:[n.jsxs("span",{className:"flex min-w-0 items-center gap-3",children:[n.jsx(m,{className:"size-5 shrink-0 opacity-40"}),n.jsxs("span",{className:"min-w-0",children:[n.jsx("span",{className:"text-muted block text-[length:var(--fs-xs)] font-medium",children:f.label}),n.jsx("span",{className:"block break-all text-[length:var(--fs-sm)] font-semibold",children:f.value})]})]}),h&&n.jsx(uc,{className:"size-4 shrink-0 opacity-40"})]})},f.key)})})})}function qb(){const i=F(),r=m0(i);return r.length===0?null:n.jsx(pt,{id:"exhibition",tone:"alt",title:qe(i,"exhibition","관람 안내"),lead:"방문 전 관람 조건을 확인해 주세요.",children:n.jsx("dl",{className:"panel divide-line divide-y overflow-hidden px-5",children:r.map(u=>n.jsx(yp,{label:u.label,value:u.value},u.label))})})}function jp(){const[i,r]=Y.useState([]);return Y.useEffect(()=>r(Jv()),[]),i}const Bb=["봄","여름","가을","겨울"];function Yb(){const i=F(),r=i.local.festivals,u=jp(),[o,f]=Y.useState(null);if(r.length===0)return null;const m=Bb.filter(y=>r.some(E=>E.season===y)),h=r.filter(y=>{var E;return!((E=y.season)!=null&&E.trim())}),x=[...u].reverse().find(y=>m.includes(y)),v="전체",p=o??x??null,b=p===v;return n.jsxs(pt,{id:"festival",title:"계절별 축제",lead:`${i.place.addressLocality??"이 지역"}의 축제와 행사를 계절로 묶었습니다.`,aside:p&&!b?n.jsxs("p",{className:"text-muted text-[length:var(--fs-xs)]",children:["지금은 ",p," 축제입니다"]}):void 0,footnote:n.jsx(n.Fragment,{children:"한국관광공사 TourAPI 기준. 일정은 주최 측 사정으로 바뀔 수 있습니다."}),children:[m.length>1&&n.jsx("div",{className:"mb-6 flex flex-wrap gap-1.5",role:"tablist","aria-label":"계절",children:[...m,v].map(y=>{const E=p===y;return n.jsx("button",{type:"button",role:"tab","aria-selected":E,onClick:()=>f(y),className:"border-line rounded-full border px-4 py-1.5 text-[length:var(--fs-sm)] font-bold transition-opacity hover:opacity-80",style:E?{backgroundColor:"var(--color-brand)",color:"var(--tpl-bg, #fff)",borderColor:"transparent"}:void 0,children:y},y)})}),n.jsxs("div",{className:"space-y-8",children:[m.map(y=>{const E=r.filter(T=>T.season===y);return n.jsxs("div",{hidden:!b&&p!==null&&p!==y,children:[n.jsx("h3",{className:"border-line mb-4 border-b pb-2 text-[length:var(--fs-sm)] font-bold",children:y}),n.jsx(Gh,{items:E,label:`${y} 축제`,remount:p})]},y)}),h.length>0&&n.jsxs("div",{children:[n.jsx("h3",{className:"border-line mb-4 border-b pb-2 text-[length:var(--fs-sm)] font-bold",children:"계절 없이 열리는 행사"}),n.jsx(Gh,{items:h,label:"계절 없이 열리는 행사"})]})]})]})}function Gh({items:i,label:r,remount:u}){return n.jsx(po,{label:r,children:i.map(o=>n.jsx(bp,{basis:"basis-[76%] sm:basis-1/3 lg:basis-1/4",children:n.jsxs("a",{href:Vu(o.searchQuery),target:"_blank",rel:"noopener noreferrer nofollow",className:"panel group flex h-full flex-col overflow-hidden transition-opacity hover:opacity-85",children:[n.jsxs("span",{className:"relative block aspect-4/3 overflow-hidden",children:[o.imageUrl?n.jsx("img",{src:o.imageUrl,alt:`${o.name} 사진`,loading:"lazy",decoding:"async",className:"size-full object-cover transition-transform duration-500 group-hover:scale-105"}):n.jsx("span",{className:"serif grid size-full place-items-center px-3 text-center text-[length:var(--fs-lead)] leading-tight",style:{backgroundColor:"color-mix(in oklab, currentColor 9%, transparent)"},"aria-hidden":!0,children:o.name}),n.jsx("span",{className:"absolute bottom-2 left-2 rounded-md px-2 py-0.5 text-[length:var(--fs-xs)] font-bold",style:{backgroundColor:"color-mix(in srgb, var(--tpl-inverse, #1c1917) 78%, transparent)",color:"var(--tpl-bg, #fff)"},children:o.month})]}),n.jsxs("span",{className:"flex min-w-0 flex-1 flex-col gap-1 p-3.5",children:[n.jsx("span",{className:"text-[length:var(--fs-sm)] font-bold",children:o.name}),o.period&&n.jsx("span",{className:"text-[length:var(--fs-xs)] font-medium opacity-80",children:o.period}),o.location&&n.jsxs("span",{className:"text-muted flex items-start gap-1 text-[length:var(--fs-xs)]",children:[n.jsx(Rs,{className:"mt-0.5 size-3 shrink-0 opacity-60"}),n.jsx("span",{children:o.location})]}),o.description&&n.jsx("span",{className:"text-muted line-clamp-3 pt-0.5 text-[length:var(--fs-xs)] leading-relaxed",children:o.description}),n.jsxs("span",{className:"text-muted mt-auto flex items-center gap-0.5 pt-1.5 text-[length:var(--fs-xs)] opacity-70 transition-opacity group-hover:opacity-100",children:[n.jsx("span",{children:"검색으로 열기"}),n.jsx(uc,{className:"size-3.5"})]})]})]})},o.name))},u??"all")}const _s=80,Qh=[{id:"all",label:"전체",test:()=>!0},{id:"w5",label:"걸어서 5분 이내",test:i=>i<=5*_s},{id:"w10",label:"걸어서 10분 이내",test:i=>i<=10*_s},{id:"far",label:"걸어서 10분 이상",test:i=>i>10*_s}];function Bu(i){if(Number.isFinite(i))return`도보 약 ${Math.max(1,Math.round(i/_s))}분`}function ws(i){const r=/^([\d.]+)\s*(km|m)$/i.exec((i??"").trim());return r?Number(r[1])*(r[2].toLowerCase()==="km"?1e3:1):1/0}function Gb(){const i=F(),{local:r}=i,u=r.restaurants.length>0||r.attractions.length>0,[o,f]=Y.useState("all");if(!u)return null;const m=[...r.restaurants,...r.attractions],h=b=>m.filter(y=>b.test(ws(y.distanceText))).length,x=Qh.filter((b,y)=>y===0||h(b)>0&&h(b)b.id===o)??Qh[0],p=b=>v.test(ws(b.distanceText));return n.jsxs(pt,{id:"guide",tone:"alt",title:"주변 안내",lead:`${i.place.addressLocality??"주변"} 지역의 맛집 · 명소 안내입니다.`,aside:r.syncedAt?n.jsxs("p",{className:"text-muted text-[length:var(--fs-xs)]",children:[lo(r.syncedAt)," 갱신"]}):void 0,footnote:n.jsxs(n.Fragment,{children:["도보 시간은 숙소에서 잰 직선거리를 분속 ",_s,"m 로 환산한 값입니다. 실제로 걷는 길은 이보다 깁니다."]}),children:[x.length>1&&n.jsx("div",{className:"mb-6 flex flex-wrap gap-1.5",role:"tablist","aria-label":"거리",children:x.map(b=>{const y=b.id===o,E=h(b);return n.jsxs("button",{type:"button",role:"tab","aria-selected":y,onClick:()=>f(b.id),className:"border-line rounded-full border px-4 py-1.5 text-[length:var(--fs-sm)] font-bold transition-opacity hover:opacity-80",style:y?{backgroundColor:"var(--color-brand)",color:"var(--tpl-bg, #fff)",borderColor:"transparent"}:void 0,children:[b.label," ",n.jsx("span",{className:"tabular-nums opacity-70",children:E})]},b.id)})}),n.jsxs("div",{className:"space-y-10",children:[r.restaurants.length>0&&n.jsx(Xh,{title:"주변 맛집",icon:Cv,places:r.restaurants,within:p}),r.attractions.length>0&&n.jsx(Xh,{title:"주변 명소",icon:Rs,places:r.attractions,within:p})]})]})}function Qb({icon:i,children:r}){return n.jsxs("h3",{className:"border-line mb-4 flex items-center gap-2 border-b pb-2 text-[length:var(--fs-sm)] font-bold",children:[n.jsx(i,{className:"size-4 opacity-50"}),n.jsx("span",{children:r})]})}function Xh({title:i,icon:r,places:u,within:o}){const f=u.filter(o);return n.jsxs("div",{children:[n.jsx(Qb,{icon:r,children:i}),n.jsx(po,{label:i,children:f.map(m=>n.jsx(bp,{basis:"basis-[76%] sm:basis-1/3 lg:basis-1/4",children:n.jsxs("a",{href:Vu(m.searchQuery),target:"_blank",rel:"noopener noreferrer nofollow",className:"panel group flex h-full flex-col overflow-hidden transition-opacity hover:opacity-85",children:[n.jsxs("span",{className:"relative block aspect-4/3 overflow-hidden",children:[m.imageUrl?n.jsx("img",{src:m.imageUrl,alt:`${m.name} 사진`,loading:"lazy",decoding:"async",className:"size-full object-cover transition-transform duration-500 group-hover:scale-105"}):n.jsx("span",{className:"serif grid size-full place-items-center px-3 text-center text-[length:var(--fs-lead)] leading-tight",style:{backgroundColor:"color-mix(in oklab, currentColor 9%, transparent)"},"aria-hidden":!0,children:m.name}),m.distanceText&&n.jsxs("span",{className:"absolute bottom-2 left-2 rounded-md px-2 py-0.5 text-[length:var(--fs-xs)] font-bold",style:{backgroundColor:"color-mix(in srgb, var(--tpl-inverse, #1c1917) 78%, transparent)",color:"var(--tpl-bg, #fff)"},children:[Bu(ws(m.distanceText))??m.distanceText,n.jsx("span",{className:"ml-1 font-normal opacity-70",children:m.distanceText})]})]}),n.jsxs("span",{className:"flex flex-1 flex-col gap-1 p-3.5",children:[n.jsx("span",{className:"text-[length:var(--fs-sm)] font-bold",children:m.name}),m.description&&n.jsx("span",{className:"text-muted line-clamp-3 text-[length:var(--fs-xs)] leading-relaxed",children:m.description}),n.jsxs("span",{className:"text-muted mt-auto flex items-center gap-0.5 pt-1.5 text-[length:var(--fs-xs)] opacity-70 transition-opacity group-hover:opacity-100",children:[n.jsx("span",{children:"검색으로 열기"}),n.jsx(uc,{className:"size-3.5"})]})]})]})},m.name))},f.length),n.jsx("ul",{hidden:!0,children:u.filter(m=>!o(m)).map(m=>n.jsxs("li",{children:[n.jsx("a",{href:Vu(m.searchQuery),rel:"nofollow",children:m.name}),m.distanceText&&n.jsxs("span",{children:[" ",m.distanceText,Bu(ws(m.distanceText))&&` · ${Bu(ws(m.distanceText))}`]}),m.description&&n.jsx("p",{children:m.description})]},m.name))}),f.length===0&&n.jsx("p",{className:"text-muted text-[length:var(--fs-sm)]",children:"이 거리 안에는 없습니다."})]})}function Xb(i){return i===0?"맑음":i>=1&&i<=3?"구름많음":i>=50&&i<=69?"비":i>=70&&i<=79?"눈":"흐림"}function $b({initial:i,regionCode:r,latitude:u,longitude:o}){const[f,m]=Y.useState(i);return Y.useEffect(()=>{if(!r||u==null||o==null)return;const h=new AbortController;async function x(){var p;try{const b=new URLSearchParams({region_code:r,latitude:String(u),longitude:String(o)}),y=await fetch(`/v1/local/weather?${b}`,{signal:h.signal});if(!y.ok)return;const E=await y.json();if(!((p=E==null?void 0:E.result)!=null&&p.success)||!E.weather)return;m(T=>({temperature:Number(E.weather.temperature),condition:Xb(Number(E.weather.weather_code)),note:T==null?void 0:T.note,observedAt:E.weather.observed_at,stale:!!E.stale}))}catch{}}x();const v=window.setInterval(()=>void x(),600*1e3);return()=>{h.abort(),window.clearInterval(v)}},[u,o,r]),f}function Vb(i){const r=/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})/.exec(i??"");if(!r)return;const[,,u,o,f,m]=r;return`${Number(u)}월 ${Number(o)}일 ${f}:${m} 관측`}function Zb(){var x,v,p,b;const i=F(),r=$b({initial:i.local.weather,regionCode:i.place.regionCode,latitude:i.place.latitude,longitude:i.place.longitude});if(!r)return null;const u=a0(r.condition),o=n0(r.temperature),f=((v=(x=i.local.weather)==null?void 0:x.notes)==null?void 0:v[u])??r.note,m=(b=(p=i.local.weather)==null?void 0:p.tempNotes)==null?void 0:b[o],h=Vb(r.observedAt);return n.jsx(pt,{id:"weather",tone:"alt",title:"오늘의 날씨",children:n.jsxs(xo,{className:"relative overflow-hidden",children:[n.jsx("div",{className:"w4-sky","data-mood":u,"aria-hidden":!0}),n.jsxs("div",{className:"relative flex flex-col gap-5 p-6 sm:p-8",children:[n.jsxs("div",{className:"flex flex-wrap items-baseline gap-x-4 gap-y-1",children:[n.jsxs("p",{className:"flex items-baseline gap-2.5",children:[n.jsx("span",{className:"serif tabular-nums leading-none",style:{fontSize:"var(--fs-display)"},children:Math.round(r.temperature)}),n.jsx("span",{className:"text-[length:var(--fs-lead)] opacity-70",children:"°C"}),n.jsx("span",{className:"text-[length:var(--fs-lead)] font-semibold",children:r.condition})]}),h&&n.jsxs("span",{className:"text-muted text-[length:var(--fs-xs)] tabular-nums",children:[h,r.stale&&" · 최근 관측값"]})]}),f&&n.jsx("p",{className:"measure serif text-[length:var(--fs-lead)] leading-loose opacity-85",children:f}),m&&n.jsxs("p",{className:"measure flex items-start gap-2.5 text-[length:var(--fs-sm)] leading-relaxed opacity-75",children:[n.jsx("span",{className:"border-line mt-0.5 shrink-0 rounded-full border px-2 py-0.5 text-[length:var(--fs-xs)] font-bold","aria-hidden":!0,children:o}),n.jsx("span",{children:m})]})]})]})})}function Kb(){const i=F(),r=eo(i),u=i.theme.sections.find(_=>_.id==="photos"),o=(u==null?void 0:u.variantId)??"photos.grid",[f,m]=Y.useState(null),h=Y.useRef(null),[x,v]=Y.useState(0),[p,b]=Y.useState({prev:!1,next:!0}),y=Y.useCallback(()=>{const _=h.current;if(!_)return;const U=_.clientWidth,q=_.scrollWidth-U;v(U>0?Math.round(_.scrollLeft/U):0),b({prev:_.scrollLeft>8,next:_.scrollLeft(y(),window.addEventListener("resize",y),()=>window.removeEventListener("resize",y)),[y]),gc({box:h,interval:xc,advance:()=>ho(h.current,1)});const E=Y.useCallback(_=>{const U=h.current;if(!U)return;const q=window.matchMedia("(prefers-reduced-motion: reduce)").matches;U.scrollBy({left:_*U.clientWidth,behavior:q?"auto":"smooth"})},[]),T=Y.useCallback(()=>m(null),[]),N=Y.useCallback(_=>m(U=>U===null?null:(U+_+r.length)%r.length),[r.length]);return Y.useEffect(()=>{if(f===null)return;const _=q=>{q.key==="Escape"&&T(),q.key==="ArrowLeft"&&N(-1),q.key==="ArrowRight"&&N(1)},U=document.body.style.overflow;return document.body.style.overflow="hidden",window.addEventListener("keydown",_),()=>{document.body.style.overflow=U,window.removeEventListener("keydown",_)}},[f,T,N]),r.length===0?null:n.jsxs(pt,{id:"gallery",title:(u==null?void 0:u.name)||"공간 갤러리",children:[o==="photos.carousel"?n.jsxs("div",{className:"relative",children:[n.jsx("ul",{ref:h,onScroll:y,className:"flex snap-x snap-mandatory gap-3 overflow-x-auto [scrollbar-width:none] lg:grid lg:grid-cols-4 lg:gap-3 lg:snap-none lg:overflow-visible [&::-webkit-scrollbar]:hidden",children:r.map((_,U)=>n.jsx("li",{className:"w-full shrink-0 snap-center lg:w-auto",children:n.jsx(Yu,{image:_,onOpen:()=>m(U),className:"aspect-4/3 rounded-lg"})},_.mediaId))}),r.length>1&&n.jsxs(n.Fragment,{children:[n.jsx($h,{dir:"prev",show:p.prev,onClick:()=>E(-1)}),n.jsx($h,{dir:"next",show:p.next,onClick:()=>E(1)}),n.jsxs("span",{className:"pointer-events-none absolute bottom-3 right-3 rounded-full bg-black/55 px-2.5 py-1 text-[length:var(--fs-xs)] font-semibold tabular-nums text-white lg:hidden",children:[Math.min(x+1,r.length)," / ",r.length]})]})]}):o==="photos.masonry"?n.jsx("ul",{className:"columns-2 gap-3 sm:columns-3 lg:columns-4 [&>li]:mb-3",children:r.map((_,U)=>n.jsx("li",{className:"break-inside-avoid",children:n.jsx(Yu,{image:_,onOpen:()=>m(U),className:"rounded-lg",free:!0})},_.mediaId))}):n.jsx("ul",{className:"grid grid-cols-2 gap-3 sm:grid-cols-3 lg:grid-cols-4",children:r.map((_,U)=>n.jsx("li",{children:n.jsx(Yu,{image:_,onOpen:()=>m(U),className:"aspect-square rounded-lg"})},_.mediaId))}),f!==null&&n.jsxs("div",{role:"dialog","aria-modal":"true","aria-label":"사진 크게 보기",className:"fixed inset-0 z-50 flex items-center justify-center bg-black/92 p-4 backdrop-blur-md",onClick:T,children:[n.jsx("button",{type:"button",onClick:T,"aria-label":"닫기",className:"tap absolute right-3 top-3 z-10 flex items-center justify-center rounded-full bg-white/10 text-white transition-colors hover:bg-white/25 sm:right-5 sm:top-5",children:n.jsx(sp,{className:"size-6"})}),n.jsx(Vh,{dir:"prev",onClick:()=>N(-1)}),n.jsx(Vh,{dir:"next",onClick:()=>N(1)}),n.jsxs("figure",{className:"flex max-h-[85vh] w-full max-w-5xl flex-col items-center gap-3",onClick:_=>_.stopPropagation(),children:[n.jsx("img",{src:r[f].url,alt:r[f].alt,className:"max-h-[72vh] w-auto max-w-full rounded-lg object-contain"}),n.jsxs("figcaption",{className:"text-center text-[length:var(--fs-xs)] text-white/70",children:[r[f].caption??r[f].alt,n.jsxs("span",{className:"ml-2 tabular-nums",children:[f+1," / ",r.length]})]})]})]})]})}function $h({dir:i,show:r,onClick:u}){const o=i==="prev"?Ma:Oa;return n.jsx("button",{type:"button",onClick:u,"aria-label":i==="prev"?"이전 사진":"다음 사진","aria-hidden":!r,tabIndex:r?0:-1,className:`absolute top-1/2 z-10 flex size-9 -translate-y-1/2 items-center justify-center rounded-full bg-black/45 text-white backdrop-blur-sm transition-opacity hover:bg-black/65 lg:hidden ${r?"opacity-100":"pointer-events-none opacity-0"} ${i==="prev"?"left-2":"right-2"}`,children:n.jsx(o,{className:"size-5"})})}function Vh({dir:i,onClick:r}){const u=i==="prev"?Ma:Oa;return n.jsx("button",{type:"button",onClick:o=>{o.stopPropagation(),r()},"aria-label":i==="prev"?"이전 사진":"다음 사진",className:`tap absolute top-1/2 z-10 flex -translate-y-1/2 items-center justify-center rounded-full bg-white/10 text-white transition-colors hover:bg-white/25 ${i==="prev"?"left-2 sm:left-6":"right-2 sm:right-6"}`,children:n.jsx(u,{className:"size-6"})})}function Yu({image:i,onOpen:r,className:u,free:o=!1}){return n.jsx("button",{type:"button",onClick:r,className:`border-line tpl-border group relative block w-full cursor-pointer overflow-hidden border ${u}`,"aria-label":`${i.alt} 크게 보기`,children:n.jsx("img",{src:i.url,alt:i.alt,loading:"lazy",decoding:"async",width:i.width,height:i.height,className:o?"h-auto w-full":"size-full object-cover transition-transform duration-500 group-hover:scale-105"})})}function Zh(){const i=F(),{place:r,routes:u}=i,[o,f]=Y.useState(!1),m=r.roadAddress??r.address;if(!m)return null;const{latitude:h,longitude:x}=r,v=h!=null&&x!=null,p=B0(r.name,h,x),b=async()=>{try{await navigator.clipboard.writeText(m),f(!0),setTimeout(()=>f(!1),2e3)}catch{}};return n.jsxs(pt,{id:"location",title:"오시는 길",lead:"주소와 주요 거점까지의 이동 시간을 안내합니다.",children:[n.jsxs("div",{className:"grid gap-6 lg:grid-cols-12 lg:gap-8",children:[v&&n.jsx("div",{className:"border-line tpl-border overflow-hidden rounded-xl border lg:col-span-7",children:n.jsx("iframe",{title:`${r.name} 위치 지도`,src:q0(h,x),loading:"lazy",referrerPolicy:"no-referrer-when-downgrade",className:"block aspect-4/3 w-full border-0 sm:aspect-video lg:aspect-auto lg:h-full lg:min-h-[24rem]"})}),n.jsx("div",{className:v?"lg:col-span-5":"lg:col-span-12",children:n.jsxs("div",{className:"panel p-5 sm:p-6",children:[n.jsx("p",{className:"label mb-2",children:"주소"}),n.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[n.jsx("address",{className:"text-[length:var(--fs-lead)] font-bold not-italic",children:m}),n.jsxs("button",{type:"button",onClick:b,title:"주소 복사",className:"border-line tpl-border inline-flex items-center gap-1 rounded-md border bg-current/8 px-2.5 py-1.5 text-[length:var(--fs-xs)] font-medium transition-opacity hover:opacity-70",children:[o?n.jsx(fv,{className:"size-3.5"}):n.jsx(xv,{className:"size-3.5"}),n.jsx("span",{children:o?"복사완료":"복사"})]})]}),r.phone&&n.jsxs("p",{className:"text-muted mt-2 text-[length:var(--fs-sm)]",children:["문의:"," ",n.jsx("a",{href:`tel:${r.phone}`,className:"underline-offset-2 hover:underline",children:r.phone})]}),n.jsxs("div",{className:"mt-5 flex flex-wrap gap-2.5",children:[n.jsxs("a",{href:pp(r.name,h,x),target:"_blank",rel:"noopener noreferrer nofollow",className:"tap flex flex-1 basis-40 items-center justify-center gap-2 whitespace-nowrap rounded-lg bg-[#03C75A] px-4 text-[length:var(--fs-sm)] font-bold text-white transition-opacity hover:opacity-90",children:[n.jsx(Lu,{className:"size-4"}),n.jsx("span",{children:"네이버 길찾기"})]}),n.jsxs("a",{href:H0(r.name,h,x),target:"_blank",rel:"noopener noreferrer nofollow",className:"tap flex flex-1 basis-40 items-center justify-center gap-2 whitespace-nowrap rounded-lg bg-[#FEE500] px-4 text-[length:var(--fs-sm)] font-bold text-[#191600] transition-opacity hover:opacity-90",children:[n.jsx(Lu,{className:"size-4"}),n.jsx("span",{children:"카카오 길찾기"})]}),p&&n.jsxs("a",{href:p,className:"tap only-touch flex-1 basis-40 items-center justify-center gap-2 whitespace-nowrap rounded-lg bg-[#0064FF] px-4 text-[length:var(--fs-sm)] font-bold text-white transition-opacity hover:opacity-90",children:[n.jsx(Lu,{className:"size-4"}),n.jsx("span",{children:"티맵 길찾기"})]})]})]})})]}),u.length>0&&n.jsxs("div",{className:"mt-8",children:[n.jsxs("h3",{className:"mb-3 flex items-center gap-2 text-[length:var(--fs-sm)] font-bold",children:[n.jsx(uv,{className:"size-4 opacity-50"}),n.jsx("span",{children:"주요 거점 소요시간"})]}),n.jsx("div",{className:"panel overflow-hidden",children:n.jsx("div",{className:"slider-viewport",children:n.jsxs("table",{className:"w-full min-w-[34rem] text-left text-[length:var(--fs-sm)]",children:[n.jsxs("caption",{className:"sr-only",children:[i.place.name,"에서 주요 거점까지의 이동 시간"]}),n.jsx("thead",{className:"panel-sunken border-line border-b font-semibold",children:n.jsxs("tr",{children:[n.jsx("th",{scope:"col",className:"p-4",children:"목적지"}),n.jsx("th",{scope:"col",className:"p-4",children:"차량"}),n.jsx("th",{scope:"col",className:"p-4",children:"도보 / 대중교통"}),n.jsx("th",{scope:"col",className:"p-4",children:"거리"}),n.jsx("th",{scope:"col",className:"hidden p-4 md:table-cell",children:"비고"})]})}),n.jsx("tbody",{className:"divide-line divide-y",children:u.map(y=>n.jsxs("tr",{children:[n.jsx("th",{scope:"row",className:"p-4 text-left font-bold",children:y.destination}),n.jsx("td",{className:"p-4 font-semibold",children:y.byCar??"—"}),n.jsx("td",{className:"p-4 opacity-70",children:y.byTransit??"—"}),n.jsx("td",{className:"text-muted p-4 tabular-nums",children:y.distanceText??"—"}),n.jsx("td",{className:"text-muted hidden p-4 md:table-cell",children:y.note??""})]},y.destination))})]})})})]})]})}function Jb(){const i=F(),r=s0(i);return r.length===0?null:n.jsx(pt,{id:"faq",tone:"alt",title:"자주 묻는 질문",lead:"아래 답변은 모두 사업자가 확인한 내용입니다.",children:n.jsx("div",{className:r.length>4?"grid gap-3 lg:grid-cols-2 lg:gap-4":"space-y-3",children:r.map((u,o)=>n.jsxs("details",{open:o===0,className:"panel group h-fit overflow-hidden",children:[n.jsxs("summary",{className:"tap flex cursor-pointer items-center gap-3 px-5 text-[length:var(--fs-sm)] font-bold marker:content-none [&::-webkit-details-marker]:hidden",children:[n.jsx("span",{className:"serif text-muted shrink-0",children:"Q."}),n.jsx("span",{className:"flex-1",children:u.question}),n.jsx("span",{className:"text-muted shrink-0 transition-transform group-open:rotate-45",children:"+"})]}),n.jsx("div",{className:"border-line border-t px-5 pb-5 pt-4 text-[length:var(--fs-sm)] leading-relaxed opacity-80",children:u.answer})]},u.faqId))})})}function Np(){var m,h,x,v;const i=F(),{place:r,site:u}=i,o=i.links.filter(p=>p.confirmed),f=r.roadAddress??r.address;return n.jsx("footer",{className:"w-full pb-28 pt-14 md:pb-14",style:{backgroundColor:"var(--tpl-inverse, #1c1917)",color:"var(--tpl-bg, #ffffff)"},children:n.jsxs("div",{className:"shell",children:[n.jsxs("div",{className:"grid grid-cols-1 gap-8 border-b border-current/15 pb-10 md:grid-cols-12",children:[n.jsxs("div",{className:"space-y-4 md:col-span-7",children:[n.jsx("p",{className:"serif text-[length:var(--fs-lead)] font-bold",children:r.name}),n.jsxs("div",{className:"space-y-2 text-[length:var(--fs-sm)] opacity-75",children:[f&&n.jsxs("p",{className:"flex items-start gap-2",children:[n.jsx(Rs,{className:"mt-1 size-4 shrink-0 opacity-60"}),n.jsx("span",{children:f})]}),r.phone&&n.jsxs("p",{className:"flex items-center gap-2",children:[n.jsx(Jt,{className:"size-4 shrink-0 opacity-60"}),n.jsx("a",{href:`tel:${r.phone}`,className:"underline-offset-2 hover:underline",children:r.phone})]}),r.email&&n.jsxs("p",{className:"flex items-center gap-2",children:[n.jsx(ap,{className:"size-4 shrink-0 opacity-60"}),n.jsx("a",{href:`mailto:${r.email}`,className:"underline-offset-2 hover:underline",children:r.email})]})]})]}),o.length>0&&n.jsxs("nav",{"aria-label":"공식 채널",className:"md:col-span-5",children:[n.jsx("h2",{className:"label mb-3 !text-current opacity-60",children:"공식 채널"}),n.jsx("ul",{className:"flex flex-wrap gap-2",children:o.map(p=>n.jsx("li",{children:n.jsxs("a",{href:p.url,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1.5 rounded-lg border border-current/25 px-3 py-2 text-[length:var(--fs-xs)] font-medium transition-colors hover:bg-current/10",children:[n.jsx("span",{children:Rl(p)}),n.jsx(vv,{className:"size-3.5"})]})},p.url))})]})]}),n.jsxs("div",{className:"flex flex-col gap-3 pt-6 text-[length:var(--fs-xs)] opacity-55 sm:flex-row sm:items-center sm:justify-between",children:[n.jsxs("div",{className:"flex flex-wrap items-center gap-x-3 gap-y-1",children:[n.jsxs("span",{children:["상호: ",r.name]}),((m=r.legal)==null?void 0:m.representative)&&n.jsxs("span",{children:["대표: ",r.legal.representative]}),((h=r.legal)==null?void 0:h.businessRegistrationNumber)&&n.jsxs("span",{children:["사업자등록번호: ",r.legal.businessRegistrationNumber]}),((x=r.legal)==null?void 0:x.mailOrderNumber)&&n.jsxs("span",{children:["통신판매업신고: ",r.legal.mailOrderNumber]}),((v=r.legal)==null?void 0:v.licenseNumber)&&n.jsxs("span",{children:[r.legal.licenseLabel??"인허가번호",": ",r.legal.licenseNumber]})]}),n.jsxs("p",{className:"byline shrink-0",children:[n.jsxs("span",{className:"author",children:["작성·운영 ",r.name]})," · 최종 업데이트: ",n.jsx("time",{dateTime:u.updatedAt,children:qs(u.updatedAt)})]})]})]})})}function zn(){const i=F(),r=i.place.phone,o=et(i)[0],f=i.links.find(m=>m.confirmed&&/kakao/i.test(m.url));return!r&&!o&&!f?null:n.jsxs("nav",{"aria-label":"연락 · 예약",className:"border-line safe-b fixed inset-x-0 bottom-0 z-50 flex items-stretch gap-2 border-t px-3 pt-2 backdrop-blur-md lg:hidden",style:{backgroundColor:"color-mix(in srgb, var(--tpl-surface, #fff) 94%, transparent)"},children:[n.jsxs("a",{href:"#location",className:"tap border-line flex w-12 shrink-0 flex-col items-center justify-center rounded-lg border text-[10px] font-medium","aria-label":"오시는 길",children:[n.jsx(Rs,{className:"size-4"}),n.jsx("span",{className:"mt-0.5",children:"위치"})]}),f&&n.jsxs("a",{href:f.url,target:"_blank",rel:"noopener noreferrer",className:"tap border-line flex w-12 shrink-0 flex-col items-center justify-center rounded-lg border text-[10px] font-medium","aria-label":Rl(f),children:[n.jsx(Fu,{className:"size-4"}),n.jsx("span",{className:"mt-0.5",children:"문의"})]}),r&&n.jsxs("a",{href:`tel:${r}`,className:"tap border-line flex flex-1 items-center justify-center gap-1.5 rounded-lg border text-[length:var(--fs-sm)] font-bold",children:[n.jsx(Jt,{className:"size-4"}),n.jsx("span",{children:"전화"})]}),o&&n.jsxs("a",{href:o.url,target:"_blank",rel:"noopener noreferrer",className:"tap flex min-w-0 flex-[1.4] items-center justify-center truncate rounded-lg px-2 text-[length:var(--fs-sm)] font-bold",style:{backgroundColor:"var(--color-brand)",color:"var(--tpl-bg, #fff)"},children:[Pe(o)," 예약"]})]})}const Vt="var(--tpl-card, #fafafa)",be="var(--tpl-border, #d6d3d1)",Ke="color-mix(in oklab, var(--tpl-accent, #2563eb) 70%, currentColor)",Cs="var(--tpl-inverse, #1c1917)",Ul="var(--tpl-bg, #ffffff)",Zt="var(--tpl-text, #09090b)";function Sp({n:i}){return n.jsx("span",{className:"mr-1.5 inline-grid size-[17px] translate-y-px place-items-center rounded-full text-[10px] tabular-nums",style:{backgroundColor:Ke,color:Ul},children:i})}function ml({id:i,name:r,subtitle:u,count:o,link:f,children:m,dark:h}){const x=hc(),v=x==="reservation"?no:x==="oasi"?so:x==="studio"?io:x==="pastel"?co:x==="editorial"?to:null,p=f?n.jsxs("a",{href:f.url,target:"_blank",rel:"noopener noreferrer",className:"text-[length:var(--fs-sm)] font-semibold underline-offset-4 opacity-75 transition-opacity hover:opacity-100 hover:underline",children:[f.label," →"]}):void 0;return n.jsx("section",{id:i,"aria-labelledby":`${i}-heading`,className:"border-line paper w-full border-b",style:{backgroundColor:h?Cs:"var(--tpl-surface, #fafafa)",color:h?Ul:Zt,paddingBlock:"var(--section-space)"},children:n.jsxs("div",{className:"shell",children:[v?n.jsx(v,{id:i,title:r,lead:u,aside:p}):n.jsxs("header",{className:"mb-8 sm:mb-10",children:[n.jsxs("div",{className:"flex flex-wrap items-baseline justify-between gap-x-4 gap-y-2",children:[n.jsx("h2",{id:`${i}-heading`,className:"h2",children:r}),p]}),u&&n.jsx("p",{className:"measure mt-3 text-[length:var(--fs-sm)] opacity-70",children:u})]}),m,o&&n.jsx("p",{className:"mt-6 text-[length:var(--fs-xs)] opacity-60",children:o})]})})}function En({children:i,label:r,arrows:u="header",onSelect:o,onReady:f}){return n.jsx(po,{label:r,gap:1,arrows:u,onSelect:o,onReady:f,children:i})}function Hl({source:i,verified:r}){return i!=null&&i.name?n.jsx("p",{className:"flex flex-wrap items-center gap-x-2 gap-y-1 text-[10px] opacity-70",children:(i==null?void 0:i.name)&&n.jsxs("span",{children:["출처 ·"," ",i.url?n.jsx("a",{href:i.url,target:"_blank",rel:"noopener noreferrer nofollow",className:"underline underline-offset-2",children:i.name}):i.name]})}):null}function Us(i,r,u){return`총 ${i}${u}`}const Kh=Ke;function zp(){const i=F(),r=al(i,"songs"),[u,o]=Y.useState(0);if(r.items.length===0)return null;const f=r.items[u]??r.items[0],m=h=>[h.artist,h.year?String(h.year):void 0,h.lyricist||h.composer?`작사 ${h.lyricist??"미상"} / 작곡 ${h.composer??"미상"}`:void 0,h.label].filter(Boolean).join(" · ");return n.jsxs(ml,{id:"songs",name:r.title||qe(i,"songs","가요 다방"),subtitle:r.subtitle,count:Us(r.items.length,r.unverified,"곡"),children:[n.jsxs("div",{className:"tpl-border grid items-center gap-8 border p-6 sm:p-8 md:grid-cols-[240px_minmax(0,1fr)]",style:{backgroundColor:Cs,color:Ul,borderColor:"color-mix(in oklab, currentColor 22%, transparent)"},children:[n.jsxs("div",{className:"relative mx-auto size-[220px]",children:[n.jsx("div",{className:"absolute inset-0 rounded-full",style:{backgroundColor:"color-mix(in oklab, currentColor 16%, transparent)"}}),n.jsx("div",{className:"w4-disc w4-spin absolute inset-2 rounded-full",style:{"--lbl":f.labelColor||Kh,"--w4-vinyl":Cs},children:n.jsx("span",{className:"absolute left-1/2 top-1/2 size-2.5 -translate-x-1/2 -translate-y-1/2 rounded-full",style:{backgroundColor:"color-mix(in oklab, currentColor 30%, transparent)"}})}),n.jsxs("div",{"aria-hidden":!0,className:"absolute -right-1 top-3 h-2 w-[110px] origin-right rotate-6",children:[n.jsx("span",{className:"absolute inset-y-[3px] left-0 right-4 rounded-sm",style:{backgroundColor:"color-mix(in oklab, currentColor 65%, transparent)"}}),n.jsx("span",{className:"absolute -top-2 right-0 size-6 rounded-full",style:{backgroundColor:"color-mix(in oklab, currentColor 55%, transparent)"}})]})]}),n.jsx("div",{className:"min-w-0",children:r.items.map((h,x)=>n.jsxs("div",{hidden:x!==u,className:"space-y-3",children:[n.jsxs("p",{className:"text-[10px] tracking-[0.24em]",style:{color:Ke},children:["A면 · ",x+1," / ",r.items.length]}),n.jsx("h3",{className:"serif text-[length:var(--fs-h2)] leading-tight",children:h.title}),n.jsx("p",{className:"text-[length:var(--fs-xs)] opacity-60",children:m(h)}),h.story&&n.jsx("p",{className:"measure text-[length:var(--fs-sm)] leading-relaxed opacity-85",children:h.story}),h.connection&&n.jsx("p",{className:"measure text-[length:var(--fs-sm)] leading-relaxed",style:{color:Ke},children:h.connection}),n.jsxs("a",{href:R0(`${h.title} ${h.artist??""}`.trim()),target:"_blank",rel:"noopener noreferrer nofollow",className:"inline-flex items-center gap-1.5 text-[length:var(--fs-sm)] font-bold underline-offset-4 hover:underline",style:{color:Ke},children:[n.jsx(Dv,{className:"size-4"}),n.jsx("span",{children:"유튜브에서 듣기"})]}),n.jsx("span",{className:"block w-fit border border-dashed px-2 py-1 text-[10px] tracking-[0.1em] opacity-60",style:{borderColor:"color-mix(in oklab, currentColor 35%, transparent)"},children:"◎ 가사 대신 이야기 — 원문은 싣지 않습니다"}),n.jsx(Hl,{source:h.source,verified:h.verified})]},`disc-${h.title}-${x}`))})]}),r.items.length>1&&n.jsx("div",{className:"mt-4 flex flex-wrap justify-center gap-4",children:r.items.map((h,x)=>n.jsxs("button",{type:"button",onClick:()=>o(x),"aria-pressed":x===u,className:"w-24 text-center",children:[n.jsx("span",{className:"w4-disc-mini mx-auto block size-[76px] rounded-full transition-transform hover:scale-105",style:{"--lbl":h.labelColor||Kh,"--w4-vinyl":Cs,boxShadow:x===u?`0 0 0 2px ${Ke}`:void 0}}),n.jsx("span",{className:"mt-2 block truncate text-[10px] leading-tight opacity-70",children:h.title})]},`${h.title}-${x}`))})]})}function Ep(){const i=F(),r=al(i,"daily"),[u,o]=Y.useState();if(Y.useEffect(()=>{const v=new Date;o(`${String(v.getMonth()+1).padStart(2,"0")}-${String(v.getDate()).padStart(2,"0")}`)},[]),r.items.length===0)return null;const f=[...r.items].sort((v,p)=>v.monthDay.localeCompare(p.monthDay)),m=u===void 0?1:Math.max(0,(()=>{const v=f.findIndex(b=>b.monthDay===u);if(v>=0)return v;const p=f.findIndex(b=>b.monthDay>u);return p>=0?p:0})()),h=v=>f[(m+v+f.length)%f.length],x=f.length===1?[h(0)]:f.length===2?[h(0),h(1)]:[h(-1),h(0),h(1)];return n.jsx(ml,{id:"daily",name:r.title||qe(i,"daily","오늘의 한 장"),subtitle:r.subtitle,count:Us(f.length,r.unverified,"장"),children:n.jsx("div",{className:"flex items-start justify-center gap-4 sm:gap-6",children:f.map((v,p)=>{const b=x.indexOf(v);return n.jsx(Wb,{page:v,hidden:b<0,isToday:x.length===1||b===1,muted:x.length>1&&b!==1},`${v.monthDay}-${p}`)})})})}function Wb({page:i,isToday:r,muted:u,hidden:o}){const[f,m]=i.monthDay.split("-");return n.jsxs("article",{hidden:o,className:`w4-paper shrink-0 border transition-opacity ${u?"hidden w-[168px] opacity-45 sm:block":"w-[254px] max-w-full"}`,style:{backgroundColor:Vt,borderColor:r?Ke:be,boxShadow:r?"5px 6px 0 color-mix(in oklab, currentColor 14%, transparent)":void 0},"aria-current":r?"date":void 0,children:[n.jsx("div",{className:"w4-perf h-3.5 border-b border-dashed",style:{"--tear":Vt,borderColor:be}}),n.jsxs("div",{className:"border-b px-5 pb-3 pt-5 text-center",style:{borderColor:be},children:[n.jsxs("p",{className:"text-[11px] tracking-[0.2em] opacity-60",children:[f,"月"]}),n.jsx("p",{className:`serif mt-1 font-bold leading-none ${u?"text-4xl":"text-6xl"}`,style:{color:Ke},children:String(Number(m)||m)}),r&&n.jsx("p",{className:"mt-1.5 text-[10px] tracking-[0.3em]",style:{color:Ke},children:"오늘"})]}),n.jsxs("div",{className:"space-y-2 px-5 pb-5 pt-4",children:[i.category&&n.jsx("p",{className:"text-[10px] tracking-[0.16em] opacity-60",children:i.category}),n.jsx("h3",{className:"serif text-base font-bold leading-snug",children:i.title}),!u&&i.body&&n.jsx("p",{className:"text-[13px] leading-relaxed opacity-80",children:i.body}),!u&&n.jsx("div",{className:"border-t border-dashed pt-2.5",style:{borderColor:be},children:n.jsx(Hl,{source:i.source,verified:i.verified})})]})]})}function Ap(){const i=F(),r=al(i,"people");return r.items.length===0?null:n.jsx(ml,{id:"people",name:r.title||qe(i,"people","인물 열전"),subtitle:r.subtitle,count:r.items.some(u=>!u.imageUrl)?`${Us(r.items.length,r.unverified,"명")} · 사진이 없는 인물은 이름 활자로 대신합니다`:Us(r.items.length,r.unverified,"명"),dark:!0,children:n.jsxs("div",{className:"tpl-border border",style:{backgroundColor:Cs,borderColor:"color-mix(in oklab, currentColor 22%, transparent)"},children:[n.jsx("div",{className:"w4-film-perf h-2.5 opacity-70"}),n.jsx("div",{className:"px-3 py-4",children:n.jsx(En,{label:"인물 목록",arrows:"overlay",children:r.items.map((u,o)=>n.jsxs("article",{className:"w-[210px] shrink-0 snap-center",children:[u.imageUrl?n.jsx("img",{src:u.imageUrl,alt:`${u.name} 사진`,loading:"lazy",decoding:"async",className:"aspect-3/4 w-full border object-cover",style:{borderColor:"color-mix(in oklab, currentColor 28%, transparent)"}}):n.jsx("span",{className:"serif grid aspect-3/4 w-full place-items-center border text-5xl",style:{backgroundColor:"color-mix(in oklab, currentColor 14%, transparent)",borderColor:"color-mix(in oklab, currentColor 28%, transparent)"},"aria-hidden":!0,children:u.name.trim().charAt(0)}),n.jsxs("h3",{className:"serif mt-3 text-base font-bold",children:[u.name,u.aka&&n.jsxs("span",{className:"ml-1.5 text-xs opacity-60",children:["호 ",u.aka]})]}),n.jsx("p",{className:"mt-0.5 text-[11px] opacity-60",children:[u.role,u.years].filter(Boolean).join(" · ")}),u.oneLine&&n.jsx("p",{className:"mt-2 text-[13px] leading-relaxed opacity-85",children:u.oneLine}),n.jsx("div",{className:"mt-2",children:n.jsx(Hl,{source:u.source,verified:u.verified})})]},`${u.name}-${o}`))})}),n.jsx("div",{className:"w4-film-perf h-2.5 opacity-70"})]})})}function Tp(){const i=F(),r=al(i,"chronicle");if(r.items.length===0)return null;const u=[...r.items].sort((f,m)=>f.year==null?m.year==null?0:1:m.year==null?-1:f.year-m.year),o=u.filter(f=>f.turning===!0).length;return n.jsx(ml,{id:"chronicle",name:r.title||qe(i,"chronicle","시간의 골목"),subtitle:r.subtitle,count:`붉은 점은 도시의 성격이 바뀐 해입니다 · ${o}개 / 전체 ${u.length}개`,children:n.jsx(En,{label:"연표",children:u.map((f,m)=>{const h=f.turning===!0;return n.jsxs("article",{className:"w-[228px] shrink-0 snap-center",children:[n.jsx("p",{className:"serif text-3xl font-bold leading-none",style:{color:h?Ke:void 0},children:f.year??"연도 미상"}),n.jsxs("div",{className:"relative my-3 h-3",children:[n.jsx("i",{"aria-hidden":!0,className:"absolute top-1/2 left-0 border-t",style:{borderColor:be,right:m===u.length-1?"calc(100% - 12px)":0}}),n.jsx("i",{"aria-hidden":!0,className:"absolute top-1/2 left-0 size-3 -translate-y-1/2 rounded-full border-2",style:{backgroundColor:h?Ke:Vt,borderColor:h?Ke:be}})]}),n.jsxs("div",{className:"flex gap-2.5 pr-5",children:[f.imageUrl&&n.jsx("img",{src:f.imageUrl,alt:`${f.title} 사진`,loading:"lazy",decoding:"async",className:"size-14 shrink-0 border object-cover",style:{borderColor:be}}),n.jsxs("div",{className:"min-w-0 flex-1 space-y-1.5",children:[n.jsx("h3",{className:"serif text-base font-bold",children:f.title}),f.summary&&n.jsx("p",{className:"text-[13px] leading-relaxed opacity-80",children:f.summary}),f.place&&n.jsxs("p",{className:"text-[11px] opacity-60",children:["지금 이 자리 · ",f.place]}),n.jsx(Hl,{source:f.source,verified:f.verified})]})]})]},`${f.year??"x"}-${f.title}-${m}`)})})})}function _p(){const i=F(),r=al(i,"postcard");return r.items.length===0?null:n.jsx(ml,{id:"postcard",name:r.title||qe(i,"postcard","오늘의 엽서"),subtitle:r.subtitle,count:Us(r.items.length,r.unverified,"장"),children:n.jsx(En,{label:"엽서 목록",children:r.items.map((u,o)=>n.jsxs("article",{className:"w4-paper w-[304px] shrink-0 snap-center border p-4",style:{backgroundColor:Vt,borderColor:Zt},children:[u.imageUrl&&n.jsx("img",{src:u.imageUrl,alt:`${u.place||u.postmark||"엽서"} 사진`,loading:"lazy",decoding:"async",className:"mb-3.5 block aspect-3/2 w-full border object-cover",style:{borderColor:be}}),n.jsxs("div",{className:"grid grid-cols-[minmax(0,1fr)_auto] gap-3",children:[n.jsxs("div",{className:"min-w-0 border-r pr-3",style:{borderColor:be},children:[n.jsxs("p",{className:"serif text-[17px] leading-snug",children:["“",u.line,"”"]}),u.hashtags&&u.hashtags.length>0&&n.jsx("p",{className:"mt-2 text-[11px] opacity-60",children:u.hashtags.join(" ")})]}),n.jsxs("div",{className:"flex w-[62px] flex-col items-center gap-3",children:[n.jsxs("span",{className:"grid h-[56px] w-[44px] place-items-center border border-dashed text-center text-[9px] leading-tight opacity-60",style:{borderColor:be},children:["郵票",n.jsx("br",{}),"10원"]}),n.jsx("span",{className:"serif grid size-[54px] -rotate-6 place-items-center rounded-full border-2 px-1 text-center text-[9px] leading-tight",style:{borderColor:Ke,color:Ke},children:u.postmark||u.place||"소인"})]})]}),n.jsx("div",{className:"mt-3 border-t border-dashed pt-2.5",style:{borderColor:be},children:n.jsx(Hl,{source:u.source,verified:u.verified})})]},`${u.line}-${o}`))})})}function Fb(){const i=F(),r=al(i,"quiz"),[u,o]=Y.useState(new Set);if(r.items.length===0)return null;const f=m=>o(h=>{const x=new Set(h);return x.has(m)?x.delete(m):x.add(m),x});return n.jsx(ml,{id:"quiz",name:r.title||qe(i,"quiz","뒤집어 보는 질문"),subtitle:r.subtitle,count:`정답은 두지 않습니다 — 힌트와 출처까지만 · 총 ${r.items.length}문항`,children:n.jsx(En,{label:"질문 목록",children:r.items.map((m,h)=>{const x=u.has(h);return n.jsx("button",{type:"button",onClick:()=>f(h),"aria-pressed":x,"aria-label":`${h+1}번 문제 ${x?"앞면 보기":"힌트 보기"}`,className:`w4-flip ${x?"w4-flip-on":""} h-[260px] w-[262px] shrink-0 text-left`,children:n.jsxs("span",{className:"w4-flip-inner block size-full",children:[n.jsxs("span",{className:"w4-flip-face w4-paper flex size-full flex-col gap-3 border p-4",style:{backgroundColor:Vt,borderColor:Zt},children:[n.jsxs("span",{className:"text-[10px] tracking-[0.16em] opacity-60",children:["문제 ",h+1,m.level?` · ${m.level}`:""]}),n.jsx("span",{className:"serif text-[17px] font-bold leading-snug",children:m.question}),n.jsx("span",{className:"mt-auto text-[10px] tracking-[0.16em]",style:{color:Ke},children:"눌러서 힌트 보기 →"})]}),n.jsxs("span",{className:"w4-flip-face w4-flip-back w4-paper flex size-full flex-col gap-3 border p-4",style:{backgroundColor:Vt,borderColor:Ke},children:[n.jsx("span",{className:"text-[10px] tracking-[0.16em]",style:{color:Ke},children:"힌트"}),n.jsx("span",{className:"text-[13px] leading-relaxed opacity-85",children:m.hint??"힌트가 아직 없습니다."}),n.jsxs("span",{className:"mt-auto space-y-1 border-t border-dashed pt-2.5",style:{borderColor:be},children:[m.topic&&n.jsx("span",{className:"block text-[10px] opacity-55",children:m.topic}),n.jsx(Hl,{source:m.source,verified:m.verified})]})]})]})},`${m.question}-${h}`)})})})}const kl=256,As=318,Nn=168,Jh=34,Ib=16,Wh=4;function wp(i,r,u){const o=kl*2**u,f=i*Math.PI/180;return{x:(r+180)/360*o,y:(1-Math.log(Math.tan(f)+1/Math.cos(f))/Math.PI)/2*o}}function Pb(i){if(i.length<2)return 15;for(let r=Ib;r>Wh;r-=1){const u=i.map(m=>wp(m.lat,m.lng,r)),o=Math.max(...u.map(m=>m.x))-Math.min(...u.map(m=>m.x)),f=Math.max(...u.map(m=>m.y))-Math.min(...u.map(m=>m.y));if(o<=As-Jh*2&&f<=Nn-Jh*2)return r}return Wh}function ey(i,r){const u=m=>m.latitude!=null&&m.longitude!=null?{name:m.searchQuery??m.name,lat:m.latitude,lng:m.longitude}:void 0,o=[];let f=r;return i.forEach((m,h)=>{const x=u(m);x&&(o.push({label:String(h+1),...x,stop:m,from:f&&!ty(f,x)?f:void 0}),f=x)}),o}function ty(i,r){return Math.abs(i.lat-r.lat)<1e-5&&Math.abs(i.lng-r.lng)<1e-5}function ly(i){const u=i.map(o=>({...o}));for(let o=1;oMath.hypot(u[o].x-b.x,u[o].y-b.y)<27);if(!m)break;const h=u[o].x-m.x,x=u[o].y-m.y,v=Math.hypot(h,x)||1,p=(27-v)/v;u[o].x+=(h||1)*p,u[o].y+=x*p}return u}function ay(i){return i.from?L0(i.from,{name:i.stop.name,lat:i.lat,lng:i.lng}):pp(i.stop.searchQuery??i.stop.name,i.lat,i.lng)}function Cp({stops:i}){const{place:r}=F(),u=r.latitude!=null&&r.longitude!=null?{name:r.name,lat:r.latitude,lng:r.longitude}:void 0,o=i.filter(N=>N.latitude!=null&&N.longitude!=null);if(o.length===0||o.length===1&&i.length>1)return null;const f=ey(i,u),m=Pb(f),h=ly(f.map(N=>wp(N.lat,N.lng,m))),x=(Math.min(...h.map(N=>N.x))+Math.max(...h.map(N=>N.x)))/2,v=(Math.min(...h.map(N=>N.y))+Math.max(...h.map(N=>N.y)))/2,p=x-As/2,b=v-Nn/2,y=2**m,E=[];for(let N=Math.floor(p/kl);N<=Math.floor((p+As)/kl);N+=1)for(let _=Math.floor(b/kl);_<=Math.floor((b+Nn)/kl);_+=1){if(_<0||_>=y)continue;const U=(N%y+y)%y;E.push({key:`${N}-${_}`,url:`https://tile.openstreetmap.org/${m}/${U}/${_}.png`,left:N*kl-p,top:_*kl-b})}const T=h.map(N=>`${(N.x-p).toFixed(1)},${(N.y-b).toFixed(1)}`).join(" ");return n.jsxs("div",{className:"relative mt-3.5 overflow-hidden border-y",style:{height:Nn,borderColor:be,backgroundColor:"#e8e5df"},children:[E.map(N=>n.jsx("img",{src:N.url,alt:"",width:kl,height:kl,loading:"lazy",decoding:"async",className:"pointer-events-none absolute max-w-none",style:{left:N.left,top:N.top,filter:"grayscale(1) contrast(0.95) opacity(0.55)"}},N.key)),n.jsx("svg",{className:"pointer-events-none absolute inset-0",width:As,height:Nn,viewBox:`0 0 ${As} ${Nn}`,children:n.jsx("polyline",{points:T,fill:"none",stroke:Ke,strokeWidth:"2",strokeDasharray:"5 4",strokeLinecap:"round",strokeLinejoin:"round",opacity:"0.85"})}),f.map((N,_)=>{const U=h[_];return n.jsx("a",{href:ay(N),target:"_blank",rel:"noopener noreferrer",title:N.from?`${N.from.name} → ${N.stop.name} 길찾기`:`${N.stop.name} — 네이버 지도`,className:"absolute grid h-[22px] min-w-[22px] -translate-x-1/2 -translate-y-1/2 place-items-center rounded-full px-1.5 text-[11px] font-bold whitespace-nowrap shadow-sm transition-transform hover:scale-110",style:{left:U.x-p,top:U.y-b,backgroundColor:Ke,color:Ul,border:`1.5px solid ${Ul}`},children:N.label},N.label)}),n.jsx("span",{className:"absolute right-1 bottom-0.5 bg-white/70 px-1 text-[9px] leading-tight text-stone-600",children:"© OpenStreetMap"})]})}function ny(i){const r=Math.floor(i/60),u=i%60;return[r>0?`${r}시간`:"",u>0?`${u}분`:""].filter(Boolean).join(" ")||"0분"}function Ju(i){var r;return(r=i.days)!=null&&r.length?i.days.map(u=>({label:u.label,startTime:u.startTime,stops:u.stops??[]})):[{startTime:i.startTime,stops:i.stops??[]}]}function sy({item:i,badge:r,startTime:u,stops:o,first:f}){const m=up({name:i.name,startTime:u,stops:o});return n.jsxs("article",{className:"w4-paper w-[320px] shrink-0 snap-center border",style:{backgroundColor:Vt,borderColor:be},children:[n.jsxs("div",{className:"flex items-center justify-between gap-2 border-b px-4 py-2.5",style:{borderColor:be},children:[n.jsx("span",{className:"border px-2 py-0.5 text-[11px] font-bold",style:f?{backgroundColor:Zt,color:Ul,borderColor:Zt}:{borderColor:be},children:r}),n.jsxs("span",{className:"text-[11px] opacity-60",children:[m.from,"–",m.to," · ",ny(m.totalMinutes)]})]}),n.jsxs("div",{className:"space-y-1.5 px-4 pt-3.5",children:[n.jsx("h3",{className:"serif text-lg font-bold",children:i.name}),f&&i.audience&&n.jsx("p",{className:"text-[12px] opacity-60",children:i.audience}),f&&i.why&&n.jsx("p",{className:"text-[13px] leading-relaxed opacity-80",children:i.why})]}),n.jsx(Cp,{stops:m.stops.map(h=>h.stop)}),n.jsx("ol",{className:"mt-3 px-4 pb-3",children:m.stops.map((h,x)=>n.jsxs("li",{className:"grid grid-cols-[46px_minmax(0,1fr)] gap-2.5",children:[n.jsx("span",{className:"serif pt-2 text-[12px] tabular-nums opacity-75",children:h.time}),n.jsxs("div",{className:"border-l pb-5 pl-3",style:{borderColor:be},children:[h.move>0&&n.jsxs("p",{className:"pt-1 text-[10px] opacity-50",children:["↓ ",h.move,"분 이동"]}),n.jsxs("div",{className:"flex items-start gap-2.5 pt-1",children:[h.stop.imageUrl&&n.jsx("img",{src:h.stop.imageUrl,alt:`${h.stop.name} 사진`,loading:"lazy",decoding:"async",className:"size-12 shrink-0 object-cover",style:{border:`1px solid ${be}`}}),n.jsxs("span",{className:"min-w-0",children:[n.jsxs("span",{className:"block text-sm font-bold",children:[n.jsx(Sp,{n:x+1}),h.stop.name]}),h.stop.note&&n.jsx("span",{className:"mt-0.5 block text-[12px] leading-relaxed opacity-75",children:h.stop.note})]})]}),n.jsxs("p",{className:"mt-0.5 text-[10px] opacity-50",children:[h.time,"–",h.until,h.stop.searchQuery&&` · 지도 검색 ${h.stop.searchQuery}`]})]})]},`${h.stop.name}-${x}`))}),n.jsx("div",{className:"border-t border-dashed px-4 py-2.5",style:{borderColor:be},children:n.jsx(Hl,{source:i.source,verified:i.verified})})]})}const Gu="그 밖의 일정";function iy(){const i=F(),r=al(i,"itinerary"),u=r.items.filter(x=>Ju(x).some(v=>v.stops.length>0)),o=[...new Set(u.map(x=>{var v;return((v=x.duration)==null?void 0:v.trim())||Gu}))],[f,m]=Y.useState(null),h=f??o[0];return u.length===0?null:n.jsxs(ml,{id:"itinerary",name:r.title||qe(i,"itinerary","추천 일정"),subtitle:r.subtitle,count:"시각은 출발 시각과 머무는 시간으로 계산한 것입니다",children:[o.length>1&&n.jsx("div",{className:"mb-6 flex flex-wrap gap-1.5",role:"tablist","aria-label":"묵는 기간",children:o.map(x=>{const v=h===x;return n.jsxs("button",{type:"button",role:"tab","aria-selected":v,onClick:()=>m(x),className:"border-line rounded-full border px-4 py-1.5 text-[length:var(--fs-sm)] font-bold transition-opacity hover:opacity-80",style:v?{backgroundColor:"var(--color-brand)",color:"var(--tpl-bg, #fff)",borderColor:"transparent"}:void 0,children:[x,n.jsx("span",{className:"ml-1.5 font-normal opacity-60",children:u.filter(p=>{var b;return(((b=p.duration)==null?void 0:b.trim())||Gu)===x}).length})]},x)})}),o.map(x=>n.jsx("div",{hidden:x!==h,children:n.jsx(cy,{tab:x,items:u.filter(v=>{var p;return(((p=v.duration)==null?void 0:p.trim())||Gu)===x})},h)},x))]})}function cy({tab:i,items:r}){const u=Y.useMemo(()=>{let v=0;return r.map(p=>{const b=v;return v+=Ju(p).length,{item:p,start:b}})},[r]),[o,f]=Y.useState(0),m=Y.useRef(null),h=Y.useCallback(v=>{m.current=v},[]),x=u.reduce((v,p)=>p.start<=o?p.start:v,0);return n.jsxs(n.Fragment,{children:[u.length>1&&n.jsx("ul",{className:"border-line mb-5 flex flex-wrap items-center gap-x-4 gap-y-2 border-b pb-3",children:u.map(({item:v,start:p})=>{const b=p===x;return n.jsx("li",{children:n.jsx("button",{type:"button",onClick:()=>{var y;return(y=m.current)==null?void 0:y.scrollTo(p)},"aria-current":b,className:`text-left text-[length:var(--fs-sm)] underline-offset-4 transition-opacity hover:opacity-100 ${b?"font-bold underline":"opacity-55 hover:underline"}`,children:v.name})},`${v.name}-${p}`)})}),n.jsx(En,{label:`${i} 일정`,onSelect:f,onReady:h,children:u.flatMap(({item:v,start:p},b)=>Ju(v).map((y,E)=>n.jsx(sy,{item:v,badge:y.label??v.duration??`${E+1}일차`,startTime:y.startTime,stops:y.stops,first:E===0},`${v.name}-${p}-${E}`)))})]})}const ry=["1위","2위","3위"];function uy(i){const r=Math.floor(i/60),u=i%60;return[r>0?`${r}시간`:"",u>0?`${u}분`:""].filter(Boolean).join(" ")||"0분"}function oy({item:i,rank:r}){const u=up(i);return n.jsxs("article",{className:"w4-paper w-[320px] shrink-0 snap-center border",style:{backgroundColor:Vt,borderColor:be},children:[n.jsxs("div",{className:"flex items-center justify-between gap-2 border-b px-4 py-2.5",style:{borderColor:be},children:[n.jsx("span",{className:"border px-2 py-0.5 text-[11px] font-bold",style:r===0?{backgroundColor:Zt,color:Ul,borderColor:Zt}:{borderColor:be},children:ry[r]??`${r+1}위`}),n.jsxs("span",{className:"text-[11px] opacity-60",children:[u.from,"–",u.to," · ",uy(u.totalMinutes)]})]}),n.jsxs("div",{className:"space-y-1.5 px-4 pt-3.5",children:[n.jsx("h4",{className:"serif text-lg font-bold",children:i.name}),i.audience&&n.jsx("p",{className:"text-[11px] opacity-60",children:i.audience}),i.why&&n.jsx("p",{className:"text-[13px] leading-relaxed opacity-80",children:i.why})]}),n.jsx(Cp,{stops:u.stops.map(o=>o.stop)}),n.jsx("ol",{className:"mt-3 px-4 pb-3",children:u.stops.map((o,f)=>n.jsxs("li",{className:"grid grid-cols-[46px_minmax(0,1fr)] gap-2.5",children:[n.jsx("span",{className:"serif pt-2 text-[12px] tabular-nums opacity-75",children:o.time}),n.jsxs("div",{className:"border-l pb-2 pl-3",style:{borderColor:be},children:[o.move>0&&n.jsxs("p",{className:"pt-1 text-[10px] opacity-50",children:["↓ ",o.move,"분 이동"]}),n.jsxs("div",{className:"flex items-start gap-2.5 pt-1",children:[o.stop.imageUrl&&n.jsx("img",{src:o.stop.imageUrl,alt:`${o.stop.name} 사진`,loading:"lazy",decoding:"async",className:"size-12 shrink-0 object-cover",style:{border:`1px solid ${be}`}}),n.jsxs("span",{className:"min-w-0",children:[n.jsxs("span",{className:"block text-sm font-bold",children:[n.jsx(Sp,{n:f+1}),o.stop.name]}),o.stop.note&&n.jsx("span",{className:"mt-0.5 block text-[12px] leading-relaxed opacity-75",children:o.stop.note})]})]}),n.jsxs("p",{className:"mt-0.5 text-[10px] opacity-50",children:[o.time,"–",o.until,o.stop.searchQuery&&` · 지도 검색 ${o.stop.searchQuery}`]})]})]},`${o.stop.name}-${f}`))}),n.jsx("div",{className:"border-t border-dashed px-4 py-2.5",style:{borderColor:be},children:n.jsx(Hl,{source:i.source,verified:i.verified})})]})}function fy(){const i=F(),r=al(i,"planner"),u=jp();if(r.items.length===0)return null;const o=Fv(r.items),f=o.length>0?o:[void 0],m=u.filter(x=>o.includes(x)),h=m.length>0;return n.jsx(ml,{id:"planner",name:r.title||qe(i,"planner","계절별 추천 하루"),subtitle:r.subtitle,count:h?`지금은 ${m.join(" · ")} 코스입니다 · 시각은 출발 시각과 머무는 시간으로 계산한 것입니다`:"시각은 출발 시각과 머무는 시간으로 계산한 것입니다",children:n.jsx("div",{className:"space-y-10",children:f.map(x=>{const v=Iv(r.items,x);return v.length===0?null:n.jsxs("div",{className:"space-y-3",hidden:h&&!Wv(x,m),children:[x&&n.jsx("h3",{className:"serif text-lg font-bold",children:x}),n.jsx(En,{label:`${x??"추천"} 코스`,children:v.map((p,b)=>n.jsx(oy,{item:p,rank:b},`${p.name}-${b}`))})]},x??"all")})})})}function dy(){const i=F(),r=al(i,"video"),[u,o]=Y.useState(),f=Y.useRef(null),[m,h]=Y.useState({prev:!1,next:!0}),x=Y.useCallback(()=>{const b=f.current;if(!b)return;const y=b.scrollWidth-b.clientWidth;h({prev:b.scrollLeft>8,next:b.scrollLeft(x(),window.addEventListener("resize",x),()=>window.removeEventListener("resize",x)),[x]);const v=Y.useCallback(b=>{const y=f.current;if(!y)return;const E=window.matchMedia("(prefers-reduced-motion: reduce)").matches;y.scrollBy({left:b*y.clientWidth*.85,behavior:E?"auto":"smooth"})},[]);if(gc({box:f,interval:xc,advance:()=>ho(f.current)}),r.items.length===0)return null;const p=r.items.length>1;return n.jsx(ml,{id:"video",name:r.title||qe(i,"video","영상으로 보기"),subtitle:r.subtitle,link:r.linkUrl?{url:r.linkUrl,label:r.linkLabel??"더 보기"}:void 0,children:n.jsxs("div",{className:"relative",children:[n.jsx("ul",{ref:f,onScroll:x,className:p?"flex snap-x snap-mandatory gap-4 overflow-x-auto pb-2 [scrollbar-width:none] lg:grid lg:grid-cols-3 lg:gap-4 lg:snap-none lg:overflow-visible lg:pb-0 [&::-webkit-scrollbar]:hidden":"grid grid-cols-1 gap-4",children:r.items.map((b,y)=>{const E=Bv(b.url),T=Yv(b.url),N=u===y;return n.jsx("li",{className:p?"shrink-0 basis-[86%] snap-start sm:basis-[56%] lg:basis-auto":"",children:n.jsxs("figure",{className:"space-y-2",children:[n.jsx("div",{className:"tpl-border relative mx-auto overflow-hidden border",style:{borderColor:be,backgroundColor:Vt,aspectRatio:T?"9 / 16":"16 / 9",width:T?"min(100%, 22rem)":"100%"},children:N&&E?n.jsx("iframe",{src:Qv(E),title:b.caption||"영상",allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",allowFullScreen:!0,className:"size-full border-0"}):n.jsxs("a",{href:b.url,target:"_blank",rel:"noopener noreferrer",onClick:_=>{E&&(_.preventDefault(),o(y))},"aria-label":`${b.caption||"영상"} 재생`,className:"group block size-full",children:[E?n.jsx("img",{src:Gv(E),alt:"",loading:"lazy",decoding:"async",className:"size-full object-cover"}):n.jsx("span",{className:"text-muted grid size-full place-items-center px-4 text-center text-[length:var(--fs-xs)]",children:"유튜브 영상이 아닙니다 — 눌러서 원본으로 갑니다"}),n.jsx("span",{className:"absolute inset-0 grid place-items-center",children:n.jsx("span",{className:"grid size-14 place-items-center rounded-full backdrop-blur transition-transform group-hover:scale-110",style:{backgroundColor:"color-mix(in srgb, var(--tpl-inverse, #1c1917) 70%, transparent)",color:"var(--tpl-bg, #fff)"},children:n.jsx(_v,{className:"size-6"})})})]})}),b.caption&&n.jsx("figcaption",{className:"text-[length:var(--fs-sm)] leading-relaxed opacity-80",children:b.caption}),n.jsx(Hl,{source:b.source,verified:b.verified})]})},`${b.url}-${y}`)})}),p&&n.jsxs(n.Fragment,{children:[n.jsx(Fh,{dir:"prev",onClick:()=>v(-1),disabled:!m.prev}),n.jsx(Fh,{dir:"next",onClick:()=>v(1),disabled:!m.next})]})]})})}function Fh({dir:i,onClick:r,disabled:u}){const o=i==="prev"?Ma:Oa;return n.jsx("button",{type:"button",onClick:r,disabled:u,"aria-label":i==="prev"?"이전 영상":"다음 영상",className:`tap absolute top-1/2 z-10 flex -translate-y-1/2 items-center justify-center rounded-full bg-black/55 text-white backdrop-blur transition hover:bg-black/75 disabled:pointer-events-none disabled:opacity-0 lg:hidden ${i==="prev"?"left-1":"right-1"}`,children:n.jsx(o,{className:"size-5"})})}const my={1:"한",2:"두",3:"세",4:"네",5:"다섯"},hy=[{id:"songs",label:"가요 다방",Component:zp},{id:"daily",label:"오늘의 한 장",Component:Ep},{id:"people",label:"인물 열전",Component:Ap},{id:"chronicle",label:"시간의 골목",Component:Tp},{id:"postcard",label:"오늘의 엽서",Component:_p}];function py(){const i=F(),r=hy.filter(f=>al(i,f.id).items.length>0),[u,o]=Y.useState(0);return r.length===0?null:n.jsxs(n.Fragment,{children:[n.jsx("section",{id:"story","aria-labelledby":"story-heading",className:"paper w-full",style:{backgroundColor:"var(--tpl-surface, #fafafa)",color:Zt,paddingTop:"var(--section-space)",paddingBottom:"calc(var(--section-space) * 0.55)"},children:n.jsxs("div",{className:"shell",children:[n.jsx("h2",{id:"story-heading",className:"h2",children:qe(i,"story","군산 이야기")}),n.jsxs("p",{className:"measure mt-3 text-[length:var(--fs-sm)] opacity-70",children:["이 도시를 ",my[r.length]??`${r.length}`," 갈래로 봅니다. 하나씩 골라 보세요."]}),n.jsx("div",{className:"mt-6 flex flex-wrap gap-1.5",role:"tablist","aria-label":"군산 이야기",children:r.map((f,m)=>{const h=m===u;return n.jsx("button",{type:"button",role:"tab","aria-selected":h,"aria-controls":f.id,onClick:()=>o(m),className:"rounded-full border px-4 py-1.5 text-[length:var(--fs-sm)] font-bold transition-opacity hover:opacity-80",style:h?{backgroundColor:Zt,color:Ul,borderColor:Zt}:{borderColor:be},children:f.label},f.id)})})]})}),r.map((f,m)=>n.jsx("div",{hidden:m!==u,children:n.jsx(f.Component,{})},f.id))]})}const xy={open:"진행 중",soon:"곧 시작",closed:"종료"};function Ih(i,r){return i.endDate&&i.endDater?"soon":"open"}function Qu(i,r){return i.kind==="공지"&&!i.startDate&&!i.endDate?"공지":r&&xy[r]}function Xu(i){const r=f=>{const m=/^(\d{4})-(\d{2})-(\d{2})$/.exec(f??"");return m?`${Number(m[2])}월 ${Number(m[3])}일`:void 0},u=r(i.startDate),o=r(i.endDate);if(u&&o)return u===o?u:`${u} – ${o}`;if(u)return`${u}부터`;if(o)return`${o}까지`}function gy(){const i=F(),r=al(i,"event"),[u,o]=Y.useState();Y.useEffect(()=>o(new Date().toLocaleDateString("sv-SE")),[]);const[f,m]=Y.useState(null),h=Y.useCallback(()=>m(null),[]);if(Y.useEffect(()=>{if(f===null)return;const p=y=>{y.key==="Escape"&&h()},b=document.body.style.overflow;return document.body.style.overflow="hidden",window.addEventListener("keydown",p),()=>{document.body.style.overflow=b,window.removeEventListener("keydown",p)}},[f,h]),r.items.length===0)return null;const x=f===null?void 0:r.items[f],v=x&&u?Ih(x,u):void 0;return n.jsxs(ml,{id:"event",name:r.title||qe(i,"event",`${i.place.name} 소식`),subtitle:r.subtitle,link:r.linkUrl?{url:r.linkUrl,label:r.linkLabel??"더 보기"}:void 0,count:"자세한 내용과 최신 소식은 원문에서 확인해 주세요.",children:[n.jsx("ul",{className:"grid gap-5 sm:grid-cols-2 lg:grid-cols-3",children:r.items.map((p,b)=>{const y=u?Ih(p,u):void 0,E=Qu(p,y),T=Xu(p),N=y==="closed";return n.jsxs("li",{className:"w4-paper relative flex flex-col border-2",style:{backgroundColor:Vt,borderColor:be,opacity:N?.6:1,boxShadow:N?"none":"3px 3px 0 color-mix(in oklab, currentcolor 12%, transparent)"},children:[n.jsx("button",{type:"button",onClick:()=>m(b),"aria-label":`${p.title} 자세히 보기`,className:"absolute inset-0 z-20 cursor-pointer"}),n.jsx("div",{className:p.imageUrl?"relative overflow-hidden border-b-2":"contents",style:p.imageUrl?{borderColor:be}:void 0,children:p.imageUrl?n.jsx("img",{src:p.imageUrl,alt:`${p.title} 안내 이미지`,loading:"lazy",decoding:"async",className:"aspect-4/3 w-full object-cover",style:N?{filter:"grayscale(1)"}:void 0}):null}),n.jsxs("div",{className:"flex flex-1 flex-col gap-2.5 p-5",children:[n.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[E&&n.jsx("span",{className:"border-2 px-2 py-0.5 text-[11px] font-bold tracking-[0.08em]",style:{transform:"rotate(-3deg)",backgroundColor:y==="open"&&E!=="공지"?Ke:Vt,color:y==="open"&&E!=="공지"?Ul:Zt,borderColor:y==="open"&&E!=="공지"?Ke:be},children:E}),T&&n.jsx("span",{className:"text-[11px] font-semibold tabular-nums opacity-55",children:T})]}),n.jsx("h3",{className:"serif text-lg font-bold leading-snug",children:p.title}),p.summary&&n.jsx("p",{className:"line-clamp-2 text-[13px] leading-relaxed opacity-80",children:p.summary}),p.howTo&&n.jsx("p",{className:"border-2 border-dashed px-3 py-2 text-[12px] leading-relaxed",style:{borderColor:be},children:p.howTo}),p.body&&n.jsx("p",{className:`whitespace-pre-line text-[12px] leading-relaxed opacity-70 ${p.imageUrl?"line-clamp-3":"line-clamp-[9]"}`,children:p.body}),n.jsx("p",{className:"mt-auto pt-2 text-[12px] font-bold opacity-70",children:"자세히 보기 →"})]})]},`${p.title}-${b}`)})}),x&&n.jsx("div",{role:"dialog","aria-modal":"true","aria-label":x.title,className:"fixed inset-0 z-50 flex items-end justify-center bg-black/70 p-0 backdrop-blur-sm sm:items-center sm:p-6",onClick:h,children:n.jsxs("article",{onClick:p=>p.stopPropagation(),className:"w4-paper max-h-[88vh] w-full max-w-2xl overflow-y-auto border-2",style:{backgroundColor:Vt,borderColor:be,color:Zt},children:[x.imageUrl&&n.jsx("img",{src:x.imageUrl,alt:`${x.title} 안내 이미지`,className:"max-h-[46vh] w-full object-contain",style:{backgroundColor:"color-mix(in oklab, currentcolor 6%, transparent)"}}),n.jsxs("div",{className:"space-y-4 p-6 sm:p-8",children:[n.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[Qu(x,v)&&n.jsx("span",{className:"border-2 px-2.5 py-1 text-[11px] font-bold tracking-[0.08em]",style:{borderColor:be},children:Qu(x,v)}),Xu(x)&&n.jsx("span",{className:"text-[12px] font-semibold tabular-nums opacity-60",children:Xu(x)})]}),n.jsx("h3",{className:"serif text-[length:var(--fs-h3)] font-bold leading-snug",children:x.title}),x.summary&&n.jsx("p",{className:"text-[length:var(--fs-sm)] leading-relaxed opacity-85",children:x.summary}),x.howTo&&n.jsx("p",{className:"border-2 border-dashed px-4 py-3 text-[length:var(--fs-sm)] leading-relaxed",style:{borderColor:be},children:x.howTo}),x.body&&n.jsx("p",{className:"whitespace-pre-line text-[length:var(--fs-sm)] leading-relaxed opacity-85",children:x.body}),n.jsxs("div",{className:"flex items-center justify-between gap-4 pt-2",children:[x.postUrl?n.jsx("a",{href:x.postUrl,target:"_blank",rel:"noopener noreferrer",className:"text-[length:var(--fs-sm)] font-bold underline-offset-4 hover:underline",children:"원문 보기 →"}):n.jsx("span",{}),n.jsxs("button",{type:"button",onClick:h,className:"tap inline-flex items-center gap-1.5 border-2 px-4 text-[length:var(--fs-sm)] font-bold",style:{borderColor:be},children:[n.jsx(sp,{className:"size-4"}),n.jsx("span",{children:"닫기"})]})]})]})]})})]})}const vy={songs:zp,daily:Ep,people:Ap,chronicle:Tp,postcard:_p,quiz:Fb,itinerary:iy,planner:fy,video:dy,event:gy,story:py};function by({children:i}){return n.jsxs("div",{className:"flex min-h-screen w-full flex-col",children:[n.jsx(Ny,{}),n.jsx("div",{className:"flex w-full flex-1 flex-col",children:i}),n.jsx(Sy,{}),n.jsx(zn,{})]})}function Mp(){const i=F(),r=dt(i);return[{id:"intro",href:"#about",fallback:"소개"},{id:r.path,href:"#units",fallback:r.label},{id:"pricing",href:"#pricing",fallback:"요금"},{id:"info",href:"#info",fallback:"이용 정보"},{id:"booking",href:"#booking",fallback:"예약 안내"},{id:"photos",href:"#gallery",fallback:"사진"},{id:"map",href:"#location",fallback:"오시는 길"},{id:"local",href:"#guide",fallback:"주변 정보"},{id:"faq",href:"#faq",fallback:"자주 묻는 질문"}].filter(u=>Kt(i,u.id)).map(u=>({label:qe(i,u.id,u.fallback),href:u.href}))}const yy=24,jy="0 1px 3px color-mix(in srgb, var(--tpl-inverse, #1c1917) 55%, transparent)";function Ny(){const i=F(),r=Mp(),[u,o]=Y.useState(!1);Y.useEffect(()=>{const m=()=>o(window.scrollY>yy);return m(),window.addEventListener("scroll",m,{passive:!0}),()=>window.removeEventListener("scroll",m)},[]);const f=u?"opacity-70 transition-opacity hover:opacity-100":"underline-offset-4 hover:underline";return n.jsx("header",{className:`fixed inset-x-0 top-0 z-40 w-full transition-colors duration-300 ${u?"border-line border-b backdrop-blur-md":""}`,style:u?{backgroundColor:"color-mix(in srgb, var(--tpl-surface, #fff) 92%, transparent)"}:{color:"var(--tpl-bg, #ffffff)",textShadow:jy},children:n.jsxs("div",{className:"shell grid h-20 grid-cols-[1fr_auto] items-center gap-4 lg:grid-cols-[1fr_auto_1fr]",children:[n.jsx("a",{href:"#top",className:"min-w-0",children:n.jsx("span",{className:"serif block truncate",style:{fontSize:"var(--fs-lead)",fontWeight:300,letterSpacing:"0.12em"},children:i.place.name})}),n.jsx("nav",{"aria-label":"주요 메뉴",className:"hidden items-center justify-center gap-10 lg:flex",children:r.map(m=>n.jsx("a",{href:m.href,className:`py-1 text-[length:var(--fs-sm)] font-light ${f}`,children:m.label},m.href))}),n.jsxs("div",{className:"flex items-center justify-end gap-2",children:[i.place.phone&&n.jsx("a",{href:`tel:${i.place.phone}`,className:`tap hidden items-center text-[length:var(--fs-sm)] font-light tabular-nums sm:inline-flex ${f}`,children:i.place.phone}),r.length>0&&n.jsxs("details",{className:"lg:hidden",children:[n.jsx("summary",{className:"tap flex cursor-pointer list-none items-center justify-center px-2 text-[length:var(--fs-sm)] font-light marker:content-none [&::-webkit-details-marker]:hidden","aria-label":"메뉴 열기",children:"메뉴"}),n.jsx("nav",{"aria-label":"전체 메뉴",className:"border-line absolute inset-x-0 top-full border-b border-t",style:{backgroundColor:"var(--tpl-surface, #fff)",color:"var(--tpl-text)",textShadow:"none"},children:n.jsx("ul",{className:"divide-line shell divide-y",children:r.map(m=>n.jsx("li",{children:n.jsx("a",{href:m.href,className:"tap flex items-center text-[length:var(--fs-sm)] font-light",children:m.label})},m.href))})})]})]})]})})}function Sy(){var p,b,y,E;const i=F(),{place:r,site:u,narrative:o}=i,f=Mp(),m=r.roadAddress??r.address,h=et(i)[0],x=Ls(i),v=o.about[0]??o.summary;return n.jsx("footer",{className:"border-line paper w-full border-t pb-28 md:pb-16",style:{backgroundColor:"var(--tpl-surface-alt, #f5f5f4)",paddingTop:"var(--section-space)"},children:n.jsxs("div",{className:"shell",children:[n.jsxs("div",{className:"grid gap-10 md:grid-cols-3 md:gap-12",children:[n.jsxs("div",{className:"min-w-0",children:[n.jsx("p",{className:"serif",style:{fontSize:"var(--fs-lead)",fontWeight:300,letterSpacing:"0.1em"},children:r.name}),v&&n.jsx("p",{className:"text-muted measure mt-4 text-[length:var(--fs-sm)] leading-loose",children:v})]}),n.jsxs("dl",{className:"min-w-0 space-y-5",children:[m&&n.jsxs("div",{children:[n.jsx("dt",{className:"label",children:"주소"}),n.jsx("dd",{className:"mt-1 text-[length:var(--fs-sm)] font-light",children:m})]}),r.phone&&n.jsxs("div",{children:[n.jsx("dt",{className:"label",children:"전화"}),n.jsx("dd",{className:"mt-1 text-[length:var(--fs-sm)] font-light tabular-nums",children:n.jsx("a",{href:`tel:${r.phone}`,className:"underline-offset-4 hover:underline",children:r.phone})})]}),r.email&&n.jsxs("div",{children:[n.jsx("dt",{className:"label",children:"이메일"}),n.jsx("dd",{className:"mt-1 text-[length:var(--fs-sm)] font-light",children:n.jsx("a",{href:`mailto:${r.email}`,className:"underline-offset-4 hover:underline",children:r.email})})]}),h&&n.jsxs("div",{children:[n.jsx("dt",{className:"label",children:"예약"}),n.jsx("dd",{className:"mt-1 text-[length:var(--fs-sm)] font-light",children:n.jsx("a",{href:h.url,target:"_blank",rel:"noopener noreferrer",className:"underline-offset-4 hover:underline",children:Pe(h)})})]})]}),f.length>0&&n.jsx("nav",{"aria-label":"사이트 메뉴",className:"min-w-0",children:n.jsx("ul",{className:"space-y-3",children:f.map(T=>n.jsx("li",{children:n.jsx("a",{href:T.href,className:"text-muted text-[length:var(--fs-sm)] font-light underline-offset-4 hover:underline",children:T.label})},T.href))})})]}),n.jsx("hr",{className:"border-line mt-12 border-t"}),x.length>0&&n.jsx("ul",{className:"mt-8 flex flex-wrap items-center justify-center gap-x-6 gap-y-2",children:x.map(T=>n.jsx("li",{children:n.jsx("a",{href:T.url,target:"_blank",rel:"noopener noreferrer",className:"text-muted text-[length:var(--fs-xs)] font-light underline-offset-4 hover:underline",children:Pe(T)})},T.url))}),n.jsxs("div",{className:"text-muted mt-8 flex flex-wrap items-center justify-center gap-x-4 gap-y-1 text-center text-[length:var(--fs-xs)] font-light",children:[n.jsxs("span",{children:["상호 ",r.name]}),((p=r.legal)==null?void 0:p.representative)&&n.jsxs("span",{children:["대표 ",r.legal.representative]}),((b=r.legal)==null?void 0:b.businessRegistrationNumber)&&n.jsxs("span",{children:["사업자등록번호 ",r.legal.businessRegistrationNumber]}),((y=r.legal)==null?void 0:y.mailOrderNumber)&&n.jsxs("span",{children:["통신판매업신고 ",r.legal.mailOrderNumber]}),((E=r.legal)==null?void 0:E.licenseNumber)&&n.jsxs("span",{children:[r.legal.licenseLabel??"인허가번호"," ",r.legal.licenseNumber]}),n.jsxs("span",{className:"byline",children:[n.jsxs("span",{className:"author",children:["작성·운영 ",r.name]})," · 최종 업데이트: ",n.jsx("time",{dateTime:u.updatedAt,children:qs(u.updatedAt)})]})]})]})})}const zy=` +.oasi-page main > section:not([data-oasi]) { + background-color: transparent !important; + background-image: none !important; + border-color: transparent !important; + color: var(--tpl-text) !important; + padding-block: var(--oasi-gap) 0 !important; +} +.oasi-page main > section:not([data-oasi]) .shell { + max-width: none; + padding-inline: 0; +} +.oasi-page main > section#about > .shell > .grid { + display: block; +} +.oasi-page main > section#about > .shell > .grid > * + * { + margin-top: 2.5rem; +} +.oasi-page main > section#summary dl { + grid-template-columns: minmax(0, 1fr); +} + +/* + * 붙여넣기 아이템 카드 — 소식 · 영상 · 추천 일정 (2026-09-04, 사장님: "1,2,3안 다 맞추세요") + * + * ★ 이 카드들은 .panel 이 아니라 제 인라인 style 로 면을 그린다(items/common.tsx 의 + * ITEM_CARD·ITEM_BORDER). 그래서 위 .panel 규칙이 안 닿았고, 섹션 띠를 다 지운 3안에서 + * **소식 카드만 갱지 결에 2px 테두리를 두른 상자로 혼자 서 있었다.** + * ★ w4-paper 의 결은 1안(레트로 갱지)의 것이다. 여기서는 결을 지우고 테두리를 실선 한 겹으로 + * 낮춘다. 상자를 아예 없애지는 않는다 — 전단 여섯 장이 경계 없이 붙으면 어디까지가 한 장인지 + * 안 보인다. 면은 빼고 테두리만 남기는 게 이 안의 타협점이다. + * ★ 배경은 transparent 로 두지 않는다. 사진 없는 공지 카드가 종이에 바로 얹히면 + * 본문과 구분이 사라진다 — 아주 옅은 틴트 한 겹만 남긴다. + * ★ 영상은 뺐다 (2026-09-04, 사장님: "영상 border 안 예쁘다") + * 영상 카드는 상자가 아니라 **표지 사진 한 장**이고, 쇼츠라 9:16 세로다. li 에 틴트를 깔면 + * 영상보다 넓은 회색 판이 뒤에 깔려 액자처럼 보인다. 사진은 제 테두리가 곧 경계다. + */ +.oasi-page section#event li, +.oasi-page section#itinerary article { + background-image: none !important; + background-color: color-mix(in oklab, currentcolor 3%, transparent) !important; + border-width: 1px !important; + box-shadow: none !important; +} + +.oasi-page .panel, +.oasi-page .panel-sunken { + background-color: transparent; + border-width: 0; + border-radius: 0; + box-shadow: none; +} + +.oasi-page main > section#faq > .shell > div:last-of-type { + row-gap: 0; + column-gap: 2.5rem; +} +.oasi-page main > section#faq details { + margin-block: 0; + border-top: 1px solid var(--color-line); +} +.oasi-page main > section#faq summary { + padding-inline: 0; +} +.oasi-page main > section#faq summary > span:first-child { + width: 1.125rem; +} +.oasi-page main > section#faq summary + div { + border-top-width: 0; + padding-inline: 1.875rem 0; + padding-top: 0.5rem; +} + +.oasi-page main > section#info dl.panel > div { + padding-inline: 0; +} +.oasi-page main > section#info dl > div.panel { + border-top: 1px solid var(--color-line); + padding-inline: 0; +} + +.oasi-page main > section#location .panel { + border-top: 1px solid var(--color-line); + padding-inline: 0; +} +.oasi-page main > section#location :is(thead, tbody) :is(th, td):first-child { + padding-left: 0; +} +.oasi-page main > section#location :is(thead, tbody) :is(th, td):last-child { + padding-right: 0; +} + +.oasi-page main > section#weather .panel { + padding-inline: 0; +} + +.oasi-page main > section#guide .panel > span:last-child { + padding-inline: 0; +} +@media (min-width: 40rem) { + .oasi-page main > section#festival .panel > span:last-child { + padding-inline: 0; + } +} +`,Ey={"--oasi-gap":"clamp(3.5rem, 7vw, var(--tpl-section-space, 4rem))",backgroundColor:"var(--tpl-bg)",color:"var(--tpl-text)"};function Ay({children:i}){var b,y,E,T;const r=F(),{place:u}=r,o=dt(r),f=et(r)[0],m=Ls(r),h=[{label:"처음",href:"#top",show:!0},{label:"소개",href:"#about",show:Kt(r,"intro")},{label:o.label,href:"#units",show:r.units.length>0},{label:"이용 정보",href:"#info",show:!0},{label:"주변",href:"#guide",show:Kt(r,"local")},{label:"오시는 길",href:"#location",show:!0},{label:"자주 묻는 질문",href:"#faq",show:r.faqs.length>0}].filter(N=>N.show),x=[...Da(r).map(N=>`${N.label} ${N.value}`),...r.theme.sections.filter(N=>{var _;return N.enabled&&((_=N.name)==null?void 0:_.trim())}).map(N=>N.name.trim())].slice(0,3),v=r.narrative.tagline??r.narrative.heroSubline,p=u.roadAddress??u.address;return n.jsxs("div",{className:"oasi-page flex min-h-screen w-full flex-col",style:Ey,children:[n.jsx("style",{dangerouslySetInnerHTML:{__html:zy}}),n.jsxs("div",{className:"mx-auto flex w-full max-w-[72rem] flex-col gap-10 px-5 pb-16 pt-10 lg:flex-row lg:gap-14 lg:px-10 lg:pb-24 lg:pt-16",children:[n.jsxs("header",{className:"lg:sticky lg:top-12 lg:h-fit lg:w-[18.75rem] lg:shrink-0",children:[n.jsxs("a",{href:"#top",className:"block",children:[n.jsx("span",{className:"serif block leading-none",style:{fontSize:"var(--fs-display)",fontWeight:300,letterSpacing:"0.14em"},children:u.name}),u.englishName&&n.jsx("span",{className:"text-muted mt-3 block text-[length:var(--fs-xs)] tracking-[0.24em]",children:u.englishName})]}),n.jsx("nav",{"aria-label":"주요 메뉴",className:"mt-12 lg:mt-24",children:n.jsx("ul",{className:"flex flex-wrap items-center gap-x-6 gap-y-1 lg:block",children:h.map((N,_)=>n.jsx("li",{children:n.jsx("a",{href:N.href,"aria-current":_===0?"true":void 0,className:`tap inline-flex items-center text-[length:var(--fs-sm)] transition-opacity hover:opacity-100 ${_===0?"":"text-muted"}`,children:N.label})},N.label))})}),f&&n.jsxs("a",{href:f.url,target:"_blank",rel:"noopener noreferrer",className:"tap mt-2 inline-flex items-center text-[length:var(--fs-sm)] underline underline-offset-[6px]",style:{color:"var(--color-brand)"},children:[Pe(f)," 예약"]})]}),n.jsxs("div",{className:"flex min-w-0 flex-1 flex-col",children:[(x.length>0||v)&&n.jsxs("div",{className:"border-line flex flex-col gap-3 border-y py-4 sm:flex-row sm:items-center sm:justify-between sm:gap-6",children:[x.length>0&&n.jsx("ul",{className:"text-muted flex min-w-0 flex-wrap items-center gap-x-4 gap-y-1 text-[length:var(--fs-xs)]",children:x.map((N,_)=>n.jsxs("li",{className:"flex items-center gap-4",children:[_>0&&n.jsx("span",{"aria-hidden":!0,className:"opacity-40",children:"|"}),n.jsx("span",{children:N})]},N))}),v&&n.jsx("p",{className:"text-muted measure shrink-0 text-[length:var(--fs-xs)] leading-[1.9] sm:max-w-[18rem] sm:text-right",children:v})]}),i]})]}),n.jsx("footer",{className:"border-line mt-auto w-full border-t",children:n.jsxs("div",{className:"mx-auto grid w-full max-w-[72rem] grid-cols-1 gap-8 px-5 pb-28 pt-10 text-[length:var(--fs-xs)] leading-[1.9] sm:grid-cols-3 lg:px-10 lg:pb-14",children:[n.jsxs("p",{children:["[",u.name,"]"]}),m.length>0?n.jsx("ul",{className:"space-y-1",children:m.map(N=>n.jsx("li",{children:n.jsx("a",{href:N.url,target:"_blank",rel:"noopener noreferrer",className:"underline underline-offset-[5px]",children:Pe(N)})},N.url))}):n.jsx("span",{}),n.jsxs("div",{className:"text-muted space-y-1 sm:text-right",children:[p&&n.jsx("p",{children:p}),u.phone&&n.jsx("p",{children:n.jsx("a",{href:`tel:${u.phone}`,className:"underline underline-offset-[5px]",children:u.phone})}),u.email&&n.jsx("p",{children:u.email}),((b=u.legal)==null?void 0:b.representative)&&n.jsxs("p",{children:["대표 ",u.legal.representative]}),((y=u.legal)==null?void 0:y.businessRegistrationNumber)&&n.jsxs("p",{children:["사업자등록번호 ",u.legal.businessRegistrationNumber]}),((E=u.legal)==null?void 0:E.mailOrderNumber)&&n.jsxs("p",{children:["통신판매업신고 ",u.legal.mailOrderNumber]}),((T=u.legal)==null?void 0:T.licenseNumber)&&n.jsxs("p",{children:[u.legal.licenseLabel??"인허가번호"," ",u.legal.licenseNumber]}),n.jsxs("p",{className:"byline",children:[n.jsxs("span",{className:"author",children:["작성·운영 ",u.name]})," · 최종 업데이트: ",n.jsx("time",{dateTime:r.site.updatedAt,children:qs(r.site.updatedAt)})]})]})]})}),n.jsx(zn,{})]})}function Ty({children:i}){var E,T,N,_;const r=F(),{place:u,narrative:o,site:f}=r,m=dt(r),h=Sn(r),x=Da(r),v=et(r)[0],p=r.links.filter(U=>U.confirmed),b=u.roadAddress??u.address,y=[{label:"소개",href:"#about",show:Kt(r,"intro")},{label:m.label,href:"#units",show:r.units.length>0},{label:"이용 정보",href:"#info",show:!0},{label:"주변 정보",href:"#guide",show:Kt(r,"local")},{label:"오시는 길",href:"#location",show:!0},{label:"자주 묻는 질문",href:"#faq",show:r.faqs.length>0}].filter(U=>U.show);return n.jsxs("div",{className:"flex min-h-screen w-full flex-col lg:flex-row",style:{backgroundColor:"var(--tpl-bg)",color:"var(--tpl-text)"},children:[n.jsx("aside",{className:"w-full shrink-0 px-6 pb-8 pt-8 lg:sticky lg:top-0 lg:h-screen lg:w-[260px] lg:overflow-y-auto lg:px-7 lg:py-10",style:{backgroundColor:"var(--tpl-bg)"},children:n.jsxs("div",{className:"flex h-full min-w-0 flex-col",children:[n.jsx("a",{href:"#top",className:"block min-w-0",children:n.jsx("h1",{className:"serif min-w-0 break-keep font-black",style:{fontSize:"var(--fs-h2)",letterSpacing:"0.12em",lineHeight:1.25},children:u.name})}),(o.tagline??o.heroSubline)&&n.jsx("p",{className:"text-muted mt-3 text-[length:var(--fs-sm)]",style:{lineHeight:1.7},children:o.tagline??o.heroSubline}),(h||x.length>0)&&n.jsxs("dl",{className:"mt-7 space-y-2.5",children:[h&&n.jsxs("div",{children:[n.jsx("dt",{className:"label",children:"최저가"}),n.jsx("dd",{className:"text-[length:var(--fs-lead)] font-bold tabular-nums",children:h})]}),x.map(U=>n.jsxs("div",{children:[n.jsx("dt",{className:"label",children:U.label}),n.jsx("dd",{className:"text-[length:var(--fs-sm)] font-semibold",children:U.value})]},U.label))]}),v&&n.jsxs("a",{href:v.url,target:"_blank",rel:"noopener noreferrer",className:"tap mt-5 inline-flex w-full items-center justify-center px-4 text-[length:var(--fs-sm)] font-bold transition-opacity hover:opacity-90",style:{backgroundColor:"var(--color-brand)",color:"var(--tpl-bg)"},children:[Pe(v),"로 예약"]}),u.phone&&n.jsxs("a",{href:`tel:${u.phone}`,className:"tap mt-2 inline-flex w-full items-center justify-center px-4 text-[length:var(--fs-sm)] font-bold",style:{backgroundColor:"var(--tpl-surface-alt)",color:"var(--tpl-text)"},children:["전화 ",u.phone]}),n.jsx("nav",{"aria-label":"주요 메뉴",className:"mt-10",children:n.jsx("ul",{className:"space-y-0.5",children:y.map(U=>n.jsx("li",{children:n.jsx("a",{href:U.href,className:"text-muted flex min-h-[2rem] items-center text-[length:var(--fs-sm)] transition-colors hover:text-current",children:U.label})},U.label))})}),p.length>0&&n.jsx("nav",{"aria-label":"공식 채널",className:"mt-12",children:n.jsx("ul",{className:"space-y-0.5",children:p.map(U=>n.jsx("li",{children:n.jsx("a",{href:U.url,target:"_blank",rel:"noopener noreferrer",className:"text-muted flex min-h-[2rem] items-center text-[length:var(--fs-xs)] underline-offset-4 transition-colors hover:text-current hover:underline",children:Rl(U)})},U.url))})}),n.jsxs("div",{className:"text-muted mt-14 space-y-1 pb-2 text-[length:var(--fs-xs)] lg:mt-auto lg:pt-14",children:[b&&n.jsx("p",{className:"break-keep",children:b}),u.phone&&n.jsx("p",{children:u.phone}),u.email&&n.jsx("p",{children:n.jsx("a",{href:`mailto:${u.email}`,className:"underline-offset-2 hover:underline",children:u.email})}),n.jsxs("div",{className:"flex flex-wrap gap-x-2 gap-y-0.5 pt-3",children:[n.jsxs("span",{children:["상호: ",u.name]}),((E=u.legal)==null?void 0:E.representative)&&n.jsxs("span",{children:["대표: ",u.legal.representative]}),((T=u.legal)==null?void 0:T.businessRegistrationNumber)&&n.jsxs("span",{children:["사업자등록번호: ",u.legal.businessRegistrationNumber]}),((N=u.legal)==null?void 0:N.mailOrderNumber)&&n.jsxs("span",{children:["통신판매업신고: ",u.legal.mailOrderNumber]}),((_=u.legal)==null?void 0:_.licenseNumber)&&n.jsxs("span",{children:[u.legal.licenseLabel??"인허가번호",": ",u.legal.licenseNumber]})]}),n.jsxs("p",{className:"byline pt-1",children:[n.jsxs("span",{className:"author",children:["작성·운영 ",u.name]})," · 최종 업데이트: ",n.jsx("time",{dateTime:f.updatedAt,children:qs(f.updatedAt)})]})]})]})}),n.jsx("div",{className:"flex min-w-0 flex-1 flex-col pb-24 lg:pb-0",children:i}),n.jsx(zn,{})]})}const _y=` +.pastel-page > main > section:not([data-pastel]) { + border-color: transparent; + background-image: none; + color: var(--pastel-ink) !important; +} +.pastel-page > main > section:not([data-pastel]):nth-of-type(4n+1) { background-color: var(--pastel-1) !important; } +.pastel-page > main > section:not([data-pastel]):nth-of-type(4n+2) { background-color: var(--pastel-soft) !important; } +.pastel-page > main > section:not([data-pastel]):nth-of-type(4n+3) { background-color: var(--pastel-2) !important; } +.pastel-page > main > section:not([data-pastel]):nth-of-type(4n) { background-color: var(--pastel-3) !important; } +`,wy={"--pastel-1":"var(--tpl-card)","--pastel-2":"var(--tpl-accent)","--pastel-3":"var(--tpl-secondary)","--pastel-soft":"var(--tpl-bg)","--pastel-ink":"var(--tpl-text)","--section-space":"clamp(2.75rem, 8vw, calc(var(--tpl-section-space, 4rem) * 1.4))",backgroundColor:"var(--pastel-soft)",color:"var(--pastel-ink)"};function Cy({children:i}){const r=F(),u=dt(r),o=Ls(r),f=[{label:"소개",href:"#about",show:Kt(r,"intro")},{label:u.label,href:"#units",show:r.units.length>0},{label:"이용 정보",href:"#info",show:!0},{label:"주변",href:"#guide",show:Kt(r,"local")},{label:"오시는 길",href:"#location",show:!0},{label:"FAQ",href:"#faq",show:r.faqs.length>0}].filter(m=>m.show);return n.jsxs("div",{className:"pastel-page flex min-h-screen w-full flex-col",style:wy,children:[n.jsx("style",{dangerouslySetInnerHTML:{__html:_y}}),n.jsx("header",{className:"sticky top-0 z-40 w-full",style:{backgroundColor:"color-mix(in srgb, var(--tpl-surface, #fff) 92%, transparent)"},children:n.jsxs("div",{className:"shell flex h-16 items-center justify-between gap-3",children:[n.jsx("a",{href:"#top",className:"flex min-w-0 items-center gap-2",children:n.jsx("span",{className:"serif truncate italic",style:{fontSize:"var(--fs-lead)",fontWeight:800,display:"inline-block",transform:"rotate(-1.5deg)"},children:r.place.name})}),n.jsx("nav",{"aria-label":"주요 메뉴",className:"hidden items-center gap-8 lg:flex",children:f.map(m=>n.jsx("a",{href:m.href,className:"py-1 text-[length:var(--fs-xs)] font-bold tracking-[0.2em] opacity-70 transition-opacity hover:opacity-100",children:m.label},m.label))}),n.jsxs("div",{className:"flex shrink-0 items-center gap-1",children:[r.place.phone&&n.jsx("a",{href:`tel:${r.place.phone}`,"aria-label":"전화",className:"tap flex items-center justify-center rounded-full",style:{backgroundColor:"var(--pastel-1)"},children:n.jsx(Jt,{className:"size-4"})}),o.map(m=>n.jsx("a",{href:m.url,target:"_blank",rel:"noopener noreferrer","aria-label":Rl(m),className:"tap flex items-center justify-center rounded-full",style:{backgroundColor:"var(--pastel-2)"},children:/instagram/i.test(m.url)?n.jsx(yv,{className:"size-4"}):n.jsx(Fu,{className:"size-4"})},m.url)),n.jsxs("details",{className:"relative lg:hidden",children:[n.jsx("summary",{className:"tap flex cursor-pointer items-center justify-center rounded-full marker:content-none [&::-webkit-details-marker]:hidden","aria-label":"메뉴 열기",children:n.jsx(np,{className:"size-5"})}),n.jsx("nav",{"aria-label":"전체 메뉴",className:"absolute right-0 top-[calc(100%+0.5rem)] z-50 w-48 overflow-hidden rounded-2xl",style:{backgroundColor:"var(--tpl-surface, #fff)",boxShadow:"0 10px 30px rgb(0 0 0 / 0.12)"},children:n.jsx("ul",{children:f.map(m=>n.jsx("li",{children:n.jsx("a",{href:m.href,className:"tap flex items-center px-4 text-[length:var(--fs-sm)] font-bold tracking-[0.08em]",children:m.label})},m.label))})})]})]})]})}),i,n.jsx("div",{style:{"--tpl-inverse":"var(--pastel-3)","--tpl-bg":"var(--pastel-ink)"},children:n.jsx(Np,{})}),n.jsx(zn,{})]})}function My({children:i}){var p,b,y,E;const r=F(),{place:u,site:o}=r,f=hp(),m=Oy(f),h=et(r)[0],x=r.links.filter(T=>T.confirmed),v=u.roadAddress??u.address;return n.jsxs("div",{className:"flex min-h-screen w-full flex-col",style:{backgroundColor:"var(--tpl-bg)",color:"var(--tpl-text)"},children:[n.jsx("header",{className:"sticky top-0 z-40 w-full border-b-2 backdrop-blur-md",style:{backgroundColor:"color-mix(in srgb, var(--tpl-bg) 90%, transparent)",borderColor:"var(--tpl-text)"},children:n.jsxs("div",{className:"flex h-14 items-center justify-between gap-4 px-4 sm:px-6 xl:px-8",children:[n.jsx("a",{href:"#top",className:"serif min-w-0 truncate text-[length:var(--fs-lead)] font-extrabold",children:u.name}),n.jsxs("div",{className:"flex shrink-0 items-center gap-4 text-[length:var(--fs-sm)]",children:[u.phone&&n.jsx("a",{href:`tel:${u.phone}`,className:"tap inline-flex items-center underline underline-offset-4",children:u.phone}),h&&n.jsxs("a",{href:h.url,target:"_blank",rel:"noopener noreferrer",className:"tap inline-flex items-center font-bold underline underline-offset-4",children:[Pe(h)," 예약"]})]})]})}),n.jsxs("div",{className:"flex w-full flex-1",children:[f.length>0&&n.jsx("aside",{className:"border-line sticky top-14 hidden h-[calc(100vh-3.5rem)] w-44 shrink-0 self-start border-r xl:block",style:{backgroundImage:Ms},children:n.jsx("nav",{"aria-label":"차례",className:"flex h-full flex-col justify-center gap-0.5 py-8 pl-6 pr-3",children:f.map(T=>{const N=T.anchor===m;return n.jsxs("a",{href:`#${T.anchor}`,"aria-current":N?"true":void 0,className:"flex items-baseline gap-2 py-2 text-[length:var(--fs-sm)] leading-tight motion-safe:transition-opacity",style:{opacity:N?1:.35},children:[n.jsx("span",{className:"shrink-0 text-[length:var(--fs-xs)] font-bold tabular-nums",children:T.no}),n.jsx("span",{className:"truncate",style:{fontWeight:N?700:400},children:T.label})]},T.anchor)})})}),n.jsx("div",{className:"flex min-w-0 flex-1 flex-col",children:i})]}),n.jsx("footer",{className:"w-full pb-28 pt-12 md:pb-16",style:{backgroundColor:"var(--tpl-inverse)",color:"var(--tpl-bg)",backgroundImage:Ms},children:n.jsxs("div",{className:"shell",children:[n.jsx("div",{"aria-hidden":!0,className:"h-0.5 w-full bg-current opacity-70"}),n.jsxs("div",{className:"grid grid-cols-1 gap-8 pt-8 md:grid-cols-12",children:[n.jsxs("div",{className:"md:col-span-5",children:[n.jsx("p",{className:"serif",style:{fontSize:"clamp(1.5rem, 4vw, 2.5rem)",fontWeight:800,lineHeight:1.05},children:u.name}),u.englishName&&n.jsx("p",{className:"mt-2 text-[length:var(--fs-xs)] uppercase tracking-[0.18em] opacity-55",children:u.englishName})]}),n.jsxs("address",{className:"space-y-2 font-serif text-[length:var(--fs-sm)] not-italic opacity-80 md:col-span-4",children:[v&&n.jsx("p",{children:v}),u.phone&&n.jsx("p",{children:n.jsx("a",{href:`tel:${u.phone}`,className:"underline underline-offset-4",children:u.phone})}),u.email&&n.jsx("p",{children:n.jsx("a",{href:`mailto:${u.email}`,className:"underline underline-offset-4",children:u.email})})]}),x.length>0&&n.jsx("nav",{"aria-label":"공식 채널",className:"md:col-span-3",children:n.jsx("ul",{className:"space-y-1.5 text-[length:var(--fs-sm)]",children:x.map(T=>n.jsx("li",{children:n.jsx("a",{href:T.url,target:"_blank",rel:"noopener noreferrer",className:"underline underline-offset-4 opacity-80 transition-opacity hover:opacity-100",children:Rl(T)})},T.url))})})]}),n.jsxs("div",{className:"mt-10 flex flex-col gap-2 border-t border-current/20 pt-5 text-[length:var(--fs-xs)] opacity-55 sm:flex-row sm:items-center sm:justify-between",children:[n.jsxs("div",{className:"flex flex-wrap items-center gap-x-3 gap-y-1",children:[n.jsxs("span",{children:["상호: ",u.name]}),((p=u.legal)==null?void 0:p.representative)&&n.jsxs("span",{children:["대표: ",u.legal.representative]}),((b=u.legal)==null?void 0:b.businessRegistrationNumber)&&n.jsxs("span",{children:["사업자등록번호: ",u.legal.businessRegistrationNumber]}),((y=u.legal)==null?void 0:y.mailOrderNumber)&&n.jsxs("span",{children:["통신판매업신고: ",u.legal.mailOrderNumber]}),((E=u.legal)==null?void 0:E.licenseNumber)&&n.jsxs("span",{children:[u.legal.licenseLabel??"인허가번호",": ",u.legal.licenseNumber]})]}),n.jsxs("p",{className:"byline shrink-0",children:[n.jsxs("span",{className:"author",children:["작성·운영 ",u.name]})," · 최종 업데이트: ",n.jsx("time",{dateTime:o.updatedAt,children:qs(o.updatedAt)})]})]})]})}),n.jsx(zn,{})]})}function Oy(i){const r=i.map(f=>f.anchor).join(","),[u,o]=Y.useState("");return Y.useEffect(()=>{if(typeof IntersectionObserver>"u")return;const f=r.split(",").map(h=>document.getElementById(h)).filter(h=>h!==null);if(f.length===0)return;const m=new IntersectionObserver(h=>{const x=h.find(v=>v.isIntersecting);x&&o(x.target.id)},{rootMargin:"-45% 0px -50% 0px"});return f.forEach(h=>m.observe(h)),()=>m.disconnect()},[r]),u}function Dy(){const i=F(),r={intro:Sb,info:zb,rooms:qu,pricing:Ub,menu:qu,programs:qu,booking:Rb,space:Hb,inquiry:Lb,exhibition:qb,photos:Kb,festival:Yb,local:Gb,weather:Zb,map:Zh,faq:Jb,...vy},u=new Set;return n.jsxs("main",{className:"w-full flex-1",children:[n.jsx(U0,{}),!Kt(i,"intro")&&n.jsx(Mh,{}),i.theme.sections.filter(o=>o.enabled&&o.id!=="hero").map(o=>{const f=r[o.id];if(!f)return null;const m=f.name;return u.has(m)?null:(u.add(m),n.jsxs(Y.Fragment,{children:[n.jsx(f,{}),o.id==="intro"&&n.jsx(Mh,{})]},o.id))}),!Kt(i,"map")&&n.jsx(Zh,{})]})}function Ph({payload:i}){const r=mp(i.theme.templateId),u=r==="reservation"?by:r==="oasi"?Ay:r==="studio"?Ty:r==="pastel"?Cy:r==="editorial"?My:ky;return n.jsx(kv,{payload:i,children:n.jsx(u,{children:n.jsx(Dy,{})})})}function ky({children:i}){return n.jsxs("div",{className:"flex min-h-screen w-full flex-col",children:[n.jsx(g0,{}),n.jsx("div",{className:"flex w-full flex-1 flex-col",children:i}),n.jsx(Np,{}),n.jsx(zn,{})]})}const ep=document.getElementById("root"),tp=window.__SITE_PAYLOAD__;tp?Eh.hydrateRoot(ep,n.jsx(Y.StrictMode,{children:n.jsx(Ph,{payload:tp})})):Vg(async()=>{const{MOONLIGHT_STAY_PAYLOAD:i}=await import("./moonlight-stay-Cy0eR6hp.js");return{MOONLIGHT_STAY_PAYLOAD:i}},[]).then(({MOONLIGHT_STAY_PAYLOAD:i})=>{Eh.createRoot(ep).render(n.jsx(Y.StrictMode,{children:n.jsx(Ph,{payload:i})}))});export{Th as F,$t as L,zs as P,Uy as S,Ry as a}; diff --git a/solution/site/scripts/mockup/vendor/index-k3f3eOzb.css b/solution/site/scripts/mockup/vendor/index-k3f3eOzb.css new file mode 100644 index 0000000..e1f4ed1 --- /dev/null +++ b/solution/site/scripts/mockup/vendor/index-k3f3eOzb.css @@ -0,0 +1 @@ +.w4-sky{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden}.w4-sky[data-mood=비]:before{content:"";position:absolute;top:-20%;right:-10%;bottom:-20%;left:-10%;background-image:repeating-linear-gradient(102deg,transparent 0 9px,currentcolor 9px 10px,transparent 10px 22px);opacity:.13;animation:w4-rain .9s linear infinite}@keyframes w4-rain{to{transform:translate3d(-22px,108px,0)}}.w4-sky[data-mood=맑음]:before{content:"";position:absolute;right:6%;top:-40%;width:26rem;aspect-ratio:1;background-image:conic-gradient(from 0deg,currentcolor 0 2deg,transparent 2deg 30deg);opacity:.07;animation:w4-spin 70s linear infinite}.w4-sky[data-mood=맑음]:after{content:"";position:absolute;right:10%;top:-14%;width:15rem;aspect-ratio:1;border-radius:50%;background-image:radial-gradient(circle,currentcolor 0%,transparent 62%);opacity:.11;animation:w4-breathe 9s ease-in-out infinite}@keyframes w4-spin{to{transform:rotate(360deg)}}@keyframes w4-breathe{50%{opacity:.2}}.w4-sky[data-mood=흐림]:before,.w4-sky[data-mood=흐림]:after{content:"";position:absolute;top:-30%;right:-60%;bottom:-30%;left:-60%;background-image:radial-gradient(ellipse 22% 46% at 18% 42%,currentcolor 0%,transparent 70%),radial-gradient(ellipse 30% 40% at 62% 30%,currentcolor 0%,transparent 72%);opacity:.08;animation:w4-drift 44s linear infinite}.w4-sky[data-mood=흐림]:after{opacity:.05;animation-duration:78s;animation-direction:reverse}@keyframes w4-drift{to{transform:translate3d(28%,0,0)}}.w4-sky[data-mood=눈]:before{content:"";position:absolute;top:-20%;right:0;bottom:-20%;left:0;background-image:radial-gradient(circle at 12% 10%,currentcolor 1.4px,transparent 1.8px),radial-gradient(circle at 47% 34%,currentcolor 1.1px,transparent 1.5px),radial-gradient(circle at 78% 18%,currentcolor 1.6px,transparent 2px);background-size:9rem 9rem;opacity:.22;animation:w4-snow 14s linear infinite}@keyframes w4-snow{to{transform:translate3d(-2rem,9rem,0)}}@media(prefers-reduced-motion:reduce){.w4-sky:before,.w4-sky:after{animation:none!important}}.w4-paper{background-image:repeating-linear-gradient(0deg,color-mix(in oklab,currentcolor 4%,transparent) 0 1px,transparent 1px 3px),repeating-linear-gradient(90deg,color-mix(in oklab,currentcolor 3%,transparent) 0 1px,transparent 1px 4px)}.w4-disc{background:radial-gradient(circle at 50% 50%,transparent 0 15.5%,var(--lbl) 15.5% 33%,transparent 33%),repeating-radial-gradient(circle at 50% 50%,color-mix(in oklab,var(--w4-vinyl) 88%,white) 0 1.4px,var(--w4-vinyl) 1.4px 3px),var(--w4-vinyl);box-shadow:inset 0 0 40px #0000008c}.w4-disc-sheen{background:conic-gradient(from 210deg,rgb(255 255 255 / 12%),transparent 22%,transparent 70%,rgb(255 255 255 / 7%))}.w4-spin{animation:w4-rev 2.2s linear infinite}@keyframes w4-rev{to{transform:rotate(360deg)}}.w4-disc-mini{background:radial-gradient(circle at 50% 50%,transparent 0 14%,var(--lbl) 14% 34%,transparent 34%),repeating-radial-gradient(circle at 50% 50%,color-mix(in oklab,var(--w4-vinyl) 88%,white) 0 1.2px,var(--w4-vinyl) 1.2px 2.6px),var(--w4-vinyl);box-shadow:0 3px 10px #00000059}.w4-perf{background:repeating-linear-gradient(90deg,transparent 0 8px,var(--tear) 8px 9px)}.w4-dash{border-top:1px dashed currentcolor}.w4-film-perf{background:repeating-linear-gradient(90deg,currentcolor 0 9px,transparent 9px 21px)}.w4-flip{perspective:900px}.w4-flip-inner{transform-style:preserve-3d;transition:transform .5s}.w4-flip-on .w4-flip-inner{transform:rotateY(180deg)}.w4-flip-face{backface-visibility:hidden}.w4-flip-back{transform:rotateY(180deg)}.w4-scroll{overflow-x:auto;scrollbar-width:none;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch}.w4-scroll::-webkit-scrollbar{display:none}.w4-scroll[data-slider=on]{overflow-x:hidden;scroll-snap-type:none}.w4-scroll[data-dragging=true]{cursor:grabbing;-webkit-user-select:none;user-select:none}@media(prefers-reduced-motion:reduce){.w4-spin{animation:none}.w4-flip-inner{transition:none}}@media print{.w4-flip,.w4-flip-inner{height:auto!important;transform:none!important}.w4-flip-face{position:static!important;backface-visibility:visible!important;transform:none!important}}/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-scroll-snap-strictness:proximity;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-divide-x-reverse:0}}}@layer theme{:root,:host{--font-sans:"Pretendard Variable", "Noto Sans KR", system-ui, sans-serif;--font-serif:"Noto Serif KR", "Batang", "Times New Roman", serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-zinc-950:oklch(14.1% .005 285.823);--color-stone-600:oklch(44.4% .011 73.639);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-2xl:42rem;--container-5xl:64rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--text-5xl:3rem;--text-5xl--line-height:1;--text-6xl:3.75rem;--text-6xl--line-height:1;--font-weight-light:300;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--font-weight-black:900;--leading-tight:1.25;--leading-snug:1.375;--leading-relaxed:1.625;--leading-loose:2;--ease-in-out:cubic-bezier(.4, 0, .2, 1);--blur-sm:8px;--blur-md:12px;--aspect-video:16 / 9;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:"Pretendard Variable", "Noto Sans KR", system-ui, sans-serif;--default-mono-font-family:var(--font-mono);--color-brand:var(--tpl-primary);--color-surface:var(--tpl-bg);--color-ink:var(--tpl-text);--color-accent:var(--tpl-accent);--color-line:currentColor}@supports (color:color-mix(in lab,red,red)){:root,:host{--color-line:color-mix(in oklab, currentColor 14%, transparent)}}:root,:host{--color-muted:currentColor}@supports (color:color-mix(in lab,red,red)){:root,:host{--color-muted:color-mix(in oklab, currentColor 62%, transparent)}}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components{.serif{font-family:var(--tpl-font-heading,var(--font-serif));letter-spacing:var(--tpl-heading-tracking,normal)}.serif,.h2,.h3{font-synthesis-weight:none}.tpl-border{border-width:var(--tpl-border-width,1px)}.tpl-shadow{box-shadow:var(--tpl-shadow,none)}.shell{width:100%;max-width:78rem;padding-inline:max(clamp(1rem,4vw,2.5rem),env(safe-area-inset-left),env(safe-area-inset-right));margin-inline:auto}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.measure{max-width:68ch}.paper{background-image:var(--tpl-texture,none)}.panel{background-color:currentColor}@supports (color:color-mix(in lab,red,red)){.panel{background-color:color-mix(in oklab,currentColor 5%,transparent)}}.panel{border:var(--tpl-border-width,1px) solid var(--color-line);border-radius:var(--tpl-radius,.75rem);box-shadow:var(--tpl-shadow,none)}.panel-sunken{background-color:currentColor}@supports (color:color-mix(in lab,red,red)){.panel-sunken{background-color:color-mix(in oklab,currentColor 6%,transparent)}}.h2{font-family:var(--tpl-font-heading,var(--font-serif));font-size:var(--fs-h2);font-weight:var(--tpl-heading-weight,700);letter-spacing:var(--tpl-heading-tracking,-.01em);line-height:1.2}.h3{font-family:var(--tpl-font-heading,var(--font-serif));font-size:var(--fs-h3);font-weight:var(--tpl-heading-weight,700);letter-spacing:var(--tpl-heading-tracking,-.005em);line-height:1.35}.label{font-size:var(--fs-xs);color:var(--color-muted);font-weight:600}.tap{min-width:2.75rem;min-height:2.75rem}.only-touch{display:none}@media(hover:none)and (pointer:coarse){.only-touch{display:flex}}.safe-t{padding-top:env(safe-area-inset-top);position:relative}.safe-t:before{content:"";height:env(safe-area-inset-top);background:var(--tpl-surface,#fff);pointer-events:none;position:absolute;inset:0 0 auto}.safe-b{padding-bottom:calc(.5rem + env(safe-area-inset-bottom))}}@layer utilities{.pointer-events-none{pointer-events:none}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.inset-2{inset:calc(var(--spacing) * 2)}.inset-x-0{inset-inline:0}.inset-y-\[3px\]{inset-block:3px}.-top-1{top:calc(var(--spacing) * -1)}.-top-2{top:calc(var(--spacing) * -2)}.top-0{top:0}.top-1\/2{top:50%}.top-3{top:calc(var(--spacing) * 3)}.top-14{top:calc(var(--spacing) * 14)}.top-\[calc\(100\%\+0\.5rem\)\]{top:calc(100% + .5rem)}.top-full{top:100%}.-right-1{right:calc(var(--spacing) * -1)}.right-0{right:0}.right-1{right:var(--spacing)}.right-2{right:calc(var(--spacing) * 2)}.right-2\.5{right:calc(var(--spacing) * 2.5)}.right-3{right:calc(var(--spacing) * 3)}.right-4{right:calc(var(--spacing) * 4)}.bottom-0{bottom:0}.bottom-0\.5{bottom:calc(var(--spacing) * .5)}.bottom-2{bottom:calc(var(--spacing) * 2)}.bottom-2\.5{bottom:calc(var(--spacing) * 2.5)}.bottom-3{bottom:calc(var(--spacing) * 3)}.bottom-5{bottom:calc(var(--spacing) * 5)}.left-0{left:0}.left-1{left:var(--spacing)}.left-1\/2{left:50%}.left-2{left:calc(var(--spacing) * 2)}.left-4{left:calc(var(--spacing) * 4)}.left-full{left:100%}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-40{z-index:40}.z-50{z-index:50}.order-1{order:1}.order-2{order:2}.col-span-12{grid-column:span 12/span 12}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.mx-auto{margin-inline:auto}.my-3{margin-block:calc(var(--spacing) * 3)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-3\.5{margin-top:calc(var(--spacing) * 3.5)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-7{margin-top:calc(var(--spacing) * 7)}.mt-8{margin-top:calc(var(--spacing) * 8)}.mt-10{margin-top:calc(var(--spacing) * 10)}.mt-12{margin-top:calc(var(--spacing) * 12)}.mt-14{margin-top:calc(var(--spacing) * 14)}.mt-16{margin-top:calc(var(--spacing) * 16)}.mt-auto{margin-top:auto}.mr-1\.5{margin-right:calc(var(--spacing) * 1.5)}.-mb-px{margin-bottom:-1px}.mb-1{margin-bottom:var(--spacing)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-3\.5{margin-bottom:calc(var(--spacing) * 3.5)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-5{margin-bottom:calc(var(--spacing) * 5)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-7{margin-bottom:calc(var(--spacing) * 7)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.mb-10{margin-bottom:calc(var(--spacing) * 10)}.-ml-10{margin-left:calc(var(--spacing) * -10)}.ml-1{margin-left:var(--spacing)}.ml-1\.5{margin-left:calc(var(--spacing) * 1.5)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-5{margin-left:calc(var(--spacing) * 5)}.ml-6{margin-left:calc(var(--spacing) * 6)}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-\[9\]{-webkit-line-clamp:9;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.inline-grid{display:inline-grid}.aspect-3\/2{aspect-ratio:3/2}.aspect-3\/4{aspect-ratio:3/4}.aspect-4\/3{aspect-ratio:4/3}.aspect-16\/10{aspect-ratio:16/10}.aspect-\[4\/3\]{aspect-ratio:4/3}.aspect-square{aspect-ratio:1}.size-2\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-12{width:calc(var(--spacing) * 12);height:calc(var(--spacing) * 12)}.size-14{width:calc(var(--spacing) * 14);height:calc(var(--spacing) * 14)}.size-\[17px\]{width:17px;height:17px}.size-\[54px\]{width:54px;height:54px}.size-\[76px\]{width:76px;height:76px}.size-\[220px\]{width:220px;height:220px}.size-full{width:100%;height:100%}.h-0\.5{height:calc(var(--spacing) * .5)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-14{height:calc(var(--spacing) * 14)}.h-16{height:calc(var(--spacing) * 16)}.h-20{height:calc(var(--spacing) * 20)}.h-48{height:calc(var(--spacing) * 48)}.h-\[1em\]{height:1em}.h-\[6px\]{height:6px}.h-\[22px\]{height:22px}.h-\[56px\]{height:56px}.h-\[260px\]{height:260px}.h-\[calc\(100vh-3\.5rem\)\]{height:calc(100vh - 3.5rem)}.h-\[clamp\(15rem\,24vw\,21rem\)\]{height:clamp(15rem,24vw,21rem)}.h-\[clamp\(17rem\,27vw\,24rem\)\]{height:clamp(17rem,27vw,24rem)}.h-auto{height:auto}.h-fit{height:fit-content}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-\[26rem\]{max-height:26rem}.max-h-\[46vh\]{max-height:46vh}.max-h-\[72vh\]{max-height:72vh}.max-h-\[85vh\]{max-height:85vh}.max-h-\[88vh\]{max-height:88vh}.max-h-full{max-height:100%}.min-h-\[2rem\]{min-height:2rem}.min-h-\[16rem\]{min-height:16rem}.min-h-screen{min-height:100vh}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-10{width:calc(var(--spacing) * 10)}.w-12{width:calc(var(--spacing) * 12)}.w-20{width:calc(var(--spacing) * 20)}.w-24{width:calc(var(--spacing) * 24)}.w-44{width:calc(var(--spacing) * 44)}.w-48{width:calc(var(--spacing) * 48)}.w-52{width:calc(var(--spacing) * 52)}.w-\[3px\]{width:3px}.w-\[44px\]{width:44px}.w-\[62px\]{width:62px}.w-\[110px\]{width:110px}.w-\[168px\]{width:168px}.w-\[210px\]{width:210px}.w-\[228px\]{width:228px}.w-\[254px\]{width:254px}.w-\[262px\]{width:262px}.w-\[304px\]{width:304px}.w-\[320px\]{width:320px}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-\[34rem\]{max-width:34rem}.max-w-\[72rem\]{max-width:72rem}.max-w-full{max-width:100%}.max-w-none{max-width:none}.min-w-0{min-width:0}.min-w-\[22px\]{min-width:22px}.min-w-\[30rem\]{min-width:30rem}.min-w-\[34rem\]{min-width:34rem}.flex-1{flex:1}.flex-\[1\.4\]{flex:1.4}.shrink-0{flex-shrink:0}.grow-0{flex-grow:0}.basis-40{flex-basis:calc(var(--spacing) * 40)}.basis-\[76\%\]{flex-basis:76%}.basis-\[86\%\]{flex-basis:86%}.border-collapse{border-collapse:collapse}.origin-right{transform-origin:100%}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-px{--tw-translate-y:1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.-rotate-6{rotate:-6deg}.rotate-6{rotate:6deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.cursor-pointer{cursor:pointer}.resize{resize:both}.snap-x{scroll-snap-type:x var(--tw-scroll-snap-strictness)}.snap-mandatory{--tw-scroll-snap-strictness:mandatory}.snap-center{scroll-snap-align:center}.snap-start{scroll-snap-align:start}.\[scrollbar-width\:none\]{scrollbar-width:none}.list-none{list-style-type:none}.columns-1{columns:1}.columns-2{columns:2}.break-inside-avoid{break-inside:avoid}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid-cols-\[1fr_auto\]{grid-template-columns:1fr auto}.grid-cols-\[46px_minmax\(0\,1fr\)\]{grid-template-columns:46px minmax(0,1fr)}.grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-7{gap:calc(var(--spacing) * 7)}.gap-8{gap:calc(var(--spacing) * 8)}.gap-10{gap:calc(var(--spacing) * 10)}.gap-14{gap:calc(var(--spacing) * 14)}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--spacing) * var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-10>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 10) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 10) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-16>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 16) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 16) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-20>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 20) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 20) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-2{column-gap:calc(var(--spacing) * 2)}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-x-6{column-gap:calc(var(--spacing) * 6)}.gap-x-8{column-gap:calc(var(--spacing) * 8)}.gap-x-10{column-gap:calc(var(--spacing) * 10)}.gap-x-12{column-gap:calc(var(--spacing) * 12)}.gap-y-0\.5{row-gap:calc(var(--spacing) * .5)}.gap-y-1{row-gap:var(--spacing)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.gap-y-4{row-gap:calc(var(--spacing) * 4)}.gap-y-5{row-gap:calc(var(--spacing) * 5)}.gap-y-6{row-gap:calc(var(--spacing) * 6)}.gap-y-14{row-gap:calc(var(--spacing) * 14)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-line>:not(:last-child)){border-color:currentColor}@supports (color:color-mix(in lab,red,red)){:where(.divide-line>:not(:last-child)){border-color:color-mix(in oklab,currentColor 14%,transparent)}}.self-start{align-self:flex-start}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded-2xl{border-radius:calc(var(--tpl-radius,.75rem) * 1.7)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--tpl-radius,.75rem)}.rounded-md{border-radius:calc(var(--tpl-radius,.75rem) * .7)}.rounded-sm{border-radius:calc(var(--tpl-radius,.75rem) * .4)}.rounded-xl{border-radius:calc(var(--tpl-radius,.75rem) * 1.35)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-black\/8{border-color:#00000014}@supports (color:color-mix(in lab,red,red)){.border-black\/8{border-color:color-mix(in oklab,var(--color-black) 8%,transparent)}}.border-current\/15{border-color:currentColor}@supports (color:color-mix(in lab,red,red)){.border-current\/15{border-color:color-mix(in oklab,currentcolor 15%,transparent)}}.border-current\/20{border-color:currentColor}@supports (color:color-mix(in lab,red,red)){.border-current\/20{border-color:color-mix(in oklab,currentcolor 20%,transparent)}}.border-current\/25{border-color:currentColor}@supports (color:color-mix(in lab,red,red)){.border-current\/25{border-color:color-mix(in oklab,currentcolor 25%,transparent)}}.border-current\/60{border-color:currentColor}@supports (color:color-mix(in lab,red,red)){.border-current\/60{border-color:color-mix(in oklab,currentcolor 60%,transparent)}}.border-current\/70{border-color:currentColor}@supports (color:color-mix(in lab,red,red)){.border-current\/70{border-color:color-mix(in oklab,currentcolor 70%,transparent)}}.border-line{border-color:currentColor}@supports (color:color-mix(in lab,red,red)){.border-line{border-color:color-mix(in oklab,currentColor 14%,transparent)}}.border-transparent{border-color:#0000}.bg-\[\#03C75A\]{background-color:#03c75a}.bg-\[\#0064FF\]{background-color:#0064ff}.bg-\[\#FEE500\]{background-color:#fee500}.bg-black\/45{background-color:#00000073}@supports (color:color-mix(in lab,red,red)){.bg-black\/45{background-color:color-mix(in oklab,var(--color-black) 45%,transparent)}}.bg-black\/55{background-color:#0000008c}@supports (color:color-mix(in lab,red,red)){.bg-black\/55{background-color:color-mix(in oklab,var(--color-black) 55%,transparent)}}.bg-black\/70{background-color:#000000b3}@supports (color:color-mix(in lab,red,red)){.bg-black\/70{background-color:color-mix(in oklab,var(--color-black) 70%,transparent)}}.bg-black\/92{background-color:#000000eb}@supports (color:color-mix(in lab,red,red)){.bg-black\/92{background-color:color-mix(in oklab,var(--color-black) 92%,transparent)}}.bg-current,.bg-current\/5{background-color:currentColor}@supports (color:color-mix(in lab,red,red)){.bg-current\/5{background-color:color-mix(in oklab,currentcolor 5%,transparent)}}.bg-current\/8{background-color:currentColor}@supports (color:color-mix(in lab,red,red)){.bg-current\/8{background-color:color-mix(in oklab,currentcolor 8%,transparent)}}.bg-current\/15{background-color:currentColor}@supports (color:color-mix(in lab,red,red)){.bg-current\/15{background-color:color-mix(in oklab,currentcolor 15%,transparent)}}.bg-white\/10{background-color:#ffffff1a}@supports (color:color-mix(in lab,red,red)){.bg-white\/10{background-color:color-mix(in oklab,var(--color-white) 10%,transparent)}}.bg-white\/70{background-color:#ffffffb3}@supports (color:color-mix(in lab,red,red)){.bg-white\/70{background-color:color-mix(in oklab,var(--color-white) 70%,transparent)}}.bg-zinc-950{background-color:var(--color-zinc-950)}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.object-center{object-position:center}.p-0{padding:0}.p-3\.5{padding:calc(var(--spacing) * 3.5)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.px-1{padding-inline:var(--spacing)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-8{padding-inline:calc(var(--spacing) * 8)}.px-9{padding-inline:calc(var(--spacing) * 9)}.px-\[7\%\]{padding-inline:7%}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-3\.5{padding-block:calc(var(--spacing) * 3.5)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-10{padding-block:calc(var(--spacing) * 10)}.py-16{padding-block:calc(var(--spacing) * 16)}.pt-0\.5{padding-top:calc(var(--spacing) * .5)}.pt-1{padding-top:var(--spacing)}.pt-1\.5{padding-top:calc(var(--spacing) * 1.5)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-2\.5{padding-top:calc(var(--spacing) * 2.5)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-3\.5{padding-top:calc(var(--spacing) * 3.5)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-5{padding-top:calc(var(--spacing) * 5)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pt-7{padding-top:calc(var(--spacing) * 7)}.pt-8{padding-top:calc(var(--spacing) * 8)}.pt-10{padding-top:calc(var(--spacing) * 10)}.pt-12{padding-top:calc(var(--spacing) * 12)}.pt-14{padding-top:calc(var(--spacing) * 14)}.pt-20{padding-top:calc(var(--spacing) * 20)}.pt-24{padding-top:calc(var(--spacing) * 24)}.pt-\[var\(--oasi-gap\)\]{padding-top:var(--oasi-gap)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-5{padding-right:calc(var(--spacing) * 5)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pb-1{padding-bottom:var(--spacing)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-5{padding-bottom:calc(var(--spacing) * 5)}.pb-8{padding-bottom:calc(var(--spacing) * 8)}.pb-10{padding-bottom:calc(var(--spacing) * 10)}.pb-16{padding-bottom:calc(var(--spacing) * 16)}.pb-24{padding-bottom:calc(var(--spacing) * 24)}.pb-28{padding-bottom:calc(var(--spacing) * 28)}.pb-56{padding-bottom:calc(var(--spacing) * 56)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-6{padding-left:calc(var(--spacing) * 6)}.pl-9{padding-left:calc(var(--spacing) * 9)}.pl-\[calc\(3px\+0\.625rem\)\]{padding-left:calc(3px + .625rem)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.font-serif{font-family:Noto Serif KR,Batang,Times New Roman,serif}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.text-6xl{font-size:var(--text-6xl);line-height:var(--tw-leading,var(--text-6xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[17px\]{font-size:17px}.text-\[length\:var\(--fs-body\)\]{font-size:var(--fs-body)}.text-\[length\:var\(--fs-h2\)\]{font-size:var(--fs-h2)}.text-\[length\:var\(--fs-h3\)\]{font-size:var(--fs-h3)}.text-\[length\:var\(--fs-lead\)\]{font-size:var(--fs-lead)}.text-\[length\:var\(--fs-sm\)\]{font-size:var(--fs-sm)}.text-\[length\:var\(--fs-xs\)\]{font-size:var(--fs-xs)}.leading-\[1\.8\]{--tw-leading:1.8;line-height:1.8}.leading-\[1\.9\]{--tw-leading:1.9;line-height:1.9}.leading-loose{--tw-leading:var(--leading-loose);line-height:var(--leading-loose)}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-black{--tw-font-weight:var(--font-weight-black);font-weight:var(--font-weight-black)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-extrabold{--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.font-light{--tw-font-weight:var(--font-weight-light);font-weight:var(--font-weight-light)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[0\.1em\]{--tw-tracking:.1em;letter-spacing:.1em}.tracking-\[0\.2em\]{--tw-tracking:.2em;letter-spacing:.2em}.tracking-\[0\.3em\]{--tw-tracking:.3em;letter-spacing:.3em}.tracking-\[0\.08em\]{--tw-tracking:.08em;letter-spacing:.08em}.tracking-\[0\.14em\]{--tw-tracking:.14em;letter-spacing:.14em}.tracking-\[0\.16em\]{--tw-tracking:.16em;letter-spacing:.16em}.tracking-\[0\.18em\]{--tw-tracking:.18em;letter-spacing:.18em}.tracking-\[0\.24em\]{--tw-tracking:.24em;letter-spacing:.24em}.break-all{word-break:break-all}.break-keep{word-break:keep-all}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.\!text-current{color:currentColor!important}.text-\[\#191600\]{color:#191600}.text-current\/55{color:currentColor}@supports (color:color-mix(in lab,red,red)){.text-current\/55{color:color-mix(in oklab,currentcolor 55%,transparent)}}.text-muted{color:currentColor}@supports (color:color-mix(in lab,red,red)){.text-muted{color:color-mix(in oklab,currentColor 62%,transparent)}}.text-stone-600{color:var(--color-stone-600)}.text-white{color:var(--color-white)}.text-white\/70{color:#ffffffb3}@supports (color:color-mix(in lab,red,red)){.text-white\/70{color:color-mix(in oklab,var(--color-white) 70%,transparent)}}.uppercase{text-transform:uppercase}.italic{font-style:italic}.not-italic{font-style:normal}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.underline{text-decoration-line:underline}.underline-offset-2{text-underline-offset:2px}.underline-offset-4{text-underline-offset:4px}.underline-offset-\[5px\]{text-underline-offset:5px}.underline-offset-\[6px\]{text-underline-offset:6px}.opacity-0{opacity:0}.opacity-20{opacity:.2}.opacity-25{opacity:.25}.opacity-40{opacity:.4}.opacity-45{opacity:.45}.opacity-50{opacity:.5}.opacity-55{opacity:.55}.opacity-60{opacity:.6}.opacity-65{opacity:.65}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.opacity-85{opacity:.85}.opacity-90{opacity:.9}.opacity-95{opacity:.95}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-md{--tw-backdrop-blur:blur(var(--blur-md));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.duration-700{--tw-duration:.7s;transition-duration:.7s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.select-none{-webkit-user-select:none;user-select:none}.group-open\:rotate-45:is(:where(.group):is([open],:popover-open,:open) *){rotate:45deg}.group-open\:rotate-180:is(:where(.group):is([open],:popover-open,:open) *){rotate:180deg}@media(hover:hover){.group-hover\:scale-105:is(:where(.group):hover *){--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}.group-hover\:scale-110:is(:where(.group):hover *){--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.marker\:content-none ::marker{--tw-content:none;content:none}.marker\:content-none::marker{--tw-content:none;content:none}.marker\:content-none ::-webkit-details-marker{--tw-content:none;content:none}.marker\:content-none::-webkit-details-marker{--tw-content:none;content:none}@media(hover:hover){.hover\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\:scale-110:hover{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\:border-current:hover{border-color:currentColor}.hover\:bg-black\/65:hover{background-color:#000000a6}@supports (color:color-mix(in lab,red,red)){.hover\:bg-black\/65:hover{background-color:color-mix(in oklab,var(--color-black) 65%,transparent)}}.hover\:bg-black\/75:hover{background-color:#000000bf}@supports (color:color-mix(in lab,red,red)){.hover\:bg-black\/75:hover{background-color:color-mix(in oklab,var(--color-black) 75%,transparent)}}.hover\:bg-current\/10:hover{background-color:currentColor}@supports (color:color-mix(in lab,red,red)){.hover\:bg-current\/10:hover{background-color:color-mix(in oklab,currentcolor 10%,transparent)}}.hover\:bg-current\/25:hover{background-color:currentColor}@supports (color:color-mix(in lab,red,red)){.hover\:bg-current\/25:hover{background-color:color-mix(in oklab,currentcolor 25%,transparent)}}.hover\:bg-white\/25:hover{background-color:#ffffff40}@supports (color:color-mix(in lab,red,red)){.hover\:bg-white\/25:hover{background-color:color-mix(in oklab,var(--color-white) 25%,transparent)}}.hover\:text-current:hover{color:currentColor}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-45:hover{opacity:.45}.hover\:opacity-70:hover{opacity:.7}.hover\:opacity-80:hover{opacity:.8}.hover\:opacity-85:hover{opacity:.85}.hover\:opacity-90:hover{opacity:.9}.hover\:opacity-100:hover{opacity:1}}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:opacity-0:disabled{opacity:0}.disabled\:opacity-25:disabled{opacity:.25}@media(prefers-reduced-motion:no-preference){.motion-safe\:transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}}@media(min-width:40rem){.sm\:top-5{top:calc(var(--spacing) * 5)}.sm\:right-5{right:calc(var(--spacing) * 5)}.sm\:right-6{right:calc(var(--spacing) * 6)}.sm\:left-6{left:calc(var(--spacing) * 6)}.sm\:mb-8{margin-bottom:calc(var(--spacing) * 8)}.sm\:mb-10{margin-bottom:calc(var(--spacing) * 10)}.sm\:mb-14{margin-bottom:calc(var(--spacing) * 14)}.sm\:block{display:block}.sm\:flex{display:flex}.sm\:hidden{display:none}.sm\:inline{display:inline}.sm\:inline-flex{display:inline-flex}.sm\:aspect-video{aspect-ratio:var(--aspect-video)}.sm\:w-28{width:calc(var(--spacing) * 28)}.sm\:w-40{width:calc(var(--spacing) * 40)}.sm\:max-w-\[18rem\]{max-width:18rem}.sm\:shrink-0{flex-shrink:0}.sm\:basis-1\/3{flex-basis:33.3333%}.sm\:basis-\[56\%\]{flex-basis:56%}.sm\:columns-2{columns:2}.sm\:columns-3{columns:3}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:flex-wrap{flex-wrap:wrap}.sm\:items-baseline{align-items:baseline}.sm\:items-center{align-items:center}.sm\:items-end{align-items:flex-end}.sm\:justify-between{justify-content:space-between}.sm\:gap-4{gap:calc(var(--spacing) * 4)}.sm\:gap-6{gap:calc(var(--spacing) * 6)}.sm\:gap-8{gap:calc(var(--spacing) * 8)}.sm\:gap-10{gap:calc(var(--spacing) * 10)}:where(.sm\:space-y-24>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 24) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 24) * calc(1 - var(--tw-space-y-reverse)))}:where(.sm\:divide-x>:not(:last-child)){--tw-divide-x-reverse:0;border-inline-style:var(--tw-border-style);border-inline-start-width:calc(1px * var(--tw-divide-x-reverse));border-inline-end-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}.sm\:border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.sm\:p-5{padding:calc(var(--spacing) * 5)}.sm\:p-6{padding:calc(var(--spacing) * 6)}.sm\:p-8{padding:calc(var(--spacing) * 8)}.sm\:px-5{padding-inline:calc(var(--spacing) * 5)}.sm\:px-6{padding-inline:calc(var(--spacing) * 6)}.sm\:px-10{padding-inline:calc(var(--spacing) * 10)}.sm\:py-14{padding-block:calc(var(--spacing) * 14)}.sm\:py-24{padding-block:calc(var(--spacing) * 24)}.sm\:pb-12{padding-bottom:calc(var(--spacing) * 12)}.sm\:pl-14{padding-left:calc(var(--spacing) * 14)}.sm\:text-right{text-align:right}.sm\:first\:pl-0:first-child{padding-left:0}}@media(min-width:48rem){.md\:col-span-3{grid-column:span 3/span 3}.md\:col-span-4{grid-column:span 4/span 4}.md\:col-span-5{grid-column:span 5/span 5}.md\:col-span-7{grid-column:span 7/span 7}.md\:table-cell{display:table-cell}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.md\:grid-cols-\[240px_minmax\(0\,1fr\)\]{grid-template-columns:240px minmax(0,1fr)}.md\:gap-12{gap:calc(var(--spacing) * 12)}.md\:pb-14{padding-bottom:calc(var(--spacing) * 14)}.md\:pb-16{padding-bottom:calc(var(--spacing) * 16)}}@media(min-width:64rem){.lg\:sticky{position:sticky}.lg\:top-0{top:0}.lg\:top-12{top:calc(var(--spacing) * 12)}.lg\:order-1{order:1}.lg\:order-2{order:2}.lg\:order-none{order:0}.lg\:col-span-5{grid-column:span 5/span 5}.lg\:col-span-6{grid-column:span 6/span 6}.lg\:col-span-7{grid-column:span 7/span 7}.lg\:col-span-12{grid-column:span 12/span 12}.lg\:mt-24{margin-top:calc(var(--spacing) * 24)}.lg\:mt-auto{margin-top:auto}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:grid{display:grid}.lg\:hidden{display:none}.lg\:aspect-3\/2{aspect-ratio:3/2}.lg\:aspect-auto{aspect-ratio:auto}.lg\:h-fit{height:fit-content}.lg\:h-full{height:100%}.lg\:h-screen{height:100vh}.lg\:min-h-\[24rem\]{min-height:24rem}.lg\:min-h-\[34rem\]{min-height:34rem}.lg\:w-\[18\.75rem\]{width:18.75rem}.lg\:w-\[260px\]{width:260px}.lg\:w-auto{width:auto}.lg\:shrink-0{flex-shrink:0}.lg\:basis-1\/4{flex-basis:25%}.lg\:basis-auto{flex-basis:auto}.lg\:snap-none{scroll-snap-type:none}.lg\:columns-4{columns:4}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lg\:grid-cols-\[1fr_auto_1fr\]{grid-template-columns:1fr auto 1fr}.lg\:flex-col{flex-direction:column}.lg\:flex-row{flex-direction:row}.lg\:items-end{align-items:flex-end}.lg\:justify-between{justify-content:space-between}.lg\:gap-0{gap:0}.lg\:gap-3{gap:calc(var(--spacing) * 3)}.lg\:gap-4{gap:calc(var(--spacing) * 4)}.lg\:gap-7{gap:calc(var(--spacing) * 7)}.lg\:gap-8{gap:calc(var(--spacing) * 8)}.lg\:gap-10{gap:calc(var(--spacing) * 10)}.lg\:gap-12{gap:calc(var(--spacing) * 12)}.lg\:gap-14{gap:calc(var(--spacing) * 14)}.lg\:gap-20{gap:calc(var(--spacing) * 20)}:where(.lg\:space-y-28>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 28) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 28) * calc(1 - var(--tw-space-y-reverse)))}.lg\:gap-x-12{column-gap:calc(var(--spacing) * 12)}.lg\:overflow-visible{overflow:visible}.lg\:overflow-y-auto{overflow-y:auto}.lg\:px-7{padding-inline:calc(var(--spacing) * 7)}.lg\:px-10{padding-inline:calc(var(--spacing) * 10)}.lg\:px-14{padding-inline:calc(var(--spacing) * 14)}.lg\:py-10{padding-block:calc(var(--spacing) * 10)}.lg\:py-16{padding-block:calc(var(--spacing) * 16)}.lg\:pt-14{padding-top:calc(var(--spacing) * 14)}.lg\:pt-16{padding-top:calc(var(--spacing) * 16)}.lg\:pb-0{padding-bottom:0}.lg\:pb-14{padding-bottom:calc(var(--spacing) * 14)}.lg\:pb-24{padding-bottom:calc(var(--spacing) * 24)}}@media(min-width:80rem){.xl\:col-span-4{grid-column:span 4/span 4}.xl\:col-span-5{grid-column:span 5/span 5}.xl\:col-span-7{grid-column:span 7/span 7}.xl\:col-span-8{grid-column:span 8/span 8}.xl\:col-start-1{grid-column-start:1}.xl\:col-start-5{grid-column-start:5}.xl\:row-start-1{grid-row-start:1}.xl\:-mt-24{margin-top:calc(var(--spacing) * -24)}.xl\:mr-16{margin-right:calc(var(--spacing) * 16)}.xl\:mb-12{margin-bottom:calc(var(--spacing) * 12)}.xl\:-ml-10{margin-left:calc(var(--spacing) * -10)}.xl\:ml-auto{margin-left:auto}.xl\:block{display:block}.xl\:w-\[50\%\]{width:50%}.xl\:w-\[64\%\]{width:64%}.xl\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xl\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.xl\:gap-x-10{column-gap:calc(var(--spacing) * 10)}.xl\:self-end{align-self:flex-end}.xl\:px-8{padding-inline:calc(var(--spacing) * 8)}.xl\:py-8{padding-block:calc(var(--spacing) * 8)}.xl\:py-12{padding-block:calc(var(--spacing) * 12)}.xl\:py-16{padding-block:calc(var(--spacing) * 16)}.xl\:pt-12{padding-top:calc(var(--spacing) * 12)}.xl\:pr-8{padding-right:calc(var(--spacing) * 8)}.xl\:pr-16{padding-right:calc(var(--spacing) * 16)}.xl\:pb-56{padding-bottom:calc(var(--spacing) * 56)}.xl\:pl-10{padding-left:calc(var(--spacing) * 10)}.xl\:pl-20{padding-left:calc(var(--spacing) * 20)}}.\[\&\:\:-webkit-details-marker\]\:hidden::-webkit-details-marker{display:none}.\[\&\:\:-webkit-scrollbar\]\:hidden::-webkit-scrollbar{display:none}.\[\&\>li\]\:mb-3>li{margin-bottom:calc(var(--spacing) * 3)}}@font-face{font-family:Pretendard Variable;font-weight:45 920;font-style:normal;font-display:swap;src:url(/fonts/PretendardVariable.woff2)format("woff2")}html{-webkit-text-size-adjust:100%}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;word-break:keep-all;overflow-wrap:break-word;margin:0;padding:0}.no-scrollbar::-webkit-scrollbar{display:none}.no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}html{scrollbar-width:thin}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media(prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}:root{--tpl-primary:#18181b;--tpl-secondary:#52525b;--tpl-bg:#fff;--tpl-card:#fafafa;--tpl-text:#09090b;--tpl-accent:#2563eb;--tpl-surface:#fff;--tpl-surface-alt:#f5f5f4;--tpl-inverse:#1c1917;--tpl-border:#e7e5e4;--tpl-font-heading:"Pretendard Variable", "Noto Sans KR", system-ui, sans-serif;--tpl-font-body:"Pretendard Variable", "Noto Sans KR", system-ui, sans-serif;--tpl-radius:.75rem;--tpl-border-width:1px;--tpl-shadow:0 1px 2px #0000000f;--tpl-heading-tracking:-.02em;--tpl-heading-weight:700;--tpl-section-space:4rem;--fs-display:clamp(1.75rem, 1.25rem + 2.2vw, 3rem);--fs-h2:clamp(1.3125rem, 1.15rem + .7vw, 1.75rem);--fs-h3:clamp(1.0625rem, 1rem + .3vw, 1.25rem);--fs-lead:clamp(.9375rem, .9rem + .22vw, 1.0625rem);--fs-body:clamp(.9375rem, .91rem + .15vw, 1rem);--fs-sm:clamp(.8125rem, .8rem + .1vw, .875rem);--fs-xs:clamp(.75rem, .74rem + .06vw, .78125rem);--section-space:clamp(2.25rem, 5vw, var(--tpl-section-space,3.5rem))}html{scroll-behavior:smooth;scroll-padding-top:5.5rem}body{background-color:var(--color-surface);background-image:var(--tpl-texture,none);color:var(--color-ink);font-family:var(--tpl-font-body,var(--font-sans));font-size:var(--fs-body);font-feature-settings:"tnum" 1;padding-bottom:env(safe-area-inset-bottom);line-height:1.7}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.slider-viewport{scrollbar-width:none;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;overflow-x:auto}.slider-viewport::-webkit-scrollbar{display:none}.slider-viewport[data-slider=on]{scroll-snap-type:none;overflow-x:hidden}.slider-track{display:flex}.slider-track>*{scroll-snap-align:start}.slider-viewport[data-dragging=true]{cursor:grabbing;-webkit-user-select:none;user-select:none}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-scroll-snap-strictness{syntax:"*";inherits:false;initial-value:proximity}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-divide-x-reverse{syntax:"*";inherits:false;initial-value:0}