@font-face { font-family: "Zen Old Mincho"; font-style: normal; font-weight: 700; font-display: swap; src: url("/fonts/zen-old-mincho-700.4cf8ad9f2c.woff2") format("woff2"); }
/* modscode.com. Light by default; a dark theme on html[data-theme="dark"], which
   site.js sets when the system asks for dark or the reader chose it.
   Headings are Zen Old Mincho, self-hosted and cut down to the glyphs the headings
   use (the @font-face rules are prepended by the build); body text is the system's. */
:root {
  --bg: #F7F5F0;
  --raise: #FFFFFF;
  --ink: #1A1A18;
  --soft: rgba(26, 26, 24, 0.82);
  --dim: #6A665F;
  --gold: #8F6410;
  --up: #1E7A4C;
  --down: #B93A35;
  --line: rgba(26, 26, 24, 0.18);
  --hair: rgba(26, 26, 24, 0.09);
  --serif: "Zen Old Mincho", "Yu Mincho", "Hiragino Mincho ProN", serif;
  --sans: "Hiragino Sans", "Yu Gothic UI", "Meiryo", system-ui, sans-serif;
  --mono: ui-monospace, "Cascadia Mono", "JetBrains Mono", Consolas, monospace;
  --gut: 18px;
  --max: 1120px;
  color-scheme: light;
}
:root[data-theme="dark"] {
  --bg: #0E0E0D; --raise: #151514; --ink: #ECEAE6; --soft: rgba(236, 234, 230, 0.82); --dim: #8B8882;
  --gold: #D9B26A; --up: #7FD1A6; --down: #F2837F;
  --line: rgba(236, 234, 230, 0.16); --hair: rgba(236, 234, 230, 0.08);
  color-scheme: dark;
}
/* English pages: the system's Latin faces. Without this the Japanese list above
   would set Latin text in a Japanese face. */
:root:lang(en) {
  --serif: "Zen Old Mincho", Georgia, "Times New Roman", serif;
  --sans: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;
}
@media (min-width: 720px) { :root { --gut: 32px; } }

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; scroll-padding-top: 68px; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
body { margin: 0; background: var(--bg); color: var(--ink); font: 400 15px/1.8 var(--sans); overflow-x: hidden; }
a { color: inherit; text-decoration-color: var(--dim); text-underline-offset: 3px; text-decoration-thickness: 1px; }
a:hover { text-decoration-color: var(--gold); }
h1, h2, h3, .serif { font-family: var(--serif); font-weight: 700; margin: 0; letter-spacing: 0.01em; }
p, ul, ol, table, pre { margin: 0; }
code, pre, .mono { font-family: var(--mono); }
code { font-size: 0.88em; background: var(--hair); padding: 1px 5px; border-radius: 3px; }
pre code { background: none; padding: 0; font-size: 13px; }
:focus-visible { outline: 1px solid var(--gold); outline-offset: 2px; }
.wrap { width: 100%; max-width: var(--max); margin: 0 auto; padding: 0 var(--gut); }
.skip { position: absolute; left: -999px; top: 8px; background: var(--ink); color: var(--bg); padding: 4px 10px; font: 12px var(--mono); z-index: 10; }
.skip:focus { left: 8px; }
.sub { color: var(--dim); font-size: 13px; }
.ico { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.2; stroke-linecap: round; stroke-linejoin: round; flex: none; }
.ico .fill { fill: currentColor; stroke: none; }

/* ---- top bar ---- */
.top { position: sticky; top: 0; z-index: 5; background: color-mix(in srgb, var(--bg) 88%, transparent); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); border-bottom: 1px solid var(--hair); }
.top .wrap { display: flex; align-items: center; gap: 14px; height: 54px; }
.brand { font: 600 15px var(--mono); text-decoration: none; letter-spacing: 0.02em; white-space: nowrap; }
.brand span { color: var(--gold); }
.nav { display: flex; gap: 22px; margin-left: auto; font-size: 13px; min-width: 0; }
.nav a { color: var(--dim); text-decoration: none; white-space: nowrap; }
.nav a:hover, .nav a[aria-current] { color: var(--ink); }
.theme { display: grid; place-items: center; width: 34px; height: 30px; padding: 0; background: none; border: 1px solid var(--line); border-radius: 4px; color: var(--dim); cursor: pointer; flex: none; }
.theme:hover { color: var(--ink); }
.lang { font: 500 11.5px var(--mono); letter-spacing: 0.08em; color: var(--dim); text-decoration: none; flex: none; }
.lang:hover { color: var(--ink); }
@media (max-width: 760px) { .nav { gap: 14px; overflow-x: auto; scrollbar-width: none; } .nav a.wide { display: none; } }

/* ---- hero ---- */
.hero { position: relative; border-bottom: 1px solid var(--hair); overflow: hidden; }
.hero::before { content: ""; position: absolute; inset: 0; background-image: linear-gradient(var(--hair) 1px, transparent 1px), linear-gradient(90deg, var(--hair) 1px, transparent 1px); background-size: 36px 36px; -webkit-mask-image: radial-gradient(ellipse 70% 90% at 78% 40%, #000 20%, transparent 75%); mask-image: radial-gradient(ellipse 70% 90% at 78% 40%, #000 20%, transparent 75%); pointer-events: none; }
.hero .wrap { position: relative; display: grid; gap: 36px; padding-top: 56px; padding-bottom: 56px; align-items: center; }
@media (min-width: 960px) { .hero .wrap { grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); gap: 48px; padding-top: 72px; padding-bottom: 72px; } }
.eyebrow { font: 500 12px var(--mono); letter-spacing: 0.14em; color: var(--gold); text-transform: uppercase; margin-bottom: 18px; }
.hero h1 { font-size: clamp(28px, 3.9vw, 44px); line-height: 1.36; }
.nb { display: inline-block; }
.hero h1 em { font-style: normal; color: var(--gold); }
.lead { color: var(--soft); font-size: 16px; margin-top: 18px; max-width: 34em; }
.cta { display: flex; flex-wrap: wrap; gap: 18px; margin-top: 16px; font-size: 14px; }
.cta a { display: inline-flex; align-items: center; gap: 6px; text-decoration: none; border-bottom: 1px solid var(--dim); padding-bottom: 1px; }
.cta a:hover { border-color: var(--gold); }
.shot { min-width: 0; }

/* install box and code blocks */
.cmds { margin-top: 26px; max-width: 34em; }
.cmd { display: flex; align-items: stretch; border: 1px solid var(--line); border-radius: 6px; background: var(--raise); }
.cmd + .cmd { margin-top: 6px; }
.cmd pre { flex: 1; min-width: 0; padding: 12px 14px; white-space: pre-wrap; overflow-wrap: anywhere; line-height: 1.7; }
.cmd pre code::before { content: "› "; color: var(--gold); }
.copy { display: inline-flex; align-items: center; gap: 6px; padding: 0 13px; background: none; border: 0; border-left: 1px solid var(--line); color: var(--dim); font: 12px var(--sans); cursor: pointer; white-space: nowrap; }
.copy:hover { color: var(--ink); }
.copy.done { color: var(--up); }
.prose .cmds, .side .cmds, .steps .cmds { margin-top: 10px; max-width: none; }

/* the window drawing */
.win { display: block; width: 100%; height: auto; }
.win text { font-family: var(--mono); fill: var(--dim); }
.win .frame { fill: var(--raise); stroke: var(--line); }
.win .rule { stroke: var(--hair); fill: none; }
.win .bar { fill: var(--hair); }
.win .bar.hi { fill: var(--line); }
.win .bubble, .win .prompt { fill: none; stroke: var(--line); }
.win .s { fill: none; stroke: var(--line); stroke-width: 1; }
.win .s.thin { stroke-width: 0.6; }
.win .f { fill: var(--line); }
.win .f2 { fill: var(--hair); }
.win .tag { fill: none; stroke: var(--line); }
.win .tagt { fill: var(--dim); }
.win .co circle { fill: var(--bg); stroke: var(--line); }
.win .co text { fill: var(--dim); font-weight: 600; }
.win .part.on .s { stroke: var(--gold); }
.win .part.on .t { fill: var(--ink); }
.win .part.on .f { fill: var(--gold); }
.win .part.on .f2 { fill: color-mix(in srgb, var(--gold) 38%, transparent); }
.win .part.on .tag { stroke: var(--down); }
.win .part.on .tagt { fill: var(--down); }
.win .part.on .co circle { fill: var(--gold); stroke: var(--gold); }
.win .part.on .co text { fill: var(--bg); }
.win .part.off { opacity: 0.55; }
.legend { list-style: none; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 6px 18px; margin-top: 14px; font-size: 13px; }
.legend li { display: grid; grid-template-columns: 20px 1fr; column-gap: 8px; align-items: baseline; }
.legend b { display: grid; place-items: center; width: 18px; height: 18px; border-radius: 50%; background: var(--gold); color: var(--bg); font: 600 10.5px var(--mono); align-self: center; }
.legend small { grid-column: 2; color: var(--dim); font-size: 12px; line-height: 1.5; }
.legend li.off { opacity: 0.45; }
.legend li.off b { background: none; border: 1px solid var(--line); color: var(--dim); }

/* ---- sections ---- */
section.block { padding: 56px 0 8px; }
.head { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin-bottom: 18px; }
.head h2 { font-size: 26px; }
.head .no { font: 500 12px var(--mono); color: var(--gold); letter-spacing: 0.14em; margin-right: 12px; }
.head p { color: var(--dim); font-size: 13px; }

.facts { display: grid; grid-template-columns: repeat(3, 1fr); border-bottom: 1px solid var(--hair); }
.facts div { padding: 18px 0; text-align: center; border-left: 1px solid var(--hair); }
.facts div:first-child { border-left: 0; }
.facts b { display: block; font-size: 30px; line-height: 1.2; }
.facts span { color: var(--dim); font-size: 12.5px; }

/* the ingredient matrix */
.scroll { overflow-x: auto; border: 1px solid var(--line); border-radius: 6px; background: var(--raise); }
.chips-bar { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 16px; }
.chips-bar[hidden] { display: none; }
.chip { font: 500 12.5px var(--sans); padding: 6px 12px; border: 1px solid var(--line); border-radius: 999px; background: none; color: var(--dim); cursor: pointer; }
.chip:hover { color: var(--ink); }
.chip[aria-pressed="true"] { border-color: var(--gold); color: var(--gold); }
.gallery { list-style: none; padding: 0; display: grid; gap: 14px; grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)); }
.card[hidden] { display: none; }
.card a { display: flex; flex-direction: column; height: 100%; text-decoration: none; color: inherit; border: 1px solid var(--line); border-radius: 6px; background: var(--raise); overflow: hidden; }
.card a:hover, .card a:focus-visible { border-color: var(--gold); }
.card .pic { padding: 12px; border-bottom: 1px solid var(--hair); background: var(--bg); }
.card .meta { display: grid; gap: 4px; padding: 14px 16px 16px; }
.card .meta b { font: 600 15px var(--mono); }
.card a:hover .meta b { color: var(--gold); }
.card .meta span { color: var(--soft); font-size: 13px; line-height: 1.6; }
.card .meta small { color: var(--dim); font-size: 12px; }
/* A mod's preview: the desktop app's Code tab with what the mod drew in its places. */
.pv { --tfg: var(--ink); --tdim: var(--dim); --tline: var(--line); --tbg: var(--raise); --tsub: color-mix(in srgb, var(--ink) 4%, var(--raise));
  --k-red: #C0362C; --k-green: #1E7A4C; --k-yellow: #9A6A00; --k-blue: #2F5FB3; --k-magenta: #A03A8C; --k-cyan: #0F7C8C; --k-gray: #6A665F; --k-white: #8A877F; --k-black: #1A1A18; }
:root[data-theme="dark"] .pv { --k-red: #F2837F; --k-green: #7FD1A6; --k-yellow: #E6C46A; --k-blue: #8DB3F2; --k-magenta: #E19BD4; --k-cyan: #7FD3DF; --k-gray: #8B8882; --k-white: #ECEAE6; --k-black: #5A5853; }
.tui-win { position: relative; border: 1px solid var(--tline); border-radius: 8px; background: var(--tbg); overflow: hidden; font: 12.5px/1.55 var(--mono); color: var(--tfg); }
.tui-bar { padding: 6px 12px; border-bottom: 1px solid var(--hair); color: var(--tdim); font-size: 11px; }
.tui-body { display: grid; grid-template-columns: minmax(0, 1fr); }
.tui-win.has-pane .tui-body { grid-template-columns: minmax(0, 0.75fr) minmax(0, 1.7fr); }
.tui-pane { font-size: 11.5px; }
.tui-main { display: flex; flex-direction: column; gap: 8px; padding: 12px; min-width: 0; }
.tui-chat { display: flex; flex-direction: column; gap: 6px; flex: 1; }
.tui-chat .ph { display: block; height: 6px; border-radius: 3px; background: var(--hair); }
.tui-chat .ph.user { width: 46%; height: 16px; border-radius: 8px; margin-left: auto; margin-bottom: 4px; border: 1px solid var(--hair); background: none; }
.tui-chat .w62 { width: 62%; } .tui-chat .w88 { width: 88%; } .tui-chat .w74 { width: 74%; } .tui-chat .w40 { width: 40%; }
.tui-out { margin-top: 6px; padding: 8px 10px; border: 1px solid var(--tline); border-radius: 6px; background: var(--tsub); }
.tui-tag { display: block; font-weight: 600; color: var(--gold); margin-bottom: 4px; font-size: 11.5px; }
.tui-band { padding: 4px 10px; border: 1px solid var(--gold); border-radius: 4px; background: var(--tsub); }
.tui-prompt { border: 1px solid var(--tline); border-radius: 8px; padding: 9px 12px; color: var(--tdim); }
.tui-status { color: var(--tdim); font-size: 11.5px; padding: 0 4px; white-space: pre-wrap; overflow-wrap: anywhere; }
.tui-pane { border-left: 1px solid var(--tline); padding: 10px 12px; min-width: 0; background: var(--tsub); }
.tui-pane-title { display: block; overflow-wrap: anywhere; font-weight: 600; margin-bottom: 6px; padding-bottom: 6px; border-bottom: 1px solid var(--hair); }
/* toasts: small, at the top right of the chat, in the flow so they cover nothing */
.tui-toasts { display: grid; justify-items: end; gap: 4px; }
.tui-toasts .tui-toast { max-width: 80%; }
.tui-toast { padding: 4px 8px; border: 1px solid var(--tline); border-radius: 6px; background: var(--tbg); box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08); font-size: 10.5px; overflow-wrap: anywhere; }
.tui-win.compact { font-size: 10.5px; }
.tui-win.compact.has-pane .tui-body { grid-template-columns: minmax(0, 1fr); }
.tui-win.compact.has-pane .tui-main { display: none; }
.tui-win.compact .tui-pane { border-left: 0; }
.tui-win.compact .tui-main, .tui-win.compact .tui-pane { padding: 8px; }
.tui-win.compact .tui-chat .ph:nth-child(n+4) { display: none; }
@media (max-width: 560px) { .tui-win.has-pane .tui-body { grid-template-columns: minmax(0, 1fr); } .tui-pane { border-left: 0; border-top: 1px solid var(--tline); } }
.tui .bx { display: flex; min-width: 0; }
.tui .bx.col { flex-direction: column; } .tui .bx.row { flex-direction: row; } .tui .bx.col.rev { flex-direction: column-reverse; } .tui .bx.row.rev { flex-direction: row-reverse; }
.tui .g1 { gap: 0 1ch; } .tui .col.g1 { gap: 0; } .tui .g2 { gap: 0 2ch; } .tui .g3 { gap: 0 3ch; } .tui .g4 { gap: 0 4ch; }
.tui .p1 { padding: 0 1ch; } .tui .p2 { padding: 2px 2ch; } .tui .px1 { padding-left: 1ch; padding-right: 1ch; } .tui .px2 { padding-left: 2ch; padding-right: 2ch; }
.tui .py1 { padding-top: 0.4em; padding-bottom: 0.4em; } .tui .pl1 { padding-left: 1ch; } .tui .pl2 { padding-left: 2ch; } .tui .pl3, .tui .pl4 { padding-left: 3ch; }
.tui .mt1 { margin-top: 0.6em; } .tui .mt2, .tui .mt3, .tui .mt4 { margin-top: 1.2em; } .tui .mb1 { margin-bottom: 0.6em; } .tui .mb2 { margin-bottom: 1.2em; } .tui .ml1 { margin-left: 1ch; } .tui .ml2 { margin-left: 2ch; }
.tui .grow { flex-grow: 1; } .tui .noshrink { flex-shrink: 0; } .tui .wrap { flex-wrap: wrap; }
.tui .jsb { justify-content: space-between; } .tui .jend { justify-content: flex-end; } .tui .jc { justify-content: center; } .tui .ac { align-items: center; } .tui .aend { align-items: flex-end; }
.tui .bd { border: 1px solid var(--tline); border-radius: 4px; padding: 2px 1ch; }
.tui .none { display: none; }
.tui .tx { white-space: pre-wrap; overflow-wrap: anywhere; }
.tui .bx > .tx { display: block; }
.tui .bx.row { flex-wrap: wrap; }
.tui .bx.row > .tx, .tui .bx.row > .btn { flex: 0 1 auto; max-width: 100%; }
.tui .tx .tx { display: inline; }
.tui .trunc { white-space: pre-wrap; }
.tui .b { font-weight: 700; } .tui .dim { color: var(--tdim); } .tui .it { font-style: italic; } .tui .ul { text-decoration: underline; } .tui .st { text-decoration: line-through; }
.tui .inv { background: var(--tfg); color: var(--tbg); }
.tui .fg-red, .tui .fg-redBright { color: var(--k-red); } .tui .fg-green, .tui .fg-greenBright { color: var(--k-green); } .tui .fg-yellow, .tui .fg-yellowBright { color: var(--k-yellow); }
.tui .fg-blue, .tui .fg-blueBright { color: var(--k-blue); } .tui .fg-magenta, .tui .fg-magentaBright { color: var(--k-magenta); } .tui .fg-cyan, .tui .fg-cyanBright { color: var(--k-cyan); }
.tui .fg-gray, .tui .fg-blackBright { color: var(--k-gray); } .tui .fg-white, .tui .fg-whiteBright { color: var(--k-white); } .tui .fg-black { color: var(--k-black); }
.tui .bg-red { background: color-mix(in srgb, var(--k-red) 22%, transparent); } .tui .bg-green { background: color-mix(in srgb, var(--k-green) 22%, transparent); } .tui .bg-yellow { background: color-mix(in srgb, var(--k-yellow) 22%, transparent); }
.tui .bg-blue { background: color-mix(in srgb, var(--k-blue) 22%, transparent); } .tui .bg-cyan { background: color-mix(in srgb, var(--k-cyan) 22%, transparent); } .tui .bg-gray { background: color-mix(in srgb, var(--k-gray) 38%, transparent); }
.tui .fg-claude { color: #C15F3C; } .tui .bg-claude { background: color-mix(in srgb, #C15F3C 30%, transparent); }
.tui .fg-ink { color: var(--tfg); } .tui .fg-sub { color: var(--hair); } .tui .bg-sub { background: color-mix(in srgb, var(--ink) 10%, transparent); }
.tui .bg-magenta { background: color-mix(in srgb, var(--k-magenta) 22%, transparent); } .tui .bg-black, .tui .bg-white { background: var(--hair); }
.tui .bc-gray, .tui .bc-white { border-color: var(--tline); }
.tui .btn { display: inline-block; max-width: 100%; padding: 1px 1ch; border: 1px solid var(--tline); border-radius: 4px; white-space: pre-wrap; overflow-wrap: anywhere; }
.tui .btn.pri { border-color: var(--gold); color: var(--gold); } .tui .btn.plain { border: 0; padding: 0; }
.tui .btn i { font-style: normal; color: var(--tdim); font-size: 0.9em; }
.tui .lnk { text-decoration: underline; color: var(--k-blue); }
.tui .md, .tui .code, .tui .raster { margin: 0; white-space: pre-wrap; overflow-wrap: anywhere; font: inherit; }
.tui .raster { line-height: 1.15; }
.tui .inp { display: inline-block; min-width: min(12ch, 100%); max-width: 100%; overflow-wrap: anywhere; border-bottom: 1px solid var(--tline); }
.tui img.svg { display: block; max-width: 100%; height: auto; }
:root[data-theme="dark"] .tui img.svg { background: #F7F5F0; border-radius: 4px; }
.tui .svgph { display: inline-flex; align-items: flex-end; gap: 3px; height: 2.4em; max-width: 100%; padding: 2px 4px; border-radius: 4px; background: var(--tsub); }
.tui .svgph i { width: 1.4ch; border-radius: 2px 2px 0 0; background: color-mix(in srgb, var(--gold) 55%, transparent); height: 40%; }
.tui .svgph i:nth-child(2) { height: 70%; } .tui .svgph i:nth-child(3) { height: 55%; } .tui .svgph i:nth-child(4) { height: 90%; } .tui .svgph i:nth-child(5) { height: 30%; } .tui .svgph i:nth-child(6) { height: 65%; } .tui .svgph i:nth-child(7) { height: 80%; }
.pv-note { margin-top: 8px; }
/* what a mod does and its good points, read from its code */
.about-mod { display: grid; gap: 4px 28px; margin: 6px 0 22px; }
@media (min-width: 640px) { .about-mod { grid-template-columns: 1fr 1fr; } }
.about-mod h3 { margin: 0 0 4px; font: 500 12px var(--sans); color: var(--dim); letter-spacing: 0.02em; }
.about-mod ul { margin: 0; padding-left: 1.1em; font-size: 13.5px; line-height: 1.65; }
.card .meta small.good { color: var(--soft); }
/* a card for a mod that draws little: what it does, in words */
.pv-text { border: 1px dashed var(--line); border-radius: 8px; padding: 12px 14px; font-size: 12.5px; line-height: 1.6; color: var(--soft); }
.pv-text b { display: block; font: 500 11.5px var(--sans); color: var(--dim); margin-bottom: 4px; }
.pv-text ul { margin: 0; padding-left: 1.1em; }
/* Scale to fit, chosen at build time from the drawing's size (render.mjs fit): a card shows the
   whole drawing, the full picture scales one too wide for its place and wraps the rest */
.tui-fit { min-width: 0; }
.tui-fit.fd-0 { zoom: 1; } .tui-fit.fd-1 { zoom: 0.9; } .tui-fit.fd-2 { zoom: 0.8; } .tui-fit.fd-3 { zoom: 0.7; } .tui-fit.fd-4 { zoom: 0.6; } .tui-fit.fd-5 { zoom: 0.5; } .tui-fit.fd-6 { zoom: 0.42; } .tui-fit.fd-7 { zoom: 0.36; } .tui-fit.fd-8 { zoom: 0.3; } .tui-fit.fd-9 { zoom: 0.25; }
@media (max-width: 560px) { .tui-fit.fm-0 { zoom: 1; } .tui-fit.fm-1 { zoom: 0.9; } .tui-fit.fm-2 { zoom: 0.8; } .tui-fit.fm-3 { zoom: 0.7; } .tui-fit.fm-4 { zoom: 0.6; } .tui-fit.fm-5 { zoom: 0.5; } .tui-fit.fm-6 { zoom: 0.42; } .tui-fit.fm-7 { zoom: 0.36; } .tui-fit.fm-8 { zoom: 0.3; } .tui-fit.fm-9 { zoom: 0.25; } }
.tui-win.compact.za-0 .tui-body { zoom: 1; } .tui-win.compact.za-1 .tui-body { zoom: 0.9; } .tui-win.compact.za-2 .tui-body { zoom: 0.8; } .tui-win.compact.za-3 .tui-body { zoom: 0.7; } .tui-win.compact.za-4 .tui-body { zoom: 0.6; } .tui-win.compact.za-5 .tui-body { zoom: 0.5; } .tui-win.compact.za-6 .tui-body { zoom: 0.42; } .tui-win.compact.za-7 .tui-body { zoom: 0.36; } .tui-win.compact.za-8 .tui-body { zoom: 0.3; } .tui-win.compact.za-9 .tui-body { zoom: 0.25; }
.ggrid.small .tui-win.compact.zb-0 .tui-body { zoom: 1; } .ggrid.small .tui-win.compact.zb-1 .tui-body { zoom: 0.9; } .ggrid.small .tui-win.compact.zb-2 .tui-body { zoom: 0.8; } .ggrid.small .tui-win.compact.zb-3 .tui-body { zoom: 0.7; } .ggrid.small .tui-win.compact.zb-4 .tui-body { zoom: 0.6; } .ggrid.small .tui-win.compact.zb-5 .tui-body { zoom: 0.5; } .ggrid.small .tui-win.compact.zb-6 .tui-body { zoom: 0.42; } .ggrid.small .tui-win.compact.zb-7 .tui-body { zoom: 0.36; } .ggrid.small .tui-win.compact.zb-8 .tui-body { zoom: 0.3; } .ggrid.small .tui-win.compact.zb-9 .tui-body { zoom: 0.25; }
.matrix { border-collapse: collapse; width: 100%; min-width: 860px; font-size: 13.5px; }
.matrix th, .matrix td { padding: 11px 12px; border-bottom: 1px solid var(--hair); text-align: center; vertical-align: middle; white-space: nowrap; }
.matrix thead th { font: 500 11.5px var(--sans); color: var(--dim); border-bottom: 1px solid var(--line); }
.matrix tbody tr:last-child th, .matrix tbody tr:last-child td { border-bottom: 0; }
.matrix th[scope="row"], .matrix thead th:first-child { text-align: left; white-space: normal; }
.matrix th[scope="row"] a { text-decoration: none; display: block; }
.matrix th[scope="row"] b { font: 600 15px var(--mono); }
.matrix th[scope="row"] span { display: block; font-weight: 400; color: var(--dim); font-size: 12.5px; line-height: 1.55; margin-top: 2px; max-width: 30em; }
.matrix th[scope="row"] a:hover b { color: var(--gold); }
.matrix .no { color: var(--dim); }
.matrix .yes { color: var(--gold); }
.matrix .num { font-family: var(--mono); font-size: 12.5px; color: var(--soft); }
/* the directory: the description wraps, left aligned, and carries the width */
.matrix.dir { min-width: 760px; }
.matrix.dir td, .matrix.dir thead th { text-align: left; }
.matrix.dir td:nth-child(2) { white-space: normal; min-width: 22em; color: var(--soft); line-height: 1.55; }
.matrix.dir td:nth-child(3) { white-space: normal; }
.matrix.dir th[scope="row"] b { font-size: 13.5px; word-break: break-word; }
.matrix.dir th[scope="row"] { min-width: 10em; }
.matrix.dir th[scope="row"] small { display: block; font: 400 11.5px var(--mono); color: var(--dim); word-break: break-all; margin-top: 2px; }
.matrix.dir td.marks { white-space: normal; min-width: 9em; }
.mk { display: inline-block; font-size: 11.5px; line-height: 1.4; padding: 1px 6px; margin: 0 4px 3px 0; border: 1px solid var(--hair); border-radius: 3px; color: var(--soft); }
.mk.warn { border-color: var(--gold); color: var(--gold); }
.mk.none { color: var(--dim); }
.matrix.dir tr[hidden] { display: none; }
.gal-tools { display: grid; gap: 8px; margin: 18px 0 16px; }
.gal-tools input { width: 100%; font: inherit; font-size: 14px; padding: 8px 10px; border: 1px solid var(--line); border-radius: 4px; background: var(--bg); color: var(--ink); }
.gal-row { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.gal-row > span:first-child { width: 5.5em; font-size: 12.5px; color: var(--dim); }
.gchip { font: inherit; font-size: 12.5px; padding: 4px 10px; border: 1px solid var(--line); border-radius: 999px; background: none; color: var(--soft); cursor: pointer; }
.gchip i { font-style: normal; color: var(--dim); }
.gchip[aria-pressed="true"] { border-color: var(--gold); color: var(--gold); }
.gchip[data-kind="touch"][aria-pressed="true"] { text-decoration: line-through; }
.gal-shown { margin-left: auto; font-size: 12.5px; color: var(--dim); }
.ggrid .card .pic { flex: 1 0 auto; }
.ggrid .gcard .meta span { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.ggrid.small { grid-template-columns: repeat(auto-fill, minmax(min(100%, 220px), 1fr)); }
.gcard { content-visibility: auto; contain-intrinsic-size: auto 420px; }
p.marks { line-height: 2; }
.key { color: var(--dim); font-size: 12.5px; margin-top: 10px; }
.key b { color: var(--gold); font-weight: 400; }

/* numbered steps */
.steps { display: grid; gap: 0; border: 1px solid var(--line); border-radius: 6px; background: var(--raise); }
@media (min-width: 860px) { .steps.four { grid-template-columns: repeat(4, 1fr); } .steps.three { grid-template-columns: repeat(3, 1fr); } }
.steps > div { padding: 20px 20px 22px; border-top: 1px solid var(--hair); min-width: 0; }
.steps > div:first-child { border-top: 0; }
@media (min-width: 860px) { .steps > div { border-top: 0; border-left: 1px solid var(--hair); } .steps > div:first-child { border-left: 0; } }
.steps .n { display: flex; align-items: center; gap: 10px; color: var(--gold); font: 500 12px var(--mono); letter-spacing: 0.1em; margin-bottom: 10px; }
.steps h3 { font-size: 17px; margin-bottom: 6px; }
.steps p { color: var(--soft); font-size: 13.5px; line-height: 1.75; }

/* two boxes: public set / personal container */
.pair { display: grid; gap: 14px; }
@media (min-width: 760px) { .pair { grid-template-columns: 1fr 1fr; } }
.box { border: 1px solid var(--line); border-radius: 6px; padding: 20px; background: var(--raise); }
.box.dash { border-style: dashed; background: none; }
.box .tagline { font: 500 11.5px var(--mono); letter-spacing: 0.12em; color: var(--gold); margin-bottom: 8px; }
.box h3 { font-size: 18px; margin-bottom: 6px; }
.box p { color: var(--soft); font-size: 13.5px; }
.box .more { display: inline-flex; align-items: center; gap: 6px; margin-top: 12px; font-size: 13.5px; }

/* FAQ */
.faq { display: grid; gap: 0 40px; }
@media (min-width: 860px) { .faq { grid-template-columns: 1fr 1fr; } }
.faq div { padding: 16px 0; border-top: 1px solid var(--hair); }
.faq h3 { font-size: 16px; margin-bottom: 4px; }
.faq p { color: var(--soft); font-size: 13.5px; }

/* ---- inner pages ---- */
.crumb { font-size: 12.5px; color: var(--dim); padding-top: 22px; }
.crumb a { text-decoration: none; }
.crumb a:hover { color: var(--ink); }
.title { padding: 18px 0 26px; border-bottom: 1px solid var(--hair); }
.title h1 { font-size: clamp(28px, 4vw, 38px); line-height: 1.35; }
.title h1.mono { font-family: var(--mono); font-weight: 600; letter-spacing: 0; }
.title .lead { margin-top: 10px; max-width: 46em; }
.badges { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 14px; }
.badge { font-size: 11.5px; line-height: 1; padding: 5px 8px; border: 1px solid var(--line); border-radius: 3px; color: var(--dim); white-space: nowrap; }
.badge.warn { border-color: var(--gold); color: var(--gold); }
.cols { display: grid; gap: 36px; padding-top: 30px; }
@media (min-width: 940px) { .cols { grid-template-columns: minmax(0, 1fr) 300px; gap: 48px; } }
.side { align-self: start; font-size: 13.5px; }
@media (min-width: 940px) { .side { position: sticky; top: 76px; } }
.side h2 { font: 500 11.5px var(--mono); letter-spacing: 0.12em; color: var(--gold); margin: 24px 0 8px; }
.side h2:first-child { margin-top: 0; }
.side dl { margin: 0; display: grid; grid-template-columns: auto 1fr; gap: 6px 14px; }
.side dt { color: var(--dim); white-space: nowrap; }
.side dd { margin: 0; min-width: 0; overflow-wrap: anywhere; }
.prose { min-width: 0; }
.prose.narrow { max-width: 760px; padding-top: 26px; }
.prose h2 { font-size: 22px; margin: 40px 0 12px; padding-top: 18px; border-top: 1px solid var(--hair); }
.prose > h2:first-child { margin-top: 0; }
.cols .prose > h2:first-child { border-top: 0; padding-top: 0; }
.prose h3 { font-size: 16px; margin: 22px 0 6px; }
.prose p { margin-bottom: 12px; color: var(--soft); }
.prose ul, .prose ol { margin: 0 0 12px 1.3em; padding: 0; color: var(--soft); }
.prose li { margin: 3px 0; }
.prose table { border-collapse: collapse; width: 100%; margin-bottom: 14px; font-size: 14px; }
.prose th, .prose td { text-align: left; padding: 8px 12px 8px 0; border-bottom: 1px solid var(--hair); vertical-align: top; }
.prose th { font-weight: 600; white-space: nowrap; width: 11em; color: var(--ink); }
.prose td { color: var(--soft); }
.chips { display: flex; flex-wrap: wrap; gap: 5px; margin-bottom: 14px; }
.chips code { font-size: 12px; }

/* what a mod touches / does not touch */
.touch { display: grid; gap: 14px; margin-bottom: 14px; }
@media (min-width: 640px) { .touch { grid-template-columns: 1fr 1fr; } }
.touch section { border: 1px solid var(--line); border-radius: 6px; background: var(--raise); }
.touch h3 { font: 500 11.5px var(--mono); letter-spacing: 0.12em; margin: 0; padding: 10px 14px; border-bottom: 1px solid var(--hair); color: var(--dim); }
.touch .does h3 { color: var(--gold); }
.touch ul { list-style: none; margin: 0; padding: 4px 14px; }
.touch li { display: grid; grid-template-columns: 16px 1fr; gap: 8px; padding: 8px 0; border-top: 1px solid var(--hair); margin: 0; font-size: 13.5px; }
.touch li:first-child { border-top: 0; }
.touch li i { font-style: normal; font-family: var(--mono); color: var(--dim); }
.touch .does li i { color: var(--gold); }
.touch li b { font-weight: 600; color: var(--ink); display: block; }
.touch li span { color: var(--dim); font-size: 12.5px; line-height: 1.6; }
.touch .none { color: var(--dim); padding: 10px 0; font-size: 13.5px; }

.foot { margin-top: 72px; border-top: 1px solid var(--hair); padding: 22px 0 44px; color: var(--dim); font-size: 12.5px; }
.foot .wrap { display: grid; gap: 10px; }
.foot nav { display: flex; flex-wrap: wrap; gap: 6px 18px; }
.foot a { text-decoration: none; }
.foot a:hover { color: var(--ink); }
@media (max-width: 560px) { .facts b { font-size: 24px; } .prose th { width: auto; white-space: normal; } }

/* ---- English pages: Latin text sets tighter, and its row headings are longer ---- */
html:lang(en) body { line-height: 1.68; }
html:lang(en) .hero h1 { font-size: clamp(28px, 3.5vw, 40px); line-height: 1.22; }
html:lang(en) .title h1 { line-height: 1.22; }
html:lang(en) .prose th { white-space: normal; width: 13em; }
html:lang(en) .steps p, html:lang(en) .faq p, html:lang(en) .box p { line-height: 1.62; }

/* Phones: a table row becomes a card. The name and words on top, then each column that
   says something as a small labelled chip ("—" columns are left out). */
@media (max-width: 720px) {
  .scroll { overflow: visible; border: 0; background: none; }
  .matrix, .matrix.dir { min-width: 0; display: block; }
  .matrix thead { display: none; }
  .matrix tbody { display: grid; grid-template-columns: minmax(0, 1fr); gap: 10px; }
  .matrix th[scope="row"], .matrix.dir td { overflow-wrap: anywhere; }
  .matrix tr { min-width: 0; display: flex; flex-wrap: wrap; gap: 4px 6px; padding: 12px 14px; border: 1px solid var(--line); border-radius: 6px; background: var(--raise); }
  .matrix th, .matrix td, .matrix tbody tr:last-child th, .matrix tbody tr:last-child td { border: 0; padding: 0; text-align: left; }
  .matrix th[scope="row"] { flex: 1 1 100%; min-width: 0; margin-bottom: 4px; }
  .matrix th[scope="row"] span { max-width: none; }
  .matrix td.no { display: none; }
  .matrix td[data-label] { font-size: 12px; white-space: nowrap; }
  .matrix td.yes[data-label] { padding: 1px 7px; border: 1px solid var(--gold); border-radius: 3px; }
  .matrix td.yes[data-label]::after { content: none; }
  .matrix td.yes { font-size: 0; }
  .matrix td.yes::before { content: attr(data-label); font-size: 12px; }
  .matrix td.num[data-label]::before, .matrix.dir td[data-label]:not(.yes)::before { content: attr(data-label) " "; color: var(--dim); font-family: var(--sans); }
  .matrix td.num, .matrix.dir td[data-label] { color: var(--soft); }
  .matrix.dir td:nth-child(2) { flex: 1 1 100%; min-width: 0; }
  .matrix.dir td.marks { flex: 1 1 100%; min-width: 0; }
  .matrix.dir td[data-label] { margin-right: 8px; }
  .gal-shown { margin-left: 0; width: 100%; }
  .gal-row > span:first-child { width: 100%; }
  .matrix.dir th[scope="row"], .matrix.dir td:nth-child(2), .matrix.dir td.marks { min-width: 0; }
  .nav { gap: 12px; }
}

/* A design read from a mod's code: a slot is a value only the run time knows, shown as a sample */
.slot { text-decoration: underline dotted color-mix(in srgb, var(--dim) 70%, transparent); text-underline-offset: 3px; }
.client { display: grid; place-items: center; min-height: 72px; margin: 4px 0; border: 1px dashed var(--line); border-radius: 4px; color: var(--dim); font: 11px var(--mono); }

/* review, code, ranking, views */
.badge.pass { display: inline-flex; align-items: center; gap: 4px; border-color: var(--up); color: var(--up); }
.badge.pass svg { width: 12px; height: 12px; }
.vline { margin-top: 10px; color: var(--dim); font-size: 12.5px; }
table.review { width: 100%; border-collapse: collapse; font-size: 13.5px; margin: 10px 0 12px; }
table.review th, table.review td { text-align: left; vertical-align: top; padding: 9px 10px 9px 0; border-top: 1px solid var(--hair); }
table.review th { width: 34%; font-weight: 600; white-space: normal; }
table.review th .ok { display: inline-flex; vertical-align: -2px; margin-right: 6px; color: var(--up); }
table.review th .ok svg, table.review th .flag svg, table.review th .calm svg { width: 14px; height: 14px; }
table.review th .flag, table.review th .calm { display: inline-flex; vertical-align: -2px; margin-right: 6px; }
table.review th .flag { color: var(--gold); }
table.review th .calm { color: var(--dim); }
table.review tr.grp th { width: auto; padding-top: 16px; font-size: 11.5px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--dim); border-top: 0; }
.vet { display: flex; gap: 10px; align-items: flex-start; margin: 14px 0; padding: 12px 14px; border: 1px solid var(--gold); border-radius: 4px; font-size: 13.5px; line-height: 1.6; color: var(--ink); }
.vet svg { flex: none; width: 18px; height: 18px; margin-top: 2px; color: var(--gold); }
.vet p { margin: 0; }
table.review td { color: var(--soft); }
table.review .note { display: block; margin-top: 3px; color: var(--dim); font-size: 12px; overflow-wrap: anywhere; }
@media (max-width: 560px) { table.review th, table.review td { display: block; width: auto; padding: 8px 0 0; border: 0; } table.review tr { display: block; border-top: 1px solid var(--hair); padding-bottom: 8px; } }
.codeblock { border: 1px solid var(--line); border-radius: 6px; background: var(--raise); margin: 10px 0 16px; min-width: 0; }
.codehead { display: flex; align-items: stretch; justify-content: space-between; border-bottom: 1px solid var(--hair); font-size: 12px; }
.codehead > span { padding: 8px 12px; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--dim); }
.codeblock pre { margin: 0; padding: 12px 14px; max-height: 460px; overflow: auto; line-height: 1.6; tab-size: 2; }
.codeblock pre code { font-size: 12.5px; white-space: pre; }
details.src { border-top: 1px solid var(--hair); padding: 8px 0; }
details.src > summary { cursor: pointer; font-size: 13px; color: var(--soft); }
details.src > summary code { font-size: 12px; }
pre.licence { margin: 8px 0 0; padding: 12px 14px; max-height: 320px; overflow: auto; border: 1px solid var(--hair); border-radius: 6px; font-size: 11.5px; white-space: pre-wrap; color: var(--dim); }
ol.rank { list-style: none; margin: 0; padding: 0; border: 1px solid var(--line); border-radius: 6px; background: var(--raise); }
ol.rank > li { display: grid; grid-template-columns: 2.4em minmax(0, 1fr) auto; grid-template-areas: "pos name num" "pos by num"; column-gap: 12px; padding: 11px 14px; border-top: 1px solid var(--hair); align-items: baseline; }
ol.rank > li:first-child { border-top: 0; }
ol.rank .pos { grid-area: pos; font: 600 15px var(--serif); color: var(--gold); text-align: right; }
ol.rank a { grid-area: name; min-width: 0; color: inherit; text-decoration: none; }
ol.rank a b { font: 600 14px var(--mono); margin-right: 8px; }
ol.rank a span { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; color: var(--soft); font-size: 13px; line-height: 1.6; }
ol.rank a:hover b { color: var(--gold); }
ol.rank small { grid-area: by; color: var(--dim); font-size: 12px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
ol.rank .num { grid-area: num; display: flex; flex-direction: column; align-items: flex-end; gap: 2px; font-size: 12px; color: var(--dim); white-space: nowrap; }
ol.rank .num i { font-style: normal; }
ol.rank .num .v { color: var(--ink); }
.ggrid.list .gcard { contain-intrinsic-size: auto 120px; }
.facts.sitestats { border-top: 0; }
.facts.sitestats span { display: inline-flex; align-items: center; gap: 5px; }
.facts.sitestats svg { width: 13px; height: 13px; }
.hero-pv { display: block; color: inherit; text-decoration: none; max-height: 460px; overflow: hidden; }
.vw { color: var(--dim); }
[hidden] { display: none !important; }

/* The home page: one screen. What modscode is on the left; on the right a panel whose tabs switch
   in place (site.js adds .on). Without the script every panel shows, one after another. */
.vh { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.home { position: relative; border-bottom: 1px solid var(--hair); }
.home::before { content: ""; position: absolute; inset: 0; background-image: linear-gradient(var(--hair) 1px, transparent 1px), linear-gradient(90deg, var(--hair) 1px, transparent 1px); background-size: 36px 36px; -webkit-mask-image: radial-gradient(ellipse 60% 80% at 20% 30%, #000 10%, transparent 70%); mask-image: radial-gradient(ellipse 60% 80% at 20% 30%, #000 10%, transparent 70%); pointer-events: none; }
.home-grid { position: relative; display: grid; gap: 18px; padding-top: 18px; padding-bottom: 18px; }
.home-intro { min-width: 0; }
.home-intro .eyebrow { margin-bottom: 10px; }
.home-intro h1 { font-size: clamp(24px, 3.3vw, 40px); line-height: 1.32; }
.home-intro h1 em { font-style: normal; color: var(--gold); }
.home-intro .lead { font-size: 14.5px; margin-top: 12px; line-height: 1.75; }
.home-intro .cta { margin-top: 12px; }
.facts.mini { margin-top: 16px; border: 1px solid var(--hair); border-radius: 6px; background: color-mix(in srgb, var(--raise) 70%, transparent); }
.facts.mini div { padding: 10px 4px; }
.facts.mini b { font-size: 24px; }
.facts.mini span { font-size: 11.5px; line-height: 1.4; display: block; }
.home-intro .vet { margin: 14px 0 0; font-size: 12.5px; }
.home-tabs { min-width: 0; display: flex; flex-direction: column; }
.tablist { display: flex; gap: 2px; overflow-x: auto; scrollbar-width: none; border-bottom: 1px solid var(--line); }
.tablist::-webkit-scrollbar { display: none; }
.tablist a { flex: none; padding: 9px 12px 8px; font-size: 13px; color: var(--dim); text-decoration: none; border-bottom: 2px solid transparent; margin-bottom: -1px; white-space: nowrap; }
.tablist a:hover { color: var(--ink); }
.tablist a[aria-selected="true"] { color: var(--ink); border-bottom-color: var(--gold); font-weight: 600; }
.tabpanel { padding: 14px 0 4px; min-width: 0; scroll-margin-top: 64px; }
.tabpanel + .tabpanel { border-top: 1px solid var(--hair); }
.tabpanel > .more { display: inline-flex; align-items: center; gap: 6px; margin-top: 12px; font-size: 13.5px; }
.tabpanel .steps.four { grid-template-columns: 1fr; }
.tabpanel .faq > div { padding: 12px 0; }
.home-tabs.on .tabpanel { display: none; border-top: 0; }
.home-tabs.on .tabpanel.cur { display: block; overflow-y: auto; overscroll-behavior: contain; scrollbar-width: thin; }
@media (min-width: 640px) { .tabpanel .steps.four { grid-template-columns: 1fr 1fr; } }
/* A desktop screen: two columns that fill the window under the header; only the panel scrolls */
@media (min-width: 960px) and (min-height: 600px) {
  .home-grid { grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.15fr); gap: 40px; height: calc(100dvh - 55px); padding-top: 28px; padding-bottom: 24px; align-items: stretch; }
  .home-intro { align-self: center; }
  .home-tabs.on .tabpanel.cur { flex: 1; min-height: 0; padding-right: 6px; }
  .home-tabs { min-height: 0; }
}
/* A phone: the intro shrinks to what matters, and the panel takes the rest of the screen */
@media (max-width: 959px) {
  .home-intro .eyebrow, .home-intro .lead { display: none; }
  .home-intro h1 { font-size: clamp(22px, 6.4vw, 30px); }
  .facts.mini { margin-top: 12px; }
  .facts.mini b { font-size: 20px; }
  .home-tabs.on { min-height: calc(100dvh - 55px - 24px); }
  .home-tabs.on .tablist { position: sticky; top: 55px; z-index: 2; background: var(--bg); }
}
@media (min-width: 560px) and (max-width: 959px) { .home-intro .lead { display: block; } }
.tabpanel .hero-pv { max-height: none; overflow: visible; }
.gcard { content-visibility: auto; contain-intrinsic-size: auto 320px; }
@media (max-width: 520px) { .nav a.opt { display: none; } }

/* The code reference: the home's first tab, the index of patterns, and each pattern's examples */
.vet.small { padding: 7px 10px; font-size: 12px; gap: 8px; border-color: var(--line); color: var(--soft); }
.vet.small svg { width: 14px; height: 14px; }
.home-intro .vet.small { font-size: 12px; }
.pgrid, .patterns { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 0; border-top: 1px solid var(--hair); border-left: 1px solid var(--hair); list-style: none; padding: 0; margin: 0; }
.pgrid > a, .patterns > li > a { display: grid; gap: 2px; align-content: start; padding: 9px 11px; border-right: 1px solid var(--hair); border-bottom: 1px solid var(--hair); text-decoration: none; color: inherit; min-width: 0; }
.patterns > li { display: grid; }
.pgrid > a:hover, .patterns > li > a:hover { background: var(--raise); }
.pgrid b, .patterns b { font-size: 13.5px; font-weight: 600; }
.pgrid > a:hover b, .patterns > li > a:hover b { color: var(--gold); }
.pgrid span, .patterns span { color: var(--soft); font-size: 12px; line-height: 1.5; }
.pgrid small, .patterns small { color: var(--dim); font-size: 11.5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pgrid small code { font-size: 11px; }
.patterns { margin: 18px 0 24px; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); }
.patterns > li > a { padding: 14px 16px; gap: 4px; }
.patterns b { font-size: 15px; }
.feat { margin-top: 12px; }
.feat .sub { margin: 0; font-size: 12.5px; }
.feat .codeblock pre { max-height: 260px; }
.example { border-top: 1px solid var(--hair); padding-top: 14px; margin-top: 18px; }
.example h3 { margin: 0; font-size: 16px; }
.example h3 a { font-family: var(--mono); }
.example h3 small { font-weight: 400; font-size: 12px; color: var(--dim); font-family: inherit; }
.example > .sub { margin: 4px 0 0; }
.plist { display: flex; flex-wrap: wrap; gap: 6px 16px; list-style: none; padding: 0; }
.badge.mono { font-family: var(--mono); text-transform: none; }
.tui .fgx-ff3621 { color: #ff3621; }
.tui .bgx-ff3621 { background: #ff3621; }
.tui .fgx-0a84ff { color: #0a84ff; }
.tui .bgx-0a84ff { background: #0a84ff; }
.tui .fgx-ff453a { color: #ff453a; }
.tui .bgx-ff453a { background: #ff453a; }
.tui .fgx-30d158 { color: #30d158; }
.tui .bgx-30d158 { background: #30d158; }
.tui .fgx-ff9f0a { color: #ff9f0a; }
.tui .bgx-ff9f0a { background: #ff9f0a; }
.tui .fgx-d97757 { color: #d97757; }
.tui .bgx-d97757 { background: #d97757; }
.tui .fgx-ffd866 { color: #ffd866; }
.tui .bgx-ffd866 { background: #ffd866; }
.tui .fgx-a9dc76 { color: #a9dc76; }
.tui .bgx-a9dc76 { background: #a9dc76; }
.tui .fgx-ff6188 { color: #ff6188; }
.tui .bgx-ff6188 { background: #ff6188; }
.tui .fgx-e8603c { color: #e8603c; }
.tui .bgx-e8603c { background: #e8603c; }
.tui .fgx-e23b3b { color: #e23b3b; }
.tui .bgx-e23b3b { background: #e23b3b; }
.tui .fgx-f6efe3 { color: #f6efe3; }
.tui .bgx-f6efe3 { background: #f6efe3; }
.tui .fgx-b8ad9c { color: #b8ad9c; }
.tui .bgx-b8ad9c { background: #b8ad9c; }
.tui .fgx-2dd4bf { color: #2dd4bf; }
.tui .bgx-2dd4bf { background: #2dd4bf; }
.tui .fgx-60a5fa { color: #60a5fa; }
.tui .bgx-60a5fa { background: #60a5fa; }
.tui .fgx-98c379 { color: #98c379; }
.tui .bgx-98c379 { background: #98c379; }
.tui .fgx-e06c75 { color: #e06c75; }
.tui .bgx-e06c75 { background: #e06c75; }
.tui .fgx-e5b567 { color: #e5b567; }
.tui .bgx-e5b567 { background: #e5b567; }
.tui .fgx-1c1c1c { color: #1c1c1c; }
.tui .bgx-1c1c1c { background: #1c1c1c; }
.tui .fgx-ffafd7 { color: #ffafd7; }
.tui .bgx-ffafd7 { background: #ffafd7; }
.tui .fgx-a8a8a8 { color: #a8a8a8; }
.tui .bgx-a8a8a8 { background: #a8a8a8; }
.tui .fgx-e4e4e4 { color: #e4e4e4; }
.tui .bgx-e4e4e4 { background: #e4e4e4; }
.tui .fgx-87d787 { color: #87d787; }
.tui .bgx-87d787 { background: #87d787; }
.tui .fgx-ffd787 { color: #ffd787; }
.tui .bgx-ffd787 { background: #ffd787; }
.tui .fgx-4069ff { color: #4069ff; }
.tui .bgx-4069ff { background: #4069ff; }
.tui .fgx-f5a524 { color: #f5a524; }
.tui .bgx-f5a524 { background: #f5a524; }
.tui .fgx-8a8580 { color: #8a8580; }
.tui .bgx-8a8580 { background: #8a8580; }
.tui .fgx-d9534f { color: #d9534f; }
.tui .bgx-d9534f { background: #d9534f; }
.tui .fgx-8b90a0 { color: #8b90a0; }
.tui .bgx-8b90a0 { background: #8b90a0; }
.tui .fgx-fbbf24 { color: #fbbf24; }
.tui .bgx-fbbf24 { background: #fbbf24; }
.tui .fgx-9fb6cf { color: #9fb6cf; }
.tui .bgx-9fb6cf { background: #9fb6cf; }
.tui .fgx-f5f0e8 { color: #f5f0e8; }
.tui .bgx-f5f0e8 { background: #f5f0e8; }
.tui .fgx-e0607a { color: #e0607a; }
.tui .bgx-e0607a { background: #e0607a; }
.tui .fgx-ffffff { color: #ffffff; }
.tui .bgx-ffffff { background: #ffffff; }
.tui .fgx-ff3b30 { color: #ff3b30; }
.tui .bgx-ff3b30 { background: #ff3b30; }
.tui .fgx-e5e5e5 { color: #e5e5e5; }
.tui .bgx-e5e5e5 { background: #e5e5e5; }
.tui .fgx-1c1c1e { color: #1c1c1e; }
.tui .bgx-1c1c1e { background: #1c1c1e; }
.tui .fgx-ffcc00 { color: #ffcc00; }
.tui .bgx-ffcc00 { background: #ffcc00; }
.tui .fgx-111111 { color: #111111; }
.tui .bgx-111111 { background: #111111; }
.tui .fgx-5dcaa5 { color: #5dcaa5; }
.tui .bgx-5dcaa5 { background: #5dcaa5; }
.tui .fgx-77756f { color: #77756f; }
.tui .bgx-77756f { background: #77756f; }
.tui .fgx-9a8bff { color: #9a8bff; }
.tui .bgx-9a8bff { background: #9a8bff; }
.tui .fgx-d9b25a { color: #d9b25a; }
.tui .bgx-d9b25a { background: #d9b25a; }
.tui .fgx-f85149 { color: #f85149; }
.tui .bgx-f85149 { background: #f85149; }
.tui .fgx-7aa2f7 { color: #7aa2f7; }
.tui .bgx-7aa2f7 { background: #7aa2f7; }
.tui .fgx-e07a7a { color: #e07a7a; }
.tui .bgx-e07a7a { background: #e07a7a; }
.tui .fgx-8b919a { color: #8b919a; }
.tui .bgx-8b919a { background: #8b919a; }
.tui .fgx-8fbf7a { color: #8fbf7a; }
.tui .bgx-8fbf7a { background: #8fbf7a; }
.tui .fgx-61a5fa { color: #61a5fa; }
.tui .bgx-61a5fa { background: #61a5fa; }
.tui .fgx-c2a87e { color: #c2a87e; }
.tui .bgx-c2a87e { background: #c2a87e; }
.tui .fgx-0b1121 { color: #0b1121; }
.tui .bgx-0b1121 { background: #0b1121; }
.tui .fgx-cba6f7 { color: #cba6f7; }
.tui .bgx-cba6f7 { background: #cba6f7; }
.tui .fgx-3a3a3a { color: #3a3a3a; }
.tui .bgx-3a3a3a { background: #3a3a3a; }
.tui .fgx-e8e2d6 { color: #e8e2d6; }
.tui .bgx-e8e2d6 { background: #e8e2d6; }
.tui .fgx-444444 { color: #444444; }
.tui .bgx-444444 { background: #444444; }
.tui .fgx-000000 { color: #000000; }
.tui .bgx-000000 { background: #000000; }
.tui .fgx-7a1010 { color: #7a1010; }
.tui .bgx-7a1010 { background: #7a1010; }
.tui .fgx-ff3030 { color: #ff3030; }
.tui .bgx-ff3030 { background: #ff3030; }
.tui .fgx-e5484d { color: #e5484d; }
.tui .bgx-e5484d { background: #e5484d; }
.tui .fgx-ffaa00 { color: #ffaa00; }
.tui .bgx-ffaa00 { background: #ffaa00; }
.tui .fgx-c6c6c6 { color: #c6c6c6; }
.tui .bgx-c6c6c6 { background: #c6c6c6; }
.tui .fgx-55ff55 { color: #55ff55; }
.tui .bgx-55ff55 { background: #55ff55; }
.tui .fgx-aaaaaa { color: #aaaaaa; }
.tui .bgx-aaaaaa { background: #aaaaaa; }
.tui .fgx-cf5a4c { color: #cf5a4c; }
.tui .bgx-cf5a4c { background: #cf5a4c; }
.tui .fgx-e63946 { color: #e63946; }
.tui .bgx-e63946 { background: #e63946; }
.tui .fgx-e76f51 { color: #e76f51; }
.tui .bgx-e76f51 { background: #e76f51; }
.tui .fgx-8a8478 { color: #8a8478; }
.tui .bgx-8a8478 { background: #8a8478; }
.tui .fgx-0a0606 { color: #0a0606; }
.tui .bgx-0a0606 { background: #0a0606; }
.tui .fgx-f5b13d { color: #f5b13d; }
.tui .bgx-f5b13d { background: #f5b13d; }
.tui .fgx-d97557 { color: #d97557; }
.tui .bgx-d97557 { background: #d97557; }
.tui .fgx-5fafff { color: #5fafff; }
.tui .bgx-5fafff { background: #5fafff; }
.tui .fgx-ff00d7 { color: #ff00d7; }
.tui .bgx-ff00d7 { background: #ff00d7; }
.tui .fgx-00d7ff { color: #00d7ff; }
.tui .bgx-00d7ff { background: #00d7ff; }
.tui .fgx-af5fff { color: #af5fff; }
.tui .bgx-af5fff { background: #af5fff; }
.tui .fgx-ff5f5f { color: #ff5f5f; }
.tui .bgx-ff5f5f { background: #ff5f5f; }
.tui .fgx-d8ad6d { color: #d8ad6d; }
.tui .bgx-d8ad6d { background: #d8ad6d; }
.tui .fgx-292b20 { color: #292b20; }
.tui .bgx-292b20 { background: #292b20; }
.tui .fgx-444a3c { color: #444a3c; }
.tui .bgx-444a3c { background: #444a3c; }
.tui .fgx-a4bc92 { color: #a4bc92; }
.tui .bgx-a4bc92 { background: #a4bc92; }
.tui .fgx-dca58d { color: #dca58d; }
.tui .bgx-dca58d { background: #dca58d; }
.tui .fgx-818b75 { color: #818b75; }
.tui .bgx-818b75 { background: #818b75; }
.tui .fgx-2a2520 { color: #2a2520; }
.tui .bgx-2a2520 { background: #2a2520; }
.tui .fgx-0e0c0a { color: #0e0c0a; }
.tui .bgx-0e0c0a { background: #0e0c0a; }
.tui .fgx-f34e3f { color: #f34e3f; }
.tui .bgx-f34e3f { background: #f34e3f; }
.tui .fgx-3fbfa8 { color: #3fbfa8; }
.tui .bgx-3fbfa8 { background: #3fbfa8; }
.tui .fgx-f8b830 { color: #f8b830; }
.tui .bgx-f8b830 { background: #f8b830; }
.tui .fgx-808080 { color: #808080; }
.tui .bgx-808080 { background: #808080; }
.tui .fgx-e06050 { color: #e06050; }
.tui .bgx-e06050 { background: #e06050; }
.tui .fgx-f0883e { color: #f0883e; }
.tui .bgx-f0883e { background: #f0883e; }
.tui .fgx-8b93a1 { color: #8b93a1; }
.tui .bgx-8b93a1 { background: #8b93a1; }
.tui .fgx-58a6ff { color: #58a6ff; }
.tui .bgx-58a6ff { background: #58a6ff; }
.tui .fgx-3fb950 { color: #3fb950; }
.tui .bgx-3fb950 { background: #3fb950; }
.tui .fgx-7dd3fc { color: #7dd3fc; }
.tui .bgx-7dd3fc { background: #7dd3fc; }
.tui .fgx-e5e7eb { color: #e5e7eb; }
.tui .bgx-e5e7eb { background: #e5e7eb; }
.tui .fgx-38bdf8 { color: #38bdf8; }
.tui .bgx-38bdf8 { background: #38bdf8; }
.tui .fgx-fde047 { color: #fde047; }
.tui .bgx-fde047 { background: #fde047; }
.tui .fgx-56b4e0 { color: #56b4e0; }
.tui .bgx-56b4e0 { background: #56b4e0; }
.tui .fgx-0b0b0f { color: #0b0b0f; }
.tui .bgx-0b0b0f { background: #0b0b0f; }
.tui .fgx-facc15 { color: #facc15; }
.tui .bgx-facc15 { background: #facc15; }
.tui .fgx-e5eaf0 { color: #e5eaf0; }
.tui .bgx-e5eaf0 { background: #e5eaf0; }
.tui .fgx-6e7787 { color: #6e7787; }
.tui .bgx-6e7787 { background: #6e7787; }
.tui .fgx-1c222b { color: #1c222b; }
.tui .bgx-1c222b { background: #1c222b; }
.tui .fgx-8bd5ca { color: #8bd5ca; }
.tui .bgx-8bd5ca { background: #8bd5ca; }
.tui .fgx-cad3e0 { color: #cad3e0; }
.tui .bgx-cad3e0 { background: #cad3e0; }
.tui .fgx-f0c674 { color: #f0c674; }
.tui .bgx-f0c674 { background: #f0c674; }
.tui .fgx-a6d189 { color: #a6d189; }
.tui .bgx-a6d189 { background: #a6d189; }
.tui .fgx-a78bfa { color: #a78bfa; }
.tui .bgx-a78bfa { background: #a78bfa; }
.tui .fgx-34d399 { color: #34d399; }
.tui .bgx-34d399 { background: #34d399; }
.tui .fgx-fb7185 { color: #fb7185; }
.tui .bgx-fb7185 { background: #fb7185; }
.tui .fgx-8fa3aa { color: #8fa3aa; }
.tui .bgx-8fa3aa { background: #8fa3aa; }
.tui .fgx-2f4149 { color: #2f4149; }
.tui .bgx-2f4149 { background: #2f4149; }
.tui .fgx-22333b { color: #22333b; }
.tui .bgx-22333b { background: #22333b; }
.tui .fgx-1baf7a { color: #1baf7a; }
.tui .bgx-1baf7a { background: #1baf7a; }
.tui .fgx-f59e0b { color: #f59e0b; }
.tui .bgx-f59e0b { background: #f59e0b; }
.tui .fgx-e8fff4 { color: #e8fff4; }
.tui .bgx-e8fff4 { background: #e8fff4; }
.tui .fgx-d77757 { color: #d77757; }
.tui .bgx-d77757 { background: #d77757; }
.tui .fgx-eaecef { color: #eaecef; }
.tui .bgx-eaecef { background: #eaecef; }
.tui .fgx-5e6673 { color: #5e6673; }
.tui .bgx-5e6673 { background: #5e6673; }
.tui .fgx-0ecb81 { color: #0ecb81; }
.tui .bgx-0ecb81 { background: #0ecb81; }
.tui .fgx-848e9c { color: #848e9c; }
.tui .bgx-848e9c { background: #848e9c; }
.tui .fgx-2b3139 { color: #2b3139; }
.tui .bgx-2b3139 { background: #2b3139; }
.tui .fgx-f6465d { color: #f6465d; }
.tui .bgx-f6465d { background: #f6465d; }
.tui .fgx-f0b90b { color: #f0b90b; }
.tui .bgx-f0b90b { background: #f0b90b; }
.tui .fgx-00e5ff { color: #00e5ff; }
.tui .bgx-00e5ff { background: #00e5ff; }
.tui .fgx-3ddc84 { color: #3ddc84; }
.tui .bgx-3ddc84 { background: #3ddc84; }
.tui .fgx-ff2a6d { color: #ff2a6d; }
.tui .bgx-ff2a6d { background: #ff2a6d; }
.tui .fgx-ffb000 { color: #ffb000; }
.tui .bgx-ffb000 { background: #ffb000; }
.tui .fgx-7f8fa6 { color: #7f8fa6; }
.tui .bgx-7f8fa6 { background: #7f8fa6; }
.tui .fgx-ffa726 { color: #ffa726; }
.tui .bgx-ffa726 { background: #ffa726; }
.tui .fgx-ba68c8 { color: #ba68c8; }
.tui .bgx-ba68c8 { background: #ba68c8; }
.tui .fgx-ffd700 { color: #ffd700; }
.tui .bgx-ffd700 { background: #ffd700; }
.tui .fgx-9aa0a6 { color: #9aa0a6; }
.tui .bgx-9aa0a6 { background: #9aa0a6; }
.tui .fgx-ff4d4d { color: #ff4d4d; }
.tui .bgx-ff4d4d { background: #ff4d4d; }
.tui .fgx-e6e6e6 { color: #e6e6e6; }
.tui .bgx-e6e6e6 { background: #e6e6e6; }
.tui .fgx-ff3b3b { color: #ff3b3b; }
.tui .bgx-ff3b3b { background: #ff3b3b; }
.tui .fgx-f4f0ff { color: #f4f0ff; }
.tui .bgx-f4f0ff { background: #f4f0ff; }
.tui .fgx-6000f0 { color: #6000f0; }
.tui .bgx-6000f0 { background: #6000f0; }
.tui .fgx-a7b1c2 { color: #a7b1c2; }
.tui .bgx-a7b1c2 { background: #a7b1c2; }
.tui .fgx-a37bff { color: #a37bff; }
.tui .bgx-a37bff { background: #a37bff; }
.tui .fgx-c9b8fb { color: #c9b8fb; }
.tui .bgx-c9b8fb { background: #c9b8fb; }
.tui .fgx-f2a0a0 { color: #f2a0a0; }
.tui .bgx-f2a0a0 { background: #f2a0a0; }
.tui .fgx-e9cb7c { color: #e9cb7c; }
.tui .bgx-e9cb7c { background: #e9cb7c; }
.tui .fgx-0f1729 { color: #0f1729; }
.tui .bgx-0f1729 { background: #0f1729; }
.tui .fgx-86d9a8 { color: #86d9a8; }
.tui .bgx-86d9a8 { background: #86d9a8; }
.tui .fgx-48566a { color: #48566a; }
.tui .bgx-48566a { background: #48566a; }
.tui .fgx-b877db { color: #b877db; }
.tui .bgx-b877db { background: #b877db; }
.tui .fgx-ffcc99 { color: #ffcc99; }
.tui .bgx-ffcc99 { background: #ffcc99; }
.tui .fgx-66dd99 { color: #66dd99; }
.tui .bgx-66dd99 { background: #66dd99; }
.tui .fgx-ff9966 { color: #ff9966; }
.tui .bgx-ff9966 { background: #ff9966; }
.tui .fgx-cc9966 { color: #cc9966; }
.tui .bgx-cc9966 { background: #cc9966; }
.tui .fgx-6bb8c8 { color: #6bb8c8; }
.tui .bgx-6bb8c8 { background: #6bb8c8; }
.tui .fgx-87af87 { color: #87af87; }
.tui .bgx-87af87 { background: #87af87; }
.tui .fgx-e8b04b { color: #e8b04b; }
.tui .bgx-e8b04b { background: #e8b04b; }
.tui .fgx-666672 { color: #666672; }
.tui .bgx-666672 { background: #666672; }
.tui .fgx-1c3626 { color: #1c3626; }
.tui .bgx-1c3626 { background: #1c3626; }
.tui .fgx-17171b { color: #17171b; }
.tui .bgx-17171b { background: #17171b; }
.tui .fgx-3b3b45 { color: #3b3b45; }
.tui .bgx-3b3b45 { background: #3b3b45; }
.tui .fgx-5eead4 { color: #5eead4; }
.tui .bgx-5eead4 { background: #5eead4; }
.tui .fgx-4ade80 { color: #4ade80; }
.tui .bgx-4ade80 { background: #4ade80; }
.tui .fgx-e05050 { color: #e05050; }
.tui .bgx-e05050 { background: #e05050; }
.tui .fgx-928374 { color: #928374; }
.tui .bgx-928374 { background: #928374; }
.tui .fgx-b8bb26 { color: #b8bb26; }
.tui .bgx-b8bb26 { background: #b8bb26; }
.tui .fgx-504945 { color: #504945; }
.tui .bgx-504945 { background: #504945; }
.tui .fgx-2a9d8f { color: #2a9d8f; }
.tui .bgx-2a9d8f { background: #2a9d8f; }
.tui .fgx-8e7dbe { color: #8e7dbe; }
.tui .bgx-8e7dbe { background: #8e7dbe; }
.tui .fgx-4d96ff { color: #4d96ff; }
.tui .bgx-4d96ff { background: #4d96ff; }
.tui .fgx-2e2e2c { color: #2e2e2c; }
.tui .bgx-2e2e2c { background: #2e2e2c; }
.tui .fgx-478487 { color: #478487; }
.tui .bgx-478487 { background: #478487; }
.tui .fgx-b0b0b0 { color: #b0b0b0; }
.tui .bgx-b0b0b0 { background: #b0b0b0; }
.tui .fgx-ff004d { color: #ff004d; }
.tui .bgx-ff004d { background: #ff004d; }
.tui .fgx-00e436 { color: #00e436; }
.tui .bgx-00e436 { background: #00e436; }
.tui .fgx-fff1e8 { color: #fff1e8; }
.tui .bgx-fff1e8 { background: #fff1e8; }
.tui .fgx-c2c3c7 { color: #c2c3c7; }
.tui .bgx-c2c3c7 { background: #c2c3c7; }
.tui .fgx-cc785c { color: #cc785c; }
.tui .bgx-cc785c { background: #cc785c; }
.tui .fgx-69f0ae { color: #69f0ae; }
.tui .bgx-69f0ae { background: #69f0ae; }
.tui .fgx-4dd0e1 { color: #4dd0e1; }
.tui .bgx-4dd0e1 { background: #4dd0e1; }
.tui .fgx-3a3a42 { color: #3a3a42; }
.tui .bgx-3a3a42 { background: #3a3a42; }
.tui .fgx-ff6b8b { color: #ff6b8b; }
.tui .bgx-ff6b8b { background: #ff6b8b; }
.tui .fgx-2a2833 { color: #2a2833; }
.tui .bgx-2a2833 { background: #2a2833; }
.tui .fgx-141319 { color: #141319; }
.tui .bgx-141319 { background: #141319; }
.tui .fgx-f87171 { color: #f87171; }
.tui .bgx-f87171 { background: #f87171; }
.tui .fgx-a064dc { color: #a064dc; }
.tui .bgx-a064dc { background: #a064dc; }
.tui .fgx-ff8c28 { color: #ff8c28; }
.tui .bgx-ff8c28 { background: #ff8c28; }
.tui .fgx-8f8b83 { color: #8f8b83; }
.tui .bgx-8f8b83 { background: #8f8b83; }
.tui .fgx-e0b04a { color: #e0b04a; }
.tui .bgx-e0b04a { background: #e0b04a; }
.tui .fgx-d14b3a { color: #d14b3a; }
.tui .bgx-d14b3a { background: #d14b3a; }
.tui .fgx-e8b341 { color: #e8b341; }
.tui .bgx-e8b341 { background: #e8b341; }
.tui .fgx-f0445c { color: #f0445c; }
.tui .bgx-f0445c { background: #f0445c; }
.tui .fgx-d77814 { color: #d77814; }
.tui .bgx-d77814 { background: #d77814; }
.tui .fgx-4fa3d1 { color: #4fa3d1; }
.tui .bgx-4fa3d1 { background: #4fa3d1; }
.tui .fgx-f0743c { color: #f0743c; }
.tui .bgx-f0743c { background: #f0743c; }
.tui .fgx-8b949e { color: #8b949e; }
.tui .bgx-8b949e { background: #8b949e; }
.tui .fgx-484f58 { color: #484f58; }
.tui .bgx-484f58 { background: #484f58; }
.tui .fgx-e3a84b { color: #e3a84b; }
.tui .bgx-e3a84b { background: #e3a84b; }
.tui .fgx-29adff { color: #29adff; }
.tui .bgx-29adff { background: #29adff; }
.tui .fgx-5f574f { color: #5f574f; }
.tui .bgx-5f574f { background: #5f574f; }
.tui .fgx-83769c { color: #83769c; }
.tui .bgx-83769c { background: #83769c; }
.tui .fgx-3f3f46 { color: #3f3f46; }
.tui .bgx-3f3f46 { background: #3f3f46; }
.tui .fgx-22d3ee { color: #22d3ee; }
.tui .bgx-22d3ee { background: #22d3ee; }
.tui .fgx-f0d020 { color: #f0d020; }
.tui .bgx-f0d020 { background: #f0d020; }
.tui .fgx-3a3f4b { color: #3a3f4b; }
.tui .bgx-3a3f4b { background: #3a3f4b; }
.tui .fgx-ff3df0 { color: #ff3df0; }
.tui .bgx-ff3df0 { background: #ff3df0; }
.tui .fgx-5ef1ff { color: #5ef1ff; }
.tui .bgx-5ef1ff { background: #5ef1ff; }
.tui .fgx-ff570a { color: #ff570a; }
.tui .bgx-ff570a { background: #ff570a; }
.tui .fgx-6b7280 { color: #6b7280; }
.tui .bgx-6b7280 { background: #6b7280; }
.tui .fgx-f472b6 { color: #f472b6; }
.tui .bgx-f472b6 { background: #f472b6; }
.tui .fgx-a3e635 { color: #a3e635; }
.tui .bgx-a3e635 { background: #a3e635; }
.tui .fgx-3b4261 { color: #3b4261; }
.tui .bgx-3b4261 { background: #3b4261; }
.tui .fgx-e07b5a { color: #e07b5a; }
.tui .bgx-e07b5a { background: #e07b5a; }
.tui .fgx-1a1b26 { color: #1a1b26; }
.tui .bgx-1a1b26 { background: #1a1b26; }
.tui .fgx-3b3b4f { color: #3b3b4f; }
.tui .bgx-3b3b4f { background: #3b3b4f; }
.tui .fgx-8fd17f { color: #8fd17f; }
.tui .bgx-8fd17f { background: #8fd17f; }
.tui .fgx-3a3a4c { color: #3a3a4c; }
.tui .bgx-3a3a4c { background: #3a3a4c; }
.tui .fgx-ed8936 { color: #ed8936; }
.tui .bgx-ed8936 { background: #ed8936; }
.tui .fgx-1a202c { color: #1a202c; }
.tui .bgx-1a202c { background: #1a202c; }
.tui .fgx-fb923c { color: #fb923c; }
.tui .bgx-fb923c { background: #fb923c; }
.tui .fgx-e2e8f0 { color: #e2e8f0; }
.tui .bgx-e2e8f0 { background: #e2e8f0; }
.tui .fgx-334155 { color: #334155; }
.tui .bgx-334155 { background: #334155; }
.tui .fgx-94a3b8 { color: #94a3b8; }
.tui .bgx-94a3b8 { background: #94a3b8; }
.tui .fgx-f5c518 { color: #f5c518; }
.tui .bgx-f5c518 { background: #f5c518; }
.tui .fgx-0a1838 { color: #0a1838; }
.tui .bgx-0a1838 { background: #0a1838; }
.tui .fgx-cfd8e3 { color: #cfd8e3; }
.tui .bgx-cfd8e3 { background: #cfd8e3; }
.tui .fgx-8aa0c2 { color: #8aa0c2; }
.tui .bgx-8aa0c2 { background: #8aa0c2; }
.tui .fgx-5c6f91 { color: #5c6f91; }
.tui .bgx-5c6f91 { background: #5c6f91; }
.tui .fgx-b71c1c { color: #b71c1c; }
.tui .bgx-b71c1c { background: #b71c1c; }
.tui .fgx-78909c { color: #78909c; }
.tui .bgx-78909c { background: #78909c; }
.tui .fgx-ef9a9a { color: #ef9a9a; }
.tui .bgx-ef9a9a { background: #ef9a9a; }
.tui .fgx-e3f2fd { color: #e3f2fd; }
.tui .bgx-e3f2fd { background: #e3f2fd; }
.tui .fgx-1e293b { color: #1e293b; }
.tui .bgx-1e293b { background: #1e293b; }
.tui .fgx-cbd5e1 { color: #cbd5e1; }
.tui .bgx-cbd5e1 { background: #cbd5e1; }
.tui .fgx-16110e { color: #16110e; }
.tui .bgx-16110e { background: #16110e; }
.tui .fgx-3a2c24 { color: #3a2c24; }
.tui .bgx-3a2c24 { background: #3a2c24; }
.tui .fgx-211915 { color: #211915; }
.tui .bgx-211915 { background: #211915; }
.tui .fgx-8a7a70 { color: #8a7a70; }
.tui .bgx-8a7a70 { background: #8a7a70; }
.tui .fgx-ff7a3d { color: #ff7a3d; }
.tui .bgx-ff7a3d { background: #ff7a3d; }
.tui .fgx-ffcc66 { color: #ffcc66; }
.tui .bgx-ffcc66 { background: #ffcc66; }
.tui .fgx-f2e8e0 { color: #f2e8e0; }
.tui .bgx-f2e8e0 { background: #f2e8e0; }
.tui .fgx-ffec27 { color: #ffec27; }
.tui .bgx-ffec27 { background: #ffec27; }
.tui .fgx-09182e { color: #09182e; }
.tui .bgx-09182e { background: #09182e; }
.tui .fgx-3d3d3a { color: #3d3d3a; }
.tui .bgx-3d3d3a { background: #3d3d3a; }
.tui .fgx-262624 { color: #262624; }
.tui .bgx-262624 { background: #262624; }
.tui .fgx-db2777 { color: #db2777; }
.tui .bgx-db2777 { background: #db2777; }
.tui .fgx-ff5f57 { color: #ff5f57; }
.tui .bgx-ff5f57 { background: #ff5f57; }
.tui .fgx-2f9e5b { color: #2f9e5b; }
.tui .bgx-2f9e5b { background: #2f9e5b; }
.tui .fgx-ff4d2e { color: #ff4d2e; }
.tui .bgx-ff4d2e { background: #ff4d2e; }
.tui .fgx-22c55e { color: #22c55e; }
.tui .bgx-22c55e { background: #22c55e; }
.tui .fgx-ffccaa { color: #ffccaa; }
.tui .bgx-ffccaa { background: #ffccaa; }
.tui .fgx-ffa300 { color: #ffa300; }
.tui .bgx-ffa300 { background: #ffa300; }
.tui .fgx-b4a7f5 { color: #b4a7f5; }
.tui .bgx-b4a7f5 { background: #b4a7f5; }
.tui .fgx-2da44e { color: #2da44e; }
.tui .bgx-2da44e { background: #2da44e; }
.tui .fgx-4477aa { color: #4477aa; }
.tui .bgx-4477aa { background: #4477aa; }
.tui .fgx-ee6677 { color: #ee6677; }
.tui .bgx-ee6677 { background: #ee6677; }
.tui .fgx-777777 { color: #777777; }
.tui .bgx-777777 { background: #777777; }
.tui .fgx-e0905f { color: #e0905f; }
.tui .bgx-e0905f { background: #e0905f; }
.tui .fgx-14161a { color: #14161a; }
.tui .bgx-14161a { background: #14161a; }
.tui .fgx-c3a6ff { color: #c3a6ff; }
.tui .bgx-c3a6ff { background: #c3a6ff; }
.tui .fgx-8b929c { color: #8b929c; }
.tui .bgx-8b929c { background: #8b929c; }
.tui .fgx-ffab40 { color: #ffab40; }
.tui .bgx-ffab40 { background: #ffab40; }
.tui .fgx-8a8a8a { color: #8a8a8a; }
.tui .bgx-8a8a8a { background: #8a8a8a; }
.tui .fgx-7fb069 { color: #7fb069; }
.tui .bgx-7fb069 { background: #7fb069; }
.tui .fgx-6a9bcc { color: #6a9bcc; }
.tui .bgx-6a9bcc { background: #6a9bcc; }
.tui .fgx-ab5236 { color: #ab5236; }
.tui .bgx-ab5236 { background: #ab5236; }
.tui .fgx-2fbf71 { color: #2fbf71; }
.tui .bgx-2fbf71 { background: #2fbf71; }
.tui .fgx-ffb020 { color: #ffb020; }
.tui .bgx-ffb020 { background: #ffb020; }
.tui .fgx-6cb6ff { color: #6cb6ff; }
.tui .bgx-6cb6ff { background: #6cb6ff; }
.tui .fgx-8fd694 { color: #8fd694; }
.tui .bgx-8fd694 { background: #8fd694; }
.tui .fgx-f2777a { color: #f2777a; }
.tui .bgx-f2777a { background: #f2777a; }
.tui .fgx-f5c06b { color: #f5c06b; }
.tui .bgx-f5c06b { background: #f5c06b; }
.tui .fgx-ff8700 { color: #ff8700; }
.tui .bgx-ff8700 { background: #ff8700; }
.tui .fgx-ff2bd6 { color: #ff2bd6; }
.tui .bgx-ff2bd6 { background: #ff2bd6; }
.tui .fgx-ff3355 { color: #ff3355; }
.tui .bgx-ff3355 { background: #ff3355; }
.tui .fgx-14121c { color: #14121c; }
.tui .bgx-14121c { background: #14121c; }
.tui .fgx-b8b5c8 { color: #b8b5c8; }
.tui .bgx-b8b5c8 { background: #b8b5c8; }
.tui .fgx-6e6a80 { color: #6e6a80; }
.tui .bgx-6e6a80 { background: #6e6a80; }
.tui .fgx-3a3750 { color: #3a3750; }
.tui .bgx-3a3750 { background: #3a3750; }
.tui .fgx-26243a { color: #26243a; }
.tui .bgx-26243a { background: #26243a; }
.tui .fgx-61afef { color: #61afef; }
.tui .bgx-61afef { background: #61afef; }
.tui .fgx-e5c07b { color: #e5c07b; }
.tui .bgx-e5c07b { background: #e5c07b; }
.tui .fgx-36ae66 { color: #36ae66; }
.tui .bgx-36ae66 { background: #36ae66; }
.tui .fgx-ef4444 { color: #ef4444; }
.tui .bgx-ef4444 { background: #ef4444; }
.tui .fgx-ff77a8 { color: #ff77a8; }
.tui .bgx-ff77a8 { background: #ff77a8; }
.tui .fgx-101014 { color: #101014; }
.tui .bgx-101014 { background: #101014; }
.tui .fgx-e5342c { color: #e5342c; }
.tui .bgx-e5342c { background: #e5342c; }
.tui .fgx-f56300 { color: #f56300; }
.tui .bgx-f56300 { background: #f56300; }
.tui .fgx-ffd166 { color: #ffd166; }
.tui .bgx-ffd166 { background: #ffd166; }
.tui .fgx-5fff87 { color: #5fff87; }
.tui .bgx-5fff87 { background: #5fff87; }
.tui .fgx-ff9f43 { color: #ff9f43; }
.tui .bgx-ff9f43 { background: #ff9f43; }
.tui .fgx-3a3a52 { color: #3a3a52; }
.tui .bgx-3a3a52 { background: #3a3a52; }
.tui .fgx-5fb3ff { color: #5fb3ff; }
.tui .bgx-5fb3ff { background: #5fb3ff; }
.tui .fgx-008751 { color: #008751; }
.tui .bgx-008751 { background: #008751; }
.tui .fgx-ff9a1f { color: #ff9a1f; }
.tui .bgx-ff9a1f { background: #ff9a1f; }
.tui .fgx-e8833a { color: #e8833a; }
.tui .bgx-e8833a { background: #e8833a; }
.tui .fgx-120804 { color: #120804; }
.tui .bgx-120804 { background: #120804; }
.tui .fgx-d9822b { color: #d9822b; }
.tui .bgx-d9822b { background: #d9822b; }
.tui .fgx-ff5e1a { color: #ff5e1a; }
.tui .bgx-ff5e1a { background: #ff5e1a; }
.tui .fgx-ffe9c7 { color: #ffe9c7; }
.tui .bgx-ffe9c7 { background: #ffe9c7; }
.tui .fgx-3b1f0e { color: #3b1f0e; }
.tui .bgx-3b1f0e { background: #3b1f0e; }
.tui .fgx-7ee787 { color: #7ee787; }
.tui .bgx-7ee787 { background: #7ee787; }
.tui .fgx-5b8cff { color: #5b8cff; }
.tui .bgx-5b8cff { background: #5b8cff; }
.tui .fgx-c0504d { color: #c0504d; }
.tui .bgx-c0504d { background: #c0504d; }
.tui .fgx-3b8eea { color: #3b8eea; }
.tui .bgx-3b8eea { background: #3b8eea; }
.tui .fgx-d29922 { color: #d29922; }
.tui .bgx-d29922 { background: #d29922; }
.tui .fgx-a371f7 { color: #a371f7; }
.tui .bgx-a371f7 { background: #a371f7; }
.tui .fgx-16a34a { color: #16a34a; }
.tui .bgx-16a34a { background: #16a34a; }
.tui .fgx-6d28d9 { color: #6d28d9; }
.tui .bgx-6d28d9 { background: #6d28d9; }
.tui .fgx-5f6672 { color: #5f6672; }
.tui .bgx-5f6672 { background: #5f6672; }
.tui .fgx-e8c06a { color: #e8c06a; }
.tui .bgx-e8c06a { background: #e8c06a; }
.tui .fgx-9a9a9a { color: #9a9a9a; }
.tui .bgx-9a9a9a { background: #9a9a9a; }
.tui .fgx-e8e8e8 { color: #e8e8e8; }
.tui .bgx-e8e8e8 { background: #e8e8e8; }
.tui .fgx-121212 { color: #121212; }
.tui .bgx-121212 { background: #121212; }
.tui .fgx-72b8b0 { color: #72b8b0; }
.tui .bgx-72b8b0 { background: #72b8b0; }
.tui .fgx-9aa5a0 { color: #9aa5a0; }
.tui .bgx-9aa5a0 { background: #9aa5a0; }
.tui .fgx-1db954 { color: #1db954; }
.tui .bgx-1db954 { background: #1db954; }
.tui .fgx-ffd33d { color: #ffd33d; }
.tui .bgx-ffd33d { background: #ffd33d; }
.tui .fgx-ff5555 { color: #ff5555; }
.tui .bgx-ff5555 { background: #ff5555; }
.tui .fgx-888888 { color: #888888; }
.tui .bgx-888888 { background: #888888; }
.tui .fgx-aba4c4 { color: #aba4c4; }
.tui .bgx-aba4c4 { background: #aba4c4; }
.tui .fgx-58caf8 { color: #58caf8; }
.tui .bgx-58caf8 { background: #58caf8; }
.tui .fgx-475569 { color: #475569; }
.tui .bgx-475569 { background: #475569; }
.tui .fgx-f97316 { color: #f97316; }
.tui .bgx-f97316 { background: #f97316; }
.tui .fgx-eab308 { color: #eab308; }
.tui .bgx-eab308 { background: #eab308; }
.tui .fgx-64748b { color: #64748b; }
.tui .bgx-64748b { background: #64748b; }
.tui .fgx-9ca3af { color: #9ca3af; }
.tui .bgx-9ca3af { background: #9ca3af; }
.tui .fgx-374151 { color: #374151; }
.tui .bgx-374151 { background: #374151; }
.tui .fgx-3f4654 { color: #3f4654; }
.tui .bgx-3f4654 { background: #3f4654; }
.tui .fgx-1d2029 { color: #1d2029; }
.tui .bgx-1d2029 { background: #1d2029; }
.tui .fgx-ee352e { color: #ee352e; }
.tui .bgx-ee352e { background: #ee352e; }
.tui .fgx-fccc0a { color: #fccc0a; }
.tui .bgx-fccc0a { background: #fccc0a; }
.tui .fgx-5aa9e6 { color: #5aa9e6; }
.tui .bgx-5aa9e6 { background: #5aa9e6; }
.tui .fgx-c9b3ff { color: #c9b3ff; }
.tui .bgx-c9b3ff { background: #c9b3ff; }
.tui .fgx-7af6ff { color: #7af6ff; }
.tui .bgx-7af6ff { background: #7af6ff; }
.tui .fgx-7fb685 { color: #7fb685; }
.tui .bgx-7fb685 { background: #7fb685; }
.tui .fgx-2a303b { color: #2a303b; }
.tui .bgx-2a303b { background: #2a303b; }
.tui .fgx-ef5a5a { color: #ef5a5a; }
.tui .bgx-ef5a5a { background: #ef5a5a; }
.tui .fgx-e9e4dc { color: #e9e4dc; }
.tui .bgx-e9e4dc { background: #e9e4dc; }
.tui .fgx-7d828c { color: #7d828c; }
.tui .bgx-7d828c { background: #7d828c; }
.tui .fgx-3ecf8e { color: #3ecf8e; }
.tui .bgx-3ecf8e { background: #3ecf8e; }
.tui .fgx-f8b45a { color: #f8b45a; }
.tui .bgx-f8b45a { background: #f8b45a; }
.tui .fgx-e0a800 { color: #e0a800; }
.tui .bgx-e0a800 { background: #e0a800; }
.tui .fgx-c084fc { color: #c084fc; }
.tui .bgx-c084fc { background: #c084fc; }
.tui .fgx-e0567a { color: #e0567a; }
.tui .bgx-e0567a { background: #e0567a; }
.tui .fgx-1d3a66 { color: #1d3a66; }
.tui .bgx-1d3a66 { background: #1d3a66; }
.tui .fgx-3fa9bd { color: #3fa9bd; }
.tui .bgx-3fa9bd { background: #3fa9bd; }
.tui .fgx-00c0e0 { color: #00c0e0; }
.tui .bgx-00c0e0 { background: #00c0e0; }
.tui .fgx-14b8a6 { color: #14b8a6; }
.tui .bgx-14b8a6 { background: #14b8a6; }
.tui .fgx-e1e1e6 { color: #e1e1e6; }
.tui .bgx-e1e1e6 { background: #e1e1e6; }
.tui .fgx-9a9cab { color: #9a9cab; }
.tui .bgx-9a9cab { background: #9a9cab; }
.tui .fgx-4a5260 { color: #4a5260; }
.tui .bgx-4a5260 { background: #4a5260; }
.tui .fgx-22304a { color: #22304a; }
.tui .bgx-22304a { background: #22304a; }
.tui .fgx-8aadf4 { color: #8aadf4; }
.tui .bgx-8aadf4 { background: #8aadf4; }
.tui .fgx-ca9ee6 { color: #ca9ee6; }
.tui .bgx-ca9ee6 { background: #ca9ee6; }
.tui .fgx-e78284 { color: #e78284; }
.tui .bgx-e78284 { background: #e78284; }
.tui .fgx-d7af5f { color: #d7af5f; }
.tui .bgx-d7af5f { background: #d7af5f; }
.tui .fgx-8f8cf4 { color: #8f8cf4; }
.tui .bgx-8f8cf4 { background: #8f8cf4; }
.tui .fgx-d4a72c { color: #d4a72c; }
.tui .bgx-d4a72c { background: #d4a72c; }
.tui .fgx-7bd88f { color: #7bd88f; }
.tui .bgx-7bd88f { background: #7bd88f; }
.tui .fgx-1a1320 { color: #1a1320; }
.tui .bgx-1a1320 { background: #1a1320; }
.tui .fgx-f2b84b { color: #f2b84b; }
.tui .bgx-f2b84b { background: #f2b84b; }
.tui .fgx-b28cff { color: #b28cff; }
.tui .bgx-b28cff { background: #b28cff; }
.tui .fgx-5aa9ff { color: #5aa9ff; }
.tui .bgx-5aa9ff { background: #5aa9ff; }
.tui .fgx-57ab5a { color: #57ab5a; }
.tui .bgx-57ab5a { background: #57ab5a; }
.tui .fgx-2563eb { color: #2563eb; }
.tui .bgx-2563eb { background: #2563eb; }
.tui .fgx-c678dd { color: #c678dd; }
.tui .bgx-c678dd { background: #c678dd; }
.tui .fgx-b0aea5 { color: #b0aea5; }
.tui .bgx-b0aea5 { background: #b0aea5; }
.tui .fgx-788c5d { color: #788c5d; }
.tui .bgx-788c5d { background: #788c5d; }
.tui .fgx-d4a27f { color: #d4a27f; }
.tui .bgx-d4a27f { background: #d4a27f; }
.tui .fgx-8f8a80 { color: #8f8a80; }
.tui .bgx-8f8a80 { background: #8f8a80; }
.tui .fgx-b5836b { color: #b5836b; }
.tui .bgx-b5836b { background: #b5836b; }
.tui .w-9 { width: 9ch; max-width: 100%; flex: none; }
.tui .w-13 { width: 13ch; max-width: 100%; flex: none; }
.tui .w-8 { width: 8ch; max-width: 100%; flex: none; }
.tui .w-5 { width: 5ch; max-width: 100%; flex: none; }
.tui .w-4 { width: 4ch; max-width: 100%; flex: none; }
.tui .w-6 { width: 6ch; max-width: 100%; flex: none; }
.tui .w-7 { width: 7ch; max-width: 100%; flex: none; }
.tui .w-10 { width: 10ch; max-width: 100%; flex: none; }
.tui .w-1 { width: 1ch; max-width: 100%; flex: none; }
.tui .w-34 { width: 34ch; max-width: 100%; flex: none; }
.tui .w-14 { width: 14ch; max-width: 100%; flex: none; }
.tui .w-2 { width: 2ch; max-width: 100%; flex: none; }
.tui .w-30 { width: 30ch; max-width: 100%; flex: none; }
.tui .w-11 { width: 11ch; max-width: 100%; flex: none; }
.tui .w-32 { width: 32ch; max-width: 100%; flex: none; }
.tui .w-15 { width: 15ch; max-width: 100%; flex: none; }
.tui .w-12 { width: 12ch; max-width: 100%; flex: none; }
.tui .w-20 { width: 20ch; max-width: 100%; flex: none; }
.tui .w-3 { width: 3ch; max-width: 100%; flex: none; }
.tui .w-18 { width: 18ch; max-width: 100%; flex: none; }
.tui .w-26 { width: 26ch; max-width: 100%; flex: none; }
.tui .w-19 { width: 19ch; max-width: 100%; flex: none; }
.tui .w-44 { width: 44ch; max-width: 100%; flex: none; }
.tui .w-28 { width: 28ch; max-width: 100%; flex: none; }
.tui .w-17 { width: 17ch; max-width: 100%; flex: none; }
.tui .w-16 { width: 16ch; max-width: 100%; flex: none; }
.tui .w-22 { width: 22ch; max-width: 100%; flex: none; }
.tui .w-36 { width: 36ch; max-width: 100%; flex: none; }
.tui .h-1 { min-height: 1.55em; }
.tui .h-6 { min-height: 9.30em; }
.tui .h-2 { min-height: 3.10em; }
.tui .h-3 { min-height: 4.65em; }
.tui .h-30 { min-height: 46.50em; }