<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>무료운세 &#8211; Inside korea</title>
	<atom:link href="https://infomimi.com/tag/%eb%ac%b4%eb%a3%8c%ec%9a%b4%ec%84%b8/feed/" rel="self" type="application/rss+xml" />
	<link>https://infomimi.com</link>
	<description>Inside korea</description>
	<lastBuildDate>Mon, 14 Sep 2026 13:07:09 +0000</lastBuildDate>
	<language>ko-KR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://infomimi.com/wp-content/uploads/2026/07/cropped-제목을-입력해주세요_-001-150x150.png</url>
	<title>무료운세 &#8211; Inside korea</title>
	<link>https://infomimi.com</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">256378395</site>	<item>
		<title>2027년 무료 운세 서비스 MBTI 퍼스널 운세</title>
		<link>https://infomimi.com/2027%eb%85%84-%eb%ac%b4%eb%a3%8c-%ec%9a%b4%ec%84%b8-%ec%84%9c%eb%b9%84%ec%8a%a4-mbti-%ed%8d%bc%ec%8a%a4%eb%84%90-%ec%9a%b4%ec%84%b8/</link>
		
		<dc:creator><![CDATA[MIMI]]></dc:creator>
		<pubDate>Thu, 13 Aug 2026 14:05:45 +0000</pubDate>
				<category><![CDATA[생활정보]]></category>
		<category><![CDATA[mbti운세]]></category>
		<category><![CDATA[무료운세]]></category>
		<guid isPermaLink="false">https://infomimi.com/?p=1077</guid>

					<description><![CDATA[✨ 2027년 무료 운세 서비스 MBTI 퍼스널 운세 🔮 나만의 성향과 동양 사주의 만남 타고난 생년월일·생시(사주/오행)와 내가 가진 MBTI 성향을 결합하여, 오늘 하루의 흐름부터 2027년 한 해의 전체적인 운세 흐름까지 정밀하게 분석해 드립니다. 💡 이런 분들께 추천해요! 오늘 나에게 필요한 행운의 요소와 주의할 점이 궁금하신 분 MBTI 성향에 맞는 현실적인 행동 지침을 얻고 싶으신 분 ... <a title="2027년 무료 운세 서비스 MBTI 퍼스널 운세" class="read-more" href="https://infomimi.com/2027%eb%85%84-%eb%ac%b4%eb%a3%8c-%ec%9a%b4%ec%84%b8-%ec%84%9c%eb%b9%84%ec%8a%a4-mbti-%ed%8d%bc%ec%8a%a4%eb%84%90-%ec%9a%b4%ec%84%b8/" aria-label="2027년 무료 운세 서비스 MBTI 퍼스널 운세에 대해 더 자세히 알아보세요">더 읽기</a>]]></description>
										<content:encoded><![CDATA[
<!-- MBTI 퍼스널 운세 상단 소개 블록 -->
<div class="mbti-intro-container" style="max-width: 768px; margin: 0 auto 24px auto; padding: 24px; background: #ffffff; border-radius: 16px; box-shadow: 0 8px 20px rgba(15, 23, 42, 0.08); font-family: -apple-system, BlinkMacSystemFont, 'Apple SD Gothic Neo', 'Noto Sans KR', sans-serif; color: #111827; box-sizing: border-box;">
  <div style="display: inline-block; padding: 4px 12px; background: #eef2ff; color: #4f46e5; border-radius: 999px; font-size: 0.8rem; font-weight: 700; margin-bottom: 12px;">
    <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2728.png" alt="✨" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 2027년 무료 운세 서비스
  </div>
  <h2 style="font-size: 1.6rem; font-weight: 800; line-height: 1.3; margin-bottom: 12px; color: #111827;">
    MBTI 퍼스널 운세 <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f52e.png" alt="🔮" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <br><span style="color: #ffffff;">나만의 성향과 동양 사주의 만남</span>
  </h2>
  <p style="font-size: 0.95rem; line-height: 1.6; color: #4b5563; margin-bottom: 16px;">
    타고난 <strong>생년월일·생시(사주/오행)</strong>와 내가 가진 <strong>MBTI 성향</strong>을 결합하여, 오늘 하루의 흐름부터 2027년 한 해의 전체적인 운세 흐름까지 정밀하게 분석해 드립니다.
  </p>
  
  <div style="background: #f9fafb; border-left: 4px solid #6366f1; padding: 12px 16px; border-radius: 0 8px 8px 0; font-size: 0.88rem; color: #374151; line-height: 1.5;">
    <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4a1.png" alt="💡" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>이런 분들께 추천해요!</strong>
    <ul style="margin-top: 6px; margin-left: 18px; padding: 0; list-style-type: disc;">
      <li>오늘 나에게 필요한 행운의 요소와 주의할 점이 궁금하신 분</li>
      <li>MBTI 성향에 맞는 현실적인 행동 지침을 얻고 싶으신 분</li>
      <li>올해의 총운과 월별 핵심 흐름을 한눈에 파악하고 싶으신 분</li>
    </ul>
  </div>
</div>



<div class="wp-block-uagb-advanced-heading uagb-block-8093fd51"><h2 class="uagb-heading-text">Free MBTI Horoscope</h2></div>


<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <meta
      name="viewport"
      content="width=device-width,initial-scale=1,maximum-scale=1"
    />
    <title>MBTI 퍼스널 운세</title>
    <style>
      /* 워드프레스 테마 충돌 방지를 위한 스타일 리셋 & 스코프 적용 */
      .mbti-fortune-app {
        max-width: 768px;
        margin: 0 auto;
        padding: 16px;
        font-family: -apple-system, BlinkMacSystemFont, 'Apple SD Gothic Neo',
          'Noto Sans KR', 'Segoe UI', Roboto, sans-serif;
        color: #111827;
        background: #f4f4f7;
        border-radius: 16px;
        box-sizing: border-box;
      }

      .mbti-fortune-app * {
        box-sizing: border-box;
        margin: 0;
        padding: 0;
      }

      /* 언어 선택 바 스타일 */
      .mbti-fortune-app .lang-bar {
        display: flex;
        justify-content: flex-end;
        gap: 6px;
        margin-bottom: 12px;
      }

      .mbti-fortune-app .lang-btn {
        padding: 6px 10px;
        border-radius: 6px;
        border: 1px solid #d1d5db;
        background: #fff;
        font-size: 0.75rem;
        font-weight: 600;
        color: #4b5563;
        cursor: pointer;
        transition: all 0.2s ease;
      }

      .mbti-fortune-app .lang-btn.active {
        border-color: #6366f1;
        background: #eef2ff;
        color: #4f46e5;
      }

      .mbti-fortune-app .card {
        background: #ffffff;
        border-radius: 16px;
        box-shadow: 0 8px 20px rgba(15, 23, 42, 0.08);
        padding: 20px;
        margin-bottom: 16px;
      }

      .mbti-fortune-app .card.fade-in {
        animation: mbti-fade-in 0.6s ease-out forwards;
      }

      @keyframes mbti-fade-in {
        from {
          opacity: 0;
          transform: translateY(12px);
        }
        to {
          opacity: 1;
          transform: translateY(0);
        }
      }

      .mbti-fortune-app .title {
        font-size: 1.4rem;
        font-weight: 700;
        margin-bottom: 4px;
        color: #111827;
      }

      .mbti-fortune-app .subtitle {
        font-size: 0.9rem;
        color: #6b7280;
        margin-bottom: 16px;
        line-height: 1.5;
      }

      .mbti-fortune-app .form-row {
        display: flex;
        flex-wrap: wrap;
        gap: 12px;
        margin-bottom: 12px;
      }

      .mbti-fortune-app .field {
        flex: 1;
        min-width: 140px;
      }

      .mbti-fortune-app label {
        display: block;
        font-size: 0.8rem;
        font-weight: 600;
        color: #4b5563;
        margin-bottom: 6px;
      }

      .mbti-fortune-app input,
      .mbti-fortune-app select {
        width: 100%;
        padding: 10px 12px;
        border-radius: 8px;
        border: 1px solid #d1d5db;
        font-size: 0.9rem;
        background-color: #fff;
        color: #111827;
        height: 42px;
      }

      .mbti-fortune-app input:focus,
      .mbti-fortune-app select:focus {
        outline: none;
        border-color: #6366f1;
        box-shadow: 0 0 0 2px rgba(129, 140, 248, 0.25);
      }

      .mbti-fortune-app .gender-group {
        display: flex;
        gap: 8px;
        height: 42px;
      }

      .mbti-fortune-app .gender-btn {
        flex: 1;
        display: flex;
        align-items: center;
        justify-content: center;
        border-radius: 8px;
        border: 1px solid #d1d5db;
        background: #f9fafb;
        font-size: 0.85rem;
        color: #4b5563;
        cursor: pointer;
        transition: all 0.2s ease;
      }

      .mbti-fortune-app .gender-btn.active {
        border-color: #6366f1;
        background: #eef2ff;
        color: #4f46e5;
        font-weight: 600;
      }

      .mbti-fortune-app .btn-primary {
        width: 100%;
        margin-top: 8px;
        padding: 12px 0;
        border-radius: 12px;
        border: none;
        font-size: 1rem;
        font-weight: 600;
        background: linear-gradient(135deg, #6366f1, #3b82f6);
        color: #fff;
        cursor: pointer;
        transition: opacity 0.2s ease;
      }

      .mbti-fortune-app .btn-primary:hover {
        opacity: 0.95;
      }

      .mbti-fortune-app .btn-primary:disabled {
        opacity: 0.6;
        cursor: default;
      }

      .mbti-fortune-app .badge {
        display: inline-flex;
        align-items: center;
        padding: 4px 8px;
        border-radius: 999px;
        font-size: 0.75rem;
        background: #eef2ff;
        color: #4f46e5;
        margin-right: 4px;
        font-weight: 600;
      }

      .mbti-fortune-app .score {
        font-size: 1.8rem;
        font-weight: 700;
        color: #4f46e5;
        margin-right: 8px;
      }

      .mbti-fortune-app .score-label {
        font-size: 0.95rem;
        color: #4b5563;
      }

      .mbti-fortune-app .section-title {
        font-size: 1rem;
        font-weight: 600;
        margin-bottom: 8px;
        color: #111827;
      }

      .mbti-fortune-app .section-text {
        font-size: 0.9rem;
        color: #4b5563;
        line-height: 1.6;
        margin-bottom: 10px;
      }

      .mbti-fortune-app .chips {
        display: flex;
        flex-wrap: wrap;
        gap: 6px;
        margin-top: 6px;
      }

      .mbti-fortune-app .chip {
        font-size: 0.75rem;
        padding: 4px 10px;
        border-radius: 999px;
        background: #f3f4f6;
        color: #4b5563;
        font-weight: 500;
      }

      .mbti-fortune-app .month-grid {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 8px;
      }

      @media (min-width: 640px) {
        .mbti-fortune-app .month-grid {
          grid-template-columns: repeat(3, minmax(0, 1fr));
        }
      }

      .mbti-fortune-app .month-card {
        border-radius: 12px;
        background: #f9fafb;
        padding: 12px;
        border: 1px solid #f0f0f4;
      }

      .mbti-fortune-app .month-title {
        font-size: 0.85rem;
        font-weight: 600;
        margin-bottom: 4px;
        color: #4f46e5;
      }

      .mbti-fortune-app .month-text {
        font-size: 0.8rem;
        color: #4b5563;
        line-height: 1.5;
      }

      .mbti-fortune-app .axes {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 8px;
        margin-top: 10px;
      }

      .mbti-fortune-app .axis-item {
        font-size: 0.8rem;
        color: #4b5563;
        padding: 8px 10px;
        border-radius: 8px;
        background: #f9fafb;
        border: 1px solid #f0f0f4;
      }

      .mbti-fortune-app .axis-label {
        font-weight: 600;
        margin-right: 4px;
        color: #111827;
      }

      .mbti-fortune-app .mbti-lines {
        margin-top: 8px;
      }

      .mbti-fortune-app .mbti-line {
        font-size: 0.85rem;
        color: #4b5563;
        line-height: 1.6;
        margin-bottom: 6px;
      }

      .mbti-fortune-app .lucky-list {
        margin-top: 8px;
        font-size: 0.85rem;
        color: #4b5563;
      }

      .mbti-fortune-app .lucky-item {
        margin-bottom: 4px;
      }

      .mbti-fortune-app .loading-overlay {
        position: fixed;
        inset: 0;
        background: rgba(15, 23, 42, 0.6);
        display: none;
        align-items: center;
        justify-content: center;
        z-index: 99999;
      }

      .mbti-fortune-app .loading-card {
        background: #111827;
        color: #e5e7eb;
        padding: 24px;
        border-radius: 16px;
        width: 90%;
        max-width: 360px;
        text-align: center;
        box-shadow: 0 10px 25px rgba(0,0,0,0.2);
      }

      .mbti-fortune-app .loading-title {
        font-size: 1rem;
        font-weight: 600;
        margin-bottom: 8px;
        color: #fff;
      }

      .mbti-fortune-app .loading-text {
        font-size: 0.85rem;
        color: #9ca3af;
        min-height: 2.4em;
      }

      .mbti-fortune-app .dots {
        margin-top: 12px;
        display: flex;
        justify-content: center;
        gap: 6px;
      }

      .mbti-fortune-app .dot {
        width: 8px;
        height: 8px;
        border-radius: 999px;
        background: #6366f1;
        animation: mbti-blink 1.2s infinite ease-in-out;
      }

      .mbti-fortune-app .dot:nth-child(2) {
        animation-delay: 0.2s;
      }

      .mbti-fortune-app .dot:nth-child(3) {
        animation-delay: 0.4s;
      }

      @keyframes mbti-blink {
        0%, 80%, 100% {
          opacity: 0.2;
          transform: translateY(0);
        }
        40% {
          opacity: 1;
          transform: translateY(-3px);
        }
      }

      .mbti-fortune-app .hidden {
        display: none !important;
      }

      .mbti-fortune-app .time-group {
        display: flex;
        gap: 8px;
      }

      .mbti-fortune-app .time-group select {
        flex: 1;
      }
    </style>
  </head>
  <body>
    <div class="mbti-fortune-app" id="mbtiFortuneApp">
      <!-- 언어 선택 바 -->
      <div class="lang-bar">
        <button type="button" class="lang-btn active" data-lang="ko">KO</button>
        <button type="button" class="lang-btn" data-lang="en">EN</button>
        <button type="button" class="lang-btn" data-lang="ja">JA</button>
        <button type="button" class="lang-btn" data-lang="es">ES</button>
      </div>

      <!-- 입력 폼 카드 -->
      <div class="card">
        <div class="title" data-i18n="mainTitle">MBTI 퍼스널 운세 <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f52e.png" alt="🔮" class="wp-smiley" style="height: 1em; max-height: 1em;" /></div>
        <div class="subtitle" data-i18n="mainSubtitle">
          생년월일·태어난 시간·성별·MBTI 성향을 바탕으로<br />오늘과 올해의 흐름을
          간단하게 정리해 드립니다. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2728.png" alt="✨" class="wp-smiley" style="height: 1em; max-height: 1em;" />
        </div>

        <div class="form-row">
          <div class="field">
            <label for="birthDate" data-i18n="labelBirthDate">생년월일</label>
            <input type="date" id="birthDate" data-date-placeholder="YYYY-MM-DD" />
          </div>
          <div class="field">
            <label data-i18n="labelBirthTime">태어난 시간 (모르면 선택 안함)</label>
            <div class="time-group">
              <select id="birthHour">
                <option value="" data-i18n="optUnknownTime">모름</option>
              </select>
              <select id="birthMinute"></select>
            </div>
          </div>
        </div>

        <div class="form-row">
          <div class="field">
            <label data-i18n="labelGender">성별</label>
            <div class="gender-group">
              <button
                type="button"
                class="gender-btn active"
                data-gender="M"
                id="genderM"
                data-i18n="genderMale"
              >
                남성
              </button>
              <button
                type="button"
                class="gender-btn"
                data-gender="F"
                id="genderF"
                data-i18n="genderFemale"
              >
                여성
              </button>
            </div>
          </div>
          <div class="field">
            <label for="mbti" data-i18n="labelMbti">MBTI (알고 계시면 선택, 모르시면 모름)</label>
            <select id="mbti">
              <option value="" data-i18n="optUnknownMbti">모름</option>
              <option value="ISTJ">ISTJ</option>
              <option value="ISFJ">ISFJ</option>
              <option value="INFJ">INFJ</option>
              <option value="INTJ">INTJ</option>
              <option value="ISTP">ISTP</option>
              <option value="ISFP">ISFP</option>
              <option value="INFP">INFP</option>
              <option value="INTP">INTP</option>
              <option value="ESTP">ESTP</option>
              <option value="ESFP">ESFP</option>
              <option value="ENFP">ENFP</option>
              <option value="ENTP">ENTP</option>
              <option value="ESTJ">ESTJ</option>
              <option value="ESFJ">ESFJ</option>
              <option value="ENFJ">ENFJ</option>
              <option value="ENTJ">ENTJ</option>
            </select>
          </div>
        </div>

        <button class="btn-primary" id="btnGetFortune" data-i18n="btnSubmit">
          오늘 & 1년 운세 보기
        </button>
      </div>

      <!-- 결과 카드: 오늘의 운세 -->
      <div class="card hidden" id="resultCard">
        <div style="display: flex; justify-content: space-between; gap: 8px; flex-wrap: wrap;">
          <div>
            <div class="section-title" data-i18n="resTodayTitle">오늘의 운세 <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f50d.png" alt="🔍" class="wp-smiley" style="height: 1em; max-height: 1em;" /></div>
            <div style="display: flex; align-items: baseline; gap: 6px">
              <span class="score" id="scoreText">--점</span>
              <span class="score-label" id="scoreLabel"></span>
            </div>
            <div class="chips" id="keywordChips"></div>
          </div>
          <div style="text-align: right; font-size: 0.8rem; color: #6b7280; margin-top: 4px;">
            <div id="annualTypeText"></div>
            <div id="elementText"></div>
          </div>
        </div>

        <hr style="border: none; border-top: 1px solid #e5e7eb; margin: 12px 0" />

        <div>
          <div class="section-title" data-i18n="resCategoryTitle">분야별 운세 <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4cc.png" alt="📌" class="wp-smiley" style="height: 1em; max-height: 1em;" /></div>
          <div id="sectionMoney" class="section-text"></div>
          <div id="sectionLove" class="section-text"></div>
          <div id="sectionWork" class="section-text"></div>
          <div id="sectionHealth" class="section-text"></div>
        </div>
      </div>

      <!-- 결과 카드: 올해 운세 -->
      <div class="card hidden" id="yearCard">
        <div class="section-title" data-i18n="resYearTitle">올해 운세(흐름 요약) <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4c5.png" alt="📅" class="wp-smiley" style="height: 1em; max-height: 1em;" /></div>
        <div class="section-text" id="yearSummary"></div>

        <div class="axes" id="axesBox"></div>

        <div style="margin-top: 14px">
          <div class="section-title" data-i18n="resMonthTitle">월별 한 줄 운세</div>
          <div class="month-grid" id="monthGrid"></div>
        </div>
      </div>

      <!-- 결과 카드: MBTI 맞춤 해석 -->
      <div class="card hidden" id="mbtiCard">
        <div class="section-title">
          <span id="mbtiTitle">MBTI 맞춤 해석 <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9ed.png" alt="🧭" class="wp-smiley" style="height: 1em; max-height: 1em;" /></span>
        </div>
        <div class="chips" id="mbtiChipBox"></div>
        <div class="mbti-lines" id="mbtiLines"></div>
      </div>

      <!-- 결과 카드: 행운 요소 -->
      <div class="card hidden" id="luckyCard">
        <div class="section-title" data-i18n="resLuckyTitle">오늘의 행운 요소 <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f340.png" alt="🍀" class="wp-smiley" style="height: 1em; max-height: 1em;" /></div>
        <div class="lucky-list" id="luckyList"></div>
      </div>

      <!-- 로딩 오버레이 -->
      <div class="loading-overlay" id="loadingOverlay">
        <div class="loading-card">
          <div class="loading-title" data-i18n="loadingTitle">데이터 분석 중입니다 <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f50d.png" alt="🔍" class="wp-smiley" style="height: 1em; max-height: 1em;" /></div>
          <div class="loading-text" id="loadingText">
            생년월일과 태어난 시간을 분석하고 있어요…
          </div>
          <div class="dots">
            <div class="dot"></div>
            <div class="dot"></div>
            <div class="dot"></div>
          </div>
        </div>
      </div>
    </div>

    <script>
      (function () {
        var currentLang = 'ko';

        /* =================================================================
           통합 다국어 사전 설정 (날짜 포맷 안내 포함)
           ================================================================= */
        var dict = {
          ko: {
            mainTitle: "MBTI 퍼스널 운세 &#x1f52e;",
            mainSubtitle: "생년월일·태어난 시간·성별·MBTI 성향을 바탕으로<br />오늘과 올해의 흐름을 간단하게 정리해 드립니다. &#x2728;",
            labelBirthDate: "생년월일 (형식: 연도-월-일)",
            labelBirthTime: "태어난 시간 (모르면 선택 안함)",
            optUnknownTime: "모름",
            labelGender: "성별",
            genderMale: "남성",
            genderFemale: "여성",
            labelMbti: "MBTI (알고 계시면 선택, 모르시면 모름)",
            optUnknownMbti: "모름",
            btnSubmit: "오늘 & 1년 운세 보기",
            resTodayTitle: "오늘의 운세 &#x1f50d;",
            resCategoryTitle: "분야별 운세 &#x1f4cc;",
            resYearTitle: "올해 운세(흐름 요약) &#x1f4c5;",
            resMonthTitle: "월별 한 줄 운세",
            resLuckyTitle: "오늘의 행운 요소 &#x1f340;",
            loadingTitle: "데이터 분석 중입니다 &#x1f50d;",
            minuteSuffix: "분",
            scoreUnit: "점 / 100점",
            annualTypePrefix: "올해 타입: ",
            strongElementPrefix: "강한 기운: ",
            weakElementPrefix: " / 아쉬운 기운: ",
            datePlaceholder: "YYYY-MM-DD",
            
            loadingSteps: [
              "생년월일과 태어난 시간을 분석하고 있어요…",
              "사주의 흐름과 오행 균형을 계산하는 중입니다…",
              "MBTI 성향을 반영해서 해석을 조정하고 있어요…",
              "오늘과 올해의 흐름을 정리하는 중입니다…"
            ],
            scoreLabels: {
              excellent: "&#x2728; 움직인 만큼 결과가 따라오는 날입니다.",
              good: "&#x1f642; 흐름이 안정적인 편입니다. 작은 시도에 잘 맞는 날입니다.",
              normal: "&#x1f9fa; 큰 도약보다는 관리와 정리에 더 적합한 날입니다.",
              caution: "&#x26a0; 큰 결정보다는 관찰과 휴식이 필요한 날입니다."
            },
            keywords: {
              excellent: ["기회", "실행", "확장"],
              good: ["안정", "정리", "균형"],
              normal: ["관리", "점검", "휴식"],
              caution: ["주의", "관찰", "보호"]
            },
            categories: {
              money: { title: "금전운", text: "&#x1f4b0; 수입과 지출의 흐름이 비교적 명확하게 보이는 날입니다. 계획을 점검해 보세요." },
              love: { title: "연애·대인관계", text: "&#x1f91d; 관계의 흐름이 전반적으로 부드럽습니다. 가벼운 안부 인사가 좋습니다." },
              work: { title: "직업·사업운", text: "&#x1f4c8; 중요도 높은 일부터 순서를 정해 작게라도 실행을 시작해 보세요." },
              health: { title: "건강·컨디션", text: "&#x1f4aa; 컨디션이 비교적 안정적인 편입니다. 가벼운 산책을 추천합니다." }
            },
            annualTypes: {
              growth: "성장형",
              exec: "실행형",
              adjust: "조정형",
              rest: "휴식형"
            },
            elements: {
              wood: "목(木)",
              fire: "화(火)",
              earth: "토(土)",
              metal: "금(金)",
              water: "수(水)"
            },
            yearSummaryText: "올해는 새로운 사람과 기회가 연결되며 작은 시도에도 성과가 이어지는 흐름입니다. 완벽보다는 꾸준함을 유지해 보세요.",
            axisLabels: { chance: '기회', change: '변화', execution: '실행력', social: '대외운' },
            axisValues: { strong: '강함', normal: '보통', weak: '약함' },
            monthTextDefault: "기초 정리와 새로운 연결에 집중하기 좋은 달입니다.",
            mbtiCustomTitle: " 맞춤 해석 &#x1f9ed;",
            mbtiLines: [
              "논리와 전략을 기반으로 바라보면 불필요한 소모를 줄일 수 있습니다.",
              "올해는 사람과 정보의 연결 속에서 많은 기회가 열리는 시기입니다."
            ],
            luckyColors: ["네이비", "베이지", "딥그린", "와인"],
            luckyItemsList: ["이어폰", "메모장", "검은 펜", "따뜻한 음료"],
            luckyActions: ["연락하기", "정리하기", "산책하기", "기록하기"],
            luckyTimes: ["오전 9~11시", "오후 2~5시", "저녁 7~9시", "오후 1~3시"],
            luckyHint: "TIP: 정돈된 공간이 집중을 도와줍니다.",
            luckyLabels: { color: "행운 색", number: "행운 숫자", time: "행운 시간", item: "행운 아이템", action: "행운 행동" }
          },

          en: {
            mainTitle: "MBTI Personal Fortune &#x1f52e;",
            mainSubtitle: "Get a quick summary of today and this year's flow<br />based on your birth date, time, gender, and MBTI. &#x2728;",
            labelBirthDate: "Birth Date (YYYY-MM-DD)",
            labelBirthTime: "Birth Time (Optional)",
            optUnknownTime: "Unknown",
            labelGender: "Gender",
            genderMale: "Male",
            genderFemale: "Female",
            labelMbti: "MBTI (Select if known)",
            optUnknownMbti: "Unknown",
            btnSubmit: "View Today & Yearly Fortune",
            resTodayTitle: "Today's Fortune &#x1f50d;",
            resCategoryTitle: "Category Fortunes &#x1f4cc;",
            resYearTitle: "Yearly Flow Summary &#x1f4c5;",
            resMonthTitle: "Monthly One-line Fortunes",
            resLuckyTitle: "Today's Lucky Elements &#x1f340;",
            loadingTitle: "Analyzing Data &#x1f50d;",
            minuteSuffix: "m",
            scoreUnit: "pts / 100pts",
            annualTypePrefix: "Yearly Type: ",
            strongElementPrefix: "Strong Element: ",
            weakElementPrefix: " / Weak Element: ",
            datePlaceholder: "YYYY-MM-DD",
            
            loadingSteps: [
              "Analyzing birth date and time...",
              "Calculating elemental balance...",
              "Adjusting interpretation with MBTI...",
              "Summarizing today and yearly flow..."
            ],
            scoreLabels: {
              excellent: "&#x2728; Results follow your actions today.",
              good: "&#x1f642; A stable flow. Great for small new trials.",
              normal: "&#x1f9fa; Better suited for management and organization than big leaps.",
              caution: "&#x26a0; Observation and rest are needed rather than major decisions."
            },
            keywords: {
              excellent: ["Opportunity", "Action", "Expansion"],
              good: ["Stability", "Order", "Balance"],
              normal: ["Management", "Check", "Rest"],
              caution: ["Caution", "Observation", "Protection"]
            },
            categories: {
              money: { title: "Finance", text: "&#x1f4b0; Cash flow is clear today. Check your budget and plans." },
              love: { title: "Relationships", text: "&#x1f91d; Relationships flow smoothly. A light greeting works wonders." },
              work: { title: "Career", text: "&#x1f4c8; Prioritize important tasks and start taking small steps." },
              health: { title: "Health", text: "&#x1f4aa; Condition is relatively stable. A light walk is recommended." }
            },
            annualTypes: {
              growth: "Growth Type",
              exec: "Execution Type",
              adjust: "Adjustment Type",
              rest: "Rest Type"
            },
            elements: {
              wood: "Wood",
              fire: "Fire",
              earth: "Earth",
              metal: "Metal",
              water: "Water"
            },
            yearSummaryText: "This year connects you with new people and opportunities. Consistency brings better results than perfection.",
            axisLabels: { chance: 'Chance', change: 'Change', execution: 'Execution', social: 'Social' },
            axisValues: { strong: 'Strong', normal: 'Normal', weak: 'Weak' },
            monthTextDefault: "Great month for organizing basics and making new connections.",
            mbtiCustomTitle: " Custom Interpretation &#x1f9ed;",
            mbtiLines: [
              "Looking at situations through logic and strategy reduces unnecessary friction.",
              "This year opens many opportunities through connections with people and information."
            ],
            luckyColors: ["Navy", "Beige", "Deep Green", "Wine"],
            luckyItemsList: ["Earphones", "Notepad", "Black Pen", "Warm Drink"],
            luckyActions: ["Reach out", "Organize", "Take a walk", "Take notes"],
            luckyTimes: ["9-11 AM", "2-5 PM", "7-9 PM", "1-3 PM"],
            luckyHint: "TIP: An organized space helps concentration.",
            luckyLabels: { color: "Lucky Color", number: "Lucky Number", time: "Lucky Time", item: "Lucky Item", action: "Lucky Action" }
          },

          ja: {
            mainTitle: "MBTI パーソナル占い &#x1f52e;",
            mainSubtitle: "生年月日・出生時間・性別・MBTIに基づいて<br />今日と今年の運勢の流れを簡単にお伝えします。 &#x2728;",
            labelBirthDate: "生年月日 (年-月-日)",
            labelBirthTime: "出生時間 (不明な場合は選択なし)",
            optUnknownTime: "不明",
            labelGender: "性別",
            genderMale: "男性",
            genderFemale: "女性",
            labelMbti: "MBTI (分かる場合のみ選択)",
            optUnknownMbti: "不明",
            btnSubmit: "今日と1年の運勢を見る",
            resTodayTitle: "今日の運勢 &#x1f50d;",
            resCategoryTitle: "分野別運勢 &#x1f4cc;",
            resYearTitle: "今年の運勢（流れの要約） &#x1f4c5;",
            resMonthTitle: "月別一言占い",
            resLuckyTitle: "今日のラッキー要素 &#x1f340;",
            loadingTitle: "データ分析中 &#x1f50d;",
            minuteSuffix: "分",
            scoreUnit: "点 / 100点",
            annualTypePrefix: "今年のタイプ: ",
            strongElementPrefix: "強い気運: ",
            weakElementPrefix: " / 弱い気運: ",
            datePlaceholder: "YYYY-MM-DD",
            
            loadingSteps: [
              "生年月日と出生時間を分析しています…",
              "五行のバランスを計算しています…",
              "MBTIの傾向を反映して調整しています…",
              "今日と今年の流れをまとめています…"
            ],
            scoreLabels: {
              excellent: "&#x2728; 動いた分だけ結果がついてくる日です。",
              good: "&#x1f642; 流れが安定しています。小さな試みに適した日です。",
              normal: "&#x1f9fa; 大きな飛躍より、管理や整理に向いている日です。",
              caution: "&#x26a0; 大きな決断より、観察と休息が必要な日です。"
            },
            keywords: {
              excellent: ["機会", "実行", "拡張"],
              good: ["安定", "整理", "バランス"],
              normal: ["管理", "点検", "休息"],
              caution: ["注意", "観察", "保護"]
            },
            categories: {
              money: { title: "金運", text: "&#x1f4b0; 収入と支出の流れが明確になる日です。計画を点検してみましょう。" },
              love: { title: "対人・恋愛運", text: "&#x1f91d; 関係の流れが全般的にスムーズです。軽い挨拶から始めましょう。" },
              work: { title: "仕事・事業運", text: "&#x1f4c8; 重要な仕事から優先順位をつけて小さなことから実行してみましょう。" },
              health: { title: "健康運", text: "&#x1f4aa; コンディションは比較的安定しています。軽い散歩がおすすめです。" }
            },
            annualTypes: {
              growth: "成長型",
              exec: "実行型",
              adjust: "調整型",
              rest: "休息型"
            },
            elements: {
              wood: "木(木)",
              fire: "火(火)",
              earth: "土(土)",
              metal: "金(金)",
              water: "水(水)"
            },
            yearSummaryText: "今年は新しい人や機会につながり、小さな試みにも成果が出やすい流れです。完璧さより継続を意識しましょう。",
            axisLabels: { chance: '機会', change: '変化', execution: '実行力', social: '対外運' },
            axisValues: { strong: '強い', normal: '普通', weak: '控えめ' },
            monthTextDefault: "基礎の整理と新しいつながりに集中するのに良い月です。",
            mbtiCustomTitle: " 別カスタム解釈 &#x1f9ed;",
            mbtiLines: [
              "論理と戦略に基づき見渡すことで、不要な消耗を減らすことができます。",
              "今年は人と情報のつながりの中で多くの機会が開かれる時期です。"
            ],
            luckyColors: ["ネイビー", "ベージュ", "ディープグリーン", "ワインカラー"],
            luckyItemsList: ["イヤホン", "メモ帳", "黒ペン", "温かい飲み物"],
            luckyActions: ["連絡する", "整理する", "散歩する", "記録する"],
            luckyTimes: ["午前9〜11時", "午後2〜5時", "夜7〜9時", "午後1〜3時"],
            luckyHint: "TIP: 整理整頓された空間が集中力を高めます。",
            luckyLabels: { color: "ラッキーカラー", number: "ラッキーナンバー", time: "ラッキータイム", item: "ラッキーアイテム", action: "ラッキーアクション" }
          },

          es: {
            mainTitle: "Horóscopo Personal MBTI &#x1f52e;",
            mainSubtitle: "Obtén un resumen rápido de tu flujo de hoy y de este año<br />según tu fecha de nacimiento, hora, género y MBTI. &#x2728;",
            labelBirthDate: "Fecha de Nacimiento (AAAA-MM-DD)",
            labelBirthTime: "Hora de Nacimiento (Opcional)",
            optUnknownTime: "Desconocida",
            labelGender: "Género",
            genderMale: "Masculino",
            genderFemale: "Femenino",
            labelMbti: "MBTI (Selecciona si lo sabes)",
            optUnknownMbti: "Desconocido",
            btnSubmit: "Ver Fortuna de Hoy y Anual",
            resTodayTitle: "Fortuna de Hoy &#x1f50d;",
            resCategoryTitle: "Fortunas por Categoría &#x1f4cc;",
            resYearTitle: "Resumen del Año &#x1f4c5;",
            resMonthTitle: "Fortunas Mensuales",
            resLuckyTitle: "Elementos de la Suerte &#x1f340;",
            loadingTitle: "Analizando Datos &#x1f50d;",
            minuteSuffix: "min",
            scoreUnit: "pts / 100pts",
            annualTypePrefix: "Tipo Anual: ",
            strongElementPrefix: "Elemento Fuerte: ",
            weakElementPrefix: " / Elemento Débil: ",
            datePlaceholder: "AAAA-MM-DD",
            
            loadingSteps: [
              "Analizando fecha y hora de nacimiento...",
              "Calculando el equilibrio elemental...",
              "Ajustando la interpretación con MBTI...",
              "Resumiendo el flujo de hoy y anual..."
            ],
            scoreLabels: {
              excellent: "&#x2728; Los resultados siguen a tus acciones hoy.",
              good: "&#x1f642; Un flujo estable. Ideal para pequeños intentos.",
              normal: "&#x1f9fa; Más adecuado para la organización que para grandes saltos.",
              caution: "&#x26a0; Se necesita observación y descanso en lugar de decisiones importantes."
            },
            keywords: {
              excellent: ["Oportunidad", "Acción", "Expansión"],
              good: ["Estabilidad", "Orden", "Equilibrio"],
              normal: ["Gestión", "Revisión", "Descanso"],
              caution: ["Precaución", "Observación", "Protección"]
            },
            categories: {
              money: { title: "Dinero", text: "&#x1f4b0; El flujo de efectivo es claro hoy. Revisa tu presupuesto y planes." },
              love: { title: "Relaciones", text: "&#x1f91d; Las relaciones fluyen sin problemas. Un saludo amistoso ayuda mucho." },
              work: { title: "Carrera", text: "&#x1f4c8; Prioriza tareas importantes y comienza con pequeños pasos." },
              health: { title: "Salud", text: "&#x1f4aa; Tu condición física es estable. Se recomienda un paseo ligero." }
            },
            annualTypes: {
              growth: "Tipo Crecimiento",
              exec: "Tipo Ejecución",
              adjust: "Tipo Ajuste",
              rest: "Tipo Descanso"
            },
            elements: {
              wood: "Madera",
              fire: "Fuego",
              earth: "Tierra",
              metal: "Metal",
              water: "Agua"
            },
            yearSummaryText: "Este año te conecta con nuevas personas y oportunidades. La constancia trae mejores resultados que la perfección.",
            axisLabels: { chance: 'Oportunidad', change: 'Cambio', execution: 'Ejecución', social: 'Social' },
            axisValues: { strong: 'Alto', normal: 'Normal', weak: 'Bajo' },
            monthTextDefault: "Gran mes para organizar lo básico y hacer nuevas conexiones.",
            mbtiCustomTitle: " Interpretación Personalizada &#x1f9ed;",
            mbtiLines: [
              "Analizar las situaciones mediante la lógica y la estrategia reduce la fricción innecesaria.",
              "Este año abre muchas oportunidades a través de conexiones con personas e información."
            ],
            luckyColors: ["Azul Marino", "Beige", "Verde Oscuro", "Vino"],
            luckyItemsList: ["Auriculares", "Bloc de notas", "Bolígrafo negro", "Bebida caliente"],
            luckyActions: ["Contactar", "Organizar", "Pasear", "Tomar notas"],
            luckyTimes: ["9-11 AM", "2-5 PM", "7-9 PM", "1-3 PM"],
            luckyHint: "TIP: Un espacio organizado ayuda a la concentración.",
            luckyLabels: { color: "Color de la Suerte", number: "Número de la Suerte", time: "Hora de la Suerte", item: "Objeto de la Suerte", action: "Acción de la Suerte" }
          }
        };

        function t(key) {
          return dict[currentLang][key] || dict['ko'][key] || key;
        }

        /* 24시간 및 10분 단위 옵션 동적 생성 */
        function populateTimeSelects() {
          var hourSelect = $('birthHour');
          var minuteSelect = $('birthMinute');
          
          var prevHour = hourSelect.value;
          var prevMinute = minuteSelect.value;

          hourSelect.innerHTML = '<option value="" data-i18n="optUnknownTime">' + t('optUnknownTime') + '</option>';
          for (var i = 0; i < 24; i++) {
            var h = String(i).padStart(2, '0');
            var opt = document.createElement('option');
            opt.value = h;
            opt.textContent = h + ':00';
            hourSelect.appendChild(opt);
          }
          hourSelect.value = prevHour;

          minuteSelect.innerHTML = '';
          var minutes = ['00', '10', '20', '30', '40', '50'];
          var suffix = t('minuteSuffix');
          minutes.forEach(function(m) {
            var opt = document.createElement('option');
            opt.value = m;
            opt.textContent = m + suffix;
            minuteSelect.appendChild(opt);
          });
          if (prevMinute) {
            minuteSelect.value = prevMinute;
          }
        }

        function updateTexts() {
          var els = document.querySelectorAll('[data-i18n]');
          els.forEach(function(el) {
            var key = el.getAttribute('data-i18n');
            if (dict[currentLang][key]) {
              el.innerHTML = dict[currentLang][key];
            }
          });
          populateTimeSelects();
        }

        /* =================================================================
           시드 및 운세 연산 로직
           ================================================================= */
        function makeSeedFromBirth(dateStr, timeStr, gender, mbti) {
          var seed = 0;
          if (dateStr) {
            var parts = dateStr.split('-');
            if (parts.length === 3) {
              seed += parseInt(parts[0], 10) * 13;
              seed += parseInt(parts[1], 10) * 31;
              seed += parseInt(parts[2], 10) * 17;
            }
          }
          if (timeStr && timeStr !== '') {
            var tParts = timeStr.split(':');
            var h = parseInt(tParts[0] || '0', 10);
            var m = parseInt(tParts[1] || '0', 10);
            if (!isNaN(h)) seed += h * 19;
            if (!isNaN(m)) seed += m * 7;
          }
          if (gender === 'M') seed += 7;
          if (gender === 'F') seed += 11;
          if (mbti) {
            for (var i = 0; i < mbti.length; i++) {
              seed += mbti.charCodeAt(i) * (i + 3);
            }
          }
          return Math.abs(seed);
        }

        function makeTodaySeed(d) {
          var y = d.getFullYear();
          var m = d.getMonth() + 1;
          var day = d.getDate();
          return y * 7 + m * 13 + day * 17;
        }

        function getScoreBand(score) {
          if (score >= 85) return 'excellent';
          if (score >= 70) return 'good';
          if (score >= 55) return 'normal';
          return 'caution';
        }

        function calculateFortune(payload) {
          var baseSeed = makeSeedFromBirth(payload.birthDate, payload.birthTime, payload.gender, payload.mbti);
          var today = new Date();
          var todaySeed = makeTodaySeed(today);
          var todayScore = 40 + ((baseSeed + todaySeed) % 61);
          var scoreBand = getScoreBand(todayScore);
          
          var langDict = dict[currentLang] || dict['ko'];

          var annualTypeKeys = ['growth', 'exec', 'adjust', 'rest'];
          var annualTypeKey = annualTypeKeys[baseSeed % annualTypeKeys.length];
          var annualTypeName = langDict.annualTypes[annualTypeKey];

          var elementKeys = ['wood', 'fire', 'earth', 'metal', 'water'];
          var strongElKey = elementKeys[baseSeed % elementKeys.length];
          var weakElKey = elementKeys[(baseSeed + 2) % elementKeys.length];
          var strongElement = langDict.elements[strongElKey];
          var weakElement = langDict.elements[weakElKey];

          var catKeys = ['money', 'love', 'work', 'health'];
          var sections = catKeys.map(function(k) {
            return {
              id: k,
              title: langDict.categories[k].title,
              text: langDict.categories[k].text
            };
          });

          var months = [];
          for (var i = 0; i < 12; i++) {
            months.push({
              month: i + 1,
              title: (i + 1) + (currentLang === 'ko' ? '월' : currentLang === 'ja' ? '月' : currentLang === 'es' ? ' Mes' : ' Mo'),
              text: langDict.monthTextDefault
            });
          }

          var stVal = langDict.axisValues.strong;
          var mdVal = langDict.axisValues.normal;
          var yearAxes = { chance: stVal, change: mdVal, execution: mdVal, social: stVal };

          var colors = langDict.luckyColors;
          var itemsList = langDict.luckyItemsList;
          var actions = langDict.luckyActions;
          var times = langDict.luckyTimes;

          var lucky = {
            color: colors[baseSeed % colors.length],
            number: (baseSeed % 9) + 1,
            time: times[baseSeed % times.length],
            item: itemsList[baseSeed % itemsList.length],
            action: actions[baseSeed % actions.length],
            elementHint: langDict.luckyHint
          };

          var mbtiType = (payload.mbti || 'UNKW').toUpperCase();

          return {
            todayScore: todayScore,
            todayBand: scoreBand,
            todayLabel: langDict.scoreLabels[scoreBand],
            todayKeywords: langDict.keywords[scoreBand],
            annualType: annualTypeName,
            strongElement: strongElement,
            weakElement: weakElement,
            sections: sections,
            yearSummary: langDict.yearSummaryText,
            yearAxes: yearAxes,
            months: months,
            mbti: {
              type: mbtiType,
              title: mbtiType + langDict.mbtiCustomTitle,
              lines: langDict.mbtiLines
            },
            lucky: lucky
          };
        }

        /* =================================================================
           UI 상호작용 및 렌더링
           ================================================================= */
        var selectedGender = 'M';
        var loadingTimer = null;
        var lastPayload = null;

        function $(id) { return document.getElementById(id); }

        function initLangButtons() {
          var buttons = document.querySelectorAll('.lang-btn');
          buttons.forEach(function(btn) {
            btn.addEventListener('click', function() {
              buttons.forEach(function(b) { b.classList.remove('active'); });
              btn.classList.add('active');
              currentLang = btn.getAttribute('data-lang');
              updateTexts();
              
              if (lastPayload) {
                renderResult(calculateFortune(lastPayload));
              }
            });
          });
        }

        function initGenderButtons() {
          var m = $('genderM');
          var f = $('genderF');
          [m, f].forEach(function (btn) {
            btn.addEventListener('click', function () {
              selectedGender = btn.getAttribute('data-gender');
              [m, f].forEach(function (b) { b.classList.remove('active'); });
              btn.classList.add('active');
            });
          });
        }

        function startLoading(onComplete) {
          var overlay = $('loadingOverlay');
          var text = $('loadingText');
          overlay.style.display = 'flex';
          var steps = dict[currentLang].loadingSteps;
          var stepIdx = 0;
          text.textContent = steps[stepIdx];

          loadingTimer = setInterval(function () {
            stepIdx++;
            if (stepIdx < steps.length) {
              text.textContent = steps[stepIdx];
            } else {
              clearInterval(loadingTimer);
              overlay.style.display = 'none';
              if (onComplete) onComplete();
            }
          }, 750);
        }

        function setHidden(id, hidden) {
          var el = $(id);
          if (!el) return;
          if (hidden) {
            el.classList.add('hidden');
            el.classList.remove('fade-in');
          } else {
            el.classList.remove('hidden');
            void el.offsetWidth;
            el.classList.add('fade-in');
          }
        }

        function renderResult(data) {
          var cfg = dict[currentLang];
          $('scoreText').textContent = Math.round(data.todayScore) + ' ' + cfg.scoreUnit;
          $('scoreLabel').textContent = data.todayLabel;

          var kc = $('keywordChips');
          kc.innerHTML = '';
          (data.todayKeywords || []).forEach(function (kw) {
            var span = document.createElement('span');
            span.className = 'chip';
            span.textContent = '#' + kw;
            kc.appendChild(span);
          });

          $('annualTypeText').textContent = cfg.annualTypePrefix + data.annualType;
          $('elementText').textContent = cfg.strongElementPrefix + data.strongElement + cfg.weakElementPrefix + data.weakElement;

          var map = {};
          (data.sections || []).forEach(function (s) { map[s.id] = s.text; });
          $('sectionMoney').textContent = map.money || '';
          $('sectionLove').textContent = map.love || '';
          $('sectionWork').textContent = map.work || '';
          $('sectionHealth').textContent = map.health || '';

          $('yearSummary').textContent = data.yearSummary || '';

          var axesBox = $('axesBox');
          axesBox.innerHTML = '';
          var axisLabels = cfg.axisLabels;
          Object.keys(axisLabels).forEach(function (k) {
            var div = document.createElement('div');
            div.className = 'axis-item';
            var spanLabel = document.createElement('span');
            spanLabel.className = 'axis-label';
            spanLabel.textContent = axisLabels[k] + ':';
            var spanVal = document.createElement('span');
            spanVal.textContent = data.yearAxes[k];
            div.appendChild(spanLabel);
            div.appendChild(spanVal);
            axesBox.appendChild(div);
          });

          var mg = $('monthGrid');
          mg.innerHTML = '';
          (data.months || []).forEach(function (m) {
            var card = document.createElement('div');
            card.className = 'month-card';
            var t = document.createElement('div');
            t.className = 'month-title';
            t.textContent = m.title;
            var tt = document.createElement('div');
            tt.className = 'month-text';
            tt.textContent = m.text;
            card.appendChild(t);
            card.appendChild(tt);
            mg.appendChild(card);
          });

          $('mbtiTitle').textContent = data.mbti.title;
          var mbtiChipBox = $('mbtiChipBox');
          mbtiChipBox.innerHTML = '';
          if (data.mbti.type && data.mbti.type !== 'UNKW') {
            var chipType = document.createElement('span');
            chipType.className = 'badge';
            chipType.textContent = data.mbti.type;
            mbtiChipBox.appendChild(chipType);
          }

          var mbtiLines = $('mbtiLines');
          mbtiLines.innerHTML = '';
          (data.mbti.lines || []).forEach(function (line) {
            var p = document.createElement('div');
            p.className = 'mbti-line';
            p.textContent = line;
            mbtiLines.appendChild(p);
          });

          var luckyList = $('luckyList');
          luckyList.innerHTML = '';
          var lucky = data.lucky || {};
          var lLabels = cfg.luckyLabels;
          var rows = [
            [lLabels.color, lucky.color],
            [lLabels.number, lucky.number],
            [lLabels.time, lucky.time],
            [lLabels.item, lucky.item],
            [lLabels.action, lucky.action]
          ];
          rows.forEach(function (r) {
            var div = document.createElement('div');
            div.className = 'lucky-item';
            div.textContent = r[0] + ': ' + r[1];
            luckyList.appendChild(div);
          });

          if (lucky.elementHint) {
            var hint = document.createElement('div');
            hint.className = 'lucky-item';
            hint.style.marginTop = '6px';
            hint.style.color = '#4f46e5';
            hint.style.fontWeight = '500';
            hint.textContent = lucky.elementHint;
            luckyList.appendChild(hint);
          }

          setHidden('resultCard', false);
          setHidden('yearCard', false);
          setHidden('mbtiCard', false);
          setHidden('luckyCard', false);
        }

        function handleGetFortune() {
          var birthDate = $('birthDate').value;
          var birthHour = $('birthHour').value;
          var birthMinute = $('birthMinute').value;
          var mbti = $('mbti').value;

          if (!birthDate) {
            alert(currentLang === 'ko' ? '생년월일을 입력해 주세요.' : currentLang === 'ja' ? '生年月日を入力してください。' : 'Please enter your birth date.');
            return;
          }

          var birthTime = '';
          if (birthHour !== '') {
            birthTime = birthHour + ':' + (birthMinute || '00');
          }

          lastPayload = {
            birthDate: birthDate,
            birthTime: birthTime,
            gender: selectedGender,
            mbti: mbti
          };

          $('btnGetFortune').disabled = true;
          setHidden('resultCard', true);
          setHidden('yearCard', true);
          setHidden('mbtiCard', true);
          setHidden('luckyCard', true);

          var resultData = calculateFortune(lastPayload);

          startLoading(function () {
            $('btnGetFortune').disabled = false;
            renderResult(resultData);
            $('resultCard').scrollIntoView({ behavior: 'smooth', block: 'start' });
          });
        }

        function init() {
          initLangButtons();
          initGenderButtons();
          populateTimeSelects();
          $('btnGetFortune').addEventListener('click', handleGetFortune);
        }

        if (document.readyState === 'loading') {
          document.addEventListener('DOMContentLoaded', init);
        } else {
          init();
        }
      })();
    </script>
  </body>
</html>





<!-- MBTI 퍼스널 운세 하단 FAQ 블록 -->
<div class="mbti-faq-container" style="max-width: 768px; margin: 24px auto 0 auto; padding: 24px; background: #ffffff; border-radius: 16px; box-shadow: 0 8px 20px rgba(15, 23, 42, 0.08); font-family: -apple-system, BlinkMacSystemFont, 'Apple SD Gothic Neo', 'Noto Sans KR', sans-serif; color: #111827; box-sizing: border-box;">
  <h2 style="font-size: 1.3rem; font-weight: 700; margin-bottom: 16px; color: #111827; border-bottom: 2px solid #f3f4f6; padding-bottom: 10px;">
    무료 운세 자주 묻는 질문 (FAQ) <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2753.png" alt="❓" class="wp-smiley" style="height: 1em; max-height: 1em;" />
  </h2>

  <div style="display: flex; flex-direction: column; gap: 16px;">
    <!-- 질문 1 -->
    <div style="background: #f9fafb; padding: 16px; border-radius: 12px; border: 1px solid #f0f0f4;">
      <div style="font-size: 0.95rem; font-weight: 700; color: #4f46e5; margin-bottom: 6px;">
        Q. 태어난 시간을 모르면 결과가 정확하지 않나요?
      </div>
      <div style="font-size: 0.88rem; color: #4b5563; line-height: 1.6;">
        태어난 시간을 모르시더라도 생년월일과 MBTI 성향을 바탕으로 주요 흐름을 정밀하게 산출합니다. 시간을 아시는 경우 조금 더 세밀한 오행 수치가 반영되지만, 선택하지 않으셔도 운세를 확인하는 데 문제없습니다.
      </div>
    </div>

    <!-- 질문 2 -->
    <div style="background: #f9fafb; padding: 16px; border-radius: 12px; border: 1px solid #f0f0f4;">
      <div style="font-size: 0.95rem; font-weight: 700; color: #4f46e5; margin-bottom: 6px;">
        Q. MBTI를 잘 모르거나 선택하지 않아도 되나요?
      </div>
      <div style="font-size: 0.88rem; color: #4b5563; line-height: 1.6;">
        네, &#8216;모름&#8217;으로 선택하셔도 생년월일 사주 기반의 종합 운세가 정상적으로 조회됩니다. MBTI를 선택하시면 해당 성향 그룹(NT, NF, SJ, SP)에 맞춘 추가 해석과 행동 조언을 함께 받아보실 수 있습니다.
      </div>
    </div>

    <!-- 질문 3 -->
    <div style="background: #f9fafb; padding: 16px; border-radius: 12px; border: 1px solid #f0f0f4;">
      <div style="font-size: 0.95rem; font-weight: 700; color: #4f46e5; margin-bottom: 6px;">
        Q. 입력한 개인정보는 저장되나요?
      </div>
      <div style="font-size: 0.88rem; color: #4b5563; line-height: 1.6;">
        본 서비스는 사용자의 입력 정보(생년월일, 성별 등)를 서버에 저장하지 않습니다. 모든 연산은 방문하신 브라우저 내에서 즉시 처리되므로 안심하고 이용하셔도 됩니다.
      </div>
    </div>

    <!-- 질문 4 -->
    <div style="background: #f9fafb; padding: 16px; border-radius: 12px; border: 1px solid #f0f0f4;">
      <div style="font-size: 0.95rem; font-weight: 700; color: #4f46e5; margin-bottom: 6px;">
        Q. 운세 결과는 매일 바뀌나요?
      </div>
      <div style="font-size: 0.88rem; color: #4b5563; line-height: 1.6;">
        네, &#8216;오늘의 운세&#8217;와 &#8216;오늘의 행운 요소(색상, 숫자, 시간 등)&#8217;는 일자별 바이오리듬과 날짜 시드에 따라 매일 새롭게 업데이트됩니다.
      </div>
    </div>
  </div>
</div>



<p class="myb_a wp-block-paragraph"><a href="https://infomimi.com/k-beauty-skin-quiz-find-your-perfect-korean-skincare-routine/">내 피부 MBTI 테스트</a></p>





<div class="wp-block-uagb-image aligncenter uagb-block-cd19a405 wp-block-uagb-image--layout-default wp-block-uagb-image--effect-static wp-block-uagb-image--align-center"><figure class="wp-block-uagb-image__figure"><img decoding="async" srcset="https://infomimi.com/wp-content/uploads/2026/08/20260813_225638.webp ,https://infomimi.com/wp-content/uploads/2026/08/20260813_225638.webp 780w, https://infomimi.com/wp-content/uploads/2026/08/20260813_225638.webp 360w" sizes="auto, (max-width: 480px) 150px" src="https://infomimi.com/wp-content/uploads/2026/08/20260813_225638.webp" alt="2027년 무료 운세 서비스 MBTI 퍼스널 운세" class="uag-image-1087" width="1014" height="557" title="2027년 무료 운세 서비스 MBTI 퍼스널 운세" loading="lazy" role="img"/></figure></div>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1077</post-id>	</item>
	</channel>
</rss>
