/* Lucide icons — inlined.
   The design system's Icon.jsx masks these from unpkg.com/lucide-static@latest.
   That is a third-party request per glyph (leaking every visitor's IP) and an
   unpinned dependency (@latest re-resolves silently). Pinned to 0.454.0 and
   inlined as data URIs; the CSS-mask-over-currentColor mechanism is unchanged,
   so glyphs still inherit text colour. Lucide is ISC licensed.
   Regenerate with site/tools/vendor_icons.py (see site/tools/README.md). */
.icon{display:inline-block;width:18px;height:18px;flex:0 0 auto;background:currentColor;
  -webkit-mask-image:var(--icon);mask-image:var(--icon);
  -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;
  -webkit-mask-position:center;mask-position:center;
  -webkit-mask-size:contain;mask-size:contain;vertical-align:middle}
.icon-14{width:14px;height:14px}.icon-15{width:15px;height:15px}
.icon-16{width:16px;height:16px}.icon-22{width:22px;height:22px}
.i-scan-text{--icon:url("data:image/svg+xml,<svg class=%22lucide lucide-scan-text%22 xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22currentColor%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <path d=%22M3 7V5a2 2 0 0 1 2-2h2%22 /> <path d=%22M17 3h2a2 2 0 0 1 2 2v2%22 /> <path d=%22M21 17v2a2 2 0 0 1-2 2h-2%22 /> <path d=%22M7 21H5a2 2 0 0 1-2-2v-2%22 /> <path d=%22M7 8h8%22 /> <path d=%22M7 12h10%22 /> <path d=%22M7 16h6%22 /> </svg>")}
.i-upload{--icon:url("data:image/svg+xml,<svg class=%22lucide lucide-upload%22 xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22currentColor%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <path d=%22M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4%22 /> <polyline points=%2217 8 12 3 7 8%22 /> <line x1=%2212%22 x2=%2212%22 y1=%223%22 y2=%2215%22 /> </svg>")}
.i-download{--icon:url("data:image/svg+xml,<svg class=%22lucide lucide-download%22 xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22currentColor%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <path d=%22M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4%22 /> <polyline points=%227 10 12 15 17 10%22 /> <line x1=%2212%22 x2=%2212%22 y1=%2215%22 y2=%223%22 /> </svg>")}
.i-copy{--icon:url("data:image/svg+xml,<svg class=%22lucide lucide-copy%22 xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22currentColor%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <rect width=%2214%22 height=%2214%22 x=%228%22 y=%228%22 rx=%222%22 ry=%222%22 /> <path d=%22M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2%22 /> </svg>")}
.i-check{--icon:url("data:image/svg+xml,<svg class=%22lucide lucide-check%22 xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22currentColor%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <path d=%22M20 6 9 17l-5-5%22 /> </svg>")}
.i-x{--icon:url("data:image/svg+xml,<svg class=%22lucide lucide-x%22 xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22currentColor%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <path d=%22M18 6 6 18%22 /> <path d=%22m6 6 12 12%22 /> </svg>")}
.i-arrow-right{--icon:url("data:image/svg+xml,<svg class=%22lucide lucide-arrow-right%22 xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22currentColor%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <path d=%22M5 12h14%22 /> <path d=%22m12 5 7 7-7 7%22 /> </svg>")}
.i-chevron-down{--icon:url("data:image/svg+xml,<svg class=%22lucide lucide-chevron-down%22 xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22currentColor%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <path d=%22m6 9 6 6 6-6%22 /> </svg>")}
.i-shield-check{--icon:url("data:image/svg+xml,<svg class=%22lucide lucide-shield-check%22 xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22currentColor%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <path d=%22M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z%22 /> <path d=%22m9 12 2 2 4-4%22 /> </svg>")}
.i-zap{--icon:url("data:image/svg+xml,<svg class=%22lucide lucide-zap%22 xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22currentColor%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <path d=%22M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z%22 /> </svg>")}
.i-table{--icon:url("data:image/svg+xml,<svg class=%22lucide lucide-table%22 xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22currentColor%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <path d=%22M12 3v18%22 /> <rect width=%2218%22 height=%2218%22 x=%223%22 y=%223%22 rx=%222%22 /> <path d=%22M3 9h18%22 /> <path d=%22M3 15h18%22 /> </svg>")}
.i-braces{--icon:url("data:image/svg+xml,<svg class=%22lucide lucide-braces%22 xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22currentColor%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <path d=%22M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2 2 2 0 0 1 2 2v5c0 1.1.9 2 2 2h1%22 /> <path d=%22M16 21h1a2 2 0 0 0 2-2v-5c0-1.1.9-2 2-2a2 2 0 0 1-2-2V5a2 2 0 0 0-2-2h-1%22 /> </svg>")}
.i-code{--icon:url("data:image/svg+xml,<svg class=%22lucide lucide-code%22 xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22currentColor%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <polyline points=%2216 18 22 12 16 6%22 /> <polyline points=%228 6 2 12 8 18%22 /> </svg>")}
.i-trash-2{--icon:url("data:image/svg+xml,<svg class=%22lucide lucide-trash-2%22 xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22currentColor%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <path d=%22M3 6h18%22 /> <path d=%22M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6%22 /> <path d=%22M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2%22 /> <line x1=%2210%22 x2=%2210%22 y1=%2211%22 y2=%2217%22 /> <line x1=%2214%22 x2=%2214%22 y1=%2211%22 y2=%2217%22 /> </svg>")}
.i-mail{--icon:url("data:image/svg+xml,<svg class=%22lucide lucide-mail%22 xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22currentColor%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <rect width=%2220%22 height=%2216%22 x=%222%22 y=%224%22 rx=%222%22 /> <path d=%22m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7%22 /> </svg>")}
.i-clock{--icon:url("data:image/svg+xml,<svg class=%22lucide lucide-clock%22 xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22currentColor%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <circle cx=%2212%22 cy=%2212%22 r=%2210%22 /> <polyline points=%2212 6 12 12 16 14%22 /> </svg>")}
.i-languages{--icon:url("data:image/svg+xml,<svg class=%22lucide lucide-languages%22 xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22currentColor%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <path d=%22m5 8 6 6%22 /> <path d=%22m4 14 6-6 2-3%22 /> <path d=%22M2 5h12%22 /> <path d=%22M7 2h1%22 /> <path d=%22m22 22-5-10-5 10%22 /> <path d=%22M14 18h6%22 /> </svg>")}
.i-file-text{--icon:url("data:image/svg+xml,<svg class=%22lucide lucide-file-text%22 xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22currentColor%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <path d=%22M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z%22 /> <path d=%22M14 2v4a2 2 0 0 0 2 2h4%22 /> <path d=%22M10 9H8%22 /> <path d=%22M16 13H8%22 /> <path d=%22M16 17H8%22 /> </svg>")}
.i-circle-alert{--icon:url("data:image/svg+xml,<svg class=%22lucide lucide-circle-alert%22 xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22currentColor%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <circle cx=%2212%22 cy=%2212%22 r=%2210%22 /> <line x1=%2212%22 x2=%2212%22 y1=%228%22 y2=%2212%22 /> <line x1=%2212%22 x2=%2212.01%22 y1=%2216%22 y2=%2216%22 /> </svg>")}
.i-triangle-alert{--icon:url("data:image/svg+xml,<svg class=%22lucide lucide-triangle-alert%22 xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22currentColor%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <path d=%22m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3%22 /> <path d=%22M12 9v4%22 /> <path d=%22M12 17h.01%22 /> </svg>")}
.i-circle-check{--icon:url("data:image/svg+xml,<svg class=%22lucide lucide-circle-check%22 xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22currentColor%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <circle cx=%2212%22 cy=%2212%22 r=%2210%22 /> <path d=%22m9 12 2 2 4-4%22 /> </svg>")}
.i-info{--icon:url("data:image/svg+xml,<svg class=%22lucide lucide-info%22 xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22currentColor%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <circle cx=%2212%22 cy=%2212%22 r=%2210%22 /> <path d=%22M12 16v-4%22 /> <path d=%22M12 8h.01%22 /> </svg>")}
.i-server{--icon:url("data:image/svg+xml,<svg class=%22lucide lucide-server%22 xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22currentColor%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <rect width=%2220%22 height=%228%22 x=%222%22 y=%222%22 rx=%222%22 ry=%222%22 /> <rect width=%2220%22 height=%228%22 x=%222%22 y=%2214%22 rx=%222%22 ry=%222%22 /> <line x1=%226%22 x2=%226.01%22 y1=%226%22 y2=%226%22 /> <line x1=%226%22 x2=%226.01%22 y1=%2218%22 y2=%2218%22 /> </svg>")}
.i-lock{--icon:url("data:image/svg+xml,<svg class=%22lucide lucide-lock%22 xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22currentColor%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <rect width=%2218%22 height=%2211%22 x=%223%22 y=%2211%22 rx=%222%22 ry=%222%22 /> <path d=%22M7 11V7a5 5 0 0 1 10 0v4%22 /> </svg>")}
.i-external-link{--icon:url("data:image/svg+xml,<svg class=%22lucide lucide-external-link%22 xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22currentColor%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <path d=%22M15 3h6v6%22 /> <path d=%22M10 14 21 3%22 /> <path d=%22M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6%22 /> </svg>")}
.i-menu{--icon:url("data:image/svg+xml,<svg class=%22lucide lucide-menu%22 xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22currentColor%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <line x1=%224%22 x2=%2220%22 y1=%2212%22 y2=%2212%22 /> <line x1=%224%22 x2=%2220%22 y1=%226%22 y2=%226%22 /> <line x1=%224%22 x2=%2220%22 y1=%2218%22 y2=%2218%22 /> </svg>")}
.i-key{--icon:url("data:image/svg+xml,<svg class=%22lucide lucide-key%22 xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22currentColor%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <path d=%22m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4%22 /> <path d=%22m21 2-9.6 9.6%22 /> <circle cx=%227.5%22 cy=%2215.5%22 r=%225.5%22 /> </svg>")}
.i-search{--icon:url("data:image/svg+xml,<svg class=%22lucide lucide-search%22 xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22currentColor%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 > <circle cx=%2211%22 cy=%2211%22 r=%228%22 /> <path d=%22m21 21-4.3-4.3%22 /> </svg>")}
