/* docs.css: the shared knowledge-base article shell, after Semrush's KB (semrush.com/kb/1184-audit-your-website, measured
   2026-10-16): a head row with the hub's name and a search field, the tree on the left, the article on a raised card with
   breadcrumbs above it, and a sticky right rail holding "On this page" (the article's h2s, the current one marked)
   and "Is this article helpful?". Under 1200px the rail folds into the card: the contents list after the lede, the
   question at the foot. Under 800px the tree becomes the disclosure above the article. Canonical:
   SkailSites/shared/docs.css, copied to every site by sync_shared.py. Tokens only; every value has a fallback. */
/* The disclosure chevron is Lucide's chevron-down, its ink centred in its box, so it sits on the label's centre in any
   font. The rotated half-bordered square it replaced needed a margin nudge that was right for Archivo and 3px high for
   the system font (board, 2026-10-22, nowlark.com/support/questions at 390). */
:root{--rf-chev:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E")}
.rf-wrap{--rf-side-w:248px;--rf-rail-w:200px;--rf-gap:32px;--rf-top:calc(var(--nav-h,72px) + 24px);
  /* Semrush's frame, measured 2026-10-18 (kb/1184-audit-your-website): 12px from the screen's edge at 1280, the card 728px
     wide, a 32px gap and a 200px rail; at 1440 and up the frame stops growing and the rail is 220px. */
  --rf-pad-x:clamp(24px,calc((100vw - 1280px) / 2 + 24px),40px);
  max-width:1360px;margin:0 auto;padding:calc(var(--rf-clear,var(--nav-h,72px)) + 24px) var(--rf-pad-x) 96px;
  display:grid;grid-template-columns:var(--rf-side-w) minmax(0,1fr) var(--rf-rail-w);column-gap:var(--rf-gap);align-items:start}
/* The frame clears the nav's height only where the nav is laid over the page (the shared .nav is fixed). The design
   system's .s-nav is sticky and takes its own room in the flow, so a page under it got the nav's height twice: a 90-112px
   empty band between the nav and the search row (the board, nowlark.com/support/questions, 2026-10-23). */
.s-nav~main,.s-nav~.rf-wrap,.s-nav~.rf-home{--rf-clear:0px}

/* The head row: the hub's name over the tree, the search field over the card (one subgrid, so both stay on their columns). */
.rf-top{grid-column:1/-1;display:grid;grid-template-columns:subgrid;align-items:center;margin:0 0 24px}
.rf-sr{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.rf-hub{display:inline-flex;align-items:center;min-height:44px;font-size:22px;font-weight:400;line-height:1.3;color:var(--ink);text-decoration:none}
.rf-hub:hover{color:var(--brand,#ffb23e)}
.rf-search{grid-column:2;position:relative;display:flex;gap:24px;align-items:center}
.rf-search input{flex:1;min-width:0;height:56px;padding:0 18px;
 font:inherit;font-size:16px;color:var(--ink);
  background:var(--rf-field,var(--rf-card,var(--surface,rgba(255,255,255,.04))));border:1px solid var(--control-line,var(--line,rgba(255,255,255,.14)));border-radius:var(--rf-r-ctl,6px)}
.rf-search input::placeholder{color:var(--ink3,var(--ink2))}
.rf-search input:focus-visible{outline:2px solid var(--brand,#ffb23e);outline-offset:1px}
/* The button is secondary to the field (Enter searches too): the field's radius and line, no fill of its own. */
.rf-search .rf-sbtn{flex:none;height:56px;min-width:120px;padding:0 28px;font:inherit;font-size:16px;font-weight:500;border-radius:var(--rf-r-ctl,6px);cursor:pointer;
  color:var(--ink);background:transparent;border:1px solid var(--control-line,var(--line,rgba(255,255,255,.14)))}
.rf-search .rf-sbtn:hover{border-color:var(--ink3,var(--ink2))}
.rf-hits{position:absolute;left:0;right:0;top:calc(100% + 6px);z-index:20;margin:0;padding:6px;list-style:none;max-height:min(60vh,420px);overflow:auto;
  background:var(--rf-pop,var(--page,#111));border:1px solid var(--line,rgba(255,255,255,.14));border-radius:var(--rf-r-ctl,8px);box-shadow:0 12px 32px rgba(0,0,0,.28)}
.rf-hits a{display:block;padding:10px 12px;border-radius:6px;color:var(--ink);text-decoration:none;line-height:1.35}
.rf-hits a small{display:block;color:var(--ink3,var(--ink2));font-size:13px;margin-top:2px}
.rf-hits a:hover,.rf-hits a[aria-selected=true]{background:var(--brand-tint,rgba(255,178,62,.12))}
.rf-hits .rf-none{padding:10px 12px;color:var(--ink2)}

/* The tree. */
/* Sticky with its own scroll, so a short article ends above the footer instead of over an empty column. Its foot fades
   out, so a tree taller than the screen reads as one that scrolls, not one cut off. No padding under its last row: the
   fade is gone at the end of the scroll (docs.js .rf-more), and a 40px pad made a tree that fits scroll by its own
   padding, its first heading sliced by the top fade (the board, nowlark.com/guides at 1280, 2026-10-29). */
.rf-side{grid-column:1;position:sticky;top:var(--rf-top);max-height:calc(100vh - var(--rf-top) - 24px);overflow:auto;font-size:14px;
  overscroll-behavior:contain}
.rf-wrap .rf-side{padding-right:12px!important}
/* The fade marks rows out of view (docs.js sets .rf-more and .rf-scrolled), so a tree that fits shows its last row in full. */
.rf-wrap .rf-side.rf-more{-webkit-mask-image:linear-gradient(to bottom,#000 calc(100% - 40px),transparent);
  mask-image:linear-gradient(to bottom,#000 calc(100% - 40px),transparent)}
.rf-wrap .rf-side.rf-scrolled:not(.rf-more){-webkit-mask-image:linear-gradient(to bottom,transparent,#000 32px);
  mask-image:linear-gradient(to bottom,transparent,#000 32px)}
.rf-wrap .rf-side.rf-scrolled.rf-more{-webkit-mask-image:linear-gradient(to bottom,transparent,#000 32px,#000 calc(100% - 40px),transparent);
  mask-image:linear-gradient(to bottom,transparent,#000 32px,#000 calc(100% - 40px),transparent)}
/* The pane's scrollbar stays drawn (macOS hides an overlay scrollbar until the pointer scrolls, which read as a tree cut
   off by its fade). A styled ::-webkit-scrollbar is always shown; scrollbar-width or scrollbar-color would switch it off. */
.rf-wrap .rf-side::-webkit-scrollbar{width:8px}
.rf-wrap .rf-side::-webkit-scrollbar-thumb{background:var(--ink3);border-radius:4px;border:2px solid transparent;background-clip:padding-box}
.rf-wrap .rf-side::-webkit-scrollbar-track{background:transparent}
.rf-side{background:none!important;border:0!important;box-shadow:none!important;backdrop-filter:none!important;padding:0 4px 0 0!important;border-radius:0!important}
.rf-side nav{position:relative}
.rf-side h4,.rf-side .rf-g{position:relative;margin:0;padding:11px 10px 12px 30px;font-size:14px;line-height:21px;font-weight:500;letter-spacing:0;text-transform:none;color:var(--ink2)}
.rf-side h4::before,.rf-side .rf-g::before{content:"";position:absolute;left:11px;top:17px;width:6px;height:6px;border:solid currentColor;border-width:0 1.5px 1.5px 0;transform:rotate(45deg)}
/* A topic whose pages are not listed under it points right, not down. */
.rf-side a.rf-g:not(:has(+a:not(.rf-g)))::before{left:9px;top:16px;transform:rotate(-45deg)}
/* A page with nothing under it (the glossary) is a leaf: no chevron at all. */
.rf-side a.rf-g.rf-leaf::before,.rf-mob a.rf-g.rf-leaf::before{content:none}
.rf-side a{display:block;margin:0;padding:11px 10px 12px 30px;text-wrap:balance;border-radius:0;color:var(--ink3,var(--ink2));text-decoration:none;font-size:14px;line-height:21px;font-weight:500}
.rf-side .rf-g~a:not(.rf-g){padding-left:44px}
/* A tree label wraps in balanced lines: pretty left "PageSoar" alone under "Your first ten minutes in" (the board,
   pagesoar.com/help at 1280, 2026-10-29). A tree that opens on a link has that link's text on the article's first line,
   not 11px under it. */
.rf-side nav>a:first-child{margin-top:-11px}
/* An h4 is a fixed section header, not a topic that opens (nowlark.com's API and support panes): no chevron, the text
   colour, and its links on its own text edge, as a Finder or Mail sidebar groups its rows. */
.rf-side h4{padding-top:20px;padding-bottom:4px;font-weight:600;color:var(--ink)}.rf-side h4:first-child{padding-top:0}
.rf-side h4::before,.rf-mob h4::before{content:none}
/* A tree with no topic that opens (only fixed h4 headers) has no chevron to clear, so its rows start 12px into their pill
   rather than 30px: the 18px it gave back let most labels sit on one line (the board, nowlark.com/guides at 1280). */
.rf-side nav:not(:has(.rf-g)) :is(h4,a),.rf-side nav:not(:has(.rf-g)) .rf-g~a:not(.rf-g){padding-left:12px}
.rf-wrap:not(:has(.rf-side .rf-g)) .rf-top .rf-hub{padding-left:12px}
.rf-side a.rf-g{color:var(--ink2)}.rf-side a.rf-g:hover,.rf-side a.rf-g[aria-current=page]{color:var(--ink)}
.rf-side a:hover{color:var(--ink)}
.rf-side a[aria-current=page]{color:var(--ink);background:var(--brand-tint,rgba(127,127,127,.1));border-radius:6px;font-weight:500}
/* The hub's name starts on the tree's text edge, not left of it. */
.rf-top .rf-hub{padding-left:30px}
/* Every tree row is 44px, rows touching, mouse or finger: a tap between two lands on one of them. */

/* The article column: breadcrumbs, then the card. */
.rf-main{grid-column:2;min-width:0}
.rf-main>.s-crumbs,.rf-main>.rf-crumbs{margin:0 0 16px}
.rf-crumbs ol{display:flex;flex-wrap:wrap;gap:4px 12px;margin:0;padding:0;list-style:none;font-size:14px;line-height:21px;color:var(--ink3,var(--ink2))}
/* The separator ends the item before it, so a crumb that wraps starts its line with its own words, not a lone slash. */
.rf-crumbs li:not(:last-child)::after{content:"/";margin-left:12px;color:var(--ink3,var(--ink2))}
.rf-crumbs a{color:var(--ink2);text-decoration:none}.rf-crumbs a:hover{color:var(--ink);text-decoration:underline}
/* The article is the page itself, not a card: framed, every figure, code box and list of guides in it was a box inside a
   box, and the frame ran wider than the prose it held (the board, nowlark.com/guides, 2026-10-24). Its column hugs the
   measure, so prose, figure and code end on one edge. */
.rf-art{grid-column:2;min-width:0;background:none;border:0;border-radius:0;padding:0}
.rf-main>.rf-art{grid-column:auto}
.rf-art p,.rf-art li,.rf-art td,.rf-art em{overflow-wrap:break-word}   /* a long URL in prose wraps; headings and endpoint lines keep their words whole */
.rf-art>h1{font-size:clamp(32px,3.4vw,42px);line-height:1.2;font-weight:700;letter-spacing:0;margin:0 0 16px}
/* A heading fills its line before it wraps (Semrush: plain wrapping). A site's own `text-wrap: balance` on every heading
   split a title that just missed one line into two half lines, a strip of empty card beside both (orgomedia.ai, 2026-10-18);
   pretty still keeps a last word from standing alone. */
.rf-art :is(h1,h2,h3,h4),.rf-home :is(h1,h2){text-wrap:pretty}
.rf-art>.s-crumbs+h1,.rf-art>.rf-crumbs+h1{margin-top:12px}
.rf-art .rf-lede{font-size:16px;line-height:24px;color:var(--ink);margin:0 0 16px}
.rf-art h2{font-size:clamp(24px,2.4vw,32px);line-height:1.2;font-weight:700;margin:56px 0 16px;scroll-margin-top:calc(var(--nav-h,72px) + 20px)}
.rf-art h3{font-size:22px;line-height:1.3;font-weight:700;margin:44px 0 16px;scroll-margin-top:calc(var(--nav-h,72px) + 20px)}
.rf-art h4{font-size:16px;margin:24px 0 8px;scroll-margin-top:calc(var(--nav-h,72px) + 20px)}
.rf-art :is(h2,h3,h4) .rf-a{margin-left:8px;opacity:0;color:var(--ink3,var(--ink2));text-decoration:none;font-weight:400}
.rf-art :is(h2,h3,h4):hover .rf-a,.rf-art .rf-a:focus{opacity:1}
.rf-art p,.rf-art li{line-height:24px;max-width:none}.rf-art p{margin:0 0 16px}
/* The lede is one sentence at a larger size: 68ch keeps it under 80 characters a line where the article spans the rail
   column (a topic page has no rail), wrapping it into two full lines instead of one 112-character line. */
.rf-art .rf-lede{max-width:68ch}.rf-art ul,.rf-art ol{padding-left:22px}
.rf-art li+li{margin-top:4px}
.rf-art a{color:var(--brand,#ffb23e)}
.rf-art code{font:0.92em var(--font-mono,ui-monospace,monospace);background:rgba(127,127,127,.12);padding:2px 6px;border-radius:6px}
.rf-art pre{margin:16px 0;padding:16px 18px;border-radius:var(--r-ctl,10px);background:var(--page);border:1px solid var(--control-line,var(--line));overflow:auto;line-height:1.6}
.rf-art>pre,.rf-art>.rf-code,.rf-art blockquote{max-width:74ch}   /* code and quotes hold the prose measure; tables keep the column */
.rf-art pre code{background:none;padding:0;font-size:13.5px}
.rf-art table{width:100%;border-collapse:collapse;margin:16px 0;font-size:14.5px}
@media(max-width:1100px){.rf-art table{display:block;overflow:auto}}
@media(max-width:1100px){.rf-art th,.rf-art td{min-width:9em}}
.rf-art th,.rf-art td{text-align:left;padding:10px 14px;border-bottom:1px solid var(--line,rgba(255,255,255,.12));vertical-align:top}
.rf-art th{font-weight:600;color:var(--ink);white-space:nowrap}
.rf-art blockquote{margin:16px 0;padding:4px 18px;border-left:3px solid var(--brand,#ffb23e);color:var(--ink2)}
/* Screenshots and console remakes sit in a soft frame, as Semrush's do (radius 10, a 16px shadow). */
.rf-art figure{margin:24px 0}
.rf-art figure img,.rf-art>p>img,.rf-art .rf-shot{display:block;max-width:100%;height:auto;border-radius:var(--rf-r-shot,10px);box-shadow:var(--rf-shot-shadow,4px 4px 16px rgba(0,0,0,.24))}
.rf-art figcaption{margin-top:10px;font-size:14px;color:var(--ink3,var(--ink2))}
/* A note: Semrush's tinted tip box. */
.rf-note{margin:20px 0;padding:14px 18px;border-radius:var(--rf-r,10px);background:var(--brand-tint,rgba(255,178,62,.1));max-width:74ch}
.rf-note>:first-child{margin-top:0}.rf-note>:last-child{margin-bottom:0}
/* A call to action inside an article (Semrush's green "Launch Site Audit"). */
.rf-cta{display:inline-flex;align-items:center;gap:8px;margin:8px 0 4px;padding:12px 26px;border-radius:999px;font-weight:600;text-decoration:none!important;
  color:var(--on-brand,#111)!important;background:var(--brand,#ffb23e)}
.rf-cta:hover{filter:brightness(1.06)}
/* A paragraph that only holds a site's own button is a row, not a second pill around it ("Get Nowlark free", the board). */
p.rf-cta:has(>a){display:block;padding:0;border-radius:0;background:none;margin:24px 0 0}p.rf-cta:has(>a):hover{filter:none}
.rf-ep{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:12px 0}
.rf-m{font:700 12px var(--font-mono,ui-monospace,monospace);padding:3px 8px;border-radius:6px;background:var(--brand-tint2,rgba(255,178,62,.15));color:var(--brand,#ffb23e);letter-spacing:.04em}
/* Previous and next: two plain links under one rule, no boxes inside the card. */
/* Previous and next share a row while both titles fit on one line each, and stack when they do not (2026-10-18: a
   half-width column wrapped "Do I even need all that? (Standalone mode)" by 19px beside an empty half). */
.rf-pn{display:flex;flex-wrap:wrap;justify-content:space-between;gap:16px 32px;margin-top:40px;padding-top:20px;border-top:1px solid var(--line,rgba(255,255,255,.12))}
.rf-pn a{display:block;min-height:44px;padding:10px 0;text-decoration:none;color:var(--rf-link,var(--brand,#ffb23e));font-weight:600;text-wrap:balance}
.rf-pn .pv small::before{content:"\2039\00a0"}.rf-pn .nx small::after{content:"\00a0\203a"}
/* After a topic's rows the rows' own bottom rule is the divider. */
.rf-rows+.rf-pn{margin-top:0;padding-top:4px;border-top:0}
.rf-pn a:hover{text-decoration:underline}
.rf-pn a small{display:block;color:var(--ink3,var(--ink2));margin-bottom:4px;font-weight:400}.rf-pn>a{flex:1 1 auto;max-width:100%}.rf-pn>span:empty{display:none}.rf-pn .nx{text-align:right}
.rf-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px;margin:24px 0}
.rf-cards a{display:block;padding:20px;border:1px solid var(--line,rgba(255,255,255,.12));border-radius:var(--rf-r,10px);text-decoration:none;color:var(--ink);text-wrap:pretty}
.rf-cards a:hover{border-color:var(--ink3,var(--ink2))}
.rf-cards a b{display:block;margin-bottom:6px}.rf-cards a span{color:var(--ink2);font-size:14.5px}
/* Copy sits at the code box's top-right corner, as Stripe and Vercel put it (the owner, 2026-10-22); since 2026-10-28 in
   the bar above the code (below), and this clip applies only to a host that floats it over the code again. Only the line beside it
   gives way: docs.js puts that line in .rf-l1, clipped --rf-cut short of the edge (the pill's widest label, "Copied") and
   scrolled with the box, so every other line runs the full width (the board, round 2: an 84px column kept clear down the
   whole box cut lines 140px short of the edge). A clip, not a mask, so the layout guard sees the text end where it does. */
.rf-code{position:relative;display:grid;margin:16px 0}.rf-code pre{grid-area:1/1;margin:0}
/* The code, not the box, scrolls and never breaks a token: a long line fades over its last 48px until it is scrolled to. */
.rf-code pre:has(>code){overflow:hidden}.rf-code pre>code{display:block;overflow-x:auto;white-space:pre;overflow-wrap:normal;word-break:normal;line-height:1.6}
.rf-code pre>code::-webkit-scrollbar{height:8px}
.rf-code pre>code::-webkit-scrollbar-thumb{background:var(--ink3,var(--ink2));border-radius:4px;border:2px solid transparent;background-clip:padding-box}
.rf-code pre>code::-webkit-scrollbar-track{background:transparent}
.rf-code.rf-more pre>code{-webkit-mask-image:linear-gradient(to right,#000 calc(100% - 48px),transparent);mask-image:linear-gradient(to right,#000 calc(100% - 48px),transparent)}
.rf-l1{display:inline-block;vertical-align:top;max-width:calc(100% - var(--rf-cut,0px));overflow:hidden}
.rf-l1[data-more]{-webkit-mask-image:linear-gradient(to right,#000 calc(100% - 24px),transparent);mask-image:linear-gradient(to right,#000 calc(100% - 24px),transparent)}
/* A message to paste (PageSoar's note for a host, a bare <pre>) is prose: it wraps at spaces, round a gap the size of Copy. */
.rf-code.rf-prose pre>code{white-space:pre-wrap}
.rf-gap{display:none}.rf-prose .rf-gap{display:block;float:right;width:var(--rf-cut,0px);height:var(--rf-band,0px)}
.rf-copy{font:600 12px var(--font,inherit);padding:6px 12px;border-radius:999px;border:1px solid var(--control-line,var(--line));background:var(--page);color:var(--ink2);cursor:pointer}
.rf-copy:hover{color:var(--ink)}.rf-copy[data-ok]{color:var(--brand,#ffb23e)}
.rf-copy{position:absolute;top:8px;right:8px;z-index:1}
/* The pill stays small; what a finger hits is 44px tall. */
.rf-copy::after{content:"";position:absolute;inset:-8px}
/* Copy sits in a bar above the code, the code's language at the bar's start (docs.js reads it from the code), as Stripe's
   docs do at every width: beside the first line it covered the end of a command 30 characters wide on a phone, and a
   phone-only bar made two Copy styles (the board, nowlark.com/support/questions and /api, 2026-10-23). docs.js reads the
   static pill and clips nothing. The code still scrolls, its scrollbar drawn. */
.rf-code{grid-template-rows:auto auto;grid-template-columns:minmax(0,1fr) auto}
.rf-code::before{content:"";grid-area:1/1/2/3;border:1px solid var(--control-line,var(--line));border-bottom:0;border-radius:var(--r-ctl,10px) var(--r-ctl,10px) 0 0;
  background:var(--rf-card,var(--surface,rgba(255,255,255,.035)))}
.rf-code pre{grid-area:2/1/3/3;border-top-left-radius:0;border-top-right-radius:0}
.rf-code .rf-copy{position:relative;top:auto;right:auto;grid-area:1/2;justify-self:end;margin:8px 10px}
.rf-lang{grid-area:1/1;align-self:center;margin-left:16px;font:500 12px/1 var(--font,inherit);color:var(--ink3,var(--ink2))}


/* The right rail (docs.js fills it): "On this page", then "Is this article helpful?". */
.rf-rail{grid-column:3;position:sticky;top:var(--rf-top);max-height:calc(100vh - var(--rf-top) - 24px);overflow:auto;font-size:14px}
/* The rail's heading starts level with the tree's and the article's first line: it clears the trail only where one sits
   above the article (three start heights on load, the board, nowlark.com/guides, 2026-10-24). */
.rf-wrap:has(>.rf-main>:is(.s-crumbs,.rf-crumbs)) .rf-rail{margin-top:37px}
.rf-rail:empty{display:none}
/* The tree keeps 12px on its right for its scrollbar, so the rail starts 12px into its column too: the gaps either side of
   the article read the same (the board, pagesoar.com/help at 1280, 2026-10-29: 45px against 33px; orgomedia.ai's item 129). */
.rf-rail{padding-left:12px}
/* A page with no rail (a topic's list) gives its column to the article, so nothing sits empty on the right. Desktop
   only: on a phone grid-column:2/-1 made a second column and laid the search and the menu in one cell. */
.rf-toc-h{margin:0 0 8px;padding-left:10px;font-size:14px;line-height:20px;font-weight:700;color:var(--ink)}
.rf-toc ol{list-style:none;margin:0;padding:0}
.rf-toc li{margin:0}.rf-toc li+li{margin-top:2px}
.rf-toc a{display:block;padding:5px 10px;border-radius:6px;color:var(--ink2);text-decoration:none;line-height:21px}
.rf-toc a:hover{color:var(--ink)}
/* A numbered section ("2. Start with what is worth most") hangs its wrapped line under its words, not its number. */
:is(.rf-toc,.rf-toc-in) a:has(>.rf-n){display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:.3em}
/* The item being read is marked by colour alone: a bolder weight re-wrapped a long item to two lines and dropped every
   row under it, and "Is this article helpful?", a line as the page scrolled (the board, 2026-10-23). */
.rf-toc a{font-weight:400}
/* The rail and the tree keep pretty wrapping: greedy filled each first line but left "opened", "sends" and "Nowlark?"
   alone on the second (the board's re-review, 2026-10-28), which the board fails harder than a first line one word short. */
.rf-toc a{text-wrap:balance}   /* pretty could not lift "share" to sit with "notifications?" (2026-10-28) */
/* The section being read wears the tree's pill, so the two columns mark "here" one way (the board, 2026-10-24: a pill on
   the left, only brighter text on the right). */
.rf-toc a[aria-current=true]{color:var(--ink);background:var(--brand-tint,rgba(127,127,127,.1))}
@media (pointer:coarse){.rf-toc li+li{margin-top:0}.rf-toc a{padding-top:11px;padding-bottom:12px}}
.rf-rail .rf-helpful{margin-top:28px;padding:28px 0 0 10px;border-top:1px solid var(--line,rgba(255,255,255,.12))}   /* on the contents' text edge, 10px in (the board: two left edges in one column) */
.rf-rail .rf-helpful:first-child{margin-top:0;padding-top:0;border-top:0}
.rf-helpful p{margin:0 0 10px;font-size:14px;color:var(--ink2)}
.rf-helpful div{display:flex;gap:8px}
.rf-helpful button{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:56px;min-height:44px;padding:0 16px;font:inherit;font-size:14px;font-weight:600;
  border-radius:var(--rf-r-ctl,6px);border:1px solid var(--control-line,var(--line,rgba(255,255,255,.14)));background:transparent;color:var(--ink);cursor:pointer}
.rf-helpful button:hover{border-color:var(--ink3,var(--ink2))}
.rf-helpful button svg{width:18px;height:18px}.rf-helpful svg.rf-down{transform:scale(1,-1)}   /* a class, not a style attribute: a strict CSP (style-src 'self') drops those */
.rf-helpful [role=status]{margin:0;color:var(--ink)}
/* The folded copies inside the card, shown only where the rail is not. */
.rf-toc-in,.rf-art>.rf-helpful{display:none}
.rf-art>.rf-helpful{margin-top:40px;padding-top:20px;border-top:1px solid var(--line,rgba(255,255,255,.12))}
.rf-toc-in{margin:0 0 28px;padding:0;border-block:1px solid var(--control-line,var(--line,rgba(255,255,255,.12)))}
.rf-toc-in summary{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:48px;font-weight:600;color:var(--ink);cursor:pointer;list-style:none}
.rf-toc-in summary::-webkit-details-marker{display:none}
.rf-toc-in summary::after{content:"";flex:none;width:16px;height:16px;background:currentColor;-webkit-mask:var(--rf-chev) center/16px no-repeat;mask:var(--rf-chev) center/16px no-repeat}
.rf-toc-in[open] summary::after{transform:rotate(180deg)}
/* A host's own disclosure chevron outranks these by specificity (Nowlark's controls.css,
   details:not(.passwrap):not(.s-q):not(.s-menu):not(.hdmenu)>summary::after, a 6px box nudged 2px up), so the help
   centre's box is pinned here, the same on every site. */
:is(.rf-mob,.rf-toc-in) summary::after{box-sizing:border-box!important;width:16px!important;height:16px!important;border:0!important;margin:0!important;transform:none!important}
:is(.rf-mob,.rf-toc-in)[open] summary::after{transform:rotate(180deg)!important}
/* Open, the questions are quiet rows in the text colour, as on the hub, not a column of accent links. */
.rf-toc-in ol{list-style:none;margin:0;padding:4px 0 12px}.rf-toc-in li{margin:0}
.rf-toc-in a{display:block;padding:12px;border-radius:6px;color:var(--ink2);text-decoration:none;text-wrap:pretty}.rf-toc-in a:hover{color:var(--ink)}
/* The section being read is marked in the card's list too, as in the rail (the board: the phone list marked none). */
.rf-toc-in a[aria-current=true]{color:var(--ink);background:var(--brand-tint,rgba(127,127,127,.1))}

/* The head row's field is the card's width, its button ending on the card's edge, on every page (Semrush: the form and
   the card share both edges). It spanned the card and rail until 2026-10-18 and so ran past the card under it. A page
   without a rail keeps its card in the card's column too, as Semrush's kb/837 does: spread over the rail's column, a
   topic page's rows left their one-line summaries 600px short of the chevron (board, 2026-10-22). The tree, the field
   and the card never move between pages. */
@media(min-width:1440px){.rf-wrap{--rf-rail-w:220px}}
.rf-mob{display:none}
@media(max-width:1199px){
  .rf-wrap{grid-template-columns:var(--rf-side-w) minmax(0,1fr)}
  .rf-rail{display:none}
  .rf-toc-in,.rf-art>.rf-helpful{display:block}
}
@media(max-width:1100px){.rf-wrap{--rf-side-w:224px}}
@media(max-width:800px){
  .rf-wrap{grid-template-columns:minmax(0,1fr);--rf-pad-x:16px;padding-bottom:48px}   /* a phone keeps the 16px gutter, and the last band sits 48px over the footer */
  .rf-top{grid-template-columns:minmax(0,1fr);gap:12px;margin-bottom:20px}.rf-top .rf-hub{display:none}
  .rf-search{grid-column:1;gap:8px}.rf-search input,.rf-search .rf-sbtn{height:48px}.rf-search .rf-sbtn{min-width:0;padding:0 20px}
  .rf-side{display:none}.rf-main,.rf-art{grid-column:1}
  .rf-art>h1{font-size:28px;text-wrap:wrap}
  /* The trail stays on a phone, the way back up (the board, 2026-10-23: no breadcrumbs at 390). The article's own contents
     are their own row under the lede, drawn as the menu's row is: folded into the menu they sat under every other page's
     link, a screen down, behind a label that named the other pages (the board, 2026-10-29). */
  .rf-main>:is(.s-crumbs,.rf-crumbs){margin:0 0 12px}
  /* The trail names the parents only: the page's own name, the heading right under it, wrapped onto a line of its own
     after a bare slash (the board, pagesoar.com/help at 390, 2026-10-29). iOS shows the parent alone. */
  .rf-main>:is(.s-crumbs,.rf-crumbs) li:last-child{display:none}
  .rf-main>:is(.s-crumbs,.rf-crumbs) li:nth-last-child(2)::after{content:none}
  .rf-mob summary::-webkit-details-marker{display:none}
  .rf-mob summary::after{content:"";flex:none;width:16px;height:16px;background:currentColor;-webkit-mask:var(--rf-chev) center/16px no-repeat;mask:var(--rf-chev) center/16px no-repeat}
  .rf-mob[open] summary::after{transform:rotate(180deg)}
  /* The site's menu and "On this page" are one control drawn one way: a row between hairlines, its label at the start and
     the chevron on the same right edge, no field or fill (the board, 2026-10-24: a bordered field over a hairline row read
     as two controls, and the field as the site's own menu). Open, its rows hang under it on the page's text edge, no second
     box, every row 12px inside the gutter so the current page's pill stays on the page's 16px edge; group headings always open take no chevron. */
  .rf-mob{display:block;margin-bottom:24px;border-block:1px solid var(--control-line,var(--line,rgba(255,255,255,.12)))}
  .rf-mob summary{display:flex;width:100%;align-items:center;justify-content:space-between;gap:8px;min-height:48px;padding:0;border:0;background:none;
    font-weight:600;color:var(--ink);cursor:pointer;list-style:none}
  .rf-mob:not([open]) .rf-mob-list{display:none}
  .rf-mob[open] .rf-mob-list{margin:0;padding:4px 0 12px;border:0;border-radius:0;background:none}
  .rf-mob nav{padding:0}
  .rf-mob a{display:block;position:relative;margin:0;padding:12px;text-wrap:pretty;border-radius:6px;color:var(--ink2);text-decoration:none}
  .rf-mob h4,.rf-mob .rf-g{position:relative;margin:0;padding:16px 12px 6px;font-size:inherit;font-weight:600;color:var(--ink)}
  .rf-mob a.rf-g{padding:12px 12px 12px 30px}
  .rf-mob .rf-g::before{content:"";position:absolute;left:12px;top:19px;width:6px;height:6px;border:solid currentColor;border-width:0 1.5px 1.5px 0;transform:rotate(45deg)}
  .rf-mob a.rf-g:not(:has(+a:not(.rf-g)))::before{left:10px;top:20px;transform:rotate(-45deg)}
  .rf-mob .rf-g~a:not(.rf-g){padding-left:30px}
  .rf-mob a[aria-current=page]{color:var(--ink);background:var(--brand-tint,rgba(127,127,127,.1))}
  .rf-pn{flex-direction:column}.rf-pn .nx{text-align:left}
}

/* The hub home, after semrush.com/kb (measured 2026-10-16): "How can we help you?" over the search, a 3-column grid of
   category cards (icon, title, one line), a bordered band with one action, sections headed at 42px (Learn cards, quick
   links) and a larger support band. Markup: main.rf-home > .rf-home-top (h1 + form.rf-search), ul.rf-cats > li >
   a.rf-cat (.rf-cat-i, .rf-cat-t, .rf-cat-d), section.rf-band (div + optional .rf-band-art), section.rf-sec (h2.rf-sec-h
   + ul.rf-cats.rf-learn, ul.rf-quick or ol.rf-steps). A category page is the article shell with ul.rf-rows inside the card. */
.rf-home{max-width:1185px;margin:0 auto;padding:calc(var(--rf-clear,var(--nav-h,72px)) + 24px) clamp(16px,3vw,40px) 96px}
.rf-home-top{padding:60px 0 0;margin:0 0 56px}
.rf-home-top h1{font-size:clamp(34px,4.2vw,48px);line-height:1.2;font-weight:700;letter-spacing:0;margin:0 0 28px;color:var(--ink)}
.rf-home-top .rf-search{max-width:none}
.rf-cats{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:32px}
/* Each tile spans three rows of the list (name, line, count) as a subgrid, so the lines of one row of tiles start level
   however many lines a name takes, and the counts sit on one line at the foot. */
.rf-cats>li{margin:0;display:grid;grid-row:span 3;grid-template-rows:subgrid;row-gap:0}
.rf-cats>li>.rf-cat{grid-row:1/-1;grid-template-rows:subgrid}
/* a tile with no article count (nowlark.com/support) spans two rows, not three, and keeps its top padding at the bottom,
   so the card ends with its text (the board, 2026-10-22: 45px of nothing under every description) */
.rf-cats>li:not(:has(.rf-cat-n)){grid-row:span 2}
@media(min-width:641px){.rf-cat:not(:has(.rf-cat-n)){padding-bottom:20px}}
.rf-cat{flex:1;display:grid;grid-template-columns:44px minmax(0,1fr);column-gap:12px;row-gap:10px;align-items:start;align-content:start;grid-template-rows:auto auto 1fr;
  padding:20px 28px 28px;border:1px solid var(--rf-card-line,var(--line,rgba(255,255,255,.12)));border-radius:var(--rf-r-lg,10px);
  background:var(--rf-card,var(--surface,rgba(255,255,255,.035)));color:var(--ink);text-decoration:none;transition:border-color .15s,box-shadow .15s}
.rf-cat:hover{border-color:var(--ink3,var(--ink2));box-shadow:0 10px 30px rgba(0,0,0,.12)}
.rf-cat:focus-visible{outline:2px solid var(--brand,#ffb23e);outline-offset:2px}
.rf-cat-i{width:44px;height:44px;display:grid;place-items:center;color:var(--brand,#ffb23e)}
.rf-cat-i svg,.rf-cat-i .rf-ico{width:36px;height:36px}
/* Semrush's help centre: the topic's icon on its name's line, the name centred on it (docs_icons.py has the glyphs). */
.rf-cat-t{align-self:center;font-size:18px;line-height:1.3;font-weight:600;text-wrap:balance}
/* Wrapped greedily: pretty pulled a tile's first line 20-45px short of its edge (the board, nowlark.com/support, 2026-10-23). */
.rf-cat-d{grid-column:1/-1;font-size:14px;line-height:21px;color:var(--ink2);text-wrap:wrap}
/* A tile without an icon: one column, its count last. */
.rf-cat:not(:has(.rf-cat-i)){display:flex;flex-direction:column;gap:8px}

.rf-cat-n{grid-column:1/-1;align-self:end;padding-top:4px;font-size:13px;line-height:18px;color:var(--ink3,var(--ink2))}
.rf-learn .rf-cat{grid-template-columns:minmax(0,1fr);row-gap:8px}
.rf-learn .rf-cat-i{width:72px;height:72px;margin-bottom:8px;border-radius:16px;background:var(--brand-tint,rgba(255,178,62,.12))}
.rf-learn .rf-cat-i svg{width:40px;height:40px}
.rf-learn .rf-cat-t{font-size:16px}
.rf-sec{margin:96px 0 0}
.rf-sec-h{font-size:clamp(28px,3.4vw,42px);line-height:1.2;font-weight:700;letter-spacing:0;margin:0 0 28px;color:var(--ink)}
.rf-band{margin:56px 0 0;display:flex;align-items:center;justify-content:space-between;gap:32px;padding:28px;
  border:1px solid var(--rf-card-line,var(--line,rgba(255,255,255,.12)));border-radius:var(--rf-r-lg,10px);background:var(--rf-card,var(--surface,rgba(255,255,255,.035)))}
.rf-band h2,.rf-band-t{font-size:18px;line-height:1.3;font-weight:600;margin:0 0 6px;color:var(--ink)}
.rf-band p{margin:0 0 16px;font-size:14px;line-height:21px;color:var(--ink2)}.rf-band p:last-child{margin-bottom:0}
.rf-band .rf-cta{margin:0}
/* The words take the row and the action ends it on the right edge, so the band holds no empty stretch. */
.rf-band>div:not(.rf-band-art):first-child{flex:0 1 auto;min-width:0}.rf-band>:last-child{flex:none}
.rf-band-art{flex:none;width:clamp(120px,14vw,180px);color:var(--brand,#ffb23e)}
.rf-band-art svg{display:block;width:100%;height:auto}
.rf-band-lg{margin-top:96px;padding:50px 56px;border-radius:16px;box-shadow:10px 10px 45px rgba(0,0,0,.1)}
.rf-band-lg h2{font-size:clamp(28px,3.4vw,42px);line-height:1.2;font-weight:700;margin:0 0 12px;max-width:12ch}
.rf-band-lg p{font-size:16px;line-height:24px;margin-bottom:28px;max-width:40ch}
.rf-band-lg .rf-band-art{width:clamp(160px,20vw,260px)}
/* A hub's "read these first": three numbered steps on one line, a rule above each, no boxes; the whole step is the link
   (its title's box stretched over it) and .rf-go says so. Markup: ol.rf-steps > li > a + p + span.rf-go. */
.rf-steps{list-style:none;counter-reset:rf-step;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:40px}
.rf-steps li{position:relative;counter-increment:rf-step;margin:0;display:flex;flex-direction:column;align-items:flex-start;padding-top:24px;border-top:1px solid var(--line,rgba(255,255,255,.12))}
.rf-steps li::before{content:counter(rf-step);display:block;margin:0 0 12px;font-size:32px;font-weight:700;line-height:1;color:var(--brand,#ffb23e)}
.rf-steps a{font-size:20px;font-weight:600;line-height:1.3;color:var(--ink);text-decoration:none}
.rf-steps a::after{content:"";position:absolute;inset:0}
.rf-steps a:hover{color:var(--brand,#ffb23e)}
.rf-steps p{margin:8px 0 0;font-size:14px;line-height:1.55;color:var(--ink2);max-width:65ch}
/* each step's link sits on one line across the row, however long the line above it runs */
.rf-go{display:inline-block;margin-top:auto;padding-top:12px;font-size:14px;font-weight:600;color:var(--rf-link,var(--brand,#ffb23e))}
.rf-steps li:hover .rf-go{text-decoration:underline}
/* three across down to a small tablet (at 768 one column ran a 65ch step two thirds of the way across the band below) */
@media(max-width:600px){.rf-steps{grid-template-columns:minmax(0,1fr);gap:24px}}
/* .rf-steps-rows: the steps as one row each, number, title, line and link across, for a hub whose tiles above are three
   across already (the layout guard's same-shape-twice, pagesoar.com/resources 2026-10-21). Phones stack as before. */
@media(min-width:1000px){
  .rf-steps.rf-steps-rows{grid-template-columns:minmax(0,1fr);gap:0}
  .rf-steps-rows li{display:grid;grid-template-columns:40px minmax(0,1fr) minmax(0,1fr) 16px;column-gap:32px;align-items:baseline;padding:24px 0}
  .rf-steps-rows li::after{content:"";align-self:center;width:8px;height:8px;border:solid var(--ink3,var(--ink2));border-width:2px 2px 0 0;transform:rotate(45deg)}
  .rf-steps-rows li:last-child{border-bottom:1px solid var(--line,rgba(255,255,255,.12))}
  .rf-steps-rows li::before{margin:0;font-size:24px}
  .rf-steps-rows p{margin:0;max-width:none}
}
/* The row is the link (its title's box covers it), so a wide row shows a chevron in place of "Read the guide"; a
   phone keeps the words, the only sign there that a step opens (pagesoar.com/resources at 390, 2026-10-22). */
@media(min-width:1000px){.rf-steps-rows .rf-go{display:none}}
/* The questions as rows under a rule, two columns, in the text colour with a chevron: a list of links, not a wall of accent. */
/* One column at every width, as Stripe's and Linear's help centres list them: two columns left a hole beside the last of
   an odd count, and the last row stretched across both read as an accident (the board, 13 on nowlark.com/support). */
.rf-quick{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:minmax(0,1fr)}
.rf-quick li{margin:0;border-top:1px solid var(--line,rgba(255,255,255,.12))}.rf-quick a{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:16px;align-items:center;min-height:56px;padding:12px 4px 12px 0;
  font-size:16px;line-height:24px;font-weight:500;color:var(--ink);text-decoration:none}
.rf-quick a::after{content:"";flex:none;width:8px;height:8px;margin-right:4px;border:solid var(--ink3,var(--ink2));border-width:2px 2px 0 0;transform:rotate(45deg)}
.rf-quick a:hover{color:var(--rf-link,var(--brand,#ffb23e))}
/* A category page: its articles as rows inside the card. */
/* Rows between two rules, not a box inside the card. */
.rf-rows{list-style:none;margin:24px 0;padding:0;border-block:1px solid var(--rf-card-line,var(--line,rgba(255,255,255,.12)))}
.rf-art ul.rf-rows{padding:0}.rf-rows li{margin:0;max-width:none}
.rf-rows li+li{border-top:1px solid var(--rf-card-line,var(--line,rgba(255,255,255,.12)))}
/* A grid, not a flex row: the title is a bare text node, and in a flex row it would sit beside its <small>. */
.rf-rows a{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;column-gap:16px;padding:20px 0;color:var(--ink);text-decoration:none;font-weight:600;line-height:21px;text-wrap:pretty}
.rf-rows a::after{content:"";grid-column:2;grid-row:1/span 3;width:8px;height:8px;border:solid currentColor;border-width:2px 2px 0 0;transform:rotate(45deg);margin-right:4px}
.rf-rows a .rf-t{grid-column:1}  /* the title, one grid cell however many <mark>s a search puts in it */
.rf-rows a:hover{background:var(--rf-hover,rgba(127,127,127,.06))}
.rf-rows a small{grid-column:1;display:block;margin-top:4px;text-wrap:pretty;font-weight:400;font-size:14px;color:var(--ink2)}
.rf-rows mark{background:var(--brand-tint,rgba(255,178,62,.2));color:inherit;border-radius:2px}
/* A search hit names its topic under its title (.rf-k), so a product guide reads apart from a basics one. */
.rf-rows a .rf-k{grid-column:1;display:block;margin-top:2px;font-weight:500;font-size:13px;line-height:18px;color:var(--ink3,var(--ink2))}
/* The summary sits under its title at every width, a mail list's subject over its preview. */
@media(max-width:1000px){.rf-cats{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}}
/* Two columns of questions under 900px left each about 310px, so a plain question wrapped beside empty space: one column. */
@media(max-width:900px){.rf-quick{grid-template-columns:minmax(0,1fr)}}
@media(max-width:640px){
  .rf-home-top{padding-top:24px;margin-bottom:32px}
  /* On a phone the tiles are one divided list, not a stack of cards. */
  .rf-cats{grid-template-columns:minmax(0,1fr);gap:0;border-block:1px solid var(--rf-card-line,var(--line,rgba(255,255,255,.12)))}
  .rf-cats>li+li{border-top:1px solid var(--rf-card-line,var(--line,rgba(255,255,255,.12)))}
  .rf-cat{position:relative;padding:16px 28px 16px 0;border:0;border-radius:0;background:none;box-shadow:none}.rf-cat:hover{box-shadow:none}
  /* Each row ends in the chevron every other list here uses, on its title's line, so it reads as a row that opens. */
  /* The line starts under the name it describes, not under the icon, and sits right under it: the icon spans both rows,
     so the name's row is the name's height, not the 44px icon's (the board: a 43px gap read as the next row's). */
  .rf-cat:has(.rf-cat-i){row-gap:2px}
  .rf-cat-i{grid-row:1/span 2;align-self:center}
  .rf-cat-t{grid-column:2;align-self:end}
  .rf-cat-d{grid-column:2}
  .rf-cat::after{content:"";position:absolute;right:6px;top:38px;width:8px;height:8px;border:solid currentColor;border-width:2px 2px 0 0;transform:translateY(-50%) rotate(45deg)}.rf-quick{grid-template-columns:minmax(0,1fr)}
  .rf-band{flex-direction:column;align-items:flex-start;padding:22px}.rf-band-lg{padding:28px 22px}.rf-band-art{display:none}
  .rf-sec,.rf-band-lg{margin-top:64px}
}

/* docs_icons.py:start (Lucide 0.460.0, ISC; generated, never edited) */
.rf-ico{display:inline-block;flex:none;width:32px;height:32px;background:currentColor;-webkit-mask:var(--ico) center/contain no-repeat;mask:var(--ico) center/contain no-repeat}
.rf-ico[data-icon="rocket"]{--ico:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Cpath d=%22M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z%22 /%3E%3Cpath d=%22m12 15-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z%22 /%3E%3Cpath d=%22M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0%22 /%3E%3Cpath d=%22M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5%22 /%3E%3C/svg%3E")}
.rf-ico[data-icon="sliders-horizontal"]{--ico:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Cline x1=%2221%22 x2=%2214%22 y1=%224%22 y2=%224%22 /%3E%3Cline x1=%2210%22 x2=%223%22 y1=%224%22 y2=%224%22 /%3E%3Cline x1=%2221%22 x2=%2212%22 y1=%2212%22 y2=%2212%22 /%3E%3Cline x1=%228%22 x2=%223%22 y1=%2212%22 y2=%2212%22 /%3E%3Cline x1=%2221%22 x2=%2216%22 y1=%2220%22 y2=%2220%22 /%3E%3Cline x1=%2212%22 x2=%223%22 y1=%2220%22 y2=%2220%22 /%3E%3Cline x1=%2214%22 x2=%2214%22 y1=%222%22 y2=%226%22 /%3E%3Cline x1=%228%22 x2=%228%22 y1=%2210%22 y2=%2214%22 /%3E%3Cline x1=%2216%22 x2=%2216%22 y1=%2218%22 y2=%2222%22 /%3E%3C/svg%3E")}
.rf-ico[data-icon="cpu"]{--ico:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Crect width=%2216%22 height=%2216%22 x=%224%22 y=%224%22 rx=%222%22 /%3E%3Crect width=%226%22 height=%226%22 x=%229%22 y=%229%22 rx=%221%22 /%3E%3Cpath d=%22M15 2v2%22 /%3E%3Cpath d=%22M15 20v2%22 /%3E%3Cpath d=%22M2 15h2%22 /%3E%3Cpath d=%22M2 9h2%22 /%3E%3Cpath d=%22M20 15h2%22 /%3E%3Cpath d=%22M20 9h2%22 /%3E%3Cpath d=%22M9 2v2%22 /%3E%3Cpath d=%22M9 20v2%22 /%3E%3C/svg%3E")}
.rf-ico[data-icon="folder-tree"]{--ico:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Cpath d=%22M20 10a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1h-2.5a1 1 0 0 1-.8-.4l-.9-1.2A1 1 0 0 0 15 3h-2a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1Z%22 /%3E%3Cpath d=%22M20 21a1 1 0 0 0 1-1v-3a1 1 0 0 0-1-1h-2.9a1 1 0 0 1-.88-.55l-.42-.85a1 1 0 0 0-.92-.6H13a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1Z%22 /%3E%3Cpath d=%22M3 5a2 2 0 0 0 2 2h3%22 /%3E%3Cpath d=%22M3 3v13a2 2 0 0 0 2 2h3%22 /%3E%3C/svg%3E")}
.rf-ico[data-icon="plug"]{--ico:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Cpath d=%22M12 22v-5%22 /%3E%3Cpath d=%22M9 8V2%22 /%3E%3Cpath d=%22M15 8V2%22 /%3E%3Cpath d=%22M18 8v5a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V8Z%22 /%3E%3C/svg%3E")}
.rf-ico[data-icon="smartphone"]{--ico:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Crect width=%2214%22 height=%2220%22 x=%225%22 y=%222%22 rx=%222%22 ry=%222%22 /%3E%3Cpath d=%22M12 18h.01%22 /%3E%3C/svg%3E")}
.rf-ico[data-icon="user-cog"]{--ico:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Ccircle cx=%2218%22 cy=%2215%22 r=%223%22 /%3E%3Ccircle cx=%229%22 cy=%227%22 r=%224%22 /%3E%3Cpath d=%22M10 15H6a4 4 0 0 0-4 4v2%22 /%3E%3Cpath d=%22m21.7 16.4-.9-.3%22 /%3E%3Cpath d=%22m15.2 13.9-.9-.3%22 /%3E%3Cpath d=%22m16.6 18.7.3-.9%22 /%3E%3Cpath d=%22m19.1 12.2.3-.9%22 /%3E%3Cpath d=%22m19.6 18.7-.4-1%22 /%3E%3Cpath d=%22m16.8 12.3-.4-1%22 /%3E%3Cpath d=%22m14.3 16.6 1-.4%22 /%3E%3Cpath d=%22m20.7 13.8 1-.4%22 /%3E%3C/svg%3E")}
.rf-ico[data-icon="book-open"]{--ico:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Cpath d=%22M12 7v14%22 /%3E%3Cpath d=%22M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z%22 /%3E%3C/svg%3E")}
.rf-ico[data-icon="scan-search"]{--ico:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Cpath d=%22M3 7V5a2 2 0 0 1 2-2h2%22 /%3E%3Cpath d=%22M17 3h2a2 2 0 0 1 2 2v2%22 /%3E%3Cpath d=%22M21 17v2a2 2 0 0 1-2 2h-2%22 /%3E%3Cpath d=%22M7 21H5a2 2 0 0 1-2-2v-2%22 /%3E%3Ccircle cx=%2212%22 cy=%2212%22 r=%223%22 /%3E%3Cpath d=%22m16 16-1.9-1.9%22 /%3E%3C/svg%3E")}
.rf-ico[data-icon="chart-line"]{--ico:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Cpath d=%22M3 3v16a2 2 0 0 0 2 2h16%22 /%3E%3Cpath d=%22m19 9-5 5-4-4-3 3%22 /%3E%3C/svg%3E")}
.rf-ico[data-icon="globe"]{--ico:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Ccircle cx=%2212%22 cy=%2212%22 r=%2210%22 /%3E%3Cpath d=%22M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20%22 /%3E%3Cpath d=%22M2 12h20%22 /%3E%3C/svg%3E")}
.rf-ico[data-icon="message-circle-question"]{--ico:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Cpath d=%22M7.9 20A9 9 0 1 0 4 16.1L2 22Z%22 /%3E%3Cpath d=%22M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3%22 /%3E%3Cpath d=%22M12 17h.01%22 /%3E%3C/svg%3E")}
.rf-ico[data-icon="graduation-cap"]{--ico:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Cpath d=%22M21.42 10.922a1 1 0 0 0-.019-1.838L12.83 5.18a2 2 0 0 0-1.66 0L2.6 9.08a1 1 0 0 0 0 1.832l8.57 3.908a2 2 0 0 0 1.66 0z%22 /%3E%3Cpath d=%22M22 10v6%22 /%3E%3Cpath d=%22M6 12.5V16a6 3 0 0 0 12 0v-3.5%22 /%3E%3C/svg%3E")}
.rf-ico[data-icon="users"]{--ico:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Cpath d=%22M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2%22 /%3E%3Ccircle cx=%229%22 cy=%227%22 r=%224%22 /%3E%3Cpath d=%22M22 21v-2a4 4 0 0 0-3-3.87%22 /%3E%3Cpath d=%22M16 3.13a4 4 0 0 1 0 7.75%22 /%3E%3C/svg%3E")}
.rf-ico[data-icon="badge-check"]{--ico:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Cpath d=%22M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z%22 /%3E%3Cpath d=%22m9 12 2 2 4-4%22 /%3E%3C/svg%3E")}
.rf-ico[data-icon="book-a"]{--ico:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Cpath d=%22M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20%22 /%3E%3Cpath d=%22m8 13 4-7 4 7%22 /%3E%3Cpath d=%22M9.1 11h5.7%22 /%3E%3C/svg%3E")}
.rf-ico[data-icon="wrench"]{--ico:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Cpath d=%22M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z%22 /%3E%3C/svg%3E")}
.rf-ico[data-icon="send"]{--ico:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Cpath d=%22M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z%22 /%3E%3Cpath d=%22m21.854 2.147-10.94 10.939%22 /%3E%3C/svg%3E")}
.rf-ico[data-icon="calendar-clock"]{--ico:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Cpath d=%22M21 7.5V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h3.5%22 /%3E%3Cpath d=%22M16 2v4%22 /%3E%3Cpath d=%22M8 2v4%22 /%3E%3Cpath d=%22M3 10h5%22 /%3E%3Cpath d=%22M17.5 17.5 16 16.3V14%22 /%3E%3Ccircle cx=%2216%22 cy=%2216%22 r=%226%22 /%3E%3C/svg%3E")}
.rf-ico[data-icon="reply"]{--ico:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Cpolyline points=%229 17 4 12 9 7%22 /%3E%3Cpath d=%22M20 18v-2a4 4 0 0 0-4-4H4%22 /%3E%3C/svg%3E")}
.rf-ico[data-icon="inbox"]{--ico:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Cpolyline points=%2222 12 16 12 14 15 10 15 8 12 2 12%22 /%3E%3Cpath d=%22M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z%22 /%3E%3C/svg%3E")}
.rf-ico[data-icon="blocks"]{--ico:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Crect width=%227%22 height=%227%22 x=%2214%22 y=%223%22 rx=%221%22 /%3E%3Cpath d=%22M10 21V8a1 1 0 0 0-1-1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-5a1 1 0 0 0-1-1H3%22 /%3E%3C/svg%3E")}
.rf-ico[data-icon="bell-ring"]{--ico:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Cpath d=%22M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9%22 /%3E%3Cpath d=%22M10.3 21a1.94 1.94 0 0 0 3.4 0%22 /%3E%3Cpath d=%22M4 2C2.8 3.7 2 5.7 2 8%22 /%3E%3Cpath d=%22M22 8c0-2.3-.8-4.3-2-6%22 /%3E%3C/svg%3E")}
.rf-ico[data-icon="clipboard-list"]{--ico:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Crect width=%228%22 height=%224%22 x=%228%22 y=%222%22 rx=%221%22 ry=%221%22 /%3E%3Cpath d=%22M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2%22 /%3E%3Cpath d=%22M12 11h4%22 /%3E%3Cpath d=%22M12 16h4%22 /%3E%3Cpath d=%22M8 11h.01%22 /%3E%3Cpath d=%22M8 16h.01%22 /%3E%3C/svg%3E")}
.rf-ico[data-icon="layout-dashboard"]{--ico:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Crect width=%227%22 height=%229%22 x=%223%22 y=%223%22 rx=%221%22 /%3E%3Crect width=%227%22 height=%225%22 x=%2214%22 y=%223%22 rx=%221%22 /%3E%3Crect width=%227%22 height=%229%22 x=%2214%22 y=%2212%22 rx=%221%22 /%3E%3Crect width=%227%22 height=%225%22 x=%223%22 y=%2216%22 rx=%221%22 /%3E%3C/svg%3E")}
.rf-ico[data-icon="user-round-cog"]{--ico:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E%3Cpath d=%22M2 21a8 8 0 0 1 10.434-7.62%22 /%3E%3Ccircle cx=%2210%22 cy=%228%22 r=%225%22 /%3E%3Ccircle cx=%2218%22 cy=%2218%22 r=%223%22 /%3E%3Cpath d=%22m19.5 14.3-.4.9%22 /%3E%3Cpath d=%22m16.9 20.8-.4.9%22 /%3E%3Cpath d=%22m21.7 19.5-.9-.4%22 /%3E%3Cpath d=%22m15.2 16.9-.9-.4%22 /%3E%3Cpath d=%22m21.7 16.5-.9.4%22 /%3E%3Cpath d=%22m15.2 19.1-.9.4%22 /%3E%3Cpath d=%22m19.5 21.7-.4-.9%22 /%3E%3Cpath d=%22m16.9 15.2-.4-.9%22 /%3E%3C/svg%3E")}
/* docs_icons.py:end */
