제목

내용이 여기에 표시됩니다.
/* ===== 레이아웃 및 카드 기본 (박스 배경 완전 제거) ===== */ .icon-group-enhanced { display: flex; justify-content: space-between; align-items: stretch; gap: 20px; flex-wrap: nowrap; margin: 20px auto 14px auto; width: 100%; max-width: 100%; box-sizing: border-box; padding: 0; } .icon-card { display: flex; flex-direction: column; text-decoration: none; flex: 1 1 0; width: 100%; max-width: none; outline: none; cursor: pointer; -webkit-tap-highlight-color: transparent; } .icon-card-inner { position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 8px 4px; background: transparent !important; border: none !important; box-shadow: none !important; width: 100%; height: 100%; box-sizing: border-box; } /* ===== 아이콘 이미지 래퍼 & 3D Drop-Shadow 애니메이션 ===== */ .icon-img-wrap { position: relative; display: inline-flex; align-items: center; justify-content: center; margin-bottom: 8px; transition: transform 0.28s cubic-bezier(0.34, 1.56, 0.64, 1); } .icon-img-wrap img { width: 54px; height: 54px; max-width: 54px; max-height: 54px; object-fit: contain; display: block; filter: drop-shadow(0 8px 12px rgba(15, 23, 42, 0.12)); transition: filter 0.28s ease, transform 0.28s ease; } /* 데스크탑 호버 (아이콘 단독 텐션 점프) */ .icon-card:hover .icon-img-wrap { transform: translateY(-7px) scale(1.08); } .icon-card:hover .icon-img-wrap img { filter: drop-shadow(0 14px 20px rgba(15, 23, 42, 0.18)); } /* 모바일/PC 클릭 터치 피드백 (압축 햅틱 반응) */ .icon-card:active .icon-img-wrap { transform: scale(0.92); transition: transform 0.1s ease; } .icon-card:active .icon-img-wrap img { filter: drop-shadow(0 3px 6px rgba(15, 23, 42, 0.1)); } /* 카톡 상담 아이콘 그림자 톤 보정 */ .icon-card.highlight .icon-img-wrap img { filter: drop-shadow(0 8px 14px rgba(245, 158, 11, 0.25)); } .icon-card.highlight:hover .icon-img-wrap img { filter: drop-shadow(0 14px 22px rgba(245, 158, 11, 0.4)); } /* ===== 텍스트 스타일 ===== */ .icon-card span { font-size: 14.5px; font-weight: 700; color: #1e293b; text-align: center; line-height: 1.3; display: block; letter-spacing: -0.3px; transition: color 0.2s ease; word-break: keep-all; } .icon-card:hover span { color: #0284c7; } /* ===== 카톡 1:1 뱃지 (아이콘 어깨 부착 & 펄스 애니메이션) ===== */ .badge-hot { position: absolute; top: -4px; right: -8px; font-size: 9px; font-weight: 900; background: linear-gradient(135deg, #ef4444 0%, #dc2626 100%); color: #ffffff !important; padding: 2px 6px; border-radius: 20px; line-height: 1.1; box-shadow: 0 2px 8px rgba(239, 68, 68, 0.45); animation: pkPulseBadge 2s infinite ease-in-out; pointer-events: none; z-index: 2; } @keyframes pkPulseBadge { 0%, 100% { transform: scale(1); box-shadow: 0 2px 8px rgba(239, 68, 68, 0.45); } 50% { transform: scale(1.15); box-shadow: 0 4px 14px rgba(239, 68, 68, 0.75); } } /* ===== 모달 스타일 ===== */ #icon-modal-overlay { position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; background: rgba(15, 23, 42, 0.7); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); z-index: 999999; display: none; justify-content: center; align-items: center; padding: 20px; box-sizing: border-box; animation: pkFadeIn 0.25s ease forwards; } #icon-modal-overlay.show { display: flex !important; } .icon-modal-container { background: #ffffff; max-width: 480px; width: 100%; border-radius: 24px; padding: 32px 28px; box-shadow: 0 25px 60px rgba(0, 0, 0, 0.3); animation: pkSlideUp 0.3s cubic-bezier(0.16, 1, 0.3, 1) forwards; box-sizing: border-box; } .icon-modal-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 16px; } .icon-modal-header h3 { font-size: 22px; font-weight: 900; color: #0f172a; margin: 0; letter-spacing: -0.4px; } .icon-modal-close { background: none; border: none; font-size: 26px; line-height: 1; color: #94a3b8; cursor: pointer; padding: 4px; transition: color 0.15s ease, transform 0.15s ease; } .icon-modal-close:hover { color: #ef4444; transform: rotate(90deg); } .icon-modal-body { font-size: 15px; line-height: 1.7; color: #475569; margin-bottom: 20px; min-height: 40px; word-break: keep-all; } .icon-modal-footer { border-top: 1px solid #f1f5f9; padding-top: 16px; text-align: right; } .icon-modal-btn { background: #2563eb; color: #ffffff; padding: 12px 24px; border-radius: 12px; text-decoration: none; font-weight: 800; font-size: 14.5px; display: inline-block; transition: all 0.2s ease; } .icon-modal-btn:hover { background: #1d4ed8; transform: translateY(-2px); box-shadow: 0 6px 16px rgba(37, 99, 235, 0.3); } @keyframes pkFadeIn { from { opacity: 0; } to { opacity: 1; } } @keyframes pkSlideUp { from { opacity: 0; transform: translateY(24px) scale(0.96); } to { opacity: 1; transform: translateY(0) scale(1); } } /* ===== 📱 모바일: 4열 네이티브 앱 아이콘 바 ===== */ @media (max-width: 768px) { .icon-group-enhanced { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; max-width: 100%; margin: 12px 0 16px 0; padding: 0 2px; } .icon-card { flex: none; width: 100%; max-width: 100%; } .icon-card-inner { padding: 4px 1px; } .icon-img-wrap { margin-bottom: 5px; } .icon-img-wrap img { width: 44px; height: 44px; max-width: 44px; max-height: 44px; filter: drop-shadow(0 6px 10px rgba(15, 23, 42, 0.12)); } .icon-card:hover .icon-img-wrap { transform: none; /* 모바일 호버 잔류 제거 */ } .icon-card:active .icon-img-wrap { transform: scale(0.91); } .icon-card span { font-size: 11.5px; letter-spacing: -0.5px; font-weight: 700; } .badge-hot { top: -3px; right: -6px; font-size: 7.5px; padding: 1.5px 5px; } .icon-modal-container { padding: 24px 18px; border-radius: 20px; } .icon-modal-header h3 { font-size: 19px; } } document.addEventListener('DOMContentLoaded', function() { const modalData = { 'airport-pickup': { title: '✈️ 공항 픽업 서비스', content: '태국 공항에 도착하는 순간부터 편안하게!

수완나품·돈무앙 공항에서 호텔과 숙소까지 프라이빗 전용 차량으로 안전하고 쾌적하게 이동하세요.

유류비·통행료 포함, 항공편 지연 시 무료 대기로 도착부터 숙소까지 여유로운 여행을 시작하세요.', link: '/pickup-service/#airport', linkText: '픽업서비스 요금 확인하기' }, 'car-rental': { title: '🛺 프라이빗 차량 대절', content: '정해진 노선에 맞추지 말고, 내 여행 일정에 맞춰 자유롭게!

전담 기사와 함께 방콕·파타야는 물론 원하는 목적지까지 편안하게 이동 하세요.

관광 명소부터 맛집, 쇼핑, 다양한 여행 코스까지 우리 일행만의 일정으로 더욱 여유로운 여행을 즐겨보세요.', link: '/pickup-service/#charter', linkText: '차량 대절 요금 확인하기' }, 'travel-guide': { title: '🌏 파타야 여행친구', content: '처음이라 막막한 파타야 여행, 혼자서 고민하지 마세요.

여행 일정부터 숙소, 맛집, 밤문화, 차량 이동까지.

여행 목적과 취향에 맞춰 함께 고민하고 안내해 드립니다.

낯선 파타야가 조금 더 친숙하고 편안한 여행지가 될 수 있도록, 여행 준비부터 현지에서 필요한 정보까지 든든한 여행친구가 되어드립니다.', link: '/pickup-service/#guide', linkText: '🙋1:1 여행케어 문의하기' }, 'kakao-channel': { title: '💬 카카오톡 1:1 실시간 상담', content: '여행 준비 중 궁금한 점부터 예약 확인, 픽업 안내, 일정 변경까지!

필요한 순간 카카오톡으로 편하게 문의하세요.

낯선 태국 여행이 막막하지 않도록 궁금한 점을 확인하고 여행에 필요한 정보를 친절하게 안내해 드립니다.', link: 'http://pf.kakao.com/_UxiFcj', linkText: '💬 카톡으로 문의하기' } }; const overlay = document.getElementById('icon-modal-overlay'); const titleEl = document.getElementById('icon-modal-title'); const contentEl = document.getElementById('icon-modal-content'); const footerEl = document.getElementById('icon-modal-footer'); const btnEl = document.querySelector('.icon-modal-btn'); function openModal(key) { const data = modalData[key]; if (!data) return; titleEl.textContent = data.title; contentEl.innerHTML = data.content; if (data.link && data.linkText) { btnEl.href = data.link; btnEl.textContent = data.linkText; footerEl.style.display = 'block'; } else { footerEl.style.display = 'none'; } overlay.classList.add('show'); document.body.style.overflow = 'hidden'; } function closeModal() { overlay.classList.remove('show'); document.body.style.overflow = ''; } document.querySelectorAll('.icon-card').forEach(function(card) { card.addEventListener('click', function(e) { e.preventDefault(); const key = this.getAttribute('data-modal'); if (key) openModal(key); }); }); const closeTag = document.querySelector('.icon-modal-close'); if (closeTag) closeTag.addEventListener('click', closeModal); overlay.addEventListener('click', function(e) { if (e.target === this) closeModal(); }); document.addEventListener('keydown', function(e) { if (e.key === 'Escape') closeModal(); }); });
/* ---------------------------------------------------- */ /* 🚀 공통 스타일: 세 위젯 박스 크기 통일 및 디자인 최적화 */ /* ---------------------------------------------------- */ /* 모든 위젯에 공통으로 적용될 최상위 컨테이너 */ .unified-widget-container { background-color: #ffffff; border: 1px solid #e0e0e0; border-radius: 12px; padding: 15px; box-shadow: 0 6px 12px rgba(0,0,0,0.08); font-family: 'Noto Sans KR', sans-serif; min-height: 220px; display: flex; flex-direction: column; align-items: stretch; } /* 위젯 제목 스타일 */ .unified-widget-title { font-size: 15px; font-weight: 700; color: #2c3e50; margin-bottom: 15px; padding-bottom: 8px; text-align: center; } /* 각 위젯별 제목 하단 강조선 색상 */ .currency-widget-container .unified-widget-title { border-bottom: 3px solid #FFD700; } /* 위젯 내용 영역 (ID) 스타일 */ #currency_widget, #weather_widget, #thai_phrase_widget { flex-grow: 1; display: flex; align-items: center; justify-content: center; text-align: center; padding: 5px 0; } /* ---------------------------------------------------- */ /* 환율 위젯 내부 스타일 */ /* ---------------------------------------------------- */ #currency_widget .rate-display { font-size: 32px; font-weight: 900; color: #DAA520; display: block; margin-bottom: 12px; } #currency_widget .thb-detail { font-size: 14px; font-weight: 600; color: #666; margin-bottom: 15px; display: block; } #currency_widget .update-info { font-size: 10px; color: #aaa; margin-top: 20px; padding-top: 10px; border-top: 1px solid #f5f5f5; display: block; line-height: 1.4; }
💰 실시간 환율 (THB)
환율 불러오는 중...
(function() { 'use strict'; const API_URL = 'https://api.exchangerate-api.com/v4/latest/THB'; const CACHE_DURATION = 60 * 60 * 1000; let lastCurrencyUpdate = null; let cachedCurrencyData = null; function loadCurrencyData() { const currencyWidget = document.getElementById('currency_widget'); if (!currencyWidget) return; if (cachedCurrencyData && lastCurrencyUpdate && (Date.now() - lastCurrencyUpdate < CACHE_DURATION)) { renderCurrencyData(cachedCurrencyData); return; } fetchCurrencyFromAPI(currencyWidget); } function fetchCurrencyFromAPI(currencyWidget) { currencyWidget.innerHTML = `
환율 불러오는 중...
`; fetch(API_URL) .then(response => { if (!response.ok) throw new Error('API 응답 오류'); return response.json(); }) .then(data => { const krwRate = data.rates.KRW; const updateTime = new Date().toLocaleString('ko-KR', { month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit' }); const currencyData = { rate: krwRate, time: updateTime, source: 'Exchange Rate API' }; cachedCurrencyData = currencyData; lastCurrencyUpdate = Date.now(); renderCurrencyData(currencyData); }) .catch(error => { console.error('환율 API 호출 실패:', error); showFallbackCurrencyData(); }); } function renderCurrencyData(data) { const currencyWidget = document.getElementById('currency_widget'); if (!currencyWidget) return; const currentRate = data.rate.toFixed(2); const html = `
${currentRate} KRW 1 THB = ${currentRate} KRW 업데이트: ${data.time}
`; currencyWidget.innerHTML = html; } function showFallbackCurrencyData() { const fallbackData = { rate: 36.45 + (Math.random() * 0.3 - 0.15), time: new Date().toLocaleString('ko-KR'), source: '기준 데이터' }; renderCurrencyData(fallbackData); } function initCurrencyWidget() { loadCurrencyData(); setInterval(loadCurrencyData, CACHE_DURATION); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initCurrencyWidget); } else { initCurrencyWidget(); } })();
/* ---------------------------------------------------- */ /* 🚀 공통 스타일: 위젯 기본 구조 */ /* ---------------------------------------------------- */ .unified-widget-container { background-color: #ffffff; border: 1px solid #e0e0e0; border-radius: 12px; padding: 15px; box-shadow: 0 6px 12px rgba(0,0,0,0.08); font-family: 'Noto Sans KR', sans-serif; min-height: 220px; display: flex; flex-direction: column; align-items: stretch; } /* 위젯 제목 스타일 */ .unified-widget-title { font-size: 15px; font-weight: 700; color: #2c3e50; margin-bottom: 15px; padding-bottom: 8px; text-align: center; } /* 각 위젯별 제목 하단 강조선 색상 */ .currency-widget-container .unified-widget-title { border-bottom: 3px solid #FFD700; } .weather-widget-container .unified-widget-title { border-bottom: 3px solid #5DADE2; } .thai-phrase-widget-container .unified-widget-title { border-bottom: 3px solid #28a745; } /* ---------------------------------------------------- */ /* 🚀 위젯 내용 영역 정렬 */ /* ---------------------------------------------------- */ /* 환율, 태국어 (가운데 정렬) */ #currency_widget, #thai_phrase_widget { flex-grow: 1; display: flex; align-items: center; justify-content: center; text-align: center; padding: 5px 0; } /* 날씨 위젯 내용 영역 - 왼쪽 정렬 */ #weather_widget { flex-grow: 1; display: flex; flex-direction: column; justify-content: center; align-items: flex-start; /* ❌ 패딩 제거: 위젯 경계에 최대한 붙여서 내부 공간 확보 */ padding: 0 5px; } /* ---------------------------------------------------- */ /* ☀️ 날씨 위젯 내부 스타일 (압축 레이아웃) */ /* ---------------------------------------------------- */ /* 날씨 위젯 내부 전체 컨테이너 */ #weather_widget .weather-content-wrapper { width: 100%; margin-top: -10px; } #weather_widget .temp-display { font-size: 40px; font-weight: 900; color: #5DADE2; display: block; margin-bottom: 5px; line-height: 1; } #weather_widget .humidity-tip { font-size: 11px; /* 글꼴 크기 축소 */ font-weight: 500; /* 폰트 무게 조정 */ color: #666; margin-top: 8px; line-height: 1.3; /* 줄 간격 축소 */ padding-top: 8px; border-top: 1px solid #e0e0e0; display: block; } /* 체감 온도 강조 */ #weather_widget .humidity-tip strong { font-weight: 700; color: #e74c3c; }
☀️ 파타야 날씨
날씨 불러오는 중...
(function() { 'use strict'; // ========================================================= // OpenWeatherMap API 설정 // ========================================================= const API_KEY = '3af76f7ebc32cb302653f41455fb29dc'; const LAT = '12.92'; const LON = '100.87'; const API_URL = `https://api.openweathermap.org/data/2.5/weather?lat=${LAT}&lon=${LON}&appid=${API_KEY}&units=metric&lang=kr`; // ========================================================= // 날씨 위젯 로직 // ========================================================= async function loadWeatherData() { const weatherWidget = document.getElementById('weather_widget'); if (!weatherWidget) return; try { const response = await fetch(API_URL); const data = await response.json(); if (data.cod !== 200) { throw new Error(`API 응답 오류: ${data.message || '데이터를 가져올 수 없습니다.'}`); } // 데이터 추출 const temp = Math.round(data.main.temp); const feelsLike = Math.round(data.main.feels_like); const humidity = data.main.humidity; const weatherId = data.weather[0].id; const iconCode = data.weather[0].icon; const weatherDisplay = { icon: getWeatherIcon(iconCode), temp: `${temp}°C`, feelsLike: `${feelsLike}°C`, humidity: `${humidity}%`, comment: getWeatherTip(weatherId, temp) // 텍스트를 짧게 압축 }; // 3. HTML 렌더링 (단 2줄로 압축) const html = `
${weatherDisplay.icon} ${weatherDisplay.temp} 체감 ${weatherDisplay.feelsLike} | ${weatherDisplay.comment} (${weatherDisplay.humidity})
`; weatherWidget.innerHTML = html; } catch (error) { console.error('날씨 데이터 로드 오류:', error); weatherWidget.innerHTML = `
🚨 로드 실패. API 키 또는 네트워크 확인.
`; } } // --- 데이터 헬퍼 함수 (여행 팁 텍스트를 짧게 압축) --- function getWeatherIcon(iconCode) { const prefix = iconCode.substring(0, 2); switch (prefix) { case '01': return '☀️'; case '02': case '03': return '🌤️'; case '04': return '☁️'; case '09': return '🌧️'; case '10': return '☔'; case '11': return '⚡'; case '13': return '❄️'; case '50': return '🌫️'; default: return '🌡️'; } } function getWeatherTip(weatherId, temp) { if (weatherId >= 200 && weatherId = 32) { return '수분/선크림필수'; // 텍스트를 '자외선/수분 필수'에서 더 압축 } if (temp >= 28) { return '시원한휴식'; } return '야외활동적합'; } // ---------------------------------------------------- // 초기화 및 주기적 업데이트 // ---------------------------------------------------- function initWeatherWidget() { loadWeatherData(); // 10분마다 업데이트 const UPDATE_INTERVAL = 10 * 60 * 1000; setInterval(loadWeatherData, UPDATE_INTERVAL); } // DOM이 준비되면 실행 if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initWeatherWidget); } else { initWeatherWidget(); } })();
/* ---------------------------------------------------- */ /* 🚀 공통 스타일: 네 위젯 박스 높이 "고정" 및 디자인 최적화 */ /* ---------------------------------------------------- */ /* 모든 위젯에 공통으로 적용될 최상위 컨테이너 */ .unified-widget-container { background-color: #ffffff; border: 1px solid #e0e0e0; border-radius: 12px; padding: 15px; box-shadow: 0 6px 12px rgba(0,0,0,0.08); font-family: 'Noto Sans KR', sans-serif; /* 높이 통일의 핵심: height 속성으로 고정 높이 강제 적용 */ height: 220px; display: flex; flex-direction: column; align-items: stretch; box-sizing: border-box; overflow: hidden; } /* 위젯 제목 스타일 */ .unified-widget-title { font-size: 15px; font-weight: 700; color: #2c3e50; margin-bottom: 15px; padding-bottom: 8px; text-align: center; background-color: inherit; } /* 각 위젯별 제목 하단 강조선 색상 */ .currency-widget-container .unified-widget-title { border-bottom: 3px solid #FFD700; } .weather-widget-container .unified-widget-title { border-bottom: 3px solid #5DADE2; } .thai-phrase-widget-container .unified-widget-title { border-bottom: 3px solid #28a745; } .cctv-widget-container .unified-widget-container .unified-widget-title { border-bottom: 3px solid #9B59B6; } /* 위젯 내용 영역 (ID) 스타일 */ #currency_widget, #weather_widget, #thai_phrase_widget, #cctv_widget_map { flex-grow: 1; display: flex; align-items: center; justify-content: center; text-align: center; padding: 0; overflow: hidden; } /* ---------------------------------------------------- */ /* 태국어 위젯 내부 스타일 */ /* ---------------------------------------------------- */ #thai_phrase_widget .phrase-category { font-size: 10px; font-weight: 700; padding: 3px 8px; border-radius: 15px; display: inline-block; margin-bottom: 10px; text-transform: uppercase; line-height: 1; } #thai_phrase_widget .thai-text { color: #E67E22; font-weight: 900; font-size: 18px; line-height: 1.4; margin-bottom: 5px; display: block; } #thai_phrase_widget .eng-pronunciation { font-size: 13px; color: #8B4513; font-weight: 500; margin-bottom: 3px; font-style: italic; display: block; } #thai_phrase_widget .korean-meaning { font-size: 14px; color: #2C5530; font-weight: 700; line-height: 1.2; margin-top: 5px; display: block; /* 최대 2줄만 표시되도록 강제 */ display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
🇹🇭 오늘의 태국어
태국어 불러오는 중...
(function() { 'use strict'; // ========================================================= // 3. 태국어 문구 로테이션 데이터 // ========================================================= const thaiPhrases = [ {thai: "싸왓디 캅/카 (สวัสดีครับ/ค่ะ)", eng: "Sawad-dee Krap/Ka", kr: "안녕하세요 / 안녕히 가세요 (남/여)"}, {thai: "커쿤 캅/카 (ขอบคุณครับ/ค่ะ)", eng: "Kòp Kun Krap/Ka", kr: "감사합니다 (남/여)"}, {thai: "커톳 크랍/카 (ขอโทษครับ/ค่ะ)", eng: "Kǒo Tôt Krap/Ka", kr: "미안합니다 / 실례합니다"}, {thai: "타오라이 캅/카? (เท่าไหร่ครับ/ค่ะ)", eng: "Tâo Rài Krap/Ka?", kr: "이거 얼마예요?"}, {thai: "아러이 막막 (อร่อยมากมาก)", eng: "A-ròi Mâk Mâk", kr: "정말 맛있어요"}, {thai: "마이 아오 펫 (ไม่เอาเผ็ด)", eng: "Mâi Ao Pèt", kr: "맵지 않게 해주세요"}, {thai: "홍남 유 티나이? (ห้องน้ำอยู่ทีไหน)", eng: "Hông Nám Yùu Tîi Nãi?", kr: "화장실이 어디예요?"}, {thai: "빠이 ... 다이 마이? (ไป...ได้ไหม)", eng: "Bpāi ... Dâi Máhï?", kr: "...에 갈 수 있나요?"}, {thai: "롯 너이 다이 마이? (ลดหน่อยได้ไหม)", eng: "Lót Nòi Dâi Máhï?", kr: "좀 깎아주세요?"}, {thai: "아오 อัน니 (เอาอันนี้)", eng: "Ao An Née", kr: "이것 주세요"}, {thai: "폼/디찬 츠으... (ผม/ดิฉันชื่อ...)", eng: "Pǒm/Dì Chăn Chʉ̂ʉ...", kr: "제 이름은 ...입니다 (남/여)"}, {thai: "뺀 양라이 방 캅/คา? (เป็นอย่างไรบ้าง)", eng: "Bpen Yàng Rai Bâng Krap/Ka?", kr: "어떻게 지내세요?"}, {thai: "싸바이 디 마이? (สบายดีไหม)", eng: "Sà Bāi Dee Máhï?", kr: "잘 지내세요?"}, {thai: "싸바이 디 (สบายดี)", eng: "Sà Bāi Dee", kr: "잘 지냅니다"}, {thai: "느아이 (เหนื่อย)", eng: "Nèuay", kr: "피곤해요"}, {thai: "폼/디찬 락 쿤 (ผม/ดิฉันรักคุณ)", eng: "Pǒm/Dì Chăn Rák Kun", kr: "사랑해요 (남/여)"}, {thai: "낀 카우 르 양? (กินข้าวหรือยัง)", eng: "Gin Kâo Rĕu Yâng?", kr: "밥 먹었니?"}, {thai: "낀 래우 (กินแล้ว)", eng: "Gin Láew", kr: "먹었어요"}, {thai: "마이 낀 (ไม่กิน)", eng: "Mâi Gin", kr: "안 먹었어요"}, {thai: "남 쁠라 (น้ำปลา)", eng: "Nám Plā", kr: "피쉬 소스 (액젓)"}, {thai: "카우 팟 (ข้าวผัด)", eng: "Kâo Pàt", kr: "볶음밥"}, {thai: "팟타이 (ผัดไทย)", eng: "Pàt Thai", kr: "태국식 볶음 쌀국수"}, {thai: "쏨땀 (ส้มตำ)", eng: "Sôm Tam", kr: "파파야 샐러드"}, {thai: "똠얌꿍 (ต้มยำกุ้ง)", eng: "Dtôm Yam Gûng", kr: "새우 넣은 매콤 시큼한 수프"}, {thai: "펫 막 (เผ็ดมาก)", eng: "Pèt Mâk", kr: "매우 매워요"}, {thai: "카우 니여우 마무앙 (ข้าวเหนียวมะม่วง)", eng: "Kâo Nǐaw Ma Mûang", kr: "망고 밥"}, {thai: "아오 남 마이? (เอาน้ำไหม)", eng: "Ao Nám Máhï?", kr: "물 드릴까요?"}, {thai: "아오 (เอา)", eng: "Ao", kr: "주세요 (가질게요)"}, {thai: "마이 아오 (ไม่เอา)", eng: "Mâi Ao", kr: "필요 없어요"}, {thai: "롯 (รถ)", eng: "Rót", kr: "차, 차량"}, {thai: "롯메 (รถเมล์)", eng: "Rót May", kr: "버스"}, {thai: "뚝뚝 (ตุ๊กตุ๊ก)", eng: "Dtúk Dtúk", kr: "삼륜차"}, {thai: "택시 (แท็กซี่)", eng: "Ták Sêe", kr: "택시"}, {thai: "므어 라이? (เมื่อไหร่)", eng: "Mʉ̂a Rài?", kr: "언제요?"}, {thai: "유 티 나이? (อยู่ทีไหน)", eng: "Yùu Tîi Nãi?", kr: "어디에 있나요?"}, {thai: "빠이 니 (ไปนี่)", eng: "Bpāi Nêe", kr: "이쪽으로 가주세요"}, {thai: "쿤모 (หมอ)", eng: "Mǒr", kr: "의사"}, {thai: "롱 파야반 (โรงพยาบาล)", eng: "Rong Pa Yaa Baan", kr: "병원"}, {thai: "추어이 두어이 (ช่วยด้วย)", eng: "Chûay Dûay!", kr: "도와주세요!"}, {thai: "뺀 아라이? (เป็นอะไร)", eng: "Bpen À Rai?", kr: "무슨 일 있어요?"}, {thai: "하이 짜이 마이 아웃 (หายใจไม่ออก)", eng: "Hăi Jai Mâi Àwk", kr: "숨을 못 쉬겠어요"}, {thai: "파이 마이 (ไฟไหม้)", eng: "Fai Mâi!", kr: "불이야!"}, {thai: "탐 하이 찬 너이 (ทำให้ฉันหน่อย)", eng: "Tam Hâi Chăn Nòi", kr: "저를 위해 해주세요"}, {thai: "디 막 (ดีมาก)", eng: "Dee Mâk", kr: "아주 좋아요"}, {thai: "마이 디 (ไม่ดี)", eng: "Mâi Dee", kr: "좋지 않아요"}, {thai: "크럽/카 (ครับ/ค่ะ)", eng: "Krap/Ka", kr: "네 / 알겠습니다"}, {thai: "마이 크랍/카 (ไม่ครับ/ค่ะ)", eng: "Mâi Krap/Ka", kr: "아닙니다 / 몰라요"}, {thai: "쁘아 (ป่วย)", eng: "Bpuay", kr: "아파요"}, {thai: "탐응안 (ทำงาน)", eng: "Tam Ngaan", kr: "일하다"}, {thai: "풋 파싸 앙끄릿 다이 마이? (พูดภาษาอังกฤษได้ไหม)", eng: "Pûut Păsăa Ang-grìt Dâi Máhï?", kr: "영어 할 줄 아세요?"}, {thai: "폼/디찬 풋 파싸 타이 다이 닛너이 (พูดภาษาไทยได้นิดหน่อย)", eng: "Pûut Păsăa Thai Dâi Nít Nòi", kr: "저는 태국어를 조금 할 수 있어요"}, {thai: "뺀 야이 (ใหญ่)", eng: "Bpen Yài", kr: "크다"}, {thai: "뺀 렉 (เล็ก)", eng: "Bpen Lék", kr: "작다"}, {thai: "뺀 쑤응 (สูง)", eng: "Bpen Sǔung", kr: "높다"}, {thai: "뺀 따 (ต่ำ)", eng: "Bpen Dtàam", kr: "낮다"}, {thai: "뺀 수어이 (สวย)", eng: "Bpen Sǔay", kr: "예쁘다"}, {thai: "뺀 러 (หล่อ)", eng: "Bpen Lɔ̀r", kr: "멋있다 (남자에게)"}, {thai: "마이 루 (ไม่รู้)", eng: "Mâi Rúu", kr: "몰라요"}, {thai: "카오 짜이 (เข้าใจ)", eng: "Kâo Jai", kr: "이해해요"}, {thai: "마이 ค้า (ไม่เข้าใจ)", eng: "Mâi Kâo Jai", kr: "이해 못 해요"}, {thai: "락 너이 (ลักหน่อย)", eng: "Rák Nòi", kr: "잠시만요 (기다려)"}, {thai: "마 มา มา (มา มา มา)", eng: "Mā Mā Mā", kr: "이리와"}, {thai: "짜이 옌옌 (ใจเย็นๆ)", eng: "Jai Yen Yen", kr: "진정해, 침착해"}, {thai: "디 짜이 (ดีใจ)", eng: "Dee Jai", kr: "기뻐요"}, {thai: "쓰어 짜이 (เสียใจ)", eng: "Sǐa Jai", kr: "슬퍼요"}, {thai: "커 남 (ขอน้ำ)", eng: "Kǒr Nám", kr: "물 주세요"}, {thai: "커 벤또 (ขอเบียร์)", eng: "Kǒr Bia", kr: "맥주 주세요"}, {thai: "싸이 남 캥 (ใสน้ำแข็ง)", eng: "Sài Nám Kĕng", kr: "얼음 넣어 주세요"}, {thai: "마이 싸이 남 캥 (ไม่ใสน้ำแข็ง)", eng: "Mâi Sài Nám Kĕng", kr: "얼음 넣지 마세요"}, {thai: "커 차 (ขอชา)", eng: "Kǒr Chāa", kr: "차 주세요"}, {thai: "커 커피 (ขอคาเฟ)", eng: "Kǒr Kaa Fae", kr: "커피 주세요"}, {thai: "짜이 (จ่าย)", eng: "Jàai", kr: "계산하다"}, {thai: "낀 (กิน)", eng: "Gin", kr: "먹다"}, {thai: "넌 (นอน)", eng: "Nɔn", kr: "자다"}, {thai: "능 (หนึ่ง)", eng: "Nèung", kr: "하나"}, {thai: "썽 (สอง)", eng: "Sɔ̌ng", kr: "둘"}, {thai: "쌈 (สาม)", eng: "Sǎam", kr: "셋"}, {thai: "씨 (สี่)", eng: "Sèe", kr: "넷"}, {thai: "하 (ห้า)", eng: "Hâa", kr: "다섯"}, {thai: "혹 (หก)", eng: "Hòk", kr: "여섯"}, {thai: "쩻 (เจ็ด)", eng: "Jèt", kr: "일곱"}, {thai: "뺏 (แปด)", eng: "Bpàet", kr: "여덟"}, {thai: "까오 (เก้า)", eng: "Gâo", kr: "아홉"}, {thai: "씹 (สิบ)", eng: "Sìp", kr: "열"}, {thai: "끼 반 (กี่บาท)", eng: "Gèe Bàat?", kr: "몇 바트예요?"}, {thai: "티 니 (ที่นี่)", eng: "Tîi Nêe", kr: "여기"}, {thai: "티 난 (ที่นั้น)", eng: "Tîi Nán", kr: "저기"}, {thai: "티 노은 (ที่โน้น)", eng: "Tîi Nóhn", kr: "저 멀리"}, {thai: "싸이 (ซ้าย)", eng: "Sáai", kr: "왼쪽"}, {thai: "콰 (ขวา)", eng: "Kwăa", kr: "오른쪽"}, {thai: "뜨롱 빠이 (ตรงไป)", eng: "Dtrong Bpāi", kr: "직진"}, {thai: "끼 몽? (กี่โมง)", eng: "Gèe Mohng?", kr: "몇 시예요?"}, {thai: "짜 빠이 (จะไป)", eng: "Jà Bpāi", kr: "갈 거예요"}, {thai: "탐 마이? (ทำไม)", eng: "Tam Máhï?", kr: "왜요?"}, {thai: "때오 니 (เดี๋ยวนี้)", eng: "Dtiow Née", kr: "지금 당장"}, {thai: "완 니 (วันนี้)", eng: "Wan Née", kr: "오늘"}, {thai: "프룽 니 (พรุ่งนี้)", eng: "Prûng Née", kr: "내일"}, {thai: "므어 완 นิ (เมื่อวานนี้)", eng: "Mʉ̂a Wan Née", kr: "어제"}, {thai: "쁘라만 (ประมาณ)", eng: "Bprà Māan", kr: "대략"}, {thai: "커 쁘라만 라카 (ขอประมาณราคา)", eng: "Kǒr Bprà Māan Rāakāa", kr: "대략적인 가격을 알려주세요"}, {thai: "추업 (ช่วย)", eng: "Chûay", kr: "도움"}, {thai: "쑤아이 추업 (สวยช่วย)", eng: "Sǔay Chûay", kr: "도움을 요청합니다 (미녀가 도와줘요)"}, {thai: "쁘랏따 (ประตู)", eng: "Bprà Dtūu", kr: "문"}, {thai: "빼드 (เปิด)", eng: "Bpèrt", kr: "열다"}, {thai: "삣 (ปิด)", eng: "Bpìt", kr: "닫다"}, {thai: "카이 (ไข)", eng: "Kăi", kr: "팔다"}, {thai: "쓰 (ซื้อ)", eng: "Sʉ́ʉ", kr: "사다"}, {thai: "폼/디찬 흐이유 (ผม/ดิฉันหิว)", eng: "Pǒm/Dì Chăn Hǐu", kr: "저는 배고파요 (남/여)"}, {thai: "커 아한 (ขออาหาร)", eng: "Kǒr Āhăan", kr: "음식 주세요"} ]; let currentPhraseIndex = 0; let rotationInterval; // ========================================================= // 태국어 위젯 로직 // ========================================================= /** * @description 다음 태국어 문구로 회전하며 렌더링합니다. */ function rotateThaiPhrase() { const thaiWidget = document.getElementById('thai_phrase_widget'); if (!thaiWidget) return; const phrase = thaiPhrases[currentPhraseIndex]; // 카테고리 스타일 계산 const categoryStyle = getCategoryStyle(phrase); const html = `
${categoryStyle.icon} ${categoryStyle.name} ${phrase.thai} 🔊 ${phrase.eng} ${phrase.kr}
`; thaiWidget.innerHTML = html; // 다음 인덱스로 이동 currentPhraseIndex = (currentPhraseIndex + 1) % thaiPhrases.length; } /** * @description 문구 내용에 따라 카테고리 스타일을 반환합니다. */ function getCategoryStyle(phrase) { const krText = phrase.kr.toLowerCase(); if (krText.includes('안녕') || krText.includes('감사') || krText.includes('지내세요')) { return { name: '인사', color: '#007bff', bgColor: '#E3F2FD', icon: '👋' }; } else if (krText.includes('얼마') || krText.includes('가격') || krText.includes('깎아') || krText.includes('사다') || krText.includes('주세요')) { return { name: '쇼핑/결제', color: '#28a745', bgColor: '#E8F5E8', icon: '🛍️' }; } else if (krText.includes('맛있') || krText.includes('음식') || krText.includes('배고파요') || krText.includes('맥주') || krText.includes('먹다') || krText.includes('소스')) { return { name: '음식/식사', color: '#dc3545', bgColor: '#FFEBEE', icon: '🍜' }; } else if (krText.includes('화장실') || krText.includes('병원') || krText.includes('가다') || krText.includes('택시') || krText.includes('어디') || krText.includes('이리와')) { return { name: '위치/교통', color: '#6f42c1', bgColor: '#F3E5F5', icon: '🚗' }; } else if (krText.includes('도와주세요') || krText.includes('무슨 일') || krText.includes('숨을 못') || krText.includes('아파요') || krText.includes('불이야') || krText.includes('진정해')) { return { name: '응급/요청', color: '#ffc107', bgColor: '#FFF3CD', icon: '🚨' }; } else { return { name: '일상 회화', color: '#6c757d', bgColor: '#F5F5F5', icon: '💬' }; } } /** * @description 회전 인터벌을 초기화하고 시작합니다. */ function initThaiPhraseRotation() { if (rotationInterval) { clearInterval(rotationInterval); } rotateThaiPhrase(); rotationInterval = setInterval(rotateThaiPhrase, 5000); // 5초 간격 } /** * @description 마우스 호버 시 회전을 멈추는 기능을 추가합니다. */ function addHoverPause() { const thaiWidget = document.getElementById('thai_phrase_widget'); if (thaiWidget) { thaiWidget.addEventListener('mouseenter', () => { if (rotationInterval) { clearInterval(rotationInterval); } }); thaiWidget.addEventListener('mouseleave', () => { initThaiPhraseRotation(); }); } } /** * @description 최종 초기화 함수 */ function initThaiWidget() { initThaiPhraseRotation(); addHoverPause(); } // DOM이 준비되면 실행 if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initThaiWidget); } else { initThaiWidget(); } })();
/* ---------------------------------------------------- */ /* 🚀 공통 스타일: 네 위젯 박스 높이 "고정" 및 디자인 최적화 */ /* ---------------------------------------------------- */ /* 모든 위젯에 공통으로 적용될 최상위 컨테이너 */ .unified-widget-container { background-color: #ffffff; border: 1px solid #e0e0e0; border-radius: 12px; /* 이 테두리 반경이 모든 위젯에 적용됨 */ padding: 15px; box-shadow: 0 6px 12px rgba(0,0,0,0.08); font-family: 'Noto Sans KR', sans-serif; /* 높이 통일의 핵심: height 속성으로 고정 높이 강제 적용 */ height: 220px; display: flex; flex-direction: column; align-items: stretch; box-sizing: border-box; overflow: hidden; /* 위젯 컨테이너 자체에서 넘치는 내용(둥근 모서리 처리 후)을 숨김 */ } /* 위젯 제목 스타일 */ .unified-widget-title { font-size: 15px; font-weight: 700; color: #2c3e50; margin-bottom: 15px; padding-bottom: 8px; text-align: center; /* 제목 아래 테두리 반경 제거 (제목이 박스 상단에 붙도록) */ border-top-left-radius: 0; border-top-right-radius: 0; background-color: inherit; /* 컨테이너와 동일한 배경색 유지 */ } /* 각 위젯별 제목 하단 강조선 색상 */ .currency-widget-container .unified-widget-title { border-bottom: 3px solid #FFD700; } .weather-widget-container .unified-widget-title { border-bottom: 3px solid #5DADE2; } .thai-phrase-widget-container .unified-widget-title { border-bottom: 3px solid #28a745; } .cctv-widget-container .unified-widget-title { border-bottom: 3px solid #9B59B6; } /* 위젯 내용 영역 (ID) 스타일 */ #currency_widget, #weather_widget, #thai_phrase_widget, #cctv_widget_map { flex-grow: 1; display: flex; align-items: center; justify-content: center; text-align: center; padding: 0; overflow: hidden; /* 내용이 넘치면 숨김 */ /* 내용 영역도 상단 라운딩이 적용될 수 있도록 조정 */ border-radius: 0 0 12px 12px; /* 하단만 둥글게 */ /* 필요하다면 여기에 background-color를 추가하여 내용 영역의 배경을 지정 */ } /* ---------------------------------------------------- */ /* CCTV 지도 위젯 내부 스타일 */ /* ---------------------------------------------------- */ .cctv-map-link { display: flex; justify-content: center; align-items: center; width: 100%; height: 100%; text-decoration: none; overflow: hidden; /* 내부 이미지 둥근 모서리를 위해 */ position: relative; border-radius: 0 0 12px 12px; /* 하단만 둥글게 */ } .cctv-map-image { width: 100%; height: 100%; object-fit: cover; transition: transform 0.3s ease, filter 0.3s ease; filter: brightness(0.85); /* 이미지 자체에 상단 모서리 라운딩 적용 */ border-radius: 12px 12px 12px 12px; /* 상단 모서리도 둥글게, 이 부분이 핵심 */ position: absolute; /* 텍스트 위에 오도록 */ z-index: 1; } .cctv-map-link:hover .cctv-map-image { filter: brightness(1); transform: scale(1.05); } .cctv-overlay-text { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); color: white; font-size: 18px; font-weight: 800; text-shadow: 1px 1px 4px rgba(0, 0, 0, 0.8); pointer-events: none; z-index: 2; /* 이미지 위에 오도록 */ } .cctv-map-icon { display: block; font-size: 28px; margin-bottom: 5px; } .cctv-map-description { display: block; font-size: 11px; font-weight: 500; margin-top: 5px; }
📹 파타야 라이브 CCTV 지도
(function() { 'use strict'; console.log('CCTV 지도 위젯 로딩 완료 - 클릭 시 외부 링크 이동'); })();

🚘 공항 픽업 · 방콕 · 파타야
차량 요금 조회

구간을 선택하면 차량 요금이 자동 계산됩니다.

고속도로 톨비·유류비 일체 포함 항공편 무료 연착 대기 현장 기사 직불 가능 한국어 카톡 신속 배차
전체 요금표 보기
.pk-mo-br { display: inline; } #pk-quote-banner { max-width: 1100px; margin: 0 auto 35px auto; background: linear-gradient(145deg, #0f172a 0%, #1e293b 100%); border-radius: 28px; padding: 34px 30px; box-shadow: 0 20px 50px -10px rgba(0,0,0,0.45); font-family: -apple-system, BlinkMacSystemFont, "Apple SD Gothic Neo", "Pretendard", sans-serif; position: relative; box-sizing: border-box; } #pk-quote-banner::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 4px; background: linear-gradient(90deg, #fbbf24, #f59e0b, #fbbf24); border-radius: 28px 28px 0 0; } #pk-quote-banner .pk-qb-header { text-align: center; margin-bottom: 22px; } #pk-quote-banner .pk-qb-title { font-size: 25px; font-weight: 900; color: #ffffff; margin: 0 0 6px 0; letter-spacing: -0.5px; } #pk-quote-banner .pk-qb-desc { color: #94a3b8; font-size: 14px; margin: 0 auto; } #pk-quote-banner .pk-qb-tabs { display: flex; justify-content: center; gap: 8px; margin-bottom: 20px; flex-wrap: wrap; } #pk-quote-banner .pk-qb-tab { background: rgba(255, 255, 255, 0.08); color: #cbd5e1; border: 1px solid rgba(255, 255, 255, 0.12); padding: 10px 20px; border-radius: 40px; font-size: 13.5px; font-weight: 700; cursor: pointer; transition: all 0.2s ease; } #pk-quote-banner .pk-qb-tab.active { background: #fbbf24; color: #0f172a; border-color: #fbbf24; box-shadow: 0 4px 14px rgba(251, 191, 36, 0.35); } #pk-quote-banner .pk-qb-control-bar { display: flex; align-items: center; background: rgba(255, 255, 255, 0.05); border: 1px solid rgba(255, 255, 255, 0.15); border-radius: 16px; padding: 14px 18px; gap: 12px; margin-bottom: 22px; } #pk-quote-banner .pk-qb-field { flex: 1; display: flex; flex-direction: column; gap: 5px; } #pk-quote-banner .pk-qb-field label { font-size: 11.5px; font-weight: 700; color: #fbbf24; } #pk-quote-banner .pk-qb-select { width: 100%; background: #ffffff; color: #0f172a; border: none; border-radius: 8px; padding: 10px 12px; font-size: 13.5px; font-weight: 700; outline: none; box-sizing: border-box; cursor: pointer; } #pk-quote-banner .pk-qb-swap { background: transparent; border: none; color: #fbbf24; font-size: 20px; font-weight: 900; cursor: pointer; user-select: none; margin-top: 16px; padding: 6px; transition: transform 0.2s; line-height: 1; } #pk-quote-banner .pk-qb-swap:hover { transform: scale(1.2); } #pk-quote-banner .pk-qb-swap.disabled { opacity: 0.2; cursor: not-allowed; pointer-events: none; } #pk-quote-banner .pk-qb-stepper-field { flex: 0.65; } #pk-quote-banner .pk-qb-stepper { display: flex; background: #ffffff; border-radius: 8px; overflow: hidden; height: 42px; } #pk-quote-banner .pk-qb-stepper button { width: 40px; border: none; background: #f1f5f9; font-weight: 800; font-size: 16px; cursor: pointer; color: #0f172a; transition: background 0.15s; } #pk-quote-banner .pk-qb-stepper button:hover { background: #e2e8f0; } #pk-quote-banner .pk-qb-stepper input { flex: 1; border: none; text-align: center; font-weight: 800; font-size: 14.5px; color: #0f172a; width: 100%; } #pk-quote-banner .pk-qb-cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; margin-bottom: 22px; } #pk-quote-banner .pk-qb-card { background: #ffffff; border-radius: 18px; padding: 20px 14px; text-align: center; cursor: pointer; position: relative; border: 2.5px solid transparent; transition: all 0.22s ease; box-shadow: 0 8px 24px rgba(0,0,0,0.25); } #pk-quote-banner .pk-qb-card:hover { transform: translateY(-4px); } #pk-quote-banner .pk-qb-card.active { border-color: #38bdf8; box-shadow: 0 0 0 3px rgba(56, 189, 248, 0.4), 0 12px 28px rgba(0,0,0,0.3); } #pk-quote-banner .pk-card-featured { background: #ffffff; border-color: #fde68a; } #pk-quote-banner .pk-card-featured.active { background: linear-gradient(145deg, #fbbf24, #f59e0b); border-color: #ffffff; box-shadow: 0 0 0 3px rgba(255, 255, 255, 0.6), 0 14px 35px rgba(251, 191, 36, 0.4); } #pk-quote-banner .pk-card-featured.active h3 { color: #0f172a; } #pk-quote-banner .pk-card-featured.active .pk-qb-price { color: #000000; } #pk-quote-banner .pk-card-featured.active .pk-qb-krw { color: #334155; } #pk-quote-banner .pk-card-featured.active p { color: #1e293b; } #pk-quote-banner .pk-qb-card.disabled { opacity: 0.35 !important; cursor: not-allowed !important; transform: none !important; border-color: transparent !important; box-shadow: none !important; background: #e2e8f0 !important; } #pk-quote-banner .pk-qb-card-icon { font-size: 28px; margin-bottom: 6px; } #pk-quote-banner .pk-qb-card h3 { font-size: 15px; font-weight: 800; color: #0f172a; margin: 0 0 6px 0; } #pk-quote-banner .pk-qb-price-wrap { display: flex; flex-direction: column; align-items: center; gap: 2px; margin-bottom: 6px; } #pk-quote-banner .pk-qb-price { font-size: 24px; font-weight: 900; color: #0284c7; line-height: 1; } #pk-quote-banner .pk-qb-krw { font-size: 12px; font-weight: 700; color: #64748b; } #pk-quote-banner .pk-qb-card p { font-size: 12px; color: #64748b; margin: 0; font-weight: 600; } #pk-quote-banner .pk-qb-badge-best { position: absolute; top: -9px; right: 12px; background: #ef4444; color: #ffffff; font-size: 10px; font-weight: 900; padding: 3px 10px; border-radius: 20px; } #pk-quote-banner .pk-qb-trust { display: flex; justify-content: center; gap: 12px; flex-wrap: wrap; margin-bottom: 22px; } #pk-quote-banner .pk-qb-trust span { font-size: 12.5px; font-weight: 700; color: #fde047; background: rgba(255, 255, 255, 0.06); padding: 6px 14px; border-radius: 30px; border: 1px solid rgba(251, 191, 36, 0.25); } #pk-quote-banner .pk-qb-actions { display: flex; justify-content: center; gap: 14px; flex-wrap: wrap; } #pk-quote-banner .pk-qb-btn-sub { background: transparent; color: #fbbf24; padding: 13px 24px; border-radius: 50px; font-weight: 800; font-size: 14px; text-decoration: none; border: 2px solid #fbbf24; transition: all 0.2s; display: inline-flex; align-items: center; } #pk-quote-banner .pk-qb-btn-sub:hover { background: #fbbf24; color: #0f172a; } #pk-quote-banner .pk-qb-btn-main { background: linear-gradient(145deg, #38bdf8, #0284c7); color: #ffffff; padding: 13px 32px; border-radius: 50px; font-weight: 900; font-size: 15px; border: none; cursor: pointer; box-shadow: 0 6px 20px rgba(2, 132, 199, 0.45); transition: all 0.2s; } #pk-quote-banner .pk-qb-btn-main:hover { transform: translateY(-2px); box-shadow: 0 10px 25px rgba(2, 132, 199, 0.6); } @media (max-width: 820px) { #pk-quote-banner { padding: 22px 14px; border-radius: 18px; } #pk-quote-banner .pk-qb-title { font-size: 19px; } #pk-quote-banner .pk-qb-control-bar { flex-direction: column; align-items: stretch; gap: 10px; position: relative; } #pk-quote-banner .pk-qb-swap { display: flex !important; align-self: center; margin: -2px 0; background: rgba(251, 191, 36, 0.15); border-radius: 50%; width: 32px; height: 32px; align-items: center; justify-content: center; font-size: 16px; } #pk-quote-banner .pk-qb-cards { grid-template-columns: 1fr; gap: 10px; } #pk-quote-banner .pk-qb-actions { flex-direction: column; } #pk-quote-banner .pk-qb-btn-sub, #pk-quote-banner .pk-qb-btn-main { width: 100%; text-align: center; justify-content: center; } } // 1. 상세페이지 FLEET_ROUTES와 1:1 완벽 일치 라우팅 설정 const PK_ROUTING_CONFIG = { airport_pickup: { fromLabel: '출발 공항', toLabel: '도착 지역', deps: [ { id: 'BKK', name: '수완나폼 공항 (BKK)' }, { id: 'DMK', name: '돈무앙 공항 (DMK)' } ], dests: [ { id: 'PTY_CITY', name: '파타야 시내' }, { id: 'PTY_OUTER', name: '파타야 외곽 (좀티엔, 나좀티엔)' }, { id: 'BKK_CITY', name: '방콕 시내' }, { id: 'BKK_OUTER', name: '방콕 외곽 (짜오프라야, 카오산)' }, { id: 'AYU', name: '아유타야' }, { id: 'RAYONG', name: '라용 시내' }, { id: 'HH', name: '후아힌 시내' } ], allowSwap: true }, airport_sending: { fromLabel: '출발 지역', toLabel: '도착 공항', deps: [ { id: 'PTY_CITY', name: '파타야 시내' }, { id: 'PTY_OUTER', name: '파타야 외곽 (좀티엔 등)' }, { id: 'BKK_CITY', name: '방콕 시내' }, { id: 'BKK_OUTER', name: '방콕 외곽 (짜오프라야 등)' }, { id: 'HH', name: '후아힌 시내' }, { id: 'AYU', name: '아유타야' }, { id: 'RAYONG', name: '라용 시내' } ], dests: [ { id: 'BKK', name: '수완나폼 공항 (BKK)' }, { id: 'DMK', name: '돈무앙 공항 (DMK)' } ], allowSwap: true }, city_transfer: { fromLabel: '출발 지역', toLabel: '도착 지역', deps: [ { id: 'BKK_CITY', name: '방콕 시내' }, { id: 'PTY_CITY', name: '파타야 시내' }, { id: 'HH', name: '후아힌 시내' }, { id: 'RAYONG', name: '라용 시내' } ], dests: [ { id: 'PTY_CITY', name: '파타야 시내' }, { id: 'BKK_CITY', name: '방콕 시내' }, { id: 'BKK_OUTER', name: '방콕 외곽' }, { id: 'HH', name: '후아힌 시내' }, { id: 'AYU', name: '아유타야' }, { id: 'RAYONG', name: '라용 시내' } ], allowSwap: true }, car_rent: { fromLabel: '대절 출발지', toLabel: '투어 코스', deps: [ { id: 'BKK', name: '방콕 출발' }, { id: 'PTY', name: '파타야 출발' } ], dests: [], allowSwap: false } }; // 2. 상세페이지 엔진 FLEET_ROUTES.rates 전수 1:1 동기화 매트릭스 const pkFareData = { // airport_pickup 'BKK_PTY_CITY': { sedan: 1000, suv: 1200, van: 1700 }, 'BKK_PTY_OUTER': { sedan: 1200, suv: 1400, van: 1900 }, 'BKK_BKK_CITY': { sedan: 700, suv: 800, van: 1100 }, 'BKK_BKK_OUTER': { sedan: 800, suv: 900, van: 1200 }, 'BKK_AYU': { sedan: 1600, suv: 1900, van: 2200 }, 'BKK_RAYONG': { sedan: 1900, suv: 2100, van: 2500 }, 'BKK_HH': { sedan: 1800, suv: 2000, van: 2500 }, 'DMK_PTY_CITY': { sedan: 1400, suv: 1600, van: 2100 }, 'DMK_PTY_OUTER': { sedan: 1600, suv: 1800, van: 2300 }, 'DMK_BKK_CITY': { sedan: 700, suv: 800, van: 1100 }, 'DMK_BKK_OUTER': { sedan: 800, suv: 900, van: 1200 }, 'DMK_AYU': { sedan: 1600, suv: 1900, van: 2200 }, 'DMK_RAYONG': { sedan: 2100, suv: 2300, van: 2700 }, 'DMK_HH': { sedan: 1800, suv: 2000, van: 2500 }, // airport_sending 'PTY_CITY_BKK': { sedan: 1000, suv: 1200, van: 1700 }, 'PTY_CITY_DMK': { sedan: 1400, suv: 1600, van: 2100 }, 'PTY_OUTER_BKK': { sedan: 1200, suv: 1400, van: 1900 }, 'PTY_OUTER_DMK': { sedan: 1600, suv: 1800, van: 2300 }, 'BKK_CITY_BKK': { sedan: 700, suv: 800, van: 1100 }, 'BKK_CITY_DMK': { sedan: 700, suv: 800, van: 1100 }, 'BKK_OUTER_BKK': { sedan: 800, suv: 900, van: 1200 }, 'BKK_OUTER_DMK': { sedan: 800, suv: 900, van: 1200 }, 'HH_BKK': { sedan: 1800, suv: 2000, van: 2500 }, 'HH_DMK': { sedan: 1800, suv: 2000, van: 2500 }, 'AYU_BKK': { sedan: 1600, suv: 1900, van: 2200 }, 'AYU_DMK': { sedan: 1600, suv: 1900, van: 2200 }, 'RAYONG_BKK': { sedan: 1900, suv: 2100, van: 2500 }, 'RAYONG_DMK': { sedan: 2100, suv: 2300, van: 2700 }, // city_transfer 'BKK_CITY_PTY_CITY': { sedan: 1300, suv: 1400, van: 1900 }, 'BKK_CITY_HH': { sedan: 1800, suv: 2000, van: 2500 }, 'BKK_CITY_AYU': { sedan: 1500, suv: 1800, van: 2100 }, 'BKK_CITY_RAYONG': { sedan: 1900, suv: 2100, van: 2500 }, 'PTY_CITY_BKK_CITY': { sedan: 1300, suv: 1400, van: 1900 }, 'PTY_CITY_BKK_OUTER': { sedan: 1400, suv: 1500, van: 2000 }, 'PTY_CITY_HH': { sedan: 2200, suv: 2500, van: 3000 }, 'PTY_CITY_RAYONG': { sedan: 1300, suv: 1500, van: 1800 }, 'PTY_CITY_AYU': { sedan: 2300, suv: 2600, van: 3300 }, 'HH_BKK_CITY': { sedan: 1800, suv: 2000, van: 2500 }, 'HH_PTY_CITY': { sedan: 2200, suv: 2500, van: 3000 }, 'RAYONG_BKK_CITY': { sedan: 1900, suv: 2100, van: 2500 }, 'RAYONG_PTY_CITY': { sedan: 1300, suv: 1500, van: 1800 }, // car_rent 'BKK_BKK_6H': { sedan: 2000, suv: 2200, van: 2400 }, 'BKK_BKK_10H': { sedan: 2300, suv: 2500, van: 3000 }, 'BKK_BKK_PTY_OW_10H': { sedan: 3000, suv: 3200, van: 3400 }, 'BKK_BKK_PTY_RT_10H': { sedan: 3400, suv: 3600, van: 4000 }, 'BKK_BKK_HH_RT_10H': { sedan: 3000, suv: 3500, van: 4000 }, 'BKK_BKK_AYU_RT_10H': { sedan: 3000, suv: 3300, van: 3500 }, 'PTY_PTY_6H': { sedan: 1800, suv: 2000, van: 2200 }, 'PTY_PTY_10H': { sedan: 2300, suv: 2500, van: 2700 } }; const PK_PRODUCT_URL = 'https://travelthai114.com/shop/airport-pickup-transfer-bangkok-pattaya/'; let pkCurrentService = 'airport_pickup'; let pkCurrentCar = 'suv'; // 3. YayCurrency 환율 파서 (기본 Fallback: 41.548) function pkGetYayExchangeRate() { try { if (window.yayCurrency && window.yayCurrency.converted_currency) { const list = window.yayCurrency.converted_currency; let krw = null; if (Array.isArray(list)) { krw = list.find(item => (item.currency === 'KRW' || item.code === 'KRW')); } else if (typeof list === 'object') { if (list.KRW) krw = list.KRW; else { for (let k in list) { if (list[k].currency === 'KRW' || list[k].code === 'KRW') { krw = list[k]; break; } } } } if (krw) { const baseRate = parseFloat(krw.rate) || 39.478; let feeVal = 0; let feeType = 'fixed'; if (krw.fee && typeof krw.fee === 'object') { feeVal = parseFloat(krw.fee.value) || 0; if (krw.fee.type) feeType = String(krw.fee.type).toLowerCase(); } else if (krw.fee) { feeVal = parseFloat(krw.fee) || 0; if (krw.fee_type) feeType = String(krw.fee_type).toLowerCase(); } if (feeType === 'percentage' || feeType === 'percent') { return baseRate + (baseRate * (feeVal / 100)); } return baseRate + feeVal; } } } catch (e) {} return 41.548; } function pkFormatKRW(thb) { if (!thb || isNaN(thb)) return ''; const rate = pkGetYayExchangeRate(); return '(' + Math.round(thb * rate).toLocaleString() + '원)'; } // 4. 탭 전환 function pkSetTab(serviceType, targetFrom = null, targetTo = null) { pkCurrentService = serviceType; document.querySelectorAll('#pk-quote-banner .pk-qb-tab').forEach(b => { const isActive = b.getAttribute('data-tab') === serviceType; b.classList.toggle('active', isActive); b.setAttribute('aria-selected', isActive ? 'true' : 'false'); }); const cfg = PK_ROUTING_CONFIG[serviceType]; document.getElementById('pk-lbl-from').innerText = cfg.fromLabel; document.getElementById('pk-lbl-to').innerText = cfg.toLabel; const swapBtn = document.getElementById('pk-btn-swap'); if (cfg.allowSwap) { swapBtn.classList.remove('disabled'); swapBtn.removeAttribute('disabled'); } else { swapBtn.classList.add('disabled'); swapBtn.setAttribute('disabled', 'true'); } const fSelect = document.getElementById('pk-select-from'); fSelect.innerHTML = cfg.deps.map(d => `${d.name}`).join(''); if (targetFrom && Array.from(fSelect.options).some(o => o.value === targetFrom)) { fSelect.value = targetFrom; } pkOnFromChanged(targetTo); } // 5. 출발지 변경 시 목적지 동적 갱신 function pkOnFromChanged(targetTo = null) { const fromVal = document.getElementById('pk-select-from').value; const tSelect = document.getElementById('pk-select-to'); let dests = []; if (pkCurrentService === 'car_rent') { if (fromVal === 'BKK') { dests = [ { id: 'BKK_6H', name: '방콕 시내 투어 (6시간)' }, { id: 'BKK_10H', name: '방콕 시내 투어 (10시간)' }, { id: 'BKK_PTY_OW_10H', name: '방콕 ➜ 파타야 편도 이동 투어 (10시간)' }, { id: 'BKK_PTY_RT_10H', name: '방콕 ↔ 파타야 왕복 당일 투어 (10시간)' }, { id: 'BKK_HH_RT_10H', name: '방콕 ↔ 후아힌 왕복 당일 투어 (10시간)' }, { id: 'BKK_AYU_RT_10H', name: '방콕 ↔ 아유타야 왕복 당일 투어 (10시간)' } ]; } else { dests = [ { id: 'PTY_6H', name: '파타야 시내 투어 (6시간)' }, { id: 'PTY_10H', name: '파타야 시내 투어 (10시간)' } ]; } } else if (pkCurrentService === 'city_transfer') { dests = PK_ROUTING_CONFIG.city_transfer.dests.filter(d => { if (d.id === fromVal) return false; if (fromVal === 'BKK_CITY' && d.id === 'BKK_OUTER') return false; return true; }); } else { dests = PK_ROUTING_CONFIG[pkCurrentService].dests; } tSelect.innerHTML = dests.map(d => `${d.name}`).join(''); if (targetTo && dests.some(d => d.id === targetTo)) { tSelect.value = targetTo; } pkCalculateFare(); } // 6. 노선 스왑 function pkSwapRoute() { const cfg = PK_ROUTING_CONFIG[pkCurrentService]; if (!cfg.allowSwap) return; const curFrom = document.getElementById('pk-select-from').value; const curTo = document.getElementById('pk-select-to').value; if (pkCurrentService === 'airport_pickup') { pkSetTab('airport_sending', curTo, curFrom); } else if (pkCurrentService === 'airport_sending') { pkSetTab('airport_pickup', curTo, curFrom); } else if (pkCurrentService === 'city_transfer') { const isDepSupported = cfg.deps.some(d => d.id === curTo); if (!isDepSupported) { const destName = document.getElementById('pk-select-to').selectedOptions[0]?.text || curTo; alert('선택하신 목적지(' + destName + ')는 출발지로 지정할 수 없는 지역입니다.'); return; } pkSetTab('city_transfer', curTo, curFrom); } } // 7. 인원 / 캐리어 제어 function pkUpdateCount(type, delta) { const el = document.getElementById('pk-input-' + type); let val = parseInt(el.value) + delta; if (type === 'pax') val = Math.max(1, Math.min(val, 9)); if (type === 'bag') val = Math.max(0, Math.min(val, 10)); el.value = val; pkEnforceCapacityRules(); } // 8. 차종 수용량 검증 (세단: 최대 3인 · 24인치 3개 명확 적용) function pkEnforceCapacityRules() { const pax = parseInt(document.getElementById('pk-input-pax').value); const bag = parseInt(document.getElementById('pk-input-bag').value); const sedanCard = document.getElementById('pk-card-sedan'); const suvCard = document.getElementById('pk-card-suv'); // [대표님 지정 기준 적용] 세단: 3인 초과 OR 24인치 3개 초과 시 차단 const sedanDisabled = (pax > 3 || bag > 3); // SUV: 4인 초과 OR 28인치 4개 초과 시 차단 const suvDisabled = (pax > 4 || bag > 4); sedanCard.classList.toggle('disabled', sedanDisabled); suvCard.classList.toggle('disabled', suvDisabled); if (sedanDisabled && pkCurrentCar === 'sedan') { pkCurrentCar = suvDisabled ? 'van' : 'suv'; } if (suvDisabled && pkCurrentCar === 'suv') { pkCurrentCar = 'van'; } document.querySelectorAll('#pk-quote-banner .pk-qb-card').forEach(c => { c.classList.remove('active'); c.setAttribute('aria-checked', 'false'); }); const currentCardElem = document.getElementById('pk-card-' + pkCurrentCar); currentCardElem.classList.add('active'); currentCardElem.setAttribute('aria-checked', 'true'); pkCalculateFare(); } function pkSelectCar(carType) { const card = document.getElementById('pk-card-' + carType); if (card.classList.contains('disabled')) { alert('선택하신 탑승 인원 또는 수하물 수가 해당 차종의 최대 적재량을 초과합니다.\n더 큰 상위 차종을 선택해 주세요.'); return; } pkCurrentCar = carType; document.querySelectorAll('#pk-quote-banner .pk-qb-card').forEach(c => { c.classList.remove('active'); c.setAttribute('aria-checked', 'false'); }); card.classList.add('active'); card.setAttribute('aria-checked', 'true'); pkCalculateFare(); } // 9. 최종 운임 계산 및 렌더링 function pkCalculateFare() { const fromVal = document.getElementById('pk-select-from').value; const toVal = document.getElementById('pk-select-to').value; const key = fromVal + '_' + toVal; const reverseKey = toVal + '_' + fromVal; const fares = pkFareData[key] || pkFareData[reverseKey]; if (!fares) { document.getElementById('pk-price-sedan').innerText = '문의'; document.getElementById('pk-price-suv').innerText = '문의'; document.getElementById('pk-price-van').innerText = '문의'; document.getElementById('pk-krw-sedan').innerText = '(별도 확인)'; document.getElementById('pk-krw-suv').innerText = '(별도 확인)'; document.getElementById('pk-krw-van').innerText = '(별도 확인)'; document.getElementById('pk-btn-fare').innerText = '맞춤 운임'; document.getElementById('pk-btn-krw').innerText = ''; document.getElementById('pk-btn-text').innerText = '상담 진행하기 ➔'; return; } document.getElementById('pk-price-sedan').innerText = Number(fares.sedan).toLocaleString() + '฿'; document.getElementById('pk-price-suv').innerText = Number(fares.suv).toLocaleString() + '฿'; document.getElementById('pk-price-van').innerText = Number(fares.van).toLocaleString() + '฿'; document.getElementById('pk-krw-sedan').innerText = pkFormatKRW(fares.sedan); document.getElementById('pk-krw-suv').innerText = pkFormatKRW(fares.suv); document.getElementById('pk-krw-van').innerText = pkFormatKRW(fares.van); const curPrice = fares[pkCurrentCar]; document.getElementById('pk-btn-fare').innerText = Number(curPrice).toLocaleString() + '฿'; document.getElementById('pk-btn-krw').innerText = pkFormatKRW(curPrice); document.getElementById('pk-btn-text').innerText = '예약 진행하기 ➔'; } // 10. 상세페이지 1:1 전달 및 앵커 이동 function pkGoToBooking() { const fromVal = document.getElementById('pk-select-from').value; const toVal = document.getElementById('pk-select-to').value; const paxVal = document.getElementById('pk-input-pax').value; const bagVal = document.getElementById('pk-input-bag').value; const targetUrl = PK_PRODUCT_URL + '?pk_type=' + encodeURIComponent(pkCurrentService) + '&pk_from=' + encodeURIComponent(fromVal) + '&pk_to=' + encodeURIComponent(toVal) + '&pk_pax=' + encodeURIComponent(paxVal) + '&pk_bag=' + encodeURIComponent(bagVal) + '&pk_car=' + encodeURIComponent(pkCurrentCar) + '#tt114-fleet-wide-engine'; window.location.href = targetUrl; } // 11. 초기 구동 pkSetTab('airport_pickup'); pkEnforceCapacityRules(); document.addEventListener('DOMContentLoaded', function() { pkCalculateFare(); setTimeout(pkCalculateFare, 300); setTimeout(pkCalculateFare, 800); }); if (window.jQuery) { jQuery(document).on('yay_currency_updated', function() { pkCalculateFare(); }); }

🏖️ 파타야 여행

상품을 불러오는 중...
#pattaya-section .emoji-menu { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 20px; } #pattaya-section .emoji-btn { display: inline-flex; align-items: center; justify-content: center; padding: 8px 16px; font-size: 14px; font-weight: 600; border-radius: 50px; border: 1px solid #e2e8f0; background: #ffffff; color: #334155; cursor: pointer; transition: all 0.2s ease; white-space: nowrap; outline: none; box-shadow: 0 2px 5px rgba(0,0,0,0.04); } #pattaya-section .emoji-btn:hover { background: #f8fafc; border-color: #cbd5e1; transform: translateY(-1px); } #pattaya-section .emoji-btn.active { background: #28a745 !important; color: #ffffff !important; border-color: #28a745 !important; box-shadow: 0 4px 12px rgba(40, 167, 69, 0.3) !important; } @media (max-width: 768px) { #pattaya-section .emoji-menu { flex-wrap: nowrap; overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none; padding: 4px 4px 12px 4px; gap: 6px; } #pattaya-section .emoji-menu::-webkit-scrollbar { display: none; } #pattaya-section .emoji-btn { padding: 7px 13px; font-size: 13px; flex-shrink: 0; } }

🌆 방콕 여행

상품을 불러오는 중...
#bangkok-section .emoji-menu { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 20px; } #bangkok-section .emoji-btn { display: inline-flex; align-items: center; justify-content: center; padding: 8px 16px; font-size: 14px; font-weight: 600; border-radius: 50px; border: 1px solid #e2e8f0; background: #ffffff; color: #334155; cursor: pointer; transition: all 0.2s ease; white-space: nowrap; outline: none; box-shadow: 0 2px 5px rgba(0,0,0,0.04); } #bangkok-section .emoji-btn:hover { background: #f8fafc; border-color: #cbd5e1; transform: translateY(-1px); } #bangkok-section .emoji-btn.active { background: #28a745 !important; color: #ffffff !important; border-color: #28a745 !important; box-shadow: 0 4px 12px rgba(40, 167, 69, 0.3) !important; } @media (max-width: 768px) { #bangkok-section .emoji-menu { flex-wrap: nowrap; overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none; padding: 4px 4px 12px 4px; gap: 6px; } #bangkok-section .emoji-menu::-webkit-scrollbar { display: none; } #bangkok-section .emoji-btn { padding: 7px 13px; font-size: 13px; flex-shrink: 0; } }

✈️ 태국 여행 정보

바로 써먹는 실전 태국여행 꿀팁 모음
태국 교통 앱으로 바가지 요금 끝! 💡 실전 꿀팁

태국 교통 앱으로 바가지 요금 끝!

방콕과 파타야를 방문하시는 여행자분들이 가장 먼저 부딪히는 고민 중 하나는 바로 택시 바가지 요금입니다.  친절한 미소 뒤에 숨은 흥정의 부담은 초보 여행자에게 큰 스트레스가 될 수 있습니다. 하지만 2025년 현재, 스마트폰 하나로 이 모든 걱정은 사라집니다.  현지인과 여행자 모두에게 사랑받고 가장 저렴하게 이용할 수 있는 교통 앱, 볼트(Bolt)가 바로 그 해결사입니다. 태국 택시 앱의 원조인 그랩(Grab)은 음식 배달, […]

공항 리무진버스타고 파타야까지 이동 전략 가이드 💡 실전 꿀팁

공항 리무진버스타고 파타야까지 이동 전략 가이드

방콕 수완나품 공항에 처음 내리셨던 기억은 늘 같은 장면으로 되살아날 것입니다.  공항 자동문이 열리자마자 달라붙는 뜨거운 열기와 습기, 어디서 나는지도 모를 묘한 냄새, 그리고 “택시! 택시!” 외치며 양옆에서 팔을 잡아끌던 기사분들의 목소리가 정신을 흔듭니다. 아무런 정보 없이 허둥대다가 눈앞에 보이는 차량을 잡아타는 순간 이미 바가지를 쓰기 시작했다는 것을 뒤늦게 깨닫곤 하셨을 겁니다.  특히 파타야까지 바로 […]

수완나품 공항 바트 환전 팁 💡 실전 꿀팁

수완나품 공항 바트 환전 팁

방콕 수완나품 공항에 발이 닿는 순간 특유의 묘한 냄새가 훅 들어오고, 문이 열리자마자 얼굴을 후려치는 열기와 습기가 “아, 드디어 태국이다”라는 현실감을 제대로 안겨주지만, 이 감성도 잠시뿐 금세 여행자분들의 첫 미션이 눈앞에 등장합니다.  바로 태국 바트라는 총알을 어떻게 장전하느냐의 문제입니다. 처음 태국에 오시는 분들은 여기서부터 갈팡질팡하며 환율 함정에 걸려 소중한 돈을 뿌리듯 낭비하기 시작하시지만, 이 글을 […]

태국 계좌로 바트를 최저 환율로 보내는 법 💡 실전 꿀팁

태국 계좌로 바트를 최저 환율로 보내는 법

💰 1. 은행 수수료의 함정 vs. 핀테크의 실시간 경쟁력 공항 환전소와 은행의 환율 우대 사이에서 시간을 낭비하던 시대는 이미 끝났습니다. 2025년 현재, 가장 저렴하고 빠르며 안전하게 태국 바트(THB)를 확보하는 방법은 명확합니다. 복잡한 은행 절차를 우회하고, 실시간 시장 환율을 적용받는 해외 송금 전문 앱을 활용하는 것이 핵심입니다. 특히 크로스(Cross), 센트비, 한패스와 같은 핀테크 서비스는 태국 바트 […]

.pattaya-map-widget { background: #ffffff; border-radius: 16px; box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08); overflow: hidden; margin: 0 0 30px 0; transition: all 0.3s ease; border: 1px solid #e2e8f0; } .pattaya-map-widget:hover { box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12); } .map-header { background: linear-gradient(135deg, #0f172a, #1e293b); color: white; padding: 16px 20px; font-size: 16px; font-weight: 700; cursor: pointer; display: flex; justify-content: space-between; align-items: center; transition: all 0.3s ease; } .map-header:hover { background: linear-gradient(135deg, #1e293b, #334155); } .map-header:active { transform: translateY(1px); } .map-toggle-icon { font-size: 14px; transition: transform 0.4s ease; background: rgba(255, 255, 255, 0.15); width: 28px; height: 28px; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: #fbbf24; } .map-toggle-icon.open { transform: rotate(180deg); } .map-content { overflow: hidden; transition: max-height 0.5s cubic-bezier(0.4, 0, 0.2, 1); max-height: 0; } .map-content.open { max-height: 2000px; } .map-guide-text { font-size: 14px; color: #475569; line-height: 1.7; margin: 20px 20px 15px 20px; padding: 16px 18px; background: #f8fafc; border-radius: 10px; border-left: 4px solid #fbbf24; } .map-guide-text p { margin: 0 0 6px 0; } .map-guide-text p:last-child { margin-bottom: 0; } .tip-highlight { color: #fbbf24; font-weight: 700; } .map-iframe-wrap { margin: 0 20px 20px 20px; border-radius: 10px; overflow: hidden; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08); border: 1px solid #e2e8f0; } .map-iframe-wrap iframe { width: 100%; height: 450px; border: none; display: block; } @media (max-width: 768px) { .pattaya-map-widget { margin: 0 10px 25px 10px; border-radius: 12px; } .map-header { padding: 14px 16px; font-size: 15px; } .map-content.open { max-height: 2000px; } .map-guide-text { margin: 16px 16px 12px 16px; font-size: 13px; padding: 12px 14px; } .map-iframe-wrap { margin: 0 16px 16px 16px; } .map-iframe-wrap iframe { height: 380px; } } @media (max-width: 480px) { .map-header { font-size: 14px; padding: 12px 14px; } .map-iframe-wrap iframe { height: 300px; } }
🍜 파타야 맛집 지도 (펼치기) ▼

🌟 여행자 맞춤 추천 꿀팁!

로컬이 인정한 씨푸드, 뷰 맛집, 가성비 맛집, 퓨전 요리까지! 지도에서 핀을 클릭하면 상세 정보와 특별 팁을 확인할 수 있어요.

document.addEventListener('DOMContentLoaded', function() { const toggleHeader = document.getElementById('pattaya-map-toggle'); const content = document.getElementById('pattaya-map-content'); const icon = document.getElementById('pattaya-map-toggle-icon'); if (toggleHeader && content) { toggleHeader.addEventListener('click', function() { const isOpen = content.classList.contains('open'); content.classList.toggle('open'); icon.classList.toggle('open'); }); } });
쇼핑 카트

☑️ 포함사항

❎ 불포함사항