@gemboss/ui 0.34.3 → 0.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  <!doctype html><html lang="vi"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1">
2
- <title>@gemboss/ui catalog</title><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><style>
2
+ <title>@gemboss/ui catalog</title><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/collections.css"><link rel="stylesheet" href="../src/reactions.css"><link rel="stylesheet" href="../src/assistant-engine.css"><link rel="stylesheet" href="../src/action-card.css"><link rel="stylesheet" href="../src/assistant-chat.css"><link rel="stylesheet" href="../src/minichart.css"><link rel="stylesheet" href="../src/setup-guide.css"><link rel="stylesheet" href="../src/sheet.css"><link rel="stylesheet" href="../src/settings-dialog.css"><style>
3
3
  body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text);font-family:var(--gemboss-font-sans)}
4
4
  .cat{display:grid;grid-template-columns:220px minmax(0,1fr);max-width:1180px;margin:0 auto;gap:32px;padding:32px 24px}
5
5
  .cat-nav{position:sticky;top:24px;align-self:start;display:flex;flex-direction:column;gap:2px}
@@ -26,8 +26,8 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
26
26
 
27
27
  @media (max-width:760px){.cat{grid-template-columns:1fr;padding:16px}.cat-nav{position:static;flex-direction:row;flex-wrap:wrap}}
28
28
  </style></head><body>
29
- <div class="cat"><nav class="cat-nav" aria-label="Mục"><a href="#tokens">Token</a><a href="#buttons">Nút</a><a href="#fields">Ô nhập</a><a href="#choice">Tab, nhóm nút, thẻ</a><a href="#surfaces">Thẻ, số liệu, bảng, trạng thái trống</a><a href="#report">Báo cáo</a><a href="#collections">Bảng, list, lưới, board</a><a href="#resizer">Thanh kéo giữa hai cột</a><a href="#modal">Hộp thoại, toast, menu (JS thuần)</a><a href="#shell">Khung app</a><a href="#nav">Chờ điều hướng</a><a href="#page">Bề rộng nội dung</a><a href="#portal">Cổng công khai: tab trên topbar, tìm kiếm, sáng / tối, người dẫn đầu</a><a href="#auth">Đăng nhập</a><a href="#setup">Hướng dẫn thiết lập</a><a href="#chat">Thân chat</a><a href="#reactions">Reactions</a><a href="#action-card">Thẻ hành động</a><a href="#assistant-engine">Trợ lý: chọn engine</a><a href="#assistant-bridge">Trợ lý: cầu nối trên máy (0.32.0)</a><a href="#assistant-chat">Trợ lý: khung chat (0.29.0)</a><a href="#assistant">Trợ lý: cột phiên</a><a href="#icons">Icon</a><a href="#editor">Editor</a></nav>
30
- <main><header class="cat-head"><h1>@gemboss/ui 0.34.3</h1><p>Ngôn ngữ thiết kế chung của các công cụ GemBoss. Markup dưới mỗi ví dụ là đúng thứ package render ra; bề mặt không dùng React (HTML tĩnh, Python) chép markup này và nạp <code>gemboss-ui.css</code>. Dựng từ gemboss <code>0e8480f4649d</code>.</p></header>
29
+ <div class="cat"><nav class="cat-nav" aria-label="Mục"><a href="#tokens">Token</a><a href="#buttons">Nút</a><a href="#fields">Ô nhập</a><a href="#choice">Tab, nhóm nút, thẻ</a><a href="#surfaces">Thẻ, số liệu, bảng, trạng thái trống</a><a href="#report">Báo cáo</a><a href="#collections">Bảng, list, lưới, board</a><a href="#resizer">Thanh kéo giữa hai cột</a><a href="#modal">Hộp thoại, toast, menu (JS thuần)</a><a href="#sheet">Ngăn trượt cạnh phải</a><a href="#settings">Hộp cài đặt</a><a href="#shell">Khung app</a><a href="#nav">Chờ điều hướng</a><a href="#page">Bề rộng nội dung</a><a href="#portal">Cổng công khai: tab trên topbar, tìm kiếm, sáng / tối, người dẫn đầu</a><a href="#auth">Đăng nhập</a><a href="#setup">Hướng dẫn thiết lập</a><a href="#chat">Thân chat</a><a href="#reactions">Reactions</a><a href="#action-card">Thẻ hành động</a><a href="#assistant-engine">Trợ lý: chọn engine</a><a href="#assistant-bridge">Trợ lý: cầu nối trên máy (0.32.0)</a><a href="#assistant-chat">Trợ lý: khung chat (0.29.0)</a><a href="#assistant">Trợ lý: cột phiên</a><a href="#icons">Icon</a><a href="#editor">Editor</a></nav>
30
+ <main><header class="cat-head"><h1>@gemboss/ui 0.35.0</h1><p>Ngôn ngữ thiết kế chung của các công cụ GemBoss. Markup dưới mỗi ví dụ là đúng thứ package render ra; bề mặt không dùng React (HTML tĩnh, Python) chép markup này và nạp <code>gemboss-ui.css</code>. Dựng từ gemboss <code>598be36d3d36</code>.</p></header>
31
31
  <section id="tokens"><h2>Token</h2><p>Đổi giao diện một bề mặt bằng cách đặt lại token, không viết đè class. Tên và giá trị đọc thẳng từ gemboss-ui.css.</p><div class="cat-swatches"><div class="cat-swatch"><i style="background:var(--gemboss-primary)"></i><code>--gemboss-primary</code><span>#1b1c1e</span></div><div class="cat-swatch"><i style="background:var(--gemboss-primary-dark)"></i><code>--gemboss-primary-dark</code><span>#000000</span></div><div class="cat-swatch"><i style="background:var(--gemboss-primary-soft)"></i><code>--gemboss-primary-soft</code><span>#f2f3f5</span></div><div class="cat-swatch"><i style="background:var(--gemboss-accent)"></i><code>--gemboss-accent</code><span>#5661f5</span></div><div class="cat-swatch"><i style="background:var(--gemboss-accent-strong)"></i><code>--gemboss-accent-strong</code><span>#3a44de</span></div><div class="cat-swatch"><i style="background:var(--gemboss-accent-soft)"></i><code>--gemboss-accent-soft</code><span>#eef0fe</span></div><div class="cat-swatch"><i style="background:var(--gemboss-text-strong)"></i><code>--gemboss-text-strong</code><span>#1b1c1e</span></div><div class="cat-swatch"><i style="background:var(--gemboss-text)"></i><code>--gemboss-text</code><span>#1b1c1e</span></div><div class="cat-swatch"><i style="background:var(--gemboss-text-muted)"></i><code>--gemboss-text-muted</code><span>#686b71</span></div><div class="cat-swatch"><i style="background:var(--gemboss-surface)"></i><code>--gemboss-surface</code><span>#ffffff</span></div><div class="cat-swatch"><i style="background:var(--gemboss-canvas)"></i><code>--gemboss-canvas</code><span>#ffffff</span></div><div class="cat-swatch"><i style="background:var(--gemboss-preview-canvas)"></i><code>--gemboss-preview-canvas</code><span>#eceef1</span></div><div class="cat-swatch"><i style="background:var(--gemboss-rail-bg)"></i><code>--gemboss-rail-bg</code><span>#ffffff</span></div><div class="cat-swatch"><i style="background:var(--gemboss-panel-bg)"></i><code>--gemboss-panel-bg</code><span>#ffffff</span></div><div class="cat-swatch"><i style="background:var(--gemboss-divider)"></i><code>--gemboss-divider</code><span>#e5e7ea</span></div><div class="cat-swatch"><i style="background:var(--gemboss-divider-soft)"></i><code>--gemboss-divider-soft</code><span>#edeff2</span></div><div class="cat-swatch"><i style="background:var(--gemboss-hover)"></i><code>--gemboss-hover</code><span>#eceef2</span></div><div class="cat-swatch"><i style="background:var(--gemboss-active-bg)"></i><code>--gemboss-active-bg</code><span>#f0f1f4</span></div><div class="cat-swatch"><i style="background:var(--gemboss-active-fg)"></i><code>--gemboss-active-fg</code><span>#1b1c1e</span></div><div class="cat-swatch"><i style="background:var(--gemboss-danger)"></i><code>--gemboss-danger</code><span>#d72c0d</span></div><div class="cat-swatch"><i style="background:var(--gemboss-danger-strong)"></i><code>--gemboss-danger-strong</code><span>#b42318</span></div><div class="cat-swatch"><i style="background:var(--gemboss-danger-soft)"></i><code>--gemboss-danger-soft</code><span>#fff0e9</span></div><div class="cat-swatch"><i style="background:var(--gemboss-danger-border)"></i><code>--gemboss-danger-border</code><span>#f5c9bc</span></div><div class="cat-swatch"><i style="background:var(--gemboss-success)"></i><code>--gemboss-success</code><span>#007f5f</span></div><div class="cat-swatch"><i style="background:var(--gemboss-success-strong)"></i><code>--gemboss-success-strong</code><span>#0a6a4c</span></div><div class="cat-swatch"><i style="background:var(--gemboss-success-soft)"></i><code>--gemboss-success-soft</code><span>#e3f1df</span></div><div class="cat-swatch"><i style="background:var(--gemboss-success-border)"></i><code>--gemboss-success-border</code><span>#b7dfcd</span></div><div class="cat-swatch"><i style="background:var(--gemboss-warning)"></i><code>--gemboss-warning</code><span>#9a6700</span></div><div class="cat-swatch"><i style="background:var(--gemboss-warning-soft)"></i><code>--gemboss-warning-soft</code><span>#fff8e0</span></div><div class="cat-swatch"><i style="background:var(--gemboss-warning-border)"></i><code>--gemboss-warning-border</code><span>#f5d569</span></div><div class="cat-swatch"><i style="background:var(--gemboss-dark-bg)"></i><code>--gemboss-dark-bg</code><span>#0a0a0c</span></div><div class="cat-swatch"><i style="background:var(--gemboss-dark-rail)"></i><code>--gemboss-dark-rail</code><span>#0e0e11</span></div><div class="cat-swatch"><i style="background:var(--gemboss-dark-surface)"></i><code>--gemboss-dark-surface</code><span>#16161a</span></div><div class="cat-swatch"><i style="background:var(--gemboss-dark-surface-2)"></i><code>--gemboss-dark-surface-2</code><span>#1e1e24</span></div><div class="cat-swatch"><i style="background:var(--gemboss-dark-divider)"></i><code>--gemboss-dark-divider</code><span>#2a2a31</span></div><div class="cat-swatch"><i style="background:var(--gemboss-dark-text)"></i><code>--gemboss-dark-text</code><span>#ededf0</span></div><div class="cat-swatch"><i style="background:var(--gemboss-dark-muted)"></i><code>--gemboss-dark-muted</code><span>#9a9aa4</span></div><div class="cat-swatch"><i style="background:var(--gemboss-field-bg)"></i><code>--gemboss-field-bg</code><span>#fdfdfd</span></div><div class="cat-swatch"><i style="background:var(--gemboss-field-bg-hover)"></i><code>--gemboss-field-bg-hover</code><span>#fafafa</span></div><div class="cat-swatch"><i style="background:var(--gemboss-field-ink)"></i><code>--gemboss-field-ink</code><span>#303030</span></div><div class="cat-swatch"><i style="background:var(--gemboss-field-placeholder)"></i><code>--gemboss-field-placeholder</code><span>#616161</span></div><div class="cat-swatch"><i style="background:var(--gemboss-field-line)"></i><code>--gemboss-field-line</code><span>#8a8a8a</span></div><div class="cat-swatch"><i style="background:var(--gemboss-field-line-hover)"></i><code>--gemboss-field-line-hover</code><span>#616161</span></div><div class="cat-swatch"><i style="background:var(--gemboss-field-line-active)"></i><code>--gemboss-field-line-active</code><span>#1a1a1a</span></div><div class="cat-swatch"><i style="background:var(--gemboss-chip-ink)"></i><code>--gemboss-chip-ink</code><span>#303633</span></div><div class="cat-swatch"><i style="background:var(--gemboss-chip-line)"></i><code>--gemboss-chip-line</code><span>#cfd6ce</span></div><div class="cat-swatch"><i style="background:var(--gemboss-chip-line-hover)"></i><code>--gemboss-chip-line-hover</code><span>#aab4ad</span></div><div class="cat-swatch"><i style="background:var(--gemboss-chip-bg-hover)"></i><code>--gemboss-chip-bg-hover</code><span>#f6f7f5</span></div><div class="cat-swatch"><i style="background:var(--gemboss-on-primary)"></i><code>--gemboss-on-primary</code><span>#ffffff</span></div><div class="cat-swatch"><i style="background:var(--gemboss-app-bg)"></i><code>--gemboss-app-bg</code><span>#ffffff</span></div></div><table class="ui-table cat-scale"><thead><tr><th>Token</th><th>Giá trị</th><th>Mẫu</th></tr></thead><tbody><tr><td><code>--gemboss-fs-micro</code></td><td>11px</td><td style="font-size:var(--gemboss-fs-micro)">Ngôn ngữ thiết kế chung</td></tr><tr><td><code>--gemboss-fs-caption</code></td><td>12px</td><td style="font-size:var(--gemboss-fs-caption)">Ngôn ngữ thiết kế chung</td></tr><tr><td><code>--gemboss-fs-body</code></td><td>14px</td><td style="font-size:var(--gemboss-fs-body)">Ngôn ngữ thiết kế chung</td></tr><tr><td><code>--gemboss-fs-body-lg</code></td><td>16px</td><td style="font-size:var(--gemboss-fs-body-lg)">Ngôn ngữ thiết kế chung</td></tr><tr><td><code>--gemboss-fs-h3</code></td><td>16px</td><td style="font-size:var(--gemboss-fs-h3)">Ngôn ngữ thiết kế chung</td></tr><tr><td><code>--gemboss-fs-h2</code></td><td>20px</td><td style="font-size:var(--gemboss-fs-h2)">Ngôn ngữ thiết kế chung</td></tr><tr><td><code>--gemboss-fs-h1</code></td><td>24px</td><td style="font-size:var(--gemboss-fs-h1)">Ngôn ngữ thiết kế chung</td></tr><tr><td><code>--gemboss-fs-display</code></td><td>30px</td><td style="font-size:var(--gemboss-fs-display)">Ngôn ngữ thiết kế chung</td></tr><tr><td><code>--gemboss-radius-xs</code></td><td>4px</td><td><i class="cat-radius" style="border-radius:var(--gemboss-radius-xs)"></i></td></tr><tr><td><code>--gemboss-radius-sm</code></td><td>6px</td><td><i class="cat-radius" style="border-radius:var(--gemboss-radius-sm)"></i></td></tr><tr><td><code>--gemboss-radius-md</code></td><td>8px</td><td><i class="cat-radius" style="border-radius:var(--gemboss-radius-md)"></i></td></tr><tr><td><code>--gemboss-radius-lg</code></td><td>12px</td><td><i class="cat-radius" style="border-radius:var(--gemboss-radius-lg)"></i></td></tr><tr><td><code>--gemboss-radius-xl</code></td><td>16px</td><td><i class="cat-radius" style="border-radius:var(--gemboss-radius-xl)"></i></td></tr><tr><td><code>--gemboss-radius-2xl</code></td><td>20px</td><td><i class="cat-radius" style="border-radius:var(--gemboss-radius-2xl)"></i></td></tr><tr><td><code>--gemboss-radius-full</code></td><td>999px</td><td><i class="cat-radius" style="border-radius:var(--gemboss-radius-full)"></i></td></tr><tr><td><code>--gemboss-shadow-resting</code></td><td class="cat-small">0 1px 2px rgba(31, 30, 29, 0.04), 0 2px 6px rgba(31, 30, 29, 0.06)</td><td><i class="cat-radius" style="box-shadow:var(--gemboss-shadow-resting);border:0"></i></td></tr><tr><td><code>--gemboss-shadow-raised</code></td><td class="cat-small">0 4px 16px rgba(31, 30, 29, 0.10)</td><td><i class="cat-radius" style="box-shadow:var(--gemboss-shadow-raised);border:0"></i></td></tr><tr><td><code>--gemboss-shadow-overlay</code></td><td class="cat-small">0 16px 48px rgba(31, 30, 29, 0.18)</td><td><i class="cat-radius" style="box-shadow:var(--gemboss-shadow-overlay);border:0"></i></td></tr></tbody></table></section>
32
32
  <section id="buttons"><h2>Nút</h2><p>Một lớp <code>ui-btn</code>, ba biến thể, tông đỏ, một cỡ nhỏ. Cao 28px dưới chuột như Button của Polaris (ô nhập và ô chọn 32, như TextField), 44px dưới ngón tay và ở khổ điện thoại, cỡ nhỏ cũng vậy. Dùng được trên <code>&lt;button&gt;</code> lẫn <code>&lt;a&gt;</code> (căn giữa sẵn).</p><figure class="cat-demo"><figcaption>Mặc định · chính · ghost · nhỏ · tắt</figcaption><div class="cat-live"><div class="cat-row"><button type="button" class="ui-btn">Lưu nháp</button><button type="button" class="ui-btn ui-btn--primary">Xuất bản</button><button type="button" class="ui-btn ui-btn--ghost">Huỷ</button><button type="button" class="ui-btn ui-btn--sm">Nhỏ</button><button type="button" class="ui-btn ui-btn--primary" disabled>Đang lưu…</button><a class="ui-btn" href="#buttons">Link dạng nút</a></div></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div class=&quot;cat-row&quot;&gt;
33
33
  &lt;button type=&quot;button&quot; class=&quot;ui-btn&quot;&gt;Lưu nháp&lt;/button&gt;
@@ -785,7 +785,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
785
785
  &lt;/tbody&gt;
786
786
  &lt;/table&gt;
787
787
  &lt;/div&gt;
788
- &lt;/div&gt;</code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>1 · Data table ở 390px: vẫn là bảng, cuộn ngang, cột đầu dính</figcaption><div class="cat-wide"><iframe title="1 · Data table ở 390px: vẫn là bảng, cuộn ngang, cột đầu dính" style="height:300px;width:390px" srcdoc="&lt;!doctype html&gt;&lt;html&gt;&lt;head&gt;&lt;meta charset=&quot;utf-8&quot;&gt;&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../gemboss-ui.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/collections.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/reactions.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-engine.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/action-card.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-chat.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/minichart.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/setup-guide.css&quot;&gt;&lt;/head&gt;&lt;body&gt;&lt;div style=&quot;padding:16px&quot;&gt;&lt;div class=&quot;ui-table-wrap&quot;&gt;&lt;table class=&quot;ui-table ui-table--sticky-first&quot;&gt;&lt;caption class=&quot;ui-sr-only&quot;&gt;Pages captured per day&lt;/caption&gt;&lt;thead&gt;&lt;tr&gt;&lt;th scope=&quot;col&quot;&gt;Store&lt;/th&gt;&lt;th scope=&quot;col&quot; class=&quot;is-num&quot;&gt;Mon&lt;/th&gt;&lt;th scope=&quot;col&quot; class=&quot;is-num&quot;&gt;Tue&lt;/th&gt;&lt;th scope=&quot;col&quot; class=&quot;is-num&quot;&gt;Wed&lt;/th&gt;&lt;th scope=&quot;col&quot; class=&quot;is-num&quot;&gt;Thu&lt;/th&gt;&lt;th scope=&quot;col&quot; class=&quot;is-num&quot;&gt;Fri&lt;/th&gt;&lt;th scope=&quot;col&quot; class=&quot;is-num&quot;&gt;Sat&lt;/th&gt;&lt;th scope=&quot;col&quot; class=&quot;is-num&quot;&gt;Sun&lt;/th&gt;&lt;th scope=&quot;col&quot; class=&quot;is-num&quot;&gt;Week&lt;/th&gt;&lt;th scope=&quot;col&quot; class=&quot;is-num&quot;&gt;Prev&lt;/th&gt;&lt;th scope=&quot;col&quot; class=&quot;is-num&quot;&gt;Δ&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th scope=&quot;row&quot; class=&quot;ui-table__rowhead&quot;&gt;glowrecipe.com&lt;/th&gt;&lt;td class=&quot;is-num&quot;&gt;102&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;136&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;170&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;204&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;238&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;272&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;306&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;340&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;374&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;408&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope=&quot;row&quot; class=&quot;ui-table__rowhead&quot;&gt;fluke.com&lt;/th&gt;&lt;td class=&quot;is-num&quot;&gt;153&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;204&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;255&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;306&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;357&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;408&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;459&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;510&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;561&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;612&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope=&quot;row&quot; class=&quot;ui-table__rowhead&quot;&gt;ruggable.com&lt;/th&gt;&lt;td class=&quot;is-num&quot;&gt;204&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;272&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;340&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;408&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;476&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;544&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;612&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;680&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;748&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;816&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope=&quot;row&quot; class=&quot;ui-table__rowhead&quot;&gt;allbirds.com&lt;/th&gt;&lt;td class=&quot;is-num&quot;&gt;255&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;340&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;425&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;510&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;595&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;680&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;765&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;850&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;935&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;1020&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;script src=&quot;../src/kit-plain.js&quot;&gt;&lt;/script&gt;&lt;/body&gt;&lt;/html&gt;"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div style=&quot;padding:16px&quot;&gt;
788
+ &lt;/div&gt;</code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>1 · Data table ở 390px: vẫn là bảng, cuộn ngang, cột đầu dính</figcaption><div class="cat-wide"><iframe title="1 · Data table ở 390px: vẫn là bảng, cuộn ngang, cột đầu dính" style="height:300px;width:390px" srcdoc="&lt;!doctype html&gt;&lt;html&gt;&lt;head&gt;&lt;meta charset=&quot;utf-8&quot;&gt;&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../gemboss-ui.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/collections.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/reactions.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-engine.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/action-card.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-chat.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/minichart.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/setup-guide.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/sheet.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/settings-dialog.css&quot;&gt;&lt;/head&gt;&lt;body&gt;&lt;div style=&quot;padding:16px&quot;&gt;&lt;div class=&quot;ui-table-wrap&quot;&gt;&lt;table class=&quot;ui-table ui-table--sticky-first&quot;&gt;&lt;caption class=&quot;ui-sr-only&quot;&gt;Pages captured per day&lt;/caption&gt;&lt;thead&gt;&lt;tr&gt;&lt;th scope=&quot;col&quot;&gt;Store&lt;/th&gt;&lt;th scope=&quot;col&quot; class=&quot;is-num&quot;&gt;Mon&lt;/th&gt;&lt;th scope=&quot;col&quot; class=&quot;is-num&quot;&gt;Tue&lt;/th&gt;&lt;th scope=&quot;col&quot; class=&quot;is-num&quot;&gt;Wed&lt;/th&gt;&lt;th scope=&quot;col&quot; class=&quot;is-num&quot;&gt;Thu&lt;/th&gt;&lt;th scope=&quot;col&quot; class=&quot;is-num&quot;&gt;Fri&lt;/th&gt;&lt;th scope=&quot;col&quot; class=&quot;is-num&quot;&gt;Sat&lt;/th&gt;&lt;th scope=&quot;col&quot; class=&quot;is-num&quot;&gt;Sun&lt;/th&gt;&lt;th scope=&quot;col&quot; class=&quot;is-num&quot;&gt;Week&lt;/th&gt;&lt;th scope=&quot;col&quot; class=&quot;is-num&quot;&gt;Prev&lt;/th&gt;&lt;th scope=&quot;col&quot; class=&quot;is-num&quot;&gt;Δ&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th scope=&quot;row&quot; class=&quot;ui-table__rowhead&quot;&gt;glowrecipe.com&lt;/th&gt;&lt;td class=&quot;is-num&quot;&gt;102&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;136&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;170&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;204&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;238&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;272&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;306&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;340&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;374&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;408&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope=&quot;row&quot; class=&quot;ui-table__rowhead&quot;&gt;fluke.com&lt;/th&gt;&lt;td class=&quot;is-num&quot;&gt;153&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;204&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;255&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;306&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;357&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;408&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;459&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;510&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;561&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;612&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope=&quot;row&quot; class=&quot;ui-table__rowhead&quot;&gt;ruggable.com&lt;/th&gt;&lt;td class=&quot;is-num&quot;&gt;204&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;272&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;340&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;408&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;476&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;544&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;612&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;680&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;748&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;816&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope=&quot;row&quot; class=&quot;ui-table__rowhead&quot;&gt;allbirds.com&lt;/th&gt;&lt;td class=&quot;is-num&quot;&gt;255&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;340&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;425&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;510&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;595&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;680&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;765&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;850&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;935&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;1020&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;script src=&quot;../src/kit-plain.js&quot;&gt;&lt;/script&gt;&lt;/body&gt;&lt;/html&gt;"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div style=&quot;padding:16px&quot;&gt;
789
789
  &lt;div class=&quot;ui-table-wrap&quot;&gt;
790
790
  &lt;table class=&quot;ui-table ui-table--sticky-first&quot;&gt;
791
791
  &lt;caption class=&quot;ui-sr-only&quot;&gt;Pages captured per day&lt;/caption&gt;
@@ -917,7 +917,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
917
917
  &lt;/tr&gt;
918
918
  &lt;/tbody&gt;
919
919
  &lt;/table&gt;
920
- &lt;/div&gt;</code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>1 · Data table nhiều dòng ở 390px: vẫn cuộn ngang, cột đầu dính và xuống dòng</figcaption><div class="cat-wide"><iframe title="1 · Data table nhiều dòng ở 390px: vẫn cuộn ngang, cột đầu dính và xuống dòng" style="height:320px;width:390px" srcdoc="&lt;!doctype html&gt;&lt;html&gt;&lt;head&gt;&lt;meta charset=&quot;utf-8&quot;&gt;&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../gemboss-ui.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/collections.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/reactions.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-engine.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/action-card.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-chat.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/minichart.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/setup-guide.css&quot;&gt;&lt;/head&gt;&lt;body&gt;&lt;div style=&quot;padding:16px&quot;&gt;&lt;div class=&quot;ui-table-wrap&quot;&gt;&lt;table class=&quot;ui-table ui-table--sticky-first&quot;&gt;&lt;caption class=&quot;ui-sr-only&quot;&gt;Jobs&lt;/caption&gt;&lt;thead&gt;&lt;tr&gt;&lt;th scope=&quot;col&quot;&gt;Job&lt;/th&gt;&lt;th scope=&quot;col&quot;&gt;State&lt;/th&gt;&lt;th scope=&quot;col&quot;&gt;Source&lt;/th&gt;&lt;th scope=&quot;col&quot;&gt;Last run&lt;/th&gt;&lt;th scope=&quot;col&quot; class=&quot;is-num&quot;&gt;Runs&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th scope=&quot;row&quot; class=&quot;ui-table__rowhead&quot;&gt;&lt;a href=&quot;#job0&quot;&gt;Weekly integrations crawl&lt;/a&gt;&lt;span class=&quot;ui-sub&quot;&gt;PageFly, GemPages, Replo, Shogun, EComposer and 14 more partner page builders · every Monday 08:00 UTC&lt;/span&gt;&lt;/th&gt;&lt;td&gt;&lt;span class=&quot;ui-tag ui-tag--success&quot;&gt;OK&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;#src0&quot;&gt;sitemap&lt;/a&gt;&lt;/td&gt;&lt;td&gt;2h ago&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;1,204&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope=&quot;row&quot; class=&quot;ui-table__rowhead&quot;&gt;&lt;a href=&quot;#job1&quot;&gt;StoreLeads refresh&lt;/a&gt;&lt;span class=&quot;ui-sub&quot;&gt;Apps with a GemPages mention, ranked by install growth · daily&lt;/span&gt;&lt;/th&gt;&lt;td&gt;&lt;span class=&quot;ui-tag ui-tag--warning&quot;&gt;Late&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;#src1&quot;&gt;api&lt;/a&gt;&lt;/td&gt;&lt;td&gt;26h ago&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;311&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope=&quot;row&quot; class=&quot;ui-table__rowhead&quot;&gt;&lt;a href=&quot;#job2&quot;&gt;LinkedIn people at Shopify&lt;/a&gt;&lt;span class=&quot;ui-sub&quot;&gt;367 profiles · Find people on the organization page&lt;/span&gt;&lt;/th&gt;&lt;td&gt;&lt;span class=&quot;ui-tag ui-tag--success&quot;&gt;OK&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;#src2&quot;&gt;apify&lt;/a&gt;&lt;/td&gt;&lt;td&gt;3d ago&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;18&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;script src=&quot;../src/kit-plain.js&quot;&gt;&lt;/script&gt;&lt;/body&gt;&lt;/html&gt;"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div style=&quot;padding:16px&quot;&gt;
920
+ &lt;/div&gt;</code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>1 · Data table nhiều dòng ở 390px: vẫn cuộn ngang, cột đầu dính và xuống dòng</figcaption><div class="cat-wide"><iframe title="1 · Data table nhiều dòng ở 390px: vẫn cuộn ngang, cột đầu dính và xuống dòng" style="height:320px;width:390px" srcdoc="&lt;!doctype html&gt;&lt;html&gt;&lt;head&gt;&lt;meta charset=&quot;utf-8&quot;&gt;&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../gemboss-ui.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/collections.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/reactions.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-engine.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/action-card.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-chat.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/minichart.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/setup-guide.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/sheet.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/settings-dialog.css&quot;&gt;&lt;/head&gt;&lt;body&gt;&lt;div style=&quot;padding:16px&quot;&gt;&lt;div class=&quot;ui-table-wrap&quot;&gt;&lt;table class=&quot;ui-table ui-table--sticky-first&quot;&gt;&lt;caption class=&quot;ui-sr-only&quot;&gt;Jobs&lt;/caption&gt;&lt;thead&gt;&lt;tr&gt;&lt;th scope=&quot;col&quot;&gt;Job&lt;/th&gt;&lt;th scope=&quot;col&quot;&gt;State&lt;/th&gt;&lt;th scope=&quot;col&quot;&gt;Source&lt;/th&gt;&lt;th scope=&quot;col&quot;&gt;Last run&lt;/th&gt;&lt;th scope=&quot;col&quot; class=&quot;is-num&quot;&gt;Runs&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th scope=&quot;row&quot; class=&quot;ui-table__rowhead&quot;&gt;&lt;a href=&quot;#job0&quot;&gt;Weekly integrations crawl&lt;/a&gt;&lt;span class=&quot;ui-sub&quot;&gt;PageFly, GemPages, Replo, Shogun, EComposer and 14 more partner page builders · every Monday 08:00 UTC&lt;/span&gt;&lt;/th&gt;&lt;td&gt;&lt;span class=&quot;ui-tag ui-tag--success&quot;&gt;OK&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;#src0&quot;&gt;sitemap&lt;/a&gt;&lt;/td&gt;&lt;td&gt;2h ago&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;1,204&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope=&quot;row&quot; class=&quot;ui-table__rowhead&quot;&gt;&lt;a href=&quot;#job1&quot;&gt;StoreLeads refresh&lt;/a&gt;&lt;span class=&quot;ui-sub&quot;&gt;Apps with a GemPages mention, ranked by install growth · daily&lt;/span&gt;&lt;/th&gt;&lt;td&gt;&lt;span class=&quot;ui-tag ui-tag--warning&quot;&gt;Late&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;#src1&quot;&gt;api&lt;/a&gt;&lt;/td&gt;&lt;td&gt;26h ago&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;311&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope=&quot;row&quot; class=&quot;ui-table__rowhead&quot;&gt;&lt;a href=&quot;#job2&quot;&gt;LinkedIn people at Shopify&lt;/a&gt;&lt;span class=&quot;ui-sub&quot;&gt;367 profiles · Find people on the organization page&lt;/span&gt;&lt;/th&gt;&lt;td&gt;&lt;span class=&quot;ui-tag ui-tag--success&quot;&gt;OK&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;#src2&quot;&gt;apify&lt;/a&gt;&lt;/td&gt;&lt;td&gt;3d ago&lt;/td&gt;&lt;td class=&quot;is-num&quot;&gt;18&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;script src=&quot;../src/kit-plain.js&quot;&gt;&lt;/script&gt;&lt;/body&gt;&lt;/html&gt;"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div style=&quot;padding:16px&quot;&gt;
921
921
  &lt;div class=&quot;ui-table-wrap&quot;&gt;
922
922
  &lt;table class=&quot;ui-table ui-table--sticky-first&quot;&gt;
923
923
  &lt;caption class=&quot;ui-sr-only&quot;&gt;Jobs&lt;/caption&gt;
@@ -1343,7 +1343,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
1343
1343
  &lt;/tbody&gt;
1344
1344
  &lt;/table&gt;
1345
1345
  &lt;/div&gt;
1346
- &lt;/div&gt;</code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>2 · Index table ở 390px: ĐỔI thành list (container ≤ 768): tiêu đề, dòng phụ, các ô còn lại trên một dòng chữ nhỏ, checkbox + hành động giữ chỗ</figcaption><div class="cat-wide"><iframe title="2 · Index table ở 390px: ĐỔI thành list (container ≤ 768): tiêu đề, dòng phụ, các ô còn lại trên một dòng chữ nhỏ, checkbox + hành động giữ chỗ" style="height:460px;width:390px" srcdoc="&lt;!doctype html&gt;&lt;html&gt;&lt;head&gt;&lt;meta charset=&quot;utf-8&quot;&gt;&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../gemboss-ui.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/collections.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/reactions.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-engine.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/action-card.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-chat.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/minichart.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/setup-guide.css&quot;&gt;&lt;/head&gt;&lt;body&gt;&lt;div style=&quot;padding:16px&quot;&gt;&lt;div class=&quot;ui-index&quot;&gt;&lt;div class=&quot;ui-index__sortbar&quot; role=&quot;group&quot; aria-label=&quot;Sort&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;Sort&lt;/span&gt;&lt;a class=&quot;ui-chip&quot; href=&quot;#collections&quot; aria-current=&quot;true&quot;&gt;Supplier ↑&lt;/a&gt;&lt;a class=&quot;ui-chip&quot; href=&quot;#collections&quot;&gt;Score&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;ui-bulkbar&quot; hidden&gt;&lt;label class=&quot;ui-table__checkbox&quot;&gt;&lt;input type=&quot;checkbox&quot; data-gb-select-all aria-label=&quot;Select all&quot;&gt;&lt;/label&gt;&lt;span class=&quot;ui-bulkbar__count&quot; data-gb-count=&quot;{n} selected&quot; aria-live=&quot;polite&quot;&gt;0 selected&lt;/span&gt;&lt;span class=&quot;ui-bulkbar__actions&quot;&gt;&lt;button type=&quot;button&quot; class=&quot;ui-btn ui-btn--sm&quot;&gt;Add to outreach&lt;/button&gt;&lt;button type=&quot;button&quot; class=&quot;ui-btn ui-btn--sm ui-btn--critical&quot;&gt;Archive&lt;/button&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;ui-table-wrap&quot;&gt;&lt;table class=&quot;ui-table ui-table--index&quot; data-gb-sort=&quot;client&quot;&gt;&lt;caption class=&quot;ui-sr-only&quot;&gt;Suppliers&lt;/caption&gt;&lt;thead&gt;&lt;tr&gt;&lt;th class=&quot;ui-table__check&quot; scope=&quot;col&quot;&gt;&lt;label class=&quot;ui-table__checkbox&quot;&gt;&lt;input type=&quot;checkbox&quot; data-gb-select-all aria-label=&quot;Select all&quot;&gt;&lt;/label&gt;&lt;/th&gt;&lt;th class=&quot;ui-table__primary&quot; scope=&quot;col&quot; aria-sort=&quot;ascending&quot;&gt;&lt;button type=&quot;button&quot; class=&quot;ui-table__sort&quot;&gt;Supplier&lt;/button&gt;&lt;/th&gt;&lt;th scope=&quot;col&quot;&gt;Location&lt;/th&gt;&lt;th scope=&quot;col&quot;&gt;Verdict&lt;/th&gt;&lt;th scope=&quot;col&quot; class=&quot;is-num&quot; aria-sort=&quot;none&quot;&gt;&lt;button type=&quot;button&quot; class=&quot;ui-table__sort&quot;&gt;Score&lt;/button&gt;&lt;/th&gt;&lt;th scope=&quot;col&quot;&gt;Ads&lt;/th&gt;&lt;th class=&quot;ui-table__actions&quot; scope=&quot;col&quot;&gt;&lt;span class=&quot;ui-sr-only&quot;&gt;Actions&lt;/span&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr data-href=&quot;#c1&quot;&gt;&lt;td class=&quot;ui-table__check&quot;&gt;&lt;label class=&quot;ui-table__checkbox&quot;&gt;&lt;input type=&quot;checkbox&quot; data-gb-select value=&quot;c1&quot; aria-label=&quot;Select Guangzhou Yanmei Cosmetics&quot;&gt;&lt;/label&gt;&lt;/td&gt;&lt;td class=&quot;ui-table__primary&quot;&gt;&lt;a class=&quot;ui-table__title&quot; href=&quot;#c1&quot; title=&quot;Guangzhou Yanmei Cosmetics&quot;&gt;Guangzhou Yanmei Cosmetics&lt;/a&gt;&lt;span class=&quot;ui-sub&quot;&gt;OEM · Skincare&lt;/span&gt;&lt;/td&gt;&lt;td data-label=&quot;In&quot;&gt;Guangzhou&lt;/td&gt;&lt;td&gt;&lt;span class=&quot;ui-tag ui-tag--success&quot;&gt;Likely factory&lt;/span&gt;&lt;/td&gt;&lt;td class=&quot;is-num&quot; data-label=&quot;Score&quot; data-sort-value=&quot;86&quot;&gt;86&lt;/td&gt;&lt;td data-condensed=&quot;hide&quot;&gt;TikTok&lt;/td&gt;&lt;td class=&quot;ui-table__actions&quot;&gt;&lt;span class=&quot;ui-row-actions&quot;&gt;&lt;button type=&quot;button&quot; class=&quot;ui-btn ui-btn--sm&quot;&gt;Contact&lt;/button&gt;&lt;details class=&quot;ui-menu ui-menu--end&quot;&gt;&lt;summary class=&quot;ui-btn ui-btn--icon&quot; aria-label=&quot;More actions for Guangzhou Yanmei Cosmetics&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; aria-hidden=&quot;true&quot;&gt;&lt;circle cx=&quot;5&quot; cy=&quot;10&quot; r=&quot;1.5&quot;/&gt;&lt;circle cx=&quot;10&quot; cy=&quot;10&quot; r=&quot;1.5&quot;/&gt;&lt;circle cx=&quot;15&quot; cy=&quot;10&quot; r=&quot;1.5&quot;/&gt;&lt;/svg&gt;&lt;/summary&gt;&lt;div class=&quot;ui-menu__list gemboss-popover-surface&quot;&gt;&lt;button type=&quot;button&quot; class=&quot;ui-menu__item&quot;&gt;Copy link&lt;/button&gt;&lt;button type=&quot;button&quot; class=&quot;ui-menu__item&quot;&gt;Archive&lt;/button&gt;&lt;/div&gt;&lt;/details&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr data-href=&quot;#c2&quot;&gt;&lt;td class=&quot;ui-table__check&quot;&gt;&lt;label class=&quot;ui-table__checkbox&quot;&gt;&lt;input type=&quot;checkbox&quot; data-gb-select value=&quot;c2&quot; aria-label=&quot;Select Shantou Lianfeng Biotech Co., Ltd. (formerly Lianfeng Daily Chemical Factory)&quot;&gt;&lt;/label&gt;&lt;/td&gt;&lt;td class=&quot;ui-table__primary&quot;&gt;&lt;a class=&quot;ui-table__title&quot; href=&quot;#c2&quot; title=&quot;Shantou Lianfeng Biotech Co., Ltd. (formerly Lianfeng Daily Chemical Factory)&quot;&gt;Shantou Lianfeng Biotech Co., Ltd. (formerly Lianfeng Daily Chemical Factory)&lt;/a&gt;&lt;span class=&quot;ui-sub&quot;&gt;ODM · Haircare&lt;/span&gt;&lt;/td&gt;&lt;td data-label=&quot;In&quot;&gt;Shantou&lt;/td&gt;&lt;td&gt;&lt;span class=&quot;ui-tag ui-tag--warning&quot;&gt;Maybe&lt;/span&gt;&lt;/td&gt;&lt;td class=&quot;is-num&quot; data-label=&quot;Score&quot; data-sort-value=&quot;64&quot;&gt;64&lt;/td&gt;&lt;td data-condensed=&quot;hide&quot;&gt;Meta&lt;/td&gt;&lt;td class=&quot;ui-table__actions&quot;&gt;&lt;span class=&quot;ui-row-actions&quot;&gt;&lt;button type=&quot;button&quot; class=&quot;ui-btn ui-btn--sm&quot;&gt;Contact&lt;/button&gt;&lt;details class=&quot;ui-menu ui-menu--end&quot;&gt;&lt;summary class=&quot;ui-btn ui-btn--icon&quot; aria-label=&quot;More actions for Shantou Lianfeng Biotech Co., Ltd. (formerly Lianfeng Daily Chemical Factory)&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; aria-hidden=&quot;true&quot;&gt;&lt;circle cx=&quot;5&quot; cy=&quot;10&quot; r=&quot;1.5&quot;/&gt;&lt;circle cx=&quot;10&quot; cy=&quot;10&quot; r=&quot;1.5&quot;/&gt;&lt;circle cx=&quot;15&quot; cy=&quot;10&quot; r=&quot;1.5&quot;/&gt;&lt;/svg&gt;&lt;/summary&gt;&lt;div class=&quot;ui-menu__list gemboss-popover-surface&quot;&gt;&lt;button type=&quot;button&quot; class=&quot;ui-menu__item&quot;&gt;Copy link&lt;/button&gt;&lt;button type=&quot;button&quot; class=&quot;ui-menu__item&quot;&gt;Archive&lt;/button&gt;&lt;/div&gt;&lt;/details&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr data-href=&quot;#c3&quot;&gt;&lt;td class=&quot;ui-table__check&quot;&gt;&lt;label class=&quot;ui-table__checkbox&quot;&gt;&lt;input type=&quot;checkbox&quot; data-gb-select value=&quot;c3&quot; aria-label=&quot;Select Yiwu Bloom Packaging&quot;&gt;&lt;/label&gt;&lt;/td&gt;&lt;td class=&quot;ui-table__primary&quot;&gt;&lt;a class=&quot;ui-table__title&quot; href=&quot;#c3&quot; title=&quot;Yiwu Bloom Packaging&quot;&gt;Yiwu Bloom Packaging&lt;/a&gt;&lt;span class=&quot;ui-sub&quot;&gt;Trader · Packaging&lt;/span&gt;&lt;/td&gt;&lt;td data-label=&quot;In&quot;&gt;Yiwu&lt;/td&gt;&lt;td&gt;&lt;span class=&quot;ui-tag ui-tag--danger&quot;&gt;Trader&lt;/span&gt;&lt;/td&gt;&lt;td class=&quot;is-num&quot; data-label=&quot;Score&quot; data-sort-value=&quot;31&quot;&gt;31&lt;/td&gt;&lt;td data-condensed=&quot;hide&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;ui-table__actions&quot;&gt;&lt;span class=&quot;ui-row-actions&quot;&gt;&lt;button type=&quot;button&quot; class=&quot;ui-btn ui-btn--sm&quot;&gt;Contact&lt;/button&gt;&lt;details class=&quot;ui-menu ui-menu--end&quot;&gt;&lt;summary class=&quot;ui-btn ui-btn--icon&quot; aria-label=&quot;More actions for Yiwu Bloom Packaging&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; aria-hidden=&quot;true&quot;&gt;&lt;circle cx=&quot;5&quot; cy=&quot;10&quot; r=&quot;1.5&quot;/&gt;&lt;circle cx=&quot;10&quot; cy=&quot;10&quot; r=&quot;1.5&quot;/&gt;&lt;circle cx=&quot;15&quot; cy=&quot;10&quot; r=&quot;1.5&quot;/&gt;&lt;/svg&gt;&lt;/summary&gt;&lt;div class=&quot;ui-menu__list gemboss-popover-surface&quot;&gt;&lt;button type=&quot;button&quot; class=&quot;ui-menu__item&quot;&gt;Copy link&lt;/button&gt;&lt;button type=&quot;button&quot; class=&quot;ui-menu__item&quot;&gt;Archive&lt;/button&gt;&lt;/div&gt;&lt;/details&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr data-href=&quot;#c4&quot;&gt;&lt;td class=&quot;ui-table__check&quot;&gt;&lt;label class=&quot;ui-table__checkbox&quot;&gt;&lt;input type=&quot;checkbox&quot; data-gb-select value=&quot;c4&quot; aria-label=&quot;Select Shanghai Kerui Labs&quot;&gt;&lt;/label&gt;&lt;/td&gt;&lt;td class=&quot;ui-table__primary&quot;&gt;&lt;a class=&quot;ui-table__title&quot; href=&quot;#c4&quot; title=&quot;Shanghai Kerui Labs&quot;&gt;Shanghai Kerui Labs&lt;/a&gt;&lt;span class=&quot;ui-sub&quot;&gt;OEM · Serums&lt;/span&gt;&lt;/td&gt;&lt;td data-label=&quot;In&quot;&gt;Shanghai&lt;/td&gt;&lt;td&gt;&lt;span class=&quot;ui-tag ui-tag--success&quot;&gt;Likely factory&lt;/span&gt;&lt;/td&gt;&lt;td class=&quot;is-num&quot; data-label=&quot;Score&quot; data-sort-value=&quot;91&quot;&gt;91&lt;/td&gt;&lt;td data-condensed=&quot;hide&quot;&gt;Google&lt;/td&gt;&lt;td class=&quot;ui-table__actions&quot;&gt;&lt;span class=&quot;ui-row-actions&quot;&gt;&lt;button type=&quot;button&quot; class=&quot;ui-btn ui-btn--sm&quot;&gt;Contact&lt;/button&gt;&lt;details class=&quot;ui-menu ui-menu--end&quot;&gt;&lt;summary class=&quot;ui-btn ui-btn--icon&quot; aria-label=&quot;More actions for Shanghai Kerui Labs&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; aria-hidden=&quot;true&quot;&gt;&lt;circle cx=&quot;5&quot; cy=&quot;10&quot; r=&quot;1.5&quot;/&gt;&lt;circle cx=&quot;10&quot; cy=&quot;10&quot; r=&quot;1.5&quot;/&gt;&lt;circle cx=&quot;15&quot; cy=&quot;10&quot; r=&quot;1.5&quot;/&gt;&lt;/svg&gt;&lt;/summary&gt;&lt;div class=&quot;ui-menu__list gemboss-popover-surface&quot;&gt;&lt;button type=&quot;button&quot; class=&quot;ui-menu__item&quot;&gt;Copy link&lt;/button&gt;&lt;button type=&quot;button&quot; class=&quot;ui-menu__item&quot;&gt;Archive&lt;/button&gt;&lt;/div&gt;&lt;/details&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;script src=&quot;../src/kit-plain.js&quot;&gt;&lt;/script&gt;&lt;/body&gt;&lt;/html&gt;"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div style=&quot;padding:16px&quot;&gt;
1346
+ &lt;/div&gt;</code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>2 · Index table ở 390px: ĐỔI thành list (container ≤ 768): tiêu đề, dòng phụ, các ô còn lại trên một dòng chữ nhỏ, checkbox + hành động giữ chỗ</figcaption><div class="cat-wide"><iframe title="2 · Index table ở 390px: ĐỔI thành list (container ≤ 768): tiêu đề, dòng phụ, các ô còn lại trên một dòng chữ nhỏ, checkbox + hành động giữ chỗ" style="height:460px;width:390px" srcdoc="&lt;!doctype html&gt;&lt;html&gt;&lt;head&gt;&lt;meta charset=&quot;utf-8&quot;&gt;&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../gemboss-ui.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/collections.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/reactions.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-engine.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/action-card.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-chat.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/minichart.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/setup-guide.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/sheet.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/settings-dialog.css&quot;&gt;&lt;/head&gt;&lt;body&gt;&lt;div style=&quot;padding:16px&quot;&gt;&lt;div class=&quot;ui-index&quot;&gt;&lt;div class=&quot;ui-index__sortbar&quot; role=&quot;group&quot; aria-label=&quot;Sort&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;Sort&lt;/span&gt;&lt;a class=&quot;ui-chip&quot; href=&quot;#collections&quot; aria-current=&quot;true&quot;&gt;Supplier ↑&lt;/a&gt;&lt;a class=&quot;ui-chip&quot; href=&quot;#collections&quot;&gt;Score&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;ui-bulkbar&quot; hidden&gt;&lt;label class=&quot;ui-table__checkbox&quot;&gt;&lt;input type=&quot;checkbox&quot; data-gb-select-all aria-label=&quot;Select all&quot;&gt;&lt;/label&gt;&lt;span class=&quot;ui-bulkbar__count&quot; data-gb-count=&quot;{n} selected&quot; aria-live=&quot;polite&quot;&gt;0 selected&lt;/span&gt;&lt;span class=&quot;ui-bulkbar__actions&quot;&gt;&lt;button type=&quot;button&quot; class=&quot;ui-btn ui-btn--sm&quot;&gt;Add to outreach&lt;/button&gt;&lt;button type=&quot;button&quot; class=&quot;ui-btn ui-btn--sm ui-btn--critical&quot;&gt;Archive&lt;/button&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;ui-table-wrap&quot;&gt;&lt;table class=&quot;ui-table ui-table--index&quot; data-gb-sort=&quot;client&quot;&gt;&lt;caption class=&quot;ui-sr-only&quot;&gt;Suppliers&lt;/caption&gt;&lt;thead&gt;&lt;tr&gt;&lt;th class=&quot;ui-table__check&quot; scope=&quot;col&quot;&gt;&lt;label class=&quot;ui-table__checkbox&quot;&gt;&lt;input type=&quot;checkbox&quot; data-gb-select-all aria-label=&quot;Select all&quot;&gt;&lt;/label&gt;&lt;/th&gt;&lt;th class=&quot;ui-table__primary&quot; scope=&quot;col&quot; aria-sort=&quot;ascending&quot;&gt;&lt;button type=&quot;button&quot; class=&quot;ui-table__sort&quot;&gt;Supplier&lt;/button&gt;&lt;/th&gt;&lt;th scope=&quot;col&quot;&gt;Location&lt;/th&gt;&lt;th scope=&quot;col&quot;&gt;Verdict&lt;/th&gt;&lt;th scope=&quot;col&quot; class=&quot;is-num&quot; aria-sort=&quot;none&quot;&gt;&lt;button type=&quot;button&quot; class=&quot;ui-table__sort&quot;&gt;Score&lt;/button&gt;&lt;/th&gt;&lt;th scope=&quot;col&quot;&gt;Ads&lt;/th&gt;&lt;th class=&quot;ui-table__actions&quot; scope=&quot;col&quot;&gt;&lt;span class=&quot;ui-sr-only&quot;&gt;Actions&lt;/span&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr data-href=&quot;#c1&quot;&gt;&lt;td class=&quot;ui-table__check&quot;&gt;&lt;label class=&quot;ui-table__checkbox&quot;&gt;&lt;input type=&quot;checkbox&quot; data-gb-select value=&quot;c1&quot; aria-label=&quot;Select Guangzhou Yanmei Cosmetics&quot;&gt;&lt;/label&gt;&lt;/td&gt;&lt;td class=&quot;ui-table__primary&quot;&gt;&lt;a class=&quot;ui-table__title&quot; href=&quot;#c1&quot; title=&quot;Guangzhou Yanmei Cosmetics&quot;&gt;Guangzhou Yanmei Cosmetics&lt;/a&gt;&lt;span class=&quot;ui-sub&quot;&gt;OEM · Skincare&lt;/span&gt;&lt;/td&gt;&lt;td data-label=&quot;In&quot;&gt;Guangzhou&lt;/td&gt;&lt;td&gt;&lt;span class=&quot;ui-tag ui-tag--success&quot;&gt;Likely factory&lt;/span&gt;&lt;/td&gt;&lt;td class=&quot;is-num&quot; data-label=&quot;Score&quot; data-sort-value=&quot;86&quot;&gt;86&lt;/td&gt;&lt;td data-condensed=&quot;hide&quot;&gt;TikTok&lt;/td&gt;&lt;td class=&quot;ui-table__actions&quot;&gt;&lt;span class=&quot;ui-row-actions&quot;&gt;&lt;button type=&quot;button&quot; class=&quot;ui-btn ui-btn--sm&quot;&gt;Contact&lt;/button&gt;&lt;details class=&quot;ui-menu ui-menu--end&quot;&gt;&lt;summary class=&quot;ui-btn ui-btn--icon&quot; aria-label=&quot;More actions for Guangzhou Yanmei Cosmetics&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; aria-hidden=&quot;true&quot;&gt;&lt;circle cx=&quot;5&quot; cy=&quot;10&quot; r=&quot;1.5&quot;/&gt;&lt;circle cx=&quot;10&quot; cy=&quot;10&quot; r=&quot;1.5&quot;/&gt;&lt;circle cx=&quot;15&quot; cy=&quot;10&quot; r=&quot;1.5&quot;/&gt;&lt;/svg&gt;&lt;/summary&gt;&lt;div class=&quot;ui-menu__list gemboss-popover-surface&quot;&gt;&lt;button type=&quot;button&quot; class=&quot;ui-menu__item&quot;&gt;Copy link&lt;/button&gt;&lt;button type=&quot;button&quot; class=&quot;ui-menu__item&quot;&gt;Archive&lt;/button&gt;&lt;/div&gt;&lt;/details&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr data-href=&quot;#c2&quot;&gt;&lt;td class=&quot;ui-table__check&quot;&gt;&lt;label class=&quot;ui-table__checkbox&quot;&gt;&lt;input type=&quot;checkbox&quot; data-gb-select value=&quot;c2&quot; aria-label=&quot;Select Shantou Lianfeng Biotech Co., Ltd. (formerly Lianfeng Daily Chemical Factory)&quot;&gt;&lt;/label&gt;&lt;/td&gt;&lt;td class=&quot;ui-table__primary&quot;&gt;&lt;a class=&quot;ui-table__title&quot; href=&quot;#c2&quot; title=&quot;Shantou Lianfeng Biotech Co., Ltd. (formerly Lianfeng Daily Chemical Factory)&quot;&gt;Shantou Lianfeng Biotech Co., Ltd. (formerly Lianfeng Daily Chemical Factory)&lt;/a&gt;&lt;span class=&quot;ui-sub&quot;&gt;ODM · Haircare&lt;/span&gt;&lt;/td&gt;&lt;td data-label=&quot;In&quot;&gt;Shantou&lt;/td&gt;&lt;td&gt;&lt;span class=&quot;ui-tag ui-tag--warning&quot;&gt;Maybe&lt;/span&gt;&lt;/td&gt;&lt;td class=&quot;is-num&quot; data-label=&quot;Score&quot; data-sort-value=&quot;64&quot;&gt;64&lt;/td&gt;&lt;td data-condensed=&quot;hide&quot;&gt;Meta&lt;/td&gt;&lt;td class=&quot;ui-table__actions&quot;&gt;&lt;span class=&quot;ui-row-actions&quot;&gt;&lt;button type=&quot;button&quot; class=&quot;ui-btn ui-btn--sm&quot;&gt;Contact&lt;/button&gt;&lt;details class=&quot;ui-menu ui-menu--end&quot;&gt;&lt;summary class=&quot;ui-btn ui-btn--icon&quot; aria-label=&quot;More actions for Shantou Lianfeng Biotech Co., Ltd. (formerly Lianfeng Daily Chemical Factory)&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; aria-hidden=&quot;true&quot;&gt;&lt;circle cx=&quot;5&quot; cy=&quot;10&quot; r=&quot;1.5&quot;/&gt;&lt;circle cx=&quot;10&quot; cy=&quot;10&quot; r=&quot;1.5&quot;/&gt;&lt;circle cx=&quot;15&quot; cy=&quot;10&quot; r=&quot;1.5&quot;/&gt;&lt;/svg&gt;&lt;/summary&gt;&lt;div class=&quot;ui-menu__list gemboss-popover-surface&quot;&gt;&lt;button type=&quot;button&quot; class=&quot;ui-menu__item&quot;&gt;Copy link&lt;/button&gt;&lt;button type=&quot;button&quot; class=&quot;ui-menu__item&quot;&gt;Archive&lt;/button&gt;&lt;/div&gt;&lt;/details&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr data-href=&quot;#c3&quot;&gt;&lt;td class=&quot;ui-table__check&quot;&gt;&lt;label class=&quot;ui-table__checkbox&quot;&gt;&lt;input type=&quot;checkbox&quot; data-gb-select value=&quot;c3&quot; aria-label=&quot;Select Yiwu Bloom Packaging&quot;&gt;&lt;/label&gt;&lt;/td&gt;&lt;td class=&quot;ui-table__primary&quot;&gt;&lt;a class=&quot;ui-table__title&quot; href=&quot;#c3&quot; title=&quot;Yiwu Bloom Packaging&quot;&gt;Yiwu Bloom Packaging&lt;/a&gt;&lt;span class=&quot;ui-sub&quot;&gt;Trader · Packaging&lt;/span&gt;&lt;/td&gt;&lt;td data-label=&quot;In&quot;&gt;Yiwu&lt;/td&gt;&lt;td&gt;&lt;span class=&quot;ui-tag ui-tag--danger&quot;&gt;Trader&lt;/span&gt;&lt;/td&gt;&lt;td class=&quot;is-num&quot; data-label=&quot;Score&quot; data-sort-value=&quot;31&quot;&gt;31&lt;/td&gt;&lt;td data-condensed=&quot;hide&quot;&gt;—&lt;/td&gt;&lt;td class=&quot;ui-table__actions&quot;&gt;&lt;span class=&quot;ui-row-actions&quot;&gt;&lt;button type=&quot;button&quot; class=&quot;ui-btn ui-btn--sm&quot;&gt;Contact&lt;/button&gt;&lt;details class=&quot;ui-menu ui-menu--end&quot;&gt;&lt;summary class=&quot;ui-btn ui-btn--icon&quot; aria-label=&quot;More actions for Yiwu Bloom Packaging&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; aria-hidden=&quot;true&quot;&gt;&lt;circle cx=&quot;5&quot; cy=&quot;10&quot; r=&quot;1.5&quot;/&gt;&lt;circle cx=&quot;10&quot; cy=&quot;10&quot; r=&quot;1.5&quot;/&gt;&lt;circle cx=&quot;15&quot; cy=&quot;10&quot; r=&quot;1.5&quot;/&gt;&lt;/svg&gt;&lt;/summary&gt;&lt;div class=&quot;ui-menu__list gemboss-popover-surface&quot;&gt;&lt;button type=&quot;button&quot; class=&quot;ui-menu__item&quot;&gt;Copy link&lt;/button&gt;&lt;button type=&quot;button&quot; class=&quot;ui-menu__item&quot;&gt;Archive&lt;/button&gt;&lt;/div&gt;&lt;/details&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr data-href=&quot;#c4&quot;&gt;&lt;td class=&quot;ui-table__check&quot;&gt;&lt;label class=&quot;ui-table__checkbox&quot;&gt;&lt;input type=&quot;checkbox&quot; data-gb-select value=&quot;c4&quot; aria-label=&quot;Select Shanghai Kerui Labs&quot;&gt;&lt;/label&gt;&lt;/td&gt;&lt;td class=&quot;ui-table__primary&quot;&gt;&lt;a class=&quot;ui-table__title&quot; href=&quot;#c4&quot; title=&quot;Shanghai Kerui Labs&quot;&gt;Shanghai Kerui Labs&lt;/a&gt;&lt;span class=&quot;ui-sub&quot;&gt;OEM · Serums&lt;/span&gt;&lt;/td&gt;&lt;td data-label=&quot;In&quot;&gt;Shanghai&lt;/td&gt;&lt;td&gt;&lt;span class=&quot;ui-tag ui-tag--success&quot;&gt;Likely factory&lt;/span&gt;&lt;/td&gt;&lt;td class=&quot;is-num&quot; data-label=&quot;Score&quot; data-sort-value=&quot;91&quot;&gt;91&lt;/td&gt;&lt;td data-condensed=&quot;hide&quot;&gt;Google&lt;/td&gt;&lt;td class=&quot;ui-table__actions&quot;&gt;&lt;span class=&quot;ui-row-actions&quot;&gt;&lt;button type=&quot;button&quot; class=&quot;ui-btn ui-btn--sm&quot;&gt;Contact&lt;/button&gt;&lt;details class=&quot;ui-menu ui-menu--end&quot;&gt;&lt;summary class=&quot;ui-btn ui-btn--icon&quot; aria-label=&quot;More actions for Shanghai Kerui Labs&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; aria-hidden=&quot;true&quot;&gt;&lt;circle cx=&quot;5&quot; cy=&quot;10&quot; r=&quot;1.5&quot;/&gt;&lt;circle cx=&quot;10&quot; cy=&quot;10&quot; r=&quot;1.5&quot;/&gt;&lt;circle cx=&quot;15&quot; cy=&quot;10&quot; r=&quot;1.5&quot;/&gt;&lt;/svg&gt;&lt;/summary&gt;&lt;div class=&quot;ui-menu__list gemboss-popover-surface&quot;&gt;&lt;button type=&quot;button&quot; class=&quot;ui-menu__item&quot;&gt;Copy link&lt;/button&gt;&lt;button type=&quot;button&quot; class=&quot;ui-menu__item&quot;&gt;Archive&lt;/button&gt;&lt;/div&gt;&lt;/details&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;script src=&quot;../src/kit-plain.js&quot;&gt;&lt;/script&gt;&lt;/body&gt;&lt;/html&gt;"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div style=&quot;padding:16px&quot;&gt;
1347
1347
  &lt;div class=&quot;ui-index&quot;&gt;
1348
1348
  &lt;div class=&quot;ui-index__sortbar&quot; role=&quot;group&quot; aria-label=&quot;Sort&quot;&gt;
1349
1349
  &lt;span aria-hidden=&quot;true&quot;&gt;Sort&lt;/span&gt;
@@ -1806,7 +1806,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
1806
1806
  &lt;/div&gt;
1807
1807
  &lt;/li&gt;
1808
1808
  &lt;/ul&gt;
1809
- &lt;/div&gt;</code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>3 · Resource list chọn được ở 390px: ô chọn 44 (điều khiển dưới ngón tay) kéo vào lề hàng, ảnh không bị đẩy</figcaption><div class="cat-wide"><iframe title="3 · Resource list chọn được ở 390px: ô chọn 44 (điều khiển dưới ngón tay) kéo vào lề hàng, ảnh không bị đẩy" style="height:420px;width:390px" srcdoc="&lt;!doctype html&gt;&lt;html&gt;&lt;head&gt;&lt;meta charset=&quot;utf-8&quot;&gt;&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../gemboss-ui.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/collections.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/reactions.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-engine.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/action-card.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-chat.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/minichart.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/setup-guide.css&quot;&gt;&lt;/head&gt;&lt;body&gt;&lt;div style=&quot;padding:16px&quot;&gt;&lt;div class=&quot;ui-resource&quot;&gt;&lt;div class=&quot;ui-bulkbar&quot; data-fit=&quot;pending&quot;&gt;&lt;label class=&quot;ui-table__checkbox&quot;&gt;&lt;input type=&quot;checkbox&quot; aria-label=&quot;Select all&quot;/&gt;&lt;/label&gt;&lt;span class=&quot;ui-bulkbar__count&quot; aria-live=&quot;polite&quot;&gt;0 selected&lt;/span&gt;&lt;span class=&quot;ui-bulkbar__actions&quot;&gt;&lt;button type=&quot;button&quot; class=&quot;ui-btn ui-btn--sm&quot; disabled=&quot;&quot;&gt;Shortlist&lt;/button&gt;&lt;button type=&quot;button&quot; class=&quot;ui-btn ui-btn--sm&quot; disabled=&quot;&quot;&gt;Compare&lt;/button&gt;&lt;button type=&quot;button&quot; class=&quot;ui-btn ui-btn--sm ui-btn--critical&quot; disabled=&quot;&quot;&gt;Not fit&lt;/button&gt;&lt;/span&gt;&lt;span class=&quot;ui-bulkbar__measure&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;ui-btn ui-btn--sm&quot;&gt;Shortlist&lt;/span&gt;&lt;span class=&quot;ui-btn ui-btn--sm&quot;&gt;Compare&lt;/span&gt;&lt;span class=&quot;ui-btn ui-btn--sm ui-btn--critical&quot;&gt;Not fit&lt;/span&gt;&lt;span class=&quot;ui-btn ui-btn--icon&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; width=&quot;20&quot; height=&quot;20&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;circle cx=&quot;4.5&quot; cy=&quot;10&quot; r=&quot;1&quot;&gt;&lt;/circle&gt;&lt;circle cx=&quot;10&quot; cy=&quot;10&quot; r=&quot;1&quot;&gt;&lt;/circle&gt;&lt;circle cx=&quot;15.5&quot; cy=&quot;10&quot; r=&quot;1&quot;&gt;&lt;/circle&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul class=&quot;ui-list&quot; aria-label=&quot;Candidates&quot;&gt;&lt;li class=&quot;ui-list__item&quot;&gt;&lt;div class=&quot;ui-list__media&quot;&gt;&lt;label class=&quot;ui-list__check&quot;&gt;&lt;input type=&quot;checkbox&quot; aria-label=&quot;Select Lily Tran&quot;/&gt;&lt;/label&gt;&lt;span class=&quot;gb-avatar gb-avatar--32&quot; data-tone=&quot;1&quot; aria-hidden=&quot;true&quot;&gt;LT&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;ui-list__body&quot;&gt;&lt;a class=&quot;ui-list__title&quot; href=&quot;#s0&quot;&gt;Lily Tran&lt;/a&gt;&lt;p class=&quot;ui-list__sub&quot;&gt;Head of CRO at Ruggable&lt;/p&gt;&lt;p class=&quot;ui-list__meta&quot;&gt;Replied 2 days ago&lt;/p&gt;&lt;div class=&quot;ui-list__badges&quot;&gt;&lt;span class=&quot;ui-badge&quot;&gt;CRO&lt;/span&gt;&lt;span class=&quot;ui-badge&quot;&gt;Plus&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ui-list__aside&quot;&gt;&lt;b&gt;82&lt;/b&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;ui-list__item&quot;&gt;&lt;div class=&quot;ui-list__media&quot;&gt;&lt;label class=&quot;ui-list__check&quot;&gt;&lt;input type=&quot;checkbox&quot; aria-label=&quot;Select Marcus Bell&quot;/&gt;&lt;/label&gt;&lt;span class=&quot;gb-avatar gb-avatar--32&quot; data-tone=&quot;0&quot; aria-hidden=&quot;true&quot;&gt;MB&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;ui-list__body&quot;&gt;&lt;a class=&quot;ui-list__title&quot; href=&quot;#s1&quot;&gt;Marcus Bell&lt;/a&gt;&lt;p class=&quot;ui-list__sub&quot;&gt;Founder, Bell &amp;amp; Co. Media. Runs Meta ads for 40 Shopify brands, mostly apparel and home goods; asked about the agency plan twice.&lt;/p&gt;&lt;p class=&quot;ui-list__meta&quot;&gt;New&lt;/p&gt;&lt;div class=&quot;ui-list__badges&quot;&gt;&lt;span class=&quot;ui-badge&quot;&gt;Media buyer&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ui-list__aside&quot;&gt;&lt;b&gt;77&lt;/b&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;ui-list__item&quot;&gt;&lt;div class=&quot;ui-list__media&quot;&gt;&lt;label class=&quot;ui-list__check&quot;&gt;&lt;input type=&quot;checkbox&quot; aria-label=&quot;Select Aiko Sato&quot;/&gt;&lt;/label&gt;&lt;span class=&quot;gb-avatar gb-avatar--32&quot; data-tone=&quot;5&quot; aria-hidden=&quot;true&quot;&gt;AS&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;ui-list__body&quot;&gt;&lt;a class=&quot;ui-list__title&quot; href=&quot;#s2&quot;&gt;Aiko Sato&lt;/a&gt;&lt;p class=&quot;ui-list__sub&quot;&gt;Shopify app founder (reviews)&lt;/p&gt;&lt;p class=&quot;ui-list__meta&quot;&gt;Waiting on intro&lt;/p&gt;&lt;div class=&quot;ui-list__badges&quot;&gt;&lt;span class=&quot;ui-badge&quot;&gt;App&lt;/span&gt;&lt;span class=&quot;ui-badge&quot;&gt;Japan&lt;/span&gt;&lt;span class=&quot;ui-badge&quot;&gt;Plus&lt;/span&gt;&lt;span class=&quot;ui-badge&quot;&gt;+1 more&lt;span class=&quot;ui-sr-only&quot;&gt;: &lt;span class=&quot;ui-badge&quot;&gt;Partner&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ui-list__aside&quot;&gt;&lt;b&gt;64&lt;/b&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;/body&gt;&lt;/html&gt;"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div style=&quot;padding:16px&quot;&gt;
1809
+ &lt;/div&gt;</code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>3 · Resource list chọn được ở 390px: ô chọn 44 (điều khiển dưới ngón tay) kéo vào lề hàng, ảnh không bị đẩy</figcaption><div class="cat-wide"><iframe title="3 · Resource list chọn được ở 390px: ô chọn 44 (điều khiển dưới ngón tay) kéo vào lề hàng, ảnh không bị đẩy" style="height:420px;width:390px" srcdoc="&lt;!doctype html&gt;&lt;html&gt;&lt;head&gt;&lt;meta charset=&quot;utf-8&quot;&gt;&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../gemboss-ui.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/collections.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/reactions.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-engine.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/action-card.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-chat.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/minichart.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/setup-guide.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/sheet.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/settings-dialog.css&quot;&gt;&lt;/head&gt;&lt;body&gt;&lt;div style=&quot;padding:16px&quot;&gt;&lt;div class=&quot;ui-resource&quot;&gt;&lt;div class=&quot;ui-bulkbar&quot; data-fit=&quot;pending&quot;&gt;&lt;label class=&quot;ui-table__checkbox&quot;&gt;&lt;input type=&quot;checkbox&quot; aria-label=&quot;Select all&quot;/&gt;&lt;/label&gt;&lt;span class=&quot;ui-bulkbar__count&quot; aria-live=&quot;polite&quot;&gt;0 selected&lt;/span&gt;&lt;span class=&quot;ui-bulkbar__actions&quot;&gt;&lt;button type=&quot;button&quot; class=&quot;ui-btn ui-btn--sm&quot; disabled=&quot;&quot;&gt;Shortlist&lt;/button&gt;&lt;button type=&quot;button&quot; class=&quot;ui-btn ui-btn--sm&quot; disabled=&quot;&quot;&gt;Compare&lt;/button&gt;&lt;button type=&quot;button&quot; class=&quot;ui-btn ui-btn--sm ui-btn--critical&quot; disabled=&quot;&quot;&gt;Not fit&lt;/button&gt;&lt;/span&gt;&lt;span class=&quot;ui-bulkbar__measure&quot; aria-hidden=&quot;true&quot;&gt;&lt;span class=&quot;ui-btn ui-btn--sm&quot;&gt;Shortlist&lt;/span&gt;&lt;span class=&quot;ui-btn ui-btn--sm&quot;&gt;Compare&lt;/span&gt;&lt;span class=&quot;ui-btn ui-btn--sm ui-btn--critical&quot;&gt;Not fit&lt;/span&gt;&lt;span class=&quot;ui-btn ui-btn--icon&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; width=&quot;20&quot; height=&quot;20&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;circle cx=&quot;4.5&quot; cy=&quot;10&quot; r=&quot;1&quot;&gt;&lt;/circle&gt;&lt;circle cx=&quot;10&quot; cy=&quot;10&quot; r=&quot;1&quot;&gt;&lt;/circle&gt;&lt;circle cx=&quot;15.5&quot; cy=&quot;10&quot; r=&quot;1&quot;&gt;&lt;/circle&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul class=&quot;ui-list&quot; aria-label=&quot;Candidates&quot;&gt;&lt;li class=&quot;ui-list__item&quot;&gt;&lt;div class=&quot;ui-list__media&quot;&gt;&lt;label class=&quot;ui-list__check&quot;&gt;&lt;input type=&quot;checkbox&quot; aria-label=&quot;Select Lily Tran&quot;/&gt;&lt;/label&gt;&lt;span class=&quot;gb-avatar gb-avatar--32&quot; data-tone=&quot;1&quot; aria-hidden=&quot;true&quot;&gt;LT&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;ui-list__body&quot;&gt;&lt;a class=&quot;ui-list__title&quot; href=&quot;#s0&quot;&gt;Lily Tran&lt;/a&gt;&lt;p class=&quot;ui-list__sub&quot;&gt;Head of CRO at Ruggable&lt;/p&gt;&lt;p class=&quot;ui-list__meta&quot;&gt;Replied 2 days ago&lt;/p&gt;&lt;div class=&quot;ui-list__badges&quot;&gt;&lt;span class=&quot;ui-badge&quot;&gt;CRO&lt;/span&gt;&lt;span class=&quot;ui-badge&quot;&gt;Plus&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ui-list__aside&quot;&gt;&lt;b&gt;82&lt;/b&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;ui-list__item&quot;&gt;&lt;div class=&quot;ui-list__media&quot;&gt;&lt;label class=&quot;ui-list__check&quot;&gt;&lt;input type=&quot;checkbox&quot; aria-label=&quot;Select Marcus Bell&quot;/&gt;&lt;/label&gt;&lt;span class=&quot;gb-avatar gb-avatar--32&quot; data-tone=&quot;0&quot; aria-hidden=&quot;true&quot;&gt;MB&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;ui-list__body&quot;&gt;&lt;a class=&quot;ui-list__title&quot; href=&quot;#s1&quot;&gt;Marcus Bell&lt;/a&gt;&lt;p class=&quot;ui-list__sub&quot;&gt;Founder, Bell &amp;amp; Co. Media. Runs Meta ads for 40 Shopify brands, mostly apparel and home goods; asked about the agency plan twice.&lt;/p&gt;&lt;p class=&quot;ui-list__meta&quot;&gt;New&lt;/p&gt;&lt;div class=&quot;ui-list__badges&quot;&gt;&lt;span class=&quot;ui-badge&quot;&gt;Media buyer&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ui-list__aside&quot;&gt;&lt;b&gt;77&lt;/b&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;ui-list__item&quot;&gt;&lt;div class=&quot;ui-list__media&quot;&gt;&lt;label class=&quot;ui-list__check&quot;&gt;&lt;input type=&quot;checkbox&quot; aria-label=&quot;Select Aiko Sato&quot;/&gt;&lt;/label&gt;&lt;span class=&quot;gb-avatar gb-avatar--32&quot; data-tone=&quot;5&quot; aria-hidden=&quot;true&quot;&gt;AS&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;ui-list__body&quot;&gt;&lt;a class=&quot;ui-list__title&quot; href=&quot;#s2&quot;&gt;Aiko Sato&lt;/a&gt;&lt;p class=&quot;ui-list__sub&quot;&gt;Shopify app founder (reviews)&lt;/p&gt;&lt;p class=&quot;ui-list__meta&quot;&gt;Waiting on intro&lt;/p&gt;&lt;div class=&quot;ui-list__badges&quot;&gt;&lt;span class=&quot;ui-badge&quot;&gt;App&lt;/span&gt;&lt;span class=&quot;ui-badge&quot;&gt;Japan&lt;/span&gt;&lt;span class=&quot;ui-badge&quot;&gt;Plus&lt;/span&gt;&lt;span class=&quot;ui-badge&quot;&gt;+1 more&lt;span class=&quot;ui-sr-only&quot;&gt;: &lt;span class=&quot;ui-badge&quot;&gt;Partner&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ui-list__aside&quot;&gt;&lt;b&gt;64&lt;/b&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;/body&gt;&lt;/html&gt;"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div style=&quot;padding:16px&quot;&gt;
1810
1810
  &lt;div class=&quot;ui-resource&quot;&gt;
1811
1811
  &lt;div class=&quot;ui-bulkbar&quot; data-fit=&quot;pending&quot;&gt;
1812
1812
  &lt;label class=&quot;ui-table__checkbox&quot;&gt;
@@ -1902,7 +1902,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
1902
1902
  &lt;/li&gt;
1903
1903
  &lt;/ul&gt;
1904
1904
  &lt;/div&gt;
1905
- &lt;/div&gt;</code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>3 · Resource list trong khung ≤ 400 (0.15.0): thân luôn cạnh ảnh và lấy hết bề ngang còn lại; aside + hành động chung MỘT dòng dưới thân (aside trái, hành động phải); hàng không ảnh thì thân rộng hết hàng</figcaption><div class="cat-wide"><iframe title="3 · Resource list trong khung ≤ 400 (0.15.0): thân luôn cạnh ảnh và lấy hết bề ngang còn lại; aside + hành động chung MỘT dòng dưới thân (aside trái, hành động phải); hàng không ảnh thì thân rộng hết hàng" style="height:420px;width:390px" srcdoc="&lt;!doctype html&gt;&lt;html&gt;&lt;head&gt;&lt;meta charset=&quot;utf-8&quot;&gt;&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../gemboss-ui.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/collections.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/reactions.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-engine.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/action-card.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-chat.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/minichart.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/setup-guide.css&quot;&gt;&lt;/head&gt;&lt;body&gt;&lt;div style=&quot;padding:16px&quot;&gt;&lt;ul class=&quot;ui-list&quot; aria-label=&quot;People&quot;&gt;&lt;li class=&quot;ui-list__item&quot;&gt;&lt;div class=&quot;ui-list__media&quot;&gt;&lt;span class=&quot;gb-avatar gb-avatar--40&quot; data-tone=&quot;1&quot; aria-hidden=&quot;true&quot;&gt;LT&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;ui-list__body&quot;&gt;&lt;a class=&quot;ui-list__title&quot; href=&quot;#n1&quot;&gt;Lily Tran&lt;/a&gt;&lt;p class=&quot;ui-list__sub&quot;&gt;Head of CRO at Ruggable. I help Shopify Plus brands turn traffic into revenue with landing pages, offers and A/B tests&lt;/p&gt;&lt;p class=&quot;ui-list__meta&quot;&gt;linkedin · cro-agency · Austin, TX · posted 2d ago&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;ui-list__aside&quot;&gt;&lt;span class=&quot;ui-tag ui-tag--success&quot;&gt;82&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;ui-list__actions&quot;&gt;&lt;a href=&quot;#orig&quot; aria-label=&quot;Open original profile&quot; style=&quot;display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px&quot;&gt;↗&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;ui-list__item&quot;&gt;&lt;div class=&quot;ui-list__body&quot;&gt;&lt;a class=&quot;ui-list__title&quot; href=&quot;#n2&quot;&gt;Marcus Bell&lt;/a&gt;&lt;p class=&quot;ui-list__sub&quot;&gt;Founder, Bell UGC Studio · 12,400 followers&lt;/p&gt;&lt;p class=&quot;ui-list__meta&quot;&gt;&lt;span&gt;Runs the ads himself&lt;span style=&quot;display:block;margin-top:4px&quot;&gt;Signals: arcads · heygen · veo 3 · capcut&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;ui-list__badges&quot;&gt;&lt;span class=&quot;ui-tag&quot;&gt;Hands-on&lt;/span&gt;&lt;span class=&quot;ui-tag ui-tag--success&quot;&gt;Email verified&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ui-list__aside&quot;&gt;&lt;span&gt;&lt;span class=&quot;ui-tag ui-tag--success&quot;&gt;91&lt;/span&gt;&lt;span class=&quot;ui-sub&quot;&gt;Unverified&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;ui-list__actions&quot;&gt;&lt;span&gt;&lt;button type=&quot;button&quot; class=&quot;ui-btn ui-btn--ghost&quot;&gt;Evidence (3)&lt;/button&gt;&lt;details class=&quot;ui-menu ui-menu--end&quot;&gt;&lt;summary class=&quot;ui-btn ui-btn--icon&quot; aria-label=&quot;More profiles&quot;&gt;⋯&lt;/summary&gt;&lt;div class=&quot;ui-menu__list gemboss-popover-surface&quot;&gt;&lt;a class=&quot;ui-menu__item&quot; href=&quot;#x&quot;&gt;X ↗&lt;/a&gt;&lt;/div&gt;&lt;/details&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/body&gt;&lt;/html&gt;"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div style=&quot;padding:16px&quot;&gt;
1905
+ &lt;/div&gt;</code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>3 · Resource list trong khung ≤ 400 (0.15.0): thân luôn cạnh ảnh và lấy hết bề ngang còn lại; aside + hành động chung MỘT dòng dưới thân (aside trái, hành động phải); hàng không ảnh thì thân rộng hết hàng</figcaption><div class="cat-wide"><iframe title="3 · Resource list trong khung ≤ 400 (0.15.0): thân luôn cạnh ảnh và lấy hết bề ngang còn lại; aside + hành động chung MỘT dòng dưới thân (aside trái, hành động phải); hàng không ảnh thì thân rộng hết hàng" style="height:420px;width:390px" srcdoc="&lt;!doctype html&gt;&lt;html&gt;&lt;head&gt;&lt;meta charset=&quot;utf-8&quot;&gt;&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../gemboss-ui.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/collections.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/reactions.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-engine.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/action-card.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-chat.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/minichart.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/setup-guide.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/sheet.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/settings-dialog.css&quot;&gt;&lt;/head&gt;&lt;body&gt;&lt;div style=&quot;padding:16px&quot;&gt;&lt;ul class=&quot;ui-list&quot; aria-label=&quot;People&quot;&gt;&lt;li class=&quot;ui-list__item&quot;&gt;&lt;div class=&quot;ui-list__media&quot;&gt;&lt;span class=&quot;gb-avatar gb-avatar--40&quot; data-tone=&quot;1&quot; aria-hidden=&quot;true&quot;&gt;LT&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;ui-list__body&quot;&gt;&lt;a class=&quot;ui-list__title&quot; href=&quot;#n1&quot;&gt;Lily Tran&lt;/a&gt;&lt;p class=&quot;ui-list__sub&quot;&gt;Head of CRO at Ruggable. I help Shopify Plus brands turn traffic into revenue with landing pages, offers and A/B tests&lt;/p&gt;&lt;p class=&quot;ui-list__meta&quot;&gt;linkedin · cro-agency · Austin, TX · posted 2d ago&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;ui-list__aside&quot;&gt;&lt;span class=&quot;ui-tag ui-tag--success&quot;&gt;82&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;ui-list__actions&quot;&gt;&lt;a href=&quot;#orig&quot; aria-label=&quot;Open original profile&quot; style=&quot;display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px&quot;&gt;↗&lt;/a&gt;&lt;/div&gt;&lt;/li&gt;&lt;li class=&quot;ui-list__item&quot;&gt;&lt;div class=&quot;ui-list__body&quot;&gt;&lt;a class=&quot;ui-list__title&quot; href=&quot;#n2&quot;&gt;Marcus Bell&lt;/a&gt;&lt;p class=&quot;ui-list__sub&quot;&gt;Founder, Bell UGC Studio · 12,400 followers&lt;/p&gt;&lt;p class=&quot;ui-list__meta&quot;&gt;&lt;span&gt;Runs the ads himself&lt;span style=&quot;display:block;margin-top:4px&quot;&gt;Signals: arcads · heygen · veo 3 · capcut&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;ui-list__badges&quot;&gt;&lt;span class=&quot;ui-tag&quot;&gt;Hands-on&lt;/span&gt;&lt;span class=&quot;ui-tag ui-tag--success&quot;&gt;Email verified&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ui-list__aside&quot;&gt;&lt;span&gt;&lt;span class=&quot;ui-tag ui-tag--success&quot;&gt;91&lt;/span&gt;&lt;span class=&quot;ui-sub&quot;&gt;Unverified&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;ui-list__actions&quot;&gt;&lt;span&gt;&lt;button type=&quot;button&quot; class=&quot;ui-btn ui-btn--ghost&quot;&gt;Evidence (3)&lt;/button&gt;&lt;details class=&quot;ui-menu ui-menu--end&quot;&gt;&lt;summary class=&quot;ui-btn ui-btn--icon&quot; aria-label=&quot;More profiles&quot;&gt;⋯&lt;/summary&gt;&lt;div class=&quot;ui-menu__list gemboss-popover-surface&quot;&gt;&lt;a class=&quot;ui-menu__item&quot; href=&quot;#x&quot;&gt;X ↗&lt;/a&gt;&lt;/div&gt;&lt;/details&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/body&gt;&lt;/html&gt;"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div style=&quot;padding:16px&quot;&gt;
1906
1906
  &lt;ul class=&quot;ui-list&quot; aria-label=&quot;People&quot;&gt;
1907
1907
  &lt;li class=&quot;ui-list__item&quot;&gt;
1908
1908
  &lt;div class=&quot;ui-list__media&quot;&gt;
@@ -2017,7 +2017,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
2017
2017
  &lt;time class=&quot;ui-list__time&quot;&gt;Yesterday&lt;/time&gt;
2018
2018
  &lt;/li&gt;
2019
2019
  &lt;/ul&gt;
2020
- &lt;/div&gt;</code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>4 · &lt;code&gt;--activity&lt;/code&gt; + &lt;code&gt;body&lt;/code&gt; + &lt;code&gt;wrap&lt;/code&gt; (0.15.0): nhãn và chi tiết xuống dòng thay vì &quot;…&quot; (title không đọc được trên màn chạm), thân (&lt;code&gt;.ui-list__content&lt;/code&gt;) cỡ chữ thân, không cắt</figcaption><div class="cat-wide"><iframe title="4 · &lt;code&gt;--activity&lt;/code&gt; + &lt;code&gt;body&lt;/code&gt; + &lt;code&gt;wrap&lt;/code&gt; (0.15.0): nhãn và chi tiết xuống dòng thay vì &quot;…&quot; (title không đọc được trên màn chạm), thân (&lt;code&gt;.ui-list__content&lt;/code&gt;) cỡ chữ thân, không cắt" style="height:360px;width:390px" srcdoc="&lt;!doctype html&gt;&lt;html&gt;&lt;head&gt;&lt;meta charset=&quot;utf-8&quot;&gt;&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../gemboss-ui.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/collections.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/reactions.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-engine.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/action-card.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-chat.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/minichart.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/setup-guide.css&quot;&gt;&lt;/head&gt;&lt;body&gt;&lt;div style=&quot;padding:16px&quot;&gt;&lt;ul class=&quot;ui-list ui-list--compact ui-list--activity ui-list--wrap&quot; aria-label=&quot;Relationship history&quot;&gt;&lt;li class=&quot;ui-list__item&quot;&gt;&lt;span class=&quot;ui-list__dot ui-list__dot--info&quot; aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;div&gt;&lt;span class=&quot;ui-list__label&quot;&gt;&lt;span&gt;Intro call with &lt;a href=&quot;#org&quot;&gt;Ruggable&lt;/a&gt;&amp;#x27;s growth team&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;ui-list__detail&quot;&gt;by Lily Tran · with Marcus Bell and Aiko Sato&lt;/span&gt;&lt;div class=&quot;ui-list__content&quot;&gt;&lt;p&gt;They want a landing page per ad set and asked whether the agency plan covers four stores; send the pricing sheet by Friday.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;time class=&quot;ui-list__time&quot; dateTime=&quot;2026-10-03&quot;&gt;Oct 3&lt;/time&gt;&lt;/li&gt;&lt;li class=&quot;ui-list__item&quot;&gt;&lt;span class=&quot;ui-list__dot ui-list__dot--warning&quot; aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;div&gt;&lt;span class=&quot;ui-list__label&quot;&gt;No reply to the follow-up&lt;/span&gt;&lt;span class=&quot;ui-list__detail&quot;&gt;sent by Lily Tran&lt;/span&gt;&lt;/div&gt;&lt;time class=&quot;ui-list__time&quot;&gt;Sep 28&lt;/time&gt;&lt;/li&gt;&lt;li class=&quot;ui-list__item&quot;&gt;&lt;span class=&quot;ui-list__dot ui-list__dot--success&quot; aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;div&gt;&lt;span class=&quot;ui-list__label&quot;&gt;Signed the agency plan&lt;/span&gt;&lt;span class=&quot;ui-list__detail&quot;&gt;4 stores · Shopify Plus&lt;/span&gt;&lt;div class=&quot;ui-list__content&quot;&gt;&lt;p&gt;Starts Monday; the first store is the Austin one.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;time class=&quot;ui-list__time&quot;&gt;Sep 20&lt;/time&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/body&gt;&lt;/html&gt;"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div style=&quot;padding:16px&quot;&gt;
2020
+ &lt;/div&gt;</code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>4 · &lt;code&gt;--activity&lt;/code&gt; + &lt;code&gt;body&lt;/code&gt; + &lt;code&gt;wrap&lt;/code&gt; (0.15.0): nhãn và chi tiết xuống dòng thay vì &quot;…&quot; (title không đọc được trên màn chạm), thân (&lt;code&gt;.ui-list__content&lt;/code&gt;) cỡ chữ thân, không cắt</figcaption><div class="cat-wide"><iframe title="4 · &lt;code&gt;--activity&lt;/code&gt; + &lt;code&gt;body&lt;/code&gt; + &lt;code&gt;wrap&lt;/code&gt; (0.15.0): nhãn và chi tiết xuống dòng thay vì &quot;…&quot; (title không đọc được trên màn chạm), thân (&lt;code&gt;.ui-list__content&lt;/code&gt;) cỡ chữ thân, không cắt" style="height:360px;width:390px" srcdoc="&lt;!doctype html&gt;&lt;html&gt;&lt;head&gt;&lt;meta charset=&quot;utf-8&quot;&gt;&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../gemboss-ui.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/collections.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/reactions.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-engine.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/action-card.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-chat.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/minichart.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/setup-guide.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/sheet.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/settings-dialog.css&quot;&gt;&lt;/head&gt;&lt;body&gt;&lt;div style=&quot;padding:16px&quot;&gt;&lt;ul class=&quot;ui-list ui-list--compact ui-list--activity ui-list--wrap&quot; aria-label=&quot;Relationship history&quot;&gt;&lt;li class=&quot;ui-list__item&quot;&gt;&lt;span class=&quot;ui-list__dot ui-list__dot--info&quot; aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;div&gt;&lt;span class=&quot;ui-list__label&quot;&gt;&lt;span&gt;Intro call with &lt;a href=&quot;#org&quot;&gt;Ruggable&lt;/a&gt;&amp;#x27;s growth team&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;ui-list__detail&quot;&gt;by Lily Tran · with Marcus Bell and Aiko Sato&lt;/span&gt;&lt;div class=&quot;ui-list__content&quot;&gt;&lt;p&gt;They want a landing page per ad set and asked whether the agency plan covers four stores; send the pricing sheet by Friday.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;time class=&quot;ui-list__time&quot; dateTime=&quot;2026-10-03&quot;&gt;Oct 3&lt;/time&gt;&lt;/li&gt;&lt;li class=&quot;ui-list__item&quot;&gt;&lt;span class=&quot;ui-list__dot ui-list__dot--warning&quot; aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;div&gt;&lt;span class=&quot;ui-list__label&quot;&gt;No reply to the follow-up&lt;/span&gt;&lt;span class=&quot;ui-list__detail&quot;&gt;sent by Lily Tran&lt;/span&gt;&lt;/div&gt;&lt;time class=&quot;ui-list__time&quot;&gt;Sep 28&lt;/time&gt;&lt;/li&gt;&lt;li class=&quot;ui-list__item&quot;&gt;&lt;span class=&quot;ui-list__dot ui-list__dot--success&quot; aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;div&gt;&lt;span class=&quot;ui-list__label&quot;&gt;Signed the agency plan&lt;/span&gt;&lt;span class=&quot;ui-list__detail&quot;&gt;4 stores · Shopify Plus&lt;/span&gt;&lt;div class=&quot;ui-list__content&quot;&gt;&lt;p&gt;Starts Monday; the first store is the Austin one.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;time class=&quot;ui-list__time&quot;&gt;Sep 20&lt;/time&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/body&gt;&lt;/html&gt;"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div style=&quot;padding:16px&quot;&gt;
2021
2021
  &lt;ul class=&quot;ui-list ui-list--compact ui-list--activity ui-list--wrap&quot; aria-label=&quot;Relationship history&quot;&gt;
2022
2022
  &lt;li class=&quot;ui-list__item&quot;&gt;
2023
2023
  &lt;span class=&quot;ui-list__dot ui-list__dot--info&quot; aria-hidden=&quot;true&quot;&gt;
@@ -2460,7 +2460,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
2460
2460
  &lt;/header&gt;
2461
2461
  &lt;p class=&quot;ui-board__empty&quot;&gt;Nothing here&lt;/p&gt;
2462
2462
  &lt;/section&gt;
2463
- &lt;/div&gt;</code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>6 · Board ở 390px: cột 78% bề ngang, cuộn ngang có snap, không xếp chồng</figcaption><div class="cat-wide"><iframe title="6 · Board ở 390px: cột 78% bề ngang, cuộn ngang có snap, không xếp chồng" style="height:520px;width:390px" srcdoc="&lt;!doctype html&gt;&lt;html&gt;&lt;head&gt;&lt;meta charset=&quot;utf-8&quot;&gt;&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../gemboss-ui.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/collections.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/reactions.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-engine.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/action-card.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-chat.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/minichart.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/setup-guide.css&quot;&gt;&lt;/head&gt;&lt;body&gt;&lt;div style=&quot;padding:16px&quot;&gt;&lt;div class=&quot;ui-board&quot; role=&quot;region&quot; aria-label=&quot;Element pipeline&quot;&gt;&lt;section class=&quot;ui-board__col&quot; data-col=&quot;todo&quot; aria-labelledby=&quot;ui-board-todo&quot;&gt;&lt;header class=&quot;ui-board__head&quot;&gt;&lt;span class=&quot;ui-board__dot&quot; aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;span class=&quot;ui-board__name&quot; id=&quot;ui-board-todo&quot;&gt;To do&lt;/span&gt;&lt;span class=&quot;ui-board__count&quot;&gt;14&lt;/span&gt;&lt;/header&gt;&lt;ol class=&quot;ui-board__list&quot;&gt;&lt;li&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#b0&quot;&gt;Popup variant 1&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#120 · 2 errors&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#b1&quot;&gt;Popup variant 2&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#121 · 2 errors&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#b2&quot;&gt;Popup variant 3&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#122 · 2 errors&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#b3&quot;&gt;Popup variant 4&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#123 · 2 errors&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#b4&quot;&gt;Popup variant 5&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#124 · 2 errors&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#b5&quot;&gt;Popup variant 6&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#125 · 2 errors&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#b6&quot;&gt;Popup variant 7&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#126 · 2 errors&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#b7&quot;&gt;Popup variant 8&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#127 · 2 errors&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#b8&quot;&gt;Popup variant 9&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#128 · 2 errors&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#b9&quot;&gt;Popup variant 10&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#129 · 2 errors&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#b10&quot;&gt;Popup variant 11&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#130 · 2 errors&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#b11&quot;&gt;Popup variant 12&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#131 · 2 errors&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;/ol&gt;&lt;details class=&quot;ui-board__more&quot;&gt;&lt;summary class=&quot;ui-btn ui-btn--sm&quot;&gt;Show 2 more&lt;/summary&gt;&lt;ol class=&quot;ui-board__list&quot;&gt;&lt;li&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#b12&quot;&gt;Popup variant 13&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#132 · 2 errors&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#b13&quot;&gt;Popup variant 14&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#133 · 2 errors&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/details&gt;&lt;/section&gt;&lt;section class=&quot;ui-board__col&quot; data-col=&quot;review&quot; aria-labelledby=&quot;ui-board-review&quot;&gt;&lt;header class=&quot;ui-board__head&quot;&gt;&lt;span class=&quot;ui-board__dot ui-board__dot--info&quot; aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;span class=&quot;ui-board__name&quot; id=&quot;ui-board-review&quot;&gt;Review&lt;/span&gt;&lt;span class=&quot;ui-board__count&quot;&gt;2&lt;/span&gt;&lt;/header&gt;&lt;ol class=&quot;ui-board__list&quot;&gt;&lt;li&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#b40&quot;&gt;Countdown bar, 6 frames&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#160 · 2 errors&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#b41&quot;&gt;Spin to win, no bait&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#161 · 2 errors&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/section&gt;&lt;section class=&quot;ui-board__col&quot; data-col=&quot;done&quot; aria-labelledby=&quot;ui-board-done&quot;&gt;&lt;header class=&quot;ui-board__head&quot;&gt;&lt;span class=&quot;ui-board__dot ui-board__dot--success&quot; aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;span class=&quot;ui-board__name&quot; id=&quot;ui-board-done&quot;&gt;Done&lt;/span&gt;&lt;span class=&quot;ui-board__count&quot;&gt;0&lt;/span&gt;&lt;/header&gt;&lt;p class=&quot;ui-board__empty&quot;&gt;Nothing here&lt;/p&gt;&lt;/section&gt;&lt;/div&gt;&lt;/div&gt;&lt;script src=&quot;../src/kit-plain.js&quot;&gt;&lt;/script&gt;&lt;/body&gt;&lt;/html&gt;"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div style=&quot;padding:16px&quot;&gt;
2463
+ &lt;/div&gt;</code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>6 · Board ở 390px: cột 78% bề ngang, cuộn ngang có snap, không xếp chồng</figcaption><div class="cat-wide"><iframe title="6 · Board ở 390px: cột 78% bề ngang, cuộn ngang có snap, không xếp chồng" style="height:520px;width:390px" srcdoc="&lt;!doctype html&gt;&lt;html&gt;&lt;head&gt;&lt;meta charset=&quot;utf-8&quot;&gt;&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../gemboss-ui.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/collections.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/reactions.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-engine.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/action-card.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-chat.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/minichart.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/setup-guide.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/sheet.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/settings-dialog.css&quot;&gt;&lt;/head&gt;&lt;body&gt;&lt;div style=&quot;padding:16px&quot;&gt;&lt;div class=&quot;ui-board&quot; role=&quot;region&quot; aria-label=&quot;Element pipeline&quot;&gt;&lt;section class=&quot;ui-board__col&quot; data-col=&quot;todo&quot; aria-labelledby=&quot;ui-board-todo&quot;&gt;&lt;header class=&quot;ui-board__head&quot;&gt;&lt;span class=&quot;ui-board__dot&quot; aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;span class=&quot;ui-board__name&quot; id=&quot;ui-board-todo&quot;&gt;To do&lt;/span&gt;&lt;span class=&quot;ui-board__count&quot;&gt;14&lt;/span&gt;&lt;/header&gt;&lt;ol class=&quot;ui-board__list&quot;&gt;&lt;li&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#b0&quot;&gt;Popup variant 1&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#120 · 2 errors&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#b1&quot;&gt;Popup variant 2&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#121 · 2 errors&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#b2&quot;&gt;Popup variant 3&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#122 · 2 errors&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#b3&quot;&gt;Popup variant 4&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#123 · 2 errors&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#b4&quot;&gt;Popup variant 5&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#124 · 2 errors&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#b5&quot;&gt;Popup variant 6&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#125 · 2 errors&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#b6&quot;&gt;Popup variant 7&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#126 · 2 errors&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#b7&quot;&gt;Popup variant 8&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#127 · 2 errors&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#b8&quot;&gt;Popup variant 9&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#128 · 2 errors&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#b9&quot;&gt;Popup variant 10&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#129 · 2 errors&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#b10&quot;&gt;Popup variant 11&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#130 · 2 errors&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#b11&quot;&gt;Popup variant 12&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#131 · 2 errors&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;/ol&gt;&lt;details class=&quot;ui-board__more&quot;&gt;&lt;summary class=&quot;ui-btn ui-btn--sm&quot;&gt;Show 2 more&lt;/summary&gt;&lt;ol class=&quot;ui-board__list&quot;&gt;&lt;li&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#b12&quot;&gt;Popup variant 13&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#132 · 2 errors&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#b13&quot;&gt;Popup variant 14&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#133 · 2 errors&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/details&gt;&lt;/section&gt;&lt;section class=&quot;ui-board__col&quot; data-col=&quot;review&quot; aria-labelledby=&quot;ui-board-review&quot;&gt;&lt;header class=&quot;ui-board__head&quot;&gt;&lt;span class=&quot;ui-board__dot ui-board__dot--info&quot; aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;span class=&quot;ui-board__name&quot; id=&quot;ui-board-review&quot;&gt;Review&lt;/span&gt;&lt;span class=&quot;ui-board__count&quot;&gt;2&lt;/span&gt;&lt;/header&gt;&lt;ol class=&quot;ui-board__list&quot;&gt;&lt;li&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#b40&quot;&gt;Countdown bar, 6 frames&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#160 · 2 errors&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#b41&quot;&gt;Spin to win, no bait&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#161 · 2 errors&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/section&gt;&lt;section class=&quot;ui-board__col&quot; data-col=&quot;done&quot; aria-labelledby=&quot;ui-board-done&quot;&gt;&lt;header class=&quot;ui-board__head&quot;&gt;&lt;span class=&quot;ui-board__dot ui-board__dot--success&quot; aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;span class=&quot;ui-board__name&quot; id=&quot;ui-board-done&quot;&gt;Done&lt;/span&gt;&lt;span class=&quot;ui-board__count&quot;&gt;0&lt;/span&gt;&lt;/header&gt;&lt;p class=&quot;ui-board__empty&quot;&gt;Nothing here&lt;/p&gt;&lt;/section&gt;&lt;/div&gt;&lt;/div&gt;&lt;script src=&quot;../src/kit-plain.js&quot;&gt;&lt;/script&gt;&lt;/body&gt;&lt;/html&gt;"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div style=&quot;padding:16px&quot;&gt;
2464
2464
  &lt;div class=&quot;ui-board&quot; role=&quot;region&quot; aria-label=&quot;Element pipeline&quot;&gt;
2465
2465
  &lt;section class=&quot;ui-board__col&quot; data-col=&quot;todo&quot; aria-labelledby=&quot;ui-board-todo&quot;&gt;
2466
2466
  &lt;header class=&quot;ui-board__head&quot;&gt;
@@ -2690,7 +2690,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
2690
2690
  &lt;/header&gt;
2691
2691
  &lt;p class=&quot;ui-board__empty&quot;&gt;Nothing here&lt;/p&gt;
2692
2692
  &lt;/section&gt;
2693
- &lt;/div&gt;</code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>6 · Board phân trang THEO SERVER (0.18.0, &lt;code&gt;hasMore&lt;/code&gt; + &lt;code&gt;moreHref&lt;/code&gt;): mỗi cột chỉ có 12 thẻ trong HTML, MỘT link &quot;Show 24 more&quot; (&lt;code&gt;?col=x&amp;amp;page=2&lt;/code&gt;); kit-plain.js tải trang đó và nối thẻ mới tại chỗ, React dùng &lt;code&gt;onLoadMore&lt;/code&gt; hoặc &lt;code&gt;linkAs&lt;/code&gt;</figcaption><div class="cat-wide"><iframe title="6 · Board phân trang THEO SERVER (0.18.0, &lt;code&gt;hasMore&lt;/code&gt; + &lt;code&gt;moreHref&lt;/code&gt;): mỗi cột chỉ có 12 thẻ trong HTML, MỘT link &quot;Show 24 more&quot; (&lt;code&gt;?col=x&amp;amp;page=2&lt;/code&gt;); kit-plain.js tải trang đó và nối thẻ mới tại chỗ, React dùng &lt;code&gt;onLoadMore&lt;/code&gt; hoặc &lt;code&gt;linkAs&lt;/code&gt;" style="height:560px;width:900px" srcdoc="&lt;!doctype html&gt;&lt;html&gt;&lt;head&gt;&lt;meta charset=&quot;utf-8&quot;&gt;&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../gemboss-ui.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/collections.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/reactions.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-engine.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/action-card.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-chat.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/minichart.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/setup-guide.css&quot;&gt;&lt;/head&gt;&lt;body&gt;&lt;div style=&quot;padding:16px&quot;&gt;&lt;div class=&quot;ui-board&quot; id=&quot;catalog-paged&quot; role=&quot;region&quot; aria-label=&quot;Ideas&quot;&gt;&lt;section class=&quot;ui-board__col&quot; data-col=&quot;enough&quot; aria-labelledby=&quot;catalog-paged-enough&quot;&gt;&lt;header class=&quot;ui-board__head&quot;&gt;&lt;span class=&quot;ui-board__dot ui-board__dot--success&quot; aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;span class=&quot;ui-board__name&quot; id=&quot;catalog-paged-enough&quot;&gt;Ready to write&lt;/span&gt;&lt;span class=&quot;ui-board__count&quot;&gt;412&lt;/span&gt;&lt;/header&gt;&lt;ol class=&quot;ui-board__list&quot;&gt;&lt;li data-id=&quot;i0&quot; data-name=&quot;Idea 1&quot;&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#i0&quot;&gt;Idea 1&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#0 · Section&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li data-id=&quot;i1&quot; data-name=&quot;Idea 2&quot;&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#i1&quot;&gt;Idea 2&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#1 · Section&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li data-id=&quot;i2&quot; data-name=&quot;Idea 3&quot;&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#i2&quot;&gt;Idea 3&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#2 · Section&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li data-id=&quot;i3&quot; data-name=&quot;Idea 4&quot;&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#i3&quot;&gt;Idea 4&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#3 · Section&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li data-id=&quot;i4&quot; data-name=&quot;Idea 5&quot;&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#i4&quot;&gt;Idea 5&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#4 · Section&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li data-id=&quot;i5&quot; data-name=&quot;Idea 6&quot;&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#i5&quot;&gt;Idea 6&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#5 · Section&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li data-id=&quot;i6&quot; data-name=&quot;Idea 7&quot;&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#i6&quot;&gt;Idea 7&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#6 · Section&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li data-id=&quot;i7&quot; data-name=&quot;Idea 8&quot;&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#i7&quot;&gt;Idea 8&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#7 · Section&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li data-id=&quot;i8&quot; data-name=&quot;Idea 9&quot;&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#i8&quot;&gt;Idea 9&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#8 · Section&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li data-id=&quot;i9&quot; data-name=&quot;Idea 10&quot;&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#i9&quot;&gt;Idea 10&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#9 · Section&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li data-id=&quot;i10&quot; data-name=&quot;Idea 11&quot;&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#i10&quot;&gt;Idea 11&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#10 · Section&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li data-id=&quot;i11&quot; data-name=&quot;Idea 12&quot;&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#i11&quot;&gt;Idea 12&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#11 · Section&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class=&quot;ui-more ui-board__next&quot;&gt;&lt;a class=&quot;ui-btn ui-btn--sm&quot; href=&quot;#collections&quot;&gt;Show 24 more&lt;/a&gt;&lt;/div&gt;&lt;/section&gt;&lt;section class=&quot;ui-board__col&quot; data-col=&quot;partial&quot; aria-labelledby=&quot;catalog-paged-partial&quot;&gt;&lt;header class=&quot;ui-board__head&quot;&gt;&lt;span class=&quot;ui-board__dot ui-board__dot--warning&quot; aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;span class=&quot;ui-board__name&quot; id=&quot;catalog-paged-partial&quot;&gt;Needs more&lt;/span&gt;&lt;span class=&quot;ui-board__count&quot;&gt;9&lt;/span&gt;&lt;/header&gt;&lt;ol class=&quot;ui-board__list&quot;&gt;&lt;li data-id=&quot;p0&quot; data-name=&quot;Idea 100&quot;&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#p0&quot;&gt;Idea 100&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#0 · Section&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li data-id=&quot;p1&quot; data-name=&quot;Idea 101&quot;&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#p1&quot;&gt;Idea 101&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#1 · Section&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li data-id=&quot;p2&quot; data-name=&quot;Idea 102&quot;&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#p2&quot;&gt;Idea 102&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#2 · Section&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li data-id=&quot;p3&quot; data-name=&quot;Idea 103&quot;&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#p3&quot;&gt;Idea 103&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#3 · Section&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li data-id=&quot;p4&quot; data-name=&quot;Idea 104&quot;&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#p4&quot;&gt;Idea 104&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#4 · Section&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li data-id=&quot;p5&quot; data-name=&quot;Idea 105&quot;&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#p5&quot;&gt;Idea 105&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#5 · Section&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li data-id=&quot;p6&quot; data-name=&quot;Idea 106&quot;&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#p6&quot;&gt;Idea 106&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#6 · Section&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li data-id=&quot;p7&quot; data-name=&quot;Idea 107&quot;&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#p7&quot;&gt;Idea 107&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#7 · Section&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li data-id=&quot;p8&quot; data-name=&quot;Idea 108&quot;&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#p8&quot;&gt;Idea 108&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#8 · Section&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/section&gt;&lt;/div&gt;&lt;/div&gt;&lt;/body&gt;&lt;/html&gt;"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div style=&quot;padding:16px&quot;&gt;
2693
+ &lt;/div&gt;</code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>6 · Board phân trang THEO SERVER (0.18.0, &lt;code&gt;hasMore&lt;/code&gt; + &lt;code&gt;moreHref&lt;/code&gt;): mỗi cột chỉ có 12 thẻ trong HTML, MỘT link &quot;Show 24 more&quot; (&lt;code&gt;?col=x&amp;amp;page=2&lt;/code&gt;); kit-plain.js tải trang đó và nối thẻ mới tại chỗ, React dùng &lt;code&gt;onLoadMore&lt;/code&gt; hoặc &lt;code&gt;linkAs&lt;/code&gt;</figcaption><div class="cat-wide"><iframe title="6 · Board phân trang THEO SERVER (0.18.0, &lt;code&gt;hasMore&lt;/code&gt; + &lt;code&gt;moreHref&lt;/code&gt;): mỗi cột chỉ có 12 thẻ trong HTML, MỘT link &quot;Show 24 more&quot; (&lt;code&gt;?col=x&amp;amp;page=2&lt;/code&gt;); kit-plain.js tải trang đó và nối thẻ mới tại chỗ, React dùng &lt;code&gt;onLoadMore&lt;/code&gt; hoặc &lt;code&gt;linkAs&lt;/code&gt;" style="height:560px;width:900px" srcdoc="&lt;!doctype html&gt;&lt;html&gt;&lt;head&gt;&lt;meta charset=&quot;utf-8&quot;&gt;&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../gemboss-ui.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/collections.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/reactions.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-engine.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/action-card.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-chat.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/minichart.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/setup-guide.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/sheet.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/settings-dialog.css&quot;&gt;&lt;/head&gt;&lt;body&gt;&lt;div style=&quot;padding:16px&quot;&gt;&lt;div class=&quot;ui-board&quot; id=&quot;catalog-paged&quot; role=&quot;region&quot; aria-label=&quot;Ideas&quot;&gt;&lt;section class=&quot;ui-board__col&quot; data-col=&quot;enough&quot; aria-labelledby=&quot;catalog-paged-enough&quot;&gt;&lt;header class=&quot;ui-board__head&quot;&gt;&lt;span class=&quot;ui-board__dot ui-board__dot--success&quot; aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;span class=&quot;ui-board__name&quot; id=&quot;catalog-paged-enough&quot;&gt;Ready to write&lt;/span&gt;&lt;span class=&quot;ui-board__count&quot;&gt;412&lt;/span&gt;&lt;/header&gt;&lt;ol class=&quot;ui-board__list&quot;&gt;&lt;li data-id=&quot;i0&quot; data-name=&quot;Idea 1&quot;&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#i0&quot;&gt;Idea 1&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#0 · Section&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li data-id=&quot;i1&quot; data-name=&quot;Idea 2&quot;&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#i1&quot;&gt;Idea 2&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#1 · Section&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li data-id=&quot;i2&quot; data-name=&quot;Idea 3&quot;&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#i2&quot;&gt;Idea 3&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#2 · Section&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li data-id=&quot;i3&quot; data-name=&quot;Idea 4&quot;&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#i3&quot;&gt;Idea 4&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#3 · Section&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li data-id=&quot;i4&quot; data-name=&quot;Idea 5&quot;&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#i4&quot;&gt;Idea 5&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#4 · Section&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li data-id=&quot;i5&quot; data-name=&quot;Idea 6&quot;&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#i5&quot;&gt;Idea 6&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#5 · Section&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li data-id=&quot;i6&quot; data-name=&quot;Idea 7&quot;&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#i6&quot;&gt;Idea 7&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#6 · Section&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li data-id=&quot;i7&quot; data-name=&quot;Idea 8&quot;&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#i7&quot;&gt;Idea 8&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#7 · Section&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li data-id=&quot;i8&quot; data-name=&quot;Idea 9&quot;&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#i8&quot;&gt;Idea 9&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#8 · Section&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li data-id=&quot;i9&quot; data-name=&quot;Idea 10&quot;&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#i9&quot;&gt;Idea 10&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#9 · Section&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li data-id=&quot;i10&quot; data-name=&quot;Idea 11&quot;&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#i10&quot;&gt;Idea 11&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#10 · Section&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li data-id=&quot;i11&quot; data-name=&quot;Idea 12&quot;&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#i11&quot;&gt;Idea 12&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#11 · Section&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class=&quot;ui-more ui-board__next&quot;&gt;&lt;a class=&quot;ui-btn ui-btn--sm&quot; href=&quot;#collections&quot;&gt;Show 24 more&lt;/a&gt;&lt;/div&gt;&lt;/section&gt;&lt;section class=&quot;ui-board__col&quot; data-col=&quot;partial&quot; aria-labelledby=&quot;catalog-paged-partial&quot;&gt;&lt;header class=&quot;ui-board__head&quot;&gt;&lt;span class=&quot;ui-board__dot ui-board__dot--warning&quot; aria-hidden=&quot;true&quot;&gt;&lt;/span&gt;&lt;span class=&quot;ui-board__name&quot; id=&quot;catalog-paged-partial&quot;&gt;Needs more&lt;/span&gt;&lt;span class=&quot;ui-board__count&quot;&gt;9&lt;/span&gt;&lt;/header&gt;&lt;ol class=&quot;ui-board__list&quot;&gt;&lt;li data-id=&quot;p0&quot; data-name=&quot;Idea 100&quot;&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#p0&quot;&gt;Idea 100&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#0 · Section&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li data-id=&quot;p1&quot; data-name=&quot;Idea 101&quot;&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#p1&quot;&gt;Idea 101&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#1 · Section&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li data-id=&quot;p2&quot; data-name=&quot;Idea 102&quot;&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#p2&quot;&gt;Idea 102&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#2 · Section&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li data-id=&quot;p3&quot; data-name=&quot;Idea 103&quot;&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#p3&quot;&gt;Idea 103&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#3 · Section&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li data-id=&quot;p4&quot; data-name=&quot;Idea 104&quot;&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#p4&quot;&gt;Idea 104&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#4 · Section&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li data-id=&quot;p5&quot; data-name=&quot;Idea 105&quot;&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#p5&quot;&gt;Idea 105&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#5 · Section&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li data-id=&quot;p6&quot; data-name=&quot;Idea 106&quot;&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#p6&quot;&gt;Idea 106&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#6 · Section&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li data-id=&quot;p7&quot; data-name=&quot;Idea 107&quot;&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#p7&quot;&gt;Idea 107&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#7 · Section&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;li data-id=&quot;p8&quot; data-name=&quot;Idea 108&quot;&gt;&lt;article class=&quot;ui-card ui-card--media&quot;&gt;&lt;div class=&quot;ui-card__body&quot;&gt;&lt;a class=&quot;ui-card__link&quot; href=&quot;#p8&quot;&gt;Idea 108&lt;/a&gt;&lt;span class=&quot;ui-card__meta&quot;&gt;#8 · Section&lt;/span&gt;&lt;/div&gt;&lt;/article&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/section&gt;&lt;/div&gt;&lt;/div&gt;&lt;/body&gt;&lt;/html&gt;"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div style=&quot;padding:16px&quot;&gt;
2694
2694
  &lt;div class=&quot;ui-board&quot; id=&quot;catalog-paged&quot; role=&quot;region&quot; aria-label=&quot;Ideas&quot;&gt;
2695
2695
  &lt;section class=&quot;ui-board__col&quot; data-col=&quot;enough&quot; aria-labelledby=&quot;catalog-paged-enough&quot;&gt;
2696
2696
  &lt;header class=&quot;ui-board__head&quot;&gt;
@@ -3627,10 +3627,135 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
3627
3627
  &lt;button type=&quot;button&quot; class=&quot;ui-btn ui-btn--primary&quot;&gt;Xoá&lt;/button&gt;
3628
3628
  &lt;/div&gt;
3629
3629
  &lt;/div&gt;</code></pre></details></figure></section>
3630
- <section id="shell"><h2>Khung app</h2><p>Topbar 56px, rail 240px, ≤760px thành ngăn kéo. Logo <code>BrandLockup</code>, tài khoản <code>AccountMenu</code> (bấm chữ viết tắt), mục Trợ lý ở chân rail có class <code>gnav-assistant</code>.</p><figure class="cat-demo cat-screen"><figcaption>AppShell + BrandLockup + AccountMenu + Icon</figcaption><iframe title="AppShell + BrandLockup + AccountMenu + Icon" style="height:460px" srcdoc="&lt;!doctype html&gt;&lt;html&gt;&lt;head&gt;&lt;meta charset=&quot;utf-8&quot;&gt;&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../gemboss-ui.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/collections.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/reactions.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-engine.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/action-card.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-chat.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/minichart.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/setup-guide.css&quot;&gt;&lt;/head&gt;&lt;body&gt;&lt;div class=&quot;gemboss-platform-shell&quot;&gt;&lt;header class=&quot;gemboss-platform-topbar&quot;&gt;&lt;div class=&quot;gemboss-topbar-start&quot;&gt;&lt;button type=&quot;button&quot; class=&quot;gemboss-mobile-menu-btn&quot; aria-label=&quot;Mở menu&quot; aria-expanded=&quot;false&quot; data-label-open=&quot;Mở menu&quot; data-label-close=&quot;Đóng menu&quot; aria-controls=&quot;:c56-R0:&quot;&gt;&lt;svg width=&quot;20&quot; height=&quot;20&quot; viewBox=&quot;0 0 20 20&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M3 5.5h14M3 10h14M3 14.5h14&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.7&quot; stroke-linecap=&quot;round&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;a class=&quot;gb-brand&quot; href=&quot;#&quot; aria-label=&quot;GemFactory home&quot;&gt;&lt;svg class=&quot;gb-brand-gem&quot; viewBox=&quot;0 0 32 40&quot; width=&quot;20.8&quot; height=&quot;26&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g transform=&quot;translate(0,0.8) scale(0.31)&quot;&gt;&lt;polygon points=&quot;26,14 74,14 66,50 34,50&quot; fill=&quot;#5661F5&quot; fill-opacity=&quot;0.92&quot;&gt;&lt;/polygon&gt;&lt;path d=&quot;M26,14 74,14 96,50 50,110 4,50Z&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;8.75&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M4,50H96M26,14 34,50M74,14 66,50M34,50 50,110M66,50 50,110&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;5.45&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/svg&gt;&lt;span class=&quot;gb-brand-name&quot;&gt;GemFactory&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;gemboss-topbar-center&quot;&gt;&lt;form role=&quot;search&quot; method=&quot;get&quot; action=&quot;#&quot; class=&quot;gemboss-topbar-search&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; width=&quot;18&quot; height=&quot;18&quot; class=&quot;gemboss-topbar-search-icon&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;circle cx=&quot;8.8&quot; cy=&quot;8.8&quot; r=&quot;5.3&quot;&gt;&lt;/circle&gt;&lt;path d=&quot;M12.8 12.8 17 17&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/svg&gt;&lt;input class=&quot;gemboss-topbar-search-input&quot; type=&quot;search&quot; name=&quot;q&quot; placeholder=&quot;Search by #ID, name or key&quot; aria-label=&quot;Search by #ID, name or key&quot; autoComplete=&quot;off&quot; enterKeyHint=&quot;search&quot;/&gt;&lt;kbd class=&quot;gemboss-topbar-search-kbd&quot; aria-hidden=&quot;true&quot;&gt;⌘K&lt;/kbd&gt;&lt;/form&gt;&lt;/div&gt;&lt;div class=&quot;gemboss-topbar-end&quot;&gt;&lt;details class=&quot;gb-account&quot;&gt;&lt;summary class=&quot;gemboss-account-chip&quot; aria-label=&quot;Account · Minh Anh&quot; title=&quot;Minh Anh&quot;&gt;MA&lt;/summary&gt;&lt;div role=&quot;menu&quot; class=&quot;gemboss-popover-surface gemboss-account-menu&quot;&gt;&lt;div class=&quot;gb-account-head&quot;&gt;&lt;div class=&quot;gb-account-name&quot;&gt;Minh Anh&lt;/div&gt;&lt;div class=&quot;gb-account-email&quot;&gt;ma@gemboss.ai&lt;/div&gt;&lt;div class=&quot;gb-account-role&quot;&gt;Designer&lt;/div&gt;&lt;/div&gt;&lt;a role=&quot;menuitem&quot; class=&quot;gemboss-account-menu-item&quot; href=&quot;#&quot;&gt;Cài đặt&lt;/a&gt;&lt;form method=&quot;post&quot; action=&quot;#&quot; class=&quot;gb-account-form&quot;&gt;&lt;button role=&quot;menuitem&quot; type=&quot;submit&quot; class=&quot;gemboss-account-menu-item danger&quot;&gt;Đăng xuất&lt;/button&gt;&lt;/form&gt;&lt;/div&gt;&lt;/details&gt;&lt;/div&gt;&lt;/header&gt;&lt;nav class=&quot;icon-nav&quot; aria-label=&quot;Main navigation&quot; id=&quot;:c56-R0:&quot;&gt;&lt;div class=&quot;gnav-scroll&quot;&gt;&lt;div class=&quot;gnav-heading&quot;&gt;Kho&lt;/div&gt;&lt;div class=&quot;gnav-group active&quot;&gt;&lt;a class=&quot;gnav-item active&quot; aria-current=&quot;page&quot; href=&quot;#&quot;&gt;&lt;span class=&quot;gnav-ico&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; width=&quot;20&quot; height=&quot;20&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;rect x=&quot;3&quot; y=&quot;3.5&quot; width=&quot;4&quot; height=&quot;13&quot; rx=&quot;1.2&quot;&gt;&lt;/rect&gt;&lt;rect x=&quot;8&quot; y=&quot;3.5&quot; width=&quot;4&quot; height=&quot;9&quot; rx=&quot;1.2&quot;&gt;&lt;/rect&gt;&lt;rect x=&quot;13&quot; y=&quot;3.5&quot; width=&quot;4&quot; height=&quot;6&quot; rx=&quot;1.2&quot;&gt;&lt;/rect&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;gnav-label&quot;&gt;Board&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;gnav-group&quot;&gt;&lt;a class=&quot;gnav-item&quot; href=&quot;#&quot;&gt;&lt;span class=&quot;gnav-ico&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; width=&quot;20&quot; height=&quot;20&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;rect x=&quot;3.5&quot; y=&quot;3&quot; width=&quot;13&quot; height=&quot;3.5&quot; rx=&quot;1&quot;&gt;&lt;/rect&gt;&lt;rect x=&quot;3.5&quot; y=&quot;8.25&quot; width=&quot;13&quot; height=&quot;3.5&quot; rx=&quot;1&quot;&gt;&lt;/rect&gt;&lt;rect x=&quot;3.5&quot; y=&quot;13.5&quot; width=&quot;13&quot; height=&quot;3.5&quot; rx=&quot;1&quot;&gt;&lt;/rect&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;gnav-label&quot;&gt;Ghép trang&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;gnav-group&quot;&gt;&lt;a class=&quot;gnav-item&quot; href=&quot;#&quot;&gt;&lt;span class=&quot;gnav-ico&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; width=&quot;20&quot; height=&quot;20&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 3.2 17.3 16H2.7z&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M10 8.2v3.6M10 13.9v.1&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;gnav-label&quot;&gt;Framework thiếu&lt;/span&gt;&lt;span class=&quot;gnav-count&quot; aria-label=&quot;3 mục đang mở&quot;&gt;3&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;gnav-bottom&quot;&gt;&lt;div class=&quot;gnav-sep&quot;&gt;&lt;/div&gt;&lt;a class=&quot;gnav-item gnav-assistant&quot; href=&quot;#&quot;&gt;&lt;span class=&quot;gnav-ico&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; width=&quot;20&quot; height=&quot;20&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M3 4.5h14v9H8.5L5 16.5v-3H3z&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;gnav-label&quot;&gt;Trợ lý&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/nav&gt;&lt;button type=&quot;button&quot; class=&quot;gemboss-mobile-nav-backdrop&quot; aria-label=&quot;Đóng menu&quot; tabindex=&quot;-1&quot;&gt;&lt;/button&gt;&lt;main class=&quot;gemboss-platform-main&quot;&gt;&lt;div style=&quot;padding:24px&quot;&gt;&lt;h1 style=&quot;margin:0&quot;&gt;Nội dung màn&lt;/h1&gt;&lt;/div&gt;&lt;/main&gt;&lt;/div&gt;&lt;/body&gt;&lt;/html&gt;"></iframe><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div class=&quot;gemboss-platform-shell&quot;&gt;
3630
+ <section id="sheet"><h2>Ngăn trượt cạnh phải</h2><p><code>Sheet</code>: hộp thoại của gói (<code>ui-modal</code>, cùng head / body / foot) dính cạnh phải, cao hết màn, rộng 560 (<code>wide</code> 760), ở điện thoại chiếm cả màn. Mở một bản ghi ngay trên danh sách đang xem (người, tổ chức, app), đọc xong đóng lại đúng chỗ cũ. Escape, nền bị khoá, focus trả về hàng đã mở: nó chính là <code>Dialog</code> thêm lớp <code>ui-sheet</code>. CSS <code>sheet.css</code> do component tự nạp. Markup dưới đây mang thuộc tính <code>open</code> chỉ để vẽ được trong catalog; chép về thì bỏ <code>open</code> và mở bằng <code>showModal()</code> (thiếu nó: không nền mờ, trang sau không bị khoá).</p><figure class="cat-demo cat-screen"><figcaption>Sheet mở trên một danh sách</figcaption><iframe title="Sheet mở trên một danh sách" style="height:380px" srcdoc="&lt;!doctype html&gt;&lt;html&gt;&lt;head&gt;&lt;meta charset=&quot;utf-8&quot;&gt;&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../gemboss-ui.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/collections.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/reactions.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-engine.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/action-card.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-chat.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/minichart.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/setup-guide.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/sheet.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/settings-dialog.css&quot;&gt;&lt;/head&gt;&lt;body&gt;&lt;div style=&quot;padding:16px;display:grid;gap:8px&quot;&gt;&lt;div class=&quot;ui-card&quot; style=&quot;padding:12px&quot;&gt;Jane Doe&lt;/div&gt;&lt;div class=&quot;ui-card&quot; style=&quot;padding:12px&quot;&gt;Minh Tran&lt;/div&gt;&lt;div class=&quot;ui-card&quot; style=&quot;padding:12px&quot;&gt;Ana Silva&lt;/div&gt;&lt;div class=&quot;ui-card&quot; style=&quot;padding:12px&quot;&gt;Kenji Sato&lt;/div&gt;&lt;/div&gt;&lt;dialog open class=&quot;ui-modal ui-sheet&quot; aria-labelledby=&quot;:c56-R0:&quot; aria-describedby=&quot;:c56-R0H1:&quot; tabindex=&quot;-1&quot;&gt;&lt;div class=&quot;ui-modal__head&quot;&gt;&lt;div class=&quot;ui-modal__title&quot;&gt;&lt;span id=&quot;:c56-R0:&quot;&gt;Jane Doe&lt;/span&gt;&lt;span class=&quot;ui-modal__subtitle&quot; id=&quot;:c56-R0H1:&quot;&gt;CRO agency · Plus partner&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;ui-modal__actions&quot;&gt;&lt;a class=&quot;ui-btn&quot; href=&quot;#&quot;&gt;Open full profile&lt;/a&gt;&lt;/div&gt;&lt;button type=&quot;button&quot; class=&quot;ui-modal__close&quot; aria-label=&quot;Close&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; width=&quot;20&quot; height=&quot;20&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M5 5l10 10M15 5 5 15&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;ui-modal__body&quot;&gt;&lt;p style=&quot;margin:0&quot;&gt;Founder at Example Agency. Last talked 3 days ago, next step due Friday.&lt;/p&gt;&lt;p class=&quot;ui-muted&quot; style=&quot;margin:12px 0 0&quot;&gt;The body scrolls; the head stays.&lt;/p&gt;&lt;/div&gt;&lt;/dialog&gt;&lt;/body&gt;&lt;/html&gt;"></iframe><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div style=&quot;padding:16px;display:grid;gap:8px&quot;&gt;
3631
+ &lt;div class=&quot;ui-card&quot; style=&quot;padding:12px&quot;&gt;Jane Doe&lt;/div&gt;
3632
+ &lt;div class=&quot;ui-card&quot; style=&quot;padding:12px&quot;&gt;Minh Tran&lt;/div&gt;
3633
+ &lt;div class=&quot;ui-card&quot; style=&quot;padding:12px&quot;&gt;Ana Silva&lt;/div&gt;
3634
+ &lt;div class=&quot;ui-card&quot; style=&quot;padding:12px&quot;&gt;Kenji Sato&lt;/div&gt;
3635
+ &lt;/div&gt;
3636
+ &lt;dialog open class=&quot;ui-modal ui-sheet&quot; aria-labelledby=&quot;:c56-R0:&quot; aria-describedby=&quot;:c56-R0H1:&quot; tabindex=&quot;-1&quot;&gt;
3637
+ &lt;div class=&quot;ui-modal__head&quot;&gt;
3638
+ &lt;div class=&quot;ui-modal__title&quot;&gt;
3639
+ &lt;span id=&quot;:c56-R0:&quot;&gt;Jane Doe&lt;/span&gt;
3640
+ &lt;span class=&quot;ui-modal__subtitle&quot; id=&quot;:c56-R0H1:&quot;&gt;CRO agency · Plus partner&lt;/span&gt;
3641
+ &lt;/div&gt;
3642
+ &lt;div class=&quot;ui-modal__actions&quot;&gt;
3643
+ &lt;a class=&quot;ui-btn&quot; href=&quot;#&quot;&gt;Open full profile&lt;/a&gt;
3644
+ &lt;/div&gt;
3645
+ &lt;button type=&quot;button&quot; class=&quot;ui-modal__close&quot; aria-label=&quot;Close&quot;&gt;
3646
+ &lt;svg viewBox=&quot;0 0 20 20&quot; width=&quot;20&quot; height=&quot;20&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;
3647
+ &lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;
3648
+ &lt;path d=&quot;M5 5l10 10M15 5 5 15&quot;&gt;
3649
+ &lt;/path&gt;
3650
+ &lt;/g&gt;
3651
+ &lt;/svg&gt;
3652
+ &lt;/button&gt;
3653
+ &lt;/div&gt;
3654
+ &lt;div class=&quot;ui-modal__body&quot;&gt;
3655
+ &lt;p style=&quot;margin:0&quot;&gt;Founder at Example Agency. Last talked 3 days ago, next step due Friday.&lt;/p&gt;
3656
+ &lt;p class=&quot;ui-muted&quot; style=&quot;margin:12px 0 0&quot;&gt;The body scrolls; the head stays.&lt;/p&gt;
3657
+ &lt;/div&gt;
3658
+ &lt;/dialog&gt;</code></pre></details></figure></section>
3659
+ <section id="settings"><h2>Hộp cài đặt</h2><p><code>SettingsDialog</code>: Settings là MỘT hộp thoại phủ lên app, dáng của admin: rail các mục bên trái có ô tìm, mục đang chọn bên phải, nút đóng ở góc; dưới 861px rail thành một dải ngang trên đầu. Chỉ là khung: bề mặt đưa danh sách mục và vẽ mục đang chọn (<code>children</code>); mục là nút (<code>onSelect</code>) hoặc link (<code>href</code> + <code>linkAs</code>, khi mỗi mục là một route). CSS <code>settings-dialog.css</code> do component tự nạp. Markup dưới đây mang <code>open</code> chỉ để vẽ trong catalog; chép về thì mở bằng <code>showModal()</code>.</p><figure class="cat-demo cat-screen"><figcaption>SettingsDialog, mục Scoring principles đang chọn</figcaption><div class="cat-wide"><iframe title="SettingsDialog, mục Scoring principles đang chọn" style="height:520px;width:1280px" srcdoc="&lt;!doctype html&gt;&lt;html&gt;&lt;head&gt;&lt;meta charset=&quot;utf-8&quot;&gt;&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../gemboss-ui.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/collections.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/reactions.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-engine.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/action-card.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-chat.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/minichart.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/setup-guide.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/sheet.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/settings-dialog.css&quot;&gt;&lt;/head&gt;&lt;body&gt;&lt;dialog open class=&quot;ui-modal ui-modal--lg ui-settings&quot; aria-labelledby=&quot;:c57-R0:&quot; tabindex=&quot;-1&quot;&gt;&lt;div class=&quot;ui-settings__layout&quot;&gt;&lt;nav class=&quot;ui-settings__rail&quot; aria-label=&quot;Settings sections&quot;&gt;&lt;div class=&quot;ui-settings__search&quot;&gt;&lt;label class=&quot;gemboss-field gemboss-field--group&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;circle cx=&quot;8.8&quot; cy=&quot;8.8&quot; r=&quot;5.3&quot;&gt;&lt;/circle&gt;&lt;path d=&quot;M12.8 12.8 17 17&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/svg&gt;&lt;input class=&quot;gemboss-field__bare&quot; type=&quot;search&quot; name=&quot;settings-search&quot; autoComplete=&quot;off&quot; placeholder=&quot;Search settings&quot; aria-label=&quot;Search settings&quot; value=&quot;&quot;/&gt;&lt;/label&gt;&lt;/div&gt;&lt;div class=&quot;ui-settings__scroll&quot;&gt;&lt;div class=&quot;ui-settings__group&quot;&gt;&lt;h3 class=&quot;ui-settings__group-title&quot;&gt;Workspace&lt;/h3&gt;&lt;button type=&quot;button&quot; class=&quot;ui-settings__item&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M15.52 9.08 17.15 9.15 17.15 10.85 15.52 10.92 14.56 13.26 15.66 14.45 14.45 15.66 13.26 14.56 10.92 15.52 10.85 17.15 9.15 17.15 9.08 15.52 6.74 14.56 5.55 15.66 4.34 14.45 5.44 13.26 4.48 10.92 2.85 10.85 2.85 9.15 4.48 9.08 5.44 6.74 4.34 5.55 5.55 4.34 6.74 5.44 9.08 4.48 9.15 2.85 10.85 2.85 10.92 4.48 13.26 5.44 14.45 4.34 15.66 5.55 14.56 6.74Z&quot;&gt;&lt;/path&gt;&lt;circle cx=&quot;10&quot; cy=&quot;10&quot; r=&quot;2.4&quot;&gt;&lt;/circle&gt;&lt;/g&gt;&lt;/svg&gt;&lt;span class=&quot;ui-settings__label&quot;&gt;General&lt;/span&gt;&lt;/button&gt;&lt;button type=&quot;button&quot; class=&quot;ui-settings__item ui-settings__item--active&quot; aria-current=&quot;true&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M3 5h14M3 10h14M3 15h14&quot;&gt;&lt;/path&gt;&lt;circle cx=&quot;7&quot; cy=&quot;5&quot; r=&quot;1.6&quot;&gt;&lt;/circle&gt;&lt;circle cx=&quot;13&quot; cy=&quot;10&quot; r=&quot;1.6&quot;&gt;&lt;/circle&gt;&lt;circle cx=&quot;9&quot; cy=&quot;15&quot; r=&quot;1.6&quot;&gt;&lt;/circle&gt;&lt;/g&gt;&lt;/svg&gt;&lt;span class=&quot;ui-settings__label&quot;&gt;Scoring principles&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;div class=&quot;ui-settings__group&quot;&gt;&lt;h3 class=&quot;ui-settings__group-title&quot;&gt;Account&lt;/h3&gt;&lt;button type=&quot;button&quot; class=&quot;ui-settings__item&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;circle cx=&quot;7.5&quot; cy=&quot;7.3&quot; r=&quot;2.8&quot;&gt;&lt;/circle&gt;&lt;path d=&quot;M2.5 16.3c.6-2.5 2.5-4 5-4s4.4 1.5 5 4&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M12.3 4.8a2.8 2.8 0 0 1 0 5.2M14.3 12.5c1.6.4 2.7 1.7 3.2 3.8&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/svg&gt;&lt;span class=&quot;ui-settings__label&quot;&gt;Members&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;ui-settings__foot&quot;&gt;&lt;a href=&quot;#&quot; class=&quot;ui-settings__item&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M2.5 10h3l2-5 3 10 2-5h5&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/svg&gt;&lt;span class=&quot;ui-settings__label&quot;&gt;Jobs&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/nav&gt;&lt;section class=&quot;ui-settings__pane&quot; aria-labelledby=&quot;:c57-R0:&quot;&gt;&lt;div class=&quot;ui-settings__pane-head&quot;&gt;&lt;h2 class=&quot;ui-settings__pane-title&quot; id=&quot;:c57-R0:&quot;&gt;Scoring principles&lt;/h2&gt;&lt;p class=&quot;ui-settings__pane-sub&quot;&gt;What makes a partner worth a call, and how much each signal weighs.&lt;/p&gt;&lt;/div&gt;&lt;div class=&quot;ui-settings__pane-body&quot;&gt;&lt;div class=&quot;ui-settings__measure&quot;&gt;&lt;p style=&quot;margin:0&quot;&gt;The active section is the surface&amp;#x27;s own content.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/section&gt;&lt;/div&gt;&lt;button type=&quot;button&quot; class=&quot;ui-modal__close ui-settings__close&quot; aria-label=&quot;Close settings&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; width=&quot;20&quot; height=&quot;20&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M5 5l10 10M15 5 5 15&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/dialog&gt;&lt;/body&gt;&lt;/html&gt;"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;dialog open class=&quot;ui-modal ui-modal--lg ui-settings&quot; aria-labelledby=&quot;:c57-R0:&quot; tabindex=&quot;-1&quot;&gt;
3660
+ &lt;div class=&quot;ui-settings__layout&quot;&gt;
3661
+ &lt;nav class=&quot;ui-settings__rail&quot; aria-label=&quot;Settings sections&quot;&gt;
3662
+ &lt;div class=&quot;ui-settings__search&quot;&gt;
3663
+ &lt;label class=&quot;gemboss-field gemboss-field--group&quot;&gt;
3664
+ &lt;svg viewBox=&quot;0 0 20 20&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;
3665
+ &lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;
3666
+ &lt;circle cx=&quot;8.8&quot; cy=&quot;8.8&quot; r=&quot;5.3&quot;&gt;
3667
+ &lt;/circle&gt;
3668
+ &lt;path d=&quot;M12.8 12.8 17 17&quot;&gt;
3669
+ &lt;/path&gt;
3670
+ &lt;/g&gt;
3671
+ &lt;/svg&gt;
3672
+ &lt;input class=&quot;gemboss-field__bare&quot; type=&quot;search&quot; name=&quot;settings-search&quot; autoComplete=&quot;off&quot; placeholder=&quot;Search settings&quot; aria-label=&quot;Search settings&quot; value=&quot;&quot;/&gt;
3673
+ &lt;/label&gt;
3674
+ &lt;/div&gt;
3675
+ &lt;div class=&quot;ui-settings__scroll&quot;&gt;
3676
+ &lt;div class=&quot;ui-settings__group&quot;&gt;
3677
+ &lt;h3 class=&quot;ui-settings__group-title&quot;&gt;Workspace&lt;/h3&gt;
3678
+ &lt;button type=&quot;button&quot; class=&quot;ui-settings__item&quot;&gt;
3679
+ &lt;svg viewBox=&quot;0 0 20 20&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;
3680
+ &lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;
3681
+ &lt;path d=&quot;M15.52 9.08 17.15 9.15 17.15 10.85 15.52 10.92 14.56 13.26 15.66 14.45 14.45 15.66 13.26 14.56 10.92 15.52 10.85 17.15 9.15 17.15 9.08 15.52 6.74 14.56 5.55 15.66 4.34 14.45 5.44 13.26 4.48 10.92 2.85 10.85 2.85 9.15 4.48 9.08 5.44 6.74 4.34 5.55 5.55 4.34 6.74 5.44 9.08 4.48 9.15 2.85 10.85 2.85 10.92 4.48 13.26 5.44 14.45 4.34 15.66 5.55 14.56 6.74Z&quot;&gt;
3682
+ &lt;/path&gt;
3683
+ &lt;circle cx=&quot;10&quot; cy=&quot;10&quot; r=&quot;2.4&quot;&gt;
3684
+ &lt;/circle&gt;
3685
+ &lt;/g&gt;
3686
+ &lt;/svg&gt;
3687
+ &lt;span class=&quot;ui-settings__label&quot;&gt;General&lt;/span&gt;
3688
+ &lt;/button&gt;
3689
+ &lt;button type=&quot;button&quot; class=&quot;ui-settings__item ui-settings__item--active&quot; aria-current=&quot;true&quot;&gt;
3690
+ &lt;svg viewBox=&quot;0 0 20 20&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;
3691
+ &lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;
3692
+ &lt;path d=&quot;M3 5h14M3 10h14M3 15h14&quot;&gt;
3693
+ &lt;/path&gt;
3694
+ &lt;circle cx=&quot;7&quot; cy=&quot;5&quot; r=&quot;1.6&quot;&gt;
3695
+ &lt;/circle&gt;
3696
+ &lt;circle cx=&quot;13&quot; cy=&quot;10&quot; r=&quot;1.6&quot;&gt;
3697
+ &lt;/circle&gt;
3698
+ &lt;circle cx=&quot;9&quot; cy=&quot;15&quot; r=&quot;1.6&quot;&gt;
3699
+ &lt;/circle&gt;
3700
+ &lt;/g&gt;
3701
+ &lt;/svg&gt;
3702
+ &lt;span class=&quot;ui-settings__label&quot;&gt;Scoring principles&lt;/span&gt;
3703
+ &lt;/button&gt;
3704
+ &lt;/div&gt;
3705
+ &lt;div class=&quot;ui-settings__group&quot;&gt;
3706
+ &lt;h3 class=&quot;ui-settings__group-title&quot;&gt;Account&lt;/h3&gt;
3707
+ &lt;button type=&quot;button&quot; class=&quot;ui-settings__item&quot;&gt;
3708
+ &lt;svg viewBox=&quot;0 0 20 20&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;
3709
+ &lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;
3710
+ &lt;circle cx=&quot;7.5&quot; cy=&quot;7.3&quot; r=&quot;2.8&quot;&gt;
3711
+ &lt;/circle&gt;
3712
+ &lt;path d=&quot;M2.5 16.3c.6-2.5 2.5-4 5-4s4.4 1.5 5 4&quot;&gt;
3713
+ &lt;/path&gt;
3714
+ &lt;path d=&quot;M12.3 4.8a2.8 2.8 0 0 1 0 5.2M14.3 12.5c1.6.4 2.7 1.7 3.2 3.8&quot;&gt;
3715
+ &lt;/path&gt;
3716
+ &lt;/g&gt;
3717
+ &lt;/svg&gt;
3718
+ &lt;span class=&quot;ui-settings__label&quot;&gt;Members&lt;/span&gt;
3719
+ &lt;/button&gt;
3720
+ &lt;/div&gt;
3721
+ &lt;/div&gt;
3722
+ &lt;div class=&quot;ui-settings__foot&quot;&gt;
3723
+ &lt;a href=&quot;#&quot; class=&quot;ui-settings__item&quot;&gt;
3724
+ &lt;svg viewBox=&quot;0 0 20 20&quot; width=&quot;16&quot; height=&quot;16&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;
3725
+ &lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;
3726
+ &lt;path d=&quot;M2.5 10h3l2-5 3 10 2-5h5&quot;&gt;
3727
+ &lt;/path&gt;
3728
+ &lt;/g&gt;
3729
+ &lt;/svg&gt;
3730
+ &lt;span class=&quot;ui-settings__label&quot;&gt;Jobs&lt;/span&gt;
3731
+ &lt;/a&gt;
3732
+ &lt;/div&gt;
3733
+ &lt;/nav&gt;
3734
+ &lt;section class=&quot;ui-settings__pane&quot; aria-labelledby=&quot;:c57-R0:&quot;&gt;
3735
+ &lt;div class=&quot;ui-settings__pane-head&quot;&gt;
3736
+ &lt;h2 class=&quot;ui-settings__pane-title&quot; id=&quot;:c57-R0:&quot;&gt;Scoring principles&lt;/h2&gt;
3737
+ &lt;p class=&quot;ui-settings__pane-sub&quot;&gt;What makes a partner worth a call, and how much each signal weighs.&lt;/p&gt;
3738
+ &lt;/div&gt;
3739
+ &lt;div class=&quot;ui-settings__pane-body&quot;&gt;
3740
+ &lt;div class=&quot;ui-settings__measure&quot;&gt;
3741
+ &lt;p style=&quot;margin:0&quot;&gt;The active section is the surface&amp;#x27;s own content.&lt;/p&gt;
3742
+ &lt;/div&gt;
3743
+ &lt;/div&gt;
3744
+ &lt;/section&gt;
3745
+ &lt;/div&gt;
3746
+ &lt;button type=&quot;button&quot; class=&quot;ui-modal__close ui-settings__close&quot; aria-label=&quot;Close settings&quot;&gt;
3747
+ &lt;svg viewBox=&quot;0 0 20 20&quot; width=&quot;20&quot; height=&quot;20&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;
3748
+ &lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;
3749
+ &lt;path d=&quot;M5 5l10 10M15 5 5 15&quot;&gt;
3750
+ &lt;/path&gt;
3751
+ &lt;/g&gt;
3752
+ &lt;/svg&gt;
3753
+ &lt;/button&gt;
3754
+ &lt;/dialog&gt;</code></pre></details></figure></section>
3755
+ <section id="shell"><h2>Khung app</h2><p>Topbar 56px, rail 240px, ≤760px thành ngăn kéo. Logo <code>BrandLockup</code>, tài khoản <code>AccountMenu</code> (bấm chữ viết tắt), mục Trợ lý ở chân rail có class <code>gnav-assistant</code>.</p><figure class="cat-demo cat-screen"><figcaption>AppShell + BrandLockup + AccountMenu + Icon</figcaption><iframe title="AppShell + BrandLockup + AccountMenu + Icon" style="height:460px" srcdoc="&lt;!doctype html&gt;&lt;html&gt;&lt;head&gt;&lt;meta charset=&quot;utf-8&quot;&gt;&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../gemboss-ui.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/collections.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/reactions.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-engine.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/action-card.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-chat.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/minichart.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/setup-guide.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/sheet.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/settings-dialog.css&quot;&gt;&lt;/head&gt;&lt;body&gt;&lt;div class=&quot;gemboss-platform-shell&quot;&gt;&lt;header class=&quot;gemboss-platform-topbar&quot;&gt;&lt;div class=&quot;gemboss-topbar-start&quot;&gt;&lt;button type=&quot;button&quot; class=&quot;gemboss-mobile-menu-btn&quot; aria-label=&quot;Mở menu&quot; aria-expanded=&quot;false&quot; data-label-open=&quot;Mở menu&quot; data-label-close=&quot;Đóng menu&quot; aria-controls=&quot;:c58-R0:&quot;&gt;&lt;svg width=&quot;20&quot; height=&quot;20&quot; viewBox=&quot;0 0 20 20&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M3 5.5h14M3 10h14M3 14.5h14&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.7&quot; stroke-linecap=&quot;round&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;a class=&quot;gb-brand&quot; href=&quot;#&quot; aria-label=&quot;GemFactory home&quot;&gt;&lt;svg class=&quot;gb-brand-gem&quot; viewBox=&quot;0 0 32 40&quot; width=&quot;20.8&quot; height=&quot;26&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g transform=&quot;translate(0,0.8) scale(0.31)&quot;&gt;&lt;polygon points=&quot;26,14 74,14 66,50 34,50&quot; fill=&quot;#5661F5&quot; fill-opacity=&quot;0.92&quot;&gt;&lt;/polygon&gt;&lt;path d=&quot;M26,14 74,14 96,50 50,110 4,50Z&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;8.75&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M4,50H96M26,14 34,50M74,14 66,50M34,50 50,110M66,50 50,110&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;5.45&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/svg&gt;&lt;span class=&quot;gb-brand-name&quot;&gt;GemFactory&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;gemboss-topbar-center&quot;&gt;&lt;form role=&quot;search&quot; method=&quot;get&quot; action=&quot;#&quot; class=&quot;gemboss-topbar-search&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; width=&quot;18&quot; height=&quot;18&quot; class=&quot;gemboss-topbar-search-icon&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;circle cx=&quot;8.8&quot; cy=&quot;8.8&quot; r=&quot;5.3&quot;&gt;&lt;/circle&gt;&lt;path d=&quot;M12.8 12.8 17 17&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/svg&gt;&lt;input class=&quot;gemboss-topbar-search-input&quot; type=&quot;search&quot; name=&quot;q&quot; placeholder=&quot;Search by #ID, name or key&quot; aria-label=&quot;Search by #ID, name or key&quot; autoComplete=&quot;off&quot; enterKeyHint=&quot;search&quot;/&gt;&lt;kbd class=&quot;gemboss-topbar-search-kbd&quot; aria-hidden=&quot;true&quot;&gt;⌘K&lt;/kbd&gt;&lt;/form&gt;&lt;/div&gt;&lt;div class=&quot;gemboss-topbar-end&quot;&gt;&lt;details class=&quot;gb-account&quot;&gt;&lt;summary class=&quot;gemboss-account-chip&quot; aria-label=&quot;Account · Minh Anh&quot; title=&quot;Minh Anh&quot;&gt;MA&lt;/summary&gt;&lt;div role=&quot;menu&quot; class=&quot;gemboss-popover-surface gemboss-account-menu&quot;&gt;&lt;div class=&quot;gb-account-head&quot;&gt;&lt;div class=&quot;gb-account-name&quot;&gt;Minh Anh&lt;/div&gt;&lt;div class=&quot;gb-account-email&quot;&gt;ma@gemboss.ai&lt;/div&gt;&lt;div class=&quot;gb-account-role&quot;&gt;Designer&lt;/div&gt;&lt;/div&gt;&lt;a role=&quot;menuitem&quot; class=&quot;gemboss-account-menu-item&quot; href=&quot;#&quot;&gt;Cài đặt&lt;/a&gt;&lt;form method=&quot;post&quot; action=&quot;#&quot; class=&quot;gb-account-form&quot;&gt;&lt;button role=&quot;menuitem&quot; type=&quot;submit&quot; class=&quot;gemboss-account-menu-item danger&quot;&gt;Đăng xuất&lt;/button&gt;&lt;/form&gt;&lt;/div&gt;&lt;/details&gt;&lt;/div&gt;&lt;/header&gt;&lt;nav class=&quot;icon-nav&quot; aria-label=&quot;Main navigation&quot; id=&quot;:c58-R0:&quot;&gt;&lt;div class=&quot;gnav-scroll&quot;&gt;&lt;div class=&quot;gnav-heading&quot;&gt;Kho&lt;/div&gt;&lt;div class=&quot;gnav-group active&quot;&gt;&lt;a class=&quot;gnav-item active&quot; aria-current=&quot;page&quot; href=&quot;#&quot;&gt;&lt;span class=&quot;gnav-ico&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; width=&quot;20&quot; height=&quot;20&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;rect x=&quot;3&quot; y=&quot;3.5&quot; width=&quot;4&quot; height=&quot;13&quot; rx=&quot;1.2&quot;&gt;&lt;/rect&gt;&lt;rect x=&quot;8&quot; y=&quot;3.5&quot; width=&quot;4&quot; height=&quot;9&quot; rx=&quot;1.2&quot;&gt;&lt;/rect&gt;&lt;rect x=&quot;13&quot; y=&quot;3.5&quot; width=&quot;4&quot; height=&quot;6&quot; rx=&quot;1.2&quot;&gt;&lt;/rect&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;gnav-label&quot;&gt;Board&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;gnav-group&quot;&gt;&lt;a class=&quot;gnav-item&quot; href=&quot;#&quot;&gt;&lt;span class=&quot;gnav-ico&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; width=&quot;20&quot; height=&quot;20&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;rect x=&quot;3.5&quot; y=&quot;3&quot; width=&quot;13&quot; height=&quot;3.5&quot; rx=&quot;1&quot;&gt;&lt;/rect&gt;&lt;rect x=&quot;3.5&quot; y=&quot;8.25&quot; width=&quot;13&quot; height=&quot;3.5&quot; rx=&quot;1&quot;&gt;&lt;/rect&gt;&lt;rect x=&quot;3.5&quot; y=&quot;13.5&quot; width=&quot;13&quot; height=&quot;3.5&quot; rx=&quot;1&quot;&gt;&lt;/rect&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;gnav-label&quot;&gt;Ghép trang&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;gnav-group&quot;&gt;&lt;a class=&quot;gnav-item&quot; href=&quot;#&quot;&gt;&lt;span class=&quot;gnav-ico&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; width=&quot;20&quot; height=&quot;20&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 3.2 17.3 16H2.7z&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M10 8.2v3.6M10 13.9v.1&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;gnav-label&quot;&gt;Framework thiếu&lt;/span&gt;&lt;span class=&quot;gnav-count&quot; aria-label=&quot;3 mục đang mở&quot;&gt;3&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;gnav-bottom&quot;&gt;&lt;div class=&quot;gnav-sep&quot;&gt;&lt;/div&gt;&lt;a class=&quot;gnav-item gnav-assistant&quot; href=&quot;#&quot;&gt;&lt;span class=&quot;gnav-ico&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; width=&quot;20&quot; height=&quot;20&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M3 4.5h14v9H8.5L5 16.5v-3H3z&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;gnav-label&quot;&gt;Trợ lý&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/nav&gt;&lt;button type=&quot;button&quot; class=&quot;gemboss-mobile-nav-backdrop&quot; aria-label=&quot;Đóng menu&quot; tabindex=&quot;-1&quot;&gt;&lt;/button&gt;&lt;main class=&quot;gemboss-platform-main&quot;&gt;&lt;div style=&quot;padding:24px&quot;&gt;&lt;h1 style=&quot;margin:0&quot;&gt;Nội dung màn&lt;/h1&gt;&lt;/div&gt;&lt;/main&gt;&lt;/div&gt;&lt;/body&gt;&lt;/html&gt;"></iframe><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div class=&quot;gemboss-platform-shell&quot;&gt;
3631
3756
  &lt;header class=&quot;gemboss-platform-topbar&quot;&gt;
3632
3757
  &lt;div class=&quot;gemboss-topbar-start&quot;&gt;
3633
- &lt;button type=&quot;button&quot; class=&quot;gemboss-mobile-menu-btn&quot; aria-label=&quot;Mở menu&quot; aria-expanded=&quot;false&quot; data-label-open=&quot;Mở menu&quot; data-label-close=&quot;Đóng menu&quot; aria-controls=&quot;:c56-R0:&quot;&gt;
3758
+ &lt;button type=&quot;button&quot; class=&quot;gemboss-mobile-menu-btn&quot; aria-label=&quot;Mở menu&quot; aria-expanded=&quot;false&quot; data-label-open=&quot;Mở menu&quot; data-label-close=&quot;Đóng menu&quot; aria-controls=&quot;:c58-R0:&quot;&gt;
3634
3759
  &lt;svg width=&quot;20&quot; height=&quot;20&quot; viewBox=&quot;0 0 20 20&quot; aria-hidden=&quot;true&quot;&gt;
3635
3760
  &lt;path d=&quot;M3 5.5h14M3 10h14M3 14.5h14&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.7&quot; stroke-linecap=&quot;round&quot;&gt;
3636
3761
  &lt;/path&gt;
@@ -3681,7 +3806,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
3681
3806
  &lt;/details&gt;
3682
3807
  &lt;/div&gt;
3683
3808
  &lt;/header&gt;
3684
- &lt;nav class=&quot;icon-nav&quot; aria-label=&quot;Main navigation&quot; id=&quot;:c56-R0:&quot;&gt;
3809
+ &lt;nav class=&quot;icon-nav&quot; aria-label=&quot;Main navigation&quot; id=&quot;:c58-R0:&quot;&gt;
3685
3810
  &lt;div class=&quot;gnav-scroll&quot;&gt;
3686
3811
  &lt;div class=&quot;gnav-heading&quot;&gt;Kho&lt;/div&gt;
3687
3812
  &lt;div class=&quot;gnav-group active&quot;&gt;
@@ -3759,10 +3884,10 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
3759
3884
  &lt;/div&gt;
3760
3885
  &lt;/main&gt;
3761
3886
  &lt;/div&gt;</code></pre></details></figure></section>
3762
- <section id="nav"><h2>Chờ điều hướng</h2><p>Bấm một mục rail là có phản hồi ở khung hình đầu tiên: icon thành spinner trong đúng ô 20px (chữ không xê dịch), mục con có spinner 12px ở phần thụt lề ngay trước chữ, con trỏ chờ. Một trạng thái, ba cách đặt: <code>RailItem pending</code> / <code>RailSubItem pending</code> (React, thành <code>aria-busy="true"</code>); <code>RailItem as={NavLink}</code> của <code>@gemboss/ui/next</code> (đọc <code>useLinkStatus</code> của Next, tải trước khi chuột hoặc focus bàn phím dừng 120 ms, hoặc khi chạm); trang HTML thuần nạp <code>kit-plain.js</code> là tự có, kể cả tải trước (speculation rules ở Chromium, không có thì <code>&lt;link rel="prefetch"&gt;</code>). Link trong nội dung trang thêm <code>data-gb-pending</code> ("inline" hoặc "corner").</p><figure class="cat-demo cat-screen"><figcaption>RailItem pending + RailSubItem pending</figcaption><iframe title="RailItem pending + RailSubItem pending" style="height:300px" srcdoc="&lt;!doctype html&gt;&lt;html&gt;&lt;head&gt;&lt;meta charset=&quot;utf-8&quot;&gt;&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../gemboss-ui.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/collections.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/reactions.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-engine.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/action-card.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-chat.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/minichart.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/setup-guide.css&quot;&gt;&lt;/head&gt;&lt;body&gt;&lt;div class=&quot;gemboss-platform-shell&quot;&gt;&lt;header class=&quot;gemboss-platform-topbar&quot;&gt;&lt;div class=&quot;gemboss-topbar-start&quot;&gt;&lt;button type=&quot;button&quot; class=&quot;gemboss-mobile-menu-btn&quot; aria-label=&quot;Open menu&quot; aria-expanded=&quot;false&quot; data-label-open=&quot;Open menu&quot; data-label-close=&quot;Close menu&quot; aria-controls=&quot;:c57-R0:&quot;&gt;&lt;svg width=&quot;20&quot; height=&quot;20&quot; viewBox=&quot;0 0 20 20&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M3 5.5h14M3 10h14M3 14.5h14&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.7&quot; stroke-linecap=&quot;round&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;a class=&quot;gb-brand&quot; href=&quot;#&quot; aria-label=&quot;GemFactory home&quot;&gt;&lt;svg class=&quot;gb-brand-gem&quot; viewBox=&quot;0 0 32 40&quot; width=&quot;20.8&quot; height=&quot;26&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g transform=&quot;translate(0,0.8) scale(0.31)&quot;&gt;&lt;polygon points=&quot;26,14 74,14 66,50 34,50&quot; fill=&quot;#5661F5&quot; fill-opacity=&quot;0.92&quot;&gt;&lt;/polygon&gt;&lt;path d=&quot;M26,14 74,14 96,50 50,110 4,50Z&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;8.75&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M4,50H96M26,14 34,50M74,14 66,50M34,50 50,110M66,50 50,110&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;5.45&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/svg&gt;&lt;span class=&quot;gb-brand-name&quot;&gt;GemFactory&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;gemboss-topbar-center&quot;&gt;&lt;/div&gt;&lt;div class=&quot;gemboss-topbar-end&quot;&gt;&lt;/div&gt;&lt;/header&gt;&lt;nav class=&quot;icon-nav&quot; aria-label=&quot;Main navigation&quot; id=&quot;:c57-R0:&quot;&gt;&lt;div class=&quot;gnav-scroll&quot;&gt;&lt;div class=&quot;gnav-group&quot;&gt;&lt;a class=&quot;gnav-item&quot; href=&quot;#&quot;&gt;&lt;span class=&quot;gnav-ico&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; width=&quot;20&quot; height=&quot;20&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;rect x=&quot;3&quot; y=&quot;3.5&quot; width=&quot;4&quot; height=&quot;13&quot; rx=&quot;1.2&quot;&gt;&lt;/rect&gt;&lt;rect x=&quot;8&quot; y=&quot;3.5&quot; width=&quot;4&quot; height=&quot;9&quot; rx=&quot;1.2&quot;&gt;&lt;/rect&gt;&lt;rect x=&quot;13&quot; y=&quot;3.5&quot; width=&quot;4&quot; height=&quot;6&quot; rx=&quot;1.2&quot;&gt;&lt;/rect&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;gnav-label&quot;&gt;Board&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;gnav-group&quot;&gt;&lt;a class=&quot;gnav-item&quot; aria-busy=&quot;true&quot; href=&quot;#&quot;&gt;&lt;span class=&quot;gnav-ico&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; width=&quot;20&quot; height=&quot;20&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;rect x=&quot;3.5&quot; y=&quot;3&quot; width=&quot;13&quot; height=&quot;3.5&quot; rx=&quot;1&quot;&gt;&lt;/rect&gt;&lt;rect x=&quot;3.5&quot; y=&quot;8.25&quot; width=&quot;13&quot; height=&quot;3.5&quot; rx=&quot;1&quot;&gt;&lt;/rect&gt;&lt;rect x=&quot;3.5&quot; y=&quot;13.5&quot; width=&quot;13&quot; height=&quot;3.5&quot; rx=&quot;1&quot;&gt;&lt;/rect&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;gnav-label&quot;&gt;Ghép trang (đang mở)&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;gnav-group active has-active-child&quot;&gt;&lt;a class=&quot;gnav-item active&quot; aria-current=&quot;page&quot; href=&quot;#&quot;&gt;&lt;span class=&quot;gnav-ico&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; width=&quot;20&quot; height=&quot;20&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M3 16.5h14&quot;&gt;&lt;/path&gt;&lt;rect x=&quot;4.5&quot; y=&quot;9&quot; width=&quot;2.8&quot; height=&quot;5.5&quot; rx=&quot;.7&quot;&gt;&lt;/rect&gt;&lt;rect x=&quot;8.6&quot; y=&quot;5&quot; width=&quot;2.8&quot; height=&quot;9.5&quot; rx=&quot;.7&quot;&gt;&lt;/rect&gt;&lt;rect x=&quot;12.7&quot; y=&quot;11&quot; width=&quot;2.8&quot; height=&quot;3.5&quot; rx=&quot;.7&quot;&gt;&lt;/rect&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;gnav-label&quot;&gt;Báo cáo&lt;/span&gt;&lt;/a&gt;&lt;ul class=&quot;gnav-sub&quot;&gt;&lt;li&gt;&lt;a class=&quot;gnav-subitem active&quot; aria-current=&quot;page&quot; href=&quot;#&quot;&gt;Tổng quan&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;gnav-subitem&quot; aria-busy=&quot;true&quot; href=&quot;#&quot;&gt;Theo kênh (đang mở)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;/nav&gt;&lt;button type=&quot;button&quot; class=&quot;gemboss-mobile-nav-backdrop&quot; aria-label=&quot;Close menu&quot; tabindex=&quot;-1&quot;&gt;&lt;/button&gt;&lt;main class=&quot;gemboss-platform-main&quot;&gt;&lt;div style=&quot;padding:24px&quot;&gt;&lt;h1 style=&quot;margin:0&quot;&gt;Tổng quan&lt;/h1&gt;&lt;/div&gt;&lt;/main&gt;&lt;/div&gt;&lt;/body&gt;&lt;/html&gt;"></iframe><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div class=&quot;gemboss-platform-shell&quot;&gt;
3887
+ <section id="nav"><h2>Chờ điều hướng</h2><p>Bấm một mục rail là có phản hồi ở khung hình đầu tiên: icon thành spinner trong đúng ô 20px (chữ không xê dịch), mục con có spinner 12px ở phần thụt lề ngay trước chữ, con trỏ chờ. Một trạng thái, ba cách đặt: <code>RailItem pending</code> / <code>RailSubItem pending</code> (React, thành <code>aria-busy="true"</code>); <code>RailItem as={NavLink}</code> của <code>@gemboss/ui/next</code> (đọc <code>useLinkStatus</code> của Next, tải trước khi chuột hoặc focus bàn phím dừng 120 ms, hoặc khi chạm); trang HTML thuần nạp <code>kit-plain.js</code> là tự có, kể cả tải trước (speculation rules ở Chromium, không có thì <code>&lt;link rel="prefetch"&gt;</code>). Link trong nội dung trang thêm <code>data-gb-pending</code> ("inline" hoặc "corner").</p><figure class="cat-demo cat-screen"><figcaption>RailItem pending + RailSubItem pending</figcaption><iframe title="RailItem pending + RailSubItem pending" style="height:300px" srcdoc="&lt;!doctype html&gt;&lt;html&gt;&lt;head&gt;&lt;meta charset=&quot;utf-8&quot;&gt;&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../gemboss-ui.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/collections.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/reactions.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-engine.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/action-card.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-chat.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/minichart.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/setup-guide.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/sheet.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/settings-dialog.css&quot;&gt;&lt;/head&gt;&lt;body&gt;&lt;div class=&quot;gemboss-platform-shell&quot;&gt;&lt;header class=&quot;gemboss-platform-topbar&quot;&gt;&lt;div class=&quot;gemboss-topbar-start&quot;&gt;&lt;button type=&quot;button&quot; class=&quot;gemboss-mobile-menu-btn&quot; aria-label=&quot;Open menu&quot; aria-expanded=&quot;false&quot; data-label-open=&quot;Open menu&quot; data-label-close=&quot;Close menu&quot; aria-controls=&quot;:c59-R0:&quot;&gt;&lt;svg width=&quot;20&quot; height=&quot;20&quot; viewBox=&quot;0 0 20 20&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M3 5.5h14M3 10h14M3 14.5h14&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.7&quot; stroke-linecap=&quot;round&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;a class=&quot;gb-brand&quot; href=&quot;#&quot; aria-label=&quot;GemFactory home&quot;&gt;&lt;svg class=&quot;gb-brand-gem&quot; viewBox=&quot;0 0 32 40&quot; width=&quot;20.8&quot; height=&quot;26&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g transform=&quot;translate(0,0.8) scale(0.31)&quot;&gt;&lt;polygon points=&quot;26,14 74,14 66,50 34,50&quot; fill=&quot;#5661F5&quot; fill-opacity=&quot;0.92&quot;&gt;&lt;/polygon&gt;&lt;path d=&quot;M26,14 74,14 96,50 50,110 4,50Z&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;8.75&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M4,50H96M26,14 34,50M74,14 66,50M34,50 50,110M66,50 50,110&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;5.45&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/svg&gt;&lt;span class=&quot;gb-brand-name&quot;&gt;GemFactory&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;gemboss-topbar-center&quot;&gt;&lt;/div&gt;&lt;div class=&quot;gemboss-topbar-end&quot;&gt;&lt;/div&gt;&lt;/header&gt;&lt;nav class=&quot;icon-nav&quot; aria-label=&quot;Main navigation&quot; id=&quot;:c59-R0:&quot;&gt;&lt;div class=&quot;gnav-scroll&quot;&gt;&lt;div class=&quot;gnav-group&quot;&gt;&lt;a class=&quot;gnav-item&quot; href=&quot;#&quot;&gt;&lt;span class=&quot;gnav-ico&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; width=&quot;20&quot; height=&quot;20&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;rect x=&quot;3&quot; y=&quot;3.5&quot; width=&quot;4&quot; height=&quot;13&quot; rx=&quot;1.2&quot;&gt;&lt;/rect&gt;&lt;rect x=&quot;8&quot; y=&quot;3.5&quot; width=&quot;4&quot; height=&quot;9&quot; rx=&quot;1.2&quot;&gt;&lt;/rect&gt;&lt;rect x=&quot;13&quot; y=&quot;3.5&quot; width=&quot;4&quot; height=&quot;6&quot; rx=&quot;1.2&quot;&gt;&lt;/rect&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;gnav-label&quot;&gt;Board&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;gnav-group&quot;&gt;&lt;a class=&quot;gnav-item&quot; aria-busy=&quot;true&quot; href=&quot;#&quot;&gt;&lt;span class=&quot;gnav-ico&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; width=&quot;20&quot; height=&quot;20&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;rect x=&quot;3.5&quot; y=&quot;3&quot; width=&quot;13&quot; height=&quot;3.5&quot; rx=&quot;1&quot;&gt;&lt;/rect&gt;&lt;rect x=&quot;3.5&quot; y=&quot;8.25&quot; width=&quot;13&quot; height=&quot;3.5&quot; rx=&quot;1&quot;&gt;&lt;/rect&gt;&lt;rect x=&quot;3.5&quot; y=&quot;13.5&quot; width=&quot;13&quot; height=&quot;3.5&quot; rx=&quot;1&quot;&gt;&lt;/rect&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;gnav-label&quot;&gt;Ghép trang (đang mở)&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;gnav-group active has-active-child&quot;&gt;&lt;a class=&quot;gnav-item active&quot; aria-current=&quot;page&quot; href=&quot;#&quot;&gt;&lt;span class=&quot;gnav-ico&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; width=&quot;20&quot; height=&quot;20&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M3 16.5h14&quot;&gt;&lt;/path&gt;&lt;rect x=&quot;4.5&quot; y=&quot;9&quot; width=&quot;2.8&quot; height=&quot;5.5&quot; rx=&quot;.7&quot;&gt;&lt;/rect&gt;&lt;rect x=&quot;8.6&quot; y=&quot;5&quot; width=&quot;2.8&quot; height=&quot;9.5&quot; rx=&quot;.7&quot;&gt;&lt;/rect&gt;&lt;rect x=&quot;12.7&quot; y=&quot;11&quot; width=&quot;2.8&quot; height=&quot;3.5&quot; rx=&quot;.7&quot;&gt;&lt;/rect&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;gnav-label&quot;&gt;Báo cáo&lt;/span&gt;&lt;/a&gt;&lt;ul class=&quot;gnav-sub&quot;&gt;&lt;li&gt;&lt;a class=&quot;gnav-subitem active&quot; aria-current=&quot;page&quot; href=&quot;#&quot;&gt;Tổng quan&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a class=&quot;gnav-subitem&quot; aria-busy=&quot;true&quot; href=&quot;#&quot;&gt;Theo kênh (đang mở)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;/nav&gt;&lt;button type=&quot;button&quot; class=&quot;gemboss-mobile-nav-backdrop&quot; aria-label=&quot;Close menu&quot; tabindex=&quot;-1&quot;&gt;&lt;/button&gt;&lt;main class=&quot;gemboss-platform-main&quot;&gt;&lt;div style=&quot;padding:24px&quot;&gt;&lt;h1 style=&quot;margin:0&quot;&gt;Tổng quan&lt;/h1&gt;&lt;/div&gt;&lt;/main&gt;&lt;/div&gt;&lt;/body&gt;&lt;/html&gt;"></iframe><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div class=&quot;gemboss-platform-shell&quot;&gt;
3763
3888
  &lt;header class=&quot;gemboss-platform-topbar&quot;&gt;
3764
3889
  &lt;div class=&quot;gemboss-topbar-start&quot;&gt;
3765
- &lt;button type=&quot;button&quot; class=&quot;gemboss-mobile-menu-btn&quot; aria-label=&quot;Open menu&quot; aria-expanded=&quot;false&quot; data-label-open=&quot;Open menu&quot; data-label-close=&quot;Close menu&quot; aria-controls=&quot;:c57-R0:&quot;&gt;
3890
+ &lt;button type=&quot;button&quot; class=&quot;gemboss-mobile-menu-btn&quot; aria-label=&quot;Open menu&quot; aria-expanded=&quot;false&quot; data-label-open=&quot;Open menu&quot; data-label-close=&quot;Close menu&quot; aria-controls=&quot;:c59-R0:&quot;&gt;
3766
3891
  &lt;svg width=&quot;20&quot; height=&quot;20&quot; viewBox=&quot;0 0 20 20&quot; aria-hidden=&quot;true&quot;&gt;
3767
3892
  &lt;path d=&quot;M3 5.5h14M3 10h14M3 14.5h14&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.7&quot; stroke-linecap=&quot;round&quot;&gt;
3768
3893
  &lt;/path&gt;
@@ -3787,7 +3912,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
3787
3912
  &lt;div class=&quot;gemboss-topbar-end&quot;&gt;
3788
3913
  &lt;/div&gt;
3789
3914
  &lt;/header&gt;
3790
- &lt;nav class=&quot;icon-nav&quot; aria-label=&quot;Main navigation&quot; id=&quot;:c57-R0:&quot;&gt;
3915
+ &lt;nav class=&quot;icon-nav&quot; aria-label=&quot;Main navigation&quot; id=&quot;:c59-R0:&quot;&gt;
3791
3916
  &lt;div class=&quot;gnav-scroll&quot;&gt;
3792
3917
  &lt;div class=&quot;gnav-group&quot;&gt;
3793
3918
  &lt;a class=&quot;gnav-item&quot; href=&quot;#&quot;&gt;
@@ -3879,10 +4004,10 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
3879
4004
  &lt;/span&gt;
3880
4005
  &lt;/div&gt;
3881
4006
  &lt;/div&gt;</code></pre></details></figure></section>
3882
- <section id="page"><h2>Bề rộng nội dung</h2><p>Rail bên trái, bên phải là một cột có bề rộng tối đa theo bậc của admin: <code>ui-page</code> 900px (<code>--ui-content-max</code>: danh sách, bảng, lưới card, dashboard), <code>--feed</code> 720, <code>--form</code> 662, <code>--canvas</code> 1440 (chỉ khi nội dung đo được là rộng hơn một cột chữ), <code>--full</code> không giới hạn (board, editor; ghi lý do). React: một <code>PageContainer width="form"</code> ngay trong <code>AppShell</code>. Một cap chỉ có tác dụng khi nó NHỎ HƠN chỗ trống thật: ở 1280 chỗ trống là 992. Hai khung dưới vẽ ở 1440, kéo ngang để xem hết.</p><figure class="cat-demo cat-screen"><figcaption>PageContainer width=&quot;default&quot; ở 1440: cột 900</figcaption><div class="cat-wide"><iframe title="PageContainer width=&quot;default&quot; ở 1440: cột 900" style="height:300px;width:1440px" srcdoc="&lt;!doctype html&gt;&lt;html&gt;&lt;head&gt;&lt;meta charset=&quot;utf-8&quot;&gt;&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../gemboss-ui.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/collections.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/reactions.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-engine.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/action-card.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-chat.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/minichart.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/setup-guide.css&quot;&gt;&lt;/head&gt;&lt;body&gt;&lt;div class=&quot;gemboss-platform-shell&quot;&gt;&lt;header class=&quot;gemboss-platform-topbar&quot;&gt;&lt;div class=&quot;gemboss-topbar-start&quot;&gt;&lt;button type=&quot;button&quot; class=&quot;gemboss-mobile-menu-btn&quot; aria-label=&quot;Open menu&quot; aria-expanded=&quot;false&quot; data-label-open=&quot;Open menu&quot; data-label-close=&quot;Close menu&quot; aria-controls=&quot;:c59-R0:&quot;&gt;&lt;svg width=&quot;20&quot; height=&quot;20&quot; viewBox=&quot;0 0 20 20&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M3 5.5h14M3 10h14M3 14.5h14&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.7&quot; stroke-linecap=&quot;round&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;a class=&quot;gb-brand&quot; href=&quot;#&quot; aria-label=&quot;GemFactory home&quot;&gt;&lt;svg class=&quot;gb-brand-gem&quot; viewBox=&quot;0 0 32 40&quot; width=&quot;20.8&quot; height=&quot;26&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g transform=&quot;translate(0,0.8) scale(0.31)&quot;&gt;&lt;polygon points=&quot;26,14 74,14 66,50 34,50&quot; fill=&quot;#5661F5&quot; fill-opacity=&quot;0.92&quot;&gt;&lt;/polygon&gt;&lt;path d=&quot;M26,14 74,14 96,50 50,110 4,50Z&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;8.75&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M4,50H96M26,14 34,50M74,14 66,50M34,50 50,110M66,50 50,110&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;5.45&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/svg&gt;&lt;span class=&quot;gb-brand-name&quot;&gt;GemFactory&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;gemboss-topbar-center&quot;&gt;&lt;/div&gt;&lt;div class=&quot;gemboss-topbar-end&quot;&gt;&lt;/div&gt;&lt;/header&gt;&lt;nav class=&quot;icon-nav&quot; aria-label=&quot;Main navigation&quot; id=&quot;:c59-R0:&quot;&gt;&lt;div class=&quot;gnav-scroll&quot;&gt;&lt;div class=&quot;gnav-heading&quot;&gt;Kho&lt;/div&gt;&lt;div class=&quot;gnav-group active&quot;&gt;&lt;a class=&quot;gnav-item active&quot; aria-current=&quot;page&quot; href=&quot;#&quot;&gt;&lt;span class=&quot;gnav-ico&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; width=&quot;20&quot; height=&quot;20&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;rect x=&quot;3&quot; y=&quot;3.5&quot; width=&quot;4&quot; height=&quot;13&quot; rx=&quot;1.2&quot;&gt;&lt;/rect&gt;&lt;rect x=&quot;8&quot; y=&quot;3.5&quot; width=&quot;4&quot; height=&quot;9&quot; rx=&quot;1.2&quot;&gt;&lt;/rect&gt;&lt;rect x=&quot;13&quot; y=&quot;3.5&quot; width=&quot;4&quot; height=&quot;6&quot; rx=&quot;1.2&quot;&gt;&lt;/rect&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;gnav-label&quot;&gt;Board&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;gnav-group&quot;&gt;&lt;a class=&quot;gnav-item&quot; href=&quot;#&quot;&gt;&lt;span class=&quot;gnav-ico&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; width=&quot;20&quot; height=&quot;20&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;rect x=&quot;3.5&quot; y=&quot;3&quot; width=&quot;13&quot; height=&quot;3.5&quot; rx=&quot;1&quot;&gt;&lt;/rect&gt;&lt;rect x=&quot;3.5&quot; y=&quot;8.25&quot; width=&quot;13&quot; height=&quot;3.5&quot; rx=&quot;1&quot;&gt;&lt;/rect&gt;&lt;rect x=&quot;3.5&quot; y=&quot;13.5&quot; width=&quot;13&quot; height=&quot;3.5&quot; rx=&quot;1&quot;&gt;&lt;/rect&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;gnav-label&quot;&gt;Ghép trang&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;gnav-group&quot;&gt;&lt;a class=&quot;gnav-item&quot; href=&quot;#&quot;&gt;&lt;span class=&quot;gnav-ico&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; width=&quot;20&quot; height=&quot;20&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 3.2 17.3 16H2.7z&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M10 8.2v3.6M10 13.9v.1&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;gnav-label&quot;&gt;Framework thiếu&lt;/span&gt;&lt;span class=&quot;gnav-count&quot; aria-label=&quot;3 mục đang mở&quot;&gt;3&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/nav&gt;&lt;button type=&quot;button&quot; class=&quot;gemboss-mobile-nav-backdrop&quot; aria-label=&quot;Close menu&quot; tabindex=&quot;-1&quot;&gt;&lt;/button&gt;&lt;main class=&quot;gemboss-platform-main&quot;&gt;&lt;div class=&quot;ui-page&quot;&gt;&lt;h1 style=&quot;margin:0 0 16px&quot;&gt;Board&lt;/h1&gt;&lt;div class=&quot;ui-card&quot;&gt;&lt;div class=&quot;ui-card__title&quot;&gt;#412 Hero split&lt;/div&gt;&lt;p class=&quot;ui-muted&quot;&gt;Cột 900px, căn giữa trong chỗ trống bên phải rail.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/main&gt;&lt;/div&gt;&lt;/body&gt;&lt;/html&gt;"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div class=&quot;gemboss-platform-shell&quot;&gt;
4007
+ <section id="page"><h2>Bề rộng nội dung</h2><p>Rail bên trái, bên phải là một cột có bề rộng tối đa theo bậc của admin: <code>ui-page</code> 900px (<code>--ui-content-max</code>: danh sách, bảng, lưới card, dashboard), <code>--feed</code> 720, <code>--form</code> 662, <code>--canvas</code> 1440 (chỉ khi nội dung đo được là rộng hơn một cột chữ), <code>--full</code> không giới hạn (board, editor; ghi lý do). React: một <code>PageContainer width="form"</code> ngay trong <code>AppShell</code>. Một cap chỉ có tác dụng khi nó NHỎ HƠN chỗ trống thật: ở 1280 chỗ trống là 992. Hai khung dưới vẽ ở 1440, kéo ngang để xem hết.</p><figure class="cat-demo cat-screen"><figcaption>PageContainer width=&quot;default&quot; ở 1440: cột 900</figcaption><div class="cat-wide"><iframe title="PageContainer width=&quot;default&quot; ở 1440: cột 900" style="height:300px;width:1440px" srcdoc="&lt;!doctype html&gt;&lt;html&gt;&lt;head&gt;&lt;meta charset=&quot;utf-8&quot;&gt;&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../gemboss-ui.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/collections.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/reactions.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-engine.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/action-card.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-chat.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/minichart.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/setup-guide.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/sheet.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/settings-dialog.css&quot;&gt;&lt;/head&gt;&lt;body&gt;&lt;div class=&quot;gemboss-platform-shell&quot;&gt;&lt;header class=&quot;gemboss-platform-topbar&quot;&gt;&lt;div class=&quot;gemboss-topbar-start&quot;&gt;&lt;button type=&quot;button&quot; class=&quot;gemboss-mobile-menu-btn&quot; aria-label=&quot;Open menu&quot; aria-expanded=&quot;false&quot; data-label-open=&quot;Open menu&quot; data-label-close=&quot;Close menu&quot; aria-controls=&quot;:c61-R0:&quot;&gt;&lt;svg width=&quot;20&quot; height=&quot;20&quot; viewBox=&quot;0 0 20 20&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M3 5.5h14M3 10h14M3 14.5h14&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.7&quot; stroke-linecap=&quot;round&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;a class=&quot;gb-brand&quot; href=&quot;#&quot; aria-label=&quot;GemFactory home&quot;&gt;&lt;svg class=&quot;gb-brand-gem&quot; viewBox=&quot;0 0 32 40&quot; width=&quot;20.8&quot; height=&quot;26&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g transform=&quot;translate(0,0.8) scale(0.31)&quot;&gt;&lt;polygon points=&quot;26,14 74,14 66,50 34,50&quot; fill=&quot;#5661F5&quot; fill-opacity=&quot;0.92&quot;&gt;&lt;/polygon&gt;&lt;path d=&quot;M26,14 74,14 96,50 50,110 4,50Z&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;8.75&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M4,50H96M26,14 34,50M74,14 66,50M34,50 50,110M66,50 50,110&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;5.45&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/svg&gt;&lt;span class=&quot;gb-brand-name&quot;&gt;GemFactory&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;gemboss-topbar-center&quot;&gt;&lt;/div&gt;&lt;div class=&quot;gemboss-topbar-end&quot;&gt;&lt;/div&gt;&lt;/header&gt;&lt;nav class=&quot;icon-nav&quot; aria-label=&quot;Main navigation&quot; id=&quot;:c61-R0:&quot;&gt;&lt;div class=&quot;gnav-scroll&quot;&gt;&lt;div class=&quot;gnav-heading&quot;&gt;Kho&lt;/div&gt;&lt;div class=&quot;gnav-group active&quot;&gt;&lt;a class=&quot;gnav-item active&quot; aria-current=&quot;page&quot; href=&quot;#&quot;&gt;&lt;span class=&quot;gnav-ico&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; width=&quot;20&quot; height=&quot;20&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;rect x=&quot;3&quot; y=&quot;3.5&quot; width=&quot;4&quot; height=&quot;13&quot; rx=&quot;1.2&quot;&gt;&lt;/rect&gt;&lt;rect x=&quot;8&quot; y=&quot;3.5&quot; width=&quot;4&quot; height=&quot;9&quot; rx=&quot;1.2&quot;&gt;&lt;/rect&gt;&lt;rect x=&quot;13&quot; y=&quot;3.5&quot; width=&quot;4&quot; height=&quot;6&quot; rx=&quot;1.2&quot;&gt;&lt;/rect&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;gnav-label&quot;&gt;Board&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;gnav-group&quot;&gt;&lt;a class=&quot;gnav-item&quot; href=&quot;#&quot;&gt;&lt;span class=&quot;gnav-ico&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; width=&quot;20&quot; height=&quot;20&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;rect x=&quot;3.5&quot; y=&quot;3&quot; width=&quot;13&quot; height=&quot;3.5&quot; rx=&quot;1&quot;&gt;&lt;/rect&gt;&lt;rect x=&quot;3.5&quot; y=&quot;8.25&quot; width=&quot;13&quot; height=&quot;3.5&quot; rx=&quot;1&quot;&gt;&lt;/rect&gt;&lt;rect x=&quot;3.5&quot; y=&quot;13.5&quot; width=&quot;13&quot; height=&quot;3.5&quot; rx=&quot;1&quot;&gt;&lt;/rect&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;gnav-label&quot;&gt;Ghép trang&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;gnav-group&quot;&gt;&lt;a class=&quot;gnav-item&quot; href=&quot;#&quot;&gt;&lt;span class=&quot;gnav-ico&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; width=&quot;20&quot; height=&quot;20&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 3.2 17.3 16H2.7z&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M10 8.2v3.6M10 13.9v.1&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;gnav-label&quot;&gt;Framework thiếu&lt;/span&gt;&lt;span class=&quot;gnav-count&quot; aria-label=&quot;3 mục đang mở&quot;&gt;3&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/nav&gt;&lt;button type=&quot;button&quot; class=&quot;gemboss-mobile-nav-backdrop&quot; aria-label=&quot;Close menu&quot; tabindex=&quot;-1&quot;&gt;&lt;/button&gt;&lt;main class=&quot;gemboss-platform-main&quot;&gt;&lt;div class=&quot;ui-page&quot;&gt;&lt;h1 style=&quot;margin:0 0 16px&quot;&gt;Board&lt;/h1&gt;&lt;div class=&quot;ui-card&quot;&gt;&lt;div class=&quot;ui-card__title&quot;&gt;#412 Hero split&lt;/div&gt;&lt;p class=&quot;ui-muted&quot;&gt;Cột 900px, căn giữa trong chỗ trống bên phải rail.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/main&gt;&lt;/div&gt;&lt;/body&gt;&lt;/html&gt;"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div class=&quot;gemboss-platform-shell&quot;&gt;
3883
4008
  &lt;header class=&quot;gemboss-platform-topbar&quot;&gt;
3884
4009
  &lt;div class=&quot;gemboss-topbar-start&quot;&gt;
3885
- &lt;button type=&quot;button&quot; class=&quot;gemboss-mobile-menu-btn&quot; aria-label=&quot;Open menu&quot; aria-expanded=&quot;false&quot; data-label-open=&quot;Open menu&quot; data-label-close=&quot;Close menu&quot; aria-controls=&quot;:c59-R0:&quot;&gt;
4010
+ &lt;button type=&quot;button&quot; class=&quot;gemboss-mobile-menu-btn&quot; aria-label=&quot;Open menu&quot; aria-expanded=&quot;false&quot; data-label-open=&quot;Open menu&quot; data-label-close=&quot;Close menu&quot; aria-controls=&quot;:c61-R0:&quot;&gt;
3886
4011
  &lt;svg width=&quot;20&quot; height=&quot;20&quot; viewBox=&quot;0 0 20 20&quot; aria-hidden=&quot;true&quot;&gt;
3887
4012
  &lt;path d=&quot;M3 5.5h14M3 10h14M3 14.5h14&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.7&quot; stroke-linecap=&quot;round&quot;&gt;
3888
4013
  &lt;/path&gt;
@@ -3907,7 +4032,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
3907
4032
  &lt;div class=&quot;gemboss-topbar-end&quot;&gt;
3908
4033
  &lt;/div&gt;
3909
4034
  &lt;/header&gt;
3910
- &lt;nav class=&quot;icon-nav&quot; aria-label=&quot;Main navigation&quot; id=&quot;:c59-R0:&quot;&gt;
4035
+ &lt;nav class=&quot;icon-nav&quot; aria-label=&quot;Main navigation&quot; id=&quot;:c61-R0:&quot;&gt;
3911
4036
  &lt;div class=&quot;gnav-scroll&quot;&gt;
3912
4037
  &lt;div class=&quot;gnav-heading&quot;&gt;Kho&lt;/div&gt;
3913
4038
  &lt;div class=&quot;gnav-group active&quot;&gt;
@@ -3973,10 +4098,10 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
3973
4098
  &lt;/div&gt;
3974
4099
  &lt;/div&gt;
3975
4100
  &lt;/main&gt;
3976
- &lt;/div&gt;</code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>PageContainer width=&quot;form&quot; ở 1440: cột 662</figcaption><div class="cat-wide"><iframe title="PageContainer width=&quot;form&quot; ở 1440: cột 662" style="height:300px;width:1440px" srcdoc="&lt;!doctype html&gt;&lt;html&gt;&lt;head&gt;&lt;meta charset=&quot;utf-8&quot;&gt;&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../gemboss-ui.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/collections.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/reactions.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-engine.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/action-card.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-chat.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/minichart.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/setup-guide.css&quot;&gt;&lt;/head&gt;&lt;body&gt;&lt;div class=&quot;gemboss-platform-shell&quot;&gt;&lt;header class=&quot;gemboss-platform-topbar&quot;&gt;&lt;div class=&quot;gemboss-topbar-start&quot;&gt;&lt;button type=&quot;button&quot; class=&quot;gemboss-mobile-menu-btn&quot; aria-label=&quot;Open menu&quot; aria-expanded=&quot;false&quot; data-label-open=&quot;Open menu&quot; data-label-close=&quot;Close menu&quot; aria-controls=&quot;:c60-R0:&quot;&gt;&lt;svg width=&quot;20&quot; height=&quot;20&quot; viewBox=&quot;0 0 20 20&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M3 5.5h14M3 10h14M3 14.5h14&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.7&quot; stroke-linecap=&quot;round&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;a class=&quot;gb-brand&quot; href=&quot;#&quot; aria-label=&quot;GemFactory home&quot;&gt;&lt;svg class=&quot;gb-brand-gem&quot; viewBox=&quot;0 0 32 40&quot; width=&quot;20.8&quot; height=&quot;26&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g transform=&quot;translate(0,0.8) scale(0.31)&quot;&gt;&lt;polygon points=&quot;26,14 74,14 66,50 34,50&quot; fill=&quot;#5661F5&quot; fill-opacity=&quot;0.92&quot;&gt;&lt;/polygon&gt;&lt;path d=&quot;M26,14 74,14 96,50 50,110 4,50Z&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;8.75&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M4,50H96M26,14 34,50M74,14 66,50M34,50 50,110M66,50 50,110&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;5.45&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/svg&gt;&lt;span class=&quot;gb-brand-name&quot;&gt;GemFactory&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;gemboss-topbar-center&quot;&gt;&lt;/div&gt;&lt;div class=&quot;gemboss-topbar-end&quot;&gt;&lt;/div&gt;&lt;/header&gt;&lt;nav class=&quot;icon-nav&quot; aria-label=&quot;Main navigation&quot; id=&quot;:c60-R0:&quot;&gt;&lt;div class=&quot;gnav-scroll&quot;&gt;&lt;div class=&quot;gnav-heading&quot;&gt;Kho&lt;/div&gt;&lt;div class=&quot;gnav-group active&quot;&gt;&lt;a class=&quot;gnav-item active&quot; aria-current=&quot;page&quot; href=&quot;#&quot;&gt;&lt;span class=&quot;gnav-ico&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; width=&quot;20&quot; height=&quot;20&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;rect x=&quot;3&quot; y=&quot;3.5&quot; width=&quot;4&quot; height=&quot;13&quot; rx=&quot;1.2&quot;&gt;&lt;/rect&gt;&lt;rect x=&quot;8&quot; y=&quot;3.5&quot; width=&quot;4&quot; height=&quot;9&quot; rx=&quot;1.2&quot;&gt;&lt;/rect&gt;&lt;rect x=&quot;13&quot; y=&quot;3.5&quot; width=&quot;4&quot; height=&quot;6&quot; rx=&quot;1.2&quot;&gt;&lt;/rect&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;gnav-label&quot;&gt;Board&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;gnav-group&quot;&gt;&lt;a class=&quot;gnav-item&quot; href=&quot;#&quot;&gt;&lt;span class=&quot;gnav-ico&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; width=&quot;20&quot; height=&quot;20&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;rect x=&quot;3.5&quot; y=&quot;3&quot; width=&quot;13&quot; height=&quot;3.5&quot; rx=&quot;1&quot;&gt;&lt;/rect&gt;&lt;rect x=&quot;3.5&quot; y=&quot;8.25&quot; width=&quot;13&quot; height=&quot;3.5&quot; rx=&quot;1&quot;&gt;&lt;/rect&gt;&lt;rect x=&quot;3.5&quot; y=&quot;13.5&quot; width=&quot;13&quot; height=&quot;3.5&quot; rx=&quot;1&quot;&gt;&lt;/rect&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;gnav-label&quot;&gt;Ghép trang&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;gnav-group&quot;&gt;&lt;a class=&quot;gnav-item&quot; href=&quot;#&quot;&gt;&lt;span class=&quot;gnav-ico&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; width=&quot;20&quot; height=&quot;20&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 3.2 17.3 16H2.7z&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M10 8.2v3.6M10 13.9v.1&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;gnav-label&quot;&gt;Framework thiếu&lt;/span&gt;&lt;span class=&quot;gnav-count&quot; aria-label=&quot;3 mục đang mở&quot;&gt;3&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/nav&gt;&lt;button type=&quot;button&quot; class=&quot;gemboss-mobile-nav-backdrop&quot; aria-label=&quot;Close menu&quot; tabindex=&quot;-1&quot;&gt;&lt;/button&gt;&lt;main class=&quot;gemboss-platform-main&quot;&gt;&lt;div class=&quot;ui-page ui-page--form&quot;&gt;&lt;h1 style=&quot;margin:0 0 16px&quot;&gt;Settings&lt;/h1&gt;&lt;div class=&quot;ui-card&quot; style=&quot;display:grid;gap:6px&quot;&gt;&lt;label for=&quot;cat-pw-name&quot;&gt;Tên hiển thị&lt;/label&gt;&lt;input id=&quot;cat-pw-name&quot; class=&quot;gemboss-field&quot; value=&quot;Minh Anh&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/main&gt;&lt;/div&gt;&lt;/body&gt;&lt;/html&gt;"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div class=&quot;gemboss-platform-shell&quot;&gt;
4101
+ &lt;/div&gt;</code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>PageContainer width=&quot;form&quot; ở 1440: cột 662</figcaption><div class="cat-wide"><iframe title="PageContainer width=&quot;form&quot; ở 1440: cột 662" style="height:300px;width:1440px" srcdoc="&lt;!doctype html&gt;&lt;html&gt;&lt;head&gt;&lt;meta charset=&quot;utf-8&quot;&gt;&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../gemboss-ui.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/collections.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/reactions.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-engine.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/action-card.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-chat.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/minichart.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/setup-guide.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/sheet.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/settings-dialog.css&quot;&gt;&lt;/head&gt;&lt;body&gt;&lt;div class=&quot;gemboss-platform-shell&quot;&gt;&lt;header class=&quot;gemboss-platform-topbar&quot;&gt;&lt;div class=&quot;gemboss-topbar-start&quot;&gt;&lt;button type=&quot;button&quot; class=&quot;gemboss-mobile-menu-btn&quot; aria-label=&quot;Open menu&quot; aria-expanded=&quot;false&quot; data-label-open=&quot;Open menu&quot; data-label-close=&quot;Close menu&quot; aria-controls=&quot;:c62-R0:&quot;&gt;&lt;svg width=&quot;20&quot; height=&quot;20&quot; viewBox=&quot;0 0 20 20&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M3 5.5h14M3 10h14M3 14.5h14&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.7&quot; stroke-linecap=&quot;round&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/button&gt;&lt;a class=&quot;gb-brand&quot; href=&quot;#&quot; aria-label=&quot;GemFactory home&quot;&gt;&lt;svg class=&quot;gb-brand-gem&quot; viewBox=&quot;0 0 32 40&quot; width=&quot;20.8&quot; height=&quot;26&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g transform=&quot;translate(0,0.8) scale(0.31)&quot;&gt;&lt;polygon points=&quot;26,14 74,14 66,50 34,50&quot; fill=&quot;#5661F5&quot; fill-opacity=&quot;0.92&quot;&gt;&lt;/polygon&gt;&lt;path d=&quot;M26,14 74,14 96,50 50,110 4,50Z&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;8.75&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M4,50H96M26,14 34,50M74,14 66,50M34,50 50,110M66,50 50,110&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;5.45&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/svg&gt;&lt;span class=&quot;gb-brand-name&quot;&gt;GemFactory&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;gemboss-topbar-center&quot;&gt;&lt;/div&gt;&lt;div class=&quot;gemboss-topbar-end&quot;&gt;&lt;/div&gt;&lt;/header&gt;&lt;nav class=&quot;icon-nav&quot; aria-label=&quot;Main navigation&quot; id=&quot;:c62-R0:&quot;&gt;&lt;div class=&quot;gnav-scroll&quot;&gt;&lt;div class=&quot;gnav-heading&quot;&gt;Kho&lt;/div&gt;&lt;div class=&quot;gnav-group active&quot;&gt;&lt;a class=&quot;gnav-item active&quot; aria-current=&quot;page&quot; href=&quot;#&quot;&gt;&lt;span class=&quot;gnav-ico&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; width=&quot;20&quot; height=&quot;20&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;rect x=&quot;3&quot; y=&quot;3.5&quot; width=&quot;4&quot; height=&quot;13&quot; rx=&quot;1.2&quot;&gt;&lt;/rect&gt;&lt;rect x=&quot;8&quot; y=&quot;3.5&quot; width=&quot;4&quot; height=&quot;9&quot; rx=&quot;1.2&quot;&gt;&lt;/rect&gt;&lt;rect x=&quot;13&quot; y=&quot;3.5&quot; width=&quot;4&quot; height=&quot;6&quot; rx=&quot;1.2&quot;&gt;&lt;/rect&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;gnav-label&quot;&gt;Board&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;gnav-group&quot;&gt;&lt;a class=&quot;gnav-item&quot; href=&quot;#&quot;&gt;&lt;span class=&quot;gnav-ico&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; width=&quot;20&quot; height=&quot;20&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;rect x=&quot;3.5&quot; y=&quot;3&quot; width=&quot;13&quot; height=&quot;3.5&quot; rx=&quot;1&quot;&gt;&lt;/rect&gt;&lt;rect x=&quot;3.5&quot; y=&quot;8.25&quot; width=&quot;13&quot; height=&quot;3.5&quot; rx=&quot;1&quot;&gt;&lt;/rect&gt;&lt;rect x=&quot;3.5&quot; y=&quot;13.5&quot; width=&quot;13&quot; height=&quot;3.5&quot; rx=&quot;1&quot;&gt;&lt;/rect&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;gnav-label&quot;&gt;Ghép trang&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;gnav-group&quot;&gt;&lt;a class=&quot;gnav-item&quot; href=&quot;#&quot;&gt;&lt;span class=&quot;gnav-ico&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; width=&quot;20&quot; height=&quot;20&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M10 3.2 17.3 16H2.7z&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M10 8.2v3.6M10 13.9v.1&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/span&gt;&lt;span class=&quot;gnav-label&quot;&gt;Framework thiếu&lt;/span&gt;&lt;span class=&quot;gnav-count&quot; aria-label=&quot;3 mục đang mở&quot;&gt;3&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/nav&gt;&lt;button type=&quot;button&quot; class=&quot;gemboss-mobile-nav-backdrop&quot; aria-label=&quot;Close menu&quot; tabindex=&quot;-1&quot;&gt;&lt;/button&gt;&lt;main class=&quot;gemboss-platform-main&quot;&gt;&lt;div class=&quot;ui-page ui-page--form&quot;&gt;&lt;h1 style=&quot;margin:0 0 16px&quot;&gt;Settings&lt;/h1&gt;&lt;div class=&quot;ui-card&quot; style=&quot;display:grid;gap:6px&quot;&gt;&lt;label for=&quot;cat-pw-name&quot;&gt;Tên hiển thị&lt;/label&gt;&lt;input id=&quot;cat-pw-name&quot; class=&quot;gemboss-field&quot; value=&quot;Minh Anh&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/main&gt;&lt;/div&gt;&lt;/body&gt;&lt;/html&gt;"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div class=&quot;gemboss-platform-shell&quot;&gt;
3977
4102
  &lt;header class=&quot;gemboss-platform-topbar&quot;&gt;
3978
4103
  &lt;div class=&quot;gemboss-topbar-start&quot;&gt;
3979
- &lt;button type=&quot;button&quot; class=&quot;gemboss-mobile-menu-btn&quot; aria-label=&quot;Open menu&quot; aria-expanded=&quot;false&quot; data-label-open=&quot;Open menu&quot; data-label-close=&quot;Close menu&quot; aria-controls=&quot;:c60-R0:&quot;&gt;
4104
+ &lt;button type=&quot;button&quot; class=&quot;gemboss-mobile-menu-btn&quot; aria-label=&quot;Open menu&quot; aria-expanded=&quot;false&quot; data-label-open=&quot;Open menu&quot; data-label-close=&quot;Close menu&quot; aria-controls=&quot;:c62-R0:&quot;&gt;
3980
4105
  &lt;svg width=&quot;20&quot; height=&quot;20&quot; viewBox=&quot;0 0 20 20&quot; aria-hidden=&quot;true&quot;&gt;
3981
4106
  &lt;path d=&quot;M3 5.5h14M3 10h14M3 14.5h14&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.7&quot; stroke-linecap=&quot;round&quot;&gt;
3982
4107
  &lt;/path&gt;
@@ -4001,7 +4126,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
4001
4126
  &lt;div class=&quot;gemboss-topbar-end&quot;&gt;
4002
4127
  &lt;/div&gt;
4003
4128
  &lt;/header&gt;
4004
- &lt;nav class=&quot;icon-nav&quot; aria-label=&quot;Main navigation&quot; id=&quot;:c60-R0:&quot;&gt;
4129
+ &lt;nav class=&quot;icon-nav&quot; aria-label=&quot;Main navigation&quot; id=&quot;:c62-R0:&quot;&gt;
4005
4130
  &lt;div class=&quot;gnav-scroll&quot;&gt;
4006
4131
  &lt;div class=&quot;gnav-heading&quot;&gt;Kho&lt;/div&gt;
4007
4132
  &lt;div class=&quot;gnav-group active&quot;&gt;
@@ -4070,7 +4195,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
4070
4195
  &lt;/div&gt;</code></pre></details></figure><figure class="cat-demo"><figcaption>HTML thuần: một lớp bọc là con đầu tiên của main</figcaption><div class="cat-live"><div class="ui-page ui-page--feed"><div class="ui-card">Một mục trong feed, cột 720px.</div></div></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div class=&quot;ui-page ui-page--feed&quot;&gt;
4071
4196
  &lt;div class=&quot;ui-card&quot;&gt;Một mục trong feed, cột 720px.&lt;/div&gt;
4072
4197
  &lt;/div&gt;</code></pre></details></figure></section>
4073
- <section id="portal"><h2>Cổng công khai: tab trên topbar, tìm kiếm, sáng / tối, người dẫn đầu</h2><p>Cho bề mặt công khai kiểu bảng Featurebase (GemFeedback) và cộng đồng (GemCommunity). <code>TopbarNav</code> đặt tab mục ngay trên topbar cạnh logo; <code>SearchDialog</code> là popup tìm (⌘K, gõ là ra); <code>ThemeToggle</code> + <code>themeScript</code> bật bảng màu tối (chỉ đổi token, mọi class theo); <code>Avatar</code> ảnh hoặc chữ viết tắt trên một tông lấy theo tên; <code>Leaderboard</code> huy chương 1–3 rồi thứ hạng; <code>Podium</code> ba người đầu.</p><figure class="cat-demo cat-screen"><figcaption>TopbarNav + SearchDialog + ThemeToggle, sáng</figcaption><iframe title="TopbarNav + SearchDialog + ThemeToggle, sáng" style="height:360px" srcdoc="&lt;!doctype html&gt;&lt;html&gt;&lt;head&gt;&lt;meta charset=&quot;utf-8&quot;&gt;&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../gemboss-ui.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/collections.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/reactions.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-engine.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/action-card.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-chat.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/minichart.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/setup-guide.css&quot;&gt;&lt;/head&gt;&lt;body&gt;&lt;div class=&quot;gemboss-platform-shell&quot;&gt;&lt;header class=&quot;gemboss-platform-topbar&quot;&gt;&lt;div class=&quot;gemboss-topbar-start&quot;&gt;&lt;a class=&quot;gb-brand&quot; href=&quot;/&quot; aria-label=&quot;GemFeedback home&quot;&gt;&lt;svg class=&quot;gb-brand-gem&quot; viewBox=&quot;0 0 32 40&quot; width=&quot;20.8&quot; height=&quot;26&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g transform=&quot;translate(0,0.8) scale(0.31)&quot;&gt;&lt;polygon points=&quot;26,14 74,14 66,50 34,50&quot; fill=&quot;#5661F5&quot; fill-opacity=&quot;0.92&quot;&gt;&lt;/polygon&gt;&lt;path d=&quot;M26,14 74,14 96,50 50,110 4,50Z&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;8.75&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M4,50H96M26,14 34,50M74,14 66,50M34,50 50,110M66,50 50,110&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;5.45&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/svg&gt;&lt;span class=&quot;gb-brand-name&quot;&gt;GemFeedback&lt;/span&gt;&lt;/a&gt;&lt;nav class=&quot;gb-topnav&quot; aria-label=&quot;Sections&quot;&gt;&lt;div class=&quot;gb-topnav-row&quot;&gt;&lt;a href=&quot;#portal&quot; class=&quot;gb-topnav-link&quot; aria-current=&quot;page&quot;&gt;Feedback&lt;/a&gt;&lt;a href=&quot;#portal&quot; class=&quot;gb-topnav-link&quot;&gt;Roadmap&lt;/a&gt;&lt;a href=&quot;#portal&quot; class=&quot;gb-topnav-link&quot;&gt;Changelog&lt;/a&gt;&lt;/div&gt;&lt;details class=&quot;gb-topnav-fold&quot;&gt;&lt;summary class=&quot;gb-topnav-link gb-topnav-fold-btn&quot; aria-current=&quot;page&quot;&gt;Feedback&lt;svg class=&quot;gb-topnav-chevron&quot; width=&quot;12&quot; height=&quot;12&quot; viewBox=&quot;0 0 12 12&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;path d=&quot;M3 4.5 6 7.5 9 4.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.6&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/summary&gt;&lt;div class=&quot;gb-topnav-pop gemboss-popover-surface&quot;&gt;&lt;a href=&quot;#portal&quot; class=&quot;gb-topnav-item&quot; aria-current=&quot;page&quot;&gt;Feedback&lt;/a&gt;&lt;a href=&quot;#portal&quot; class=&quot;gb-topnav-item&quot;&gt;Roadmap&lt;/a&gt;&lt;a href=&quot;#portal&quot; class=&quot;gb-topnav-item&quot;&gt;Changelog&lt;/a&gt;&lt;/div&gt;&lt;/details&gt;&lt;/nav&gt;&lt;/div&gt;&lt;div class=&quot;gemboss-topbar-center&quot;&gt;&lt;/div&gt;&lt;div class=&quot;gemboss-topbar-end&quot;&gt;&lt;a class=&quot;gb-search-trigger&quot; href=&quot;#portal&quot; aria-label=&quot;Search&quot; aria-haspopup=&quot;dialog&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;circle cx=&quot;8.8&quot; cy=&quot;8.8&quot; r=&quot;5.3&quot;&gt;&lt;/circle&gt;&lt;path d=&quot;M12.8 12.8 17 17&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/a&gt;&lt;dialog class=&quot;ui-modal gb-search&quot; aria-label=&quot;Search&quot;&gt;&lt;div class=&quot;gb-search-box&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; width=&quot;18&quot; height=&quot;18&quot; class=&quot;gb-search-icon&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;circle cx=&quot;8.8&quot; cy=&quot;8.8&quot; r=&quot;5.3&quot;&gt;&lt;/circle&gt;&lt;path d=&quot;M12.8 12.8 17 17&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/svg&gt;&lt;input class=&quot;gb-search-input&quot; type=&quot;search&quot; placeholder=&quot;Search…&quot; aria-label=&quot;Search&quot; role=&quot;combobox&quot; aria-expanded=&quot;true&quot; aria-controls=&quot;:c63-Rt:&quot; autoComplete=&quot;off&quot; value=&quot;&quot;/&gt;&lt;/div&gt;&lt;p class=&quot;gb-search-empty&quot; aria-live=&quot;polite&quot;&gt;&lt;/p&gt;&lt;div class=&quot;gb-search-results&quot; id=&quot;:c63-Rt:&quot; role=&quot;listbox&quot; aria-busy=&quot;false&quot;&gt;&lt;/div&gt;&lt;div class=&quot;gb-search-foot&quot; aria-hidden=&quot;true&quot;&gt;&lt;span&gt;↵ open&lt;/span&gt;&lt;span&gt;↑↓ move&lt;/span&gt;&lt;span&gt;esc&lt;/span&gt;&lt;/div&gt;&lt;/dialog&gt;&lt;button type=&quot;button&quot; class=&quot;gb-theme-toggle&quot; aria-label=&quot;Switch to dark mode&quot; title=&quot;Switch to dark mode&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M15.6 12.4A6.2 6.2 0 0 1 7.6 4.4a6.2 6.2 0 1 0 8 8Z&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/button&gt;&lt;a class=&quot;ui-btn ui-btn--primary&quot; href=&quot;#portal&quot;&gt;Sign in&lt;/a&gt;&lt;/div&gt;&lt;/header&gt;&lt;div&gt;&lt;div style=&quot;padding:72px 24px 24px;display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:24px&quot;&gt;&lt;div class=&quot;ui-card&quot;&gt;&lt;b&gt;Have something to say?&lt;/b&gt;&lt;p class=&quot;ui-muted&quot;&gt;Tell us what to build next.&lt;/p&gt;&lt;/div&gt;&lt;section class=&quot;gb-leaderboard&quot; aria-labelledby=&quot;gb-lb-most-helpful-1wqxo9r&quot;&gt;&lt;h2 class=&quot;gb-leaderboard-title&quot; id=&quot;gb-lb-most-helpful-1wqxo9r&quot;&gt;Most helpful&lt;/h2&gt;&lt;p class=&quot;gb-leaderboard-caption&quot;&gt;By votes on their comments.&lt;/p&gt;&lt;ol class=&quot;gb-leaderboard-list&quot;&gt;&lt;li class=&quot;gb-leaderboard-row is-first&quot;&gt;&lt;a href=&quot;#portal&quot; class=&quot;gb-leaderboard-link&quot;&gt;&lt;span class=&quot;gb-leaderboard-rank&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;🥇&lt;/span&gt;&lt;span class=&quot;gb-sr-only&quot;&gt;Rank 1: &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;gb-avatar gb-avatar--24&quot; data-tone=&quot;2&quot; aria-hidden=&quot;true&quot;&gt;LN&lt;/span&gt;&lt;span class=&quot;gb-leaderboard-name&quot;&gt;Lucas Nguyen&lt;/span&gt;&lt;span class=&quot;gb-leaderboard-value&quot;&gt;163&lt;span class=&quot;gb-sr-only&quot;&gt; votes&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;gb-leaderboard-row&quot;&gt;&lt;a href=&quot;#portal&quot; class=&quot;gb-leaderboard-link&quot;&gt;&lt;span class=&quot;gb-leaderboard-rank&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;🥈&lt;/span&gt;&lt;span class=&quot;gb-sr-only&quot;&gt;Rank 2: &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;gb-avatar gb-avatar--24&quot; data-tone=&quot;0&quot; aria-hidden=&quot;true&quot;&gt;DC&lt;/span&gt;&lt;span class=&quot;gb-leaderboard-name&quot;&gt;Dima Chernyshov&lt;/span&gt;&lt;span class=&quot;gb-leaderboard-value&quot;&gt;56&lt;span class=&quot;gb-sr-only&quot;&gt; votes&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;gb-leaderboard-row&quot;&gt;&lt;a href=&quot;#portal&quot; class=&quot;gb-leaderboard-link&quot;&gt;&lt;span class=&quot;gb-leaderboard-rank&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;🥉&lt;/span&gt;&lt;span class=&quot;gb-sr-only&quot;&gt;Rank 3: &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;gb-avatar gb-avatar--24&quot; data-tone=&quot;5&quot; aria-hidden=&quot;true&quot;&gt;AR&lt;/span&gt;&lt;span class=&quot;gb-leaderboard-name&quot;&gt;Artjom&lt;/span&gt;&lt;span class=&quot;gb-leaderboard-value&quot;&gt;55&lt;span class=&quot;gb-sr-only&quot;&gt; votes&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;gb-leaderboard-row&quot;&gt;&lt;a href=&quot;#portal&quot; class=&quot;gb-leaderboard-link&quot;&gt;&lt;span class=&quot;gb-leaderboard-rank is-number&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;gb-sr-only&quot;&gt;Rank 4: &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;gb-avatar gb-avatar--24&quot; data-tone=&quot;4&quot; aria-hidden=&quot;true&quot;&gt;GU&lt;/span&gt;&lt;span class=&quot;gb-leaderboard-name&quot;&gt;GutBrush&lt;/span&gt;&lt;span class=&quot;gb-leaderboard-value&quot;&gt;34&lt;span class=&quot;gb-sr-only&quot;&gt; votes&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;gb-leaderboard-row&quot;&gt;&lt;a href=&quot;#portal&quot; class=&quot;gb-leaderboard-link&quot;&gt;&lt;span class=&quot;gb-leaderboard-rank is-number&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;gb-sr-only&quot;&gt;Rank 5: &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;gb-avatar gb-avatar--24&quot; data-tone=&quot;5&quot; aria-hidden=&quot;true&quot;&gt;WO&lt;/span&gt;&lt;span class=&quot;gb-leaderboard-name&quot;&gt;Wondercraft&lt;/span&gt;&lt;span class=&quot;gb-leaderboard-value&quot;&gt;30&lt;span class=&quot;gb-sr-only&quot;&gt; votes&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/section&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/body&gt;&lt;/html&gt;"></iframe><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div class=&quot;gemboss-platform-shell&quot;&gt;
4198
+ <section id="portal"><h2>Cổng công khai: tab trên topbar, tìm kiếm, sáng / tối, người dẫn đầu</h2><p>Cho bề mặt công khai kiểu bảng Featurebase (GemFeedback) và cộng đồng (GemCommunity). <code>TopbarNav</code> đặt tab mục ngay trên topbar cạnh logo; <code>SearchDialog</code> là popup tìm (⌘K, gõ là ra); <code>ThemeToggle</code> + <code>themeScript</code> bật bảng màu tối (chỉ đổi token, mọi class theo); <code>Avatar</code> ảnh hoặc chữ viết tắt trên một tông lấy theo tên; <code>Leaderboard</code> huy chương 1–3 rồi thứ hạng; <code>Podium</code> ba người đầu.</p><figure class="cat-demo cat-screen"><figcaption>TopbarNav + SearchDialog + ThemeToggle, sáng</figcaption><iframe title="TopbarNav + SearchDialog + ThemeToggle, sáng" style="height:360px" srcdoc="&lt;!doctype html&gt;&lt;html&gt;&lt;head&gt;&lt;meta charset=&quot;utf-8&quot;&gt;&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../gemboss-ui.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/collections.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/reactions.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-engine.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/action-card.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-chat.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/minichart.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/setup-guide.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/sheet.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/settings-dialog.css&quot;&gt;&lt;/head&gt;&lt;body&gt;&lt;div class=&quot;gemboss-platform-shell&quot;&gt;&lt;header class=&quot;gemboss-platform-topbar&quot;&gt;&lt;div class=&quot;gemboss-topbar-start&quot;&gt;&lt;a class=&quot;gb-brand&quot; href=&quot;/&quot; aria-label=&quot;GemFeedback home&quot;&gt;&lt;svg class=&quot;gb-brand-gem&quot; viewBox=&quot;0 0 32 40&quot; width=&quot;20.8&quot; height=&quot;26&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g transform=&quot;translate(0,0.8) scale(0.31)&quot;&gt;&lt;polygon points=&quot;26,14 74,14 66,50 34,50&quot; fill=&quot;#5661F5&quot; fill-opacity=&quot;0.92&quot;&gt;&lt;/polygon&gt;&lt;path d=&quot;M26,14 74,14 96,50 50,110 4,50Z&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;8.75&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M4,50H96M26,14 34,50M74,14 66,50M34,50 50,110M66,50 50,110&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;5.45&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/svg&gt;&lt;span class=&quot;gb-brand-name&quot;&gt;GemFeedback&lt;/span&gt;&lt;/a&gt;&lt;nav class=&quot;gb-topnav&quot; aria-label=&quot;Sections&quot;&gt;&lt;div class=&quot;gb-topnav-row&quot;&gt;&lt;a href=&quot;#portal&quot; class=&quot;gb-topnav-link&quot; aria-current=&quot;page&quot;&gt;Feedback&lt;/a&gt;&lt;a href=&quot;#portal&quot; class=&quot;gb-topnav-link&quot;&gt;Roadmap&lt;/a&gt;&lt;a href=&quot;#portal&quot; class=&quot;gb-topnav-link&quot;&gt;Changelog&lt;/a&gt;&lt;/div&gt;&lt;details class=&quot;gb-topnav-fold&quot;&gt;&lt;summary class=&quot;gb-topnav-link gb-topnav-fold-btn&quot; aria-current=&quot;page&quot;&gt;Feedback&lt;svg class=&quot;gb-topnav-chevron&quot; width=&quot;12&quot; height=&quot;12&quot; viewBox=&quot;0 0 12 12&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;path d=&quot;M3 4.5 6 7.5 9 4.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.6&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/summary&gt;&lt;div class=&quot;gb-topnav-pop gemboss-popover-surface&quot;&gt;&lt;a href=&quot;#portal&quot; class=&quot;gb-topnav-item&quot; aria-current=&quot;page&quot;&gt;Feedback&lt;/a&gt;&lt;a href=&quot;#portal&quot; class=&quot;gb-topnav-item&quot;&gt;Roadmap&lt;/a&gt;&lt;a href=&quot;#portal&quot; class=&quot;gb-topnav-item&quot;&gt;Changelog&lt;/a&gt;&lt;/div&gt;&lt;/details&gt;&lt;/nav&gt;&lt;/div&gt;&lt;div class=&quot;gemboss-topbar-center&quot;&gt;&lt;/div&gt;&lt;div class=&quot;gemboss-topbar-end&quot;&gt;&lt;a class=&quot;gb-search-trigger&quot; href=&quot;#portal&quot; aria-label=&quot;Search&quot; aria-haspopup=&quot;dialog&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;circle cx=&quot;8.8&quot; cy=&quot;8.8&quot; r=&quot;5.3&quot;&gt;&lt;/circle&gt;&lt;path d=&quot;M12.8 12.8 17 17&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/a&gt;&lt;dialog class=&quot;ui-modal gb-search&quot; aria-label=&quot;Search&quot;&gt;&lt;div class=&quot;gb-search-box&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; width=&quot;18&quot; height=&quot;18&quot; class=&quot;gb-search-icon&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;circle cx=&quot;8.8&quot; cy=&quot;8.8&quot; r=&quot;5.3&quot;&gt;&lt;/circle&gt;&lt;path d=&quot;M12.8 12.8 17 17&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/svg&gt;&lt;input class=&quot;gb-search-input&quot; type=&quot;search&quot; placeholder=&quot;Search…&quot; aria-label=&quot;Search&quot; role=&quot;combobox&quot; aria-expanded=&quot;true&quot; aria-controls=&quot;:c65-Rt:&quot; autoComplete=&quot;off&quot; value=&quot;&quot;/&gt;&lt;/div&gt;&lt;p class=&quot;gb-search-empty&quot; aria-live=&quot;polite&quot;&gt;&lt;/p&gt;&lt;div class=&quot;gb-search-results&quot; id=&quot;:c65-Rt:&quot; role=&quot;listbox&quot; aria-busy=&quot;false&quot;&gt;&lt;/div&gt;&lt;div class=&quot;gb-search-foot&quot; aria-hidden=&quot;true&quot;&gt;&lt;span&gt;↵ open&lt;/span&gt;&lt;span&gt;↑↓ move&lt;/span&gt;&lt;span&gt;esc&lt;/span&gt;&lt;/div&gt;&lt;/dialog&gt;&lt;button type=&quot;button&quot; class=&quot;gb-theme-toggle&quot; aria-label=&quot;Switch to dark mode&quot; title=&quot;Switch to dark mode&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M15.6 12.4A6.2 6.2 0 0 1 7.6 4.4a6.2 6.2 0 1 0 8 8Z&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/button&gt;&lt;a class=&quot;ui-btn ui-btn--primary&quot; href=&quot;#portal&quot;&gt;Sign in&lt;/a&gt;&lt;/div&gt;&lt;/header&gt;&lt;div&gt;&lt;div style=&quot;padding:72px 24px 24px;display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:24px&quot;&gt;&lt;div class=&quot;ui-card&quot;&gt;&lt;b&gt;Have something to say?&lt;/b&gt;&lt;p class=&quot;ui-muted&quot;&gt;Tell us what to build next.&lt;/p&gt;&lt;/div&gt;&lt;section class=&quot;gb-leaderboard&quot; aria-labelledby=&quot;gb-lb-most-helpful-1wqxo9r&quot;&gt;&lt;h2 class=&quot;gb-leaderboard-title&quot; id=&quot;gb-lb-most-helpful-1wqxo9r&quot;&gt;Most helpful&lt;/h2&gt;&lt;p class=&quot;gb-leaderboard-caption&quot;&gt;By votes on their comments.&lt;/p&gt;&lt;ol class=&quot;gb-leaderboard-list&quot;&gt;&lt;li class=&quot;gb-leaderboard-row is-first&quot;&gt;&lt;a href=&quot;#portal&quot; class=&quot;gb-leaderboard-link&quot;&gt;&lt;span class=&quot;gb-leaderboard-rank&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;🥇&lt;/span&gt;&lt;span class=&quot;gb-sr-only&quot;&gt;Rank 1: &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;gb-avatar gb-avatar--24&quot; data-tone=&quot;2&quot; aria-hidden=&quot;true&quot;&gt;LN&lt;/span&gt;&lt;span class=&quot;gb-leaderboard-name&quot;&gt;Lucas Nguyen&lt;/span&gt;&lt;span class=&quot;gb-leaderboard-value&quot;&gt;163&lt;span class=&quot;gb-sr-only&quot;&gt; votes&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;gb-leaderboard-row&quot;&gt;&lt;a href=&quot;#portal&quot; class=&quot;gb-leaderboard-link&quot;&gt;&lt;span class=&quot;gb-leaderboard-rank&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;🥈&lt;/span&gt;&lt;span class=&quot;gb-sr-only&quot;&gt;Rank 2: &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;gb-avatar gb-avatar--24&quot; data-tone=&quot;0&quot; aria-hidden=&quot;true&quot;&gt;DC&lt;/span&gt;&lt;span class=&quot;gb-leaderboard-name&quot;&gt;Dima Chernyshov&lt;/span&gt;&lt;span class=&quot;gb-leaderboard-value&quot;&gt;56&lt;span class=&quot;gb-sr-only&quot;&gt; votes&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;gb-leaderboard-row&quot;&gt;&lt;a href=&quot;#portal&quot; class=&quot;gb-leaderboard-link&quot;&gt;&lt;span class=&quot;gb-leaderboard-rank&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;🥉&lt;/span&gt;&lt;span class=&quot;gb-sr-only&quot;&gt;Rank 3: &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;gb-avatar gb-avatar--24&quot; data-tone=&quot;5&quot; aria-hidden=&quot;true&quot;&gt;AR&lt;/span&gt;&lt;span class=&quot;gb-leaderboard-name&quot;&gt;Artjom&lt;/span&gt;&lt;span class=&quot;gb-leaderboard-value&quot;&gt;55&lt;span class=&quot;gb-sr-only&quot;&gt; votes&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;gb-leaderboard-row&quot;&gt;&lt;a href=&quot;#portal&quot; class=&quot;gb-leaderboard-link&quot;&gt;&lt;span class=&quot;gb-leaderboard-rank is-number&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;gb-sr-only&quot;&gt;Rank 4: &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;gb-avatar gb-avatar--24&quot; data-tone=&quot;4&quot; aria-hidden=&quot;true&quot;&gt;GU&lt;/span&gt;&lt;span class=&quot;gb-leaderboard-name&quot;&gt;GutBrush&lt;/span&gt;&lt;span class=&quot;gb-leaderboard-value&quot;&gt;34&lt;span class=&quot;gb-sr-only&quot;&gt; votes&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;gb-leaderboard-row&quot;&gt;&lt;a href=&quot;#portal&quot; class=&quot;gb-leaderboard-link&quot;&gt;&lt;span class=&quot;gb-leaderboard-rank is-number&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;gb-sr-only&quot;&gt;Rank 5: &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;gb-avatar gb-avatar--24&quot; data-tone=&quot;5&quot; aria-hidden=&quot;true&quot;&gt;WO&lt;/span&gt;&lt;span class=&quot;gb-leaderboard-name&quot;&gt;Wondercraft&lt;/span&gt;&lt;span class=&quot;gb-leaderboard-value&quot;&gt;30&lt;span class=&quot;gb-sr-only&quot;&gt; votes&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/section&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/body&gt;&lt;/html&gt;"></iframe><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div class=&quot;gemboss-platform-shell&quot;&gt;
4074
4199
  &lt;header class=&quot;gemboss-platform-topbar&quot;&gt;
4075
4200
  &lt;div class=&quot;gemboss-topbar-start&quot;&gt;
4076
4201
  &lt;a class=&quot;gb-brand&quot; href=&quot;/&quot; aria-label=&quot;GemFeedback home&quot;&gt;
@@ -4129,11 +4254,11 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
4129
4254
  &lt;/path&gt;
4130
4255
  &lt;/g&gt;
4131
4256
  &lt;/svg&gt;
4132
- &lt;input class=&quot;gb-search-input&quot; type=&quot;search&quot; placeholder=&quot;Search…&quot; aria-label=&quot;Search&quot; role=&quot;combobox&quot; aria-expanded=&quot;true&quot; aria-controls=&quot;:c63-Rt:&quot; autoComplete=&quot;off&quot; value=&quot;&quot;/&gt;
4257
+ &lt;input class=&quot;gb-search-input&quot; type=&quot;search&quot; placeholder=&quot;Search…&quot; aria-label=&quot;Search&quot; role=&quot;combobox&quot; aria-expanded=&quot;true&quot; aria-controls=&quot;:c65-Rt:&quot; autoComplete=&quot;off&quot; value=&quot;&quot;/&gt;
4133
4258
  &lt;/div&gt;
4134
4259
  &lt;p class=&quot;gb-search-empty&quot; aria-live=&quot;polite&quot;&gt;
4135
4260
  &lt;/p&gt;
4136
- &lt;div class=&quot;gb-search-results&quot; id=&quot;:c63-Rt:&quot; role=&quot;listbox&quot; aria-busy=&quot;false&quot;&gt;
4261
+ &lt;div class=&quot;gb-search-results&quot; id=&quot;:c65-Rt:&quot; role=&quot;listbox&quot; aria-busy=&quot;false&quot;&gt;
4137
4262
  &lt;/div&gt;
4138
4263
  &lt;div class=&quot;gb-search-foot&quot; aria-hidden=&quot;true&quot;&gt;
4139
4264
  &lt;span&gt;↵ open&lt;/span&gt;
@@ -4226,7 +4351,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
4226
4351
  &lt;/section&gt;
4227
4352
  &lt;/div&gt;
4228
4353
  &lt;/div&gt;
4229
- &lt;/div&gt;</code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>Cùng trang, tối (data-theme=&quot;dark&quot;)</figcaption><iframe title="Cùng trang, tối (data-theme=&quot;dark&quot;)" style="height:360px" srcdoc="&lt;!doctype html&gt;&lt;html data-theme=&quot;dark&quot;&gt;&lt;head&gt;&lt;meta charset=&quot;utf-8&quot;&gt;&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../gemboss-ui.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/collections.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/reactions.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-engine.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/action-card.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-chat.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/minichart.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/setup-guide.css&quot;&gt;&lt;/head&gt;&lt;body&gt;&lt;div class=&quot;gemboss-platform-shell&quot;&gt;&lt;header class=&quot;gemboss-platform-topbar&quot;&gt;&lt;div class=&quot;gemboss-topbar-start&quot;&gt;&lt;a class=&quot;gb-brand&quot; href=&quot;/&quot; aria-label=&quot;GemFeedback home&quot;&gt;&lt;svg class=&quot;gb-brand-gem&quot; viewBox=&quot;0 0 32 40&quot; width=&quot;20.8&quot; height=&quot;26&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g transform=&quot;translate(0,0.8) scale(0.31)&quot;&gt;&lt;polygon points=&quot;26,14 74,14 66,50 34,50&quot; fill=&quot;#5661F5&quot; fill-opacity=&quot;0.92&quot;&gt;&lt;/polygon&gt;&lt;path d=&quot;M26,14 74,14 96,50 50,110 4,50Z&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;8.75&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M4,50H96M26,14 34,50M74,14 66,50M34,50 50,110M66,50 50,110&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;5.45&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/svg&gt;&lt;span class=&quot;gb-brand-name&quot;&gt;GemFeedback&lt;/span&gt;&lt;/a&gt;&lt;nav class=&quot;gb-topnav&quot; aria-label=&quot;Sections&quot;&gt;&lt;div class=&quot;gb-topnav-row&quot;&gt;&lt;a href=&quot;#portal&quot; class=&quot;gb-topnav-link&quot; aria-current=&quot;page&quot;&gt;Feedback&lt;/a&gt;&lt;a href=&quot;#portal&quot; class=&quot;gb-topnav-link&quot;&gt;Roadmap&lt;/a&gt;&lt;a href=&quot;#portal&quot; class=&quot;gb-topnav-link&quot;&gt;Changelog&lt;/a&gt;&lt;/div&gt;&lt;details class=&quot;gb-topnav-fold&quot;&gt;&lt;summary class=&quot;gb-topnav-link gb-topnav-fold-btn&quot; aria-current=&quot;page&quot;&gt;Feedback&lt;svg class=&quot;gb-topnav-chevron&quot; width=&quot;12&quot; height=&quot;12&quot; viewBox=&quot;0 0 12 12&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;path d=&quot;M3 4.5 6 7.5 9 4.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.6&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/summary&gt;&lt;div class=&quot;gb-topnav-pop gemboss-popover-surface&quot;&gt;&lt;a href=&quot;#portal&quot; class=&quot;gb-topnav-item&quot; aria-current=&quot;page&quot;&gt;Feedback&lt;/a&gt;&lt;a href=&quot;#portal&quot; class=&quot;gb-topnav-item&quot;&gt;Roadmap&lt;/a&gt;&lt;a href=&quot;#portal&quot; class=&quot;gb-topnav-item&quot;&gt;Changelog&lt;/a&gt;&lt;/div&gt;&lt;/details&gt;&lt;/nav&gt;&lt;/div&gt;&lt;div class=&quot;gemboss-topbar-center&quot;&gt;&lt;/div&gt;&lt;div class=&quot;gemboss-topbar-end&quot;&gt;&lt;a class=&quot;gb-search-trigger&quot; href=&quot;#portal&quot; aria-label=&quot;Search&quot; aria-haspopup=&quot;dialog&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;circle cx=&quot;8.8&quot; cy=&quot;8.8&quot; r=&quot;5.3&quot;&gt;&lt;/circle&gt;&lt;path d=&quot;M12.8 12.8 17 17&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/a&gt;&lt;dialog class=&quot;ui-modal gb-search&quot; aria-label=&quot;Search&quot;&gt;&lt;div class=&quot;gb-search-box&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; width=&quot;18&quot; height=&quot;18&quot; class=&quot;gb-search-icon&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;circle cx=&quot;8.8&quot; cy=&quot;8.8&quot; r=&quot;5.3&quot;&gt;&lt;/circle&gt;&lt;path d=&quot;M12.8 12.8 17 17&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/svg&gt;&lt;input class=&quot;gb-search-input&quot; type=&quot;search&quot; placeholder=&quot;Search…&quot; aria-label=&quot;Search&quot; role=&quot;combobox&quot; aria-expanded=&quot;true&quot; aria-controls=&quot;:c63-Rt:&quot; autoComplete=&quot;off&quot; value=&quot;&quot;/&gt;&lt;/div&gt;&lt;p class=&quot;gb-search-empty&quot; aria-live=&quot;polite&quot;&gt;&lt;/p&gt;&lt;div class=&quot;gb-search-results&quot; id=&quot;:c63-Rt:&quot; role=&quot;listbox&quot; aria-busy=&quot;false&quot;&gt;&lt;/div&gt;&lt;div class=&quot;gb-search-foot&quot; aria-hidden=&quot;true&quot;&gt;&lt;span&gt;↵ open&lt;/span&gt;&lt;span&gt;↑↓ move&lt;/span&gt;&lt;span&gt;esc&lt;/span&gt;&lt;/div&gt;&lt;/dialog&gt;&lt;button type=&quot;button&quot; class=&quot;gb-theme-toggle&quot; aria-label=&quot;Switch to dark mode&quot; title=&quot;Switch to dark mode&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M15.6 12.4A6.2 6.2 0 0 1 7.6 4.4a6.2 6.2 0 1 0 8 8Z&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/button&gt;&lt;a class=&quot;ui-btn ui-btn--primary&quot; href=&quot;#portal&quot;&gt;Sign in&lt;/a&gt;&lt;/div&gt;&lt;/header&gt;&lt;div&gt;&lt;div style=&quot;padding:72px 24px 24px;display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:24px&quot;&gt;&lt;div class=&quot;ui-card&quot;&gt;&lt;b&gt;Have something to say?&lt;/b&gt;&lt;p class=&quot;ui-muted&quot;&gt;Tell us what to build next.&lt;/p&gt;&lt;/div&gt;&lt;section class=&quot;gb-leaderboard&quot; aria-labelledby=&quot;gb-lb-most-helpful-1wqxo9r&quot;&gt;&lt;h2 class=&quot;gb-leaderboard-title&quot; id=&quot;gb-lb-most-helpful-1wqxo9r&quot;&gt;Most helpful&lt;/h2&gt;&lt;p class=&quot;gb-leaderboard-caption&quot;&gt;By votes on their comments.&lt;/p&gt;&lt;ol class=&quot;gb-leaderboard-list&quot;&gt;&lt;li class=&quot;gb-leaderboard-row is-first&quot;&gt;&lt;a href=&quot;#portal&quot; class=&quot;gb-leaderboard-link&quot;&gt;&lt;span class=&quot;gb-leaderboard-rank&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;🥇&lt;/span&gt;&lt;span class=&quot;gb-sr-only&quot;&gt;Rank 1: &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;gb-avatar gb-avatar--24&quot; data-tone=&quot;2&quot; aria-hidden=&quot;true&quot;&gt;LN&lt;/span&gt;&lt;span class=&quot;gb-leaderboard-name&quot;&gt;Lucas Nguyen&lt;/span&gt;&lt;span class=&quot;gb-leaderboard-value&quot;&gt;163&lt;span class=&quot;gb-sr-only&quot;&gt; votes&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;gb-leaderboard-row&quot;&gt;&lt;a href=&quot;#portal&quot; class=&quot;gb-leaderboard-link&quot;&gt;&lt;span class=&quot;gb-leaderboard-rank&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;🥈&lt;/span&gt;&lt;span class=&quot;gb-sr-only&quot;&gt;Rank 2: &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;gb-avatar gb-avatar--24&quot; data-tone=&quot;0&quot; aria-hidden=&quot;true&quot;&gt;DC&lt;/span&gt;&lt;span class=&quot;gb-leaderboard-name&quot;&gt;Dima Chernyshov&lt;/span&gt;&lt;span class=&quot;gb-leaderboard-value&quot;&gt;56&lt;span class=&quot;gb-sr-only&quot;&gt; votes&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;gb-leaderboard-row&quot;&gt;&lt;a href=&quot;#portal&quot; class=&quot;gb-leaderboard-link&quot;&gt;&lt;span class=&quot;gb-leaderboard-rank&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;🥉&lt;/span&gt;&lt;span class=&quot;gb-sr-only&quot;&gt;Rank 3: &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;gb-avatar gb-avatar--24&quot; data-tone=&quot;5&quot; aria-hidden=&quot;true&quot;&gt;AR&lt;/span&gt;&lt;span class=&quot;gb-leaderboard-name&quot;&gt;Artjom&lt;/span&gt;&lt;span class=&quot;gb-leaderboard-value&quot;&gt;55&lt;span class=&quot;gb-sr-only&quot;&gt; votes&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;gb-leaderboard-row&quot;&gt;&lt;a href=&quot;#portal&quot; class=&quot;gb-leaderboard-link&quot;&gt;&lt;span class=&quot;gb-leaderboard-rank is-number&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;gb-sr-only&quot;&gt;Rank 4: &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;gb-avatar gb-avatar--24&quot; data-tone=&quot;4&quot; aria-hidden=&quot;true&quot;&gt;GU&lt;/span&gt;&lt;span class=&quot;gb-leaderboard-name&quot;&gt;GutBrush&lt;/span&gt;&lt;span class=&quot;gb-leaderboard-value&quot;&gt;34&lt;span class=&quot;gb-sr-only&quot;&gt; votes&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;gb-leaderboard-row&quot;&gt;&lt;a href=&quot;#portal&quot; class=&quot;gb-leaderboard-link&quot;&gt;&lt;span class=&quot;gb-leaderboard-rank is-number&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;gb-sr-only&quot;&gt;Rank 5: &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;gb-avatar gb-avatar--24&quot; data-tone=&quot;5&quot; aria-hidden=&quot;true&quot;&gt;WO&lt;/span&gt;&lt;span class=&quot;gb-leaderboard-name&quot;&gt;Wondercraft&lt;/span&gt;&lt;span class=&quot;gb-leaderboard-value&quot;&gt;30&lt;span class=&quot;gb-sr-only&quot;&gt; votes&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/section&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/body&gt;&lt;/html&gt;"></iframe><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div class=&quot;gemboss-platform-shell&quot;&gt;
4354
+ &lt;/div&gt;</code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>Cùng trang, tối (data-theme=&quot;dark&quot;)</figcaption><iframe title="Cùng trang, tối (data-theme=&quot;dark&quot;)" style="height:360px" srcdoc="&lt;!doctype html&gt;&lt;html data-theme=&quot;dark&quot;&gt;&lt;head&gt;&lt;meta charset=&quot;utf-8&quot;&gt;&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../gemboss-ui.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/collections.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/reactions.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-engine.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/action-card.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-chat.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/minichart.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/setup-guide.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/sheet.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/settings-dialog.css&quot;&gt;&lt;/head&gt;&lt;body&gt;&lt;div class=&quot;gemboss-platform-shell&quot;&gt;&lt;header class=&quot;gemboss-platform-topbar&quot;&gt;&lt;div class=&quot;gemboss-topbar-start&quot;&gt;&lt;a class=&quot;gb-brand&quot; href=&quot;/&quot; aria-label=&quot;GemFeedback home&quot;&gt;&lt;svg class=&quot;gb-brand-gem&quot; viewBox=&quot;0 0 32 40&quot; width=&quot;20.8&quot; height=&quot;26&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g transform=&quot;translate(0,0.8) scale(0.31)&quot;&gt;&lt;polygon points=&quot;26,14 74,14 66,50 34,50&quot; fill=&quot;#5661F5&quot; fill-opacity=&quot;0.92&quot;&gt;&lt;/polygon&gt;&lt;path d=&quot;M26,14 74,14 96,50 50,110 4,50Z&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;8.75&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M4,50H96M26,14 34,50M74,14 66,50M34,50 50,110M66,50 50,110&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;5.45&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/svg&gt;&lt;span class=&quot;gb-brand-name&quot;&gt;GemFeedback&lt;/span&gt;&lt;/a&gt;&lt;nav class=&quot;gb-topnav&quot; aria-label=&quot;Sections&quot;&gt;&lt;div class=&quot;gb-topnav-row&quot;&gt;&lt;a href=&quot;#portal&quot; class=&quot;gb-topnav-link&quot; aria-current=&quot;page&quot;&gt;Feedback&lt;/a&gt;&lt;a href=&quot;#portal&quot; class=&quot;gb-topnav-link&quot;&gt;Roadmap&lt;/a&gt;&lt;a href=&quot;#portal&quot; class=&quot;gb-topnav-link&quot;&gt;Changelog&lt;/a&gt;&lt;/div&gt;&lt;details class=&quot;gb-topnav-fold&quot;&gt;&lt;summary class=&quot;gb-topnav-link gb-topnav-fold-btn&quot; aria-current=&quot;page&quot;&gt;Feedback&lt;svg class=&quot;gb-topnav-chevron&quot; width=&quot;12&quot; height=&quot;12&quot; viewBox=&quot;0 0 12 12&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;path d=&quot;M3 4.5 6 7.5 9 4.5&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.6&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/summary&gt;&lt;div class=&quot;gb-topnav-pop gemboss-popover-surface&quot;&gt;&lt;a href=&quot;#portal&quot; class=&quot;gb-topnav-item&quot; aria-current=&quot;page&quot;&gt;Feedback&lt;/a&gt;&lt;a href=&quot;#portal&quot; class=&quot;gb-topnav-item&quot;&gt;Roadmap&lt;/a&gt;&lt;a href=&quot;#portal&quot; class=&quot;gb-topnav-item&quot;&gt;Changelog&lt;/a&gt;&lt;/div&gt;&lt;/details&gt;&lt;/nav&gt;&lt;/div&gt;&lt;div class=&quot;gemboss-topbar-center&quot;&gt;&lt;/div&gt;&lt;div class=&quot;gemboss-topbar-end&quot;&gt;&lt;a class=&quot;gb-search-trigger&quot; href=&quot;#portal&quot; aria-label=&quot;Search&quot; aria-haspopup=&quot;dialog&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;circle cx=&quot;8.8&quot; cy=&quot;8.8&quot; r=&quot;5.3&quot;&gt;&lt;/circle&gt;&lt;path d=&quot;M12.8 12.8 17 17&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/a&gt;&lt;dialog class=&quot;ui-modal gb-search&quot; aria-label=&quot;Search&quot;&gt;&lt;div class=&quot;gb-search-box&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; width=&quot;18&quot; height=&quot;18&quot; class=&quot;gb-search-icon&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;circle cx=&quot;8.8&quot; cy=&quot;8.8&quot; r=&quot;5.3&quot;&gt;&lt;/circle&gt;&lt;path d=&quot;M12.8 12.8 17 17&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/svg&gt;&lt;input class=&quot;gb-search-input&quot; type=&quot;search&quot; placeholder=&quot;Search…&quot; aria-label=&quot;Search&quot; role=&quot;combobox&quot; aria-expanded=&quot;true&quot; aria-controls=&quot;:c65-Rt:&quot; autoComplete=&quot;off&quot; value=&quot;&quot;/&gt;&lt;/div&gt;&lt;p class=&quot;gb-search-empty&quot; aria-live=&quot;polite&quot;&gt;&lt;/p&gt;&lt;div class=&quot;gb-search-results&quot; id=&quot;:c65-Rt:&quot; role=&quot;listbox&quot; aria-busy=&quot;false&quot;&gt;&lt;/div&gt;&lt;div class=&quot;gb-search-foot&quot; aria-hidden=&quot;true&quot;&gt;&lt;span&gt;↵ open&lt;/span&gt;&lt;span&gt;↑↓ move&lt;/span&gt;&lt;span&gt;esc&lt;/span&gt;&lt;/div&gt;&lt;/dialog&gt;&lt;button type=&quot;button&quot; class=&quot;gb-theme-toggle&quot; aria-label=&quot;Switch to dark mode&quot; title=&quot;Switch to dark mode&quot;&gt;&lt;svg viewBox=&quot;0 0 20 20&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;g fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;path d=&quot;M15.6 12.4A6.2 6.2 0 0 1 7.6 4.4a6.2 6.2 0 1 0 8 8Z&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/button&gt;&lt;a class=&quot;ui-btn ui-btn--primary&quot; href=&quot;#portal&quot;&gt;Sign in&lt;/a&gt;&lt;/div&gt;&lt;/header&gt;&lt;div&gt;&lt;div style=&quot;padding:72px 24px 24px;display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:24px&quot;&gt;&lt;div class=&quot;ui-card&quot;&gt;&lt;b&gt;Have something to say?&lt;/b&gt;&lt;p class=&quot;ui-muted&quot;&gt;Tell us what to build next.&lt;/p&gt;&lt;/div&gt;&lt;section class=&quot;gb-leaderboard&quot; aria-labelledby=&quot;gb-lb-most-helpful-1wqxo9r&quot;&gt;&lt;h2 class=&quot;gb-leaderboard-title&quot; id=&quot;gb-lb-most-helpful-1wqxo9r&quot;&gt;Most helpful&lt;/h2&gt;&lt;p class=&quot;gb-leaderboard-caption&quot;&gt;By votes on their comments.&lt;/p&gt;&lt;ol class=&quot;gb-leaderboard-list&quot;&gt;&lt;li class=&quot;gb-leaderboard-row is-first&quot;&gt;&lt;a href=&quot;#portal&quot; class=&quot;gb-leaderboard-link&quot;&gt;&lt;span class=&quot;gb-leaderboard-rank&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;🥇&lt;/span&gt;&lt;span class=&quot;gb-sr-only&quot;&gt;Rank 1: &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;gb-avatar gb-avatar--24&quot; data-tone=&quot;2&quot; aria-hidden=&quot;true&quot;&gt;LN&lt;/span&gt;&lt;span class=&quot;gb-leaderboard-name&quot;&gt;Lucas Nguyen&lt;/span&gt;&lt;span class=&quot;gb-leaderboard-value&quot;&gt;163&lt;span class=&quot;gb-sr-only&quot;&gt; votes&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;gb-leaderboard-row&quot;&gt;&lt;a href=&quot;#portal&quot; class=&quot;gb-leaderboard-link&quot;&gt;&lt;span class=&quot;gb-leaderboard-rank&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;🥈&lt;/span&gt;&lt;span class=&quot;gb-sr-only&quot;&gt;Rank 2: &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;gb-avatar gb-avatar--24&quot; data-tone=&quot;0&quot; aria-hidden=&quot;true&quot;&gt;DC&lt;/span&gt;&lt;span class=&quot;gb-leaderboard-name&quot;&gt;Dima Chernyshov&lt;/span&gt;&lt;span class=&quot;gb-leaderboard-value&quot;&gt;56&lt;span class=&quot;gb-sr-only&quot;&gt; votes&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;gb-leaderboard-row&quot;&gt;&lt;a href=&quot;#portal&quot; class=&quot;gb-leaderboard-link&quot;&gt;&lt;span class=&quot;gb-leaderboard-rank&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;🥉&lt;/span&gt;&lt;span class=&quot;gb-sr-only&quot;&gt;Rank 3: &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;gb-avatar gb-avatar--24&quot; data-tone=&quot;5&quot; aria-hidden=&quot;true&quot;&gt;AR&lt;/span&gt;&lt;span class=&quot;gb-leaderboard-name&quot;&gt;Artjom&lt;/span&gt;&lt;span class=&quot;gb-leaderboard-value&quot;&gt;55&lt;span class=&quot;gb-sr-only&quot;&gt; votes&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;gb-leaderboard-row&quot;&gt;&lt;a href=&quot;#portal&quot; class=&quot;gb-leaderboard-link&quot;&gt;&lt;span class=&quot;gb-leaderboard-rank is-number&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;4&lt;/span&gt;&lt;span class=&quot;gb-sr-only&quot;&gt;Rank 4: &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;gb-avatar gb-avatar--24&quot; data-tone=&quot;4&quot; aria-hidden=&quot;true&quot;&gt;GU&lt;/span&gt;&lt;span class=&quot;gb-leaderboard-name&quot;&gt;GutBrush&lt;/span&gt;&lt;span class=&quot;gb-leaderboard-value&quot;&gt;34&lt;span class=&quot;gb-sr-only&quot;&gt; votes&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;gb-leaderboard-row&quot;&gt;&lt;a href=&quot;#portal&quot; class=&quot;gb-leaderboard-link&quot;&gt;&lt;span class=&quot;gb-leaderboard-rank is-number&quot;&gt;&lt;span aria-hidden=&quot;true&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;gb-sr-only&quot;&gt;Rank 5: &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;gb-avatar gb-avatar--24&quot; data-tone=&quot;5&quot; aria-hidden=&quot;true&quot;&gt;WO&lt;/span&gt;&lt;span class=&quot;gb-leaderboard-name&quot;&gt;Wondercraft&lt;/span&gt;&lt;span class=&quot;gb-leaderboard-value&quot;&gt;30&lt;span class=&quot;gb-sr-only&quot;&gt; votes&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/section&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/body&gt;&lt;/html&gt;"></iframe><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div class=&quot;gemboss-platform-shell&quot;&gt;
4230
4355
  &lt;header class=&quot;gemboss-platform-topbar&quot;&gt;
4231
4356
  &lt;div class=&quot;gemboss-topbar-start&quot;&gt;
4232
4357
  &lt;a class=&quot;gb-brand&quot; href=&quot;/&quot; aria-label=&quot;GemFeedback home&quot;&gt;
@@ -4285,11 +4410,11 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
4285
4410
  &lt;/path&gt;
4286
4411
  &lt;/g&gt;
4287
4412
  &lt;/svg&gt;
4288
- &lt;input class=&quot;gb-search-input&quot; type=&quot;search&quot; placeholder=&quot;Search…&quot; aria-label=&quot;Search&quot; role=&quot;combobox&quot; aria-expanded=&quot;true&quot; aria-controls=&quot;:c63-Rt:&quot; autoComplete=&quot;off&quot; value=&quot;&quot;/&gt;
4413
+ &lt;input class=&quot;gb-search-input&quot; type=&quot;search&quot; placeholder=&quot;Search…&quot; aria-label=&quot;Search&quot; role=&quot;combobox&quot; aria-expanded=&quot;true&quot; aria-controls=&quot;:c65-Rt:&quot; autoComplete=&quot;off&quot; value=&quot;&quot;/&gt;
4289
4414
  &lt;/div&gt;
4290
4415
  &lt;p class=&quot;gb-search-empty&quot; aria-live=&quot;polite&quot;&gt;
4291
4416
  &lt;/p&gt;
4292
- &lt;div class=&quot;gb-search-results&quot; id=&quot;:c63-Rt:&quot; role=&quot;listbox&quot; aria-busy=&quot;false&quot;&gt;
4417
+ &lt;div class=&quot;gb-search-results&quot; id=&quot;:c65-Rt:&quot; role=&quot;listbox&quot; aria-busy=&quot;false&quot;&gt;
4293
4418
  &lt;/div&gt;
4294
4419
  &lt;div class=&quot;gb-search-foot&quot; aria-hidden=&quot;true&quot;&gt;
4295
4420
  &lt;span&gt;↵ open&lt;/span&gt;
@@ -4486,7 +4611,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
4486
4611
  &lt;/a&gt;
4487
4612
  &lt;/li&gt;
4488
4613
  &lt;/ol&gt;</code></pre></details></figure></section>
4489
- <section id="auth"><h2>Đăng nhập</h2><p><code>backdrop</code> (0.30.0) chọn nền của panel thương hiệu: <code>"facet"</code> (mặc định, đường cắt của viên gem), <code>"grid"</code> (lưới iris mờ dần từ góc trên trái, nền của trang đăng nhập gemform), <code>"none"</code>. Panel chỉ hiện khi khung rộng 900 VÀ cao 520; hai khung dưới vẽ ở 1280.</p><figure class="cat-demo cat-screen"><figcaption>AuthLayout + PasswordField (backdrop mặc định: facet)</figcaption><div class="cat-wide"><iframe title="AuthLayout + PasswordField (backdrop mặc định: facet)" style="height:620px;width:1280px" srcdoc="&lt;!doctype html&gt;&lt;html&gt;&lt;head&gt;&lt;meta charset=&quot;utf-8&quot;&gt;&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../gemboss-ui.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/collections.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/reactions.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-engine.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/action-card.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-chat.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/minichart.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/setup-guide.css&quot;&gt;&lt;/head&gt;&lt;body&gt;&lt;main class=&quot;gb-auth&quot;&gt;&lt;div class=&quot;gb-auth-split&quot;&gt;&lt;div class=&quot;gb-auth-stage&quot;&gt;&lt;div class=&quot;gb-auth-card&quot;&gt;&lt;header class=&quot;gb-auth-header&quot;&gt;&lt;span class=&quot;gb-auth-mark&quot; aria-hidden=&quot;true&quot;&gt;&lt;svg viewBox=&quot;0 0 32 32&quot; width=&quot;56&quot; height=&quot;56&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;rect width=&quot;32&quot; height=&quot;32&quot; rx=&quot;7&quot; style=&quot;fill:var(--gb-mark-bg)&quot;&gt;&lt;/rect&gt;&lt;g transform=&quot;translate(16,16) scale(0.24) translate(-50,-62)&quot;&gt;&lt;polygon points=&quot;26,14 74,14 66,50 34,50&quot; fill=&quot;#8a93ff&quot;&gt;&lt;/polygon&gt;&lt;path d=&quot;M26,14 74,14 96,50 50,110 4,50Z&quot; fill=&quot;none&quot; stroke=&quot;#f4f4f2&quot; stroke-width=&quot;5&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M4,50H96M26,14 34,50M74,14 66,50M34,50 50,110M66,50 50,110&quot; fill=&quot;none&quot; stroke=&quot;#f4f4f2&quot; stroke-opacity=&quot;0.72&quot; stroke-width=&quot;3&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/span&gt;&lt;h1&gt;GemFactory&lt;/h1&gt;&lt;p&gt;Kho section của GemBoss&lt;/p&gt;&lt;/header&gt;&lt;form class=&quot;gb-auth-form&quot; method=&quot;post&quot; action=&quot;#&quot;&gt;&lt;div class=&quot;gb-auth-field&quot;&gt;&lt;label for=&quot;pw&quot;&gt;Mật khẩu&lt;/label&gt;&lt;div class=&quot;gb-auth-pw&quot;&gt;&lt;input class=&quot;gb-auth-input&quot; id=&quot;pw&quot; type=&quot;password&quot;/&gt;&lt;button type=&quot;button&quot; aria-controls=&quot;pw&quot; aria-label=&quot;Hiện&quot; title=&quot;Hiện&quot; data-label-show=&quot;Hiện&quot; data-label-hide=&quot;Ẩn&quot; class=&quot;gb-auth-pw-toggle&quot;&gt;&lt;svg width=&quot;18&quot; height=&quot;18&quot; viewBox=&quot;0 0 20 20&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.6&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;path d=&quot;M1.5 10S4.6 4.5 10 4.5 18.5 10 18.5 10 15.4 15.5 10 15.5 1.5 10 1.5 10Z&quot;&gt;&lt;/path&gt;&lt;circle cx=&quot;10&quot; cy=&quot;10&quot; r=&quot;2.6&quot;&gt;&lt;/circle&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;/div&gt;&lt;button type=&quot;submit&quot; class=&quot;gb-auth-submit&quot;&gt;Đăng nhập&lt;/button&gt;&lt;/form&gt;&lt;/div&gt;&lt;/div&gt;&lt;aside class=&quot;gb-auth-panel&quot;&gt;&lt;div class=&quot;gb-auth-panel-in&quot;&gt;&lt;p class=&quot;gb-auth-eyebrow&quot;&gt;GemBoss&lt;/p&gt;&lt;h2 class=&quot;gb-auth-panel-h&quot;&gt;Một ngôn ngữ thiết kế cho mọi công cụ&lt;/h2&gt;&lt;p class=&quot;gb-auth-panel-p&quot;&gt;Đăng nhập bằng mật khẩu đội đã gửi riêng.&lt;/p&gt;&lt;/div&gt;&lt;/aside&gt;&lt;/div&gt;&lt;/main&gt;&lt;/body&gt;&lt;/html&gt;"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;main class=&quot;gb-auth&quot;&gt;
4614
+ <section id="auth"><h2>Đăng nhập</h2><p><code>backdrop</code> (0.30.0) chọn nền của panel thương hiệu: <code>"facet"</code> (mặc định, đường cắt của viên gem), <code>"grid"</code> (lưới iris mờ dần từ góc trên trái, nền của trang đăng nhập gemform), <code>"none"</code>. Panel chỉ hiện khi khung rộng 900 VÀ cao 520; hai khung dưới vẽ ở 1280.</p><figure class="cat-demo cat-screen"><figcaption>AuthLayout + PasswordField (backdrop mặc định: facet)</figcaption><div class="cat-wide"><iframe title="AuthLayout + PasswordField (backdrop mặc định: facet)" style="height:620px;width:1280px" srcdoc="&lt;!doctype html&gt;&lt;html&gt;&lt;head&gt;&lt;meta charset=&quot;utf-8&quot;&gt;&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../gemboss-ui.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/collections.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/reactions.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-engine.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/action-card.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-chat.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/minichart.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/setup-guide.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/sheet.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/settings-dialog.css&quot;&gt;&lt;/head&gt;&lt;body&gt;&lt;main class=&quot;gb-auth&quot;&gt;&lt;div class=&quot;gb-auth-split&quot;&gt;&lt;div class=&quot;gb-auth-stage&quot;&gt;&lt;div class=&quot;gb-auth-card&quot;&gt;&lt;header class=&quot;gb-auth-header&quot;&gt;&lt;span class=&quot;gb-auth-mark&quot; aria-hidden=&quot;true&quot;&gt;&lt;svg viewBox=&quot;0 0 32 32&quot; width=&quot;56&quot; height=&quot;56&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;rect width=&quot;32&quot; height=&quot;32&quot; rx=&quot;7&quot; style=&quot;fill:var(--gb-mark-bg)&quot;&gt;&lt;/rect&gt;&lt;g transform=&quot;translate(16,16) scale(0.24) translate(-50,-62)&quot;&gt;&lt;polygon points=&quot;26,14 74,14 66,50 34,50&quot; fill=&quot;#8a93ff&quot;&gt;&lt;/polygon&gt;&lt;path d=&quot;M26,14 74,14 96,50 50,110 4,50Z&quot; fill=&quot;none&quot; stroke=&quot;#f4f4f2&quot; stroke-width=&quot;5&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M4,50H96M26,14 34,50M74,14 66,50M34,50 50,110M66,50 50,110&quot; fill=&quot;none&quot; stroke=&quot;#f4f4f2&quot; stroke-opacity=&quot;0.72&quot; stroke-width=&quot;3&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/span&gt;&lt;h1&gt;GemFactory&lt;/h1&gt;&lt;p&gt;Kho section của GemBoss&lt;/p&gt;&lt;/header&gt;&lt;form class=&quot;gb-auth-form&quot; method=&quot;post&quot; action=&quot;#&quot;&gt;&lt;div class=&quot;gb-auth-field&quot;&gt;&lt;label for=&quot;pw&quot;&gt;Mật khẩu&lt;/label&gt;&lt;div class=&quot;gb-auth-pw&quot;&gt;&lt;input class=&quot;gb-auth-input&quot; id=&quot;pw&quot; type=&quot;password&quot;/&gt;&lt;button type=&quot;button&quot; aria-controls=&quot;pw&quot; aria-label=&quot;Hiện&quot; title=&quot;Hiện&quot; data-label-show=&quot;Hiện&quot; data-label-hide=&quot;Ẩn&quot; class=&quot;gb-auth-pw-toggle&quot;&gt;&lt;svg width=&quot;18&quot; height=&quot;18&quot; viewBox=&quot;0 0 20 20&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.6&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;path d=&quot;M1.5 10S4.6 4.5 10 4.5 18.5 10 18.5 10 15.4 15.5 10 15.5 1.5 10 1.5 10Z&quot;&gt;&lt;/path&gt;&lt;circle cx=&quot;10&quot; cy=&quot;10&quot; r=&quot;2.6&quot;&gt;&lt;/circle&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;/div&gt;&lt;button type=&quot;submit&quot; class=&quot;gb-auth-submit&quot;&gt;Đăng nhập&lt;/button&gt;&lt;/form&gt;&lt;/div&gt;&lt;/div&gt;&lt;aside class=&quot;gb-auth-panel&quot;&gt;&lt;div class=&quot;gb-auth-panel-in&quot;&gt;&lt;p class=&quot;gb-auth-eyebrow&quot;&gt;GemBoss&lt;/p&gt;&lt;h2 class=&quot;gb-auth-panel-h&quot;&gt;Một ngôn ngữ thiết kế cho mọi công cụ&lt;/h2&gt;&lt;p class=&quot;gb-auth-panel-p&quot;&gt;Đăng nhập bằng mật khẩu đội đã gửi riêng.&lt;/p&gt;&lt;/div&gt;&lt;/aside&gt;&lt;/div&gt;&lt;/main&gt;&lt;/body&gt;&lt;/html&gt;"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;main class=&quot;gb-auth&quot;&gt;
4490
4615
  &lt;div class=&quot;gb-auth-split&quot;&gt;
4491
4616
  &lt;div class=&quot;gb-auth-stage&quot;&gt;
4492
4617
  &lt;div class=&quot;gb-auth-card&quot;&gt;
@@ -4535,7 +4660,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
4535
4660
  &lt;/div&gt;
4536
4661
  &lt;/aside&gt;
4537
4662
  &lt;/div&gt;
4538
- &lt;/main&gt;</code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>backdrop=&quot;grid&quot;</figcaption><div class="cat-wide"><iframe title="backdrop=&quot;grid&quot;" style="height:620px;width:1280px" srcdoc="&lt;!doctype html&gt;&lt;html&gt;&lt;head&gt;&lt;meta charset=&quot;utf-8&quot;&gt;&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../gemboss-ui.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/collections.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/reactions.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-engine.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/action-card.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-chat.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/minichart.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/setup-guide.css&quot;&gt;&lt;/head&gt;&lt;body&gt;&lt;main class=&quot;gb-auth&quot;&gt;&lt;div class=&quot;gb-auth-split&quot;&gt;&lt;div class=&quot;gb-auth-stage&quot;&gt;&lt;div class=&quot;gb-auth-card&quot;&gt;&lt;header class=&quot;gb-auth-header&quot;&gt;&lt;span class=&quot;gb-auth-mark&quot; aria-hidden=&quot;true&quot;&gt;&lt;svg viewBox=&quot;0 0 32 32&quot; width=&quot;56&quot; height=&quot;56&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;rect width=&quot;32&quot; height=&quot;32&quot; rx=&quot;7&quot; style=&quot;fill:var(--gb-mark-bg)&quot;&gt;&lt;/rect&gt;&lt;g transform=&quot;translate(16,16) scale(0.24) translate(-50,-62)&quot;&gt;&lt;polygon points=&quot;26,14 74,14 66,50 34,50&quot; fill=&quot;#8a93ff&quot;&gt;&lt;/polygon&gt;&lt;path d=&quot;M26,14 74,14 96,50 50,110 4,50Z&quot; fill=&quot;none&quot; stroke=&quot;#f4f4f2&quot; stroke-width=&quot;5&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M4,50H96M26,14 34,50M74,14 66,50M34,50 50,110M66,50 50,110&quot; fill=&quot;none&quot; stroke=&quot;#f4f4f2&quot; stroke-opacity=&quot;0.72&quot; stroke-width=&quot;3&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/span&gt;&lt;h1&gt;gemform&lt;/h1&gt;&lt;p&gt;GemBoss Ops · internal tool&lt;/p&gt;&lt;/header&gt;&lt;form class=&quot;gb-auth-form&quot; method=&quot;post&quot; action=&quot;#&quot;&gt;&lt;div class=&quot;gb-auth-field&quot;&gt;&lt;label for=&quot;pw2&quot;&gt;Password&lt;/label&gt;&lt;div class=&quot;gb-auth-pw&quot;&gt;&lt;input class=&quot;gb-auth-input&quot; id=&quot;pw2&quot; type=&quot;password&quot;/&gt;&lt;button type=&quot;button&quot; aria-controls=&quot;pw2&quot; aria-label=&quot;Show password&quot; title=&quot;Show password&quot; data-label-show=&quot;Show password&quot; data-label-hide=&quot;Hide password&quot; class=&quot;gb-auth-pw-toggle&quot;&gt;&lt;svg width=&quot;18&quot; height=&quot;18&quot; viewBox=&quot;0 0 20 20&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.6&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;path d=&quot;M1.5 10S4.6 4.5 10 4.5 18.5 10 18.5 10 15.4 15.5 10 15.5 1.5 10 1.5 10Z&quot;&gt;&lt;/path&gt;&lt;circle cx=&quot;10&quot; cy=&quot;10&quot; r=&quot;2.6&quot;&gt;&lt;/circle&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;/div&gt;&lt;button type=&quot;submit&quot; class=&quot;gb-auth-submit&quot;&gt;Sign in&lt;/button&gt;&lt;/form&gt;&lt;/div&gt;&lt;/div&gt;&lt;aside class=&quot;gb-auth-panel gb-auth-panel--grid&quot;&gt;&lt;div class=&quot;gb-auth-panel-in&quot;&gt;&lt;p class=&quot;gb-auth-eyebrow&quot;&gt;gemform · GemBoss Ops&lt;/p&gt;&lt;h2 class=&quot;gb-auth-panel-h&quot;&gt;Every Gem registration, in one place.&lt;/h2&gt;&lt;p class=&quot;gb-auth-panel-p&quot;&gt;Coffee chats, demo requests and workshop sign-ups from every Gem site, with a Telegram ping the moment one lands.&lt;/p&gt;&lt;/div&gt;&lt;/aside&gt;&lt;/div&gt;&lt;/main&gt;&lt;/body&gt;&lt;/html&gt;"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;main class=&quot;gb-auth&quot;&gt;
4663
+ &lt;/main&gt;</code></pre></details></figure><figure class="cat-demo cat-screen"><figcaption>backdrop=&quot;grid&quot;</figcaption><div class="cat-wide"><iframe title="backdrop=&quot;grid&quot;" style="height:620px;width:1280px" srcdoc="&lt;!doctype html&gt;&lt;html&gt;&lt;head&gt;&lt;meta charset=&quot;utf-8&quot;&gt;&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../gemboss-ui.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/collections.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/reactions.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-engine.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/action-card.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/assistant-chat.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/minichart.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/setup-guide.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/sheet.css&quot;&gt;&lt;link rel=&quot;stylesheet&quot; href=&quot;../src/settings-dialog.css&quot;&gt;&lt;/head&gt;&lt;body&gt;&lt;main class=&quot;gb-auth&quot;&gt;&lt;div class=&quot;gb-auth-split&quot;&gt;&lt;div class=&quot;gb-auth-stage&quot;&gt;&lt;div class=&quot;gb-auth-card&quot;&gt;&lt;header class=&quot;gb-auth-header&quot;&gt;&lt;span class=&quot;gb-auth-mark&quot; aria-hidden=&quot;true&quot;&gt;&lt;svg viewBox=&quot;0 0 32 32&quot; width=&quot;56&quot; height=&quot;56&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;rect width=&quot;32&quot; height=&quot;32&quot; rx=&quot;7&quot; style=&quot;fill:var(--gb-mark-bg)&quot;&gt;&lt;/rect&gt;&lt;g transform=&quot;translate(16,16) scale(0.24) translate(-50,-62)&quot;&gt;&lt;polygon points=&quot;26,14 74,14 66,50 34,50&quot; fill=&quot;#8a93ff&quot;&gt;&lt;/polygon&gt;&lt;path d=&quot;M26,14 74,14 96,50 50,110 4,50Z&quot; fill=&quot;none&quot; stroke=&quot;#f4f4f2&quot; stroke-width=&quot;5&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M4,50H96M26,14 34,50M74,14 66,50M34,50 50,110M66,50 50,110&quot; fill=&quot;none&quot; stroke=&quot;#f4f4f2&quot; stroke-opacity=&quot;0.72&quot; stroke-width=&quot;3&quot; stroke-linejoin=&quot;round&quot;&gt;&lt;/path&gt;&lt;/g&gt;&lt;/svg&gt;&lt;/span&gt;&lt;h1&gt;gemform&lt;/h1&gt;&lt;p&gt;GemBoss Ops · internal tool&lt;/p&gt;&lt;/header&gt;&lt;form class=&quot;gb-auth-form&quot; method=&quot;post&quot; action=&quot;#&quot;&gt;&lt;div class=&quot;gb-auth-field&quot;&gt;&lt;label for=&quot;pw2&quot;&gt;Password&lt;/label&gt;&lt;div class=&quot;gb-auth-pw&quot;&gt;&lt;input class=&quot;gb-auth-input&quot; id=&quot;pw2&quot; type=&quot;password&quot;/&gt;&lt;button type=&quot;button&quot; aria-controls=&quot;pw2&quot; aria-label=&quot;Show password&quot; title=&quot;Show password&quot; data-label-show=&quot;Show password&quot; data-label-hide=&quot;Hide password&quot; class=&quot;gb-auth-pw-toggle&quot;&gt;&lt;svg width=&quot;18&quot; height=&quot;18&quot; viewBox=&quot;0 0 20 20&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;1.6&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot;&gt;&lt;path d=&quot;M1.5 10S4.6 4.5 10 4.5 18.5 10 18.5 10 15.4 15.5 10 15.5 1.5 10 1.5 10Z&quot;&gt;&lt;/path&gt;&lt;circle cx=&quot;10&quot; cy=&quot;10&quot; r=&quot;2.6&quot;&gt;&lt;/circle&gt;&lt;/svg&gt;&lt;/button&gt;&lt;/div&gt;&lt;/div&gt;&lt;button type=&quot;submit&quot; class=&quot;gb-auth-submit&quot;&gt;Sign in&lt;/button&gt;&lt;/form&gt;&lt;/div&gt;&lt;/div&gt;&lt;aside class=&quot;gb-auth-panel gb-auth-panel--grid&quot;&gt;&lt;div class=&quot;gb-auth-panel-in&quot;&gt;&lt;p class=&quot;gb-auth-eyebrow&quot;&gt;gemform · GemBoss Ops&lt;/p&gt;&lt;h2 class=&quot;gb-auth-panel-h&quot;&gt;Every Gem registration, in one place.&lt;/h2&gt;&lt;p class=&quot;gb-auth-panel-p&quot;&gt;Coffee chats, demo requests and workshop sign-ups from every Gem site, with a Telegram ping the moment one lands.&lt;/p&gt;&lt;/div&gt;&lt;/aside&gt;&lt;/div&gt;&lt;/main&gt;&lt;/body&gt;&lt;/html&gt;"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;main class=&quot;gb-auth&quot;&gt;
4539
4664
  &lt;div class=&quot;gb-auth-split&quot;&gt;
4540
4665
  &lt;div class=&quot;gb-auth-stage&quot;&gt;
4541
4666
  &lt;div class=&quot;gb-auth-card&quot;&gt;
@@ -4585,7 +4710,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
4585
4710
  &lt;/aside&gt;
4586
4711
  &lt;/div&gt;
4587
4712
  &lt;/main&gt;</code></pre></details></figure></section>
4588
- <section id="setup"><h2>Hướng dẫn thiết lập</h2><p><code>SetupGuide</code> (0.30.0, CSS <code>setup-guide.css</code> do component tự nạp): Setup guide của admin (StoreChecklistCard) thành component. Đầu thẻ có số đã xong và thanh; các bước gập, bước mở là bước đầu chưa xong; bấm đầu thẻ để gập cả hướng dẫn. Toàn <code>&lt;details&gt;</code>, một nhóm <code>name</code> nên trình duyệt giữ một bước mở, không cần script: trang HTML thuần viết đúng markup này là chạy.</p><figure class="cat-demo"><figcaption>SetupGuide</figcaption><div class="cat-live"><details class="ui-card ui-setup" open=""><summary class="ui-setup__head"><h2 class="ui-setup__title">Telegram alerts</h2><span class="ui-badge ui-badge--warning">1/3</span></summary><div class="ui-setup__inner"><p class="ui-setup__desc">Ping a chat the moment a registration lands.</p><progress class="ui-setup__bar" value="1" max="3" aria-label="Setup progress">1/3</progress><div class="ui-setup__steps"><details class="ui-setup__step" name="gb-setup:c72-R0:" data-state="done"><summary class="ui-setup__row"><span class="ui-setup__mark" aria-hidden="true">✓</span><span class="ui-setup__label">Connect a bot</span></summary><div class="ui-setup__body"><p>Sending as @gemform_alerts_bot.</p></div></details><details class="ui-setup__step" name="gb-setup:c72-R0:" open="" data-state="todo"><summary class="ui-setup__row"><span class="ui-setup__mark" aria-hidden="true">○</span><span class="ui-setup__label">Choose where alerts go</span></summary><div class="ui-setup__body"><p>Say hi to the bot from the chat you want alerts in, then find it here.</p><button type="button" class="ui-btn">Find my chat</button></div></details><details class="ui-setup__step" name="gb-setup:c72-R0:" data-state="todo"><summary class="ui-setup__row"><span class="ui-setup__mark" aria-hidden="true">○</span><span class="ui-setup__label">Send a test alert</span></summary><div class="ui-setup__body"><p>One message to every chat, to see it land.</p></div></details></div></div></details></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;details class=&quot;ui-card ui-setup&quot; open=&quot;&quot;&gt;
4713
+ <section id="setup"><h2>Hướng dẫn thiết lập</h2><p><code>SetupGuide</code> (0.30.0, CSS <code>setup-guide.css</code> do component tự nạp): Setup guide của admin (StoreChecklistCard) thành component. Đầu thẻ có số đã xong và thanh; các bước gập, bước mở là bước đầu chưa xong; bấm đầu thẻ để gập cả hướng dẫn. Toàn <code>&lt;details&gt;</code>, một nhóm <code>name</code> nên trình duyệt giữ một bước mở, không cần script: trang HTML thuần viết đúng markup này là chạy.</p><figure class="cat-demo"><figcaption>SetupGuide</figcaption><div class="cat-live"><details class="ui-card ui-setup" open=""><summary class="ui-setup__head"><h2 class="ui-setup__title">Telegram alerts</h2><span class="ui-badge ui-badge--warning">1/3</span></summary><div class="ui-setup__inner"><p class="ui-setup__desc">Ping a chat the moment a registration lands.</p><progress class="ui-setup__bar" value="1" max="3" aria-label="Setup progress">1/3</progress><div class="ui-setup__steps"><details class="ui-setup__step" name="gb-setup:c74-R0:" data-state="done"><summary class="ui-setup__row"><span class="ui-setup__mark" aria-hidden="true">✓</span><span class="ui-setup__label">Connect a bot</span></summary><div class="ui-setup__body"><p>Sending as @gemform_alerts_bot.</p></div></details><details class="ui-setup__step" name="gb-setup:c74-R0:" open="" data-state="todo"><summary class="ui-setup__row"><span class="ui-setup__mark" aria-hidden="true">○</span><span class="ui-setup__label">Choose where alerts go</span></summary><div class="ui-setup__body"><p>Say hi to the bot from the chat you want alerts in, then find it here.</p><button type="button" class="ui-btn">Find my chat</button></div></details><details class="ui-setup__step" name="gb-setup:c74-R0:" data-state="todo"><summary class="ui-setup__row"><span class="ui-setup__mark" aria-hidden="true">○</span><span class="ui-setup__label">Send a test alert</span></summary><div class="ui-setup__body"><p>One message to every chat, to see it land.</p></div></details></div></div></details></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;details class=&quot;ui-card ui-setup&quot; open=&quot;&quot;&gt;
4589
4714
  &lt;summary class=&quot;ui-setup__head&quot;&gt;
4590
4715
  &lt;h2 class=&quot;ui-setup__title&quot;&gt;Telegram alerts&lt;/h2&gt;
4591
4716
  &lt;span class=&quot;ui-badge ui-badge--warning&quot;&gt;1/3&lt;/span&gt;
@@ -4594,7 +4719,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
4594
4719
  &lt;p class=&quot;ui-setup__desc&quot;&gt;Ping a chat the moment a registration lands.&lt;/p&gt;
4595
4720
  &lt;progress class=&quot;ui-setup__bar&quot; value=&quot;1&quot; max=&quot;3&quot; aria-label=&quot;Setup progress&quot;&gt;1/3&lt;/progress&gt;
4596
4721
  &lt;div class=&quot;ui-setup__steps&quot;&gt;
4597
- &lt;details class=&quot;ui-setup__step&quot; name=&quot;gb-setup:c72-R0:&quot; data-state=&quot;done&quot;&gt;
4722
+ &lt;details class=&quot;ui-setup__step&quot; name=&quot;gb-setup:c74-R0:&quot; data-state=&quot;done&quot;&gt;
4598
4723
  &lt;summary class=&quot;ui-setup__row&quot;&gt;
4599
4724
  &lt;span class=&quot;ui-setup__mark&quot; aria-hidden=&quot;true&quot;&gt;✓&lt;/span&gt;
4600
4725
  &lt;span class=&quot;ui-setup__label&quot;&gt;Connect a bot&lt;/span&gt;
@@ -4603,7 +4728,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
4603
4728
  &lt;p&gt;Sending as @gemform_alerts_bot.&lt;/p&gt;
4604
4729
  &lt;/div&gt;
4605
4730
  &lt;/details&gt;
4606
- &lt;details class=&quot;ui-setup__step&quot; name=&quot;gb-setup:c72-R0:&quot; open=&quot;&quot; data-state=&quot;todo&quot;&gt;
4731
+ &lt;details class=&quot;ui-setup__step&quot; name=&quot;gb-setup:c74-R0:&quot; open=&quot;&quot; data-state=&quot;todo&quot;&gt;
4607
4732
  &lt;summary class=&quot;ui-setup__row&quot;&gt;
4608
4733
  &lt;span class=&quot;ui-setup__mark&quot; aria-hidden=&quot;true&quot;&gt;○&lt;/span&gt;
4609
4734
  &lt;span class=&quot;ui-setup__label&quot;&gt;Choose where alerts go&lt;/span&gt;
@@ -4613,7 +4738,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
4613
4738
  &lt;button type=&quot;button&quot; class=&quot;ui-btn&quot;&gt;Find my chat&lt;/button&gt;
4614
4739
  &lt;/div&gt;
4615
4740
  &lt;/details&gt;
4616
- &lt;details class=&quot;ui-setup__step&quot; name=&quot;gb-setup:c72-R0:&quot; data-state=&quot;todo&quot;&gt;
4741
+ &lt;details class=&quot;ui-setup__step&quot; name=&quot;gb-setup:c74-R0:&quot; data-state=&quot;todo&quot;&gt;
4617
4742
  &lt;summary class=&quot;ui-setup__row&quot;&gt;
4618
4743
  &lt;span class=&quot;ui-setup__mark&quot; aria-hidden=&quot;true&quot;&gt;○&lt;/span&gt;
4619
4744
  &lt;span class=&quot;ui-setup__label&quot;&gt;Send a test alert&lt;/span&gt;
@@ -4972,60 +5097,60 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
4972
5097
  &lt;/div&gt;
4973
5098
  &lt;/div&gt;
4974
5099
  &lt;/section&gt;</code></pre></details></figure></section>
4975
- <section id="assistant-engine"><h2>Trợ lý: chọn engine</h2><p><code>EnginePicker</code> (<code>@gemboss/ui/assistant</code>, CSS <code>assistant-engine.css</code> do component tự nạp). Một chip ở hàng soạn tin như admin: tên engine, model nếu khác mặc định, chấm cầu nối (xanh chạy, vàng lỗi thời, đỏ mất kết nối, rỗng đang kiểm). Bấm mở popup ở top layer với ba tab: Engine (engine, model, effort), Setup (lệnh cài/cập nhật + Copy, mã ghép nối), Status (trạng thái, phiên bản, tự khởi động). Không chèn khối nào vào khung chat; lượt hỏng vì cầu nối hiện MỘT dòng <code>BridgeNotice</code> có "Open setup" mở đúng tab Setup. Dữ liệu và logic cầu nối là của bề mặt.</p><figure class="cat-demo"><figcaption>Chip theo trạng thái cầu nối: chạy, lỗi thời, mất kết nối, đang kiểm</figcaption><div class="cat-live"><div class="cat-row"><span class="gb-engine"><button type="button" class="gb-engine-chip" aria-haspopup="dialog" aria-expanded="false" aria-controls=":c79-R0:" aria-label="Engine: Claude Code · Opus" title="Engine: Claude Code · Opus"><span class="gb-engine-dot gb-engine-dot--ok" aria-hidden="true"></span><span class="gb-engine-chiplabel">Claude Code<span class="gb-engine-chipsub"> · Opus</span></span></button><div id=":c79-R0:" class="gb-engine-panel gemboss-popover-surface" role="dialog" aria-label="Assistant engine" popover="manual" hidden=""></div></span><span class="gb-engine"><button type="button" class="gb-engine-chip" aria-haspopup="dialog" aria-expanded="false" aria-controls=":c80-R0:" aria-label="Engine: Claude Code · Opus. Bridge on your machine: Outdated" title="Engine: Claude Code · Opus. Bridge on your machine: Outdated"><span class="gb-engine-dot gb-engine-dot--warn" aria-hidden="true"></span><span class="gb-engine-chiplabel">Claude Code<span class="gb-engine-chipsub"> · Opus</span></span></button><div id=":c80-R0:" class="gb-engine-panel gemboss-popover-surface" role="dialog" aria-label="Assistant engine" popover="manual" hidden=""></div></span><span class="gb-engine"><button type="button" class="gb-engine-chip" aria-haspopup="dialog" aria-expanded="false" aria-controls=":c81-R0:" aria-label="Engine: Claude Code · Opus. Bridge on your machine: Not connected" title="Engine: Claude Code · Opus. Bridge on your machine: Not connected"><span class="gb-engine-dot gb-engine-dot--down" aria-hidden="true"></span><span class="gb-engine-chiplabel">Claude Code<span class="gb-engine-chipsub"> · Opus</span></span></button><div id=":c81-R0:" class="gb-engine-panel gemboss-popover-surface" role="dialog" aria-label="Assistant engine" popover="manual" hidden=""></div></span><span class="gb-engine"><button type="button" class="gb-engine-chip" aria-haspopup="dialog" aria-expanded="false" aria-controls=":c82-R0:" aria-label="Engine: Claude Code · Opus. Bridge on your machine: Checking" title="Engine: Claude Code · Opus. Bridge on your machine: Checking"><span class="gb-engine-dot gb-engine-dot--idle" aria-hidden="true"></span><span class="gb-engine-chiplabel">Claude Code<span class="gb-engine-chipsub"> · Opus</span></span></button><div id=":c82-R0:" class="gb-engine-panel gemboss-popover-surface" role="dialog" aria-label="Assistant engine" popover="manual" hidden=""></div></span></div></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div class=&quot;cat-row&quot;&gt;
5100
+ <section id="assistant-engine"><h2>Trợ lý: chọn engine</h2><p><code>EnginePicker</code> (<code>@gemboss/ui/assistant</code>, CSS <code>assistant-engine.css</code> do component tự nạp). Một chip ở hàng soạn tin như admin: tên engine, model nếu khác mặc định, chấm cầu nối (xanh chạy, vàng lỗi thời, đỏ mất kết nối, rỗng đang kiểm). Bấm mở popup ở top layer với ba tab: Engine (engine, model, effort), Setup (lệnh cài/cập nhật + Copy, mã ghép nối), Status (trạng thái, phiên bản, tự khởi động). Không chèn khối nào vào khung chat; lượt hỏng vì cầu nối hiện MỘT dòng <code>BridgeNotice</code> có "Open setup" mở đúng tab Setup. Dữ liệu và logic cầu nối là của bề mặt.</p><figure class="cat-demo"><figcaption>Chip theo trạng thái cầu nối: chạy, lỗi thời, mất kết nối, đang kiểm</figcaption><div class="cat-live"><div class="cat-row"><span class="gb-engine"><button type="button" class="gb-engine-chip" aria-haspopup="dialog" aria-expanded="false" aria-controls=":c81-R0:" aria-label="Engine: Claude Code · Opus" title="Engine: Claude Code · Opus"><span class="gb-engine-dot gb-engine-dot--ok" aria-hidden="true"></span><span class="gb-engine-chiplabel">Claude Code<span class="gb-engine-chipsub"> · Opus</span></span></button><div id=":c81-R0:" class="gb-engine-panel gemboss-popover-surface" role="dialog" aria-label="Assistant engine" popover="manual" hidden=""></div></span><span class="gb-engine"><button type="button" class="gb-engine-chip" aria-haspopup="dialog" aria-expanded="false" aria-controls=":c82-R0:" aria-label="Engine: Claude Code · Opus. Bridge on your machine: Outdated" title="Engine: Claude Code · Opus. Bridge on your machine: Outdated"><span class="gb-engine-dot gb-engine-dot--warn" aria-hidden="true"></span><span class="gb-engine-chiplabel">Claude Code<span class="gb-engine-chipsub"> · Opus</span></span></button><div id=":c82-R0:" class="gb-engine-panel gemboss-popover-surface" role="dialog" aria-label="Assistant engine" popover="manual" hidden=""></div></span><span class="gb-engine"><button type="button" class="gb-engine-chip" aria-haspopup="dialog" aria-expanded="false" aria-controls=":c83-R0:" aria-label="Engine: Claude Code · Opus. Bridge on your machine: Not connected" title="Engine: Claude Code · Opus. Bridge on your machine: Not connected"><span class="gb-engine-dot gb-engine-dot--down" aria-hidden="true"></span><span class="gb-engine-chiplabel">Claude Code<span class="gb-engine-chipsub"> · Opus</span></span></button><div id=":c83-R0:" class="gb-engine-panel gemboss-popover-surface" role="dialog" aria-label="Assistant engine" popover="manual" hidden=""></div></span><span class="gb-engine"><button type="button" class="gb-engine-chip" aria-haspopup="dialog" aria-expanded="false" aria-controls=":c84-R0:" aria-label="Engine: Claude Code · Opus. Bridge on your machine: Checking" title="Engine: Claude Code · Opus. Bridge on your machine: Checking"><span class="gb-engine-dot gb-engine-dot--idle" aria-hidden="true"></span><span class="gb-engine-chiplabel">Claude Code<span class="gb-engine-chipsub"> · Opus</span></span></button><div id=":c84-R0:" class="gb-engine-panel gemboss-popover-surface" role="dialog" aria-label="Assistant engine" popover="manual" hidden=""></div></span></div></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div class=&quot;cat-row&quot;&gt;
4976
5101
  &lt;span class=&quot;gb-engine&quot;&gt;
4977
- &lt;button type=&quot;button&quot; class=&quot;gb-engine-chip&quot; aria-haspopup=&quot;dialog&quot; aria-expanded=&quot;false&quot; aria-controls=&quot;:c79-R0:&quot; aria-label=&quot;Engine: Claude Code · Opus&quot; title=&quot;Engine: Claude Code · Opus&quot;&gt;
5102
+ &lt;button type=&quot;button&quot; class=&quot;gb-engine-chip&quot; aria-haspopup=&quot;dialog&quot; aria-expanded=&quot;false&quot; aria-controls=&quot;:c81-R0:&quot; aria-label=&quot;Engine: Claude Code · Opus&quot; title=&quot;Engine: Claude Code · Opus&quot;&gt;
4978
5103
  &lt;span class=&quot;gb-engine-dot gb-engine-dot--ok&quot; aria-hidden=&quot;true&quot;&gt;
4979
5104
  &lt;/span&gt;
4980
5105
  &lt;span class=&quot;gb-engine-chiplabel&quot;&gt;Claude Code&lt;span class=&quot;gb-engine-chipsub&quot;&gt; · Opus&lt;/span&gt;
4981
5106
  &lt;/span&gt;
4982
5107
  &lt;/button&gt;
4983
- &lt;div id=&quot;:c79-R0:&quot; class=&quot;gb-engine-panel gemboss-popover-surface&quot; role=&quot;dialog&quot; aria-label=&quot;Assistant engine&quot; popover=&quot;manual&quot; hidden=&quot;&quot;&gt;
5108
+ &lt;div id=&quot;:c81-R0:&quot; class=&quot;gb-engine-panel gemboss-popover-surface&quot; role=&quot;dialog&quot; aria-label=&quot;Assistant engine&quot; popover=&quot;manual&quot; hidden=&quot;&quot;&gt;
4984
5109
  &lt;/div&gt;
4985
5110
  &lt;/span&gt;
4986
5111
  &lt;span class=&quot;gb-engine&quot;&gt;
4987
- &lt;button type=&quot;button&quot; class=&quot;gb-engine-chip&quot; aria-haspopup=&quot;dialog&quot; aria-expanded=&quot;false&quot; aria-controls=&quot;:c80-R0:&quot; aria-label=&quot;Engine: Claude Code · Opus. Bridge on your machine: Outdated&quot; title=&quot;Engine: Claude Code · Opus. Bridge on your machine: Outdated&quot;&gt;
5112
+ &lt;button type=&quot;button&quot; class=&quot;gb-engine-chip&quot; aria-haspopup=&quot;dialog&quot; aria-expanded=&quot;false&quot; aria-controls=&quot;:c82-R0:&quot; aria-label=&quot;Engine: Claude Code · Opus. Bridge on your machine: Outdated&quot; title=&quot;Engine: Claude Code · Opus. Bridge on your machine: Outdated&quot;&gt;
4988
5113
  &lt;span class=&quot;gb-engine-dot gb-engine-dot--warn&quot; aria-hidden=&quot;true&quot;&gt;
4989
5114
  &lt;/span&gt;
4990
5115
  &lt;span class=&quot;gb-engine-chiplabel&quot;&gt;Claude Code&lt;span class=&quot;gb-engine-chipsub&quot;&gt; · Opus&lt;/span&gt;
4991
5116
  &lt;/span&gt;
4992
5117
  &lt;/button&gt;
4993
- &lt;div id=&quot;:c80-R0:&quot; class=&quot;gb-engine-panel gemboss-popover-surface&quot; role=&quot;dialog&quot; aria-label=&quot;Assistant engine&quot; popover=&quot;manual&quot; hidden=&quot;&quot;&gt;
5118
+ &lt;div id=&quot;:c82-R0:&quot; class=&quot;gb-engine-panel gemboss-popover-surface&quot; role=&quot;dialog&quot; aria-label=&quot;Assistant engine&quot; popover=&quot;manual&quot; hidden=&quot;&quot;&gt;
4994
5119
  &lt;/div&gt;
4995
5120
  &lt;/span&gt;
4996
5121
  &lt;span class=&quot;gb-engine&quot;&gt;
4997
- &lt;button type=&quot;button&quot; class=&quot;gb-engine-chip&quot; aria-haspopup=&quot;dialog&quot; aria-expanded=&quot;false&quot; aria-controls=&quot;:c81-R0:&quot; aria-label=&quot;Engine: Claude Code · Opus. Bridge on your machine: Not connected&quot; title=&quot;Engine: Claude Code · Opus. Bridge on your machine: Not connected&quot;&gt;
5122
+ &lt;button type=&quot;button&quot; class=&quot;gb-engine-chip&quot; aria-haspopup=&quot;dialog&quot; aria-expanded=&quot;false&quot; aria-controls=&quot;:c83-R0:&quot; aria-label=&quot;Engine: Claude Code · Opus. Bridge on your machine: Not connected&quot; title=&quot;Engine: Claude Code · Opus. Bridge on your machine: Not connected&quot;&gt;
4998
5123
  &lt;span class=&quot;gb-engine-dot gb-engine-dot--down&quot; aria-hidden=&quot;true&quot;&gt;
4999
5124
  &lt;/span&gt;
5000
5125
  &lt;span class=&quot;gb-engine-chiplabel&quot;&gt;Claude Code&lt;span class=&quot;gb-engine-chipsub&quot;&gt; · Opus&lt;/span&gt;
5001
5126
  &lt;/span&gt;
5002
5127
  &lt;/button&gt;
5003
- &lt;div id=&quot;:c81-R0:&quot; class=&quot;gb-engine-panel gemboss-popover-surface&quot; role=&quot;dialog&quot; aria-label=&quot;Assistant engine&quot; popover=&quot;manual&quot; hidden=&quot;&quot;&gt;
5128
+ &lt;div id=&quot;:c83-R0:&quot; class=&quot;gb-engine-panel gemboss-popover-surface&quot; role=&quot;dialog&quot; aria-label=&quot;Assistant engine&quot; popover=&quot;manual&quot; hidden=&quot;&quot;&gt;
5004
5129
  &lt;/div&gt;
5005
5130
  &lt;/span&gt;
5006
5131
  &lt;span class=&quot;gb-engine&quot;&gt;
5007
- &lt;button type=&quot;button&quot; class=&quot;gb-engine-chip&quot; aria-haspopup=&quot;dialog&quot; aria-expanded=&quot;false&quot; aria-controls=&quot;:c82-R0:&quot; aria-label=&quot;Engine: Claude Code · Opus. Bridge on your machine: Checking&quot; title=&quot;Engine: Claude Code · Opus. Bridge on your machine: Checking&quot;&gt;
5132
+ &lt;button type=&quot;button&quot; class=&quot;gb-engine-chip&quot; aria-haspopup=&quot;dialog&quot; aria-expanded=&quot;false&quot; aria-controls=&quot;:c84-R0:&quot; aria-label=&quot;Engine: Claude Code · Opus. Bridge on your machine: Checking&quot; title=&quot;Engine: Claude Code · Opus. Bridge on your machine: Checking&quot;&gt;
5008
5133
  &lt;span class=&quot;gb-engine-dot gb-engine-dot--idle&quot; aria-hidden=&quot;true&quot;&gt;
5009
5134
  &lt;/span&gt;
5010
5135
  &lt;span class=&quot;gb-engine-chiplabel&quot;&gt;Claude Code&lt;span class=&quot;gb-engine-chipsub&quot;&gt; · Opus&lt;/span&gt;
5011
5136
  &lt;/span&gt;
5012
5137
  &lt;/button&gt;
5013
- &lt;div id=&quot;:c82-R0:&quot; class=&quot;gb-engine-panel gemboss-popover-surface&quot; role=&quot;dialog&quot; aria-label=&quot;Assistant engine&quot; popover=&quot;manual&quot; hidden=&quot;&quot;&gt;
5138
+ &lt;div id=&quot;:c84-R0:&quot; class=&quot;gb-engine-panel gemboss-popover-surface&quot; role=&quot;dialog&quot; aria-label=&quot;Assistant engine&quot; popover=&quot;manual&quot; hidden=&quot;&quot;&gt;
5014
5139
  &lt;/div&gt;
5015
5140
  &lt;/span&gt;
5016
- &lt;/div&gt;</code></pre></details></figure><figure class="cat-demo"><figcaption>Popup, tab Engine</figcaption><div class="cat-live"><div style="max-width:360px"><div class="gb-engine-panel gb-engine-panel--inline gemboss-popover-surface" role="group" aria-label="Assistant engine"><div class="ui-tabs gb-engine-tabs" role="tablist" aria-label="Engine, setup and status"><button type="button" role="tab" id=":c83-R0:-tab-engine" aria-controls=":c83-R0:-pane-engine" aria-selected="true" tabindex="0">Engine</button><button type="button" role="tab" id=":c83-R0:-tab-setup" aria-controls=":c83-R0:-pane-setup" aria-selected="false" tabindex="-1">Setup<span class="gb-engine-dot gb-engine-dot--warn" role="img" aria-label="Update available"></span></button><button type="button" role="tab" id=":c83-R0:-tab-status" aria-controls=":c83-R0:-pane-status" aria-selected="false" tabindex="-1">Status</button></div><div class="gb-engine-pane" role="tabpanel" id=":c83-R0:-pane-engine" aria-labelledby=":c83-R0:-tab-engine"><div class="gb-engine-field"><span class="gb-engine-label" id=":c83-Rd:">Engine</span><div class="gb-engine-list" role="radiogroup" aria-labelledby=":c83-Rd:"><button type="button" role="radio" aria-checked="true" data-engine="claude" tabindex="0" class="gb-engine-row"><span class="gb-engine-rowhead"><span class="gb-engine-rowname">Claude Code</span><span class="ui-badge ui-badge--success">your plan</span></span><span class="gb-engine-note">Your Claude subscription, through the bridge on your machine</span></button><button type="button" role="radio" aria-checked="false" data-engine="codex" tabindex="-1" class="gb-engine-row" disabled=""><span class="gb-engine-rowhead"><span class="gb-engine-rowname">Codex</span><span class="ui-badge ui-badge--warning">not installed</span></span><span class="gb-engine-note">Install Codex on that machine, then reopen this</span></button><button type="button" role="radio" aria-checked="false" data-engine="server" tabindex="-1" class="gb-engine-row"><span class="gb-engine-rowhead"><span class="gb-engine-rowname">Server</span></span><span class="gb-engine-note">Content Radar&#x27;s own capacity</span></button></div></div><div class="gb-engine-field"><span class="gb-engine-label" id=":c83-R5d:">Model</span><div class="gb-engine-opts" role="group" aria-labelledby=":c83-R5d:"><button type="button" class="gb-engine-opt" aria-pressed="false">Default</button><button type="button" class="gb-engine-opt" aria-pressed="true">Opus</button><button type="button" class="gb-engine-opt" aria-pressed="false">Sonnet</button><button type="button" class="gb-engine-opt" aria-pressed="false">Haiku</button></div></div><div class="gb-engine-field"><span class="gb-engine-label" id=":c83-R7d:">Effort</span><div class="gb-engine-opts" role="group" aria-labelledby=":c83-R7d:"><button type="button" class="gb-engine-opt" aria-pressed="true">Default</button><button type="button" class="gb-engine-opt" aria-pressed="false">Low</button><button type="button" class="gb-engine-opt" aria-pressed="false">Medium</button><button type="button" class="gb-engine-opt" aria-pressed="false">High</button><button type="button" class="gb-engine-opt" aria-pressed="false">Max</button></div></div></div></div></div></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div style=&quot;max-width:360px&quot;&gt;
5141
+ &lt;/div&gt;</code></pre></details></figure><figure class="cat-demo"><figcaption>Popup, tab Engine</figcaption><div class="cat-live"><div style="max-width:360px"><div class="gb-engine-panel gb-engine-panel--inline gemboss-popover-surface" role="group" aria-label="Assistant engine"><div class="ui-tabs gb-engine-tabs" role="tablist" aria-label="Engine, setup and status"><button type="button" role="tab" id=":c85-R0:-tab-engine" aria-controls=":c85-R0:-pane-engine" aria-selected="true" tabindex="0">Engine</button><button type="button" role="tab" id=":c85-R0:-tab-setup" aria-controls=":c85-R0:-pane-setup" aria-selected="false" tabindex="-1">Setup<span class="gb-engine-dot gb-engine-dot--warn" role="img" aria-label="Update available"></span></button><button type="button" role="tab" id=":c85-R0:-tab-status" aria-controls=":c85-R0:-pane-status" aria-selected="false" tabindex="-1">Status</button></div><div class="gb-engine-pane" role="tabpanel" id=":c85-R0:-pane-engine" aria-labelledby=":c85-R0:-tab-engine"><div class="gb-engine-field"><span class="gb-engine-label" id=":c85-Rd:">Engine</span><div class="gb-engine-list" role="radiogroup" aria-labelledby=":c85-Rd:"><button type="button" role="radio" aria-checked="true" data-engine="claude" tabindex="0" class="gb-engine-row"><span class="gb-engine-rowhead"><span class="gb-engine-rowname">Claude Code</span><span class="ui-badge ui-badge--success">your plan</span></span><span class="gb-engine-note">Your Claude subscription, through the bridge on your machine</span></button><button type="button" role="radio" aria-checked="false" data-engine="codex" tabindex="-1" class="gb-engine-row" disabled=""><span class="gb-engine-rowhead"><span class="gb-engine-rowname">Codex</span><span class="ui-badge ui-badge--warning">not installed</span></span><span class="gb-engine-note">Install Codex on that machine, then reopen this</span></button><button type="button" role="radio" aria-checked="false" data-engine="server" tabindex="-1" class="gb-engine-row"><span class="gb-engine-rowhead"><span class="gb-engine-rowname">Server</span></span><span class="gb-engine-note">Content Radar&#x27;s own capacity</span></button></div></div><div class="gb-engine-field"><span class="gb-engine-label" id=":c85-R5d:">Model</span><div class="gb-engine-opts" role="group" aria-labelledby=":c85-R5d:"><button type="button" class="gb-engine-opt" aria-pressed="false">Default</button><button type="button" class="gb-engine-opt" aria-pressed="true">Opus</button><button type="button" class="gb-engine-opt" aria-pressed="false">Sonnet</button><button type="button" class="gb-engine-opt" aria-pressed="false">Haiku</button></div></div><div class="gb-engine-field"><span class="gb-engine-label" id=":c85-R7d:">Effort</span><div class="gb-engine-opts" role="group" aria-labelledby=":c85-R7d:"><button type="button" class="gb-engine-opt" aria-pressed="true">Default</button><button type="button" class="gb-engine-opt" aria-pressed="false">Low</button><button type="button" class="gb-engine-opt" aria-pressed="false">Medium</button><button type="button" class="gb-engine-opt" aria-pressed="false">High</button><button type="button" class="gb-engine-opt" aria-pressed="false">Max</button></div></div></div></div></div></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div style=&quot;max-width:360px&quot;&gt;
5017
5142
  &lt;div class=&quot;gb-engine-panel gb-engine-panel--inline gemboss-popover-surface&quot; role=&quot;group&quot; aria-label=&quot;Assistant engine&quot;&gt;
5018
5143
  &lt;div class=&quot;ui-tabs gb-engine-tabs&quot; role=&quot;tablist&quot; aria-label=&quot;Engine, setup and status&quot;&gt;
5019
- &lt;button type=&quot;button&quot; role=&quot;tab&quot; id=&quot;:c83-R0:-tab-engine&quot; aria-controls=&quot;:c83-R0:-pane-engine&quot; aria-selected=&quot;true&quot; tabindex=&quot;0&quot;&gt;Engine&lt;/button&gt;
5020
- &lt;button type=&quot;button&quot; role=&quot;tab&quot; id=&quot;:c83-R0:-tab-setup&quot; aria-controls=&quot;:c83-R0:-pane-setup&quot; aria-selected=&quot;false&quot; tabindex=&quot;-1&quot;&gt;Setup&lt;span class=&quot;gb-engine-dot gb-engine-dot--warn&quot; role=&quot;img&quot; aria-label=&quot;Update available&quot;&gt;
5144
+ &lt;button type=&quot;button&quot; role=&quot;tab&quot; id=&quot;:c85-R0:-tab-engine&quot; aria-controls=&quot;:c85-R0:-pane-engine&quot; aria-selected=&quot;true&quot; tabindex=&quot;0&quot;&gt;Engine&lt;/button&gt;
5145
+ &lt;button type=&quot;button&quot; role=&quot;tab&quot; id=&quot;:c85-R0:-tab-setup&quot; aria-controls=&quot;:c85-R0:-pane-setup&quot; aria-selected=&quot;false&quot; tabindex=&quot;-1&quot;&gt;Setup&lt;span class=&quot;gb-engine-dot gb-engine-dot--warn&quot; role=&quot;img&quot; aria-label=&quot;Update available&quot;&gt;
5021
5146
  &lt;/span&gt;
5022
5147
  &lt;/button&gt;
5023
- &lt;button type=&quot;button&quot; role=&quot;tab&quot; id=&quot;:c83-R0:-tab-status&quot; aria-controls=&quot;:c83-R0:-pane-status&quot; aria-selected=&quot;false&quot; tabindex=&quot;-1&quot;&gt;Status&lt;/button&gt;
5148
+ &lt;button type=&quot;button&quot; role=&quot;tab&quot; id=&quot;:c85-R0:-tab-status&quot; aria-controls=&quot;:c85-R0:-pane-status&quot; aria-selected=&quot;false&quot; tabindex=&quot;-1&quot;&gt;Status&lt;/button&gt;
5024
5149
  &lt;/div&gt;
5025
- &lt;div class=&quot;gb-engine-pane&quot; role=&quot;tabpanel&quot; id=&quot;:c83-R0:-pane-engine&quot; aria-labelledby=&quot;:c83-R0:-tab-engine&quot;&gt;
5150
+ &lt;div class=&quot;gb-engine-pane&quot; role=&quot;tabpanel&quot; id=&quot;:c85-R0:-pane-engine&quot; aria-labelledby=&quot;:c85-R0:-tab-engine&quot;&gt;
5026
5151
  &lt;div class=&quot;gb-engine-field&quot;&gt;
5027
- &lt;span class=&quot;gb-engine-label&quot; id=&quot;:c83-Rd:&quot;&gt;Engine&lt;/span&gt;
5028
- &lt;div class=&quot;gb-engine-list&quot; role=&quot;radiogroup&quot; aria-labelledby=&quot;:c83-Rd:&quot;&gt;
5152
+ &lt;span class=&quot;gb-engine-label&quot; id=&quot;:c85-Rd:&quot;&gt;Engine&lt;/span&gt;
5153
+ &lt;div class=&quot;gb-engine-list&quot; role=&quot;radiogroup&quot; aria-labelledby=&quot;:c85-Rd:&quot;&gt;
5029
5154
  &lt;button type=&quot;button&quot; role=&quot;radio&quot; aria-checked=&quot;true&quot; data-engine=&quot;claude&quot; tabindex=&quot;0&quot; class=&quot;gb-engine-row&quot;&gt;
5030
5155
  &lt;span class=&quot;gb-engine-rowhead&quot;&gt;
5031
5156
  &lt;span class=&quot;gb-engine-rowname&quot;&gt;Claude Code&lt;/span&gt;
@@ -5049,8 +5174,8 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
5049
5174
  &lt;/div&gt;
5050
5175
  &lt;/div&gt;
5051
5176
  &lt;div class=&quot;gb-engine-field&quot;&gt;
5052
- &lt;span class=&quot;gb-engine-label&quot; id=&quot;:c83-R5d:&quot;&gt;Model&lt;/span&gt;
5053
- &lt;div class=&quot;gb-engine-opts&quot; role=&quot;group&quot; aria-labelledby=&quot;:c83-R5d:&quot;&gt;
5177
+ &lt;span class=&quot;gb-engine-label&quot; id=&quot;:c85-R5d:&quot;&gt;Model&lt;/span&gt;
5178
+ &lt;div class=&quot;gb-engine-opts&quot; role=&quot;group&quot; aria-labelledby=&quot;:c85-R5d:&quot;&gt;
5054
5179
  &lt;button type=&quot;button&quot; class=&quot;gb-engine-opt&quot; aria-pressed=&quot;false&quot;&gt;Default&lt;/button&gt;
5055
5180
  &lt;button type=&quot;button&quot; class=&quot;gb-engine-opt&quot; aria-pressed=&quot;true&quot;&gt;Opus&lt;/button&gt;
5056
5181
  &lt;button type=&quot;button&quot; class=&quot;gb-engine-opt&quot; aria-pressed=&quot;false&quot;&gt;Sonnet&lt;/button&gt;
@@ -5058,8 +5183,8 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
5058
5183
  &lt;/div&gt;
5059
5184
  &lt;/div&gt;
5060
5185
  &lt;div class=&quot;gb-engine-field&quot;&gt;
5061
- &lt;span class=&quot;gb-engine-label&quot; id=&quot;:c83-R7d:&quot;&gt;Effort&lt;/span&gt;
5062
- &lt;div class=&quot;gb-engine-opts&quot; role=&quot;group&quot; aria-labelledby=&quot;:c83-R7d:&quot;&gt;
5186
+ &lt;span class=&quot;gb-engine-label&quot; id=&quot;:c85-R7d:&quot;&gt;Effort&lt;/span&gt;
5187
+ &lt;div class=&quot;gb-engine-opts&quot; role=&quot;group&quot; aria-labelledby=&quot;:c85-R7d:&quot;&gt;
5063
5188
  &lt;button type=&quot;button&quot; class=&quot;gb-engine-opt&quot; aria-pressed=&quot;true&quot;&gt;Default&lt;/button&gt;
5064
5189
  &lt;button type=&quot;button&quot; class=&quot;gb-engine-opt&quot; aria-pressed=&quot;false&quot;&gt;Low&lt;/button&gt;
5065
5190
  &lt;button type=&quot;button&quot; class=&quot;gb-engine-opt&quot; aria-pressed=&quot;false&quot;&gt;Medium&lt;/button&gt;
@@ -5069,16 +5194,16 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
5069
5194
  &lt;/div&gt;
5070
5195
  &lt;/div&gt;
5071
5196
  &lt;/div&gt;
5072
- &lt;/div&gt;</code></pre></details></figure><figure class="cat-demo"><figcaption>Popup, tab Setup (cầu nối lỗi thời)</figcaption><div class="cat-live"><div style="max-width:360px"><div class="gb-engine-panel gb-engine-panel--inline gemboss-popover-surface" role="group" aria-label="Assistant engine"><div class="ui-tabs gb-engine-tabs" role="tablist" aria-label="Engine, setup and status"><button type="button" role="tab" id=":c84-R0:-tab-engine" aria-controls=":c84-R0:-pane-engine" aria-selected="false" tabindex="-1">Engine</button><button type="button" role="tab" id=":c84-R0:-tab-setup" aria-controls=":c84-R0:-pane-setup" aria-selected="true" tabindex="0">Setup<span class="gb-engine-dot gb-engine-dot--warn" role="img" aria-label="Update available"></span></button><button type="button" role="tab" id=":c84-R0:-tab-status" aria-controls=":c84-R0:-pane-status" aria-selected="false" tabindex="-1">Status</button></div><div class="gb-engine-pane" role="tabpanel" id=":c84-R0:-pane-setup" aria-labelledby=":c84-R0:-tab-setup"><p class="gb-engine-callout gb-engine-callout--warn"><strong>Bridge on your machine: outdated.</strong> A turn can fail with &quot;The bridge has no data token&quot;, and Codex cannot see the radar tools.</p><div class="gb-engine-steps"><p>Paste the command into Terminal, then press Enter.</p></div><pre class="gb-engine-cmd"><code>curl -fsSL https://content-radar.ops.gemboss.ai/bridge/install.sh | sh -s -- --code 5PQFMWW9 --autostart</code></pre><div class="gb-engine-actions"><button type="button" class="ui-btn ui-btn--primary">Copy command</button><span class="gb-engine-said" role="status"></span></div><p class="gb-engine-note">The pairing code stays the same: the panel reconnects in a few seconds.</p></div></div></div></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div style=&quot;max-width:360px&quot;&gt;
5197
+ &lt;/div&gt;</code></pre></details></figure><figure class="cat-demo"><figcaption>Popup, tab Setup (cầu nối lỗi thời)</figcaption><div class="cat-live"><div style="max-width:360px"><div class="gb-engine-panel gb-engine-panel--inline gemboss-popover-surface" role="group" aria-label="Assistant engine"><div class="ui-tabs gb-engine-tabs" role="tablist" aria-label="Engine, setup and status"><button type="button" role="tab" id=":c86-R0:-tab-engine" aria-controls=":c86-R0:-pane-engine" aria-selected="false" tabindex="-1">Engine</button><button type="button" role="tab" id=":c86-R0:-tab-setup" aria-controls=":c86-R0:-pane-setup" aria-selected="true" tabindex="0">Setup<span class="gb-engine-dot gb-engine-dot--warn" role="img" aria-label="Update available"></span></button><button type="button" role="tab" id=":c86-R0:-tab-status" aria-controls=":c86-R0:-pane-status" aria-selected="false" tabindex="-1">Status</button></div><div class="gb-engine-pane" role="tabpanel" id=":c86-R0:-pane-setup" aria-labelledby=":c86-R0:-tab-setup"><p class="gb-engine-callout gb-engine-callout--warn"><strong>Bridge on your machine: outdated.</strong> A turn can fail with &quot;The bridge has no data token&quot;, and Codex cannot see the radar tools.</p><div class="gb-engine-steps"><p>Paste the command into Terminal, then press Enter.</p></div><pre class="gb-engine-cmd"><code>curl -fsSL https://content-radar.ops.gemboss.ai/bridge/install.sh | sh -s -- --code 5PQFMWW9 --autostart</code></pre><div class="gb-engine-actions"><button type="button" class="ui-btn ui-btn--primary">Copy command</button><span class="gb-engine-said" role="status"></span></div><p class="gb-engine-note">The pairing code stays the same: the panel reconnects in a few seconds.</p></div></div></div></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div style=&quot;max-width:360px&quot;&gt;
5073
5198
  &lt;div class=&quot;gb-engine-panel gb-engine-panel--inline gemboss-popover-surface&quot; role=&quot;group&quot; aria-label=&quot;Assistant engine&quot;&gt;
5074
5199
  &lt;div class=&quot;ui-tabs gb-engine-tabs&quot; role=&quot;tablist&quot; aria-label=&quot;Engine, setup and status&quot;&gt;
5075
- &lt;button type=&quot;button&quot; role=&quot;tab&quot; id=&quot;:c84-R0:-tab-engine&quot; aria-controls=&quot;:c84-R0:-pane-engine&quot; aria-selected=&quot;false&quot; tabindex=&quot;-1&quot;&gt;Engine&lt;/button&gt;
5076
- &lt;button type=&quot;button&quot; role=&quot;tab&quot; id=&quot;:c84-R0:-tab-setup&quot; aria-controls=&quot;:c84-R0:-pane-setup&quot; aria-selected=&quot;true&quot; tabindex=&quot;0&quot;&gt;Setup&lt;span class=&quot;gb-engine-dot gb-engine-dot--warn&quot; role=&quot;img&quot; aria-label=&quot;Update available&quot;&gt;
5200
+ &lt;button type=&quot;button&quot; role=&quot;tab&quot; id=&quot;:c86-R0:-tab-engine&quot; aria-controls=&quot;:c86-R0:-pane-engine&quot; aria-selected=&quot;false&quot; tabindex=&quot;-1&quot;&gt;Engine&lt;/button&gt;
5201
+ &lt;button type=&quot;button&quot; role=&quot;tab&quot; id=&quot;:c86-R0:-tab-setup&quot; aria-controls=&quot;:c86-R0:-pane-setup&quot; aria-selected=&quot;true&quot; tabindex=&quot;0&quot;&gt;Setup&lt;span class=&quot;gb-engine-dot gb-engine-dot--warn&quot; role=&quot;img&quot; aria-label=&quot;Update available&quot;&gt;
5077
5202
  &lt;/span&gt;
5078
5203
  &lt;/button&gt;
5079
- &lt;button type=&quot;button&quot; role=&quot;tab&quot; id=&quot;:c84-R0:-tab-status&quot; aria-controls=&quot;:c84-R0:-pane-status&quot; aria-selected=&quot;false&quot; tabindex=&quot;-1&quot;&gt;Status&lt;/button&gt;
5204
+ &lt;button type=&quot;button&quot; role=&quot;tab&quot; id=&quot;:c86-R0:-tab-status&quot; aria-controls=&quot;:c86-R0:-pane-status&quot; aria-selected=&quot;false&quot; tabindex=&quot;-1&quot;&gt;Status&lt;/button&gt;
5080
5205
  &lt;/div&gt;
5081
- &lt;div class=&quot;gb-engine-pane&quot; role=&quot;tabpanel&quot; id=&quot;:c84-R0:-pane-setup&quot; aria-labelledby=&quot;:c84-R0:-tab-setup&quot;&gt;
5206
+ &lt;div class=&quot;gb-engine-pane&quot; role=&quot;tabpanel&quot; id=&quot;:c86-R0:-pane-setup&quot; aria-labelledby=&quot;:c86-R0:-tab-setup&quot;&gt;
5082
5207
  &lt;p class=&quot;gb-engine-callout gb-engine-callout--warn&quot;&gt;
5083
5208
  &lt;strong&gt;Bridge on your machine: outdated.&lt;/strong&gt; A turn can fail with &amp;quot;The bridge has no data token&amp;quot;, and Codex cannot see the radar tools.&lt;/p&gt;
5084
5209
  &lt;div class=&quot;gb-engine-steps&quot;&gt;
@@ -5095,16 +5220,16 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
5095
5220
  &lt;p class=&quot;gb-engine-note&quot;&gt;The pairing code stays the same: the panel reconnects in a few seconds.&lt;/p&gt;
5096
5221
  &lt;/div&gt;
5097
5222
  &lt;/div&gt;
5098
- &lt;/div&gt;</code></pre></details></figure><figure class="cat-demo"><figcaption>Popup, tab Status</figcaption><div class="cat-live"><div style="max-width:360px"><div class="gb-engine-panel gb-engine-panel--inline gemboss-popover-surface" role="group" aria-label="Assistant engine"><div class="ui-tabs gb-engine-tabs" role="tablist" aria-label="Engine, setup and status"><button type="button" role="tab" id=":c85-R0:-tab-engine" aria-controls=":c85-R0:-pane-engine" aria-selected="false" tabindex="-1">Engine</button><button type="button" role="tab" id=":c85-R0:-tab-setup" aria-controls=":c85-R0:-pane-setup" aria-selected="false" tabindex="-1">Setup<span class="gb-engine-dot gb-engine-dot--warn" role="img" aria-label="Update available"></span></button><button type="button" role="tab" id=":c85-R0:-tab-status" aria-controls=":c85-R0:-pane-status" aria-selected="true" tabindex="0">Status</button></div><div class="gb-engine-pane" role="tabpanel" id=":c85-R0:-pane-status" aria-labelledby=":c85-R0:-tab-status"><dl class="gb-engine-rows"><dt>Bridge on your machine</dt><dd><span class="gb-engine-dot gb-engine-dot--warn" aria-hidden="true"></span> Outdated</dd><dt>Version</dt><dd>8 · Latest 10</dd><dt>Starts at sign-in</dt><dd>Yes</dd></dl><p class="gb-engine-note">A turn can fail with &quot;The bridge has no data token&quot;, and Codex cannot see the radar tools.</p></div></div></div></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div style=&quot;max-width:360px&quot;&gt;
5223
+ &lt;/div&gt;</code></pre></details></figure><figure class="cat-demo"><figcaption>Popup, tab Status</figcaption><div class="cat-live"><div style="max-width:360px"><div class="gb-engine-panel gb-engine-panel--inline gemboss-popover-surface" role="group" aria-label="Assistant engine"><div class="ui-tabs gb-engine-tabs" role="tablist" aria-label="Engine, setup and status"><button type="button" role="tab" id=":c87-R0:-tab-engine" aria-controls=":c87-R0:-pane-engine" aria-selected="false" tabindex="-1">Engine</button><button type="button" role="tab" id=":c87-R0:-tab-setup" aria-controls=":c87-R0:-pane-setup" aria-selected="false" tabindex="-1">Setup<span class="gb-engine-dot gb-engine-dot--warn" role="img" aria-label="Update available"></span></button><button type="button" role="tab" id=":c87-R0:-tab-status" aria-controls=":c87-R0:-pane-status" aria-selected="true" tabindex="0">Status</button></div><div class="gb-engine-pane" role="tabpanel" id=":c87-R0:-pane-status" aria-labelledby=":c87-R0:-tab-status"><dl class="gb-engine-rows"><dt>Bridge on your machine</dt><dd><span class="gb-engine-dot gb-engine-dot--warn" aria-hidden="true"></span> Outdated</dd><dt>Version</dt><dd>8 · Latest 10</dd><dt>Starts at sign-in</dt><dd>Yes</dd></dl><p class="gb-engine-note">A turn can fail with &quot;The bridge has no data token&quot;, and Codex cannot see the radar tools.</p></div></div></div></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div style=&quot;max-width:360px&quot;&gt;
5099
5224
  &lt;div class=&quot;gb-engine-panel gb-engine-panel--inline gemboss-popover-surface&quot; role=&quot;group&quot; aria-label=&quot;Assistant engine&quot;&gt;
5100
5225
  &lt;div class=&quot;ui-tabs gb-engine-tabs&quot; role=&quot;tablist&quot; aria-label=&quot;Engine, setup and status&quot;&gt;
5101
- &lt;button type=&quot;button&quot; role=&quot;tab&quot; id=&quot;:c85-R0:-tab-engine&quot; aria-controls=&quot;:c85-R0:-pane-engine&quot; aria-selected=&quot;false&quot; tabindex=&quot;-1&quot;&gt;Engine&lt;/button&gt;
5102
- &lt;button type=&quot;button&quot; role=&quot;tab&quot; id=&quot;:c85-R0:-tab-setup&quot; aria-controls=&quot;:c85-R0:-pane-setup&quot; aria-selected=&quot;false&quot; tabindex=&quot;-1&quot;&gt;Setup&lt;span class=&quot;gb-engine-dot gb-engine-dot--warn&quot; role=&quot;img&quot; aria-label=&quot;Update available&quot;&gt;
5226
+ &lt;button type=&quot;button&quot; role=&quot;tab&quot; id=&quot;:c87-R0:-tab-engine&quot; aria-controls=&quot;:c87-R0:-pane-engine&quot; aria-selected=&quot;false&quot; tabindex=&quot;-1&quot;&gt;Engine&lt;/button&gt;
5227
+ &lt;button type=&quot;button&quot; role=&quot;tab&quot; id=&quot;:c87-R0:-tab-setup&quot; aria-controls=&quot;:c87-R0:-pane-setup&quot; aria-selected=&quot;false&quot; tabindex=&quot;-1&quot;&gt;Setup&lt;span class=&quot;gb-engine-dot gb-engine-dot--warn&quot; role=&quot;img&quot; aria-label=&quot;Update available&quot;&gt;
5103
5228
  &lt;/span&gt;
5104
5229
  &lt;/button&gt;
5105
- &lt;button type=&quot;button&quot; role=&quot;tab&quot; id=&quot;:c85-R0:-tab-status&quot; aria-controls=&quot;:c85-R0:-pane-status&quot; aria-selected=&quot;true&quot; tabindex=&quot;0&quot;&gt;Status&lt;/button&gt;
5230
+ &lt;button type=&quot;button&quot; role=&quot;tab&quot; id=&quot;:c87-R0:-tab-status&quot; aria-controls=&quot;:c87-R0:-pane-status&quot; aria-selected=&quot;true&quot; tabindex=&quot;0&quot;&gt;Status&lt;/button&gt;
5106
5231
  &lt;/div&gt;
5107
- &lt;div class=&quot;gb-engine-pane&quot; role=&quot;tabpanel&quot; id=&quot;:c85-R0:-pane-status&quot; aria-labelledby=&quot;:c85-R0:-tab-status&quot;&gt;
5232
+ &lt;div class=&quot;gb-engine-pane&quot; role=&quot;tabpanel&quot; id=&quot;:c87-R0:-pane-status&quot; aria-labelledby=&quot;:c87-R0:-tab-status&quot;&gt;
5108
5233
  &lt;dl class=&quot;gb-engine-rows&quot;&gt;
5109
5234
  &lt;dt&gt;Bridge on your machine&lt;/dt&gt;
5110
5235
  &lt;dd&gt;
@@ -5124,14 +5249,14 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
5124
5249
  &lt;span class=&quot;gb-engine-notice-text&quot;&gt;The bridge on your machine is not responding: it was stopped, or the machine slept.&lt;/span&gt;
5125
5250
  &lt;button type=&quot;button&quot; class=&quot;gb-engine-notice-link&quot;&gt;Open setup&lt;/button&gt;
5126
5251
  &lt;/p&gt;</code></pre></details></figure></section>
5127
- <section id="assistant-bridge"><h2>Trợ lý: cầu nối trên máy (0.32.0)</h2><p><code>useBridge</code> + <code>createBridgeClient</code> + <code>bridgePickerProps</code> (<code>@gemboss/ui/assistant</code>): dò cầu nối sau quyền Local Network Access của Chrome (chỉ hỏi từ một cú bấm), ghép cặp bằng mã trang tự sinh và nhét vào lệnh cài, token dữ liệu ngắn hạn, gửi lượt + đọc stream (<code>readTurnEvents</code>), dò mỗi 3 giây khi đồng đội đang cài, dò lại khi quay về tab, Stop / Remove. Ba radar từng giữ ba bản chép; bề mặt nay chỉ cấp cổng, khoá mã, tên app và phần riêng của nó. Dưới đây là tab Setup / Status mà gói dựng cho từng trạng thái.</p><figure class="cat-demo"><figcaption>Chưa có quyền gọi máy này: nút Allow, chưa có lệnh để chạy</figcaption><div class="cat-live"><div style="max-width:360px"><div class="gb-engine-panel gb-engine-panel--inline gemboss-popover-surface" role="group" aria-label="Assistant engine"><div class="ui-tabs gb-engine-tabs" role="tablist" aria-label="Engine, setup and status"><button type="button" role="tab" id=":c87-R0:-tab-engine" aria-controls=":c87-R0:-pane-engine" aria-selected="false" tabindex="-1">Engine</button><button type="button" role="tab" id=":c87-R0:-tab-setup" aria-controls=":c87-R0:-pane-setup" aria-selected="true" tabindex="0">Setup</button><button type="button" role="tab" id=":c87-R0:-tab-status" aria-controls=":c87-R0:-pane-status" aria-selected="false" tabindex="-1">Status</button></div><div class="gb-engine-pane" role="tabpanel" id=":c87-R0:-pane-setup" aria-labelledby=":c87-R0:-tab-setup"><p class="gb-engine-callout gb-engine-callout--down"><strong>Bridge on your machine: not connected.</strong> The browser needs permission to connect to this computer (localhost).</p><div class="gb-engine-steps"><p>Chrome will ask to “access devices on your local network”: choose Allow.</p><div><button type="button" class="ui-btn ui-btn--primary">Allow connecting to this computer</button></div></div></div></div></div></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div style=&quot;max-width:360px&quot;&gt;
5252
+ <section id="assistant-bridge"><h2>Trợ lý: cầu nối trên máy (0.32.0)</h2><p><code>useBridge</code> + <code>createBridgeClient</code> + <code>bridgePickerProps</code> (<code>@gemboss/ui/assistant</code>): dò cầu nối sau quyền Local Network Access của Chrome (chỉ hỏi từ một cú bấm), ghép cặp bằng mã trang tự sinh và nhét vào lệnh cài, token dữ liệu ngắn hạn, gửi lượt + đọc stream (<code>readTurnEvents</code>), dò mỗi 3 giây khi đồng đội đang cài, dò lại khi quay về tab, Stop / Remove. Ba radar từng giữ ba bản chép; bề mặt nay chỉ cấp cổng, khoá mã, tên app và phần riêng của nó. Dưới đây là tab Setup / Status mà gói dựng cho từng trạng thái.</p><figure class="cat-demo"><figcaption>Chưa có quyền gọi máy này: nút Allow, chưa có lệnh để chạy</figcaption><div class="cat-live"><div style="max-width:360px"><div class="gb-engine-panel gb-engine-panel--inline gemboss-popover-surface" role="group" aria-label="Assistant engine"><div class="ui-tabs gb-engine-tabs" role="tablist" aria-label="Engine, setup and status"><button type="button" role="tab" id=":c89-R0:-tab-engine" aria-controls=":c89-R0:-pane-engine" aria-selected="false" tabindex="-1">Engine</button><button type="button" role="tab" id=":c89-R0:-tab-setup" aria-controls=":c89-R0:-pane-setup" aria-selected="true" tabindex="0">Setup</button><button type="button" role="tab" id=":c89-R0:-tab-status" aria-controls=":c89-R0:-pane-status" aria-selected="false" tabindex="-1">Status</button></div><div class="gb-engine-pane" role="tabpanel" id=":c89-R0:-pane-setup" aria-labelledby=":c89-R0:-tab-setup"><p class="gb-engine-callout gb-engine-callout--down"><strong>Bridge on your machine: not connected.</strong> The browser needs permission to connect to this computer (localhost).</p><div class="gb-engine-steps"><p>Chrome will ask to “access devices on your local network”: choose Allow.</p><div><button type="button" class="ui-btn ui-btn--primary">Allow connecting to this computer</button></div></div></div></div></div></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div style=&quot;max-width:360px&quot;&gt;
5128
5253
  &lt;div class=&quot;gb-engine-panel gb-engine-panel--inline gemboss-popover-surface&quot; role=&quot;group&quot; aria-label=&quot;Assistant engine&quot;&gt;
5129
5254
  &lt;div class=&quot;ui-tabs gb-engine-tabs&quot; role=&quot;tablist&quot; aria-label=&quot;Engine, setup and status&quot;&gt;
5130
- &lt;button type=&quot;button&quot; role=&quot;tab&quot; id=&quot;:c87-R0:-tab-engine&quot; aria-controls=&quot;:c87-R0:-pane-engine&quot; aria-selected=&quot;false&quot; tabindex=&quot;-1&quot;&gt;Engine&lt;/button&gt;
5131
- &lt;button type=&quot;button&quot; role=&quot;tab&quot; id=&quot;:c87-R0:-tab-setup&quot; aria-controls=&quot;:c87-R0:-pane-setup&quot; aria-selected=&quot;true&quot; tabindex=&quot;0&quot;&gt;Setup&lt;/button&gt;
5132
- &lt;button type=&quot;button&quot; role=&quot;tab&quot; id=&quot;:c87-R0:-tab-status&quot; aria-controls=&quot;:c87-R0:-pane-status&quot; aria-selected=&quot;false&quot; tabindex=&quot;-1&quot;&gt;Status&lt;/button&gt;
5255
+ &lt;button type=&quot;button&quot; role=&quot;tab&quot; id=&quot;:c89-R0:-tab-engine&quot; aria-controls=&quot;:c89-R0:-pane-engine&quot; aria-selected=&quot;false&quot; tabindex=&quot;-1&quot;&gt;Engine&lt;/button&gt;
5256
+ &lt;button type=&quot;button&quot; role=&quot;tab&quot; id=&quot;:c89-R0:-tab-setup&quot; aria-controls=&quot;:c89-R0:-pane-setup&quot; aria-selected=&quot;true&quot; tabindex=&quot;0&quot;&gt;Setup&lt;/button&gt;
5257
+ &lt;button type=&quot;button&quot; role=&quot;tab&quot; id=&quot;:c89-R0:-tab-status&quot; aria-controls=&quot;:c89-R0:-pane-status&quot; aria-selected=&quot;false&quot; tabindex=&quot;-1&quot;&gt;Status&lt;/button&gt;
5133
5258
  &lt;/div&gt;
5134
- &lt;div class=&quot;gb-engine-pane&quot; role=&quot;tabpanel&quot; id=&quot;:c87-R0:-pane-setup&quot; aria-labelledby=&quot;:c87-R0:-tab-setup&quot;&gt;
5259
+ &lt;div class=&quot;gb-engine-pane&quot; role=&quot;tabpanel&quot; id=&quot;:c89-R0:-pane-setup&quot; aria-labelledby=&quot;:c89-R0:-tab-setup&quot;&gt;
5135
5260
  &lt;p class=&quot;gb-engine-callout gb-engine-callout--down&quot;&gt;
5136
5261
  &lt;strong&gt;Bridge on your machine: not connected.&lt;/strong&gt; The browser needs permission to connect to this computer (localhost).&lt;/p&gt;
5137
5262
  &lt;div class=&quot;gb-engine-steps&quot;&gt;
@@ -5142,14 +5267,14 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
5142
5267
  &lt;/div&gt;
5143
5268
  &lt;/div&gt;
5144
5269
  &lt;/div&gt;
5145
- &lt;/div&gt;</code></pre></details></figure><figure class="cat-demo"><figcaption>Chrome đã chặn: ba bước mở lại trong cài đặt trang</figcaption><div class="cat-live"><div style="max-width:360px"><div class="gb-engine-panel gb-engine-panel--inline gemboss-popover-surface" role="group" aria-label="Assistant engine"><div class="ui-tabs gb-engine-tabs" role="tablist" aria-label="Engine, setup and status"><button type="button" role="tab" id=":c88-R0:-tab-engine" aria-controls=":c88-R0:-pane-engine" aria-selected="false" tabindex="-1">Engine</button><button type="button" role="tab" id=":c88-R0:-tab-setup" aria-controls=":c88-R0:-pane-setup" aria-selected="true" tabindex="0">Setup</button><button type="button" role="tab" id=":c88-R0:-tab-status" aria-controls=":c88-R0:-pane-status" aria-selected="false" tabindex="-1">Status</button></div><div class="gb-engine-pane" role="tabpanel" id=":c88-R0:-pane-setup" aria-labelledby=":c88-R0:-tab-setup"><p class="gb-engine-callout gb-engine-callout--down"><strong>Bridge on your machine: not connected.</strong> Chrome is blocking this page from connecting to your computer.</p><div class="gb-engine-steps"><ol><li>Click the <strong>⚙︎ / ⓘ</strong> icon to the left of the address bar.</li><li>Find <strong>Local network access</strong> and choose <strong>Allow</strong>.</li><li>Come back to this tab. The panel picks it up without a reload.</li></ol><div><button type="button" class="ui-btn">Check again</button></div></div></div></div></div></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div style=&quot;max-width:360px&quot;&gt;
5270
+ &lt;/div&gt;</code></pre></details></figure><figure class="cat-demo"><figcaption>Chrome đã chặn: ba bước mở lại trong cài đặt trang</figcaption><div class="cat-live"><div style="max-width:360px"><div class="gb-engine-panel gb-engine-panel--inline gemboss-popover-surface" role="group" aria-label="Assistant engine"><div class="ui-tabs gb-engine-tabs" role="tablist" aria-label="Engine, setup and status"><button type="button" role="tab" id=":c90-R0:-tab-engine" aria-controls=":c90-R0:-pane-engine" aria-selected="false" tabindex="-1">Engine</button><button type="button" role="tab" id=":c90-R0:-tab-setup" aria-controls=":c90-R0:-pane-setup" aria-selected="true" tabindex="0">Setup</button><button type="button" role="tab" id=":c90-R0:-tab-status" aria-controls=":c90-R0:-pane-status" aria-selected="false" tabindex="-1">Status</button></div><div class="gb-engine-pane" role="tabpanel" id=":c90-R0:-pane-setup" aria-labelledby=":c90-R0:-tab-setup"><p class="gb-engine-callout gb-engine-callout--down"><strong>Bridge on your machine: not connected.</strong> Chrome is blocking this page from connecting to your computer.</p><div class="gb-engine-steps"><ol><li>Click the <strong>⚙︎ / ⓘ</strong> icon to the left of the address bar.</li><li>Find <strong>Local network access</strong> and choose <strong>Allow</strong>.</li><li>Come back to this tab. The panel picks it up without a reload.</li></ol><div><button type="button" class="ui-btn">Check again</button></div></div></div></div></div></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div style=&quot;max-width:360px&quot;&gt;
5146
5271
  &lt;div class=&quot;gb-engine-panel gb-engine-panel--inline gemboss-popover-surface&quot; role=&quot;group&quot; aria-label=&quot;Assistant engine&quot;&gt;
5147
5272
  &lt;div class=&quot;ui-tabs gb-engine-tabs&quot; role=&quot;tablist&quot; aria-label=&quot;Engine, setup and status&quot;&gt;
5148
- &lt;button type=&quot;button&quot; role=&quot;tab&quot; id=&quot;:c88-R0:-tab-engine&quot; aria-controls=&quot;:c88-R0:-pane-engine&quot; aria-selected=&quot;false&quot; tabindex=&quot;-1&quot;&gt;Engine&lt;/button&gt;
5149
- &lt;button type=&quot;button&quot; role=&quot;tab&quot; id=&quot;:c88-R0:-tab-setup&quot; aria-controls=&quot;:c88-R0:-pane-setup&quot; aria-selected=&quot;true&quot; tabindex=&quot;0&quot;&gt;Setup&lt;/button&gt;
5150
- &lt;button type=&quot;button&quot; role=&quot;tab&quot; id=&quot;:c88-R0:-tab-status&quot; aria-controls=&quot;:c88-R0:-pane-status&quot; aria-selected=&quot;false&quot; tabindex=&quot;-1&quot;&gt;Status&lt;/button&gt;
5273
+ &lt;button type=&quot;button&quot; role=&quot;tab&quot; id=&quot;:c90-R0:-tab-engine&quot; aria-controls=&quot;:c90-R0:-pane-engine&quot; aria-selected=&quot;false&quot; tabindex=&quot;-1&quot;&gt;Engine&lt;/button&gt;
5274
+ &lt;button type=&quot;button&quot; role=&quot;tab&quot; id=&quot;:c90-R0:-tab-setup&quot; aria-controls=&quot;:c90-R0:-pane-setup&quot; aria-selected=&quot;true&quot; tabindex=&quot;0&quot;&gt;Setup&lt;/button&gt;
5275
+ &lt;button type=&quot;button&quot; role=&quot;tab&quot; id=&quot;:c90-R0:-tab-status&quot; aria-controls=&quot;:c90-R0:-pane-status&quot; aria-selected=&quot;false&quot; tabindex=&quot;-1&quot;&gt;Status&lt;/button&gt;
5151
5276
  &lt;/div&gt;
5152
- &lt;div class=&quot;gb-engine-pane&quot; role=&quot;tabpanel&quot; id=&quot;:c88-R0:-pane-setup&quot; aria-labelledby=&quot;:c88-R0:-tab-setup&quot;&gt;
5277
+ &lt;div class=&quot;gb-engine-pane&quot; role=&quot;tabpanel&quot; id=&quot;:c90-R0:-pane-setup&quot; aria-labelledby=&quot;:c90-R0:-tab-setup&quot;&gt;
5153
5278
  &lt;p class=&quot;gb-engine-callout gb-engine-callout--down&quot;&gt;
5154
5279
  &lt;strong&gt;Bridge on your machine: not connected.&lt;/strong&gt; Chrome is blocking this page from connecting to your computer.&lt;/p&gt;
5155
5280
  &lt;div class=&quot;gb-engine-steps&quot;&gt;
@@ -5164,14 +5289,14 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
5164
5289
  &lt;/div&gt;
5165
5290
  &lt;/div&gt;
5166
5291
  &lt;/div&gt;
5167
- &lt;/div&gt;</code></pre></details></figure><figure class="cat-demo"><figcaption>Cầu nối chạy nhưng mã khác: ô Pair (Enter cũng ghép) + lệnh cài lại mang mã của trình duyệt này</figcaption><div class="cat-live"><div style="max-width:360px"><div class="gb-engine-panel gb-engine-panel--inline gemboss-popover-surface" role="group" aria-label="Assistant engine"><div class="ui-tabs gb-engine-tabs" role="tablist" aria-label="Engine, setup and status"><button type="button" role="tab" id=":c89-R0:-tab-engine" aria-controls=":c89-R0:-pane-engine" aria-selected="false" tabindex="-1">Engine</button><button type="button" role="tab" id=":c89-R0:-tab-setup" aria-controls=":c89-R0:-pane-setup" aria-selected="true" tabindex="0">Setup</button><button type="button" role="tab" id=":c89-R0:-tab-status" aria-controls=":c89-R0:-pane-status" aria-selected="false" tabindex="-1">Status</button></div><div class="gb-engine-pane" role="tabpanel" id=":c89-R0:-pane-setup" aria-labelledby=":c89-R0:-tab-setup"><p class="gb-engine-callout gb-engine-callout--down"><strong>Bridge on your machine: not connected.</strong> The bridge is running on your machine but is not paired with this browser.</p><div class="gb-engine-steps"><p>Paste the <strong>pairing code</strong> shown in the terminal:</p><form class="ui-toolbar"><input class="gemboss-field" style="flex:1 1 140px;min-width:0;text-transform:uppercase;letter-spacing:.08em" placeholder="e.g. 7KQ2M9XA" aria-label="Pairing code" autoComplete="off" spellcheck="false" value=""/><button type="button" class="ui-btn ui-btn--primary">Pair</button></form><p role="status">Wrong code. Check the pairing code line in the terminal.</p><p>Or reinstall with this command, which includes this browser’s code:</p></div><pre class="gb-engine-cmd"><code>curl -fsSL https://partner-radar.ops.gemboss.ai/bridge/install.sh | sh -s -- --code 5PQFMWW9 --autostart</code></pre><div class="gb-engine-actions"><button type="button" class="ui-btn ui-btn--primary">Copy command</button><span class="gb-engine-said" role="status"></span></div><p class="gb-engine-note">The panel connects as soon as the bridge starts, and the bridge starts with your computer after that. Requires macOS, Node.js, and Claude Code or Codex signed in.</p></div></div></div></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div style=&quot;max-width:360px&quot;&gt;
5292
+ &lt;/div&gt;</code></pre></details></figure><figure class="cat-demo"><figcaption>Cầu nối chạy nhưng mã khác: ô Pair (Enter cũng ghép) + lệnh cài lại mang mã của trình duyệt này</figcaption><div class="cat-live"><div style="max-width:360px"><div class="gb-engine-panel gb-engine-panel--inline gemboss-popover-surface" role="group" aria-label="Assistant engine"><div class="ui-tabs gb-engine-tabs" role="tablist" aria-label="Engine, setup and status"><button type="button" role="tab" id=":c91-R0:-tab-engine" aria-controls=":c91-R0:-pane-engine" aria-selected="false" tabindex="-1">Engine</button><button type="button" role="tab" id=":c91-R0:-tab-setup" aria-controls=":c91-R0:-pane-setup" aria-selected="true" tabindex="0">Setup</button><button type="button" role="tab" id=":c91-R0:-tab-status" aria-controls=":c91-R0:-pane-status" aria-selected="false" tabindex="-1">Status</button></div><div class="gb-engine-pane" role="tabpanel" id=":c91-R0:-pane-setup" aria-labelledby=":c91-R0:-tab-setup"><p class="gb-engine-callout gb-engine-callout--down"><strong>Bridge on your machine: not connected.</strong> The bridge is running on your machine but is not paired with this browser.</p><div class="gb-engine-steps"><p>Paste the <strong>pairing code</strong> shown in the terminal:</p><form class="ui-toolbar"><input class="gemboss-field" style="flex:1 1 140px;min-width:0;text-transform:uppercase;letter-spacing:.08em" placeholder="e.g. 7KQ2M9XA" aria-label="Pairing code" autoComplete="off" spellcheck="false" value=""/><button type="button" class="ui-btn ui-btn--primary">Pair</button></form><p role="status">Wrong code. Check the pairing code line in the terminal.</p><p>Or reinstall with this command, which includes this browser’s code:</p></div><pre class="gb-engine-cmd"><code>curl -fsSL https://partner-radar.ops.gemboss.ai/bridge/install.sh | sh -s -- --code 5PQFMWW9 --autostart</code></pre><div class="gb-engine-actions"><button type="button" class="ui-btn ui-btn--primary">Copy command</button><span class="gb-engine-said" role="status"></span></div><p class="gb-engine-note">The panel connects as soon as the bridge starts, and the bridge starts with your computer after that. Requires macOS, Node.js, and Claude Code or Codex signed in.</p></div></div></div></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div style=&quot;max-width:360px&quot;&gt;
5168
5293
  &lt;div class=&quot;gb-engine-panel gb-engine-panel--inline gemboss-popover-surface&quot; role=&quot;group&quot; aria-label=&quot;Assistant engine&quot;&gt;
5169
5294
  &lt;div class=&quot;ui-tabs gb-engine-tabs&quot; role=&quot;tablist&quot; aria-label=&quot;Engine, setup and status&quot;&gt;
5170
- &lt;button type=&quot;button&quot; role=&quot;tab&quot; id=&quot;:c89-R0:-tab-engine&quot; aria-controls=&quot;:c89-R0:-pane-engine&quot; aria-selected=&quot;false&quot; tabindex=&quot;-1&quot;&gt;Engine&lt;/button&gt;
5171
- &lt;button type=&quot;button&quot; role=&quot;tab&quot; id=&quot;:c89-R0:-tab-setup&quot; aria-controls=&quot;:c89-R0:-pane-setup&quot; aria-selected=&quot;true&quot; tabindex=&quot;0&quot;&gt;Setup&lt;/button&gt;
5172
- &lt;button type=&quot;button&quot; role=&quot;tab&quot; id=&quot;:c89-R0:-tab-status&quot; aria-controls=&quot;:c89-R0:-pane-status&quot; aria-selected=&quot;false&quot; tabindex=&quot;-1&quot;&gt;Status&lt;/button&gt;
5295
+ &lt;button type=&quot;button&quot; role=&quot;tab&quot; id=&quot;:c91-R0:-tab-engine&quot; aria-controls=&quot;:c91-R0:-pane-engine&quot; aria-selected=&quot;false&quot; tabindex=&quot;-1&quot;&gt;Engine&lt;/button&gt;
5296
+ &lt;button type=&quot;button&quot; role=&quot;tab&quot; id=&quot;:c91-R0:-tab-setup&quot; aria-controls=&quot;:c91-R0:-pane-setup&quot; aria-selected=&quot;true&quot; tabindex=&quot;0&quot;&gt;Setup&lt;/button&gt;
5297
+ &lt;button type=&quot;button&quot; role=&quot;tab&quot; id=&quot;:c91-R0:-tab-status&quot; aria-controls=&quot;:c91-R0:-pane-status&quot; aria-selected=&quot;false&quot; tabindex=&quot;-1&quot;&gt;Status&lt;/button&gt;
5173
5298
  &lt;/div&gt;
5174
- &lt;div class=&quot;gb-engine-pane&quot; role=&quot;tabpanel&quot; id=&quot;:c89-R0:-pane-setup&quot; aria-labelledby=&quot;:c89-R0:-tab-setup&quot;&gt;
5299
+ &lt;div class=&quot;gb-engine-pane&quot; role=&quot;tabpanel&quot; id=&quot;:c91-R0:-pane-setup&quot; aria-labelledby=&quot;:c91-R0:-tab-setup&quot;&gt;
5175
5300
  &lt;p class=&quot;gb-engine-callout gb-engine-callout--down&quot;&gt;
5176
5301
  &lt;strong&gt;Bridge on your machine: not connected.&lt;/strong&gt; The bridge is running on your machine but is not paired with this browser.&lt;/p&gt;
5177
5302
  &lt;div class=&quot;gb-engine-steps&quot;&gt;
@@ -5194,14 +5319,14 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
5194
5319
  &lt;p class=&quot;gb-engine-note&quot;&gt;The panel connects as soon as the bridge starts, and the bridge starts with your computer after that. Requires macOS, Node.js, and Claude Code or Codex signed in.&lt;/p&gt;
5195
5320
  &lt;/div&gt;
5196
5321
  &lt;/div&gt;
5197
- &lt;/div&gt;</code></pre></details></figure><figure class="cat-demo"><figcaption>Chưa thấy cầu nối: hai bước + lệnh cài</figcaption><div class="cat-live"><div style="max-width:360px"><div class="gb-engine-panel gb-engine-panel--inline gemboss-popover-surface" role="group" aria-label="Assistant engine"><div class="ui-tabs gb-engine-tabs" role="tablist" aria-label="Engine, setup and status"><button type="button" role="tab" id=":c90-R0:-tab-engine" aria-controls=":c90-R0:-pane-engine" aria-selected="false" tabindex="-1">Engine</button><button type="button" role="tab" id=":c90-R0:-tab-setup" aria-controls=":c90-R0:-pane-setup" aria-selected="true" tabindex="0">Setup</button><button type="button" role="tab" id=":c90-R0:-tab-status" aria-controls=":c90-R0:-pane-status" aria-selected="false" tabindex="-1">Status</button></div><div class="gb-engine-pane" role="tabpanel" id=":c90-R0:-pane-setup" aria-labelledby=":c90-R0:-tab-setup"><p class="gb-engine-callout gb-engine-callout--down"><strong>Bridge on your machine: not set up.</strong></p><div class="gb-engine-steps"><ol><li>Open <strong>Terminal</strong> (⌘ + Space, type Terminal).</li><li>Paste this command and press Enter (about 1 minute).</li></ol></div><pre class="gb-engine-cmd"><code>curl -fsSL https://partner-radar.ops.gemboss.ai/bridge/install.sh | sh -s -- --code 5PQFMWW9 --autostart</code></pre><div class="gb-engine-actions"><button type="button" class="ui-btn ui-btn--primary">Copy command</button><span class="gb-engine-said" role="status"></span></div><p class="gb-engine-note">The panel connects as soon as the bridge starts, and the bridge starts with your computer after that. Requires macOS, Node.js, and Claude Code or Codex signed in.</p></div></div></div></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div style=&quot;max-width:360px&quot;&gt;
5322
+ &lt;/div&gt;</code></pre></details></figure><figure class="cat-demo"><figcaption>Chưa thấy cầu nối: hai bước + lệnh cài</figcaption><div class="cat-live"><div style="max-width:360px"><div class="gb-engine-panel gb-engine-panel--inline gemboss-popover-surface" role="group" aria-label="Assistant engine"><div class="ui-tabs gb-engine-tabs" role="tablist" aria-label="Engine, setup and status"><button type="button" role="tab" id=":c92-R0:-tab-engine" aria-controls=":c92-R0:-pane-engine" aria-selected="false" tabindex="-1">Engine</button><button type="button" role="tab" id=":c92-R0:-tab-setup" aria-controls=":c92-R0:-pane-setup" aria-selected="true" tabindex="0">Setup</button><button type="button" role="tab" id=":c92-R0:-tab-status" aria-controls=":c92-R0:-pane-status" aria-selected="false" tabindex="-1">Status</button></div><div class="gb-engine-pane" role="tabpanel" id=":c92-R0:-pane-setup" aria-labelledby=":c92-R0:-tab-setup"><p class="gb-engine-callout gb-engine-callout--down"><strong>Bridge on your machine: not set up.</strong></p><div class="gb-engine-steps"><ol><li>Open <strong>Terminal</strong> (⌘ + Space, type Terminal).</li><li>Paste this command and press Enter (about 1 minute).</li></ol></div><pre class="gb-engine-cmd"><code>curl -fsSL https://partner-radar.ops.gemboss.ai/bridge/install.sh | sh -s -- --code 5PQFMWW9 --autostart</code></pre><div class="gb-engine-actions"><button type="button" class="ui-btn ui-btn--primary">Copy command</button><span class="gb-engine-said" role="status"></span></div><p class="gb-engine-note">The panel connects as soon as the bridge starts, and the bridge starts with your computer after that. Requires macOS, Node.js, and Claude Code or Codex signed in.</p></div></div></div></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div style=&quot;max-width:360px&quot;&gt;
5198
5323
  &lt;div class=&quot;gb-engine-panel gb-engine-panel--inline gemboss-popover-surface&quot; role=&quot;group&quot; aria-label=&quot;Assistant engine&quot;&gt;
5199
5324
  &lt;div class=&quot;ui-tabs gb-engine-tabs&quot; role=&quot;tablist&quot; aria-label=&quot;Engine, setup and status&quot;&gt;
5200
- &lt;button type=&quot;button&quot; role=&quot;tab&quot; id=&quot;:c90-R0:-tab-engine&quot; aria-controls=&quot;:c90-R0:-pane-engine&quot; aria-selected=&quot;false&quot; tabindex=&quot;-1&quot;&gt;Engine&lt;/button&gt;
5201
- &lt;button type=&quot;button&quot; role=&quot;tab&quot; id=&quot;:c90-R0:-tab-setup&quot; aria-controls=&quot;:c90-R0:-pane-setup&quot; aria-selected=&quot;true&quot; tabindex=&quot;0&quot;&gt;Setup&lt;/button&gt;
5202
- &lt;button type=&quot;button&quot; role=&quot;tab&quot; id=&quot;:c90-R0:-tab-status&quot; aria-controls=&quot;:c90-R0:-pane-status&quot; aria-selected=&quot;false&quot; tabindex=&quot;-1&quot;&gt;Status&lt;/button&gt;
5325
+ &lt;button type=&quot;button&quot; role=&quot;tab&quot; id=&quot;:c92-R0:-tab-engine&quot; aria-controls=&quot;:c92-R0:-pane-engine&quot; aria-selected=&quot;false&quot; tabindex=&quot;-1&quot;&gt;Engine&lt;/button&gt;
5326
+ &lt;button type=&quot;button&quot; role=&quot;tab&quot; id=&quot;:c92-R0:-tab-setup&quot; aria-controls=&quot;:c92-R0:-pane-setup&quot; aria-selected=&quot;true&quot; tabindex=&quot;0&quot;&gt;Setup&lt;/button&gt;
5327
+ &lt;button type=&quot;button&quot; role=&quot;tab&quot; id=&quot;:c92-R0:-tab-status&quot; aria-controls=&quot;:c92-R0:-pane-status&quot; aria-selected=&quot;false&quot; tabindex=&quot;-1&quot;&gt;Status&lt;/button&gt;
5203
5328
  &lt;/div&gt;
5204
- &lt;div class=&quot;gb-engine-pane&quot; role=&quot;tabpanel&quot; id=&quot;:c90-R0:-pane-setup&quot; aria-labelledby=&quot;:c90-R0:-tab-setup&quot;&gt;
5329
+ &lt;div class=&quot;gb-engine-pane&quot; role=&quot;tabpanel&quot; id=&quot;:c92-R0:-pane-setup&quot; aria-labelledby=&quot;:c92-R0:-tab-setup&quot;&gt;
5205
5330
  &lt;p class=&quot;gb-engine-callout gb-engine-callout--down&quot;&gt;
5206
5331
  &lt;strong&gt;Bridge on your machine: not set up.&lt;/strong&gt;
5207
5332
  &lt;/p&gt;
@@ -5222,16 +5347,16 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
5222
5347
  &lt;p class=&quot;gb-engine-note&quot;&gt;The panel connects as soon as the bridge starts, and the bridge starts with your computer after that. Requires macOS, Node.js, and Claude Code or Codex signed in.&lt;/p&gt;
5223
5348
  &lt;/div&gt;
5224
5349
  &lt;/div&gt;
5225
- &lt;/div&gt;</code></pre></details></figure><figure class="cat-demo"><figcaption>Đã nối, bản cũ: Status với phiên bản, tự khởi động, Check again / Stop / Remove</figcaption><div class="cat-live"><div style="max-width:360px"><div class="gb-engine-panel gb-engine-panel--inline gemboss-popover-surface" role="group" aria-label="Assistant engine"><div class="ui-tabs gb-engine-tabs" role="tablist" aria-label="Engine, setup and status"><button type="button" role="tab" id=":c91-R0:-tab-engine" aria-controls=":c91-R0:-pane-engine" aria-selected="false" tabindex="-1">Engine</button><button type="button" role="tab" id=":c91-R0:-tab-setup" aria-controls=":c91-R0:-pane-setup" aria-selected="false" tabindex="-1">Setup<span class="gb-engine-dot gb-engine-dot--warn" role="img" aria-label="Update available"></span></button><button type="button" role="tab" id=":c91-R0:-tab-status" aria-controls=":c91-R0:-pane-status" aria-selected="true" tabindex="0">Status</button></div><div class="gb-engine-pane" role="tabpanel" id=":c91-R0:-pane-status" aria-labelledby=":c91-R0:-tab-status"><dl class="gb-engine-rows"><dt>Bridge on your machine</dt><dd><span class="gb-engine-dot gb-engine-dot--warn" aria-hidden="true"></span> Outdated</dd><dt>Version</dt><dd>2 · Latest 3</dd><dt>Starts at sign-in</dt><dd>Yes</dd></dl><p class="gb-engine-note">This bridge is older than the one the panel expects: update it once (Setup).</p><div class="gb-engine-actions"><button type="button" class="ui-btn">Check again</button><button type="button" class="ui-btn">Stop bridge</button><button type="button" class="ui-btn ui-btn--critical">Remove from this machine</button></div></div></div></div></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div style=&quot;max-width:360px&quot;&gt;
5350
+ &lt;/div&gt;</code></pre></details></figure><figure class="cat-demo"><figcaption>Đã nối, bản cũ: Status với phiên bản, tự khởi động, Check again / Stop / Remove</figcaption><div class="cat-live"><div style="max-width:360px"><div class="gb-engine-panel gb-engine-panel--inline gemboss-popover-surface" role="group" aria-label="Assistant engine"><div class="ui-tabs gb-engine-tabs" role="tablist" aria-label="Engine, setup and status"><button type="button" role="tab" id=":c93-R0:-tab-engine" aria-controls=":c93-R0:-pane-engine" aria-selected="false" tabindex="-1">Engine</button><button type="button" role="tab" id=":c93-R0:-tab-setup" aria-controls=":c93-R0:-pane-setup" aria-selected="false" tabindex="-1">Setup<span class="gb-engine-dot gb-engine-dot--warn" role="img" aria-label="Update available"></span></button><button type="button" role="tab" id=":c93-R0:-tab-status" aria-controls=":c93-R0:-pane-status" aria-selected="true" tabindex="0">Status</button></div><div class="gb-engine-pane" role="tabpanel" id=":c93-R0:-pane-status" aria-labelledby=":c93-R0:-tab-status"><dl class="gb-engine-rows"><dt>Bridge on your machine</dt><dd><span class="gb-engine-dot gb-engine-dot--warn" aria-hidden="true"></span> Outdated</dd><dt>Version</dt><dd>2 · Latest 3</dd><dt>Starts at sign-in</dt><dd>Yes</dd></dl><p class="gb-engine-note">This bridge is older than the one the panel expects: update it once (Setup).</p><div class="gb-engine-actions"><button type="button" class="ui-btn">Check again</button><button type="button" class="ui-btn">Stop bridge</button><button type="button" class="ui-btn ui-btn--critical">Remove from this machine</button></div></div></div></div></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div style=&quot;max-width:360px&quot;&gt;
5226
5351
  &lt;div class=&quot;gb-engine-panel gb-engine-panel--inline gemboss-popover-surface&quot; role=&quot;group&quot; aria-label=&quot;Assistant engine&quot;&gt;
5227
5352
  &lt;div class=&quot;ui-tabs gb-engine-tabs&quot; role=&quot;tablist&quot; aria-label=&quot;Engine, setup and status&quot;&gt;
5228
- &lt;button type=&quot;button&quot; role=&quot;tab&quot; id=&quot;:c91-R0:-tab-engine&quot; aria-controls=&quot;:c91-R0:-pane-engine&quot; aria-selected=&quot;false&quot; tabindex=&quot;-1&quot;&gt;Engine&lt;/button&gt;
5229
- &lt;button type=&quot;button&quot; role=&quot;tab&quot; id=&quot;:c91-R0:-tab-setup&quot; aria-controls=&quot;:c91-R0:-pane-setup&quot; aria-selected=&quot;false&quot; tabindex=&quot;-1&quot;&gt;Setup&lt;span class=&quot;gb-engine-dot gb-engine-dot--warn&quot; role=&quot;img&quot; aria-label=&quot;Update available&quot;&gt;
5353
+ &lt;button type=&quot;button&quot; role=&quot;tab&quot; id=&quot;:c93-R0:-tab-engine&quot; aria-controls=&quot;:c93-R0:-pane-engine&quot; aria-selected=&quot;false&quot; tabindex=&quot;-1&quot;&gt;Engine&lt;/button&gt;
5354
+ &lt;button type=&quot;button&quot; role=&quot;tab&quot; id=&quot;:c93-R0:-tab-setup&quot; aria-controls=&quot;:c93-R0:-pane-setup&quot; aria-selected=&quot;false&quot; tabindex=&quot;-1&quot;&gt;Setup&lt;span class=&quot;gb-engine-dot gb-engine-dot--warn&quot; role=&quot;img&quot; aria-label=&quot;Update available&quot;&gt;
5230
5355
  &lt;/span&gt;
5231
5356
  &lt;/button&gt;
5232
- &lt;button type=&quot;button&quot; role=&quot;tab&quot; id=&quot;:c91-R0:-tab-status&quot; aria-controls=&quot;:c91-R0:-pane-status&quot; aria-selected=&quot;true&quot; tabindex=&quot;0&quot;&gt;Status&lt;/button&gt;
5357
+ &lt;button type=&quot;button&quot; role=&quot;tab&quot; id=&quot;:c93-R0:-tab-status&quot; aria-controls=&quot;:c93-R0:-pane-status&quot; aria-selected=&quot;true&quot; tabindex=&quot;0&quot;&gt;Status&lt;/button&gt;
5233
5358
  &lt;/div&gt;
5234
- &lt;div class=&quot;gb-engine-pane&quot; role=&quot;tabpanel&quot; id=&quot;:c91-R0:-pane-status&quot; aria-labelledby=&quot;:c91-R0:-tab-status&quot;&gt;
5359
+ &lt;div class=&quot;gb-engine-pane&quot; role=&quot;tabpanel&quot; id=&quot;:c93-R0:-pane-status&quot; aria-labelledby=&quot;:c93-R0:-tab-status&quot;&gt;
5235
5360
  &lt;dl class=&quot;gb-engine-rows&quot;&gt;
5236
5361
  &lt;dt&gt;Bridge on your machine&lt;/dt&gt;
5237
5362
  &lt;dd&gt;
@@ -5251,7 +5376,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
5251
5376
  &lt;/div&gt;
5252
5377
  &lt;/div&gt;
5253
5378
  &lt;/div&gt;</code></pre></details></figure></section>
5254
- <section id="assistant-chat"><h2>Trợ lý: khung chat (0.29.0)</h2><p><code>AssistantChat</code> + các mảnh (<code>ChatThread</code>, <code>ChatMessage</code>, <code>ChatMarkdown</code>, <code>ChatSteps</code>, <code>ChatPending</code>, <code>ChatStarters</code>, <code>ChatMeta</code>, <code>ChatError</code>, <code>ChatComposer</code>, <code>ChatAttach</code>) và <code>useChatTurns</code> (ghi lượt theo id). Bề mặt chỉ cấp dữ liệu + hành động; HTML thuần dùng <code>chat-plain.js</code> (cùng markup). CSS: <code>chat.css</code> + <code>chat-composer.css</code> + entry <code>assistant-chat.css</code>, component tự nạp.</p><figure class="cat-demo"><figcaption>Rỗng: lời mở + ví dụ điền sẵn + câu hỏi gợi ý (xuống dòng, không bị cắt)</figcaption><div class="cat-live"><div style="width:420px;max-width:100%;height:520px;display:flex;border:1px solid var(--gemboss-divider);border-radius:12px;overflow:hidden"><div class="gb-chat"><div class="gemboss-ec-scroll" role="log" aria-label="Conversation"><div class="gemboss-ec-msg assistant"><div class="gemboss-ec-bubble"><p class="gemboss-md-p"><strong>Describe</strong> a meeting, call or message with a partner. The AI proposes the updates; you click <strong>Save</strong>.</p></div><div class="gemboss-ec-starters"><button type="button" class="gemboss-ec-starter gb-chat-starter"><span class="gb-chat-starter-hint">Example, click to fill in</span>Had dinner with Amit Porwal from Wiser yesterday; promised a co-marketing proposal next week.</button></div><p class="gb-chat-label">Or ask about partners in the radar:</p><div class="gemboss-ec-starters"><button type="button" class="gemboss-ec-starter gb-chat-starter">Which partners have a next step due in the next 2 weeks?</button><button type="button" class="gemboss-ec-starter gb-chat-starter">Summarize partner meetings from the last 30 days</button></div></div></div><div class="gemboss-ec-input" data-density="full"><textarea rows="1" aria-label="Message" placeholder="Ask, or describe a partner meeting…"></textarea><div class="gemboss-ec-toolbar"><div class="gemboss-ec-toolbar-lead"><span class="gb-engine"><button type="button" class="gb-engine-chip has-mark" aria-haspopup="dialog" aria-expanded="false" aria-controls=":c92-Rv:" aria-label="Engine: Claude Code · Opus" title="Engine: Claude Code · Opus"><span class="gb-engine-dot gb-engine-dot--ok" aria-hidden="true"></span><span class="gb-engine-chiplabel">Claude Code<span class="gb-engine-chipsub"> · Opus</span></span><span class="gb-engine-chipmark"><svg class="gemboss-engine-mark" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" focusable="false"><path d="M12 13.7L21.6 12.5Q22.2 12 21.6 11.5L12 10.3Z M10.8 13.2L18.43 19.14Q19.21 19.21 19.14 18.43L13.2 10.8Z M10.3 12L11.5 21.6Q12 22.2 12.5 21.6L13.7 12Z M10.8 10.8L4.86 18.43Q4.79 19.21 5.57 19.14L13.2 13.2Z M12 10.3L2.4 11.5Q1.8 12 2.4 12.5L12 13.7Z M13.2 10.8L5.57 4.86Q4.79 4.79 4.86 5.57L10.8 13.2Z M13.7 12L12.5 2.4Q12 1.8 11.5 2.4L10.3 12Z M13.2 13.2L19.14 5.57Q19.21 4.79 18.43 4.86L10.8 10.8Z" fill-rule="nonzero"></path></svg></span></button><div id=":c92-Rv:" class="gb-engine-panel gemboss-popover-surface" role="dialog" aria-label="Assistant engine" popover="manual" hidden=""></div></span></div><div class="gemboss-ec-toolbar-tools"><button type="button" class="gemboss-ec-attach-btn" aria-label="Attach a file" title="Attach a file"><svg viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M21.4 11.1l-8.5 8.5a5.5 5.5 0 01-7.8-7.8l8.5-8.5a3.7 3.7 0 015.2 5.2l-8.5 8.5a1.8 1.8 0 01-2.6-2.6l7.8-7.8" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg></button><input type="file" hidden="" tabindex="-1"/></div><button type="submit" disabled="" aria-label="Send" title="Send"><svg viewBox="0 0 20 20" aria-hidden="true" focusable="false"><path d="M10.53 4.47a.75.75 0 0 0-1.06 0l-4.5 4.5a.75.75 0 0 0 1.06 1.06l3.22-3.22v8.69a.75.75 0 0 0 1.5 0v-8.69l3.22 3.22a.75.75 0 1 0 1.06-1.06l-4.5-4.5Z"></path></svg></button></div></div></div></div></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div style=&quot;width:420px;max-width:100%;height:520px;display:flex;border:1px solid var(--gemboss-divider);border-radius:12px;overflow:hidden&quot;&gt;
5379
+ <section id="assistant-chat"><h2>Trợ lý: khung chat (0.29.0)</h2><p><code>AssistantChat</code> + các mảnh (<code>ChatThread</code>, <code>ChatMessage</code>, <code>ChatMarkdown</code>, <code>ChatSteps</code>, <code>ChatPending</code>, <code>ChatStarters</code>, <code>ChatMeta</code>, <code>ChatError</code>, <code>ChatComposer</code>, <code>ChatAttach</code>) và <code>useChatTurns</code> (ghi lượt theo id). Bề mặt chỉ cấp dữ liệu + hành động; HTML thuần dùng <code>chat-plain.js</code> (cùng markup). CSS: <code>chat.css</code> + <code>chat-composer.css</code> + entry <code>assistant-chat.css</code>, component tự nạp.</p><figure class="cat-demo"><figcaption>Rỗng: lời mở + ví dụ điền sẵn + câu hỏi gợi ý (xuống dòng, không bị cắt)</figcaption><div class="cat-live"><div style="width:420px;max-width:100%;height:520px;display:flex;border:1px solid var(--gemboss-divider);border-radius:12px;overflow:hidden"><div class="gb-chat"><div class="gemboss-ec-scroll" role="log" aria-label="Conversation"><div class="gemboss-ec-msg assistant"><div class="gemboss-ec-bubble"><p class="gemboss-md-p"><strong>Describe</strong> a meeting, call or message with a partner. The AI proposes the updates; you click <strong>Save</strong>.</p></div><div class="gemboss-ec-starters"><button type="button" class="gemboss-ec-starter gb-chat-starter"><span class="gb-chat-starter-hint">Example, click to fill in</span>Had dinner with Amit Porwal from Wiser yesterday; promised a co-marketing proposal next week.</button></div><p class="gb-chat-label">Or ask about partners in the radar:</p><div class="gemboss-ec-starters"><button type="button" class="gemboss-ec-starter gb-chat-starter">Which partners have a next step due in the next 2 weeks?</button><button type="button" class="gemboss-ec-starter gb-chat-starter">Summarize partner meetings from the last 30 days</button></div></div></div><div class="gemboss-ec-input" data-density="full"><textarea rows="1" aria-label="Message" placeholder="Ask, or describe a partner meeting…"></textarea><div class="gemboss-ec-toolbar"><div class="gemboss-ec-toolbar-lead"><span class="gb-engine"><button type="button" class="gb-engine-chip has-mark" aria-haspopup="dialog" aria-expanded="false" aria-controls=":c94-Rv:" aria-label="Engine: Claude Code · Opus" title="Engine: Claude Code · Opus"><span class="gb-engine-dot gb-engine-dot--ok" aria-hidden="true"></span><span class="gb-engine-chiplabel">Claude Code<span class="gb-engine-chipsub"> · Opus</span></span><span class="gb-engine-chipmark"><svg class="gemboss-engine-mark" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" focusable="false"><path d="M12 13.7L21.6 12.5Q22.2 12 21.6 11.5L12 10.3Z M10.8 13.2L18.43 19.14Q19.21 19.21 19.14 18.43L13.2 10.8Z M10.3 12L11.5 21.6Q12 22.2 12.5 21.6L13.7 12Z M10.8 10.8L4.86 18.43Q4.79 19.21 5.57 19.14L13.2 13.2Z M12 10.3L2.4 11.5Q1.8 12 2.4 12.5L12 13.7Z M13.2 10.8L5.57 4.86Q4.79 4.79 4.86 5.57L10.8 13.2Z M13.7 12L12.5 2.4Q12 1.8 11.5 2.4L10.3 12Z M13.2 13.2L19.14 5.57Q19.21 4.79 18.43 4.86L10.8 10.8Z" fill-rule="nonzero"></path></svg></span></button><div id=":c94-Rv:" class="gb-engine-panel gemboss-popover-surface" role="dialog" aria-label="Assistant engine" popover="manual" hidden=""></div></span></div><div class="gemboss-ec-toolbar-tools"><button type="button" class="gemboss-ec-attach-btn" aria-label="Attach a file" title="Attach a file"><svg viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M21.4 11.1l-8.5 8.5a5.5 5.5 0 01-7.8-7.8l8.5-8.5a3.7 3.7 0 015.2 5.2l-8.5 8.5a1.8 1.8 0 01-2.6-2.6l7.8-7.8" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg></button><input type="file" hidden="" tabindex="-1"/></div><button type="submit" disabled="" aria-label="Send" title="Send"><svg viewBox="0 0 20 20" aria-hidden="true" focusable="false"><path d="M10.53 4.47a.75.75 0 0 0-1.06 0l-4.5 4.5a.75.75 0 0 0 1.06 1.06l3.22-3.22v8.69a.75.75 0 0 0 1.5 0v-8.69l3.22 3.22a.75.75 0 1 0 1.06-1.06l-4.5-4.5Z"></path></svg></button></div></div></div></div></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div style=&quot;width:420px;max-width:100%;height:520px;display:flex;border:1px solid var(--gemboss-divider);border-radius:12px;overflow:hidden&quot;&gt;
5255
5380
  &lt;div class=&quot;gb-chat&quot;&gt;
5256
5381
  &lt;div class=&quot;gemboss-ec-scroll&quot; role=&quot;log&quot; aria-label=&quot;Conversation&quot;&gt;
5257
5382
  &lt;div class=&quot;gemboss-ec-msg assistant&quot;&gt;
@@ -5276,7 +5401,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
5276
5401
  &lt;div class=&quot;gemboss-ec-toolbar&quot;&gt;
5277
5402
  &lt;div class=&quot;gemboss-ec-toolbar-lead&quot;&gt;
5278
5403
  &lt;span class=&quot;gb-engine&quot;&gt;
5279
- &lt;button type=&quot;button&quot; class=&quot;gb-engine-chip has-mark&quot; aria-haspopup=&quot;dialog&quot; aria-expanded=&quot;false&quot; aria-controls=&quot;:c92-Rv:&quot; aria-label=&quot;Engine: Claude Code · Opus&quot; title=&quot;Engine: Claude Code · Opus&quot;&gt;
5404
+ &lt;button type=&quot;button&quot; class=&quot;gb-engine-chip has-mark&quot; aria-haspopup=&quot;dialog&quot; aria-expanded=&quot;false&quot; aria-controls=&quot;:c94-Rv:&quot; aria-label=&quot;Engine: Claude Code · Opus&quot; title=&quot;Engine: Claude Code · Opus&quot;&gt;
5280
5405
  &lt;span class=&quot;gb-engine-dot gb-engine-dot--ok&quot; aria-hidden=&quot;true&quot;&gt;
5281
5406
  &lt;/span&gt;
5282
5407
  &lt;span class=&quot;gb-engine-chiplabel&quot;&gt;Claude Code&lt;span class=&quot;gb-engine-chipsub&quot;&gt; · Opus&lt;/span&gt;
@@ -5288,7 +5413,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
5288
5413
  &lt;/svg&gt;
5289
5414
  &lt;/span&gt;
5290
5415
  &lt;/button&gt;
5291
- &lt;div id=&quot;:c92-Rv:&quot; class=&quot;gb-engine-panel gemboss-popover-surface&quot; role=&quot;dialog&quot; aria-label=&quot;Assistant engine&quot; popover=&quot;manual&quot; hidden=&quot;&quot;&gt;
5416
+ &lt;div id=&quot;:c94-Rv:&quot; class=&quot;gb-engine-panel gemboss-popover-surface&quot; role=&quot;dialog&quot; aria-label=&quot;Assistant engine&quot; popover=&quot;manual&quot; hidden=&quot;&quot;&gt;
5292
5417
  &lt;/div&gt;
5293
5418
  &lt;/span&gt;
5294
5419
  &lt;/div&gt;
@@ -5310,7 +5435,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
5310
5435
  &lt;/div&gt;
5311
5436
  &lt;/div&gt;
5312
5437
  &lt;/div&gt;
5313
- &lt;/div&gt;</code></pre></details></figure><figure class="cat-demo"><figcaption>Đang chạy: các bước in rồi đứng yên, một nhịp ✳ duy nhất chuyển động; Dừng thay chỗ Gửi</figcaption><div class="cat-live"><div style="width:420px;max-width:100%;height:520px;display:flex;border:1px solid var(--gemboss-divider);border-radius:12px;overflow:hidden"><div class="gb-chat"><div class="gemboss-ec-scroll" role="log" aria-label="Conversation" aria-busy="true"><div class="gemboss-ec-msg user"><div class="gemboss-ec-bubble">Who is exploring a partnership, and when did we last talk?</div></div><div class="gemboss-ec-msg assistant"><ul class="gemboss-narr" aria-label="What it is doing"><li class="gemboss-narr-row ok"><span class="gemboss-narr-dot" aria-hidden="true">✓</span><span class="gemboss-narr-text">Search partners<span class="gb-chat-target"> Wiser</span></span></li><li class="gemboss-narr-row ok"><span class="gemboss-narr-dot" aria-hidden="true">✓</span><span class="gemboss-narr-text">Read history<span class="gb-chat-target"> Amit Porwal</span></span></li><li class="gemboss-narr-row trace ok"><span class="gemboss-narr-dot" aria-hidden="true">⏺</span><details class="gemboss-narr-trace"><summary><code>partner_timeline(id: 418, days: 30)</code></summary><div class="gemboss-narr-trace-body"><code>{ &quot;events&quot;: 6, &quot;last&quot;: &quot;2026-10-05&quot; }</code></div></details></li><li class="gemboss-narr-row running"><span class="gemboss-narr-dot" aria-hidden="true">·</span><span class="gemboss-narr-text">Draft a proposal</span></li></ul><div class="gemboss-ec-pending" role="status"><span class="gemboss-assistant-sronly">Working</span><span class="gemboss-ec-pending-star" aria-hidden="true">✳</span><span class="gemboss-ec-pending-verb" aria-hidden="true">Working…</span><span class="gemboss-ec-pending-meta" aria-hidden="true">0s</span></div></div></div><div class="gemboss-ec-input" data-density="full"><textarea rows="1" aria-label="Message" placeholder="Ask, or describe a partner meeting…"></textarea><div class="gemboss-ec-toolbar"><div class="gemboss-ec-toolbar-lead"><span class="gb-engine"><button type="button" class="gb-engine-chip has-mark" aria-haspopup="dialog" aria-expanded="false" aria-controls=":c93-Rv:" aria-label="Engine: Claude Code · Opus" title="Engine: Claude Code · Opus"><span class="gb-engine-dot gb-engine-dot--ok" aria-hidden="true"></span><span class="gb-engine-chiplabel">Claude Code<span class="gb-engine-chipsub"> · Opus</span></span><span class="gb-engine-chipmark"><svg class="gemboss-engine-mark" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" focusable="false"><path d="M12 13.7L21.6 12.5Q22.2 12 21.6 11.5L12 10.3Z M10.8 13.2L18.43 19.14Q19.21 19.21 19.14 18.43L13.2 10.8Z M10.3 12L11.5 21.6Q12 22.2 12.5 21.6L13.7 12Z M10.8 10.8L4.86 18.43Q4.79 19.21 5.57 19.14L13.2 13.2Z M12 10.3L2.4 11.5Q1.8 12 2.4 12.5L12 13.7Z M13.2 10.8L5.57 4.86Q4.79 4.79 4.86 5.57L10.8 13.2Z M13.7 12L12.5 2.4Q12 1.8 11.5 2.4L10.3 12Z M13.2 13.2L19.14 5.57Q19.21 4.79 18.43 4.86L10.8 10.8Z" fill-rule="nonzero"></path></svg></span></button><div id=":c93-Rv:" class="gb-engine-panel gemboss-popover-surface" role="dialog" aria-label="Assistant engine" popover="manual" hidden=""></div></span></div><div class="gemboss-ec-toolbar-tools"><button type="button" class="gemboss-ec-attach-btn" aria-label="Attach a file" title="Attach a file"><svg viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M21.4 11.1l-8.5 8.5a5.5 5.5 0 01-7.8-7.8l8.5-8.5a3.7 3.7 0 015.2 5.2l-8.5 8.5a1.8 1.8 0 01-2.6-2.6l7.8-7.8" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg></button><input type="file" hidden="" tabindex="-1"/></div><button type="button" class="gemboss-ec-stop" aria-label="Stop" title="Stop"><svg viewBox="0 0 12 12" aria-hidden="true" focusable="false"><rect x="1" y="1" width="10" height="10" rx="2"></rect></svg></button></div></div></div></div></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div style=&quot;width:420px;max-width:100%;height:520px;display:flex;border:1px solid var(--gemboss-divider);border-radius:12px;overflow:hidden&quot;&gt;
5438
+ &lt;/div&gt;</code></pre></details></figure><figure class="cat-demo"><figcaption>Đang chạy: các bước in rồi đứng yên, một nhịp ✳ duy nhất chuyển động; Dừng thay chỗ Gửi</figcaption><div class="cat-live"><div style="width:420px;max-width:100%;height:520px;display:flex;border:1px solid var(--gemboss-divider);border-radius:12px;overflow:hidden"><div class="gb-chat"><div class="gemboss-ec-scroll" role="log" aria-label="Conversation" aria-busy="true"><div class="gemboss-ec-msg user"><div class="gemboss-ec-bubble">Who is exploring a partnership, and when did we last talk?</div></div><div class="gemboss-ec-msg assistant"><ul class="gemboss-narr" aria-label="What it is doing"><li class="gemboss-narr-row ok"><span class="gemboss-narr-dot" aria-hidden="true">✓</span><span class="gemboss-narr-text">Search partners<span class="gb-chat-target"> Wiser</span></span></li><li class="gemboss-narr-row ok"><span class="gemboss-narr-dot" aria-hidden="true">✓</span><span class="gemboss-narr-text">Read history<span class="gb-chat-target"> Amit Porwal</span></span></li><li class="gemboss-narr-row trace ok"><span class="gemboss-narr-dot" aria-hidden="true">⏺</span><details class="gemboss-narr-trace"><summary><code>partner_timeline(id: 418, days: 30)</code></summary><div class="gemboss-narr-trace-body"><code>{ &quot;events&quot;: 6, &quot;last&quot;: &quot;2026-10-05&quot; }</code></div></details></li><li class="gemboss-narr-row running"><span class="gemboss-narr-dot" aria-hidden="true">·</span><span class="gemboss-narr-text">Draft a proposal</span></li></ul><div class="gemboss-ec-pending" role="status"><span class="gemboss-assistant-sronly">Working</span><span class="gemboss-ec-pending-star" aria-hidden="true">✳</span><span class="gemboss-ec-pending-verb" aria-hidden="true">Working…</span><span class="gemboss-ec-pending-meta" aria-hidden="true">0s</span></div></div></div><div class="gemboss-ec-input" data-density="full"><textarea rows="1" aria-label="Message" placeholder="Ask, or describe a partner meeting…"></textarea><div class="gemboss-ec-toolbar"><div class="gemboss-ec-toolbar-lead"><span class="gb-engine"><button type="button" class="gb-engine-chip has-mark" aria-haspopup="dialog" aria-expanded="false" aria-controls=":c95-Rv:" aria-label="Engine: Claude Code · Opus" title="Engine: Claude Code · Opus"><span class="gb-engine-dot gb-engine-dot--ok" aria-hidden="true"></span><span class="gb-engine-chiplabel">Claude Code<span class="gb-engine-chipsub"> · Opus</span></span><span class="gb-engine-chipmark"><svg class="gemboss-engine-mark" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" focusable="false"><path d="M12 13.7L21.6 12.5Q22.2 12 21.6 11.5L12 10.3Z M10.8 13.2L18.43 19.14Q19.21 19.21 19.14 18.43L13.2 10.8Z M10.3 12L11.5 21.6Q12 22.2 12.5 21.6L13.7 12Z M10.8 10.8L4.86 18.43Q4.79 19.21 5.57 19.14L13.2 13.2Z M12 10.3L2.4 11.5Q1.8 12 2.4 12.5L12 13.7Z M13.2 10.8L5.57 4.86Q4.79 4.79 4.86 5.57L10.8 13.2Z M13.7 12L12.5 2.4Q12 1.8 11.5 2.4L10.3 12Z M13.2 13.2L19.14 5.57Q19.21 4.79 18.43 4.86L10.8 10.8Z" fill-rule="nonzero"></path></svg></span></button><div id=":c95-Rv:" class="gb-engine-panel gemboss-popover-surface" role="dialog" aria-label="Assistant engine" popover="manual" hidden=""></div></span></div><div class="gemboss-ec-toolbar-tools"><button type="button" class="gemboss-ec-attach-btn" aria-label="Attach a file" title="Attach a file"><svg viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M21.4 11.1l-8.5 8.5a5.5 5.5 0 01-7.8-7.8l8.5-8.5a3.7 3.7 0 015.2 5.2l-8.5 8.5a1.8 1.8 0 01-2.6-2.6l7.8-7.8" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg></button><input type="file" hidden="" tabindex="-1"/></div><button type="button" class="gemboss-ec-stop" aria-label="Stop" title="Stop"><svg viewBox="0 0 12 12" aria-hidden="true" focusable="false"><rect x="1" y="1" width="10" height="10" rx="2"></rect></svg></button></div></div></div></div></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div style=&quot;width:420px;max-width:100%;height:520px;display:flex;border:1px solid var(--gemboss-divider);border-radius:12px;overflow:hidden&quot;&gt;
5314
5439
  &lt;div class=&quot;gb-chat&quot;&gt;
5315
5440
  &lt;div class=&quot;gemboss-ec-scroll&quot; role=&quot;log&quot; aria-label=&quot;Conversation&quot; aria-busy=&quot;true&quot;&gt;
5316
5441
  &lt;div class=&quot;gemboss-ec-msg user&quot;&gt;
@@ -5358,7 +5483,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
5358
5483
  &lt;div class=&quot;gemboss-ec-toolbar&quot;&gt;
5359
5484
  &lt;div class=&quot;gemboss-ec-toolbar-lead&quot;&gt;
5360
5485
  &lt;span class=&quot;gb-engine&quot;&gt;
5361
- &lt;button type=&quot;button&quot; class=&quot;gb-engine-chip has-mark&quot; aria-haspopup=&quot;dialog&quot; aria-expanded=&quot;false&quot; aria-controls=&quot;:c93-Rv:&quot; aria-label=&quot;Engine: Claude Code · Opus&quot; title=&quot;Engine: Claude Code · Opus&quot;&gt;
5486
+ &lt;button type=&quot;button&quot; class=&quot;gb-engine-chip has-mark&quot; aria-haspopup=&quot;dialog&quot; aria-expanded=&quot;false&quot; aria-controls=&quot;:c95-Rv:&quot; aria-label=&quot;Engine: Claude Code · Opus&quot; title=&quot;Engine: Claude Code · Opus&quot;&gt;
5362
5487
  &lt;span class=&quot;gb-engine-dot gb-engine-dot--ok&quot; aria-hidden=&quot;true&quot;&gt;
5363
5488
  &lt;/span&gt;
5364
5489
  &lt;span class=&quot;gb-engine-chiplabel&quot;&gt;Claude Code&lt;span class=&quot;gb-engine-chipsub&quot;&gt; · Opus&lt;/span&gt;
@@ -5370,7 +5495,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
5370
5495
  &lt;/svg&gt;
5371
5496
  &lt;/span&gt;
5372
5497
  &lt;/button&gt;
5373
- &lt;div id=&quot;:c93-Rv:&quot; class=&quot;gb-engine-panel gemboss-popover-surface&quot; role=&quot;dialog&quot; aria-label=&quot;Assistant engine&quot; popover=&quot;manual&quot; hidden=&quot;&quot;&gt;
5498
+ &lt;div id=&quot;:c95-Rv:&quot; class=&quot;gb-engine-panel gemboss-popover-surface&quot; role=&quot;dialog&quot; aria-label=&quot;Assistant engine&quot; popover=&quot;manual&quot; hidden=&quot;&quot;&gt;
5374
5499
  &lt;/div&gt;
5375
5500
  &lt;/span&gt;
5376
5501
  &lt;/div&gt;
@@ -5392,7 +5517,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
5392
5517
  &lt;/div&gt;
5393
5518
  &lt;/div&gt;
5394
5519
  &lt;/div&gt;
5395
- &lt;/div&gt;</code></pre></details></figure><figure class="cat-demo"><figcaption>Trả lời xong: markdown (bảng, danh sách, code, URL trần thành link từ 0.29.2), dòng Copy · engine · giây</figcaption><div class="cat-live"><div style="width:460px;max-width:100%;height:640px;display:flex;border:1px solid var(--gemboss-divider);border-radius:12px;overflow:hidden"><div class="gb-chat"><div class="gemboss-ec-scroll" role="log" aria-label="Conversation"><div class="gemboss-ec-msg user"><div class="gemboss-ec-bubble">Who is exploring a partnership?</div></div><div class="gemboss-ec-msg assistant"><ul class="gemboss-narr" aria-label="What it is doing"><li class="gemboss-narr-row ok"><span class="gemboss-narr-dot" aria-hidden="true">✓</span><span class="gemboss-narr-text">Search partners<span class="gb-chat-target"> Wiser</span></span></li><li class="gemboss-narr-row ok"><span class="gemboss-narr-dot" aria-hidden="true">✓</span><span class="gemboss-narr-text">Read history<span class="gb-chat-target"> Amit Porwal</span></span></li><li class="gemboss-narr-row trace ok"><span class="gemboss-narr-dot" aria-hidden="true">⏺</span><details class="gemboss-narr-trace"><summary><code>partner_timeline(id: 418, days: 30)</code></summary><div class="gemboss-narr-trace-body"><code>{ &quot;events&quot;: 6, &quot;last&quot;: &quot;2026-10-05&quot; }</code></div></details></li></ul><div class="gemboss-ec-bubble"><p class="gemboss-md-p"><strong>Wiser</strong> is exploring a deeper partnership.</p><div class="gemboss-md-tablewrap"><table class="gemboss-md-table"><thead><tr><th>Partner</th><th>Last talk</th><th>Next step</th></tr></thead><tbody><tr><td>Wiser</td><td>3 days ago</td><td>Co-marketing proposal</td></tr><tr><td>Loox</td><td>12 days ago</td><td>Intro call</td></tr></tbody></table></div><ul class="gemboss-md-list"><li>Send the proposal by <strong>Friday</strong></li><li>Ask about the <code class="gemboss-md-code">affiliate</code> tier</li></ul><p class="gemboss-md-p">Their partner page: <a class="gemboss-ec-md-link" href="https://wiser.test/partners" target="_blank" rel="noopener noreferrer">https://wiser.test/partners</a>. Notes from the call are in the CRM.</p></div><div class="gb-chat-meta"><button type="button" class="ui-btn ui-btn--ghost gb-chat-copy">Copy</button><span>Claude Code</span><span>6.2s</span></div></div></div><div class="gemboss-ec-input" data-density="full"><textarea rows="1" aria-label="Message" placeholder="Ask, or describe a partner meeting…"></textarea><div class="gemboss-ec-toolbar"><div class="gemboss-ec-toolbar-lead"><span class="gb-engine"><button type="button" class="gb-engine-chip has-mark" aria-haspopup="dialog" aria-expanded="false" aria-controls=":c94-Rv:" aria-label="Engine: Claude Code · Opus" title="Engine: Claude Code · Opus"><span class="gb-engine-dot gb-engine-dot--ok" aria-hidden="true"></span><span class="gb-engine-chiplabel">Claude Code<span class="gb-engine-chipsub"> · Opus</span></span><span class="gb-engine-chipmark"><svg class="gemboss-engine-mark" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" focusable="false"><path d="M12 13.7L21.6 12.5Q22.2 12 21.6 11.5L12 10.3Z M10.8 13.2L18.43 19.14Q19.21 19.21 19.14 18.43L13.2 10.8Z M10.3 12L11.5 21.6Q12 22.2 12.5 21.6L13.7 12Z M10.8 10.8L4.86 18.43Q4.79 19.21 5.57 19.14L13.2 13.2Z M12 10.3L2.4 11.5Q1.8 12 2.4 12.5L12 13.7Z M13.2 10.8L5.57 4.86Q4.79 4.79 4.86 5.57L10.8 13.2Z M13.7 12L12.5 2.4Q12 1.8 11.5 2.4L10.3 12Z M13.2 13.2L19.14 5.57Q19.21 4.79 18.43 4.86L10.8 10.8Z" fill-rule="nonzero"></path></svg></span></button><div id=":c94-Rv:" class="gb-engine-panel gemboss-popover-surface" role="dialog" aria-label="Assistant engine" popover="manual" hidden=""></div></span></div><div class="gemboss-ec-toolbar-tools"><button type="button" class="gemboss-ec-attach-btn" aria-label="Attach a file" title="Attach a file"><svg viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M21.4 11.1l-8.5 8.5a5.5 5.5 0 01-7.8-7.8l8.5-8.5a3.7 3.7 0 015.2 5.2l-8.5 8.5a1.8 1.8 0 01-2.6-2.6l7.8-7.8" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg></button><input type="file" hidden="" tabindex="-1"/></div><button type="submit" disabled="" aria-label="Send" title="Send"><svg viewBox="0 0 20 20" aria-hidden="true" focusable="false"><path d="M10.53 4.47a.75.75 0 0 0-1.06 0l-4.5 4.5a.75.75 0 0 0 1.06 1.06l3.22-3.22v8.69a.75.75 0 0 0 1.5 0v-8.69l3.22 3.22a.75.75 0 1 0 1.06-1.06l-4.5-4.5Z"></path></svg></button></div></div></div></div></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div style=&quot;width:460px;max-width:100%;height:640px;display:flex;border:1px solid var(--gemboss-divider);border-radius:12px;overflow:hidden&quot;&gt;
5520
+ &lt;/div&gt;</code></pre></details></figure><figure class="cat-demo"><figcaption>Trả lời xong: markdown (bảng, danh sách, code, URL trần thành link từ 0.29.2), dòng Copy · engine · giây</figcaption><div class="cat-live"><div style="width:460px;max-width:100%;height:640px;display:flex;border:1px solid var(--gemboss-divider);border-radius:12px;overflow:hidden"><div class="gb-chat"><div class="gemboss-ec-scroll" role="log" aria-label="Conversation"><div class="gemboss-ec-msg user"><div class="gemboss-ec-bubble">Who is exploring a partnership?</div></div><div class="gemboss-ec-msg assistant"><ul class="gemboss-narr" aria-label="What it is doing"><li class="gemboss-narr-row ok"><span class="gemboss-narr-dot" aria-hidden="true">✓</span><span class="gemboss-narr-text">Search partners<span class="gb-chat-target"> Wiser</span></span></li><li class="gemboss-narr-row ok"><span class="gemboss-narr-dot" aria-hidden="true">✓</span><span class="gemboss-narr-text">Read history<span class="gb-chat-target"> Amit Porwal</span></span></li><li class="gemboss-narr-row trace ok"><span class="gemboss-narr-dot" aria-hidden="true">⏺</span><details class="gemboss-narr-trace"><summary><code>partner_timeline(id: 418, days: 30)</code></summary><div class="gemboss-narr-trace-body"><code>{ &quot;events&quot;: 6, &quot;last&quot;: &quot;2026-10-05&quot; }</code></div></details></li></ul><div class="gemboss-ec-bubble"><p class="gemboss-md-p"><strong>Wiser</strong> is exploring a deeper partnership.</p><div class="gemboss-md-tablewrap"><table class="gemboss-md-table"><thead><tr><th>Partner</th><th>Last talk</th><th>Next step</th></tr></thead><tbody><tr><td>Wiser</td><td>3 days ago</td><td>Co-marketing proposal</td></tr><tr><td>Loox</td><td>12 days ago</td><td>Intro call</td></tr></tbody></table></div><ul class="gemboss-md-list"><li>Send the proposal by <strong>Friday</strong></li><li>Ask about the <code class="gemboss-md-code">affiliate</code> tier</li></ul><p class="gemboss-md-p">Their partner page: <a class="gemboss-ec-md-link" href="https://wiser.test/partners" target="_blank" rel="noopener noreferrer">https://wiser.test/partners</a>. Notes from the call are in the CRM.</p></div><div class="gb-chat-meta"><button type="button" class="ui-btn ui-btn--ghost gb-chat-copy">Copy</button><span>Claude Code</span><span>6.2s</span></div></div></div><div class="gemboss-ec-input" data-density="full"><textarea rows="1" aria-label="Message" placeholder="Ask, or describe a partner meeting…"></textarea><div class="gemboss-ec-toolbar"><div class="gemboss-ec-toolbar-lead"><span class="gb-engine"><button type="button" class="gb-engine-chip has-mark" aria-haspopup="dialog" aria-expanded="false" aria-controls=":c96-Rv:" aria-label="Engine: Claude Code · Opus" title="Engine: Claude Code · Opus"><span class="gb-engine-dot gb-engine-dot--ok" aria-hidden="true"></span><span class="gb-engine-chiplabel">Claude Code<span class="gb-engine-chipsub"> · Opus</span></span><span class="gb-engine-chipmark"><svg class="gemboss-engine-mark" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" focusable="false"><path d="M12 13.7L21.6 12.5Q22.2 12 21.6 11.5L12 10.3Z M10.8 13.2L18.43 19.14Q19.21 19.21 19.14 18.43L13.2 10.8Z M10.3 12L11.5 21.6Q12 22.2 12.5 21.6L13.7 12Z M10.8 10.8L4.86 18.43Q4.79 19.21 5.57 19.14L13.2 13.2Z M12 10.3L2.4 11.5Q1.8 12 2.4 12.5L12 13.7Z M13.2 10.8L5.57 4.86Q4.79 4.79 4.86 5.57L10.8 13.2Z M13.7 12L12.5 2.4Q12 1.8 11.5 2.4L10.3 12Z M13.2 13.2L19.14 5.57Q19.21 4.79 18.43 4.86L10.8 10.8Z" fill-rule="nonzero"></path></svg></span></button><div id=":c96-Rv:" class="gb-engine-panel gemboss-popover-surface" role="dialog" aria-label="Assistant engine" popover="manual" hidden=""></div></span></div><div class="gemboss-ec-toolbar-tools"><button type="button" class="gemboss-ec-attach-btn" aria-label="Attach a file" title="Attach a file"><svg viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M21.4 11.1l-8.5 8.5a5.5 5.5 0 01-7.8-7.8l8.5-8.5a3.7 3.7 0 015.2 5.2l-8.5 8.5a1.8 1.8 0 01-2.6-2.6l7.8-7.8" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg></button><input type="file" hidden="" tabindex="-1"/></div><button type="submit" disabled="" aria-label="Send" title="Send"><svg viewBox="0 0 20 20" aria-hidden="true" focusable="false"><path d="M10.53 4.47a.75.75 0 0 0-1.06 0l-4.5 4.5a.75.75 0 0 0 1.06 1.06l3.22-3.22v8.69a.75.75 0 0 0 1.5 0v-8.69l3.22 3.22a.75.75 0 1 0 1.06-1.06l-4.5-4.5Z"></path></svg></button></div></div></div></div></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div style=&quot;width:460px;max-width:100%;height:640px;display:flex;border:1px solid var(--gemboss-divider);border-radius:12px;overflow:hidden&quot;&gt;
5396
5521
  &lt;div class=&quot;gb-chat&quot;&gt;
5397
5522
  &lt;div class=&quot;gemboss-ec-scroll&quot; role=&quot;log&quot; aria-label=&quot;Conversation&quot;&gt;
5398
5523
  &lt;div class=&quot;gemboss-ec-msg user&quot;&gt;
@@ -5468,7 +5593,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
5468
5593
  &lt;div class=&quot;gemboss-ec-toolbar&quot;&gt;
5469
5594
  &lt;div class=&quot;gemboss-ec-toolbar-lead&quot;&gt;
5470
5595
  &lt;span class=&quot;gb-engine&quot;&gt;
5471
- &lt;button type=&quot;button&quot; class=&quot;gb-engine-chip has-mark&quot; aria-haspopup=&quot;dialog&quot; aria-expanded=&quot;false&quot; aria-controls=&quot;:c94-Rv:&quot; aria-label=&quot;Engine: Claude Code · Opus&quot; title=&quot;Engine: Claude Code · Opus&quot;&gt;
5596
+ &lt;button type=&quot;button&quot; class=&quot;gb-engine-chip has-mark&quot; aria-haspopup=&quot;dialog&quot; aria-expanded=&quot;false&quot; aria-controls=&quot;:c96-Rv:&quot; aria-label=&quot;Engine: Claude Code · Opus&quot; title=&quot;Engine: Claude Code · Opus&quot;&gt;
5472
5597
  &lt;span class=&quot;gb-engine-dot gb-engine-dot--ok&quot; aria-hidden=&quot;true&quot;&gt;
5473
5598
  &lt;/span&gt;
5474
5599
  &lt;span class=&quot;gb-engine-chiplabel&quot;&gt;Claude Code&lt;span class=&quot;gb-engine-chipsub&quot;&gt; · Opus&lt;/span&gt;
@@ -5480,7 +5605,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
5480
5605
  &lt;/svg&gt;
5481
5606
  &lt;/span&gt;
5482
5607
  &lt;/button&gt;
5483
- &lt;div id=&quot;:c94-Rv:&quot; class=&quot;gb-engine-panel gemboss-popover-surface&quot; role=&quot;dialog&quot; aria-label=&quot;Assistant engine&quot; popover=&quot;manual&quot; hidden=&quot;&quot;&gt;
5608
+ &lt;div id=&quot;:c96-Rv:&quot; class=&quot;gb-engine-panel gemboss-popover-surface&quot; role=&quot;dialog&quot; aria-label=&quot;Assistant engine&quot; popover=&quot;manual&quot; hidden=&quot;&quot;&gt;
5484
5609
  &lt;/div&gt;
5485
5610
  &lt;/span&gt;
5486
5611
  &lt;/div&gt;
@@ -5502,7 +5627,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
5502
5627
  &lt;/div&gt;
5503
5628
  &lt;/div&gt;
5504
5629
  &lt;/div&gt;
5505
- &lt;/div&gt;</code></pre></details></figure><figure class="cat-demo"><figcaption>Lỗi: lỗi lượt có cách sửa (câu + lệnh + Copy + lỗi gốc gập); lỗi cầu nối là MỘT dòng BridgeNotice (Open setup 24px chuột / 44px chạm)</figcaption><div class="cat-live"><div style="width:420px;max-width:100%;height:520px;display:flex;border:1px solid var(--gemboss-divider);border-radius:12px;overflow:hidden"><div class="gb-chat"><div class="gemboss-ec-scroll" role="log" aria-label="Conversation"><div class="gemboss-ec-msg user"><div class="gemboss-ec-bubble">Summarize last week</div></div><div class="gemboss-ec-msg assistant"><div class="ui-notice ui-notice--danger gb-chat-error" role="alert"><div>Not signed in on your machine. Open Terminal, run the command below, then sign in:</div><code class="gb-chat-cmd">claude</code><div><button type="button" class="ui-btn ui-btn--ghost gb-chat-copy">Copy command</button></div><details class="gb-chat-original"><summary>Original error</summary><span>Error: not logged in · Please run /login</span></details></div></div><div class="gemboss-ec-msg user"><div class="gemboss-ec-bubble">Try again</div></div><div class="gemboss-ec-msg assistant"><p class="gb-engine-notice gb-engine-notice--down" role="status"><span class="gb-engine-dot gb-engine-dot--down" aria-hidden="true"></span><span class="gb-engine-notice-text">The bridge on your machine rejected this browser&#x27;s pairing code (it was installed with another code). Pair again in Setup.</span><button type="button" class="gb-engine-notice-link">Open setup</button></p></div></div><div class="gemboss-ec-input" data-density="full"><textarea rows="1" aria-label="Message" placeholder="Ask, or describe a partner meeting…"></textarea><div class="gemboss-ec-toolbar"><div class="gemboss-ec-toolbar-lead"><span class="gb-engine"><button type="button" class="gb-engine-chip has-mark" aria-haspopup="dialog" aria-expanded="false" aria-controls=":c95-Rv:" aria-label="Engine: Claude Code · Opus. Bridge on your machine: Not connected" title="Engine: Claude Code · Opus. Bridge on your machine: Not connected"><span class="gb-engine-dot gb-engine-dot--down" aria-hidden="true"></span><span class="gb-engine-chiplabel">Claude Code<span class="gb-engine-chipsub"> · Opus</span></span><span class="gb-engine-chipmark"><svg class="gemboss-engine-mark" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" focusable="false"><path d="M12 13.7L21.6 12.5Q22.2 12 21.6 11.5L12 10.3Z M10.8 13.2L18.43 19.14Q19.21 19.21 19.14 18.43L13.2 10.8Z M10.3 12L11.5 21.6Q12 22.2 12.5 21.6L13.7 12Z M10.8 10.8L4.86 18.43Q4.79 19.21 5.57 19.14L13.2 13.2Z M12 10.3L2.4 11.5Q1.8 12 2.4 12.5L12 13.7Z M13.2 10.8L5.57 4.86Q4.79 4.79 4.86 5.57L10.8 13.2Z M13.7 12L12.5 2.4Q12 1.8 11.5 2.4L10.3 12Z M13.2 13.2L19.14 5.57Q19.21 4.79 18.43 4.86L10.8 10.8Z" fill-rule="nonzero"></path></svg></span></button><div id=":c95-Rv:" class="gb-engine-panel gemboss-popover-surface" role="dialog" aria-label="Assistant engine" popover="manual" hidden=""></div></span></div><div class="gemboss-ec-toolbar-tools"><button type="button" class="gemboss-ec-attach-btn" aria-label="Attach a file" title="Attach a file"><svg viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M21.4 11.1l-8.5 8.5a5.5 5.5 0 01-7.8-7.8l8.5-8.5a3.7 3.7 0 015.2 5.2l-8.5 8.5a1.8 1.8 0 01-2.6-2.6l7.8-7.8" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg></button><input type="file" hidden="" tabindex="-1"/></div><button type="submit" disabled="" aria-label="Send" title="Send"><svg viewBox="0 0 20 20" aria-hidden="true" focusable="false"><path d="M10.53 4.47a.75.75 0 0 0-1.06 0l-4.5 4.5a.75.75 0 0 0 1.06 1.06l3.22-3.22v8.69a.75.75 0 0 0 1.5 0v-8.69l3.22 3.22a.75.75 0 1 0 1.06-1.06l-4.5-4.5Z"></path></svg></button></div></div></div></div></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div style=&quot;width:420px;max-width:100%;height:520px;display:flex;border:1px solid var(--gemboss-divider);border-radius:12px;overflow:hidden&quot;&gt;
5630
+ &lt;/div&gt;</code></pre></details></figure><figure class="cat-demo"><figcaption>Lỗi: lỗi lượt có cách sửa (câu + lệnh + Copy + lỗi gốc gập); lỗi cầu nối là MỘT dòng BridgeNotice (Open setup 24px chuột / 44px chạm)</figcaption><div class="cat-live"><div style="width:420px;max-width:100%;height:520px;display:flex;border:1px solid var(--gemboss-divider);border-radius:12px;overflow:hidden"><div class="gb-chat"><div class="gemboss-ec-scroll" role="log" aria-label="Conversation"><div class="gemboss-ec-msg user"><div class="gemboss-ec-bubble">Summarize last week</div></div><div class="gemboss-ec-msg assistant"><div class="ui-notice ui-notice--danger gb-chat-error" role="alert"><div>Not signed in on your machine. Open Terminal, run the command below, then sign in:</div><code class="gb-chat-cmd">claude</code><div><button type="button" class="ui-btn ui-btn--ghost gb-chat-copy">Copy command</button></div><details class="gb-chat-original"><summary>Original error</summary><span>Error: not logged in · Please run /login</span></details></div></div><div class="gemboss-ec-msg user"><div class="gemboss-ec-bubble">Try again</div></div><div class="gemboss-ec-msg assistant"><p class="gb-engine-notice gb-engine-notice--down" role="status"><span class="gb-engine-dot gb-engine-dot--down" aria-hidden="true"></span><span class="gb-engine-notice-text">The bridge on your machine rejected this browser&#x27;s pairing code (it was installed with another code). Pair again in Setup.</span><button type="button" class="gb-engine-notice-link">Open setup</button></p></div></div><div class="gemboss-ec-input" data-density="full"><textarea rows="1" aria-label="Message" placeholder="Ask, or describe a partner meeting…"></textarea><div class="gemboss-ec-toolbar"><div class="gemboss-ec-toolbar-lead"><span class="gb-engine"><button type="button" class="gb-engine-chip has-mark" aria-haspopup="dialog" aria-expanded="false" aria-controls=":c97-Rv:" aria-label="Engine: Claude Code · Opus. Bridge on your machine: Not connected" title="Engine: Claude Code · Opus. Bridge on your machine: Not connected"><span class="gb-engine-dot gb-engine-dot--down" aria-hidden="true"></span><span class="gb-engine-chiplabel">Claude Code<span class="gb-engine-chipsub"> · Opus</span></span><span class="gb-engine-chipmark"><svg class="gemboss-engine-mark" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" focusable="false"><path d="M12 13.7L21.6 12.5Q22.2 12 21.6 11.5L12 10.3Z M10.8 13.2L18.43 19.14Q19.21 19.21 19.14 18.43L13.2 10.8Z M10.3 12L11.5 21.6Q12 22.2 12.5 21.6L13.7 12Z M10.8 10.8L4.86 18.43Q4.79 19.21 5.57 19.14L13.2 13.2Z M12 10.3L2.4 11.5Q1.8 12 2.4 12.5L12 13.7Z M13.2 10.8L5.57 4.86Q4.79 4.79 4.86 5.57L10.8 13.2Z M13.7 12L12.5 2.4Q12 1.8 11.5 2.4L10.3 12Z M13.2 13.2L19.14 5.57Q19.21 4.79 18.43 4.86L10.8 10.8Z" fill-rule="nonzero"></path></svg></span></button><div id=":c97-Rv:" class="gb-engine-panel gemboss-popover-surface" role="dialog" aria-label="Assistant engine" popover="manual" hidden=""></div></span></div><div class="gemboss-ec-toolbar-tools"><button type="button" class="gemboss-ec-attach-btn" aria-label="Attach a file" title="Attach a file"><svg viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M21.4 11.1l-8.5 8.5a5.5 5.5 0 01-7.8-7.8l8.5-8.5a3.7 3.7 0 015.2 5.2l-8.5 8.5a1.8 1.8 0 01-2.6-2.6l7.8-7.8" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg></button><input type="file" hidden="" tabindex="-1"/></div><button type="submit" disabled="" aria-label="Send" title="Send"><svg viewBox="0 0 20 20" aria-hidden="true" focusable="false"><path d="M10.53 4.47a.75.75 0 0 0-1.06 0l-4.5 4.5a.75.75 0 0 0 1.06 1.06l3.22-3.22v8.69a.75.75 0 0 0 1.5 0v-8.69l3.22 3.22a.75.75 0 1 0 1.06-1.06l-4.5-4.5Z"></path></svg></button></div></div></div></div></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div style=&quot;width:420px;max-width:100%;height:520px;display:flex;border:1px solid var(--gemboss-divider);border-radius:12px;overflow:hidden&quot;&gt;
5506
5631
  &lt;div class=&quot;gb-chat&quot;&gt;
5507
5632
  &lt;div class=&quot;gemboss-ec-scroll&quot; role=&quot;log&quot; aria-label=&quot;Conversation&quot;&gt;
5508
5633
  &lt;div class=&quot;gemboss-ec-msg user&quot;&gt;
@@ -5539,7 +5664,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
5539
5664
  &lt;div class=&quot;gemboss-ec-toolbar&quot;&gt;
5540
5665
  &lt;div class=&quot;gemboss-ec-toolbar-lead&quot;&gt;
5541
5666
  &lt;span class=&quot;gb-engine&quot;&gt;
5542
- &lt;button type=&quot;button&quot; class=&quot;gb-engine-chip has-mark&quot; aria-haspopup=&quot;dialog&quot; aria-expanded=&quot;false&quot; aria-controls=&quot;:c95-Rv:&quot; aria-label=&quot;Engine: Claude Code · Opus. Bridge on your machine: Not connected&quot; title=&quot;Engine: Claude Code · Opus. Bridge on your machine: Not connected&quot;&gt;
5667
+ &lt;button type=&quot;button&quot; class=&quot;gb-engine-chip has-mark&quot; aria-haspopup=&quot;dialog&quot; aria-expanded=&quot;false&quot; aria-controls=&quot;:c97-Rv:&quot; aria-label=&quot;Engine: Claude Code · Opus. Bridge on your machine: Not connected&quot; title=&quot;Engine: Claude Code · Opus. Bridge on your machine: Not connected&quot;&gt;
5543
5668
  &lt;span class=&quot;gb-engine-dot gb-engine-dot--down&quot; aria-hidden=&quot;true&quot;&gt;
5544
5669
  &lt;/span&gt;
5545
5670
  &lt;span class=&quot;gb-engine-chiplabel&quot;&gt;Claude Code&lt;span class=&quot;gb-engine-chipsub&quot;&gt; · Opus&lt;/span&gt;
@@ -5551,7 +5676,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
5551
5676
  &lt;/svg&gt;
5552
5677
  &lt;/span&gt;
5553
5678
  &lt;/button&gt;
5554
- &lt;div id=&quot;:c95-Rv:&quot; class=&quot;gb-engine-panel gemboss-popover-surface&quot; role=&quot;dialog&quot; aria-label=&quot;Assistant engine&quot; popover=&quot;manual&quot; hidden=&quot;&quot;&gt;
5679
+ &lt;div id=&quot;:c97-Rv:&quot; class=&quot;gb-engine-panel gemboss-popover-surface&quot; role=&quot;dialog&quot; aria-label=&quot;Assistant engine&quot; popover=&quot;manual&quot; hidden=&quot;&quot;&gt;
5555
5680
  &lt;/div&gt;
5556
5681
  &lt;/span&gt;
5557
5682
  &lt;/div&gt;
@@ -5573,7 +5698,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
5573
5698
  &lt;/div&gt;
5574
5699
  &lt;/div&gt;
5575
5700
  &lt;/div&gt;
5576
- &lt;/div&gt;</code></pre></details></figure><figure class="cat-demo"><figcaption>Ghi chú trong luồng: dòng lặng (đổi engine) và cầu nối lỗi thời (vàng)</figcaption><div class="cat-live"><div style="width:420px;max-width:100%;height:240px;display:flex;border:1px solid var(--gemboss-divider);border-radius:12px;overflow:hidden"><div class="gb-chat"><div class="gemboss-ec-scroll" role="log" aria-label="Conversation"><p class="gb-chat-note">Switched to Codex: a new conversation.</p><p class="gb-engine-notice gb-engine-notice--warn" role="status"><span class="gb-engine-dot gb-engine-dot--warn" aria-hidden="true"></span><span class="gb-engine-notice-text">This bridge is older than the one the panel expects: update it once.</span><button type="button" class="gb-engine-notice-link">Open setup</button></p></div><div class="gemboss-ec-input" data-density="full"><textarea rows="1" aria-label="Message" placeholder="Ask, or describe a partner meeting…"></textarea><div class="gemboss-ec-toolbar"><div class="gemboss-ec-toolbar-lead"><span class="gb-engine"><button type="button" class="gb-engine-chip has-mark" aria-haspopup="dialog" aria-expanded="false" aria-controls=":c96-Rv:" aria-label="Engine: Claude Code · Opus. Bridge on your machine: Outdated" title="Engine: Claude Code · Opus. Bridge on your machine: Outdated"><span class="gb-engine-dot gb-engine-dot--warn" aria-hidden="true"></span><span class="gb-engine-chiplabel">Claude Code<span class="gb-engine-chipsub"> · Opus</span></span><span class="gb-engine-chipmark"><svg class="gemboss-engine-mark" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" focusable="false"><path d="M12 13.7L21.6 12.5Q22.2 12 21.6 11.5L12 10.3Z M10.8 13.2L18.43 19.14Q19.21 19.21 19.14 18.43L13.2 10.8Z M10.3 12L11.5 21.6Q12 22.2 12.5 21.6L13.7 12Z M10.8 10.8L4.86 18.43Q4.79 19.21 5.57 19.14L13.2 13.2Z M12 10.3L2.4 11.5Q1.8 12 2.4 12.5L12 13.7Z M13.2 10.8L5.57 4.86Q4.79 4.79 4.86 5.57L10.8 13.2Z M13.7 12L12.5 2.4Q12 1.8 11.5 2.4L10.3 12Z M13.2 13.2L19.14 5.57Q19.21 4.79 18.43 4.86L10.8 10.8Z" fill-rule="nonzero"></path></svg></span></button><div id=":c96-Rv:" class="gb-engine-panel gemboss-popover-surface" role="dialog" aria-label="Assistant engine" popover="manual" hidden=""></div></span></div><div class="gemboss-ec-toolbar-tools"><button type="button" class="gemboss-ec-attach-btn" aria-label="Attach a file" title="Attach a file"><svg viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M21.4 11.1l-8.5 8.5a5.5 5.5 0 01-7.8-7.8l8.5-8.5a3.7 3.7 0 015.2 5.2l-8.5 8.5a1.8 1.8 0 01-2.6-2.6l7.8-7.8" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg></button><input type="file" hidden="" tabindex="-1"/></div><button type="submit" disabled="" aria-label="Send" title="Send"><svg viewBox="0 0 20 20" aria-hidden="true" focusable="false"><path d="M10.53 4.47a.75.75 0 0 0-1.06 0l-4.5 4.5a.75.75 0 0 0 1.06 1.06l3.22-3.22v8.69a.75.75 0 0 0 1.5 0v-8.69l3.22 3.22a.75.75 0 1 0 1.06-1.06l-4.5-4.5Z"></path></svg></button></div></div></div></div></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div style=&quot;width:420px;max-width:100%;height:240px;display:flex;border:1px solid var(--gemboss-divider);border-radius:12px;overflow:hidden&quot;&gt;
5701
+ &lt;/div&gt;</code></pre></details></figure><figure class="cat-demo"><figcaption>Ghi chú trong luồng: dòng lặng (đổi engine) và cầu nối lỗi thời (vàng)</figcaption><div class="cat-live"><div style="width:420px;max-width:100%;height:240px;display:flex;border:1px solid var(--gemboss-divider);border-radius:12px;overflow:hidden"><div class="gb-chat"><div class="gemboss-ec-scroll" role="log" aria-label="Conversation"><p class="gb-chat-note">Switched to Codex: a new conversation.</p><p class="gb-engine-notice gb-engine-notice--warn" role="status"><span class="gb-engine-dot gb-engine-dot--warn" aria-hidden="true"></span><span class="gb-engine-notice-text">This bridge is older than the one the panel expects: update it once.</span><button type="button" class="gb-engine-notice-link">Open setup</button></p></div><div class="gemboss-ec-input" data-density="full"><textarea rows="1" aria-label="Message" placeholder="Ask, or describe a partner meeting…"></textarea><div class="gemboss-ec-toolbar"><div class="gemboss-ec-toolbar-lead"><span class="gb-engine"><button type="button" class="gb-engine-chip has-mark" aria-haspopup="dialog" aria-expanded="false" aria-controls=":c98-Rv:" aria-label="Engine: Claude Code · Opus. Bridge on your machine: Outdated" title="Engine: Claude Code · Opus. Bridge on your machine: Outdated"><span class="gb-engine-dot gb-engine-dot--warn" aria-hidden="true"></span><span class="gb-engine-chiplabel">Claude Code<span class="gb-engine-chipsub"> · Opus</span></span><span class="gb-engine-chipmark"><svg class="gemboss-engine-mark" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" focusable="false"><path d="M12 13.7L21.6 12.5Q22.2 12 21.6 11.5L12 10.3Z M10.8 13.2L18.43 19.14Q19.21 19.21 19.14 18.43L13.2 10.8Z M10.3 12L11.5 21.6Q12 22.2 12.5 21.6L13.7 12Z M10.8 10.8L4.86 18.43Q4.79 19.21 5.57 19.14L13.2 13.2Z M12 10.3L2.4 11.5Q1.8 12 2.4 12.5L12 13.7Z M13.2 10.8L5.57 4.86Q4.79 4.79 4.86 5.57L10.8 13.2Z M13.7 12L12.5 2.4Q12 1.8 11.5 2.4L10.3 12Z M13.2 13.2L19.14 5.57Q19.21 4.79 18.43 4.86L10.8 10.8Z" fill-rule="nonzero"></path></svg></span></button><div id=":c98-Rv:" class="gb-engine-panel gemboss-popover-surface" role="dialog" aria-label="Assistant engine" popover="manual" hidden=""></div></span></div><div class="gemboss-ec-toolbar-tools"><button type="button" class="gemboss-ec-attach-btn" aria-label="Attach a file" title="Attach a file"><svg viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M21.4 11.1l-8.5 8.5a5.5 5.5 0 01-7.8-7.8l8.5-8.5a3.7 3.7 0 015.2 5.2l-8.5 8.5a1.8 1.8 0 01-2.6-2.6l7.8-7.8" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg></button><input type="file" hidden="" tabindex="-1"/></div><button type="submit" disabled="" aria-label="Send" title="Send"><svg viewBox="0 0 20 20" aria-hidden="true" focusable="false"><path d="M10.53 4.47a.75.75 0 0 0-1.06 0l-4.5 4.5a.75.75 0 0 0 1.06 1.06l3.22-3.22v8.69a.75.75 0 0 0 1.5 0v-8.69l3.22 3.22a.75.75 0 1 0 1.06-1.06l-4.5-4.5Z"></path></svg></button></div></div></div></div></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div style=&quot;width:420px;max-width:100%;height:240px;display:flex;border:1px solid var(--gemboss-divider);border-radius:12px;overflow:hidden&quot;&gt;
5577
5702
  &lt;div class=&quot;gb-chat&quot;&gt;
5578
5703
  &lt;div class=&quot;gemboss-ec-scroll&quot; role=&quot;log&quot; aria-label=&quot;Conversation&quot;&gt;
5579
5704
  &lt;p class=&quot;gb-chat-note&quot;&gt;Switched to Codex: a new conversation.&lt;/p&gt;
@@ -5590,7 +5715,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
5590
5715
  &lt;div class=&quot;gemboss-ec-toolbar&quot;&gt;
5591
5716
  &lt;div class=&quot;gemboss-ec-toolbar-lead&quot;&gt;
5592
5717
  &lt;span class=&quot;gb-engine&quot;&gt;
5593
- &lt;button type=&quot;button&quot; class=&quot;gb-engine-chip has-mark&quot; aria-haspopup=&quot;dialog&quot; aria-expanded=&quot;false&quot; aria-controls=&quot;:c96-Rv:&quot; aria-label=&quot;Engine: Claude Code · Opus. Bridge on your machine: Outdated&quot; title=&quot;Engine: Claude Code · Opus. Bridge on your machine: Outdated&quot;&gt;
5718
+ &lt;button type=&quot;button&quot; class=&quot;gb-engine-chip has-mark&quot; aria-haspopup=&quot;dialog&quot; aria-expanded=&quot;false&quot; aria-controls=&quot;:c98-Rv:&quot; aria-label=&quot;Engine: Claude Code · Opus. Bridge on your machine: Outdated&quot; title=&quot;Engine: Claude Code · Opus. Bridge on your machine: Outdated&quot;&gt;
5594
5719
  &lt;span class=&quot;gb-engine-dot gb-engine-dot--warn&quot; aria-hidden=&quot;true&quot;&gt;
5595
5720
  &lt;/span&gt;
5596
5721
  &lt;span class=&quot;gb-engine-chiplabel&quot;&gt;Claude Code&lt;span class=&quot;gb-engine-chipsub&quot;&gt; · Opus&lt;/span&gt;
@@ -5602,7 +5727,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
5602
5727
  &lt;/svg&gt;
5603
5728
  &lt;/span&gt;
5604
5729
  &lt;/button&gt;
5605
- &lt;div id=&quot;:c96-Rv:&quot; class=&quot;gb-engine-panel gemboss-popover-surface&quot; role=&quot;dialog&quot; aria-label=&quot;Assistant engine&quot; popover=&quot;manual&quot; hidden=&quot;&quot;&gt;
5730
+ &lt;div id=&quot;:c98-Rv:&quot; class=&quot;gb-engine-panel gemboss-popover-surface&quot; role=&quot;dialog&quot; aria-label=&quot;Assistant engine&quot; popover=&quot;manual&quot; hidden=&quot;&quot;&gt;
5606
5731
  &lt;/div&gt;
5607
5732
  &lt;/span&gt;
5608
5733
  &lt;/div&gt;
@@ -5624,7 +5749,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
5624
5749
  &lt;/div&gt;
5625
5750
  &lt;/div&gt;
5626
5751
  &lt;/div&gt;
5627
- &lt;/div&gt;</code></pre></details></figure><figure class="cat-demo"><figcaption>Hàng soạn hẹp: tên model rơi trước, rồi tên engine thành DẤU engine (data-density="icon")</figcaption><div class="cat-live"><div style="width:260px;max-width:100%;height:200px;display:flex;border:1px solid var(--gemboss-divider);border-radius:12px;overflow:hidden"><div class="gb-chat"><div class="gemboss-ec-scroll" role="log" aria-label="Conversation"></div><div class="gemboss-ec-input" data-density="icon"><textarea rows="1" aria-label="Message" placeholder="Ask, or describe a partner meeting…"></textarea><div class="gemboss-ec-toolbar"><div class="gemboss-ec-toolbar-lead"><span class="gb-engine"><button type="button" class="gb-engine-chip has-mark" aria-haspopup="dialog" aria-expanded="false" aria-controls=":c97-Rv:" aria-label="Engine: Claude Code · Opus" title="Engine: Claude Code · Opus"><span class="gb-engine-dot gb-engine-dot--ok" aria-hidden="true"></span><span class="gb-engine-chiplabel">Claude Code<span class="gb-engine-chipsub"> · Opus</span></span><span class="gb-engine-chipmark"><svg class="gemboss-engine-mark" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" focusable="false"><path d="M12 13.7L21.6 12.5Q22.2 12 21.6 11.5L12 10.3Z M10.8 13.2L18.43 19.14Q19.21 19.21 19.14 18.43L13.2 10.8Z M10.3 12L11.5 21.6Q12 22.2 12.5 21.6L13.7 12Z M10.8 10.8L4.86 18.43Q4.79 19.21 5.57 19.14L13.2 13.2Z M12 10.3L2.4 11.5Q1.8 12 2.4 12.5L12 13.7Z M13.2 10.8L5.57 4.86Q4.79 4.79 4.86 5.57L10.8 13.2Z M13.7 12L12.5 2.4Q12 1.8 11.5 2.4L10.3 12Z M13.2 13.2L19.14 5.57Q19.21 4.79 18.43 4.86L10.8 10.8Z" fill-rule="nonzero"></path></svg></span></button><div id=":c97-Rv:" class="gb-engine-panel gemboss-popover-surface" role="dialog" aria-label="Assistant engine" popover="manual" hidden=""></div></span></div><div class="gemboss-ec-toolbar-tools"><button type="button" class="gemboss-ec-attach-btn" aria-label="Attach a file" title="Attach a file"><svg viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M21.4 11.1l-8.5 8.5a5.5 5.5 0 01-7.8-7.8l8.5-8.5a3.7 3.7 0 015.2 5.2l-8.5 8.5a1.8 1.8 0 01-2.6-2.6l7.8-7.8" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg></button><input type="file" hidden="" tabindex="-1"/></div><button type="submit" disabled="" aria-label="Send" title="Send"><svg viewBox="0 0 20 20" aria-hidden="true" focusable="false"><path d="M10.53 4.47a.75.75 0 0 0-1.06 0l-4.5 4.5a.75.75 0 0 0 1.06 1.06l3.22-3.22v8.69a.75.75 0 0 0 1.5 0v-8.69l3.22 3.22a.75.75 0 1 0 1.06-1.06l-4.5-4.5Z"></path></svg></button></div></div></div></div></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div style=&quot;width:260px;max-width:100%;height:200px;display:flex;border:1px solid var(--gemboss-divider);border-radius:12px;overflow:hidden&quot;&gt;
5752
+ &lt;/div&gt;</code></pre></details></figure><figure class="cat-demo"><figcaption>Hàng soạn hẹp: tên model rơi trước, rồi tên engine thành DẤU engine (data-density="icon")</figcaption><div class="cat-live"><div style="width:260px;max-width:100%;height:200px;display:flex;border:1px solid var(--gemboss-divider);border-radius:12px;overflow:hidden"><div class="gb-chat"><div class="gemboss-ec-scroll" role="log" aria-label="Conversation"></div><div class="gemboss-ec-input" data-density="icon"><textarea rows="1" aria-label="Message" placeholder="Ask, or describe a partner meeting…"></textarea><div class="gemboss-ec-toolbar"><div class="gemboss-ec-toolbar-lead"><span class="gb-engine"><button type="button" class="gb-engine-chip has-mark" aria-haspopup="dialog" aria-expanded="false" aria-controls=":c99-Rv:" aria-label="Engine: Claude Code · Opus" title="Engine: Claude Code · Opus"><span class="gb-engine-dot gb-engine-dot--ok" aria-hidden="true"></span><span class="gb-engine-chiplabel">Claude Code<span class="gb-engine-chipsub"> · Opus</span></span><span class="gb-engine-chipmark"><svg class="gemboss-engine-mark" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" focusable="false"><path d="M12 13.7L21.6 12.5Q22.2 12 21.6 11.5L12 10.3Z M10.8 13.2L18.43 19.14Q19.21 19.21 19.14 18.43L13.2 10.8Z M10.3 12L11.5 21.6Q12 22.2 12.5 21.6L13.7 12Z M10.8 10.8L4.86 18.43Q4.79 19.21 5.57 19.14L13.2 13.2Z M12 10.3L2.4 11.5Q1.8 12 2.4 12.5L12 13.7Z M13.2 10.8L5.57 4.86Q4.79 4.79 4.86 5.57L10.8 13.2Z M13.7 12L12.5 2.4Q12 1.8 11.5 2.4L10.3 12Z M13.2 13.2L19.14 5.57Q19.21 4.79 18.43 4.86L10.8 10.8Z" fill-rule="nonzero"></path></svg></span></button><div id=":c99-Rv:" class="gb-engine-panel gemboss-popover-surface" role="dialog" aria-label="Assistant engine" popover="manual" hidden=""></div></span></div><div class="gemboss-ec-toolbar-tools"><button type="button" class="gemboss-ec-attach-btn" aria-label="Attach a file" title="Attach a file"><svg viewBox="0 0 24 24" aria-hidden="true" focusable="false"><path d="M21.4 11.1l-8.5 8.5a5.5 5.5 0 01-7.8-7.8l8.5-8.5a3.7 3.7 0 015.2 5.2l-8.5 8.5a1.8 1.8 0 01-2.6-2.6l7.8-7.8" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg></button><input type="file" hidden="" tabindex="-1"/></div><button type="submit" disabled="" aria-label="Send" title="Send"><svg viewBox="0 0 20 20" aria-hidden="true" focusable="false"><path d="M10.53 4.47a.75.75 0 0 0-1.06 0l-4.5 4.5a.75.75 0 0 0 1.06 1.06l3.22-3.22v8.69a.75.75 0 0 0 1.5 0v-8.69l3.22 3.22a.75.75 0 1 0 1.06-1.06l-4.5-4.5Z"></path></svg></button></div></div></div></div></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div style=&quot;width:260px;max-width:100%;height:200px;display:flex;border:1px solid var(--gemboss-divider);border-radius:12px;overflow:hidden&quot;&gt;
5628
5753
  &lt;div class=&quot;gb-chat&quot;&gt;
5629
5754
  &lt;div class=&quot;gemboss-ec-scroll&quot; role=&quot;log&quot; aria-label=&quot;Conversation&quot;&gt;
5630
5755
  &lt;/div&gt;
@@ -5634,7 +5759,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
5634
5759
  &lt;div class=&quot;gemboss-ec-toolbar&quot;&gt;
5635
5760
  &lt;div class=&quot;gemboss-ec-toolbar-lead&quot;&gt;
5636
5761
  &lt;span class=&quot;gb-engine&quot;&gt;
5637
- &lt;button type=&quot;button&quot; class=&quot;gb-engine-chip has-mark&quot; aria-haspopup=&quot;dialog&quot; aria-expanded=&quot;false&quot; aria-controls=&quot;:c97-Rv:&quot; aria-label=&quot;Engine: Claude Code · Opus&quot; title=&quot;Engine: Claude Code · Opus&quot;&gt;
5762
+ &lt;button type=&quot;button&quot; class=&quot;gb-engine-chip has-mark&quot; aria-haspopup=&quot;dialog&quot; aria-expanded=&quot;false&quot; aria-controls=&quot;:c99-Rv:&quot; aria-label=&quot;Engine: Claude Code · Opus&quot; title=&quot;Engine: Claude Code · Opus&quot;&gt;
5638
5763
  &lt;span class=&quot;gb-engine-dot gb-engine-dot--ok&quot; aria-hidden=&quot;true&quot;&gt;
5639
5764
  &lt;/span&gt;
5640
5765
  &lt;span class=&quot;gb-engine-chiplabel&quot;&gt;Claude Code&lt;span class=&quot;gb-engine-chipsub&quot;&gt; · Opus&lt;/span&gt;
@@ -5646,7 +5771,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
5646
5771
  &lt;/svg&gt;
5647
5772
  &lt;/span&gt;
5648
5773
  &lt;/button&gt;
5649
- &lt;div id=&quot;:c97-Rv:&quot; class=&quot;gb-engine-panel gemboss-popover-surface&quot; role=&quot;dialog&quot; aria-label=&quot;Assistant engine&quot; popover=&quot;manual&quot; hidden=&quot;&quot;&gt;
5774
+ &lt;div id=&quot;:c99-Rv:&quot; class=&quot;gb-engine-panel gemboss-popover-surface&quot; role=&quot;dialog&quot; aria-label=&quot;Assistant engine&quot; popover=&quot;manual&quot; hidden=&quot;&quot;&gt;
5650
5775
  &lt;/div&gt;
5651
5776
  &lt;/span&gt;
5652
5777
  &lt;/div&gt;
@@ -5668,12 +5793,12 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
5668
5793
  &lt;/div&gt;
5669
5794
  &lt;/div&gt;
5670
5795
  &lt;/div&gt;
5671
- &lt;/div&gt;</code></pre></details></figure><figure class="cat-demo"><figcaption>Popup engine kiểu admin: mọi engine với model riêng, một cú bấm chọn cả hai (onPick)</figcaption><div class="cat-live"><div style="max-width:360px"><div class="gb-engine-panel gb-engine-panel--inline gemboss-popover-surface" role="group" aria-label="Assistant engine"><div class="gb-engine-pane" id=":c98-R0:-pane-engine"><div class="gb-engine-field"><span class="gb-engine-label" id=":c98-R3d:">Engine</span><div class="gb-engine-groups" role="group" aria-labelledby=":c98-R3d:"><div class="gb-engine-group" data-current=""><span class="gb-engine-rowhead"><span class="gb-engine-rowname">Claude Code</span><span class="ui-badge ui-badge--success">Claude Max</span></span><div class="gb-engine-opts" role="group" aria-label="Claude Code"><button type="button" class="gb-engine-opt" aria-pressed="false">Default</button><button type="button" class="gb-engine-opt" aria-pressed="true">Opus</button><button type="button" class="gb-engine-opt" aria-pressed="false">Sonnet</button></div></div><div class="gb-engine-group"><span class="gb-engine-rowhead"><span class="gb-engine-rowname">Codex</span><span class="ui-badge ui-badge--warning">installed, not signed in</span></span><span class="gb-engine-note">Run codex login in Terminal.</span><div class="gb-engine-opts" role="group" aria-label="Codex"><button type="button" class="gb-engine-opt" aria-pressed="false" disabled="">Default</button><button type="button" class="gb-engine-opt" aria-pressed="false" disabled="">GPT-5</button></div></div></div></div><div class="gb-engine-notes"><p>Claude Code has no access to this machine in a store session.</p></div></div></div></div></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div style=&quot;max-width:360px&quot;&gt;
5796
+ &lt;/div&gt;</code></pre></details></figure><figure class="cat-demo"><figcaption>Popup engine kiểu admin: mọi engine với model riêng, một cú bấm chọn cả hai (onPick)</figcaption><div class="cat-live"><div style="max-width:360px"><div class="gb-engine-panel gb-engine-panel--inline gemboss-popover-surface" role="group" aria-label="Assistant engine"><div class="gb-engine-pane" id=":c100-R0:-pane-engine"><div class="gb-engine-field"><span class="gb-engine-label" id=":c100-R3d:">Engine</span><div class="gb-engine-groups" role="group" aria-labelledby=":c100-R3d:"><div class="gb-engine-group" data-current=""><span class="gb-engine-rowhead"><span class="gb-engine-rowname">Claude Code</span><span class="ui-badge ui-badge--success">Claude Max</span></span><div class="gb-engine-opts" role="group" aria-label="Claude Code"><button type="button" class="gb-engine-opt" aria-pressed="false">Default</button><button type="button" class="gb-engine-opt" aria-pressed="true">Opus</button><button type="button" class="gb-engine-opt" aria-pressed="false">Sonnet</button></div></div><div class="gb-engine-group"><span class="gb-engine-rowhead"><span class="gb-engine-rowname">Codex</span><span class="ui-badge ui-badge--warning">installed, not signed in</span></span><span class="gb-engine-note">Run codex login in Terminal.</span><div class="gb-engine-opts" role="group" aria-label="Codex"><button type="button" class="gb-engine-opt" aria-pressed="false" disabled="">Default</button><button type="button" class="gb-engine-opt" aria-pressed="false" disabled="">GPT-5</button></div></div></div></div><div class="gb-engine-notes"><p>Claude Code has no access to this machine in a store session.</p></div></div></div></div></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div style=&quot;max-width:360px&quot;&gt;
5672
5797
  &lt;div class=&quot;gb-engine-panel gb-engine-panel--inline gemboss-popover-surface&quot; role=&quot;group&quot; aria-label=&quot;Assistant engine&quot;&gt;
5673
- &lt;div class=&quot;gb-engine-pane&quot; id=&quot;:c98-R0:-pane-engine&quot;&gt;
5798
+ &lt;div class=&quot;gb-engine-pane&quot; id=&quot;:c100-R0:-pane-engine&quot;&gt;
5674
5799
  &lt;div class=&quot;gb-engine-field&quot;&gt;
5675
- &lt;span class=&quot;gb-engine-label&quot; id=&quot;:c98-R3d:&quot;&gt;Engine&lt;/span&gt;
5676
- &lt;div class=&quot;gb-engine-groups&quot; role=&quot;group&quot; aria-labelledby=&quot;:c98-R3d:&quot;&gt;
5800
+ &lt;span class=&quot;gb-engine-label&quot; id=&quot;:c100-R3d:&quot;&gt;Engine&lt;/span&gt;
5801
+ &lt;div class=&quot;gb-engine-groups&quot; role=&quot;group&quot; aria-labelledby=&quot;:c100-R3d:&quot;&gt;
5677
5802
  &lt;div class=&quot;gb-engine-group&quot; data-current=&quot;&quot;&gt;
5678
5803
  &lt;span class=&quot;gb-engine-rowhead&quot;&gt;
5679
5804
  &lt;span class=&quot;gb-engine-rowname&quot;&gt;Claude Code&lt;/span&gt;
@@ -5703,14 +5828,14 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
5703
5828
  &lt;/div&gt;
5704
5829
  &lt;/div&gt;
5705
5830
  &lt;/div&gt;
5706
- &lt;/div&gt;</code></pre></details></figure><figure class="cat-demo"><figcaption>Tab Setup với form ghép cặp của bề mặt: nút submit giữ kiểu của nó trong composer (0.29.2)</figcaption><div class="cat-live"><div style="max-width:360px"><div class="gb-engine-panel gb-engine-panel--inline gemboss-popover-surface" role="group" aria-label="Assistant engine"><div class="ui-tabs gb-engine-tabs" role="tablist" aria-label="Engine, setup and status"><button type="button" role="tab" id=":c99-R0:-tab-engine" aria-controls=":c99-R0:-pane-engine" aria-selected="false" tabindex="-1">Engine</button><button type="button" role="tab" id=":c99-R0:-tab-setup" aria-controls=":c99-R0:-pane-setup" aria-selected="true" tabindex="0">Setup</button><button type="button" role="tab" id=":c99-R0:-tab-status" aria-controls=":c99-R0:-pane-status" aria-selected="false" tabindex="-1">Status</button></div><div class="gb-engine-pane" role="tabpanel" id=":c99-R0:-pane-setup" aria-labelledby=":c99-R0:-tab-setup"><p class="gb-engine-callout gb-engine-callout--down"><strong>Bridge on your machine: not connected.</strong></p><div class="gb-engine-steps"><form class="ui-toolbar"><input class="gemboss-field" aria-label="Pairing code" placeholder="Pairing code"/><button type="submit" class="ui-btn ui-btn--primary">Pair</button></form></div><pre class="gb-engine-cmd"><code>curl -fsSL https://radar.test/bridge/install.sh | sh</code></pre><div class="gb-engine-actions"><button type="button" class="ui-btn ui-btn--primary">Copy command</button><span class="gb-engine-said" role="status"></span></div></div></div></div></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div style=&quot;max-width:360px&quot;&gt;
5831
+ &lt;/div&gt;</code></pre></details></figure><figure class="cat-demo"><figcaption>Tab Setup với form ghép cặp của bề mặt: nút submit giữ kiểu của nó trong composer (0.29.2)</figcaption><div class="cat-live"><div style="max-width:360px"><div class="gb-engine-panel gb-engine-panel--inline gemboss-popover-surface" role="group" aria-label="Assistant engine"><div class="ui-tabs gb-engine-tabs" role="tablist" aria-label="Engine, setup and status"><button type="button" role="tab" id=":c101-R0:-tab-engine" aria-controls=":c101-R0:-pane-engine" aria-selected="false" tabindex="-1">Engine</button><button type="button" role="tab" id=":c101-R0:-tab-setup" aria-controls=":c101-R0:-pane-setup" aria-selected="true" tabindex="0">Setup</button><button type="button" role="tab" id=":c101-R0:-tab-status" aria-controls=":c101-R0:-pane-status" aria-selected="false" tabindex="-1">Status</button></div><div class="gb-engine-pane" role="tabpanel" id=":c101-R0:-pane-setup" aria-labelledby=":c101-R0:-tab-setup"><p class="gb-engine-callout gb-engine-callout--down"><strong>Bridge on your machine: not connected.</strong></p><div class="gb-engine-steps"><form class="ui-toolbar"><input class="gemboss-field" aria-label="Pairing code" placeholder="Pairing code"/><button type="submit" class="ui-btn ui-btn--primary">Pair</button></form></div><pre class="gb-engine-cmd"><code>curl -fsSL https://radar.test/bridge/install.sh | sh</code></pre><div class="gb-engine-actions"><button type="button" class="ui-btn ui-btn--primary">Copy command</button><span class="gb-engine-said" role="status"></span></div></div></div></div></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div style=&quot;max-width:360px&quot;&gt;
5707
5832
  &lt;div class=&quot;gb-engine-panel gb-engine-panel--inline gemboss-popover-surface&quot; role=&quot;group&quot; aria-label=&quot;Assistant engine&quot;&gt;
5708
5833
  &lt;div class=&quot;ui-tabs gb-engine-tabs&quot; role=&quot;tablist&quot; aria-label=&quot;Engine, setup and status&quot;&gt;
5709
- &lt;button type=&quot;button&quot; role=&quot;tab&quot; id=&quot;:c99-R0:-tab-engine&quot; aria-controls=&quot;:c99-R0:-pane-engine&quot; aria-selected=&quot;false&quot; tabindex=&quot;-1&quot;&gt;Engine&lt;/button&gt;
5710
- &lt;button type=&quot;button&quot; role=&quot;tab&quot; id=&quot;:c99-R0:-tab-setup&quot; aria-controls=&quot;:c99-R0:-pane-setup&quot; aria-selected=&quot;true&quot; tabindex=&quot;0&quot;&gt;Setup&lt;/button&gt;
5711
- &lt;button type=&quot;button&quot; role=&quot;tab&quot; id=&quot;:c99-R0:-tab-status&quot; aria-controls=&quot;:c99-R0:-pane-status&quot; aria-selected=&quot;false&quot; tabindex=&quot;-1&quot;&gt;Status&lt;/button&gt;
5834
+ &lt;button type=&quot;button&quot; role=&quot;tab&quot; id=&quot;:c101-R0:-tab-engine&quot; aria-controls=&quot;:c101-R0:-pane-engine&quot; aria-selected=&quot;false&quot; tabindex=&quot;-1&quot;&gt;Engine&lt;/button&gt;
5835
+ &lt;button type=&quot;button&quot; role=&quot;tab&quot; id=&quot;:c101-R0:-tab-setup&quot; aria-controls=&quot;:c101-R0:-pane-setup&quot; aria-selected=&quot;true&quot; tabindex=&quot;0&quot;&gt;Setup&lt;/button&gt;
5836
+ &lt;button type=&quot;button&quot; role=&quot;tab&quot; id=&quot;:c101-R0:-tab-status&quot; aria-controls=&quot;:c101-R0:-pane-status&quot; aria-selected=&quot;false&quot; tabindex=&quot;-1&quot;&gt;Status&lt;/button&gt;
5712
5837
  &lt;/div&gt;
5713
- &lt;div class=&quot;gb-engine-pane&quot; role=&quot;tabpanel&quot; id=&quot;:c99-R0:-pane-setup&quot; aria-labelledby=&quot;:c99-R0:-tab-setup&quot;&gt;
5838
+ &lt;div class=&quot;gb-engine-pane&quot; role=&quot;tabpanel&quot; id=&quot;:c101-R0:-pane-setup&quot; aria-labelledby=&quot;:c101-R0:-tab-setup&quot;&gt;
5714
5839
  &lt;p class=&quot;gb-engine-callout gb-engine-callout--down&quot;&gt;
5715
5840
  &lt;strong&gt;Bridge on your machine: not connected.&lt;/strong&gt;
5716
5841
  &lt;/p&gt;
@@ -5731,7 +5856,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
5731
5856
  &lt;/div&gt;
5732
5857
  &lt;/div&gt;
5733
5858
  &lt;/div&gt;</code></pre></details></figure></section>
5734
- <section id="assistant"><h2>Trợ lý: cột phiên</h2><p><code>SessionRail</code> (React). Khung toàn màn hình / cửa sổ nổi / cột phải cao hết màn (<code>allowSide</code>) / thanh là <code>AssistantHost</code>, cần React vì có trạng thái.</p><figure class="cat-demo"><figcaption>SessionRail</figcaption><div class="cat-live"><div style="height:360px;display:flex"><aside class="gemboss-assistant-rail"><div class="gemboss-assistant-rail-top"><button type="button" class="gemboss-assistant-newchat" title="Phiên mới"><svg viewBox="0 0 20 20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M11 4H5.5A1.5 1.5 0 0 0 4 5.5v9A1.5 1.5 0 0 0 5.5 16h9a1.5 1.5 0 0 0 1.5-1.5V9"></path><path d="M14.5 3.5l2 2L10 12H8v-2z"></path></g></svg><span>Phiên mới</span></button><button type="button" class="gemboss-assistant-collapse" aria-label="Collapse sidebar" title="Collapse"><svg viewBox="0 0 20 20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M12 5l-5 5 5 5"></path></g></svg></button></div><div class="gemboss-assistant-search gemboss-field gemboss-field--group"><svg viewBox="0 0 20 20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><circle cx="9" cy="9" r="5"></circle><path d="M13 13l3.5 3.5"></path></g></svg><input class="gemboss-field__bare" placeholder="Tìm phiên…" aria-label="Search history" value=""/><kbd class="gemboss-assistant-kbd">/</kbd></div><div class="gemboss-assistant-threads"><div class="gemboss-assistant-group"><div class="gemboss-assistant-group-label">Đã ghim</div><div class="gemboss-assistant-thread"><button type="button" class="gemboss-assistant-thread-main" title="So sánh advertorial với listicle"><span class="gemboss-assistant-thread-titlerow"><svg viewBox="0 0 20 20" class="gemboss-assistant-pin-dot" aria-hidden="true" focusable="false"><path d="M8 3.5h4l-.5 5 2.5 2.5H6l2.5-2.5z" fill="currentColor"></path><path d="M10 11v5.5" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"></path></svg><span class="gemboss-assistant-thread-title">So sánh advertorial với listicle</span></span><span class="gemboss-assistant-thread-meta">1/9/2026</span></button><div class="gemboss-assistant-thread-actions"><button type="button" class="gemboss-assistant-thread-act" aria-label="Options"><svg viewBox="0 0 20 20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><circle cx="5" cy="10" r=".8"></circle><circle cx="10" cy="10" r=".8"></circle><circle cx="15" cy="10" r=".8"></circle></g></svg></button></div></div></div><div class="gemboss-assistant-group"><div class="gemboss-assistant-group-label">Hôm nay</div><div class="gemboss-assistant-thread active"><button type="button" class="gemboss-assistant-thread-main" title="Store nào đang dựng loạt landing?"><span class="gemboss-assistant-thread-titlerow"><span class="gemboss-assistant-thread-title">Store nào đang dựng loạt landing?</span></span><span class="gemboss-assistant-thread-meta">3 giờ trước</span></button><div class="gemboss-assistant-thread-actions"><button type="button" class="gemboss-assistant-thread-act" aria-label="Options"><svg viewBox="0 0 20 20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><circle cx="5" cy="10" r=".8"></circle><circle cx="10" cy="10" r=".8"></circle><circle cx="15" cy="10" r=".8"></circle></g></svg></button></div></div></div><div class="gemboss-assistant-group"><div class="gemboss-assistant-group-label">Hôm qua</div><div class="gemboss-assistant-thread"><button type="button" class="gemboss-assistant-thread-main" title="Landing điểm cao nhất của corpus"><span class="gemboss-assistant-thread-titlerow"><span class="gemboss-assistant-thread-title">Landing điểm cao nhất của corpus</span></span><span class="gemboss-assistant-thread-meta">1 ngày trước</span></button><div class="gemboss-assistant-thread-actions"><button type="button" class="gemboss-assistant-thread-act" aria-label="Options"><svg viewBox="0 0 20 20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><circle cx="5" cy="10" r=".8"></circle><circle cx="10" cy="10" r=".8"></circle><circle cx="15" cy="10" r=".8"></circle></g></svg></button></div></div></div></div></aside></div></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div style=&quot;height:360px;display:flex&quot;&gt;
5859
+ <section id="assistant"><h2>Trợ lý: cột phiên</h2><p><code>SessionRail</code> (React). Khung toàn màn hình / cửa sổ nổi / cột phải cao hết màn (<code>allowSide</code>) / thanh là <code>AssistantHost</code>, cần React vì có trạng thái.</p><figure class="cat-demo"><figcaption>SessionRail</figcaption><div class="cat-live"><div style="height:360px;display:flex"><aside class="gemboss-assistant-rail"><div class="gemboss-assistant-rail-top"><button type="button" class="gemboss-assistant-newchat" title="Phiên mới"><svg viewBox="0 0 20 20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M11 4H5.5A1.5 1.5 0 0 0 4 5.5v9A1.5 1.5 0 0 0 5.5 16h9a1.5 1.5 0 0 0 1.5-1.5V9"></path><path d="M14.5 3.5l2 2L10 12H8v-2z"></path></g></svg><span>Phiên mới</span></button><button type="button" class="gemboss-assistant-collapse" aria-label="Collapse sidebar" title="Collapse"><svg viewBox="0 0 20 20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><path d="M12 5l-5 5 5 5"></path></g></svg></button></div><div class="gemboss-assistant-search gemboss-field gemboss-field--group"><svg viewBox="0 0 20 20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><circle cx="9" cy="9" r="5"></circle><path d="M13 13l3.5 3.5"></path></g></svg><input class="gemboss-field__bare" placeholder="Tìm phiên…" aria-label="Search history" value=""/><kbd class="gemboss-assistant-kbd">/</kbd></div><div class="gemboss-assistant-threads"><div class="gemboss-assistant-group"><div class="gemboss-assistant-group-label">Đã ghim</div><div class="gemboss-assistant-thread"><button type="button" class="gemboss-assistant-thread-main" title="So sánh advertorial với listicle"><span class="gemboss-assistant-thread-titlerow"><svg viewBox="0 0 20 20" class="gemboss-assistant-pin-dot" aria-hidden="true" focusable="false"><path d="M8 3.5h4l-.5 5 2.5 2.5H6l2.5-2.5z" fill="currentColor"></path><path d="M10 11v5.5" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"></path></svg><span class="gemboss-assistant-thread-title">So sánh advertorial với listicle</span></span><span class="gemboss-assistant-thread-meta">2/9/2026</span></button><div class="gemboss-assistant-thread-actions"><button type="button" class="gemboss-assistant-thread-act" aria-label="Options"><svg viewBox="0 0 20 20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><circle cx="5" cy="10" r=".8"></circle><circle cx="10" cy="10" r=".8"></circle><circle cx="15" cy="10" r=".8"></circle></g></svg></button></div></div></div><div class="gemboss-assistant-group"><div class="gemboss-assistant-group-label">Hôm nay</div><div class="gemboss-assistant-thread active"><button type="button" class="gemboss-assistant-thread-main" title="Store nào đang dựng loạt landing?"><span class="gemboss-assistant-thread-titlerow"><span class="gemboss-assistant-thread-title">Store nào đang dựng loạt landing?</span></span><span class="gemboss-assistant-thread-meta">3 giờ trước</span></button><div class="gemboss-assistant-thread-actions"><button type="button" class="gemboss-assistant-thread-act" aria-label="Options"><svg viewBox="0 0 20 20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><circle cx="5" cy="10" r=".8"></circle><circle cx="10" cy="10" r=".8"></circle><circle cx="15" cy="10" r=".8"></circle></g></svg></button></div></div></div><div class="gemboss-assistant-group"><div class="gemboss-assistant-group-label">Hôm qua</div><div class="gemboss-assistant-thread"><button type="button" class="gemboss-assistant-thread-main" title="Landing điểm cao nhất của corpus"><span class="gemboss-assistant-thread-titlerow"><span class="gemboss-assistant-thread-title">Landing điểm cao nhất của corpus</span></span><span class="gemboss-assistant-thread-meta">1 ngày trước</span></button><div class="gemboss-assistant-thread-actions"><button type="button" class="gemboss-assistant-thread-act" aria-label="Options"><svg viewBox="0 0 20 20" aria-hidden="true" focusable="false"><g fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"><circle cx="5" cy="10" r=".8"></circle><circle cx="10" cy="10" r=".8"></circle><circle cx="15" cy="10" r=".8"></circle></g></svg></button></div></div></div></div></aside></div></div><details class="cat-code"><summary>Markup</summary><pre><code>&lt;div style=&quot;height:360px;display:flex&quot;&gt;
5735
5860
  &lt;aside class=&quot;gemboss-assistant-rail&quot;&gt;
5736
5861
  &lt;div class=&quot;gemboss-assistant-rail-top&quot;&gt;
5737
5862
  &lt;button type=&quot;button&quot; class=&quot;gemboss-assistant-newchat&quot; title=&quot;Phiên mới&quot;&gt;
@@ -5780,7 +5905,7 @@ body{margin:0;background:var(--gemboss-app-bg,#f1f1f1);color:var(--gemboss-text)
5780
5905
  &lt;/svg&gt;
5781
5906
  &lt;span class=&quot;gemboss-assistant-thread-title&quot;&gt;So sánh advertorial với listicle&lt;/span&gt;
5782
5907
  &lt;/span&gt;
5783
- &lt;span class=&quot;gemboss-assistant-thread-meta&quot;&gt;1/9/2026&lt;/span&gt;
5908
+ &lt;span class=&quot;gemboss-assistant-thread-meta&quot;&gt;2/9/2026&lt;/span&gt;
5784
5909
  &lt;/button&gt;
5785
5910
  &lt;div class=&quot;gemboss-assistant-thread-actions&quot;&gt;
5786
5911
  &lt;button type=&quot;button&quot; class=&quot;gemboss-assistant-thread-act&quot; aria-label=&quot;Options&quot;&gt;