/* ========================================= ARTICLE LAYOUT ========================================= */ .blog-post-content { width: 100%; min-width: 0; grid-template-columns: 230px minmax(0, 1fr) 74px; } .blog-post-content > * { min-width: 0; } /* ========================================= RICH TEXT VARIABLES AND BASE ========================================= */ .catchr-blog-post-rich-text { --cbrt-ink: #1c1642; --cbrt-ink-2: #302b4a; --cbrt-muted: #706b82; --cbrt-purple: #7d41f5; --cbrt-purple-dark: #5724bd; --cbrt-purple-soft: #eee6ff; --cbrt-mint: #00d7ad; --cbrt-mint-soft: #dffff7; --cbrt-yellow: #ffc84a; --cbrt-wash: #f8f6fc; --cbrt-line: #ded9eb; width: 100%; min-width: 0; max-width: 100%; color: var(--cbrt-ink-2); font-family: "Poppins", sans-serif; font-size: 17px; font-weight: 400; line-height: 1.82; overflow-wrap: break-word; } .catchr-blog-post-rich-text, .catchr-blog-post-rich-text * { box-sizing: border-box; } .catchr-blog-post-rich-text > :first-child { margin-top: 0; } .catchr-blog-post-rich-text > :last-child { margin-bottom: 0; } /* ========================================= PARAGRAPHS ========================================= */ .catchr-blog-post-rich-text p { margin: 0 0 26px; color: var(--cbrt-ink-2); font-size: 1em; font-weight: 400; line-height: 1.82; } .catchr-blog-post-rich-text > p:first-child { color: var(--cbrt-ink); font-size: 22px; line-height: 1.6; letter-spacing: -0.015em; } /* ========================================= HEADINGS ========================================= */ .catchr-blog-post-rich-text h1, .catchr-blog-post-rich-text h2, .catchr-blog-post-rich-text h3, .catchr-blog-post-rich-text h4, .catchr-blog-post-rich-text h5, .catchr-blog-post-rich-text h6 { color: var(--cbrt-ink); font-family: "Poppins", sans-serif; font-weight: 600; letter-spacing: -0.035em; line-height: 1.15; } .catchr-blog-post-rich-text h1 { margin: 0 0 28px; font-size: clamp(42px, 6vw, 68px); letter-spacing: -0.05em; line-height: 1.02; } .catchr-blog-post-rich-text h2 { margin: 76px 0 24px; font-size: clamp(34px, 4vw, 48px); scroll-margin-top: 110px; } .catchr-blog-post-rich-text h3 { margin: 48px 0 17px; font-size: 26px; scroll-margin-top: 110px; } .catchr-blog-post-rich-text h4 { margin: 38px 0 14px; font-size: 21px; letter-spacing: -0.025em; } .catchr-blog-post-rich-text h5, .catchr-blog-post-rich-text h6 { margin: 32px 0 12px; font-size: 16px; letter-spacing: 0; } .catchr-blog-post-rich-text h6 { font-family: "DM Mono", monospace; font-size: 11px; font-weight: 500; letter-spacing: 0.03em; text-transform: uppercase; } .catchr-blog-post-rich-text h2 + p, .catchr-blog-post-rich-text h3 + p, .catchr-blog-post-rich-text h4 + p { margin-top: 0; } /* ========================================= TEXT FORMATTING ========================================= */ .catchr-blog-post-rich-text strong, .catchr-blog-post-rich-text b { color: var(--cbrt-ink); font-weight: 600; } .catchr-blog-post-rich-text em, .catchr-blog-post-rich-text i { font-style: italic; } .catchr-blog-post-rich-text small { color: var(--cbrt-muted); font-size: 0.82em; } .catchr-blog-post-rich-text mark { padding: 0.08em 0.22em; background: #fff1a8; color: var(--cbrt-ink); } .catchr-blog-post-rich-text del { color: var(--cbrt-muted); } /* ========================================= LINKS ========================================= */ .catchr-blog-post-rich-text a { color: var(--cbrt-purple-dark); font-weight: 500; overflow-wrap: anywhere; text-decoration-line: underline; text-decoration-color: var(--cbrt-mint); text-decoration-thickness: 3px; text-underline-offset: 3px; transition: color 160ms ease, background-color 160ms ease; } .catchr-blog-post-rich-text a:hover { background: var(--cbrt-mint-soft); color: var(--cbrt-ink); } .catchr-blog-post-rich-text a:focus-visible { outline: 3px solid rgba(125, 65, 245, 0.32); outline-offset: 3px; } /* ========================================= LISTS ========================================= */ .catchr-blog-post-rich-text ul, .catchr-blog-post-rich-text ol { margin: 0 0 30px; padding: 0; } .catchr-blog-post-rich-text ul { overflow: visible; list-style: none; } .catchr-blog-post-rich-text ol { overflow: visible; padding-left: 30px; } .catchr-blog-post-rich-text li { position: relative; margin: 0; padding-left: 28px; color: var(--cbrt-ink-2); line-height: 1.72; } .catchr-blog-post-rich-text li + li { margin-top: 12px; } .catchr-blog-post-rich-text ul > li::before { position: absolute; top: 0.72em; left: 2px; width: 8px; height: 8px; background: var(--cbrt-purple); box-shadow: 4px 4px 0 var(--cbrt-mint-soft); content: ""; } .catchr-blog-post-rich-text ol > li { padding-left: 8px; } .catchr-blog-post-rich-text ol > li::marker { color: var(--cbrt-purple-dark); font-family: "DM Mono", monospace; font-size: 0.85em; font-weight: 500; } .catchr-blog-post-rich-text li ul, .catchr-blog-post-rich-text li ol { margin: 12px 0 4px; } .catchr-blog-post-rich-text ul ul > li::before { width: 7px; height: 2px; background: var(--cbrt-mint); box-shadow: none; } /* ========================================= BLOCKQUOTES ========================================= */ .catchr-blog-post-rich-text blockquote { margin: 42px 0; padding: 4px 0 4px 30px; border: 0; border-left: 6px solid var(--cbrt-yellow); color: var(--cbrt-ink); font-size: 24px; font-style: normal; letter-spacing: -0.02em; line-height: 1.5; } .catchr-blog-post-rich-text blockquote p { margin: 0; color: inherit; font-size: inherit; font-weight: inherit; line-height: inherit; } .catchr-blog-post-rich-text blockquote cite { display: block; margin-top: 14px; color: var(--cbrt-muted); font-family: "DM Mono", monospace; font-size: 10px; font-style: normal; font-weight: 400; letter-spacing: 0.03em; text-transform: uppercase; } /* ========================================= DIVIDERS ========================================= */ .catchr-blog-post-rich-text hr { width: 100%; height: 1px; margin: 58px 0; border: 0; background: var(--cbrt-line); } /* ========================================= IMAGES AND FIGURES ========================================= */ .catchr-blog-post-rich-text img { display: block; width: auto; max-width: 100%; height: auto; border: 1px solid var(--cbrt-ink); } .catchr-blog-post-rich-text figure, .catchr-blog-post-rich-text .w-richtext-figure-type-image, .catchr-blog-post-rich-text .w-richtext-figure-type-video { width: auto; max-width: none; margin: 46px -44px; } .catchr-blog-post-rich-text figure > div, .catchr-blog-post-rich-text .w-richtext-figure-type-image > div, .catchr-blog-post-rich-text .w-richtext-figure-type-video > div { width: 100%; } .catchr-blog-post-rich-text figure img, .catchr-blog-post-rich-text .w-richtext-figure-type-image img { width: 100%; box-shadow: 8px 8px 0 var(--cbrt-ink); } .catchr-blog-post-rich-text figcaption, .catchr-blog-post-rich-text .w-richtext-figure-type-image figcaption, .catchr-blog-post-rich-text .w-richtext-figure-type-video figcaption { margin-top: 16px; color: var(--cbrt-muted); font-family: "DM Mono", monospace; font-size: 9px; font-style: normal; line-height: 1.5; text-align: center; text-transform: uppercase; } /* ========================================= VIDEOS ========================================= */ .catchr-blog-post-rich-text iframe { display: block; width: 100%; max-width: 100%; border: 1px solid var(--cbrt-ink); } .catchr-blog-post-rich-text .w-video { overflow: hidden; border: 1px solid var(--cbrt-ink); box-shadow: 8px 8px 0 var(--cbrt-ink); } /* ========================================= RESPONSIVE TABLES ========================================= */ .catchr-blog-post-rich-text .table-wrapper, .catchr-blog-post-rich-text .w-embed:has(> table) { display: block; width: 100%; min-width: 0; max-width: 100%; margin: 38px 0; overflow-x: auto; overflow-y: hidden; border: 1px solid var(--cbrt-ink); overscroll-behavior-inline: contain; scrollbar-color: var(--cbrt-purple) var(--cbrt-purple-soft); scrollbar-width: thin; -webkit-overflow-scrolling: touch; } .catchr-blog-post-rich-text .table-wrapper::-webkit-scrollbar, .catchr-blog-post-rich-text .w-embed:has(> table)::-webkit-scrollbar { height: 8px; } .catchr-blog-post-rich-text .table-wrapper::-webkit-scrollbar-track, .catchr-blog-post-rich-text .w-embed:has(> table)::-webkit-scrollbar-track { background: var(--cbrt-purple-soft); } .catchr-blog-post-rich-text .table-wrapper::-webkit-scrollbar-thumb, .catchr-blog-post-rich-text .w-embed:has(> table)::-webkit-scrollbar-thumb { border: 2px solid var(--cbrt-purple-soft); border-radius: 999px; background: var(--cbrt-purple); } .catchr-blog-post-rich-text table { width: 100%; min-width: 600px; margin: 38px 0; border: 1px solid var(--cbrt-ink); border-collapse: collapse; color: var(--cbrt-ink-2); font-size: 14px; line-height: 1.55; table-layout: auto; } .catchr-blog-post-rich-text .table-wrapper > table, .catchr-blog-post-rich-text .w-embed:has(> table) > table { width: max-content; min-width: 100%; margin: 0; border: 0; table-layout: auto; } .catchr-blog-post-rich-text th, .catchr-blog-post-rich-text td { padding: 15px 16px; border-right: 1px solid var(--cbrt-line); border-bottom: 1px solid var(--cbrt-line); text-align: left; vertical-align: top; } .catchr-blog-post-rich-text th:last-child, .catchr-blog-post-rich-text td:last-child { border-right: 0; } .catchr-blog-post-rich-text tr:last-child td { border-bottom: 0; } .catchr-blog-post-rich-text th { background: var(--cbrt-ink); color: #fff; font-family: "DM Mono", monospace; font-size: 9px; font-weight: 500; letter-spacing: 0.02em; text-transform: uppercase; } .catchr-blog-post-rich-text tbody tr:nth-child(even) { background: var(--cbrt-wash); } /* ========================================= CODE ========================================= */ .catchr-blog-post-rich-text code { padding: 0.16em 0.36em; background: var(--cbrt-purple-soft); color: var(--cbrt-purple-dark); font-family: "DM Mono", monospace; font-size: 0.84em; } .catchr-blog-post-rich-text pre { width: 100%; max-width: 100%; margin: 38px 0; overflow-x: auto; padding: 24px; border: 1px solid var(--cbrt-ink); background: var(--cbrt-ink); color: #fff; font-family: "DM Mono", monospace; font-size: 13px; line-height: 1.7; tab-size: 2; -webkit-overflow-scrolling: touch; } .catchr-blog-post-rich-text pre code { padding: 0; background: transparent; color: inherit; font-size: inherit; } /* ========================================= OPTIONAL CALLOUT ========================================= */ .catchr-blog-post-rich-text .article-callout { position: relative; margin: 42px 0; padding: 28px 30px 28px 72px; border: 1px solid var(--cbrt-ink); background: var(--cbrt-mint-soft); box-shadow: 7px 7px 0 var(--cbrt-ink); } .catchr-blog-post-rich-text .article-callout::before { position: absolute; top: 30px; left: 27px; width: 18px; height: 18px; border: 3px solid var(--cbrt-purple); border-radius: 50%; content: ""; } .catchr-blog-post-rich-text .article-callout::after { position: absolute; top: 50px; left: 34px; width: 10px; height: 3px; background: var(--cbrt-purple); content: ""; } .catchr-blog-post-rich-text .article-callout strong { display: block; margin-bottom: 5px; } .catchr-blog-post-rich-text .article-callout p { margin: 0; font-size: 15px; line-height: 1.65; } /* ========================================= TEXT SELECTION ========================================= */ .catchr-blog-post-rich-text ::selection { background: var(--cbrt-mint); color: var(--cbrt-ink); } /* ========================================= TABLET ========================================= */ @media (max-width: 991px) { .blog-post-content { grid-template-columns: minmax(0, 1fr); } .blog-post-content > * { width: 100%; min-width: 0; max-width: 100%; } .catchr-blog-post-rich-text { width: 100%; min-width: 0; max-width: 100%; } } /* ========================================= MOBILE LANDSCAPE ========================================= */ @media (max-width: 767px) { .catchr-blog-post-rich-text { font-size: 16px; line-height: 1.76; } .catchr-blog-post-rich-text > p:first-child { font-size: 19px; line-height: 1.62; } .catchr-blog-post-rich-text h2 { margin-top: 58px; font-size: 34px; } .catchr-blog-post-rich-text h3 { margin-top: 40px; font-size: 24px; } .catchr-blog-post-rich-text blockquote { padding-left: 20px; font-size: 20px; } .catchr-blog-post-rich-text figure, .catchr-blog-post-rich-text .w-richtext-figure-type-image, .catchr-blog-post-rich-text .w-richtext-figure-type-video { max-width: 100%; margin-right: 0; margin-left: 0; } .catchr-blog-post-rich-text .table-wrapper, .catchr-blog-post-rich-text .w-embed:has(> table) { width: 100%; max-width: 100%; margin-top: 32px; margin-bottom: 32px; } .catchr-blog-post-rich-text th, .catchr-blog-post-rich-text td { min-width: 150px; padding: 13px 14px; } /* Première colonne sticky */ .catchr-blog-post-rich-text th:first-child, .catchr-blog-post-rich-text td:first-child { position: sticky; z-index: 1; left: 0; min-width: 170px; box-shadow: 1px 0 0 var(--cbrt-line); } .catchr-blog-post-rich-text th:first-child { z-index: 2; background: var(--cbrt-ink); } .catchr-blog-post-rich-text td:first-child { background: #fff; } .catchr-blog-post-rich-text tbody tr:nth-child(even) td:first-child { background: var(--cbrt-wash); } } /* ========================================= MOBILE PORTRAIT ========================================= */ @media (max-width: 479px) { .catchr-blog-post-rich-text h2 { font-size: 31px; } .catchr-blog-post-rich-text h3 { font-size: 22px; } .catchr-blog-post-rich-text li { padding-left: 24px; } .catchr-blog-post-rich-text .article-callout { padding: 60px 20px 22px; } .catchr-blog-post-rich-text .article-callout::before { top: 21px; left: 21px; } .catchr-blog-post-rich-text .article-callout::after { top: 41px; left: 28px; } .catchr-blog-post-rich-text pre { padding: 18px; font-size: 12px; } } /* ========================================= REDUCED MOTION ========================================= */ @media (prefers-reduced-motion: reduce) { .catchr-blog-post-rich-text a { transition: none; } }

Introduction

Datasources and destinations

Fields listing for Firebase Realtime Database

Day of the month
Day of the year
Field ID_NORMALIZED_DATE_FIELD_DAY
TypeDAY
Data Typedimension
Day of the week
Week of the year
Field ID_NORMALIZED_DATE_FIELD_DAY_OF_WEEK
TypeDAY_OF_WEEK
Data Typedimension
Hour of the day
Hour of the day
Field ID_NORMALIZED_DATE_FIELD_HOUR
TypeHOUR
Data Typedimension
Month of the year
Month of the year
Field ID_NORMALIZED_DATE_FIELD_MONTH
TypeMONTH
Data Typedimension
Month and day
Month and day
Field ID_NORMALIZED_DATE_FIELD_MONTH_DAY
TypeMONTH_DAY
Data Typedimension
Quarter of the year
Quarter of the year
Field ID_NORMALIZED_DATE_FIELD_QUARTER
TypeQUARTER
Data Typedimension
Week of the year
Week of the year
Field ID_NORMALIZED_DATE_FIELD_WEEK
TypeWEEK
Data Typedimension
Week of the year (start Sunday)
Week of the year
Field ID_NORMALIZED_DATE_FIELD_WEEK_START_SUNDAY
TypeWEEK
Data Typedimension
Year
Year such as 2017.
Field ID_NORMALIZED_DATE_FIELD_YEAR
TypeYEAR
Data Typedimension
Year month
Year and month.
Field ID_NORMALIZED_DATE_FIELD_YEAR_MONTH
TypeYEAR_MONTH
Data Typedimension
Date
Year, month, and day.
Field ID_NORMALIZED_DATE_FIELD_YEAR_MONTH_DAY
TypeYEAR_MONTH_DAY
Data Typedimension
Year month day hour
Year, month, day, and hour.
Field ID_NORMALIZED_DATE_FIELD_YEAR_MONTH_DAY_HOUR
TypeYEAR_MONTH_DAY_HOUR
Data Typedimension
Year Quarter
Year and quarter.
Field ID_NORMALIZED_DATE_FIELD_YEAR_QUARTER
TypeYEAR_QUARTER
Data Typedimension
Year week
Year and week.
Field ID_NORMALIZED_DATE_FIELD_YEAR_WEEK
TypeYEAR_WEEK
Data Typedimension
Firebase Path
The absolute Firebase path for the extracted record.
Field ID_firebase_path
TypeTEXT
Data Typedimension
Firebase Record Key
The Firebase key for the extracted record.
Field ID_firebase_record_key
TypeTEXT
Data Typedimension