



















{"id":6,"date":"2018-11-27T09:17:28","date_gmt":"2018-11-27T09:17:28","guid":{"rendered":"https:\/\/followtheimprints.com\/services\/"},"modified":"2026-10-07T02:20:26","modified_gmt":"2026-10-07T02:20:26","slug":"expense","status":"publish","type":"page","link":"https:\/\/followtheimprints.com\/?page_id=6","title":{"rendered":"Expenses"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"6\" class=\"elementor elementor-6\" wpc-filter-elementor-widget=\"1\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3ff9bf0 e-flex e-con-boxed e-con e-parent\" data-id=\"3ff9bf0\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b3028f7 elementor-widget elementor-widget-html\" data-id=\"b3028f7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<style>\n:root {\n  --card-radius: 20px;\n  --card-bg: #fff;\n  --muted: #666;\n  --tab-active: #035975;      \n  --tab-inactive: #f0f3f7;    \n  --tab-inactive-hover: #e1e6ee;\n}\n\n\/* Layout *\/\n.page-wrap { max-width: 1200px; margin: 2rem auto; padding: 0 1rem; font-family: Arial, Helvetica, sans-serif; }\n.card { background: var(--card-bg); border-radius: var(--card-radius); overflow: hidden; box-shadow: 0 6px 20px rgba(15,20,25,0.08); margin-bottom: 2rem; }\n\n\/* Hero *\/\n.hero { position: relative; height: 320px; width: 100%; }\n.hero img { width: 100%; height: 100%; object-fit: cover; display: block; filter: brightness(65%); }\n.hero-overlay { position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%); text-align: center; width: 100%; padding: 0 1rem; box-sizing: border-box; }\n.hero-pill { display: inline-block; background: rgba(255,255,255,0.9); color: #000; padding: 0.55rem 1.4rem; border-radius: 999px; font-weight: 700; font-size: 1.2rem; box-shadow: 0 6px 18px rgba(10,20,30,0.12); }\n.hero-sub { margin-top: 0.6rem; color: rgba(255,255,255,0.95); text-shadow: 0 2px 8px rgba(0,0,0,0.45); font-size: 1rem; }\n\n.card-body { padding: 2rem; }\n.lead { text-align: center; color: var(--muted); max-width: 900px; margin: 0 auto 1rem auto; font-size: 1rem; line-height: 1.5; }\n\n\/* Two-person note *\/\n.travelers-note {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  gap: 8px;\n  text-align: center;\n  max-width: 560px;\n  margin: 0 auto 1.5rem auto;\n  padding: 10px 18px;\n  background: #f3f8fb;\n  border: 1px solid #d7e6ec;\n  border-radius: 12px;\n  color: #035975;\n  font-size: 0.92rem;\n  font-weight: 600;\n}\n\n\/* Search *\/\n#expenseSearch {\n  width: 90%; max-width: 400px; padding: 8px 12px; border-radius: 8px; border: 1px solid #ccc;\n  font-size: 0.95rem; display: block; margin: 1rem auto 1.5rem auto;\n}\n\n\/* Tabs *\/\n.tabs { display: flex; justify-content: center; margin: 1rem 0; flex-wrap: wrap; gap: 8px; }\n.tab-btn {\n  background: var(--tab-inactive);\n  color: #222;\n  padding: 10px 20px;\n  border-radius: 12px;\n  font-weight: 600;\n  cursor: pointer;\n  border: none;\n  transition: 0.2s;\n  font-size: 0.9rem;\n  outline: none;\n}\n.tab-btn:hover:not(.active) { background: var(--tab-inactive-hover); }\n.tab-btn.active { background: var(--tab-active); color: #fff; }\n.tab-btn.match:not(.active) { box-shadow: inset 0 0 0 2px var(--tab-active); }\n\n\/* Tables *\/\n.table-wrap { margin: 0 auto 2rem auto; border-radius: 12px; border: 1px solid #e6e9ee; overflow: hidden; display: none; }\n.table-wrap.active { display: block; }\n.table-scroll { max-height: 650px; overflow-x: auto; }\n\n.expenses-table { width: 100%; border-collapse: collapse; min-width: 600px; }\n.expenses-table th {\n  position: sticky; top: 0; background: #fafbfd; font-weight:700; padding: 8px 10px; text-align:left;\n  border-bottom:1px solid #eef2f6; z-index: 2; font-size: 0.9rem;\n}\n.expenses-table td { padding: 6px 8px; border-bottom: 1px solid #f6f7f9; font-size: 0.85rem; color: #333; }\n.expenses-table tr:nth-child(even) { background: #fbfcfe; }\n.expenses-table tr:hover { background: #f3f7ff; }\n\n.table-empty {\n  padding: 2rem;\n  text-align: center;\n  color: var(--muted);\n  font-size: 0.95rem;\n}\n\n@media (max-width: 700px) {\n  .hero { height: 200px; }\n  .hero-pill { font-size: 1rem; padding: 0.4rem 0.9rem; }\n  .hero-sub { font-size: 0.9rem; }\n  .tabs { gap: 6px; }\n  .tab-btn { font-size: 0.85rem; padding: 5px 10px; }\n  .expenses-table th, .expenses-table td { font-size: 0.8rem; padding: 5px 6px; }\n}\n<\/style>\n\n<div class=\"page-wrap\">\n  <div class=\"card\">\n    <div class=\"hero\">\n      <img decoding=\"async\" data-src=\"https:\/\/followtheimprints.com\/wp-content\/uploads\/2025\/03\/qtq80-dtrysX.jpeg\" alt=\"Travel planning\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 2160px; --smush-placeholder-aspect-ratio: 2160\/1440;\" \/>\n      <div class=\"hero-overlay\">\n        <span class=\"hero-pill\">Our Travel Expenses<\/span>\n        <div class=\"hero-sub\">Track how we manage our journey across the world<\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"card-body\">\n      <p class=\"lead\">\n        We share our real travel costs transparently \u2014 country by country, expense by expense.\n        Browse through our interactive tables below.\n      <\/p>\n\n      <div class=\"travelers-note\">\n        \ud83d\udc6b All figures shown are combined costs for the two of us traveling together (Sudeshna &amp; Ranjit)\n      <\/div>\n\n      <input type=\"text\" id=\"expenseSearch\" placeholder=\"Search by country...\" aria-label=\"Search expenses by country\">\n      <div class=\"tabs\" id=\"tabsContainer\"><\/div>\n      <div id=\"tablesContainer\"><\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n<script>\n\/*\n  Updated script:\n   - 2024 \/ 2025 \/ 2026 csv export links (your provided sheet IDs)\n   - Better error handling (shows \"unable to load\" if fetch fails)\n   - Stores full dataset per sheet (allRows) so search can scan across whole year (not only paged rows)\n   - Search repopulates table bodies with matching rows across full dataset; shows multiple years if present\n   - Pagination preserved when NOT searching\n   - Shows an immediate \"Loading expenses\u2026\" state on tab click, before the fetch resolves\n*\/\n\nconst sheets = [\n  { year: \"2024\", url: \"https:\/\/docs.google.com\/spreadsheets\/d\/e\/2PACX-1vSRcpub-C5D3vOis-382X53ogMVLKMrU8XC3rNn5PbTcFUYOvfc5VdVJ1wKkLQV0oYVu4Wx8b_lGfdF\/pub?gid=1409245260&single=true&output=csv\" },\n  { year: \"2025\", url: \"https:\/\/docs.google.com\/spreadsheets\/d\/e\/2PACX-1vSRcpub-C5D3vOis-382X53ogMVLKMrU8XC3rNn5PbTcFUYOvfc5VdVJ1wKkLQV0oYVu4Wx8b_lGfdF\/pub?gid=561913653&single=true&output=csv\" },\n  { year: \"2026\", url: \"https:\/\/docs.google.com\/spreadsheets\/d\/e\/2PACX-1vSRcpub-C5D3vOis-382X53ogMVLKMrU8XC3rNn5PbTcFUYOvfc5VdVJ1wKkLQV0oYVu4Wx8b_lGfdF\/pub?gid=1278295043&single=true&output=csv\" }\n];\n\nconst tablesContainer = document.getElementById(\"tablesContainer\");\nconst tabsContainer   = document.getElementById(\"tabsContainer\");\nconst currentYear     = new Date().getFullYear().toString();\nconst PAGE_SIZE = 50;\n\n\/\/ loadedSheets structure per year:\n\/\/ { headers: [...], allRows: [[...],[...]], tableWrap, tbody, start: number, loadBtn, loadingState }\nconst loadedSheets = {};\nlet currentActiveYear = currentYear;\n\n\/* --- CSV parser (basic but robust for most sheets) --- *\/\nfunction parseCSV(str) {\n  const rows = []; let row = [], cell = '', inQuotes = false;\n  for (let i=0; i<str.length; i++) {\n    const char=str[i], next=str[i+1];\n    if (char==='\"') { if (inQuotes && next==='\"') { cell+='\"'; i++; } else { inQuotes=!inQuotes; } }\n    else if (char===',' && !inQuotes) { row.push(cell); cell=''; }\n    else if ((char==='\\n' || (char==='\\r' && next==='\\n')) && !inQuotes) {\n      if (char==='\\r' && next==='\\n') i++;\n      row.push(cell); rows.push(row); row=[]; cell='';\n    } else { cell+=char; }\n  }\n  if (cell || row.length) row.push(cell);\n  if (row.length) rows.push(row);\n  return rows;\n}\n\n\/* --- cache helpers --- *\/\nfunction getCache(key) {\n  const item = localStorage.getItem(key);\n  if (!item) return null;\n  try {\n    const { data, time } = JSON.parse(item);\n    if (Date.now() - time > 24*60*60*1000) return null;\n    return data;\n  } catch { return null; }\n}\nfunction setCache(key, data) {\n  localStorage.setItem(key, JSON.stringify({ data, time: Date.now() }));\n}\n\n\/* --- create table skeleton for a sheet (called once per sheet) ---\n   IMPORTANT: this registers itself into loadedSheets[sheet.year] immediately,\n   so every call site can safely read loadedSheets[sheet.year] right after\n   calling this function, with no risk of it being undefined. *\/\nfunction createTableSkeleton(sheet) {\n  if (loadedSheets[sheet.year]) return loadedSheets[sheet.year]; \/\/ never build twice\n\n  const table = document.createElement(\"table\");\n  table.className=\"expenses-table\";\n\n  const thead = document.createElement(\"thead\");\n  const trh = document.createElement(\"tr\");\n  thead.appendChild(trh);\n  table.appendChild(thead);\n\n  const tbody = document.createElement(\"tbody\");\n  table.appendChild(tbody);\n\n  const loadBtn = document.createElement(\"button\");\n  loadBtn.textContent=\"Load more\";\n  loadBtn.style.display=\"none\";\n  loadBtn.style.margin=\"1rem auto\";\n  loadBtn.style.padding=\"8px 16px\";\n  loadBtn.style.borderRadius=\"8px\";\n  loadBtn.style.border=\"1px solid #ccc\";\n  loadBtn.style.cursor=\"pointer\";\n\n  const tableWrap  = document.createElement(\"div\");\n  tableWrap.className = \"table-wrap\";\n  tableWrap.id = \"table-\"+sheet.year;\n  tableWrap.dataset.year = sheet.year;\n\n  const tableScroll = document.createElement(\"div\");\n  tableScroll.className = \"table-scroll\";\n  tableScroll.appendChild(table);\n\n  const emptyMsg = document.createElement('div');\n  emptyMsg.className = 'table-empty';\n  emptyMsg.style.display = 'block';\n  emptyMsg.textContent = 'Loading expenses\u2026';\n\n  tableWrap.appendChild(tableScroll);\n  tableWrap.appendChild(loadBtn);\n  tableWrap.appendChild(emptyMsg);\n  tablesContainer.appendChild(tableWrap);\n\n  const ctx = {\n    table, thead, trh, tbody, loadBtn, tableWrap, emptyMsg,\n    headers: [], allRows: [], start: 0, loadingState: false\n  };\n  loadedSheets[sheet.year] = ctx;\n\n  \/\/ wire up load-more once, here, so every call site gets this for free\n  loadBtn.addEventListener('click', () => loadMoreForYear(sheet.year));\n\n  return ctx;\n}\n\n\/* --- Render rows into tbody (utility) --- *\/\nfunction appendRowsToTbody(tbody, headers, rowsToAppend, startIndex = 0) {\n  for (let i = 0; i < rowsToAppend.length; i++) {\n    const rowData = rowsToAppend[i];\n    const tr = document.createElement('tr');\n    for (let j = 0; j < headers.length; j++) {\n      const td = document.createElement('td');\n      td.textContent = (rowData && typeof rowData[j] !== 'undefined') ? rowData[j] : '';\n      tr.appendChild(td);\n    }\n    tbody.appendChild(tr);\n  }\n}\n\n\/* --- renderTable sets up thead and initial page (but uses stored allRows for search) --- *\/\nfunction renderTable(sheet, data) {\n  \/\/ ensure skeleton exists (no-ops if already created, and self-registers either way)\n  createTableSkeleton(sheet);\n  const ctx = loadedSheets[sheet.year];\n  ctx.headers = data[0] || [];\n  ctx.allRows = data.slice(1) || [];\n  ctx.start = 0;\n\n  \/\/ populate thead\n  ctx.trh.innerHTML = '';\n  ctx.headers.forEach(h => {\n    const th = document.createElement('th');\n    th.textContent = h || '\u2014';\n    ctx.trh.appendChild(th);\n  });\n\n  \/\/ clear any existing rows and show first page\n  ctx.tbody.innerHTML = '';\n  if (ctx.allRows.length === 0) {\n    ctx.loadBtn.style.display = 'none';\n    ctx.emptyMsg.style.display = 'block';\n    ctx.emptyMsg.textContent = 'No rows found for this sheet.';\n  } else {\n    ctx.emptyMsg.style.display = 'none';\n    ctx.loadBtn.style.display = (ctx.allRows.length > PAGE_SIZE) ? 'block' : 'none';\n    loadMoreForYear(sheet.year);\n  }\n}\n\n\/* --- load more for an individual year (uses stored start & allRows) --- *\/\nfunction loadMoreForYear(year) {\n  const ctx = loadedSheets[year];\n  if (!ctx) return;\n  const { tbody, allRows, headers } = ctx;\n  const start = ctx.start || 0;\n  const end = Math.min(start + PAGE_SIZE, allRows.length);\n  const slice = allRows.slice(start, end);\n  appendRowsToTbody(tbody, headers, slice);\n  ctx.start = end;\n  if (ctx.start >= allRows.length) ctx.loadBtn.style.display = 'none';\n}\n\n\/* --- show friendly error message on sheet load fail --- *\/\nfunction showLoadError(sheet, err) {\n  \/\/ ensure skeleton exists (no-ops if already created, and self-registers either way)\n  createTableSkeleton(sheet);\n  const ctx = loadedSheets[sheet.year];\n  ctx.tbody && (ctx.tbody.innerHTML = '');\n  ctx.emptyMsg.style.display = 'block';\n  ctx.emptyMsg.textContent = 'Unable to load this sheet (network\/CORS or invalid URL).';\n  ctx.loadBtn && (ctx.loadBtn.style.display = 'none');\n  console.warn('Sheet load error for', sheet.year, err);\n}\n\n\/* --- Ensure sheet loaded (fetch\/cached + render) --- *\/\nasync function ensureSheetLoaded(sheet) {\n  if (loadedSheets[sheet.year] && loadedSheets[sheet.year].allRows && loadedSheets[sheet.year].allRows.length) return;\n  \/\/ ensure skeleton exists (so UI has a place-holder showing \"Loading expenses\u2026\")\n  createTableSkeleton(sheet);\n  const preCtx = loadedSheets[sheet.year];\n  preCtx.emptyMsg.style.display = 'block';\n  preCtx.emptyMsg.textContent = 'Loading expenses\u2026';\n\n  const cacheKey = \"expenses-\"+sheet.year;\n  let data = getCache(cacheKey);\n  try {\n    if(!data){\n      \/\/ fetch CSV text\n      const resp = await fetch(sheet.url);\n      if (!resp.ok) throw new Error('HTTP '+resp.status);\n      const text = await resp.text();\n      data = parseCSV(text);\n      setCache(cacheKey, data);\n    }\n    if (!data || !data.length) {\n      showLoadError(sheet, 'no-data');\n      return;\n    }\n    renderTable(sheet, data);\n  } catch (err) {\n    showLoadError(sheet, err);\n  }\n}\n\n\/* --- Build tabs (once) --- *\/\nsheets.forEach(sheet=>{\n  const btn = document.createElement(\"button\");\n  btn.className = \"tab-btn\";\n  btn.textContent = sheet.year;\n  btn.dataset.year = sheet.year;\n  btn.addEventListener('click', async ()=>{\n    document.getElementById('expenseSearch').value='';\n    \/\/ deactivate all tabs & table-wraps\n    document.querySelectorAll('.tab-btn').forEach(b=>b.classList.remove('active'));\n    document.querySelectorAll('.table-wrap').forEach(t=>t.classList.remove('active'));\n    \/\/ activate clicked\n    btn.classList.add('active');\n    currentActiveYear = sheet.year;\n    \/\/ show this year's panel immediately (with its loading\/empty state) while data fetches\n    createTableSkeleton(sheet);\n    loadedSheets[sheet.year].tableWrap.classList.add('active');\n    \/\/ ensure data and then show\n    await ensureSheetLoaded(sheet);\n    const ctx = loadedSheets[sheet.year];\n    if (ctx && ctx.tableWrap) ctx.tableWrap.classList.add('active');\n  });\n  tabsContainer.appendChild(btn);\n});\n\n\/* --- Show only current year on load (or last sheet if current not present) --- *\/\n(async function init(){\n  \/\/ create table skeletons for all sheets so the DOM is stable\n  sheets.forEach(s => createTableSkeleton(s));\n\n  \/\/ pick a sheet to open: prefer currentYear\n  const currentSheet = sheets.find(s=>s.year===currentYear) || sheets[sheets.length-1];\n\n  \/\/ trigger click on its tab (this will load it)\n  const btn = [...document.querySelectorAll('.tab-btn')].find(b=>b.dataset.year===currentSheet.year);\n  if (btn) btn.click();\n})();\n\n\/* --- Cross-year search (searches full allRows for each sheet) --- *\/\nlet lastQuery = '';\ndocument.getElementById('expenseSearch').addEventListener('input', async function(){\n  const query = this.value.toLowerCase().trim();\n  lastQuery = query;\n\n  \/\/ if query empty => restore default view: show only currentActiveYear table (load if needed)\n  if (query === '') {\n    \/\/ remove match class from tabs\n    document.querySelectorAll('.tab-btn').forEach(b => b.classList.remove('match'));\n    \/\/ hide all table-wraps\n    document.querySelectorAll('.table-wrap').forEach(t => t.classList.remove('active'));\n    \/\/ ensure the active year is loaded and show it\n    const sheet = sheets.find(s => s.year === currentActiveYear) || sheets[sheets.length-1];\n    await ensureSheetLoaded(sheet);\n    const ctx = loadedSheets[sheet.year];\n    if (ctx && ctx.tableWrap) ctx.tableWrap.classList.add('active');\n    \/\/ Reset tables to their paged default (clear & render first PAGE_SIZE)\n    Object.keys(loadedSheets).forEach(year=>{\n      const ctx = loadedSheets[year];\n      if (ctx && ctx.headers && ctx.allRows) {\n        ctx.tbody.innerHTML = '';\n        ctx.start = 0;\n        if (ctx.allRows.length === 0) {\n          ctx.emptyMsg.style.display = 'block';\n          ctx.emptyMsg.textContent = 'No rows found for this sheet.';\n          ctx.loadBtn && (ctx.loadBtn.style.display = 'none');\n        } else {\n          ctx.emptyMsg.style.display = 'none';\n          ctx.loadBtn.style.display = (ctx.allRows.length > PAGE_SIZE) ? 'block' : 'none';\n          loadMoreForYear(year);\n        }\n      }\n    });\n    return;\n  }\n\n  \/\/ When searching: load all sheets (if not loaded) then filter\n  await Promise.all(sheets.map(s => ensureSheetLoaded(s)));\n\n  const matchedYears = new Set();\n\n  \/\/ For each loaded sheet, find matching rows and repopulate tbody with matches\n  Object.keys(loadedSheets).forEach(year=>{\n    const ctx = loadedSheets[year];\n    if (!ctx || !ctx.allRows) return;\n    const headers = ctx.headers || [];\n    const allRows = ctx.allRows || [];\n\n    \/\/ locate matches across allRows\n    const matches = [];\n    for (let i = 0; i < allRows.length; i++) {\n      const rowText = (allRows[i] || []).join(' ').toLowerCase();\n      if (rowText.includes(query)) matches.push(allRows[i]);\n    }\n\n    \/\/ clear tbody and show matches (all of them)\n    if (ctx.tbody) ctx.tbody.innerHTML = '';\n    if (matches.length === 0) {\n      \/\/ show no-results per table\n      if (ctx.emptyMsg) {\n        ctx.emptyMsg.style.display = 'block';\n        ctx.emptyMsg.textContent = 'No results for this search in ' + year + '.';\n      }\n      if (ctx.loadBtn) ctx.loadBtn.style.display = 'none';\n      \/\/ hide table\n      ctx.tableWrap && ctx.tableWrap.classList.remove('active');\n    } else {\n      if (ctx.emptyMsg) ctx.emptyMsg.style.display = 'none';\n      appendRowsToTbody(ctx.tbody, headers, matches);\n      \/\/ hide load button during search (we show all matches)\n      if (ctx.loadBtn) ctx.loadBtn.style.display = 'none';\n      \/\/ show table\n      ctx.tableWrap && ctx.tableWrap.classList.add('active');\n      matchedYears.add(year);\n    }\n  });\n\n  \/\/ Update tabs visual state\n  document.querySelectorAll('.tab-btn').forEach(btn=>{\n    btn.classList.remove('active','match');\n    if (matchedYears.has(btn.dataset.year)) {\n      btn.classList.add('match');\n      \/\/ if only one matched year, also make it active\/tab selected\n      if (matchedYears.size === 1) btn.classList.add('active');\n    }\n  });\n\n});\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Our Travel Expenses Track how we manage our journey across the world We share our real travel costs transparently \u2014 country by country, expense by expense. Browse through our interactive tables below. \ud83d\udc6b All figures shown are combined costs for the two of us traveling together (Sudeshna &amp; Ranjit)<\/p>\n","protected":false},"author":3,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"page-builder","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"enabled","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-6","page","type-page","status-publish","hentry"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/followtheimprints.com\/index.php?rest_route=\/wp\/v2\/pages\/6","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/followtheimprints.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/followtheimprints.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/followtheimprints.com\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/followtheimprints.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=6"}],"version-history":[{"count":387,"href":"https:\/\/followtheimprints.com\/index.php?rest_route=\/wp\/v2\/pages\/6\/revisions"}],"predecessor-version":[{"id":4669,"href":"https:\/\/followtheimprints.com\/index.php?rest_route=\/wp\/v2\/pages\/6\/revisions\/4669"}],"wp:attachment":[{"href":"https:\/\/followtheimprints.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=6"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}