{
  "timestamp": "2026-06-28T01:10:13.243Z",
  "version": "3.0",
  "backupType": "design",
  "data": {
    "blog_settings": [
      {
        "key": "theme",
        "value": "{\"primary\":\"#0f172a\",\"secondary\":\"#64748b\",\"bodyBackground\":{\"type\":\"js\",\"value\":\"js\",\"jsCode\":\"(function() {\\n  const canvas = document.getElementById('bg-canvas');\\n  if (!canvas) return;\\n  const ctx = canvas.getContext('2d');\\n  \\n  let width = canvas.width = window.innerWidth;\\n  let height = canvas.height = window.innerHeight;\\n  \\n  // 모바일 스로틀 감지\\n  const divisor = (window.bgConfig && window.bgConfig.mobileThrottleDivisor) || 1;\\n  const maxSnowflakes = Math.floor(100 / divisor);\\n  const snowflakes = [];\\n  \\n  class Snowflake {\\n    constructor() {\\n      this.reset();\\n      this.y = Math.random() * height; // 초기 임의 고도 설정\\n    }\\n    \\n    reset() {\\n      this.x = Math.random() * width;\\n      this.y = -10;\\n      this.radius = Math.random() * 3 + 1;\\n      this.speed = Math.random() * 1 + 0.5;\\n      this.opacity = Math.random() * 0.6 + 0.2;\\n    }\\n    \\n    update() {\\n      this.y += this.speed;\\n      // 부드러운 흔들림 주기\\n      this.x += Math.sin(this.y / 30) * 0.5;\\n      \\n      if (this.y > height || this.x < 0 || this.x > width) {\\n        this.reset();\\n      }\\n    }\\n    \\n    draw() {\\n      ctx.beginPath();\\n      ctx.arc(this.x, this.y, this.radius, 0, Math.PI * 2);\\n      ctx.fillStyle = `rgba(25, 25, 255, ${this.opacity})`;\\n      ctx.fill();\\n    }\\n  }\\n  \\n  // 파티클 생성\\n  for (let i = 0; i < maxSnowflakes; i++) {\\n    snowflakes.push(new Snowflake());\\n  }\\n  \\n  function animate() {\\n    ctx.clearRect(0, 0, width, height);\\n    \\n    for (let i = 0; i < snowflakes.length; i++) {\\n      snowflakes[i].update();\\n      snowflakes[i].draw();\\n    }\\n    requestAnimationFrame(animate);\\n  }\\n  \\n  // 창 크기 조절 이벤트\\n  window.addEventListener('resize', () => {\\n    width = canvas.width = window.innerWidth;\\n    height = canvas.height = window.innerHeight;\\n  });\\n  \\n  animate();\\n})();\",\"jsConfig\":{},\"opacity\":1,\"blur\":0,\"layerBlur\":0,\"overlayColor\":\"#000000\",\"overlayOpacity\":0,\"allowMobile\":false,\"fallbackColor\":\"\"},\"text\":\"#1c1917\",\"accent\":\"#0f172a\",\"cardBg\":\"transparent\",\"border\":\"#e7e5e4\",\"sideMargin\":\"2rem\",\"fontFamily\":\"Georgia, Noto Serif KR, serif\",\"googleFontName\":\"Playfair Display\",\"baseFontSize\":\"16px\",\"mobileBaseFontSize\":\"\",\"maxWidth\":\"1200px\",\"headerBodySpacing\":\"1rem\",\"bodyFooterSpacing\":\"1rem\",\"widgetItemStyle\":{\"fontSize\":\"0.95rem\",\"fontWeight\":\"600\",\"color\":\"\",\"fontFamily\":\"\"},\"widgetTitleStyle\":{\"fontSize\":\"1.1rem\",\"fontWeight\":\"700\",\"color\":\"\",\"fontFamily\":\"\"},\"headerBodySpacingMobile\":\"8px\",\"bodyFooterSpacingMobile\":\"8px\",\"mobileSideMargin\":\"16px\"}",
        "updated_at": "1782601287"
      },
      {
        "key": "header",
        "value": "{\"logoText\":{\"ko\":\"Sveltekit Blog Engine\",\"en\":\"Sveltekit Blgo En\",\"ja\":\"My Blog\"},\"logoFont\":\"'Noto Sans KR'\",\"logoFontSize\":\"2.5rem\",\"logoAlignment\":\"center\",\"sideMargin\":\"2rem\",\"showBorderBottom\":false,\"logoPadding\":{\"top\":29,\"right\":0,\"bottom\":30,\"left\":0},\"navPadding\":{\"top\":0,\"right\":0,\"bottom\":0,\"left\":0},\"logoColor\":{\"type\":\"gradient\",\"value\":\"linear-gradient(90deg, #3b82f6, #97a239)\",\"jsCode\":\"\",\"jsConfig\":{},\"opacity\":1,\"blur\":0,\"layerBlur\":0,\"overlayColor\":\"oklch(0% 0 0)\",\"overlayOpacity\":0,\"allowMobile\":false,\"fallbackColor\":\"\"},\"logoFontWeight\":\"700\",\"logoLetterSpacing\":\"0px\",\"navAlignment\":\"center\",\"headerLayout\":\"two-line\",\"logoVerticalAlignment\":\"top\",\"navVerticalAlignment\":\"bottom\",\"scrolledLogoVerticalAlignment\":\"middle\",\"scrolledLogoAlignment\":\"left\",\"scrolledNavAlignment\":\"right\",\"scrolledNavVerticalAlignment\":\"middle\",\"scrolledHeight\":\"80px\",\"scrolledMaxWidth\":\"1200px\",\"scrolledNavSpacing\":\"1rem\",\"scrolledLogoPadding\":{\"top\":0,\"right\":0,\"bottom\":0,\"left\":10},\"scrolledNavPadding\":{\"top\":0,\"right\":0,\"bottom\":10,\"left\":2},\"navSpacing\":\"2rem\",\"navTextColor\":\"#804000\",\"navHoverBackground\":{\"type\":\"solid\",\"value\":\"transparent\"},\"navHoverTextColor\":\"#1c1917\",\"showCategories\":false,\"showLanguageSwitcher\":true,\"headerBackground\":{\"type\":\"gradient\",\"value\":\"linear-gradient(185deg, #3b82f6, oklch(76.02% 0.13 282.97), oklch(100% 0.08 183))\",\"jsCode\":\"\",\"jsConfig\":{},\"opacity\":1,\"blur\":0,\"layerBlur\":0,\"overlayColor\":\"#000000\",\"overlayOpacity\":0,\"allowMobile\":false,\"fallbackColor\":\"\"},\"headerBackgroundBlur\":0,\"headerBackgroundOpacity\":1,\"useBottomFade\":false,\"bottomFadeStrength\":20,\"useTextShadow\":false,\"headerBackgroundOverlayColor\":\"#000000\",\"headerBackgroundOverlayOpacity\":0,\"height\":\"12vh\",\"borderRadius\":{\"topLeft\":0,\"topRight\":0,\"bottomLeft\":0,\"bottomRight\":0},\"boxShadow\":\"0px 0px 0px 0px oklch(62.31% 0.188 259.81)\",\"mobile\":{\"height\":\"\",\"logoFontSize\":\"\",\"logoPadding\":{\"top\":0,\"right\":0,\"bottom\":0,\"left\":0},\"navPadding\":{\"top\":0,\"right\":0,\"bottom\":0,\"left\":0},\"navSpacing\":\"\",\"logoAlignment\":\"left\",\"logoVerticalAlignment\":\"middle\",\"navAlignment\":\"right\",\"navVerticalAlignment\":\"middle\",\"showLanguageSwitcher\":true,\"menuItems\":[{\"id\":1,\"type\":\"link\",\"label\":{\"ko\":\"Home\",\"en\":\"Home\",\"ja\":\"Home\"},\"url\":\"/\",\"icon\":\"Home\"},{\"id\":2,\"type\":\"link\",\"label\":{\"ko\":\"Posts\",\"en\":\"Posts\",\"ja\":\"Posts\"},\"url\":\"/posts\",\"icon\":\"FileText\"},{\"id\":3,\"type\":\"category_drawer\",\"label\":{\"ko\":\"Categories\",\"en\":\"Categories\",\"ja\":\"Categories\"},\"url\":\"/\",\"icon\":\"Menu\"}]},\"safeTopMargin\":\"2rem\",\"safeSideMargin\":\"2rem\",\"safeTopMarginMobile\":\"12px\",\"safeSideMarginMobile\":\"16px\"}",
        "updated_at": "1782601287"
      },
      {
        "key": "footer",
        "value": "{\"showBorderTop\":true,\"navFontSize\":\"0.85rem\",\"navColor\":\"#44403c\",\"navHoverColor\":\"#1c1917\",\"footerBackground\":{\"type\":\"js\",\"value\":\"js\",\"jsCode\":\"(function() {\\n  const canvas = document.getElementById('bg-canvas');\\n  if (!canvas) return;\\n  const ctx = canvas.getContext('2d');\\n  \\n  let width = canvas.width = window.innerWidth;\\n  let height = canvas.height = window.innerHeight;\\n  \\n  let wave1 = {\\n    y: height * 0.85,\\n    length: 0.005,\\n    amplitude: 25,\\n    frequency: 0.012\\n  };\\n  \\n  let wave2 = {\\n    y: height * 0.88,\\n    length: 0.008,\\n    amplitude: 15,\\n    frequency: 0.022\\n  };\\n  \\n  let increment = 0;\\n  \\n  function animate() {\\n    ctx.clearRect(0, 0, width, height);\\n    \\n    // 첫 번째 뒷 파도 그리기 (반투명 파스텔 청록)\\n    ctx.beginPath();\\n    ctx.moveTo(0, height);\\n    for (let i = 0; i < width; i++) {\\n      ctx.lineTo(i, wave1.y + Math.sin(i * wave1.length + increment) * wave1.amplitude);\\n    }\\n    ctx.lineTo(width, height);\\n    ctx.fillStyle = 'rgba(45, 212, 191, 0.1)';\\n    ctx.fill();\\n    \\n    // 두 번째 앞 파도 그리기 (반투명 파스텔 하늘)\\n    ctx.beginPath();\\n    ctx.moveTo(0, height);\\n    for (let i = 0; i < width; i++) {\\n      ctx.lineTo(i, wave2.y + Math.sin(i * wave2.length - increment * 1.5) * wave2.amplitude);\\n    }\\n    ctx.lineTo(width, height);\\n    ctx.fillStyle = 'rgba(56, 189, 248, 0.15)';\\n    ctx.fill();\\n    \\n    // 모바일 환경에 따른 속도 차등 제어\\n    const speedFactor = (window.bgConfig && window.bgConfig.mobileThrottleDivisor) ? 0.3 : 1;\\n    increment += wave1.frequency * speedFactor;\\n    \\n    requestAnimationFrame(animate);\\n  }\\n  \\n  window.addEventListener('resize', () => {\\n    width = canvas.width = window.innerWidth;\\n    height = canvas.height = window.innerHeight;\\n    wave1.y = height * 0.85;\\n    wave2.y = height * 0.88;\\n  });\\n  \\n  animate();\\n})();\",\"jsConfig\":{},\"opacity\":1,\"blur\":0,\"layerBlur\":0,\"overlayColor\":\"#000000\",\"overlayOpacity\":0,\"allowMobile\":false,\"fallbackColor\":\"\"},\"text\":{\"color\":\"#10b981\",\"fontSize\":\"2.85rem\"},\"borderRadius\":{\"topLeft\":0,\"topRight\":0,\"bottomLeft\":0,\"bottomRight\":0},\"boxShadow\":\"0px 0px 0px 0px #3b82f6\",\"footerBackgroundBlur\":0,\"footerBackgroundOpacity\":1,\"shareDesign\":true,\"mobile\":{\"copyright\":{\"ko\":\"\",\"en\":\"\",\"ja\":\"\"},\"navLinks\":[],\"navFontSize\":\"\",\"navColor\":\"\",\"navHoverColor\":\"\",\"text\":{\"color\":\"\",\"fontSize\":\"\"},\"borderRadius\":{\"topLeft\":0,\"topRight\":0,\"bottomLeft\":0,\"bottomRight\":0},\"boxShadow\":\"\"}}",
        "updated_at": "1782601287"
      },
      {
        "key": "widget_shadow_global",
        "value": "{\"enabled\":false,\"normal\":\"none\",\"hover\":\"none\",\"hoverTranslateY\":0}",
        "updated_at": "1782601287"
      }
    ],
    "layouts": [
      {
        "id": 1,
        "name": "미니멀 싱글 레이아웃",
        "column_count": 2,
        "column_widths": "1.5fr 5fr",
        "mobile_column_count": 1,
        "mobile_column_widths": "1fr",
        "is_active": 1,
        "created_at": "2026-06-28 07:32:09",
        "updated_at": "1782601288"
      }
    ],
    "widgets": [
      {
        "id": 1,
        "name": "최신 포스트",
        "type": "RecentPosts",
        "config": "{}",
        "created_at": "2026-06-28 07:32:09",
        "updated_at": "2026-06-28 07:32:09"
      },
      {
        "id": 2,
        "name": "카테고리",
        "type": "CategoryMenu",
        "config": "{}",
        "created_at": "2026-06-28 07:32:09",
        "updated_at": "2026-06-28 07:32:09"
      },
      {
        "id": 3,
        "name": "인기 포스트",
        "type": "PopularPosts",
        "config": "{}",
        "created_at": "2026-06-28 07:32:09",
        "updated_at": "2026-06-28 07:32:09"
      },
      {
        "id": 4,
        "name": "태그",
        "type": "TagCloud",
        "config": "{\"mobile\":{\"sortOrder\":\"popular\",\"maxTags\":10},\"desktop\":{\"sortOrder\":\"popular\",\"maxTags\":20}}",
        "created_at": "2026-06-28 07:32:09",
        "updated_at": "2026-06-28 07:32:09"
      },
      {
        "id": 5,
        "name": "본문",
        "type": "PostContent",
        "config": "{\"desktop\":{\"columns\":1,\"layout\":\"horizontal\",\"imageRatio\":25,\"badgeBg\":\"#e2e8f0\",\"badgeColor\":\"#475569\",\"cardBg\":\"transparent\",\"cardTextColor\":\"#1c1917\",\"cardFontSize\":\"1rem\",\"itemsPerPage\":7,\"hoverEffect\":\"none\",\"paginationStyle\":\"default\",\"cardHeight\":\"250px\"},\"mobile\":{\"columns\":1,\"layout\":\"horizontal\",\"imageRatio\":20,\"badgeBg\":\"#e2e8f0\",\"badgeColor\":\"#475569\",\"cardBg\":\"transparent\",\"cardTextColor\":\"#1c1917\",\"cardFontSize\":\"0.8rem\",\"itemsPerPage\":5,\"hoverEffect\":\"none\",\"paginationStyle\":\"default\",\"cardHeight\":\"175px\"}}",
        "created_at": "2026-06-28 07:32:09",
        "updated_at": "2026-06-28 07:32:09"
      },
      {
        "id": 6,
        "name": "최근 댓글",
        "type": "RecentComments",
        "config": "{\"limit\":2,\"shadow\":{\"useGlobal\":true,\"normal\":\"none\",\"hover\":\"none\",\"hoverTranslateY\":-2}}",
        "created_at": "2026-06-28 07:44:23",
        "updated_at": "2026-06-28 07:44:23"
      },
      {
        "id": 7,
        "name": "최근 방명록",
        "type": "RecentGuestbooks",
        "config": "{\"limit\":2,\"shadow\":{\"useGlobal\":true,\"normal\":\"none\",\"hover\":\"none\",\"hoverTranslateY\":-2}}",
        "created_at": "2026-06-28 07:44:37",
        "updated_at": "2026-06-28 07:44:37"
      }
    ],
    "layout_widgets": [
      {
        "id": 209,
        "layout_id": 1,
        "widget_id": 2,
        "column_index": 0,
        "sort_order": 0,
        "custom_title": "{\"ko\":\"카테고리\",\"en\":\"Categories\",\"ja\":\"カテゴリー\"}",
        "device": "desktop"
      },
      {
        "id": 210,
        "layout_id": 1,
        "widget_id": 3,
        "column_index": 0,
        "sort_order": 1,
        "custom_title": "{\"ko\":\"인기 포스트\",\"en\":\"Popular Posts\",\"ja\":\"人気ポスト\"}",
        "device": "desktop"
      },
      {
        "id": 211,
        "layout_id": 1,
        "widget_id": 6,
        "column_index": 0,
        "sort_order": 2,
        "custom_title": "{\"ko\":\"최근 댓글\",\"en\":\"Recent Comments\",\"ja\":\"最近のコメント\"}",
        "device": "desktop"
      },
      {
        "id": 212,
        "layout_id": 1,
        "widget_id": 7,
        "column_index": 0,
        "sort_order": 3,
        "custom_title": "{\"ko\":\"최근 방명록\",\"en\":\"Recent Guestbooks\",\"ja\":\"最新のゲストブック\"}",
        "device": "desktop"
      },
      {
        "id": 213,
        "layout_id": 1,
        "widget_id": 4,
        "column_index": 0,
        "sort_order": 4,
        "custom_title": "{\"ko\":\"태그\",\"en\":\"Tags\",\"ja\":\"タグ\"}",
        "device": "desktop"
      },
      {
        "id": 214,
        "layout_id": 1,
        "widget_id": 5,
        "column_index": 1,
        "sort_order": 0,
        "custom_title": "{\"ko\":\"저널\",\"en\":\"Journal\",\"ja\":\"ジャーナル\"}",
        "device": "desktop"
      },
      {
        "id": 215,
        "layout_id": 1,
        "widget_id": 4,
        "column_index": 1,
        "sort_order": 1,
        "custom_title": "{\"ko\":\"태그\",\"en\":\"Tags\",\"ja\":\"タグ\"}",
        "device": "desktop"
      },
      {
        "id": 216,
        "layout_id": 1,
        "widget_id": 5,
        "column_index": 0,
        "sort_order": 0,
        "custom_title": "{\"ko\":\"저널\",\"en\":\"Journal\",\"ja\":\"ジャーナル\"}",
        "device": "mobile"
      },
      {
        "id": 217,
        "layout_id": 1,
        "widget_id": 4,
        "column_index": 0,
        "sort_order": 1,
        "custom_title": "{\"ko\":\"태그\",\"en\":\"\",\"ja\":\"タグ\"}",
        "device": "mobile"
      }
    ],
    "languages": [
      {
        "code": "ko",
        "name": "한국어",
        "is_default": 1,
        "sort_order": 1,
        "fallback_message": "이 포스트는 한국어로 작성되었습니다."
      },
      {
        "code": "en",
        "name": "English",
        "is_default": 0,
        "sort_order": 2,
        "fallback_message": "This post is written in English."
      },
      {
        "code": "ja",
        "name": "日本語",
        "is_default": 0,
        "sort_order": 3,
        "fallback_message": "この投稿は日本語で書かれています。"
      }
    ]
  }
}